commit 4d622c52919bccc75d4d62677e68871bf188a431 Author: Mario Voigt Date: Fri Jul 23 02:36:56 2021 +0200 . diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..c37e9c88 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: ['https://y.stadtfabrikanten.org/donate'] diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9156c793 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +*.pyc +/.project +/.pydevproject +/.settings/org.eclipse.core.resources.prefs +*.out +extensions/.project +extensions/fablabchemnitz/animate_order/drawing.svg +extensions/fablabchemnitz/animate_order/animate_order.html +extensions/fablabchemnitz/path2flex/DebugPath2Flex.txt +extensions/fablabchemnitz/elliptical_cone_box/DebugEllConicBox.txt +extensions/.pydevproject +extensions/.settings/org.eclipse.core.resources.prefs +extensions/000_Inkscape_Gallery diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..9cecc1d4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 00000000..145ec148 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# MightyScape for Inkscape 1.0+ + +In short: A maintained extension collection for Inkscape 1.0+, working on Windows and Linux. There are **210 extension folders** with **372 .inx files** inside. We also take part at https://inkscape.org/gallery/=extension/ (with single extension uploads). + +# About MightyScape + +Looking to get more productive we started using some more special Inkscape extensions. We love Inkscape. And we love things like 3d printing, laser cutting, vinyl cutting, pen plotting, maths, physics, geometry, patterns, 2D drawings, 3D CAD , embroidery and more stuff. All this you can do with Inkscape! We recognized that there is no good source to pull extensions in a quick and clean way. Each developer puts his own code on his hidden/unknown repository and often without enough documentation or visible results for common understanding. Many plugins are completely unknown that way, and a lot of extensions are forked x times or are unmaintained. So many of them do not work with recent Inkscape or were never tested with newer versions so far. + +# What and why? + +This is a one-to-bundle-them-all collection of hundreds of additional functions to Inkscape (extensions) for the new Python 3 based version 1.X including documentation, made for makers and artists. All plugins where sorted into custom categories (to avoid overloading the standard extension menu of Inkscape). You can find most of them in sub menu "FabLab Chemnitz". We renamed and cleaned a lot of *.inx files and *.py files. We applied some function renamings, id changes (for preferences.xml clean-keeping), spelling fixes, formattings and parameter corrections. + +It took years to search and find all them on the web (so much different possible sources where to find!), to read, to comment (report issues), to fix problems, to test, to document and to provide them online. Many extensions were nearly lost in translation. + +At least this repo will help to bring alife some good things and will show hidden gold. It meshes things together in a fresh and bundled way - with ease of use and minimum installation stress. A lot of code is not at the optimum. A mass of bugs has to be fixed and different tools should be improved in usage generally. This package will show errors more quickly. So hopefully a lot of new code fixes is result from this package. Maybe some people help to make all the stuff compatible with Inkscape 1.0 and newer. + +# Credits / Help to develop + + * This is not a repository to steal the work of others. The credits go to each developer, maintainer, commiter, issue reporter and so on. + * All plugins are open source licensed and are fully compatible to be legally inside this repository. This plugin is a fully non-commercial project too + * All plugins were taken from each git repo's master branch (if git/svn available). There might exist some development branches, fork branches or issue comments which might resolve some issues or enhance functionality of provided plugins. To check for recent github forks use https://techgaun.github.io + * A lot of plugins were fixed by ourselves in countless hours + * If you find bugs or have ideas please push them directly to the corresponding root repository of the developer or put it to https://github.com/vmario89/mightyscape-1.X/issues + * Credits for creation of this big package: Mario Voigt / FabLab Chemnitz + +# Used software for development + + * Gitea and Github for hosting this + * GitEye and SourceTree git frontends for commiting + * LiClipse and NotePad++ for code + * regular Python installation (both Linux and Windows) + +# Requirements / Tested environment + + * tested with Inkscape + * Windows portable Version (Inkscape 1.2-dev (25cba68, 2021-05-16)) @ Windows 10 + * Linux dev trunk (https://inkscape.org/de/release/inkscape-master/gnulinux/ubuntu/ppa/dl/) @ Ubuntu 20 LTS + * tested using Python 3.8.5 64 Bit and 3.9.4 64 Bit + * some extensions require custom Python installation/modules. See documentation at our FabLab Chemnitz Wiki (see below). + * some extensions require additional commands, packages or other installers (see documentation too). + * the structure of this repo is intended the following way: all extensions which require exactly one *.py and one *.inx file are kept on the top level /mightyscape-1.X/extensions/fablabchemnitz. So just copy them to your Inkscape's extension directory. All extension which require additional libraries have their own sub directory. You will find redundancies in this repo like node.exe (NodeJS). We did it this way to give easy possibilty to only pick the extensions you want (instead creating ~200 repositories). + +# Remaining ToDos + + * clean code + * make more precise documentation with more examples + * check out command line handling of extension. This was totally ignored yet + +# Installation, documentation and examples + +MightyScape does not work with any releases or feature branches. Just use "git clone" to get the recent commit from master branch. + +Please see at https://y.stadtfabrikanten.org/mightyscape-overview for installation tips like required python modules, file locations and other adjustments. + +# Donate + + + +We are the Stadtfabrikanten, running the FabLab Chemnitz since 2016. A FabLab is an open workshop that gives people access to machines and digital tools like 3D printers, laser cutters and CNC milling machines. + +You like our work and want to support us? You can donate to our non-profit organization by different ways: +https://y.stadtfabrikanten.org/donate + +**Thanks for using our extension and helping us!** + +# Locations + +This repo has two remotes: +* https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X (root repo origin) +* https://github.com/vmario89/mightyscape-1.X (repo for collaboration. You can create your issues here. Active since May 2021) diff --git a/extensions/fablabchemnitz/000_about_fablabchemnitz.svg b/extensions/fablabchemnitz/000_about_fablabchemnitz.svg new file mode 100644 index 00000000..df967f89 --- /dev/null +++ b/extensions/fablabchemnitz/000_about_fablabchemnitz.svg @@ -0,0 +1,110 @@ + + + + + + + diff --git a/extensions/fablabchemnitz/000_validate.sh b/extensions/fablabchemnitz/000_validate.sh new file mode 100755 index 00000000..7b8e0cf8 --- /dev/null +++ b/extensions/fablabchemnitz/000_validate.sh @@ -0,0 +1,63 @@ +#!/bin/bash +echo "Validating inx files with xmllint. Only errors are printed to console" +for folder in */ ; do xmllint --noout --relaxng ./inkscape.extension.rng $folder*.inx > /dev/null 2>> 000_xmllint.out; done; grep -v "validates\|warning: failed to load external entity" 000_xmllint.out; rm 000_xmllint.out + + +echo "Count of inx files:" +INX=$(find ./ -type f -name "*.inx" | wc -l) +echo INX: $INX + +echo "Count of extension folders:" +FOLDERS=$(ls -d */ | wc -l) +echo FOLDERS: $FOLDERS + +README="../../README.md" +#replace values in README.md +sed -i 's/\*\*.* extension folders\*\*/\*\*'${FOLDERS}' extension folders\*\*/g' ${README} +sed -i 's/\*\* with .* \.inx files\*\*/\*\* with \*\*'${INX}' \.inx files\*\*/g' ${README} + +echo "Removing unrequired pyc cache files" +find . -type d -name "__pycache__" -exec rm -rf {} \; + +read -p "Build local gallery extension zip files?" -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "Building Inkscape gallery extension zip files" + TARGETDIR="../000_Inkscape_Gallery" + mkdir -p $TARGETDIR > /dev/null + + #list of extensions which are uploaded at Inkscape gallery by us at the moment + for EXTENSION in \ + "animate_order" \ + "cleanup_styles" \ + "contour_scanner_and_trimmer" \ + "convert_to_polylines" \ + "create_links" \ + "dxf2papercraft" \ + "dxf_dwg_importer" \ + "imagetracerjs" \ + "inventory_sticker" \ + "move_path_node" \ + "remove_empty_groups" \ + "offset_paths" \ + "papercraft_unfold" \ + "paperfold" \ + "primitive" \ + "slic3r_stl_input" \ + "split_and_break_bezier_at_t" \ + "styles_to_layers" \ + "ungrouper_and_element_migrator_filter" \ + "unwind_paths" \ + "vpypetools" + do + EXTRA="" + if [[ $EXTENSION == "styles_to_layers" ]] || [[ $EXTENSION == "ungrouper_and_element_migrator_filter" ]]; then + EXTRA="${EXTRA} apply_transformations/" + elif [[ $EXTENSION == "styles_to_layers" ]] || [[ $EXTENSION == "ungrouper_and_element_migrator_filter" ]]; then + EXTRA="${EXTRA} remove_empty_groups/" + fi + ZIPFILE=$TARGETDIR/$EXTENSION.zip + rm $ZIPFILE > /dev/null + zip -r $ZIPFILE $EXTENSION/ 000_about_fablabchemnitz.svg $EXTRA + done +fi diff --git a/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.inx b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.inx new file mode 100644 index 00000000..ea91f80a --- /dev/null +++ b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.inx @@ -0,0 +1,43 @@ + + + About/Upgrade MightyScape + fablabchemnitz.de.about_upgrade_mightyscape + + + false + false + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.py b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.py new file mode 100644 index 00000000..45cc83c5 --- /dev/null +++ b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python3 + +""" +Upgrade MightyScape from Inkscape Extension Dialog. Made for end users + +Extension for InkScape 1.X +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 14.05.2021 +Last patch: 23.07.2021 +License: GNU GPL v3 + +ToDo + - enable stash option + - add while loop to list all remoteCommits by jumping from parent to parent + - add option to create/init .git repo from zip downloaded MightyScape version (to enable upgrader) if no .git dir was found +""" + +import inkex +import os +import warnings +from datetime import datetime +try: + import git + from git import Repo #requires GitPython lib +except: + inkex.utils.debug("Error. GitPython was not installed but is required to run the upgrade process!") + exit(1) + +class AboutUpgradeMightyScape(inkex.EffectExtension): + + def update(self, local_repo, remote): + try: + localCommit = local_repo.head.commit + remote_repo = git.remote.Remote(local_repo, 'origin') + remoteCommit = remote_repo.fetch()[0].commit + self.msg("Latest remote commit is: " + str(remoteCommit)[:7]) + + if localCommit.hexsha != remoteCommit.hexsha: + ssh_executable = 'git' + with local_repo.git.custom_environment(GIT_SSH=ssh_executable): + origin = local_repo.remotes.origin + origin.fetch() + + fetch_info = origin.pull() #finally pull new data + for info in fetch_info: #should return only one line in total + inkex.utils.debug("Updated %s to commit id %s" % (info.ref, str(info.commit)[:7])) + + inkex.utils.debug("Please restart Inkscape to let the changes take effect.") + + else: + inkex.utils.debug("Nothing to do! MightyScape is already up to date!") + + except git.exc.GitCommandError as e: + self.msg("Error: ") + self.msg(e) + return False + return True + + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--convert_to_git", type=inkex.Boolean, default=False, help="If you downloaded MightyScape as .zip or .tar.gz you cannot upgrade using this extension. But you can convert your downloaded directory to a .git one by enabling this option") + pars.add_argument("--stash_untracked", type=inkex.Boolean, default=False, help="Stash untracked files and continue to upgrade") + + + def effect(self): + warnings.simplefilter('ignore', ResourceWarning) #suppress "enable tracemalloc to get the object allocation traceback" + + #get the directory of mightyscape + extension_dir = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), '../')) #go up to main dir /home//.config/inkscape/extensions/mightyscape-1.X/ + main_dir = os.path.abspath(os.path.join(extension_dir, '../../')) #go up to main dir /home//.config/inkscape/extensions/mightyscape-1.X/ + + #create some statistics + totalFolders = 0 + for root, folders, files in os.walk(extension_dir): + totalFolders += len(folders) + break #prevent descending into subfolders + + totalInx = 0 + for root, folders, files in os.walk(extension_dir): + for file in files: + if file.endswith('.inx'): + totalInx += 1 + + inkex.utils.debug("Locally there are {} extension folders with {} .inx files!\n".format(totalFolders, totalInx)) + + remotes = [] + remotes.append(["https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X.git", "origin"]) #main + remotes.append(["https://github.com/vmario89/mightyscape-1.X.git", "github"]) #copy/second remote + + gitDir = os.path.join(main_dir, ".git") + if not os.path.exists(gitDir): + if self.options.convert_to_git is True: + local_repo = Repo.init(main_dir) + local_repo.git.add(all=True) + localRemotes = [] + for remote in remotes: + localRemotes.append(local_repo.create_remote(remote[1], url=remote[0])) + localRemotes[0].update() + local_repo.index.commit('.') + if self.options.stash_untracked is True: + local_repo.git.stash('save') + local_repo.git.checkout('origin/master') + #git init + #git add . + #git remote add origin https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X.git + #git remote add github https://github.com/vmario89/mightyscape-1.X.git + #git remote update + #git commit -m "." + #git stash + #git checkout origin/master + else: + self.msg("MightyScape .git directory was not found. It seems you installed MightyScape the traditional way (by downloading and extracting from archive). Please install MightyScape using the git clone method if you want to use the upgrade function. More details can be found in the official README.") + exit(1) + + local_repo = Repo(gitDir) + #check if it is a non-empty git repository + if local_repo.bare is False: + if local_repo.is_dirty(untracked_files=True) is False: + if len(local_repo.untracked_files) > 0: + if self.options.stash_untracked is True: + local_repo.git.stash('save') + else: + inkex.utils.debug("There are some untracked files in your MightyScape directory. Still trying to pull recent files from git...") + + localLatestCommit = local_repo.head.commit + localCommits = list(local_repo.iter_commits("origin/master", max_count=10, skip=0)) + self.msg("Local commit id is: " + str(localLatestCommit)[:7]) + self.msg("There are {} local commits at the moment.".format(len(localCommits))) + localCommitList = [] + for localCommit in localCommits: + localCommitList.append(localCommit) + #localCommitList.reverse() + self.msg("*"*40) + self.msg("Latest local commits are:") + for i in range(0, len(localCommits)): + self.msg("{} | {} : {}".format( + datetime.utcfromtimestamp(localCommitList[i].committed_date).strftime('%Y-%m-%d %H:%M:%S'), + localCommitList[i].name_rev[:7], + localCommitList[i].message.strip()) + ) + #self.msg(" - {}: {}".format(localCommitList[i].newhexsha[:7], localCommitList[i].message)) + self.msg("*"*40) + + #finally run the update + success = self.update(local_repo, remotes[0][0]) + if success is False: #try the second remote if first failed + self.msg("Error receiving latest remote commit from main git remote {}. Trying second remote ...".format(remotes[0][0])) + success = self.update(local_repo, remotes[1][0]) + if success is False: #if still false: + self.msg("Error receiving latest remote commit from second git remote {}.\nAre you offline? Cannot continue!".format(remotes[0][0])) + exit(1) + + else: + inkex.utils.debug("No \".git\" directory found. Seems your MightyScape was not installed with git clone. Please see documentation on how to do that.") + exit(1) + +if __name__ == '__main__': + AboutUpgradeMightyScape().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/affine_spirals/affine_spirals.inx b/extensions/fablabchemnitz/affine_spirals/affine_spirals.inx new file mode 100644 index 00000000..5b92ba53 --- /dev/null +++ b/extensions/fablabchemnitz/affine_spirals/affine_spirals.inx @@ -0,0 +1,23 @@ + + + Affine Spirals + fablabchemnitz.de.affine_spirals + + + 3 + 2 + 0.8 + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/affine_spirals/affine_spirals.py b/extensions/fablabchemnitz/affine_spirals/affine_spirals.py new file mode 100644 index 00000000..e7fcd7ed --- /dev/null +++ b/extensions/fablabchemnitz/affine_spirals/affine_spirals.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 + +import inkex +from lxml import etree +from math import cos, sin, pi, exp +__version__ = '0.1' + +def line(npts=40, x0=0, y0=0, delta=.5, sgn=1): + #returns a list of points on a line (y = +/- x + c) starting at x0,y0 + return [ (x0 + delta*t, y0 + sgn*delta*t) for t in range(npts)] + +def ff(v, ww=.25, ds=.4): + #covering map from R^2 ro punctured plane + x,y = v + r,u = exp(-ds*x), cos(pi*ww*y) + 1J*sin(pi*ww*y) + return r*u + +def mk_plugs(pts): + #returns a list of complex representing a plug type segment + segs = [fit_plug(end_pts) for end_pts in zip(pts,pts[1:]) ] + tmp = [] + for seg in segs: + tmp.extend(seg) + return tmp + +def fit_plug(ss): + a,b = ss + rot = complex(b-a) + pts = [0,.45,.4 + .15*1J, .6 + .15*1J, .55, 1] + return [rot*z + a for z in pts] + +def pts2curve(cplxs): + '''makes a polyline path element from a list of complex + ''' + def cplx2pt(z): + return (z.real,z.imag) + + scale = 200 + data = [cplx2pt( scale*z ) for z in cplxs ] + pth = [ '%.2f, %.2f '%z for z in data] + return 'M '+ ''.join(pth) + +class AffineSpirals(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--num_lines", type=int, default=3) + pars.add_argument("--num_petals", type=int, default=3) + pars.add_argument("--shrink_ratio", type=float, default=3) + pars.add_argument("--active-tab", default='title') + + def calc_unit_factor(self): + unit_factor = self.svg.unittouu(str(1.0) + self.options.units) + return unit_factor + + def effect(self): + path_stroke = '#DD0000' # take color from tab3 + path_fill = 'none' # no fill - just a line + path_stroke_width = 1. # can also be in form '0.6mm' + page_id = self.options.active_tab # sometimes wrong the very first time + + styles = [ {'stroke': path_stroke , 'fill': 'none', 'stroke-width': path_stroke_width}, + {'stroke': 'none', 'fill': '#FFFF00', 'stroke-width': 0}] + + styles = [str(inkex.Style(x)) for x in styles] + + # This finds center of current view in inkscape + t = 'translate(%s,%s)' % (self.svg.namedview.center[0], self.svg.namedview.center[1]) + + # Make a nice useful name + g_attribs = {inkex.addNS('label','inkscape'): 'koch', + inkex.addNS('transform-center-x','inkscape'): str(0), + inkex.addNS('transform-center-y','inkscape'): str(0), + 'transform': t, + 'style' : styles[1], + 'info':'N: '+str(self.options.num_lines) } + topgroup = etree.SubElement(self.svg.get_current_layer(), 'g', g_attribs) + + NN = 2*self.options.num_lines + NP = self.options.num_petals + SF = 2*self.options.shrink_ratio + + payload = [] + for y in range(-NP,NP): + mpts = [ff(z,ww=1./NP, ds=SF) for z in line(npts=NN, y0=y)] + payload.append(mk_plugs(mpts)) + mpts = [ff(z,ww=1./NP, ds=SF) for z in line(npts=NN, y0=y,sgn=-1 )] + payload.append(mk_plugs(mpts)) + + payload = [pts2curve(cc) for cc in payload] + payload = ' '.join(payload) + + curve_attribs = { 'style': styles[0], 'd': payload} + etree.SubElement(topgroup, inkex.addNS('path','svg'), curve_attribs) + +if __name__ == '__main__': + AffineSpirals().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.inx b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.inx new file mode 100644 index 00000000..07a59481 --- /dev/null +++ b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.inx @@ -0,0 +1,14 @@ + + + AI compatible EPS output + fablabchemnitz.de.ai_compatible_eps_output + + .eps + application/eps + Encapsulated PostScript - AI compatible (*.eps) + Adobe Illustrator 7 compatible EPS + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.py b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.py new file mode 100644 index 00000000..e1ccbc89 --- /dev/null +++ b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.py @@ -0,0 +1,1183 @@ +#!/usr/bin/env python +""" +Mainly written by Andras Prim github_at_primandras.hu + +Arc to bezier converting method is ported from: +http://code.google.com/p/core-framework/source/browse/trunk/plugins/svg.js +written by Angel Kostadinov, with MIT license +""" + +try: + from lxml import etree as ET +except Exception: + import xml.etree.ElementTree as ET + +import re +import math + +def wrap(text, width): + """ A word-wrap function that preserves existing line breaks """ + retstr = "" + for word in text.split(' '): + if len(retstr)-retstr.rfind('\n')-1 + len(word.split('\n',1)[0]) >= width: + retstr += ' \n' + word + else: + retstr += ' ' + word + return retstr + +def css2dict(css): + """returns a dictionary representing the given css string""" + cssdict = {} + if None == css: + return cssdict + for pair in css.split(';'): #TODO: what about escaped separators + if pair.find(':') >= 0: + key, value = pair.split(':') + cssdict[ key.strip() ] = value.strip() + return cssdict + +def cssColor2Eps(cssColor, colors='RGB'): + """converts css color definition (a hexa code with leading # or 'rgb()') + to eps color definition""" + if '#' == cssColor[0]: + r = float(int(cssColor[1:3],16)) / 255 + g = float(int(cssColor[3:5],16)) / 255 + b = float(int(cssColor[5:7],16)) / 255 + else: + # assume 'rgb()' color + rgb = re.sub('[^0-9]+', ' ', cssColor).strip().split() + r = float(int(rgb[0], 10)) / 255 + g = float(int(rgb[1], 10)) / 255 + b = float(int(rgb[2], 10)) / 255 + + if colors == 'RGB': + return "%f %f %f" % (r, g, b) + elif colors == 'CMYKRGB': + if (r == 0) and (g == 0) and (b == 0): + c = 0 + m = 0 + y = 0 + k = 1 + else: + c = 1 - r + m = 1 - g + y = 1 - b + + # extract out k [0,1] + min_cmy = min(c, m, y) + c = (c - min_cmy) / (1 - min_cmy) + m = (m - min_cmy) / (1 - min_cmy) + y = (y - min_cmy) / (1 - min_cmy) + k = min_cmy + + return "%f %f %f %f %f %f %f" % (c, m, y, k, r, g, b) + +class svg2eps: + def __init__(self, filename=None): + self.filename = filename + self.svg = None + self.rePathDSplit = re.compile('[^a-zA-Z0-9.-]+') + self.reTransformFind = re.compile('([a-z]+)\\(([^)]+)\\)') + self.reNumberFind = re.compile('[0-9.eE+-]+') + # must update reNumberUnitFind, if e is a valid character in a unit + self.reNumberUnitFind = re.compile('([0-9.eE+-]+)([a-z]*)') + # px to pt conversion rate varies based on inkscape versions, it is added during parsing + self.toPt = {'in': 72.0, 'pt': 1.0, 'mm': 2.8346456695, 'cm': 28.346456695, 'm': 2834.6456695, 'pc': 12.0} + + def unitConv(self, string, toUnit): + match = self.reNumberUnitFind.search(string) + number = float(match.group(1)) + unit = match.group(2) + if unit not in self.toPt: + unit = 'uu' + + if unit == toUnit: + return number + else: + return number * self.toPt[unit] / self.toPt[toUnit] + + def lengthConv(self, svgLength): + """converts svgLength to eps length using the current transformation matrix""" + matrix = self.matrices[-1] + epsx = matrix[0] * svgLength + epsy = matrix[1] * svgLength + + return math.sqrt(epsx*epsx + epsy*epsy) + + def coordConv(self, svgx, svgy, relative=False): + """converts svgx, svgy coordinates to eps coordinates using the current transformation matrix""" + if relative: + svgx = float(svgx) + self.curPoint[0] + svgy = float(svgy) + self.curPoint[1] + else: + svgx = float(svgx) + svgy = float(svgy) + matrix = self.matrices[-1] + epsx = matrix[0] * svgx + matrix[2] * svgy + matrix[4] + epsy = matrix[1] * svgx + matrix[3] * svgy + matrix[5] + + return (epsx, epsy) + + def matrixMul(self, matrix, matrix2): + """multiplies matrix with matrix2""" + matrix0 = matrix[:] + matrix[0] = matrix0[0] * matrix2[0] + matrix0[2]*matrix2[1] # + matrix0[4]*0 + matrix[1] = matrix0[1] * matrix2[0] + matrix0[3]*matrix2[1] # + matrix0[5]*0 + matrix[2] = matrix0[0] * matrix2[2] + matrix0[2]*matrix2[3] # + matrix0[4]*0 + matrix[3] = matrix0[1] * matrix2[2] + matrix0[3]*matrix2[3] # + matrix0[5]*0 + matrix[4] = matrix0[0] * matrix2[4] + matrix0[2]*matrix2[5] + matrix0[4] + matrix[5] = matrix0[1] * matrix2[4] + matrix0[3]*matrix2[5] + matrix0[5] + + + def alert(self, string, elem): + """adds an alert to the collection""" + if not string in self.alerts: + self.alerts[string] = set() + elemId = elem.get('id') + if elemId != None: + self.alerts[string].add(elemId) + + def showAlerts(self): + """show alerts collected by the alert() function""" + for string, ids in self.alerts.iteritems(): + idstring = ', '.join(ids) + print(string, idstring) + + def elemSvg(self, elem): + """handles the element""" + # DPI changed in inkscape 0.92, so set the px-to-pt rate based on inkscape version + self.toPt['px'] = 0.75 + inkscapeVersionString = elem.get('{http://www.inkscape.org/namespaces/inkscape}version', '0.92.0') + mobj = re.match(r'(\d+)\.(\d+)', inkscapeVersionString) + if mobj != None: + major = int(mobj.group(1)) + minor = int(mobj.group(2)) + if major == 0 and minor < 92: + self.toPt['px'] = 0.8 + + # by default (without viewbox definition) user unit = pixel + self.toPt['uu'] = self.toPt['px'] + self.docWidth = self.unitConv(elem.get('width'), 'pt') + self.docHeight = self.unitConv(elem.get('height'), 'pt') + + viewBoxString = elem.get('viewBox') + if viewBoxString != None: + viewBox = viewBoxString.split(' ') + # theoretically width and height scaling factor could be different, + # but this script does not support it + widthUu = float(viewBox[2]) - float(viewBox[0]) + self.toPt['uu'] = self.docWidth / widthUu + + # transform svg units to eps default pt + scale = self.toPt['uu'] + self.matrices = [ [scale, 0, 0, -scale, 0, self.docHeight] ] + + + def gradientFill(self, elem, gradientId): + """constructs a gradient instance definition in self.gradientOp""" + if gradientId not in self.gradients: + self.alert("fill gradient not defined: "+gradientId, elem ) + return + gradient = self.gradients[gradientId] + transformGradient = gradient + while 'href' in gradient: + gradientId = gradient['href'] + gradient = self.gradients[gradientId] + if 'matrix' in transformGradient: + self.matrices.append( self.matrices[-1][:] ) + self.matrixMul(self.matrices[-1],transformGradient['matrix']) + + if 'linear' == transformGradient['type']: + gradient['linUseCount'] += 1 + x1, y1 = self.coordConv(transformGradient['x1'], transformGradient['y1']) + x2, y2 = self.coordConv(transformGradient['x2'], transformGradient['y2']) + deltax = x2 - x1 + deltay = y2 - y1 + length = math.sqrt( deltax*deltax + deltay*deltay ) + angle = math.atan2(deltay, deltax)*180/math.pi + + elif 'radial' == transformGradient['type']: + gradient['radUseCount'] += 1 + cx, cy = self.coordConv(transformGradient['cx'], transformGradient['cy']) + # fx, fy = self.coordConv(transformGradient['fx'], transformGradient['fy']) + rx, ry = self.coordConv(transformGradient['cx'] + transformGradient['r'], transformGradient['cy']) + r = math.sqrt( (rx-cx)*(rx-cx) + (ry-cy)*(ry-cy)) + + if 'matrix' in transformGradient: + self.matrices.pop() + + + if 'linear' == transformGradient['type']: + #endPathSegment() will substitute appropriate closeOp in %%s + self.gradientOp = "\nBb 1 (l_%s) %f %f %f %f 1 0 0 1 0 0 Bg %%s 0 BB" % \ + (gradientId, x1, y1, angle, length) + elif 'radial' == transformGradient['type']: + self.gradientOp = "\nBb 1 (r_%s) %f %f 0 %f 1 0 0 1 0 0 Bg %%s 0 BB" % \ + (gradientId, cx, cy, r) + self.alert("radial gradients will appear circle shaped", elem) + + + + def pathStyle(self, elem): + """handles the style attribute in svg element""" + if self.clipPath: + self.closeOp = 'h n' + return + + css = self.cssStack[-1] + if 'stroke' in css and css['stroke'] != 'none': + self.closeOp = 's' + self.pathCloseOp = 's' + if '#' == css['stroke'][0] or 'rgb' == css['stroke'][0:3]: + self.epspath += ' ' + cssColor2Eps(css['stroke']) + ' XA' + elif 'url' == css['stroke'][0:3]: + self.alert("gradient strokes not supported", elem) + if 'fill' in css and css['fill'] != 'none': + if self.closeOp == 's': + self.closeOp = 'b' + else: + self.closeOp = 'f' + if '#' == css['fill'][0] or 'rgb' == css['fill'][0:3]: + self.epspath += ' ' + cssColor2Eps(css['fill']) + ' Xa' + elif 'url' == css['fill'][0:3]: + self.gradientFill(elem, css['fill'][5:-1]) + + + if 'fill-rule' in css: + if css['fill-rule'] == 'evenodd': + self.epspath += " 1 XR" + else: + self.epspath += " 0 XR" + if 'stroke-width' in css: + self.epspath += " %f w" % (self.lengthConv(self.unitConv(css['stroke-width'], 'uu')), ) + if 'stroke-linecap' in css: + if css['stroke-linecap'] == 'butt': + self.epspath += " 0 J" + elif css['stroke-linecap'] == 'round': + self.epspath += " 1 J" + elif css['stroke-linecap'] == 'square': + self.epspath += " 2 J" + if 'stroke-linejoin' in css: + if css['stroke-linejoin'] == 'miter': + self.epspath += " 0 j" + elif css['stroke-linejoin'] == 'round': + self.epspath += " 1 j" + elif css['stroke-linejoin'] == 'bevel': + self.epspath += " 2 j" + if 'stroke-miterlimit' in css: + self.epspath += " " + css['stroke-miterlimit'] + " M" + if 'stroke-dasharray' in css: + phase = 0 + if css['stroke-dasharray'] == 'none': + dashArray = [] + if css['stroke-dasharray'] != 'none': + dashArrayIn = css['stroke-dasharray'].replace(',', ' ').split() + dashArray = list(map(lambda x: "%f" % (x,), filter(lambda x: x > 0, map(lambda x: self.lengthConv(float(x)), dashArrayIn)))) + if 'stroke-dashoffset' in css: + phase = float(css['stroke-dashoffset']) + + self.epspath += ' [ %s ] %f d' % (' '.join(dashArray), phase) + + + + def endPathSegment(self, elem): + """should be called when a path segment end is reached in a element""" + if self.removeStrayPoints and self.segmentCommands <= 1: + self.alert("removing stray point", elem) + self.epspath = self.epspath[:self.segmentStartIndex] + return + if self.autoClose and (self.closeOp == 'f' or self.closeOp == 'b'): + autoClose = True + else: + autoClose = False + + if self.pathExplicitClose or autoClose: + closeOp = self.closeOp + else: + closeOp = self.closeOp.upper() + + if self.pathCurSegment == self.pathSegmentNum and self.gradientOp != None: + closeOp = self.gradientOp % (closeOp,) + + if self.lastBegin != None: + if (self.pathExplicitClose or autoClose): + if abs(self.curPoint[0] - self.lastBegin[0]) + \ + abs(self.curPoint[1] - self.lastBegin[1]) > self.closeDist: + x, y = self.coordConv(self.lastBegin[0], self.lastBegin[1]) + self.epspath += ' %f %f l' % (x, y) + + self.epspath += ' ' + closeOp + '\n' + + if self.pathExplicitClose: + self.curPoint = self.lastBegin + + self.lastBegin = None + + def elemPath(self, elem, pathData=None): + """handles svg element""" + if None == pathData: + pathData = elem.get('d') + self.pathSegmentNum = pathData.count("m") + pathData.count("M") + self.pathCurSegment = 0 + self.epspath = '' + self.segmentStartIndex = 0 # index in self.epspath of first character of current path segment + self.segmentCommands = 0 # number of handled commands (including first moveto) in current paths segment + self.closeOp = 'n' # pathStyle(elem) will modify this + self.gradientOp = None + self.pathExplicitClose = False + if elem.get('id'): + self.epspath += '\n%AI3_Note: ' + elem.get('id') + '\n' + + self.pathStyle(elem) + + tokens = self.rePathDSplit.split(pathData) + i = 0 + cmd = '' # path command + self.curPoint = (0,0) + self.lastBegin = None + + while i < len(tokens): + token = tokens[i] + if token in ['m', 'M', 'c', 'C', 'l', 'L', 'z', 'Z', 'a', 'A', 'q', 'Q', 'h', 'H', 'v', 'V']: + cmd = token + i += 1 + elif token.isalpha(): + self.alert('unhandled path command: %s' % (token,), elem) + cmd = '' + i += 1 + else: # coordinates after a moveto are assumed to be lineto + if 'm' == cmd: + cmd = 'l' + elif 'M' == cmd: + cmd = 'L' + + if ('M' == cmd or 'm' == cmd) : + if self.pathCurSegment > 0: + self.endPathSegment(elem) + self.pathCurSegment += 1 + self.pathExplicitClose = False + + if 'M' == cmd or 'm' == cmd: + if 'M' == cmd or ('m' == cmd and i == 1): + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + else: + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + + self.segmentStartIndex = len(self.epspath) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.lastBegin = self.curPoint + self.epspath += ' m' + self.segmentCommands = 1 + elif 'L' == cmd or 'l' == cmd: + if 'L' == cmd: + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + else: + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.epspath += ' l' + self.segmentCommands += 1 + elif cmd in ['H', 'h', 'V', 'v']: + if 'H' == cmd: + self.curPoint = (float(tokens[i]), self.curPoint[1]) + elif 'h' == cmd: + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1]) + elif 'V' == cmd: + self.curPoint = (self.curPoint[0], float(tokens[i])) + elif 'v' == cmd: + self.curPoint = (self.curPoint[0], self.curPoint[1] + float(tokens[i])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 1 + self.epspath += ' l' + self.segmentCommands += 1 + elif 'C' == cmd: + for j in range(2): + x, y = self.coordConv(tokens[i], tokens[i+1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'c' == cmd: + for j in range(2): + x, y = self.coordConv(self.curPoint[0] + float(tokens[i]), self.curPoint[1] +float(tokens[i+1])) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'Q' == cmd: + #export quadratic Bezier as cubic + qx0, qy0 = self.coordConv(self.curPoint[0], self.curPoint[1]) + qx1, qy1 = self.coordConv(float(tokens[i]), float(tokens[i+1])) + i += 2 + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + qx2, qy2 = self.coordConv(self.curPoint[0], self.curPoint[1]) + factor = 2.0 / 3.0 + cx1 = qx0 + factor * (qx1 - qx0) + cy1 = qy0 + factor * (qy1 - qy0) + cx2 = qx2 - factor * (qx2 - qx1) + cy2 = qy2 - factor * (qy2 - qy1) + self.epspath += ' %f %f %f %f' % (cx1, cy1, cx2, cy2) + self.epspath += ' %f %f' % (qx2, qy2) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'q' == cmd: + qx0, qy0 = self.coordConv(self.curPoint[0], self.curPoint[1]) + qx1, qy1 = self.coordConv(self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + i += 2 + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + qx2, qy2 = self.coordConv(self.curPoint[0], self.curPoint[1]) + factor = 2.0 / 3.0 + cx1 = qx0 + factor * (qx1 - qx0) + cy1 = qy0 + factor * (qy1 - qy0) + cx2 = qx2 - factor * (qx2 - qx1) + cy2 = qy2 - factor * (qy2 - qy1) + self.epspath += ' %f %f %f %f' % (cx1, cy1, cx2, cy2) + self.epspath += ' %f %f' % (qx2, qy2) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'A' == cmd or 'a' == cmd: + self.alert("elliptic arcs are converted to bezier curves", elem) + +# Angel Kostadinov begin + r1 = abs(float(tokens[i])) + r2 = abs(float(tokens[i+1])) + psai = float(tokens[i+2]) + largeArcFlag = int(tokens[i + 3]) + fS = int(tokens[i+4]) + rx = self.curPoint[0] + ry = self.curPoint[1] + if 'A' == cmd: + cx, cy = (float(tokens[i+5]), float(tokens[i+6])) + else: + cx, cy = (self.curPoint[0] +float(tokens[i+5]), self.curPoint[1] +float(tokens[i+6])) + + if r1 > 0 and r2 > 0: + ctx = (rx - cx) / 2 + cty = (ry - cy) / 2 + cpsi = math.cos(psai*math.pi/180) + spsi = math.sin(psai*math.pi/180) + rxd = cpsi*ctx + spsi*cty + ryd = -1*spsi*ctx + cpsi*cty + rxdd = rxd * rxd + rydd = ryd * ryd + r1x = r1 * r1 + r2y = r2 * r2 + lamda = rxdd/r1x + rydd/r2y + + if lamda > 1: + r1 = math.sqrt(lamda) * r1 + r2 = math.sqrt(lamda) * r2 + sds = 0 + else: + seif = 1 + if largeArcFlag == fS: + seif = -1 + sds = seif * math.sqrt((r1x*r2y - r1x*rydd - r2y*rxdd) / (r1x*rydd + r2y*rxdd)) + + txd = sds*r1*ryd / r2 + tyd = -1 * sds*r2*rxd / r1 + tx = cpsi*txd - spsi*tyd + (rx+cx)/2 + ty = spsi*txd + cpsi*tyd + (ry+cy)/2 + rad = math.atan2((ryd-tyd)/r2, (rxd-txd)/r1) - math.atan2(0, 1) + if rad >= 0: + s1 = rad + else: + s1 = 2 * math.pi + rad + rad = math.atan2((-ryd-tyd)/r2, (-rxd-txd)/r1) - math.atan2((ryd-tyd)/r2, (rxd-txd)/r1) + if rad >= 0: + dr = rad + else: + dr = 2 * math.pi + rad + + if fS==0 and dr > 0: + dr -= 2*math.pi + elif fS==1 and dr < 0: + dr += 2*math.pi + + sse = dr * 2 / math.pi + if sse < 0: + seg = math.ceil(-1*sse) + else: + seg = math.ceil(sse) + segr = dr / seg + t = 8.0/3.0 * math.sin(segr/4) * math.sin(segr/4) / math.sin(segr/2) + cpsir1 = cpsi * r1 + cpsir2 = cpsi * r2 + spsir1 = spsi * r1 + spsir2 = spsi * r2 + mc = math.cos(s1) + ms = math.sin(s1) + x2 = rx - t * (cpsir1*ms + spsir2*mc) + y2 = ry - t * (spsir1*ms - cpsir2*mc) + + for n in range(int(math.ceil(seg))): + s1 += segr + mc = math.cos(s1) + ms = math.sin(s1) + + x3 = cpsir1*mc - spsir2*ms + tx + y3 = spsir1*mc + cpsir2*ms + ty + dx = -t * (cpsir1*ms + spsir2*mc) + dy = -t * (spsir1*ms - cpsir2*mc) + + cx1, cy1 = self.coordConv(x2,y2) + cx2, cy2 = self.coordConv(x3-dx,y3-dy) + cx3, cy3 = self.coordConv(x3,y3) + + self.epspath += " %f %f %f %f %f %f c" % (cx1, cy1, cx2, cy2, cx3, cy3) + + x2 = x3 + dx + y2 = y3 + dy + else: + # case when one radius is zero: this is a simple line + x, y = self.coordConv(cx, cy) + self.epspath += ' %f %f l' % (x, y) + +# Angel Kostadinov end + self.segmentCommands += 1 + i += 7 + self.curPoint= (cx, cy) + + elif 'z' == cmd or 'Z' == cmd: + self.pathExplicitClose = True + cmd = '' + else: + i += 1 + + self.endPathSegment(elem) + + if self.pathSegmentNum > 1: + self.epspath = " *u\n" + self.epspath + "\n*U " + self.epsLayers += "\n" + wrap(self.epspath, 70) + "\n" + + def elemRect(self, elem): + x = float(elem.get('x')) + y = float(elem.get('y')) + width = float(elem.get('width')) + height = float(elem.get('height')) + + # construct an svg d attribute, and call self.elemPath() + pathData = "" + rx = elem.get('rx') + ry = elem.get('ry') + if None == rx and None == ry: + rx = 0 + ry = 0 + else: + # if only one radius is given, it means both are the same + if None == rx: + rx = float(ry) + else: + rx = float(rx) + if None == ry: + ry = float(rx) + else: + ry = float(ry) + + if rx == 0 and ry == 0: + pathData = "M %f %f %f %f %f %f %f %f z" % (x,y, x+width,y, x+width, y+height, x, y+height) + else: + pathData = "M %f %f A %f %f 0 0 1 %f %f" % (x, y+ry, rx,ry, x+rx, y) + pathData += " L %f %f A %f %f 0 0 1 %f %f" % (x+width-rx, y, rx,ry, x+width, y+ry) + pathData += " L %f %f A %f %f 0 0 1 %f %f" % (x+width, y+height-ry, rx,ry, x+width-rx, y+height) + pathData += " L %f %f A %f %f 0 0 1 %f %f z" % (x+rx, y+height, rx,ry, x, y+height-ry) + self.elemPath(elem, pathData) + + def elemPolygon(self, elem): + pathData = 'M ' + elem.get('points').replace(',', ' ').strip() + ' z' + self.elemPath(elem, pathData) + + def elemCircle(self, elem): + r = float(elem.get('r')) + self.elemEllipseCircleCommon(elem, r, r) + + def elemEllipse(self, elem): + rx = float(elem.get('rx')) + ry = float(elem.get('ry')) + self.elemEllipseCircleCommon(elem, rx, ry) + + def elemEllipseCircleCommon(self, elem, rx, ry): + cx = float(elem.get('cx')) + cy = float(elem.get('cy')) + # todo: test whether PostScript arc is handled by AI and use that instead + magic = 0.55228475 # I've read it on the internet + controlx = rx * magic # x distance of control points from center + controly = ry * magic # y distance of control points from center + + # construct an svg d attribute, and call self.elemPath() + pathData = "M %f %f" % (cx - rx, cy) # leftmost point + pathData += " C %f %f %f %f %f %f" % (cx - rx, cy - controly, cx - controlx, cy - ry, cx, cy - ry) # to top + pathData += " C %f %f %f %f %f %f" % (cx + controlx, cy - ry, cx + rx, cy - controly, cx + rx, cy) # to right + pathData += " C %f %f %f %f %f %f" % (cx + rx, cy + controly, cx + controlx, cy + ry, cx, cy + ry) # to bottom + pathData += " C %f %f %f %f %f %f z" % (cx - controlx, cy + ry, cx - rx, cy + controly, cx - rx, cy) # back to left and close + self.elemPath(elem, pathData) + + + def attrTransform(self, matrix, transform): + """transforms matrix using svg transform attribute""" + for ttype, targs in self.reTransformFind.findall(transform): + targs = list(map(lambda x: float(x), self.reNumberFind.findall(targs))) + if ttype == 'matrix': + newmatrix = [ targs[0], targs[1], + targs[2], targs[3], + targs[4], targs[5] ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'translate': + tx = targs[0] + ty = targs[1] if len(targs) > 1 else 0 + newmatrix = [ 1, 0, 0, 1, tx, ty ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'scale': + sx = targs[0] + sy = targs[1] if len(targs) > 1 else sx + newmatrix = [ sx, 0, 0, sy, 0, 0 ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'rotate': + if len(targs) == 1: + alpha = targs[0] + newmatrix = [ math.cos(alpha), math.sin(alpha), + -math.sin(alpha), math.cos(alpha), + 0, 0] + self.matrixMul(matrix, newmatrix) + else: + alpha = targs[0] + newmatrix = [ 1, 0, 0, 1, targs[1], targs[2] ] + self.matrixMul(matrix, newmatrix) + newmatrix = [ math.cos(alpha), math.sin(alpha), + -math.sin(alpha), math.cos(alpha), + 0, 0] + self.matrixMul(matrix, newmatrix) + newmatrix = [ 1, 0, 0, 1, -targs[1], -targs[2] ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'skewX' or ttype == 'skewY': + self.alert("skewX and skewY transformations are not supported", elem) + else: + print('unknown transform type: ', ttype) + return matrix + + def elemGradient(self, elem, grType): + """handles and svg elements""" + elemId = elem.get('id') + if elemId != None: + self.curGradientId = elemId + self.gradients[elemId] = {'stops': [], 'linUseCount': 0, 'radUseCount': 0, 'type': grType} + if 'linear' == grType: + x1 = elem.get('x1') + if None != x1: + self.gradients[elemId]['x1'] = float(x1) + self.gradients[elemId]['y1'] = float(elem.get('y1')) + self.gradients[elemId]['x2'] = float(elem.get('x2')) + self.gradients[elemId]['y2'] = float(elem.get('y2')) + elif 'radial' == grType: + cx = elem.get('cx') + if None != cx: + self.gradients[elemId]['cx'] = float(cx) + self.gradients[elemId]['cy'] = float(elem.get('cy')) + self.gradients[elemId]['fx'] = float(elem.get('fx')) + self.gradients[elemId]['fy'] = float(elem.get('fy')) + self.gradients[elemId]['r'] = float(elem.get('r')) + + transform = elem.get('gradientTransform') + if None != transform: + self.gradients[elemId]['matrix'] = self.attrTransform([1, 0, 0, 1, 0, 0], transform) + + href = elem.get('{http://www.w3.org/1999/xlink}href') + if None != href: + self.gradients[elemId]['href'] = href[1:] + + + def elemStop(self, elem): + """handles (gradient stop) svg element""" + stopColor = elem.get('stop-color') + if not stopColor: + style = css2dict(elem.get('style')) + if 'stop-color' in style: + stopColor = style['stop-color'] + else: + stopColor = '#000000' + color = cssColor2Eps(stopColor, 'CMYKRGB') + offsetString = elem.get('offset').strip() + if offsetString[-1] == '%': + offset = float(offsetString[:-1]) + else: + offset = float(offsetString) * 100 + self.gradients[self.curGradientId]['stops'].append( (offset, color) ) + + def gradientSetup(self): + """writes used gradient definitions into self.epsSetup""" + gradientNum = 0 + epsGradients = "" + for gradientId, gradient in self.gradients.items(): + + if gradient['linUseCount'] > 0: + gradientNum += 1 + epsGradients += ("\n%%AI5_BeginGradient: (l_%s)" + \ + "\n(l_%s) 0 %d Bd\n[\n") % \ + (gradientId, gradientId, len(gradient['stops'])) + gradient['stops'].sort(key=lambda x: x[0], reverse=True) + + for offset, color in gradient['stops']: + epsGradients += "%s 2 50 %f %%_Bs\n" % (color, offset) + epsGradients += "BD\n%AI5_EndGradient\n" + + if gradient['radUseCount'] > 0: + gradientNum += 1 + epsGradients += ("\n%%AI5_BeginGradient: (r_%s)" + \ + "\n(r_%s) 1 %d Bd\n[\n") % \ + (gradientId, gradientId, len(gradient['stops'])) + gradient['stops'].sort(key=lambda x: x[0]) + + for offset, color in gradient['stops']: + epsGradients += "%s 2 50 %f %%_Bs\n" % (color, offset) + epsGradients += "BD\n%AI5_EndGradient\n" + + if gradientNum > 0: + self.epsSetup += ("\n%d Bn\n" % gradientNum) + epsGradients + + + def layerStart(self, elem): + self.epsLayers += '\n\n%AI5_BeginLayer\n' + layerName = elem.get('{http://www.inkscape.org/namespaces/inkscape}label') + layerName = "".join(map(lambda x: '_' if ord(x)<32 or ord(x) > 127 else x, layerName)) + self.epsLayers += '1 1 1 1 0 0 %d 0 0 0 Lb\n(%s) Ln\n' % \ + (self.layerColor, layerName) + self.layerColor = (self.layerColor + 1) % 27 + + def elemUse(self, elem): + """handles a svg element""" + x = self.unitConv(elem.get('x'), 'uu') + if x == None: + x = 0 + y = self.unitConv(elem.get('y'), 'uu') + if y == None: + y = 0 + + if x != 0 or y != 0: + self.matrices.append( self.matrices[-1][:] ) + self.attrTransform(self.matrices[-1], "translate(%f %f)" % (x, y)) + + href = elem.get('{http://www.w3.org/1999/xlink}href') + usedElem = self.root.find(".//*[@id='%s']" % (href[1:],)) + if usedElem != None: + self.walkElem(usedElem) + else: + self.alert("used Elem not found: " + href, elem) + + if x != 0 or y != 0: + self.matrices.pop() + + # def elemNamedView(self, elem): + # """handles a svg element""" + # newDocumentUnit = elem.get('{http://www.inkscape.org/namespaces/inkscape}document-units') + # if newDocumentUnit in self.toPt and newDocumentUnit != self.documentUnit: + # if len(self.matrices) > 0: + # # recalculate scaling transformation to new document unit + # scale = self.toPt[newDocumentUnit] / self.toPt[self.documentUnit] + # self.matrices[-1][0] = scale * self.matrices[-1][0] + # self.matrices[-1][3] = scale * self.matrices[-1][3] + # self.documentUnit = newDocumentUnit + + def walkElem(self, elem): + if '}' in elem.tag: + uri, shortTag = elem.tag.split('}') + else: + shortTag = elem.tag + uri = '' + + transform = elem.get('transform') + clipPath = elem.get('clip-path') + cssNew = css2dict(elem.get('style')) + css = self.cssStack[-1].copy() + css.update(cssNew) + self.cssStack.append(css) + if self.removeInvisible: + if 'visibility' in css and (css['visibility'] == 'hidden' or css['visibility'] == 'collapse'): + return + if 'display' in css and css['display'] == 'none': + return + if shortTag in ('path', 'rect', 'circle', 'ellipse', 'polygon'): + if 'opacity' in css and css['opacity'] == '0': + return + stroke = False + if 'stroke' in css and 'none' != css['stroke']: + stroke = True + if 'stroke-opacity' in css and css['stroke-opacity'] == '0': + stroke = False + if 'stroke-width' in css and css['stroke-width'] == '0': + stroke = False + fill = False + if 'fill' in css and 'none' != css['fill']: + fill = True + if 'fill-opacity' in css and css['fill-opacity'] == '0': + stroke = False + if stroke == False and fill == False: + return + + + if transform != None: + self.matrices.append( self.matrices[-1][:] ) + self.attrTransform(self.matrices[-1], transform) + + if None != clipPath: + clipId = clipPath[5:-1] + clipElem = self.root.find(".//*[@id='%s']" % (clipId,)) + if clipElem == None: + self.alert('clipPath not found', elem) + clipPath = None + else: + self.epsLayers += "\nq\n" + clipPathSave= self.clipPath + self.clipPath = True + # output clip path even if it doesn't have visible style + popRemoveInvisible = self.removeInvisible + self.removeInvisible = False + self.walkElem(clipElem) + self.removeInvisible = popRemoveInvisible + self.clipPath = clipPathSave + self.epsLayers += ' W' + + if 'svg' == shortTag: + self.elemSvg(elem) + elif 'path' == shortTag: + # do not output paths that are in defs + # if they are referenced, they will be used there + if self.section != 'defs': + self.elemPath(elem) + elif 'rect' == shortTag: + if self.section != 'defs': + self.elemRect(elem) + elif 'circle' == shortTag: + if self.section != 'defs': + self.elemCircle(elem) + elif 'ellipse' == shortTag: + if self.section != 'defs': + self.elemEllipse(elem) + elif 'polygon' == shortTag: + if self.section != 'defs': + self.elemPolygon(elem) + elif 'linearGradient' == shortTag: + self.elemGradient(elem, 'linear') + elif 'radialGradient' == shortTag: + self.elemGradient(elem, 'radial') + elif 'stop' == shortTag: + self.elemStop(elem) + elif 'g' == shortTag: + if 'layer' == elem.get('{http://www.inkscape.org/namespaces/inkscape}groupmode'): + self.layerStart(elem) + elif None == clipPath: # clipping makes a group anyway + self.epsLayers += '\nu\n' + elif 'use' == shortTag: + self.elemUse(elem) + elif 'defs' == shortTag: + self.section = shortTag + elif 'namedview' == shortTag: + self.section = shortTag + else: + self.alert("unhandled elem: " + shortTag, elem) + + + for child in list(elem): + self.walkElem(child) + + if None != clipPath: + self.epsLayers += "\nQ\n" + + if 'g' == shortTag: + if 'layer' == elem.get('{http://www.inkscape.org/namespaces/inkscape}groupmode'): + self.epsLayers += '\nLB\n%AI5_EndLayer\n' + elif None == clipPath: + self.epsLayers += '\nU\n' + elif shortTag in ('defs', 'namedview'): + self.section = None + + if transform != None: + self.matrices.pop() + + self.cssStack.pop() + + def convert(self, svg = None): + self.alerts = {} + if None != svg: + self.svg = svg + if None == self.svg and None != self.filename: + fd = open(self.filename, 'rb') + self.svg = fd.read() + fd.close() + + self.autoClose = True # TODO: make it optional + self.removeInvisible = True # TODO: make it optional + self.removeStrayPoints = True # TODO: make it optional + # if last point of a path is further from first point, then an explicit + # 'lineto' is written to the first point before 'closepath' + self.closeDist = 0.1 + self.matrices = [[1, 0, 0, 1, 0, 0]] + self.cssStack = [{}] + self.gradients = {} + self.docHeight = 400 + self.docWidth = 400 + self.layerColor = 0 + self.section = None + self.clipPath = False + self.epsComments = """%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: tzunghaor svg2eps +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentNeededResources: procset Adobe_Illustrator_AI5 1.3 0 +%AI5_FileFormat 3 +""" + # TODO: creation date, user etc + + self.epsProlog = """%%BeginProlog +100 dict begin +/tzung_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +/Adobe_Illustrator_AI5 where +{ pop } { + /tzung_strokergb [ 0 0 0 ] def + /tzung_compound 0 def + /tzung_closeop { S } def + /tzung_fillrule 0 def + + /*u { /tzung_compound 1 def newpath /tzung_fillrule 0 def } bind def + /*U { /tzung_compound 0 def tzung_closeop } bind def + /u {} bind def + /U {} bind def + + /q { clipsave } bind def + /Q { cliprestore } bind def + /W { clip } bind def + + /Lb { 10 {pop} repeat } bind def + /Ln {pop} bind def + /LB {} bind def + + + /w { setlinewidth } bind def + /J { setlinecap } bind def + /j { setlinejoin } bind def + /M { setmiterlimit } bind def + /d { setdash } bind def + + /m { tzung_compound 0 eq { newpath /tzung_fillrule 0 def } if moveto } bind def + /l { lineto } bind def + /c { curveto } bind def + + /XR { /tzung_fillrule exch def } bind def + /Xa { setrgbcolor } bind def + /XA { 3 array astore /tzung_strokergb exch def } bind def + + + /F { tzung_compound 0 eq { + tzung_fillrule 0 eq { fill } { eofill } ifelse + } { + /tzung_closeop {F} def + } ifelse } bind def + /f { closepath F } bind def + /S { tzung_compound 0 eq { + tzung_strokergb aload pop setrgbcolor stroke + } { + /tzung_closeop {S} def + } ifelse } bind def + /s { closepath S } bind def + + /B { tzung_compound 0 eq { + gsave + tzung_fillrule 0 eq { fill } { eofill } ifelse + grestore + tzung_strokergb aload pop setrgbcolor stroke + } { + /tzung_closeop {B} def + } ifelse } bind def + /b { closepath B } bind def + /H { tzung_compound 0 eq { + }{ + /tzung_closeop {H} def + } ifelse} bind def + /h { closepath } bind def + /N { tzung_compound 0 eq { + }{ + /tzung_closeop {N} def + } ifelse} bind def + /n { closepath N } bind def + + + /Bn { /dict_gradients exch dict def} bind def + /Bd { /tmp_ngradstop exch def /tmp_shadingtype exch def } bind def %leaves gradient name in stack + /BD { ] % this handles only stops that have CMYKRGB color definitions + % linear gradient stops must be in reverse order, radials in normal order + aload + pop + /tmp_boundaries tmp_ngradstop array def + /tmp_colors tmp_ngradstop array def + tmp_shadingtype 0 eq { + 0 1 tmp_ngradstop 1 sub % for i=0; i<= number of gradient stops - 1; i++ + } { + tmp_ngradstop 1 sub -1 0 % for i=number of gradient stops - 1; i >= 0; i++ + } ifelse + { + /loopvar exch def + 100 div + tmp_boundaries loopvar + 3 -1 roll put % obj array i => array i obj + pop % assume gradient middle is always 50 + pop % assume color type is always 2 (CMYKRGB) + 3 array astore + tmp_colors loopvar + 3 -1 roll put + pop pop pop pop % drop CMYK values + } for + + tmp_ngradstop 2 eq { + /tmp_function 5 dict def + tmp_boundaries 0 get tmp_boundaries 1 get 2 array astore + tmp_function /Domain 3 -1 roll put + tmp_function /FunctionType 2 put + tmp_function /C0 tmp_colors 0 get put + tmp_function /C1 tmp_colors 1 get put + tmp_function /N 1 put + + } { + /tmp_functions tmp_ngradstop 1 sub array def + + 0 1 tmp_ngradstop 2 sub { + /loopvar exch def + /tmp_function 5 dict def + tmp_function /Domain [0 1] put + tmp_function /FunctionType 2 put + tmp_function /C0 tmp_colors loopvar get put + tmp_function /C1 tmp_colors loopvar 1 add get put + tmp_function /N 1 put + tmp_functions loopvar tmp_function put + } for + + + /tmp_function 5 dict def + tmp_boundaries 0 get tmp_boundaries tmp_ngradstop 1 sub get 2 array astore + tmp_function /Domain 3 -1 roll put + tmp_function /FunctionType 3 put + tmp_boundaries aload pop + tmp_ngradstop -1 roll pop pop % remove first and last bounds + tmp_ngradstop 2 sub array astore + tmp_function /Bounds 3 -1 roll put + tmp_function /Functions tmp_functions put + + tmp_ngradstop 1 sub { + 0 1 + } repeat + tmp_ngradstop 1 sub 2 mul array astore + tmp_function /Encode 3 -1 roll put + + } ifelse + + /tmp_shading 6 dict def + tmp_shadingtype 0 eq { + tmp_shading /ShadingType 2 put + tmp_shading /Coords [ 0 0 1 0 ] put + } { + tmp_shading /ShadingType 3 put + tmp_shading /Coords [ 0 0 0 0 0 1 ] put + } ifelse + tmp_shading /ColorSpace /DeviceRGB put + tmp_shading /Domain [0 1] put + tmp_shading /Extend[ true true] put + tmp_shading /Function tmp_function put + + /tmp_gradient 2 dict def + tmp_gradient /PatternType 2 put + tmp_gradient /Shading tmp_shading put + + dict_gradients exch tmp_gradient put % gradient's name is on the top of the stack from Bd operator + + } bind def + /Lb { 10 { pop } repeat } bind def + /Ln { pop } bind def + /Bb { } bind def + + /Bg { + 6 { pop } repeat + gsave + 4 2 roll + translate + exch + rotate + dup scale + exch pop % remove Bg flag + dict_gradients exch get % now gradient name is on top of the stack + [ 1 0 0 1 0 0 ] + makepattern + /pattern_tmp exch def + grestore + pattern_tmp setpattern + gsave % save for after pattern fil for possible stroke + } def + /BB { grestore 2 eq { s } if } bind def + /LB { } bind def + +} ifelse +""" + self.epsSetup = """%%BeginSetup +/Adobe_Illustrator_AI5 where +{ + pop + Adobe_Illustrator_AI5 /initialize get exec +} if +""" + self.epsLayers = "" + self.epsTrailer = """%%Trailer +showpage +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +tzung_eps_state restore +end +%%EOF +""" + + + self.root = ET.fromstring(self.svg) + self.walkElem(self.root) + self.gradientSetup() + + sizeComment = "%%%%BoundingBox: 0 0 %d %d\n" % (math.ceil(self.docWidth), math.ceil(self.docHeight)) + sizeComment += "%%%%HiResBoundingBox: 0 0 %f %f\n" % (self.docWidth, self.docHeight) + sizeComment += "%%AI5_ArtSize: %f %f\n" % (self.docWidth, self.docHeight) + pagesetup = """%%%%Page: 1 1 +%%%%BeginPageSetup +%%%%PageBoundingBox: 0 0 %d %d +%%%%EndPageSetup +""" % (self.docWidth, self.docHeight) + + eps = self.epsComments + sizeComment + "%%EndComments\n\n" + eps += self.epsProlog + "\n%%EndProlog\n\n" + eps += self.epsSetup + "\n%%EndSetup\n\n" + eps += pagesetup + self.epsLayers + "\n\n" + eps += self.epsTrailer + + return eps + +import sys + +if len(sys.argv) < 2: + raise NameError("missing filename") + exit(1) + +converter = svg2eps(sys.argv[1]) + +print(converter.convert()) +#TODO: show alerts in dialogbox +#converter.showAlerts() diff --git a/extensions/fablabchemnitz/animate_order/animate_order.inx b/extensions/fablabchemnitz/animate_order/animate_order.inx new file mode 100644 index 00000000..5cdb9175 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/animate_order.inx @@ -0,0 +1,64 @@ + + + Animate Order + fablabchemnitz.de.animate_order + + + + + + 5.0 + 60 + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/animate_order.py b/extensions/fablabchemnitz/animate_order/animate_order.py new file mode 100644 index 00000000..08b191f0 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/animate_order.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 + +import inkex +import subprocess +import shutil +import os +import sys +import warnings + +""" +Extension for InkScape 1.X +Features + - Create SVG preview file and show it in browser. Helps to quickly evaluate line order for cutting processes + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 21.04.2021 +Last patch: 07.05.2021 +License: GNU GPL v3 + +Used version of Vivus JS library: https://github.com/maxwellito/vivus/releases/tag/v0.4.6 - MIT License + +Browser config: +Firefox via about:config -> privacy.file_unique_origin = false + +ToDo: + - adjust width and height (give options) + - embed config buttons inside html to adjust time/type/... (more flexible than clicking from Inkscape) + - we should do it the way like vivus instant -> http://maxwellito.github.io/vivus / https://maxwellito.github.io/vivus-instant + - the generated SVGs can be downloaded again and include all animations! + - calculate the total length of all paths and auto-adjust the speed to have good visibility + - Possible feature request could be to handle "animate selected objects only". See "Export selection as ... " extension to steal that code. +""" +DETACHED_PROCESS = 0x00000008 + +class AnimateOrder(inkex.EffectExtension): + + def spawnIndependentProcess(self, args): #function to spawn non-blocking inkscape instance. the inkscape command is available because it is added to ENVIRONMENT when Inkscape main instance is started + warnings.simplefilter('ignore', ResourceWarning) #suppress "enable tracemalloc to get the object allocation traceback" + if os.name == 'nt': + subprocess.Popen(args, close_fds=True, creationflags=DETACHED_PROCESS) + else: + subprocess.Popen(args, start_new_session=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + warnings.simplefilter("default", ResourceWarning) + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--time", type=float, default = 5.0, help="Duration (frames)") + pars.add_argument("--fps", type=int, default = 60.0, help="Frames per second (fps)") + pars.add_argument("--sequence_type", help="Sequence type") + pars.add_argument("--reverse", type = inkex.Boolean, default = False, help="Reverse order") + pars.add_argument("--browser", help="Select your desired browser (must be installed and must exist in %PATH% variable).") + + def effect(self): + #write current SVG to extensions' directory. Target name must be "drawing.svg" because it is embedded in animate_order.html statically + inFile = "drawing.svg" + extension_dir = os.path.dirname(os.path.realpath(__file__)) + shutil.copy2(self.options.input_file, os.path.join(extension_dir, inFile)) + + target_html = os.path.join(extension_dir, "animate_order.html") + + docTitle = self.document.getroot().get("{http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd}docname") + if docTitle is None: + title = "Animate Order - Vivus JS" + else: + title = "Animate Order - " + docTitle + vivus_include = "./vivus-0.4.6/dist/vivus.js" + + duration = self.options.time * self.options.fps # we guess we have 20 ... 60 fps. depends on performance of the machine + frames_per_second = self.options.fps + type = self.options.sequence_type + reverse = str(self.options.reverse).lower() + + with open(target_html, "w") as text_file: + print( '' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print(f' {title}' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( '
' , file=text_file) + print(f' ' , file=text_file) + print(f' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( '' , file=text_file) + + if os.path.exists(target_html) is False: + inkex.utils.debug("Error. Target file does not exist!") + exit(1) + + #now open firefox + args = [self.options.browser, target_html] + try: + self.spawnIndependentProcess(args) + except FileNotFoundError as e: + inkex.utils.debug("Error. Check for correct browser installation and try again!") + exit(1) + +if __name__ == '__main__': + AnimateOrder().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.eslintrc.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.eslintrc.json new file mode 100644 index 00000000..b6a0b41d --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.eslintrc.json @@ -0,0 +1,37 @@ +{ + "env": { + "es6": false, + "amd": false, + "browser": true, + "jasmine": true, + "node": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module" + }, + "globals": { + "Pathformer": true, + "Vivus": true, + "window": true, + "document": true, + "define": true, + "jasmine": true, + "it": true, + "expect": true, + "describe": true, + "beforeEach": true, + "afterEach": true, + "spyOn": true + }, + "rules": { + "no-cond-assign": 2, + "no-console": 0, + "no-const-assign": 2, + "no-class-assign": 2, + "no-this-before-super": 2, + "no-unused-vars": 1, + "no-empty": 0, + "object-shorthand": [2, "always"] + } +} diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.github/ISSUE_TEMPLATE.md b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..cfe60cfb --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,16 @@ +### Please define your problem or issue as clear as possible. + +For a problem, please fill the following: + +**Vivus version**: + +**Browser**: + +**Steps to reproduce it**: + +**JSFiddle link (or similar platform)**: +*No personal website will be allowed, only sandboxed platform where the code is isolated, clear and can be hacked. I don't want to debug uglified code between 42 libraries.* + +*[note]* +Please have a minimum of politeness. There's unfortunately only me as contributor/maintainor which help on my free time, I'm not the Amazon customer service or your Mom. I don't ask to send me flowers and tell me how amazing Vivus is (that won't make me help you quicker). But please try to do as much as you can before opening an issue: check that no closed issue mention a similar problem, that your script is executed correctly (conflicts, race conditions...).. Thanks :) +*[/note]* diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.gitignore b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.gitignore new file mode 100644 index 00000000..bdaa75e9 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.gitignore @@ -0,0 +1,6 @@ +coverage/ +node_modules/ +.DS_Store +.idea +yarn.lock +dist/vivus.min.js.map diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.npmignore b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.npmignore new file mode 100644 index 00000000..b5210b50 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.npmignore @@ -0,0 +1,5 @@ +test +assets +node_modules +coverage +.DS_Store diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.travis.yml b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.travis.yml new file mode 100644 index 00000000..a4726d41 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - 'stable' +script: npm run lint && npm run test +before_install: + - export CHROME_BIN=chromium-browser + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/CONTRIBUTING.md b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/CONTRIBUTING.md new file mode 100644 index 00000000..26aa7c50 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/CONTRIBUTING.md @@ -0,0 +1,7 @@ +# Contributing + +First of all, thanks for contributing, thinking about contributing, or even arriving here by mistake. + +Issues are reserved to mention a problem, a bug or discuss about implementing a feature. If you have any question or support request, please use [Gitter](https://gitter.im/maxwellito/vivus). For every issue, please try to give as much information as you can : version, steps to recreate it, examples (via jsFiddle or something like that). + +About pull requests, please try to contact the maintainer beforehand. He's a kinda human Grumpy Cat trying to avoid features which can be useful for only 1% of users. The warning is only because it would be sad to see contributors spending time a feature that wouldn't be merged. Otherwise, I would recommend you to add a section in the `hacks.md` file. But if it's a bug fix, the chances to be merged are higher. If necessary please think about updating the tests. \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/LICENSE b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/LICENSE new file mode 100644 index 00000000..cb16e265 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) maxwellito + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/delayed.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/delayed.png new file mode 100644 index 00000000..39f34125 Binary files /dev/null and b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/delayed.png differ diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/oneByOne.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/oneByOne.png new file mode 100644 index 00000000..d2f22456 Binary files /dev/null and b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/oneByOne.png differ diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_custom.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_custom.png new file mode 100644 index 00000000..520e37b7 Binary files /dev/null and b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_custom.png differ diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_default.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_default.png new file mode 100644 index 00000000..bd03697e Binary files /dev/null and b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_default.png differ diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/sync.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/sync.png new file mode 100644 index 00000000..f792903d Binary files /dev/null and b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/sync.png differ diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/timelines.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/timelines.svg new file mode 100644 index 00000000..44f1bd06 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/timelines.svg @@ -0,0 +1,95 @@ + + + + + + + + time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/bower.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/bower.json new file mode 100644 index 00000000..0e71b32f --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/bower.json @@ -0,0 +1,16 @@ +{ + "name": "vivus", + "description": "JavaScript library to make drawing animation on SVG", + "main": "dist/vivus.js", + "licence": "MIT", + "ignore": [ + "assets/", + "src/", + "test/", + ".gitignore", + ".jshintrc", + "gulpfile.js", + "index.html", + "package.json" + ] +} \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.js new file mode 100644 index 00000000..57dbff04 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.js @@ -0,0 +1,1222 @@ +/** + * vivus - JavaScript library to make drawing animation on SVG + * @version v0.4.6 + * @link https://github.com/maxwellito/vivus + * @license MIT + */ + +(function () { + + 'use strict'; + +/** + * Pathformer + * Beta version + * + * Take any SVG version 1.1 and transform + * child elements to 'path' elements + * + * This code is purely forked from + * https://github.com/Waest/SVGPathConverter + */ + +/** + * Class constructor + * + * @param {DOM|String} element Dom element of the SVG or id of it + */ +function Pathformer(element) { + // Test params + if (typeof element === 'undefined') { + throw new Error('Pathformer [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID'); + } + } + if (element instanceof window.SVGElement || + element instanceof window.SVGGElement || + /^svg$/i.test(element.nodeName)) { + this.el = element; + } else { + throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement'); + } + + // Start + this.scan(element); +} + +/** + * List of tags which can be transformed + * to path elements + * + * @type {Array} + */ +Pathformer.prototype.TYPES = ['line', 'ellipse', 'circle', 'polygon', 'polyline', 'rect']; + +/** + * List of attribute names which contain + * data. This array list them to check if + * they contain bad values, like percentage. + * + * @type {Array} + */ +Pathformer.prototype.ATTR_WATCH = ['cx', 'cy', 'points', 'r', 'rx', 'ry', 'x', 'x1', 'x2', 'y', 'y1', 'y2']; + +/** + * Finds the elements compatible for transform + * and apply the liked method + * + * @param {object} options Object from the constructor + */ +Pathformer.prototype.scan = function (svg) { + var fn, element, pathData, pathDom, + elements = svg.querySelectorAll(this.TYPES.join(',')); + + for (var i = 0; i < elements.length; i++) { + element = elements[i]; + fn = this[element.tagName.toLowerCase() + 'ToPath']; + pathData = fn(this.parseAttr(element.attributes)); + pathDom = this.pathMaker(element, pathData); + element.parentNode.replaceChild(pathDom, element); + } +}; + + +/** + * Read `line` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Line element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.lineToPath = function (element) { + var newElement = {}, + x1 = element.x1 || 0, + y1 = element.y1 || 0, + x2 = element.x2 || 0, + y2 = element.y2 || 0; + + newElement.d = 'M' + x1 + ',' + y1 + 'L' + x2 + ',' + y2; + return newElement; +}; + +/** + * Read `rect` element to extract and transform + * data, to make it ready for a `path` object. + * The radius-border is not taken in charge yet. + * (your help is more than welcomed) + * + * @param {DOMelement} element Rect element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.rectToPath = function (element) { + var newElement = {}, + x = parseFloat(element.x) || 0, + y = parseFloat(element.y) || 0, + width = parseFloat(element.width) || 0, + height = parseFloat(element.height) || 0; + + if (element.rx || element.ry) { + var rx = parseInt(element.rx, 10) || -1, + ry = parseInt(element.ry, 10) || -1; + rx = Math.min(Math.max(rx < 0 ? ry : rx, 0), width/2); + ry = Math.min(Math.max(ry < 0 ? rx : ry, 0), height/2); + + newElement.d = 'M ' + (x + rx) + ',' + y + ' ' + + 'L ' + (x + width - rx) + ',' + y + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width) + ',' + (y + ry) + ' ' + + 'L ' + (x + width) + ',' + (y + height - ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width - rx) + ',' + (y + height) + ' ' + + 'L ' + (x + rx) + ',' + (y + height) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + x + ',' + (y + height - ry) + ' ' + + 'L ' + x + ',' + (y + ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + rx) + ',' + y; + } + else { + newElement.d = 'M' + x + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + (y + height) + ' ' + + 'L' + x + ' ' + (y + height) + ' Z'; + } + return newElement; +}; + +/** + * Read `polyline` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Polyline element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polylineToPath = function (element) { + var newElement = {}, + points = element.points.trim().split(' '), + i, path; + + // Reformatting if points are defined without commas + if (element.points.indexOf(',') === -1) { + var formattedPoints = []; + for (i = 0; i < points.length; i+=2) { + formattedPoints.push(points[i] + ',' + points[i+1]); + } + points = formattedPoints; + } + + // Generate the path.d value + path = 'M' + points[0]; + for(i = 1; i < points.length; i++) { + if (points[i].indexOf(',') !== -1) { + path += 'L' + points[i]; + } + } + newElement.d = path; + return newElement; +}; + +/** + * Read `polygon` element to extract and transform + * data, to make it ready for a `path` object. + * This method rely on polylineToPath, because the + * logic is similar. The path created is just closed, + * so it needs an 'Z' at the end. + * + * @param {DOMelement} element Polygon element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polygonToPath = function (element) { + var newElement = Pathformer.prototype.polylineToPath(element); + + newElement.d += 'Z'; + return newElement; +}; + +/** + * Read `ellipse` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element ellipse element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.ellipseToPath = function (element) { + var newElement = {}, + rx = parseFloat(element.rx) || 0, + ry = parseFloat(element.ry) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - rx, + startY = cy, + endX = parseFloat(cx) + parseFloat(rx), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + endX + ',' + endY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Read `circle` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Circle element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.circleToPath = function (element) { + var newElement = {}, + r = parseFloat(element.r) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - r, + startY = cy, + endX = parseFloat(cx) + parseFloat(r), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + r + ',' + r + ' 0,1,1 ' + endX + ',' + endY + + 'A' + r + ',' + r + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Create `path` elements form original element + * and prepared objects + * + * @param {DOMelement} element Original element to transform + * @param {object} pathData Path data (from `toPath` methods) + * @return {DOMelement} Path element + */ +Pathformer.prototype.pathMaker = function (element, pathData) { + var i, attr, pathTag = document.createElementNS('http://www.w3.org/2000/svg','path'); + for(i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + if (this.ATTR_WATCH.indexOf(attr.name) === -1) { + pathTag.setAttribute(attr.name, attr.value); + } + } + for(i in pathData) { + pathTag.setAttribute(i, pathData[i]); + } + return pathTag; +}; + +/** + * Parse attributes of a DOM element to + * get an object of attribute => value + * + * @param {NamedNodeMap} attributes Attributes object from DOM element to parse + * @return {object} Object of attributes + */ +Pathformer.prototype.parseAttr = function (element) { + var attr, output = {}; + for (var i = 0; i < element.length; i++) { + attr = element[i]; + // Check if no data attribute contains '%', or the transformation is impossible + if (this.ATTR_WATCH.indexOf(attr.name) !== -1 && attr.value.indexOf('%') !== -1) { + throw new Error('Pathformer [parseAttr]: a SVG shape got values in percentage. This cannot be transformed into \'path\' tags. Please use \'viewBox\'.'); + } + output[attr.name] = attr.value; + } + return output; +}; + + 'use strict'; + +var setupEnv, requestAnimFrame, cancelAnimFrame, parsePositiveInt; + +/** + * Vivus + * Beta version + * + * Take any SVG and make the animation + * to give give the impression of live drawing + * + * This in more than just inspired from codrops + * At that point, it's a pure fork. + */ + +/** + * Class constructor + * option structure + * type: 'delayed'|'sync'|'oneByOne'|'script' (to know if the items must be drawn synchronously or not, default: delayed) + * duration: (in frames) + * start: 'inViewport'|'manual'|'autostart' (start automatically the animation, default: inViewport) + * delay: (delay between the drawing of first and last path) + * dashGap whitespace extra margin between dashes + * pathTimingFunction timing animation function for each path element of the SVG + * animTimingFunction timing animation function for the complete SVG + * forceRender force the browser to re-render all updated path items + * selfDestroy removes all extra styling on the SVG, and leaves it as original + * + * The attribute 'type' is by default on 'delayed'. + * - 'delayed' + * all paths are draw at the same time but with a + * little delay between them before start + * - 'sync' + * all path are start and finish at the same time + * - 'oneByOne' + * only one path is draw at the time + * the end of the first one will trigger the draw + * of the next one + * + * All these values can be overwritten individually + * for each path item in the SVG + * The value of frames will always take the advantage of + * the duration value. + * If you fail somewhere, an error will be thrown. + * Good luck. + * + * @constructor + * @this {Vivus} + * @param {DOM|String} element Dom element of the SVG or id of it + * @param {Object} options Options about the animation + * @param {Function} callback Callback for the end of the animation + */ +function Vivus(element, options, callback) { + setupEnv(); + + // Setup + this.isReady = false; + this.setElement(element, options); + this.setOptions(options); + this.setCallback(callback); + + if (this.isReady) { + this.init(); + } +} + +/** + * Timing functions + ************************************** + * + * Default functions to help developers. + * It always take a number as parameter (between 0 to 1) then + * return a number (between 0 and 1) + */ +Vivus.LINEAR = function(x) { + return x; +}; +Vivus.EASE = function(x) { + return -Math.cos(x * Math.PI) / 2 + 0.5; +}; +Vivus.EASE_OUT = function(x) { + return 1 - Math.pow(1 - x, 3); +}; +Vivus.EASE_IN = function(x) { + return Math.pow(x, 3); +}; +Vivus.EASE_OUT_BOUNCE = function(x) { + var base = -Math.cos(x * (0.5 * Math.PI)) + 1, + rate = Math.pow(base, 1.5), + rateR = Math.pow(1 - x, 2), + progress = -Math.abs(Math.cos(rate * (2.5 * Math.PI))) + 1; + return 1 - rateR + progress * rateR; +}; + +/** + * Setters + ************************************** + */ + +/** + * Check and set the element in the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {DOM|String} element SVG Dom element or id of it + */ +Vivus.prototype.setElement = function(element, options) { + var onLoad, self; + + // Basic check + if (typeof element === 'undefined') { + throw new Error('Vivus [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error( + 'Vivus [constructor]: "element" parameter is not related to an existing ID' + ); + } + } + this.parentEl = element; + + // Load the SVG with XMLHttpRequest and extract the SVG + if (options && options.file) { + self = this; + onLoad = function() { + var domSandbox = document.createElement('div'); + domSandbox.innerHTML = this.responseText; + + var svgTag = domSandbox.querySelector('svg'); + if (!svgTag) { + throw new Error( + 'Vivus [load]: Cannot find the SVG in the loaded file : ' + + options.file + ); + } + + self.el = svgTag; + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + self.parentEl.appendChild(self.el); + self.isReady = true; + self.init(); + self = null; + }; + + var oReq = new window.XMLHttpRequest(); + oReq.addEventListener('load', onLoad); + oReq.open('GET', options.file); + oReq.send(); + return; + } + + switch (element.constructor) { + case window.SVGSVGElement: + case window.SVGElement: + case window.SVGGElement: + this.el = element; + this.isReady = true; + break; + + case window.HTMLObjectElement: + self = this; + onLoad = function(e) { + if (self.isReady) { + return; + } + self.el = + element.contentDocument && + element.contentDocument.querySelector('svg'); + if (!self.el && e) { + throw new Error( + 'Vivus [constructor]: object loaded does not contain any SVG' + ); + } else if (self.el) { + if (element.getAttribute('built-by-vivus')) { + self.parentEl.insertBefore(self.el, element); + self.parentEl.removeChild(element); + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + } + self.isReady = true; + self.init(); + self = null; + } + }; + + if (!onLoad()) { + element.addEventListener('load', onLoad); + } + break; + + default: + throw new Error( + 'Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)' + ); + } +}; + +/** + * Set up user option to the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {object} options Object from the constructor + */ +Vivus.prototype.setOptions = function(options) { + var allowedTypes = [ + 'delayed', + 'sync', + 'async', + 'nsync', + 'oneByOne', + 'scenario', + 'scenario-sync' + ]; + var allowedStarts = ['inViewport', 'manual', 'autostart']; + + // Basic check + if (options !== undefined && options.constructor !== Object) { + throw new Error( + 'Vivus [constructor]: "options" parameter must be an object' + ); + } else { + options = options || {}; + } + + // Set the animation type + if (options.type && allowedTypes.indexOf(options.type) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.type + + ' is not an existing animation `type`' + ); + } else { + this.type = options.type || allowedTypes[0]; + } + + // Set the start type + if (options.start && allowedStarts.indexOf(options.start) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.start + + ' is not an existing `start` option' + ); + } else { + this.start = options.start || allowedStarts[0]; + } + + this.isIE = + window.navigator.userAgent.indexOf('MSIE') !== -1 || + window.navigator.userAgent.indexOf('Trident/') !== -1 || + window.navigator.userAgent.indexOf('Edge/') !== -1; + this.duration = parsePositiveInt(options.duration, 120); + this.delay = parsePositiveInt(options.delay, null); + this.dashGap = parsePositiveInt(options.dashGap, 1); + this.forceRender = options.hasOwnProperty('forceRender') + ? !!options.forceRender + : this.isIE; + this.reverseStack = !!options.reverseStack; + this.selfDestroy = !!options.selfDestroy; + this.onReady = options.onReady; + this.map = []; + this.frameLength = this.currentFrame = this.delayUnit = this.speed = this.handle = null; + + this.ignoreInvisible = options.hasOwnProperty('ignoreInvisible') + ? !!options.ignoreInvisible + : false; + + this.animTimingFunction = options.animTimingFunction || Vivus.LINEAR; + this.pathTimingFunction = options.pathTimingFunction || Vivus.LINEAR; + + if (this.delay >= this.duration) { + throw new Error('Vivus [constructor]: delay must be shorter than duration'); + } +}; + +/** + * Set up callback to the instance + * The method will not return enything, but will throw an + * error if the parameter is invalid + * + * @param {Function} callback Callback for the animation end + */ +Vivus.prototype.setCallback = function(callback) { + // Basic check + if (!!callback && callback.constructor !== Function) { + throw new Error( + 'Vivus [constructor]: "callback" parameter must be a function' + ); + } + this.callback = callback || function() {}; +}; + +/** + * Core + ************************************** + */ + +/** + * Map the svg, path by path. + * The method return nothing, it just fill the + * `map` array. Each item in this array represent + * a path element from the SVG, with informations for + * the animation. + * + * ``` + * [ + * { + * el: the path element + * length: length of the path line + * startAt: time start of the path animation (in frames) + * duration: path animation duration (in frames) + * }, + * ... + * ] + * ``` + * + */ +Vivus.prototype.mapping = function() { + var i, paths, path, pAttrs, pathObj, totalLength, lengthMeter, timePoint, scale, hasNonScale; + timePoint = totalLength = lengthMeter = 0; + paths = this.el.querySelectorAll('path'); + hasNonScale = false; + + for (i = 0; i < paths.length; i++) { + path = paths[i]; + if (this.isInvisible(path)) { + continue; + } + + pathObj = { + el: path, + length: 0, + startAt: 0, + duration: 0, + isResizeSensitive: false + }; + + // If vector effect is non-scaling-stroke, the total length won't match the rendered length + // so we need to calculate the scale and apply it + if (path.getAttribute('vector-effect') === 'non-scaling-stroke') { + var rect = path.getBoundingClientRect(); + var box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.isResizeSensitive = true; + hasNonScale = true; + } else { + scale = 1; + } + pathObj.length = Math.ceil(path.getTotalLength() * scale); + + // Test if the path length is correct + if (isNaN(pathObj.length)) { + if (window.console && console.warn) { + console.warn( + 'Vivus [mapping]: cannot retrieve a path element length', + path + ); + } + continue; + } + this.map.push(pathObj); + path.style.strokeDasharray = + pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + path.style.strokeDashoffset = pathObj.length + this.dashGap; + pathObj.length += this.dashGap; + totalLength += pathObj.length; + + this.renderPath(i); + } + + // Show a warning for non-scaling elements + if (hasNonScale) { + console.warn('Vivus: this SVG contains non-scaling-strokes. You should call instance.recalc() when the SVG is resized or you will encounter unwanted behaviour. See https://github.com/maxwellito/vivus#non-scaling for more info.'); + } + + totalLength = totalLength === 0 ? 1 : totalLength; + this.delay = this.delay === null ? this.duration / 3 : this.delay; + this.delayUnit = this.delay / (paths.length > 1 ? paths.length - 1 : 1); + + // Reverse stack if asked + if (this.reverseStack) { + this.map.reverse(); + } + + for (i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + + switch (this.type) { + case 'delayed': + pathObj.startAt = this.delayUnit * i; + pathObj.duration = this.duration - this.delay; + break; + + case 'oneByOne': + pathObj.startAt = (lengthMeter / totalLength) * this.duration; + pathObj.duration = (pathObj.length / totalLength) * this.duration; + break; + + case 'sync': + case 'async': + case 'nsync': + pathObj.startAt = 0; + pathObj.duration = this.duration; + break; + + case 'scenario-sync': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + timePoint + + (parsePositiveInt(pAttrs['data-delay'], this.delayUnit) || 0); + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + timePoint = + pAttrs['data-async'] !== undefined + ? pathObj.startAt + : pathObj.startAt + pathObj.duration; + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + + case 'scenario': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + parsePositiveInt(pAttrs['data-start'], this.delayUnit) || 0; + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + } + lengthMeter += pathObj.length; + this.frameLength = this.frameLength || this.duration; + } +}; + +/** + * Public method to re-evaluate line length for non-scaling lines + * path elements. + */ +Vivus.prototype.recalc = function () { + if (this.mustRecalcScale) { + return; + } + this.mustRecalcScale = requestAnimFrame(function () { + this.performLineRecalc(); + }.bind(this)); +} + +/** + * Private method to re-evaluate line length on non-scaling + * path elements. Then call for a trace to update the SVG. + */ +Vivus.prototype.performLineRecalc = function () { + var pathObj, path, rect, box, scale; + for (var i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + if (pathObj.isResizeSensitive) { + path = pathObj.el; + rect = path.getBoundingClientRect(); + box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.length = Math.ceil(path.getTotalLength() * scale); + path.style.strokeDasharray = pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + } + } + this.trace(); + this.mustRecalcScale = null; +} + +/** + * Interval method to draw the SVG from current + * position of the animation. It update the value of + * `currentFrame` and re-trace the SVG. + * + * It use this.handle to store the requestAnimationFrame + * and clear it one the animation is stopped. So this + * attribute can be used to know if the animation is + * playing. + * + * Once the animation at the end, this method will + * trigger the Vivus callback. + * + */ +Vivus.prototype.draw = function() { + var self = this; + this.currentFrame += this.speed; + + if (this.currentFrame <= 0) { + this.stop(); + this.reset(); + } else if (this.currentFrame >= this.frameLength) { + this.stop(); + this.currentFrame = this.frameLength; + this.trace(); + if (this.selfDestroy) { + this.destroy(); + } + } else { + this.trace(); + this.handle = requestAnimFrame(function() { + self.draw(); + }); + return; + } + + this.callback(this); + if (this.instanceCallback) { + this.instanceCallback(this); + this.instanceCallback = null; + } +}; + +/** + * Draw the SVG at the current instant from the + * `currentFrame` value. Here is where most of the magic is. + * The trick is to use the `strokeDashoffset` style property. + * + * For optimisation reasons, a new property called `progress` + * is added in each item of `map`. This one contain the current + * progress of the path element. Only if the new value is different + * the new value will be applied to the DOM element. This + * method save a lot of resources to re-render the SVG. And could + * be improved if the animation couldn't be played forward. + * + */ +Vivus.prototype.trace = function() { + var i, progress, path, currentFrame; + currentFrame = + this.animTimingFunction(this.currentFrame / this.frameLength) * + this.frameLength; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + progress = (currentFrame - path.startAt) / path.duration; + progress = this.pathTimingFunction(Math.max(0, Math.min(1, progress))); + if (path.progress !== progress) { + path.progress = progress; + path.el.style.strokeDashoffset = Math.floor(path.length * (1 - progress)); + this.renderPath(i); + } + } +}; + +/** + * Method forcing the browser to re-render a path element + * from it's index in the map. Depending on the `forceRender` + * value. + * The trick is to replace the path element by it's clone. + * This practice is not recommended because it's asking more + * ressources, too much DOM manupulation.. + * but it's the only way to let the magic happen on IE. + * By default, this fallback is only applied on IE. + * + * @param {Number} index Path index + */ +Vivus.prototype.renderPath = function(index) { + if (this.forceRender && this.map && this.map[index]) { + var pathObj = this.map[index], + newPath = pathObj.el.cloneNode(true); + pathObj.el.parentNode.replaceChild(newPath, pathObj.el); + pathObj.el = newPath; + } +}; + +/** + * When the SVG object is loaded and ready, + * this method will continue the initialisation. + * + * This this mainly due to the case of passing an + * object tag in the constructor. It will wait + * the end of the loading to initialise. + * + */ +Vivus.prototype.init = function() { + // Set object variables + this.frameLength = 0; + this.currentFrame = 0; + this.map = []; + + // Start + new Pathformer(this.el); + this.mapping(); + this.starter(); + + if (this.onReady) { + this.onReady(this); + } +}; + +/** + * Trigger to start of the animation. + * Depending on the `start` value, a different script + * will be applied. + * + * If the `start` value is not valid, an error will be thrown. + * Even if technically, this is impossible. + * + */ +Vivus.prototype.starter = function() { + switch (this.start) { + case 'manual': + return; + + case 'autostart': + this.play(); + break; + + case 'inViewport': + var self = this, + listener = function() { + if (self.isInViewport(self.parentEl, 1)) { + self.play(); + window.removeEventListener('scroll', listener); + } + }; + window.addEventListener('scroll', listener); + listener(); + break; + } +}; + +/** + * Controls + ************************************** + */ + +/** + * Get the current status of the animation between + * three different states: 'start', 'progress', 'end'. + * @return {string} Instance status + */ +Vivus.prototype.getStatus = function() { + return this.currentFrame === 0 + ? 'start' + : this.currentFrame === this.frameLength + ? 'end' + : 'progress'; +}; + +/** + * Reset the instance to the initial state : undraw + * Be careful, it just reset the animation, if you're + * playing the animation, this won't stop it. But just + * make it start from start. + * + */ +Vivus.prototype.reset = function() { + return this.setFrameProgress(0); +}; + +/** + * Set the instance to the final state : drawn + * Be careful, it just set the animation, if you're + * playing the animation on rewind, this won't stop it. + * But just make it start from the end. + * + */ +Vivus.prototype.finish = function() { + return this.setFrameProgress(1); +}; + +/** + * Set the level of progress of the drawing. + * + * @param {number} progress Level of progress to set + */ +Vivus.prototype.setFrameProgress = function(progress) { + progress = Math.min(1, Math.max(0, progress)); + this.currentFrame = Math.round(this.frameLength * progress); + this.trace(); + return this; +}; + +/** + * Play the animation at the desired speed. + * Speed must be a valid number (no zero). + * By default, the speed value is 1. + * But a negative value is accepted to go forward. + * + * And works with float too. + * But don't forget we are in JavaScript, se be nice + * with him and give him a 1/2^x value. + * + * @param {number} speed Animation speed [optional] + */ +Vivus.prototype.play = function(speed, callback) { + this.instanceCallback = null; + + if (speed && typeof speed === 'function') { + this.instanceCallback = speed; // first parameter is actually the callback function + speed = null; + } else if (speed && typeof speed !== 'number') { + throw new Error('Vivus [play]: invalid speed'); + } + // if the first parameter wasn't the callback, check if the seconds was + if (callback && typeof callback === 'function' && !this.instanceCallback) { + this.instanceCallback = callback; + } + + this.speed = speed || 1; + if (!this.handle) { + this.draw(); + } + return this; +}; + +/** + * Stop the current animation, if on progress. + * Should not trigger any error. + * + */ +Vivus.prototype.stop = function() { + if (this.handle) { + cancelAnimFrame(this.handle); + this.handle = null; + } + return this; +}; + +/** + * Destroy the instance. + * Remove all bad styling attributes on all + * path tags + * + */ +Vivus.prototype.destroy = function() { + this.stop(); + var i, path; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + path.el.style.strokeDashoffset = null; + path.el.style.strokeDasharray = null; + this.renderPath(i); + } +}; + +/** + * Utils methods + * include methods from Codrops + ************************************** + */ + +/** + * Method to best guess if a path should added into + * the animation or not. + * + * 1. Use the `data-vivus-ignore` attribute if set + * 2. Check if the instance must ignore invisible paths + * 3. Check if the path is visible + * + * For now the visibility checking is unstable. + * It will be used for a beta phase. + * + * Other improvments are planned. Like detecting + * is the path got a stroke or a valid opacity. + */ +Vivus.prototype.isInvisible = function(el) { + var rect, + ignoreAttr = el.getAttribute('data-ignore'); + + if (ignoreAttr !== null) { + return ignoreAttr !== 'false'; + } + + if (this.ignoreInvisible) { + rect = el.getBoundingClientRect(); + return !rect.width && !rect.height; + } else { + return false; + } +}; + +/** + * Parse attributes of a DOM element to + * get an object of {attributeName => attributeValue} + * + * @param {object} element DOM element to parse + * @return {object} Object of attributes + */ +Vivus.prototype.parseAttr = function(element) { + var attr, + output = {}; + if (element && element.attributes) { + for (var i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + output[attr.name] = attr.value; + } + } + return output; +}; + +/** + * Reply if an element is in the page viewport + * + * @param {object} el Element to observe + * @param {number} h Percentage of height + * @return {boolean} + */ +Vivus.prototype.isInViewport = function(el, h) { + var scrolled = this.scrollY(), + viewed = scrolled + this.getViewportH(), + elBCR = el.getBoundingClientRect(), + elHeight = elBCR.height, + elTop = scrolled + elBCR.top, + elBottom = elTop + elHeight; + + // if 0, the element is considered in the viewport as soon as it enters. + // if 1, the element is considered in the viewport only when it's fully inside + // value in percentage (1 >= h >= 0) + h = h || 0; + + return elTop + elHeight * h <= viewed && elBottom >= scrolled; +}; + +/** + * Get the viewport height in pixels + * + * @return {integer} Viewport height + */ +Vivus.prototype.getViewportH = function() { + var client = this.docElem.clientHeight, + inner = window.innerHeight; + + if (client < inner) { + return inner; + } else { + return client; + } +}; + +/** + * Get the page Y offset + * + * @return {integer} Page Y offset + */ +Vivus.prototype.scrollY = function() { + return window.pageYOffset || this.docElem.scrollTop; +}; + +setupEnv = function() { + if (Vivus.prototype.docElem) { + return; + } + + /** + * Alias for document element + * + * @type {DOMelement} + */ + Vivus.prototype.docElem = window.document.documentElement; + + /** + * Alias for `requestAnimationFrame` or + * `setTimeout` function for deprecated browsers. + * + */ + requestAnimFrame = (function() { + return ( + window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(/* function */ callback) { + return window.setTimeout(callback, 1000 / 60); + } + ); + })(); + + /** + * Alias for `cancelAnimationFrame` or + * `cancelTimeout` function for deprecated browsers. + * + */ + cancelAnimFrame = (function() { + return ( + window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + window.msCancelAnimationFrame || + function(id) { + return window.clearTimeout(id); + } + ); + })(); +}; + +/** + * Parse string to integer. + * If the number is not positive or null + * the method will return the default value + * or 0 if undefined + * + * @param {string} value String to parse + * @param {*} defaultValue Value to return if the result parsed is invalid + * @return {number} + * + */ +parsePositiveInt = function(value, defaultValue) { + var output = parseInt(value, 10); + return output >= 0 ? output : defaultValue; +}; + + + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function() { + return Vivus; + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = Vivus; + } else { + // Browser globals + window.Vivus = Vivus; + } + +}()); + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.min.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.min.js new file mode 100644 index 00000000..e6d6596a --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.min.js @@ -0,0 +1 @@ +!function(){"use strict";function n(t){if(void 0===t)throw new Error('Pathformer [constructor]: "element" parameter is required');if(t.constructor===String&&!(t=document.getElementById(t)))throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID');if(!(t instanceof window.SVGElement||t instanceof window.SVGGElement||/^svg$/i.test(t.nodeName)))throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement');this.el=t,this.scan(t)}var r,e,t,p;function i(t,e,n){r(),this.isReady=!1,this.setElement(t,e),this.setOptions(e),this.setCallback(n),this.isReady&&this.init()}n.prototype.TYPES=["line","ellipse","circle","polygon","polyline","rect"],n.prototype.ATTR_WATCH=["cx","cy","points","r","rx","ry","x","x1","x2","y","y1","y2"],n.prototype.scan=function(t){for(var e,n,r,i=t.querySelectorAll(this.TYPES.join(",")),a=0;a=this.duration)throw new Error("Vivus [constructor]: delay must be shorter than duration")},i.prototype.setCallback=function(t){if(t&&t.constructor!==Function)throw new Error('Vivus [constructor]: "callback" parameter must be a function');this.callback=t||function(){}},i.prototype.mapping=function(){var t,e,n,r,i,a,o,s,h,l;for(s=a=o=0,e=this.el.querySelectorAll("path"),l=!1,t=0;t=this.frameLength))return this.trace(),void(this.handle=e(function(){t.draw()}));this.stop(),this.currentFrame=this.frameLength,this.trace(),this.selfDestroy&&this.destroy()}this.callback(this),this.instanceCallback&&(this.instanceCallback(this),this.instanceCallback=null)},i.prototype.trace=function(){var t,e,n,r;for(r=this.animTimingFunction(this.currentFrame/this.frameLength)*this.frameLength,t=0;t + + + + + + vivus.js - svg animation + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+

vivus, bringing your SVGs to life

+

Vivus is a lightweight JavaScript class (with no dependencies) that allows you to animate SVGs, giving them the appearence of being drawn. There are a variety of different animations available, as well as the option to create a custom script to draw your SVG in whatever way you like.

+ + +
+ + +
+
+ +

Animation types

+
+
+ + + + + + + + + + + + + + +
+

Delayed

+

Every path element is drawn at the same time with a small delay at the start. This is currently the default animation.

+ +
+
+ +
+ + + + + + + + + + + + + + +
+

Sync

+

Each line is drawn synchronously. They all start and finish at the same time, hence the name `sync`.

+ +
+
+ +
+ + + + + + + + + + + + + + +
+

OneByOne

+

Each path element is drawn one after the other. This animation gives the best impression of live drawing.

+ +
+
+
+
+
+
+ + +
+
+ +

Timing function

+

To give more freedom, it's possible to override the animation of each path and/or the entire SVG. It works a bit like the CSS animation timing function. But instead of using a cubic-bezier function, it use a simple JavaScript function. It must accept a number as parameter (between 0 to 1), then return a number (also between 0 and 1). It's a hook.

+

Here an example test to play around with the different properties available.

+ +
+ + + + + + + + + + +
+

Type + + + + + +

+

Path timing function + + + + + + + +

+

Anim timing function + + + + + + + +

+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Scenarize

+

This feature allows you to script the animation of your SVG. To do this, the custom values will be set directly in the DOM of the SVG.

+

Here is an example using scenario-sync.
I would recommend you look at the source code and the readme file for more information.

+ + +
+
+ +
+
+
+ + +
+
+

Play with it on Vivus instant.

+

More information and documentation on GitHub.

+
+
+ + +
+

Thanks for watching.

+

Made with love a keyboard

+
+ + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package-lock.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package-lock.json new file mode 100644 index 00000000..58ddfac5 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package-lock.json @@ -0,0 +1,4325 @@ +{ + "name": "vivus", + "version": "0.4.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "optional": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz", + "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "date-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint": { + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.3.tgz", + "integrity": "sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", + "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "jasmine-core": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.3.0.tgz", + "integrity": "sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "karma": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.0.1.tgz", + "integrity": "sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.2.tgz", + "integrity": "sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw==", + "dev": true, + "requires": { + "dateformat": "^1.0.6", + "istanbul": "^0.4.0", + "lodash": "^4.17.0", + "minimatch": "^3.0.0", + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "karma-jasmine": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", + "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "dev": true, + "requires": { + "jasmine-core": "^3.3" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "log4js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.0.2.tgz", + "integrity": "sha512-KE7HjiieVDPPdveA3bJZSuu0n8chMkFl8mIoisBFxwEJ9FmXe4YzNuiqSwYUiR1K8q8/5/8Yd6AClENY1RA9ww==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^3.1.0", + "flatted": "^2.0.0", + "rfdc": "^1.1.2", + "streamroller": "^1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "dev": true + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, + "requires": { + "mime-db": "~1.38.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.1.tgz", + "integrity": "sha512-I6YB/YEuDeUZMmhscXKxGgZlFnhsn5y0hgOZBadkzfTRrZBtJDZeg6eQf7PYMIEclwmorTKK8GztsyOUSVBREA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "parent-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", + "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rfdc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz", + "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "streamroller": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.3.tgz", + "integrity": "sha512-P7z9NwP51EltdZ81otaGAN3ob+/F88USJE546joNq7bqRNTe6jc74fTBDyynxP4qpIfKlt/CesEYicuMzI0yJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "date-format": "^2.0.0", + "debug": "^3.1.0", + "fs-extra": "^7.0.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", + "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "dev": true, + "requires": { + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "uglify-js": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.2.tgz", + "integrity": "sha512-imog1WIsi9Yb56yRt5TfYVxGmnWs3WSGU73ieSOlMVFwhJCA9W8fqFFMMj4kgDqiS/80LGdsYnWL7O9UcjEBlg==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package.json new file mode 100644 index 00000000..46d7d789 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package.json @@ -0,0 +1,35 @@ +{ + "name": "vivus", + "version": "0.4.6", + "description": "JavaScript library to make drawing animation on SVG", + "main": "dist/vivus.js", + "scripts": { + "test": "karma start test/karma.conf.js", + "serve": "python -m SimpleHTTPServer 8844", + "lint": "./node_modules/eslint/bin/eslint.js src test", + "build": "npm run build-raw && npm run build-min", + "build-raw": "node src/_build.js > dist/vivus.js", + "build-min": "uglifyjs dist/vivus.js -o dist/vivus.min.js -c -m --source-map" + }, + "repository": { + "type": "git", + "url": "https://github.com/maxwellito/vivus.git" + }, + "author": "maxwellito", + "license": "MIT", + "bugs": { + "url": "https://github.com/maxwellito/vivus/issues" + }, + "homepage": "https://github.com/maxwellito/vivus", + "engine": { + "node": ">=0.10.22" + }, + "devDependencies": { + "eslint": "^5.15.3", + "karma": "^4.0.1", + "karma-chrome-launcher": "^2.2.0", + "karma-coverage": "^1.1.2", + "karma-jasmine": "^2.0.1", + "uglify-js": "^3.5.2" + } +} diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/readme.md b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/readme.md new file mode 100644 index 00000000..06d57ba7 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/readme.md @@ -0,0 +1,352 @@ +# vivus.js + +Demo available on http://maxwellito.github.io/vivus + +Play with it on [Vivus Instant](https://maxwellito.github.io/vivus-instant/) + +Vivus is a lightweight JavaScript class (with no dependencies) that allows you to animate SVGs, giving them the appearance of being drawn. There are a variety of different animations available, as well as the option to create a custom script to draw your SVG in whatever way you like. + +Available via: + +- [NPM](https://www.npmjs.com/package/vivus): `npm install vivus` +- [Bower](http://bower.io/): `bower install vivus` +- [jsDelivr CDN](http://www.jsdelivr.com/#!vivus): `//cdn.jsdelivr.net/npm/vivus@latest/dist/vivus.min.js` +- [CDNJS CDN](https://cdnjs.com/libraries/vivus) +- [WebJars](http://www.webjars.org/) + +Join the conversation on [Gitter](https://gitter.im/maxwellito/vivus) + +Try Vivus with your SVG on [Vivus Instant](https://maxwellito.github.io/vivus-instant/). If you plan to use the library to animate a single SVG without callback or controls, this will allow you to download your animated SVG, powered by CSS, JavaScript free. + +## Animations + +On the following images, the pink color represents the `duration` value, and the blue one is for `delay` value. + +### Delayed + +![Timeline for delayed animation](https://raw.github.com/maxwellito/vivus/master/assets/delayed.png) + +Every path element is drawn at the same time with a small delay at the start. This is currently the default animation. + +### Sync + +![Timeline for sync animation](https://raw.github.com/maxwellito/vivus/master/assets/sync.png) + +Each line is drawn synchronously. They all start and finish at the same time, hence the name `sync`. + +### OneByOne + +![Timeline for oneByOne animation](https://raw.github.com/maxwellito/vivus/master/assets/oneByOne.png) + +Each path element is drawn one after the other. This animation gives the best impression of live drawing. The duration for each line depends on their length to make a constant drawing speed. + +## Principles + +To get this effect, the script uses the CSS property `strokeDashoffset`. This property manages the stroke offset on every line of the SVG. Now, all we have to do is add some JavaScript to update this value progressively and the magic begins. + +However, there's a problem with this. The `strokeDashoffset` property is only available on the path elements. This is an issue because in an SVG there are a lot of elements such as `circle`, `rect`, `line` and `polyline` which will break the animation. So to fix this, there is another class available in the repo called `pathformer`. It's made for transforming all objects of your SVG into `path` elements to be able to use `strokeDashoffset` and animate your SVGs. + +_The animation always draws elements in the same order as they are defined in the SVG tag._ + +There are few conditions that your SVG must meet: + +- All elements must have a stroke property and cannot be filled. This is because the animation only looks to progressively draw strokes and will not check for filled colours. For example: fill: "none"; stroke: "#FFF"; + +- You should avoid creating any hidden path elements in your SVG. Vivus considers them all eligible to be animated, so it is advised to remove them before playing with it. If they are not removed the animation might not achieve the desired effect, with blank areas and gaps appearing. + +- `text` elements aren't allowed, they cannot be transformed into `path` elements. See [#22](https://github.com/maxwellito/vivus/issues/22) for more details. + +The code is inspired from other repositories. The drawer is inspired from the excellent [Codrops](http://tympanus.net/codrops/) about the post [SVG Drawing Animation](http://tympanus.net/codrops/2013/12/30/svg-drawing-animation/) (if you don't know this website, get ready to have your mind blown). Then for the pathformer, there is a lot of work from [SVGPathConverter](https://github.com/Waest/SVGPathConverter) by [Waest](https://github.com/Waest). + +## Usage + +As I said, no dependencies here. All you need to do is include the scripts. + +**Inline SVG** + +```html + + + + + + + +``` + +**Dynamic load** + +```html + + + +``` + +or + +```html +
+ + +``` + +By default the `object` created will take the size of the parent element, this one must have a height and width or your SVG might not appear. + +If you need to edit this object, it is accessible in the `onReady` callback: + +```js +new Vivus('my-div-id', { + file: 'link/to/my.svg', + onReady: function (myVivus) { + // `el` property is the SVG element + myVivus.el.setAttribute('height', 'auto'); + } +}); +``` + +Check out the [hacks page](https://github.com/maxwellito/vivus/blob/master/hacks.md) for more tricks. + +### Constructor + +The Vivus constructor asks for 3 parameters: + +- ID (or object) of DOM element to interact with.
It can be an inline SVG or a wrapper element to append an object tag from the option `file` +- Option object (described in the following | +- Callback to call at the end of the animation (optional) + +### Option list + +| Name | Type | Description | +| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | string | Defines what kind of animation will be used: `delayed`, `sync`, `oneByOne`, `script`, `scenario` or `scenario-sync`. [Default: `delayed`] | +| `file` | string | Link to the SVG to animate. If set, Vivus will create an object tag and append it to the DOM element given to the constructor. Be careful, use the `onReady` callback before playing with the Vivus instance. | +| `start` | string | Defines how to trigger the animation (`inViewport` once the SVG is in the viewport, `manual` gives you the freedom to call draw method to start, `autostart` makes it start right now). [Default: `inViewport`] | +| `duration` | integer | Animation duration, in frames. [Default: `200`] | +| `delay` | integer | Time between the drawing of first and last path, in frames (only for `delayed` animations). | +| `onReady` | function | Function called when the instance is ready to play. | +| `pathTimingFunction` | function | Timing animation function for each path element of the SVG. Check the [timing function part](#timing-function). | +| `animTimingFunction` | function | Timing animation function for the complete SVG. Check the [timing function part](#timing-function). | +| `dashGap` | integer | Whitespace extra margin between dashes. Increase it in case of glitches at the initial state of the animation. [Default: `2`] | +| `forceRender` | boolean | Force the browser to re-render all updated path items. By default, the value is `true` on IE only. (check the 'troubleshoot' section for more details). | +| `reverseStack` | boolean | Reverse the order of execution. The default behaviour is to render from the first 'path' in the SVG to the last one. This option allow you to reverse the order. [Default: `false`] | +| `selfDestroy` | boolean | Removes all extra styling on the SVG, and leaves it as original. | + +### Methods + +| Name | Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `play(speed, callback)` | Plays the animation with the speed given in parameter. This value can be negative to go backward, between 0 and 1 to go slowly, >1 to go faster, or <0 to go in reverse from current state. [Default: `1`]. Callback executed after the animation is finished (optional) | +| `stop()` | Stops the animation. | +| `reset()` | Reinitialises the SVG to the original state: undrawn. | +| `finish()` | Set the SVG to the final state: drawn. | +| `setFrameProgress(progress)` | Set the progress of the animation. Progress must be a number between 0 and 1. | +| `getStatus()` | Get the status of the animation between `start`, `progress`, `end` | +| `destroy()` | Reset the SVG but make the instance out of order. | + +These methods return the object so you can chain the actions. + +```js +const myVivus = new Vivus('my-svg-id'); +myVivus.stop().reset().play(2); +``` + +#### Play method callback + +Instead of using the global constructor callback when you create the Vivus object, you can add callbacks to be +executed for specific `play` method calls. + +```js +const myVivus = new Vivus('my-svg-id'); +myVivus.play(1, function () { + // called after the animation completes +}); + +// alternativly if you leave the speed param blank and use the default, you +// can pass the callback as the first parameter like so. +myVivus.play(function () { + // called after the animation completes +}); +``` + +## Timing function + +To give more freedom, it's possible to override the animation of each path and/or the entire SVG. It works a bit like the CSS animation timing function. But instead of using a cubic-bezier function, it use a simple JavaScript function. It must accept a number as parameter (between 0 to 1), then return a number (also between 0 and 1). It's a hook. + +If you don't want to create your own, timing methods are available via the constructor object: `EASE`, `EASE_IN`, `EASE_OUT` and `EASE_OUT_BOUNCE`. Then set it in the option object to enjoy them. + +```js +// Here, the ease animation will be use for the global drawing. +new Vivus( + 'my-svg-id', + { + type: 'delayed', + duration: 200, + animTimingFunction: Vivus.EASE + }, + myCallback +); +``` + +**WARNING**: `animTimingFunction` is called at every frame of the animation, and `pathTimingFunction` is also called at every frame for each path of your SVG. So be careful about them. Keep it simple, or it can affect the performance. + +## Extra attributes + +The attribute `data-ignore` allows you to ignore path tags from the vivus animation. + +```html + + + + + +``` + +In this case, the second path won't be part of the animation. + +## Scenarize + +This feature allows you to script the animation of your SVG. For this, the custom values will be set directly in the DOM of the SVG. + +### `scenario` + +This type is easier to understand, but longer to implement. You just have to define the start and duration of each element with `data-start` and `data-duration` attributes. If it is missing, it will use the default value given to the constructor. +The best part of this type is the flexibility it provides. You don't have to respect the order/stack of the SVG and you can start with the last element, then continue with the first to finish with all the rest at the same time. + +You will then have to define custom rules for each element in your SVG via extra attributes in your SVG DOM : + +- `data-start` (integer) + time when the animation must start, in frames +- `data-duration` (integer) + animation duration of this path, in frames + +```html + + + + + + +``` + +### `scenario-sync` + +It's not the sexiest code ever, but it's quite flexible. In addition to this, the behaviour is fairly different. +By using this animation type, the default behaviour is the same as `oneByOne`. However, you can define some properties on a specific path item such as the duration, the delay to start (from the end of the previous path) and if it should be played synchronously. + +- `data-delay` (integer) + time between the end of the animation of the previous path and the start of the current path, in frames +- `data-duration` (integer) + duration of this path animation, in frames +- `data-async` (no value required) + make the drawing of this path asynchronous. It means the next path will start at the same time. + If a path does not have an attribute for duration or delay then the default values, set in the options, will be used. + +Example: here is a simple SVG containing 5 elements. With the following options `{duration: 20, delay: 0}`, we should get this timeline + +![Timeline for script animation by default](https://raw.github.com/maxwellito/vivus/master/assets/script_default.png) + +This looks like 'oneByOne' animation, synchronous mode. But to make it a bit custom, here is what I can do: + +```html + + + + + + + +``` + +This scenario should give us + +![Timeline for this custom script animation](https://raw.github.com/maxwellito/vivus/master/assets/script_custom.png) + +I'm sorry if it does not look very sexy, and it's not really easy to use. I'm happy to make any changes, as long as the idea sounds interesting. Post an issue and I'll be very happy to talk about it! + +## Non Scaling + +Some SVG elements might use non scaling properties such as `vector-effect="non-scaling-stroke"`, which requires some additional custom logic. On instance construction Vivus will map all the child elements in the SVG and calculate their line length. If the element is resized during the animation, the calculated stroke style properties become invalid and the SVG will display incorrectly. + +To keep animation consistency, the method `recalc` should be called when the SVG is resized. It will re-calculate the line length on affected child elements on the next frame calculation. + +Code example: + +```js +// Create your Vivus instance +const vivusObject = new Vivus('my-div', { + duration: 200, + file: 'link/to/my.svg', +}); + +// Create your observer and set up a callback on resize +const resizeObserver = new ResizeObserver((entries) => { + // Recalculate the line lengths + vivusObject.recalc(); +}); + +resizeObserver.observe(vivusObject.el); +``` + +Vivus will provide a warning in the console when it detects stroke scaling. + +## Development + +To make it simpler a gulp file is set up to automise minifying, JShint and tests. +If you have never used Gulp before this is a good opportunity. To use it, you need to install NodeJS first then run `sudo npm install -g gulp`. + +To start, you will need to install the repo dependencies: + +```bash +$ npm install +``` + +Then you can use NPM scripts to run the following tasks: + +- `build` make the build (generate `dist/vivus.js` and `dist/vivus.min.js`) +- `lint` run ESlint on the source files +- `test` run Karma + +## Troubleshoot + +### Internet Explorer + +Some SVG weren't working at all. The only solution found was to clone and replace each updated path element. Of course this solution requires more resources and a lot of DOM manipulation, but it will give a smooth animation like other browsers. This fallback is only applied on Internet Explorer (all versions), and can be disabled via the option `forceRender`. + +Replacing each updated path by a clone was the only way to force IE to re-render the SVG. On some SVGs this trick is not necessary, but IE can be a bit tricky with this. If you're worried about performance, I would recommend checking if your SVG works correctly by disabling the `forceRender` option. If it works correctly on IE, then keep it like this. + +By default, `forceRender` is `true` on Internet Explorer only. + +### Firefox + +For Firefox users, you might encounter some glitches depending on your SVG and browser version. On versions before 36, there is a problem retrieving path length via `getTotalLength` method. Returning 174321516544 instead of 209 (I'm not exaggerating, this comes from a real case), messing up the entire animation treatment. Unfortunately, there's nothing that this library can do, this is due to Firefox. I hope to find a workaround, but at the moment I can only recommend that you test your animation on previous versions of Firefox. + +## Debug + +For an easier debug have a look to the attribute `map` of your Vivus object. This contains the mapping of your animation. If you're using a modern browser, I recommend `console.table` to get a nice output of the array which will make your debug easier. + +```javascript +const logo = new Vivus('myLogo', { type: 'scenario-sync' }); + +// The property 'map' contain all the SVG mapping +console.table(logo.map); +``` + +## Special thanks! + +Thanks to all contributors! Also users who pushed me to improve the library by publishing it on NPM, or browser compatibility or features. Also thanks for fixing my awful english :) + +- [@jolic](https://github.com/jolic) for dynamic SVG loading, ignore invisible paths, infinite and beyond... +- [@BenMcGeachy](https://github.com/BenMcGeachy) for making the documentation understandable +- [@TranscendOfSypherus](https://github.com/TranscendOfSypherus) for fixing the PathFormer +- [@flyingfisch](https://github.com/flyingfisch) for general helping with issues +- [@morgangiraud](https://github.com/morgangiraud) on the ignore invisible paths +- [@Nerdissimo](https://github.com/Nerdissimo) for inserting SVG without `object` wrapper +- [@jsimnz](https://github.com/jsimnz) for adding callbacks to play method + +and many others... diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/_build.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/_build.js new file mode 100644 index 00000000..eed30c70 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/_build.js @@ -0,0 +1,36 @@ +var fs = require('fs'); +var pkg = require('../package.json'); +var vivus = fs.readFileSync('src/vivus.js', { encoding: 'utf8' }); +var pathformer = fs.readFileSync('src/pathformer.js', { encoding: 'utf8' }); + +var output = `/** + * ${pkg.name} - ${pkg.description} + * @version v${pkg.version} + * @link ${pkg.homepage} + * @license ${pkg.license} + */ + +(function () { + + ${pathformer} + ${vivus} + + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function() { + return Vivus; + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = Vivus; + } else { + // Browser globals + window.Vivus = Vivus; + } + +}()); +`; + +console.log(output); diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/pathformer.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/pathformer.js new file mode 100755 index 00000000..06747130 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/pathformer.js @@ -0,0 +1,276 @@ +'use strict'; + +/** + * Pathformer + * Beta version + * + * Take any SVG version 1.1 and transform + * child elements to 'path' elements + * + * This code is purely forked from + * https://github.com/Waest/SVGPathConverter + */ + +/** + * Class constructor + * + * @param {DOM|String} element Dom element of the SVG or id of it + */ +function Pathformer(element) { + // Test params + if (typeof element === 'undefined') { + throw new Error('Pathformer [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID'); + } + } + if (element instanceof window.SVGElement || + element instanceof window.SVGGElement || + /^svg$/i.test(element.nodeName)) { + this.el = element; + } else { + throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement'); + } + + // Start + this.scan(element); +} + +/** + * List of tags which can be transformed + * to path elements + * + * @type {Array} + */ +Pathformer.prototype.TYPES = ['line', 'ellipse', 'circle', 'polygon', 'polyline', 'rect']; + +/** + * List of attribute names which contain + * data. This array list them to check if + * they contain bad values, like percentage. + * + * @type {Array} + */ +Pathformer.prototype.ATTR_WATCH = ['cx', 'cy', 'points', 'r', 'rx', 'ry', 'x', 'x1', 'x2', 'y', 'y1', 'y2']; + +/** + * Finds the elements compatible for transform + * and apply the liked method + * + * @param {object} options Object from the constructor + */ +Pathformer.prototype.scan = function (svg) { + var fn, element, pathData, pathDom, + elements = svg.querySelectorAll(this.TYPES.join(',')); + + for (var i = 0; i < elements.length; i++) { + element = elements[i]; + fn = this[element.tagName.toLowerCase() + 'ToPath']; + pathData = fn(this.parseAttr(element.attributes)); + pathDom = this.pathMaker(element, pathData); + element.parentNode.replaceChild(pathDom, element); + } +}; + + +/** + * Read `line` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Line element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.lineToPath = function (element) { + var newElement = {}, + x1 = element.x1 || 0, + y1 = element.y1 || 0, + x2 = element.x2 || 0, + y2 = element.y2 || 0; + + newElement.d = 'M' + x1 + ',' + y1 + 'L' + x2 + ',' + y2; + return newElement; +}; + +/** + * Read `rect` element to extract and transform + * data, to make it ready for a `path` object. + * The radius-border is not taken in charge yet. + * (your help is more than welcomed) + * + * @param {DOMelement} element Rect element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.rectToPath = function (element) { + var newElement = {}, + x = parseFloat(element.x) || 0, + y = parseFloat(element.y) || 0, + width = parseFloat(element.width) || 0, + height = parseFloat(element.height) || 0; + + if (element.rx || element.ry) { + var rx = parseInt(element.rx, 10) || -1, + ry = parseInt(element.ry, 10) || -1; + rx = Math.min(Math.max(rx < 0 ? ry : rx, 0), width/2); + ry = Math.min(Math.max(ry < 0 ? rx : ry, 0), height/2); + + newElement.d = 'M ' + (x + rx) + ',' + y + ' ' + + 'L ' + (x + width - rx) + ',' + y + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width) + ',' + (y + ry) + ' ' + + 'L ' + (x + width) + ',' + (y + height - ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width - rx) + ',' + (y + height) + ' ' + + 'L ' + (x + rx) + ',' + (y + height) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + x + ',' + (y + height - ry) + ' ' + + 'L ' + x + ',' + (y + ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + rx) + ',' + y; + } + else { + newElement.d = 'M' + x + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + (y + height) + ' ' + + 'L' + x + ' ' + (y + height) + ' Z'; + } + return newElement; +}; + +/** + * Read `polyline` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Polyline element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polylineToPath = function (element) { + var newElement = {}, + points = element.points.trim().split(' '), + i, path; + + // Reformatting if points are defined without commas + if (element.points.indexOf(',') === -1) { + var formattedPoints = []; + for (i = 0; i < points.length; i+=2) { + formattedPoints.push(points[i] + ',' + points[i+1]); + } + points = formattedPoints; + } + + // Generate the path.d value + path = 'M' + points[0]; + for(i = 1; i < points.length; i++) { + if (points[i].indexOf(',') !== -1) { + path += 'L' + points[i]; + } + } + newElement.d = path; + return newElement; +}; + +/** + * Read `polygon` element to extract and transform + * data, to make it ready for a `path` object. + * This method rely on polylineToPath, because the + * logic is similar. The path created is just closed, + * so it needs an 'Z' at the end. + * + * @param {DOMelement} element Polygon element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polygonToPath = function (element) { + var newElement = Pathformer.prototype.polylineToPath(element); + + newElement.d += 'Z'; + return newElement; +}; + +/** + * Read `ellipse` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element ellipse element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.ellipseToPath = function (element) { + var newElement = {}, + rx = parseFloat(element.rx) || 0, + ry = parseFloat(element.ry) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - rx, + startY = cy, + endX = parseFloat(cx) + parseFloat(rx), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + endX + ',' + endY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Read `circle` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Circle element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.circleToPath = function (element) { + var newElement = {}, + r = parseFloat(element.r) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - r, + startY = cy, + endX = parseFloat(cx) + parseFloat(r), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + r + ',' + r + ' 0,1,1 ' + endX + ',' + endY + + 'A' + r + ',' + r + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Create `path` elements form original element + * and prepared objects + * + * @param {DOMelement} element Original element to transform + * @param {object} pathData Path data (from `toPath` methods) + * @return {DOMelement} Path element + */ +Pathformer.prototype.pathMaker = function (element, pathData) { + var i, attr, pathTag = document.createElementNS('http://www.w3.org/2000/svg','path'); + for(i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + if (this.ATTR_WATCH.indexOf(attr.name) === -1) { + pathTag.setAttribute(attr.name, attr.value); + } + } + for(i in pathData) { + pathTag.setAttribute(i, pathData[i]); + } + return pathTag; +}; + +/** + * Parse attributes of a DOM element to + * get an object of attribute => value + * + * @param {NamedNodeMap} attributes Attributes object from DOM element to parse + * @return {object} Object of attributes + */ +Pathformer.prototype.parseAttr = function (element) { + var attr, output = {}; + for (var i = 0; i < element.length; i++) { + attr = element[i]; + // Check if no data attribute contains '%', or the transformation is impossible + if (this.ATTR_WATCH.indexOf(attr.name) !== -1 && attr.value.indexOf('%') !== -1) { + throw new Error('Pathformer [parseAttr]: a SVG shape got values in percentage. This cannot be transformed into \'path\' tags. Please use \'viewBox\'.'); + } + output[attr.name] = attr.value; + } + return output; +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/vivus.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/vivus.js new file mode 100755 index 00000000..b6e6767d --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/vivus.js @@ -0,0 +1,917 @@ +'use strict'; + +var setupEnv, requestAnimFrame, cancelAnimFrame, parsePositiveInt; + +/** + * Vivus + * Beta version + * + * Take any SVG and make the animation + * to give give the impression of live drawing + * + * This in more than just inspired from codrops + * At that point, it's a pure fork. + */ + +/** + * Class constructor + * option structure + * type: 'delayed'|'sync'|'oneByOne'|'script' (to know if the items must be drawn synchronously or not, default: delayed) + * duration: (in frames) + * start: 'inViewport'|'manual'|'autostart' (start automatically the animation, default: inViewport) + * delay: (delay between the drawing of first and last path) + * dashGap whitespace extra margin between dashes + * pathTimingFunction timing animation function for each path element of the SVG + * animTimingFunction timing animation function for the complete SVG + * forceRender force the browser to re-render all updated path items + * selfDestroy removes all extra styling on the SVG, and leaves it as original + * + * The attribute 'type' is by default on 'delayed'. + * - 'delayed' + * all paths are draw at the same time but with a + * little delay between them before start + * - 'sync' + * all path are start and finish at the same time + * - 'oneByOne' + * only one path is draw at the time + * the end of the first one will trigger the draw + * of the next one + * + * All these values can be overwritten individually + * for each path item in the SVG + * The value of frames will always take the advantage of + * the duration value. + * If you fail somewhere, an error will be thrown. + * Good luck. + * + * @constructor + * @this {Vivus} + * @param {DOM|String} element Dom element of the SVG or id of it + * @param {Object} options Options about the animation + * @param {Function} callback Callback for the end of the animation + */ +function Vivus(element, options, callback) { + setupEnv(); + + // Setup + this.isReady = false; + this.setElement(element, options); + this.setOptions(options); + this.setCallback(callback); + + if (this.isReady) { + this.init(); + } +} + +/** + * Timing functions + ************************************** + * + * Default functions to help developers. + * It always take a number as parameter (between 0 to 1) then + * return a number (between 0 and 1) + */ +Vivus.LINEAR = function(x) { + return x; +}; +Vivus.EASE = function(x) { + return -Math.cos(x * Math.PI) / 2 + 0.5; +}; +Vivus.EASE_OUT = function(x) { + return 1 - Math.pow(1 - x, 3); +}; +Vivus.EASE_IN = function(x) { + return Math.pow(x, 3); +}; +Vivus.EASE_OUT_BOUNCE = function(x) { + var base = -Math.cos(x * (0.5 * Math.PI)) + 1, + rate = Math.pow(base, 1.5), + rateR = Math.pow(1 - x, 2), + progress = -Math.abs(Math.cos(rate * (2.5 * Math.PI))) + 1; + return 1 - rateR + progress * rateR; +}; + +/** + * Setters + ************************************** + */ + +/** + * Check and set the element in the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {DOM|String} element SVG Dom element or id of it + */ +Vivus.prototype.setElement = function(element, options) { + var onLoad, self; + + // Basic check + if (typeof element === 'undefined') { + throw new Error('Vivus [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error( + 'Vivus [constructor]: "element" parameter is not related to an existing ID' + ); + } + } + this.parentEl = element; + + // Load the SVG with XMLHttpRequest and extract the SVG + if (options && options.file) { + self = this; + onLoad = function() { + var domSandbox = document.createElement('div'); + domSandbox.innerHTML = this.responseText; + + var svgTag = domSandbox.querySelector('svg'); + if (!svgTag) { + throw new Error( + 'Vivus [load]: Cannot find the SVG in the loaded file : ' + + options.file + ); + } + + self.el = svgTag; + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + self.parentEl.appendChild(self.el); + self.isReady = true; + self.init(); + self = null; + }; + + var oReq = new window.XMLHttpRequest(); + oReq.addEventListener('load', onLoad); + oReq.open('GET', options.file); + oReq.send(); + return; + } + + switch (element.constructor) { + case window.SVGSVGElement: + case window.SVGElement: + case window.SVGGElement: + this.el = element; + this.isReady = true; + break; + + case window.HTMLObjectElement: + self = this; + onLoad = function(e) { + if (self.isReady) { + return; + } + self.el = + element.contentDocument && + element.contentDocument.querySelector('svg'); + if (!self.el && e) { + throw new Error( + 'Vivus [constructor]: object loaded does not contain any SVG' + ); + } else if (self.el) { + if (element.getAttribute('built-by-vivus')) { + self.parentEl.insertBefore(self.el, element); + self.parentEl.removeChild(element); + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + } + self.isReady = true; + self.init(); + self = null; + } + }; + + if (!onLoad()) { + element.addEventListener('load', onLoad); + } + break; + + default: + throw new Error( + 'Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)' + ); + } +}; + +/** + * Set up user option to the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {object} options Object from the constructor + */ +Vivus.prototype.setOptions = function(options) { + var allowedTypes = [ + 'delayed', + 'sync', + 'async', + 'nsync', + 'oneByOne', + 'scenario', + 'scenario-sync' + ]; + var allowedStarts = ['inViewport', 'manual', 'autostart']; + + // Basic check + if (options !== undefined && options.constructor !== Object) { + throw new Error( + 'Vivus [constructor]: "options" parameter must be an object' + ); + } else { + options = options || {}; + } + + // Set the animation type + if (options.type && allowedTypes.indexOf(options.type) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.type + + ' is not an existing animation `type`' + ); + } else { + this.type = options.type || allowedTypes[0]; + } + + // Set the start type + if (options.start && allowedStarts.indexOf(options.start) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.start + + ' is not an existing `start` option' + ); + } else { + this.start = options.start || allowedStarts[0]; + } + + this.isIE = + window.navigator.userAgent.indexOf('MSIE') !== -1 || + window.navigator.userAgent.indexOf('Trident/') !== -1 || + window.navigator.userAgent.indexOf('Edge/') !== -1; + this.duration = parsePositiveInt(options.duration, 120); + this.delay = parsePositiveInt(options.delay, null); + this.dashGap = parsePositiveInt(options.dashGap, 1); + this.forceRender = options.hasOwnProperty('forceRender') + ? !!options.forceRender + : this.isIE; + this.reverseStack = !!options.reverseStack; + this.selfDestroy = !!options.selfDestroy; + this.onReady = options.onReady; + this.map = []; + this.frameLength = this.currentFrame = this.delayUnit = this.speed = this.handle = null; + + this.ignoreInvisible = options.hasOwnProperty('ignoreInvisible') + ? !!options.ignoreInvisible + : false; + + this.animTimingFunction = options.animTimingFunction || Vivus.LINEAR; + this.pathTimingFunction = options.pathTimingFunction || Vivus.LINEAR; + + if (this.delay >= this.duration) { + throw new Error('Vivus [constructor]: delay must be shorter than duration'); + } +}; + +/** + * Set up callback to the instance + * The method will not return enything, but will throw an + * error if the parameter is invalid + * + * @param {Function} callback Callback for the animation end + */ +Vivus.prototype.setCallback = function(callback) { + // Basic check + if (!!callback && callback.constructor !== Function) { + throw new Error( + 'Vivus [constructor]: "callback" parameter must be a function' + ); + } + this.callback = callback || function() {}; +}; + +/** + * Core + ************************************** + */ + +/** + * Map the svg, path by path. + * The method return nothing, it just fill the + * `map` array. Each item in this array represent + * a path element from the SVG, with informations for + * the animation. + * + * ``` + * [ + * { + * el: the path element + * length: length of the path line + * startAt: time start of the path animation (in frames) + * duration: path animation duration (in frames) + * }, + * ... + * ] + * ``` + * + */ +Vivus.prototype.mapping = function() { + var i, paths, path, pAttrs, pathObj, totalLength, lengthMeter, timePoint, scale, hasNonScale; + timePoint = totalLength = lengthMeter = 0; + paths = this.el.querySelectorAll('path'); + hasNonScale = false; + + for (i = 0; i < paths.length; i++) { + path = paths[i]; + if (this.isInvisible(path)) { + continue; + } + + pathObj = { + el: path, + length: 0, + startAt: 0, + duration: 0, + isResizeSensitive: false + }; + + // If vector effect is non-scaling-stroke, the total length won't match the rendered length + // so we need to calculate the scale and apply it + if (path.getAttribute('vector-effect') === 'non-scaling-stroke') { + var rect = path.getBoundingClientRect(); + var box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.isResizeSensitive = true; + hasNonScale = true; + } else { + scale = 1; + } + pathObj.length = Math.ceil(path.getTotalLength() * scale); + + // Test if the path length is correct + if (isNaN(pathObj.length)) { + if (window.console && console.warn) { + console.warn( + 'Vivus [mapping]: cannot retrieve a path element length', + path + ); + } + continue; + } + this.map.push(pathObj); + path.style.strokeDasharray = + pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + path.style.strokeDashoffset = pathObj.length + this.dashGap; + pathObj.length += this.dashGap; + totalLength += pathObj.length; + + this.renderPath(i); + } + + // Show a warning for non-scaling elements + if (hasNonScale) { + console.warn('Vivus: this SVG contains non-scaling-strokes. You should call instance.recalc() when the SVG is resized or you will encounter unwanted behaviour. See https://github.com/maxwellito/vivus#non-scaling for more info.'); + } + + totalLength = totalLength === 0 ? 1 : totalLength; + this.delay = this.delay === null ? this.duration / 3 : this.delay; + this.delayUnit = this.delay / (paths.length > 1 ? paths.length - 1 : 1); + + // Reverse stack if asked + if (this.reverseStack) { + this.map.reverse(); + } + + for (i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + + switch (this.type) { + case 'delayed': + pathObj.startAt = this.delayUnit * i; + pathObj.duration = this.duration - this.delay; + break; + + case 'oneByOne': + pathObj.startAt = (lengthMeter / totalLength) * this.duration; + pathObj.duration = (pathObj.length / totalLength) * this.duration; + break; + + case 'sync': + case 'async': + case 'nsync': + pathObj.startAt = 0; + pathObj.duration = this.duration; + break; + + case 'scenario-sync': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + timePoint + + (parsePositiveInt(pAttrs['data-delay'], this.delayUnit) || 0); + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + timePoint = + pAttrs['data-async'] !== undefined + ? pathObj.startAt + : pathObj.startAt + pathObj.duration; + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + + case 'scenario': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + parsePositiveInt(pAttrs['data-start'], this.delayUnit) || 0; + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + } + lengthMeter += pathObj.length; + this.frameLength = this.frameLength || this.duration; + } +}; + +/** + * Public method to re-evaluate line length for non-scaling lines + * path elements. + */ +Vivus.prototype.recalc = function () { + if (this.mustRecalcScale) { + return; + } + this.mustRecalcScale = requestAnimFrame(function () { + this.performLineRecalc(); + }.bind(this)); +} + +/** + * Private method to re-evaluate line length on non-scaling + * path elements. Then call for a trace to update the SVG. + */ +Vivus.prototype.performLineRecalc = function () { + var pathObj, path, rect, box, scale; + for (var i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + if (pathObj.isResizeSensitive) { + path = pathObj.el; + rect = path.getBoundingClientRect(); + box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.length = Math.ceil(path.getTotalLength() * scale); + path.style.strokeDasharray = pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + } + } + this.trace(); + this.mustRecalcScale = null; +} + +/** + * Interval method to draw the SVG from current + * position of the animation. It update the value of + * `currentFrame` and re-trace the SVG. + * + * It use this.handle to store the requestAnimationFrame + * and clear it one the animation is stopped. So this + * attribute can be used to know if the animation is + * playing. + * + * Once the animation at the end, this method will + * trigger the Vivus callback. + * + */ +Vivus.prototype.draw = function() { + var self = this; + this.currentFrame += this.speed; + + if (this.currentFrame <= 0) { + this.stop(); + this.reset(); + } else if (this.currentFrame >= this.frameLength) { + this.stop(); + this.currentFrame = this.frameLength; + this.trace(); + if (this.selfDestroy) { + this.destroy(); + } + } else { + this.trace(); + this.handle = requestAnimFrame(function() { + self.draw(); + }); + return; + } + + this.callback(this); + if (this.instanceCallback) { + this.instanceCallback(this); + this.instanceCallback = null; + } +}; + +/** + * Draw the SVG at the current instant from the + * `currentFrame` value. Here is where most of the magic is. + * The trick is to use the `strokeDashoffset` style property. + * + * For optimisation reasons, a new property called `progress` + * is added in each item of `map`. This one contain the current + * progress of the path element. Only if the new value is different + * the new value will be applied to the DOM element. This + * method save a lot of resources to re-render the SVG. And could + * be improved if the animation couldn't be played forward. + * + */ +Vivus.prototype.trace = function() { + var i, progress, path, currentFrame; + currentFrame = + this.animTimingFunction(this.currentFrame / this.frameLength) * + this.frameLength; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + progress = (currentFrame - path.startAt) / path.duration; + progress = this.pathTimingFunction(Math.max(0, Math.min(1, progress))); + if (path.progress !== progress) { + path.progress = progress; + path.el.style.strokeDashoffset = Math.floor(path.length * (1 - progress)); + this.renderPath(i); + } + } +}; + +/** + * Method forcing the browser to re-render a path element + * from it's index in the map. Depending on the `forceRender` + * value. + * The trick is to replace the path element by it's clone. + * This practice is not recommended because it's asking more + * ressources, too much DOM manupulation.. + * but it's the only way to let the magic happen on IE. + * By default, this fallback is only applied on IE. + * + * @param {Number} index Path index + */ +Vivus.prototype.renderPath = function(index) { + if (this.forceRender && this.map && this.map[index]) { + var pathObj = this.map[index], + newPath = pathObj.el.cloneNode(true); + pathObj.el.parentNode.replaceChild(newPath, pathObj.el); + pathObj.el = newPath; + } +}; + +/** + * When the SVG object is loaded and ready, + * this method will continue the initialisation. + * + * This this mainly due to the case of passing an + * object tag in the constructor. It will wait + * the end of the loading to initialise. + * + */ +Vivus.prototype.init = function() { + // Set object variables + this.frameLength = 0; + this.currentFrame = 0; + this.map = []; + + // Start + new Pathformer(this.el); + this.mapping(); + this.starter(); + + if (this.onReady) { + this.onReady(this); + } +}; + +/** + * Trigger to start of the animation. + * Depending on the `start` value, a different script + * will be applied. + * + * If the `start` value is not valid, an error will be thrown. + * Even if technically, this is impossible. + * + */ +Vivus.prototype.starter = function() { + switch (this.start) { + case 'manual': + return; + + case 'autostart': + this.play(); + break; + + case 'inViewport': + var self = this, + listener = function() { + if (self.isInViewport(self.parentEl, 1)) { + self.play(); + window.removeEventListener('scroll', listener); + } + }; + window.addEventListener('scroll', listener); + listener(); + break; + } +}; + +/** + * Controls + ************************************** + */ + +/** + * Get the current status of the animation between + * three different states: 'start', 'progress', 'end'. + * @return {string} Instance status + */ +Vivus.prototype.getStatus = function() { + return this.currentFrame === 0 + ? 'start' + : this.currentFrame === this.frameLength + ? 'end' + : 'progress'; +}; + +/** + * Reset the instance to the initial state : undraw + * Be careful, it just reset the animation, if you're + * playing the animation, this won't stop it. But just + * make it start from start. + * + */ +Vivus.prototype.reset = function() { + return this.setFrameProgress(0); +}; + +/** + * Set the instance to the final state : drawn + * Be careful, it just set the animation, if you're + * playing the animation on rewind, this won't stop it. + * But just make it start from the end. + * + */ +Vivus.prototype.finish = function() { + return this.setFrameProgress(1); +}; + +/** + * Set the level of progress of the drawing. + * + * @param {number} progress Level of progress to set + */ +Vivus.prototype.setFrameProgress = function(progress) { + progress = Math.min(1, Math.max(0, progress)); + this.currentFrame = Math.round(this.frameLength * progress); + this.trace(); + return this; +}; + +/** + * Play the animation at the desired speed. + * Speed must be a valid number (no zero). + * By default, the speed value is 1. + * But a negative value is accepted to go forward. + * + * And works with float too. + * But don't forget we are in JavaScript, se be nice + * with him and give him a 1/2^x value. + * + * @param {number} speed Animation speed [optional] + */ +Vivus.prototype.play = function(speed, callback) { + this.instanceCallback = null; + + if (speed && typeof speed === 'function') { + this.instanceCallback = speed; // first parameter is actually the callback function + speed = null; + } else if (speed && typeof speed !== 'number') { + throw new Error('Vivus [play]: invalid speed'); + } + // if the first parameter wasn't the callback, check if the seconds was + if (callback && typeof callback === 'function' && !this.instanceCallback) { + this.instanceCallback = callback; + } + + this.speed = speed || 1; + if (!this.handle) { + this.draw(); + } + return this; +}; + +/** + * Stop the current animation, if on progress. + * Should not trigger any error. + * + */ +Vivus.prototype.stop = function() { + if (this.handle) { + cancelAnimFrame(this.handle); + this.handle = null; + } + return this; +}; + +/** + * Destroy the instance. + * Remove all bad styling attributes on all + * path tags + * + */ +Vivus.prototype.destroy = function() { + this.stop(); + var i, path; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + path.el.style.strokeDashoffset = null; + path.el.style.strokeDasharray = null; + this.renderPath(i); + } +}; + +/** + * Utils methods + * include methods from Codrops + ************************************** + */ + +/** + * Method to best guess if a path should added into + * the animation or not. + * + * 1. Use the `data-vivus-ignore` attribute if set + * 2. Check if the instance must ignore invisible paths + * 3. Check if the path is visible + * + * For now the visibility checking is unstable. + * It will be used for a beta phase. + * + * Other improvments are planned. Like detecting + * is the path got a stroke or a valid opacity. + */ +Vivus.prototype.isInvisible = function(el) { + var rect, + ignoreAttr = el.getAttribute('data-ignore'); + + if (ignoreAttr !== null) { + return ignoreAttr !== 'false'; + } + + if (this.ignoreInvisible) { + rect = el.getBoundingClientRect(); + return !rect.width && !rect.height; + } else { + return false; + } +}; + +/** + * Parse attributes of a DOM element to + * get an object of {attributeName => attributeValue} + * + * @param {object} element DOM element to parse + * @return {object} Object of attributes + */ +Vivus.prototype.parseAttr = function(element) { + var attr, + output = {}; + if (element && element.attributes) { + for (var i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + output[attr.name] = attr.value; + } + } + return output; +}; + +/** + * Reply if an element is in the page viewport + * + * @param {object} el Element to observe + * @param {number} h Percentage of height + * @return {boolean} + */ +Vivus.prototype.isInViewport = function(el, h) { + var scrolled = this.scrollY(), + viewed = scrolled + this.getViewportH(), + elBCR = el.getBoundingClientRect(), + elHeight = elBCR.height, + elTop = scrolled + elBCR.top, + elBottom = elTop + elHeight; + + // if 0, the element is considered in the viewport as soon as it enters. + // if 1, the element is considered in the viewport only when it's fully inside + // value in percentage (1 >= h >= 0) + h = h || 0; + + return elTop + elHeight * h <= viewed && elBottom >= scrolled; +}; + +/** + * Get the viewport height in pixels + * + * @return {integer} Viewport height + */ +Vivus.prototype.getViewportH = function() { + var client = this.docElem.clientHeight, + inner = window.innerHeight; + + if (client < inner) { + return inner; + } else { + return client; + } +}; + +/** + * Get the page Y offset + * + * @return {integer} Page Y offset + */ +Vivus.prototype.scrollY = function() { + return window.pageYOffset || this.docElem.scrollTop; +}; + +setupEnv = function() { + if (Vivus.prototype.docElem) { + return; + } + + /** + * Alias for document element + * + * @type {DOMelement} + */ + Vivus.prototype.docElem = window.document.documentElement; + + /** + * Alias for `requestAnimationFrame` or + * `setTimeout` function for deprecated browsers. + * + */ + requestAnimFrame = (function() { + return ( + window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(/* function */ callback) { + return window.setTimeout(callback, 1000 / 60); + } + ); + })(); + + /** + * Alias for `cancelAnimationFrame` or + * `cancelTimeout` function for deprecated browsers. + * + */ + cancelAnimFrame = (function() { + return ( + window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + window.msCancelAnimationFrame || + function(id) { + return window.clearTimeout(id); + } + ); + })(); +}; + +/** + * Parse string to integer. + * If the number is not positive or null + * the method will return the default value + * or 0 if undefined + * + * @param {string} value String to parse + * @param {*} defaultValue Value to return if the result parsed is invalid + * @return {number} + * + */ +parsePositiveInt = function(value, defaultValue) { + var output = parseInt(value, 10); + return output >= 0 ? output : defaultValue; +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/karma.conf.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/karma.conf.js new file mode 100644 index 00000000..20f69533 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/karma.conf.js @@ -0,0 +1,75 @@ +// Karma configuration +// Generated on Fri Jul 18 2014 10:58:08 GMT+0100 (BST) + +module.exports = function(config) { + var options = { + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '..', + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine'], + + // list of files / patterns to load in the browser + files: [ + 'test/unit.setup.js', + 'src/pathformer.js', + 'src/vivus.js', + 'test/unit/**.js' + ], + + // list of files to exclude + exclude: [], + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + '../src/pathformer.js': ['coverage'], + '../src/vivus.js': ['coverage'] + }, + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress', 'coverage'], + + // optionally, configure the reporter + coverageReporter: { + type: 'html', + dir: '../coverage/' + }, + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Chrome'], + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true + }; + + if (process.env.TRAVIS) { + options.customLaunchers = { + Chrome_travis_ci: { + base: 'Chrome', + flags: ['--no-sandbox'] + } + }; + options.browsers = ['Chrome_travis_ci']; + } + + config.set(options); +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/hi-there.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/hi-there.svg new file mode 100644 index 00000000..cfe0dd22 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/hi-there.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/index.html b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/index.html new file mode 100644 index 00000000..d62a21f1 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/index.html @@ -0,0 +1,425 @@ + + + + + + + vivus.js - manual tests page + + + + + +
+

Vivus manual (cheap) tests.

+

+ Just scroll along the page and if a glitch appear or the visual + appearance is not like the description, it's not good. +

+ +
+ +
+
+
+

+ This should display the obturateur SVG like on the demo page. The + strokes must be orange. The element must remain an + object tag. +

+ +
+
+ +
+
+
+ +
+
+
+
+
+
+

+ This should display the polaroid SVG like on the demo page. The + strokes must have the same color as this text. +

+
+
+
+ +
+
+
+

+ This should display the 'Hi there' SVG like ready to start. Be sure + no glitch appear (no small path or dots). Click on the following + button to start. +

+ +
+
+
+
+
+
+ +
+
+
+
+
+
+

+ This should display a synth ready to start. Be sure no glitch appear + (no small path or dots). The animation should use a custom path + timing function (ease_in: slow at start then finish fast.). Click on + the following button to start. +

+ +
+
+
+ +
+
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + +
+

+ Non scaling path
In any case of a resize, the animation of each + line must be complete. +

+ + +
+
+ + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/obturateur.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/obturateur.svg new file mode 100644 index 00000000..6baf6538 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/obturateur.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/polaroid.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/polaroid.svg new file mode 100644 index 00000000..af9f781b --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/polaroid.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/synth.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/synth.svg new file mode 100644 index 00000000..93b2c104 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/synth.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit.setup.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit.setup.js new file mode 100644 index 00000000..4badb160 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit.setup.js @@ -0,0 +1,14 @@ +/* Here is a cheap and bad implementation + * of requestAnimationFrame and + * cancelAnimationFrame mock. + * But it's more than enough + * for our tests. + */ +window.requestAnimFrameStack = []; +window.requestAnimationFrame = function (callback) { + window.requestAnimFrameStack.push(callback); + return true; +}; +window.cancelAnimationFrame = function () { + window.requestAnimFrameStack = []; +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/pathformer.spec.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/pathformer.spec.js new file mode 100644 index 00000000..109f4b10 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/pathformer.spec.js @@ -0,0 +1,322 @@ +'use strict'; + +/** + * Unit tests for Pathformer + * + */ +describe('Pathformer', function () { + + var svgTag, + svgTagId = 'my-svg', + svgGroupTag, + svgGroupTagId = 'my-svg-group'; + + beforeEach(function () { + // Remove tag if existing + svgTag = document.getElementById(svgTagId); + if (svgTag) { + svgTag.remove(); + } + + // Create the SVG + svgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTag.id = svgTagId; + svgTag.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; + + svgGroupTag = svgTag.querySelector('#'+svgGroupTagId); + + // Insert it to the body + document.body.appendChild(svgTag); + }); + + describe('[param tests]', function () { + + // Tests about the SVG element + it('should throw an error if the SVG is given in parameter', function () { + expect(function () { + new Pathformer(); + }).toThrow(new Error('Pathformer [constructor]: "element" parameter is required')); + }); + + it('should work with only the SVG id', function () { + expect(function () { + new Pathformer(svgTagId); + }).not.toThrow(); + }); + + it('should work with only the SVG object', function () { + expect(function () { + new Pathformer(svgTag); + }).not.toThrow(); + }); + + it('should work with only the SVG group object', function () { + expect(function () { + new Pathformer(svgGroupTag); + }).not.toThrow(); + }); + + it('should throw an error if the SVG ID given is invalid', function () { + expect(function () { + new Pathformer('my-unexisting-svg'); + }).toThrow(new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID')); + }); + + it('should throw an error if the ID given is not related to a SVG element', function () { + var divTag = document.createElement('div'); + divTag.id = 'my-div'; + document.body.appendChild(divTag); + expect(function () { + new Pathformer('my-div'); + }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + }); + + it('should throw an error if the element is not a correct type (DOM object or string)', function () { + expect(function () { new Pathformer({}); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(42); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(false); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(new Date()); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(function () {}); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(document.createElement('div')); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + }); + }); + + describe('[translation]', function () { + + // Line object + describe('line', function () { + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.lineToPath({}); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.lineToPath({}); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + var output = Pathformer.prototype.lineToPath({ + x1: '21', x2: '32', y1: '11' + }); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + }); + + // Rect object + describe('rect', function () { + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.rectToPath({}); + expect(output.d).toBeDefined(); + }); + + it('should return an object with a closed shape', function () { + var output = Pathformer.prototype.rectToPath({}); + expect(output.d.substr(-1)).toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + var output = Pathformer.prototype.rectToPath({ + x: '21', height: '32', width: '11' + }); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + + it('should apply rounded corners', function () { + var result = 'M 50,10 ' + + 'L 50,10 A 40,20,0,0,1,90,30 ' + + 'L 90,50 A 40,20,0,0,1,50,70 ' + + 'L 50,70 A 40,20,0,0,1,10,50 ' + + 'L 10,30 A 40,20,0,0,1,50,10'; + + var output = Pathformer.prototype.rectToPath({ + x:10, y:10, width:80, height:60, rx:100, ry:20 + }); + + expect(output.d).toEqual(result); + }); + + it('should apply rounded corners even when a value is missing', function () { + var result = 'M 30,10 ' + + 'L 70,10 A 20,20,0,0,1,90,30 ' + + 'L 90,50 A 20,20,0,0,1,70,70 ' + + 'L 30,70 A 20,20,0,0,1,10,50 ' + + 'L 10,30 A 20,20,0,0,1,30,10'; + + var output = Pathformer.prototype.rectToPath({ + x:10, y:10, width:80, height:60, ry:20 + }); + + expect(output.d).toEqual(result); + }); + }); + + // Polyline object + describe('polyline', function () { + var polyline; + beforeEach(function () { + polyline = { + points: '2,3 4,5 6,7' + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.polylineToPath(polyline); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.polylineToPath(polyline); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should ignore incorrect points', function () { + var output; + polyline.points += ' 43'; + output = Pathformer.prototype.polylineToPath(polyline); + expect(output.d.indexOf('43')).toEqual(-1); + }); + + it('should accept points defined with and without commas', function () { + var outputWithPoint = Pathformer.prototype.polylineToPath(polyline); + var outputWithoutPoint = Pathformer.prototype.polylineToPath({points: '2 3 4 5 6 7'}); + expect(outputWithPoint).toEqual(outputWithoutPoint); + }); + }); + + // Polygon object + describe('polygon', function () { + var polygon; + beforeEach(function () { + polygon = { + points: '2,3 4,5 6,7' + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.polygonToPath(polygon); + expect(output.d).toBeDefined(); + }); + + it('should return an object with a closed shape', function () { + var output = Pathformer.prototype.polygonToPath(polygon); + expect(output.d.substr(-1)).toEqual('Z'); + }); + }); + + // Ellipse object + describe('ellipse', function () { + + var ellipse; + beforeEach(function () { + ellipse = { + cx: 2, + cy: 3, + rx: 3 + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.ellipseToPath(ellipse); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.ellipseToPath(ellipse); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + delete ellipse.cy; + var output = Pathformer.prototype.ellipseToPath(ellipse); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + }); + + // Circle object + describe('circle', function () { + + var circle; + beforeEach(function () { + circle = { + cx: 2, + cy: 3, + rx: 3, + r: 1 + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.circleToPath(circle); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.circleToPath(circle); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + delete circle.cy; + var output = Pathformer.prototype.circleToPath(circle); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + }); + }); + + describe('[utils]', function () { + + describe('attribute parser', function () { + it('should return an empty object if attributes length are undefined', function () { + var output = Pathformer.prototype.parseAttr({}); + expect(output).toEqual({}); + }); + }); + + describe('engine', function () { + it('shouldn\'t throw an error if the SVG got a tag not taken in charge', function () { + svgTag.innerHTML = ''; + + expect(function () { + new Pathformer(svgTagId); + }).not.toThrow(); + }); + + it('should remove useless attributes during transformation', function () { + new Pathformer(svgTagId); + expect(svgTag.childNodes[0].getAttribute('cx')).toBe(null); + }); + }); + + describe('validity', function () { + it('should throw error if the SVG contain shape with percentage value', function () { + // Create the SVG + var svgTagPrc = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTagPrc.innerHTML = ''; + expect(function () { + new Pathformer(svgTagPrc); + }).toThrow(new Error('Pathformer [parseAttr]: a SVG shape got values in percentage. This cannot be transformed into \'path\' tags. Please use \'viewBox\'.')); + }); + + it('shouldn\'t throw error if the SVG contain shape with percentage value on a non-data attribute', function () { + // Create the SVG + var svgTagPrc = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTagPrc.innerHTML = ''; + expect(function () { + new Pathformer(svgTagPrc); + }).not.toThrow(); + }); + }); + }); +}); diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/vivus.spec.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/vivus.spec.js new file mode 100644 index 00000000..af9e74b1 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/vivus.spec.js @@ -0,0 +1,669 @@ +'use strict'; + +/** + * Unit tests for Vivus + * + */ +describe('Vivus', function () { + + var ObjectElementMock, + triggerFrames, + myVivus, + objTag, + wrapTag, + svgTag, + svgTagId = 'my-svg', + svgGroupTagId = 'my-svg-group'; + + // Mock ObjectElement and it's constructor via createElement + ObjectElementMock = function () { + this.loadCb = []; + this.attr = {}; + this.addEventListener = function (evtName, cb) { + if (evtName === 'load') { + this.loadCb.push(cb); + } + }; + this.loaded = function () { + for (var i = 0; i < this.loadCb.length; i++) { + this.loadCb[i]({target: this}); + } + }; + this.getBoundingClientRect = function () { + return { + height: 11, + top: 364 + }; + }; + this.insertBefore = function () {}; + this.removeChild = function () {}; + this.setAttribute = function (key, val) { + this.attr[key] = val; + }; + this.getAttribute = function (key) { + return this.attr[key]; + }; + }; + window.HTMLObjectElement = ObjectElementMock; + + triggerFrames = function (counter) { + counter = counter || -1; + while (window.requestAnimFrameStack.length && counter !== 0) { + window.requestAnimFrameStack.shift()(); + counter--; + } + }; + + + beforeEach(function () { + // Create the SVG + svgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTag.id = svgTagId; + svgTag.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; + + wrapTag = document.createElement('div'); + wrapTag.appendChild(svgTag); + + document.body.appendChild(wrapTag); + + // Reset the request anim frame stack + window.requestAnimFrameStack = []; + }); + + afterEach(function () { + // Remove tag + svgTag.remove(); + wrapTag.remove(); + }); + + describe('[basic tests]', function () { + + it('should the class be defined under Vivus name', function () { + expect(Vivus).toBeDefined(); + }); + + it('should have timing functions set', function () { + expect(Vivus.LINEAR).toBeDefined(); + expect(Vivus.EASE).toBeDefined(); + expect(Vivus.EASE_IN).toBeDefined(); + expect(Vivus.EASE_OUT).toBeDefined(); + expect(Vivus.EASE_OUT_BOUNCE).toBeDefined(); + }); + + it('should have timing functions returning correct value on limits', function () { + expect(Vivus.LINEAR(0)).toEqual(0); + expect(Vivus.LINEAR(1)).toEqual(1); + expect(Vivus.EASE(0)).toEqual(0); + expect(Vivus.EASE(1)).toEqual(1); + expect(Vivus.EASE_IN(0)).toEqual(0); + expect(Vivus.EASE_IN(1)).toEqual(1); + expect(Vivus.EASE_OUT(0)).toEqual(0); + expect(Vivus.EASE_OUT(1)).toEqual(1); + expect(Vivus.EASE_OUT_BOUNCE(0)).toEqual(0); + expect(Vivus.EASE_OUT_BOUNCE(1)).toEqual(1); + }); + }); + + describe('[param tests]', function () { + + // Tests about the SVG element + it('should throw an error if the SVG is given in parameter', function () { + expect(function () { + new Vivus(); + }).toThrow(new Error('Vivus [constructor]: "element" parameter is required')); + }); + + it('should work with only the SVG id', function () { + expect(function () { + new Vivus(svgTagId); + }).not.toThrow(); + }); + + it('should work with only the SVG object', function () { + expect(function () { + new Vivus(svgTag); + }).not.toThrow(); + }); + + it('should work with the SVG group object', function () { + expect(function () { + new Vivus(svgGroupTagId); + }).not.toThrow(); + }); + + it('should throw an error if the SVG ID given is invalid', function () { + expect(function () { + new Vivus('my-unexisting-svg'); + }).toThrow(new Error('Vivus [constructor]: "element" parameter is not related to an existing ID')); + }); + + it('should throw an error if the ID given is not related to a SVG element', function () { + var divTag = document.createElement('div'); + divTag.id = 'my-div'; + document.body.appendChild(divTag); + expect(function () { + new Vivus('my-div'); + }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + }); + + it('should accept any DOM element if `file` option is set', function () { + var divTag = document.createElement('div'); + spyOn(window, 'XMLHttpRequest'); + try { + new Vivus(divTag, {file: 'opensource.svg'}); + } + catch(err) {} + + expect(window.XMLHttpRequest).toHaveBeenCalled(); + }); + + it('should throw an error if the element is not a correct type (DOM object or string)', function () { + expect(function () { new Vivus({}); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(42); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(false); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(new Date()); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(function () {}); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(document.createElement('div')); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + }); + + it('should accept object element', function () { + // Create a mock Object getElementById + objTag = new ObjectElementMock(); + objTag.contentDocument = wrapTag; + + expect(function () { + new Vivus(objTag); + }).not.toThrow(); + }); + + it('the vivus state should be ready if the SVG is already loaded', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = wrapTag; + objTag.loaded(); + var myVivus = new Vivus(objTag); + expect(myVivus.isReady).toEqual(true); + }); + + it('the vivus instance should have `el` and `parentEl` different if the element is an object', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = wrapTag; + objTag.loaded(); + var myVivus = new Vivus(objTag); + expect(myVivus.parentEl).not.toEqual(myVivus.el); + }); + + it('should call `onReady` callback once the SVG is loaded', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = document.createElement('div'); + var myVivus = new Vivus(objTag); + objTag.contentDocument = wrapTag; + objTag.loaded(); + expect(myVivus.isReady).toEqual(true); + }); + + it('should throw an error if the SVG file does not exists', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = document.createElement('div'); + new Vivus(objTag); + expect(function () { + objTag.loaded(); + }).toThrow(); + }); + + // Options + it('should work without options', function () { + expect(function () { + new Vivus(svgTag); + }).not.toThrow(); + }); + + it('should throw an error if options is not an object', function () { + expect(function () { new Vivus(svgTag, []); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, 42); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, false); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, new Date()); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, 'manual'); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, function () {}); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + }); + + // Options + it('should work with empty option object', function () { + expect(function () { + new Vivus(svgTag, {}); + }).not.toThrow(); + }); + + it('should throw an error if the `type` value given in options does not exists', function () { + expect(function () { + new Vivus(svgTag, {type: 'by-unicorn'}); + }).toThrow(new Error('Vivus [constructor]: by-unicorn is not an existing animation `type`')); + }); + + it('should throw an error if the `start` value given in options is not a string', function () { + expect(function () { + new Vivus(svgTag, {start: 'when-unicorn-ready'}); + }).toThrow(new Error('Vivus [constructor]: when-unicorn-ready is not an existing `start` option')); + }); + + it('should throw an error if the `delay` value is bigger (or equal) than `duration`', function () { + expect(function () { + new Vivus(svgTag, {duration: 200, delay: 199}); + }).not.toThrow(); + expect(function () { + new Vivus(svgTag, {duration: 200, delay: 200}); + }).toThrow(new Error('Vivus [constructor]: delay must be shorter than duration')); + expect(function () { + new Vivus(svgTag, {duration: 200, delay: 201}); + }).toThrow(new Error('Vivus [constructor]: delay must be shorter than duration')); + }); + + it('should override `duration` if invalid', function () { + myVivus = new Vivus(svgTag, {duration: -12}); + expect(myVivus.duration > 0).toBe(true); + }); + + it('should override `delay` if invalid, with a null value', function () { + myVivus = new Vivus(svgTag, {delay: -12}); + expect(!myVivus.delay).toBe(false); + }); + + it('should set up default values', function () { + myVivus = new Vivus(svgTag, {}); + expect(myVivus.type).toBeDefined(); + expect(myVivus.start).toBeDefined(); + expect(myVivus.duration).toBeDefined(); + }); + + it('the vivus instance should have `el` and `parentEl` equal if the element is a SVG object', function () { + myVivus = new Vivus(svgTag, {}); + expect(myVivus.el).toEqual(myVivus.parentEl); + }); + + // Callback + it('should throw an error if callback is non a function', function () { + expect(function () { + new Vivus(svgTag, {}, 42); + }).toThrow(new Error('Vivus [constructor]: "callback" parameter must be a function')); + }); + + it('should use scale to determine path length when vector effect is non-scaling-stroke', function () { + var scalingSvgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + var scalingWrapTag = document.createElement('div'); + + scalingSvgTag.setAttribute('viewBox', '0 0 500 200'); + scalingWrapTag.style.width = '1000px'; + + scalingSvgTag.id = 'scaling-stroke-test'; + + scalingSvgTag.innerHTML = '' + + ''; + + scalingWrapTag.appendChild(scalingSvgTag); + + document.body.appendChild(scalingWrapTag); + + myVivus = new Vivus(scalingSvgTag); + + expect(myVivus.map.length).toEqual(2); + expect(myVivus.map[0].length).toEqual(280); + expect(myVivus.map[1].length).toEqual(141); + }); + }); + + describe('[engine]', function () { + + // Mapping + describe('Mapping:', function () { + + it('should not trigger any error if the SVG is empty', function () { + expect(function () { + var svgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + myVivus = new Vivus(svgTag, {}); + }).not.toThrow(); + }); + + it('should create a mapping of the SVG', function () { + myVivus = new Vivus(svgTag, {}); + expect(myVivus.map && myVivus.map.length).toEqual(6); + }); + + it('should map with correct values for start and duration', function () { + var i, typeIndex, types = ['delayed', 'sync', 'oneByOne', 'scenario', 'scenario-sync']; + for (typeIndex in types) { + myVivus = new Vivus(svgTag, {type: types[typeIndex], duration: 200}); + for (i in myVivus.map) { + expect(myVivus.map[i].startAt >= 0).toBe(true); + expect(myVivus.map[i].duration >= 0).toBe(true); + } + } + }); + + // Tests for 'getTotalLength' method in case of awkward results + describe('SVG parsing issue', function () { + + var getTotalLengthBkp = SVGPathElement.prototype.getTotalLength, + warnBkp = console.warn; + + beforeEach(function () { + SVGPathElement.prototype.getTotalLength = function () { + return NaN; + }; + }); + + afterEach(function () { + SVGPathElement.prototype.getTotalLength = getTotalLengthBkp; + console.warn = warnBkp; + }); + + it('should call console.warn if a path length is NaN', function () { + var warnSpy = jasmine.createSpy('spy'); + console.warn = warnSpy; + myVivus = new Vivus(svgTag); + expect(warnSpy.calls.count()).toEqual(6); + expect(myVivus.map.length).toEqual(0); + }); + + it('shouldn\'t call console.warn if not defined a path length is NaN', function () { + console.warn = null; + myVivus = new Vivus(svgTag); + expect(myVivus.map.length).toEqual(0); + }); + }); + }); + + describe('Visibility checking:', function () { + + it('should not accept a path which is not displayed', function () { + // Hide a path + svgTag.childNodes[1].style.display = 'none'; + myVivus = new Vivus(svgTag, {ignoreInvisible: true}); + expect(myVivus.map.length).toEqual(5); + }); + + it('should not accept a path which with an ignore tag', function () { + svgTag.childNodes[1].setAttribute('data-ignore', 'true'); + myVivus = new Vivus(svgTag); + expect(myVivus.map.length).toEqual(5); + }); + + it('should not accept a path which is not displayed', function () { + svgTag.childNodes[1].setAttribute('data-ignore', 'false'); + myVivus = new Vivus(svgTag); + expect(myVivus.map.length).toEqual(6); + }); + }); + + // Drawing + describe('Drawing:', function () { + + it('should call the callback once the animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'autostart' + }, function () { + done = true; + }); + + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the callback once the reverse animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + type: 'oneByOne', + duration: 6 + }, function () { + done = true; + }); + + myVivus.finish().play(-1); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback as the second param once the animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.play(1, function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback as the first param once the animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.play(function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback once the reverse animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.finish().play(-1, function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback provided in the last play call', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.finish().play(-1, function () {}); + myVivus.play(function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call destroy method once the animation is finished', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + selfDestroy: true + }); + myVivus.destroy = jasmine.createSpy('spy'); + myVivus.play(); + triggerFrames(); + expect(myVivus.destroy.calls.count()).toEqual(1); + }); + + it('should\' call destroy method if selfDestroy option is not present', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + myVivus.destroy = jasmine.createSpy('spy'); + myVivus.play(); + triggerFrames(); + expect(myVivus.destroy.calls.count()).toEqual(0); + }); + + it('should stop animation if destroy has been called', function () { + var callbackSpy = jasmine.createSpy('spy'); + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'autostart' + }, callbackSpy); + + triggerFrames(1); + myVivus.destroy(); + + triggerFrames(); + expect(callbackSpy.calls.count()).toEqual(0); + }); + + it('should stop the animation once it reaches currentFrame == 0', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + myVivus.stop = jasmine.createSpy('spy'); + myVivus.play(-1); + triggerFrames(); + expect(myVivus.stop.calls.count()).toEqual(1); + }); + + it('should trace reasonably', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + spyOn(myVivus, 'trace').and.callThrough(); + myVivus.play(0.5); + triggerFrames(); + expect(myVivus.trace.calls.count()).toEqual(12); + }); + + it('should start by the last path if reverseStack is enabled', function () { + myVivus = new Vivus(svgTag, { + type: 'oneByOne', + duration: 5, + reverseStack: true + }); + myVivus.setFrameProgress(0.5); + + var paths = svgTag.querySelectorAll('path'); + expect(+paths[0].style.strokeDashoffset).not.toEqual(0); + expect(+paths[paths.length -1].style.strokeDashoffset).toEqual(0); + }); + }); + + describe('Force Render:', function () { + + it('should use renderPath if forceRender option is set to true', function () { + myVivus = new Vivus(svgTag, { duration: 2, start: 'manual', forceRender: true }); + + var originalFirstPath = myVivus.map[0].el; + myVivus.renderPath(0); + expect(myVivus.map[0].el).not.toBe(originalFirstPath); + }); + + it('should not use renderPath if forceRender option is set to false', function () { + myVivus = new Vivus(svgTag, { duration: 2, start: 'manual', forceRender: false }); + + var originalFirstPath = myVivus.map[0].el; + myVivus.renderPath(0); + expect(myVivus.map[0].el).toBe(originalFirstPath); + }); + + it('renderPath should not throw an error if the index doesn\'t exists', function () { + myVivus = new Vivus(svgTag, { duration: 2, start: 'manual', forceRender: true }); + expect(function () { + myVivus.renderPath(42); + }).not.toThrow(); + }); + }); + + }); + + describe('[controls]', function () { + + beforeEach(function () { + myVivus = new Vivus(svgTag, { + type: 'oneByOne', + duration: 2, + start: 'manual' + }); + }); + + it('shouldn\'t play if the parameter in incorrect', function () { + expect(function () {myVivus.play('a');}).toThrow(new Error('Vivus [play]: invalid speed')); + expect(function () {myVivus.play({});}).toThrow(new Error('Vivus [play]: invalid speed')); + expect(function () {myVivus.play([]);}).toThrow(new Error('Vivus [play]: invalid speed')); + expect(function () {myVivus.play('1');}).toThrow(new Error('Vivus [play]: invalid speed')); + }); + + it('should return the correct status', function () { + expect(myVivus.getStatus()).toEqual('start'); + myVivus.setFrameProgress(0.5); + expect(myVivus.getStatus()).toEqual('progress'); + myVivus.finish(); + expect(myVivus.getStatus()).toEqual('end'); + myVivus.reset(); + expect(myVivus.getStatus()).toEqual('start'); + }); + + it('should play with the normal speed by default', function () { + myVivus.play(); + expect(myVivus.speed).toEqual(1); + }); + + it('shouldn\'t run another process of drawing if the animation is in progress', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + spyOn(myVivus, 'trace').and.callThrough(); + + myVivus.play(0.5); + myVivus.play(0.5); + triggerFrames(); + expect(myVivus.trace.calls.count()).toEqual(12); + }); + + it('should stop the animation only when the animation is running', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + myVivus.play(); + expect(myVivus.handle).toBeTruthy(); + myVivus.stop(); + expect(myVivus.handle).toBeFalsy(); + myVivus.stop(); + expect(myVivus.handle).toBeFalsy(); + }); + + it('should remove all unecessary styling on every path element', function () { + var i, paths; + myVivus.destroy(); + + paths = svgTag.querySelectorAll('path'); + for (i = 0; i < paths.length; i++) { + expect(!!paths[i].style.strokeDashoffset).toEqual(false); + expect(!!paths[i].style.strokeDasharray).toEqual(false); + } + }); + + /** + * Where are the tests about `util` methods? + * Well.... + * to be honest, I've been struggling a bit for these kind of tests + * which seems difficult to test from Karma. + */ + }); + + +}); diff --git a/extensions/fablabchemnitz/another_perspective/another_perspective.inx b/extensions/fablabchemnitz/another_perspective/another_perspective.inx new file mode 100644 index 00000000..c1a7d1c3 --- /dev/null +++ b/extensions/fablabchemnitz/another_perspective/another_perspective.inx @@ -0,0 +1,16 @@ + + + Another Perspective + fablabchemnitz.de.another_perspective + + path + + + + + + + + diff --git a/extensions/fablabchemnitz/another_perspective/another_perspective.py b/extensions/fablabchemnitz/another_perspective/another_perspective.py new file mode 100644 index 00000000..62b19af3 --- /dev/null +++ b/extensions/fablabchemnitz/another_perspective/another_perspective.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python3 + +""" +Copyright (C) 2017 Corentin Brulé + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Special thanks and orignal copyrigths : Aaron Spike (2005) and Timo Kähkönen (2012) +""" + +import inkex +import re +from lxml import etree +from inkex.transforms import Transform +from inkex.paths import Path, CubicSuperPath + +__version__ = '0.1' + +debug=False + +def distort_path(path_str,source,destination): + path_arr = path_string_to_array(path_str) + + subpath_type="" + is_num ="" + xy_counter ="" + xy="" + path_arr2=[] + subpath_type_upper="" + point="" + i=0 + for i in range(len(path_arr)): + patt1 = r"[mzlhvcsqta]" + + curr = path_arr[i] + if re.match(patt1,curr,flags=re.I): + xy_counter = -1 + subpath_type = curr + subpath_type_upper = subpath_type.upper() + is_num = False + path_arr2.append(curr) + else : + is_num = True + curr = float(curr) + + if xy_counter%2 == 0: + xy="x" + else: + xy="y" + + if is_num : + if xy=="y" : + point = transferPoint(float(path_arr[i-1]),curr,source,destination) + path_arr2.append(point["x"]) + path_arr2.append(point["y"]) + + xy_counter+=1 + + path_str = path_array_to_string(path_arr2) + return path_str + + +def path_array_to_string(path_arr): + + path_str=str(path_arr) + + path_str=path_str.replace(r"([0-9]),([-0-9])", "$1 $2") + path_str=path_str.replace(r"([0-9]),([-0-9])", "$1 $2") + path_str=path_str.replace(",", "") + path_str=path_str.replace("[", "").replace("]","") + path_str=path_str.replace("'", "") + + return path_str + +def path_string_to_array(path_str): + + patt1=r"[mzlhvcsqta]|-?[0-9.]+" #gi + #path_arr=path_str.match(patt1) #array de résultats + path_arr = re.findall(patt1,path_str,flags=re.I) + + patt1=r"[mzlhvcsqta]" #i + i = 0 + for i in range(len(path_arr)): + if re.match(path_arr[i],patt1,flags=re.I) == -1: + path_arr[i] = float(path_arr[i]) + + return path_arr + +''' +def isPermissible(p): + p0 = {x:c0.attr("cx"),y:c0.attr("cy")} + p1 = {x:c1.attr("cx"),y:c1.attr("cy")} + p2 = {x:c2.attr("cx"),y:c2.attr("cy")} + p3 = {x:c3.attr("cx"),y:c3.attr("cy")} + a0 = angle(p3, p0, p1) + a1 = angle(p0, p1, p2) + a2 = angle(p1, p2, p3) + a3 = angle(p2, p3, p0) + if not (a0 > 0 and a0 < 180) or not (a1 > 0 and a1 < 180) or not(a2 > 0 and a2 < 180) or not(a3 > 0 and a3 < 180) : + return False + else : + return True +} + +def angle(c, b, a): + ab = {x: b.x - a.x, y: b.y - a.y } + cb = {x: b.x - c.x, y: b.y - c.y } + dot = (ab.x * cb.x + ab.y * cb.y) + cross = (ab.x * cb.y - ab.y * cb.x) + alpha = Math.atan2(cross, dot) + return alpha * 180 / PI +} +''' + +def transferPoint (xI, yI, source, destination): + + ADDING = 0.001 # to avoid dividing by zero + + xA = source[0]["x"] + yA = source[0]["y"] + + xC = source[2]["x"] + yC = source[2]["y"] + + xAu = destination[0]["x"] + yAu = destination[0]["y"] + + xBu = destination[1]["x"] + yBu = destination[1]["y"] + + xCu = destination[2]["x"] + yCu = destination[2]["y"] + + xDu = destination[3]["x"] + yDu = destination[3]["y"] + + # Calcultations + if xBu==xCu : + xCu+=ADDING + if xAu==xDu : + xDu+=ADDING + if xAu==xBu : + xBu+=ADDING + if xDu==xCu : + xCu+=ADDING + kBC = float(yBu-yCu)/float(xBu-xCu) + kAD = float(yAu-yDu)/float(xAu-xDu) + kAB = float(yAu-yBu)/float(xAu-xBu) + kDC = float(yDu-yCu)/float(xDu-xCu) + + if kBC==kAD : + kAD += ADDING + xE = float(kBC*xBu - kAD*xAu + yAu - yBu) / float(kBC-kAD) + yE = kBC*(xE - xBu) + yBu + + if kAB==kDC : + kDC += ADDING + xF = float(kAB*xBu - kDC*xCu + yCu - yBu) / float(kAB-kDC) + yF = kAB*(xF - xBu) + yBu + + if xE==xF : + xF += ADDING + kEF = float(yE-yF) / float(xE-xF) + + if kEF==kAB: + kAB += ADDING + xG = float(kEF*xDu - kAB*xAu + yAu - yDu) / float(kEF-kAB) + yG = kEF*(xG - xDu) + yDu + + if kEF==kBC : + kBC+=ADDING + xH = float(kEF*xDu - kBC*xBu + yBu - yDu) / float(kEF-kBC) + yH = kEF*(xH - xDu) + yDu + + rG = float(yC-yI)/float(yC-yA) + rH = float(xI-xA)/float(xC-xA) + + xJ = (xG-xDu)*rG + xDu + yJ = (yG-yDu)*rG + yDu + + xK = (xH-xDu)*rH + xDu + yK = (yH-yDu)*rH + yDu + + if xF==xJ: + xJ+=ADDING + if xE==xK: + xK+=ADDING + kJF = float(yF-yJ) / float(xF-xJ) + kKE = float(yE-yK) / float(xE-xK) + + xKE = "" + if kJF==kKE: + kKE += ADDING + xIu = float(kJF*xF - kKE*xE + yE - yF) / float(kJF-kKE) + yIu = kJF * (xIu - xJ) + yJ + + b = {"x":xIu,"y":yIu} + b["x"] = round(b["x"]) + b["y"] = round(b["y"]) + return b + + +def projection(path_object,coords): + + pp_object = Path(path_object).to_arrays() + + bounds = Path(path_object).bounding_box() + + # Make array of coordinates, every array member represent corner of text path + source = [ + {"x":bounds.left,"y":bounds.top}, + {"x":bounds.right,"y":bounds.top}, + {"x":bounds.right,"y":bounds.bottom}, + {"x":bounds.left,"y":bounds.bottom} + ] + + destination=[ + {"x":coords[0][0],"y":coords[0][1]}, + {"x":coords[1][0],"y":coords[1][1]}, + {"x":coords[2][0],"y":coords[2][1]}, + {"x":coords[3][0],"y":coords[3][1]} + ] + + path_destination = distort_path(path_object,source,destination) + + return path_destination +''' +def complex2tulpe(complexNb): + return (complexNb.real,complexNb.imag) +''' +class AnotherPerspective(inkex.EffectExtension): + + def envelope2coords(self, path_envelope): + pp_envelope = CubicSuperPath(path_envelope) + if len(pp_envelope[0]) < 4: + inkex.errormsg("The selected envelope (your second path) does not contain enough nodes. Check to have at least 4 nodes.") + exit() + + c0 = pp_envelope[0][0][0] + c1 = pp_envelope[0][1][0] + c2 = pp_envelope[0][2][0] + c3 = pp_envelope[0][3][0] + # inkex.debug(str(c0)+" "+str(c1)+" "+str(c2)+" "+str(c3)) + return [c0, c1, c2, c3] + + def effect(self): + if len(self.options.ids) < 2: + inkex.errormsg("This extension requires two selected paths.") + exit() + + obj = self.svg.selected[self.options.ids[0]] + envelope = self.svg.selected[self.options.ids[1]] + + if obj.get(inkex.addNS('type','sodipodi')): + inkex.errormsg("The first selected object is of type '%s'.\nTry using the procedure Path->Object to Path." % obj.get(inkex.addNS('type','sodipodi'))) + exit() + + if obj.tag == inkex.addNS('path','svg') or obj.tag == inkex.addNS('g','svg'): + if envelope.tag == inkex.addNS('path','svg'): + mat = envelope.transform * Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + path = CubicSuperPath(envelope.get('d')) + Path(path).transform(mat) + absolute_envelope_path = envelope.get('d') + # inkex.debug(absolute_envelope_path) + coords_to_project = self.envelope2coords(absolute_envelope_path) + + if obj.tag == inkex.addNS('path','svg'): + mat = obj.transform * Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + absolute_d = str(Path(obj.get('d'))) + path = CubicSuperPath(absolute_d) + Path(path).transform(mat) + absolute_object_path = str(path) + # inkex.debug(absolute_object_path) + + elif obj.tag == inkex.addNS('g','svg'): + absolute_object_path="" + for p in obj.iterfind(".//{http://www.w3.org/2000/svg}path"): + + absolute_d = str(Path(p.get('d'))) + mat = p.transform * Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + path = CubicSuperPath(absolute_d) + Path(path).transform(mat) + absolute_object_path += str(Path(path)) + # inkex.debug(absolute_object_path) + + new_path = projection(absolute_object_path,coords_to_project) + attributes = {'d':new_path} + new_element = etree.SubElement(self.svg.get_current_layer(),inkex.addNS('path','svg'),attributes) + + else: + if envelope.tag == inkex.addNS('g','svg'): + inkex.errormsg("The second selected object is a group, not a path.\nTry using the procedure Object->Ungroup.") + else: + inkex.errormsg("The second selected object is not a path.\nTry using the procedure Path->Object to Path.") + exit() + else: + inkex.errormsg("The first selected object is not a path.\nTry using the procedure Path->Object to Path.") + exit() + +if __name__ == '__main__': + AnotherPerspective().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/apollonian_gasket/apollon.py b/extensions/fablabchemnitz/apollonian_gasket/apollon.py new file mode 100644 index 00000000..565485ab --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apollon.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python3 +# Generate Apollonian Gaskets -- the math part. + +# Copyright (c) 2014 Ludger Sandig +# This file is part of apollon. + +# Apollon is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# Apollon is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with Apollon. If not, see . + +from cmath import * +import random + +class Circle(object): + """ + A circle represented by center point as complex number and radius. + """ + def __init__ ( self, mx, my, r ): + """ + @param mx: x center coordinate + @type mx: int or float + @param my: y center coordinate + @type my: int or float + @param r: radius + @type r: int or float + """ + self.r = r + self.m = (mx +my*1j) + + def __repr__ ( self ): + """ + Pretty printing + """ + return "Circle( self, %s, %s, %s )" % (self.m.real, self.m.imag, self.r) + + def __str__ ( self ): + """ + Pretty printing + """ + return "Circle x:%.3f y:%.3f r:%.3f [cur:%.3f]" % (self.m.real, self.m.imag, self.r.real, self.curvature().real) + + def curvature (self): + """ + Get circle's curvature. + @rtype: float + @return: Curvature of the circle. + """ + return 1/self.r + +def outerTangentCircle( circle1, circle2, circle3 ): + """ + Takes three externally tangent circles and calculates the fourth one enclosing them. + @param circle1: first circle + @param circle2: second circle + @param circle3: third circle + @type circle1: L{Circle} + @type circle2: L{Circle} + @type circle3: L{Circle} + @return: The enclosing circle + @rtype: L{Circle} + """ + cur1 = circle1.curvature() + cur2 = circle2.curvature() + cur3 = circle3.curvature() + m1 = circle1.m + m2 = circle2.m + m3 = circle3.m + cur4 = -2 * sqrt( cur1*cur2 + cur2*cur3 + cur1 * cur3 ) + cur1 + cur2 + cur3 + m4 = ( -2 * sqrt( cur1*m1*cur2*m2 + cur2*m2*cur3*m3 + cur1*m1*cur3*m3 ) + cur1*m1 + cur2*m2 + cur3*m3 ) / cur4 + circle4 = Circle( m4.real, m4.imag, 1/cur4 ) + + return circle4 + + +def tangentCirclesFromRadii( r2, r3, r4 ): + """ + Takes three radii and calculates the corresponding externally + tangent circles as well as a fourth one enclosing them. The enclosing + circle is the first one. + + @param r2, r3, r4: Radii of the circles to calculate + @type r2: int or float + @type r3: int or float + @type r4: int or float + @return: The four circles, where the first one is the enclosing one. + @rtype: (L{Circle}, L{Circle}, L{Circle}, L{Circle}) + """ + circle2 = Circle( 0, 0, r2 ) + circle3 = Circle( r2 + r3, 0, r3 ) + m4x = (r2*r2 + r2*r4 + r2*r3 - r3*r4) / (r2 + r3) + m4y = sqrt( (r2 + r4) * (r2 + r4) - m4x*m4x ) + circle4 = Circle( m4x, m4y, r4 ) + circle1 = outerTangentCircle( circle2, circle3, circle4 ) + return ( circle1, circle2, circle3, circle4 ) + +def secondSolution( fixed, c1, c2, c3 ): + """ + If given four tangent circles, calculate the other one that is tangent + to the last three. + + @param fixed: The fixed circle touches the other three, but not + the one to be calculated. + + @param c1, c2, c3: Three circles to which the other tangent circle + is to be calculated. + + @type fixed: L{Circle} + @type c1: L{Circle} + @type c2: L{Circle} + @type c3: L{Circle} + @return: The circle. + @rtype: L{Circle} + """ + + curf = fixed.curvature() + cur1 = c1.curvature() + cur2 = c2.curvature() + cur3 = c3.curvature() + + curn = 2 * (cur1 + cur2 + cur3) - curf + mn = (2 * (cur1*c1.m + cur2*c2.m + cur3*c3.m) - curf*fixed.m ) / curn + return Circle( mn.real, mn.imag, 1/curn ) + +class ApollonianGasket(object): + """ + Container for an Apollonian Gasket. + """ + def __init__(self, c1, c2, c3): + """ + Creates a basic apollonian Gasket with four circles. + + @param c1, c2, c3: The curvatures of the three inner circles of the + starting set (i.e. depth 0 of the recursion). The fourth, + enclosing circle will be calculated from them. + @type c1: int or float + @type c2: int or float + @type c3: int or float + """ + self.start = tangentCirclesFromRadii( 1/c1, 1/c2, 1/c3 ) + self.genCircles = list(self.start) + + def recurse(self, circles, depth, maxDepth): + """Recursively calculate the smaller circles of the AG up to the + given depth. Note that for depth n we get 2*3^{n+1} circles. + + @param maxDepth: Maximal depth of the recursion. + @type maxDepth: int + + @param circles: 4-Tuple of circles for which the second + solutions are calculated + @type circles: (L{Circle}, L{Circle}, L{Circle}, L{Circle}) + + @param depth: Current depth + @type depth: int + """ + if( depth == maxDepth ): + return + (c1, c2, c3, c4) = circles + if( depth == 0 ): + # First recursive step, this is the only time we need to + # calculate 4 new circles. + del self.genCircles[4:] + cspecial = secondSolution( c1, c2, c3, c4 ) + self.genCircles.append( cspecial ) + self.recurse( (cspecial, c2, c3, c4), 1, maxDepth ) + + cn2 = secondSolution( c2, c1, c3, c4 ) + self.genCircles.append( cn2 ) + cn3 = secondSolution( c3, c1, c2, c4 ) + self.genCircles.append( cn3 ) + cn4 = secondSolution( c4, c1, c2, c3 ) + self.genCircles.append( cn4 ) + + self.recurse( (cn2, c1, c3, c4), depth+1, maxDepth ) + self.recurse( (cn3, c1, c2, c4), depth+1, maxDepth ) + self.recurse( (cn4, c1, c2, c3), depth+1, maxDepth ) + + def generate(self, depth): + """ + Wrapper for the recurse function. Generate the AG, + @param depth: Recursion depth of the Gasket + @type depth: int + """ + self.recurse(self.start, 0, depth) + diff --git a/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.inx b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.inx new file mode 100644 index 00000000..c069020e --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.inx @@ -0,0 +1,34 @@ + + + Apollonian Gasket + fablabchemnitz.de.apollonian_gasket + + + 3 + 2.0 + 3.0 + 3.0 + true + true + + + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.py b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.py new file mode 100644 index 00000000..c859d2db --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 + +import inkex +import apolloniangasket_func +from lxml import etree + +__version__ = '0.0' + +def cplxs2pts(zs): + tt = [] + for z in zs: + tt.extend([z.real,z.imag]) + return tt + +def draw_SVG_circle(parent, r, cx, cy, name): + " structure an SVG circle entity under parent " + circ_attribs = { 'cx': str(cx), 'cy': str(cy), + 'r': str(r), + inkex.addNS('label','inkscape'): name} + circle = etree.SubElement(parent, inkex.addNS('circle','svg'), circ_attribs) + +def draw_SVG_circleAsPath(parent, r, cx, cy, name): + circ_attribs = { + "d": "M {:0.6f}, {:0.6f} a {:0.6f},{:0.6f} 0 1,0 {:0.6f},0 a {:0.6f},{:0.6f} 0 1,0 {:0.6f},0".format( + cx - r, cy, r, r, 2*r, r, r, -2*r), + inkex.addNS('label','inkscape'): name} + circle = etree.SubElement(parent, inkex.addNS('path','svg'), circ_attribs) + +class Gasket(inkex.EffectExtension): # choose a better name + + def add_arguments(self, pars): + pars.add_argument("--active_tab") + pars.add_argument("--depth",type=int, default=3) + pars.add_argument("--c1", type=float, default=2.0) + pars.add_argument("--c2", type=float, default=3.0) + pars.add_argument("--c3", type=float, default=3.0) + pars.add_argument("--shrink", type=inkex.Boolean, default=True) + pars.add_argument("--as_paths", type=inkex.Boolean, default=True) + + def calc_unit_factor(self): + unit_factor = self.svg.unittouu(str(1.0) + self.options.units) + return unit_factor + +### ------------------------------------------------------------------- +### Main function and is called when the extension is run. + + def effect(self): + + #set up path styles + path_stroke = '#DD0000' # take color from tab3 + path_fill = 'none' # no fill - just a line + path_stroke_width = self.svg.unittouu(str(0.1) + "mm") + page_id = self.options.active_tab # sometimes wrong the very first time + + style_curve = { 'stroke': path_stroke, + 'fill': 'none', + 'stroke-width': path_stroke_width } + + # This finds center of current view in inkscape + t = 'translate(%s,%s)' % (self.svg.namedview.center[0], self.svg.namedview.center[1]) + + # add a group to the document's current layer + #all the circles inherit style from this group + g_attribs = { inkex.addNS('label','inkscape'): 'zengon' + "_%d"%(self.options.depth), + inkex.addNS('transform-center-x','inkscape'): str(0), + inkex.addNS('transform-center-y','inkscape'): str(0), + 'transform': t, + 'style' : str(inkex.Style((style_curve))), + 'info':'N: '} + topgroup = etree.SubElement(self.svg.get_current_layer(), 'g', g_attribs) + + circles = apolloniangasket_func.main(c1=self.options.c1, + c2=self.options.c2, + c3=self.options.c3, + depth=self.options.depth) + + #shrink the circles so they don't touch + #useful for laser cutting + + if self.options.shrink: + circles = circles[1:] + for cc in circles: + cc.r = abs(cc.r) + if cc.r >.5: + cc.r -= .1 + else: + cc.r *= .9 + + scale_factor = 200 + for c in circles: + cx, cy, r = c.m.real, c.m.imag, abs(c.r) + + #rescale and add circle to document + cx, cy, r = scale_factor * cx , scale_factor * cy, scale_factor * r + if self.options.as_paths is False: + draw_SVG_circle(topgroup, r, cx, cy, 'apollian') + else: + draw_SVG_circleAsPath(topgroup, r, cx, cy, 'apollian') + +if __name__ == '__main__': + Gasket().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/apollonian_gasket/apolloniangasket_func.py b/extensions/fablabchemnitz/apollonian_gasket/apolloniangasket_func.py new file mode 100644 index 00000000..64315b6e --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apolloniangasket_func.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 + +# Command line program to create svg apollonian circles + +# Copyright (c) 2014 Ludger Sandig +# This file is part of apollon. + +# Apollon is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# Apollon is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with Apollon. If not, see . + +import math +from apollon import ApollonianGasket + +def ag_to_svg(circles, colors, tresh=0.00005): + """ + Convert a list of circles to svg, optionally color them. + @param circles: A list of L{Circle}s + @param colors: A L{ColorMap} object + @param tresh: Only circles with a radius greater than the product of tresh and maximal radius are saved + """ + svg = [] + + tresh = .000005 + print ('>>', tresh) + + # Find the biggest circle, which hopefully is the enclosing one + # and has a negative radius because of this. Note that this does + # not have to be the case if we picked an unlucky set of radii at + # the start. If that was the case, we're screwed now. + + big = min(circles, key=lambda c: c.r.real) + + # Move biggest circle to front so it gets drawn first + circles.remove(big) + circles.insert(0, big) + + if big.r.real < 0: + # Bounding box from biggest circle, lower left corner and two + # times the radius as width + corner = big.m - ( abs(big.r) + abs(big.r) * 1j ) + vbwidth = abs(big.r)*2 + width = 500 # Hardcoded! + + # Line width independent of circle size + lw = (vbwidth/width) + + svg.append('\n' % (width, width, corner.real, corner.imag, vbwidth, vbwidth)) + + # Keep stroke width relative + svg.append('\n' % lw) + + # Iterate through circle list, circles with radius radmin: + fill = colors.color_for(abs(c.r)) + svg.append(( '\n' % (c.m.real, c.m.imag, abs(c.r), fill))) + + svg.append('\n') + svg.append('\n') + + return ''.join(svg) + +def impossible_combination(c1, c2, c3): + # If any curvatures x, y, z satisfy the equation + # x = 2*sqrt(y*z) + y + z + # then no fourth enclosing circle can be genereated, because it + # would be a line. + # We need to see for c1, c2, c3 if they could be "x". + + impossible = False + + sets = [(c1,c2,c3), (c2,c3,c1), (c3,c1,c2)] + + for (x, y, z) in sets: + if x == 2*math.sqrt(y*z) + y + z: + impossible = True + + return impossible + +def main(c1=3.,c2=2.,c3=2.,depth=5): + # Sanity checks + for c in [c1, c2,c3]: + if c == 0: + print("Error: curvature or radius can't be 0") + exit(1) + if impossible_combination(c1, c2, c3): + print("Error: no apollonian gasket possible for these curvatures") + exit(1) + + ag = ApollonianGasket(c1, c2, c3) + + ag.generate(depth) + + # Get smallest and biggest radius + smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) + biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) + + return ag.genCircles \ No newline at end of file diff --git a/extensions/fablabchemnitz/apply_transformations/apply_transformations.inx b/extensions/fablabchemnitz/apply_transformations/apply_transformations.inx new file mode 100644 index 00000000..cdcde283 --- /dev/null +++ b/extensions/fablabchemnitz/apply_transformations/apply_transformations.inx @@ -0,0 +1,16 @@ + + + Apply Transformations + fablabchemnitz.de.apply_transformations + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/apply_transformations/apply_transformations.py b/extensions/fablabchemnitz/apply_transformations/apply_transformations.py new file mode 100644 index 00000000..c90b80ef --- /dev/null +++ b/extensions/fablabchemnitz/apply_transformations/apply_transformations.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python3 +# +# License: GPL2 +# Copyright Mark "Klowner" Riedesel +# https://github.com/Klowner/inkscape-applytransforms +# +import copy +import math +from lxml import etree +import inkex +from inkex.paths import CubicSuperPath, Path +from inkex.transforms import Transform +from inkex.styles import Style + +NULL_TRANSFORM = Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + + +class ApplyTransformations(inkex.EffectExtension): + + def effect(self): + if self.svg.selected: + for id, shape in self.svg.selected.items(): + self.recursiveFuseTransform(shape) + else: + self.recursiveFuseTransform(self.document.getroot()) + + @staticmethod + def objectToPath(element): + if element.tag == inkex.addNS('g', 'svg'): + return element + + if element.tag == inkex.addNS('path', 'svg') or element.tag == 'path': + for attName in element.attrib.keys(): + if ("sodipodi" in attName) or ("inkscape" in attName): + del element.attrib[attName] + return element + + return element + + def scaleStrokeWidth(self, element, transf): + if 'style' in element.attrib: + style = element.attrib.get('style') + style = dict(Style.parse_str(style)) + update = False + + if 'stroke-width' in style: + try: + stroke_width = float(style.get('stroke-width').strip().replace("px", "")) + stroke_width *= math.sqrt(abs(transf.a * transf.d)) + style['stroke-width'] = str(stroke_width) + update = True + except AttributeError: + pass + + if update: + element.attrib['style'] = Style(style).to_str() + + def recursiveFuseTransform(self, element, transf=[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]): + + transf = Transform(transf) * Transform(element.get("transform", None)) #a, b, c, d = linear transformations / e, f = translations + + if 'transform' in element.attrib: + del element.attrib['transform'] + + element = ApplyTransformations.objectToPath(element) + + if transf == NULL_TRANSFORM: + # Don't do anything if there is effectively no transform applied + # reduces alerts for unsupported elements + pass + elif 'd' in element.attrib: + d = element.get('d') + p = CubicSuperPath(d) + p = Path(p).to_absolute().transform(transf, True) + element.set('d', str(Path(CubicSuperPath(p).to_path()))) + + self.scaleStrokeWidth(element, transf) + + elif element.tag in [inkex.addNS('polygon', 'svg'), + inkex.addNS('polyline', 'svg')]: + points = element.get('points') + points = points.strip().split(' ') + for k, p in enumerate(points): + if ',' in p: + p = p.split(',') + p = [float(p[0]), float(p[1])] + p = transf.apply_to_point(p) + p = [str(p[0]), str(p[1])] + p = ','.join(p) + points[k] = p + points = ' '.join(points) + element.set('points', points) + + self.scaleStrokeWidth(element, transf) + + elif element.tag in [inkex.addNS("ellipse", "svg"), inkex.addNS("circle", "svg")]: + + def isequal(a, b): + return abs(a - b) <= transf.absolute_tolerance + + if element.TAG == "ellipse": + rx = float(element.get("rx")) + ry = float(element.get("ry")) + else: + rx = float(element.get("r")) + ry = rx + + cx = float(element.get("cx")) + cy = float(element.get("cy")) + sqxy1 = (cx - rx, cy - ry) + sqxy2 = (cx + rx, cy - ry) + sqxy3 = (cx + rx, cy + ry) + newxy1 = transf.apply_to_point(sqxy1) + newxy2 = transf.apply_to_point(sqxy2) + newxy3 = transf.apply_to_point(sqxy3) + + element.set("cx", (newxy1[0] + newxy3[0]) / 2) + element.set("cy", (newxy1[1] + newxy3[1]) / 2) + edgex = math.sqrt( + abs(newxy1[0] - newxy2[0]) ** 2 + abs(newxy1[1] - newxy2[1]) ** 2 + ) + edgey = math.sqrt( + abs(newxy2[0] - newxy3[0]) ** 2 + abs(newxy2[1] - newxy3[1]) ** 2 + ) + + if not isequal(edgex, edgey) and ( + element.TAG == "circle" + or not isequal(newxy2[0], newxy3[0]) + or not isequal(newxy1[1], newxy2[1]) + ): + inkex.utils.errormsg( + "Warning: Shape %s (%s) is approximate only, try Object to path first for better results" + % (element.TAG, element.get("id")) + ) + + if element.TAG == "ellipse": + element.set("rx", edgex / 2) + element.set("ry", edgey / 2) + else: + element.set("r", edgex / 2) + + # this is unstable at the moment + elif element.tag == inkex.addNS("use", "svg"): + href = None + old_href_key = '{http://www.w3.org/1999/xlink}href' + new_href_key = 'href' + if element.attrib.has_key(old_href_key) is True: # {http://www.w3.org/1999/xlink}href (which gets displayed as 'xlink:href') attribute is deprecated. the newer attribute is just 'href' + href = element.attrib.get(old_href_key) + #element.attrib.pop(old_href_key) + if element.attrib.has_key(new_href_key) is True: + href = element.attrib.get(new_href_key) #we might overwrite the previous deprecated xlink:href but it's okay + #element.attrib.pop(new_href_key) + + #get the linked object from href attribute + linkedObject = self.document.getroot().xpath("//*[@id = '%s']" % href.lstrip('#')) #we must remove hashtag symbol + linkedObjectCopy = copy.copy(linkedObject[0]) + objectType = linkedObject[0].tag + + if objectType == inkex.addNS("image", "svg"): + mask = None #image might have an alpha channel + new_mask_id = self.svg.get_unique_id("mask") + newMask = None + if element.attrib.has_key('mask') is True: + mask = element.attrib.get('mask') + #element.attrib.pop('mask') + + #get the linked mask from mask attribute. We remove the old and create a new + if mask is not None: + linkedMask = self.document.getroot().xpath("//*[@id = '%s']" % mask.lstrip('url(#').rstrip(')')) #we must remove hashtag symbol + linkedMask[0].delete() + maskAttributes = {'id': new_mask_id} + newMask = etree.SubElement(self.document.getroot(), inkex.addNS('mask', 'svg'), maskAttributes) + + width = float(linkedObjectCopy.get('width')) * transf.a + height = float(linkedObjectCopy.get('height')) * transf.d + linkedObjectCopy.set('width', '{:1.6f}'.format(width)) + linkedObjectCopy.set('height', '{:1.6f}'.format(height)) + linkedObjectCopy.set('x', '{:1.6f}'.format(transf.e)) + linkedObjectCopy.set('y', '{:1.6f}'.format(transf.f)) + if newMask is not None: + linkedObjectCopy.set('mask', 'url(#' + new_mask_id + ')') + maskRectAttributes = {'x': '{:1.6f}'.format(transf.e), 'y': '{:1.6f}'.format(transf.f), 'width': '{:1.6f}'.format(width), 'height': '{:1.6f}'.format(height), 'style':'fill:#ffffff;'} + maskRect = etree.SubElement(newMask, inkex.addNS('rect', 'svg'), maskRectAttributes) + self.document.getroot().append(linkedObjectCopy) #for each svg:use we append a copy to the document root + element.delete() #then we remove the use object + else: + #self.recursiveFuseTransform(linkedObjectCopy, transf) + self.recursiveFuseTransform(element.unlink(), transf) + + elif element.tag in [inkex.addNS('rect', 'svg'), + inkex.addNS('text', 'svg'), + inkex.addNS('image', 'svg')]: + inkex.utils.errormsg( + "Shape %s (%s) not yet supported, try Object to path first" + % (element.TAG, element.get("id")) + ) + + else: + # e.g. + self.scaleStrokeWidth(element, transf) + + for child in element.getchildren(): + self.recursiveFuseTransform(child, transf) + +if __name__ == '__main__': + ApplyTransformations().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.inx b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.inx new file mode 100644 index 00000000..5c9a5948 --- /dev/null +++ b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.inx @@ -0,0 +1,55 @@ + + + Archimedes Spiral + fablabchemnitz.de.archimedes_spiral + + + + 50 + 3 + 50 + + + + + 0 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.py b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.py new file mode 100644 index 00000000..5c55d240 --- /dev/null +++ b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +""" +Copyright (C) 2017 Panagiotis Loukas +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WAphiANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WAphiANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Version 0.2 +This script was written by Panagiotis Loukas to make spiral easy. +It simply, + +Have fun :) +PS. + Written on Arch. +""" + +import inkex +from lxml import etree +from math import cos, sin, pi, log, sqrt + +class Archimedes(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--tab') + pars.add_argument('--r', type = int, default = '50') + pars.add_argument('--a', type = float, default = '3') + pars.add_argument('--step', type = int, default = '50') + pars.add_argument('--trl', default = '1') + pars.add_argument('--turns', type = float, default = '5') + pars.add_argument('--length', type = float, default = '500') + + def effect(self): + th = pi / 3 + a = self.options.a + r = self.options.r + + length = self.options.length + if length > 0: + turns = self.angle(a, r, length, th) / (2 * pi) + else: + turns = self.options.turns + + if self.options.trl == '1': + step = -self.options.step + else: + step = self.options.step + + layer = etree.SubElement(self.document.getroot(),'g') + path = etree.Element(inkex.addNS('path','svg')) + path.set('d', self.built(r, step, a, turns)) + path.set('style',"fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1") + layer.append(path) + + def built(self, r0, st = 4, a = 4, k = 1, th = 0): + step = 2 * pi / st + r = r0 + s = "M " + str(r * cos(th)) + ", " + str(-r * sin(th)) + for i in range(0, int(k * (abs(st)))): + prin = th + i * step + meta = th + (i + 1) * step + rp = r0 + abs(a * prin)# instead we put the absolute value the spiral will drift inwards + rm = r0 + abs(a * meta)# at the absolute price closes outwards + + s += "a " + str(rm) + "," + str(rm) + " 0 0," + self.options.trl + " " + str(-rp * cos(prin) + rm * cos(meta)) + "," + str(rp * sin(prin) -rm * sin(meta)) + return s + + # see https://mathepedia.de/Archimedische_Spirale.html for formula of total arc length + def spirallength(self, a, r0, th): + phi = (r0 / a) + th + phi_sqrt = sqrt(phi ** 2 + 1) + return (a / 2) * (phi * phi_sqrt + log(phi + phi_sqrt)) + + def ds(self, a, r0, th): + return self.spirallength(a, r0, th) - self.spirallength(a, r0, 0) + + def angle(self, a, r0, length, th): + i = 0.0 + while (True): + ls=self.ds(a, r0, i) + if length - ls > 100: + i += 0.01 + elif length - ls > 10: i += 0.001 + elif length - ls > 1: i += 0.0001 + elif length - ls > 0.1: i += 0.00001 + elif length - ls > 0.01: i += 0.000001 + else: break + return i + +if __name__ == '__main__': + Archimedes().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.inx b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.inx new file mode 100644 index 00000000..bb6d8563 --- /dev/null +++ b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.inx @@ -0,0 +1,17 @@ + + + Barrel Distortion + fablabchemnitz.de.barrel_distorsion + -1.0 + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.py b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.py new file mode 100644 index 00000000..107ecf84 --- /dev/null +++ b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.py @@ -0,0 +1,100 @@ +import math +import re +import inkex +from inkex import bezier +from inkex.paths import Path, CubicSuperPath + +class BarrelDistorsion(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--lambda_coef", type=float, default=-5.0, help="command line help") + + def distort_coordinates(self, x, y): + """Method applies barrel distorsion to given points with distorsion center in center of image, selected to + + Args: + x (float): X coordinate of given point + y (float): Y coordinate of given point + + Returns: + tuple(float, float): Tuple with X,Y distorted coordinates of given point + """ + x_u = (x - self.x_c) / (self.width + self.height) + y_u = (y - self.y_c) / (self.width + self.height) + x_d = x_u / 2 / (self.q * y_u**2 + x_u**2 * self.q) * (1 - math.sqrt(1 - 4 * self.q * y_u**2 - 4 * x_u**2 * self.q)) + y_d = y_u / 2 / (self.q * y_u**2 + x_u**2 * self.q) * (1 - math.sqrt(1 - 4 * self.q * y_u**2 - 4 * x_u**2 * self.q)) + x_d *= self.width + self.height + y_d *= self.width + self.height + x_d += self.x_c + y_d += self.y_c + return x_d, y_d + + def split_into_nodes(self, nodes_number=1000): + for id, node in self.svg.selected.items(): + if node.tag == inkex.addNS('path', 'svg'): + p = CubicSuperPath(node.get('d')) + new = [] + for sub in p: + new.append([sub[0][:]]) + i = 1 + while i <= len(sub) - 1: + length = bezier.cspseglength( + new[-1][-1], sub[i]) + + splits = nodes_number + for s in range(int(splits), 1, -1): + new[-1][-1], next, sub[ + i] = bezier.cspbezsplitatlength( + new[-1][-1], sub[i], 1.0 / s) + new[-1].append(next[:]) + new[-1].append(sub[i]) + i += 1 + node.set('d', str(CubicSuperPath(new))) + + def effect(self): + if re.match(r'g\d+', + list(self.svg.selected.items())[0][0]) is not None: + raise SystemExit( + "You are trying to distort group of objects.\n This extension works only with path objects due to Inkscape API restrictions.\n Ungroup your objects and try again." + ) + self.split_into_nodes() + self.q = self.options.lambda_coef + if self.q == 0.0: + inkex.errormsg("Invalid lambda coefficient. May not be exactly zero.") + return + nodes = [] + for id, node in self.svg.selected.items(): + if node.tag == inkex.addNS('path', 'svg'): + path = Path(node.get('d')).to_arrays() + nodes += path + nodes_filtered = [x for x in nodes if x[0] != 'Z'] + x_coordinates = [x[-1][-2] for x in nodes_filtered] + y_coordinates = [y[-1][-1] for y in nodes_filtered] + self.width = max(x_coordinates) - min(x_coordinates) + self.height = max(y_coordinates) - min(y_coordinates) + self.x_c = sum(x_coordinates) / len(x_coordinates) + self.y_c = sum(y_coordinates) / len(y_coordinates) + for id, node in self.svg.selected.items(): + if node.tag == inkex.addNS('path', 'svg'): + path = Path(node.get('d')).to_arrays() + distorted = [] + first = True + for cmd, params in path: + if cmd != 'Z': + if first == True: + x = params[-2] + y = params[-1] + distorted.append( + ['M', + list(self.distort_coordinates(x, y))]) + first = False + else: + x = params[-2] + y = params[-1] + distorted.append( + ['L', self.distort_coordinates(x, y)]) + node.set('d', str(Path(distorted))) + + +if __name__ == '__main__': + BarrelDistorsion().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/batch_task/BaseExtension.py b/extensions/fablabchemnitz/batch_task/BaseExtension.py new file mode 100644 index 00000000..7e558f4d --- /dev/null +++ b/extensions/fablabchemnitz/batch_task/BaseExtension.py @@ -0,0 +1,195 @@ +#!/usr/bin/env python3 + +# pylint: disable=too-many-ancestors + +# standard library +import os +import sys +import re +import argparse +from shutil import copy2 +# from subprocess import Popen, PIPE +# import time +# from lxml import etree + +# local library +import inkex +from inkex.command import inkscape +from inkex.elements import _selected as selection + +MIN_PYTHON_VERSION = (3, 6) # Mainly for f-strings +if (sys.version_info.major, sys.version_info.minor) < (3, 6): + inkex.Effect.msg(f"Python {MIN_PYTHON_VERSION[0]}.{MIN_PYTHON_VERSION[1]} or later required.") + sys.exit(1) + + +class BaseExtension(inkex.Effect): + """Custom class that makes creation of extensions easier. + + Users of this class need not worry about boilerplates, such as how to + call inkscape via shell, and the management of tempfiles. Useful functions + are also provided.""" + + def __init__(self, custom_effect, args_adder=None): + """Init base class. + + In a typical Inkscape extension that does not make use of BaseExtension, + the effect is determined by the "effect" method of the extension class. + This init function will take in a method, and run it in the "effect" method + together with the other boilerplate. + + This init method takes in a function under the custom_effect argument. + This function will handle the user's effects, minus the boilerplate. It + has to return a list[str] object, with each str being a verb that inkscape + can execute.""" + + inkex.Effect.__init__(self) + self.custom_effect = custom_effect + + self._msg = self.msg # The old msg function provided by inkex (only accepts strings) + def msg(*args, sep=' '): + """Improved msg method, similar to Python's print""" + self._msg(sep.join([str(arg) for arg in args])) + self.msg = msg + + if args_adder is not None: + args_adder(self.arg_parser) + self.args_adder = args_adder + + + + + def z_sort(self, alist): + """Return new list sorted in document order (depth-first traversal).""" + return list(self.z_iter(alist)) + + + def z_iter(self, alist): + """Return iterator over ids in document order (depth-first traversal).""" + id_list = list(alist) + count = len(id_list) + for element in self.document.getroot().iter(): + # element_id = element.get('id') + # if element_id is not None and element_id in id_list: + if element in alist: + id_list.remove(element) + yield element + count -= 1 + if not count: + return + + @staticmethod + def show(obj): + """Returns a str representation of object""" + def rep(obj): + if hasattr(obj, 'get_id'): + return f"{type(obj).__name__}({obj.get_id()})" + return f"{type(obj).__name__}" + + + if type(obj).__name__ == 'ElementList': + return ('ElementList(' + + ', '.join([rep(child) for child in obj.values()]) + + ')') + if isinstance(obj, list): + return '[' + ', '.join(rep(child) for child in obj) + ']' + + + return rep(obj) + + + def find(self, obj: any, xpath='/*') -> list: + """Returns a list of objects which satisfies XPath + + Args: + obj (any): Parent object to recurse into. Examples include root, selected, or a group. + xpath (str, optional): Defaults to '/*'. + + Returns: + list: [description] + """ + + BASIC_TAGS = ('circle', 'ellipse', 'line', 'polygon', 'polyline', 'rect', 'path', 'image', 'g') + SPECIAL_TAGS = { + 'l': "svg:g[@inkscape:groupmode='layer']", + 'p': 'svg:path' + } + + xpath = re.sub(r'((?<=/)(' + '|'.join(BASIC_TAGS) + r')\b)', r'svg:\1', xpath) + for k, v in SPECIAL_TAGS.items(): + xpath = re.sub('(?<=/)' + k + r'\b', v, xpath) + + xpath = re.sub(r'(?<=\[)(\d+):(\d+)(?=\])', r'position()>=\1 and position()<\2', xpath) + + if type(obj).__name__ != 'ElementList': + obj = [obj] + + output = [] + for child in obj: + matches = child.xpath(xpath, namespaces={ + 'svg': 'http://www.w3.org/2000/svg', + 'inkscape': 'http://www.inkscape.org/namespaces/inkscape'}) + for match in matches: + if type(match).__name__ not in ('Defs', 'NamedView', 'Metadata'): + output.append(match) + + return output + + + def effect(self): + """Main entry point to process current document. Not to be called externally.""" + + actions_list = self.custom_effect(self) + + if actions_list is None or actions_list == []: + self.msg("No actions received. Perhaps you are calling inkex object methods?") + elif isinstance(actions_list, list): + tempfile = self.options.input_file + "-BaseExtension.svg" + + # prepare + copy2(self.options.input_file, tempfile) + + #disabled because it leads to crash Inkscape: https://gitlab.com/inkscape/inkscape/-/issues/2487 + #actions_list.append("FileSave") + #actions_list.append("FileQuit") + #extra_param = "--with-gui" + + #workaround to fix it (we use export to tempfile instead processing and saving again) + actions_list.append("export-type:svg") + actions_list.append("export-filename:{}".format(tempfile)) + actions_list.append("export-do") + extra_param = "--batch-process" + + actions = ";".join(actions_list) + inkscape(tempfile, extra_param, actions=actions) + + + # finish up + # replace current document with content of temp copy file + self.document = inkex.load_svg(tempfile) + # update self.svg + self.svg = self.document.getroot() + + + # Clean up tempfile + try: + os.remove(tempfile) + except Exception: # pylint: disable=broad-except + pass + + def call(self, child, ext_options): + """Used to call an extension from another extension""" + + old_options = self.options + + parser = argparse.ArgumentParser() + child.args_adder(parser) + self.options = parser.parse_args([]) + + for k, v in ext_options.items(): + setattr(self.options, k, v) + + output = child.custom_effect(self) + self.options = old_options + + return output diff --git a/extensions/fablabchemnitz/batch_task/batch_task.inx b/extensions/fablabchemnitz/batch_task/batch_task.inx new file mode 100644 index 00000000..8453f35f --- /dev/null +++ b/extensions/fablabchemnitz/batch_task/batch_task.inx @@ -0,0 +1,177 @@ + + + Batch Task + fablabchemnitz.de.batch_task + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + all + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/batch_task/batch_task.py b/extensions/fablabchemnitz/batch_task/batch_task.py new file mode 100644 index 00000000..e3cbc3ce --- /dev/null +++ b/extensions/fablabchemnitz/batch_task/batch_task.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python3 +import os +import sys +import re +import subprocess + +from BaseExtension import BaseExtension + +# For linting purposes +from argparse import ArgumentParser + +"""If syntax error occurs here, change inkscape interpreter to python3""" + +"""I have yet to find a way for an extension to call another extension with parameters, +without GUI. This extension can be run as part of a standalone extension (using BaseExtension) +or imported for use by another extension. This workaround is done via the 'option' arg in +the 'custom_effect' function""" + + +def custom_effect(self: BaseExtension): + """Note: The init of the BaseExtension class will set its 'custom_effect' attr + to this function. Hence, the self arg is of type BaseExtension.""" + + + selected = self.svg.selected + root = self.document.getroot() + actions_list = [] + + proc = subprocess.run("inkscape --verb-list | grep -oP '^.+?(?=:)'", + shell=True, capture_output=True) + valid_actions_and_verbs = proc.stdout.decode().splitlines() + + proc = subprocess.run("inkscape --action-list | grep -oP '^.+?(?= *:)'", + shell=True, capture_output=True) + valid_actions_and_verbs += proc.stdout.decode().splitlines() + + + self.options.dry_run = self.options.dry_run == 'true' + + def verify_action(action): + if ':' in action: + action = action.split(':')[0] + if action not in valid_actions_and_verbs: + raise ValueError(action) + + def select_do_individually(objs, actions): + for obj in objs: + actions_list.append("EditDeselect") + actions_list.append("select-by-id:" + obj.get_id()) + if isinstance(actions, str): + actions = [actions] + for action in actions: + verify_action(action) + actions_list.append(action) + + def select_do_on_all(objs, actions): + for obj in objs: + actions_list.append("select-by-id:" + obj.get_id()) + + if isinstance(actions, str): + actions = [actions] + for action in actions: + verify_action(action) + actions_list.append(action) + effects = [] + try: + if self.options.tab_effect is None: + if self.options.effects is not None: + self.options.tab_effect = 'Multi' + elif self.options.effect1 is not None: + self.options.tab_effect = 'Simple' + + elif self.options.tab_effect in ('Preset', 'Simple'): + for attr in ('effect_' + self.options.tab_effect.lower() + str(i) for i in range(1, 4)): + e = getattr(self.options, attr) + if e != None: + effects += [e.strip()] + if effects == []: + raise ValueError + elif self.options.tab_effect == 'Multi': + if self.options.effects is None: + raise ValueError + for line in self.options.effects.split('\\n'): + effects += [e.strip() for e in line.split(';') if e != ''] + except ValueError: + self.msg("No effects inputted! Quitting...") + sys.exit(0) + + + if self.options.target == 'root': + objects = self.find(root, '/svg:svg' + self.options.xpath) + elif self.options.target == 'selected': + objects = self.find(selected, self.options.xpath) + if objects == []: + self.msg(f"No objects satisfies XPath: '{self.options.xpath}'.") + self.msg("Root:", self.show(root)) + self.msg("Selected:", self.show(selected)) + sys.exit(0) + + + try: + if self.options.mode == 'all': + select_do_on_all(objects, effects) + elif self.options.mode == 'indiv': + select_do_individually(objects, effects) + except ValueError as e: + self.msg(f"'{e.args[0]}' is not a valid action or verb in inkscape.") + sys.exit(1) + + if self.options.dry_run: + self.msg(f"{'DRY RUN':=^40}") + self.msg("Root:", self.show(self.find(root, '/*'))) + self.msg("Selected:", self.show(selected)) + self.msg() + self.msg("XPath:", self.show(objects)) + self.msg() + self.msg("Actions:", actions_list) + sys.exit(0) + return actions_list + + +def args_adder(arg_parser: ArgumentParser): + + arg_parser.add_argument("--target", default='root', help="Object to apply xpath find on") + arg_parser.add_argument("--xpath", default='/*', help="For selection of objects") + arg_parser.add_argument("--tab_main", default=None) + arg_parser.add_argument("--Simple", default=None) + arg_parser.add_argument("--Multi", default=None) + arg_parser.add_argument("--mode", default="all", help="Mode to apply effects on objects") + arg_parser.add_argument("--tab_effect", default=None) + for arg in (*(x + str(y) for x in ('effect_preset', 'effect_simple') for y in range(1, 4)), 'effects'): + arg_parser.add_argument(f"--{arg}", default=None, help="Inkscape verb for path op") + arg_parser.add_argument("--dry_run", default='false') + arg_parser.add_argument("--null_notebook", default='false') + + #import inkex + #for key, value in arg_parser.parse_args()._get_kwargs(): + # if value is not None: + # inkex.utils.debug("{}={}".format(key, value)) + +BatchTask = BaseExtension(custom_effect, args_adder=args_adder) + +if __name__ == '__main__': + BatchTask.run() + + + + +# Namespace(Multi='SelectionDiff', Simple='SelectionDiff', dry_run='false', effect1='SelectionBreakApart', effect2=None, effect3=None, effects=None, ids=['image25'], input_file='/tmp/ink_ext_XXXXXX.svgIDCKU0', mode='all', null='null', output=<_io.BufferedWriter name=''>, selected_nodes=[], tab_effect='Simple', tab_main='Options', target='root', xpath='/*') + + +# Namespace(Multi=None, Simple=None, dry_run='false', effect1='SelectionDelete', effect2=None, effect3=None, effects=None, mode='all', null='false', tab_effect=None, tab_main=None, target='root', xpath='/*') diff --git a/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.inx b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.inx new file mode 100644 index 00000000..d632b4ed --- /dev/null +++ b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.inx @@ -0,0 +1,16 @@ + + + Bezier Envelope + fablabchemnitz.de.bezier_envelope + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.py b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.py new file mode 100644 index 00000000..d9360c44 --- /dev/null +++ b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.py @@ -0,0 +1,399 @@ +#!/usr/bin/env python3 +''' +Bezier Envelope extension for Inkscape +Copyright (C) 2009 Gerrit Karius + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +About the Bezier Envelope extension: + +This extension implements Bezier enveloping. +It takes an arbitrary path (the "letter") and a 4-sided path (the "envelope") as input. +The envelope must be 4 segments long. Unless the letter is to be rotated or flipped, +the envelope should begin at the upper left corner and be drawn clockwise. +The extension then attempts to squeeze the letter into the envelope +by rearranging all anchor and handle points of the letter's path. + +In order to do this, the bounding box of the letter is used. +All anchor and bezier handle points get new x and y coordinates between 0% and 100% +according to their place inside the bounding box. +The 4 sides of the envelope are then interpreted as deformed axes. +Points at 0% or 100% could be placed along these axes, but because most points +are somewhere inside the bounding box, some tweening of the axes must be done. + +The function mapPointsToMorph does the tweening. +Say, some point is at x=30%, y=40%. +For the tweening, the function tweenCubic first calculates a straight tween +of the y axis at the x percentage of 30%. +This tween axis now floats somewhere between the y axis keys at the x percentage, +but is not necessarily inside the envelope, because the x axes are not straight. +Now, the end points on the two x axes at 30% are calculated. The function match() +takes these points and calculates a "stretch" transform which maps the two anchor +points of the y axis tween to the two points on the x axes by rotating the tween and +stretching it along its endpoints. This transform is then applied to the handle points, +to get the entire tweened y axis to its x tweened position. +Last, the point at the y percentage 40% of this y axis tween is calculated. +That is the final point of the enveloped letter. + +Finally, after all of the letter's points have been recalculated in this manner, +the resulting path is taken and replaces the letter's original path. + +TODO: +* Currently, both letter and envelope must be paths to work. +-> Arbitrary other shapes like circles and rectangles should be interpreted as paths. +* It should be possible to select several letters, and squeeze them into one envelope as a group. +* It should be possible to insert a clone of the letter, instead of replacing it. +* This program was originally written in Java. Maybe for some code, Python shortcuts can be used. + +I hope the comments are not too verbose. Enjoy! + +''' +import inkex +from inkex import Transform +from inkex.paths import Path +import math +import sys +import ffgeom + + +class BezierEnvelope(inkex.EffectExtension): + + segmentTypes = ["move","line","quad","cubic","close"] + + def effect(self): + if len(self.options.ids) < 2: + inkex.errormsg("Two paths must be selected. The 1st is the letter, the 2nd is the envelope and must have 4 sides.") + exit() + + letterElement = self.svg.selected[self.options.ids[0]] + envelopeElement = self.svg.selected[self.options.ids[1]] + + if letterElement.get('inkscape:original-d') or envelopeElement.get('inkscape:original-d'): + inkex.errormsg("One or both selected paths have attribute 'inkscape:original-d' which points to Live Path Effects (LPE). Please convert to regular path.") + exit() + + if letterElement.tag != inkex.addNS('path','svg') or envelopeElement.tag != inkex.addNS('path','svg'): + inkex.errormsg("Both letter and envelope must be SVG paths.") + exit() + + axes = extractMorphAxes(Path( envelopeElement.get('d') ).to_arrays()) + if axes is None: + inkex.errormsg("No axes found on envelope.") + exit() + axisCount = len(axes) + if axisCount < 4: + inkex.errormsg("The envelope path has less than 4 segments.") + exit() + for i in range( 0, 4 ): + if axes[i] is None: + inkex.errormsg("axis[%i] is None" % i) + exit() + # morph the enveloped element according to the axes + morph_element( letterElement, envelopeElement, axes ); + + +def morph_element( letterElement, envelopeElement, axes ): + path = Path( letterElement.get('d') ).to_arrays() + morphedPath = morphPath( path, axes ) + letterElement.set("d", str(Path(morphedPath))) + + +# Morphs a path into a new path, according to cubic curved bounding axes. +def morphPath(path, axes): + bounds = [y for x in list(Path(path).bounding_box()) for y in list(x)] + assert len(bounds) == 4 + new_path = [] + current = [ 0.0, 0.0 ] + start = [ 0.0, 0.0 ] + + for cmd, params in path: + segmentType = cmd + points = params + if segmentType == "M": + start[0] = points[0] + start[1] = points[1] + segmentType = convertSegmentToCubic( current, segmentType, points, start ) + percentages = [0.0]*len(points) + morphed = [0.0]*len(points) + numPts = getNumPts( segmentType ) + normalizePoints( bounds, points, percentages, numPts ) + mapPointsToMorph( axes, percentages, morphed, numPts ) + addSegment( new_path, segmentType, morphed ) + if len(points) >= 2: + current[0] = points[ len(points)-2 ] + current[1] = points[ len(points)-1 ] + return new_path + + +def getNumPts( segmentType ): + if segmentType == "M": + return 1 + if segmentType == "L": + return 1 + if segmentType == "Q": + return 2 + if segmentType == "C": + return 3 + if segmentType == "Z": + return 0 + return -1 + + + +def addSegment( path, segmentType, points ): + path.append([segmentType,points]) + + +# Converts visible path segments (Z,L,Q) into absolute cubic segments (C). +def convertSegmentToCubic( current, segmentType, points, start ): + if segmentType == "H": + # print(current, points, start) + assert len(points) == 1 + points.insert(0, current[0]) + # points[0] += current[0] + # print(segmentType, current, points, start) + return convertSegmentToCubic(current, "L", points, start) + elif segmentType == "V": + # print(points) + assert len(points) == 1 + points.append(current[1]) + # points[1] += current[1] + # print(segmentType, current, points, start) + return convertSegmentToCubic(current, "L", points, start) + if segmentType == "M": + return "M"; + if segmentType == "C": + return "C"; + elif segmentType == "Z": + for i in range(0,6): + points.append(0.0) + points[4] = start[0] + points[5] = start[1] + thirdX = (points[4] - current[0]) / 3.0 + thirdY = (points[5] - current[1]) / 3.0 + points[2] = points[4]-thirdX + points[3] = points[5]-thirdY + points[0] = current[0]+thirdX + points[1] = current[1]+thirdY + return "C" + elif segmentType == "L": + for i in range(0,4): + points.append(0.0) + points[4] = points[0] + points[5] = points[1] + thirdX = (points[4] - current[0]) / 3.0 + thirdY = (points[5] - current[1]) / 3.0 + points[2] = points[4]-thirdX + points[3] = points[5]-thirdY + points[0] = current[0]+thirdX + points[1] = current[1]+thirdY + return "C" + elif segmentType == "Q": + for i in range(0,2): + points.append(0.0) + firstThirdX = (points[0] - current[0]) * 2.0 / 3.0 + firstThirdY = (points[1] - current[1]) * 2.0 / 3.0 + secondThirdX = (points[2] - points[0]) * 2.0 / 3.0 + secondThirdY = (points[3] - points[1]) * 2.0 / 3.0 + points[4] = points[2] + points[5] = points[3] + points[0] = current[0] + firstThirdX + points[1] = current[1] + firstThirdY + points[2] = points[2] - secondThirdX + points[3] = points[3] - secondThirdY + return "C" + else: + sys.stderr.write("unsupported segment type: %s\n" % (segmentType)) + return segmentType + + +# Normalizes the points of a path segment, so that they are expressed as percentage coordinates +# relative to the bounding box axes of the total shape. +# @param bounds The bounding box of the shape. +# @param points The points of the segment. +# @param percentages The returned points in normalized percentage form. +# @param numPts +def normalizePoints( bounds, points, percentages, numPts ): + # bounds has structure xmin,xMax,ymin,yMax + xmin,xMax,ymin,yMax = bounds + for i in range( 0, numPts ): + x = i*2 + y = i*2+1 + percentages[x] = (points[x] - xmin) / (xMax-xmin) + percentages[y] = (points[y] - ymin) / (yMax-ymin) + + + +# Extracts 4 axes from a path. It is assumed that the path starts with a move, followed by 4 cubic paths. +# The extraction reverses the last 2 axes, so that they run in parallel with the first 2. +# @param path The path that is formed by the axes. +# @return The definition points of the 4 cubic path axes as float arrays, bundled in another array. +def extractMorphAxes( path ): + points = [] + current = [ 0.0, 0.0 ] + start = [ 0.0, 0.0 ] + # the curved axis definitions go in here + axes = [None]*4 + i = 0 + + for cmd, params in path: + points = params + cmd = convertSegmentToCubic( current, cmd, points, start ) + + if cmd == "M": + current[0] = points[0] + current[1] = points[1] + start[0] = points[0] + start[1] = points[1] + + elif cmd == "C": + + # 1st cubic becomes x axis 0 + # 2nd cubic becomes y axis 1 + # 3rd cubic becomes x axis 2 and is reversed + # 4th cubic becomes y axis 3 and is reversed + if i % 2 == 0: + index = i + else: + index = 4-i + if( i < 2 ): + # axes 1 and 2 + axes[index] = [ current[0], current[1], points[0], points[1], points[2], points[3], points[4], points[5] ] + elif( i < 4 ): + # axes 3 and 4 + axes[index] = [ points[4], points[5], points[2], points[3], points[0], points[1], current[0], current[1] ] + else: + # more than 4 axes - hopefully it was an unnecessary trailing Z + {} + current[0] = points[4] + current[1] = points[5] + i = i + 1 + elif cmd == "Z": + #do nothing + {} + else: + raise Exception("Unsupported segment type: %s" % cmd) + return None + + return axes + + +# Projects points in percentage coordinates into a morphed coordinate system that is framed +# by 2 x cubic curves (along the x axis) and 2 y cubic curves (along the y axis). +# @param axes The x and y axes of the envelope. +# @param percentage The current segment of the letter in normalized percentage form. +# @param morphed The array to hold the returned morphed path. +# @param numPts The number of points to be transformed. +def mapPointsToMorph( axes, percentage, morphed, numPts ): + # rename the axes for legibility + yCubic0 = axes[1] + yCubic1 = axes[3] + xCubic0 = axes[0] + xCubic1 = axes[2] + # morph each point + for i in range( 0, numPts ): + x = i*2 + y = i*2+1 + # tween between the morphed y axes according to the x percentage + tweenedY = tweenCubic( yCubic0, yCubic1, percentage[x] ) + # get 2 points on the morphed x axes + xSpot0 = pointOnCubic( xCubic0, percentage[x] ) + xSpot1 = pointOnCubic( xCubic1, percentage[x] ) + # create a transform that stretches the y axis tween between these 2 points + yAnchor0 = [ tweenedY[0], tweenedY[1] ] + yAnchor1 = [ tweenedY[6], tweenedY[7] ] + xTransform = match( yAnchor0, yAnchor1, xSpot0, xSpot1 ) + # map the y axis tween to the 2 points by applying the stretch transform + for j in range(0,4): + x2 = j*2 + y2 = j*2+1 + pointOnY = [tweenedY[x2],tweenedY[y2]] + Transform(xTransform).apply_to_point(pointOnY) + tweenedY[x2] = pointOnY[0] + tweenedY[y2] = pointOnY[1] + # get the point on the tweened and transformed y axis according to the y percentage + morphedPoint = pointOnCubic( tweenedY, percentage[y] ) + morphed[x] = morphedPoint[0] + morphed[y] = morphedPoint[1] + +# Calculates the point on a cubic bezier curve at the given percentage. +def pointOnCubic( c, t ): + point = [0.0,0.0] + _t_2 = t*t + _t_3 = _t_2*t + _1_t = 1-t + _1_t_2 = _1_t*_1_t + _1_t_3 = _1_t_2*_1_t + + for i in range( 0, 2 ): + point[i] = c[i]*_1_t_3 + 3*c[2+i]*_1_t_2*t + 3*c[4+i]*_1_t*_t_2 + c[6+i]*_t_3 + return point + +# Tweens 2 bezier curves in a straightforward way, +# i.e. each of the points on the curve is tweened along a straight line +# between the respective point on key1 and key2. +def tweenCubic( key1, key2, percentage ): + tween = [0.0]*len(key1) + for i in range ( 0, len(key1) ): + tween[i] = key1[i] + percentage * (key2[i] - key1[i]) + return tween + +# Calculates a transform that matches 2 points to 2 anchors +# by rotating and scaling (up or down) along the axis that is formed by +# a line between the two points. +def match( p1, p2, a1, a2 ): + x = 0 + y = 1 + # distances + dp = [ p2[x]-p1[x], p2[y]-p1[y] ] + da = [ a2[x]-a1[x], a2[y]-a1[y] ] + # angles + angle_p = math.atan2( dp[x], dp[y] ) + angle_a = math.atan2( da[x], da[y] ) + # radians + #rp = math.sqrt( dp[x]*dp[x] + dp[y]*dp[y] ) + #ra = math.sqrt( da[x]*da[x] + da[y]*da[y] ) + rp = math.hypot( dp[x], dp[y] ) + ra = math.hypot( da[x], da[y] ) + # scale + scale = ra / rp + # transforms in the order they are applied + t1 = Transform( "translate(%f,%f)"%(-p1[x],-p1[y]) ).matrix + #t2 = Transform( "rotate(%f)"%(-angle_p) ).matrix + #t3 = Transform( "scale(%f,%f)"%(scale,scale) ).matrix + #t4 = Transform( "rotate(%f)"%angle_a ).matrix + t2 = rotateTransform(-angle_p) + t3 = scale_transform( scale, scale ) + t4 = rotateTransform( angle_a ) + t5 = Transform( "translate(%f,%f)"%(a1[x],a1[y]) ).matrix + # transforms in the order they are multiplied + t = t5 + t = Transform(t) * Transform(t4) + t = Transform(t) * Transform(t3) + t = Transform(t) * Transform(t2) + t = Transform(t) * Transform(t1) + # return the combined transform + return t + + +def rotateTransform( a ): + return [[math.cos(a),-math.sin(a),0],[math.sin(a),math.cos(a),0]] + +def scale_transform( sx, sy ): + return [[sx,0,0],[0,sy,0]] + +if __name__ == '__main__': + BezierEnvelope().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/blobs/blobs.inx b/extensions/fablabchemnitz/blobs/blobs.inx new file mode 100644 index 00000000..f4d68fc6 --- /dev/null +++ b/extensions/fablabchemnitz/blobs/blobs.inx @@ -0,0 +1,32 @@ + + + Blobs Texture + fablabchemnitz.de.blobs + + + + 10 + true + 1000 + 1000 + + + + 10 + 50. + 0. + 0.3 + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/blobs/blobs.py b/extensions/fablabchemnitz/blobs/blobs.py new file mode 100644 index 00000000..0ab642e6 --- /dev/null +++ b/extensions/fablabchemnitz/blobs/blobs.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 + +# These two lines are only needed if you don't put the script directly into +# the installation directory +import math +import inkex +import random +from lxml import etree + +class Blobs(inkex.EffectExtension): + """ +Creates a random blob from a convex hull over n points. +The expected degree of the polygon is sqrt(n). The corners +are blunted by the blunt parameter. 0 means sharp. 1 will +result in loopy splines. + """ + def add_arguments(self, pars): + pars.add_argument("--pgsizep", type=inkex.Boolean, default=True, help="Default rectangle to page size?") + pars.add_argument('--num', type = int, default = 25, help = 'Number of random points to start with') + pars.add_argument('--blunt', type = float, default = 0.3, help = 'Bluntness of corners. Should be < 1') + pars.add_argument('--cave', type = float, default = 0.0, help = 'Concavity. Less blobby and more splatty') + pars.add_argument('--rx', type = int, default = 1000, help = 'Size of work area x') + pars.add_argument('--ry', type = int, default = 1000, help = 'Size of work area y') + pars.add_argument('--sz', type = float, default = 50., help = 'Size of a blob') + pars.add_argument('--nb', type = int, default = 10, help = 'Total number of blobs') + pars.add_argument("--Nmain", default='top', help="Active tab.") + + def effect(self): + global cave + if self.options.pgsizep: + svg = self.document.getroot() + rx = int(self.svg.unittouu(svg.get('width'))) + ry = int(self.svg.unittouu(svg.attrib['height'])) + else: + rx = self.options.rx + ry = self.options.ry + blunt = self.options.blunt + cave = self.options.cave + sz = self.options.sz + nb = self.options.nb + num = self.options.num + + # Get access to main SVG document element and get its dimensions. + svg = self.document.getroot() + + # Create a new layer. + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'Blob Layer') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + + ctrs = [(random.randrange(rx) , random.randrange(ry)) + for i in range(nb) ] + for ctr in ctrs : + points = [(random.gauss(ctr[0], sz) , random.gauss(ctr[1], sz)) + for i in range(num) ] + + px = hull(points) + pts = [points[px[i]] for i in range(len(px))] + + # Create path element + path = etree.Element(inkex.addNS('path','svg')) + path.set('style', str(inkex.Style({'fill':'#000000'}))) + pathstring = 'M ' + str(pts[0][0]) + ' ' + str(pts[0][1]) + ' ' + + for j in range(len(pts)): + k = (j+1) % len(pts) + kk = (j+2) % len(pts) + if j==0 : + (lasth, h1) = sHandles(pts[-1], pts[0], pts[1], blunt) + (h2, hnext) = sHandles(pts[j], pts[k], pts[kk], blunt) + pathstring += "C %f %f %f %f %f %f " % (h1[0], h1[1], + h2[0], h2[1], + pts[k][0], pts[k][1]) + h1 = hnext + + pathstring += 'Z' + path.set('d', pathstring) + layer.append(path) + +def sHandles(pre, pt, post, blunt): + '''I'm proud of this cute little construction for the + spline handles. No doubt someone has thought of it before + but, if not, its name is ACHC Andrew's Cute Handle + Construction. Note: no trig function calls.''' + try : + slope = (post[1] - pt[1]) / (post[0] - pt[0]) + except ZeroDivisionError : + slope = math.copysign(1E30 , post[1] - pt[1]) + lenpre = distance(pre, pt) + lenpost = distance(pt, post) + lenr = lenpre**2 / lenpost + locx = math.copysign(lenr / math.sqrt(1. + slope**2) , post[0] - pt[0]) + mark = (pre[0] - locx , pre[1] - locx*slope) + try : + markslope = (pt[1] - mark[1]) / (pt[0] - mark[0]) + except ZeroDivisionError : + markslope = math.copysign(1E30 , pt[1] - mark[1]) + prex = math.copysign(lenpre / math.sqrt(1. + markslope**2) , + pt[0] - mark[0]) + hpre = (pt[0] - prex*blunt , pt[1] - prex*markslope*blunt) + postx = prex*lenpost/lenpre + hpost = (pt[0] + postx*blunt , pt[1] + postx*markslope*blunt) + return (hpre, hpost) + +"""Blunt=0.3 makes pleasingly round, mostly convex blobs. 0.4 makes them more +concave. 0.6 - 1.0 they're getting more and more pointy. 2.0 - 10. and they +grow appendages like hot-air balloons. 0.1 makes the corners pretty sharp. +0.0 and it's down to the convex hulls that are the basis of the blobs, that +is, polygons""" + +def distance(a, b) : + return math.sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2 ) + +def hull(arg): + """Convex hull by Graham scan.""" + xarr, yarr = zip(* arg) + ymin = min(yarr) + ind = findall(yarr, lambda y: y == ymin) + if len(ind) > 1 : + xshort = [xarr[j] for j in ind] + xmin = min(xshort) + j = ind[xshort.index(xmin)] + ind = j + else : + ind = ind[0] + all = list(range(len(xarr))) + del all[ind] + all.sort(key=lambda i : (xarr[i] - xarr[ind]) / + math.sqrt((xarr[i] - xarr[ind])**2 + (yarr[i] - yarr[ind])**2), + reverse=True) + if len(all) < 3 : + all.insert(0, ind) + return all + ans = [ind] + for i in all : + if len(ans) == 1 : + ans.append(i) + else : + while rightTurn(ans[-2], ans[-1], i, arg) : + ans.pop() + ans.append(i) + + return ans + +def rightTurn(j, k, l, arg) : + '''Cross product: Ax*By - Ay*Bx = Cz ''' + ax = (arg[k][0] - arg[j][0]) + by = (arg[l][1] - arg[k][1]) + ay = (arg[k][1] - arg[j][1]) + bx = (arg[l][0] - arg[k][0]) + p = ax*by - ay*bx + dot = ax*bx + ay*by + cos = dot / math.sqrt((ax**2 + ay**2) * (bx**2 + by**2)) + crt = 1 - cave*2 + + if p <= 0 : + return cos < crt #We forgive right turns based on /cave/ + else : + return False + +def findall(a, f): + r = [] + for x, j in zip(a, range(len(a))) : + if f(x) : + r.append(j) + return r + +if __name__ == '__main__': + Blobs().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.inx b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.inx new file mode 100644 index 00000000..8a9953ab --- /dev/null +++ b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.inx @@ -0,0 +1,29 @@ + + + Blueprint Maker + fablabchemnitz.de.blueprint_maker + + + + + + + 1.000 + + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.py b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.py new file mode 100644 index 00000000..d0e26153 --- /dev/null +++ b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 + +import inkex +import copy + +class bluePrintMakerData(): + def __init__(self,effect): + self.effect=effect + self.stroke_units=effect.options.stroke_units + self.unit_factor=1.0 + self.set_units() + self.stroke_width=effect.options.stroke_width*self.unit_factor + self.palette=effect.options.palette + self.background_color=None + self.stroke_color=None + self.set_colors() + self.selected_nodes=[] + if len(effect.options.ids)==0: + self.selected_nodes=[effect.svg.getElementById(x) for x in effect.svg.get_ids()] + self.selected_nodes=[node for node in self.selected_nodes if effect.is_geometry(node)] + else: + self.selected_nodes=[y for x,y in effect.svg.selected.items()] + self.selected_nodes=[node for node in self.selected_nodes if effect.is_geometry(node,shapes=['path','g','rect','ellipse','perspective'])] + self.allowed_ids=[] + self.allowed_nodes=[] + self.set_objects() + + def set_units(self): + if self.stroke_units=='millimeters': + self.unit_factor=3.543 + if self.stroke_units=='centimeters': + self.unit_factor=35.433 + if self.stroke_units=='points': + self.unit_factor=1.25 + if self.stroke_units=='pixels': + self.unit_factor=1.0 + + def set_colors(self): + if self.palette=='blueprint': + self.background_color='#006fde' + self.stroke_color='#ffffff' + if self.palette=='black': + self.background_color='#000000' + self.stroke_color='#ffffff' + if self.palette=='white': + self.background_color='#ffffff' + self.stroke_color='#000000' + if self.palette=='laser': + self.background_color='#ffffff' + self.stroke_color='#ff0000' + + def set_objects(self): + for current_id in self.effect.svg.get_ids(): + node=self.effect.svg.getElementById(current_id) + if self.effect.is_geometry(node): + self.allowed_ids.append(current_id) + self.allowed_nodes.append(node) + +class BluePrintMaker(inkex.EffectExtension): + + def __init__(self): + inkex.Effect.__init__(self) + self.arg_parser.add_argument('-p', '--palette', help='Choose the colors...') + self.arg_parser.add_argument('-s', '--stroke_width', type=float, help='Stroke size...') + self.arg_parser.add_argument('-u', '--stroke_units', help='Choose the units...') + self.data=None + + def is_a_group(self, node): + data=False + if node.tag==inkex.addNS('g','svg'): + data=True + return data + + def is_geometry(self, node, shapes=['path','rect','ellipse','perspective']): + data=False + for s in shapes: + if node.tag==inkex.addNS(s,'svg'): + data=True + return data + + def change_page_settings(self): + namedview=self.svg.namedview + namedview.set('pagecolor',self.data.background_color) + namedview.set(inkex.addNS('pageopacity', 'inkscape'),'1') + namedview.set(inkex.addNS('pageshadow', 'inkscape'),'0') + namedview.set('bordercolor',self.data.stroke_color) + namedview.set('borderopacity','1') + return None + + def change_this_object(self,node): + styles=dict(inkex.Style.parse_str(node.get('style'))) + styles_copy=copy.deepcopy(styles) + styles_copy['stroke']=self.data.stroke_color + styles_copy['stroke_width']=self.data.stroke_width + styles_copy['stroke-opacity']='1' + styles_copy['fill']='none' + styles_copy['fill-opacity']='1' + styles_copy['opacity']='1' + node.set('style',str(inkex.Style(styles_copy))) + return None + + def iterate_on_objects(self,node=None): + if self.is_geometry(node): + self.change_this_object(node) + if self.is_a_group(node): + for current_node in list(node): + self.iterate_on_objects(current_node) + + def effect(self): + self.data=bluePrintMakerData(self) + self.change_page_settings() + for node in self.data.selected_nodes: + self.iterate_on_objects(node) + return None + +if __name__ == '__main__': + BluePrintMaker().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.inx b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.inx new file mode 100644 index 00000000..7a9a58d2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.inx @@ -0,0 +1,54 @@ + + + Circular Ground from Template + fablabchemnitz.de.circular_ground_from_template + + + ./templates/ + + + 45.0 + + + 30 + + + + 50 + + + + + + + + + + 3 + + + + 1 + + + + + + + + + + 255 + + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.py b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.py new file mode 100644 index 00000000..32c2f511 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.py @@ -0,0 +1,434 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2017, Ben Connors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import os +from math import sin, cos, acos, tan, radians, pi, sqrt, ceil, floor +import inkex +from lxml import etree + +__author__ = 'Ben Connors' +__credits__ = ['Ben Connors', 'Veronika Irvine', 'Jo Pol', 'Mark Shafer'] +__license__ = 'Simplified BSD' + +class Vector: + def __repr__(self): + return 'Vector(%.4f, %.4f)' % (self.dx,self.dy) + + def __hash__(self): + return hash((self.dx,self.dy)) + + def rotate(self,theta): + """ Rotate counterclockwise by theta.""" + return self.mag*Vector(cos(self.theta+theta), + sin(self.theta+theta), + _theta=self.theta+theta) + + def __mul__(self,other): + return Vector(self.dx*other,self.dy*other,_theta=self.theta) + + def __rmul__(self,other): + return self*other + + def __init__(self,dx,dy,_theta=None): + """ Create a vector with the specified components. + _theta should NOT be passed in normal use - this value is passed by + vector functions where the angle of the new vector is known in order + to eliminate that calculation. + """ + self.dx = float(dx) + self.dy = float(dy) + self.mag = sqrt(dx**2 + dy**2) + self.tuple = (dx,dy) + + ## Angle to positive X axis + if _theta == None: + _theta = acos(self.dx/self.mag) + self.theta = 2*pi-_theta if self.dy < 0 else _theta + else: + self.theta = _theta + + +class CircularGroundFromTemplate(inkex.EffectExtension): + + def unitToUu(self,param): + """ Convert units. + Converts a number in some units into the units used internally by + Inkscape. + + param is a string representing a number with units attached. An + example would be '3.8mm'. Any units supported by Inkscape + are supported by this function. + + This wrapper function catches changes made to the location + of the function between Inkscape versions. + """ + try: + return self.svg.unittouu(param) + except: + return inkex.unittouu(param) + + def loadFile(self): + """ Load the specification for the unit cell from the file given. + Note that the specification should be in the following format: + TYPE ROWS COLS + [x1,y1,x2,y2,x3,y3] [x4,y4,x5 ... + + And so on. The TYPE is always CHECKER and is ignored by this program. + ROWS specifies the height of the unit cell (i.e. max_y - min_y) + and COLS specifies the same for the width (i.e. max_x - min_x). + Note that this is not enforced when drawing the unit cell - points + may be outside this range. These values are used to determine the + distance between unit cells (i.e. unit cells may overlap). + """ + # Ensure that file exists and has the proper extension + if not self.options.file: + inkex.errormsg('You must specify a template file.') + exit() + self.options.file = self.options.file.strip() + if self.options.file == '': + inkex.errormsg('You must specify a template file.') + exit() + if not os.path.isfile(self.options.file): + inkex.errormsg('You have not specified a valid path for the template file.\n\nYour entry: '+self.options.file) + exit() + extension = os.path.splitext(self.options.file)[1] + if extension != '.txt': + inkex.errormsg('The file name must end with .txt.\n\nYour entry: '+self.options.file) + exit() + + data = [] + rows, cols = -1, -1 + with open(self.options.file,'r') as f: + for line in f: + line = line.strip() + ## If rows is not a positive integer, we're on the first line + if rows == -1: + tmp = line.split('\t') + _type,cols,rows = tmp[0],int(tmp[1]),int(tmp[2]) + else: + data.append([]) + for cell in line[1:-1].split(']\t['): + cell = cell.strip() + ## The pattern must be rotated 90 degrees clockwise. It's + ## simplest to just do that here + tmp = [float(n) for n in cell.split(',')] + data[-1].append([a for b in zip([rows-i for i in tmp[1::2]],[cols-i for i in tmp[::2]]) for a in b]) + return {'type': _type, 'rows': rows, 'cols': cols, 'data' : data} + + def line(self,points): + """ + Draw a line from point at (x1, y1) to point at (x2, y2). + Style of line is hard coded and specified by 's'. + """ + # define the motions + path = ('M%.4f,%.4fL' % tuple(points[0][:2])) + 'L'.join([('%f,%f' % tuple(a[:2])) for a in points[1:]]) + + # define the stroke style + s = {'stroke-linejoin': 'miter', + 'stroke-width': self.options.linewidth, + 'stroke-opacity': '1.0', + 'fill-opacity': '1.0', + 'stroke': self.options.linecolor, + 'stroke-linecap': 'round', + 'stroke-linejoin': 'round', + 'fill': 'none' + } + + + ## Attributes for new element + attribs = {'style':str(inkex.Style(s)), + 'd' : path} + + ## Add new element + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('path', 'svg'), attribs) + + def baseVectors(self,segments): + """ Create vectors for all vertices on the specified polygon.""" + ## Start at 12 o'clock + theta = pi/2 + ## Move clockwise + dtheta = -2*pi/segments + + vector = Vector(0,self.options.diameter/2) + vectors = [vector] + for i in range(1,segments): + vector = vector.rotate(dtheta) + vectors.append(vector) + return vectors + + def fuzzyEquality(self,a,b): + return (a-b <= 1e-8) + + def circleWrap(self,points,segments): + """ Wrap a grid around the origin. + <> is a list of 2- or 3-tuples. + In the case of 3-tuples, they should be laid out like: (x,y,name) + Whereas 2-tuples should eliminate the name portion. + Only one format may be passed; they may not be mixed. + x- and y- values are rounded to the nearest integer. + If more precision is desired, scale up the points before calling this function. + x-values should be within [0,segments) + Values not within range will be moved within range. + y-values must be greater than 0 + An error will be raised if a y-value is less than 0. + The 'name' portion is not touched by this function; it is merely + passed along. This may be used to identify points or groups of points. + <> is the inside radius (i.e. distance to origin from a point with + a y-value of 0). + <> is the number of segments (sides) of the polygon. + <> is the angle of the diagonal of the square approximation. It must be + somewhere on (0,pi/2). + """ + angle = self.options.angle + if angle <= 0 or angle >= pi/2: + raise ValueError('Angle must be in (0,pi/2)') + + vectors = self.baseVectors(segments) + theta = 2*pi/segments + + """ + Determine the coefficient to multiply the vectors by in order to deal + with a higher x-value. + With R being the large radius (radius to next y-value) and r being the + small radius (radius to current y-value): + + a^2 = r^2 (1 - cos(theta)) ## Cosine law + b^2 = R^2 (1 - cos(theta)) + + To get the most square-like trapezoid: + R - r = 0.5(a+b) + + Subbing in the equations for b^2 and a^2 yields the following lines. + """ + C = sqrt(2*(1-cos(theta))) + val = 2*tan(pi/2-angle) + coeff = (val+C)/(val-C) + diff = coeff-1 + + ## Sort points in order of increasing y-value. + named = False + if len(points[0]) == 3: + named = True + points = [(x,y,name) for x,y,name in sorted(points,key=lambda a: a[1])] + else: + points = [(x,y,None) for x,y in sorted(points,key=lambda a: a[1])] + + done = [] + cur_y = 0 + for point in points: + x,y,name = point + + ## Check constraints + if y < cur_y: + raise ValueError('Invalid point (%d,%d)' % (x,y)) + elif y >= cur_y+1: + ## Multiply vectors accordingly + delta = floor(y-cur_y) + vectors = [(coeff**delta)*v for v in vectors] + cur_y = floor(y) + + ## Wrap x-value to lie in the proper place + ## lazy + while x < 0: + x += segments + while x >= segments: + x -= segments + + if self.fuzzyEquality(y,int(y)) and self.fuzzyEquality(x,int(x)): + x = int(x) + ## Can do it the quick way + wx,wy = vectors[x].tuple + else: + ## Use vector rotation + ## Determine nearest vector (counterclockwise) + pointer = vectors[floor(x)] + ## Scale x and y to be within (0,1) + x -= int(x) + y -= int(y) + c = C*x ## This value is used a lot, cache it + ## Now the angle of rotation must be determined using cosine law + factor = 1 + if not self.fuzzyEquality(x,0): + ## x isn't equal to 0, must rotate vector + n2 = 1+c**2-2*c*cos((pi-theta)/2) + factor = sqrt(n2) + phi = acos((n2+1-c**2)/(2*factor)) + pointer = pointer.rotate(-phi) + ## Correct vector magnitude + pointer = (1+y*diff)*factor*pointer + wx,wy = pointer.tuple + if named: + done.append((wx,wy,name)) + else: + done.append((wx,wy)) + return done + + def createGround(self,unit,rows,cols,scale=1): + """ Return a lace ground. + + This function returns a list of points and corresponding lines that may + be transformed or passed to a drawing function (such as draw_image) in + order to draw a lace ground. + + unit is the pattern for the lace ground, in the format returned by + loadFile. + + rows and cols are integers and represent the number of horizontal repeats + and vertical repeats of the pattern, respectively. + + scale is an optional value that can be used to scale the pattern before it + is repeated. Note that this comes with some constraints - the + template's rows and cols after scaling (i.e. unit['rows']*scale) must + be an integer. For example, a template with 4 rows and 4 cols before + scaling may be scaled by any integer value above 1 and select values + between 1 and 0 (namely 0.25,0.5,0.75). A scale value of 'True' may be + passed if each repeat of the template should fit within a 1x1 square. + """ + data = unit['data'] + unit_rows = unit['rows'] + unit_cols = unit['cols'] + if scale <= 0: + raise ValueError('Scale must be greater than zero') + elif scale != 1: + ## The user wants to scale the template + _data = [] + for row in data: + _row = [] + for c in row: + if scale == True: + _row.append([i for n in zip([a/unit_cols for a in c[::2]],[a/unit_rows for a in c[1::2]]) for i in n]) + else: + _row.append([a*scale for a in c]) + _data.append(_row) + data = _data + unit_rows *= scale + unit_cols *= scale + ## Catching invalid input + if not self.fuzzyEquality(unit_rows,int(unit_rows)): + raise ValueError('Scale factor must result in an integer value for template rows') + if not self.fuzzyEquality(unit_cols,int(unit_cols)): + raise ValueError('Scale factor must result in an integer value for template cols') + unit_rows = int(unit_rows) + unit_cols = int(unit_cols) + line_num = 0 + points = [] + for c in range(cols): + ## Do each column first + x = c*unit_cols + for r in range(rows): + y = r*unit_rows + for row in data: + for x1,y1,x2,y2,x3,y3 in row: + ## In order to draw lines in the correct order, an extra + ## point must be added + p1 = (x+x1,y+y1,'%09da,1'%line_num) + p2 = (x+x2,y+y2,'%09da,2'%line_num) + p1a = (x+x1,y+y1,'%09db,1'%line_num) + p3 = (x+x3,y+y3,'%09db,3'%line_num) + points.extend([p1,p2,p1a,p3]) + line_num += 1 + return points + + def draw(self, points,line=lambda a: None): + """ Draw the image. + points - a list of points, as returned by createGround. + line - a function that draws a line connecting all points in the passed list in order. + """ + groups = {} + ## This loop scales points, sorts them into groups, and gets image parameters + xs = [] + ys = [] + for x,y,n in points: + xs.append(x) + ys.append(y) + sn = n.split(',',1) + ident = 0 + if len(sn) == 2: + ident = int(sn[1]) + n = sn[0] + if n not in groups: + groups[n] = [] + groups[n].append((x,y,ident)) + max_x = max(xs) + min_x = min(xs) + max_y = max(ys) + min_y = min(ys) + ## Sort all groups to draw lines in order + for group in groups: + groups[group].sort(key=lambda a:a[2]) + ## Sort all groups to draw groups in order + groups = sorted([(name,pts) for name,pts in groups.items()],key=lambda a:a[0]) + ## Draw lines + for name,pts in groups: + _pts = [] + for p in pts: + _pts.append([p[0]-min_x,p[1]-min_y]) + self.line(_pts) + + def add_arguments(self, pars): + pars.add_argument('--file') + pars.add_argument('--angle', type=int) + pars.add_argument('--cols', type=int) + pars.add_argument('--diameter', type=float) + pars.add_argument('--diamunits') + pars.add_argument('--rows', type=int) + pars.add_argument('--linewidth', type=float) + pars.add_argument('--lineunits') + pars.add_argument('--linecolor', type=inkex.Color) + + def effect(self): + ## Load the file + unit = self.loadFile() + self.options.linecolor = self.options.linecolor.to_rgb() + + ## Change the input to universal units + self.options.diameter = self.unitToUu(str(self.options.diameter)+self.options.diamunits) + self.options.linewidth = self.unitToUu(str(self.options.linewidth)+self.options.lineunits) + + ## Convert the angle + self.options.angle = radians(self.options.angle) + + ## Ensure no y-values are below 0 + min_y = min([b for a in [i[1::2] for row in unit['data'] for i in row] for b in a]) + if min_y < 0: + data = [] + for row in unit['data']: + _row = [] + for c in row: + _row.append([a for b in zip(c[::2],[i-min_y for i in c[1::2]]) for a in b]) + data.append(_row) + unit['data'] = data + + ## Create the ground coordinates + points = self.createGround(unit,self.options.rows,self.options.cols) + + ## Wrap it around a polygon + points = self.circleWrap(points,self.options.cols*unit['cols']) + + ## Draw everything + self.draw(points,line=lambda a: self.line(a)) + +if __name__ == '__main__': + CircularGroundFromTemplate().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/ground_from_template.inx b/extensions/fablabchemnitz/bobbinlace/ground_from_template.inx new file mode 100644 index 00000000..c508542d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/ground_from_template.inx @@ -0,0 +1,60 @@ + + + Ground From Template + fablabchemnitz.de.ground_from_template + + ./templates/ + + + 45.0 + + + 5.0 + + + + + + + + + + + 50 + + + + + + + + + + 50 + + + + 1 + + + + + + + + + + 255 + + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/bobbinlace/ground_from_template.py b/extensions/fablabchemnitz/bobbinlace/ground_from_template.py new file mode 100644 index 00000000..696115e7 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/ground_from_template.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2017, Veronika Irvine +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice,# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import os +from math import sin, cos, radians, ceil +from lxml import etree +import inkex + +__author__ = 'Veronika Irvine' +__credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer'] +__license__ = 'Simplified BSD' + +class GroundFromTemplate(inkex.EffectExtension): + + def loadFile(self): + # Ensure that file exists and has the proper extension + if not self.options.file: + inkex.errormsg('You must specify a template file.') + exit() + self.options.file = self.options.file.strip() + if self.options.file == '': + inkex.errormsg('You must specify a template file.') + exit() + if not os.path.isfile(self.options.file): + inkex.errormsg('You have not specified a valid path for the template file.\n\nYour entry: '+self.options.file) + exit() + extension = os.path.splitext(self.options.file)[1] + if extension != '.txt': + inkex.errormsg('The file name must end with .txt.\n\nYour entry: '+self.options.file) + exit() + + data = [] + rowCount = 0 + colCount = 0 + with open(self.options.file,'r') as f: + first = True + for line in f: + if first: + # first line of file gives row count and column count + first = False + line = line.strip() + temp = line.split('\t') + type = temp[0] + rowCount = int(temp[1]) + colCount = int(temp[-1]) + + else: + line = line.strip() + line = line.lstrip('[') + line = line.rstrip(']') + rowData = line.split(']\t[') + data.append([]) + for cell in rowData: + cell = cell.strip() + data[-1].append([float(num) for num in cell.split(',')]) + + return {'type':type, 'rowCount':rowCount, 'colCount':colCount, 'data':data} + + def line(self, x1, y1, x2, y2): + """ + Draw a line from point at (x1, y1) to point at (x2, y2). + Style of line is hard coded and specified by 's'. + """ + # define the motions + path = 'M %s,%s L %s,%s' %(x1,y1,x2,y2) + + # define the stroke style + s = {'stroke-linejoin': 'miter', + 'stroke-width': self.options.linewidth, 'stroke-opacity': '1.0', + 'fill-opacity': '1.0', 'stroke': self.options.linecolor, + 'stroke-linecap': 'round', 'stroke-linejoin': 'round', 'fill': 'none' + } + + # create attributes from style and path + attribs = {'style':str(inkex.Style(s)), 'd':path} + + # insert path object into current layer + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('path', 'svg'), attribs) + + def draw(self, data, rowCount, colCount): + a = self.options.distance + theta = self.options.angle + deltaX = a*sin(theta) + deltaY = a*cos(theta) + maxRows = ceil(self.options.height / deltaY) + maxCols = ceil(self.options.width / deltaX) + + x = 0.0 + y = 0.0 + repeatY = 0 + repeatX = 0 + + while repeatY * rowCount < maxRows: + x = 0.0 + repeatX = 0 + + while repeatX * colCount < maxCols: + + for row in data: + for coords in row: + x1 = x + coords[0]*deltaX + y1 = y + coords[1]*deltaY + x2 = x + coords[2]*deltaX + y2 = y + coords[3]*deltaY + x3 = x + coords[4]*deltaX + y3 = y + coords[5]*deltaY + + self.line(x1,y1,x2,y2) + self.line(x1,y1,x3,y3) + + repeatX += 1 + x += deltaX * colCount + + repeatY += 1 + y += deltaY * rowCount + + def add_arguments(self, pars): + pars.add_argument('-f', '--file', help='File containing lace ground description') + pars.add_argument('--angle', type=float) + pars.add_argument('--distance', type=float) + pars.add_argument('--pinunits') + pars.add_argument('--width', type=float) + pars.add_argument('--patchunits') + pars.add_argument('--height', type=float) + pars.add_argument('--linewidth', type=float) + pars.add_argument('--lineunits') + pars.add_argument('--linecolor', type=inkex.Color) + + def effect(self): + result = self.loadFile() + + # Convert input to universal units + self.options.width = self.svg.unittouu(str(self.options.width)+self.options.patchunits) + self.options.height = self.svg.unittouu(str(self.options.height)+self.options.patchunits) + self.options.linewidth = self.svg.unittouu(str(self.options.linewidth)+self.options.lineunits) + self.options.distance = self.svg.unittouu(str(self.options.distance)+self.options.pinunits) + + # Users expect distance to be the vertical distance between footside pins + # (vertical distance between every other row) but in the script we use it + # as the diagonal distance between grid points + # therefore convert distance based on the angle chosen + self.options.angle = radians(self.options.angle) + self.options.distance = self.options.distance/(2.0*cos(self.options.angle)) + + # Draw a ground based on file description and user inputs + self.options.linecolor = self.options.linecolor.to_rgb() + # For now, assume style is Checker but could change in future + self.draw(result['data'],result['rowCount'],result['colCount']) + +if __name__ == '__main__': + GroundFromTemplate().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/polar_grid.inx b/extensions/fablabchemnitz/bobbinlace/polar_grid.inx new file mode 100644 index 00000000..0ecd631c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/polar_grid.inx @@ -0,0 +1,71 @@ + + + Polar Grid + fablabchemnitz.de.polar_grid + + + + 45.0 + + + 180 + + + + + + + + + + + + + + + + + 160 + + + + + + + + + + 100 + + + + + + + + + + 0.5 + + + + + + + + + + 255 + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/polar_grid.py b/extensions/fablabchemnitz/bobbinlace/polar_grid.py new file mode 100644 index 00000000..1353be5c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/polar_grid.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +# Copyright 2015 Jo Pol +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. + +from __future__ import division +from math import pi, sin, cos, tan, radians +from lxml import etree + +# We will use the inkex module with the predefined +# Effect base class. +import inkex + +__author__ = 'Jo Pol' +__credits__ = ['Veronika Irvine','Jo Pol','Mark Shafer'] +__license__ = 'GPLv3' + +class PolarGrid(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('-a', '--angle', type=float, default=45, help='grid angle (degrees)') + pars.add_argument('-d', '--dots', type=int, default=180, help='number of dots on a circle') + pars.add_argument('-o', '--outerDiameter', type=float, default=160, help='outer diameter (mm)') + pars.add_argument('-i', '--innerDiameter', type=float, default=100, help='minimum inner diameter (mm)') + pars.add_argument('-f', '--fill', type=inkex.Color, default='-6711040', help='dot color') + pars.add_argument('-A', '--alignment', default='outside', help='exact diameter on [inside|outside]') + pars.add_argument('-s', '--size', type=float, default=0.5, help='dot diameter (mm)') + pars.add_argument('-v', '--variant', default='', help='omit rows to get [|rectangle|hexagon1]') + pars.add_argument('-cu', '--circleDiameterUnits', default = 'mm', help = 'Circle diameter is measured in these units') + pars.add_argument('-du', '--dotUnits', default = 'px', help = 'Dot diameter is measured in these unites') + + def group(self, diameter): + """ + Create a group labeled with the diameter + """ + label = 'diameter: {0:.2f} mm'.format(diameter) + attribs = {inkex.addNS('label', 'inkscape'):label} + return etree.SubElement(self.gridContainer, inkex.addNS('g', 'svg'), attribs) + + def dots(self, diameter, circleNr, group): + """ + Draw dots on a grid circle + """ + offset = (circleNr % 2) * 0.5 + for dotNr in range (0, self.options.dots): + a = (dotNr + offset) * self.alpha + x = (diameter / 2.0) * cos(a) + y = (diameter / 2.0) * sin(a) + attribs = {'style':self.dotStyle, 'cx':str(x * self.circleScale), 'cy':str(y * self.circleScale), 'r':self.dotR} + etree.SubElement(group, inkex.addNS('circle', 'svg'), attribs) + + def iterate(self, diameter, circleNr): + """ + Create a group with a ring of dots. + Returns half of the arc length between the dots + which becomes the distance to the next ring. + """ + group = self.group(diameter) + self.dots(diameter, circleNr, group) + self.generatedCircles.append(group) + return diameter * self.change + + def generate(self): + """ + Generate rings with dots, either inside out or outside in + """ + circleNr = 0 + flag_error = False + minimum = 2 * self.options.size * self.options.dots /pi + if minimum < self.options.innerDiameter: + minimum = self.options.innerDiameter + else: + flag_error = True + if self.options.alignment == 'outside': + diameter = self.options.outerDiameter + while diameter > minimum: + diameter -= self.iterate(diameter, circleNr) + circleNr += 1 + else: + diameter = minimum + while diameter < self.options.outerDiameter: + diameter += self.iterate(diameter, circleNr) + circleNr += 1 + # Display message + if flag_error: + # Leave message on top + font_height = 8 + text_style = { 'font-size': str(font_height), + 'font-family': 'sans-serif', + 'text-anchor': 'middle', + 'text-align': 'center', + 'fill': '#000000' } + text_atts = {'style':str(inkex.Style(text_style)), + 'x': '0', 'y': '0'} + text = etree.SubElement(self.gridContainer, 'text', text_atts) + text.text = "Dots overlap. inner changed to %4.1f" % (minimum) + + def removeGroups(self, start, increment): + """ + Remove complete rings with dots + """ + for i in range(start, len(self.generatedCircles), increment): + self.svg.get_current_layer().remove(self.generatedCircles[i]) + + def removeDots(self, i, offset, step): + """ + Remove dots from one circle + """ + group = self.generatedCircles[i] + dots = list(group) + start = len(dots) - 1 - offset + for j in range(start, -1, 0-step): + group.remove(dots[j]) + + def computations(self, angle): + self.alpha = radians(360.0 / self.options.dots) + correction = pi / (4 * self.options.dots) + correction *= tan(angle*0.93) + self.change = tan(angle - correction) * pi / self.options.dots + + def effect(self): + """ + Effect behaviour. + Overrides base class' method and draws something. + """ + + # constants + self.dotStyle = str(inkex.Style({'fill': self.options.fill.to_rgb(),'stroke':'none'})) + self.dotScale = self.svg.unittouu("1" + self.options.dotUnits) + self.dotR = str(self.options.size * (self.dotScale/2)) + self.circleScale = self.svg.unittouu("1" + self.options.circleDiameterUnits) + self.computations(radians(self.options.angle)) + + # processing variables + self.generatedCircles = [] + self.gridContainer = self.svg.get_current_layer() + + self.generate() + + if self.options.variant == 'rectangle': + self.removeGroups(1, 2) + elif self.options.variant == 'hexagon1': + self.removeGroups(0, 3) + elif self.options.variant == 'hexagon2' or self.options.variant == 'snow2': + for i in range(0, len(self.generatedCircles), 1): + self.removeDots(i, (((i%2)+1)*2)%3, 3) + elif self.options.variant == 'hexagon3': + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, (i//2+1)%2, 2) + elif self.options.variant == 'hexagon4': + self.removeGroups(0, 4) + elif self.options.variant == 'hexagon5' or self.options.variant == 'snow1': + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, 1, 2) + + self.dotStyle = str(inkex.Style({'fill': 'none','stroke':self.options.fill.to_rgb(),'stroke-width':0.7})) + self.dotR = str((((self.options.innerDiameter * pi) / self.options.dots) / 2) * self.dotScale) + self.generatedCircles = [] + if self.options.variant == 'snow2': + self.options.dots = self.options.dots // 3 + self.computations(radians(self.options.angle)) + self.generate() + elif self.options.variant == 'snow1': + self.generate() + self.removeGroups(1, 2) + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, i%4, 2) + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, (i+1)%2, 2) + for i in range(2, len(self.generatedCircles), 4): + self.removeDots(i, 0, self.options.dots) + +if __name__ == '__main__': + PolarGrid().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/regular_grid.inx b/extensions/fablabchemnitz/bobbinlace/regular_grid.inx new file mode 100644 index 00000000..96fc0f31 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/regular_grid.inx @@ -0,0 +1,60 @@ + + + Regular Grid + fablabchemnitz.de.regular_grid + + + + + 45.0 + + + 5.0 + + + + + + + + + + + 50 + + + + + + + + + + 50 + + + + 2 + + + + + + + + + + 255 + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/regular_grid.py b/extensions/fablabchemnitz/bobbinlace/regular_grid.py new file mode 100644 index 00000000..3e54d0b4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/regular_grid.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2017, Veronika Irvine +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from math import sin, cos, radians, ceil +import inkex +from lxml import etree + +__author__ = 'Veronika Irvine' +__credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer'] +__license__ = 'Simplified BSD' + +class RegularGrid(inkex.EffectExtension): + def circle(self, x, y, r, fill): + # define the stroke style + s = {'fill': fill} + + # create attributes from style and define path + attribs = {'style':str(inkex.Style(s)), + 'cx':str(x), + 'cy':str(y), + 'r':str(r)} + + # insert path object into current layer + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('circle', 'svg'), attribs) + + def drawDot(self, x, y): + self.circle(x, y, self.options.dotwidth, self.options.dotcolor) + + def draw(self): + + a = self.options.distance + theta = self.options.angle + + hgrid = a*sin(theta); + vgrid = a*cos(theta) + rows = int(ceil(self.options.height / vgrid)) + cols = int(ceil(self.options.width / hgrid)) + y = 0.0 + + for r in range(rows): + x = 0.0 + if (r % 2 == 1): + x += hgrid + + for c in range(ceil(cols/2)): + self.drawDot(x, y) + x += 2.0*hgrid; + + y += vgrid; + + def add_arguments(self, pars): + pars.add_argument('--angle', type=float) + pars.add_argument('--distance', type=float) + pars.add_argument('--pinunits') + pars.add_argument('--width', type=float) + pars.add_argument('--patchunits') + pars.add_argument('--height', type=float) + pars.add_argument('--dotwidth', type=float) + pars.add_argument('--dotunits') + pars.add_argument('--dotcolor', type=inkex.Color) + + def effect(self): + """ + Effect behaviour. + Overrides base class' method and draws something. + """ + # Convert user input to universal units + self.options.width = self.svg.unittouu(str(self.options.width)+self.options.patchunits) + self.options.height = self.svg.unittouu(str(self.options.height)+self.options.patchunits) + self.options.distance = self.svg.unittouu(str(self.options.distance)+self.options.pinunits) + # Convert from diameter to radius + self.options.dotwidth = self.svg.unittouu(str(self.options.dotwidth)+self.options.dotunits)/2 + # Users expect distance to be the vertical distance between footside pins + # (vertical distance between every other row) but in the script we use it + # as as diagonal distance between grid points + # therefore convert distance based on the angle chosen + self.options.angle = radians(self.options.angle) + self.options.distance = self.options.distance/(2.0*cos(self.options.angle)) + + # Draw a grid of dots based on user inputs + self.options.dotcolor = self.options.dotcolor.to_rgb() + self.draw() + +if __name__ == '__main__': + RegularGrid().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.png b/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.png new file mode 100644 index 00000000..acd38aef Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.txt b/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.txt new file mode 100644 index 00000000..48d61639 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.txt @@ -0,0 +1,2 @@ +CHECKER 1 1 +[0,0,1,0,-1,1] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.png b/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.png new file mode 100644 index 00000000..5ff8782f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.txt new file mode 100644 index 00000000..17f40db8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.txt @@ -0,0 +1,3 @@ +CHECKER 2 1 +[0,0,1,0,0,1] +[0,1,-1,1,0,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.png b/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.png new file mode 100644 index 00000000..32e66ce5 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.txt new file mode 100644 index 00000000..b3f6a7b8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.txt @@ -0,0 +1,3 @@ +CHECKER 2 2 +[0,0,1,0,-1,0] [1,0,0,1,2,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.png b/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.png new file mode 100644 index 00000000..6b3be644 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.txt new file mode 100644 index 00000000..8f22cfe1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.txt @@ -0,0 +1,3 @@ +CHECKER 2 2 +[0,0,1,0,-1,1] [1,0,2,0,1,1] +[1,1,0,2,1,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.png new file mode 100644 index 00000000..ccb6225d Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.txt new file mode 100644 index 00000000..7bf36072 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,3,0,1,1] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,3,1,1,2] [3,1,2,2,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.png new file mode 100644 index 00000000..22aef0ae Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.txt new file mode 100644 index 00000000..990f4a3b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.png new file mode 100644 index 00000000..d3daaffa Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.txt new file mode 100644 index 00000000..ee056568 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.png new file mode 100644 index 00000000..8720da49 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.txt new file mode 100644 index 00000000..0d588352 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,1,2,3,2] [3,1,2,1,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.png new file mode 100644 index 00000000..1b63bbca Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.txt new file mode 100644 index 00000000..d3179977 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,3,2,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.png new file mode 100644 index 00000000..7e9f4643 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.txt new file mode 100644 index 00000000..d7e3b97f --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.png b/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.png new file mode 100644 index 00000000..3ac3a6cd Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.txt b/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.txt new file mode 100644 index 00000000..16b89fcf --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.txt @@ -0,0 +1,4 @@ +CHECKER 3 3 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,1,2,3,2] +[0,2,1,2,-1,2] [1,2,2,2,0,3] [2,2,1,3,3,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.png b/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.png new file mode 100644 index 00000000..cd268ec8 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.txt b/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.txt new file mode 100644 index 00000000..485f98b0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.txt @@ -0,0 +1,3 @@ +CHECKER 3 3 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,2,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.png new file mode 100644 index 00000000..820c6832 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.txt new file mode 100644 index 00000000..1ff626d0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.png new file mode 100644 index 00000000..739ddf8e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.txt new file mode 100644 index 00000000..074d0c73 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_101.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_101.png new file mode 100644 index 00000000..76beff76 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_101.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_101.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_101.txt new file mode 100644 index 00000000..d8becdf0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_101.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,0,4,1,3] [2,2,3,2,1,3] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.png new file mode 100644 index 00000000..1e93c658 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.txt new file mode 100644 index 00000000..952e612c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [3,1,2,2,3,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.png new file mode 100644 index 00000000..bbf76154 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.txt new file mode 100644 index 00000000..ece15f77 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,2] [3,0,2,0,3,2] +[1,1,0,2,2,2] +[0,2,0,4,1,3] [2,2,3,2,1,3] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.png new file mode 100644 index 00000000..2fb68abe Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.txt new file mode 100644 index 00000000..8f19ae5d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,2] [3,0,2,0,3,2] +[1,1,0,2,1,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.png new file mode 100644 index 00000000..fb40d23a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.txt new file mode 100644 index 00000000..44b88b41 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,2] [3,0,2,0,3,2] +[1,1,1,2,2,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.png new file mode 100644 index 00000000..1331742f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.txt new file mode 100644 index 00000000..a953d5e2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,2] [2,0,2,2,3,1] [3,0,2,0,3,1] +[3,1,2,2,3,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.png new file mode 100644 index 00000000..13b0eb42 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.txt new file mode 100644 index 00000000..9d51cbba --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.png new file mode 100644 index 00000000..bad38b19 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.txt new file mode 100644 index 00000000..ad36e4e0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.png new file mode 100644 index 00000000..d4dad84e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.txt new file mode 100644 index 00000000..72311f1c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.png new file mode 100644 index 00000000..0c2b80bb Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.txt new file mode 100644 index 00000000..4f15e228 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,1,2,2,2] [2,1,1,1,2,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.png new file mode 100644 index 00000000..9cf800f4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.txt new file mode 100644 index 00000000..81e90a5b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.png new file mode 100644 index 00000000..44622677 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.txt new file mode 100644 index 00000000..2bf6b359 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.png new file mode 100644 index 00000000..ca2647e7 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.txt new file mode 100644 index 00000000..48adeede --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.png new file mode 100644 index 00000000..a866db2f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.txt new file mode 100644 index 00000000..a7e2d201 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,3,0,2,2] [3,0,4,0,3,1] +[3,1,3,2,4,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.png new file mode 100644 index 00000000..2b25854e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.txt new file mode 100644 index 00000000..9656dda5 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.png new file mode 100644 index 00000000..c205e008 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.txt new file mode 100644 index 00000000..742ec2dc --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.png new file mode 100644 index 00000000..82773d9a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.txt new file mode 100644 index 00000000..eba8c00d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.png new file mode 100644 index 00000000..c55ebb44 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.txt new file mode 100644 index 00000000..9b7614ad --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.png new file mode 100644 index 00000000..146b85db Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.txt new file mode 100644 index 00000000..b3dfe8d4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,3,0,2,2] [3,0,4,0,3,2] +[1,1,0,2,1,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.png new file mode 100644 index 00000000..8e2b5d17 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.txt new file mode 100644 index 00000000..78548e75 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,2] +[1,1,1,2,2,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.png new file mode 100644 index 00000000..8a4e4cb4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.txt new file mode 100644 index 00000000..208a7900 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.png new file mode 100644 index 00000000..e90eac36 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.txt new file mode 100644 index 00000000..dbf9d6e8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,2] +[1,1,0,2,2,2] +[0,2,-1,2,1,3] [2,2,1,3,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.png new file mode 100644 index 00000000..df07a838 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.txt new file mode 100644 index 00000000..85e89085 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,3,1] [3,0,4,0,3,1] +[3,1,2,2,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.png new file mode 100644 index 00000000..e35b83ce Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.txt new file mode 100644 index 00000000..78b14628 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.txt @@ -0,0 +1,4 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,2,2] [3,0,4,0,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_124.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_124.png new file mode 100644 index 00000000..0af4861f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_124.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_124.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_124.txt new file mode 100644 index 00000000..4b92ac35 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_124.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.png new file mode 100644 index 00000000..d9ceeea0 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.txt new file mode 100644 index 00000000..2d3ff519 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,1,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.png new file mode 100644 index 00000000..361d5449 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.txt new file mode 100644 index 00000000..92f30cfa --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,3,0,2,2] [3,0,4,0,3,1] +[3,1,3,2,4,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_128.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_128.png new file mode 100644 index 00000000..c5b70fed Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_128.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_128.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_128.txt new file mode 100644 index 00000000..aefd200c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_128.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.png new file mode 100644 index 00000000..f514ce04 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.txt new file mode 100644 index 00000000..4936945a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.png new file mode 100644 index 00000000..397193b7 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.txt new file mode 100644 index 00000000..1854a7fb --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,2,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.png new file mode 100644 index 00000000..a371cfac Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.txt new file mode 100644 index 00000000..0158ec12 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.png new file mode 100644 index 00000000..fcd2d4b8 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.txt new file mode 100644 index 00000000..78723e9f --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.png new file mode 100644 index 00000000..a4ae8c6f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.txt new file mode 100644 index 00000000..363c063e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.png new file mode 100644 index 00000000..389e6f07 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.txt new file mode 100644 index 00000000..02da742d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_134.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_134.png new file mode 100644 index 00000000..4927beef Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_134.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_134.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_134.txt new file mode 100644 index 00000000..ae3c3ccc --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_134.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_135.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_135.png new file mode 100644 index 00000000..2b4adb3e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_135.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_135.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_135.txt new file mode 100644 index 00000000..9529d0de --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_135.txt @@ -0,0 +1,4 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,2,2] [3,0,4,0,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.png new file mode 100644 index 00000000..49b438d1 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.txt new file mode 100644 index 00000000..2ffadf90 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,3,1] [3,0,4,0,3,1] +[3,1,2,2,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.png new file mode 100644 index 00000000..b782bb28 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.txt new file mode 100644 index 00000000..0341ff8e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.png new file mode 100644 index 00000000..b65039b6 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.txt new file mode 100644 index 00000000..172d3359 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.png new file mode 100644 index 00000000..f9b33fdb Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.txt new file mode 100644 index 00000000..d01aa16a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.png new file mode 100644 index 00000000..723aa627 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.txt new file mode 100644 index 00000000..814505a9 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [2,1,3,1,1,1] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.png new file mode 100644 index 00000000..cc956fb0 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.txt new file mode 100644 index 00000000..df058461 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.png new file mode 100644 index 00000000..cb97b954 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.txt new file mode 100644 index 00000000..48742b11 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,1,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.png new file mode 100644 index 00000000..5c45e729 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.txt new file mode 100644 index 00000000..4774afdf --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.png new file mode 100644 index 00000000..624d5e41 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.txt new file mode 100644 index 00000000..2da23a68 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.png new file mode 100644 index 00000000..d333ffda Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.txt new file mode 100644 index 00000000..8308e8b8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_146.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_146.png new file mode 100644 index 00000000..44092ad7 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_146.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_146.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_146.txt new file mode 100644 index 00000000..0ee845d5 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_146.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,3,2,4,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.png new file mode 100644 index 00000000..8d6b9553 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.txt new file mode 100644 index 00000000..d5349dde --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.png new file mode 100644 index 00000000..1d7e5297 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.txt new file mode 100644 index 00000000..c7c6021a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.png new file mode 100644 index 00000000..0355bf26 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.txt new file mode 100644 index 00000000..b3f7c2ed --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.png new file mode 100644 index 00000000..3c604b1d Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.txt new file mode 100644 index 00000000..63492503 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,0,1,2,1] [2,0,1,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,3,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,1,3,2,3] [3,2,4,2,2,2] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.png new file mode 100644 index 00000000..617cfc41 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.txt new file mode 100644 index 00000000..6d40e323 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.png new file mode 100644 index 00000000..54014045 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.txt new file mode 100644 index 00000000..33191e11 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.png new file mode 100644 index 00000000..6b208151 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.txt new file mode 100644 index 00000000..df265180 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.png new file mode 100644 index 00000000..57c7e4e2 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.txt new file mode 100644 index 00000000..28e02615 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.png new file mode 100644 index 00000000..844d24bf Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.txt new file mode 100644 index 00000000..40980c26 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.png new file mode 100644 index 00000000..145952c4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.txt new file mode 100644 index 00000000..c06da6ab --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.png new file mode 100644 index 00000000..7807af49 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.txt new file mode 100644 index 00000000..9e80bf1a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.png new file mode 100644 index 00000000..531ebea1 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.txt new file mode 100644 index 00000000..b29ed789 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.png new file mode 100644 index 00000000..4c94ac12 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.txt new file mode 100644 index 00000000..5e97b681 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.png new file mode 100644 index 00000000..21f7ae8d Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.txt new file mode 100644 index 00000000..1649a548 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.png new file mode 100644 index 00000000..9571d307 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.txt new file mode 100644 index 00000000..ae31c8ea --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.png new file mode 100644 index 00000000..85c087db Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.txt new file mode 100644 index 00000000..46180c2c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,3,2,4,2] +[0,2,1,2,-1,2] [1,2,2,2,1,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.png new file mode 100644 index 00000000..e2973411 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.txt new file mode 100644 index 00000000..c5ecb058 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,1,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.png new file mode 100644 index 00000000..2d4df298 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.txt new file mode 100644 index 00000000..10bd4682 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,2] [3,1,3,3,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_165.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_165.png new file mode 100644 index 00000000..04b1037b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_165.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_165.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_165.txt new file mode 100644 index 00000000..dc9e6b48 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_165.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,2,2] [3,1,3,3,4,2] +[0,2,0,4,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_166.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_166.png new file mode 100644 index 00000000..9f6400bb Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_166.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_166.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_166.txt new file mode 100644 index 00000000..0553bbad --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_166.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,1,2,2,2] [3,1,3,3,4,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.png new file mode 100644 index 00000000..e3c75191 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.txt new file mode 100644 index 00000000..16f6a94c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,3] [3,1,2,2,3,2] +[0,2,0,4,1,3] [2,2,3,2,3,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.png new file mode 100644 index 00000000..f45c6482 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.txt new file mode 100644 index 00000000..fe441abe --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,0,2,1,3] [3,1,4,1,2,2] +[0,2,-1,3,0,4] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.png new file mode 100644 index 00000000..2825ee26 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.txt new file mode 100644 index 00000000..35a0f3c3 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,3] +[0,2,-1,3,0,4] [1,2,0,2,1,3] [2,2,1,2,1,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.png new file mode 100644 index 00000000..e0c74c24 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.txt new file mode 100644 index 00000000..ebacc6e0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.png new file mode 100644 index 00000000..82e3160e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.txt new file mode 100644 index 00000000..5d8a089e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,0,2,1,3] [3,1,4,1,3,2] +[0,2,-1,2,0,4] [2,2,1,3,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.png new file mode 100644 index 00000000..2b067f35 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.txt new file mode 100644 index 00000000..ac0edf89 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,1,3,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,4] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_172.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_172.png new file mode 100644 index 00000000..a2f77ab4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_172.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_172.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_172.txt new file mode 100644 index 00000000..0a75642a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_172.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,1,2,2,2] [3,1,3,3,4,2] +[0,2,-1,3,0,4] [1,2,0,2,1,3] [2,2,1,2,1,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.png new file mode 100644 index 00000000..7ca84b4a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.txt new file mode 100644 index 00000000..5a472f73 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,4] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.png new file mode 100644 index 00000000..d6c4c90e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.txt new file mode 100644 index 00000000..c0b1a746 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,3] [3,1,2,2,4,2] +[0,2,-1,3,0,4] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.png new file mode 100644 index 00000000..c984bfff Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.txt new file mode 100644 index 00000000..3c9062ac --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,4] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.png new file mode 100644 index 00000000..7bb40ee6 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.txt new file mode 100644 index 00000000..1429d3d8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,4] [2,2,1,3,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.png new file mode 100644 index 00000000..e182bc18 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.txt new file mode 100644 index 00000000..f44e2d21 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,3] +[0,2,-1,3,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.png new file mode 100644 index 00000000..0a41ea95 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.txt new file mode 100644 index 00000000..6e20e133 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,3] [3,1,3,2,4,2] +[0,2,-1,2,0,4] [2,2,1,3,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.png new file mode 100644 index 00000000..df45541f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.txt new file mode 100644 index 00000000..37ea2431 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,3] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.png new file mode 100644 index 00000000..77deb5fd Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.txt new file mode 100644 index 00000000..54edbe0e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.png new file mode 100644 index 00000000..df4744f5 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.txt new file mode 100644 index 00000000..ab3130d2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,3,3] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.png new file mode 100644 index 00000000..585eb221 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.txt new file mode 100644 index 00000000..a7083d7b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,3] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [2,2,1,3,2,4] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.png new file mode 100644 index 00000000..8cfbbbb7 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.txt new file mode 100644 index 00000000..2b4936ea --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,3,3] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_183.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_183.png new file mode 100644 index 00000000..5de66999 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_183.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_183.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_183.txt new file mode 100644 index 00000000..8b2d33f5 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_183.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.png new file mode 100644 index 00000000..4f240dd4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.txt new file mode 100644 index 00000000..2497ecf3 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.png new file mode 100644 index 00000000..b40cbb9d Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.txt new file mode 100644 index 00000000..39bfd76d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [2,2,1,3,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_186.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_186.png new file mode 100644 index 00000000..f1d9fd6c Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_186.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_186.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_186.txt new file mode 100644 index 00000000..d3362b39 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_186.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.png new file mode 100644 index 00000000..c4cc88cb Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.txt new file mode 100644 index 00000000..fd1fc407 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.png new file mode 100644 index 00000000..f4e5db1b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.txt new file mode 100644 index 00000000..3c97bd31 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.png new file mode 100644 index 00000000..2919ab5d Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.txt new file mode 100644 index 00000000..cac9f5da --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.png new file mode 100644 index 00000000..fb1cd917 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.txt new file mode 100644 index 00000000..e7553c62 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.png new file mode 100644 index 00000000..23cf7036 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.txt new file mode 100644 index 00000000..8e626dbf --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.png new file mode 100644 index 00000000..dc2c340a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.txt new file mode 100644 index 00000000..5d673738 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.png new file mode 100644 index 00000000..89960cf2 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.txt new file mode 100644 index 00000000..8966e72b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_193.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_193.png new file mode 100644 index 00000000..cd5348a6 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_193.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_193.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_193.txt new file mode 100644 index 00000000..790cb17c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_193.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,2,3,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_194.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_194.png new file mode 100644 index 00000000..6daa1933 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_194.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_194.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_194.txt new file mode 100644 index 00000000..32bf0974 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_194.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_195.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_195.png new file mode 100644 index 00000000..68c52727 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_195.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_195.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_195.txt new file mode 100644 index 00000000..463f7d54 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_195.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,1,1,0,2] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [2,2,1,3,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_196.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_196.png new file mode 100644 index 00000000..e324703a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_196.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_196.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_196.txt new file mode 100644 index 00000000..d85e699c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_196.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.png new file mode 100644 index 00000000..7e9c0f4b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.txt new file mode 100644 index 00000000..0d2f2283 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.png new file mode 100644 index 00000000..5be86fd6 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.txt new file mode 100644 index 00000000..28a54521 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.png new file mode 100644 index 00000000..747e7f7e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.txt new file mode 100644 index 00000000..f3b64067 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.png new file mode 100644 index 00000000..64422b41 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.txt new file mode 100644 index 00000000..36195825 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,1,1,2,1] +[0,1,1,1,-1,2] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.png new file mode 100644 index 00000000..cf7dcea8 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.txt new file mode 100644 index 00000000..fae8478b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.png new file mode 100644 index 00000000..92166fd3 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.txt new file mode 100644 index 00000000..46139439 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.png new file mode 100644 index 00000000..221fae75 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.txt new file mode 100644 index 00000000..d74fc0b4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [2,2,1,3,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.png new file mode 100644 index 00000000..e0bbc181 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.txt new file mode 100644 index 00000000..ece142d7 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.png new file mode 100644 index 00000000..3fcb5310 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.txt new file mode 100644 index 00000000..e33d4339 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,2] [3,1,3,3,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,2,3,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.png new file mode 100644 index 00000000..2c24b8e8 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.txt new file mode 100644 index 00000000..1f4b9cef --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,2,2] [3,1,3,3,4,2] +[0,2,0,4,1,3] [2,2,2,3,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_205.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_205.png new file mode 100644 index 00000000..19b5d4ec Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_205.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_205.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_205.txt new file mode 100644 index 00000000..985778ed --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_205.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,1,3,2,2] [3,1,3,2,4,2] +[0,2,-1,3,0,4] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.png new file mode 100644 index 00000000..d34a4978 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.txt new file mode 100644 index 00000000..d66d2098 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,0,2,2,2] [3,1,4,1,3,3] +[0,2,-1,3,0,4] [2,2,1,3,2,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.png new file mode 100644 index 00000000..43bb63ce Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.txt new file mode 100644 index 00000000..385ad33a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,3] +[0,2,-1,3,0,4] [1,2,0,2,1,3] [2,2,1,2,2,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.png new file mode 100644 index 00000000..0736f67f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.txt new file mode 100644 index 00000000..d837f526 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,2,2] [3,1,3,3,4,2] +[0,2,-1,3,0,4] [2,2,1,3,2,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.png new file mode 100644 index 00000000..3b8d076a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.txt new file mode 100644 index 00000000..c219a058 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,3] [3,1,2,2,4,2] +[0,2,-1,3,0,4] [2,2,2,3,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.png new file mode 100644 index 00000000..7cf15be0 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.txt new file mode 100644 index 00000000..39c20846 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.png new file mode 100644 index 00000000..4d96833b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.txt new file mode 100644 index 00000000..3c89bf76 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,1,3,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,4] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.png new file mode 100644 index 00000000..437d10b9 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.txt new file mode 100644 index 00000000..3cdcb388 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,4] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.png new file mode 100644 index 00000000..dbba2e7e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.txt new file mode 100644 index 00000000..9aaddbe5 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,4] [2,2,2,3,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.png new file mode 100644 index 00000000..850a9e39 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.txt new file mode 100644 index 00000000..85aedd3c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.png new file mode 100644 index 00000000..62b2bf41 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.txt new file mode 100644 index 00000000..8139518e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,0,1,2,1] [2,0,1,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,3,2] [3,1,4,1,2,1] +[0,2,0,4,1,3] [2,2,1,3,2,4] [3,2,4,2,2,2] +[1,3,0,4,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.png new file mode 100644 index 00000000..83bb3984 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.txt new file mode 100644 index 00000000..c6d2f62d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,-1,1,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.png new file mode 100644 index 00000000..4a30c964 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.txt new file mode 100644 index 00000000..6f1b9975 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,2,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.png new file mode 100644 index 00000000..3bad0319 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.txt new file mode 100644 index 00000000..3ff3dfea --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,-1,1,1,1] [2,0,1,1,2,2] +[1,1,0,2,2,2] [3,1,3,3,4,2] +[0,2,0,4,1,3] [2,2,1,3,3,3] +[1,3,0,4,2,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.png new file mode 100644 index 00000000..e486e32b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.txt new file mode 100644 index 00000000..419aada2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.png new file mode 100644 index 00000000..08255339 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.txt new file mode 100644 index 00000000..d119e19d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,3,3] +[0,2,-1,3,0,4] [1,2,0,2,1,4] [2,2,1,2,2,4] +[3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.png new file mode 100644 index 00000000..0aa0bde4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.txt new file mode 100644 index 00000000..4b75916f --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,-1,1,0,2] [2,0,1,1,2,2] +[1,1,1,3,2,2] [3,1,3,3,4,2] +[0,2,0,4,1,3] [2,2,2,4,3,3] +[1,3,0,4,1,5] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.png new file mode 100644 index 00000000..98db8f7d Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.txt new file mode 100644 index 00000000..a488c897 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.png new file mode 100644 index 00000000..0ad7d2e4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.txt new file mode 100644 index 00000000..c3a305e2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.png new file mode 100644 index 00000000..db877f16 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.txt new file mode 100644 index 00000000..22d06f93 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.png new file mode 100644 index 00000000..792fd2de Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.txt new file mode 100644 index 00000000..3db6bd93 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.png new file mode 100644 index 00000000..2690210e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.txt new file mode 100644 index 00000000..d8fb0347 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.png new file mode 100644 index 00000000..c40220d2 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.txt new file mode 100644 index 00000000..2890ac19 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_29.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_29.png new file mode 100644 index 00000000..c58c7847 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_29.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_29.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_29.txt new file mode 100644 index 00000000..3477bfae --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_29.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,0,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.png new file mode 100644 index 00000000..76719120 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.txt new file mode 100644 index 00000000..34361ebc --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.png new file mode 100644 index 00000000..bd20a6e3 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.txt new file mode 100644 index 00000000..749967a4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.png new file mode 100644 index 00000000..7af82e0e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.txt new file mode 100644 index 00000000..ecd6eeee --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.png new file mode 100644 index 00000000..45567cf4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.txt new file mode 100644 index 00000000..d7d65c14 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,1,1,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.png new file mode 100644 index 00000000..4d1b1515 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.txt new file mode 100644 index 00000000..1f68044e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.png new file mode 100644 index 00000000..a50a0662 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.txt new file mode 100644 index 00000000..02ec2317 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,1,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,2,3] +[1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.png new file mode 100644 index 00000000..66e94ea0 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.txt new file mode 100644 index 00000000..e0fbefb1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.png new file mode 100644 index 00000000..b808ef08 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.txt new file mode 100644 index 00000000..7f5e8e3e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.png new file mode 100644 index 00000000..fcaec4f9 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.txt new file mode 100644 index 00000000..e6297e20 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.png new file mode 100644 index 00000000..afbf4d3e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.txt new file mode 100644 index 00000000..85c1ecbc --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,2,1,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.png new file mode 100644 index 00000000..c2273d42 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.txt new file mode 100644 index 00000000..eb47311a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.png new file mode 100644 index 00000000..fc6bf584 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.txt new file mode 100644 index 00000000..7d4d5676 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,-1,1,1,2] [1,1,2,1,0,1] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,2,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [2,3,1,3,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.png new file mode 100644 index 00000000..f193ab8f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.txt new file mode 100644 index 00000000..3e4c6c02 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,-1,1,1,2] [1,1,2,1,0,1] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,2,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [2,3,1,3,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.png new file mode 100644 index 00000000..d3a125c4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.txt new file mode 100644 index 00000000..ed89d2b1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.png new file mode 100644 index 00000000..3c91b317 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.txt new file mode 100644 index 00000000..1b2b5e44 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.png new file mode 100644 index 00000000..7abea318 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.txt new file mode 100644 index 00000000..157e2412 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,-1,1,1,2] [1,1,0,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,2,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [2,3,1,3,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.png new file mode 100644 index 00000000..03d8b43b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.txt new file mode 100644 index 00000000..36258f81 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.png new file mode 100644 index 00000000..d0fdbfdb Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.txt new file mode 100644 index 00000000..af6529a2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.png new file mode 100644 index 00000000..32b33417 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.txt new file mode 100644 index 00000000..65c23896 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,0,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_49.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_49.png new file mode 100644 index 00000000..a459ac8a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_49.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_49.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_49.txt new file mode 100644 index 00000000..998d3eb2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_49.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,1,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.png new file mode 100644 index 00000000..1062e420 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.txt new file mode 100644 index 00000000..9e8ed7e1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,1,1,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.png new file mode 100644 index 00000000..adbad183 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.txt new file mode 100644 index 00000000..56d144e9 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.png new file mode 100644 index 00000000..1f6ff28e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.txt new file mode 100644 index 00000000..6cf6db0b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_52.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_52.png new file mode 100644 index 00000000..48295157 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_52.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_52.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_52.txt new file mode 100644 index 00000000..af4ff95a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_52.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,1,2,2,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_53.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_53.png new file mode 100644 index 00000000..d92f56e9 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_53.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_53.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_53.txt new file mode 100644 index 00000000..72e1eca9 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_53.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_54.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_54.png new file mode 100644 index 00000000..3fa9eb49 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_54.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_54.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_54.txt new file mode 100644 index 00000000..0bf224ef --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_54.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.png new file mode 100644 index 00000000..72498778 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.txt new file mode 100644 index 00000000..a3f61941 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.png new file mode 100644 index 00000000..b571e61c Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.txt new file mode 100644 index 00000000..76faacdf --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.png new file mode 100644 index 00000000..2991c774 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.txt new file mode 100644 index 00000000..13bf6020 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.png new file mode 100644 index 00000000..c8867b33 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.txt new file mode 100644 index 00000000..88ec70d9 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.png new file mode 100644 index 00000000..cf3554e6 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.txt new file mode 100644 index 00000000..f298704c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_6.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_6.png new file mode 100644 index 00000000..cc84035b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_6.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_6.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_6.txt new file mode 100644 index 00000000..f52647b4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_6.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.png new file mode 100644 index 00000000..db961a0f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.txt new file mode 100644 index 00000000..c465d2fe --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.png new file mode 100644 index 00000000..5829985f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.txt new file mode 100644 index 00000000..6b02e39d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_63.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_63.png new file mode 100644 index 00000000..5a0a877d Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_63.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_63.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_63.txt new file mode 100644 index 00000000..7d3bdeca --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_63.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.png new file mode 100644 index 00000000..ccd9717a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.txt new file mode 100644 index 00000000..4284b836 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.png new file mode 100644 index 00000000..982fce9c Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.txt new file mode 100644 index 00000000..ffe1407d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,0,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.png new file mode 100644 index 00000000..f401f346 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.txt new file mode 100644 index 00000000..12904e0e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[0,1,-1,2,1,2] [1,1,2,1,0,1] [2,1,1,2,3,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [1,2,2,2,0,2] [2,2,1,3,3,3] [3,2,4,2,2,2] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.png new file mode 100644 index 00000000..4d74aafe Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.txt new file mode 100644 index 00000000..4a292881 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,2,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_68.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_68.png new file mode 100644 index 00000000..0394b142 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_68.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_68.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_68.txt new file mode 100644 index 00000000..98c0444c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_68.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,2,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_7.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_7.png new file mode 100644 index 00000000..c7dc2e4e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_7.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_7.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_7.txt new file mode 100644 index 00000000..ad650145 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_7.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.png new file mode 100644 index 00000000..866cb6fe Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.txt new file mode 100644 index 00000000..74c32eb4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,2] [3,0,2,0,3,2] +[1,1,0,2,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.png new file mode 100644 index 00000000..01edf634 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.txt new file mode 100644 index 00000000..aa4ae19d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,2] [2,0,2,2,3,1] [3,0,2,0,3,1] +[3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_72.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_72.png new file mode 100644 index 00000000..68bc35ad Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_72.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_72.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_72.txt new file mode 100644 index 00000000..5b3de1b4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_72.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,2] [2,0,2,2,3,1] [3,0,2,0,3,1] +[3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.png new file mode 100644 index 00000000..bded9f5a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.txt new file mode 100644 index 00000000..4184a8da --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,2] [2,0,2,2,3,1] [3,0,2,0,3,1] +[3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.png new file mode 100644 index 00000000..cd2a9989 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.txt new file mode 100644 index 00000000..6da0b08e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,3] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,2,4] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_75.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_75.png new file mode 100644 index 00000000..800db4d7 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_75.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_75.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_75.txt new file mode 100644 index 00000000..55991345 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_75.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[0,1,-1,1,0,2] [1,1,0,1,0,2] [3,1,2,2,3,3] +[0,2,0,3,1,3] [2,2,2,4,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_76.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_76.png new file mode 100644 index 00000000..002e5f92 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_76.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_76.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_76.txt new file mode 100644 index 00000000..0a981792 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_76.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,3] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,2,4,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_77.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_77.png new file mode 100644 index 00000000..bc775fe4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_77.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_77.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_77.txt new file mode 100644 index 00000000..8d57c761 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_77.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,3] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,2,4,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_78.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_78.png new file mode 100644 index 00000000..53d42862 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_78.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_78.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_78.txt new file mode 100644 index 00000000..12ad8dba --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_78.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,3,3] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_79.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_79.png new file mode 100644 index 00000000..f768700f Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_79.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_79.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_79.txt new file mode 100644 index 00000000..da04863f --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_79.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,3,3] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_8.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_8.png new file mode 100644 index 00000000..300d5df4 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_8.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_8.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_8.txt new file mode 100644 index 00000000..e6f24c45 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_8.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_80.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_80.png new file mode 100644 index 00000000..c5440913 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_80.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_80.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_80.txt new file mode 100644 index 00000000..bdeaf207 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_80.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,3] [3,1,2,2,3,2] +[0,2,-1,2,0,3] [2,2,2,4,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_81.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_81.png new file mode 100644 index 00000000..a96cb819 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_81.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_81.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_81.txt new file mode 100644 index 00000000..3e6c0103 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_81.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,3,3] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_82.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_82.png new file mode 100644 index 00000000..22e44d3b Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_82.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_82.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_82.txt new file mode 100644 index 00000000..4ad32a94 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_82.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,1,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,3] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_83.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_83.png new file mode 100644 index 00000000..b06385a3 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_83.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_83.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_83.txt new file mode 100644 index 00000000..322580e5 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_83.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,3] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,2,0,3] [2,2,2,4,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_84.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_84.png new file mode 100644 index 00000000..3423fd73 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_84.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_84.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_84.txt new file mode 100644 index 00000000..ec8a81cb --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_84.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_85.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_85.png new file mode 100644 index 00000000..07207c19 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_85.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_85.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_85.txt new file mode 100644 index 00000000..a8a1ef00 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_85.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_86.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_86.png new file mode 100644 index 00000000..fff73796 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_86.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_86.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_86.txt new file mode 100644 index 00000000..b8280264 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_86.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_87.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_87.png new file mode 100644 index 00000000..5d33a0a1 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_87.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_87.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_87.txt new file mode 100644 index 00000000..b1027af7 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_87.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,1,3] [2,1,3,1,1,1] [3,1,3,3,4,2] +[0,2,-1,3,0,3] +[0,3,1,3,0,4] [1,3,0,4,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_88.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_88.png new file mode 100644 index 00000000..cbaab189 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_88.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_88.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_88.txt new file mode 100644 index 00000000..c120a98e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_88.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,0,1,2,1] [2,0,1,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,3,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,1,3,3,3] [3,2,4,2,2,2] +[0,3,1,3,0,4] [1,3,0,4,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_9.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_9.png new file mode 100644 index 00000000..76fe17d7 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_9.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_9.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_9.txt new file mode 100644 index 00000000..e129f8c4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_9.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,1,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_90.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_90.png new file mode 100644 index 00000000..b3267130 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_90.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_90.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_90.txt new file mode 100644 index 00000000..4f919557 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_90.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,2,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,2,4] [2,3,1,3,2,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_91.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_91.png new file mode 100644 index 00000000..009b0176 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_91.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_91.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_91.txt new file mode 100644 index 00000000..1c55320c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_91.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,0,1,2,1] [2,0,1,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,3,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,2,3,3,3] [3,2,4,2,2,2] +[0,3,1,3,0,4] [1,3,0,4,2,4] [2,3,1,3,2,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_92.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_92.png new file mode 100644 index 00000000..a1efb140 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_92.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_92.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_92.txt new file mode 100644 index 00000000..fcc2c6e6 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_92.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_93.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_93.png new file mode 100644 index 00000000..43667df6 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_93.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_93.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_93.txt new file mode 100644 index 00000000..8a49ca7b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_93.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_94.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_94.png new file mode 100644 index 00000000..35448d7e Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_94.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_94.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_94.txt new file mode 100644 index 00000000..8226fbbb --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_94.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_95.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_95.png new file mode 100644 index 00000000..72b838f0 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_95.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_95.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_95.txt new file mode 100644 index 00000000..7395f6a0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_95.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [2,1,3,1,1,1] [3,1,3,2,4,2] +[0,2,1,2,0,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[0,3,-1,3,0,4] [1,3,0,3,0,4] [2,3,1,3,2,4] [3,3,2,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_96.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_96.png new file mode 100644 index 00000000..dedb93d9 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_96.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_96.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_96.txt new file mode 100644 index 00000000..68620e0a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_96.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[0,3,-1,3,0,4] [1,3,0,3,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_98.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_98.png new file mode 100644 index 00000000..4fa40ac8 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_98.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_98.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_98.txt new file mode 100644 index 00000000..f4289c67 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_98.txt @@ -0,0 +1,3 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,2,2] [3,0,4,0,3,2] +[0,2,-1,2,0,4] [1,2,0,2,1,4] [2,2,1,2,2,4] [3,2,2,2,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_99.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_99.png new file mode 100644 index 00000000..1361e58a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/4x4_99.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_99.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_99.txt new file mode 100644 index 00000000..d49836e1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_99.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,-1,3,0,4] [1,2,0,2,1,4] [2,2,1,2,3,3] +[3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/basic.png b/extensions/fablabchemnitz/bobbinlace/templates/basic.png new file mode 100644 index 00000000..c35eaf37 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/basic.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/basic.txt b/extensions/fablabchemnitz/bobbinlace/templates/basic.txt new file mode 100644 index 00000000..ee8ac26b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/basic.txt @@ -0,0 +1,3 @@ +CHECKER 2 2 +[0,0,-1,1,1,1] +[1,1,0,2,2,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/bias.png b/extensions/fablabchemnitz/bobbinlace/templates/bias.png new file mode 100644 index 00000000..53f5b82a Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/bias.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/bias.txt b/extensions/fablabchemnitz/bobbinlace/templates/bias.txt new file mode 100644 index 00000000..1fab8f8e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/bias.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/devonshire.png b/extensions/fablabchemnitz/bobbinlace/templates/devonshire.png new file mode 100644 index 00000000..f4250322 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/devonshire.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/devonshire.txt b/extensions/fablabchemnitz/bobbinlace/templates/devonshire.txt new file mode 100644 index 00000000..4a69e816 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/devonshire.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,1] +[1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/kat.png b/extensions/fablabchemnitz/bobbinlace/templates/kat.png new file mode 100644 index 00000000..1b7b5ce2 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/kat.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/kat.txt b/extensions/fablabchemnitz/bobbinlace/templates/kat.txt new file mode 100644 index 00000000..9f854ccd --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/kat.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,-1,1,0,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/pinwheel.png b/extensions/fablabchemnitz/bobbinlace/templates/pinwheel.png new file mode 100644 index 00000000..a41c6171 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/pinwheel.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/pinwheel.txt b/extensions/fablabchemnitz/bobbinlace/templates/pinwheel.txt new file mode 100644 index 00000000..9dfed1d6 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/pinwheel.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,1,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/rose.png b/extensions/fablabchemnitz/bobbinlace/templates/rose.png new file mode 100644 index 00000000..fc723ede Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/rose.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/rose.txt b/extensions/fablabchemnitz/bobbinlace/templates/rose.txt new file mode 100644 index 00000000..f2ea2211 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/rose.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/rose_var1.png b/extensions/fablabchemnitz/bobbinlace/templates/rose_var1.png new file mode 100644 index 00000000..1ad78ece Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/rose_var1.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/rose_var1.txt b/extensions/fablabchemnitz/bobbinlace/templates/rose_var1.txt new file mode 100644 index 00000000..e29b28fe --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/rose_var1.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/rose_var2.png b/extensions/fablabchemnitz/bobbinlace/templates/rose_var2.png new file mode 100644 index 00000000..d4256449 Binary files /dev/null and b/extensions/fablabchemnitz/bobbinlace/templates/rose_var2.png differ diff --git a/extensions/fablabchemnitz/bobbinlace/templates/rose_var2.txt b/extensions/fablabchemnitz/bobbinlace/templates/rose_var2.txt new file mode 100644 index 00000000..f1fca15b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/rose_var2.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,2,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/boukamp_code/bouwkamp_code.inx b/extensions/fablabchemnitz/boukamp_code/bouwkamp_code.inx new file mode 100644 index 00000000..40e23467 --- /dev/null +++ b/extensions/fablabchemnitz/boukamp_code/bouwkamp_code.inx @@ -0,0 +1,28 @@ + + + Bouwkamp Code + fablabchemnitz.de.bouwkamp + + + 21, 112, 112, [50, 35, 27], [8, 19], [15, 17, 11], [6, 24], [29, 25, 9, 2], [7, 18], [16], [42], [4, 37], [33] + true + + + + + + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/boukamp_code/bouwkamp_code.py b/extensions/fablabchemnitz/boukamp_code/bouwkamp_code.py new file mode 100644 index 00000000..8493f916 --- /dev/null +++ b/extensions/fablabchemnitz/boukamp_code/bouwkamp_code.py @@ -0,0 +1,163 @@ +#!/usr/bin/env python3 +''' +BSD 3-Clause License + +Copyright (c) 2019, Pascal Wagler +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +This Inkscape extension allows you to generate squared squares and squared rectangles from +Bouwkamp codes and table codes. +''' + +import re +import inkex +from lxml import etree + +class BouwkampCode(inkex.EffectExtension): + """ + This Inkscape extension allows you to generate squared squares and squared rectangles from + Bouwkamp codes and table codes. + """ + + def add_arguments(self, pars): + pars.add_argument('--tab') + pars.add_argument('--bouwkamp_code', default='21, 112, 112, [50, 35, 27], [8, 19], [15, 17, 11], [6, 24], [29, 25, 9, 2], [7, 18], [16], [42], [4, 37], [33]', help='The Bouwkamp code.' + ) + pars.add_argument('--wrap_in_group', type=inkex.Boolean, default=True, help='Should the generated items be wrapped inside a group.' + ) + + def effect(self): + # compute center of the view + center = self.svg.namedview.center + + # create the group that holds all the elements + container = self.svg.get_current_layer() + if self.options.wrap_in_group: + group_attributes = { + inkex.addNS('label', 'inkscape'): 'BouwkampSquares', + 'transform': 'translate' + str(center) + } + group = etree.SubElement(self.svg.get_current_layer(), 'g', group_attributes) + container = group + + # parse the bouwkamp code string as a list + bouwkamp_code = self.parse_bouwkamp_code_from_string(self.options.bouwkamp_code) + + # show an error message and exit if the bouwkamp code is invalid + try: + self.exception_on_invalid_bouwkamp_code(bouwkamp_code) + except ValueError as exception: + inkex.errormsg(str(exception)) + return + + # draw the bouwkamp code + self.draw_bouwkamp_code(container, center, bouwkamp_code) + + @staticmethod + def exception_on_invalid_bouwkamp_code(bouwkamp_code): + """ + Raises a ValueError if the passed list is not a valid Bouwkamp code. + """ + + if not bouwkamp_code: #len(bouwkamp_code) == 0 + raise ValueError('Error: Invalid Bouwkamp code.\n\nThe Bouwkamp code is emtpy. ' + + 'Please specify a valid Bouwkamp code.') + + if len(bouwkamp_code) - 3 != bouwkamp_code[0]: + raise ValueError('Error: Invalid Bouwkamp code.\n\nThe Bouwkamp code has the wrong ' + + 'length. The first number needs to specify how many squares ' + + 'should be drawn.') + + @staticmethod + def parse_bouwkamp_code_from_string(bouwkamp_code_string): + """ + Converts a Bouwkamp code string into a list of integers. Any parentheses, commas and + spaces are stripped. Extended Bouwkamp codes are not supported. + """ + + # replace every character (except numbers) with a space + text = re.sub('[^0-9]', ' ', bouwkamp_code_string) + # collapse all spaces to just one space + text = re.sub(' {1,}', ' ', text).strip() + # split the string into small strings and convert them to integers + numbers = [int(x) for x in text.split(" ")] + + return numbers + + def draw_bouwkamp_code(self, parent, center, bouwkamp_code): + """ + Draws the passed Bouwkamp code (a list of integers) with rectangles. + """ + + order = bouwkamp_code[0] + width = bouwkamp_code[1] + # height = bouwkamp_code[2] + code = bouwkamp_code[3:] # cut the first three elements away + + i = 0 + helper = [0] * 900 + + for rectangle in range(0, order): + i = 0 + for j in range(1, width): + if helper[j] < helper[i]: + i = j + + position = (i, helper[i]) + dimension = (code[rectangle], code[rectangle]) + self.draw_rectangle(position, dimension, parent, center) + + for j in range(0, code[rectangle]): + helper[i+j] += code[rectangle] + + def draw_rectangle(self, position, dimension, parent, center): + rectangle_style = { + 'opacity': '1', + 'stroke': '#000000', + 'stroke-width': str(self.svg.unittouu('2px')), + 'fill': '#FFFFFF' + } + + transform = "" + if not self.options.wrap_in_group: + transform = 'translate' + str(center) + + rectangle_attributes = { + 'transform': transform, + 'style': str(inkex.Style(rectangle_style)), + inkex.addNS('label', 'inkscape'): "Rectangle "+str(dimension[0]), + 'x': str(position[0]), + 'y': str(position[1]), + 'width': str(dimension[0]), + 'height': str(dimension[1]) + } + + etree.SubElement(parent, inkex.addNS('rect', 'svg'), rectangle_attributes) + +if __name__ == '__main__': + BouwkampCode().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bounding_box/bounding_box.inx b/extensions/fablabchemnitz/bounding_box/bounding_box.inx new file mode 100644 index 00000000..9f10668b --- /dev/null +++ b/extensions/fablabchemnitz/bounding_box/bounding_box.inx @@ -0,0 +1,21 @@ + + + Bounding Box + fablabchemnitz.de.bounding_box + + 0.0 + true + false + true + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/bounding_box/bounding_box.py b/extensions/fablabchemnitz/bounding_box/bounding_box.py new file mode 100644 index 00000000..216e59a7 --- /dev/null +++ b/extensions/fablabchemnitz/bounding_box/bounding_box.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +import inkex +import math +from lxml import etree + +class BoundingBox(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--offset', type=float, default=0.0, help='Offset from object (all directions)') + pars.add_argument('--box', type=inkex.Boolean, default=0.0, help='Draw boxes') + pars.add_argument('--circle', type=inkex.Boolean, default=0.0, help='Draw circles') + pars.add_argument('--split', type = inkex.Boolean, default = True, help = 'Handle selection as group') + + def drawBBox(self, bbox): + if self.options.box: + attribs = { + 'style' : str(inkex.Style({'stroke':'#ff0000','stroke-width' : '1','fill':'none'})), + 'x' : str(bbox.left - self.options.offset), + 'y' : str(bbox.top - self.options.offset), + 'width' : str(bbox.width + 2 * self.options.offset), + 'height': str(bbox.height + 2 * self.options.offset), + } + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('rect','svg'), attribs) + + if self.options.circle: + attribs = { + 'style': str(inkex.Style({'stroke':'#ff0000','stroke-width' : '1','fill':'none'})), + 'cx' : str(bbox.center_x), + 'cy' : str(bbox.center_y), + #'r' : str(bbox.width / 2 + self.options.offset), + 'r' : str(math.sqrt((bbox.width + 2 * self.options.offset)* (bbox.width + 2 * self.options.offset) + (bbox.height + 2 * self.options.offset) * (bbox.height + 2 * self.options.offset)) / 2), + } + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('circle','svg'), attribs) + + def effect(self): + if len(self.svg.selected) > 0: + if self.options.split is False: + for element in self.svg.selected.values(): + self.drawBBox(element.bounding_box()) + else: + #self.drawBBox(self.svg.get_selected_bbox()) #works for InkScape (1:1.0+devel+202008292235+eff2292935) @ Linux and for Windows (but with deprecation) + self.drawBBox(self.svg.selection.bounding_box()) #works for InkScape 1.1dev (9b1fc87, 2020-08-27)) @ Windows + + else: + inkex.errormsg('Please select some objects first.') + return + +if __name__ == '__main__': + BoundingBox().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_conical/box_maker_conical.inx b/extensions/fablabchemnitz/box_maker_conical/box_maker_conical.inx new file mode 100644 index 00000000..910b63ac --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_conical/box_maker_conical.inx @@ -0,0 +1,34 @@ + + + Box Maker - Conical + fablabchemnitz.de.box_maker_conical + + + + + + + + + + + + + 3.0 + 100.0 + 150.0 + 50.0 + 1 + true + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_conical/box_maker_conical.py b/extensions/fablabchemnitz/box_maker_conical/box_maker_conical.py new file mode 100644 index 00000000..e7cfd8ee --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_conical/box_maker_conical.py @@ -0,0 +1,353 @@ +#!/usr/bin/env python3 + +# We will use the inkex module with the predefined Effect base class. +import inkex +import math +from lxml import etree + +objStyle = str(inkex.Style( + {'stroke': '#000000', + 'stroke-width': 0.1, + 'fill': 'none' + })) + +class inkcape_polar: + def __init__(self, Offset, group): + self.offsetX = Offset[0] + self.offsetY = Offset[1] + self.Path = '' + self.group = group + + def MoveTo(self, r, angle): + #Retourne chaine de caractères donnant la position du point avec des coordonnées polaires + self.Path += ' M ' + str(round(r*math.cos(angle)-self.offsetX, 3)) + ',' + str(round(r*math.sin(angle)-self.offsetY, 3)) + + def LineTo(self, r, angle): + #Retourne chaine de caractères donnant la position du point avec des coordonnées polaires + self.Path += ' L ' + str(round(r*math.cos(angle)-self.offsetX, 3)) + ',' + str(round(r*math.sin(angle)-self.offsetY, 3)) + + def Line(self, r1, angle1, r2, angle2): + #Retourne chaine de caractères donnant la position du point avec des coordonnées polaires + self.Path += ' M ' + str(round(r1*math.cos(angle1)-self.offsetX, 3)) + ',' + str(round(r1*math.sin(angle1)-self.offsetY, 3)) + ' L ' + str(round(r2*math.cos(angle2)-self.offsetX, 3)) + ',' + str(round(r2*math.sin(angle2)-self.offsetY, 3)) + + def GenPath(self): + line_attribs = {'style': objStyle, 'd': self.Path} + etree.SubElement(self.group, inkex.addNS('path', 'svg'), line_attribs) + +class CurvedSurface: + def __init__(self, L1, L2, nombre_pas, angle_par_pas, taille_exacte_pas, nb_parts, epaisseur, parent, xOffset, yOffset): + self.L1 = L1 + self.L2 = L2 + self.nombre_pas = nombre_pas + self.angle_par_pas = angle_par_pas + self.taille_exacte_pas = taille_exacte_pas + self.epaisseur = epaisseur + self.parent = parent + self.OffsetX = xOffset + self.OffsetY = yOffset + self.nb_parts = nb_parts + + def genere_element_1(self, angle): + path = inkcape_polar(self.Offset, self.group) + # Commence par le pas de liaison avec le suivant. Va de (L1, angle+angle_par_pas) vers (L1, angle+angle_par_pas/2) + path.Line(self.L1, angle+self.angle_par_pas, self.L1, angle+self.angle_par_pas/2) + # Puis trait court de (L1+TraiteTraitCourt, angle+angle_par_pas/2) vers (L1-epaisseur, angle+angle_par_pas/2) + path.Line(self.L1+self.TailleTraitCourt, angle+self.angle_par_pas/2, self.L1-self.epaisseur, angle+self.angle_par_pas/2) + # Puis fait la dent inétrieur et va en (L1-epaisseur, angle) + path.LineTo(self.L1-self.epaisseur, angle) + # Puis trait court, va en (L1+TailleTraitCourt, angle) + path.LineTo(self.L1+self.TailleTraitCourt, angle) + path.GenPath() + + def genere_element_1_debut(self, angle): + path = inkcape_polar(self.Offset, self.group) + # Commence par le pas de liaison avec le suivant + # Commence en (L1,0) et finit en (L1, angle/2) + path.Line(self.L1, 0, self.L1, angle/2) + #Se déplace pour se positionner à (self.L1+TailleTraitCourt, angle/2) et termine en (L1-epaisseur, angle /2) + path.Line(self.L1+self.TailleTraitCourt, angle/2, self.L1-self.epaisseur, angle/2) + #Puis trace la dent. Se déplace en (L1-epaisseur, angle*0.75) + path.LineTo(self.L1-self.epaisseur, angle*0.75) + # Puis bord complet : se déplace en (L2+epaisseur,angle*0.75) + path.LineTo(self.L2+self.epaisseur, angle*0.75) + # Puis dent externe, revient en (L2+epaisseur, angle/2) + path.LineTo(self.L2+self.epaisseur, angle*0.5) + # Puis trait de taille TailleTraitcourt --> va en (L2-TailleTraitCourt) avec angle/2 + path.LineTo(self.L2-self.TailleTraitCourt, angle*0.5) + # Puis liaison vers suivant. Se déplace en (L2, taille_exacte_pas*0.5) avec angle/2 et va en (L2,0) avec angle 0 + path.Line(self.L2, angle*0.5, self.L2, 0) + path.GenPath() + + def genere_element_1_fin(self, angle): + path = inkcape_polar(self.Offset, self.group) + # Génère le dernier path, pour le dernier pas. Proche du cas normal, mais path plus complet, prend en compte la découpe du bord + # Par rapport au premier, pas de liaison avec le suivant ! + # Commence par le trait court intérieur : Va de (L1+TailleTraitCourt, angle) vers (L1-epaisseur, angle) + path.Line(self.L1+self.TailleTraitCourt, angle, self.L1-self.epaisseur, angle) + # Puis la dent coté intérieur : Va en (L1-epaisseur, angle+angle_par_pas/4) + path.LineTo(self.L1-self.epaisseur, angle+self.angle_par_pas/4) + # Puis découpe complète du bord. Va en (L2+epaisseur, angle+angle_par_pas/4) + path.LineTo(self.L2+self.epaisseur, angle+self.angle_par_pas/4) + # Puis dent coté extérieur, va en (L2+epaisseur, angle) + path.LineTo(self.L2+self.epaisseur, angle) + # et enfin traitcourt, va en (L2-TailleTraitCOurt, angle) + path.LineTo(self.L2-self.TailleTraitCourt, angle) + path.GenPath() + + def genere_element_2(self, angle): + path = inkcape_polar(self.Offset, self.group) + # Génère 2nd path, 2 traits entre bords des dents de l'interieur vers l'exterieur + # Se positionne en (L1 + TailleTraitCourt+2, angle) et va en ((L2+L1)/2-1, angle) + path.Line(self.L1+self.TailleTraitCourt+2, angle, (self.L2+self.L1)/2-1, angle) + # Se positionne en ((L2+L1)/2+1, angle) et va en (L2-TailleTraitCourt-2, angle) + path.Line((self.L2+self.L1)/2+1, angle, self.L2-self.TailleTraitCourt-2, angle) + path.GenPath() + + def genere_element_3(self, angle): + path = inkcape_polar(self.Offset, self.group) + # Génère la dent, la liaison avec le suivant coté extérieur + # Commence en (L2-TailleTraitCourt, angle) et va en (L2+epaisseur, angle) + path.Line(self.L2-self.TailleTraitCourt, angle, self.L2+self.epaisseur, angle) + # Trace la dent, va en (L2+epaisseur, angle+angle_par_pas/2) + # Ajoute angle_par_pas / 2 à l'angle car ce sera la nouvelle origine + angle += self.angle_par_pas/2 + path.LineTo(self.L2+self.epaisseur, angle) + # Revient vers l'intérieur en (L2-TailleTraitCourt, angle+angle_par_pas/2) mais c'est le nouvel angle + path.LineTo(self.L2-self.TailleTraitCourt, angle) + # Trace liaison avec le suivant. Début en (L2, nouvel_angle) fin en (L2, nouvel_angle+angle_par_pas/2) + path.Line(self.L2, angle, self.L2, angle+self.angle_par_pas/2) + path.GenPath() + + def genere_element_4(self, angle): + path = inkcape_polar(self.Offset, self.group) + # Génère 2nd path, 2 traits entre bords des dents de l'extérieur vers l'intérieur + # Se positionne en (L2-TailleTraitCourt-2, angle+angle_par_pas/2) et va en ((L2+L1)/2+1, angle+angle_par_pas/2) + path.Line(self.L2-self.TailleTraitCourt-2, angle+self.angle_par_pas/2, (self.L2+self.L1)/2+1, angle+self.angle_par_pas/2) + # Se positionne en ((L2+L1)/2-1, angle+angle_par_pas/2) et va en (L1 + TailleTraitCourt+2, angle+angle_par_pas/2) + path.Line((self.L2+self.L1)/2-1, angle+self.angle_par_pas/2, self.L1+self.TailleTraitCourt+2, angle+self.angle_par_pas/2) + path.GenPath() + + def genere_element_5(self, angle): + path = inkcape_polar(self.Offset, self.group) + # Génère path avec 3 traits longueur TailleTraitLong entre les dents externes + #Tous les angles de ce motifs sont incrénetés de angle_par_pas/4 + angle += self.angle_par_pas/4 + # Se positionne en (L1-epaisseur+1, angle) et va en (L1+TailleTraitLong-1) + path.Line(self.L1-self.epaisseur+1, angle, self.L1+self.TailleTraitLong-1, angle) + # Se positionne en (L1+TailleTraitLong+1, angle) et va en (L1+2*TailleTraitLong+1) + path.Line(self.L1+self.TailleTraitLong+1, angle, self.L1+2*self.TailleTraitLong+1, angle) + # Se positionne en (L2 - TailleTraitLong + 1 et va en L2+epaisseur-1) + path.Line(self.L2-self.TailleTraitLong+1, angle, self.L2+self.epaisseur-1, angle) + path.GenPath() + + def genere_element_6(self, angle): + path = inkcape_polar(self.Offset, self.group) + #Tous les angles de ce motifs sont incrénetés de angle_par_pas*0.75 + angle += self.angle_par_pas*0.75 + # Se positionne en (L2-1, angle) et va en (L2-TailleTraitLong+1) + path.Line(self.L2-1, angle, self.L2-self.TailleTraitLong+1, angle) + # Se positionne en (L2 - TailleTraitLong-1, angle) et va en (L1+TailleTraitLong+1) + path.Line(self.L2-self.TailleTraitLong - 1, angle, self.L1+self.TailleTraitLong+1, angle) + # Se positionne en (L1+TailleTraitLong-1) et va en (L1+1,angle) + path.Line(self.L1+self.TailleTraitLong - 1, angle, self.L1+1, angle) + path.GenPath() + + def genere_pas_debut(self): + # Génère les paths du premier pas, le bord est complètement coupé et son épaisseur est divisée par 2 (élement_1 début) + angle = -1*self.angle_par_pas + #Taille traits court et long premiere partie + self.genere_element_1_debut(angle) + self.genere_element_4(angle) + self.genere_element_6(angle) + + def genere_pas_fin(self, index_pas_fin): + # Génère les paths du dernier pas, le bord est complètement coupé et son épaisseur est divisée par 2 (élement_1 fin) + angle = index_pas_fin*self.angle_par_pas + # Génère les deux traits courts entre les dents + self.genere_element_2(angle) + # Génère la dent et ferme le contour + self.genere_element_1_fin(angle) + + + def genere_pas(self, index_pas): + # Génère les paths d'un des pas du milieu. 6 paths sont créés + angle = self.angle_par_pas * index_pas + # Premier élément : dent intérieure + self.genere_element_1(angle) + # Second élément : 2 trait courts entre dents proche précédent + self.genere_element_2(angle) + # 3ème élément : dent extérieure + self.genere_element_3(angle) + # 4ème élément : 2 traits courts entre dents vers milieu + self.genere_element_4(angle) + # 5ème élément : 3 traits longs proche du précédent + self.genere_element_5(angle) + # 6ème élément : 3 traits longs vers suivant + self.genere_element_6(angle) + + + def GeneratePaths(self): + #Taille traits courts et longs entre les dents + self.TailleTraitCourt = (self.L2 - self.L1) / 6 - 1 + self.TailleTraitLong = (self.L2 - self.L1- 2) / 3 + pas_par_bloc = int(self.nombre_pas/self.nb_parts) + #genere les pas du "flex" + for i in range(self.nb_parts): + group = etree.SubElement(self.parent, 'g') + self.group = group + current_pas = 0 + pas_pour_ce_bloc = pas_par_bloc + self.Offset = (self.OffsetX, self.OffsetY) + self.OffsetX += self.L2*2+ 5 + if i == self.nb_parts - 1: + pas_pour_ce_bloc = self.nombre_pas - i * pas_par_bloc + self.genere_pas_debut() + while current_pas < pas_pour_ce_bloc: + self.genere_pas(current_pas) + current_pas += 1 + self.genere_pas_fin(pas_pour_ce_bloc) + +def gen_cercle(diametre, nombre_pas, epaisseur, xOffset, yOffset, parent): + group = etree.SubElement(parent, 'g') + angle_par_pas = 2 * math.pi / nombre_pas + #Rayons des cercle, avec et sans picots + r1 = diametre / 2 + r2 = r1 + epaisseur + path = inkcape_polar((xOffset, yOffset), group) + path.MoveTo(r1, 0) + index_pas = 0 + while index_pas < nombre_pas: + angle = index_pas * angle_par_pas + path.LineTo(r2, angle) + path.LineTo(r2, angle+angle_par_pas/2) + path.LineTo(r1, angle+angle_par_pas/2) + path.LineTo(r1, angle+angle_par_pas) + index_pas += 1 + path.GenPath() + +class BoxMakerConical(inkex.EffectExtension): + """ + Creates a new layer with the drawings for a parametrically generaded box. + """ + def __init__(self): + inkex.Effect.__init__(self) + self.knownUnits = ['in', 'pt', 'px', 'mm', 'cm', 'm', 'km', 'pc', 'yd', 'ft'] + self.arg_parser.add_argument('--unit', default = 'mm', help = 'Unit, should be one of ') + self.arg_parser.add_argument('--thickness', type = float, default = 3.0, help = 'Material thickness') + self.arg_parser.add_argument('--d1', type = float, default = 50.0, help = 'Small circle diameter') + self.arg_parser.add_argument('--d2', type = float, default = 100.0, help = 'Large circle diameter') + self.arg_parser.add_argument('--zc', type = float, default = 50.0, help = 'Cone height') + self.arg_parser.add_argument('--nb_pieces', type = int, default = 1, help = '# pieces for cone') + self.arg_parser.add_argument('--inner_size', type = inkex.Boolean, default = True, help = 'Dimensions are internal') + + try: + inkex.Effect.unittouu # unitouu has moved since Inkscape 0.91 + except AttributeError: + try: + def unittouu(self, unit): + return inkex.unittouu(unit) + except AttributeError: + pass + + def effect(self): + """ + Draws a conic box, based on provided parameters + """ + + # input sanity check + error = False + if self.options.zc < 15: + inkex.errormsg('Error: Height should be at least 15mm') + error = True + + if self.options.d1 < 30: + inkex.errormsg('Error: d1 should be at least 30mm') + error = True + + if self.options.d2 < self.options.d1 + 0.009999: + inkex.errormsg('Error: d2 should be at d1 + 0.01mm') + error = True + + if self.options.thickness < 1 or self.options.thickness > 10: + inkex.errormsg('Error: thickness should be at least 1mm and less than 10mm') + error = True + + if error: + exit() + + + # convert units + unit = self.options.unit + d1 = self.svg.unittouu(str(self.options.d1) + unit) + d2 = self.svg.unittouu(str(self.options.d2) + unit) + zc = self.svg.unittouu(str(self.options.zc) + unit) + + nb_parts = self.options.nb_pieces + + thickness = self.svg.unittouu(str(self.options.thickness) + unit) + #Si prend dimensions externes, corrige les tailles + if self.options.inner_size == False: + d1 -= 2*thickness + d2 -= 2*thickness + zc -= 2*thickness + + svg = self.document.getroot() + docWidth = self.svg.unittouu(svg.get('width')) + docHeigh = self.svg.unittouu(svg.attrib['height']) + + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'Conical Box') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + + #Compute size of projection + h1 = math.sqrt(zc*zc + (d2-d1)*(d2-d1)/4) + L1 = d1 * h1 / (d2 - d1) + L2 = d2 * h1 / (d2 - d1) + + alpha = math.pi*d2/L2 + #calcul nombre de pas (sauf premeirs et derniers) pour D1, avec 2*2 mm par pas + nombre_pas = round((d1 * math.pi - 6) / 4) + #calcul angle par pas, ajoute 1.5 pour tenir compte des premiers et derniers pas qui font 3/4 de pas. + angle_par_pas = alpha / (nombre_pas+1.5*nb_parts) + taille_exacte_pas = math.pi * d1 / (nombre_pas+1.5*nb_parts) + + # do not put elements right at the edge of the page. + # Drawing will max left will be L2*cos(alpha) - thickness + if alpha > math.pi: + xOffset = -L2 - thickness - 10 + xmin = -L2 - thickness + xmax = L2 + thickness + else: + xOffset = L2 * math.cos(alpha) - thickness - 10 + xmin = (L2+thickness) * math.cos(alpha) + xmax = L2 + thickness + if alpha > math.pi*1.5: + yOffset = -L2 - thickness - 10 + ymin = -L2 - thickness + ymax = L2 + thickness + elif alpha > math.pi: + yOffset = (L2+thickness)*math.sin(alpha) - 10 + ymin = (L2+thickness)*math.sin(alpha) - thickness + ymax = L2 + thickness + elif alpha > math.pi/2: + yOffset = 0 + ymin = 0 + ymax = L2 + thickness + else: + yOffset = 0 + ymin = 0 + ymax = (L2+thickness)*math.sin(alpha) + + #dessine la partie "souple" + PartieSouple = CurvedSurface(L1, L2, nombre_pas, angle_par_pas, taille_exacte_pas, nb_parts, thickness, layer, xOffset, yOffset) + PartieSouple.GeneratePaths() + #génère maintenant le path du grand cercle + #Un pas de plus pour les cercles, pour tenir compte du début et de la fin + nombre_pas += 1 + #Positionne Offset + gen_cercle(d2, nombre_pas, thickness, -xmax - d2/2 + xOffset + 10, yOffset - ymax - d2/2 - 10 , layer) + #puis pour le petit cercle + gen_cercle(d1, nombre_pas, thickness, -xmax - d1/2 + xOffset + 10, d1/2 + yOffset - ymin + 10, layer) + +if __name__ == '__main__': + BoxMakerConical().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.inx b/extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.inx new file mode 100644 index 00000000..76c27e32 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.inx @@ -0,0 +1,39 @@ + + + Box Maker - Elliptical Box + fablabchemnitz.de.box_maker_elliptical_box + + + + + + + + + + + + + 3.0 + 30.0 + 50.0 + 40.0 + 1.5 + false + 4 + 90 + false + false + false + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.py b/extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.py new file mode 100644 index 00000000..a264b4a5 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.py @@ -0,0 +1,278 @@ +#!/usr/bin/env python3 + +from inkscape_helper.Coordinate import Coordinate +import inkscape_helper.Effect as eff +import inkscape_helper.SVG as svg +from inkscape_helper.Ellipse import Ellipse + +from inkscape_helper.Line import Line +from inkscape_helper.EllipticArc import EllipticArc + +from math import * +import inkex + +#Note: keep in mind that SVG coordinates start in the top-left corner i.e. with an inverted y-axis + +# first define some SVG primitives +greenStyle = svg.green_style + +def _makeCurvedSurface(topLeft, w, h, cutSpacing, hCutCount, thickness, parent, invertNotches = False, centralRib = False): + width = Coordinate(w, 0) + height = Coordinate(0, h) + wCutCount = int(floor(w / cutSpacing)) + if wCutCount % 2 == 0: + wCutCount += 1 # make sure we have an odd number of cuts + xCutDist = w / wCutCount + xSpacing = Coordinate(xCutDist, 0) + ySpacing = Coordinate(0, cutSpacing) + cut = height / hCutCount - ySpacing + plateThickness = Coordinate(0, thickness) + notchEdges = [] + topHCuts = [] + bottomHCuts = [] + + p = svg.Path() + + for cutIndex in range(wCutCount): + if (cutIndex % 2 == 1) != invertNotches: # make a notch here + inset = plateThickness + else: + inset = Coordinate(0, 0) + + # A-column of cuts + aColStart = topLeft + xSpacing * cutIndex + notchEdges.append((aColStart - topLeft).x) + + if cutIndex > 0: # no cuts at x == 0 + p.move_to(aColStart, True) + p.line_to(cut / 2) + + for j in range(hCutCount - 1): + pos = aColStart + cut / 2 + ySpacing + (cut + ySpacing) * j + p.move_to(pos, True) + p.line_to(cut) + + p.move_to(aColStart + height - cut / 2, True) + p.line_to(cut / 2) + + + # B-column of cuts, offset by half the cut length; these cuts run in the opposite direction + bColStart = topLeft + xSpacing * cutIndex + xSpacing / 2 + for j in reversed(range(hCutCount)): + end = bColStart + ySpacing / 2 + (cut + ySpacing) * j + start = end + cut + if centralRib and hCutCount % 2 == 0 and cutIndex % 2 == 1: + holeTopLeft = start + (ySpacing - plateThickness - xSpacing) / 2 + if j == hCutCount // 2 - 1: + start -= plateThickness / 2 + p.move_to(holeTopLeft + plateThickness + xSpacing, True) + p.line_to(-xSpacing) + + p.move_to(holeTopLeft, True) + p.line_to(xSpacing) + + elif j == hCutCount // 2: + end += plateThickness / 2 + if j == 0: # first row + end += inset + elif j == hCutCount - 1: # last row + start -= inset + p.move_to(start, True) + p.line_to(end, True) + + #horizontal cuts (should be done last) + topHCuts.append((aColStart + inset, aColStart + inset + xSpacing)) + bottomHCuts.append((aColStart + height - inset, aColStart + height - inset + xSpacing)) + + # draw the outline + for c in reversed(bottomHCuts): + p.move_to(c[1], True) + p.line_to(c[0], True) + + p.move_to(topLeft + height, True) + p.line_to(-height) + + for c in topHCuts: + p.move_to(c[0], True) + p.line_to(c[1], True) + + p.move_to(topLeft + width, True) + p.line_to(height) + + + group = svg.group(parent) + p.path(group) + + notchEdges.append(w) + return notchEdges + +def _makeNotchedEllipse(center, ellipse, start_theta, thickness, notches, parent, invertNotches): + start_theta += pi # rotate 180 degrees to put the lid on the topside + + ell_radius = Coordinate(ellipse.x_radius, ellipse.y_radius) + ell_radius_t = ell_radius + Coordinate(thickness, thickness) + + theta = ellipse.theta_from_dist(start_theta, notches[0]) + ell_point = center + ellipse.coordinate_at_theta(theta) + prev_offset = ellipse.tangent(theta) * thickness + + p = svg.Path() + p.move_to(ell_point, absolute=True) + + for n in range(len(notches) - 1): + theta = ellipse.theta_from_dist(start_theta, notches[n + 1]) + ell_point = center + ellipse.coordinate_at_theta(theta) + notch_offset = ellipse.tangent(theta) * thickness + notch_point = ell_point + notch_offset + + if (n % 2 == 0) != invertNotches: + p.arc_to(ell_radius, ell_point, absolute=True) + prev_offset = notch_offset + + else: + p.line_to(prev_offset) + p.arc_to(ell_radius_t, notch_point, absolute=True) + p.line_to(-notch_offset) + + p.path(parent) + + + +class EllipticalBox(eff.Effect): + """ + Creates a new layer with the drawings for a parametrically generaded box. + """ + def __init__(self): + options = [ + ['unit', str, 'mm', 'Unit, one of: cm, mm, in, ft, ...'], + ['thickness', float, '3.0', 'Material thickness'], + ['width', float, '100', 'Box width'], + ['height', float, '100', 'Box height'], + ['depth', float, '100', 'Box depth'], + ['cut_dist', float, '1.5', 'Distance between cuts on the wrap around. Note that this value will change slightly to evenly fill up the available space.'], + ['auto_cut_dist', inkex.Boolean, 'false', 'Automatically set the cut distance based on the curvature.'], # in progress + ['cut_nr', int, '3', 'Number of cuts across the depth of the box.'], + ['lid_angle', float, '120', 'Angle that forms the lid (in degrees, measured from centerpoint of the ellipse)'], + ['body_ribcount', int, '0', 'Number of ribs in the body'], + ['lid_ribcount', int, '0', 'Number of ribs in the lid'], + ['invert_lid_notches', inkex.Boolean, 'false', 'Invert the notch pattern on the lid (keeps the lid from sliding sideways)'], + ['central_rib_lid', inkex.Boolean, 'false', 'Create a central rib in the lid'], + ['central_rib_body', inkex.Boolean, 'false', 'Create a central rib in the body'] + ] + eff.Effect.__init__(self, options) + + + def effect(self): + """ + Draws as basic elliptical box, based on provided parameters + """ + + # input sanity check + error = False + if min(self.options.height, self.options.width, self.options.depth) == 0: + eff.errormsg('Error: Dimensions must be non zero') + error = True + + if self.options.cut_nr < 1: + eff.errormsg('Error: Number of cuts should be at least 1') + error = True + + if (self.options.central_rib_lid or self.options.central_rib_body) and self.options.cut_nr % 2 == 1: + eff.errormsg('Error: Central rib is only valid with an even number of cuts') + error = True + + if self.options.unit not in self.knownUnits: + eff.errormsg('Error: unknown unit. '+ self.options.unit) + error = True + + if error: + exit() + + + # convert units + unit = self.options.unit + H = self.svg.unittouu(str(self.options.height) + unit) + W = self.svg.unittouu(str(self.options.width) + unit) + D = self.svg.unittouu(str(self.options.depth) + unit) + thickness = self.svg.unittouu(str(self.options.thickness) + unit) + cutSpacing = self.svg.unittouu(str(self.options.cut_dist) + unit) + cutNr = self.options.cut_nr + + doc_root = self.document.getroot() + layer = svg.layer(doc_root, 'Elliptical Box') + + ell = Ellipse(W/2, H/2) + + #body and lid + lidAngleRad = self.options.lid_angle * 2 * pi / 360 + lid_start_theta = ell.theta_at_angle(pi / 2 - lidAngleRad / 2) + lid_end_theta = ell.theta_at_angle(pi / 2 + lidAngleRad / 2) + + lidLength = ell.dist_from_theta(lid_start_theta, lid_end_theta) + bodyLength = ell.dist_from_theta(lid_end_theta, lid_start_theta) + + # do not put elements right at the edge of the page + xMargin = 3 + yMargin = 3 + + bottom_grp = svg.group(layer) + top_grp = svg.group(layer) + + bodyNotches = _makeCurvedSurface(Coordinate(xMargin, yMargin), bodyLength, D, cutSpacing, cutNr, + thickness, bottom_grp, False, self.options.central_rib_body) + lidNotches = _makeCurvedSurface(Coordinate(xMargin, D + 2 * yMargin), lidLength, D, cutSpacing, cutNr, + thickness, top_grp, not self.options.invert_lid_notches, + self.options.central_rib_lid) + + # create elliptical sides + sidesGrp = svg.group(layer) + + elCenter = Coordinate(xMargin + thickness + W / 2, 2 * D + H / 2 + thickness + 3 * yMargin) + + # indicate the division between body and lid + p = svg.Path() + if self.options.invert_lid_notches: + p.move_to(elCenter + ell.coordinate_at_theta(lid_start_theta + pi), True) + p.line_to(elCenter, True) + p.line_to(elCenter + ell.coordinate_at_theta(lid_end_theta + pi), True) + + else: + angleA = ell.theta_from_dist(lid_start_theta, lidNotches[1]) + angleB = ell.theta_from_dist(lid_start_theta, lidNotches[-2]) + + p.move_to(elCenter + ell.coordinate_at_theta(angleA + pi), True) + p.line_to(elCenter, True) + p.line_to(elCenter + ell.coordinate_at_theta(angleB + pi), True) + + _makeNotchedEllipse(elCenter, ell, lid_end_theta, thickness, bodyNotches, sidesGrp, False) + _makeNotchedEllipse(elCenter, ell, lid_start_theta, thickness, lidNotches, sidesGrp, + not self.options.invert_lid_notches) + + p.path(sidesGrp, greenStyle) + + # ribs + if self.options.central_rib_lid or self.options.central_rib_body: + innerRibCenter = Coordinate(xMargin + thickness + W / 2, 2 * D + 1.5 * (H + 2 *thickness) + 4 * yMargin) + innerRibGrp = svg.group(layer) + + outerRibCenter = Coordinate(2 * xMargin + 1.5 * (W + 2 * thickness), + 2 * D + 1.5 * (H + 2 * thickness) + 4 * yMargin) + outerRibGrp = svg.group(layer) + + + if self.options.central_rib_lid: + _makeNotchedEllipse(innerRibCenter, ell, lid_start_theta, thickness, lidNotches, innerRibGrp, False) + _makeNotchedEllipse(outerRibCenter, ell, lid_start_theta, thickness, lidNotches, outerRibGrp, True) + + if self.options.central_rib_body: + spacer = Coordinate(0, 10) + _makeNotchedEllipse(innerRibCenter + spacer, ell, lid_end_theta, thickness, bodyNotches, innerRibGrp, False) + _makeNotchedEllipse(outerRibCenter + spacer, ell, lid_end_theta, thickness, bodyNotches, outerRibGrp, True) + + if self.options.central_rib_lid or self.options.central_rib_body: + svg.text(sidesGrp, elCenter, 'side (duplicate this)') + svg.text(innerRibGrp, innerRibCenter, 'inside rib') + svg.text(outerRibGrp, outerRibCenter, 'outside rib') + +if __name__ == '__main__': + EllipticalBox().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/BezierCurve.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/BezierCurve.py new file mode 100644 index 00000000..7423eb0c --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/BezierCurve.py @@ -0,0 +1,92 @@ +from __future__ import division + +from PathSegment import * +from math import hypot + +class BezierCurve(PathSegment): + nr_points = 10 + def __init__(self, P): # number of points is limited to 3 or 4 + + if len(P) == 3: # quadratic + self.B = lambda t : (1 - t)**2 * P[0] + 2 * (1 - t) * t * P[1] + t**2 * P[2] + self.Bd = lambda t : 2 * (1 - t) * (P[1] - P[0]) + 2 * t * (P[2] - P[1]) + self.Bdd = lambda t : 2 * (P[2] - 2 * P[1] + P[0]) + elif len(P) == 4: #cubic + self.B = lambda t : (1 - t)**3 * P[0] + 3 * (1 - t)**2 * t * P[1] + 3 * (1 - t) * t**2 * P[2] + t**3 * P[3] + self.Bd = lambda t : 3 * (1 - t)**2 * (P[1] - P[0]) + 6 * (1 - t) * t * (P[2] - P[1]) + 3 * t**2 * (P[3] - P[2]) + self.Bdd = lambda t : 6 * (1 - t) * (P[2] - 2 * P[1] + P[0]) + 6 * t * (P[3] - 2 * P[2] + P[1]) + + self.tangent = lambda t : self.Bd(t) + # self.curvature = lambda t : (Bd(t).x * Bdd(t).y - Bd(t).y * Bdd(t).x) / hypot(Bd(t).x, Bd(t).y)**3 + + + self.distances = [0] # cumulative distances for each 't' + prev_pt = self.B(0) + for i in range(self.nr_points): + t = (i + 1) / self.nr_points + pt = self.B(t) + self.distances.append(self.distances[-1] + hypot(prev_pt.x - pt.x, prev_pt.y - pt.y)) + prev_pt = pt + self._length = self.distances[-1] + + def curvature(self, t): + n = self.Bd(t).x * self.Bdd(t).y - self.Bd(t).y * self.Bdd(t).x + d = hypot(self.Bd(t).x, self.Bd(t).y)**3 + if d == 0: + return n * float('inf') + else: + return n / d + + @classmethod + def quadratic(cls, start, c, end): + bezier = cls() + + @classmethod + def cubic(cls, start, c1, c2, end): + bezier = cls() + + def __make_eq__(self): + pass + + @property + def length(self): + return self._length + + def subdivide(self, part_length, start_offset=0): + nr_parts = int((self.length - start_offset) // part_length) + k_o = start_offset / self.length + k2t = lambda k : k_o + k * part_length / self.length + points = [self.pathpoint_at_t(k2t(k)) for k in range(nr_parts + 1)] + return(points, self.length - points[-1].c_dist) + + + def pathpoint_at_t(self, t): + """pathpoint on the curve from t=0 to point at t.""" + step = 1 / self.nr_points + pt_idx = int(t / step) + length = self.distances[pt_idx] + ip_fact = (t - pt_idx * step) / step + + if ip_fact > 0 and t < 1: # not a perfect match, need to interpolate + length += ip_fact * (self.distances[pt_idx + 1] - self.distances[pt_idx]) + + return PathPoint(t, self.B(t), self.tangent(t), self.curvature(t), length) + + + def t_at_length(self, length): + """interpolated t where the curve is at the given length""" + if length == self.length: + return 1 + i_small = 0 + i_big = self.nr_points + 1 + + while i_big - i_small > 1: # binary search + i_half = i_small + (i_big - i_small) // 2 + if self.distances[i_half] <= length: + i_small = i_half + else: + i_big = i_half + + small_dist = self.distances[i_small] + return i_small / self.nr_points + (length - small_dist) * (self.distances[i_big] - small_dist) # interpolated length + diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Coordinate.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Coordinate.py new file mode 100644 index 00000000..298d1579 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Coordinate.py @@ -0,0 +1,104 @@ +from math import * + +def inner_product(a, b): + return a.x * b.x + a.y * b.y + +class Coordinate(object): + """ + Basic (x, y) coordinate class (or should it be called vector?) which allows some simple operations. + """ + def __init__(self, x, y): + self.x = float(x) + self.y = float(y) + + #polar coordinates + @property + def t(self): + angle = atan2(self.y, self.x) + if angle < 0: + angle += pi * 2 + return angle + + @t.setter + def t(self, value): + length = self.r + self.x = cos(value) * length + self.y = sin(value) * length + + + @property + def r(self): + return hypot(self.x, self.y) + + @r.setter + def r(self, value): + angle = self.t + self.x = cos(angle) * value + self.y = sin(angle) * value + + def __repr__(self): + return self.__str__() + + def __str__(self): + return "(%f, %f)" % (self.x, self.y) + + def __eq__(self, other): + return self.x == other.x and self.y == other.y + + def __add__(self, other): + return Coordinate(self.x + other.x, self.y + other.y) + + def __sub__(self, other): + return Coordinate(self.x - other.x, self.y - other.y) + + def __mul__(self, factor): + return Coordinate(self.x * factor, self.y * factor) + + def __neg__(self): + return Coordinate(-self.x, -self.y) + + def __rmul__(self, other): + return self * other + + def __div__(self, quotient): + return Coordinate(self.x / quotient, self.y / quotient) + + def __truediv__(self, quotient): + return self.__div__(quotient) + + def dot(self, other): + """dot product""" + return self.x * other.x + self.y * other.y + + def cross_norm(self, other): + """"the norm of the cross product""" + self.x * other.y - self.y * other.x + + def close_enough_to(self, other, limit=1E-9): + return (self - other).r < limit + + +class IntersectionError(ValueError): + """Raised when two lines do not intersect.""" + +def on_segment(pt, start, end): + """Check if pt is between start and end. The three points are presumed to be collinear.""" + pt -= start + end -= start + ex, ey = end.x, end.y + px, py = pt.x, pt.y + px *= cmp(ex, 0) + py *= cmp(ey, 0) + return px >= 0 and px <= abs(ex) and py >= 0 and py <= abs(ey) + +def intersection (s1, e1, s2, e2, on_segments = True): + D = (s1.x - e1.x) * (s2.y - e2.y) - (s1.y - e1.y) * (s2.x - e2.x) + if D == 0: + raise IntersectionError("Lines from {s1} to {e1} and {s2} to {e2} are parallel") + N1 = s1.x * e1.y - s1.y * e1.x + N2 = s2.x * e2.y - s2.y * e2.x + I = ((s2 - e2) * N1 - (s1 - e1) * N2) / D + + if on_segments and not (on_segment(I, s1, e1) and on_segment(I, s2, e2)): + raise IntersectionError("Intersection {0} is not on line segments [{1} -> {2}] [{3} -> {4}]".format(I, s1, e1, s2, e2)) + return I diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Effect.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Effect.py new file mode 100644 index 00000000..e38a4f61 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Effect.py @@ -0,0 +1,36 @@ +import inkex + +errormsg = inkex.errormsg +debug = inkex.debug + +class Effect(inkex.Effect): + """ + Provides some extra features to inkex.Effect: + - Allows you to pass a list of options in stead of setting them one by one + - acces to unittouu() that is compatible between Inkscape versions 0.48 and 0.91 + """ + def __init__(self, options=None): + inkex.Effect.__init__(self) + self.knownUnits = ['in', 'pt', 'px', 'mm', 'cm', 'm', 'km', 'pc', 'yd', 'ft'] + + if options != None: + for opt in options: + if len(opt) == 2: + self.arg_parser.add_argument('--' + opt[0], type = opt[1]) + else: + self.arg_parser.add_argument('--' + opt[0], type = opt[1],default = opt[2], help = opt[3]) + + try: + inkex.Effect.unittouu # unitouu has moved since Inkscape 0.91 + except AttributeError: + try: + def unittouu(self, unit): + return inkex.unittouu(unit) + except AttributeError: + pass + + def effect(self): + """ + + """ + pass diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Ellipse.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Ellipse.py new file mode 100644 index 00000000..3e0370eb --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Ellipse.py @@ -0,0 +1,157 @@ +from __future__ import division +from math import * +from inkscape_helper.Coordinate import Coordinate + +class Ellipse(object): + """Used as a base class for EllipticArc.""" + nr_points = 1024 #used for piecewise linear circumference calculation (ellipse circumference is tricky to calculate) + # approximate circumfere: c = pi * (3 * (a + b) - sqrt(10 * a * b + 3 * (a ** 2 + b ** 2))) + + def __init__(self, x_radius, y_radius): + self.y_radius = y_radius + self.x_radius = x_radius + self.distances = [0] + theta = 0 + self.angle_step = 2 * pi / self.nr_points + + for i in range(self.nr_points): + prev_dist = self.distances[-1] + prev_coord = self.coordinate_at_theta(theta) + theta += self.angle_step + x, y = x_radius * cos(theta), y_radius * sin(theta) + self.distances.append(prev_dist + hypot(prev_coord.x - x, prev_coord.y - y)) + + @property + def circumference(self): + return self.distances[-1] + + def curvature(self, theta): + c = self.coordinate_at_theta(theta) + return (self.x_radius*self.y_radius)/((cos(theta)**2*self.y_radius**2 + sin(theta)**2*self.x_radius**2)**(3/2)) + + def tangent(self, theta): + angle = self.theta_at_angle(theta) + return Coordinate(cos(angle), sin(angle)) + + def coordinate_at_theta(self, theta): + """Coordinate of the point at theta.""" + return Coordinate(self.x_radius * cos(theta), self.y_radius * sin(theta)) + + def dist_from_theta(self, theta_start, theta_end): + """Distance accross the surface from point at angle theta_end to point at angle theta_end. Measured in positive (CCW) sense.""" + #print 'thetas ', theta_start, theta_end # TODO: figure out why are there so many with same start and end? + # make sure thetas are between 0 and 2 * pi + theta_start %= 2 * pi + theta_end %= 2 * pi + i1 = int(theta_start / self.angle_step) + p1 = theta_start % self.angle_step + l1 = self.distances[i1 + 1] - self.distances[i1] + i2 = int(theta_end / self.angle_step) + p2 = theta_end % self.angle_step + l2 = self.distances[i2 + 1] - self.distances[i2] + if theta_start <= theta_end: + len = self.distances[i2] - self.distances[i1] + l2 * p2 - l1 * p1 + else: + len = self.circumference + self.distances[i2] - self.distances[i1] + return len + + def theta_from_dist(self, theta_start, dist): + """Returns the angle that you get when starting at theta_start and moving a distance (dist) in CCW direction""" + si = int(theta_start / self.angle_step) % self.nr_points + p = theta_start % self.angle_step + + piece_length = self.distances[si + 1] - self.distances[si] + start_dist = self.distances[si] + p * piece_length + end_dist = dist + start_dist + + if end_dist > self.circumference: # wrap around zero angle + end_dist -= self.circumference + + min_idx = 0 + max_idx = self.nr_points + while max_idx - min_idx > 1: # binary search + half_idx = min_idx + (max_idx - min_idx) // 2 + if self.distances[half_idx] < end_dist: + min_idx = half_idx + else: + max_idx = half_idx + step_dist = self.distances[max_idx] - self.distances[min_idx] + return (min_idx + (end_dist - self.distances[min_idx]) / step_dist) * self.angle_step + + def theta_at_angle(self, angle): + cf = 0 + if angle > pi / 2: + cf = pi + if angle > 3 * pi / 2: + cf = 2 * pi + return atan(self.x_radius/self.y_radius * tan(angle)) + cf + + def skewTransform(self, l, a2, b2): + x0 = a2**2 + x1 = b2**2 + x2 = l**2 + x3 = x0*x2 + x4 = x0 - x1 + x3 + x5 = 2*a2*b2 + x6 = x0 + x1 + x3 + x7 = sqrt((-x5 + x6)*(x5 + x6)) + x9 = 1/(x4 - x7) + x10 = x6 - x7 + x11 = l*x10 + x12 = b2**4 + x13 = 4*x12 + x14 = x10**2 + x15 = 4*x1 + x16 = sqrt(-x10*x15 + x13 + x14*x2 + x14) + x17 = 2*atan(x9*(x11 - x16)) + x18 = sqrt(2) + x19 = sqrt(x10) + x20 = b2*x18*x19/2 + x21 = x0/2 + x22 = x1/2 + x23 = x2*x21 + x24 = x21 - x22 + x23 + x25 = x7/2 + x27 = 1/(x24 - x25) + x28 = x21 + x22 + x23 + x29 = x28 - x25 + x30 = l*x29 + x31 = x14/4 + x32 = 2*x1 + x33 = sqrt(x12 + x2*x31 - x29*x32 + x31) + x34 = 2*atan(x27*(x30 - x33)) + x35 = x20*sqrt(1/(-x1*cos(x34)**2 + x29))*sin(x34) + x36 = x18/2 + x37 = -x19*x36 + x39 = 2*atan(x9*(x11 + x16)) + x40 = 2*atan(x27*(x30 + x33)) + x41 = x20*sqrt(1/(-x1*cos(x40)**2 + x29))*sin(x40) + x42 = 1/(x4 + x7) + x43 = x6 + x7 + x44 = l*x43 + x45 = x43**2 + x46 = sqrt(x13 - x15*x43 + x2*x45 + x45) + x47 = 2*atan(x42*(x44 - x46)) + x48 = sqrt(x43) + x49 = b2*x18*x48/2 + x50 = 1/(x24 + x25) + x51 = x25 + x28 + x52 = l*x51 + x53 = x45/4 + x54 = sqrt(x12 + x2*x53 - x32*x51 + x53) + x55 = 2*atan(x50*(x52 - x54)) + x56 = x49*sqrt(1/(-x1*cos(x55)**2 + x51))*sin(x55) + x57 = -x36*x48 + x59 = 2*atan(x42*(x44 + x46)) + x60 = 2*atan(x50*(x52 + x54)) + x61 = x49*sqrt(1/(-x1*cos(x60)**2 + x51))*sin(x60) + + #solutions (alpha, a1, b1) + (x17, -x35, x19*x36) + (x17, x35, x37) + (x39, -x41, x19*x36) + (x39, x41, x37) + (x47, -x56, x36*x48) + (x47, x56, x57) + (x59, -x61, x36*x48) + (x59, x61, x57) diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/EllipticArc.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/EllipticArc.py new file mode 100644 index 00000000..0353d118 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/EllipticArc.py @@ -0,0 +1,125 @@ +from inkscape_helper.PathSegment import * +from inkscape_helper.Coordinate import Coordinate +from inkscape_helper.Ellipse import Ellipse + +from math import sqrt, pi +import copy + + +class EllipticArc(PathSegment): + + ell_dict = {} + + def __init__(self, start, end, rx, ry, axis_rot, pos_dir=True, large_arc=False): + self.rx = rx + self.ry = ry + # calculate ellipse center + # the center is on two ellipses one with its center at the start point, the other at the end point + # for simplicity take the one ellipse at the origin and the other with offset (tx, ty), + # find the center and translate back to the original offset at the end + axis_rot *= pi / 180 # convert to radians + # start and end are mutable objects, copy to avoid modifying them + r_start = copy.copy(start) + r_end = copy.copy(end) + r_start.t -= axis_rot + r_end.t -= axis_rot + end_o = r_end - r_start # offset end vector + + tx = end_o.x + ty = end_o.y + + # some helper variables for the intersection points + # used sympy to come up with the equations + ff = (rx**2*ty**2 + ry**2*tx**2) + cx = rx**2*ry*tx*ty**2 + ry**3*tx**3 + cy = rx*ty*ff + sx = rx*ty*sqrt(4*rx**4*ry**2*ty**2 - rx**4*ty**4 + 4*rx**2*ry**4*tx**2 - 2*rx**2*ry**2*tx**2*ty**2 - ry**4*tx**4) + sy = ry*tx*sqrt(-ff*(-4*rx**2*ry**2 + rx**2*ty**2 + ry**2*tx**2)) + + # intersection points + c1 = Coordinate((cx - sx) / (2*ry*ff), (cy + sy) / (2*rx*ff)) + c2 = Coordinate((cx + sx) / (2*ry*ff), (cy - sy) / (2*rx*ff)) + + if end_o.cross_norm(c1 - r_start) < 0: # c1 is to the left of end_o + left = c1 + right = c2 + else: + left = c2 + right = c1 + + if pos_dir != large_arc: #center should be on the left of end_o + center_o = left + else: #center should be on the right of end_o + center_o = right + + #re-use ellipses with same rx, ry to save some memory + if (rx, ry) in self.ell_dict: + self.ellipse = self.ell_dict[(rx, ry)] + else: + self.ellipse = Ellipse(rx, ry) + self.ell_dict[(rx, ry)] = self.ellipse + + self.start = start + self.end = end + self.axis_rot = axis_rot + self.pos_dir = pos_dir + self.large_arc = large_arc + self.start_theta = self.ellipse.theta_at_angle((-center_o).t) + self.end_theta = self.ellipse.theta_at_angle((end_o - center_o).t) + + # translate center back to original offset + center_o.t += axis_rot + self.center = center_o + start + + @property + def length(self): + return self.ellipse.dist_from_theta(self.start_theta, self.end_theta) + + def t_to_theta(self, t): + """convert t (always between 0 and 1) to angle theta""" + start = self.start_theta + end = self.end_theta + + if self.pos_dir and end < start: + end += 2 * pi + + if not self.pos_dir and start < end: + end -= 2 * pi + arc_size = end - start + + return (start + (end - start) * t) % (2 * pi) + + def theta_to_t(self, theta): + full_arc_size = (self.end_theta - self.start_theta + 2 * pi) % (2 * pi) + theta_arc_size = (theta - self.start_theta + 2 * pi) % (2 * pi) + return theta_arc_size / full_arc_size + + def curvature(self, t): + theta = self.t_to_theta(t) + return self.ellipse.curvature(theta) + + def tangent(self, t): + theta = self.t_to_theta(t) + return self.ellipse.tangent(theta) + + def t_at_length(self, length): + """interpolated t where the curve is at the given length""" + theta = self.ellipse.theta_from_dist(length, self.start_theta) + return self.theta_to_t(theta) + + def length_at_t(self, t): + return self.ellipse.dist_from_theta(self.start_theta, self.t_to_theta(t)) + + def pathpoint_at_t(self, t): + """pathpoint on the curve from t=0 to point at t.""" + centered = self.ellipse.coordinate_at_theta(self.t_to_theta(t)) + centered.t += self.axis_rot + return PathPoint(t, centered + self.center, self.tangent(t), self.curvature(t), self.length_at_t(t)) + + # identical to Bezier code + def subdivide(self, part_length, start_offset=0): + nr_parts = int((self.length - start_offset) // part_length) + k_o = start_offset / self.length + k2t = lambda k : k_o + k * part_length / self.length + points = [self.pathpoint_at_t(k2t(k)) for k in range(nr_parts + 1)] + return(points, self.length - points[-1].c_dist) diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Line.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Line.py new file mode 100644 index 00000000..a64a88dc --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Line.py @@ -0,0 +1,25 @@ +from inkscape_helper.PathSegment import * + +class Line(PathSegment): + + def __init__(self, start, end): + self.start = start + self.end = end + self.pp = lambda t : PathPoint(t, self.start + t * (self.end - self.start), self.end - self.start, 0, t * self.length) + + @property + def length(self): + return (self.end - self.start).r + + def subdivide(self, part_length, start_offset=0): # note: start_offset should be smaller than part_length + nr_parts = int((self.length - start_offset) // part_length) + k_o = start_offset / self.length + k2t = lambda k : k_o + k * part_length / self.length + points = [self.pp(k2t(k)) for k in range(nr_parts + 1)] + return(points, self.length - points[-1].c_dist) + + def pathpoint_at_t(self, t): + return self.pp(t) + + def t_at_length(self, length): + return length / self.length diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Matrix.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Matrix.py new file mode 100644 index 00000000..188ef276 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Matrix.py @@ -0,0 +1,49 @@ +import copy + +class Matrix(object): + """ + Matrix class with some basic matrix operations + """ + def __init__(self, array): + columns = len(array[0]) + for r in array[1:]: #make sure each row has same number of columns + assert len(r) == columns + + self.array = copy.copy(array) + self.rows = len(array) + self.columns = columns + + def __repr__(self): + return self.__str__() + + def __str__(self): + a = ['[' + ', '.join([str(i) for i in r]) + ']' for r in self.array] + return '[\n' + ',\n'.join(a) + '\n]' + + def minor(self, row, col): + return Matrix([[self[r][c] for c in range(self.columns) if c != col] for r in range(self.rows) if r != row]) + + def det(self): + if self.rows != self.columns: + raise TypeError, 'Can only calculate determinant for a square matrix' + if self.rows == 1: + return self[0][0] + if self.rows == 2: + return self[0][0] * self[1][1] - self[0][1] * self[1][0] + det = 0 + for i in range(self.columns): + det += (-1)**i * self.array[0][i] * self.minor(0, i).det() + return det + + def __getitem__(self, index): + return self.array[index] + + def __add__(self, other): + if self.rows != other.rows or self.columns != other.columns: + raise TypeError, 'Both matrices should have equal dimensions. Is ({} x {}) and ({} x {}).'.format(self.rows, self.columns, other.rows, other.columns) + return Matrix([[self[r][c] + other[r][c] for c in range(self.columns)] for r in range(self.rows)]) + + def __mul__(self, other): + if self.columns != other.rows: + raise TypeError, 'Left matrix should have same number of columns as right matrix has rows. Is ({} x {}) and ({} x {}).'.format(self.rows, self.columns, other.rows, other.columns) + return Matrix([[sum([self[r][i] * other[i][c] for i in range(self.columns)]) for c in range(other.columns)] for r in range(self.rows)]) diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/PathSegment.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/PathSegment.py new file mode 100644 index 00000000..38673ab1 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/PathSegment.py @@ -0,0 +1,29 @@ +from collections import namedtuple + +PathPoint = namedtuple('PathPoint', 't coord tangent curvature c_dist') + +class PathSegment(object): + + def __init__(self): + raise NotImplementedError + + @property + def lenth(self): + raise NotImplementedError + + def subdivide(self, part_length): + raise NotImplementedError + + def pathpoint_at_t(self, t): + raise NotImplementedError + + def t_at_length(self, length): + raise NotImplementedError + + # also need: + + # find a way do do curvature dependent spacing + # - based on deviation from a standard radius? + # - or ratio between thickness and curvature? + #def point_at_distance(d): + # pass diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/SVG.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/SVG.py new file mode 100644 index 00000000..e3a300fe --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/SVG.py @@ -0,0 +1,93 @@ +import inkex +import simplestyle +from lxml import etree + +def _format_1st(command, is_absolute): + """Small helper function for the Path class""" + return command.upper() if is_absolute else command.lower() + +default_style = str(inkex.Style( + {'stroke': '#000000', + 'stroke-width': '0.1', + 'fill': 'none' + })) + +red_style = str(inkex.Style( + {'stroke': '#FF0000', + 'stroke-width': '0.1', + 'fill': 'none' + })) + +green_style = str(inkex.Style( + {'stroke': '#00FF00', + 'stroke-width': '0.1', + 'fill': 'none' + })) + +blue_style = str(inkex.Style( + {'stroke': '#0000FF', + 'stroke-width': '0.1', + 'fill': 'none' + })) + +def layer(parent, layer_name): + layer = etree.SubElement(parent, 'g') + layer.set(inkex.addNS('label', 'inkscape'), layer_name) + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + return layer + +def group(parent): + return etree.SubElement(parent, 'g') + +def text(parent, coordinate, txt, style=default_style): + text = etree.Element(inkex.addNS('text', 'svg')) + text.text = txt + text.set('x', str(coordinate.x)) + text.set('y', str(coordinate.y)) + style = {'text-align': 'center', 'text-anchor': 'middle'} + text.set('style', str(inkex.Style(style))) + parent.append(text) + +class Path(object): + """ + Generates SVG paths + """ + def __init__(self): + self.nodes = [] + + def move_to(self, coord, absolute=False): + self.nodes.append("{0} {1} {2}".format(_format_1st('m', absolute), coord.x, coord.y)) + + def line_to(self, coord, absolute=False): + self.nodes.append("{0} {1} {2}".format(_format_1st('l', absolute), coord.x, coord.y)) + + def h_line_to(self, dist, absolute=False): + self.nodes.append("{0} {1}".format(_format_1st('h', absolute), dist)) + + def v_line_to(self, dist, absolute=False): + self.nodes.append("{0} {1}".format(_format_1st('v', absolute), dist)) + + def arc_to(self, radius, coord, rotation=0, pos_sweep=True, large_arc=False, absolute=False): + self.nodes.append("{0} {1} {2} {3} {4} {5} {6} {7}" + .format(_format_1st('a', absolute), radius.x, radius.y, rotation, + 1 if large_arc else 0, 1 if pos_sweep else 0, coord.x, coord.y)) + + def close(self): + self.nodes.append('z') + + def path(self, parent, style=default_style): + attribs = {'style': style, + 'd': ' '.join(self.nodes)} + etree.SubElement(parent, inkex.addNS('path', 'svg'), attribs) + + def curve(self, parent, segments, style, closed=True): + pathStr = ' '.join(segments) + if closed: + pathStr += ' z' + attributes = { + 'style': style, + 'd': pathStr} + etree.SubElement(parent, inkex.addNS('path', 'svg'), attributes) + + def remove_last(self): + self.nodes.pop() diff --git a/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/__init__.py b/extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/extensions/fablabchemnitz/box_maker_elliptical_cone/.gitignore b/extensions/fablabchemnitz/box_maker_elliptical_cone/.gitignore new file mode 100644 index 00000000..6b112149 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_cone/.gitignore @@ -0,0 +1 @@ +/DebugEllConicBox.txt diff --git a/extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.inx b/extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.inx new file mode 100644 index 00000000..94c79e2c --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.inx @@ -0,0 +1,37 @@ + + + Box Maker - Elliptical Cone + fablabchemnitz.de.box_maker_elliptical_cone + + + + + + + + + + + + + 3.0 + 60.0 + 90.0 + 0.5 + 50.0 + 2 + 0 + true + true + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.py b/extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.py new file mode 100644 index 00000000..8c4a8f8d --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.py @@ -0,0 +1,703 @@ +#!/usr/bin/env python3 +import inkex +import math +import numpy as np +from lxml import etree + +sizeTab = 10000 #Any value greater than 1000 should give goo results + +objStyle = str(inkex.Style( + {'stroke': '#000000', + 'stroke-width': 0.1, + 'fill': 'none' + })) + + +objStyleStart = str(inkex.Style( + {'stroke': '#FF0000', + 'stroke-width': 0.1, + 'fill': 'none' + })) + +def lengthCurve(Xarray, Yarray, npoints): + ''' + Give length of a path between point of a curve + Beware, go from 0 to Index included, so the arrays should have at least npoints+1 elements + ''' + x = Xarray[0] + y = Yarray[0] + Length = 0.0 + i = 1 + while i <= npoints: + Length += math.hypot((Xarray[i] - x), (Yarray[i] - y)) + x = Xarray[i] + y = Yarray[i] + i += 1 + return Length + +class inkcape_polar: + def __init__(self, Offset, group): + self.offsetX = Offset[0] + self.offsetY = Offset[1] + self.Path = '' + self.group = group + + def MoveTo(self, r, angle): + #Return string for moving to point given as parameter, with polar coordinates radius, angle + self.Path += ' M ' + str(round(r*math.cos(angle)-self.offsetX, 3)) + ',' + str(round(r*math.sin(angle)-self.offsetY, 3)) + + def MoveTo_cartesian(self, pt): + #Return string for moving to point given as parameter + self.Path += ' M ' + str(round(pt[0]-self.offsetX, 3)) + ',' + str(round(pt[1]-self.offsetY, 3)) + + + def LineTo_cartesian(self, pt): + #Return string for moving to point given as parameter + self.Path += ' L ' + str(round(pt[0]-self.offsetX, 3)) + ',' + str(round(pt[1]-self.offsetY, 3)) + + def LineTo(self, r, angle): + #Retourne chaine de caractères donnant la position du point avec des coordonnées polaires + self.Path += ' L ' + str(round(r*math.cos(angle)-self.offsetX, 3)) + ',' + str(round(r*math.sin(angle)-self.offsetY, 3)) + + def Line(self, r1, angle1, r2, angle2): + #Retourne chaine de caractères donnant la position du point avec des coordonnées polaires + self.Path += ' M ' + str(round(r1*math.cos(angle1)-self.offsetX, 3)) + ',' + str(round(r1*math.sin(angle1)-self.offsetY, 3)) + ' L ' + str(round(r2*math.cos(angle2)-self.offsetX, 3)) + ',' + str(round(r2*math.sin(angle2)-self.offsetY, 3)) + + def GenPath(self): + line_attribs = {'style': objStyle, 'd': self.Path} + etree.SubElement(self.group, inkex.addNS('path', 'svg'), line_attribs) + +class BoxMakerEllipticalCone(inkex.EffectExtension): + """ + Creates a new layer with the drawings for a parametrically generaded box. + """ + def __init__(self): + inkex.Effect.__init__(self) + self.knownUnits = ['in', 'pt', 'px', 'mm', 'cm', 'm', 'km', 'pc', 'yd', 'ft'] + self.arg_parser.add_argument('--unit', default = 'mm', help = 'Unit, should be one of ') + self.arg_parser.add_argument('--thickness', type = float, default = '3.0', help = 'Material thickness') + self.arg_parser.add_argument('--d1', type = float, default = '50.0', help = 'Small ellipse diameter') + self.arg_parser.add_argument('--d2', type = float, default = '100.0', help = 'Large ellipse diameter') + self.arg_parser.add_argument('--eccentricity', type = float, default = '1.0', help = 'Ratio minor vs major axis, should be less than 1') + self.arg_parser.add_argument('--zc', type = float, default = '50.0', help = 'Cone height') + self.arg_parser.add_argument('--notch_interval', type = int, default = '2', help = 'Interval between notches, should be even') + self.arg_parser.add_argument('--cut_position', type = int, default = '0', help = 'Cut position angle') + self.arg_parser.add_argument('--inner_size', type = inkex.Boolean, default = 'true', help = 'Dimensions are internal') + self.arg_parser.add_argument('--Mode_Debug', type = inkex.Boolean, default = 'false', help = 'Output Debug information in file') + + # Create list of points for the ellipse, will be filled later + self.xEllipse = np.zeros(sizeTab+1) #X coordiantes + self.yEllipse = np.zeros(sizeTab+1) # Y coordinates + self.lEllipse = np.zeros(sizeTab+1) # Length of curve until this point + + def unittouu(self, unit): + return inkex.unittouu(unit) + + def DebugMsg(self, s): + if self.fDebug: + self.fDebug.write(s) + + def length2Angle(self, StartIdx, Position): + ''' + Return the first index which is near the requested position. + Start search at StartIdx to optimize computation + ''' + while Position > self.lEllipse[StartIdx]: + StartIdx += 1 + if StartIdx >= sizeTab: + return sizeTab + # Now return value between StartIdx and StartIdx - 1 which is nearer + if StartIdx == 0: + return 0 + if abs(Position - self.lEllipse[StartIdx]) > abs(Position - self.lEllipse[StartIdx-1]): + return StartIdx - 1 + return StartIdx + + def ellipse_ext(self, a, b, alpha, e): + ''' + Compute the point which is on line orthogonal to ellipse (a, b) and angle alpha and on the ellipse of parameters ( a+e, b+e) + As equations are quite complex, use an approximation method + ''' + Slope = math.atan2(b*math.cos(alpha), -a*math.sin(alpha)) #Ellipse slope in point at angle alpha + Ortho = Slope - math.pi/2 # Use -pi/2 because e positive means second ellipse larger + ''' The point is on the line x = a*cos(alpha) + L*cos(Ortho), y= b*sin(alpha) + L*sin(Ortho) + We have to determine L + For this, change L and compare with equation of larger ellipse + Start with L = e + Result should lie between L/2 and 2L + ''' + #self.DebugMsg("Enter ellipse_ext"+str((a,b,alpha,e))+" Slope="+str(Slope*180/math.pi)+" Ortho="+str(Ortho*180/math.pi)+'\n') + L = e + step = e + ntry = 1 + x = a*math.cos(alpha) + L*math.cos(Ortho) + y = b*math.sin(alpha) + L*math.sin(Ortho) + # Compute difference which the error between this point and the large ellipse + distance = (x*x)/((a+e)*(a+e)) + (y*y)/((b+e)*(b+e)) - 1 + #self.DebugMsg("ellipse_ext First try with L=e pt="+str((x,y))+" distance="+str(distance)+'\n') + while abs(distance) > 0.001 and step >0.001: + if distance > 0: + #L is too large, decrease by step/2 + step /= 2 + L -= step + else: + #L is not large enough, increase by step/2 + step /= 2 + L += step + ntry += 1 + x = a*math.cos(alpha) + L*math.cos(Ortho) + y = b*math.sin(alpha) + L*math.sin(Ortho) + # Compute difference which the error between this point and the large ellipse + distance = (x*x)/((a+e)*(a+e)) + (y*y)/((b+e)*(b+e)) - 1 + #self.DebugMsg(" try "+str(ntry)+" with L="+str(L)+" pt="+str((x,y))+" distance="+str(distance)+'\n') + if distance > 0.001: + self.DebugMsg("Problem, solution do not converge. Error is "+str(distance)+" after "+str(ntry)+" tries\n") + return(x, y) + #self.DebugMsg("Solution converge after "+str(ntry)+" tries. Error is "+str(distance)+"\n") + return(x, y) + + def Coordinates_Step_SubStep(self, step, substep): + ''' + Return the radius and angle on resulting curve for step i, substep j + ''' + if step == self.num_notches: + # Specific case for last notch on curve + if substep == 0: #Last position on curve + return (self.ResultingCurve_R[sizeTab], self.ResultingCurve_Theta[sizeTab]) + else: + AngleEllipse = self.Notches_Angle_ellipse[self.Offset_Notch][1] - self.Offset_Ellipse #To match first step + if AngleEllipse < 0: + AngleEllipse += sizeTab + return(self.ResultingCurve_R[AngleEllipse], self.ResultingCurve_Theta[AngleEllipse]+self.ResultingCurve_Theta[sizeTab]) + new_step = step + self.Offset_Notch + if new_step >= self.num_notches: + new_step -= self.num_notches + AngleEllipse = self.Notches_Angle_ellipse[new_step][substep] - self.Offset_Ellipse + if AngleEllipse < 0: + AngleEllipse += sizeTab + if substep == 0 or step == 0: + self.DebugMsg("Coordinates_Step_SubStep"+str((step, substep))+" --> AngleEllipse ="+str(self.Notches_Angle_ellipse[new_step][substep])+" --> "+str(AngleEllipse)+" Result="+str((self.ResultingCurve_R[AngleEllipse], self.ResultingCurve_Theta[AngleEllipse]))+'\n') + + return (self.ResultingCurve_R[AngleEllipse], self.ResultingCurve_Theta[AngleEllipse]) + + def gen_flex_step(self, index_step): + ''' + Draw a flex step. Each step has N + 2 vertical lines where N is the distance between notches. + The notch itself is 2 mm (roughly) large, the whole notch is N+2 mm large + ''' + #Each step is a path for inkscape + path = inkcape_polar(self.Offset, self.group) + # first draw the line between next notch and current one + R, angle = self.Coordinates_Step_SubStep(index_step+1, 0) + self.DebugMsg("gen_flex_step("+str(index_step)+") : MoveTo("+str((R, 180*angle/math.pi))+'\n') + path.MoveTo(R, angle) + R, angle = self.Coordinates_Step_SubStep(index_step, 2) + path.LineTo(R, angle) + self.DebugMsg(" From next notch, LineTo("+str((R, 180*angle/math.pi))+'\n') + # Then the notch, starting internal to external + # Compute radius to largest ellipse + R2 = R * self.large_ell_a / self.small_ell_a + # The short vertical line begins at (R2 - R)/2/NbVerticalLines - 1 + v = (R2-R)/2/self.nbVerticalLines - 1 + path.Line(R+v, angle, R-self.thickness, angle) + self.DebugMsg(" Int notch, LineFrom("+str((R+v, 180*angle/math.pi))+" to "+str((R-self.thickness, 180*angle/math.pi))+" v="+str(v)+'\n') + # Then notch (internal side) + R, angle = self.Coordinates_Step_SubStep(index_step, 0) + path.LineTo(R-self.thickness, angle) + self.DebugMsg(" Int notch, LineTo "+str((R-self.thickness, 180*angle/math.pi))+'\n') + # Compute radius to largest ellipse + R2 = R * self.large_ell_a / self.small_ell_a + # The short vertical line ends at (R2 - R)/2/NbVerticalLines - 1 + v = (R2-R)/2/self.nbVerticalLines - 1 + v2 = (R2-R)/self.nbVerticalLines - 2 + path.LineTo(v + R , angle) + self.DebugMsg(" notch, LineTo "+str((R+v, 180*angle/math.pi))+" v ="+str(v)+" v2="+str(v2)+'\n') + # Now draw N-1 vertical lines, size v2 + for i in range(self.nbVerticalLines-1): + path.Line(i*(v2+2)+v+2+R, angle, (i+1)*(v2+2)+v+R, angle) + self.DebugMsg(" Vertical lines_1 , Line from "+str((i*(v2+2)+v+2+R, 180*angle/math.pi))+" to "+str(((i+1)*(v2+2)+v+R, 180*angle/math.pi))+'\n') + # Then external notch + path.Line((i+1)*(v2+2)+v+R+2, angle, R2 + self.thickness, angle) + self.DebugMsg(" Ext_notch , Line from "+str(((i+1)*(v2+2)+v+R+2, 180*angle/math.pi))+" to "+str((R2 + self.thickness, 180*angle/math.pi))+'\n') + R, angle = self.Coordinates_Step_SubStep(index_step, 2) + R21 = R * self.large_ell_a / self.small_ell_a + path.LineTo(R21+self.thickness, angle) + self.DebugMsg(" Ext notch, LineTo "+str((R21+self.thickness, 180*angle/math.pi))+'\n') + R01, angle2 = self.Coordinates_Step_SubStep(index_step+1, 0) + R21 = R01 * self.large_ell_a / self.small_ell_a + # Then return + v = (R2-R)/2/self.nbVerticalLines - 1 + v2 = (R2-R)/self.nbVerticalLines - 2 + path.LineTo(R2-v, angle) + self.DebugMsg(" Ext notch, LineTo "+str((R2-v, 180*angle/math.pi))+" v="+str(v)+" v2="+str(v2)+'\n') + #Line to next notch (external) + path.Line(R2, angle, R21, angle2) + self.DebugMsg(" To next notch, Line From "+str((R21, 180*angle/math.pi))+" To "+str((R2, 180*angle2/math.pi))+'\n') + # Now draw N-1 vertical lines + for i in range(self.nbVerticalLines-2, -1, -1): + path.Line((i+1)*(v2+2)+v+R, angle, i*(v2+2)+v+2+R, angle) + self.DebugMsg(" Vertical lines_2 , Line from "+str(((i+1)*v2+R+v+1, 180*angle/math.pi))+" to "+str((i*(v2+2)+v+2+R, 180*angle/math.pi))+'\n') + # Then draw nbVerticalLines inside notch, "top" to "bottom" + R, angle = self.Coordinates_Step_SubStep(index_step, 1) + v2 = (R2-R)/self.nbVerticalLines - 2 + for i in range(self.nbVerticalLines): + if i == 0: + path.Line(R-self.thickness+1, angle, R+v2+1, angle) + self.DebugMsg(" Vertical lines_3 , Line from "+str((R-self.thickness+1, 180*angle/math.pi))+" to "+str((R+(i+1)*(v2+2)-1, 180*angle/math.pi))+'\n') + elif i == self.nbVerticalLines - 1: + path.Line(R+i*(v2+2)+1, angle, R2 + self.thickness - 1, angle) + self.DebugMsg(" Vertical lines_3 , Line from "+str((R+i*(v2+2)+1, 180*angle/math.pi))+" to "+str((R2 + self.thickness - 1, 180*angle/math.pi))+'\n') + else: + path.Line(R+i*(v2+2)+1, angle, R+(i+1)*(v2+2)-1, angle) + self.DebugMsg(" Vertical lines_3 , Line from "+str((R+i*(v2+2)+1, 180*angle/math.pi))+" to "+str((R+(i+1)*(v2+2)-1, 180*angle/math.pi))+'\n') + # Then notch_interval set of nbVerticalLines + # + for line in range(1, self.options.notch_interval): + R, angle = self.Coordinates_Step_SubStep(index_step, line+2) + v = (R2-R)/2/self.nbVerticalLines - 1 + v2 = (R2-R)/self.nbVerticalLines - 2 + if line % 2 == 0: + #line is even, draw nbVerticalLines top to bottom + for i in range(self.nbVerticalLines): + path.Line(R+i*(v2+2)+1, angle, R+(i+1)*(v2+2)-1, angle) + self.DebugMsg(" Vertical lines_4_0 , Line from "+str((R+i*(v2+2)+1, 180*angle/math.pi))+" to "+str((R+(i+1)*(v2+2)-1, 180*angle/math.pi))+'\n') + else: + # line is odd, draw bottom to top, first line half size + path.Line(R2 - 1, angle, R2 - v, angle) + # then nbVerticalLines - 1 lines + for i in range(self.nbVerticalLines-2, -1, -1): + path.Line((i+1)*(v2+2)+v+R, angle, i*(v2+2)+v+2+R, angle) + #and at last, one vertical line half size + path.Line(v+R, angle, R+1, angle) + path.GenPath() + + def gen_flex_first_step(self): + ''' + Draw the first step flex. + This specific step has a notch which is only 1mm (roughly) wide, because first and last step shoul lie in same notch + This has step has N + 2 vertical lines where N is the distance between notches. + ''' + #Each step is a path for inkscape + path = inkcape_polar(self.Offset, self.group) + # first draw the line between next notch and current one + R, angle = self.Coordinates_Step_SubStep(1, 0) # Position of next step, which is 1 + self.DebugMsg("gen_first_flex_step : MoveTo("+str((R, 180*angle/math.pi))+'\n') + path.MoveTo(R, angle) + R, angle = self.Coordinates_Step_SubStep(0, 2) + path.LineTo(R, angle) + self.DebugMsg(" From next notch, LineTo("+str((R, 180*angle/math.pi))+'\n') + # Then the notch, starting internal to external + # Compute radius to largest ellipse + R2 = R * self.large_ell_a / self.small_ell_a + # The short vertical line begins at (R2 - R)/2/NbVerticalLines - 1 + v = (R2-R)/2/self.nbVerticalLines - 1 + path.Line(R+v, angle, R-self.thickness, angle) + self.DebugMsg(" Int notch, LineFrom("+str((R+v, 180*angle/math.pi))+" to "+str((R-self.thickness, 180*angle/math.pi))+" v="+str(v)+'\n') + # Then notch (internal side) + R, angle = self.Coordinates_Step_SubStep(0, 1) + path.LineTo(R-self.thickness, angle) + self.DebugMsg(" Int notch, LineTo "+str((R-self.thickness, 180*angle/math.pi))+'\n') + # Compute radius to largest ellipse + R2 = R * self.large_ell_a / self.small_ell_a + # Then edge, full line towards R2 + path.LineTo(R2+self.thickness , angle) + self.DebugMsg(" edge, LineTo "+str((R2, 180*angle/math.pi))+'\n') + R, angle = self.Coordinates_Step_SubStep(0, 2) + R21 = R * self.large_ell_a / self.small_ell_a + path.LineTo(R21+self.thickness, angle) + self.DebugMsg(" Ext notch, LineTo "+str((R21+self.thickness, 180*angle/math.pi))+'\n') + R01, angle2 = self.Coordinates_Step_SubStep(1, 0) + R21 = R01 * self.large_ell_a / self.small_ell_a + # Then return + v = (R2-R)/2/self.nbVerticalLines - 1 + v2 = (R2-R)/self.nbVerticalLines - 2 + path.LineTo(R2-v, angle) + self.DebugMsg(" Ext notch, LineTo "+str((R2-v, 180*angle/math.pi))+" v="+str(v)+" v2="+str(v2)+'\n') + #Line to next notch (external) + path.Line(R2, angle, R21, angle2) + self.DebugMsg(" To next notch, Line From "+str((R21, 180*angle/math.pi))+" To "+str((R2, 180*angle2/math.pi))+'\n') + # Now draw N-1 vertical lines + for i in range(self.nbVerticalLines-2, -1, -1): + path.Line((i+1)*(v2+2)+v+R, angle, i*(v2+2)+v+2+R, angle) + self.DebugMsg(" Vertical lines_2 , Line from "+str(((i+1)*v2+R+v+1, 180*angle/math.pi))+" to "+str((i*(v2+2)+v+2+R, 180*angle/math.pi))+'\n') + # Then notch_interval -1 or +1 set of nbVerticalLines + if self.options.notch_interval == 2: + numstep = 3 + else: + numstep = self.options.notch_interval - 1 + for line in range(1, numstep): + R, angle = self.Coordinates_Step_SubStep(0, line+2) + v = (R2-R)/2/self.nbVerticalLines - 1 + v2 = (R2-R)/self.nbVerticalLines - 2 + if line % 2 == 0: + #line is even, draw nbVerticalLines top to bottom + for i in range(self.nbVerticalLines): + path.Line(R+i*(v2+2)+1, angle, R+(i+1)*(v2+2)-1, angle) + self.DebugMsg(" Vertical lines_4_0 , Line from "+str((R+i*(v2+2)+1, 180*angle/math.pi))+" to "+str((R+(i+1)*(v2+2)-1, 180*angle/math.pi))+'\n') + else: + # line is odd, draw bottom to top, first line half size + path.Line(R2 - 1, angle, R2 - v, angle) + # then nbVerticalLines - 1 lines + for i in range(self.nbVerticalLines-2, -1, -1): + path.Line((i+1)*(v2+2)+v+R, angle, i*(v2+2)+v+2+R, angle) + #and at last, one vertical line half size + path.Line(v+R, angle, R+1, angle) + path.GenPath() + + def gen_flex_last_step(self): + ''' + Draw the last step flex. + This specific step has a notch which is only 1mm (roughly) wide, because first and last step shoul lie in same notch + This is a very simple step, with only the narrow notch + ''' + #Each step is a path for inkscape + path = inkcape_polar(self.Offset, self.group) + # Then the notch, starting internal to external + R, angle = self.Coordinates_Step_SubStep(self.num_notches, 0) + # Compute radius to largest ellipse + R2 = R * self.large_ell_a / self.small_ell_a + # The short vertical line begins at (R2 - R)/2/NbVerticalLines - 1 + v = (R2-R)/2/self.nbVerticalLines - 1 + path.Line(R+v, angle, R-self.thickness, angle) + self.DebugMsg("GenLast_Step, LineFrom("+str((R+v, 180*angle/math.pi))+" to "+str((R-self.thickness, 180*angle/math.pi))+" v="+str(v)+'\n') + # Then notch (internal side) + R, angle = self.Coordinates_Step_SubStep(self.num_notches, 1) + path.LineTo(R-self.thickness, angle) + self.DebugMsg(" Last notch, LineTo "+str((R-self.thickness, 180*angle/math.pi))+'\n') + # Compute radius to largest ellipse + R2 = R * self.large_ell_a / self.small_ell_a + # Then edge, full line towards R2 + path.LineTo(R2+self.thickness , angle) + self.DebugMsg(" edge, LineTo "+str((R2, 180*angle/math.pi))+'\n') + R, angle = self.Coordinates_Step_SubStep(self.num_notches, 0) + R21 = R * self.large_ell_a / self.small_ell_a + path.LineTo(R21+self.thickness, angle) + self.DebugMsg(" Ext notch, LineTo "+str((R21+self.thickness, 180*angle/math.pi))+'\n') + # Then return + v = (R2-R)/2/self.nbVerticalLines - 1 + v2 = (R2-R)/self.nbVerticalLines - 2 + path.LineTo(R2-v, angle) + self.DebugMsg(" Ext notch, LineTo "+str((R2-v, 180*angle/math.pi))+" v="+str(v)+" v2="+str(v2)+'\n') + # Now draw N-1 vertical lines + for i in range(self.nbVerticalLines-2, -1, -1): + path.Line((i+1)*(v2+2)+v+R, angle, i*(v2+2)+v+2+R, angle) + self.DebugMsg(" Last Vertical lines_2 , Line from "+str(((i+1)*v2+R+v+1, 180*angle/math.pi))+" to "+str((i*(v2+2)+v+2+R, 180*angle/math.pi))+'\n') + path.GenPath() + + def compute_notches_angle(self): + ''' + Compute the angles associated with each notch + Indeed, do not compute angles, but index in the reference ellipse array. + After this angle could be easily computed by multiplying by 2*pi/sizeTab + For each notch build a list of n+2 angles, corresponding to each step in the notch + 2 steps for the notch itself and n steps as requested between notches + Angles are computed to match length of the small ellipse, length of the larger one will be longer accordingly to size ratio + return an array which will be used for drawing both ellipses and curved surface + ''' + self.Notches_Angle_ellipse = [] + LastIdx = 0 + curPos = 0 + #Compute offset, this is the first notch greater or equal to offset + Delta_i = self.options.cut_position * sizeTab / 360 #expected offset + + self.Offset_Notch = -1 + for iNotch in range(self.num_notches): + # First point is same as end of previous one, do not compute + # Second and third one are 1mm (roughly) farther to make the notch + idx1 = self.length2Angle( LastIdx, (curPos + self.notch_size / ( self.options.notch_interval + 2.0))/self.small_ell_a) + idx2 = self.length2Angle( LastIdx, (curPos + self.notch_size * 2.0 / ( self.options.notch_interval + 2.0))/self.small_ell_a) + # Check if this is the "special notch" + if idx1 >= Delta_i: + self.Offset_Ellipse = LastIdx + self.Offset_Notch = iNotch + Delta_i = sizeTab * 2 # To make sure there is only one match ! + elif self.Offset_Notch < 0 and iNotch >= self.num_notches -1: + #If not found the special notch, this is the last one + self.Offset_Ellipse = LastIdx + self.Offset_Notch = iNotch + current_notch = [LastIdx, idx1, idx2] + #self.DebugMsg("Notch "+str(iNotch)+" First points="+str(current_notch)+'\n') + NumStep = self.options.notch_interval + if iNotch == self.Offset_Notch: + self.DebugMsg("Angle offset="+str(self.options.cut_position)+" Delta notch="+str(self.Offset_Notch)+" Real offset="+str(self.Offset_Ellipse)+'\n') + if NumStep == 2: + NumStep = 3 # In this case, special notch is longer + else: + NumStep -= 1 # In this case, it is shorter + # Now for each remaining steps + for i in range(NumStep): + # Even with specific notch, use self.options.notch_interval to keep global notch_size different + idx = self.length2Angle( LastIdx, (curPos + self.notch_size * (2.0+i+1) / ( self.options.notch_interval + 2.0))/self.small_ell_a) + current_notch.append(idx) # add to the list + LastIdx = idx + curPos = self.lEllipse[idx] * self.small_ell_a + self.Notches_Angle_ellipse.append(current_notch) + if iNotch == self.Offset_Notch: + self.DebugMsg(" Special Notch "+str(iNotch)+" with Numstep="+str(NumStep)+" ="+str(current_notch)+'\n') + + #self.DebugMsg(" Complete Notch "+str(iNotch)+"="+str(current_notch)+'\n') + self.DebugMsg("Angles are computed, last position : "+str(curPos)+'\n') + # Now change position of notch next to Offset to make assembly easier + # if notch_interval is 2, add one for this + + + def gen_Resulting_Curve(self): + ''' + Each point from the smallest ellipse will be on a curve defined by + 1) The distance from the cone summit will sqrt(h**2 + a**2*cos(alpha)**2 + b**2*sin(alpha)**2) where h is the cone height (full cone up to summit) + and a and b are the ellipse dimensions. + 2) The distance between two points on the curve should be equal at the distance between two points on the ellipse. + If when on alpha1 on the ellipse the angle on the resulting curbe is Theta1. + When on alpha2 on the ellipse, the angle on the resulting curve will be Theta2, and distance between Point(Theta2), Point(Theta1) will be equal + to distance Point(Alpha1), Point(Alpha2) + 3) Theta=0 on resulting curve should correspond to parameter cut_position on the ellipse. + + ''' + #First compute the cone summit with the dimensions of the two ellipses + # When angle is 0, positions are (small_a, 0) and (large_a,0) + h1 = self.zc*self.small_ell_a/(self.large_ell_a - self.small_ell_a) + self.DebugMsg("gen_Resulting_Curve: height for small ellipse "+str(h1)+" For large one "+str(h1*self.large_ell_a/self.small_ell_a)+'\n') + # Now for each angle (index) in Notches_Angle compute the corresponding Theta angle on the resulting curve and the associated distance (polar coordinates) + # Do the computation with the small ellipse and large ellipse + self.ResultingCurve_R = np.zeros(sizeTab+1) # Distance from center for the small ellipse, once projection is applied + self.ResultingCurve_Theta = np.zeros(sizeTab+1) # Angle on resulting curve, for each point in initial ellipse + LengthResultingCurve = 0 + alpha = (math.pi * 2 / sizeTab) * self.Offset_Ellipse + #Offset to length computation on ellipse + length_Offset = self.lEllipse[self.Offset_Ellipse] + #Compute first point + self.ResultingCurve_R[0] = math.sqrt(h1**2 + self.small_ell_a**2*math.cos(alpha)**2 + self.small_ell_b**2*math.sin(alpha)**2) + self.ResultingCurve_Theta[0] = 0 + oldR = self.ResultingCurve_R[0] + oldX = oldR + oldY = 0 + self.BoundingXmax = oldX + self.BoundingXmin = oldX + self.BoundingYmax = oldY + self.BoundingYmin = oldY + i = 1 + error = 0 + maxError = 0 + maxErrorPos = 0 + while i <= sizeTab: + index_ellipse = i + self.Offset_Ellipse + if index_ellipse > sizeTab: + index_ellipse -= sizeTab + # First radius + alpha = (math.pi * 2 / sizeTab) * index_ellipse + R = math.sqrt(h1**2 + self.small_ell_a**2*math.cos(alpha)**2 + self.small_ell_b**2*math.sin(alpha)**2) + self.ResultingCurve_R[i] = R + # Then angle + # First get distance on ellipse and delta from distance on result curve + if i == sizeTab: #Specific case, whole ellipse + Distance = self.small_ell_a * self.lEllipse[sizeTab] + else: + Distance = self.small_ell_a * (self.lEllipse[index_ellipse] - length_Offset) + if Distance < 0: + Distance += self.lEllipse[sizeTab] * self.small_ell_a + Delta_Distance = Distance - LengthResultingCurve + if i == sizeTab: + self.DebugMsg("gen_Resulting_Curve["+str(i)+"] : oldR="+str(oldR)+" R="+str(R)+" Distance="+str(Distance)+" Delta_Distance="+str(Delta_Distance)+" Compute acos("+str((oldR**2 + R**2 - Delta_Distance**2 ) / (2*oldR*R))+")\n") + dTheta = math.acos((oldR**2 + R**2 - Delta_Distance**2 ) / (2*oldR*R)) + Theta = self.ResultingCurve_Theta[i-1] + dTheta + self.ResultingCurve_Theta[i] = Theta + X = R*math.cos(Theta) + Y = R*math.sin(Theta) + LengthResultingCurve += math.sqrt((X - oldX)**2 + (Y - oldY)**2) + oldR = R + oldX = X + oldY = Y + if self.BoundingXmax < X: + self.BoundingXmax = X + if self.BoundingXmin > X: + self.BoundingXmin = X + if self.BoundingYmax < Y: + self.BoundingYmax = Y + if self.BoundingYmin > Y: + self.BoundingYmin = Y + #self.DebugMsg("Index= "+str(i)+" R= "+str(R)+" Theta= "+str(180*Theta/math.pi)+" Longueur= "+str(LengthResultingCurve)+'\n') + error = abs(Distance - LengthResultingCurve) + if error > maxError: + maxError = error + maxErrorPos = i + self.DebugMsg("New max error reached at index "+str(i)+" Distance Ellipse="+str(Distance)+" on curve="+str(LengthResultingCurve)+" Error="+str(error)+'\n') + i += 1 + + + def gen_ellipse(self, axis_a, axis_b, xOffset, yOffset, parent): + ''' Generate an ellipse with notches as a path. + Ellipse dimensions' are parameters axis_a and axis_b + Notches size gives the exact distance between two notches + Notches number gives the number of notches to be drawed + xOffset and yOffset gives the offset within the inkscape page + Parent gives the parent structure of the path which will be created, most often the inkscape page itself + ''' + group = etree.SubElement(parent, 'g') # Create a group which will hold the ellipse + path = inkcape_polar((xOffset, yOffset), group) + # First point is in (major_axis, 0) + Angle = 0 + idx = 0 + for iNotch in range(self.num_notches): + #Angle on ellipse + angle = (math.pi * 2.0 / sizeTab) * self.Notches_Angle_ellipse[iNotch][0] + # First point is external + pt1 = self.ellipse_ext(axis_a, axis_b, angle, self.thickness) + #Second point is on ellipse at angle given by Notches_Angle_ellipse + pt2 = (axis_a*math.cos(angle), axis_b*math.sin(angle)) + #Third point is on ellipse at angle with substep=2 + angle1 = (math.pi * 2.0 / sizeTab) * self.Notches_Angle_ellipse[iNotch][2] + pt3 = (axis_a*math.cos(angle1), axis_b*math.sin(angle1)) + #Fourth point is external + pt4 = self.ellipse_ext(axis_a, axis_b, angle1, self.thickness) + if iNotch == 0: + #Specific case, use MoveTo + path.MoveTo_cartesian(pt1) + else: + #Draw line from previous fourth point + path.LineTo_cartesian(pt1) + #Then pt1 --> pt2 + path.LineTo_cartesian(pt2) + #Then pt2 --> pt3 + path.LineTo_cartesian(pt3) + #And at last pt3 --> pt4 + path.LineTo_cartesian(pt4) + self.DebugMsg("Draw Ellipse, notch "+str(iNotch)+" Pts="+str([pt1, pt2, pt3, pt4])+'\n') + #Last line will be drawed with next notch + #For the last one + path.LineTo_cartesian((axis_a+self.thickness, 0)) + path.GenPath() + + def gen_flex(self, xOffset, yOffset, parent): + group = etree.SubElement(parent, 'g') + self.group = group + self.Offset = (xOffset, yOffset) + #Compute number of vertical lines, depends on cone's height + R = self.ResultingCurve_R[0] + R2 = self.large_ell_a / self.small_ell_a * self.ResultingCurve_R[0] + if R2 - R > 60: + self.nbVerticalLines = int((R2 - R)/25) + else: + self.nbVerticalLines = 2 + self.DebugMsg("Starting gen flex with "+str(self.nbVerticalLines)+" vertical lines R1="+str(R)+" R2="+str(R2)+ "R2-R1="+str(R2-R)+"\n") + # First start step + self.gen_flex_first_step() + # Then middle steps + for step in range(1, self.num_notches): + self.gen_flex_step(step) + # and alst one, (very short) + self.gen_flex_last_step() + + def effect(self): + """ + Draws an elliptical conic box, based on provided parameters + """ + + # input sanity check + error = False + if self.options.zc < 15: + inkex.errormsg('Error: Cone height should be at least 15mm') + error = True + + if self.options.d1 < 30: + inkex.errormsg('Error: d1 should be at least 30mm') + error = True + + if self.options.d2 < self.options.d1 + 0.009999: + inkex.errormsg('Error: d2 should be at d1 + 0.01mm') + error = True + + if self.options.eccentricity > 1.0 or self.options.eccentricity < 0.01: + inkex.errormsg('Ratio minor axis / major axis should be between 0.01 and 1.0') + error = True + + if self.options.notch_interval > 10: + inkex.errormsg('Distance between notches should be less than 10') + error = True + + if self.options.thickness < 1 or self.options.thickness > 10: + inkex.errormsg('Error: thickness should be at least 1mm and less than 10mm') + error = True + + if error: + exit() + + # convert units + unit = self.options.unit + self.small_ell_a = round(0.5 * self.svg.unittouu(str(self.options.d1) + unit), 2) + self.large_ell_a = round(0.5 * self.svg.unittouu(str(self.options.d2) + unit), 2) + self.zc = self.svg.unittouu(str(self.options.zc) + unit) + self.thickness = self.svg.unittouu(str(self.options.thickness) + unit) + if self.options.notch_interval % 2: + #Should be even ! + self.options.notch_interval += 1 + # If dimensions are external, correct d1, d2 and zc by thickness + if self.options.inner_size == False: + self.large_ell_a -= 2*self.thickness + self.d2 -= 2*self.thickness + self.zc -= 2*self.thickness + #Compute minor axes sizes + self.small_ell_b = round(self.small_ell_a * self.options.eccentricity, 2) + self.large_ell_b = round(self.large_ell_a * self.options.eccentricity, 2) + + svg = self.document.getroot() + docWidth = self.svg.unittouu(svg.get('width')) + docHeight = self.svg.unittouu(svg.attrib['height']) + + # Open Debug file if requested + if self.options.Mode_Debug: + try: + self.fDebug = open( 'DebugEllConicBox.txt', 'w') + except IOError: + print ('cannot open debug output file') + self.DebugMsg("Start processing, doc size="+str((docWidth, docHeight))+"\n") + + + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'Conical Box') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + #Create reference ellipse points. + self.xEllipse[0] = 1 + self.yEllipse[0] = 0 + self.lEllipse[0] = 0 + i = 1 + while i <= sizeTab: + self.xEllipse[i] = math.cos(2*math.pi*i/sizeTab) # Major axis size : 1 + self.yEllipse[i] = self.options.eccentricity*math.sin(2*math.pi*i/sizeTab) # Minor axis size + self.lEllipse[i] = self.lEllipse[i-1] + math.hypot( self.xEllipse[i] - self.xEllipse[i-1], self.yEllipse[i] - self.yEllipse[i-1]) + i += 1 + + + # Compute notches size of small ellipse + Ell_Length = self.small_ell_a * self.lEllipse[sizeTab] + # One notch is different to make assembly easier, as the notch on flex are NOT evenly spaced + if self.options.notch_interval == 2: + self.num_notches = int(round((Ell_Length - self.options.notch_interval - 3) / (2.0 + self.options.notch_interval)+1)) + self.notch_size = Ell_Length / (self.num_notches -1 + (self.options.notch_interval+3.0)/(self.options.notch_interval+2.0)) + else: + self.num_notches = int(round((Ell_Length - self.options.notch_interval - 1) / (2.0 + self.options.notch_interval)+1)) + self.notch_size = Ell_Length / (self.num_notches -1 + (self.options.notch_interval+1.0)/(self.options.notch_interval+2.0)) + self.DebugMsg("Small ellipse dimensions a ="+str(self.small_ell_a)+" b="+str(self.small_ell_b)+" Length ="+str(Ell_Length)+'\n') + self.DebugMsg("Number of notches : "+str(self.num_notches)+" Real notch size="+str(self.notch_size)+'\n') + #Compute angles of all points which be drawed + self.compute_notches_angle() + #Then draw small ellipse + self.gen_ellipse(self.small_ell_a, self.small_ell_b, -self.small_ell_a - self.thickness - 1, -self.small_ell_b - self.thickness - 1, layer) + # Then large one + self.gen_ellipse(self.large_ell_a, self.large_ell_b, -self.large_ell_a-2*self.small_ell_a - 3*self.thickness - 5, -self.large_ell_b - self.thickness - 1, layer) + # Compute points on resulting curve + self.gen_Resulting_Curve() + # Then generate flex + # Bounding box of flex has been computed in gen_Resulting_Curve + self.DebugMsg("Flex bounding box : "+str((self.BoundingXmin, self.BoundingYmin))+","+str((self.BoundingXmax, self.BoundingYmax))+'\n') + # yOffset is below large ellipse + yOffset = -2*(self.large_ell_b+self.thickness) - 5 - self.BoundingYmin + # xOffset, center on page + xOffset = 0.5*(self.BoundingXmin + self.BoundingXmax) - 0.5*docWidth + self.DebugMsg("Offset Flex="+str((xOffset, yOffset))+'\n') + self.gen_flex(xOffset, yOffset, layer) + + if self.fDebug: + self.fDebug.close() + +if __name__ == '__main__': + BoxMakerEllipticalCone().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_generic_generator/.gitignore b/extensions/fablabchemnitz/box_maker_generic_generator/.gitignore new file mode 100644 index 00000000..f85c5081 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_generic_generator/.gitignore @@ -0,0 +1 @@ +/DebugGenericBox.txt diff --git a/extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.inx b/extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.inx new file mode 100644 index 00000000..a4962a54 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.inx @@ -0,0 +1,72 @@ + + + Box Maker - Generic Generator + fablabchemnitz.de.box_maker_generic_generator + + + + + + + + + + + + + + + + 80.0 + 60.0 + 40.0 + 3.0 + 0.1 + + + true + + 10.0 + 10.0 + 10.0 + 10.0 + + + + + + + + + + + + + 20.0 + + 20.0 + true + + + 1 + 1 + + + true + 5.0 + 5.0 + 5.0 + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.py b/extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.py new file mode 100644 index 00000000..6a743bfc --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.py @@ -0,0 +1,3056 @@ +#!/usr/bin/env python3 +# We will use the inkex module with the predefined Effect base class. +import inkex +import math +from inkscape_path import * +from lxml import etree + +#Constants defined here +WoodHingeSize = 3 #To be multiplied by thickness +WoodHingeInternalCircle = 2 #To be multiplied by thickness +WoodHingeRect = 1.5 #To be multiplied by thickness + +SteelHingeSpacing = 0.3 +RadiusSteelHingeAxis = 1.3 #Use axis about 2.4mm diameter, I use nails 2.3mmx70mm +MinMove = 1e-2 #Minimum distance betwwen two points (0.01 mm !) + +#Global variables used for the whole program +thickness = 0 +burn = 0 +fDebug = None + +def distance2Points(x0, y0, x1, y1): + return math.sqrt((x1-x0)**2 + (y1-y0)**2) + +def DebugMsg(s): + ''' + Print a debug message into debug file if debug file is defined + ''' + if fDebug: + fDebug.write(s) + +def OpenDebugFile(): + global fDebug + try: + fDebug = open( 'DebugGenericBox.txt', 'w') + except IOError: + pass + DebugMsg("Start processing\n") + +def CloseDebugFile(): + global fDebug + if fDebug: + fDebug.close() + fDebug = None + +def drawHole(path, x0, y0, dx, dy, burn): + ''' + Add a rectangle starting at x0,y0 and with a length dx and width dy to the current path + burn is the burn factor, so actual coordinates are modified by burn/2 + ''' + path.MoveTo(x0+burn/2, y0+burn/2) + path.LineToVRel(dy-burn) + path.LineToHRel(dx-burn) + path.LineToVRel(-dy+burn) + path.LineToHRel(-dx+burn) + + +class Ellipse: + ''' + This class defines some functions that will be used with the coffin style lid + ''' + def __init__(self, a, b): + ''' + a and b are the ellipse parameters + ''' + self.a = a + self.b = b + self.Start = 0 + + def length(self): + ''' + Compute a rather good approwimation of the ellipse length. + Use the formula Ramanujan 2 + ''' + h = (self.a - self.b)*(self.a - self.b)/((self.a + self.b)*(self.a + self.b)) + + l = math.pi*(self.a+self.b)*(1.0 + 3*h/(10.0+math.sqrt(4.0-3*h))) + return l + + def length2Angle(self, l): + ''' + Compute the angle which gives the given length on the ellipse. + The ellipse perimeter couldn't be computed from known functions, so we use a discrete integral computation + In order to save time, this function should be called with increasing value of l, i.e. it doesn't recompute values less than previous parameter l + ''' + CurDistance = PrevDistance = self.LastDistance + index = self.CurPoint + while CurDistance < l and index < self.nPoints: + PrevDistance = CurDistance + Alpha = (index +0.5)* self.StepAngle + self.Start + CurDistance += self.StepAngle*math.sqrt((self.a*math.sin(Alpha))**2 + (self.b*math.cos(Alpha))**2) + index += 1 + #Will stop here, record values + self.LastDistance = CurDistance + self.CurPoint = index + #Interpolate between the last points to increase precision + if CurDistance > PrevDistance: + Delta = (l - PrevDistance)/(CurDistance - PrevDistance)*self.StepAngle + return (index-1)*self.StepAngle + Delta + self.Start + else: + return index*self.StepAngle + self.Start + + def Compute_Ellipse_Params(self, Start, End): + self.length_ellipse = self.length() * (End - Start)/math.pi/2.0 + self.Start = Start + self.End = End + #Compute length between notches, each notch is about 2mm wide, total length is 2*( l_between_notches + 1) + if self.length_ellipse < 80: + self.l_between_notches = 1 + elif self.length_ellipse < 150: + self.l_between_notches = 2 + elif self.length_ellipse < 250: + self.l_between_notches = 3 + else: + self.l_between_notches = 4 + self.nb_Ellipse_Notch = int(round(self.length_ellipse / (2*( self.l_between_notches + 1) + 2),0)) #Add a notch at the end + self.size_Ellipse_Notch = self.length_ellipse / (self.nb_Ellipse_Notch *( self.l_between_notches + 1) + 1) + self.Size_betweenNotches = self.l_between_notches*self.size_Ellipse_Notch + self.nb_point_between_notches = int(round(self.Size_betweenNotches)) + self.SizeBetweenPoints = self.Size_betweenNotches / self.nb_point_between_notches + DebugMsg("Ellipse length ="+str(self.length_ellipse)+" nb_Ellipse_Notch="+str(self.nb_Ellipse_Notch) + +" size_Ellipse_Notch="+str(self.size_Ellipse_Notch)+" Distance between notches="+str((self.l_between_notches+1)*self.size_Ellipse_Notch) + +"mm, Nb point_between nocthes="+str(self.nb_point_between_notches) + +" Total Size Notch ="+str(self.size_Ellipse_Notch*self.nb_Ellipse_Notch*(self.l_between_notches+1)+self.size_Ellipse_Notch)+'\n') + #Compute the number of points used to compute the integration, and init values to be used by length2Angle + if self.length_ellipse < 500: + self.nPoints = 20000 #Error will be less than 0.01mm + elif self.length_ellipse < 2000: + self.nPoints = 100000 + else: + self.nPoints = 500000 #Beware compute time will be higher. + + def drawNotchedEllipse(self, path, Start, End, Offset): + ''' + draw the notched ellipse from Start Angle to End Angle using path path + ''' + self.Compute_Ellipse_Params(Start, End) + #Compute offset to be added to coordinates such as the start point matches with start angle + xOffset = -self.a*math.cos(Start) + Offset[0] + yOffset = -self.a*math.sin(Start) + Offset[1] + self.StepAngle = (End - Start)/self.nPoints + self.CurPoint = 0 + self.LastDistance = 0.0 #At the start point + DebugMsg("nPoints ="+str(self.nPoints)+" StepAngle="+str(self.StepAngle)+"\n") + DebugMsg("Offset Ellipse="+str((xOffset, yOffset))+'\n') + ''' + #TEST + a1 = self.length2Angle(1.0) + DebugMsg("length2Angle(1.0) --> "+str(a1*180/math.pi)+'\n') + a2 = self.length2Angle(2.0) + DebugMsg("length2Angle(2.0) --> "+str(a2*180/math.pi)+'\n') + a3 = self.length2Angle(5.0) + DebugMsg("length2Angle(5.0) --> "+str(a3*180/math.pi)+'\n') + a4 = self.length2Angle(10.0) + DebugMsg("length2Angle(10.0) --> "+str(a4*180/math.pi)+'\n') + a5 = self.length2Angle(self.length_ellipse/2.0) + DebugMsg("length2Angle(length/2) --> "+str(a5*180/math.pi)+'\n') + a6 = self.length2Angle(3*self.length_ellipse/4.0) + DebugMsg("length2Angle(length*0.75) --> "+str(a6*180/math.pi)+'\n') + a7 = self.length2Angle(self.length_ellipse-2.0) + DebugMsg("length2Angle(length-2) --> "+str(a7*180/math.pi)+'\n') + a8 = self.length2Angle(self.length_ellipse-1.0) + DebugMsg("length2Angle(length-1) --> "+str(a8*180/math.pi)+'\n') + a9 = self.length2Angle(self.length_ellipse) + DebugMsg("length2Angle(length) --> "+str(a9*180/math.pi)+'\n') + self.StepAngle = (End - Start)/self.nPoints + self.CurPoint = 0 + self.LastDistance = 0.0 #At the start point + a9 = self.length2Angle(self.length_ellipse) + DebugMsg("length2Angle(length), fresh start --> "+str(a9*180/math.pi)+'\n') + self.CurPoint = 0 + self.LastDistance = 0.0 #At the start point + #End TEST + ''' + #The side face is "internal", that is the notches are towards the exterior. + DeltaAngleNotches = -math.pi/2 #Angle from the tangeant + CurAngle = Start #Starting point + CurDistance = 0 #Distance on ellipse + #Now for all notches but the last one + for i in range(self.nb_Ellipse_Notch): + #Start with the notch itself, but first compute the tangeant at the current point + theta = math.atan2(self.b*math.cos(CurAngle), -self.a*math.sin(CurAngle)) + AngleNotch = theta + DeltaAngleNotches + #Draw notch , start position on ellipse + Notch itself + x = self.a * math.cos(CurAngle) + thickness * math.cos(AngleNotch) + xOffset + y = self.b * math.sin(CurAngle) + thickness * math.sin(AngleNotch) + yOffset + DebugMsg("Notch, Pos without offset="+str((self.a * math.cos(CurAngle) + thickness * math.cos(AngleNotch), self.b * math.sin(CurAngle) + thickness * math.sin(AngleNotch) ))+" WithOffset"+str((x,y))+'\n') + path.LineTo(x, y) + #Now the side parralel to the ellipse + x += self.size_Ellipse_Notch * math.cos(theta) + y += self.size_Ellipse_Notch * math.sin(theta) + path.LineTo(x, y) + #Now back to the ellipse, do not use the angle to come back to the ellipse but compute the position on ellipse. + #This will give a better approximation of the ellipse. As ellipse is convex, the interior of the notch will be shorter than the exterior + CurDistance += self.size_Ellipse_Notch + CurAngle = self.length2Angle(CurDistance) + x = self.a * math.cos(CurAngle) + xOffset + y = self.b * math.sin(CurAngle) + yOffset + path.LineTo(x, y) + #Now draw the interior line, but mm by mm to have a good approximation of the ellipse + for j in range(self.nb_point_between_notches): + CurDistance += self.SizeBetweenPoints + CurAngle = self.length2Angle(CurDistance) + x = self.a * math.cos(CurAngle) + xOffset + y = self.b * math.sin(CurAngle) + yOffset + path.LineTo(x, y) + #We are now ready to draw the next notch + #Now draw the last notch, but draw it "backward" to have a symetric view. + theta = math.atan2(self.b*math.cos(End), -self.a*math.sin(End)) + AngleNotch = theta + DeltaAngleNotches + #Draw notch , start position on ellipse + Notch itself + x_end_notch = self.a * math.cos(End) + thickness * math.cos(AngleNotch) + xOffset + y_end_notch = self.b * math.sin(End) + thickness * math.sin(AngleNotch) + yOffset + #Now the side parralel to the ellipse + x_start_notch = x_end_notch - self.size_Ellipse_Notch * math.cos(theta) + y_start_notch = y_end_notch - self.size_Ellipse_Notch * math.sin(theta) + path.LineTo(x_start_notch, y_start_notch) + path.LineTo(x_end_notch, y_end_notch) + #For the last point, we will use the End Parameter + x = self.a * math.cos(End) + xOffset + y = self.b * math.sin(End) + yOffset + path.LineTo(x,y) + #We should be arrived at the last point now ! + + # Generate vertical lines for flex + # Parameters : StartX, StartY, size, nunmber of lines and +1 if lines goes up and -1 down + def GenLinesFlex(self, StartX, StartY, Size, nLine, UpDown, path): + DebugMsg("Enter GenLinesFlex, Pos="+str((StartX, StartY))+" nSegment="+str(nLine)+" Size Segment="+str(Size)+" UpDown="+str(UpDown)+" End="+str((StartX, StartY+nLine*(Size+2)-2))+'\n') + for i in range(nLine): + path.Line(StartX, StartY, StartX, StartY + UpDown*Size) + DebugMsg("GenLinesFlex from "+str((StartX, StartY))+" to "+str((StartX, StartY + UpDown*Size))+'\n') + StartY += UpDown*(Size+2) + + def drawFlexEllipse(self, path, height, SkipFlex, Position): + ''' + draw the flex lines for the ellipse + After this path will be at the right/bottom corner of the flex line. + ''' + xpos = Position[0] + ypos = Position[1] + #First compute angles of each notch in order to skip unnecessary flex lines + + self.StepAngle = (self.End - self.Start)/self.nPoints + self.CurPoint = 0 + self.LastDistance = 0.0 #At the start point + CurAngle = self.Start #Starting point + CurDistance = 0 #Distance on ellipse + DeltaNotch = (self.l_between_notches+1)*self.size_Ellipse_Notch + ListDistance = [] + #Now for all notches but the last one + for i in range(self.nb_Ellipse_Notch): + #Start with the notch itself, but first compute the tangeant at the current point (x0,y0) + LastAngle = CurAngle + # with the line equation in the form alpha*x + beta*y + gamma = 0 + alpha = self.b * math.cos(CurAngle) + beta = self.a * math.sin(CurAngle) + gamma = -(self.a*self.b) + CurDistance += DeltaNotch + CurAngle = self.length2Angle(CurDistance) + #Now compute distance between tangeant and next point. + x1 = self.a * math.cos(CurAngle) + y1 = self.b * math.sin(CurAngle) + #Distance betwwen line and point is (alpha * pt.x + beta * pt.y + gamma)*(alpha * pt.x + beta * pt.y + gamme)/sqrt(alpha*alpha + beta*beta) + distance = abs(alpha * x1 + beta * y1 + gamma)/math.sqrt(alpha*alpha + beta*beta) + ListDistance.append(distance) + DebugMsg("LastAngle ="+str(round(180*LastAngle/math.pi,2))+" CurAngle="+str(round(180*CurAngle/math.pi,2))+" NewPoint="+str((x1,y1))+" distance="+str(distance)+'\n') + #and for the last one, repeat the previous + ListDistance.append(distance) + + ''' + Now, this is the real flex line drawing + ''' + #Compute number of vertical lines. Each long mark should be at most 50mm long to avoid failures + TotalHeight = height+2*thickness + nMark = int( TotalHeight / 50) + 1 #Compute number of lines + nMark = max(nMark, 2) # At least 2 marks + #Sizes of short and long lines to make flex + LongMark = (TotalHeight / nMark) - 2.0 #Long Mark equally divide the height + ShortMark = LongMark/2 # And short mark should lay at center of long marks + DebugMsg("\ndrawFlexEllipse, Pos="+str(Position)+" TotalHeight="+str(TotalHeight)+" nMark="+str(nMark)+" LongMark="+str(LongMark)+" ShortMark="+str(ShortMark)+'\n') + for i in range(self.nb_Ellipse_Notch): + ''' + For each set notch + interval between notches, always start with a notch, and we are external in this case + The path is designed as it will lead to "optimal" move of the laser beam. + + First draw the nocth and the line inside the notch + First edge of the notch, start with a short line, then nMark-1 long lines then a short one. This will cover the entire height+2*thickness + The the second edge of the notch, the same but drawn backwards (bottom to top) + and at last the line inside the notch, drawn from top to bottom + ''' + DebugMsg("Notch("+str(i)+"), SkipFlex="+str(SkipFlex)+" ListDistance[i]="+str(ListDistance[i])+'\n') + #Draw the edge line from Top to Bottom + self.GenLinesFlex(xpos, ypos, ShortMark, 1, 1, path) + #Then nMark-1 long Lines + self.GenLinesFlex(xpos, ypos+ShortMark+2, LongMark, nMark-1, 1, path) + #And the last short line + self.GenLinesFlex(xpos, ypos+TotalHeight-ShortMark, ShortMark, 1, 1, path) + #Now we are at the bottom of the Flex face, draw the bottom notch + path.Line(xpos, ypos+height+thickness, xpos+self.size_Ellipse_Notch, ypos+height+thickness) + #Then draw the same pattern for the other side of the notch, but bottom to top + self.GenLinesFlex(xpos+self.size_Ellipse_Notch, ypos+TotalHeight, ShortMark, 1, -1, path) + #Then nMark-1 long Lines + self.GenLinesFlex(xpos+self.size_Ellipse_Notch, ypos+TotalHeight-ShortMark-2, LongMark, nMark-1, -1, path) + #And the last short line that will reach the top external edge + self.GenLinesFlex(xpos+self.size_Ellipse_Notch, ypos+ShortMark, ShortMark, 1, -1, path) + #then the top notch + path.Line(xpos+self.size_Ellipse_Notch, ypos + thickness, xpos, ypos+thickness) + #Then draw the long lines inside the notch, first and last will be shorter by thickness + #This line is drawn from top to bottom, and start at 1mm from the interior of the notch + self.GenLinesFlex(xpos+self.size_Ellipse_Notch/2, ypos+thickness+1, LongMark-thickness, 1, 1, path) + #Then the remaining inside if any + if nMark > 2: + self.GenLinesFlex(xpos+self.size_Ellipse_Notch/2, ypos+3+LongMark, LongMark, nMark-2, 1, path) + #Then the last one, shorter also, will reach internal bottom + 1mm + self.GenLinesFlex(xpos+self.size_Ellipse_Notch/2, ypos+TotalHeight-LongMark-1, LongMark-thickness, 1, 1, path) + ''' + At this point we are near the bottom line. + First draw the external line up to the next notch + ''' + xpos += self.size_Ellipse_Notch #xpos is the other side of the notch + path.Line(xpos, ypos+TotalHeight, xpos+self.Size_betweenNotches, ypos+TotalHeight) + + ''' + Then draw the lines between external top and bottom, but only if needed when SkipFlex is true + They are 2*l_between_notches - 1 lines, so the number is always odd + Even indexes are made of long lines only and drawn Bottom to Top. + Odd indexes are made of one short line, nMark-2 long lines then a short line and rawn top to bottom + As total number is odd, wa always end with long lines drawn from bottom to top, so the last position will be near the top line + ''' + #If the ellipse is not very round at this point, in order to save laser time, draw only lines inside the notch and the line just before the notch + drawAllLines = False + if SkipFlex == False or ListDistance[i] > 0.5: + drawAllLines = True + for j in range(2*self.l_between_notches-1): + if j == 2*self.l_between_notches-2 or drawAllLines: + if (j % 2)==0: + #even, draw long lines bottom to top + self.GenLinesFlex(xpos+(j+1)*self.size_Ellipse_Notch/2, ypos+TotalHeight-1, LongMark, nMark, -1, path) + else: + #Odd, draw short line, nMark-2 long lines then a short line, top to bottom + self.GenLinesFlex(xpos+(j+1)*self.size_Ellipse_Notch/2, ypos+1, ShortMark-1, 1, 1, path) + #Then nMark-1 long Lines + self.GenLinesFlex(xpos+(j+1)*self.size_Ellipse_Notch/2, ypos+ShortMark+2, LongMark, nMark-1, 1, path) + #And the last short line + self.GenLinesFlex(xpos+(j+1)*self.size_Ellipse_Notch/2, ypos+TotalHeight-ShortMark, ShortMark-1, 1, 1, path) + #Now we are near the top line, draw the line up to the next notch + path.Line(xpos, ypos, xpos+self.Size_betweenNotches, ypos) + #And we are ready to draw the next flex pattern + xpos += self.Size_betweenNotches + + ''' + Now draw the pattern for the last notch + ''' + #Draw the edge line from Top to Bottom + self.GenLinesFlex(xpos, ypos, ShortMark, 1, 1, path) + #Then nMark-1 long Lines + self.GenLinesFlex(xpos, ypos+ShortMark+2, LongMark, nMark-1, 1, path) + #And the last short line + self.GenLinesFlex(xpos, ypos+TotalHeight-ShortMark, ShortMark, 1, 1, path) + #Now we are at the bottom of the Flex face, draw the bottom notch + path.Line(xpos, ypos+height+thickness, xpos+self.size_Ellipse_Notch, ypos+height+thickness) + #Then draw the same pattern for the other side of the notch, but bottom to top + self.GenLinesFlex(xpos+self.size_Ellipse_Notch, ypos+TotalHeight, ShortMark, 1, -1, path) + #Then nMark-1 long Lines + self.GenLinesFlex(xpos+self.size_Ellipse_Notch, ypos+TotalHeight-ShortMark-2, LongMark, nMark-1, -1, path) + #And the last short line that will reach the top external edge + self.GenLinesFlex(xpos+self.size_Ellipse_Notch, ypos+ShortMark, ShortMark, 1, -1, path) + #then the top notch + path.Line(xpos+self.size_Ellipse_Notch, ypos + thickness, xpos, ypos+thickness) + #Then draw the long lines inside the notch, first and last will be shorter by thickness + #This line is drawn from top to bottom, and start at 1mm from the interior of the notch + self.GenLinesFlex(xpos+self.size_Ellipse_Notch/2, ypos+thickness+1, LongMark-thickness, 1, 1, path) + #Then the remaining inside if any + if nMark > 2: + self.GenLinesFlex(xpos+self.size_Ellipse_Notch/2, ypos+3+LongMark, LongMark, nMark-2, 1, path) + #Then the last one, shorter also, will reach internal bottom + 1mm + self.GenLinesFlex(xpos+self.size_Ellipse_Notch/2, ypos+TotalHeight-LongMark-1, LongMark-thickness, 1, 1, path) + xpos += self.size_Ellipse_Notch #xpos is the other side of the notch + path.MoveTo(xpos, ypos+TotalHeight) #Path will be at the end of flex line on the BOTTOM edge. + DebugMsg("Path pos ="+str((xpos, ypos+TotalHeight))+'\n') + +class CornerPoint: + ''' + This class stores data about corners, to be used later to draw the faces of the box + position is a tuple giving the position of the corner + ''' + def __init__(self, position, radius, x_internal, y_internal, WoodHingeCorner = False): + self.x_internal = x_internal + self.y_internal = y_internal + self.WoodHingeCorner = WoodHingeCorner + if radius > 0: + self.radius = radius + else: + self.radius = 0 + #Compute position of circle center, do it now because it is always here, even if corner moves (internal/external) + if position[0] <= thickness: + #Left corner + self.xc = position[0] + self.radius + else: + #Right corner + self.xc = position[0] - self.radius + if position[1] <= thickness: + #Top corner + self.yc = position[1] + self.radius + else: + #Bottom corner + self.yc = position[1] - self.radius + + #Compute position of corner, given internal or external position of finger joints + if x_internal: + self.x_corner = position[0] + elif position[0] <= thickness: + self.x_corner = position[0] - thickness + if self.radius > 0: + self.radius += thickness # Change radius accordingly, beware do it only for x direction (only once !) + else: + self.x_corner = position[0] + thickness + if self.radius > 0: + self.radius += thickness + if y_internal: + self.y_corner = position[1] + elif position[1] <= thickness: + self.y_corner = position[1] - thickness + else: + self.y_corner = position[1] + thickness + #Compute position of line of finger joints + if position[0] <= thickness and position[1] <= thickness: + #Top left corner, compute positions of start/end of corners + self.quadrant = 0 + self.x_start_joint = position[0] + self.radius #X direction, do not take into account Internal/External + self.y_start_joint = self.y_corner + self.x_end_joint = self.x_corner + self.y_end_joint = position[1] + self.radius #Y Direction, do not take into account Internal/External + elif position[1] <= thickness: + #Top right corner + self.quadrant = 1 + self.x_start_joint = self.x_corner + self.y_start_joint = position[1] + self.radius + self.x_end_joint = position[0] - self.radius + self.y_end_joint = self.y_corner + elif position[0] <= thickness: + #Bottom left corner + self.quadrant = 3 + self.x_start_joint = self.x_corner + self.y_start_joint = position[1] - self.radius + self.x_end_joint = position[0] + self.radius + self.y_end_joint = self.y_corner + else: + #Bottom right corner + self.quadrant = 2 + self.x_start_joint = position[0] - self.radius + self.y_start_joint = self.y_corner + self.x_end_joint = self.x_corner + self.y_end_joint = position[1] - self.radius + #Specific case for WoodHingeCorner, "corner" is 3/4 of the circle out of the corner + if WoodHingeCorner: + if self.quadrant == 0: + self.y_end_joint = self.y_corner + WoodHingeSize*thickness + self.x_start_joint = self.x_corner + WoodHingeSize*thickness + elif self.quadrant == 1: + self.x_end_joint = self.x_corner - WoodHingeSize*thickness + self.y_start_joint = self.y_corner + WoodHingeSize*thickness + DebugMsg("End CornerPoint init. Corner="+str((self.x_corner, self.y_corner))+" Circle="+str((self.xc, self.yc))+" StartJoint="+str((self.x_start_joint, self.y_start_joint))+" EndJoint="+str((self.x_end_joint, self.y_end_joint))+" WoodHingeCorner="+str(self.WoodHingeCorner)+'\n') + + def drawCorner(self, path): + ''' + Draw the lines around the corner using path + Start position of the path should be (x_end_joint, y_end_joint), not checked nor enforced + End Position is (x_start_joint, y_start_joint) + ''' + if self.WoodHingeCorner: + #Specific case, draw 3/4 of a circle of radius WoodHingeSize*thickness + plus a small segment of size thickness + if self.quadrant == 0: #Left corner + DebugMsg("drawCorner_WoodHinge Left: StartPoint="+str((self.x_end_joint, self.y_end_joint))+" Circle="+str((self.xc, self.yc))+ " EndPoint="+str((self.x_start_joint, self.y_start_joint))+'\n') + path.LineToHRel(-thickness) + path.drawQuarterCircle(self.x_corner-thickness, self.y_corner, WoodHingeSize*thickness, 3) #Start Lower Left + path.drawQuarterCircle(self.x_corner-thickness, self.y_corner, WoodHingeSize*thickness, 0) #Start Upper Left + path.drawQuarterCircle(self.x_corner-thickness, self.y_corner, WoodHingeSize*thickness, 1) #Start Upper Right + elif self.quadrant == 1: #Right corner + DebugMsg("drawCorner_WoodHinge Right: StartPoint="+str((self.x_end_joint, self.y_end_joint))+" Circle="+str((self.xc, self.yc))+ " EndPoint="+str((self.x_start_joint, self.y_start_joint))+'\n') + path.LineToHRel(thickness) + path.drawQuarterCircle(self.x_corner+thickness, self.y_corner, WoodHingeSize*thickness, 0) #Start Upper Left + path.drawQuarterCircle(self.x_corner+thickness, self.y_corner, WoodHingeSize*thickness, 1) #Start Upper Right + path.drawQuarterCircle(self.x_corner+thickness, self.y_corner, WoodHingeSize*thickness, 2) #Start Lower Right + path.LineToHRel(-thickness) + elif self.radius > 0: + #DebugMsg("drawCorner radius Center"+str((self.xc, self.yc))+" RAdius="+str(self.radius)+ " quadrant="+str(self.quadrant)+'\n') + path.drawQuarterCircle(self.xc, self.yc, self.radius, self.quadrant) + else: + DebugMsg("drawCorner: StartPoint="+str((self.x_end_joint, self.y_end_joint))+" Corner="+str((self.x_corner, self.y_corner))+ " EndPoint="+str((self.x_start_joint, self.y_start_joint))+'\n') + if distance2Points(self.x_end_joint, self.y_end_joint, self.x_corner, self.y_corner) > MinMove: + #Draw line up to real corner + path.LineTo(self.x_corner, self.y_corner) + if distance2Points(self.x_start_joint, self.y_start_joint, self.x_corner, self.y_corner) > MinMove: + #Draw line between corner and start of joints + path.LineTo(self.x_start_joint, self.y_start_joint) + + +class NotchLine: + ''' + This class deals with straight lines with or without finger joints + start and end parameters are actually tuples giving position (x,y) and internal/external status of each point + The angle give the direction, it couldn't be easily computed from start and ending point because of internal/external status + If parameter DrawHalf is < 0, only first half of line will be drawn, if > 0 only second half. + When DrawHalf is null both parts will be drawn + Beware, DrawHalf could be < 0 or > 0 only when Status (Internal/External) are indentical. + ''' + def __init__(self, start, end, angle, finger_joint_size, DrawHalf=0): + self.StartX = start[0] + self.StartY = start[1] + self.EndX = end[0] + self.EndY = end[1] + self.StartStatus = start[2] + self.EndStatus = end[2] + self.JointSize = finger_joint_size + self.Angle = angle + self.size_line_joint = 0 + self.start_line_joint_x = self.StartX + self.start_line_joint_y = self.StartY + self.end_line_joint_x = self.EndX + self.end_line_joint_y = self.EndY + self.DrawHalf = DrawHalf + DebugMsg("NotchLine_init, StartPoint="+str(start)+" EndPoint="+str(end)+" Joint_size="+str(finger_joint_size)+" DrawHalf="+str(DrawHalf)+'\n') + # Compute size of all finger joints + # Compute size as a distance to deal with every direction. + size = math.sqrt((self.EndX - self.StartX)*(self.EndX - self.StartX) + (self.EndY - self.StartY)*(self.EndY - self.StartY)) + # Compute number of joints + if finger_joint_size == 0: # No finger joint + self.nb_finger_joint = 0 + if DrawHalf != 0: #Draw only half of line (specific case for rounded flex) + self.EndX = (self.StartX + self.EndX) / 2 + self.EndY = (self.StartY + self.EndY) / 2 + self.end_line_joint_x = self.EndX + self.end_line_joint_y = self.EndY + elif start[2] == end[2]: + # Same status, internal/external, the number of notches should be odd (at least 3) + if size < 3 * finger_joint_size: + self.nb_finger_joint = 0 + else: + self.nb_finger_joint = 2*int((size-finger_joint_size) / (2*finger_joint_size)) + 1 + self.size_line_joint = self.nb_finger_joint * finger_joint_size + # compute start and stop of finger joint line, centered on edge + delta_pos = (size - self.size_line_joint)/2 + self.start_line_joint_x = self.StartX + delta_pos*math.cos(angle) + self.start_line_joint_y = self.StartY + delta_pos*math.sin(angle) + self.end_line_joint_x = self.EndX - delta_pos*math.cos(angle) + self.end_line_joint_y = self.EndY - delta_pos*math.sin(angle) + if DrawHalf < 0: + #Draw only first half of notch line,i.e. end will be at the middle of segment + self.EndX = (self.StartX + self.EndX) / 2 + self.EndY = (self.StartY + self.EndY) / 2 + self.nb_finger_joint = (self.nb_finger_joint // 2 ) + 1 #Previous number was odd (2n+1), new notch count = n + 1, as last one will be half notch + self.end_line_joint_x = self.start_line_joint_x + ((self.nb_finger_joint-0.5)*finger_joint_size)*math.cos(angle) #Quit line at end of last notch + self.end_line_joint_y = self.start_line_joint_y + ((self.nb_finger_joint-0.5)*finger_joint_size)*math.sin(angle) #Quit line at end of last notch + if (self.nb_finger_joint%2) == 0 and self.StartStatus: + #Now nb joint is even, so Internal/External status is changed so end is external + self.end_line_joint_x += thickness * math.cos(angle-math.pi/2) + self.end_line_joint_y += thickness * math.sin(angle-math.pi/2) + self.EndX = self.end_line_joint_x + self.EndY = self.end_line_joint_y + elif (self.nb_finger_joint%2) == 0 and self.StartStatus == 0: + #Now nb joint is even, so Internal/External status is changed so end is internal + self.end_line_joint_x += thickness * math.cos(angle+math.pi/2) + self.end_line_joint_y += thickness * math.sin(angle+math.pi/2) + self.EndX = self.end_line_joint_x + self.EndY = self.end_line_joint_y + elif DrawHalf > 0: + #Draw only second half of notch line,i.e. Start will be at the middle of segment + self.StartX = (self.StartX + self.EndX) / 2 + self.StartY = (self.StartY + self.EndY) / 2 + self.nb_finger_joint = (self.nb_finger_joint // 2 ) + 1 #Previous number was odd (2n+1), new notch count = n+1 , as first one with half notch for the first one + #Draw the first half notch as a shift from start position + self.start_line_joint_x = self.StartX - 0.5*finger_joint_size*math.cos(angle) + self.start_line_joint_y = self.StartY - 0.5*finger_joint_size*math.sin(angle) + if (self.nb_finger_joint%2) == 0 and self.EndStatus: + #Now number of joints is even, so switch StartStatus to have different status (Start and End), and keep End Status + #In this case, Start is now External + self.StartStatus = 0 + #Move Start point + self.start_line_joint_x += thickness * math.cos(angle-math.pi/2) + self.start_line_joint_y += thickness * math.sin(angle-math.pi/2) + else: + #Now number of joints is even, so switch StartStatus to have different status (Start and End), and keep End Status + #In this case, Start is now Internal + self.StartStatus = 1 + #Move Start point + self.start_line_joint_x += thickness * math.cos(angle+math.pi/2) + self.start_line_joint_y += thickness * math.sin(angle+math.pi/2) + else: #Start and end have different internal/external status. Number of notches should be even + if size < 2 * finger_joint_size: + self.nb_finger_joint = 0 + else: + self.nb_finger_joint = 2*int(size / (2*finger_joint_size)) + self.size_line_joint = self.nb_finger_joint * finger_joint_size + # compute start and stop of finger joint line, centered on edge + delta_pos = (size - self.size_line_joint)/2 + self.start_line_joint_x = self.StartX + delta_pos*math.cos(angle) + self.start_line_joint_y = self.StartY + delta_pos*math.sin(angle) + self.end_line_joint_x = self.EndX - delta_pos*math.cos(angle) + self.end_line_joint_y = self.EndY - delta_pos*math.sin(angle) + DebugMsg("NotchLine_init, size of line joints = "+str(size)+" Nb_Joint="+str(self.nb_finger_joint)+" size_line_joint="+str(self.size_line_joint)+" start_line_joint"+str(( self.start_line_joint_x, self.start_line_joint_y))+" end_line_joint="+str((self.end_line_joint_x, self.end_line_joint_y))+'\n') + + def ModifyNotchLine(self, SizeCut, CutOnStart): + ''' + This function modify a vertical notch line to take into account cuts needed by WoodHinge + Beware, only safe to call with vertical lines, unexpected results in other cases + SizeCut is the Size of cut, last notch will be at last 1.5 thickness far from this cut + CutOnStart is True when the cut is at the start of the line. Beware could be top or bottom if angle is 90 or 270° + ''' + DebugMsg("Enter ModifyNotchLine, CutOnStart="+str(CutOnStart)+" angle="+str(self.Angle)+" Start ="+str(self.StartY)+" End="+str(self.EndY)+" nb_finger_joint="+str(self.nb_finger_joint)+" SizeJoint="+str(self.JointSize)+" start_line_joint_y="+str(self.start_line_joint_y)+" end_line_joint_y="+str(self.end_line_joint_y)+'\n') + Dir = 0 #Bottom to Top if Dir = 0 + SizeCut -= thickness #In all cases, reduce sizecut because top and bottom lines are always external in Y + + if abs(self.Angle - math.pi/2) < 1e-6: + Dir = 1 # Top to Bottom + if Dir == 1 and CutOnStart: + #Change line, shorten of SizeCut at the start, in this case start at end of line + nbNotch = 1 + ypos = self.end_line_joint_y + Limit = SizeCut + self.StartY + 1.5*thickness + DebugMsg("WHC_init_1 : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+" Limit="+str(Limit)+" NewSizeCut="+str(SizeCut)+"\n") + while ypos > Limit: + ypos -= 2*self.JointSize + nbNotch += 2 + DebugMsg("WHC : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+"\n") + #Now change the line + if nbNotch > 3: + nbNotch -= 2 #Sub last step which was too far + self.start_line_joint_y = self.end_line_joint_y - nbNotch*self.JointSize + self.nb_finger_joint = nbNotch + self.StartY += SizeCut + else: + self.nb_finger_joint = 0 #No more notch + self.StartY += SizeCut + elif Dir==1 and CutOnStart == False: + #Change line, shorten of SizeCut at the end, in this case start at start of line + nbNotch = 1 + ypos = self.start_line_joint_y + Limit = self.EndY - SizeCut - 1.5*thickness + DebugMsg("WHC_init_2 : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+" Limit="+str(Limit)+" NewSizeCut="+str(SizeCut)+"\n") + while ypos < Limit: + ypos += 2*self.JointSize + nbNotch += 2 + DebugMsg("WHC : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+"\n") + #Now change the line + if nbNotch > 3: + nbNotch -= 2 #Sub last step which was too far + #Cut on end, so change EndY and end_line_joint_y + self.end_line_joint_y = self.start_line_joint_y + nbNotch*self.JointSize + self.nb_finger_joint = nbNotch + self.EndY -= SizeCut + else: + self.nb_finger_joint = 0 #No more notch + self.EndY -= SizeCut + if self.EndY < self.end_line_joint_y: #Limit send_line_joint_y to be lower or equal than EndY + self.end_line_joint_y = self.EndY + elif Dir==0 and CutOnStart: + #Change line, shorten of SizeCut at the start, in this case this the bottom of line because Angle is 270° + nbNotch = 1 + ypos = self.end_line_joint_y + Limit = self.StartY - SizeCut - 1.5*thickness + DebugMsg("WHC_init_3 : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+" Limit="+str(Limit)+" NewSizeCut="+str(SizeCut)+"\n") + while ypos < Limit: + ypos += 2*self.JointSize + nbNotch += 2 + DebugMsg("WHC : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+"\n") + #Now change the line + if nbNotch > 3: + nbNotch -= 2 #Sub last step which was too far + #Change at start of line + self.start_line_joint_y = self.end_line_joint_y + nbNotch*self.JointSize + self.nb_finger_joint = nbNotch + self.StartY -= SizeCut + else: + self.nb_finger_joint = 0 #No more notch + self.StartY -= SizeCut + elif Dir==0 and CutOnStart == 0: + #Change line, shorten of SizeCut at the end, in this case this the top of line because Angle is 270° + nbNotch = 1 + ypos = self.start_line_joint_y + Limit = self.EndY + SizeCut + 1.5*thickness + DebugMsg("WHC_init_4 : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+" Limit="+str(Limit)+" NewSizeCut="+str(SizeCut)+"\n") + while ypos > Limit: + ypos -= 2*self.JointSize + nbNotch += 2 + DebugMsg("WHC : ypos ="+str(ypos)+" nbNotch ="+str(nbNotch)+"\n") + #Now change the line + if nbNotch > 3: + nbNotch -= 2 #Sub last step which was too far + self.end_line_joint_y = self.start_line_joint_y - nbNotch*self.JointSize + self.nb_finger_joint = nbNotch + self.EndY += SizeCut #New EndY is below the previous one + else: + self.nb_finger_joint = 0 #No more notch + self.EndY += SizeCut + if self.EndY < self.end_line_joint_y: + self.end_line_joint_y = self.EndY + DebugMsg("Exit ModifyNotchLine, angle="+str(self.Angle)+" Start ="+str(self.StartY)+" End="+str(self.EndY)+" nb_finger_joint="+str(self.nb_finger_joint)+" SizeJoint="+str(self.JointSize)+" start_line_joint_y="+str(self.start_line_joint_y)+" end_line_joint_y="+str(self.end_line_joint_y)+'\n') + + def drawNotchLine(self, path): + ''' + Draw the actual line, starting at current position of path. + The position should be StartX, StartY, this is not checked or enforced to avoid unwanted moves + Each finger joint is JointSize long but there is a correction to take into account the burn factor (thickness of the cutting line). + So each external joint is actually JointSize+2*burn long and Internal joints are JointSize-2*burn + ''' + if self.nb_finger_joint == 0: + #Easy case, no finger joint, draw a straight line + path.LineTo(self.EndX, self.EndY) + return + #Normal case, there are finger joint(s) + #First compute angles. + #AngleJoint is the angle for drawing the first part of the finger joint + #If start point is internal, AngleJoint should be Angle - pi/2, else it should be Angle + pi/2 + if self.StartStatus: #internal + AngleJoint = self.Angle - math.pi/2 + DeltaBurn = burn + else: + AngleJoint = self.Angle + math.pi/2 + DeltaBurn = -burn + DebugMsg("drawNotchLine, Angle ="+str(round(self.Angle*180/math.pi))+" AngleJoint="+str(round(AngleJoint*180/math.pi))+'\n') + DebugMsg("start_line_joint="+str((self.start_line_joint_x, self.start_line_joint_y))+" JointSize="+str(self.JointSize)+" DeltaBurn="+str(DeltaBurn)+'\n') + #First go up to start of notch line + first joint + burn correction + xcur = self.start_line_joint_x + (self.JointSize+DeltaBurn)*math.cos(self.Angle) + ycur = self.start_line_joint_y + (self.JointSize+DeltaBurn)*math.sin(self.Angle) + path.LineTo(xcur, ycur) + DebugMsg("First Point="+str((xcur, ycur))+'\n') + i = self.nb_finger_joint - 1 + while i > 0: + #The start drawing finger joint + path.LineToRel(thickness*math.cos(AngleJoint), thickness*math.sin(AngleJoint)) + #Compute next AngleJoint for return move if necessary + AngleJoint = AngleJoint + math.pi + if AngleJoint > 2*math.pi: + AngleJoint -= 2*math.pi #Keep angle between 0 and 2*pi + #idem for burn factor + DeltaBurn = -DeltaBurn + #Then line which is JointSize long and take into account the burn factor, draw half finger joint when last of first half + if self.DrawHalf < 0 and i == 1: + path.LineToRel((self.JointSize/2+DeltaBurn)*math.cos(self.Angle), (self.JointSize/2+DeltaBurn)*math.sin(self.Angle)) + elif i > 1: #Do not draw last segment, not necessary, will be completed by next path.LIneTo + path.LineToRel((self.JointSize+DeltaBurn)*math.cos(self.Angle), (self.JointSize+DeltaBurn)*math.sin(self.Angle)) + i -= 1 + #Then draw last part, up to end point + #Do not check if necessary because of burn factor, last position is not the real end of notch line. + path.LineTo(self.EndX, self.EndY) + DebugMsg("Last LineTo End ="+str((self.EndX, self.EndY))+'\n') + +class FlexLines: + ''' + This class deals and draw set of flex lines to round a corner + ''' + def drawFlexLines(self, Position, Height, Radius, path): + ''' + First compute how many segment per line. Segment length should be kept short, < 50mm or so, so high boxes means number of lines + Also compute distance between lines, which depend on radius. Shorter radius means smaller distance between lines + But keep min distance at about 1mm minimum and 1.5mm max, after this value flex is quite hard to bend ! + ''' + if Height+2*thickness < 30: + nSegmentFlex = 1 + elif Height+2*thickness < 80: + nSegmentFlex = 2 + elif Height+2*thickness < 150: + nSegmentFlex = 3 + else: + nSegmentFlex = Height+2*thickness // 50 + #Then compute distance between flex lines. The basic idea is to have a minimum of 15 lines per corner, with lines distant at least of 1mm + #But also ensure that distance between lines is at most at 2mm + round_distance = Radius*math.pi/2 + flex_line_spacing = round_distance / 14 + flex_line_spacing = max(flex_line_spacing, 1.0) + flex_line_spacing = min(flex_line_spacing, 1.5) + nb_flex_lines = int(round(round_distance / flex_line_spacing,0)) + DebugMsg("sizeround ="+str(round_distance)+" flex_line_spacing="+str(flex_line_spacing)+" nb_flex_lines="+str(nb_flex_lines)+" size="+str(nb_flex_lines*flex_line_spacing)+"\n") + #nb_flex_lines should be odd + nb_flex_lines |= 1 + flex_line_spacing = round_distance / (nb_flex_lines-1) #Real distance between lines + length_flex_segment_case1 = (Height+2*thickness - 2*nSegmentFlex) / nSegmentFlex #Case 1, 1/2 segment starting at top, n-1 segments and 1/2 segment up to bottom + length_flex_segment_case2 = (Height+2*thickness - 2*(nSegmentFlex+1)) / nSegmentFlex #Case 2, n segments equally spaced (2mm) from top to bottom + DebugMsg("nSegmentFlex="+str(nSegmentFlex)+" sizeround ="+str(round_distance)+" flex_line_spacing="+str(flex_line_spacing)+" nb_flex_lines="+str(nb_flex_lines)+" size="+str(nb_flex_lines*flex_line_spacing)+"\n") + #Now draw set of flex lines + for i in range(nb_flex_lines): + if i % 2: + #In this case draw nSegmentFlex segments which are identical. First segment start at 2 mm above bottom line, segments are 2mm spaced + for j in range(nSegmentFlex): + path.MoveTo(Position + i * flex_line_spacing, Height+thickness-2-j * (length_flex_segment_case2+2) ) + path.LineToVRel(-length_flex_segment_case2) + else: + #In this case draw a first segment starting at -thickness (top), segment is length_flex_segment_even/2 long + path.MoveTo(Position + i * flex_line_spacing, -thickness ) + path.LineToVRel(length_flex_segment_case1/2) #One half segment + #Then nSegmentFlex-1 which are + for j in range(nSegmentFlex-1): + path.MoveTo(Position + i * flex_line_spacing, j*(length_flex_segment_case1+2) + length_flex_segment_case1/2 + 2 - thickness ) + path.LineToVRel(length_flex_segment_case1) + path.MoveTo(Position + i * flex_line_spacing, Height+thickness - length_flex_segment_case1/2) + path.LineTo(Position + i * flex_line_spacing, Height+thickness ) + + +class FlexFace: + ''' + This class deal with flex faces, which are used as vertical faces when rounded corners are used. + ''' + def __init__(self, FlexBandList, isLid, zbox, z_joint, InkscapeGroup, PositionInPage): + ''' + The list FlexBandList contains all elements to be used on top and bottom line of the flex face. + Each element is in a tuple + item 0 is the path id + item 1 is Start_Internal + item 2 is End Internal + item 3..n are tuple with ( size, size_joints top, radius rounded corner, size_joints bottom, [hasCircle]) + Last item is always with radius = 0 + ''' + self.FlexBandList = FlexBandList + self.z_joint = z_joint + self.height = zbox + self.isLid = isLid + #Update PositionInPage to take into account finger joints (only OK if it is a simple shape with finger joints). + PositionInPage[0] -= thickness + PositionInPage[1] -= thickness + + FlexElt = FlexBandList[3] + if len(FlexElt) == 5 and FlexElt[4] and self.isLid == False: + #Change path offset to take into account the circle... + PositionInPage[0] -= WoodHingeSize*thickness + PositionInPage[1] -= WoodHingeSize*thickness + elif len(FlexBandList) > 4: + FlexElt = FlexBandList[len(FlexBandList)-1] + if len(FlexElt) == 5 and FlexElt[4] and self.isLid == False: + #Change path offset to take into account the circle... but only on y here + PositionInPage[1] -= WoodHingeSize*thickness + + + self.BoundingBox = (-PositionInPage[0], -PositionInPage[1], -PositionInPage[0], -PositionInPage[1]) + + #If needed, create path which will be used to draw the face + #The path will be in the group InkscapeGroup + name = FlexBandList[0] + if isLid: + name = 'Lid_'+name + self.path = th_inkscape_path(PositionInPage, InkscapeGroup, name) + #Remember these 2 parameters for Side Notch lines + self.InkscapeGroup = InkscapeGroup + self.BaseName = FlexBandList[0] + + def Close(self): + ''' + Close and write the path after drawing is done + ''' + self.path.Close() + self.path.GenPath() + + def drawClip(self, size_clip, UpDown): + ''' Draw a single clip pattern + The clip is vertical, with length size_clip and width size_clip/4 + Add clip to current path, use LineTo + New path position will be end of clip + If draw up, UpDown should be 1 + ''' + if UpDown != 1: + UpDown=-1 #Will draw negative + #First draw vertical line which is .31*size + self.path.LineToVRel(size_clip*0.3075*UpDown) + #Then small bezier curve + self.path.BezierRel(0, size_clip*0.036241333*UpDown, size_clip*0.045356111, size_clip*0.052734333*UpDown, size_clip*0.0685556, size_clip*0.025*UpDown) + #then line + self.path.LineToRel(size_clip*0.132166667, size_clip*-0.157555556*UpDown) + #then bezier + self.path.BezierRel(size_clip*0.016710556, size_clip*-0.02*UpDown, size_clip*0.05, size_clip*-0.008*UpDown, size_clip*0.05, size_clip*0.017795167*UpDown) + #Then vertical line + self.path.LineToVRel(size_clip*0.615*UpDown) + #then bezier + self.path.BezierRel(0, size_clip*0.026*UpDown, size_clip*-0.032335, size_clip*0.037760389*UpDown, size_clip*-0.05, size_clip*0.017795167*UpDown) + #Then line + self.path.LineToRel(size_clip*-0.132166667, size_clip*-0.157555556*UpDown) + #then last bezier + #c -0.42188,0.5 -1.23438,0.203125 -1.23438,-0.449219 + self.path.BezierRel(size_clip*-0.023437778, size_clip*-0.027777778*UpDown, size_clip*-0.068576667, size_clip*-0.011284722*UpDown, size_clip*-0.068576667, size_clip*0.025*UpDown) + #then last line + self.path.LineToVRel(size_clip*0.3075*UpDown) + + def drawFlexFace(self, ClosePath): + ''' + Draw the flex face into its path, close path if argument is true after drawing + This method is only valid when the corners are straight. + When all corners are rounded, drawRoundedFlexFace should be used. + ''' + ListFlexLines = [] + #Build Top line + xpos = 0 + if self.isLid: + TopJointOff = 3 + BotJointOff = 1 + else: + TopJointOff = 1 + BotJointOff = 3 + leftCircle = False + leftCircleCut = False + leftCirclePos = 0 + rightCircle = False + rightCircleCut = False + rightCirclePos = 0 + LastRadius = 0 #Always start with straight corner + DebugMsg("\nEnter drawFlexFace, isLid="+str(self.isLid)+" Number of elements in list="+str(len(self.FlexBandList))+"Height="+str(self.height)+"\n") + #Now read all elements (3..N) + for i in range(3, len(self.FlexBandList)): + FlexElement = self.FlexBandList[i] + DebugMsg("Top line, i="+str(i)+" FlexElement="+str(FlexElement)+'\n') + if i == 3 and len(FlexElement) == 5 and FlexElement[4] and self.isLid == False: + #Specific case of left wood hinge face, draw circle on top + leftCircle = True + leftCirclePos = -thickness #Remember circle position + #In this case start position is 0, (WoodHingeSize-1)*thickness + self.path.MoveTo(0, (WoodHingeSize-1)*thickness) + self.path.LineToHRel(-thickness) + self.path.drawQuarterCircle(-thickness, -thickness, WoodHingeSize*thickness, 3) #Start Lower Left + self.path.drawQuarterCircle(-thickness, -thickness, WoodHingeSize*thickness, 0) #Start Upper Left + self.path.drawQuarterCircle(-thickness, -thickness, WoodHingeSize*thickness, 1) #Start Upper Right + #After this position should be WoodHingeSize*thickness-thickness, -thickness + self.path.LineTo(FlexElement[0] - FlexElement[2], -thickness) + xpos += FlexElement[0] - LastRadius - FlexElement[2] + elif i == 3 and len(FlexElement) == 5 and FlexElement[4] and self.isLid == True: + leftCircleCut = True + if i == 3: + #Draw path start + if self.FlexBandList[1]: #First item : Start point if internal + self.path.MoveTo(0, -thickness) # Start position (0, -thickness) because flex band is always external in Y direction + else: + self.path.MoveTo(-thickness, -thickness) # Start position (-thickness, -thickness) because x external and flex band is always external in Y direction + self.path.LineTo(0, -thickness) + DebugMsg("Element "+str(i)+": xpos="+str(xpos)+' Size ='+str(FlexElement[0])+' radius ='+str(FlexElement[2])+' --> '+str(FlexElement[2]*math.pi/2)+'\n') + #First Notch Line, with length SizeEdge - SizeOfRoundedCorners + hLine = NotchLine((xpos, -thickness, 0), (xpos+FlexElement[0]-(LastRadius+FlexElement[2]), -thickness, 0), 0.0, FlexElement[TopJointOff]) + hLine.drawNotchLine(self.path) + xpos += FlexElement[0] - LastRadius - FlexElement[2] + elif i == len(self.FlexBandList) - 1 and len(FlexElement) == 5 and FlexElement[4] and self.isLid == False: + #Specific case of right wood hinge face, draw circle on top + rightCircle = True + rightCirclePos = xpos #Remember circle position + #In this case start position is 0, (WoodHingeSize-1)*thickness + self.path.LineTo( xpos + FlexElement[0] - LastRadius - (WoodHingeSize-1)*thickness, -thickness) + xpos += FlexElement[0] - LastRadius + rightCirclePos = xpos + thickness #Remember circle position + self.path.drawQuarterCircle(rightCirclePos, -thickness, WoodHingeSize*thickness, 0) #Start Upper Left + self.path.drawQuarterCircle(rightCirclePos, -thickness, WoodHingeSize*thickness, 1) #Start Upper Right + self.path.drawQuarterCircle(rightCirclePos, -thickness, WoodHingeSize*thickness, 2) #Start Lower Right + self.path.LineToHRel(-thickness) + elif i == len(self.FlexBandList) - 1 and len(FlexElement) == 5 and FlexElement[4] and self.isLid == True: + rightCircleCut = True + DebugMsg("Element "+str(i)+": xpos="+str(xpos)+' Size ='+str(FlexElement[0])+' radius ='+str(FlexElement[2])+' --> '+str(FlexElement[2]*math.pi/2)+'\n') + #First Notch Line, with length SizeEdge - SizeOfRoundedCorners + hLine = NotchLine((xpos, -thickness, 0), (xpos+FlexElement[0]-(LastRadius+FlexElement[2]), -thickness, 0), 0.0, FlexElement[TopJointOff]) + hLine.drawNotchLine(self.path) + xpos += FlexElement[0] - LastRadius - FlexElement[2] + else: + if i == 3: + #Draw path start + if self.FlexBandList[1]: #First item : Start point if internal + self.path.MoveTo(0, -thickness) # Start position (0, -thickness) because flex band is always external in Y direction + else: + self.path.MoveTo(-thickness, -thickness) # Start position (-thickness, -thickness) because x external and flex band is always external in Y direction + self.path.LineTo(0, -thickness) + DebugMsg("Element "+str(i)+": xpos="+str(xpos)+' Size ='+str(FlexElement[0])+' radius ='+str(FlexElement[2])+' --> '+str(FlexElement[2]*math.pi/2)+'\n') + #First Notch Line, with length SizeEdge - SizeOfRoundedCorners + hLine = NotchLine((xpos, -thickness, 0), (xpos+FlexElement[0]-(LastRadius+FlexElement[2]), -thickness, 0), 0.0, FlexElement[TopJointOff]) + hLine.drawNotchLine(self.path) + xpos += FlexElement[0] - LastRadius - FlexElement[2] + #Then the line corresponding to rounded corner, also add coordinates for Flex lines + if FlexElement[2] > 0: + self.path.LineTo(xpos + FlexElement[2]*math.pi/2, -thickness) + ListFlexLines.append((xpos, FlexElement[2])) + xpos += FlexElement[2]*math.pi/2 + LastRadius = FlexElement[2] #For the next edge + if rightCircle == 0: + if self.FlexBandList[2] == 0: #External end ? + self.path.LineTo(xpos + thickness, -thickness) + xpos += thickness + self.path.LineTo(xpos, 0) + DebugMsg('Vertical Line 1, xpos='+str(xpos)+'\n') + #Then Vertical notch line, + vLine = NotchLine((xpos, 0, self.FlexBandList[2]), (xpos, self.height, self.FlexBandList[2]), math.pi/2, self.z_joint) + if rightCircle: + #In this case modify the line just created + #Specific case, shorten Right line of notches to take into account the wood hinge circle. Delete some notches on top + SizeCut = WoodHingeSize*thickness + vLine.ModifyNotchLine(SizeCut, True) #Last parameter, CutOnStart = True + elif rightCircleCut: + #In this case modify the line just created + #Specific case, shorten Right line of notches to take into account the wood hinge circle cut. Delete some notches on bottom + SizeCut = WoodHingeSize*thickness + vLine.ModifyNotchLine(SizeCut, False) #Last parameter, CutOnStart = False + vLine.drawNotchLine(self.path) #Draw the line of notches + if rightCircleCut: + #Then the cut. Choose 0.95*SizeCut because the actual circle is NOT centered of this vertical edge but shifted by thickness + self.path.LineTo(xpos, self.height+thickness-SizeCut*0.95) + #Then the rounded cut, almost a quarter of circle, radius SizeCut + self.path.Bezier(xpos-SizeCut*0.23, self.height+thickness-SizeCut*0.90, + xpos-SizeCut+thickness, self.height+thickness-SizeCut*0.551916, + xpos-SizeCut+thickness, self.height+thickness) + else: + self.path.LineTo(xpos, self.height+thickness) + DebugMsg("Start bottom line, reverse\n") + #Then Bottom line (reverse from top line) + if self.FlexBandList[2] == 0: #External end ? + self.path.LineTo(xpos - thickness, self.height+thickness) + xpos -= thickness + for i in range(len(self.FlexBandList)-1, 2, -1): #Start at end up to third element + #For reverse drawing, should have the radius of the next corner + if i > 3: + NextRadius = self.FlexBandList[i-1][2] + else: + NextRadius = 0 + FlexElement = self.FlexBandList[i] + DebugMsg("Element "+str(i)+": xpos="+str(xpos)+' Size ='+str(FlexElement[0])+' radius ='+str(FlexElement[2])+' --> '+str(FlexElement[2]*math.pi/2)+' Next Radius='+str(NextRadius)+'\n') + #First the line corresponding to rounded corner (reverse from previous) + DebugMsg("Draw line for rounded corner, size ="+str(FlexElement[2]*math.pi/2)+" New xpos="+str(xpos - FlexElement[2]*math.pi/2)+'\n') + if FlexElement[2] > 0: + self.path.LineTo(xpos - FlexElement[2]*math.pi/2, self.height+thickness) + xpos -= FlexElement[2]*math.pi/2 + #Then Notch Line + if i == 3 and leftCircleCut: + #specific case, draw up to start of cut + self.path.LineTo(SizeCut - thickness , self.height+thickness) + xpos = 0 #Not true yet, but needed to place the vertical line at the right position + DebugMsg("leftCircleCut True, pathto "+str((SizeCut - thickness , self.height+thickness))+" xpos ="+str(xpos)+"\n") + else: + hLine = NotchLine((xpos, self.height+thickness, 0), (xpos-(FlexElement[0]-FlexElement[2]-NextRadius), self.height+thickness, 0), math.pi, FlexElement[BotJointOff]) + hLine.drawNotchLine(self.path) + xpos -= FlexElement[0] - NextRadius - FlexElement[2] + if leftCircleCut == False: + if self.FlexBandList[1] == 0: #External Start ? + self.path.LineTo(xpos - thickness, self.height+thickness) + xpos -= thickness + self.path.LineTo(xpos, self.height) + #Then Vertical notch line for left edge + vLine = NotchLine((xpos, self.height, self.FlexBandList[1]), (xpos, 0, self.FlexBandList[1]), -math.pi/2, self.z_joint) + if leftCircle: + SizeCut = WoodHingeSize*thickness + vLine.ModifyNotchLine(SizeCut, False) #Last parameter, CutOnStart = False, because we start at bottom + elif leftCircleCut: + #In this case, shorten the notch line on bottom because of the circle cut + SizeCut = WoodHingeSize*thickness + vLine.ModifyNotchLine(SizeCut, True) #Last parameter, CutOnStart = True, because we start at bottom + #Draw the rounded cut, almost a quarter of circle, radius ExtRadius + self.path.Bezier(SizeCut-thickness, self.height+thickness-SizeCut*0.551916 + , SizeCut*0.23, self.height+thickness-SizeCut*0.90 + , 0, self.height+thickness-SizeCut*0.95) + + + vLine.drawNotchLine(self.path) + DebugMsg('Vertical Line 2, xpos='+str(xpos)+'\n') + + #Draw up to -thickness because external in Y direction + if leftCircle: + self.path.LineTo(xpos, SizeCut - thickness) + else: + self.path.LineTo(xpos, -thickness) + + # If circle, draw interior and rectangles + #Case with WoodHingeCorner, draw circle and rectangle + if leftCircle: + #Draw the circle internal to the hinge, radius is 2*thickness mm + CircleRadius = WoodHingeInternalCircle*thickness + self.path.drawCircle(leftCirclePos, -thickness, CircleRadius) + #Then the internal rectangle, rectangle height is 1.5*thickness + RectHeight = WoodHingeRect*thickness + self.path.MoveTo(leftCirclePos, -thickness) #Starting point Ext/Bottom + self.path.LineToVRel(-RectHeight) #Ext/Top + self.path.LineToHRel(thickness) #Int/Top + self.path.LineToVRel(RectHeight) #Int Bottom + self.path.LineToHRel(-thickness) #Return to start + if rightCircle: + #Draw the circle internal to the hinge, radius is 2*thickness mm + CircleRadius = WoodHingeInternalCircle*thickness + self.path.drawCircle(rightCirclePos, -thickness, CircleRadius) + #Then the internal rectangle, rectangle height is 1.5*thickness + RectHeight = WoodHingeRect*thickness + self.path.MoveTo(rightCirclePos, -thickness) #Starting point Ext/Bottom + self.path.LineToVRel(-RectHeight) #Ext/Top + self.path.LineToHRel(-thickness) #Int/Top + self.path.LineToVRel(RectHeight) #Int Bottom + self.path.LineToHRel(thickness) #Return to start + + + #Now draw flex lines + + for FlexLinePos in ListFlexLines: + Flex = FlexLines() + Flex.drawFlexLines(FlexLinePos[0], self.height, FlexLinePos[1], self.path) + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + if ClosePath: + self.path.Close() + self.path.GenPath() + + def drawRoundedFlexFace(self, ClosePath): + ''' + Draw a Flex band when all corners are rounded. This is a specific case because there are clips at the center of back face + Back face should be the first in list + ''' + + #Compute clips number and position, zone with clips will be between thickness and zbox - thickness + zoneclips = self.height - 2*thickness + #Size of clips is dependant to size of zoneclips + if zoneclips < 50: + sizeclips = 10 + else: + sizeclips = 18 + nbclips = int(zoneclips // sizeclips) + if nbclips == 0: + inkex.errormsg('Box is not high enough, no rrom for clips') + return + DebugMsg("\ndrawRoundedFlexFace, sizeclips="+str(sizeclips)+" nbclips="+str(nbclips)+'\n') + ListFlexLines = [] + LastRadius = self.FlexBandList[6][2] # Radius of left back corner + xpos = 0 + FlexElement = self.FlexBandList[3] + DebugMsg("First Half notch line, size ="+str(FlexElement[0])+" Size Round BackLeft="+str(LastRadius)+" Size Round BackRight="+str(FlexElement[2])+'\n') + #The notch line will be centered on xpos (0), so should start at -(SizeNotchLine-SizeRadius_BackLeft-SizeRadius_BackRight)/2 + First_hLine = NotchLine((-(FlexElement[0]-FlexElement[2] - LastRadius)/2, -thickness, 0), ((FlexElement[0]-FlexElement[2] - LastRadius)/2, -thickness, 0), 0.0, FlexElement[1], 1) #Draw only second half + if First_hLine.StartStatus == 0: + self.path.MoveTo(0, -thickness) # Start position (0, -thickness) because flex band is external in Y direction, and this side start internal in X + else: + self.path.MoveTo(0, 0) # Start position (0, 0) because flex band is internal in Y direction, and this side start internal in X + First_hLine.drawNotchLine(self.path) + xpos = (FlexElement[0]-FlexElement[2]-LastRadius)/2 + DebugMsg("After drawing first half of notch line, xpos ="+str(xpos)+'\n') + ListFlexLines.append((xpos, FlexElement[2])) #Add this position to draw flex lines. + #Then the line corresponding to rounded corner + if FlexElement[2] > 0: + self.path.LineTo(xpos + FlexElement[2]*math.pi/2, -thickness) + xpos += FlexElement[2]*math.pi/2 + DebugMsg("Line corresponding to back right corner, l="+str(FlexElement[2]*math.pi/2)+" xpos="+str(xpos)+'\n') + LastRadius = FlexElement[2] + #Now read all elements (4..N-1) --> 4..6 here + for i in range(4, 7): + FlexElement = self.FlexBandList[i] + DebugMsg("Element "+str(i)+": xpos="+str(xpos)+' Size ='+str(FlexElement[0])+' radius ='+str(FlexElement[2])+" LastRadius="+str(LastRadius)+"--> "+str(FlexElement[0] - LastRadius - FlexElement[2]) +'\n') + #First Notch Line + hLine = NotchLine((xpos, -thickness, 0), (xpos+FlexElement[0] - LastRadius - FlexElement[2] , -thickness, 0), 0.0, FlexElement[1], 0) + hLine.drawNotchLine(self.path) + xpos += FlexElement[0] - LastRadius - FlexElement[2] + #Then the line corresponding to rounded corner + if FlexElement[2] > 0: + self.path.LineTo(xpos + FlexElement[2]*math.pi/2, -thickness) + ListFlexLines.append((xpos, FlexElement[2])) + xpos += FlexElement[2]*math.pi/2 + LastRadius = FlexElement[2] + DebugMsg("After drawing line for rounded corner, xpos="+str(xpos)+'\n') + + #Last element + FlexElement = self.FlexBandList[7] + DebugMsg("Last Element (7): xpos="+str(xpos)+' Size ='+str(FlexElement[0])+' radius ='+str(FlexElement[2])+" LastRadius="+str(LastRadius)+"--> "+str(FlexElement[0] - LastRadius - FlexElement[2]) +'\n') + #Last Notch Line, at last half of it ! First half indeed. + hLine = NotchLine((xpos, -thickness, 0), (xpos+FlexElement[0] - LastRadius - FlexElement[2], -thickness, 0), 0.0, FlexElement[1], -1) + hLine.drawNotchLine(self.path) + xpos += (FlexElement[0] - LastRadius - FlexElement[2])/2 + + self.path.LineTo(xpos, thickness) + DebugMsg('Clip Line 1, xpos='+str(xpos)+'\n') + #Then Vertical clip line + self.path.LineToVRel((zoneclips - nbclips*sizeclips)/2) + for i in range(nbclips): + self.drawClip(sizeclips, 1) + + DebugMsg("Bottom line, reverse, start at xpos="+str((xpos, self.height+thickness))+'\n') + #Then Bottom line (reverse from top line) + FlexElement = self.FlexBandList[7] + #Element 7 is the last one, with radius of Back Right corner + NextRadius = self.FlexBandList[6][2] #This is the radius of the left right corner + DebugMsg("Element 7: xpos="+str(xpos)+' Size ='+str(FlexElement[0])+' radius ='+str(FlexElement[2])+' --> '+str(FlexElement[0]-FlexElement[2]-NextRadius)+'\n') + #Last Notch Line, half line. Center line on xpos + hLine = NotchLine((xpos + (FlexElement[0] - NextRadius - FlexElement[2])/2, self.height+thickness, 0), (xpos-(FlexElement[0] - NextRadius - FlexElement[2])/2, self.height+thickness, 0), math.pi, FlexElement[3], 1) + if hLine.StartStatus == 0: + self.path.LineTo(xpos, self.height+thickness) + else: + self.path.LineTo(xpos, self.height) + hLine.drawNotchLine(self.path) + xpos -= (FlexElement[0] - NextRadius - FlexElement[2])/2 + for i in range(6, 3, -1): #Start at end up to third element + FlexElement = self.FlexBandList[i] + NextRadius = self.FlexBandList[i-1][2] + DebugMsg("Element "+str(i)+": xpos="+str(xpos)+' Size ='+str(FlexElement[0])+" radius ="+str(FlexElement[2])+" NextRadius="+str(NextRadius)+' --> '+str(FlexElement[0] - FlexElement[2] - NextRadius)+'\n') + #First the line corresponding to rounded corner (reverse from previous) + if FlexElement[2] > 0: + self.path.LineTo(xpos - FlexElement[2]*math.pi/2, self.height+thickness) + xpos -= FlexElement[2]*math.pi/2 + DebugMsg("After line for rounded corner, l="+str(FlexElement[2]*math.pi/2)+" Pos="+str((xpos, self.height+thickness))+'\n') + #Then Notch Line + hLine = NotchLine((xpos, self.height+thickness, 0), (xpos-(FlexElement[0] - FlexElement[2] - NextRadius), self.height+thickness, 0), math.pi, FlexElement[3], 0) + hLine.drawNotchLine(self.path) + xpos -= FlexElement[0] - FlexElement[2] - NextRadius + + NextRadius = self.FlexBandList[7][2] + FlexElement = self.FlexBandList[3] + DebugMsg("First Element (3): xpos="+str(xpos)+' Size ='+str(FlexElement[0])+" radius ="+str(FlexElement[2])+" NextRadius="+str(NextRadius)+' --> '+str(FlexElement[0] - FlexElement[2] - NextRadius)+'\n') + #Then Last round corner + self.path.LineTo(xpos - FlexElement[2]*math.pi/2, self.height+thickness) + xpos -= FlexElement[2]*math.pi/2 + DebugMsg("Last Round corner, l="+str(FlexElement[2]*math.pi/2)+" new pos="+str((xpos, self.height+thickness))+'\n') + #Then Notch Line, half of it + hLine = NotchLine((xpos, self.height+thickness, 0), (xpos-(FlexElement[0]-FlexElement[2]-LastRadius), self.height+thickness, 0), math.pi, FlexElement[3], -1) #Draw only first half + hLine.drawNotchLine(self.path) + xpos -= (FlexElement[0]-FlexElement[2] - LastRadius)/2 + self.path.LineTo(xpos, self.height) + #Then Vertical clip line + DebugMsg('Vertical Clip 2, pos='+str((xpos, self.height))+'\n') + #and vertical trip (reverse) + self.path.LineToVRel(-1.0*((zoneclips - nbclips*sizeclips)/2) - thickness) + for i in range(nbclips): + self.drawClip(sizeclips, -1) + if First_hLine.StartStatus == 0: #If StartStatus is external, move to (0,-Thickness) + self.path.LineTo(0, -thickness) + else: + self.path.LineTo(0, 0) + + #Now draw flex lines + + for FlexLinePos in ListFlexLines: + Flex = FlexLines() + Flex.drawFlexLines(FlexLinePos[0], self.height, FlexLinePos[1], self.path) + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + if ClosePath: + self.path.Close() + self.path.GenPath() + + def drawSideLineNotches(self): + ''' + Draw the side line notches used with sliding lid. These lines are on left and right (if flex) lines + These lines are created whenever the top notches are not null + ''' + n_side_line = 0 + ypos = -self.BoundingBox[1] + LastRadius = 0 + for i in range(3, len(self.FlexBandList)): + FlexElement = self.FlexBandList[i] + if FlexElement[1] > 0: #Notches are present, draw SideLine with notches + n_side_line += 1 + DebugMsg("\nDraw "+self.BaseName+'LidJoint'+str(n_side_line)+" Radius="+str(FlexElement[2])+" LastRadius="+str(LastRadius)+" Size ="+str(FlexElement[0] - FlexElement[2] - LastRadius)+'\n') + Line = BoxFace(self.BaseName+'LidJoint'+str(n_side_line), + CornerPoint((0,0), 0, 1, 1), 0, #Start point, no notch + CornerPoint((FlexElement[0] - FlexElement[2] - LastRadius,0), 0, 1, 1), 0, #Size is up to rounded corner, no notch for the small side + CornerPoint((FlexElement[0] - FlexElement[2] - LastRadius,thickness), 0, 1, 1), FlexElement[1], #Same x, height = 2*thickness, joints up to next + CornerPoint((0, thickness), 0, 1, 1), 0, + self.InkscapeGroup, [-self.BoundingBox[2]-2, ypos]) + ypos -= 2*thickness + 2 + Line.drawSimpleFace(True) + LastRadius = FlexElement[2] + + +class BoxFace: + ''' + This class deals with faces + Each face is defined with 4 corners and the size of the finger joints between the corners + finger joint size = 0 means no finger joints (straight line) + The InkscapeGroup parameter is used to bind the path in this group + The PositionInPage parameter is used to fix the path within the inkscape document + ''' + def __init__(self, name, top_left, top_finger_joint, top_right, right_finger_joint, bottom_right, bottom_finger_joint, bottom_left, left_finger_joint, InkscapeGroup, PositionInPage, Path=None): + #First set up the corners + self.top_left_corner = top_left + self.top_right_corner = top_right + self.bottom_right_corner = bottom_right + self.bottom_left_corner = bottom_left + #then the lines between the corners + self.TopLine = NotchLine((top_left.x_start_joint, top_left.y_start_joint, top_left.y_internal), (top_right.x_end_joint, top_right.y_end_joint, top_right.y_internal), 0, top_finger_joint) + + self.RightLine = NotchLine((top_right.x_start_joint, top_right.y_start_joint, top_right.x_internal), (bottom_right.x_end_joint, bottom_right.y_end_joint, bottom_right.x_internal), math.pi/2, right_finger_joint) + + self.BottomLine = NotchLine((bottom_right.x_start_joint, bottom_right.y_start_joint, bottom_right.y_internal), (bottom_left.x_end_joint, bottom_left.y_end_joint, bottom_left.y_internal), math.pi, bottom_finger_joint) + + self.LeftLine = NotchLine((bottom_left.x_start_joint, bottom_left.y_start_joint, bottom_left.x_internal), (top_left.x_end_joint, top_left.y_end_joint, top_left.x_internal), -math.pi/2, left_finger_joint) + + #Update PositionInPage to take into account external corners or notches + if self.top_left_corner.WoodHingeCorner: + PositionInPage[0] -= (WoodHingeSize+1)*thickness + PositionInPage[1] -= WoodHingeSize*thickness + elif self.top_right_corner.WoodHingeCorner: + PositionInPage[1] -= WoodHingeSize*thickness + PositionInPage[0] -= thickness + elif self.top_left_corner.x_internal == 0 or self.bottom_left_corner.x_internal == 0 or self.LeftLine.nb_finger_joint > 0: + PositionInPage[0] -= thickness + if self.top_left_corner.y_internal == 0 or self.top_right_corner.y_internal == 0 or self.TopLine.nb_finger_joint > 0: + PositionInPage[1] -= thickness + self.BoundingBox = (-PositionInPage[0], -PositionInPage[1], -PositionInPage[0], -PositionInPage[1]) + self.name = name + self.InkscapeGroup = InkscapeGroup + #If needed, create path which will be used to draw the face + #The path will be in the group InkscapeGroup + if Path == None: + self.path = th_inkscape_path(PositionInPage, InkscapeGroup, name) + DebugMsg("Creating path("+name+") Position ="+str(PositionInPage)+'\n') + else: + self.path = Path + #DebugMsg("Create path "+str(name)+ " PositionInPage="+str(PositionInPage)+'\n') + + def Close(self): + ''' + Close and write the path after drawing is done + ''' + self.path.Close() + self.path.GenPath() + + + def drawSimpleFace(self, ClosePath): + ''' + Draw the face, when there are no other elements in the perimeter + If ClosePath is true the path is closed + ''' + if self.top_left_corner.WoodHingeCorner: + #Specific case, shorten Left line of notches to take into account the wood hinge circle + #But first copy values from right edge, because WoodHingeCorner has modified the notch line + self.LeftLine.start_line_joint_y = self.RightLine.end_line_joint_y + self.LeftLine.JointSize = self.RightLine.JointSize + self.LeftLine.nb_finger_joint = self.RightLine.nb_finger_joint + self.LeftLine.EndY = self.RightLine.StartY + SizeCut = WoodHingeSize * thickness + #Start from bottom (because reverse on left line) up to sizecut + self.LeftLine.ModifyNotchLine(SizeCut, False) #Last parameter, CutOnStart = False, because we start at bottom + if self.top_right_corner.WoodHingeCorner: + #Specific case, shorten Right line of notches to take into account the wood hinge circle + #But first copy values from Left edge, because WoodHingeCorner has modified the notch line + self.RightLine.start_line_joint_y = self.LeftLine.end_line_joint_y + self.RightLine.end_line_joint_y = self.LeftLine.start_line_joint_y + self.RightLine.JointSize = self.LeftLine.JointSize + self.RightLine.nb_finger_joint = self.LeftLine.nb_finger_joint + self.RightLine.StartY = self.LeftLine.EndY + SizeCut = WoodHingeSize * thickness + self.RightLine.ModifyNotchLine(SizeCut, True) #Last parameter, CutOnStart = False, because we start at Top + # Go To starting point + self.path.MoveTo(self.top_left_corner.x_end_joint, self.top_left_corner.y_end_joint) + #DebugMsg("StartPoint, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #first (top left) corner + self.top_left_corner.drawCorner(self.path) + #DebugMsg("TopLeft, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #then top edge + self.TopLine.drawNotchLine(self.path) + #DebugMsg("Top Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Top right corner + self.top_right_corner.drawCorner(self.path) + #DebugMsg("Top Right corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Right edge + self.RightLine.drawNotchLine(self.path) + #DebugMsg("Right Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom right corner + self.bottom_right_corner.drawCorner(self.path) + #DebugMsg("Bottom Right corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom edge + self.BottomLine.drawNotchLine(self.path) + #DebugMsg("Bottom Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom left corner + self.bottom_left_corner.drawCorner(self.path) + #DebugMsg("Bottom Left corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Left edge + self.LeftLine.drawNotchLine(self.path) + #DebugMsg("Left Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #The position is now (top_left_corner.x_end_joint, top_left_corner.y_end_joint), it is the starting point + + #Case with WoodHingeCorner, draw circle and rectangle + if self.top_left_corner.WoodHingeCorner: + #Draw the circle internal to the hinge, radius is 2*thickness mm + CircleRadius = WoodHingeInternalCircle*thickness + self.path.drawCircle(-thickness, -thickness, CircleRadius) + #Then the internal rectangle, rectangle height is 1.5*thickness + RectHeight = WoodHingeRect*thickness + self.path.MoveTo(-thickness, -thickness) #Starting point Ext/Bottom + self.path.LineToVRel(-RectHeight) #Ext/Top + self.path.LineToHRel(thickness) #Int/Top + self.path.LineToVRel(RectHeight) #Int Bottom + self.path.LineToHRel(-thickness) #Return to start + if self.top_right_corner.WoodHingeCorner: + #Draw the circle internal to the hinge, radius is 2*thickness mm + CircleRadius = WoodHingeInternalCircle*thickness + self.path.drawCircle(self.top_right_corner.x_corner+thickness, -thickness, CircleRadius) + #Then the internal rectangle, rectangle height is 1.5*thickness + RectHeight = WoodHingeRect*thickness + self.path.MoveTo(self.top_right_corner.x_corner+thickness, -thickness) #Starting point Ext/Bottom + self.path.LineToVRel(-RectHeight) #Ext/Top + self.path.LineToHRel(-thickness) #Int/Top + self.path.LineToVRel(RectHeight) #Int Bottom + self.path.LineToHRel(thickness) #Return to start + + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + + def drawSimpleFaceHinge(self, HingeList, ClosePath): + ''' + Draw the face, and the cut for the hinge + If ClosePath is true the path is closed + ''' + # Go To starting point + self.path.MoveTo(self.top_left_corner.x_end_joint, self.top_left_corner.y_end_joint) + #DebugMsg("StartPoint, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #first (top left) corner + self.top_left_corner.drawCorner(self.path) + #DebugMsg("TopLeft, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #then top edge, no notch in this case, but cut for the hinge(s) + for Hinge in HingeList: + HingePos = Hinge[2] - 1 + self.path.LineTo(HingePos, 0) + #Then cut for the Hinge + self.path.LineToVRel(4.5*thickness+1) + self.path.LineToHRel(5*thickness + 2.5*SteelHingeSpacing + 2) + self.path.LineToVRel(-4.5*thickness-1) + #Then line up to length + self.path.LineTo(self.top_right_corner.x_corner, 0) #Up to end of top line + #Top right corner + self.top_right_corner.drawCorner(self.path) + #DebugMsg("Top Right corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Right edge + self.RightLine.drawNotchLine(self.path) + #DebugMsg("Right Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom right corner + self.bottom_right_corner.drawCorner(self.path) + #DebugMsg("Bottom Right corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom edge + self.BottomLine.drawNotchLine(self.path) + #DebugMsg("Bottom Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom left corner + self.bottom_left_corner.drawCorner(self.path) + #DebugMsg("Bottom Left corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Left edge + self.LeftLine.drawNotchLine(self.path) + #DebugMsg("Left Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #The position is now (top_left_corner.x_end_joint, top_left_corner.y_end_joint), it is the starting point + + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + def drawFaceWithHoles(self, n_slot, slot_size, DeltaHolePosition, z_joint_size, ClosePath, HingeList = None): + ''' + Draw a face with holes (for internal walls) + The holes positions are given in a list (see CalcNotchPos), and an offset will be added if necessary (shorten face) + ''' + if HingeList == None: + #No cut for hinge, call regular function to draw face + self.drawSimpleFace(False) #First draw the face itself, without closing path + else: + self.drawSimpleFaceHinge(HingeList, False) #First draw the face itself, without closing path + #now the holes used to fix the walls + #This line will be used to draw the holes + l_NotchLine = NotchLine((0, 0, 1), (self.bottom_right_corner.y_end_joint, 0, 1), math.pi/2, z_joint_size) + + StartHole = l_NotchLine.start_line_joint_y + l_NotchLine.JointSize + Spacing = 2*l_NotchLine.JointSize + DebugMsg("drawFaceWithHoles, Hole Start ="+str(StartHole)+" Spacing="+str(Spacing)+" n_holes"+str(l_NotchLine.nb_finger_joint//2) + +' n_slot='+str(n_slot)+' slot_size='+str(slot_size)+" Delta_Pos="+str(DeltaHolePosition)+'\n') + for i in range(1, n_slot): + #For each wall, draw holes corresponding at each notch on zbox + for j in range((l_NotchLine.nb_finger_joint)//2): + drawHole(self.path, i*(slot_size+thickness) - DeltaHolePosition -thickness, StartHole + j*Spacing, thickness, l_NotchLine.JointSize, burn) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + + def drawSideLineNotches(self, xpos, ypos): + ''' + Draw the side line notches used with sliding lid. These lines are on left and right lines + These lines are created whenever the top notches are not null + ''' + n_side_line = 0 + Line = BoxFace(self.name+'LidJoint', + CornerPoint((0,0), 0, 1, 1), 0, #Start point, no notch + CornerPoint((self.top_right_corner.xc - self.top_left_corner.xc,0), 0, 1, 1), 0, #Size is up to rounded corner, no notch for the small side + CornerPoint((self.top_right_corner.xc - self.top_left_corner.xc,thickness), 0, 1, 1), self.TopLine.JointSize, #Same x, height = 2*thickness, joints up to next + CornerPoint((0, thickness), 0, 1, 1), 0, + self.InkscapeGroup, [xpos, ypos]) + Line.drawSimpleFace(True) + + + def drawExternalBackSlidingLid(self, ClosePath): + ''' + Draw the face, specific case for sliding lid back face + If ClosePath is true the path is closed + ''' + # Go To starting point + self.path.MoveTo(self.top_left_corner.x_end_joint, self.top_left_corner.y_end_joint) + #first (top left) corner + self.top_left_corner.drawCorner(self.path) + #DebugMsg("TopLeft, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Then draw below thickness + self.path.LineToVRel(thickness) + #then top edge, without notches + self.path.LineToHRel(self.top_right_corner.x_end_joint) + #Then Up thickness + self.path.LineToVRel(-thickness) + #Top right corner + self.top_right_corner.drawCorner(self.path) + #DebugMsg("Top Right corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Right edge + self.RightLine.drawNotchLine(self.path) + #DebugMsg("Right Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom right corner + self.bottom_right_corner.drawCorner(self.path) + #DebugMsg("Bottom Right corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom edge + self.BottomLine.drawNotchLine(self.path) + #DebugMsg("Bottom Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Bottom left corner + self.bottom_left_corner.drawCorner(self.path) + #DebugMsg("Bottom Left corner, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Left edge + self.LeftLine.drawNotchLine(self.path) + #DebugMsg("Left Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #The position is now (top_left_corner.x_end_joint, top_left_corner.y_end_joint), it is the starting point + + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + def drawExternalBackWoodHingeLid(self, ClosePath): + ''' + Draw the face, specific case for wood hinge lid back face + This face will use a specific vertical notch lines, which are shorter by the circle of the hinge + If ClosePath is true the path is closed + ''' + DebugMsg("\n enter drawExternalBackWoodHingeLid\n") + #Size of wood hinge cut + SizeCut = WoodHingeSize*thickness + 2*burn + #Modify right line to accomodate this cut + self.RightLine.ModifyNotchLine(SizeCut, True) + #Do the same for left line, but reverse + self.LeftLine.ModifyNotchLine(SizeCut, False) + # Go To starting point + self.path.MoveTo(0, -thickness) + self.path.LineTo(self.top_right_corner.x_end_joint, -thickness) #Space for cut + #Then go to cut + self.path.LineToVRel(SizeCut) + self.path.LineToHRel(thickness) + #Right edge + self.RightLine.drawNotchLine(self.path) + #Bottom right corner + self.bottom_right_corner.drawCorner(self.path) + #Bottom edge + self.BottomLine.drawNotchLine(self.path) + #Bottom left corner + self.bottom_left_corner.drawCorner(self.path) + #Left edge + self.LeftLine.drawNotchLine(self.path) + #Then cut + self.path.LineToHRel(thickness) + self.path.LineTo(0, -thickness) + #The position is now (top_left_corner.x_end_joint, top_left_corner.y_end_joint), it is the starting point + + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + def drawLidBackWoodHinge(self, ClosePath): + ''' + Draw the lid back when Wood hinge is chosen, specific case for wood hinge lid back face + This face will use a specific vertical notch lines, which are shorter by the circle of the hinge + If ClosePath is true the path is closed + ''' + #Size of wood hinge cut + SizeCut = WoodHingeSize*thickness + 2*burn + DebugMsg("\n enter drawLidBackWoodHinge, SizeCut = "+str(SizeCut)+"\n") + DebugMsg("Joint size ="+str(self.RightLine.JointSize)+" Top_Right="+str((self.top_right_corner.x_corner, self.top_right_corner.y_corner))+" Bottom Right="+str((self.bottom_right_corner.x_corner, self.bottom_right_corner.y_corner))+"\n") + #Change right line, from top to bottom RightLine + self.RightLine.ModifyNotchLine(SizeCut, False) #Last Parameter false because we start on Top and cut is on bottom + #The left line will be the same but reverse + self.LeftLine.ModifyNotchLine(SizeCut, True) #Last Parameter false because we start on Bottom and cut is on bottom + # Go To starting point + self.path.MoveTo(self.top_left_corner.x_end_joint, self.top_left_corner.y_end_joint) + #DebugMsg("StartPoint, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #first (top left) corner + self.top_left_corner.drawCorner(self.path) + #DebugMsg("TopLeft, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #then top edge + self.TopLine.drawNotchLine(self.path) + #DebugMsg("Top Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Top right corner + self.top_right_corner.drawCorner(self.path) + #Right edge + self.RightLine.drawNotchLine(self.path) + #Then the cut with the notch for the circle + StartNotchCircle = 1.5 * thickness + self.path.LineToHRel(-thickness) + self.path.LineTo(self.bottom_right_corner.x_end_joint - thickness, self.bottom_right_corner.y_corner - StartNotchCircle) + self.path.LineToHRel(thickness) + self.path.LineToVRel(StartNotchCircle) + self.path.LineTo(self.bottom_right_corner.x_end_joint - thickness, self.bottom_right_corner.y_corner) + #Bottom edge + self.path.LineTo(-thickness, self.bottom_left_corner.y_corner) + #Then Cut + self.path.LineToVRel(-StartNotchCircle) + self.path.LineToHRel(thickness) + self.path.LineTo(0, self.bottom_left_corner.y_corner - SizeCut) + self.path.LineToHRel(-thickness) + #Left edge + self.LeftLine.drawNotchLine(self.path) + self.path.LineTo(-thickness, -thickness) + + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + def drawExternalBackSteelHingeLid(self, HingeList, ClosePath): + ''' + Draw the face, specific case for lid with 'steel hinge' back face + This face will have cuts to place the real hinge elements + HingeList is a list of Hinge position + If ClosePath is true the path is closed + ''' + DebugMsg("\n enter drawExternalBackSteelHingeLid\n") + # Go To starting point + self.path.MoveTo(-thickness, -thickness) + #The top line will have cut for the hinge + for Hinge in HingeList: + HingePos = Hinge[2] + self.path.LineTo(HingePos + thickness, -thickness) #add thickness in x because hinge pos is internal, and sub thickness in y because always external + #Then Hinge + self.path.LineToVRel(2.5*thickness) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-thickness + 0.5*SteelHingeSpacing) + self.path.LineToHRel(thickness + SteelHingeSpacing) + self.path.LineToVRel(thickness - 0.5*SteelHingeSpacing) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-thickness + 0.5*SteelHingeSpacing) + self.path.LineToHRel(thickness + SteelHingeSpacing) + self.path.LineToVRel(thickness - 0.5*SteelHingeSpacing) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-2.5*thickness) + #Then line up to length + self.path.LineTo(self.top_right_corner.x_corner, -thickness) #Up to end of top line + + #Right edge + self.RightLine.drawNotchLine(self.path) + #Bottom right corner + self.bottom_right_corner.drawCorner(self.path) + #Bottom edge + self.BottomLine.drawNotchLine(self.path) + #Bottom left corner + self.bottom_left_corner.drawCorner(self.path) + #Left edge + self.LeftLine.drawNotchLine(self.path) + #Then return to Start + self.path.LineTo(-thickness, -thickness) + + #Now draw holes for the hinge(s) + for Hinge in HingeList: + self.path.MoveTo(Hinge[2]+thickness, 3.5*thickness) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-thickness) + self.path.LineToHRel(-thickness) + self.path.LineToVRel(thickness) + self.path.MoveTo(Hinge[2] + 3*thickness + SteelHingeSpacing, 3.5*thickness) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-thickness) + self.path.LineToHRel(-thickness) + self.path.LineToVRel(thickness) + self.path.MoveTo(Hinge[2] + 5*thickness + 2*SteelHingeSpacing, 3.5*thickness) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-thickness) + self.path.LineToHRel(-thickness) + self.path.LineToVRel(thickness) + + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + + def drawLidBackSteelHinge(self, HingeList, ClosePath): + ''' + Draw the lid back, specific case for lid with 'steel hinge' back face + This face will have cuts to place the real hinge elements + HingeList is a list of Hinge position + If ClosePath is true the path is closed + ''' + DebugMsg("\n enter drawLidBackSteelHinge\n") + # Go To starting point + self.path.MoveTo(self.top_left_corner.x_end_joint, self.top_left_corner.y_end_joint) + #DebugMsg("StartPoint, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #first (top left) corner + self.top_left_corner.drawCorner(self.path) + #DebugMsg("TopLeft, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #then top edge + self.TopLine.drawNotchLine(self.path) + #DebugMsg("Top Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Top right corner + self.top_right_corner.drawCorner(self.path) + #Right edge + self.RightLine.drawNotchLine(self.path) + #Bottom right corner + self.bottom_right_corner.drawCorner(self.path) + #Bottom edge, this one has cut for the hinge(s). + z = self.bottom_right_corner.y_corner + #Now draw holes for the hinge(s), reverse because draw from right to left + for Hinge in reversed(HingeList): + HingePos = Hinge[2] + thickness + #First H line up to end of 2nd hinge + self.path.LineTo(HingePos + 5*thickness + 2.5*SteelHingeSpacing, z) + #Then Hinge + self.path.LineToVRel(-1.5*thickness - 0.5*SteelHingeSpacing) + self.path.LineToHRel(-thickness - SteelHingeSpacing) + self.path.LineToVRel(-thickness + 0.5*SteelHingeSpacing) + self.path.LineToHRel(-thickness) + self.path.LineToVRel(thickness - 0.5*SteelHingeSpacing) + self.path.LineToHRel(-thickness - SteelHingeSpacing) + self.path.LineToVRel(-thickness + 0.5*SteelHingeSpacing) + self.path.LineToHRel(-thickness) + self.path.LineToVRel(thickness - 0.5*SteelHingeSpacing) + self.path.LineToHRel(-thickness - SteelHingeSpacing) + self.path.LineToVRel(1.5*thickness + 0.5*SteelHingeSpacing) + #Then draw up to corner + self.path.LineTo(self.bottom_left_corner.x_end_joint, self.bottom_left_corner.y_end_joint) + #Bottom left corner + self.bottom_left_corner.drawCorner(self.path) + #Left edge + self.LeftLine.drawNotchLine(self.path) + #Then return to Start + self.path.LineTo(-thickness, -thickness) + + #Then draw holes for the hinge(s) + for Hinge in HingeList: + HingePos = Hinge[2] + 2*thickness + self.path.MoveTo(HingePos + 0.5*SteelHingeSpacing, z - 3.5*thickness) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-thickness) + self.path.LineToHRel(-thickness) + self.path.LineToVRel(thickness) + self.path.MoveTo(HingePos + 2*thickness + 1.5*SteelHingeSpacing, z - 3.5*thickness) + self.path.LineToHRel(thickness) + self.path.LineToVRel(-thickness) + self.path.LineToHRel(-thickness) + self.path.LineToVRel(thickness) + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + def drawLidSideWoodHinge(self, FlagRight, ClosePath): + ''' + Generate lid side with integrated hinge. This is a rectangle with a rounded cut for the hinge and notches on 3 edges + No notch on the bottom edge + ''' + SizeCut = WoodHingeSize*thickness + 2*burn + DebugMsg("\n enter drawLidSideWoodHinge, SizeCut="+str(SizeCut)+" FlagRight ="+str(FlagRight)+"\n") + #Because of the cut on the lid, we have to change either the right of left line of notches + if FlagRight > 0: + self.RightLine.ModifyNotchLine(SizeCut, False) + else: + self.LeftLine.ModifyNotchLine(SizeCut, True) + # Go To starting point + self.path.MoveTo(self.top_left_corner.x_end_joint, self.top_left_corner.y_end_joint) + #DebugMsg("StartPoint, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #first (top left) corner + self.top_left_corner.drawCorner(self.path) + #DebugMsg("TopLeft, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #then top edge + self.TopLine.drawNotchLine(self.path) + #DebugMsg("Top Edge, PathPos ="+str((self.path.x, self.path.y))+" Bounding Box="+str(self.path.GetBoundingBox())+'\n') + #Top right corner + self.top_right_corner.drawCorner(self.path) + #Right edge, first start with normal notch line + self.RightLine.drawNotchLine(self.path) + #If right side, special case. Start with notches, but then switch to a circle + if FlagRight > 0: + #Then the cut. Choose 0.95*SizeCut because the actual circle is NOT centered of this vertical edge but shifted by thickness + self.path.LineTo(self.top_right_corner.x_corner, self.bottom_right_corner.y_corner-SizeCut*0.95) + #Then the rounded cut, almost a quarter of circle, radius SizeCut + self.path.Bezier(self.top_right_corner.x_corner-SizeCut*0.23, self.bottom_right_corner.y_corner-SizeCut*0.90, + self.top_right_corner.x_corner-SizeCut+thickness, self.bottom_right_corner.y_corner-SizeCut*0.551916, + self.top_right_corner.x_corner-SizeCut+thickness, self.bottom_right_corner.y_corner) + #No notches on bottom line, just go to next corner + self.path.LineTo(0, self.bottom_left_corner.y_corner) + else: + self.path.LineTo(self.top_right_corner.x_corner, self.bottom_right_corner.y_corner) #Up to corner + self.path.LineTo(SizeCut-thickness, self.bottom_left_corner.y_corner) #Bottom line up to circle cut + #Draw the rounded cut, almost a quarter of circle, radius ExtRadius + self.path.Bezier(SizeCut-thickness, self.bottom_left_corner.y_corner-SizeCut*0.551916 + , SizeCut*0.23, self.bottom_left_corner.y_corner-SizeCut*0.90 + , 0, self.bottom_left_corner.y_corner-SizeCut*0.95) + #Left edge + self.LeftLine.drawNotchLine(self.path) + self.path.LineTo(0, -thickness) #Up to starting point + + #Get bounding box of path + self.BoundingBox = (self.path.xmin, self.path.ymin, self.path.xmax, self.path.ymax) + + #Close the path if asked + if ClosePath: + self.path.Close() + self.path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + + + +class BoxMakerGenericGenerator(inkex.Effect): + """ + Creates a new layer with the drawings for a parametrically generated box. + """ + def __init__(self): + ''' + init for all parameters + ''' + inkex.Effect.__init__(self) + self.knownUnits = ['in', 'pt', 'px', 'mm', 'cm', 'm', 'km', 'pc', 'yd', 'ft'] + + self.arg_parser.add_argument('--unit', action = 'store', + type = str, dest = 'unit', default = 'mm', + help = 'Unit, should be one of ') + + self.arg_parser.add_argument('--thickness', action = 'store', + type = float, dest = 'thickness', default = '3.0', + help = 'Material thickness') + + self.arg_parser.add_argument('--lid_type', action = 'store', + type = str, dest = 'lid_type', default = 'Simple', + help = 'Box lid style ') + + self.arg_parser.add_argument('--n_slot_x', action = 'store', + type = int, dest = 'n_slot_x', default = '2', + help = 'Number of columns of slots') + + self.arg_parser.add_argument('--n_slot_y', action = 'store', + type = int, dest = 'n_slot_y', default = '2', + help = 'Number of rows of slots') + + self.arg_parser.add_argument('--z', action = 'store', + type = float, dest = 'z', default = '40.0', + help = "box height") + + self.arg_parser.add_argument('--y', action = 'store', + type = float, dest = 'y', default = '60.0', + help = "box depth") + + self.arg_parser.add_argument('--x', action = 'store', + type = float, dest = 'x', default = '40.0', + help = "box width") + + self.arg_parser.add_argument('--z_lid', action = 'store', + type = float, dest = 'z_lid', default = '20.0', + help = 'lid height') + + self.arg_parser.add_argument('--z_dome_lid', action = 'store', + type = float, dest = 'z_dome_lid', default = '20.0', + help = 'dome lid height') + + self.arg_parser.add_argument('--SkipFlexLines', action = 'store', + type = inkex.Boolean, dest = 'SkipFlexLines', default = 'true', + help = 'Skip flex lines when possible') + + self.arg_parser.add_argument('--burn', action = 'store', + type = float, dest = 'burn', default = '0.1', + help = 'laser burn size') + + self.arg_parser.add_argument('--StraigthCorners', action = 'store', + type = inkex.Boolean, dest = 'StraigthCorners', default = 'true', + help = 'Straight corners') + + self.arg_parser.add_argument('--back_left_radius', action = 'store', + type = float, dest = 'back_left_radius', default = '10.0', + help = 'Radius of top left rounded corner') + + self.arg_parser.add_argument('--back_right_radius', action = 'store', + type = float, dest = 'back_right_radius', default = '10.0', + help = 'Radius of top right rounded corner') + + self.arg_parser.add_argument('--front_left_radius', action = 'store', + type = float, dest = 'front_left_radius', default = '10.0', + help = 'Radius of bottom left rounded corner') + + self.arg_parser.add_argument('--front_right_radius', action = 'store', + type = float, dest = 'front_right_radius', default = '10.0', + help = 'Radius of bottom right rounded corner') + + self.arg_parser.add_argument('--AutoSize', action = 'store', + type = inkex.Boolean, dest = 'AutoSizeJoints', default = 'true', + help = 'Size of finger joints computed from box dimlensions') + + self.arg_parser.add_argument('--x_joint', action = 'store', + type = float, dest = 'x_joint', default = '10.0', + help = 'Size of finger joints in X direction') + + self.arg_parser.add_argument('--y_joint', action = 'store', + type = float, dest = 'y_joint', default = '10.0', + help = 'Size of finger joints in Y direction') + + self.arg_parser.add_argument('--z_joint', action = 'store', + type = float, dest = 'z_joint', default = '10.0', + help = 'Size of finger joints in Z direction') + + self.arg_parser.add_argument('--Topic', action = 'store', + type = str, dest = 'TopicPage', + help = 'Size of finger joints in Z direction') + + + self.BoundingBox = [0, 0, 0, 0] + self.HingeList = [] + + try: + inkex.Effect.unittouu # unitouu has moved since Inkscape 0.91 + except AttributeError: + try: + def unittouu(self, unit): + return inkex.unittouu(unit) + except AttributeError: + pass + + def UpdateBoundingBox(self, Face): + if Face.BoundingBox[0] < self.BoundingBox[0]: + self.BoundingBox[0] = Face.BoundingBox[0] + if Face.BoundingBox[1] < self.BoundingBox[1]: + self.BoundingBox[1] = Face.BoundingBox[1] + if Face.BoundingBox[2] > self.BoundingBox[2] - 2: + self.BoundingBox[2] = Face.BoundingBox[2] + 2 + if Face.BoundingBox[3] > self.BoundingBox[3] - 2: + self.BoundingBox[3] = Face.BoundingBox[3] + 2 + + def CalcNotchPos(self, n_slot, size_slot): + ''' + Compute the position of notches for a vertical or horizontal line + No offset, i.e. position is relative to internal side + Return a list of positions, each position is a tuple with 3 elements, giving start, size of notch and group number + These positions are NOT sensitive to burn factor. The burn factor should be added later if needed + ''' + NPos = [] + if size_slot < 25: + #Small size, only one notch + i_notch_number = 1 + notch_size = size_slot / 3 # Notch is center aligned + elif size_slot < 80: + #Medium size, draw 5mm notches + notch_number = size_slot / 5 + if (notch_number % 2) == 0: + notch_number -= 1 #should be odd + notch_size = size_slot / notch_number + i_notch_number = int(notch_number // 2) + else: + #Large size, draw 10mm notches + notch_number = size_slot / 10 + if (notch_number % 2) == 0: + notch_number -= 1 #should be odd + notch_size = size_slot / notch_number + i_notch_number = int(notch_number // 2) + for j in range(n_slot): + #For each slot + for i in range(i_notch_number): + NPos.append((j*(size_slot+thickness)+notch_size+2*i*notch_size, notch_size, j)) #Add a tuple with 3 elements for start, size of notch and group number + return NPos + + def ComputeJointSize(self, xbox, ybox, zbox, back_left_radius, back_right_radius, front_right_radius, front_left_radius): + ''' + This function compute finger joint size + It will try to have identical finger joint, but if not possible we will have different joint sizes + Basic joint size : if l < 100, size = 5mm, when l > 100 --> size = 0.5*sqrt(l) + ''' + #First take into account radius + x = min(xbox - back_left_radius - back_right_radius, xbox - front_right_radius - front_left_radius) + if x < 18: + inkex.errormsg('Error: box length too small, should be at least 18mm + round radius') + exit() + y = min(ybox - back_left_radius - front_left_radius, ybox - front_right_radius - back_right_radius) + if y < 18: + inkex.errormsg('Error: box depth too small, should be at least 18mm + round radius') + exit() + if x <= 100: + basic_size_x = 5.0 + else: + basic_size_x = 5.0*math.pow(x/100,0.8) + if y <= 100: + basic_size_y = 5.0 + else: + basic_size_y = 5.0*math.pow(y/100,0.8) + if zbox <= 100: + basic_size_z = 5.0 + else: + basic_size_z = 5.0*math.pow(zbox/100,0.8) + #DebugMsg("Basic joint sizes (1) :"+str((basic_size_x, basic_size_y, basic_size_z))+' \n') + #Now try to converge towards a single size + # First with x and y + if basic_size_x > basic_size_y and y >= 3.0*basic_size_x + 1: + #x is greater, but at least 3 joints in y direction (one notch) + basic_size_y = basic_size_x + if basic_size_y > basic_size_x and x >= 3.0*basic_size_y + 1: + #y is greater, but at least 3 joints in x direction (one notch) + basic_size_x = basic_size_y + # For z direction, should have at least 3 joint size (one notch) + if basic_size_x > basic_size_y: + if zbox > 3*basic_size_x + 1: + basic_size_z = basic_size_x + else: + basic_size_z = (zbox-1) / 3 #If not possible, set max finger size + else: + if zbox > 3*basic_size_y + 1: + basic_size_z = basic_size_y + else: + basic_size_z = (zbox-1) / 3 #If not possible, set max finger size + return(basic_size_x, basic_size_y, basic_size_z) + + def drawSteelHingeElement(self, idx, thickness, xOffset, yOffset, parent): + StartOffset = (xOffset, yOffset) + xOffset -= 2*thickness + + path = th_inkscape_path((xOffset, yOffset), parent, 'HingeElt_'+str(idx)) + path.MoveTo(0, 0) + #Start at upper right + path.LineToVRel(thickness) + path.LineToHRel(-thickness) + path.LineToVRel(thickness) + path.LineToHRel(thickness) + path.LineToVRel(thickness) + #Now draw half circle (radius is 1.5*thickness) + #Position is now 0,3*thickness + path.Bezier(1.5*thickness*0.551916, 3*thickness, 1.5*thickness, 3*thickness+1.5*thickness*0.551916, 1.5*thickness, 4.5*thickness) + path.Bezier(1.5*thickness, 4.5*thickness+1.5*thickness*0.551916, 1.5*thickness*(1-0.551916), 6*thickness, 0, 6*thickness) + #Second part of circle has a radius of 2*thickness + path.Bezier(-2*thickness*0.551916, 6*thickness, -2*thickness, 6*thickness-2*thickness*0.551916, -2*thickness, 4*thickness) + path.LineTo(-2*thickness, thickness) + path.Bezier(-2*thickness, thickness*(1-0.551916), thickness*-1.551916, 0, -thickness, 0) + path.LineTo(0,0) + #and last the circle at center for this axis, radius is RadiusSteelHingeAxis mm + path.drawCircle(0, 4.5*thickness, RadiusSteelHingeAxis) + path.Close() + path.GenPath() + if path.xmin < self.BoundingBox[0]: + self.BoundingBox[0] = path.xmin + if path.ymin < self.BoundingBox[1]: + self.BoundingBox[1] = path.ymin + if path.xmax > self.BoundingBox[2] - 2: + self.BoundingBox[2] = path.xmax + 2 + if path.ymax > self.BoundingBox[3] - 2: + self.BoundingBox[3] = path.ymax + 2 + + def BuildTop(self, xbox, ybox, back_left_radius, back_right_radius, front_right_radius, front_left_radius): + ''' + Draw the top of the box. It depends on the lid style + ''' + if self.options.lid_type == 'Without': + return # Nothing in this case + if self.options.lid_type == 'Sliding': + #Specific case, top is a rectangle which is xbox long and ybox wide with finger joints on top + #Not compatible with rounded cornerson back, so radius is set to 0 + #On top, corner are internal on x and external on y + #Position is set at 0,0 (first element) + #There is also a line of finger joints which is xbox long and thickness wide, begin with this one + TopLineBottomRight = CornerPoint((xbox+2*thickness,thickness), 0, 1, 1) + TopLineBottomLeft = CornerPoint((0,thickness), 0, 1, 1) + #Modify Bottom right corner to change start of line + TopLineBottomRight.x_start_joint -= thickness + #idem for bottom left + TopLineBottomLeft.x_end_joint += thickness + TopLine = BoxFace('Lid_Joints', CornerPoint((0,0), 0, 1, 1), + 0, CornerPoint((xbox+2*thickness,0), 0, 1, 1), + 0, TopLineBottomRight, + self.x_joint, TopLineBottomLeft, + 0, self.group, [0.0,0.0]) + TopLine.drawSimpleFace(True) + self.UpdateBoundingBox(TopLine) + Top = BoxFace('Lid_Top', CornerPoint((0,0), back_left_radius, 1, 0), + self.x_joint, CornerPoint((xbox,0), back_right_radius, 1, 0), + 0, CornerPoint((xbox,ybox), front_right_radius, 1, 1), + 0, CornerPoint((0,ybox), front_left_radius, 1, 1), + 0, self.group, [-thickness,-self.BoundingBox[3]]) + Top.drawSimpleFace(True) + self.UpdateBoundingBox(Top) + return + if self.options.lid_type != 'Coffin': + #For all cases except coffin, draw a rounded rectangle with internal corners + Top = BoxFace('Lid_Top', CornerPoint((0,0), back_left_radius, 1, 1), + self.x_joint, CornerPoint((xbox,0), back_right_radius, 1, 1), + self.y_joint, CornerPoint((xbox,ybox), front_right_radius, 1, 1), + self.x_joint, CornerPoint((0,ybox), front_left_radius, 1, 1), + self.y_joint, self.group, [0.0, 0.0]) + Top.drawSimpleFace(False) + if self.options.lid_type == 'Simple': + #Add a hole in the top, which the same rounded rectangle, but with thickness less in each direction + TopHole = BoxFace('Lid_Int', CornerPoint((thickness,thickness), back_left_radius-thickness, 1, 1), + 0, CornerPoint((xbox-thickness,thickness), back_right_radius-thickness, 1, 1), + 0, CornerPoint((xbox-thickness,ybox-thickness), front_right_radius-thickness, 1, 1), + 0, CornerPoint((thickness,ybox-thickness), front_left_radius-thickness, 1, 1), + 0, self.group, [0.0, 0.0], Top.path) + TopHole.drawSimpleFace(False) + Top.Close() #Close and generate path (both if simple lid) + self.UpdateBoundingBox(Top) + if self.options.lid_type == 'Simple': + #In this case, draw a simple face without notches, external at all corners in both directions + Top = BoxFace('Lid', CornerPoint((0,0), back_left_radius, 0, 0), + 0, CornerPoint((xbox,0), back_right_radius, 0, 0), + 0, CornerPoint((xbox,ybox), front_right_radius, 0, 0), + 0, CornerPoint((0,ybox), front_left_radius, 0, 0), + 0, self.group, [-self.BoundingBox[2]-thickness-2, 0.0]) + Top.drawSimpleFace(True) + self.UpdateBoundingBox(Top) + + return + + def BuildBottom(self, xbox, ybox, back_left_radius, back_right_radius, front_right_radius, front_left_radius): + ''' + Draw the bottom of the box. It is a rounded rectangle + Also draw the holes used to secure the internal walls + Should exchange left and right from top to draw the external face + ''' + Bottom = BoxFace('Bottom', CornerPoint((0,0), back_right_radius, 1, 1), + self.x_joint, CornerPoint((xbox,0), back_left_radius, 1, 1), + self.y_joint, CornerPoint((xbox,ybox), front_left_radius, 1, 1), + self.x_joint, CornerPoint((0,ybox), front_right_radius, 1, 1), + self.y_joint, self.group, [-self.BoundingBox[2], 0.0]) #Draw it right of top, same Y + Bottom.drawSimpleFace(False) + #now the holes used to fix the walls + #Start with columns, compute holes position + self.ListNotchColumns = self.CalcNotchPos(self.n_slot_y, self.y_slot_size) + DebugMsg("List Column Notches:"+str( self.ListNotchColumns)+'\n') + for i in range(1, self.n_slot_x): + #For each wall, draw holes corresponding at each notch_y + for notch in self.ListNotchColumns: + drawHole(Bottom.path, i*(self.x_slot_size+thickness), notch[0] + thickness, thickness, notch[1], burn) + + #Then rows + self.ListNotchRows = self.CalcNotchPos(self.n_slot_x, self.x_slot_size) + DebugMsg("List Row Notches:"+str( self.ListNotchRows)+'\n') + + for i in range(1, self.n_slot_y): + #For each wall, draw holes corresponding at each notch_y + for notch in self.ListNotchRows: + drawHole(Bottom.path, notch[0] + thickness, i*(self.y_slot_size+thickness), notch[1], thickness, burn) + + Bottom.Close() + self.UpdateBoundingBox(Bottom) + return + + def drawColumWall(self, index, n_slot_y, y_slot_size, ListNotchPos, length, zbox, xOffset, yOffset, parent): + ''' + Draw the face, specific case for columns walls + This is a specific face with cuts for row walls on top + ''' + DebugMsg("\nDrawColumWall, index="+str(index)+" n_Slot="+str(n_slot_y)+" Slot_Size="+str(y_slot_size)+" Length="+str(length)+" Height="+str(zbox)+" Offset="+str((xOffset, yOffset))+'\n') + path = th_inkscape_path((xOffset-thickness, yOffset), parent, 'COL_WALL_'+str(index+1)) + + VNotchLine1 = NotchLine((length,0,1), (length, zbox, 1), math.pi/2, self.z_joint ) #Vertical Notch line + VNotchLine2 = NotchLine((0,zbox,1), (0, 0, 1), -math.pi/2, self.z_joint ) #Vertical Notch line, reverse + + + path.MoveTo(0,0) + #first H line with cut to accomodate with row walls + for i in range(1, n_slot_y): + path.LineToHRel(y_slot_size) + path.LineToVRel(zbox/2) + path.LineToHRel(thickness) + path.LineToVRel(-zbox/2) + path.LineTo(length, 0) + + #Second line (V), this is a notch line + path.LineTo(length, thickness) + VNotchLine1.drawNotchLine(path) + path.LineTo(length, zbox) + #Third line (H) with notches, but at specific positions. Use reversed because, draw from right to left + for Notch in reversed(ListNotchPos): + path.LineTo(Notch[0]+Notch[1], zbox) + path.LineToVRel(thickness) + path.LineToHRel(-Notch[1]) + path.LineToVRel(-thickness) + path.LineTo(0, zbox) + #and last one + path.LineTo(0, zbox-thickness) + VNotchLine2.drawNotchLine(path) + path.LineTo(0, 0) + + #Apply bounding box of path + DebugMsg("Path Bounding box="+str(((path.xmin, path.ymin), (path.xmax, path.ymax)))+'\n') + if path.xmin < self.BoundingBox[0]: + self.BoundingBox[0] = path.xmin + if path.ymin < self.BoundingBox[1]: + self.BoundingBox[1] = path.ymin + if path.xmax > self.BoundingBox[2] - 2: + self.BoundingBox[2] = path.xmax + 2 + if path.ymax > self.BoundingBox[3] - 2: + self.BoundingBox[3] = path.ymax + 2 + + #Close the path + path.Close() + path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + + def drawRowWall(self, index, n_slot_x, x_slot_size, ListNotchPos, length, zbox, xOffset, yOffset, parent): + ''' + Draw the face, specific case for row walls + This is a specific face with cuts for columns walls on bottom + ''' + DebugMsg("\nDrawRowWall, index="+str(index)+" n_Slot="+str(n_slot_x)+" Slot_Size="+str(x_slot_size)+" Length="+str(length)+" Height="+str(zbox)+" Offset="+str((xOffset, yOffset))+'\n') + path = th_inkscape_path((xOffset-thickness, yOffset), parent, 'ROW_WALL_'+str(index+1)) + + VNotchLine1 = NotchLine((length,0,1), (length, zbox, 1), math.pi/2, self.z_joint ) #Vertical Notch line + VNotchLine2 = NotchLine((0,zbox,1), (0, 0, 1), -math.pi/2, self.z_joint ) #Vertical Notch line, reverse + + + path.MoveTo(0,0) + + #first H line without cur, so up to length + path.LineTo(length, 0) + + #Second line (V), this is a notch line + path.LineTo(length, thickness) + VNotchLine1.drawNotchLine(path) + path.LineTo(length, zbox) + #Third line (H) with notches, but at specific positions. Use reversed because, draw from right to left, also cut openings for columns + # At each change of group, draw a cut + group_num = n_slot_x - 1 + for Notch in reversed(ListNotchPos): + if group_num != Notch[2]: # Change of group, draw cut + path.LineTo(group_num * (x_slot_size + thickness) , zbox) + path.LineToVRel(-zbox/2) + path.LineToHRel(-thickness) + path.LineToVRel(zbox/2) + group_num = Notch[2] #Change group for next pass + path.LineTo(Notch[0]+Notch[1], zbox) + path.LineToVRel(thickness) + path.LineToHRel(-Notch[1]) + path.LineToVRel(-thickness) + path.LineTo(0, zbox) + #and last one + path.LineTo(0, zbox-thickness) + VNotchLine2.drawNotchLine(path) + path.LineTo(0, 0) + + #Apply bounding box of path + DebugMsg("Path Bounding box="+str(((path.xmin, path.ymin), (path.xmax, path.ymax)))+'\n') + if path.xmin < self.BoundingBox[0]: + self.BoundingBox[0] = path.xmin + if path.ymin < self.BoundingBox[1]: + self.BoundingBox[1] = path.ymin + if path.xmax > self.BoundingBox[2] - 2: + self.BoundingBox[2] = path.xmax + 2 + if path.ymax > self.BoundingBox[3] - 2: + self.BoundingBox[3] = path.ymax + 2 + + #Close the path + path.Close() + path.GenPath() + #DebugMsg("Closing path, BoundingBox="+str(self.BoundingBox)+'\n') + + def drawCoffinSide(self, FlagRight, ybox, zlid, z_dome_lid, xOffset, yOffset, parent): + ''' + Draw the sides of the coffin style lid. + This is a rectangle ybox x zlid with an ellipse (ybox, z_dome_lid) on top of the rectangle + There a "normal notches on the rectangle, then small notches on the ellipse, because the "front/top/Back" part will be flex + ''' + DebugMsg("\ndrawCoffinSide, FlagRight="+str(FlagRight)+" ybox="+str(ybox)+" zlid="+str(zlid)+" z_dome_lid="+str(z_dome_lid)+'\n') + name = 'Lid_Left' + if FlagRight=='Right': + name = 'Lid_Right' + #Change offset in y direction because this one will be drawn from bottom left. + path = th_inkscape_path((xOffset-thickness, yOffset-zlid - z_dome_lid-thickness), parent, name) + #First build the notch lines for the rectangle + VNotchLine1 = NotchLine((0,0,1), (0, -zlid, 1), -math.pi/2, self.z_joint ) #Vertical Notch line (left side) + VNotchLine2 = NotchLine((ybox,-zlid,1), (ybox, 0, 1), math.pi/2, self.z_joint ) #Vertical Notch line, right side + + #First point on (0,0) : bottom/left of the lid + path.MoveTo(0, 0) + #The draw left notch line + VNotchLine1.drawNotchLine(path) + #The draw the notched ellipse, this ellipse has parameters ybox/2 and z_dome_lid + TopLid = Ellipse(ybox/2.0, z_dome_lid) + TopLid.drawNotchedEllipse(path, math.pi, 2*math.pi, (0, -zlid)) + #Now the second Notch line + VNotchLine2.drawNotchLine(path) + #And end with bottom line (straight) + path.LineTo(0,0) + #Apply bounding box of path + DebugMsg("Path Bounding box="+str(((path.xmin, path.ymin), (path.xmax, path.ymax)))+'\n') + if path.xmin < self.BoundingBox[0]: + self.BoundingBox[0] = path.xmin + if path.ymin < self.BoundingBox[1]: + self.BoundingBox[1] = path.ymin + if path.xmax > self.BoundingBox[2] - 2: + self.BoundingBox[2] = path.xmax + 2 + if path.ymax > self.BoundingBox[3] - 2: + self.BoundingBox[3] = path.ymax + 2 + + path.Close() + path.GenPath() + + def drawCoffinTop(self, xbox, ybox, zlid, z_dome_lid, xOffset, yOffset, parent): + ''' + Draw the top of the coffin style lid. + This is 2 rectangle xbox x zlid separated by a flex pattern which has the length half of the ellipse (ybox, z_dome_lid), flex height is xbox + ''' + DebugMsg("\ndrawCoffinTop, xbox="+str(xbox)+" ybox="+str(ybox)+" zlid="+str(zlid)+" z_dome_lid="+str(z_dome_lid)+'\n') + #Change offset in y direction because this one will be drawn from bottom left. + path = th_inkscape_path((xOffset, yOffset - thickness), parent, 'Coffin_Top') + DebugMsg("Offset ="+str((xOffset, yOffset))+" Path_Offset="+str((path.offsetX, path.offsetY))+'\n') + #Create the ellipse object used to draw the flex + FlexBand = Ellipse(ybox/2.0, z_dome_lid) + FlexBand.Compute_Ellipse_Params(math.pi, 2*math.pi) + l = FlexBand.length_ellipse + #First build the notch lines for the rectangle + HNotchLine1 = NotchLine((zlid, xbox+thickness, 0), (0, xbox+thickness, 0), math.pi, self.z_joint ) #Horizontal Notch line, bottom left + HNotchLine2 = NotchLine((0,-thickness,0), (zlid, -thickness, 0), 0, self.z_joint ) #Horizontal Notch line, top left + HNotchLine3 = NotchLine((zlid+l, xbox+thickness, 1), (2*zlid+l, xbox+thickness, 1), 0, self.z_joint ) #Horizontal Notch line, bottom right + HNotchLine4 = NotchLine((2*zlid+l, -thickness, 1), (zlid+l, -thickness, 1), math.pi, self.z_joint ) #Horizontal Notch line, bottom left + + #In order to minimize move effects, draw the holes for the hinge first + #Draw holes for the hinge(s) + for Hinge in self.HingeList: + HingePos = Hinge[2] + 2*thickness + path.MoveTo(3.5*thickness, HingePos + 0.5*SteelHingeSpacing) + path.LineToVRel(thickness) + path.LineToHRel(thickness) + path.LineToVRel(-thickness) + path.LineToHRel(-thickness) + path.MoveTo(3.5*thickness, HingePos + 2*thickness + 1.5*SteelHingeSpacing) + path.LineToVRel(thickness) + path.LineToHRel(thickness) + path.LineToVRel(-thickness) + path.LineToHRel(-thickness) + + #First point on (zlid,0) : bottom/left of the lid + path.MoveTo(zlid, xbox+thickness) + #The draw left notch line + HNotchLine1.drawNotchLine(path) + #The draw the bottom line with cuts for the hinge(s) + #Now draw holes for the hinge(s), reverse because draw from right to left + for Hinge in reversed(self.HingeList): + HingePos = Hinge[2] + thickness + #First H line up to end of 2nd hinge + path.LineTo(0, HingePos + 5*thickness + 2.5*SteelHingeSpacing) + #Then Hinge + path.LineToHRel(1.5*thickness + 0.5*SteelHingeSpacing) + path.LineToVRel(-thickness - SteelHingeSpacing) + path.LineToHRel(thickness - 0.5*SteelHingeSpacing) + path.LineToVRel(-thickness) + path.LineToHRel(-thickness + 0.5*SteelHingeSpacing) + path.LineToVRel(-thickness - SteelHingeSpacing) + path.LineToHRel(thickness - 0.5*SteelHingeSpacing) + path.LineToVRel(-thickness) + path.LineToHRel(-thickness + 0.5*SteelHingeSpacing) + path.LineToVRel(-thickness - SteelHingeSpacing) + path.LineToHRel(-1.5*thickness - 0.5*SteelHingeSpacing) + #Then draw up to corner + path.LineTo(0, -thickness) + #Now the second Notch line + HNotchLine2.drawNotchLine(path) + #Then the flex band + FlexBand.drawFlexEllipse(path, xbox, self.options.SkipFlexLines, (zlid, -thickness)) + #Then the third notch line + HNotchLine3.drawNotchLine(path) + #Then the straight line up to the next corner (top right) + path.LineTo(2*zlid+l, -thickness) + #And the last line + HNotchLine4.drawNotchLine(path) + #Apply bounding box of path + DebugMsg("Path Bounding box="+str(((path.xmin, path.ymin), (path.xmax, path.ymax)))+'\n') + if path.xmin < self.BoundingBox[0]: + self.BoundingBox[0] = path.xmin + if path.ymin < self.BoundingBox[1]: + self.BoundingBox[1] = path.ymin + if path.xmax > self.BoundingBox[2] - 2: + self.BoundingBox[2] = path.xmax + 2 + if path.ymax > self.BoundingBox[3] - 2: + self.BoundingBox[3] = path.ymax + 2 + path.GenPath() + + def effect(self): + """ + Draws a card box box, based on provided parameters + """ + global burn, thickness + + # input sanity check + error = False + if self.options.thickness < 1 or self.options.thickness > 10: + inkex.errormsg('Error: thickness should be at least 1mm and less than 10mm') + error = True + + if error: + exit() + + self.n_slot_x = self.options.n_slot_x + self.n_slot_y = self.options.n_slot_y + + + # convert units + unit = self.options.unit + + xbox = self.svg.unittouu(str(self.options.x) + unit) + ybox = self.svg.unittouu(str(self.options.y) + unit) + zbox = self.svg.unittouu(str(self.options.z) + unit) + zlid = self.svg.unittouu(str(self.options.z_lid) + unit) + z_dome_lid = self.svg.unittouu(str(self.options.z_dome_lid) + unit) + + if self.options.StraigthCorners: + back_left_radius = 0 + back_right_radius = 0 + front_right_radius = 0 + front_left_radius = 0 + else: + back_left_radius = self.svg.unittouu(str(self.options.back_left_radius) + unit) + back_right_radius = self.svg.unittouu(str(self.options.back_right_radius) + unit) + front_right_radius = self.svg.unittouu(str(self.options.front_right_radius) + unit) + front_left_radius = self.svg.unittouu(str(self.options.front_left_radius) + unit) + + max_radius = max(back_left_radius, back_right_radius, front_right_radius, front_left_radius) + thickness = self.svg.unittouu(str(self.options.thickness) + unit) + burn = self.svg.unittouu(str(self.options.burn) + unit) + + self.x_joint = self.svg.unittouu(str(self.options.x_joint) + unit) + self.y_joint = self.svg.unittouu(str(self.options.y_joint) + unit) + self.z_joint = self.svg.unittouu(str(self.options.z_joint) + unit) + + self.x_slot_size = (xbox - (1+self.n_slot_x)*thickness)/self.n_slot_x + self.y_slot_size = (ybox - (1+self.n_slot_y)*thickness)/self.n_slot_y + + if self.x_slot_size < 18 or self.y_slot_size < 18: + inkex.errormsg('Error: each slot should be at least 18mm large, here x_slot_size='+str(self.x_slot_size)+ ' y_slot_size='+str(self.y_slot_size)) + exit() + if self.x_slot_size < max_radius or self.y_slot_size < max_radius: + inkex.errormsg('Error: slot size should be greater than rounded corner radius, here x_slot_size='+str(self.x_slot_size)+ ' y_slot_size='+str(self.y_slot_size)) + exit() + + + svg = self.document.getroot() + docWidth = self.svg.unittouu(svg.get('width')) + docHeigh = self.svg.unittouu(svg.attrib['height']) + + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'Generic Box') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + self.group = etree.SubElement(layer, 'g') + OpenDebugFile() + + HasLid = False + HasNormalLid = False + #Compute joint size if auto is chosen + if self.options.AutoSizeJoints: + self.x_joint, self.y_joint, self.z_joint = self.ComputeJointSize(xbox, ybox, zbox, back_left_radius, back_right_radius, front_right_radius, front_left_radius) + #Default case, for the top lines, front and back joints are x_joint in size, left and right joints are y_joint in size + self.front_joint = self.x_joint + self.back_joint = self.x_joint + self.right_joint = self.y_joint + self.left_joint = self.y_joint + + DebugMsg("Joints size ="+str((self.x_joint, self.y_joint, self.z_joint))+'\n') + DebugMsg("Slots X N="+str(self.n_slot_x)+" size="+str(self.x_slot_size)+'\n') + DebugMsg("Slots Y N="+str(self.n_slot_y)+" size="+str(self.y_slot_size)+'\n') + + #Now, check if internal walls should be drawn + self.InternalWalls_LR = False + self.InternalWalls_FB = False + zbox_internal_walls = zbox #Height of internal walls + + #If there are slots inside the box, also draw internal walls + if self.n_slot_x > 1: + self.InternalWalls_FB = True + if self.n_slot_y > 1: + self.InternalWalls_LR = True + + # If lid is sliding, there are always internal walls left and right + if self.options.lid_type == 'Sliding': + self.InternalWalls_LR = True + zbox += thickness #Also increase box height to take into account the sliding top, but NOT internal walls height + zbox_internal_walls -= 0.2 #Indeed, reduce internal wall height to ease sliding + if back_left_radius > 0 or back_right_radius > 0: + inkex.errormsg('Error: Sliding lid is incompatible with rounded corners on back') + exit() + self.front_joint = 0 #No joint on front top + + # If there is no lid, no notches on top + if self.options.lid_type == 'Without': + self.front_joint = 0 #No joint on front top + self.back_joint = 0 #No joint on back top + self.right_joint = 0 #No joint on right top + self.left_joint = 0 #No joint on left top + #As top edges are external, but without notches, just decrease height by thickness + zbox -= thickness + + # If this is a real lid, no round corners allowed on back + if self.options.lid_type == 'WoodHinge' or self.options.lid_type == 'SteelHinge' or self.options.lid_type == 'Coffin': + if back_left_radius > 0 or back_right_radius > 0: + inkex.errormsg('Error: real lid option is incompatible with rounded corners on back') + exit() + self.front_joint = 0 #No joint on front top + self.back_joint = 0 #No joint on back top + self.right_joint = 0 #No joint on right top + self.left_joint = 0 #No joint on left top + #As top edges are external, but without notches, just decrease height by thickness + zbox -= thickness + zlid -= thickness + if self.options.lid_type == 'Coffin': + if front_left_radius > 0 or front_right_radius > 0: + inkex.errormsg('Error: coffin lid option is incompatible with rounded corners') + exit() + HasCoffinlid = True + HasLid = False + else: + HasCoffinlid = False + HasLid = True + + if self.options.lid_type == 'SteelHinge' or self.options.lid_type == 'Coffin': + #Compute placement of hinges + #First compute hinge width. Each hinge has 5 elements with thickness width whiche should be slighly spaced for the main box elements (3) + hingeWidth = 5*thickness + 3*SteelHingeSpacing + if ( hingeWidth > self.x_slot_size - 3 ): + inkex.errormsg('Error: no space for hinge within slots, slots should be at least '+str(hingeWidth+3)+'mm wide') + exit(1) + #if the box is small with only one slot in x direction try with only one hinge + if self.n_slot_x == 1 and self.x_slot_size < 2 * hingeWidth + 30: + self.HingeList.append = (0, (self.x_slot_size - hingeWidth)/2.0, (self.x_slot_size - hingeWidth)/2.0) # One hinge, starting at the middle of slot 0 (the only one) + elif self.n_slot_x == 2: + #in this case place hinge in first and last slot. + # Exact position depend on slot width, try to place hinge at about 1/3 of the slot + HingePos = max(self.x_slot_size/3 - hingeWidth/2, 2) + if HingePos < 8: + HingePos = max(self.x_slot_size/2.5 - hingeWidth/2, 2) #1/3 is very close from start, so change to 1/2.5 + self.HingeList.append((0, HingePos, HingePos)) + self.HingeList.append((self.n_slot_x-1, self.x_slot_size - HingePos, (self.n_slot_x-1)*(self.x_slot_size+thickness) + (self.x_slot_size - HingePos - hingeWidth) )) + elif self.n_slot_x <= 6: + #in this case place hinge in first and last slot. + # Exact position depend on slot width, try to place hinge at about 1/2 of the slot + HingePos = (self.x_slot_size - hingeWidth)/2.0 + self.HingeList.append((0, HingePos, HingePos)) + self.HingeList.append((self.n_slot_x-1, self.x_slot_size - HingePos, (self.n_slot_x-1)*(self.x_slot_size+thickness) + (self.x_slot_size - HingePos - hingeWidth) )) + else: + #a lot of slots, place hinge in second and before last slot, at center of slots + HingePos = (self.x_slot_size - hingeWidth)/2.0 + self.HingeList.append((1, HingePos, self.x_slot_size + thickness + HingePos )) + self.HingeList.append((self.n_slot_x-2, HingePos, (self.n_slot_x-2)*(self.x_slot_size+thickness) + (self.x_slot_size - HingePos - hingeWidth))) + DebugMsg("Lid with steel hinge\n") + DebugMsg("Hinge width="+str(hingeWidth)+", Hinge pos="+str(self.HingeList)+"\n") + + + #Draw external faces which are planes, begin with top + + self.BuildTop(xbox, ybox, back_left_radius, back_right_radius, front_right_radius, front_left_radius) + + self.BuildBottom(xbox, ybox, back_left_radius, back_right_radius, front_right_radius, front_left_radius) + + ''' Draw sides, which could be rounded (with flex) + For boxes with lid, draw also the lid, just above the side. + There are 16 cases + TL TR BR BL Flex Straight + 0 0 0 0 NO ALL OK + 0 0 0 1 Left → Front Back, Right OK + 0 0 1 0 Front → Right Back, Left OK + 0 0 1 1 Left → Front → Right Back OK + 0 1 0 0 Right → Back Front, Left OK + 0 1 0 1 Right → Back, Left → Front No OK + 0 1 1 0 Front --> Right --> Back Left OK + 0 1 1 1 Left → Front → Right → Back No OK + 1 0 0 0 Back → Left Right, Front OK + 1 0 0 1 Back → Left → Front Right OK + 1 0 1 0 Back → Left, Front → Right No OK + 1 0 1 1 Back → Left → Front → Right No OK + 1 1 0 0 Right → Back → Left Front OK + 1 1 0 1 Right → Back → Left → Front No OK + 1 1 1 0 Front → Right → Back → Left No OK + 1 1 1 1 All Flex No + ''' + FlexBandList = [] #empty list at init + RightFace = None + LeftFace = None + ypos = -self.BoundingBox[3] + yposface = ypos + xpos = 0.0 + LidFace = None + if front_left_radius == 0 and front_right_radius == 0: + if HasLid: + DebugMsg("Draw font lid\n") + LidFace = BoxFace('Lid_Front', CornerPoint((0,0), 0, 0, 0), + self.x_joint, CornerPoint((xbox,0), 0, 0, 0), + self.z_joint, CornerPoint((xbox,zlid), 0, 0, 0), + self.front_joint, CornerPoint((0,zlid), 0, 0, 0), + self.z_joint, self.group, [xpos, ypos]) #Draw face just below previous drawings + LidFace.drawSimpleFace(True) + self.UpdateBoundingBox(LidFace) #Now update bounding box, to place back face just below + yposface = -self.BoundingBox[3] + DebugMsg("\nStraight face for front\n") + #No round, front is straight + #Front is xbox * zbox, all corners are external in each direction + Face = BoxFace('Front', CornerPoint((0,0), 0, 0, 0), + self.front_joint, CornerPoint((xbox,0), 0, 0, 0), + self.z_joint, CornerPoint((xbox,zbox), 0, 0, 0), + self.x_joint, CornerPoint((0,zbox), 0, 0, 0), + self.z_joint, self.group, [xpos, yposface]) #Draw face just below previous drawings + Face.drawSimpleFace(True) + xpos = -Face.BoundingBox[2]-2 + self.UpdateBoundingBox(Face) #Now update bounding box + elif front_left_radius == 0: + #Rounded corner on Front right + #Straight corner on Front/left, there is a flex band starting on front left + if back_right_radius == 0: + #Straight corner on Front / right, Flex on front --> right, BL to TR + DebugMsg("\nFlex on front --> Right\n") + FlexBand = ('Flex_Front_Right', 0, 1, #Draw Front then Right so first element is external and last internal + (xbox, self.front_joint, front_right_radius, self.x_joint), #Then Front Notch Line and round corner r= front_right_radius + #Then Right notch line withount rounded corner, the last parameter is used when WoodHinge to draw the top circle + (ybox, self.right_joint, 0, self.y_joint, self.options.lid_type == 'WoodHinge')) + FlexBandList.append(FlexBand) + elif back_left_radius == 0: + #Straight corner on back left, flex band is front + right + back + DebugMsg("\nFlex on front --> right --> back\n") + FlexBand = ('Flex_Front_Right_Back', 0, 0, #Draw Front then Right and Back so first element is external and last external + (xbox, self.front_joint, front_right_radius, self.x_joint), #Then Front Notch Line and round corner r= front_right_radius + (ybox, self.right_joint, back_right_radius, self.y_joint), #Then Right notch line and Back/Right rounded corner + (xbox, self.back_joint, 0, self.x_joint)) #Then Back notch line withount rounded corner + FlexBandList.append(FlexBand) + else: + #flex band is front + right + back + left + DebugMsg("\nFlex on front --> right --> back --> left\n") + FlexBand = ('Flex_Front_Right_Back_Left', 0, 1, #Draw Front then Right, Back and left so first element is external and last internal + (xbox, self.front_joint, front_right_radius, self.x_joint), #Then Front Notch Line and round corner r= front_right_radius + (ybox, self.right_joint, back_right_radius, self.y_joint), #Then Right notch line and Back/Right rounded corner + (xbox, self.back_joint, back_left_radius, self.x_joint), #Then Back notch line with Back/Left rounded corner + (ybox, self.left_joint, 0)) #At last, Left line without rounded corner + FlexBandList.append(FlexBand) + + if back_left_radius == 0 and back_right_radius == 0: + if HasLid: + DebugMsg("Draw back lid\n") + LidFace = BoxFace('Lid_Back', CornerPoint((0,0), 0, 0, 0), + self.x_joint, CornerPoint((xbox,0), 0, 0, 0), + self.z_joint, CornerPoint((xbox,zlid), 0, 0, 0), + self.back_joint, CornerPoint((0,zlid), 0, 0, 0), + self.z_joint, self.group, [xpos, ypos]) #Draw face just right previous drawings + if self.options.lid_type == 'WoodHinge': + LidFace.drawLidBackWoodHinge(True) + else: #This is SteelHinge or Coffin + LidFace.drawLidBackSteelHinge(self.HingeList, True) + if yposface == ypos: + self.UpdateBoundingBox(LidFace) #Now update bounding box, if not already done, to place back face just below + yposface = -self.BoundingBox[3] + + #Back is xbox * zbox, all corners are external in each direction + DebugMsg("\nStraight face for Back\n") + if self.options.lid_type == 'Sliding': + #In this case, not a simple face, so we use a specific function. Also, top line is internal in y and external in x + Face = BoxFace('Back', CornerPoint((0,0), 0, 0, 1), + self.back_joint, CornerPoint((xbox,0), 0, 0, 1), + self.z_joint, CornerPoint((xbox,zbox), 0, 0, 0), + self.x_joint, CornerPoint((0,zbox), 0, 0, 0), + self.z_joint, self.group, [xpos, yposface]) #Draw face just right from previous one + Face.drawExternalBackSlidingLid(True) + elif self.options.lid_type == 'WoodHinge': + #In this case, not a simple face, so we use a specific function. + Face = BoxFace('Back', CornerPoint((0,0), 0, 0, 0), + 0, CornerPoint((xbox,0), 0, 0, 0), #No joint here ! + self.z_joint, CornerPoint((xbox,zbox), 0, 0, 0), + self.x_joint, CornerPoint((0,zbox), 0, 0, 0), + self.z_joint, self.group, [xpos, yposface]) #Draw face just right from previous one + Face.drawExternalBackWoodHingeLid(True) + elif self.options.lid_type == 'SteelHinge' or self.options.lid_type == 'Coffin': + #In this case, not a simple face, so we use a specific function. + Face = BoxFace('Back', CornerPoint((0,0), 0, 0, 0), + 0, CornerPoint((xbox,0), 0, 0, 0), #No joint here ! + self.z_joint, CornerPoint((xbox,zbox), 0, 0, 0), + self.x_joint, CornerPoint((0,zbox), 0, 0, 0), + self.z_joint, self.group, [xpos, yposface]) #Draw face just right from previous one + Face.drawExternalBackSteelHingeLid(self.HingeList, True) + else: + Face = BoxFace('Back', CornerPoint((0,0), 0, 0, 0), + self.back_joint, CornerPoint((xbox,0), 0, 0, 0), + self.z_joint, CornerPoint((xbox,zbox), 0, 0, 0), + self.x_joint, CornerPoint((0,zbox), 0, 0, 0), + self.z_joint, self.group, [xpos, yposface]) #Draw face just right from previous one + Face.drawSimpleFace(True) + self.UpdateBoundingBox(Face) #Now update bounding box + xpos = -Face.BoundingBox[2]-2 + elif back_right_radius == 0: + #Rounded corner on Back left + #Straight corner on Back/right, there is a flex band starting on back right + if front_left_radius == 0: + #Straight corner on front / left, flex band is back + left + DebugMsg("\nFlex on back --> left\n") + FlexBand = ('Flex_Back_Left', 0, 1, #Draw Back then Left so first element is external and last internal + (xbox, self.back_joint, back_left_radius, self.x_joint), #Back Notch Line and round corner r= front_right_radius + (ybox, self.left_joint, 0, self.y_joint)) #Then Left notch line without rounded corner + FlexBandList.append(FlexBand) + + elif front_right_radius == 0: + #Straight corner on bottom right, flex band is back + left + front + DebugMsg("\nFlex on back --> left --> front\n") + FlexBand = ('Flex_Back_Left_Front', 0, 0, #Draw Back then Left then Front so first element is external and last External + (xbox, self.back_joint, back_left_radius, self.x_joint), #Back Notch Line and round corner r= front_right_radius + (ybox, self.left_joint, front_left_radius, self.y_joint), #Then Left notch line and Front/Left rounded corner + (xbox, self.front_joint, 0, self.x_joint)) #At last, Front line without rounded corner + FlexBandList.append(FlexBand) + else: + #flex band is back + left + front + right + DebugMsg("\nFlex on back --> left --> front --> right\n") + FlexBand = ('Flex_Back_Left_Front_Right', 0, 1, #Draw Back then Left then Front Then Right so first element is external and last Inetrnal + (xbox, self.back_joint, back_left_radius, self.x_joint), #Back Notch Line and round corner r= front_right_radius + (ybox, self.left_joint, front_left_radius, self.y_joint), #Then Left notch line and Front/Left rounded corner + (xbox, self.front_joint, front_right_radius, self.x_joint), #Then Front line with Front/Right rounded corner + (ybox, self.right_joint, 0, self.y_joint)) #At last Right line without rounded corner + FlexBandList.append(FlexBand) + + + if back_left_radius == 0 and front_left_radius == 0: + if HasLid: + DebugMsg("Draw left lid\n") + LidFace = BoxFace('Lid_Left', CornerPoint((0,0), 0, 1, 0), + self.y_joint, CornerPoint((ybox,0), 0, 1, 0), + self.z_joint, CornerPoint((ybox,zlid), 0, 1, 0), + self.left_joint, CornerPoint((0,zlid), 0, 1, 0), + self.z_joint, self.group, [xpos, ypos]) #Draw face just right previous drawings + if self.options.lid_type == 'WoodHinge': + LidFace.drawLidSideWoodHinge(0, True) + elif self.options.lid_type == 'SteelHinge': #This is SteelHinge + LidFace.drawSimpleFace(True) + # No round for left face + # Left is ybox * zbox, corners are external in y but internal in x + DebugMsg("\nStraight face for Left\n") + if self.options.lid_type == 'Sliding': + delta_yposface = 2*thickness + 2 + else: + delta_yposface = 0 + LeftFace = BoxFace('Left', CornerPoint((0,0), 0, 1, 0, self.options.lid_type == 'WoodHinge'), + self.left_joint, CornerPoint((ybox,0), 0, 1, 0), + self.z_joint, CornerPoint((ybox,zbox), 0, 1, 0), + self.y_joint, CornerPoint((0,zbox), 0, 1, 0), + self.z_joint, self.group, [xpos, yposface-delta_yposface]) #Draw face just right from previous drawings + LeftFace.drawSimpleFace(True) + self.UpdateBoundingBox(LeftFace) #Now update bounding box + if self.options.lid_type == 'Sliding': + LeftFace.drawSideLineNotches(xpos, yposface) #Right face is straight + xpos = -LeftFace.BoundingBox[2]-2 + elif back_left_radius == 0: + #Rounded corner on Front left + #Straight corner on Back/left, there is a flex band starting on Back left + if front_right_radius == 0: + #Straight corner on Front / Right, flex band is Left + Front + DebugMsg("\nFlex on Left --> Front\n") + FlexBand = ('Flex_Left_Front', 1, 0, #Draw Left then Front so first element is internal and last external + #Left Notch Line and round corner r= front_left_radius, last parameter used when WoodHing to draw top circles + (ybox, self.left_joint, front_left_radius, self.y_joint, self.options.lid_type == 'WoodHinge'), + (xbox, self.front_joint, 0, self.x_joint)) #Then Front notch line without rounded corner + FlexBandList.append(FlexBand) + elif back_right_radius == 0: + #Straight corner on Back right, flex band is Left + Back + Right + DebugMsg("\nFlex on Left --> Front --> Right\n") + FlexBand = ('Flex_Left_Front_Right', 1, 1, #Draw Left then Front and Right so first element is internal and last internal + #Left Notch Line and round corner r= front_left_radius, last parameter used when WoodHing to draw top circles + (ybox, self.left_joint, front_left_radius, self.y_joint, self.options.lid_type == 'WoodHinge'), + (xbox, self.front_joint, front_right_radius, self.x_joint), #Then Front notch line with Front/Right rounded corner + (ybox, self.right_joint, 0, self.y_joint, self.options.lid_type == 'WoodHinge')) #And Right notch line without rounded corner + FlexBandList.append(FlexBand) + else: + #flex band on Left --> front --> right --> Back + DebugMsg("\nFlex on Left --> front --> right --> Back\n") + FlexBand = ('Flex_Left_Front_Right_Back', 1, 0, #Draw Left then Front, Right and Back so first element is internal and last external + (ybox, self.left_joint, front_left_radius, self.y_joint), #Left Notch Line and round corner r= front_left_radius + (xbox, self.front_joint, front_right_radius, self.x_joint), #Then Front notch line with Front/Right rounded corner + (ybox, self.right_joint, back_right_radius, self.y_joint), #And Right notch line with Back/Right rounded corner + (xbox, self.back_joint, 0, self.x_joint)) + FlexBandList.append(FlexBand) + + + if back_right_radius == 0 and front_right_radius == 0: + #Right is the same + if HasLid: + DebugMsg("Draw Right lid\n") + LidFace = BoxFace('Lid_Right', CornerPoint((0,0), 0, 1, 0), + self.y_joint, CornerPoint((ybox,0), 0, 1, 0), + self.z_joint, CornerPoint((ybox,zlid), 0, 1, 0), + self.right_joint, CornerPoint((0,zlid), 0, 1, 0), + self.z_joint, self.group, [xpos, ypos]) #Draw face just right previous drawings + if self.options.lid_type == 'WoodHinge': + LidFace.drawLidSideWoodHinge(1, True) + elif self.options.lid_type == 'SteelHinge': #This is SteelHinge + LidFace.drawSimpleFace(True) + + # Right is ybox * zbox, corners are external in y but internal in x + DebugMsg("\nStraight face for Right\n") + if self.options.lid_type == 'Sliding': + delta_yposface = 2*thickness + 2 + else: + delta_yposface = 0 + RightFace = BoxFace('Right', CornerPoint((0,0), 0, 1, 0), + self.right_joint, CornerPoint((ybox,0), 0, 1, 0, self.options.lid_type == 'WoodHinge'), + self.z_joint, CornerPoint((ybox,zbox), 0, 1, 0), + self.y_joint, CornerPoint((0,zbox), 0, 1, 0), + self.z_joint, self.group, [xpos, yposface-delta_yposface]) #Draw face just below previous drawings + RightFace.drawSimpleFace(True) + if self.options.lid_type == 'Sliding': + RightFace.drawSideLineNotches(xpos, yposface) #Right face is straight + self.UpdateBoundingBox(RightFace) #Now update bounding box + xpos = -RightFace.BoundingBox[2]-2 + elif front_right_radius == 0: + #Rounded corner on Back right + #Straight corner on Front right + if back_left_radius == 0: + #Straight corner on top / left, flex band is Left + Back + DebugMsg("\nFlex on Right --> Back\n") + FlexBand = ( 'Flex_Right_Back', 1, 0, #Draw Right then Back so first element is internal and last external + (ybox, self.right_joint, back_right_radius, self.y_joint), #Left Notch Line and round corner r= back_right_radius + (xbox, self.back_joint, 0, self.x_joint)) #Then Back notch line without rounded corner + FlexBandList.append(FlexBand) + elif front_left_radius == 0: + #Straight corner on Front left, flex band is Right --> Back --> Left + DebugMsg("\nFlex on Right --> Back --> Left\n") + FlexBand = ('Flex_Right_Back_Left', 1, 1, #Draw Right then Back and left so first element is internal and last internal + (ybox, self.right_joint, back_right_radius, self.y_joint), #Left Notch Line and round corner r= back_right_radius + (xbox, self.back_joint, back_left_radius, self.x_joint), #Then Back notch line with Back/Left rounded corner + (ybox, self.left_joint, 0, self.y_joint)) #And left Notch line without rounded corner + FlexBandList.append(FlexBand) + else: + #flex band on Left --> front --> right --> Back --> Front + DebugMsg("\nFlex on Right --> Back --> Left --> Front\n") + FlexBand = ('Flex_Right_Back_Left_Front', 1, 1, #Draw Right then Back and left so first element is internal and last internal + (ybox, self.right_joint, back_right_radius, self.y_joint), #Left Notch Line and round corner r= back_right_radius + (xbox, self.back_joint, back_left_radius, self.x_joint), #Then Back notch line with Back/Left rounded corner + (ybox, self.left_joint, front_left_radius, self.y_joint), #Then left Notch line with Front/Left rounded corner + (xbox, self.front_joint, 0, self.x_joint)) #And Front notch line without rounded corner + FlexBandList.append(FlexBand) + + if front_right_radius > 0 and back_right_radius > 0 and back_left_radius > 0 and front_left_radius > 0: + #Specific case, all corners are rounded + FlexBand = ('Flex_All', 1, 1, #Draw flex all around the box with clips + (xbox, self.back_joint, back_right_radius, self.x_joint), #(Half) Back Notch Line and round corner r= back_right_radius + (ybox, self.right_joint, front_right_radius, self.y_joint), #Then Right notch line with Front/Right rounded corner + (xbox, self.front_joint, front_left_radius, self.x_joint), #Then front notch line with Front/Left rounded corner + (ybox, self.left_joint, back_left_radius, self.y_joint), #Then Laft notch line with Back/Left rounded corner + (xbox, self.back_joint, back_right_radius, self.x_joint)) #And another back line, (half) + Face = FlexFace(FlexBand, 0, zbox, self.z_joint, self.group, [xpos, ypos]) + Face.drawRoundedFlexFace(True) + self.UpdateBoundingBox(Face) #Now update bounding box + else: + for FlexBand in FlexBandList: + if HasLid: + FaceLid = FlexFace(FlexBand, 1, zlid, self.z_joint, self.group, [xpos, ypos]) + FaceLid.drawFlexFace(True) + if yposface == ypos: + yposface = ypos - FaceLid.BoundingBox[3] - 2 + Face = FlexFace(FlexBand, 0, zbox, self.z_joint, self.group, [xpos, yposface]) + Face.drawFlexFace(True) + xpos -= Face.BoundingBox[2] + 2 + + #if sliding top, generate specific elements to let the lid slide + if self.options.lid_type == 'Sliding': + if len(FlexBandList) > 0: + #Case with flex + #This code works because with sliding top, there is AT MOST one flex band. + Face.drawSideLineNotches() + self.UpdateBoundingBox(Face) #Now update bounding box + + ypos = -self.BoundingBox[3] + xpos = 0.0 + + # If coffin draw the lid here + if self.options.lid_type == 'Coffin': + self.drawCoffinSide('Left', ybox, zlid+thickness, z_dome_lid, xpos, ypos, self.group) + xpos -= ybox + 2*thickness + 2 + self.drawCoffinSide('Right', ybox, zlid+thickness, z_dome_lid, xpos, ypos, self.group) + xpos -= ybox + 2*thickness + 2 + self.drawCoffinTop(xbox, ybox, zlid+thickness, z_dome_lid, xpos, ypos, self.group) + + ypos = -self.BoundingBox[3] + xpos = 0.0 + # Then draw internal walls + # First Back and front + # Rectangle with joints on sides, not on top and bottom + # + if self.InternalWalls_FB: + DebugMsg("\nDrawing Internal Back\n") + if self.InternalWalls_LR: + left_joint = self.z_joint + else: + left_joint = 0 #Only draw joints if there is a left side ! + #If rounded corner, shorten size by radius, if not by thickness + if back_left_radius > 0: + left_joint = 0 + d1 = back_left_radius + else: + d1 = thickness + if self.InternalWalls_LR: + right_joint = self.z_joint + else: + right_joint = 0 #Only draw joints if there is a right side ! + #If rounded corner, shorten size by radius, if not by thickness + if back_right_radius > 0: + right_joint = 0 + d2 = back_right_radius + else: + d2 = thickness + + InternalBack = BoxFace('Int_Back', CornerPoint((0,0), 0, 0, 1), #First corner, external on X, internal on Y sides + 0, CornerPoint((xbox-d1-d2,0), 0, 0, 1), + right_joint, CornerPoint((xbox-d1-d2, zbox_internal_walls), 0, 0, 1), + 0, CornerPoint((0,zbox_internal_walls), 0, 0, 1), + left_joint, self.group, [xpos, ypos]) #Draw face just below previous drawings + if self.options.lid_type == 'SteelHinge' or self.options.lid_type == 'Coffin': + #Special case, should cut some spce for the hinge in the back, so add the last parameter + InternalBack.drawFaceWithHoles(self.n_slot_x, self.x_slot_size, d1 - thickness, self.z_joint, True, self.HingeList) + else: + InternalBack.drawFaceWithHoles(self.n_slot_x, self.x_slot_size, d1 - thickness, self.z_joint, True) + xpos = -InternalBack.BoundingBox[2]-2 + + + if self.InternalWalls_LR: + left_joint = self.z_joint + else: + left_joint = 0 #Only draw joints if there is a left side ! + if front_left_radius > 0: + left_joint = 0 + d1 = front_left_radius + else: + d1 = thickness + if self.InternalWalls_LR: + right_joint = self.z_joint + else: + right_joint = 0 #Only draw joints if there is a right side ! + if front_right_radius > 0: + right_joint = 0 + d2 = front_right_radius + else: + d2 = thickness + DebugMsg("\nDrawing Internal Front\n") + InternalFront = BoxFace('Int_Front', CornerPoint((0,0), 0, 0, 1), #First corner, external on X, internal on Y sides + 0, CornerPoint((xbox-d1-d2,0), 0, 0, 1), + right_joint, CornerPoint((xbox-d1-d2, zbox_internal_walls), 0, 0, 1), + 0, CornerPoint((0,zbox_internal_walls), 0, 0, 1), + left_joint, self.group, [xpos, ypos]) #Draw face just below previous drawings + InternalFront.drawFaceWithHoles(self.n_slot_x, self.x_slot_size, d1 - thickness, self.z_joint, True) + xpos = -InternalFront.BoundingBox[2]-2 + + # Then Left and right internal walls if needed. + if self.InternalWalls_LR: + DebugMsg("\nDrawing Internal Left\n") + if self.InternalWalls_FB: + left_joint = self.z_joint + else: + left_joint = 0 #Only draw joints if there is a left side ! + if back_left_radius > 0: + left_joint = 0 + d1 = back_left_radius + else: + d1 = thickness + if self.InternalWalls_FB: + right_joint = self.z_joint + else: + right_joint = 0 #Only draw joints if there is a right side ! + if front_left_radius > 0: + right_joint = 0 + d2 = front_left_radius + else: + d2 = thickness + + InternalLeft = BoxFace('Int_Left', CornerPoint((0,0), 0, 1, 1), #First corner, internal on both sides + 0, CornerPoint((ybox-d1-d2,0), 0, 1, 1), + right_joint, CornerPoint((ybox-d1-d2, zbox_internal_walls), 0, 1, 1), + 0, CornerPoint((0,zbox_internal_walls), 0, 1, 1), + left_joint, self.group, [xpos, ypos]) #Draw face just below previous drawings + InternalLeft.drawFaceWithHoles(self.n_slot_y, self.y_slot_size, d1 - thickness, self.z_joint, True) + xpos = -InternalLeft.BoundingBox[2]-2 + + + if self.InternalWalls_FB: + left_joint = self.z_joint + else: + left_joint = 0 #Only draw joints if there is a left side ! + if front_right_radius > 0: + left_joint = 0 + d1 = front_right_radius + else: + d1 = thickness + if self.InternalWalls_FB: + right_joint = self.z_joint + else: + right_joint = 0 #Only draw joints if there is a right side ! + if back_right_radius > 0: + right_joint = 0 + d2 = back_right_radius + else: + d2 = thickness + DebugMsg("\nDrawing Internal Right\n") + InternalRight = BoxFace('Int_Right', CornerPoint((0,0), 0, 1, 1), #First corner, internal on both sides + 0, CornerPoint((ybox-d1-d2,0), 0, 1, 1), + right_joint, CornerPoint((ybox-d1-d2, zbox_internal_walls), 0, 1, 1), + 0, CornerPoint((0,zbox_internal_walls), 0, 1, 1), + left_joint, self.group, [xpos, ypos]) #Draw face just below previous drawings + InternalRight.drawFaceWithHoles(self.n_slot_y, self.y_slot_size, d1 - thickness, self.z_joint, True) + + self.UpdateBoundingBox(InternalRight) #Now update bounding box + elif self.InternalWalls_FB: + #Udate bounding box with front and back value + self.UpdateBoundingBox(InternalFront) #Now update bounding box + + + #Then internal walls + #Columns first + xpos = 0 + ypos = -self.BoundingBox[3] + + for i in range(self.n_slot_x-1): + self.drawColumWall(i, self.n_slot_y, self.y_slot_size, self.ListNotchColumns, ybox-2*thickness, zbox_internal_walls, xpos, ypos, self.group) + xpos -= ybox + 2 #Next position for drawing + + #Then rows, nearly the same, but opening at the bottom edge + + xpos = 0 + ypos -= zbox_internal_walls + thickness + 2 + for i in range(self.n_slot_y-1): + self.drawRowWall(i, self.n_slot_x, self.x_slot_size, self.ListNotchRows, xbox-2*thickness, zbox_internal_walls, xpos, ypos, self.group) + xpos -= xbox + 2 #Next position for drawing + + # + if self.options.lid_type == 'SteelHinge' or self.options.lid_type == 'Coffin': + #the elements of the hinge + HingeNum = 0 + ypos = -self.BoundingBox[3] - 2 + xpos = -2 + for Hinge in self.HingeList: + for i in range(5): + self.drawSteelHingeElement(HingeNum*5+i, thickness, xpos, ypos, self.group) + xpos -= 3.5*thickness + 2 + HingeNum += 1 + xpos -= 3 + + + CloseDebugFile() + + +if __name__ == '__main__': + BoxMakerGenericGenerator().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_generic_generator/inkscape_path.py b/extensions/fablabchemnitz/box_maker_generic_generator/inkscape_path.py new file mode 100644 index 00000000..82023cf1 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_generic_generator/inkscape_path.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 + +# We will use the inkex module with the predefined Effect base class. +import inkex +import math +from lxml import etree + + +objStyle = str(inkex.Style({'stroke': '#000000', + 'stroke-width': 0.1, + 'fill': 'none' + })) + +class th_inkscape_path: + def __init__(self, Offset, group, Label=None, Style = None): + self.offsetX = Offset[0] + self.offsetY = Offset[1] + self.Path = '' + self.group = group + self.Label = Label + if Style: + self.Style = Style + else: + self.Style = objStyle + self.xmin = -self.offsetX + self.xmax = -self.offsetX + self.ymin = -self.offsetY + self.ymax = -self.offsetY + self.x = 0 + self.y = 0 + + def MoveTo(self, x, y): + #Return string 'M X Y' where X and Y are updated values from parameters + self.Path += ' M ' + str(round(x-self.offsetX, 3)) + ',' + str(round(y-self.offsetY, 3)) + self.x = x - self.offsetX + self.y = y - self.offsetY + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + def LineTo(self, x, y): + #Return string 'L X Y' where X and Y are updated values from parameters + self.Path += ' L ' + str(round(x-self.offsetX, 3)) + ',' + str(round(y-self.offsetY, 3)) + self.x = x - self.offsetX + self.y = y - self.offsetY + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + + def LineToRel(self, x, y): + #Return string 'L X Y' where X and Y are updated values from parameters + self.Path += ' l ' + str(round(x, 3)) + ',' + str(round(y, 3)) + self.x += x + self.y += y + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + def LineToHRel(self, x): + #Return string 'h X' where X are updated values from parameters + self.Path += ' h ' + str(round(x, 3)) + self.x += x + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + + + def LineToVRel(self, y): + #Return string 'v Y' where X and Y are updated values from parameters + self.Path += ' v ' + str(round(y, 3)) + self.y += y + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + def Line(self, x1, y1, x2, y2): + self.x = x1 - self.offsetX + self.y = y1 - self.offsetY + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + #Return string M X1 Y1 L X2 Y2 + self.Path += ' M ' + str(round(x1-self.offsetX, 3)) + ',' + str(round(y1-self.offsetY, 3)) + ' L ' + str(round(x2-self.offsetX, 3)) + ',' + str(round(y2-self.offsetY, 3)) + self.x = x2 - self.offsetX + self.y = y2 - self.offsetY + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + def LineRel(self, x1, y1, x2, y2): + self.x += x1 + self.y += y1 + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + #Return string m X1 Y1 l X2 Y2 + self.Path += ' m ' + str(round(x1, 3)) + ',' + str(round(y1, 3)) + ' l ' + str(round(x2, 3)) + ',' + str(round(y2, 3)) + self.x += x2 + self.y += y2 + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + def Bezier(self, xc1, yc1, xc2, yc2, x, y): + #Return string C XC1 YC1 XC2 YC2 X Y + self.Path += ' C ' + str(round(xc1-self.offsetX, 3)) + ',' + str(round(yc1-self.offsetY, 3)) + ' ' + str(round(xc2-self.offsetX, 3)) + ',' + str(round(yc2-self.offsetY, 3))+ ' ' + str(round(x-self.offsetX, 3)) + ',' + str(round(y-self.offsetY, 3)) + self.x = x - self.offsetX + self.y = y - self.offsetY + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + def BezierRel(self, xc1, yc1, xc2, yc2, x, y): + #Return string c XC1 YC1 XC2 YC2 X Y + self.Path += ' c ' + str(round(xc1, 3)) + ',' + str(round(yc1, 3)) + ' ' + str(round(xc2, 3)) + ',' + str(round(yc2, 3))+ ' ' + str(round(x, 3)) + ',' + str(round(y, 3)) + self.x += x + self.y += y + self.xmin= min(self.x, self.xmin) + self.xmax= max(self.x, self.xmax) + self.ymin= min(self.y, self.ymin) + self.ymax= max(self.y, self.ymax) + + + def drawQuarterCircle(self, xc, yc, radius, quarter): + ''' + Draw a quarter of circle with a single bezier path + xc, yc give the center of the circle, radius its radius + quarter = 0 : upper left, 1: upper right, 2: lower right, 3: lower left + Starting point is the last point of the path + ''' + if quarter == 0: + self.Bezier(xc-radius, yc - radius*0.551916, xc - radius*0.551916, yc-radius, xc, yc-radius) # upper left quarter + elif quarter == 1: + self.Bezier(xc+radius*0.551916, yc - radius, xc + radius, yc-radius*0.551916, xc+radius, yc) # upper right quarter + elif quarter == 2: + self.Bezier(xc+radius, yc + radius*0.551916, xc + radius*0.551916, yc+radius, xc, yc+radius) # lower right quarter + elif quarter == 3: + self.Bezier(xc+radius*-0.551916, yc + radius, xc - radius, yc+radius*0.551916, xc-radius, yc) # lower left quarter + + + def drawCircle(self, xc, yc, radius): + #Draw a circle, with 4 Bezier paths + self.MoveTo(xc+radius, yc) #R, 0 + self.Bezier(xc+radius, yc + radius*0.551916, xc + radius*0.551916, yc+radius, xc, yc+radius) #1er quarter, lower right + self.Bezier(xc+radius*-0.551916, yc + radius, xc - radius, yc+radius*0.551916, xc-radius, yc) #2nd quarter, lower left + self.Bezier(xc-radius, yc - radius*0.551916, xc - radius*0.551916, yc-radius, xc, yc-radius) #3rd quarter, upper left + self.Bezier(xc+radius*0.551916, yc - radius, xc + radius, yc-radius*0.551916, xc+radius, yc) #4th quarter, upper right + + def Close(self): + self.Path += ' z' + + def GenPath(self): + if self.Label: + line_attribs = {'style': self.Style, 'id' : self.Label, 'd': self.Path} + else: + line_attribs = {'style': self.Style, 'd': self.Path} + etree.SubElement(self.group, inkex.addNS('path', 'svg'), line_attribs) + + def GetBoundingBox(self): + ''' + return a tuple giving MinPos, MaxPos and Size (6 elements) + ''' + return(self.xmin, self.ymin, self.xmax, self.ymax, self.xmax - self.xmin, self.ymax - self.ymin) diff --git a/extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.inx b/extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.inx new file mode 100644 index 00000000..a96565fc --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.inx @@ -0,0 +1,89 @@ + + + Box Maker - Lasercut Box + fablabchemnitz.de.box_maker_lasercut_box + + + + + + + + + + + + + + + 50.0 + 30.0 + 15 + 3.0 + 11 + 11 + 6 + true + true + + + + 0.0 + false + + + + false + + + + + + + + true + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.py b/extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.py new file mode 100644 index 00000000..25ab8760 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.py @@ -0,0 +1,470 @@ +#!/usr/bin/env python3 +''' +Copyright (C)2011 Mark Schafer + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +''' + +# Build a tabbed box for lasercutting with tight fit, and minimal material use options. +# User defines: +# - internal or external dimensions, +# - number of tabs, +# - amount lost to laser (kerf), +# - include corner cubes or not, +# - dimples, or perfect fit (accounting for kerf). +# If zero kerf - will be perfectly packed for minimal laser cuts and material size. + +### Todo +# add option to pack multiple boxes (if zero kerf) - new tab maybe? +# add option for little circles at sharp corners for acrylic +# annotations: - add overlap value as markup - Ponoko annotation color +# choose colours from a dictionary + +### Versions +# 0.1 February 2011 - basic lasercut box with dimples etc +# 0.2 changes to unittouu for Inkscape 0.91 +# 0.3 Option to avoid half-sized tabs at corners. + +__version__ = "0.3" + +import inkex +from inkex.paths import Path +from lxml import etree + +class BoxMakerLasercutBox(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("-i", "--int_ext", type = inkex.Boolean, default=False, help="Are the Dimensions for External or Internal sizing.") + pars.add_argument("-x", "--width", type=float, default=50.0, help="The Box Width - in the X dimension") + pars.add_argument("-y", "--height", type=float, default=30.0, help="The Box Height - in the Y dimension") + pars.add_argument("-z", "--depth", type=float, default=15.0, help="The Box Depth - in the Z dimension") + pars.add_argument("-t", "--thickness", type=float, default=3.0, help="Material Thickness - critical to know") + pars.add_argument("-u", "--units", default="cm", help="The unit of the box dimensions") + pars.add_argument("-c", "--corners", type = inkex.Boolean, default=True, help="The corner cubes can be removed for a different look") + pars.add_argument("-H", "--halftabs", type = inkex.Boolean, default=True, help="Start/End with half-sized tabs - Avoid with very small tabs") + pars.add_argument("-p", "--ntab_W", type=int, default=11, help="Number of tabs in Width") + pars.add_argument("-q", "--ntab_H", type=int, default=11, help="Number of tabs in Height") + pars.add_argument("-r", "--ntab_D", type=int, default=6, help="Number of tabs in Depth") + pars.add_argument("-k", "--kerf_size", type=float,default=0.0, help="Kerf size - amount lost to laser for this material. 0 = loose fit") + pars.add_argument("-d", "--dimples", type=inkex.Boolean, default=False, help="Add dimples for press fitting wooden materials") + pars.add_argument("-s", "--dstyle", type=inkex.Boolean, default=False, help="Dimples can be triangles(cheaper) or half rounds(better)") + pars.add_argument("-g", "--linewidth", type=inkex.Boolean, default=False, help="Use the kerf value as the drawn line width") + pars.add_argument("-j", "--annotation", type=inkex.Boolean, default=True, help="Show Kerf value as annotation") + #dummy for the doc tab - which is named + pars.add_argument("--tab", default="use", help="The selected UI-tab when OK was pressed") + #internal useful variables + self.stroke_width = 0.1 #default for visiblity + self.line_style = {'stroke': '#0000FF', # Ponoko blue + 'fill': 'none', + 'stroke-width': self.stroke_width, + 'stroke-linecap': 'butt', + 'stroke-linejoin': 'miter'} + + def annotation(self, x, y, text): + """ Draw text at this location + - change to path + - use annotation color """ + pass + + + def thickness_line(self, dimple, vert_horiz, pos_neg): + """ called to draw dimples (also draws simple lines if no dimple) + - pos_neg is 1, -1 for direction + - vert_horiz is v or h """ + if dimple and self.kerf > 0.0: # we need a dimple + # size is radius = kerf + # short line, half circle, short line + #[ 'C', [x1,y1, x2,y2, x,y] ] x1 is first handle, x2 is second + lines = [] + radius = self.kerf + if self.thick - 2 * radius < 0.2: # correct for large dimples(kerf) on small thicknesses + radius = (self.thick - 0.2) / 2 + short = 0.1 + else: + short = self.thick/2 - radius + if vert_horiz == 'v': # vertical line + # first short line + lines.append(['v', [pos_neg*short]]) + # half circle + if pos_neg == 1: # only the DH_sides need reversed tabs to interlock + if self.dimple_tri: + lines.append(['l', [radius, pos_neg*radius]]) + lines.append(['l', [-radius, pos_neg*radius]]) + else: + lines.append(['c', [radius, 0, radius, pos_neg*2*radius, 0, pos_neg*2*radius]]) + else: + if self.dimple_tri: + lines.append(['l', [-radius, pos_neg*radius]]) + lines.append(['l', [radius, pos_neg*radius]]) + else: + lines.append(['c', [-radius, 0, -radius, pos_neg*2*radius, 0, pos_neg*2*radius]]) + # last short line + lines.append(['v', [pos_neg*short]]) + else: # horizontal line + # first short line + lines.append(['h', [pos_neg*short]]) + # half circle + if self.dimple_tri: + lines.append(['l', [pos_neg*radius, radius]]) + lines.append(['l', [pos_neg*radius, -radius]]) + else: + lines.append(['c', [0, radius, pos_neg*2*radius, radius, pos_neg*2*radius, 0]]) + # last short line + lines.append(['h', [pos_neg*short]]) + return lines + + # No dimple - so much easier + else: # return a straight v or h line same as thickness + if vert_horiz == 'v': + return [ ['v', [pos_neg*self.thick]] ] + else: + return [ ['h', [pos_neg*self.thick]] ] + + + def draw_WH_lid(self, startx, starty, masktop=False): + """ Return an SVG path for the top or bottom of box + - the Width * Height dimension """ + line_path = [] + line_path.append(['M', [startx, starty]]) + # top row of tabs + if masktop and self.kerf ==0.0: # don't draw top for packing with no extra cuts + line_path.append(['m', [self.boxW, 0]]) + else: + if not self.ht: line_path.append(['l', [self.boxW/self.Wtabs/4 - self.pf/2, 0]]) + for i in range(int(self.Wtabs)): + line_path.append(['h', [self.boxW/self.Wtabs/4 - self.pf/2]]) + #line_path.append(['v', [0, -thick]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'v', -1): + line_path.append(l) + line_path.append(['h', [self.boxW/self.Wtabs/2 + self.pf]]) + line_path.append(['v', [self.thick]]) + line_path.append(['h', [self.boxW/self.Wtabs/4 - self.pf/2]]) + if not self.ht: line_path.append(['l', [self.boxW/self.Wtabs/4 - self.pf/2, 0]]) + # right hand vertical drop + if not self.ht: line_path.append(['l', [0, self.boxH/self.Htabs/4 - self.pf/2]]) + for i in range(int(self.Htabs)): + line_path.append(['v', [self.boxH/self.Htabs/4 - self.pf/2]]) + line_path.append(['h', [self.thick]]) + line_path.append(['v', [self.boxH/self.Htabs/2 + self.pf]]) + #line_path.append(['h', [-thick, 0]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'h', -1): + line_path.append(l) + line_path.append(['v', [self.boxH/self.Htabs/4 - self.pf/2]]) + if not self.ht: line_path.append(['l', [0, self.boxH/self.Htabs/4 - self.pf/2]]) + # bottom row (in reverse) + if not self.ht: line_path.append(['l', [-self.boxW/self.Wtabs/4 + self.pf/2, 0]]) + for i in range(int(self.Wtabs)): + line_path.append(['h', [-self.boxW/self.Wtabs/4 + self.pf/2]]) + line_path.append(['v', [self.thick]]) + line_path.append(['h', [-self.boxW/self.Wtabs/2 - self.pf]]) + #line_path.append(['v', [0, -thick]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'v', -1): + line_path.append(l) + line_path.append(['h', [-self.boxW/self.Wtabs/4 + self.pf/2]]) + if not self.ht: line_path.append(['l', [-self.boxW/self.Wtabs/4 + self.pf/2, 0]]) + # up the left hand side + if not self.ht: line_path.append(['l', [0, -self.boxH/self.Htabs/4 + self.pf/2]]) + for i in range(int(self.Htabs)): + line_path.append(['v', [-self.boxH/self.Htabs/4 + self.pf/2]]) + #line_path.append(['h', [-thick, 0]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'h', -1): + line_path.append(l) + line_path.append(['v', [-self.boxH/self.Htabs/2 - self.pf]]) + line_path.append(['h', [self.thick]]) + line_path.append(['v', [-self.boxH/self.Htabs/4 + self.pf/2]]) + if not self.ht: line_path.append(['l', [0, -self.boxH/self.Htabs/4 + self.pf/2]]) + return line_path + + + def draw_WD_side(self, startx, starty, mask=False, corners=True): + """ Return an SVG path for the long side of box + - the Width * Depth dimension """ + # Draw side of the box (placed below the lid) + line_path = [] + # top row of tabs + if corners: + line_path.append(['M', [startx - self.thick, starty]]) + line_path.append(['v', [-self.thick]]) + line_path.append(['h', [self.thick]]) + else: + line_path.append(['M', [startx, starty]]) + line_path.append(['v', [-self.thick]]) + # + if self.kerf > 0.0: # if fit perfectly - don't draw double line + if not self.ht: line_path.append(['l', [self.boxW/self.Wtabs/4 + self.pf/2, 0]]) + for i in range(int(self.Wtabs)): + line_path.append(['h', [self.boxW/self.Wtabs/4 + self.pf/2]]) + line_path.append(['v', [self.thick]]) + line_path.append(['h', [self.boxW/self.Wtabs/2 - self.pf]]) + #line_path.append(['v', [0, -thick]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'v', -1): + line_path.append(l) + line_path.append(['h', [self.boxW/self.Wtabs/4 + self.pf/2]]) + if not self.ht: line_path.append(['l', [self.boxW/self.Wtabs/4 + self.pf/2, 0]]) + if corners: line_path.append(['h', [self.thick]]) + else: # move to skipped drawn lines + if corners: + line_path.append(['m', [self.boxW + self.thick, 0]]) + else: + line_path.append(['m', [self.boxW, 0]]) + # + line_path.append(['v', [self.thick]]) + if not corners: line_path.append(['h', [self.thick]]) + # RHS + if not self.ht: line_path.append(['l', [0, self.boxD/self.Dtabs/4 + self.pf/2]]) + for i in range(int(self.Dtabs)): + line_path.append(['v', [self.boxD/self.Dtabs/4 + self.pf/2]]) + #line_path.append(['h', [-thick, 0]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'h', -1): + line_path.append(l) + line_path.append(['v', [self.boxD/self.Dtabs/2 - self.pf]]) + line_path.append(['h', [self.thick]]) + line_path.append(['v', [self.boxD/self.Dtabs/4 + self.pf/2]]) + if not self.ht: line_path.append(['l', [0, self.boxD/self.Dtabs/4 + self.pf/2]]) + # + if corners: + line_path.append(['v', [self.thick]]) + line_path.append(['h', [-self.thick]]) + else: + line_path.append(['h', [-self.thick]]) + line_path.append(['v', [self.thick]]) + # base + if not self.ht: line_path.append(['l', [-self.boxW/self.Wtabs/4 - self.pf/2, 0]]) + for i in range(int(self.Wtabs)): + line_path.append(['h', [-self.boxW/self.Wtabs/4 - self.pf/2]]) + #line_path.append(['v', [0, -thick]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'v', -1): + line_path.append(l) + line_path.append(['h', [-self.boxW/self.Wtabs/2 + self.pf]]) + line_path.append(['v', [self.thick]]) + line_path.append(['h', [-self.boxW/self.Wtabs/4 - self.pf/2]]) + if not self.ht: line_path.append(['l', [-self.boxW/self.Wtabs/4 - self.pf/2, 0]]) + # + if corners: + line_path.append(['h', [-self.thick]]) + line_path.append(['v', [-self.thick]]) + else: + line_path.append(['v', [-self.thick]]) + line_path.append(['h', [-self.thick]]) + # LHS + if not self.ht: line_path.append(['l', [0, -self.boxD/self.Dtabs/4 - self.pf/2]]) + for i in range(int(self.Dtabs)): + line_path.append(['v', [-self.boxD/self.Dtabs/4 - self.pf/2]]) + line_path.append(['h', [self.thick]]) + line_path.append(['v', [-self.boxD/self.Dtabs/2 + self.pf]]) + #line_path.append(['h', [-thick, 0]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'h', -1): + line_path.append(l) + line_path.append(['v', [-self.boxD/self.Dtabs/4 - self.pf/2]]) + if not self.ht: line_path.append(['l', [0, -self.boxD/self.Dtabs/4 - self.pf/2]]) + # + if not corners: line_path.append(['h', [self.thick]]) + return line_path + + + def draw_HD_side(self, startx, starty, corners, mask=False): + """ Return an SVG path for the short side of box + - the Height * Depth dimension """ + line_path = [] + # top row of tabs + line_path.append(['M', [startx, starty]]) + if not(mask and corners and self.kerf == 0.0): + line_path.append(['h', [self.thick]]) + else: + line_path.append(['m', [self.thick, 0]]) + if not self.ht: line_path.append(['l', [self.boxD/self.Dtabs/4 - self.pf/2, 0]]) + for i in range(int(self.Dtabs)): + line_path.append(['h', [self.boxD/self.Dtabs/4 - self.pf/2]]) + line_path.append(['v', [-self.thick]]) + line_path.append(['h', [self.boxD/self.Dtabs/2 + self.pf]]) + #line_path.append(['v', [0, thick]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'v', 1): + line_path.append(l) + line_path.append(['h', [self.boxD/self.Dtabs/4 - self.pf/2]]) + if not self.ht: line_path.append(['l', [self.boxD/self.Dtabs/4 - self.pf/2, 0]]) + line_path.append(['h', [self.thick]]) + # + if not self.ht: line_path.append(['l', [0, self.boxH/self.Htabs/4 + self.pf/2]]) + for i in range(int(self.Htabs)): + line_path.append(['v', [self.boxH/self.Htabs/4 + self.pf/2]]) + #line_path.append(['h', [-thick, 0]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'h', -1): + line_path.append(l) + line_path.append(['v', [self.boxH/self.Htabs/2 - self.pf]]) + line_path.append(['h', [self.thick]]) + line_path.append(['v', [self.boxH/self.Htabs/4 + self.pf/2]]) + if not self.ht: line_path.append(['l', [0, self.boxH/self.Htabs/4 + self.pf/2]]) + line_path.append(['h', [-self.thick]]) + # + if not self.ht: line_path.append(['l', [-self.boxD/self.Dtabs/4 + self.pf/2, 0]]) + for i in range(int(self.Dtabs)): + line_path.append(['h', [-self.boxD/self.Dtabs/4 + self.pf/2]]) + #line_path.append(['v', [0, thick]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'v', 1): # this is the weird +1 instead of -1 dimple + line_path.append(l) + line_path.append(['h', [-self.boxD/self.Dtabs/2 - self.pf]]) + line_path.append(['v', [-self.thick]]) + line_path.append(['h', [-self.boxD/self.Dtabs/4 + self.pf/2]]) + if not self.ht: line_path.append(['l', [-self.boxD/self.Dtabs/4 + self.pf/2, 0]]) + line_path.append(['h', [-self.thick]]) + # + if self.kerf > 0.0: # if fit perfectly - don't draw double line + if not self.ht: line_path.append(['l', [0, -self.boxH/self.Htabs/4 - self.pf/2]]) + for i in range(int(self.Htabs)): + line_path.append(['v', [-self.boxH/self.Htabs/4 - self.pf/2]]) + line_path.append(['h', [self.thick]]) + line_path.append(['v', [-self.boxH/self.Htabs/2 + self.pf]]) + #line_path.append(['h', [-thick, 0]]) # replaced with dimpled version + for l in self.thickness_line(self.dimple, 'h', -1): + line_path.append(l) + line_path.append(['v', [-self.boxH/self.Htabs/4 - self.pf/2]]) + if not self.ht: line_path.append(['l', [0, -self.boxH/self.Htabs/4 - self.pf/2]]) + return line_path + + ###-------------------------------------------- + ### The main function called by the inkscape UI + def effect(self): + # document dimensions (for centering) + docW = self.svg.unittouu(self.document.getroot().get('width')) + docH = self.svg.unittouu(self.document.getroot().get('height')) + # extract fields from UI + self.boxW = self.svg.unittouu(str(self.options.width) + self.options.units) + self.boxH = self.svg.unittouu(str(self.options.height) + self.options.units) + self.boxD = self.svg.unittouu(str(self.options.depth) + self.options.units) + self.thick = self.svg.unittouu(str(self.options.thickness) + self.options.units) + self.kerf = self.svg.unittouu(str(self.options.kerf_size) + self.options.units) + if self.kerf < 0.01: self.kerf = 0.0 # snap to 0 for UI error when setting spinner to 0.0 + self.Wtabs = self.options.ntab_W + self.Htabs = self.options.ntab_H + self.Dtabs = self.options.ntab_D + self.dimple = self.options.dimples + line_width = self.options.linewidth + corners = self.options.corners + self.dimple_tri = self.options.dstyle + self.annotation = self.options.annotation + self.ht = self.options.halftabs + if not self.ht: + self.Wtabs += 0.5 + self.Htabs += 0.5 + self.Dtabs += 0.5 + + # Correct for thickness in dimensions + if self.options.int_ext: # external so add thickness + self.boxW -= self.thick*2 + self.boxH -= self.thick*2 + self.boxD -= self.thick*2 + # adjust for laser kerf (precise measurement) + self.boxW += self.kerf + self.boxH += self.kerf + self.boxD += self.kerf + + # Precise fit or dimples (if kerf > 0.0) + if self.dimple == False: # and kerf > 0.0: + self.pf = self.kerf + else: + self.pf = 0.0 + + # set the stroke width and line style + sw = self.kerf + if self.kerf == 0.0: sw = self.stroke_width + ls = self.line_style + if line_width: # user wants drawn line width to be same as kerf size + ls['stroke-width'] = sw + line_style = str(inkex.Style(ls)) + + ###--------------------------- + ### create the inkscape object + box_id = self.svg.get_unique_id('box') + self.box = g = etree.SubElement(self.svg.get_current_layer(), 'g', {'id':box_id}) + + #Set local position for drawing (will transform to center of doc at end) + lower_pos = 0 + left_pos = 0 + # Draw Lid (using SVG path definitions) + line_path = self.draw_WH_lid(left_pos, lower_pos) + # Add to scene + line_atts = { 'style':line_style, 'id':box_id+'-lid', 'd':str(Path(line_path)) } + etree.SubElement(g, inkex.addNS('path','svg'), line_atts) + + # draw the side of the box directly below + if self.kerf > 0.0: + lower_pos += self.boxH + (3*self.thick) + else: # kerf = 0 so don't draw extra lines and fit perfectly + lower_pos += self.boxH + self.thick # at lower edge of lid + left_pos += 0 + # Draw side of the box (placed below the lid) + line_path = self.draw_WD_side(left_pos, lower_pos, corners=corners) + # Add to scene + line_atts = { 'style':line_style, 'id':box_id+'-longside1', 'd':str(Path(line_path)) } + etree.SubElement(g, inkex.addNS('path','svg'), line_atts) + + # draw the bottom of the box directly below + if self.kerf > 0.0: + lower_pos += self.boxD + (3*self.thick) + else: # kerf = 0 so don't draw extra lines and fit perfectly + lower_pos += self.boxD + self.thick # at lower edge + left_pos += 0 + # Draw base of the box + line_path = self.draw_WH_lid(left_pos, lower_pos, True) + # Add to scene + line_atts = { 'style':line_style, 'id':box_id+'-base', 'd':str(Path(line_path)) } + etree.SubElement(g, inkex.addNS('path','svg'), line_atts) + + # draw the second side of the box directly below + if self.kerf > 0.0: + lower_pos += self.boxH + (3*self.thick) + else: # kerf = 0 so don't draw extra lines and fit perfectly + lower_pos += self.boxH + self.thick # at lower edge of lid + left_pos += 0 + # Draw side of the box (placed below the lid) + line_path = self.draw_WD_side(left_pos, lower_pos, corners=corners) + # Add to scene + line_atts = { 'style':line_style, 'id':box_id+'-longside2', 'd':str(Path(line_path)) } + etree.SubElement(g, inkex.addNS('path','svg'), line_atts) + + # draw next on RHS of lid + if self.kerf > 0.0: + left_pos += self.boxW + (2*self.thick) # adequate space (could be a param for separation when kerf > 0) + else: + left_pos += self.boxW # right at right edge of lid + lower_pos = 0 + # Side of the box (placed next to the lid) + line_path = self.draw_HD_side(left_pos, lower_pos, corners) + # Add to scene + line_atts = { 'style':line_style, 'id':box_id+'-endface2', 'd':str(Path(line_path)) } + etree.SubElement(g, inkex.addNS('path','svg'), line_atts) + + # draw next on RHS of base + if self.kerf > 0.0: + lower_pos += self.boxH + self.boxD + 6*self.thick + else: + lower_pos += self.boxH +self.boxD + 2*self.thick + # Side of the box (placed next to the lid) + line_path = self.draw_HD_side(left_pos, lower_pos, corners, True) + # Add to scene + line_atts = { 'style':line_style, 'id':box_id+'-endface1', 'd':str(Path(line_path)) } + etree.SubElement(g, inkex.addNS('path','svg'), line_atts) + + + ###---------------------------------------- + # Transform entire drawing to center of doc + lower_pos += self.boxH*2 + self.boxD*2 + 2*self.thick + left_pos += self.boxH + 2*self.thick + g.set( 'transform', 'translate(%f,%f)' % ( (docW-left_pos)/2, (docH-lower_pos)/2)) + + # The implementation algorithm has added intermediate short lines and doubled up when using h,v with extra zeros + #self.thin(g) # remove short straight lines + +if __name__ == '__main__': + BoxMakerLasercutBox().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.inx b/extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.inx new file mode 100644 index 00000000..c19bf706 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.inx @@ -0,0 +1,51 @@ + + + Box Maker - Living Hinge + fablabchemnitz.de.box_maker_living_hinge + + + + + + + + + + + + + + + + + + 40.0 + 80.0 + 50.0 + 6.0 + + + + + 3.0 + 0.1 + 0.01 + + + + + 1.0 + 2.0 + 15.000 + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.py b/extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.py new file mode 100644 index 00000000..950b8e4c --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.py @@ -0,0 +1,511 @@ +#!/usr/bin/env python3 +''' +Generates Inkscape SVG file containing box components needed to +laser cut a tabbed construction box taking kerf and clearance into account + +Original Author -- 2011 elliot white elliot@twot.eu +Forked -- 2013 Reid Borsuk reid.borsuk@live.com +Updated for 0.91 2016 Maren Hachmann marenhachmann@yahoo.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +''' +__version__ = "0.8rb" + +import inkex +import math +from lxml import etree +import math + +def drawS(XYstring): # Draw lines from a list + name='part' + style = { 'stroke': '#000000', 'fill': 'none' } + drw = {'style': str(inkex.Style(style)),inkex.addNS('label','inkscape'):name,'d':XYstring} + etree.SubElement(parent, inkex.addNS('path','svg'), drw ) + return + +def draw_SVG_ellipse(centerx, centery, radiusx, radiusy, start_end): + + style = { 'stroke' : '#000000', + 'fill' : 'none' } + ell_attribs = {'style': str(inkex.Style(style)), + inkex.addNS('cx','sodipodi') :str(centerx), + inkex.addNS('cy','sodipodi') :str(centery), + inkex.addNS('rx','sodipodi') :str(radiusx), + inkex.addNS('ry','sodipodi') :str(radiusy), + inkex.addNS('start','sodipodi') :str(start_end[0]), + inkex.addNS('end','sodipodi') :str(start_end[1]), + inkex.addNS('open','sodipodi') :'true', #all ellipse sectors we will draw are open + inkex.addNS('type','sodipodi') :'arc', + 'transform' :'' + } + + ell = etree.SubElement(parent, inkex.addNS('path','svg'), ell_attribs ) + +#draw an SVG line segment between the given (raw) points +def draw_SVG_line( x1, y1, x2, y2, parent): + style = { 'stroke': '#000000', 'fill': 'none' } + + line_attribs = {'style' : str(inkex.Style(style)), + 'd' : 'M '+str(x1)+','+str(y1)+' L '+str(x2)+','+str(y2)} + + line = etree.SubElement(parent, inkex.addNS('path','svg'), line_attribs ) + +def EllipseCircumference(a, b): + """ + Compute the circumference of an ellipse with semi-axes a and b. + Require a >= 0 and b >= 0. Relative accuracy is about 0.5^53. + """ + import math + x, y = max(a, b), min(a, b) + digits = 53; tol = math.sqrt(math.pow(0.5, digits)) + if digits * y < tol * x: return 4 * x + s = 0; m = 1 + while x - y > tol * y: + x, y = 0.5 * (x + y), math.sqrt(x * y) + m *= 2; s += m * math.pow(x - y, 2) + return math.pi * (math.pow(a + b, 2) - s) / (x + y) + +""" +Gives you a list of points that make up a box. + +Returns string suitable for input to drawS +""" +def box(sx, sy,ex, ey, leaveLeftSideOpen = False): + s=[] + s='M '+str(sx)+','+str(sy)+' ' + s+='L '+str(ex)+','+str(sy)+' ' + s+='L '+str(ex)+','+str(ey)+' ' + s+='L '+str(sx)+','+str(ey)+' ' + if not leaveLeftSideOpen: + s+='L '+str(sx)+','+str(sy)+' ' + return s + +""" +Side function is used to render any of the sides so needs all this functionality: + isLongSide -- long sides without tabs (for cover), + truncate -- partial sides for the elipse + gap -- extend the tabs on the curved side for ease of movement + thumbTab -- Render individual boxes for slots instead of one continuous line + +isTab is used to specify the male/female designation for a side so they mesh properly. Otherwise the tabs +would be in the same spot for opposing sides, instead of interleaved. + +Returns a list of lines to draw. +""" +def side(rx,ry,sox,soy,eox,eoy,tabVec,length, dirx, diry, isTab, isLongSide, truncate = False, gap = False, thumbTab = False): + # root startOffset endOffset tabVec length direction isTab + + #Long side length= length+((math.pi*(length/2))/4 + tmpLength = 0 + correctionLocal = correction + if gap: + correctionLocal = (correction) + if isLongSide > 0: + tmpLength = length + length = isLongSide + + divs=int(length/nomTab) # divisions + if not divs%2: divs-=1 # make divs odd + if isLongSide < 0: + divs = 1 + + divs=float(divs) + tabs=(divs-1)/2 # tabs for side + + if isLongSide < 0: + divs = 1 + tabWidth = length + gapWidth = 0 + elif equalTabs: + gapWidth=tabWidth=length/divs + else: + tabWidth=nomTab + gapWidth=(length-tabs*nomTab)/(divs-tabs) + + if isTab: # kerf correction + gapWidth-=correctionLocal + tabWidth+=correctionLocal + first=correctionLocal/2 + else: + gapWidth+=correctionLocal + tabWidth-=correctionLocal + first=-correctionLocal/2 + + s=[] + firstVec=0; secondVec=tabVec + if gap: + secondVec *= 2 + dirxN=0 if dirx else 1 # used to select operation on x or y + diryN=0 if diry else 1 + (Vx,Vy)=(rx+sox*thickness,ry+soy*thickness) + s='M '+str(Vx)+','+str(Vy)+' ' + + if dirxN: Vy=ry # set correct line start + if diryN: Vx=rx + + if isLongSide > 0: #LongSide is a side without tabs for a portion. + length = tmpLength + divs=int((Z/2)/nomTab) + if not divs%2: divs-=1 + divs = float(divs) + + # generate line as tab or hole using: + # last co-ord:Vx,Vy ; tab dir:tabVec ; direction:dirx,diry ; thickness:thickness + # divisions:divs ; gap width:gapWidth ; tab width:tabWidth + for n in range(1,int(divs)): + if n%2: + Vx=Vx+dirx*gapWidth+dirxN*firstVec+first*dirx + Vy=Vy+diry*gapWidth+diryN*firstVec+first*diry + s+='L '+str(Vx)+','+str(Vy)+' ' + Vx=Vx+dirxN*secondVec + Vy=Vy+diryN*secondVec + s+='L '+str(Vx)+','+str(Vy)+' ' + else: + Vxs = Vx + Vys = Vy + Vx=Vx+dirx*tabWidth+dirxN*firstVec + Vy=Vy+diry*tabWidth+diryN*firstVec + s+='L '+str(Vx)+','+str(Vy)+' ' + Vx=Vx+dirxN*secondVec + Vy=Vy+diryN*secondVec + s+='L '+str(Vx)+','+str(Vy)+' ' + if thumbTab: + drawS(box(Vxs,Vys,Vx,Vy)) + (secondVec,firstVec)=(-secondVec,-firstVec) # swap tab direction + first=0 + if not truncate: + s+='L '+str(rx+eox*thickness+dirx*length)+','+str(ry+eoy*thickness+diry*length)+' ' + else: #Truncate specifies that a side is incomplete in preperation for a curve + s+='L '+str(rx+eox*thickness+dirx*(length/2))+','+str(ry+eoy*thickness+diry*(length/2))+' ' + return s + +#God class. Makes poor design, but not much object oriented in this guy... +class BoxMakerLivingHinge(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--unit',default='mm',help='Measure Units') + pars.add_argument('--inside',type=int,default=0,help='Int/Ext Dimension') + pars.add_argument('--length',type=float,default=100,help='Length of Box') + pars.add_argument('--width',type=float,default=100,help='Width of Box') + pars.add_argument('--height',type=float,default=100,help='Height of Box') + pars.add_argument('--tab',type=float,default=25,help='Nominal Tab Width') + pars.add_argument('--equal',type=int,default=0,help='Equal/Prop Tabs') + pars.add_argument('--thickness',type=float,default=10,help='Thickness of Material') + pars.add_argument('--kerf',type=float,default=0.5,help='Kerf (width) of cut') + pars.add_argument('--clearance',type=float,default=0.01,help='Clearance of joints') + pars.add_argument('--style',type=int,default=25,help='Layout/Style') + pars.add_argument('--spacing',type=float,default=25,help='Part Spacing') + pars.add_argument('--hingeOpt',type=int,default=0,help='Hinge type') + pars.add_argument('--hingeThick',type=float,default=0,help='Hinge thickness') + pars.add_argument('--thumbTab',default=0,help='Add a thumb tab') + + """ + Traditional multi-slit design. + Sx, Sy : Start X, Y (pixels, not user units) + Ex, Ey : End X, Y (pixels, not user units) + space : gap between slots in the X direction, in user specified units (IE: wood between two rows of slots) + solidGap : gap between slots in the Y direction, in user specified units (IE: how much wood is left between 2 or 3 cuts) + """ + def livingHinge2(self, Sx, Sy, Ex, Ey, space = 2, solidGap = 4): + + space = self.svg.unittouu( str(space) + unit ) + solidGap = self.svg.unittouu( str(solidGap) + unit ) + Sy += thickness + Ey -= thickness + + height = Ey - Sy + + width = Ex - Sx + # inkex.utils.debug(width) + horizontalSlots = int(round(width / space)) + # inkex.utils.debug(horizontalSlots) + if horizontalSlots % 2 and horizontalSlots != 1: + horizontalSlots-=1 # make it even so you end with an interior slot + # inkex.utils.debug(horizontalSlots) + space = width / horizontalSlots + + grp_name = 'Living Hinge' + grp_attribs = {inkex.addNS('label','inkscape'):grp_name } + grp = etree.SubElement(parent, 'g', grp_attribs)#the group to put everything in + + for n in range(0,horizontalSlots+1): + if n%2: #odd, exterior slot (slot should go all the way to the part edge) + draw_SVG_line(Sx + (space * n), Sy, Sx + (space * n), Sy+(height/4)-(solidGap/2), grp) + draw_SVG_line(Sx + (space * n), Sy+(height/4)+(solidGap/2), Sx + (space * n), Ey-(height/4)-(solidGap/2), grp) + draw_SVG_line(Sx + (space * n), Ey-(height/4)+(solidGap/2), Sx + (space * n), Ey, grp) + + else: + #even, interior slot (slot shoud not touch edge of part) + draw_SVG_line(Sx + (space * n), Sy+solidGap, Sx + (space * n), Sy+(height/2)-(solidGap/2), grp) + draw_SVG_line(Sx + (space * n), Ey-(height/2)+(solidGap/2), Sx + (space * n), Ey-solidGap, grp) + + """ + The sprial based designs are built from multiple calls of this function. + Sx, Sy : Start X, Y (pixels, not user units) + Ex, Ey : End X, Y (pixels, not user units) + reverse : specifies the spin of the spiral (1 = outer spiral is counterclockwise, -1 otherwise) + space : gap between slots, in user specified units (IE: how thick the wood remainder is) + """ + def livingHinge3(self, Sx, Sy, Ex, Ey, reverse = 1, space = 2): + space = self.svg.unittouu( str(space) + unit ) + + height = (Ey - Sy) + + width = (Ex - Sx) + + horizontalSlots = int(math.floor(height / (space))) + if not horizontalSlots%2: horizontalSlots-=1 # make it odd otherwise the below division will result in an outer cut too thin + + space = (height / horizontalSlots) + + horizontalSlots = int(round(horizontalSlots * 1/2)) #We do 2 passes per render, so divide slots requirement in half + + grp_name = 'Living Hinge' + grp_attribs = {inkex.addNS('label','inkscape'):grp_name } + grp = etree.SubElement(parent, 'g', grp_attribs)#the group to put everything in + + centerX = Sx + (width/2) + centerY = Sy + (height/2) + + for n in range(0,horizontalSlots): + newX = (((space/2) + (space*n)) * reverse) + draw_SVG_line((centerX - newX), centerY + (space/2) + (space * n), (centerX - newX ), centerY - (space * 1.5) - (space * n), grp) + if horizontalSlots - 1 != n: #Last line in center should be omited + draw_SVG_line((centerX - (space + (space/2 * -reverse)) - (space*n) ), centerY - (space * 1.5) - (space * n), (centerX + (space + (space/2 * reverse)) + (space*n) ), centerY - (space * 1.5) - (space * n), grp) + + draw_SVG_line((centerX + newX ), centerY - (space/2) - (space * n), (centerX + newX ), centerY + (space * 1.5) + (space * n), grp) + if horizontalSlots - 1 != n: #Last line in center should be omited + draw_SVG_line((centerX + (space + (space/2 * -reverse)) + (space*n) ), centerY + (space * 1.5) + (space * n), (centerX - (space + (space/2 * reverse)) - (space*n) ), centerY + (space * 1.5) + (space * n), grp) + + """ + The snake based designs are built from multiple calls of this function. + Sx, Sy : Start X, Y (pixels, not user units) + Ex, Ey : End X, Y (pixels, not user units) + rotate : False means the traditional flexable design (cuts are prependuclar to long sides). True rotates 90 degrees. + mirror : mirror inverts the left and right slots, used for inverting during double design + space : gap between adjecent slots, in user specified units (IE: wood between two rows of slots, X if rotate is false, Y if true) + solidGap : gap between slot and edge, in user specified units (IE: how much wood is left between cut and edge, Y if rotate is false, X if true) + """ + def livingHinge4(self, Sx, Sy, Ex, Ey, rotate = False, mirror = 0, space = 2, solidGap = 5): + + space = self.svg.unittouu( str(space) + unit ) + solidGap = self.svg.unittouu( str(solidGap) + unit ) + Sy += thickness + Ey -= thickness + + height = Ey - Sy + width = Ex - Sx + + if not rotate: + horizontalSlots = int(round(width / space)) + space = width / horizontalSlots + skew = 1 #Paint extra lines at the start and end because in this direction there are no existing lines already + else: + horizontalSlots = int(round(height / space)) + if not horizontalSlots%2: horizontalSlots-=1 #make sure we always end on the same side, otherwise we'll cut off the last tooh + space = height / horizontalSlots + skew = 0 #Don't paint the first and last lines, as they're on the cut already, and double cuts on a laser are messy + + grp_name = 'Living Hinge' + grp_attribs = {inkex.addNS('label','inkscape'):grp_name } + grp = etree.SubElement(parent, 'g', grp_attribs)#the group to put everything in + + for n in range(1 - skew,horizontalSlots + skew): + if not rotate: + if (n+mirror)%2: + draw_SVG_line(Sx + (space * n), Sy + solidGap, Sx + (space * n), Ey, grp) + else: + draw_SVG_line(Sx + (space * n), Sy, Sx + (space * n), Ey - solidGap, grp) + else: + if (n+mirror)%2: + draw_SVG_line(Sx + solidGap, Sy + (space * n), Ex, Sy + (space * n), grp) + else: + draw_SVG_line(Sx, Sy + (space * n), Ex - solidGap, Sy + (space * n), grp) + if rotate and not mirror: + draw_SVG_line(Sx, Sy, Sx, Ey - space, grp) + draw_SVG_line(Ex, Sy + space, Ex, Ey, grp) + elif mirror: + draw_SVG_line(Sx, Sy + space, Sx, Ey, grp) + draw_SVG_line(Ex, Sy, Ex, Ey - space, grp) + + def effect(self): + global parent,nomTab,equalTabs,thickness,correction, Z, unit + + # Get access to main SVG document element and get its dimensions. + svg = self.document.getroot() + + # Get the attibutes: + widthDoc = self.svg.unittouu(svg.get('width')) + heightDoc = self.svg.unittouu(svg.get('height')) + + # Create a new layer. + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'newlayer') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + + parent=self.svg.get_current_layer() + + # Get script's option values. + unit=self.options.unit + inside=self.options.inside + X = self.svg.unittouu( str(self.options.length) + unit ) + Y = self.svg.unittouu( str(self.options.width) + unit ) + Z = self.svg.unittouu( str(self.options.height) + unit ) + thickness = self.svg.unittouu( str(self.options.thickness) + unit ) + nomTab = self.svg.unittouu( str(self.options.tab) + unit ) + equalTabs=self.options.equal + kerf = self.svg.unittouu( str(self.options.kerf) + unit ) + clearance = self.svg.unittouu( str(self.options.clearance) + unit ) + layout=self.options.style + spacing = self.svg.unittouu( str(self.options.spacing) + unit ) + ring = 1 + hingeOpt = self.options.hingeOpt + hingeThick = self.options.hingeThick + thumbTab = self.options.thumbTab + + if inside: # if inside dimension selected correct values to outside dimension + X+=thickness*2 + Y+=thickness*2 + Z+=thickness*2 + + correction=kerf-clearance + + # check input values mainly to avoid python errors + # TODO restrict values to *correct* solutions + # TODO -- Do what the origial author suggested I do. QUALITY! + error=0 + + if min(X,Y,Z)==0: + inkex.errormsg('Error: Dimensions must be non zero') + error=1 + if max(X,Y,Z)>max(widthDoc,heightDoc)*10: # crude test + inkex.errormsg('Error: Dimensions Too Large') + error=1 + if min(X,Y,Z)<3*nomTab: + inkex.errormsg('Error: Tab size too large') + error=1 + if nomTabmin(X,Y,Z)/3: # crude test + inkex.errormsg('Error: Material too thick') + error=1 + if correction>min(X,Y,Z)/3: # crude test + inkex.errormsg('Error: Kerf/Clearence too large') + error=1 + if spacing>max(X,Y,Z)*10: # crude test + inkex.errormsg('Error: Spacing too large') + error=1 + if spacing 0=holes 1=tabs + if layout==0: # Diagramatic Layout TRBL + pieces=[ #center low row + [(2,0,0,1),(3,0,1,1),X,Z,0b1000,-2], + #left middle row + [(1,0,0,0),(2,0,0,1),Z,Y,0b1111,0], + #center middle row + [(2,0,0,1),(2,0,0,1),X,Y,0b0000,0], + #right middle row + [(3,1,0,1),(2,0,0,1),Z+(EllipseCircumference(X/2, Z/2)/4)+thickness,Y,0b1011,1], + #center top row + [(2,0,0,1),(1,0,0,0),X,Z,0b0010,-1]] + elif layout==1: # Inline(compact) Layout + pieces=[#Base + [(1,0,0,0),(1,0,0,0),X,Y,0b0000,0], + #Front panel + [(2,1,0,0),(1,0,0,0),Z,Y,0b1111,0], + #Sides with curves + [(3,1,0,1),(1,0,0,0),X,Z,0b1000,-2], + [(4,2,0,1),(1,0,0,0),X,Z,0b0010,-1], + #Long piece w/ hinge + [(5,3,0,1),(1,0,0,0),Z+(EllipseCircumference(X/2, Z/2)/4)+thickness,Y,0b1011,1] + ] + + for piece in pieces: # generate and draw each piece of the box + (xs,xx,xy,xz)=piece[0] + (ys,yx,yy,yz)=piece[1] + x=xs*spacing+xx*X+xy*Y+xz*Z # root x co-ord for piece + y=ys*spacing+yx*X+yy*Y+yz*Z # root y co-ord for piece + dx=piece[2] + dy=piece[3] + tabs=piece[4] + a=tabs>>3&1; b=tabs>>2&1; c=tabs>>1&1; d=tabs&1 # extract tab status for each side. It's a nasty packed binary flag format, but I'm not fixing it now. + longSide = 0 + shortSide = 0 + skew = 0 + + if piece[5] == 1: + longSide = Z + elif piece[5] < 0: + shortSide = Z + + # generate and draw the sides of each piece + if piece[5] != -1: + drawS(side(x,y,d,a,-b,a,-thickness if a else thickness,dx,1,0,a,longSide)) # side a (top) + else: + drawS(side(x,y,d,a,-b,a,-thickness if a else thickness,dx/2,1,0,a,-1)) # side a (top) when the top participates in a curve + + if piece[5] != -1 and piece[5] != 1: + drawS(side(x+dx+skew,y,-b,a,-b,-c,thickness if b else -thickness,dy,0,1,b,shortSide, False if piece[5] != -2 else True, False if piece[5] != 1 else True)) # side b (right) except for side with living hinge or curves + elif piece[5] == -1: + drawS(side(x+dx+skew,y+dy,-b,-c,-b,a,thickness if b else -thickness,dy,0,-1,b,shortSide, True)) # side b (right) when the right side participates in a curve + else: + #It is a cardnal sin to compare floats, so assume <0.0005 is 0 since the front end only gives you 3 digits of precision + if float(0.0005) <= float(self.options.thumbTab): + side(x+dx+skew,y,-b,a,-b,-c,thickness if b else -thickness,dy,0,1,b,shortSide, False, True, True) #The one call to side that doesn't actually draw. Instead, side draws boxes on its own + drawS(box(x+dx+skew,y+thickness,x+dx+skew+self.svg.unittouu( thumbTab + unit ),y+dy-thickness, True)) + else: + drawS(side(x+dx+skew,y,-b,a,-b,-c,thickness if b else -thickness,dy,0,1,b,shortSide, False, True)) #side b (right) on the right side of a living hinge + + + if piece[5] != -2: + drawS(side(x,y+dy,d,-c,-b,-c,thickness if c else -thickness,dx,1,0,c,longSide)) # side c (bottom) + else: + drawS(side(x,y+dy,d,-c,-b,-c,thickness if c else -thickness,dx/2,1,0,c,-1)) # side c (bottom) when the bottom participates in a curve + + drawS(side(x,y+dy,d,-c,d,a,-thickness if d else thickness,dy,0,-1,d,0)) # side d (left) + + if piece[5] < 0: + draw_SVG_ellipse(x+(dx/2), y+(dy/2), (dx/2), (dy/2), [(1.5*math.pi), 0] if piece[5] == -1 else [0, 0.5*math.pi]) #draw the curve + + if piece[5] == 1: #Piece should contain a living hinge + if hingeOpt == 0: #Traditional parallel slit + self.livingHinge2(x+(Z/2), y, x+(Z/2)+(EllipseCircumference(X/2, Z/2)/4), y + (dy), hingeThick) + elif hingeOpt == 1: #Single spiral + if not inside: + self.livingHinge3(x+(Z/2), y+thickness, x+(Z/2)+(EllipseCircumference(X/2, Z/2)/4), y + dy - thickness, 1, hingeThick) + else: + self.livingHinge3(x+(Z/2), y + 2*thickness, x+(Z/2)+(EllipseCircumference(X/2, Z/2)/4), y + dy - 2*thickness, 1, hingeThick) + + elif hingeOpt == 2: #Double spiral + self.livingHinge3(x+(Z/2), y+thickness, x+(Z/2)+(EllipseCircumference(X/2, Z/2)/4), y + (dy/2), 1, hingeThick) + self.livingHinge3(x+(Z/2), y+(dy/2), x+(Z/2)+(EllipseCircumference(X/2, Z/2)/4), y + dy - thickness, -1, hingeThick) + elif hingeOpt == 3 or hingeOpt == 4: #Both snake-based designs + self.livingHinge4(x+(Z/2), y, x+(Z/2)+(EllipseCircumference(X/2, Z/2)/4), y + (dy), False if hingeOpt == 3 else True, 0, hingeThick) + elif hingeOpt == 5: #Double snake design + self.livingHinge4(x+(Z/2), y, x+(Z/2)+EllipseCircumference(X/2, Z/2)/4, y + (dy/2) + thickness, True, 0, hingeThick) #Add thickness as a cheat so design 4 doesn't have to know if it's a short or long variant + self.livingHinge4(x+(Z/2), y + (dy/2) - thickness, (x+(Z/2)+(EllipseCircumference(X/2, Z/2)/4)), y + dy, True, 1, hingeThick) + +if __name__ == '__main__': + BoxMakerLivingHinge().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.inx b/extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.inx new file mode 100644 index 00000000..f3da275f --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.inx @@ -0,0 +1,74 @@ + + + Box Maker - Mehr Boxes + fablabchemnitz.de.box_maker_mehr_boxes + + + + + + + + + + + + + 100.0 + 100.0 + 100.0 + + + + + + 4.0 + 3 + 3 + 3 + + 4.0 + 0.2 + 1.0 + + + true + true + true + true + true + true + + + + 1 + + + + + + 20.0;40.0 + false + + 1 + + + + + + 20.0;40.0 + false + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.py b/extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.py new file mode 100644 index 00000000..04714688 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.py @@ -0,0 +1,188 @@ +#!/usr/bin/env python3 +''' +Generates Inkscape SVG file containing box components needed to +laser cut a tabbed construction box taking kerf into account + +Copyright (C) 2018 Thore Mehr thore.mehr@gmail.com +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +''' +__version__ = "1.0" ### please report bugs, suggestions etc to bugs@twot.eu ### + +import math +import inkex +import mehr_plate + +class mehr_box_maker(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--page',default='page_1') + pars.add_argument('--unit',default='mm') + pars.add_argument('--inside') + pars.add_argument('--X_size',type=float,default='0.0') + pars.add_argument('--Y_size',type=float,default='0.0') + pars.add_argument('--Z_size',type=float,default='0.0') + pars.add_argument('--tab_mode',default='number') + pars.add_argument('--tab_size',type=float,default='0.0') + pars.add_argument('--X_tabs',type=int,default='0') + pars.add_argument('--Y_tabs',type=int,default='0') + pars.add_argument('--Z_tabs',type=int,default='0') + pars.add_argument('--d_top',type=inkex.Boolean,default=True) + pars.add_argument('--d_bottom',type=inkex.Boolean,default=True) + pars.add_argument('--d_left',type=inkex.Boolean,default=True) + pars.add_argument('--d_right',type=inkex.Boolean,default=True) + pars.add_argument('--d_front',type=inkex.Boolean,default=True) + pars.add_argument('--d_back',type=inkex.Boolean,default=True) + pars.add_argument('--thickness',type=float,default=4,help='Thickness of Material') + pars.add_argument('--kerf',type=float,default=0.2) + pars.add_argument('--spaceing',type=float,default=1) + pars.add_argument('--X_compartments',type=int,default=1) + pars.add_argument('--X_divisions') + pars.add_argument('--X_mode') + pars.add_argument('--X_fit',type=inkex.Boolean) + pars.add_argument('--Y_compartments',type=int,default=1) + pars.add_argument('--Y_divisions') + pars.add_argument('--Y_mode') + pars.add_argument('--Y_fit',type=inkex.Boolean) + + def effect(self): + thickness=self.svg.unittouu(str(self.options.thickness)+self.options.unit) + kerf=self.svg.unittouu(str(self.options.kerf)+self.options.unit)/2#kerf is diameter in UI and radius in lib + + spaceing=self.svg.unittouu(str(self.options.spaceing)+self.options.unit) + XYZ=[self.svg.unittouu(str(self.options.X_size)+self.options.unit),self.svg.unittouu(str(self.options.Y_size)+self.options.unit),self.svg.unittouu(str(self.options.Z_size)+self.options.unit)] + + if(self.options.inside=='0'):#if the sizes are outside sizes reduce the size by thickness if the side gets drawn + draw=(self.options.d_left,self.options.d_front,self.options.d_top,self.options.d_right,self.options.d_back,self.options.d_bottom)#order in XYZXYZ + for i in range(6): + XYZ[i%3]-=(thickness if draw[i] else 0)#remove a thickness if drawn + +#compartments on the X axis, devisons in Y direction + X_divisions_distances=[] + if (self.options.X_compartments>1): + if (self.options.X_mode=='even'):#spliting in even compartments + X_divisions_distances=[((XYZ[0])-(self.options.X_compartments-1)*(thickness))/self.options.X_compartments] + else: + for dist in self.options.X_divisions.replace(",",".").split(";"):#fixing seperator, spliting string + X_divisions_distances+=[float(self.svg.unittouu(dist+self.options.unit))]#translate into universal units + X_divisions_distances[0]+=kerf#fixing for kerf + if self.options.X_mode!='absolut':#for even and relative fix list lenght and offset compartments to absolut distances + while (len(X_divisions_distances)XYZ[0])and not self.options.X_fit: + inkex.errormsg("X Axis compartments outside of plate") + if self.options.X_fit: + XYZ[0]=X_divisions_distances[-1]-kerf + X_divisions_distances=X_divisions_distances[0:-1]#cutting the last of + + Y_divisions_distances=[] + if (self.options.Y_compartments>1): + if (self.options.Y_mode=='even'):#spliting in even compartments + Y_divisions_distances=[((XYZ[1])-(self.options.Y_compartments-1)*(thickness))/self.options.Y_compartments] + else: + for dist in self.options.Y_divisions.replace(",",".").split(";"):#fixing seperator, spliting string + Y_divisions_distances+=[float(self.svg.unittouu(dist+self.options.unit))]#translate into universal units + Y_divisions_distances[0]+=kerf#fixing for kerf + if self.options.Y_mode!='absolut':#for even and relative fix list lenght and offset compartments to absolut distances + while (len(Y_divisions_distances)XYZ[1])and not self.options.X_fit: + inkex.errormsg("Y Axis compartments outside of plate") + if self.options.Y_fit: + XYZ[1]=Y_divisions_distances[-1]-kerf + Y_divisions_distances=Y_divisions_distances[0:-1]#cutting the last of + + if (self.options.tab_mode=='number'):#fixed number of tabs + Tabs_XYZ=[self.options.X_tabs,self.options.Y_tabs,self.options.Z_tabs] + else:#compute apropriate number of tabs for the edges + tab_size=float(self.svg.unittouu(str(self.options.tab_size)+self.options.unit)) + Tabs_XYZ=[max(1,int(XYZ[0]/(tab_size))/2),max(1,int(XYZ[1]/(tab_size))/2),max(1,int(XYZ[2]/(tab_size))/2)] + +#top and bottom plate + tabs_tb=(Tabs_XYZ[0] if self.options.d_back else 0,Tabs_XYZ[1] if self.options.d_right else 0,Tabs_XYZ[0] if self.options.d_front else 0,Tabs_XYZ[1] if self.options.d_left else 0) + start_tb=(True if self.options.d_back else False,True if self.options.d_right else False,True if self.options.d_front else False,True if self.options.d_left else False) + Plate_tb=mehr_plate.Mehr_plate((XYZ[0],XYZ[1]),tabs_tb,start_tb,thickness,kerf)#top and bottom plate + for d in X_divisions_distances: + Plate_tb.add_holes('Y',d,Tabs_XYZ[1]) + for d in Y_divisions_distances: + Plate_tb.add_holes('X',d,Tabs_XYZ[0]) +#left and right plate + tabs_lr=(Tabs_XYZ[2] if self.options.d_back else 0,Tabs_XYZ[1] if self.options.d_top else 0,Tabs_XYZ[2] if self.options.d_front else 0,Tabs_XYZ[1] if self.options.d_bottom else 0) + start_lr=(True if self.options.d_back else False,False,True if self.options.d_front else False,False) + Plate_lr=mehr_plate.Mehr_plate((XYZ[2],XYZ[1]),tabs_lr,start_lr,thickness,kerf)#left and right plate + for d in Y_divisions_distances: + Plate_lr.add_holes('X',d,Tabs_XYZ[2]) +#front and back plate + tabs_fb=(Tabs_XYZ[0] if self.options.d_top else 0,Tabs_XYZ[2] if self.options.d_right else 0,Tabs_XYZ[0] if self.options.d_bottom else 0,Tabs_XYZ[2] if self.options.d_left else 0)# + start_fb=(False,False,False,False) + Plate_fb=mehr_plate.Mehr_plate((XYZ[0],XYZ[2]),tabs_fb,start_fb,thickness,kerf)#font and back plate + for d in X_divisions_distances: + Plate_fb.add_holes('Y',d,Tabs_XYZ[2]) + + Plate_xc=mehr_plate.Mehr_plate((XYZ[2],XYZ[1]),tabs_lr,(False,False,False,False),thickness,kerf) + for d in Y_divisions_distances: + Plate_xc.holes+=[Plate_xc.rect([0,Plate_xc.corner_offset[1]+d+kerf],[Plate_xc.AABB[0]/2-kerf,thickness-2*kerf])] + + Plate_yc=mehr_plate.Mehr_plate((XYZ[0],XYZ[2]),tabs_fb,(False,False,False,False),thickness,kerf) + for d in X_divisions_distances: + Plate_yc.holes+=[Plate_yc.rect([Plate_yc.corner_offset[0]+d+kerf,0],[thickness-2*kerf,Plate_yc.AABB[1]/2-kerf])] + + + X_offset=0 + Y_offset=0 + if(self.options.d_top): + Plate_tb.draw([X_offset+spaceing,spaceing],["#000000","#ff0000"],self.svg.get_current_layer())#drawing a plate using black for the outline and red for holes + X_offset+=Plate_tb.AABB[0]+spaceing + Y_offset=max(Y_offset,Plate_tb.AABB[1]) + if(self.options.d_bottom): + Plate_tb.draw([X_offset+spaceing,spaceing],["#000000","#ff0000"],self.svg.get_current_layer()) + X_offset+=Plate_tb.AABB[0]+spaceing + Y_offset=max(Y_offset,Plate_tb.AABB[1]) + + if(self.options.d_left): + Plate_lr.draw([X_offset+spaceing,spaceing],["#000000","#ff0000"],self.svg.get_current_layer()) + X_offset+=Plate_lr.AABB[0]+spaceing + Y_offset=max(Y_offset,Plate_lr.AABB[1]) + if(self.options.d_right): + Plate_lr.draw([X_offset+spaceing,spaceing],["#000000","#ff0000"],self.svg.get_current_layer()) + X_offset+=Plate_lr.AABB[0]+spaceing + Y_offset=max(Y_offset,Plate_lr.AABB[1]) + + if(self.options.d_front): + Plate_fb.draw([X_offset+spaceing,spaceing],["#000000","#ff0000"],self.svg.get_current_layer()) + X_offset+=Plate_fb.AABB[0]+spaceing + Y_offset=max(Y_offset,Plate_fb.AABB[1]) + if(self.options.d_back): + Plate_fb.draw([X_offset+spaceing,spaceing],["#000000","#ff0000"],self.svg.get_current_layer()) + X_offset+=Plate_fb.AABB[0]+spaceing + Y_offset=max(Y_offset,Plate_fb.AABB[1]) + X_offset=0 + for i in range(self.options.X_compartments-1): + Plate_xc.draw([X_offset+spaceing,spaceing+Y_offset],["#000000","#ff0000"],self.svg.get_current_layer()) + X_offset+=Plate_xc.AABB[0]+spaceing + X_offset=0 + Y_offset+=spaceing+Plate_xc.AABB[1] + for i in range(self.options.Y_compartments-1): + Plate_yc.draw([X_offset+spaceing,spaceing+Y_offset],["#000000","#ff0000"],self.svg.get_current_layer()) + X_offset+=Plate_yc.AABB[0]+spaceing + +if __name__ == '__main__': + mehr_box_maker().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_mehr_boxes/mehr_plate.py b/extensions/fablabchemnitz/box_maker_mehr_boxes/mehr_plate.py new file mode 100644 index 00000000..86adf1bf --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_mehr_boxes/mehr_plate.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +__version__ = "1.0" +import inkex, math +from lxml import etree + +class Mehr_plate(): + def __init__(self,size,tabs,starts,thickness,kerf): + #general note svg pos x is right, pos y is down + self.size=size#(X,Y) inner size + self.tabs=tabs#number of tabs (top,right,bottom,left) + self.starts=starts#4 elements array of boolean if true start=high (top,right,bottom,left) + self.kerf=kerf#number, beam radius + self.thickness=thickness#number + self.holes=[]#list of SVG Strings + self.offset=[0.0 if self.starts[3] or self.tabs[3]==0 else self.thickness,0.0 if self.starts[0] or self.tabs[0]==0 else self.thickness]#set global offset so that AABB is at position (0,0) + self.corner_offset=[0.0 if (self.tabs[3]==0 and not self.starts[3]) else self.thickness,0.0 if (self.tabs[0]==0 and not self.starts[0]) else self.thickness] + self.AABB=[self.size[0]+(0.0 if (self.tabs[1]==0 and not self.starts[1]) else self.thickness)+self.corner_offset[0]+2*self.kerf, + self.size[1]+(0.0 if (self.tabs[2]==0 and not self.starts[2]) else self.thickness)+self.corner_offset[1]+2*self.kerf] + + points=[] + for i in range(4): + points+=self.rotate(self.side(i),i*math.pi/2)#creating the points of the four sides and rotate them in the radiant system + self.SVG_String=self.to_SVG_String(points) + #self.AABB=[self.size[0]+2*self.thickness,0] + + def side(self,index): #creating a side as a list of relative points. total lenght should be side lenght+2*kerf. + points=[[2*self.kerf,0.0]] if not self.starts[index] else [] #if this one starts low add two kerf + if (self.starts[(index-1)%4]):#if the privious one ended high add a thickness + points+=[[self.thickness,0.0]] + if self.tabs[index]>0: + parts=self.tabs[index]*2+1#number of parts= number of tabs+number of spaces between tabs +1 + tab_state=self.starts[index]#makes a high part if true, low else + for i in range(parts):#creates the side + points+=[[(self.size[(index%2)]/parts)+2*self.kerf,0.0]] if (tab_state) else [[(self.size[index%2]/parts)-2*self.kerf,0.0]]#a longer part for tabs and a shorter one for the spaces in between + if not (i==parts-1): + points+=[[0.0,self.thickness]] if (tab_state) else [[0.0,-self.thickness]]# if high go down else go up + tab_state=not tab_state #invert tab_state + else: + points+=[[self.size[index%2]+2*self.kerf,0.0]] if (self.starts[index]) else [[self.size[index%2]-2*self.kerf,0.0]]#single line if there are no tabs + if(self.starts[(index+1)%len(self.starts)]):#if the next one starts high add a thickness + points+=[[self.thickness,0.0]] + if not self.starts[index]:#if this one starts and so also ends low add 2 kerf + points+=[[2*self.kerf,0.0]] + return points + + def to_SVG_String(self,PointList):#creates a SVG_String as connected points from list so that AABB upper left corner is at 0,0 + s="M"+str(self.offset[0])+','+str(self.offset[1]) + for i in range(len(PointList)): + s+="l"+str(PointList[i][0])+","+str(PointList[i][1]) + return s + + def rotate(self,pointlist,angle):#rotate all points by angle in 2*pi system + matrix=[[math.cos(angle),-math.sin(angle)],[math.sin(angle),math.cos(angle)]] + ret=[] + for i in range(len(pointlist)): + ret+=[[pointlist[i][0]*matrix[0][0]+pointlist[i][1]*matrix[0][1],pointlist[i][0]*matrix[1][0]+pointlist[i][1]*matrix[1][1]]] + return ret + + def rect(self,pos,size,center=[False,False]):#SVG_String for a rectangle + SVG_String="M"+str(pos[0]-((size[0]/2)if center[0]else 0))+','+str(pos[1]-((size[1]/2)if center[1]else 0)) + SVG_String+='h'+str(size[0])+'v'+str(size[1])+'h'+str(-size[0])+'z' + return SVG_String + + def add_holes(self,direction,position,number_of,center=False): + SVG_String="" + side=self.size[0] if direction=='X' else self.size[1]#geting size of the relevant side + hole_offset=(side/(2*number_of+1))#offset each hole + holesize=[hole_offset-2*self.kerf,self.thickness-2*self.kerf]#size of the holes + for i in range(number_of):#d=(2*i+1)*hole_offset+self.kerf + if direction=='X': + SVG_String+=self.rect([self.corner_offset[0]+self.kerf+(2*i+1)*hole_offset+self.kerf,self.corner_offset[1]+self.kerf+position],holesize,[False,center]) + else: + SVG_String+=self.rect([self.corner_offset[0]+self.kerf+position,(2*i+1)*hole_offset+self.kerf+self.corner_offset[1]+self.kerf],holesize[::-1],[center,False])#reversed axis +# inkex.errormsg(SVG_String) + self.holes+=[SVG_String] + + def draw(self,position,colors,parent): + if len(self.holes)>0:#creating a new group if there are any holes to be drawn + grp_name = 'Group' + grp_attribs = {inkex.addNS('label','inkscape'):grp_name} + parent = etree.SubElement(parent, 'g', grp_attribs)#the group to put everything in + for s in self.holes: + self.draw_SVG_String(s,colors[1],parent,position)#drawing the holes if there are any + self.draw_SVG_String(self.SVG_String,colors[0],parent,position)#drawing the plate + + def draw_SVG_String(self,SVG_String,color,parent,position=(0,0)):# Adding an SVG_String to the drawing + name='part' + transform='translate('+str(position[0])+','+str(position[1])+')' + style = { 'stroke': color, 'fill': 'none','stroke-width':str(max(self.kerf*2,0.2))} + drw = {'style':str(inkex.Style(style)),'transform':transform, inkex.addNS('label','inkscape'):name,'d':SVG_String} + etree.SubElement(parent, inkex.addNS('path','svg'), drw ) + return \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_path_to_flex/.gitignore b/extensions/fablabchemnitz/box_maker_path_to_flex/.gitignore new file mode 100644 index 00000000..e394608d --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_path_to_flex/.gitignore @@ -0,0 +1 @@ +/DebugPath2Flex.txt diff --git a/extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.inx b/extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.inx new file mode 100644 index 00000000..7f2acae2 --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.inx @@ -0,0 +1,33 @@ + + + Box Maker - Path To Flex + fablabchemnitz.de.box_maker_path_to_flex + + + + + + + + + + + + + 3.0 + 50.0 + 2 + 1000.0 + true + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.py b/extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.py new file mode 100644 index 00000000..50e1ea8a --- /dev/null +++ b/extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.py @@ -0,0 +1,1354 @@ +#!/usr/bin/env python3 + + +# paths2flex.py + +# This is an Inkscape extension to generate boxes with sides as flex which follow a path selected in inkscape +# The Inkscape objects must first be converted to paths (Path > Object to Path). +# Some paths may not work well -- if the curves are too small for example. + +# Written by Thierry Houdoin (thierry@fablab-lannion.org), december 2018 +# This work is largely inspred from path2openSCAD.py, written by Daniel C. Newman + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import math +import os.path +import inkex +import re +from lxml import etree +from inkex import bezier +from inkex.paths import Path, CubicSuperPath + +DEFAULT_WIDTH = 100 +DEFAULT_HEIGHT = 100 + +objStyle = str(inkex.Style( + {'stroke': '#000000', + 'stroke-width': 0.1, + 'fill': 'none' + })) + +objStyleStart = str(inkex.Style( + {'stroke': '#FF0000', + 'stroke-width': 0.1, + 'fill': 'none' + })) + + +class inkcape_draw_cartesian: + def __init__(self, Offset, group): + self.offsetX = Offset[0] + self.offsetY = Offset[1] + self.Path = '' + self.group = group + + def MoveTo(self, x, y): + #Retourne chaine de caractères donnant la position du point avec des coordonnées cartesiennes + self.Path += ' M ' + str(round(x-self.offsetX, 3)) + ',' + str(round(y-self.offsetY, 3)) + + def LineTo(self, x, y): + #Retourne chaine de caractères donnant la position du point avec des coordonnées cartesiennes + self.Path += ' L ' + str(round(x-self.offsetX, 3)) + ',' + str(round(y-self.offsetY, 3)) + + def Line(self, x1, y1, x2, y2): + #Retourne chaine de caractères donnant la position du point avec des coordonnées cartesiennes + self.Path += ' M ' + str(round(x1-self.offsetX, 3)) + ',' + str(round(y1-self.offsetY, 3)) + ' L ' + str(round(x2-self.offsetX, 3)) + ',' + str(round(y2-self.offsetY, 3)) + + def GenPath(self): + line_attribs = {'style': objStyle, 'd': self.Path} + etree.SubElement(self.group, inkex.addNS('path', 'svg'), line_attribs) + + def GenPathStart(self): + line_attribs = {'style': objStyleStart, 'd': self.Path} + etree.SubElement(self.group, inkex.addNS('path', 'svg'), line_attribs) + + +class Line: + def __init__(self, a, b, c): + self.a = a + self.b = b + self.c = c + def __str__(self): + return "Line a="+str(self.a)+" b="+str(self.b)+" c="+str(self.c) + + def Intersect(self, Line2): + ''' Return the point which is at the intersection between the two lines + ''' + det = Line2.a * self.b - self.a*Line2.b; + if abs(det) < 1e-6: # Line are parallel, return None + return None + return ((Line2.b*self.c - Line2.c*self.b)/det, (self.a*Line2.c - Line2.a*self.c)/det) + + def square_line_distance(self, pt): + ''' + Compute the distance between point and line + Distance between point and line is (a * pt.x + b * pt.y + c)*(a * pt.x + b * pt.y + c)/(a*a + b*b) + ''' + return (self.a * pt[0] + self.b * pt[1] + self.c)*(self.a * pt[0]+ self.b * pt[1] + self.c)/(self.a*self.a + self.b*self.b) + +class Segment(Line): + def __init__(self, A, B): + self.xA = A[0] + self.xB = B[0] + self.yA = A[1] + self.yB = B[1] + self.xm = min(self.xA, self.xB) + self.xM = max(self.xA, self.xB) + self.ym = min(self.yA, self.yB) + self.yM = max(self.yA, self.yB) + Line.__init__(self, A[1] - B[1], B[0] - A[0], A[0] * B[1] - B[0] * A[1]) + + def __str__(self): + return "Segment "+str([A,B])+ " a="+str(self.a)+" b="+str(self.b)+" c="+str(self.c) + + def InSegment(self, Pt): + if Pt[0] < self.xm or Pt[0] > self.xM: + return 0 # Impossible lower than xmin or greater than xMax + if Pt[1] < self.ym or Pt[1] > self.yM: + return 0 # Impossible lower than ymin or greater than yMax + return 1 + + def __str__(self): + return "Seg"+str([(self.xA, self.yA), (self.xB, self.yB)])+" Line a="+str(self.a)+" b="+str(self.b)+" c="+str(self.c) + +def pointInBBox(pt, bbox): + + ''' + Determine if the point pt=[x, y] lies on or within the bounding + box bbox=[xmin, xmax, ymin, ymax]. + ''' + + # if (x < xmin) or (x > xmax) or (y < ymin) or (y > ymax) + if (pt[0] < bbox[0]) or (pt[0] > bbox[1]) or \ + (pt[1] < bbox[2]) or (pt[1] > bbox[3]): + return False + else: + return True + +def bboxInBBox(bbox1, bbox2): + + ''' + Determine if the bounding box bbox1 lies on or within the + bounding box bbox2. NOTE: we do not test for strict enclosure. + + Structure of the bounding boxes is + + bbox1 = [ xmin1, xmax1, ymin1, ymax1 ] + bbox2 = [ xmin2, xmax2, ymin2, ymax2 ] + ''' + + # if (xmin1 < xmin2) or (xmax1 > xmax2) or (ymin1 < ymin2) or (ymax1 > ymax2) + + if (bbox1[0] < bbox2[0]) or (bbox1[1] > bbox2[1]) or \ + (bbox1[2] < bbox2[2]) or (bbox1[3] > bbox2[3]): + return False + else: + return True + +def pointInPoly(p, poly, bbox=None): + + ''' + Use a ray casting algorithm to see if the point p = [x, y] lies within + the polygon poly = [[x1,y1],[x2,y2],...]. Returns True if the point + is within poly, lies on an edge of poly, or is a vertex of poly. + ''' + + if (p is None) or (poly is None): + return False + + # Check to see if the point lies outside the polygon's bounding box + if not bbox is None: + if not pointInBBox(p, bbox): + return False + + # Check to see if the point is a vertex + if p in poly: + return True + + # Handle a boundary case associated with the point + # lying on a horizontal edge of the polygon + x = p[0] + y = p[1] + p1 = poly[0] + p2 = poly[1] + for i in range(len(poly)): + if i != 0: + p1 = poly[i-1] + p2 = poly[i] + if (y == p1[1]) and (p1[1] == p2[1]) and \ + (x > min(p1[0], p2[0])) and (x < max(p1[0], p2[0])): + return True + + n = len(poly) + inside = False + + p1_x,p1_y = poly[0] + for i in range(n + 1): + p2_x,p2_y = poly[i % n] + if y > min(p1_y, p2_y): + if y <= max(p1_y, p2_y): + if x <= max(p1_x, p2_x): + if p1_y != p2_y: + intersect = p1_x + (y - p1_y) * (p2_x - p1_x) / (p2_y - p1_y) + if x <= intersect: + inside = not inside + else: + inside = not inside + p1_x,p1_y = p2_x,p2_y + + return inside + +def polyInPoly(poly1, bbox1, poly2, bbox2): + + ''' + Determine if polygon poly2 = [[x1,y1],[x2,y2],...] + contains polygon poly1. + + The bounding box information, bbox=[xmin, xmax, ymin, ymax] + is optional. When supplied it can be used to perform rejections. + Note that one bounding box containing another is not sufficient + to imply that one polygon contains another. It's necessary, but + not sufficient. + ''' + + # See if poly1's bboundin box is NOT contained by poly2's bounding box + # if it isn't, then poly1 cannot be contained by poly2. + + if (not bbox1 is None) and (not bbox2 is None): + if not bboxInBBox(bbox1, bbox2): + return False + + # To see if poly1 is contained by poly2, we need to ensure that each + # vertex of poly1 lies on or within poly2 + + for p in poly1: + if not pointInPoly(p, poly2, bbox2): + return False + + # Looks like poly1 is contained on or in Poly2 + + return True + +def subdivideCubicPath(sp, flat, i=1): + + ''' + [ Lifted from eggbot.py with impunity ] + + Break up a bezier curve into smaller curves, each of which + is approximately a straight line within a given tolerance + (the "smoothness" defined by [flat]). + + This is a modified version of cspsubdiv.cspsubdiv(): rewritten + because recursion-depth errors on complicated line segments + could occur with cspsubdiv.cspsubdiv(). + ''' + + while True: + while True: + if i >= len(sp): + return + + p0 = sp[i - 1][1] + p1 = sp[i - 1][2] + p2 = sp[i][0] + p3 = sp[i][1] + + b = (p0, p1, p2, p3) + + if bezier.maxdist(b) > flat: + break + + i += 1 + + one, two = bezier.beziersplitatt(b, 0.5) + sp[i - 1][2] = one[1] + sp[i][0] = two[2] + p = [one[2], one[3], two[1]] + sp[i:1] = [p] + +# Second degree equation solver. +# Return a tuple with the two real solutions, raise an error if there is no real solution +def Solve2nd(a, b, c): + delta = b**2 - 4*a*c + if (delta < 0): + print("No real solution") + return none + x1 = (-b + math.sqrt(delta))/(2*a) + x2 = (-b - math.sqrt(delta))/(2*a) + return (x1, x2) + +# Compute distance between two points +def distance2points(x0, y0, x1, y1): + return math.hypot(x0-x1,y0-y1) + +class BoxMakerPathToFlex(inkex.EffectExtension): + + def add_arguments(self, pars): + self.knownUnits = ['in', 'pt', 'px', 'mm', 'cm', 'm', 'km', 'pc', 'yd', 'ft'] + pars.add_argument('--unit', default = 'mm', help = 'Unit, should be one of ') + pars.add_argument('--thickness', type = float, default = '3.0', help = 'Material thickness') + pars.add_argument('--zc', type = float, default = '50.0', help = 'Flex height') + pars.add_argument('--notch_interval', type = int, default = '2', help = 'Interval between notches') + pars.add_argument('--max_size_flex', type = float, default = '1000.0', help = 'Max size of a single band of flex, above this limit it will be cut') + pars.add_argument('--Mode_Debug', type = inkex.Boolean, default = 'false', help = 'Output Debug information in file') + + # Dictionary of paths we will construct. It's keyed by the SVG node + # it came from. Such keying isn't too useful in this specific case, + # but it can be useful in other applications when you actually want + # to go back and update the SVG document + self.paths = {} + + self.flexnotch = [] + # Debug Output file + self.fDebug = None + + # Dictionary of warnings issued. This to prevent from warning + # multiple times about the same problem + self.warnings = {} + + #Get bounding rectangle + self.xmin, self.xmax = (1.0E70, -1.0E70) + self.ymin, self.ymax = (1.0E70, -1.0E70) + self.cx = float(DEFAULT_WIDTH) / 2.0 + self.cy = float(DEFAULT_HEIGHT) / 2.0 + + def unittouu(self, unit): + return inkex.unittouu(unit) + + def DebugMsg(self, s): + if self.fDebug: + self.fDebug.write(s) + + # Generate long vertical lines for flex + # Parameters : StartX, StartY, size, nunmber of lines and +1 if lines goes up and -1 down + def GenLinesFlex(self, StartX, StartY, Size, nLine, UpDown, path): + for i in range(nLine): + path.Line(StartX, StartY, StartX, StartY + UpDown*Size) + self.DebugMsg("GenLinesFlex from "+str((StartX, StartY))+" to "+str((StartX, StartY + UpDown*Size))+'\n') + StartY += UpDown*(Size+2) + + + # Generate the path link to a flex step + # + def generate_step_flex(self, step, size_notch, ShortMark, LongMark, nMark, index): + path = inkcape_draw_cartesian(self.OffsetFlex, self.group) + #External part of the notch, fraction of total notch + notch_useful = 2.0 / (self.notchesInterval + 2) + # First, link towards next step + # Line from ((step+1)*size_notch, 0) to ((step+0.5)*size_notch, 0 + path.Line((step+1)*size_notch, 0, (step+notch_useful)*size_notch, 0) + if self.flexnotch[index] == 0: + ShortMark = 0 + # Then ShortLine from ((step+notch_useful)*size_notch, ShortMark) towards ((step+notch_useful)*size_notch, -Thickness) + path.Line((step+notch_useful)*size_notch, ShortMark,(step+notch_useful)*size_notch, -self.thickness) + # Then notch + path.LineTo(step*size_notch, -self.thickness) + # Then short mark towards other side (step*size_notch, shortmark) + path.LineTo(step*size_notch, ShortMark) + if ShortMark != 0: #Only if there is flex + # Then line towards center + self.GenLinesFlex(step*size_notch, ShortMark + 2, (self.height - 2*ShortMark - 2.0)/(nMark-1) - 2.0, nMark-1, 1, path) + # Then notch + path.Line(step*size_notch, self.height - ShortMark, step*size_notch, self.height + self.thickness) + path.LineTo((step+notch_useful)*size_notch, self.height + self.thickness) + path.LineTo((step+notch_useful)*size_notch, self.height - ShortMark) + if ShortMark != 0: + #Then nMark-1 Lines + self.GenLinesFlex((step+notch_useful)*size_notch, self.height - ShortMark - 2, (self.height - 2*ShortMark - 2.0)/(nMark-1) - 2.0, nMark-1, -1, path) + #Then Long lines internal to notch + self.GenLinesFlex((step+notch_useful/2)*size_notch, 1 - self.thickness, (self.height + 2.0*self.thickness)/nMark - 2, nMark, 1, path) + # link towards next One + path.Line((step+notch_useful)*size_notch, self.height, (step+1)*size_notch, self.height) + if ShortMark != 0: + # notchesInterval *nMark Long lines up to next notch or 2 shorts and nMark-1 long + i = 1 + while i < self.notchesInterval: + pos = (i + 2.0) / (self.notchesInterval + 2.0) + if i % 2 : + #odd draw from bottom to top, nMark lines + self.GenLinesFlex((step+pos)*size_notch, self.height - 1, self.height /nMark - 2.0, nMark, -1, path) + else: + # even draw from top to bottom nMark+1 lines, 2 short and nMark-1 Long + path.Line((step+pos)*size_notch, 3, (step+pos)*size_notch, ShortMark) + self.GenLinesFlex((step+pos)*size_notch, ShortMark + 2, (self.height - 2*ShortMark - 2.0)/(nMark-1) - 2.0, nMark-1, 1, path) + path.Line((step+pos)*size_notch, self.height - ShortMark, (step+pos)*size_notch, self.height - 3) + i += 1 + # Write path to inkscape + path.GenPath() + + def GenerateStartFlex(self, size_notch, ShortMark, LongMark, nMark, index): + ''' + Draw the start pattern + The notch is only 1 mm wide, to enable putting both start and end notch in the same hole in the cover + ''' + path = inkcape_draw_cartesian(self.OffsetFlex, self.group) + #External part of the notch, fraction of total notch + notch_useful = 1.0 / (self.notchesInterval + 2) + notch_in = self.notchesInterval / (self.notchesInterval + 2.0) + # First, link towards next step + # Line from (, 0) to 0, 0 + path.Line(-notch_in*size_notch, 0, 0, 0) + if self.flexnotch[index] == 0: + ShortMark = 0 + # Then ShortLine from (-notch_in*size_notch, ShortMark) towards -notch_in*size_notch, Thickness) + path.Line(-notch_in*size_notch, ShortMark, -notch_in*size_notch, -self.thickness) + # Then notch (beware, only size_notch/4 here) + path.LineTo((notch_useful-1)*size_notch, -self.thickness) + # Then edge, full length + path.LineTo((notch_useful-1)*size_notch, self.height+self.thickness) + # Then notch + path.LineTo(-notch_in*size_notch, self.height + self.thickness) + path.LineTo(-notch_in*size_notch, self.height - ShortMark + 1) + if ShortMark != 0: + #Then nMark - 1 Lines + self.GenLinesFlex(-notch_in*size_notch, self.height - ShortMark - 2, (self.height - 2*ShortMark - 2.0)/(nMark-1) - 2.0, nMark-1, -1, path) + # link towards next One + path.Line(-notch_in*size_notch, self.height, 0, self.height) + if ShortMark != 0: + # notchesInterval *nMark Long lines up to next notch or 2 shorts and nMark-1 long + i = 1 + while i < self.notchesInterval: + pos = (i - self.notchesInterval) / (self.notchesInterval + 2.0) + if i % 2 : + #odd draw from bottom to top, nMark lines + self.GenLinesFlex(pos*size_notch, self.height - 1, self.height /nMark - 2.0, nMark, -1, path) + else: + # even draw from top to bottom nMark+1 lines, 2 short and nMark-1 Long + path.Line(pos*size_notch, 3, pos*size_notch, ShortMark) + self.GenLinesFlex(pos*size_notch, ShortMark + 2, (self.height - 2*ShortMark - 2.0)/(nMark-1) - 2.0, nMark-1, 1, path) + path.Line(pos*size_notch, self.height - ShortMark, pos*size_notch, self.height - 3) + i += 1 + path.GenPath() + + + def GenerateEndFlex(self, step, size_notch, ShortMark, LongMark, nMark, index): + path = inkcape_draw_cartesian(self.OffsetFlex, self.group) + delta_notch = 1.0 / (self.notchesInterval + 2.0) + if self.flexnotch[index] == 0: + ShortMark = 0 + # ShortLine from (step*size_notch, ShortMark) towards step*size_notch, -Thickness) + path.Line(step*size_notch, ShortMark, step*size_notch, -self.thickness) + # Then notch (beware, only 1mm here) + path.LineTo((step+delta_notch)*size_notch, -self.thickness) + # Then edge, full length + path.LineTo((step+delta_notch)*size_notch, self.height+self.thickness) + # Then notch + path.LineTo(step*size_notch, self.height + self.thickness) + path.LineTo(step*size_notch, self.height - ShortMark) + if ShortMark != 0: + #Then nMark - 1 Lines + self.GenLinesFlex(step*size_notch, self.height - ShortMark - 2, (self.height - 2*ShortMark - 2.0)/(nMark-1) - 2.0, nMark-1, -1, path) + path.GenPath() + + + def GenFlex(self, parent, num_notch, size_notch, xOffset, yOffset): + group = etree.SubElement(parent, 'g') + self.group = group + #Compute number of vertical lines. Each long mark should be at most 50mm long to avoid failures + nMark = int(self.height / 50) + 1 + nMark = max(nMark, 2) # At least 2 marks + #Then compute number of flex bands + FlexLength = num_notch * size_notch + nb_flex_band = int (FlexLength // self.max_flex_size) + 1 + notch_per_band = num_notch / nb_flex_band + 1 + self.DebugMsg("Generate flex structure with "+str(nb_flex_band)+" bands, "+str(num_notch)+" notches, offset ="+str((xOffset, yOffset))+'\n') + #Sizes of short and long lines to make flex + LongMark = (self.height / nMark) - 2.0 #Long Mark equally divide the height + ShortMark = LongMark/2 # And short mark should lay at center of long marks + idx_notch = 0 + while num_notch > 0: + self.OffsetFlex = (xOffset, yOffset) + self.GenerateStartFlex(size_notch, ShortMark, LongMark, nMark, idx_notch) + idx_notch += 1 + notch = 0 + if notch_per_band > num_notch: + notch_per_band = num_notch #for the last one + while notch < notch_per_band - 1: + self.generate_step_flex(notch, size_notch, ShortMark, LongMark, nMark, idx_notch) + notch += 1 + idx_notch += 1 + num_notch -= notch_per_band + if num_notch == 0: + self.GenerateEndFlex(notch, size_notch, ShortMark, LongMark, nMark, 0) + else: + self.GenerateEndFlex(notch, size_notch, ShortMark, LongMark, nMark, idx_notch) + xOffset -= size_notch * notch_per_band + 10 + + def getPathVertices(self, path, node=None): + + ''' + Decompose the path data from an SVG element into individual + subpaths, each subpath consisting of absolute move to and line + to coordinates. Place these coordinates into a list of polygon + vertices. + ''' + self.DebugMsg("Entering getPathVertices, len="+str(len(path))+"\n") + if (not path) or (len(path) == 0): + # Nothing to do + return None + + # parsePath() may raise an exception. This is okay + simple_path = Path(path).to_arrays() + if (not simple_path) or (len(simple_path) == 0): + # Path must have been devoid of any real content + return None + self.DebugMsg("After parsePath in getPathVertices, len="+str(len(simple_path))+"\n") + self.DebugMsg(" Path = "+str(simple_path)+'\n') + + # Get a cubic super path + cubic_super_path = CubicSuperPath(simple_path) + if (not cubic_super_path) or (len(cubic_super_path) == 0): + # Probably never happens, but... + return None + self.DebugMsg("After CubicSuperPath in getPathVertices, len="+str(len(cubic_super_path))+"\n") + + + # Now traverse the cubic super path + subpath_list = [] + subpath_vertices = [] + index_sp = 0 + for sp in cubic_super_path: + + # We've started a new subpath + # See if there is a prior subpath and whether we should keep it + self.DebugMsg("Processing SubPath"+str(index_sp)+" SubPath List len="+str(len(subpath_list))+" Vertices list length="+str(len(subpath_vertices)) +"\n") + + if len(subpath_vertices): + subpath_list.append(subpath_vertices) + + subpath_vertices = [] + self.DebugMsg("Before subdivideCubicPath len="+str(len(sp)) +"\n") + self.DebugMsg(" Bsp="+str(sp)+'\n') + subdivideCubicPath(sp, 0.1) + self.DebugMsg("After subdivideCubicPath len="+str(len(sp)) +"\n") + self.DebugMsg(" Asp="+str(sp)+'\n') + + # Note the first point of the subpath + first_point = sp[0][1] + subpath_vertices.append(first_point) + sp_xmin = first_point[0] + sp_xmax = first_point[0] + sp_ymin = first_point[1] + sp_ymax = first_point[1] + + n = len(sp) + + # Traverse each point of the subpath + for csp in sp[1:n]: + + # Append the vertex to our list of vertices + pt = csp[1] + subpath_vertices.append(pt) + #self.DebugMsg("Append subpath_vertice '"+str(pt)+"len="+str(len(subpath_vertices)) +"\n") + + + # Track the bounding box of this subpath + if pt[0] < sp_xmin: + sp_xmin = pt[0] + elif pt[0] > sp_xmax: + sp_xmax = pt[0] + if pt[1] < sp_ymin: + sp_ymin = pt[1] + elif pt[1] > sp_ymax: + sp_ymax = pt[1] + + # Track the bounding box of the overall drawing + # This is used for centering the polygons in OpenSCAD around the (x,y) origin + if sp_xmin < self.xmin: + self.xmin = sp_xmin + if sp_xmax > self.xmax: + self.xmax = sp_xmax + if sp_ymin < self.ymin: + self.ymin = sp_ymin + if sp_ymax > self.ymax: + self.ymax = sp_ymax + + # Handle the final subpath + if len(subpath_vertices): + subpath_list.append(subpath_vertices) + + if len(subpath_list) > 0: + self.paths[node] = subpath_list + + ''' + self.DebugMsg("After getPathVertices\n") + index_i = 0 + for i in self.paths[node]: + index_j = 0 + for j in i: + self.DebugMsg('Path '+str(index_i)+" élément "+str(index_j)+" = "+str(j)+'\n') + index_j += 1 + index_i += 1 + ''' + + def DistanceOnPath(self, p, pt, index): + ''' + Return the distances before and after the point pt on the polygon p + The point pt is in the segment index of p, that is between p[index] and p[index+1] + ''' + i = 0 + before = 0 + after = 0 + while i < index: + # First walk through polygon up to p[index] + before += distance2points(p[i+1][0], p[i+1][1], p[i][0], p[i][1]) + i += 1 + #For the segment index compute the part before and after + before += distance2points(pt[0], pt[1], p[index][0], p[index][1]) + after += distance2points(pt[0], pt[1], p[index+1][0], p[index+1][1]) + i = index + 1 + while i < len(p)-1: + after += distance2points(p[i+1][0], p[i+1][1], p[i][0], p[i][1]) + i += 1 + return (before, after) + + # Compute position of next notch. + # Next notch will be on the path p, and at a distance notch_size from previous point + # Return new index in path p + def compute_next_notch(self, notch_points, p, Angles_p, last_index_in_p, notch_size): + index_notch = len(notch_points) + # Coordinates of last notch + Ox = notch_points[index_notch - 1][0] + Oy = notch_points[index_notch - 1][1] + CurAngle = Angles_p[last_index_in_p-1] + #self.DebugMsg("Enter cnn:last_index_in_p="+str(last_index_in_p)+" CurAngle="+str(round(CurAngle*180/math.pi))+" Segment="+str((p[last_index_in_p-1], p[last_index_in_p]))+" Length="+str(distance2points(p[last_index_in_p-1][0], p[last_index_in_p-1][1], p[last_index_in_p][0], p[last_index_in_p][1]))+"\n") + DeltaAngle = 0 + while last_index_in_p < (len(p) - 1) and distance2points(Ox, Oy, p[last_index_in_p][0], p[last_index_in_p][1]) < notch_size + DeltaAngle*self.thickness/2.0: + Diff_angle = Angles_p[last_index_in_p] - CurAngle + if Diff_angle > math.pi: + Diff_angle -= 2*math.pi + elif Diff_angle < -math.pi: + Diff_angle += 2*math.pi + Diff_angle = abs(Diff_angle) + DeltaAngle += Diff_angle + CurAngle = Angles_p[last_index_in_p] + #self.DebugMsg("cnn:last_index_in_p="+str(last_index_in_p)+" Angle="+str(round(Angles_p[last_index_in_p]*180/math.pi))+" Diff_angle="+str(round(Diff_angle*180/math.pi))+" DeltaAngle="+str(round(DeltaAngle*180/math.pi))+" Distance="+str(distance2points(Ox, Oy, p[last_index_in_p][0], p[last_index_in_p][1]))+"/"+str(notch_size + DeltaAngle*self.thickness/2.0)+"\n") + last_index_in_p += 1 # Go to next point in polygon + + + # Starting point for the line x0, y0 is p[last_index_in_p-1] + x0 = p[last_index_in_p-1][0] + y0 = p[last_index_in_p-1][1] + # End point for the line x1, y1 is p[last_index_in_p] + x1 = p[last_index_in_p][0] + y1 = p[last_index_in_p][1] + + Distance_notch = notch_size + DeltaAngle*self.thickness/2.0 + #self.DebugMsg(" compute_next_notch("+str(index_notch)+") Use Segment="+str(last_index_in_p)+" DeltaAngle="+str(round(DeltaAngle*180/math.pi))+"°, notch_size="+str(notch_size)+" Distance_notch="+str(Distance_notch)+'\n') + + # The actual notch position will be on the line between last_index_in_p-1 and last_index_in_p and at a distance Distance_notch of Ox,Oy + # The intersection of a line and a circle could be computed as a second degree equation in a general case + # Specific case, when segment is vertical + if abs(x1-x0) <0.001: + # easy case, x= x0 so y = sqrt(d2 - x*x) + solx1 = x0 + solx2 = x0 + soly1 = Oy + math.sqrt(Distance_notch**2 - (x0 - Ox)**2) + soly2 = Oy - math.sqrt(Distance_notch**2 - (x0 - Ox)**2) + else: + Slope = (y1 - y0) / (x1 - x0) + # The actual notch position will be on the line between last_index_in_p-1 and last_index_in_p and at a distance notch size of Ox,Oy + # The intersection of a line and a circle could be computed as a second degree equation + # The coefficients of this equation are computed below + a = 1.0 + Slope**2 + b = 2*Slope*y0 - 2*Slope**2*x0 - 2*Ox - 2*Slope*Oy + c = Slope**2*x0**2 + y0**2 -2*Slope*x0*y0 + 2*Slope*x0*Oy - 2*y0*Oy + Ox**2 + Oy**2 - Distance_notch**2 + solx1, solx2 = Solve2nd(a, b, c) + soly1 = y0 + Slope*(solx1-x0) + soly2 = y0 + Slope*(solx2-x0) + # Now keep the point which is between (x0,y0) and (x1, y1) + # The distance between (x1,y1) and the "good" solution will be lower than the distance between (x0,y0) and (x1,y1) + distance1 = distance2points(x1, y1, solx1, soly1) + distance2 = distance2points(x1, y1, solx2, soly2) + if distance1 < distance2: + #Keep solx1 + solx = solx1 + soly = soly1 + else: + #Keep solx2 + solx = solx2 + soly = soly2 + notch_points.append((solx, soly, last_index_in_p-1)) + if abs(distance2points(solx, soly, Ox, Oy) - Distance_notch) > 1: + #Problem + self.DebugMsg("Problem in compute_next_notch: x0,y0 ="+str((x0,y0))+" x1,y1="+str((x1,y1))+'\n') + self.DebugMsg("Len(p)="+str(len(p))+'\n') + self.DebugMsg("Slope="+str(Slope)+'\n') + self.DebugMsg("solx1="+str(solx1)+" soly1="+str(soly1)+" soly1="+str(solx2)+" soly1="+str(soly2)+'\n') + self.DebugMsg(str(index_notch)+": Adding new point ("+str(solx)+","+ str(soly) + "), distance is "+ str(distance2points(solx, soly, Ox, Oy))+ " New index in path :"+str(last_index_in_p)+'\n') + + #self.DebugMsg(str(index_notch)+": Adding new point ("+str(solx)+","+ str(soly) + "), distance is "+ str(distance2points(solx, soly, Ox, Oy))+ " New index in path :"+str(last_index_in_p)+'\n') + return last_index_in_p + + def DrawPoly(self, p, parent): + group = etree.SubElement(parent, 'g') + Newpath = inkcape_draw_cartesian((self.xmin - self.xmax - 10, 0), group) + self.DebugMsg('DrawPoly First element (0) : '+str(p[0])+ ' Call MoveTo('+ str(p[0][0])+','+str(p[0][1])+'\n') + Newpath.MoveTo(p[0][0], p[0][1]) + n = len(p) + index = 1 + for point in p[1:n]: + Newpath.LineTo(point[0], point[1]) + index += 1 + Newpath.GenPath() + + def Simplify(self, poly, max_error): + ''' + Simplify the polygon, remove vertices which are aligned or too close from others + The parameter give the max error, below this threshold, points will be removed + return the simplified polygon, which is modified in place + ''' + #First point + LastIdx = 0 + limit = max_error * max_error #Square because distance will be square ! + i = 1 + while i < len(poly)-1: + #Build segment between Vertex[i-1] and Vertex[i+1] + Seg = Segment(poly[LastIdx], poly[i+1]) + #self.DebugMsg("Pt["+str(i)+"]/"+str(len(poly))+" ="+str(poly[i])+" Segment="+str(Seg)+"\n") + # Compute square of distance between Vertex[i] and Segment + dis_square = Seg.square_line_distance(poly[i]) + if dis_square < max_error: + # Too close, remove this point + poly.pop(i) #and do NOT increment index + #self.DebugMsg("Simplify, removing pt "+str(i)+"="+str(poly[i])+" in Segment : "+str(Seg)+" now "+str(len(poly))+" vertices\n") + else: + LastIdx = i + i += 1 #Increment index + # No need to process last point, it should NOT be modified and stay equal to first one + return poly + + def MakePolyCCW(self, p): + ''' + Take for polygon as input and make it counter clockwise. + If already CCW, just return the polygon, if not reverse it + To determine if polygon is CCW, compute area. If > 0 the polygon is CCW + ''' + area = 0 + for i in range(len(p)-1): + area += p[i][0]*p[i+1][1] - p[i+1][0]*p[i][1] + self.DebugMsg("poly area = "+str(area/2)+"\n") + if area < 0: + # Polygon is cloackwise, reverse + p.reverse() + self.DebugMsg("Polygon was clockwise, reverse it\n") + return p + + def ComputeAngles(self, p): + ''' + Compute a list with angles of all edges of the polygon + Return this list + ''' + angles = [] + for i in range(len(p)-1): + a = math.atan2(p[i+1][1] - p[i][1], p[i+1][0] - p[i][0]) + angles.append(a) + # Last value is not defined as Pt n-1 = Pt 0, set it to angle[0] + angles.append(angles[0]) + return angles + + def writeModifiedPath(self, node, parent): + ''' + Take the paths (polygons) computed from previous step and generate + 1) The input path with notches + 2) The flex structure associated with the path with notches (same length and number of notches) + ''' + path = self.paths[node] + if (path is None) or (len(path) == 0): + return + self.DebugMsg('Enter writeModifiedPath, node='+str(node)+' '+str(len(path))+' paths, global Offset'+str((self.xmin - self.xmax - 10, 0))+'\n') + + # First, if there are several paths, checks if one path is included in the first one. + # If not exchange such as the first one is the bigger one. + # All paths which are not the first one will have notches reverted to be outside the polygon instead of inside the polygon. + # On the finbal paths, these notches will always be inside the form. + if len(path) > 1: + OrderPathModified = True + # Arrange paths such as greater one is first, all others + while OrderPathModified: + OrderPathModified = False + for i in range(1, len(path)): + if polyInPoly(path[i], None, path[0], None): + self.DebugMsg("Path "+str(i)+" is included in path 0\n") + elif polyInPoly(path[0], None, path[i], None): + self.DebugMsg("Path "+str(i)+" contains path 0, exchange\n") + path[0], path[i] = path[i], path[0] + OrderPathModified = True + + index_path = 0 + xFlexOffset = self.xmin - 2*self.xmax - 20 + yFlexOffset = self.height - self.ymax - 10 + for p in path: + self.DebugMsg('Processing Path, '+str(index_path)+" Len(path)="+str(len(p))+'\n') + self.DebugMsg('p='+str(p)+'\n') + reverse_notch = False + if index_path > 0 and polyInPoly(p, None, path[0], None): + reverse_notch = True # For included path, reverse notches + #Simplify path, remove unnecessary vertices + p = self.Simplify(p, 0.1) + self.DebugMsg("---After simplification, path has "+str(len(p))+" vertices\n") + #Ensure that polygon is counter clockwise + p = self.MakePolyCCW(p) + self.DrawPoly(p, parent) + #Now compute path length. Path length is the sum of length of edges + length_path = 0 + n = len(p) + index = 1 + while index < n: + length_path += math.hypot((p[index][0] - p[index-1][0]), (p[index][1] - p[index-1][1])) + index += 1 + + angles = self.ComputeAngles(p) + # compute the sum of angles difference and check that it is 2*pi + SumAngle = 0.0 + for i in range(len(p)-1): + Delta_angle = angles[i+1] - angles[i] + if Delta_angle > math.pi: + Delta_angle -= 2*math.pi + elif Delta_angle < -math.pi: + Delta_angle += 2*math.pi + Delta_angle = abs(Delta_angle) + self.DebugMsg("idx="+str(i)+" Angle1 ="+str(round(angles[i]*180/math.pi,3))+" Angle 2="+str(round(angles[i+1]*180/math.pi,3))+" Delta angle="+str(round(Delta_angle*180/math.pi, 3))+"°\n") + SumAngle += Delta_angle + self.DebugMsg("Sum of angles="+str(SumAngle*180/math.pi)+"°\n") + + # Flex length will be path length - thickness*SumAngle/2 to keep flex aligned on the shortest path + flex_length = length_path - self.thickness*SumAngle/2 + + self.DebugMsg('Path length ='+str(length_path)+" Flex length ="+str(flex_length)+" Difference="+str(length_path-flex_length)+'\n') + + #Default notch size is notchesInterval + 2mm + #Actual notch size will be adjusted to match the length + notch_number = int(round(flex_length / (self.notchesInterval + 2), 0)) + notch_size = flex_length / notch_number + self.DebugMsg('Number of notches ='+str(notch_number)+' ideal notch size =' + str(round(notch_size,3)) +'\n') + + + # Compute position of the points on the path that will become notches + # Starting at 0, each point will be at distance actual_notch_size from the previous one, at least on one side of the notch (the one with the smallest distance) + # On the path (middle line) the actual distance will be notch_size + thickness*delta_angle/2 where delta angle is the difference between the angle at starting point and end point + # As notches are not aligned to vertices, the actual length of the path will be different from the computed one (lower in fact) + # To avoid a last notch too small, we will repeat the process until the size of the last notch is OK (less than .1mm error) + # Use an algorithm which corrects the notch_size by computing previous length of the last notch + + nb_try = 0 + size_last_notch = 0 + oldSize = 0 + BestDifference = 9999999 + BestNotchSize = notch_size + mode_linear = False + delta_notch = -0.01 #In most cases, should reduce notch size + while nb_try < 100: + notch_points = [ (p[0][0], p[0][1], 0) ] # Build a list of tuples with corrdinates (x,y) and offset within polygon which is 0 the the starting point + index = 1 # Notch index + last_index_in_p = 1 # Start at 1, index 0 is the current one + self.DebugMsg("Pass "+str(nb_try)+" First point ("+str(p[0][0])+","+ str(p[0][1]) + ' notch_size='+str(notch_size)+'\n') + while index < notch_number: + #Compute next notch point and append it to the list + last_index_in_p = self.compute_next_notch(notch_points, p, angles, last_index_in_p, notch_size) + #before, after = self.DistanceOnPath(p, notch_points[index], last_index_in_p-1) + #self.DebugMsg(" Notch "+str(index)+" placed in "+str(notch_points[index])+" distance before ="+str(before)+" after="+str(after)+" total="+str(before+after)+'\n') + index += 1 + size_last_notch = distance2points(p[n-1][0], p[n-1][1], notch_points[index-1][0], notch_points[index-1][1]) + self.DebugMsg("Last notch size :"+str(size_last_notch)+'\n') + if abs(notch_size - size_last_notch) < BestDifference: + BestNotchSize = notch_size + BestDifference = abs(notch_size - size_last_notch) + if abs(notch_size - size_last_notch) <= 0.1: + break + # Change size_notch, cut small part in each notch + # The 0.5 factor is used to avoid non convergent series (too short then too long...) + if mode_linear: + if notch_size > size_last_notch and delta_notch > 0: + delta_notch -= delta_notch*0.99 + elif notch_size < size_last_notch and delta_notch < 0: + delta_notch -= delta_notch*0.99 + notch_size += delta_notch + self.DebugMsg("Linear mode, changing delta_notch size :"+str(delta_notch)+" --> notch_size="+str(notch_size)+'\n') + else: + if notch_size > size_last_notch and delta_notch > 0: + delta_notch = -0.5*delta_notch + self.DebugMsg("Changing delta_notch size :"+str(delta_notch)+'\n') + elif notch_size < size_last_notch and delta_notch < 0: + delta_notch = -0.5*delta_notch + self.DebugMsg("Changing delta_notch size :"+str(delta_notch)+'\n') + notch_size += delta_notch + if abs(delta_notch) < 0.002: + mode_linear = True + + # Change size_notch, cut small part in each notch + oldSize = notch_size + # The 0.5 factor is used to avoid non convergent series (too short then too long...) + notch_size -= 0.5*(notch_size - size_last_notch)/notch_number + nb_try += 1 + + if nb_try >= 100: + self.DebugMsg("Algorithm doesn't converge, use best results :"+str(BestNotchSize)+" which gave last notch size difference "+str(BestDifference)+'\n') + notch_size = BestNotchSize + + # Now draw the actual notches + group = etree.SubElement(parent, 'g') + # First draw a start line which will help to position flex. + Startpath = inkcape_draw_cartesian(((self.xmin - self.xmax - 10), 0), group) + index_in_p = notch_points[0][2] + AngleSlope = math.atan2(p[index_in_p+1][1] - p[index_in_p][1], p[index_in_p+1][0] - p[index_in_p][0]) + #Now compute both ends of the notch, + AngleOrtho = AngleSlope + math.pi/2 + Line_Start = (notch_points[0][0] + self.thickness/2*math.cos(AngleOrtho), notch_points[0][1] + self.thickness/2*math.sin(AngleOrtho)) + Line_End = (notch_points[0][0] - self.thickness/2*math.cos(AngleOrtho), notch_points[0][1] - self.thickness/2*math.sin(AngleOrtho)) + self.DebugMsg("Start line Start"+str(Line_Start)+" End("+str(Line_End)+" Start inside "+str(pointInPoly(Line_Start, p))+ " End inside :"+str(pointInPoly(Line_End, p))+'\n') + #Notch End should be inside the path and Notch Start outside... If not reverse + if pointInPoly(Line_Start, p): + Line_Start, Line_End = Line_End, Line_Start + AngleOrtho += math.pi + elif not pointInPoly(Line_End, p): + #Specific case, neither one is in Polygon (Open path ?), take the lowest Y as Line_End + if Line_End[1] > Line_Start[0]: + Line_Start, Line_End = Line_End, Line_Start + AngleOrtho += math.pi + #Now compute a new Start, inside the polygon Start = 3*End - 2*Start + newLine_Start = (3*Line_End[0] - 2*Line_Start[0], 3*Line_End[1] - 2*Line_Start[1]) + Startpath.MoveTo(newLine_Start[0], newLine_Start[1]) + Startpath.LineTo(Line_End[0], Line_End[1]) + self.DebugMsg("Draw StartLine start from "+str((newLine_Start[0], newLine_Start[1]))+" to "+str((Line_End[0], Line_End[1]))+'\n') + Startpath.GenPathStart() + + #Then draw the notches + Newpath = inkcape_draw_cartesian(((self.xmin - self.xmax - 10), 0), group) + self.DebugMsg("Generate path with "+str(notch_number)+" notches, offset ="+str(((self.xmin - self.xmax - 10), 0))+'\n') + isClosed = distance2points(p[n-1][0], p[n-1][1], p[0][0], p[0][1]) < 0.1 + # Each notch is a tuple with (X, Y, index_in_p). index_in_p will be used to compute slope of line of the notch + # The notch will be thickness long, and there will be a part 'inside' the path and a part 'outside' the path + # The longest part will be outside + index = 0 + NX0 = 0 + NX1 = 0 + NX2 = 0 + NX3 = 0 + NY0 = 0 + NY1 = 0 + NY2 = 0 + NY3 = 0 + N_Angle = 0 + Notch_Pos = [] + while index < notch_number: + # Line slope of the path at notch point is + index_in_p = notch_points[index][2] + N_Angle = angles[index_in_p] + AngleSlope = math.atan2(p[index_in_p+1][1] - p[index_in_p][1], p[index_in_p+1][0] - p[index_in_p][0]) + self.DebugMsg("Draw notch "+str(index)+" Slope is "+str(AngleSlope*180/math.pi)+'\n') + self.DebugMsg("Ref="+str(notch_points[index])+'\n') + self.DebugMsg("Path points:"+str((p[index_in_p][0], p[index_in_p][1]))+', '+ str((p[index_in_p+1][0], p[index_in_p+1][1]))+'\n') + #Now compute both ends of the notch, + AngleOrtho = AngleSlope + math.pi/2 + Notch_Start = (notch_points[index][0] + self.thickness/2*math.cos(AngleOrtho), notch_points[index][1] + self.thickness/2*math.sin(AngleOrtho)) + Notch_End = (notch_points[index][0] - self.thickness/2*math.cos(AngleOrtho), notch_points[index][1] - self.thickness/2*math.sin(AngleOrtho)) + self.DebugMsg("Notch "+str(index)+": Start"+str(Notch_Start)+" End("+str(Notch_End)+" Start inside "+str(pointInPoly(Notch_Start, p))+ " End inside :"+str(pointInPoly(Notch_End, p))+'\n') + #Notch End should be inside the path and Notch Start outside... If not reverse + if pointInPoly(Notch_Start, p): + Notch_Start, Notch_End = Notch_End, Notch_Start + AngleOrtho += math.pi + elif not pointInPoly(Notch_End, p): + #Specific case, neither one is in Polygon (Open path ?), take the lowest Y as Notch_End + if Notch_End[1] > Notch_Start[0]: + Notch_Start, Notch_End = Notch_End, Notch_Start + AngleOrtho += math.pi + #if should reverse notches, do it now + if reverse_notch: + Notch_Start, Notch_End = Notch_End, Notch_Start + AngleOrtho += math.pi + if AngleOrtho > 2*math.pi: + AngleOrtho -= 2*math.pi + ln = 2.0 + if index == 0: + Newpath.MoveTo(Notch_Start[0], Notch_Start[1]) + first = (Notch_Start[0], Notch_Start[1]) + if not isClosed: + ln = 1.0 # Actual, different Notch size for the first one when open path + else: + Newpath.LineTo(Notch_Start[0], Notch_Start[1]) + if not isClosed and index == notch_number - 1: + ln = 1.0 + self.DebugMsg("LineTo starting point from :"+str((x,y))+" to "+str((Notch_Start[0], Notch_Start[1]))+" Length ="+str(distance2points(x, y, Notch_Start[0], Notch_Start[1]))+'\n') + Newpath.LineTo(Notch_End[0], Notch_End[1]) + NX0 = Notch_Start[0] + NY0 = Notch_Start[1] + NX1 = Notch_End[0] + NY1 = Notch_End[1] + self.DebugMsg("Draw notch_1 start from "+str((Notch_Start[0], Notch_Start[1]))+" to "+str((Notch_End[0], Notch_End[1]))+'Center is '+str(((Notch_Start[0]+Notch_End[0])/2, (Notch_Start[1]+Notch_End[1])/2))+'\n') + #Now draw a line parallel to the path, which is notch_size*(2/(notchesInterval+2)) long. Internal part of the notch + x = Notch_End[0] + (notch_size*ln)/(self.notchesInterval+ln)*math.cos(AngleSlope) + y = Notch_End[1] + (notch_size*ln)/(self.notchesInterval+ln)*math.sin(AngleSlope) + Newpath.LineTo(x, y) + NX2 = x + NY2 = y + self.DebugMsg("Draw notch_2 to "+str((x, y))+'\n') + #Then a line orthogonal, which is thickness long, reverse from first one + x = x + self.thickness*math.cos(AngleOrtho) + y = y + self.thickness*math.sin(AngleOrtho) + Newpath.LineTo(x, y) + NX3 = x + NY3 = y + self.DebugMsg("Draw notch_3 to "+str((x, y))+'\n') + Notch_Pos.append((NX0, NY0, NX1, NY1, NX2, NY2, NX3, NY3, N_Angle)) + # No need to draw the last segment, it will be drawn when starting the next notch + index += 1 + #And the last one if the path is closed + if isClosed: + self.DebugMsg("Path is closed, draw line to start point "+str((p[0][0], p[0][1]))+'\n') + Newpath.LineTo(first[0], first[1]) + else: + self.DebugMsg("Path is open\n") + Newpath.GenPath() + # Analyze notches for debugging purpose + for i in range(len(Notch_Pos)): + self.DebugMsg("Notch "+str(i)+" Pos="+str(Notch_Pos[i])+" Angle="+str(round(Notch_Pos[i][8]*180/math.pi))+"\n") + if (i > 0): + self.DebugMsg(" FromLast Notch N3-N0="+str(distance2points(Notch_Pos[i-1][6], Notch_Pos[i-1][7], Notch_Pos[i][0], Notch_Pos[i][1]))+"\n") + self.DebugMsg(" Distances: N0-N3="+str(distance2points(Notch_Pos[i][0], Notch_Pos[i][1], Notch_Pos[i][6], Notch_Pos[i][7]))+" N1-N2="+str(distance2points(Notch_Pos[i][2], Notch_Pos[i][3], Notch_Pos[i][4], Notch_Pos[i][5]))+"\n") + # For each notch determine if we need flex or not. Flex is only needed if there is some curves + # So if notch[i]-1 notch[i] notch[i+1] are aligned, no need to generate flex in i-1 and i + for index in range(notch_number): + self.flexnotch.append(1) # By default all notches need flex + index = 1 + while index < notch_number-1: + det = (notch_points[index+1][0]- notch_points[index-1][0])*(notch_points[index][1] - notch_points[index-1][1]) - (notch_points[index+1][1] - notch_points[index-1][1])*(notch_points[index][0] - notch_points[index-1][0]) + self.DebugMsg("Notch "+str(index)+": det="+str(det)) + if abs(det) < 0.1: # My threhold to be adjusted + self.flexnotch[index-1] = 0 # No need for flex for this one and the following + self.flexnotch[index] = 0 + self.DebugMsg(" no flex in notch "+str(index-1)+" and "+str(index)) + index += 1 + self.DebugMsg("\n") + # For the last one try notch_number - 2, notch_number - 1 and 0 + det = (notch_points[0][0]- notch_points[notch_number - 2][0])*(notch_points[notch_number - 1][1] - notch_points[notch_number - 2][1]) - (notch_points[0][1] - notch_points[notch_number - 2][1])*(notch_points[notch_number - 1][0] - notch_points[notch_number - 2][0]) + if abs(det) < 0.1: # My threhold to be adjusted + self.flexnotch[notch_number-2] = 0 # No need for flex for this one and the following + self.flexnotch[notch_number-1] = 0 + # and the first one with notch_number - 1, 0 and 1 + det = (notch_points[1][0]- notch_points[notch_number-1][0])*(notch_points[0][1] - notch_points[notch_number-1][1]) - (notch_points[1][1] - notch_points[notch_number-1][1])*(notch_points[0][0] - notch_points[notch_number-1][0]) + if abs(det) < 0.1: # My threhold to be adjusted + self.flexnotch[notch_number-1] = 0 # No need for flex for this one and the following + self.flexnotch[0] = 0 + self.DebugMsg("FlexNotch ="+str(self.flexnotch)+"\n") + # Generate Associated flex + self.GenFlex(parent, notch_number, notch_size, xFlexOffset, yFlexOffset) + yFlexOffset -= self.height + 10 + index_path += 1 + + + def recursivelyTraverseSvg(self, aNodeList): + + ''' + [ This too is largely lifted from eggbot.py and path2openscad.py ] + + Recursively walk the SVG document, building polygon vertex lists + for each graphical element we support. + + Rendered SVG elements: + , , , , , , + Except for path, all elements are first converted into a path the processed + + Supported SVG elements: + + + Ignored SVG elements: + , , , , , + processing directives + + All other SVG elements trigger an error (including ) + ''' + + for node in aNodeList: + + self.DebugMsg("Node type :" + node.tag + '\n') + if node.tag == inkex.addNS('g', 'svg') or node.tag == 'g': + self.DebugMsg("Group detected, recursive call\n") + self.recursivelyTraverseSvg(node) + + elif node.tag == inkex.addNS('path', 'svg'): + self.DebugMsg("Path detected, ") + path_data = node.get('d') + if path_data: + self.getPathVertices(path_data, node) + else: + self.DebugMsg("NO path data present\n") + + elif node.tag == inkex.addNS('rect', 'svg') or node.tag == 'rect': + + # Create a path with the outline of the rectangle + x = float(node.get('x')) + y = float(node.get('y')) + if (not x) or (not y): + pass + w = float(node.get('width', '0')) + h = float(node.get('height', '0')) + + self.DebugMsg('Rectangle X='+ str(x)+',Y='+str(y)+', W='+str(w)+' H='+str(h)+'\n') + + a = [] + a.append(['M', [x, y]]) + a.append(['l', [w, 0]]) + a.append(['l', [0, h]]) + a.append(['l', [-w, 0]]) + a.append(['Z', []]) + self.getPathVertices(str(Path(a)), node) + elif node.tag == inkex.addNS('line', 'svg') or node.tag == 'line': + + # Convert + # + # + + x1 = float(node.get('x1')) + y1 = float(node.get('y1')) + x2 = float(node.get('x2')) + y2 = float(node.get('y2')) + self.DebugMsg('Line X1='+ str(x1)+',Y1='+str(y1)+', X2='+str(x2)+' Y2='+str(y2)+'\n') + + if (not x1) or (not y1) or (not x2) or (not y2): + pass + a = [] + a.append(['M', [x1, y1]]) + a.append(['L', [x2, y2]]) + self.getPathVertices(str(Path(a)), node) + + elif node.tag == inkex.addNS('polyline', 'svg') or node.tag == 'polyline': + + # Convert + # + # + # + # to + # + # + # + # Note: we ignore polylines with no points + + pl = node.get('points', '').strip() + if pl == '': + pass + + pa = pl.split() + d = "".join(["M " + pa[i] if i == 0 else " L " + pa[i] for i in range(0, len(pa))]) + self.DebugMsg('PolyLine :'+ d +'\n') + + + self.getPathVertices(d, node) + + elif node.tag == inkex.addNS('polygon', 'svg') or node.tag == 'polygon': + + # Convert + # + # + # + # to + # + # + # + # Note: we ignore polygons with no points + + pl = node.get('points', '').strip() + if pl == '': + pass + + pa = pl.split() + d = "".join(["M " + pa[i] if i == 0 else " L " + pa[i] for i in range(0, len(pa))]) + d += " Z" + self.DebugMsg('Polygon :'+ d +'\n') + self.getPathVertices(d, node) + + elif node.tag == inkex.addNS('ellipse', 'svg') or \ + node.tag == 'ellipse' or \ + node.tag == inkex.addNS('circle', 'svg') or \ + node.tag == 'circle': + + # Convert circles and ellipses to a path with two 180 degree arcs. + # In general (an ellipse), we convert + # + # + # + # to + # + # + # + # where + # + # X1 = CX - RX + # X2 = CX + RX + # + # Note: ellipses or circles with a radius attribute of value 0 are ignored + + if node.tag == inkex.addNS('ellipse', 'svg') or node.tag == 'ellipse': + rx = float(node.get('rx', '0')) + ry = float(node.get('ry', '0')) + else: + rx = float(node.get('r', '0')) + ry = rx + if rx == 0 or ry == 0: + pass + + cx = float(node.get('cx', '0')) + cy = float(node.get('cy', '0')) + x1 = cx - rx + x2 = cx + rx + d = 'M %f,%f ' % (x1, cy) + \ + 'A %f,%f ' % (rx, ry) + \ + '0 1 0 %f,%f ' % (x2, cy) + \ + 'A %f,%f ' % (rx, ry) + \ + '0 1 0 %f,%f' % (x1, cy) + self.DebugMsg('Arc :'+ d +'\n') + self.getPathVertices(d, node) + + elif node.tag == inkex.addNS('pattern', 'svg') or node.tag == 'pattern': + + pass + + elif node.tag == inkex.addNS('metadata', 'svg') or node.tag == 'metadata': + + pass + + elif node.tag == inkex.addNS('defs', 'svg') or node.tag == 'defs': + + pass + + elif node.tag == inkex.addNS('desc', 'svg') or node.tag == 'desc': + + pass + + elif node.tag == inkex.addNS('namedview', 'sodipodi') or node.tag == 'namedview': + + pass + + elif node.tag == inkex.addNS('eggbot', 'svg') or node.tag == 'eggbot': + + pass + + elif node.tag == inkex.addNS('text', 'svg') or node.tag == 'text': + + inkex.errormsg('Warning: unable to draw text, please convert it to a path first.') + + pass + + elif node.tag == inkex.addNS('title', 'svg') or node.tag == 'title': + + pass + + elif node.tag == inkex.addNS('image', 'svg') or node.tag == 'image': + + if not self.warnings.has_key('image'): + inkex.errormsg(gettext.gettext('Warning: unable to draw bitmap images; ' + + 'please convert them to line art first. Consider using the "Trace bitmap..." ' + + 'tool of the "Path" menu. Mac users please note that some X11 settings may ' + + 'cause cut-and-paste operations to paste in bitmap copies.')) + self.warnings['image'] = 1 + pass + + elif node.tag == inkex.addNS('pattern', 'svg') or node.tag == 'pattern': + + pass + + elif node.tag == inkex.addNS('radialGradient', 'svg') or node.tag == 'radialGradient': + + # Similar to pattern + pass + + elif node.tag == inkex.addNS('linearGradient', 'svg') or node.tag == 'linearGradient': + + # Similar in pattern + pass + + elif node.tag == inkex.addNS('style', 'svg') or node.tag == 'style': + + # This is a reference to an external style sheet and not the value + # of a style attribute to be inherited by child elements + pass + + elif node.tag == inkex.addNS('cursor', 'svg') or node.tag == 'cursor': + + pass + + elif node.tag == inkex.addNS('color-profile', 'svg') or node.tag == 'color-profile': + + # Gamma curves, color temp, etc. are not relevant to single color output + pass + + elif not isinstance(node.tag, basestring): + + # This is likely an XML processing instruction such as an XML + # comment. lxml uses a function reference for such node tags + # and as such the node tag is likely not a printable string. + # Further, converting it to a printable string likely won't + # be very useful. + + pass + + else: + + inkex.errormsg('Warning: unable to draw object <%s>, please convert it to a path first.' % node.tag) + pass + + + def effect(self): + + # convert units + unit = self.options.unit + self.thickness = self.svg.unittouu(str(self.options.thickness) + unit) + self.height = self.svg.unittouu(str(self.options.zc) + unit) + self.max_flex_size = self.svg.unittouu(str(self.options.max_size_flex) + unit) + self.notchesInterval = int(self.options.notch_interval) + + svg = self.document.getroot() + docWidth = self.svg.unittouu(svg.get('width')) + docHeigh = self.svg.unittouu(svg.attrib['height']) + + # Open Debug file if requested + if self.options.Mode_Debug: + try: + self.fDebug = open('DebugPath2Flex.txt', 'w') + except IOError: + print ('cannot open debug output file') + self.DebugMsg("Start processing\n") + + + # First traverse the document (or selected items), reducing + # everything to line segments. If working on a selection, + # then determine the selection's bounding box in the process. + # (Actually, we just need to know it's extrema on the x-axis.) + + # Traverse the selected objects + for id in self.options.ids: + self.recursivelyTraverseSvg([self.svg.selected[id]]) + # Determine the center of the drawing's bounding box + self.cx = self.xmin + (self.xmax - self.xmin) / 2.0 + self.cy = self.ymin + (self.ymax - self.ymin) / 2.0 + + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'Flex_Path') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + + # For each path, build a polygon with notches and the corresponding flex. + for key in self.paths: + self.writeModifiedPath(key, layer) + + if self.fDebug: + self.fDebug.close() + +if __name__ == '__main__': + BoxMakerPathToFlex().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/AgricolaInsert-thumb.jpg b/extensions/fablabchemnitz/boxes.py/AgricolaInsert-thumb.jpg new file mode 100644 index 00000000..82a7a99d Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/AgricolaInsert-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/AllEdges-thumb.jpg b/extensions/fablabchemnitz/boxes.py/AllEdges-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/AllEdges-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/AngledBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/AngledBox-thumb.jpg new file mode 100644 index 00000000..f5361ccc Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/AngledBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/AngledCutJig-thumb.jpg b/extensions/fablabchemnitz/boxes.py/AngledCutJig-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/AngledCutJig-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Arcade-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Arcade-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Arcade-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Atreus21-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Atreus21-thumb.jpg new file mode 100644 index 00000000..9bafb984 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Atreus21-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/BasedBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/BasedBox-thumb.jpg new file mode 100644 index 00000000..d6f9fa85 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/BasedBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/BayonetBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/BayonetBox-thumb.jpg new file mode 100644 index 00000000..f8069025 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/BayonetBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/BinTray-thumb.jpg b/extensions/fablabchemnitz/boxes.py/BinTray-thumb.jpg new file mode 100644 index 00000000..1951afe5 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/BinTray-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/BottleStack-thumb.jpg b/extensions/fablabchemnitz/boxes.py/BottleStack-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/BottleStack-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/BurnTest-thumb.jpg b/extensions/fablabchemnitz/boxes.py/BurnTest-thumb.jpg new file mode 100644 index 00000000..a77d9c28 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/BurnTest-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/CardBox-detail-thumb.jpg b/extensions/fablabchemnitz/boxes.py/CardBox-detail-thumb.jpg new file mode 100644 index 00000000..41ba16dc Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/CardBox-detail-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/CardBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/CardBox-thumb.jpg new file mode 100644 index 00000000..6bdf7e63 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/CardBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Castle-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Castle-thumb.jpg new file mode 100644 index 00000000..7ca2a4d1 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Castle-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/ClosedBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/ClosedBox-thumb.jpg new file mode 100644 index 00000000..d588f6f6 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/ClosedBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/CoffeeCapsuleHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/CoffeeCapsuleHolder-thumb.jpg new file mode 100644 index 00000000..53605864 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/CoffeeCapsuleHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/ConcaveKnob-thumb.jpg b/extensions/fablabchemnitz/boxes.py/ConcaveKnob-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/ConcaveKnob-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Console-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Console-thumb.jpg new file mode 100644 index 00000000..c0351944 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Console-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Console2-backwall-detail-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Console2-backwall-detail-thumb.jpg new file mode 100644 index 00000000..2a1991c0 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Console2-backwall-detail-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Console2-panel-detail-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Console2-panel-detail-thumb.jpg new file mode 100644 index 00000000..be07af74 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Console2-panel-detail-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Console2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Console2-thumb.jpg new file mode 100644 index 00000000..a0ae7890 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Console2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DinRailBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DinRailBox-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DinRailBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DiscRack-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DiscRack-thumb.jpg new file mode 100644 index 00000000..92fc752f Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DiscRack-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Display-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Display-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Display-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DisplayCase-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DisplayCase-thumb.jpg new file mode 100644 index 00000000..efdb44a8 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DisplayCase-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DisplayShelf-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DisplayShelf-thumb.jpg new file mode 100644 index 00000000..4e736c0c Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DisplayShelf-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DividerTray-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DividerTray-thumb.jpg new file mode 100644 index 00000000..4313e3e4 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DividerTray-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DoubleFlexDoorBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DoubleFlexDoorBox-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DoubleFlexDoorBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DrillBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DrillBox-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DrillBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/DrillStand-thumb.jpg b/extensions/fablabchemnitz/boxes.py/DrillStand-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/DrillStand-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/ElectronicsBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/ElectronicsBox-thumb.jpg new file mode 100644 index 00000000..7e6bceee Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/ElectronicsBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/EuroRackSkiff-thumb.jpg b/extensions/fablabchemnitz/boxes.py/EuroRackSkiff-thumb.jpg new file mode 100644 index 00000000..e14e88db Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/EuroRackSkiff-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FanHole-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FanHole-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FanHole-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FlexBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FlexBox-thumb.jpg new file mode 100644 index 00000000..92cb58b0 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FlexBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FlexBox2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FlexBox2-thumb.jpg new file mode 100644 index 00000000..70037b54 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FlexBox2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FlexBox3-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FlexBox3-thumb.jpg new file mode 100644 index 00000000..11ec688b Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FlexBox3-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FlexBox4-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FlexBox4-thumb.jpg new file mode 100644 index 00000000..1b4a037a Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FlexBox4-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FlexBox5-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FlexBox5-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FlexBox5-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FlexTest-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FlexTest-thumb.jpg new file mode 100644 index 00000000..20079fd8 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FlexTest-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/FlexTest2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/FlexTest2-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/FlexTest2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Folder-2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Folder-2-thumb.jpg new file mode 100644 index 00000000..eb534125 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Folder-2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Folder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Folder-thumb.jpg new file mode 100644 index 00000000..09790f14 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Folder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/GearBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/GearBox-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/GearBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Gears-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Gears-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Gears-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/HeartBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/HeartBox-thumb.jpg new file mode 100644 index 00000000..38921392 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/HeartBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/HexHoles-thumb.jpg b/extensions/fablabchemnitz/boxes.py/HexHoles-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/HexHoles-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/HingeBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/HingeBox-thumb.jpg new file mode 100644 index 00000000..5367d10c Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/HingeBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Hook-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Hook-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Hook-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/IntegratedHingeBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/IntegratedHingeBox-thumb.jpg new file mode 100644 index 00000000..0a6ac527 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/IntegratedHingeBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Keypad-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Keypad-thumb.jpg new file mode 100644 index 00000000..bf0596a6 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Keypad-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/LBeam-thumb.jpg b/extensions/fablabchemnitz/boxes.py/LBeam-thumb.jpg new file mode 100644 index 00000000..cf839292 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/LBeam-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/LaserClamp-thumb.jpg b/extensions/fablabchemnitz/boxes.py/LaserClamp-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/LaserClamp-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/LaserHoldfast-thumb.jpg b/extensions/fablabchemnitz/boxes.py/LaserHoldfast-thumb.jpg new file mode 100644 index 00000000..445b9c8b Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/LaserHoldfast-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/MagazinFile-thumb.jpg b/extensions/fablabchemnitz/boxes.py/MagazinFile-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/MagazinFile-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/MakitaPowerSupply-thumb.jpg b/extensions/fablabchemnitz/boxes.py/MakitaPowerSupply-thumb.jpg new file mode 100644 index 00000000..d99acb73 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/MakitaPowerSupply-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/March36539-box-thumb.jpg b/extensions/fablabchemnitz/boxes.py/March36539-box-thumb.jpg new file mode 100644 index 00000000..e5ff2bf9 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/March36539-box-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/NemaMount-thumb.jpg b/extensions/fablabchemnitz/boxes.py/NemaMount-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/NemaMount-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/NemaPattern-thumb.jpg b/extensions/fablabchemnitz/boxes.py/NemaPattern-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/NemaPattern-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/NotesHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/NotesHolder-thumb.jpg new file mode 100644 index 00000000..7e5d6d98 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/NotesHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/OpenBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/OpenBox-thumb.jpg new file mode 100644 index 00000000..ce4201b5 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/OpenBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/OrganPipe-thumb.jpg b/extensions/fablabchemnitz/boxes.py/OrganPipe-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/OrganPipe-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/OttoBody-thumb.jpg b/extensions/fablabchemnitz/boxes.py/OttoBody-thumb.jpg new file mode 100644 index 00000000..b05743c9 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/OttoBody-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/OttoLegs-thumb.jpg b/extensions/fablabchemnitz/boxes.py/OttoLegs-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/OttoLegs-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/OttoSoles-thumb.jpg b/extensions/fablabchemnitz/boxes.py/OttoSoles-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/OttoSoles-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/PaintStorage-thumb.jpg b/extensions/fablabchemnitz/boxes.py/PaintStorage-thumb.jpg new file mode 100644 index 00000000..3b854c22 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/PaintStorage-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/PaperBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/PaperBox-thumb.jpg new file mode 100644 index 00000000..756db16d Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/PaperBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/PhoneHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/PhoneHolder-thumb.jpg new file mode 100644 index 00000000..31aa83b2 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/PhoneHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Planetary-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Planetary-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Planetary-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Planetary2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Planetary2-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Planetary2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Platonic-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Platonic-thumb.jpg new file mode 100644 index 00000000..1dd04e92 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Platonic-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/PoleHook-thumb.jpg b/extensions/fablabchemnitz/boxes.py/PoleHook-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/PoleHook-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Pulley-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Pulley-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Pulley-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Rack10Box-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Rack10Box-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Rack10Box-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Rack19Box-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Rack19Box-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Rack19Box-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Rack19HalfWidth-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Rack19HalfWidth-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Rack19HalfWidth-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/RackBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/RackBox-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/RackBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/RectangularWall-thumb.jpg b/extensions/fablabchemnitz/boxes.py/RectangularWall-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/RectangularWall-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/RegularBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/RegularBox-thumb.jpg new file mode 100644 index 00000000..c2a0e37a Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/RegularBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/RobotArm-thumb.jpg b/extensions/fablabchemnitz/boxes.py/RobotArm-thumb.jpg new file mode 100644 index 00000000..ceebc8e0 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/RobotArm-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Rotary-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Rotary-thumb.jpg new file mode 100644 index 00000000..ac99079d Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Rotary-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/RoundedBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/RoundedBox-thumb.jpg new file mode 100644 index 00000000..471b1676 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/RoundedBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/RoyalGame-thumb.jpg b/extensions/fablabchemnitz/boxes.py/RoyalGame-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/RoyalGame-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SBCMicroRack-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SBCMicroRack-thumb.jpg new file mode 100644 index 00000000..b3a6849d Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SBCMicroRack-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/ShutterBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/ShutterBox-thumb.jpg new file mode 100644 index 00000000..d2ecab01 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/ShutterBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SideDoorHousing-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SideDoorHousing-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SideDoorHousing-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Silverware-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Silverware-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Silverware-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallCaliper-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallCaliper-thumb.jpg new file mode 100644 index 00000000..c3ab9ff5 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallCaliper-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallChiselHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallChiselHolder-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallChiselHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallConsole-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallConsole-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallConsole-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallDrillBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallDrillBox-thumb.jpg new file mode 100644 index 00000000..b30ebfa0 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallDrillBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallEdges-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallEdges-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallEdges-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallPinRow-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallPinRow-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallPinRow-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallPlaneHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallPlaneHolder-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallPlaneHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallPliersHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallPliersHolder-thumb.jpg new file mode 100644 index 00000000..1b3b232c Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallPliersHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallSlottedHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallSlottedHolder-thumb.jpg new file mode 100644 index 00000000..17e2069f Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallSlottedHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallStairs-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallStairs-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallStairs-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallTypeTray-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallTypeTray-thumb.jpg new file mode 100644 index 00000000..7fe3c711 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallTypeTray-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SlatwallWrenchHolder-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SlatwallWrenchHolder-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SlatwallWrenchHolder-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/SpicesRack-thumb.jpg b/extensions/fablabchemnitz/boxes.py/SpicesRack-thumb.jpg new file mode 100644 index 00000000..12e69dbb Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/SpicesRack-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/Stachel-thumb.jpg b/extensions/fablabchemnitz/boxes.py/Stachel-thumb.jpg new file mode 100644 index 00000000..112b4857 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/Stachel-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/StorageRack-2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/StorageRack-2-thumb.jpg new file mode 100644 index 00000000..f9b6599e Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/StorageRack-2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/StorageRack-3-thumb.jpg b/extensions/fablabchemnitz/boxes.py/StorageRack-3-thumb.jpg new file mode 100644 index 00000000..fe2a846f Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/StorageRack-3-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/StorageRack-thumb.jpg b/extensions/fablabchemnitz/boxes.py/StorageRack-thumb.jpg new file mode 100644 index 00000000..eb584227 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/StorageRack-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/StorageShelf-thumb.jpg b/extensions/fablabchemnitz/boxes.py/StorageShelf-thumb.jpg new file mode 100644 index 00000000..2232a1c3 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/StorageShelf-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TrafficLight-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TrafficLight-thumb.jpg new file mode 100644 index 00000000..07973c5e Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TrafficLight-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TrayInsert-2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TrayInsert-2-thumb.jpg new file mode 100644 index 00000000..209d0669 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TrayInsert-2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TrayInsert-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TrayInsert-thumb.jpg new file mode 100644 index 00000000..d460a37e Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TrayInsert-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TrayLayout-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TrayLayout-thumb.jpg new file mode 100644 index 00000000..9577f5a8 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TrayLayout-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TrayLayout2-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TrayLayout2-thumb.jpg new file mode 100644 index 00000000..3ad4ca25 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TrayLayout2-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TriangleLamp-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TriangleLamp-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TriangleLamp-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TwoPiece-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TwoPiece-thumb.jpg new file mode 100644 index 00000000..0107142f Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TwoPiece-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/TypeTray-thumb.jpg b/extensions/fablabchemnitz/boxes.py/TypeTray-thumb.jpg new file mode 100644 index 00000000..9f9547e4 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/TypeTray-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/UBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/UBox-thumb.jpg new file mode 100644 index 00000000..3ebc1dc4 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/UBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/UnevenHeightBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/UnevenHeightBox-thumb.jpg new file mode 100644 index 00000000..6f44a5ee Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/UnevenHeightBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/UniversalBox-thumb.jpg b/extensions/fablabchemnitz/boxes.py/UniversalBox-thumb.jpg new file mode 100644 index 00000000..b634ebc8 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/UniversalBox-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/WaivyKnob-thumb.jpg b/extensions/fablabchemnitz/boxes.py/WaivyKnob-thumb.jpg new file mode 100644 index 00000000..f9bfaeac Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/WaivyKnob-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/WineRack-thumb.jpg b/extensions/fablabchemnitz/boxes.py/WineRack-thumb.jpg new file mode 100644 index 00000000..a57cc765 Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/WineRack-thumb.jpg differ diff --git a/extensions/fablabchemnitz/boxes.py/boxes.exe b/extensions/fablabchemnitz/boxes.py/boxes.exe new file mode 100755 index 00000000..30ec23ad Binary files /dev/null and b/extensions/fablabchemnitz/boxes.py/boxes.exe differ diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.AgricolaInsert.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.AgricolaInsert.inx new file mode 100644 index 00000000..3a6e22c6 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.AgricolaInsert.inx @@ -0,0 +1,43 @@ + + +AgricolaInsert +info.festi.boxes.py.AgricolaInsert +agricolainsert + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./AgricolaInsert-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.AllEdges.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.AllEdges.inx new file mode 100644 index 00000000..dc7944b6 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.AllEdges.inx @@ -0,0 +1,95 @@ + + +AllEdges +info.festi.boxes.py.AllEdges +alledges + + + 100 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + 0 + false + 0.5 + + + + + 2 + 0 + 1 + + + 90.0 + true + + + + + + + + + + + 2.0 + 1.0 + 3.0 + 0.05 + 2.0 + 1.0 + + + 5.0 + 0.1 + 3.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./AllEdges-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.AngledBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.AngledBox.inx new file mode 100644 index 00000000..5afc936c --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.AngledBox.inx @@ -0,0 +1,62 @@ + + +AngledBox +info.festi.boxes.py.AngledBox +angledbox + + + 100.0 + 100.0 + 100.0 + true + + + + + + + 5 + + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./AngledBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.AngledCutJig.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.AngledCutJig.inx new file mode 100644 index 00000000..f69fe5a4 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.AngledCutJig.inx @@ -0,0 +1,48 @@ + + +AngledCutJig +info.festi.boxes.py.AngledCutJig +angledcutjig + + + 50 + 100 + 45.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./AngledCutJig-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Arcade.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Arcade.inx new file mode 100644 index 00000000..9f1d1912 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Arcade.inx @@ -0,0 +1,48 @@ + + +Arcade +info.festi.boxes.py.Arcade +arcade + + + 450.0 + 350.0 + 150.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Arcade-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Atreus21.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Atreus21.inx new file mode 100644 index 00000000..db254455 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Atreus21.inx @@ -0,0 +1,38 @@ + + +Atreus21 +info.festi.boxes.py.Atreus21 +atreus21 + + + true + true + false + false + castle + 4@3/4@6/4@11/4@5/4@0/1@7.8 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Atreus21-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.BasedBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.BasedBox.inx new file mode 100644 index 00000000..e0121a1e --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.BasedBox.inx @@ -0,0 +1,49 @@ + + +BasedBox +info.festi.boxes.py.BasedBox +basedbox + + + 100.0 + 100.0 + 100.0 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./BasedBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.BayonetBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.BayonetBox.inx new file mode 100644 index 00000000..9540c58f --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.BayonetBox.inx @@ -0,0 +1,36 @@ + + +BayonetBox +info.festi.boxes.py.BayonetBox +bayonetbox + + + 50.0 + 10 + 1.0 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./BayonetBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.BinTray.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.BinTray.inx new file mode 100644 index 00000000..688761e9 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.BinTray.inx @@ -0,0 +1,50 @@ + + +BinTray +info.festi.boxes.py.BinTray +bintray + + + 50*3 + 50*3 + 100.0 + true + 0.4 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./BinTray-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.BottleStack.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.BottleStack.inx new file mode 100644 index 00000000..69ab63fb --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.BottleStack.inx @@ -0,0 +1,36 @@ + + +BottleStack +info.festi.boxes.py.BottleStack +bottlestack + + + 80 + 3 + 80 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./BottleStack-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.BurnTest.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.BurnTest.inx new file mode 100644 index 00000000..3aca9e16 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.BurnTest.inx @@ -0,0 +1,48 @@ + + +BurnTest +info.festi.boxes.py.BurnTest +burntest + + + 100 + 0.01 + 2 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./BurnTest-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.CardBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.CardBox.inx new file mode 100644 index 00000000..ad454b25 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.CardBox.inx @@ -0,0 +1,49 @@ + + +CardBox +info.festi.boxes.py.CardBox +cardbox + + + 30 + 65 + 90 + 2 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./CardBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Castle.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Castle.inx new file mode 100644 index 00000000..63f949d7 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Castle.inx @@ -0,0 +1,43 @@ + + +Castle +info.festi.boxes.py.Castle +castle + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Castle-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.ClosedBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.ClosedBox.inx new file mode 100644 index 00000000..846911db --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.ClosedBox.inx @@ -0,0 +1,49 @@ + + +ClosedBox +info.festi.boxes.py.ClosedBox +closedbox + + + 100.0 + 100.0 + 100.0 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./ClosedBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.CoffeeCapsuleHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.CoffeeCapsuleHolder.inx new file mode 100644 index 00000000..1f57e345 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.CoffeeCapsuleHolder.inx @@ -0,0 +1,35 @@ + + +CoffeeCapsuleHolder +info.festi.boxes.py.CoffeeCapsuleHolder +coffeecapsuleholder + + + 4 + 5 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./CoffeeCapsuleHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.ConcaveKnob.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.ConcaveKnob.inx new file mode 100644 index 00000000..b20adad0 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.ConcaveKnob.inx @@ -0,0 +1,39 @@ + + +ConcaveKnob +info.festi.boxes.py.ConcaveKnob +concaveknob + + + 50.0 + 3 + 0.2 + 70.0 + 6.0 + 1.0 + 10.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./ConcaveKnob-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Console.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Console.inx new file mode 100644 index 00000000..e838dd6a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Console.inx @@ -0,0 +1,57 @@ + + +Console +info.festi.boxes.py.Console +console + + + 100 + 100 + 100 + false + 30 + 50 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./Console-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Console2.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Console2.inx new file mode 100644 index 00000000..d30abad9 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Console2.inx @@ -0,0 +1,66 @@ + + +Console2 +info.festi.boxes.py.Console2 +console2 + + + 100 + 100 + 100 + + + + + + + false + 30 + 50 + true + true + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./Console2-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DinRailBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DinRailBox.inx new file mode 100644 index 00000000..c79a2b65 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DinRailBox.inx @@ -0,0 +1,50 @@ + + +DinRailBox +info.festi.boxes.py.DinRailBox +dinrailbox + + + 70 + 90 + 60 + 35.0 + 0.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.8 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./DinRailBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DiscRack.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DiscRack.inx new file mode 100644 index 00000000..d4b8e977 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DiscRack.inx @@ -0,0 +1,52 @@ + + +DiscRack +info.festi.boxes.py.DiscRack +discrack + + + 20*10 + 150.0 + 5.0 + 0.75 + 0.75 + 3.0 + 18 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./DiscRack-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Display.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Display.inx new file mode 100644 index 00000000..4a0c2ea3 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Display.inx @@ -0,0 +1,36 @@ + + +Display +info.festi.boxes.py.Display +display + + + 150.0 + 200.0 + 5.0 + 0.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Display-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DisplayCase.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DisplayCase.inx new file mode 100644 index 00000000..845d977a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DisplayCase.inx @@ -0,0 +1,50 @@ + + +DisplayCase +info.festi.boxes.py.DisplayCase +displaycase + + + 100.0 + 100.0 + 100.0 + true + 2 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./DisplayCase-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DisplayShelf.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DisplayShelf.inx new file mode 100644 index 00000000..6a3e07ba --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DisplayShelf.inx @@ -0,0 +1,52 @@ + + +DisplayShelf +info.festi.boxes.py.DisplayShelf +displayshelf + + + 400 + 100 + 300 + true + 3 + 20.0 + 30.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./DisplayShelf-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DividerTray.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DividerTray.inx new file mode 100644 index 00000000..5d7aef2c --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DividerTray.inx @@ -0,0 +1,60 @@ + + +DividerTray +info.festi.boxes.py.DividerTray +dividertray + + + 50*3 + 50*3 + 100.0 + true + 20 + 0 + 2 + 0.2 + 0 + 1 + 8 + 15 + true + true + false + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./DividerTray-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DoubleFlexDoorBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DoubleFlexDoorBox.inx new file mode 100644 index 00000000..b104988a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DoubleFlexDoorBox.inx @@ -0,0 +1,57 @@ + + +DoubleFlexDoorBox +info.festi.boxes.py.DoubleFlexDoorBox +doubleflexdoorbox + + + 100.0 + 100.0 + 100.0 + true + 15 + 8 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./DoubleFlexDoorBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DrillBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DrillBox.inx new file mode 100644 index 00000000..a1072c6c --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DrillBox.inx @@ -0,0 +1,43 @@ + + +DrillBox +info.festi.boxes.py.DrillBox +drillbox + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./DrillBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.DrillStand.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.DrillStand.inx new file mode 100644 index 00000000..e44fa70a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.DrillStand.inx @@ -0,0 +1,55 @@ + + +DrillStand +info.festi.boxes.py.DrillStand +drillstand + + + 25*6 + 10:20:30 + 25:40:60 + 15.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 60 + 1.0 + 1.0 + 3 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./DrillStand-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.ElectronicsBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.ElectronicsBox.inx new file mode 100644 index 00000000..3d1eb0f3 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.ElectronicsBox.inx @@ -0,0 +1,55 @@ + + +ElectronicsBox +info.festi.boxes.py.ElectronicsBox +electronicsbox + + + 100.0 + 100.0 + 100.0 + true + 25.0 + 2.0 + 3.0 + 3.0 + true + 7.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./ElectronicsBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.EuroRackSkiff.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.EuroRackSkiff.inx new file mode 100644 index 00000000..ec0d1739 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.EuroRackSkiff.inx @@ -0,0 +1,47 @@ + + +EuroRackSkiff +info.festi.boxes.py.EuroRackSkiff +eurorackskiff + + + 100.0 + 84 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./EuroRackSkiff-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FanHole.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FanHole.inx new file mode 100644 index 00000000..c6b0368a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FanHole.inx @@ -0,0 +1,42 @@ + + +FanHole +info.festi.boxes.py.FanHole +fanhole + + + 80 + 3 + 5 + 10 + 0.2 + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./FanHole-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox.inx new file mode 100644 index 00000000..e38bacdf --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox.inx @@ -0,0 +1,57 @@ + + +FlexBox +info.festi.boxes.py.FlexBox +flexbox + + + 100.0 + 100.0 + 100.0 + true + 15 + 8 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./FlexBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox2.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox2.inx new file mode 100644 index 00000000..a526a9ad --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox2.inx @@ -0,0 +1,57 @@ + + +FlexBox2 +info.festi.boxes.py.FlexBox2 +flexbox2 + + + 100.0 + 100.0 + 100.0 + true + 15 + 8 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./FlexBox2-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox3.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox3.inx new file mode 100644 index 00000000..36d3a53c --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox3.inx @@ -0,0 +1,58 @@ + + +FlexBox3 +info.festi.boxes.py.FlexBox3 +flexbox3 + + + 100.0 + 100.0 + true + 100.0 + 10.0 + 10.0 + 1.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./FlexBox3-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox4.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox4.inx new file mode 100644 index 00000000..6abfee3d --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox4.inx @@ -0,0 +1,57 @@ + + +FlexBox4 +info.festi.boxes.py.FlexBox4 +flexbox4 + + + 100.0 + 100.0 + 100.0 + true + 15 + 8 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./FlexBox4-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox5.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox5.inx new file mode 100644 index 00000000..f69c3260 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox5.inx @@ -0,0 +1,57 @@ + + +FlexBox5 +info.festi.boxes.py.FlexBox5 +flexbox5 + + + 100.0 + 100.0 + true + 60 + 60 + 8 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./FlexBox5-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest.inx new file mode 100644 index 00000000..1e467deb --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest.inx @@ -0,0 +1,40 @@ + + +FlexTest +info.festi.boxes.py.FlexTest +flextest + + + 100.0 + 100.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./FlexTest-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest2.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest2.inx new file mode 100644 index 00000000..970e5ca6 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest2.inx @@ -0,0 +1,35 @@ + + +FlexTest2 +info.festi.boxes.py.FlexTest2 +flextest2 + + + 100.0 + 100.0 + 1 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./FlexTest2-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Folder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Folder.inx new file mode 100644 index 00000000..18024bdf --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Folder.inx @@ -0,0 +1,49 @@ + + +Folder +info.festi.boxes.py.Folder +folder + + + 100.0 + 100.0 + 20 + 10.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Folder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.GearBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.GearBox.inx new file mode 100644 index 00000000..7cb87728 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.GearBox.inx @@ -0,0 +1,50 @@ + + +GearBox +info.festi.boxes.py.GearBox +gearbox + + + 8 + 20 + 3 + 6.0 + 4 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./GearBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Gears.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Gears.inx new file mode 100644 index 00000000..7739f349 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Gears.inx @@ -0,0 +1,41 @@ + + +Gears +info.festi.boxes.py.Gears +gears + + + 12 + 6.0 + 75 + 32 + 0.0 + 0 + 5 + 20 + 20 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Gears-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.HeartBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.HeartBox.inx new file mode 100644 index 00000000..00612d3f --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.HeartBox.inx @@ -0,0 +1,58 @@ + + +HeartBox +info.festi.boxes.py.HeartBox +heartbox + + + 150 + 50 + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 1.0 + 0.0 + 1.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./HeartBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.HexHoles.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.HexHoles.inx new file mode 100644 index 00000000..2a30076d --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.HexHoles.inx @@ -0,0 +1,41 @@ + + +HexHoles +info.festi.boxes.py.HexHoles +hexholes + + + 100.0 + 100.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 10.0 + 3.0 + + + + + + ./HexHoles-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.HingeBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.HingeBox.inx new file mode 100644 index 00000000..e73d4ede --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.HingeBox.inx @@ -0,0 +1,63 @@ + + +HingeBox +info.festi.boxes.py.HingeBox +hingebox + + + 100.0 + 100.0 + 100.0 + true + 20.0 + 0.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 3.2 + 5 + 2 + + + + + 1.5 + 0.05 + 2.0 + + + ./HingeBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Hook.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Hook.inx new file mode 100644 index 00000000..26809926 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Hook.inx @@ -0,0 +1,50 @@ + + +Hook +info.festi.boxes.py.Hook +hook + + + 40.0 + 40.0 + 40.0 + 20.0 + 45.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Hook-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.IntegratedHingeBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.IntegratedHingeBox.inx new file mode 100644 index 00000000..aedc8d11 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.IntegratedHingeBox.inx @@ -0,0 +1,55 @@ + + +IntegratedHingeBox +info.festi.boxes.py.IntegratedHingeBox +integratedhingebox + + + 100.0 + 100.0 + 100.0 + true + 20.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.0 + 2.0 + 0.1 + + + ./IntegratedHingeBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Keypad.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Keypad.inx new file mode 100644 index 00000000..e34414da --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Keypad.inx @@ -0,0 +1,54 @@ + + +Keypad +info.festi.boxes.py.Keypad +keypad + + + 30 + 1.5 + false + 1.5 + true + false + false + castle + 4x3 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Keypad-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.LBeam.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.LBeam.inx new file mode 100644 index 00000000..0a069d12 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.LBeam.inx @@ -0,0 +1,49 @@ + + +LBeam +info.festi.boxes.py.LBeam +lbeam + + + 100.0 + 100.0 + 100.0 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./LBeam-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.LaserClamp.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.LaserClamp.inx new file mode 100644 index 00000000..64a57115 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.LaserClamp.inx @@ -0,0 +1,48 @@ + + +LaserClamp +info.festi.boxes.py.LaserClamp +laserclamp + + + 25.0 + 50.0 + 0.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./LaserClamp-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.LaserHoldfast.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.LaserHoldfast.inx new file mode 100644 index 00000000..c8d518d7 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.LaserHoldfast.inx @@ -0,0 +1,36 @@ + + +LaserHoldfast +info.festi.boxes.py.LaserHoldfast +laserholdfast + + + 25 + 40 + 5.0 + 5.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./LaserHoldfast-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.MagazinFile.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.MagazinFile.inx new file mode 100644 index 00000000..3e99fad0 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.MagazinFile.inx @@ -0,0 +1,50 @@ + + +MagazinFile +info.festi.boxes.py.MagazinFile +magazinfile + + + 100.0 + 100.0 + 100.0 + 0.0 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./MagazinFile-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.MakitaPowerSupply.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.MakitaPowerSupply.inx new file mode 100644 index 00000000..4f4fb8d1 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.MakitaPowerSupply.inx @@ -0,0 +1,47 @@ + + +MakitaPowerSupply +info.festi.boxes.py.MakitaPowerSupply +makitapowersupply + + + 8.0 + 6.3 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./MakitaPowerSupply-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.NemaMount.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.NemaMount.inx new file mode 100644 index 00000000..3df6563a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.NemaMount.inx @@ -0,0 +1,56 @@ + + +NemaMount +info.festi.boxes.py.NemaMount +nemamount + + + + + + + + + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./NemaMount-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.NemaPattern.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.NemaPattern.inx new file mode 100644 index 00000000..badc418b --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.NemaPattern.inx @@ -0,0 +1,57 @@ + + +NemaPattern +info.festi.boxes.py.NemaPattern +nemapattern + + + + + + + + + + + + + + 0.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./NemaPattern-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.NotesHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.NotesHolder.inx new file mode 100644 index 00000000..1fb90a2d --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.NotesHolder.inx @@ -0,0 +1,61 @@ + + +NotesHolder +info.festi.boxes.py.NotesHolder +notesholder + + + 78 + 78 + 35 + + + + + + + 40 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./NotesHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.OpenBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.OpenBox.inx new file mode 100644 index 00000000..6f6396d5 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.OpenBox.inx @@ -0,0 +1,49 @@ + + +OpenBox +info.festi.boxes.py.OpenBox +openbox + + + 100.0 + 100.0 + 100.0 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./OpenBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.OrganPipe.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.OrganPipe.inx new file mode 100644 index 00000000..e7289223 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.OrganPipe.inx @@ -0,0 +1,72 @@ + + +OrganPipe +info.festi.boxes.py.OrganPipe +organpipe + + + + + + + + + + + + + + + + + 2 + 2.0 + 0.25 + 0.3 + 0 + 588.4 + + + + + + + false + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.0 + 1.0 + 3.0 + 0.0 + 3.0 + 1.0 + + + ./OrganPipe-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.OttoBody.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.OttoBody.inx new file mode 100644 index 00000000..5d31ae2a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.OttoBody.inx @@ -0,0 +1,48 @@ + + +OttoBody +info.festi.boxes.py.OttoBody +ottobody + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.0 + 2.0 + 0.1 + + + ./OttoBody-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.OttoLegs.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.OttoLegs.inx new file mode 100644 index 00000000..16baec5d --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.OttoLegs.inx @@ -0,0 +1,48 @@ + + +OttoLegs +info.festi.boxes.py.OttoLegs +ottolegs + + + 3.0 + 2.6 + 34.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.0 + 1.0 + 1.0 + 0.0 + 1.0 + 1.0 + + + ./OttoLegs-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.OttoSoles.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.OttoSoles.inx new file mode 100644 index 00000000..03609038 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.OttoSoles.inx @@ -0,0 +1,37 @@ + + +OttoSoles +info.festi.boxes.py.OttoSoles +ottosoles + + + 56.0 + 36.0 + 4.0 + 5.0 + 2 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./OttoSoles-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.PaintStorage.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.PaintStorage.inx new file mode 100644 index 00000000..151c081f --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.PaintStorage.inx @@ -0,0 +1,58 @@ + + +PaintStorage +info.festi.boxes.py.PaintStorage +paintstorage + + + 100 + 300 + 50 + 30 + 10 + false + false + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./PaintStorage-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.PaperBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.PaperBox.inx new file mode 100644 index 00000000..f2f106ab --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.PaperBox.inx @@ -0,0 +1,42 @@ + + +PaperBox +info.festi.boxes.py.PaperBox +paperbox + + + 100.0 + 100.0 + 100.0 + 15 + 7 + 20 + 0.5 + 1.5 + 0.07982998571223732 + 15 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./PaperBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.PhoneHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.PhoneHolder.inx new file mode 100644 index 00000000..b1bccd41 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.PhoneHolder.inx @@ -0,0 +1,52 @@ + + +PhoneHolder +info.festi.boxes.py.PhoneHolder +phoneholder + + + 142 + 73 + 11 + 25 + 30 + 76 + 16 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./PhoneHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Planetary.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Planetary.inx new file mode 100644 index 00000000..9969ab16 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Planetary.inx @@ -0,0 +1,38 @@ + + +Planetary +info.festi.boxes.py.Planetary +planetary + + + 8 + 20 + 0 + 0 + 3 + 6.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Planetary-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Planetary2.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Planetary2.inx new file mode 100644 index 00000000..37f56388 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Planetary2.inx @@ -0,0 +1,68 @@ + + +Planetary2 +info.festi.boxes.py.Planetary2 +planetary2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20 + 20 + 0 + 1 + 3 + 6.0 + 2.4 + 4.0 + 3.1 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Planetary2-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Platonic.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Platonic.inx new file mode 100644 index 00000000..db07488b --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Platonic.inx @@ -0,0 +1,54 @@ + + +Platonic +info.festi.boxes.py.Platonic +platonic + + + 60 + true + + + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Platonic-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.PoleHook.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.PoleHook.inx new file mode 100644 index 00000000..b552134c --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.PoleHook.inx @@ -0,0 +1,50 @@ + + +PoleHook +info.festi.boxes.py.PoleHook +polehook + + + 50.0 + 7.8 + 13.0 + 5.5 + 4.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./PoleHook-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Pulley.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Pulley.inx new file mode 100644 index 00000000..0629f36e --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Pulley.inx @@ -0,0 +1,53 @@ + + +Pulley +info.festi.boxes.py.Pulley +pulley + + + 6.0 + + + + + + + + + + + + + + + + + 20 + 5 + false + 0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Pulley-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Rack10Box.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Rack10Box.inx new file mode 100644 index 00000000..0a6f092a --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Rack10Box.inx @@ -0,0 +1,67 @@ + + +Rack10Box +info.festi.boxes.py.Rack10Box +rack10box + + + 100.0 + + + + + + + + + + + + + + + + + + + 25.0 + 2.0 + 3.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Rack10Box-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Rack19Box.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Rack19Box.inx new file mode 100644 index 00000000..f8f74443 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Rack19Box.inx @@ -0,0 +1,67 @@ + + +Rack19Box +info.festi.boxes.py.Rack19Box +rack19box + + + 100.0 + + + + + + + + + + + + + + + + + + + 25.0 + 2.0 + 3.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Rack19Box-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Rack19HalfWidth.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Rack19HalfWidth.inx new file mode 100644 index 00000000..e4499a95 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Rack19HalfWidth.inx @@ -0,0 +1,36 @@ + + +Rack19HalfWidth +info.festi.boxes.py.Rack19HalfWidth +rack19halfwidth + + + 1 + xxmpwx + 20 + 124 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Rack19HalfWidth-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.RackBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.RackBox.inx new file mode 100644 index 00000000..6acf40ac --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.RackBox.inx @@ -0,0 +1,54 @@ + + +RackBox +info.festi.boxes.py.RackBox +rackbox + + + 100.0 + 100.0 + 100.0 + true + 25.0 + 2.0 + 3.0 + 4.0 + 7.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.2 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./RackBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.RectangularWall.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.RectangularWall.inx new file mode 100644 index 00000000..cf1a0455 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.RectangularWall.inx @@ -0,0 +1,275 @@ + + +RectangularWall +info.festi.boxes.py.RectangularWall +rectangularwall + + + 100 + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 3.2 + 5 + 2 + + + + + 1.5 + 0.05 + 2.0 + + + 5.0 + 0.1 + 3.0 + + + 50 + 1.5 + 0.2 + 3 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 20.0 + 0.0 + 3.0 + 20.0 + + + true + + + + + 0.3 + + + 0 + false + 0.5 + + + + + 2 + 0 + 1 + + + 1.0 + 2.0 + 0.1 + + + 90.0 + true + + + + + + + + + + + 2.0 + 1.0 + 3.0 + 0.05 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./RectangularWall-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.RegularBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.RegularBox.inx new file mode 100644 index 00000000..57dd15f9 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.RegularBox.inx @@ -0,0 +1,59 @@ + + +RegularBox +info.festi.boxes.py.RegularBox +regularbox + + + 100.0 + true + 50.0 + 5 + + + + + + + + + + 1.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./RegularBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.RobotArm.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.RobotArm.inx new file mode 100644 index 00000000..cdfed0c6 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.RobotArm.inx @@ -0,0 +1,120 @@ + + +RobotArm +info.festi.boxes.py.RobotArm +robotarm + + + + + + + + + + + + + + + + + 50.0 + + + + + + + + + + + + + + + 50.0 + + + + + + + + + + + + + + + 50.0 + + + + + + + + + + + + + + + 50.0 + + + + + + + + + + + + + + + 50.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./RobotArm-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Rotary.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Rotary.inx new file mode 100644 index 00000000..30139834 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Rotary.inx @@ -0,0 +1,51 @@ + + +Rotary +info.festi.boxes.py.Rotary +rotary + + + 72.0 + 5.0 + 6.0 + 8.0 + 32.0 + 7.1 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./Rotary-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.RoundedBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.RoundedBox.inx new file mode 100644 index 00000000..35c88fd1 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.RoundedBox.inx @@ -0,0 +1,72 @@ + + +RoundedBox +info.festi.boxes.py.RoundedBox +roundedbox + + + 100.0 + 100.0 + 100.0 + true + 15 + + + + + + + + + + + + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./RoundedBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.RoyalGame.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.RoyalGame.inx new file mode 100644 index 00000000..0bcee34c --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.RoyalGame.inx @@ -0,0 +1,46 @@ + + +RoyalGame +info.festi.boxes.py.RoyalGame +royalgame + + + 200 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./RoyalGame-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SBCMicroRack.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SBCMicroRack.inx new file mode 100644 index 00000000..e096e108 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SBCMicroRack.inx @@ -0,0 +1,65 @@ + + +SBCMicroRack +info.festi.boxes.py.SBCMicroRack +sbcmicrorack + + + 56 + 85 + 5 + 3 + 3 + 28 + 3.5 + 58 + 49 + 2.75 + 18 + 53 + false + false + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./SBCMicroRack-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.ShutterBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.ShutterBox.inx new file mode 100644 index 00000000..fd823128 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.ShutterBox.inx @@ -0,0 +1,59 @@ + + +ShutterBox +info.festi.boxes.py.ShutterBox +shutterbox + + + 150 + 100 + 100 + 40.0 + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 1.05 + 2.0 + 0.75 + 5.0 + + + ./ShutterBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SideDoorHousing.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SideDoorHousing.inx new file mode 100644 index 00000000..b98020cf --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SideDoorHousing.inx @@ -0,0 +1,61 @@ + + +SideDoorHousing +info.festi.boxes.py.SideDoorHousing +sidedoorhousing + + + 100 + 100 + 100 + + + + + + + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./SideDoorHousing-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Silverware.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Silverware.inx new file mode 100644 index 00000000..c9d48917 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Silverware.inx @@ -0,0 +1,38 @@ + + +Silverware +info.festi.boxes.py.Silverware +silverware + + + 250 + 154 + 120 + 30 + 150 + 120 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Silverware-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallCaliper.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallCaliper.inx new file mode 100644 index 00000000..768fe1bd --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallCaliper.inx @@ -0,0 +1,60 @@ + + +SlatwallCaliper +info.festi.boxes.py.SlatwallCaliper +slatwallcaliper + + + 100 + 18.0 + 6.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallCaliper-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallChiselHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallChiselHolder.inx new file mode 100644 index 00000000..f0423ddb --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallChiselHolder.inx @@ -0,0 +1,68 @@ + + +SlatwallChiselHolder +info.festi.boxes.py.SlatwallChiselHolder +slatwallchiselholder + + + 120 + 30.0 + 30.0 + 5.0 + 5.0 + 6 + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallChiselHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallConsole.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallConsole.inx new file mode 100644 index 00000000..ee568497 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallConsole.inx @@ -0,0 +1,62 @@ + + +SlatwallConsole +info.festi.boxes.py.SlatwallConsole +slatwallconsole + + + 100 + 100 + true + 50 + 35 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallConsole-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallDrillBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallDrillBox.inx new file mode 100644 index 00000000..46ce58a2 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallDrillBox.inx @@ -0,0 +1,61 @@ + + +SlatwallDrillBox +info.festi.boxes.py.SlatwallDrillBox +slatwalldrillbox + + + 25*6 + 10:20:30 + 25:40:60 + 15.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallDrillBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallEdges.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallEdges.inx new file mode 100644 index 00000000..c274acc0 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallEdges.inx @@ -0,0 +1,58 @@ + + +SlatwallEdges +info.festi.boxes.py.SlatwallEdges +slatwalledges + + + 120 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallEdges-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPinRow.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPinRow.inx new file mode 100644 index 00000000..19688c65 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPinRow.inx @@ -0,0 +1,65 @@ + + +SlatwallPinRow +info.festi.boxes.py.SlatwallPinRow +slatwallpinrow + + + 8 + 35 + 10 + 35 + 0.0 + 20.0 + 3 + 50.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallPinRow-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPlaneHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPlaneHolder.inx new file mode 100644 index 00000000..caf7733b --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPlaneHolder.inx @@ -0,0 +1,61 @@ + + +SlatwallPlaneHolder +info.festi.boxes.py.SlatwallPlaneHolder +slatwallplaneholder + + + 80 + 250 + 30 + 80 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallPlaneHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPliersHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPliersHolder.inx new file mode 100644 index 00000000..7d3f9cbd --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPliersHolder.inx @@ -0,0 +1,50 @@ + + +SlatwallPliersHolder +info.festi.boxes.py.SlatwallPliersHolder +slatwallpliersholder + + + 100*3 + 50 + 50 + true + 45 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./SlatwallPliersHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallSlottedHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallSlottedHolder.inx new file mode 100644 index 00000000..d6a50140 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallSlottedHolder.inx @@ -0,0 +1,69 @@ + + +SlatwallSlottedHolder +info.festi.boxes.py.SlatwallSlottedHolder +slatwallslottedholder + + + 120 + 50.0 + 50.0 + 5.0 + 35.0 + 5.0 + 6 + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallSlottedHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallStairs.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallStairs.inx new file mode 100644 index 00000000..95e8bf88 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallStairs.inx @@ -0,0 +1,61 @@ + + +SlatwallStairs +info.festi.boxes.py.SlatwallStairs +slatwallstairs + + + 250/3 + 40*3 + 30:100:180 + 30 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallStairs-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallTypeTray.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallTypeTray.inx new file mode 100644 index 00000000..e02e1915 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallTypeTray.inx @@ -0,0 +1,76 @@ + + +SlatwallTypeTray +info.festi.boxes.py.SlatwallTypeTray +slatwalltypetray + + + 50*3 + 50*3 + 100.0 + 0.0 + true + + + + + + + 0.0 + 0.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallTypeTray-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallWrenchHolder.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallWrenchHolder.inx new file mode 100644 index 00000000..6e2e50db --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallWrenchHolder.inx @@ -0,0 +1,65 @@ + + +SlatwallWrenchHolder +info.festi.boxes.py.SlatwallWrenchHolder +slatwallwrenchholder + + + 100 + 30.0 + 11 + 8.0 + 25.0 + 3.0 + 5.0 + 0.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + + + + + + + 4.0 + 101.6 + 1.0 + 2.0 + + + ./SlatwallWrenchHolder-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.SpicesRack.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.SpicesRack.inx new file mode 100644 index 00000000..1aed13aa --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.SpicesRack.inx @@ -0,0 +1,52 @@ + + +SpicesRack +info.festi.boxes.py.SpicesRack +spicesrack + + + 55.0 + 60.0 + 10.0 + 5 + 6 + false + false + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 1.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./SpicesRack-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.Stachel.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.Stachel.inx new file mode 100644 index 00000000..d5c44fce --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.Stachel.inx @@ -0,0 +1,35 @@ + + +Stachel +info.festi.boxes.py.Stachel +stachel + + + 115.0 + 25.0 + 7.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./Stachel-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.StorageRack.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.StorageRack.inx new file mode 100644 index 00000000..9969dc09 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.StorageRack.inx @@ -0,0 +1,67 @@ + + +StorageRack +info.festi.boxes.py.StorageRack +storagerack + + + 200 + 30 + 100.0 + 50*3 + true + + + + + + + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + ./StorageRack-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.StorageShelf.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.StorageShelf.inx new file mode 100644 index 00000000..e229321d --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.StorageShelf.inx @@ -0,0 +1,132 @@ + + +StorageShelf +info.festi.boxes.py.StorageShelf +storageshelf + + + 100.0 + 50*3 + 50*3 + true + + + + + + + + + + + + + + + + + + + + + 0.0 + false + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + 0 + false + 0.5 + + + + + 2 + 0 + 1 + + + 3.2 + 5 + 2 + + + + + 1.5 + 0.05 + 2.0 + + + 90.0 + true + + + + + + + + + + + 2.0 + 1.0 + 3.0 + 0.05 + 2.0 + 1.0 + + + 5.0 + 0.1 + 3.0 + + + 150.0 + 2.0 + 30.0 + 1 + + + ./StorageShelf-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.TrafficLight.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.TrafficLight.inx new file mode 100644 index 00000000..a0e93800 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.TrafficLight.inx @@ -0,0 +1,50 @@ + + +TrafficLight +info.festi.boxes.py.TrafficLight +trafficlight + + + 100.0 + 100 + 50 + 3 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./TrafficLight-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.TrayInsert.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.TrayInsert.inx new file mode 100644 index 00000000..bd069991 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.TrayInsert.inx @@ -0,0 +1,36 @@ + + +TrayInsert +info.festi.boxes.py.TrayInsert +trayinsert + + + 50*3 + 50*3 + 100.0 + true + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./TrayInsert-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.TriangleLamp.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.TriangleLamp.inx new file mode 100644 index 00000000..529fd12f --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.TriangleLamp.inx @@ -0,0 +1,51 @@ + + +TriangleLamp +info.festi.boxes.py.TriangleLamp +trianglelamp + + + 250 + 40 + 30 + 4 + 2 + false + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 3.0 + 0.0 + 3.0 + 1.0 + + + ./TriangleLamp-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.TwoPiece.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.TwoPiece.inx new file mode 100644 index 00000000..f57b14b4 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.TwoPiece.inx @@ -0,0 +1,51 @@ + + +TwoPiece +info.festi.boxes.py.TwoPiece +twopiece + + + 100.0 + 100.0 + 100.0 + 0.0 + true + 0.15 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./TwoPiece-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.TypeTray.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.TypeTray.inx new file mode 100644 index 00000000..0000aa83 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.TypeTray.inx @@ -0,0 +1,133 @@ + + +TypeTray +info.festi.boxes.py.TypeTray +typetray + + + 50*3 + 50*3 + 100.0 + 0.0 + true + + + + + + + + + + + + + + + + + + + + + 30 + 70 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 0.5 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + 0 + false + 0.5 + + + + + 2 + 0 + 1 + + + 3.2 + 5 + 2 + + + + + 1.5 + 0.05 + 2.0 + + + 90.0 + true + + + + + + + + + + + 2.0 + 1.0 + 3.0 + 0.05 + 2.0 + 1.0 + + + 5.0 + 0.1 + 3.0 + + + 150.0 + 2.0 + 30.0 + 1 + + + ./TypeTray-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.UBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.UBox.inx new file mode 100644 index 00000000..9dc53fd3 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.UBox.inx @@ -0,0 +1,135 @@ + + +UBox +info.festi.boxes.py.UBox +ubox + + + + + + + + + + + + + + + + + 100.0 + 100.0 + 100.0 + 30.0 + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + 0 + false + 0.5 + + + + + 2 + 0 + 1 + + + 3.2 + 5 + 2 + + + + + 1.5 + 0.05 + 2.0 + + + 90.0 + true + + + + + + + + + + + 2.0 + 1.0 + 3.0 + 0.05 + 2.0 + 1.0 + + + 5.0 + 0.1 + 3.0 + + + 150.0 + 2.0 + 30.0 + 0.0 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./UBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.UnevenHeightBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.UnevenHeightBox.inx new file mode 100644 index 00000000..2c8c1900 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.UnevenHeightBox.inx @@ -0,0 +1,76 @@ + + +UnevenHeightBox +info.festi.boxes.py.UnevenHeightBox +unevenheightbox + + + + + + + + + 100.0 + 100.0 + true + 50 + 50 + 100 + 100 + false + 0 + eeee + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 120 + 0.1 + false + false + 0.3 + + + + + + + 30 + 0.2 + + + ./UnevenHeightBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.UniversalBox.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.UniversalBox.inx new file mode 100644 index 00000000..8567fd9f --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.UniversalBox.inx @@ -0,0 +1,145 @@ + + +UniversalBox +info.festi.boxes.py.UniversalBox +universalbox + + + + + + + + + + + + + + + + + + + + + + + 100.0 + 100.0 + 100.0 + true + + + + + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + 60 + 2.0 + 1.0 + 4.0 + + + 0 + true + 0.5 + + + + + 2 + 0 + 1 + + + 3.2 + 5 + 2 + + + + + 1.5 + 0.05 + 2.0 + + + 90.0 + true + + + + + + + + + + + 2.0 + 1.0 + 3.0 + 0.05 + 2.0 + 1.0 + + + 5.0 + 0.1 + 3.0 + + + 150.0 + 2.0 + 30.0 + 1 + + + 1.05 + 1.0 + 0.5 + 5.0 + + + ./UniversalBox-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.WaivyKnob.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.WaivyKnob.inx new file mode 100644 index 00000000..09b4ce01 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.WaivyKnob.inx @@ -0,0 +1,38 @@ + + +WaivyKnob +info.festi.boxes.py.WaivyKnob +waivyknob + + + 50.0 + 20 + 45.0 + 6.0 + 1.0 + 10.0 + + + 3.0 + 0.0 + false + 100 + 0.1 + + + ./WaivyKnob-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes.py.WineRack.inx b/extensions/fablabchemnitz/boxes.py/boxes.py.WineRack.inx new file mode 100644 index 00000000..338af13c --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes.py.WineRack.inx @@ -0,0 +1,54 @@ + + +WineRack +info.festi.boxes.py.WineRack +winerack + + + 400 + 300 + 210 + 46.0 + + + + + + + + 3.0 + 0.0 + false + 100 + 0.1 + + + 90.0 + + + + + 2.0 + 1.0 + 2.0 + 0.0 + 2.0 + 1.0 + + + ./WineRack-thumb.jpg + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxes.py/boxes_proxy.py b/extensions/fablabchemnitz/boxes.py/boxes_proxy.py new file mode 100644 index 00000000..bed58d35 --- /dev/null +++ b/extensions/fablabchemnitz/boxes.py/boxes_proxy.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 + +""" +Extension for InkScape 1.0+ + +boxes.py wrapper script to make it work on Windows and Linux systems without duplicating .inx files + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 27.04.2021 +Last patch: 27.04.2021 +License: GNU GPL v3 + +""" +import inkex +import sys +import os +from lxml import etree + +class boxesPyWrapper(inkex.GenerateExtension): + + def add_arguments(self, pars): + args = sys.argv[1:] + for arg in args: + key=arg.split("=")[0] + if len(arg.split("=")) == 2: + value=arg.split("=")[1] + try: + pars.add_argument(key, default=key) + except: + pass #ignore duplicate id arg + + def generate(self): + box_file = "box.svg" + if os.path.exists(box_file): + os.remove(box_file) #remove previously generated box file at the beginning + + cmd = "boxes" #boxes.exe in this local dir (or if present in %PATH%), or boxes from $PATH in linux + for arg in vars(self.options): + if arg != "output" and arg != "ids" and arg != "selected_nodes": + #inkex.utils.debug(str(arg) + " = " + str(getattr(self.options, arg))) + #fix behaviour of "original" arg which does not correctly gets interpreted if set to false + if arg == "original" and str(getattr(self.options, arg)) == "false": + continue + if arg in ("input_file", "tab"): + continue + else: + cmd += " --" + arg + " " + str(getattr(self.options, arg)) + cmd += " --output " + box_file + " " + box_file #we need to add box_file string twice in a row. Otherwise program executable throws an error + cmd = cmd.replace("boxes --generator", "boxes") + + # run boxes with the parameters provided + with os.popen(cmd, "r") as boxes: + result = boxes.read() + + # check output existence + try: + stream = open(box_file, 'r') + except FileNotFoundError as e: + inkex.utils.debug("There was no " + box_file + " output generated. Cannot continue. Command was:") + inkex.utils.debug(str(cmd)) + exit(1) + + # write the generated SVG into Inkscape's canvas + p = etree.XMLParser(huge_tree=True) + doc = etree.parse(stream, parser=etree.XMLParser(huge_tree=True)) + stream.close() + if os.path.exists(box_file): + os.remove(box_file) #remove previously generated box file at the end too + + group = inkex.Group(id="boxes.py") + for element in doc.getroot(): + group.append(element) + return group + +if __name__ == '__main__': + boxesPyWrapper().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.inx b/extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.inx new file mode 100644 index 00000000..0b11135d --- /dev/null +++ b/extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.inx @@ -0,0 +1,88 @@ + + + Box Maker - Tabbed + fablabchemnitz.de.box_maker_tabbed + + + + + + + + + + + + + + 180 + 240 + 50 + + + + + + + + 3.0 + + + + + + 0.0 + 0.0 + + + + + + + + + + + + 3.0 + 0.1 + 0.01 + + + + + + + + + + + + + + + + + 2 + 3 + + + + + + + 1.0 + + + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.py b/extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.py new file mode 100644 index 00000000..7e1d1e01 --- /dev/null +++ b/extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.py @@ -0,0 +1,638 @@ +#!/usr/bin/env python3 +''' +Generates Inkscape SVG file containing box components needed to +laser cut a tabbed construction box taking kerf and clearance into account + +Copyright (C) 2011 elliot white + +Changelog: +19/12/2014 Paul Hutchison: + - Ability to generate 6, 5, 4, 3 or 2-panel cutouts + - Ability to also generate evenly spaced dividers within the box + including tabbed joints to box sides and slots to slot into each other + +23/06/2015 by Paul Hutchison: + - Updated for Inkscape's 0.91 breaking change (unittouu) + +v0.93 - 15/8/2016 by Paul Hutchison: + - Added Hairline option and fixed open box height bug + +v0.94 - 05/01/2017 by Paul Hutchison: + - Added option for keying dividers into walls/floor/none + +v0.95 - 2017-04-20 by Jim McBeath + - Added optional dimples + +v0.96 - 2017-04-24 by Jim McBeath + - Refactored to make box type, tab style, and layout all orthogonal + - Added Tab Style option to allow creating waffle-block-style tabs + - Made open box size correct based on inner or outer dimension choice + - Fixed a few tab bugs + +v0.99 - 2020-06-01 by Paul Hutchison + - Preparatory release with Inkscape 1.0 compatibility upgrades (further fixes to come!) + - Removed Antisymmetric option as it's broken, kinda pointless and looks weird + - Fixed divider issues with Rotate Symmetric + - Made individual panels and their keyholes/slots grouped + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +''' +__version__ = "0.99" ### please report bugs, suggestions etc at https://github.com/paulh-rnd/TabbedBoxMaker ### + +import os +import inkex +import math +from copy import deepcopy + +linethickness = 1 # default unless overridden by settings + +def log(text): + if 'SCHROFF_LOG' in os.environ: + f = open(os.environ.get('SCHROFF_LOG'), 'a') + f.write(text + "\n") + +def newGroup(canvas): + # Create a new group and add element created from line string + panelId = canvas.svg.get_unique_id('panel') + group = canvas.svg.get_current_layer().add(inkex.Group(id=panelId)) + return group + +def getLine(XYstring): + line = inkex.PathElement() + line.style = { 'stroke': '#000000', 'stroke-width' : str(linethickness), 'fill': 'none' } + line.path = XYstring + #etree.SubElement(parent, inkex.addNS('path','svg'), drw) + return line + +# jslee - shamelessly adapted from sample code on below Inkscape wiki page 2015-07-28 +# http://wiki.inkscape.org/wiki/index.php/Generating_objects_from_extensions +def getCircle(r, c): + (cx, cy) = c + log("putting circle at (%d,%d)" % (cx,cy)) + circle = inkex.PathElement.arc((cx, cy), r) + circle.style = { 'stroke': '#000000', 'stroke-width': str(linethickness), 'fill': 'none' } + return circle + +def dimpleStr(tabVector,vectorX,vectorY,directionX,directionY,dirxN,diryN,ddir,isTab): + ds='' + if not isTab: + ddir = -ddir + if dimpleHeight>0 and tabVector!=0: + if tabVector>0: + dimpleStart=(tabVector-dimpleLength)/2-dimpleHeight + tabSgn=1 + else: + dimpleStart=(tabVector+dimpleLength)/2+dimpleHeight + tabSgn=-1 + Vxd=vectorX+dirxN*dimpleStart + Vyd=vectorY+diryN*dimpleStart + ds+='L '+str(Vxd)+','+str(Vyd)+' ' + Vxd=Vxd+(tabSgn*dirxN-ddir*directionX)*dimpleHeight + Vyd=Vyd+(tabSgn*diryN-ddir*directionY)*dimpleHeight + ds+='L '+str(Vxd)+','+str(Vyd)+' ' + Vxd=Vxd+tabSgn*dirxN*dimpleLength + Vyd=Vyd+tabSgn*diryN*dimpleLength + ds+='L '+str(Vxd)+','+str(Vyd)+' ' + Vxd=Vxd+(tabSgn*dirxN+ddir*directionX)*dimpleHeight + Vyd=Vyd+(tabSgn*diryN+ddir*directionY)*dimpleHeight + ds+='L '+str(Vxd)+','+str(Vyd)+' ' + return ds + +def side(group,root,startOffset,endOffset,tabVec,length,direction,isTab,isDivider,numDividers,dividerSpacing): + rootX, rootY = root + startOffsetX, startOffsetY = startOffset + endOffsetX, endOffsetY = endOffset + directionX, directionY = direction + + if (tabSymmetry==1): # waffle-block style rotationally symmetric tabs + divisions=int((length-2*thickness)/nomTab) + if divisions%2: divisions+=1 # make divs even + divisions=float(divisions) + tabs=divisions/2 # tabs for side + else: + divisions=int(length/nomTab) + if not divisions%2: divisions-=1 # make divs odd + divisions=float(divisions) + tabs=(divisions-1)/2 # tabs for side + + if (tabSymmetry==1): # waffle-block style rotationally symmetric tabs + gapWidth=tabWidth=(length-2*thickness)/divisions + elif equalTabs: + gapWidth=tabWidth=length/divisions + else: + tabWidth=nomTab + gapWidth=(length-tabs*nomTab)/(divisions-tabs) + + if isTab: # kerf correction + gapWidth-=correction + tabWidth+=correction + first=correction/2 + else: + gapWidth+=correction + tabWidth-=correction + first=-correction/2 + + s=[] + h=[] + firstVec=0; secondVec=tabVec + dividerEdgeOffsetX = dividerEdgeOffsetY = thickness + dirxN=0 if directionX else 1 # used to select operation on x or y + diryN=0 if directionY else 1 + if (tabSymmetry==1): + dividerEdgeOffsetX = directionX*thickness; + #dividerEdgeOffsetY = ; + vectorX = rootX + (startOffsetX*thickness if dirxN else 0) + vectorY = rootY + (startOffsetY*thickness if diryN else 0) + s='M '+str(vectorX)+','+str(vectorY)+' ' + vectorX = rootX+(startOffsetX if startOffsetX else directionX)*thickness + vectorY = rootY+(startOffsetY if startOffsetY else directionY)*thickness + if dirxN: endOffsetX=0 + if diryN: endOffsetY=0 + else: + (vectorX,vectorY)=(rootX+startOffsetX*thickness,rootY+startOffsetY*thickness) + dividerEdgeOffsetX=directionY*thickness + dividerEdgeOffsetY=directionX*thickness + s='M '+str(vectorX)+','+str(vectorY)+' ' + if dirxN: vectorY=rootY # set correct line start for tab generation + if diryN: vectorX=rootX + + # generate line as tab or hole using: + # last co-ord:Vx,Vy ; tab dir:tabVec ; direction:dirx,diry ; thickness:thickness + # divisions:divs ; gap width:gapWidth ; tab width:tabWidth + + for n in range(1,int(divisions)): + if ((n%2) ^ (not isTab)) and numDividers>0 and not isDivider: # draw holes for divider joints in side walls + w=gapWidth if isTab else tabWidth + if n==1 and tabSymmetry==0: + w-=startOffsetX*thickness + for m in range(1,int(numDividers)+1): + Dx=vectorX+-directionY*dividerSpacing*m + Dy=vectorY+directionX*dividerSpacing*m + if n==1 and tabSymmetry==0: + Dx+=startOffsetX*thickness + h='M '+str(Dx)+','+str(Dy)+' ' + Dx=Dx+directionX*w+dirxN*firstVec+first*directionX + Dy=Dy+directionY*w+diryN*firstVec+first*directionY + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx+dirxN*secondVec + Dy=Dy+diryN*secondVec + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx-(directionX*w+dirxN*firstVec+first*directionX) + Dy=Dy-(directionY*w+diryN*firstVec+first*directionY) + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx-dirxN*secondVec + Dy=Dy-diryN*secondVec + h+='L '+str(Dx)+','+str(Dy)+' ' + group.add(getLine(h)) + if n%2: + if n==1 and numDividers>0 and isDivider: # draw slots for dividers to slot into each other + for m in range(1,int(numDividers)+1): + Dx=vectorX+-directionY*dividerSpacing*m-dividerEdgeOffsetX + Dy=vectorY+directionX*dividerSpacing*m-dividerEdgeOffsetY + h='M '+str(Dx)+','+str(Dy)+' ' + Dx=Dx+directionX*(first+length/2) + Dy=Dy+directionY*(first+length/2) + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx+dirxN*thickness + Dy=Dy+diryN*thickness + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx-directionX*(first+length/2) + Dy=Dy-directionY*(first+length/2) + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx-dirxN*thickness + Dy=Dy-diryN*thickness + h+='L '+str(Dx)+','+str(Dy)+' ' + group.add(getLine(h)) + # draw the gap + vectorX=vectorX+directionX*gapWidth+dirxN*firstVec+first*directionX + vectorY=vectorY+directionY*gapWidth+diryN*firstVec+first*directionY + s+='L '+str(vectorX)+','+str(vectorY)+' ' + # draw the starting edge of the tab + s+=dimpleStr(secondVec,vectorX,vectorY,directionX,directionY,dirxN,diryN,1,isTab) + vectorX=vectorX+dirxN*secondVec + vectorY=vectorY+diryN*secondVec + s+='L '+str(vectorX)+','+str(vectorY)+' ' + else: + # draw the tab + vectorX=vectorX+directionX*tabWidth+dirxN*firstVec + vectorY=vectorY+directionY*tabWidth+diryN*firstVec + s+='L '+str(vectorX)+','+str(vectorY)+' ' + # draw the ending edge of the tab + s+=dimpleStr(secondVec,vectorX,vectorY,directionX,directionY,dirxN,diryN,-1,isTab) + vectorX=vectorX+dirxN*secondVec + vectorY=vectorY+diryN*secondVec + s+='L '+str(vectorX)+','+str(vectorY)+' ' + (secondVec,firstVec)=(-secondVec,-firstVec) # swap tab direction + first=0 + + #finish the line off + s+='L '+str(rootX+endOffsetX*thickness+directionX*length)+','+str(rootY+endOffsetY*thickness+directionY*length)+' ' + if isTab and numDividers>0 and tabSymmetry==0 and not isDivider: # draw last for divider joints in side walls + for m in range(1,int(numDividers)+1): + Dx=vectorX + Dy=vectorY+directionX*dividerSpacing*m + h='M '+str(Dx)+','+str(Dy)+' ' + Dx=rootX+endOffsetX*thickness+directionX*length + Dy=Dy+directionY*tabWidth+diryN*firstVec+first*directionY + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx+dirxN*secondVec + Dy=Dy+diryN*secondVec + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=vectorX + Dy=Dy-(directionY*tabWidth+diryN*firstVec+first*directionY) + h+='L '+str(Dx)+','+str(Dy)+' ' + Dx=Dx-dirxN*secondVec + Dy=Dy-diryN*secondVec + h+='L '+str(Dx)+','+str(Dy)+' ' + group.add(getLine(h)) + group.add(getLine(s)) + return s + + +class BoxMaker(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--schroff',type=int,default=0,help='Enable Schroff mode') + pars.add_argument('--rail_height',type=float,default=10.0,help='Height of rail') + pars.add_argument('--rail_mount_depth',type=float,default=17.4,help='Depth at which to place hole for rail mount bolt') + pars.add_argument('--rail_mount_centre_offset',type=float, default=0.0,help='How far toward row centreline to offset rail mount bolt (from rail centreline)') + pars.add_argument('--rows',type=int,default=0,help='Number of Schroff rows') + pars.add_argument('--hp',type=int,default=0,help='Width (TE/HP units) of Schroff rows') + pars.add_argument('--row_spacing',type=float,default=10.0,help='Height of rail') + pars.add_argument('--unit', default='mm',help='Measure Units') + pars.add_argument('--inside',type=int,default=0,help='Int/Ext Dimension') + pars.add_argument('--length',type=float,default=100,help='Length of Box') + pars.add_argument('--width',type=float,default=100,help='Width of Box') + pars.add_argument('--depth',type=float,default=100,help='Height of Box') + pars.add_argument('--tab',type=float,default=25,help='Nominal Tab Width') + pars.add_argument('--equal',type=int,default=0,help='Equal/Prop Tabs') + pars.add_argument('--tabsymmetry',type=int,default=0,help='Tab style') + pars.add_argument('--dimpleheight',type=float,default=0,help='Tab Dimple Height') + pars.add_argument('--dimplelength',type=float,default=0,help='Tab Dimple Tip Length') + pars.add_argument('--hairline',type=int,default=0,help='Line Thickness') + pars.add_argument('--thickness',type=float,default=10,help='Thickness of Material') + pars.add_argument('--kerf',type=float,default=0.5,help='Kerf (width) of cut') + pars.add_argument('--clearance',type=float,default=0.01,help='Clearance of joints') + pars.add_argument('--style',type=int,default=25,help='Layout/Style') + pars.add_argument('--spacing',type=float,default=25,help='Part Spacing') + pars.add_argument('--boxtype',type=int,default=25,help='Box type') + pars.add_argument('--div_l',type=int,default=25,help='Dividers (Length axis)') + pars.add_argument('--div_w',type=int,default=25,help='Dividers (Width axis)') + pars.add_argument('--keydiv',type=int,default=3,help='Key dividers into walls/floor') + + def effect(self): + global group,nomTab,equalTabs,tabSymmetry,dimpleHeight,dimpleLength,thickness,correction,divx,divy,hairline,linethickness,keydivwalls,keydivfloor + + # Get access to main SVG document element and get its dimensions. + svg = self.document.getroot() + + # Get the attributes: + widthDoc = self.svg.unittouu(svg.get('width')) + heightDoc = self.svg.unittouu(svg.get('height')) + + # Get script's option values. + hairline=self.options.hairline + unit=self.options.unit + inside=self.options.inside + schroff=self.options.schroff + + # Set the line thickness + if hairline: + linethickness=self.svg.unittouu('0.002in') + else: + linethickness=1 + + if schroff: + rows=self.options.rows + rail_height=self.svg.unittouu(str(self.options.rail_height)+unit) + row_centre_spacing=self.svg.unittouu(str(122.5)+unit) + row_spacing=self.svg.unittouu(str(self.options.row_spacing)+unit) + rail_mount_depth=self.svg.unittouu(str(self.options.rail_mount_depth)+unit) + rail_mount_centre_offset=self.svg.unittouu(str(self.options.rail_mount_centre_offset)+unit) + rail_mount_radius=self.svg.unittouu(str(2.5)+unit) + + ## minimally different behaviour for schroffmaker.inx vs. boxmaker.inx + ## essentially schroffmaker.inx is just an alternate interface with different + ## default settings, some options removed, and a tiny amount of extra logic + if schroff: + ## schroffmaker.inx + X = self.svg.unittouu(str(self.options.hp * 5.08) + unit) + # 122.5mm vertical distance between mounting hole centres of 3U Schroff panels + row_height = rows * (row_centre_spacing + rail_height) + # rail spacing in between rows but never between rows and case panels + row_spacing_total = (rows - 1) * row_spacing + Y = row_height + row_spacing_total + else: + ## boxmaker.inx + X = self.svg.unittouu( str(self.options.length) + unit ) + Y = self.svg.unittouu( str(self.options.width) + unit ) + + Z = self.svg.unittouu( str(self.options.rail_height) + unit ) + thickness = self.svg.unittouu( str(self.options.thickness) + unit ) + nomTab = self.svg.unittouu( str(self.options.tab) + unit ) + equalTabs=self.options.equal + tabSymmetry=self.options.tabsymmetry + dimpleHeight=self.options.dimpleheight + dimpleLength=self.options.dimplelength + kerf = self.svg.unittouu( str(self.options.kerf) + unit ) + clearance = self.svg.unittouu( str(self.options.clearance) + unit ) + layout=self.options.style + spacing = self.svg.unittouu( str(self.options.spacing) + unit ) + boxtype = self.options.boxtype + divx = self.options.div_l + divy = self.options.div_w + keydivwalls = 0 if self.options.keydiv == 3 or self.options.keydiv == 1 else 1 + keydivfloor = 0 if self.options.keydiv == 3 or self.options.keydiv == 2 else 1 + + if inside: # if inside dimension selected correct values to outside dimension + X+=thickness*2 + Y+=thickness*2 + Z+=thickness*2 + + correction=kerf-clearance + + # check input values mainly to avoid python errors + # TODO restrict values to *correct* solutions + # TODO restrict divisions to logical values + error=0 + + if min(X,Y,Z)==0: + inkex.errormsg('Error: Dimensions must be non zero') + error=1 + if max(X,Y,Z)>max(widthDoc,heightDoc)*10: # crude test + inkex.errormsg('Error: Dimensions Too Large') + error=1 + if min(X,Y,Z)<3*nomTab: + inkex.errormsg('Error: Tab size too large') + error=1 + if nomTabmin(X,Y,Z)/3: # crude test + inkex.errormsg('Error: Material too thick') + error=1 + if correction>min(X,Y,Z)/3: # crude test + inkex.errormsg('Error: Kerf/Clearence too large') + error=1 + if spacing>max(X,Y,Z)*10: # crude test + inkex.errormsg('Error: Spacing too large') + error=1 + if spacing 0=holes 1=tabs + # tabbed= 0=no tabs 1=tabs on this side + # (sides: a=top, b=right, c=bottom, d=left) + # pieceType: 1=XY, 2=XZ, 3=ZY + tpFace=1 + bmFace=1 + ftFace=2 + bkFace=2 + ltFace=3 + rtFace=3 + + def reduceOffsets(aa, start, dx, dy, dz): + for ix in range(start+1,len(aa)): + (s,x,y,z) = aa[ix] + aa[ix] = (s-1, x-dx, y-dy, z-dz) + + # note first two pieces in each set are the X-divider template and Y-divider template respectively + pieces=[] + if layout==1: # Diagramatic Layout + rr = deepcopy([row0, row1z, row2]) + cc = deepcopy([col0, col1z, col2xz, col3xzz]) + if not hasFt: reduceOffsets(rr, 0, 0, 0, 1) # remove row0, shift others up by Z + if not hasLt: reduceOffsets(cc, 0, 0, 0, 1) + if not hasRt: reduceOffsets(cc, 2, 0, 0, 1) + if hasBk: pieces.append([cc[1], rr[2], X,Z, bkTabInfo, bkTabbed, bkFace]) + if hasLt: pieces.append([cc[0], rr[1], Z,Y, ltTabInfo, ltTabbed, ltFace]) + if hasBm: pieces.append([cc[1], rr[1], X,Y, bmTabInfo, bmTabbed, bmFace]) + if hasRt: pieces.append([cc[2], rr[1], Z,Y, rtTabInfo, rtTabbed, rtFace]) + if hasTp: pieces.append([cc[3], rr[1], X,Y, tpTabInfo, tpTabbed, tpFace]) + if hasFt: pieces.append([cc[1], rr[0], X,Z, ftTabInfo, ftTabbed, ftFace]) + elif layout==2: # 3 Piece Layout + rr = deepcopy([row0, row1y]) + cc = deepcopy([col0, col1z]) + if hasBk: pieces.append([cc[1], rr[1], X,Z, bkTabInfo, bkTabbed, bkFace]) + if hasLt: pieces.append([cc[0], rr[0], Z,Y, ltTabInfo, ltTabbed, ltFace]) + if hasBm: pieces.append([cc[1], rr[0], X,Y, bmTabInfo, bmTabbed, bmFace]) + elif layout==3: # Inline(compact) Layout + rr = deepcopy([row0]) + cc = deepcopy([col0, col1x, col2xx, col3xxz, col4, col5]) + if not hasTp: reduceOffsets(cc, 0, 1, 0, 0) # remove col0, shift others left by X + if not hasBm: reduceOffsets(cc, 1, 1, 0, 0) + if not hasLt: reduceOffsets(cc, 2, 0, 0, 1) + if not hasRt: reduceOffsets(cc, 3, 0, 0, 1) + if not hasBk: reduceOffsets(cc, 4, 1, 0, 0) + if hasBk: pieces.append([cc[4], rr[0], X,Z, bkTabInfo, bkTabbed, bkFace]) + if hasLt: pieces.append([cc[2], rr[0], Z,Y, ltTabInfo, ltTabbed, ltFace]) + if hasTp: pieces.append([cc[0], rr[0], X,Y, tpTabInfo, tpTabbed, tpFace]) + if hasBm: pieces.append([cc[1], rr[0], X,Y, bmTabInfo, bmTabbed, bmFace]) + if hasRt: pieces.append([cc[3], rr[0], Z,Y, rtTabInfo, rtTabbed, rtFace]) + if hasFt: pieces.append([cc[5], rr[0], X,Z, ftTabInfo, ftTabbed, ftFace]) + + for idx, piece in enumerate(pieces): # generate and draw each piece of the box + (xs,xx,xy,xz)=piece[0] + (ys,yx,yy,yz)=piece[1] + x=xs*spacing+xx*X+xy*Y+xz*Z # root x co-ord for piece + y=ys*spacing+yx*X+yy*Y+yz*Z # root y co-ord for piece + dx=piece[2] + dy=piece[3] + tabs=piece[4] + a=tabs>>3&1; b=tabs>>2&1; c=tabs>>1&1; d=tabs&1 # extract tab status for each side + tabbed=piece[5] + atabs=tabbed>>3&1; btabs=tabbed>>2&1; ctabs=tabbed>>1&1; dtabs=tabbed&1 # extract tabbed flag for each side + xspacing=(X-thickness)/(divy+1) + yspacing=(Y-thickness)/(divx+1) + xholes = 1 if piece[6]<3 else 0 + yholes = 1 if piece[6]!=2 else 0 + wall = 1 if piece[6]>1 else 0 + floor = 1 if piece[6]==1 else 0 + railholes = 1 if piece[6]==3 else 0 + + group = newGroup(self) + + if schroff and railholes: + log("rail holes enabled on piece %d at (%d, %d)" % (idx, x+thickness,y+thickness)) + log("abcd = (%d,%d,%d,%d)" % (a,b,c,d)) + log("dxdy = (%d,%d)" % (dx,dy)) + rhxoffset = rail_mount_depth + thickness + if idx == 1: + rhx=x+rhxoffset + elif idx == 3: + rhx=x-rhxoffset+dx + else: + rhx=0 + log("rhxoffset = %d, rhx= %d" % (rhxoffset, rhx)) + rystart=y+(rail_height/2)+thickness + if rows == 1: + log("just one row this time, rystart = %d" % rystart) + rh1y=rystart+rail_mount_centre_offset + rh2y=rh1y+(row_centre_spacing-rail_mount_centre_offset) + group.add(getCircle(rail_mount_radius,(rhx,rh1y))) + group.add(getCircle(rail_mount_radius,(rhx,rh2y))) + else: + for n in range(0,rows): + log("drawing row %d, rystart = %d" % (n+1, rystart)) + # if holes are offset (eg. Vector T-strut rails), they should be offset + # toward each other, ie. toward the centreline of the Schroff row + rh1y=rystart+rail_mount_centre_offset + rh2y=rh1y+row_centre_spacing-rail_mount_centre_offset + group.add(getCircle(rail_mount_radius,(rhx,rh1y))) + group.add(getCircle(rail_mount_radius,(rhx,rh2y))) + rystart+=row_centre_spacing+row_spacing+rail_height + + # generate and draw the sides of each piece + side(group,(x,y),(d,a),(-b,a),atabs * (-thickness if a else thickness),dx,(1,0),a,0,(keydivfloor|wall) * (keydivwalls|floor) * divx*yholes*atabs,yspacing) # side a + side(group,(x+dx,y),(-b,a),(-b,-c),btabs * (thickness if b else -thickness),dy,(0,1),b,0,(keydivfloor|wall) * (keydivwalls|floor) * divy*xholes*btabs,xspacing) # side b + if atabs: + side(group,(x+dx,y+dy),(-b,-c),(d,-c),ctabs * (thickness if c else -thickness),dx,(-1,0),c,0,0,0) # side c + else: + side(group,(x+dx,y+dy),(-b,-c),(d,-c),ctabs * (thickness if c else -thickness),dx,(-1,0),c,0,(keydivfloor|wall) * (keydivwalls|floor) * divx*yholes*ctabs,yspacing) # side c + if btabs: + side(group,(x,y+dy),(d,-c),(d,a),dtabs * (-thickness if d else thickness),dy,(0,-1),d,0,0,0) # side d + else: + side(group,(x,y+dy),(d,-c),(d,a),dtabs * (-thickness if d else thickness),dy,(0,-1),d,0,(keydivfloor|wall) * (keydivwalls|floor) * divy*xholes*dtabs,xspacing) # side d + + if idx==0: + if not keydivwalls: + a=b=c=d=1 + atabs=btabs=ctabs=dtabs=0 + y=4*spacing+1*Y+2*Z # root y co-ord for piece + for n in range(0,divx): # generate X dividers + group = newGroup(self) + x=n*(spacing+X) # root x co-ord for piece + side(group,(x,y),(d,a),(-b,a),keydivfloor*atabs*(-thickness if a else thickness),dx,(1,0),a,1,0,0) # side a + side(group,(x+dx,y),(-b,a),(-b,-c),keydivwalls*btabs*(thickness if keydivwalls*b else -thickness),dy,(0,1),b,1,divy*xholes,xspacing) # side b + side(group,(x+dx,y+dy),(-b,-c),(d,-c),keydivfloor*ctabs*(thickness if c else -thickness),dx,(-1,0),c,1,0,0) # side c + side(group,(x,y+dy),(d,-c),(d,a),keydivwalls*dtabs*(-thickness if d else thickness),dy,(0,-1),d,1,0,0) # side d + elif idx==1: + y=5*spacing+1*Y+3*Z # root y co-ord for piece + for n in range(0,divy): # generate Y dividers + group = newGroup(self) + x=n*(spacing+Z) # root x co-ord for piece + side(group,(x,y),(d,a),(-b,a),keydivwalls*atabs*(-thickness if a else thickness),dx,(1,0),a,1,divx*yholes,yspacing) # side a + side(group,(x+dx,y),(-b,a),(-b,-c),keydivfloor*btabs*(thickness if b else -thickness),dy,(0,1),b,1,0,0) # side b + side(group,(x+dx,y+dy),(-b,-c),(d,-c),keydivwalls*ctabs*(thickness if c else -thickness),dx,(-1,0),c,1,0,0) # side c + side(group,(x,y+dy),(d,-c),(d,a),keydivfloor*dtabs*(-thickness if d else thickness),dy,(0,-1),d,1,0,0) # side d + +if __name__ == '__main__': + BoxMaker().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/boxmaker_tabbed/schroffmaker.inx b/extensions/fablabchemnitz/boxmaker_tabbed/schroffmaker.inx new file mode 100644 index 00000000..2a9f647b --- /dev/null +++ b/extensions/fablabchemnitz/boxmaker_tabbed/schroffmaker.inx @@ -0,0 +1,48 @@ + + + Box Maker - Schroff + fablabchemnitz.de.box_maker_schroff + mm + 1 + 1 + 1 + 84 + 0.0 + 0.0 + 65 + + + 10.0 + 17.4 + 0.0 + 0.0 + + 3.0 + + + + + + 3.0 + 0.1 + 0.01 + 0 + 0 + + 1 + 2 + + 1.0 + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.inx b/extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.inx new file mode 100644 index 00000000..1731336a --- /dev/null +++ b/extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.inx @@ -0,0 +1,68 @@ + + + Buxtronix Living Hinges + fablabchemnitz.de.buxtronix_living_hinges + + + images/straight-lattice.png + 20 + 2.0 + 0.0 + + + + images/diamond-lattice.png + 20 + 4.0 + 0.5 + + + + images/cross-lattice.png + 20 + 6.0 + + + + images/wavy-lattice.png + 29 + 4.0 + + + + + images/about.png + + + + 100 + 100 + + + + + + + + false + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.py b/extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.py new file mode 100755 index 00000000..6a527e79 --- /dev/null +++ b/extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.py @@ -0,0 +1,450 @@ +#!/usr/bin/env python3 + +import inkex +cut_colour = '#ff0000' +engrave_colour = '#0000ff' + +class Generator(object): + """A generic generator, subclassed for each different lattice style.""" + + def __init__(self, x, y, width, height, stroke_width, svg, e_length, p_spacing): + self.x = x + self.y = y + self.width = width + self.height = height + self.stroke_width = stroke_width + self.svg = svg + self.canvas = self.svg.get_current_layer() + self.e_length = e_length + self.e_height = 0 # Provided by sub-classes. + self.p_spacing = p_spacing + self.fixed_commands = "" + + def draw_one(self, x, y): + return "M %f,%f %s" % (x, y, self.fixed_commands) + + def parameter_text(self): + return "length: %.f spacing: %.1f" % ( + self.e_length, + self.p_spacing, + ) + + def draw_swatch(self): + border = self.canvas.add(inkex.PathElement()) + # Curve radius + cr = self.svg.unittouu('10mm') + # Swatch padding + sp = self.svg.unittouu('30mm') + # Handle length + hl = cr/2 + path_command = ( + 'm %f,%f l %f,%f c %f,%f %f,%f %f,%f' + 'l %f,%f c %f,%f %f,%f %f,%f ' + 'l %f,%f c %f,%f %f,%f %f,%f ' + 'l %f,%f c %f,%f %f,%f %f,%f ') % ( + cr, 0, + + self.width - 2*cr, 0, + + hl, 0, + cr, cr-hl, + cr, cr, + + 0, self.height - 2*cr + 1.5*sp, + + 0, cr/2, + 0-cr+hl, cr, + 0-cr, cr, + + 0-self.width + 2*cr, 0, + + 0-hl, 0, + 0-cr, 0-cr+hl, + 0-cr, 0-cr, + + 0, 0-self.height - 1.5*sp + 2*cr, + + 0, 0-hl, + cr-hl, 0-cr, + cr, 0-cr + ) + + style = { + "stroke": cut_colour, + "stroke-width": str(self.stroke_width), + "fill": "none", + } + border.update(**{"style": style, "inkscape:label": "lattice_border", "d": path_command}) + + c = self.canvas.add(inkex.Circle( + style=str(inkex.Style(style)), + cx=str(cr), + cy=str(cr), + r=str(self.svg.unittouu('4mm')))) + + self.y += sp + + text_style = { + 'fill': engrave_colour, + 'font-size': '9px', + 'font-family': 'sans-serif', + 'text-anchor': 'middle', + 'text-align': 'center', + } + text = self.canvas.add( + inkex.TextElement( + style=str(inkex.Style(text_style)), + x=str(self.x + self.width/2), + y=str(self.y - sp/2))) + text.text = "Style: %s" % self.name + + text_style['font-size'] = "3px" + text = self.canvas.add( + inkex.TextElement( + style=str(inkex.Style(text_style)), + x=str(self.x + self.width/2), + y=str(self.y - sp/4))) + text.text = self.parameter_text() + + text = self.canvas.add( + inkex.TextElement( + style=str(inkex.Style(text_style)), + x=str(self.x + self.width/2), + y=str(self.y +self.height + sp/4))) + text.text = "https://github.com/buxtronix/living-hinge" + + def generate(self, swatch): + if swatch: + self.draw_swatch() + # Round width/height to integer number of patterns. + self.e_length = self.width / max(round(self.width / self.e_length), 1.0) + self.e_height = self.height / max(round(self.height / self.e_height), 1.0) + self.prerender() + style = { + "stroke": cut_colour, + "stroke-width": str(self.stroke_width), + "fill": "none", + } + path_command = "" + y = self.y + while y < self.y + self.height: + x = self.x + while x < self.x + self.width: + path_command = "%s %s " % (path_command, self.draw_one(x, y)) + x += self.e_length + y += self.e_height + + link = self.canvas.add(inkex.PathElement()) + link.update(**{"style": style, "inkscape:label": "lattice", "d": path_command}) + link.description("%s hinge %s" % (self.name, self.parameter_text())) + + +class StraightLatticeGenerator(Generator): + def __init__(self, *args, **kwargs): + super(StraightLatticeGenerator, self).__init__(*args) + self.link_gap = kwargs['link_gap'] + self.e_height = 2 * self.p_spacing + self.name = "straight" + + def prerender(self): + self.e_height = 2 * self.p_spacing + w = self.e_length + lg = self.link_gap + + if lg < 0.1: + # Single line for 0 height gap. + self.fixed_commands = " m %f,%f h %f m %f,%f h %f m %f,%f h %f" % ( + 0, self.e_height / 2, + w * 2 / 5, + + 0 - w / 5, 0 - self.e_height / 2, + w * 3 / 5, + + 0 - w / 5, self.e_height / 2, + w * 2 / 5, + ) + else: + self.fixed_commands = ( + " m %f,%f h %f v %f h %f" + " m %f,%f h %f v %f h %f v %f" + " m %f,%f h %f v %f h %f " + ) % ( + 0, + self.e_height / 2, + w * 2 / 5, + lg, + 0 - w * 2 / 5, + w / 8, + 0 - lg - self.e_height / 2, + w * 3 / 4, + lg, + 0 - w * 3 / 4, + 0 - lg, + w * 7 / 8, + lg + self.e_height / 2, + 0 - w * 2 / 5, + 0 - lg, + w * 2 / 5, + ) + + def parameter_text(self): + text = super(StraightLatticeGenerator, self).parameter_text() + return "%s element_height: %.1f" % (text, self.link_gap) + + +class DiamondLatticeGenerator(Generator): + def __init__(self, *args, **kwargs): + super(DiamondLatticeGenerator, self).__init__(*args) + self.e_height = self.p_spacing + self.diamond_curve = kwargs['diamond_curve'] + self.name = "diamond" + + def prerender(self): + h = self.e_height + w = self.e_length + # Diamond curve + dc = 0-self.diamond_curve + # Horiz handle length. + hhl = abs(dc * w * 0.2) + # Endpoint horiz handle length + ehhl = hhl if dc > 0 else 0 + # Vert handle length + vhl = abs(dc * h / 8) if dc < 0 else 0 + # Left + self.fixed_commands = " m %f,%f c %f,%f %f,%f %f,%f c %f,%f %f,%f %f,%f " % ( + 0, h / 4, + + hhl, 0, + w * 0.4 - ehhl, h / 4 - vhl, + w * 0.4, h / 4, + + 0 - ehhl, vhl, + 0 - (w * 0.4 - hhl), h / 4, + 0 - w * 0.4, h / 4, + ) + + # Bottom + self.fixed_commands = "%s m %f,%f c %f,%f %f,%f %f,%f s %f,%f %f,%f " % ( + self.fixed_commands, + w * 0.1, h / 4, + + ehhl, 0 - vhl, + w * 0.4 - hhl, 0 - h / 4, + w * 0.4, 0 - h / 4, + + w * 0.4 - ehhl, h / 4 - vhl, + w * 0.4, h / 4, + ) + + # Top + self.fixed_commands = "%s m %f,%f c %f,%f %f,%f %f,%f s %f,%f %f,%f " % ( + self.fixed_commands, + 0 - w * 0.8, 0 - h, + + ehhl, vhl, + w * 0.4 - hhl, h / 4, + w * 0.4, h / 4, + + w * 0.4 - ehhl, 0 - h / 4 + vhl, + w * 0.4, 0 - h / 4, + ) + + # Right + self.fixed_commands = "%s m %f,%f c %f,%f %f,%f %f,%f c %f,%f %f,%f %f,%f " % ( + self.fixed_commands, + w * 0.1, h *0.75, + + 0 - hhl, 0, + (0 - w * 0.4) + ehhl, 0 - h / 4 + vhl, + 0 - w * 0.4, 0 - h / 4, + + ehhl, 0 - vhl, + w * 0.4 - hhl, 0 - h / 4, + w * 0.4, 0 - h / 4, + ) + + def draw_one(self, x, y): + return "M %f,%f %s" % (x, y, self.fixed_commands) + + def parameter_text(self): + text = super(DiamondLatticeGenerator, self).parameter_text() + return "%s curve: %.1f" % (text, self.diamond_curve) + + +class CrossLatticeGenerator(Generator): + def __init__(self, *args): + super(CrossLatticeGenerator, self).__init__(*args) + self.e_height = self.p_spacing + self.name = "cross" + + def prerender(self): + l = self.e_length + h = self.e_height + self.fixed_commands = ( + "m %f,%f l %f,%f l %f,%f m %f,%f l %f,%f" + "m %f,%f l %f,%f l %f,%f l %f,%f " + "m %f,%f l %f,%f l %f,%f l %f,%f " + "m %f,%f l %f,%f l %f,%f m %f,%f l %f,%f" + ) % ( + # Left + 0, h * 0.5, + l * 0.2, 0, + l * 0.2, 0 - h * 0.3, + 0 - l * 0.2, h * 0.3, + l * 0.2, h * 0.3, + # Top + 0 - l * 0.3, 0 - h * 0.5, + l * 0.2, 0 - h * 0.3, + l * 0.4, 0, + l * 0.2, h * 0.3, + # Bottom + 0, h * 0.4, + 0 - l * 0.2, h * 0.3, + 0 - l * 0.4, 0, + 0 - l * 0.2, 0 - h * 0.3, + # Right + l * 0.5, 0 - h * 0.5, + l * 0.2, h * 0.3, + 0 - l * 0.2, h * 0.3, + l * 0.2, 0 - h * 0.3, + l * 0.2, 0, + ) + + +class WavyLatticeGenerator(Generator): + def __init__(self, *args, **kwargs): + super(WavyLatticeGenerator, self).__init__(*args) + self.e_height = self.p_spacing + self.name = "wavy" + + def prerender(self): + h = self.e_height + w = self.e_length + self.fixed_commands = ( + " m %f,%f h %f c %f,%f %f,%f %f,%f h %f " + "m %f,%f h %f c %f,%f %f,%f %f,%f h %f " + ) % ( + 0, h, # Start of element (left) + w * 0.1, # Short horiz line. + + w * 0.1, 0, # Control 1 + w * 3 / 40, 0 - h / 2, # Control 2 + w * 0.2, 0 - h / 2, # Curve top. + + w * 0.175, # Top horiz line. + + 0 - w * 0.1, 0 - h / 2, # Move to higher line. + w * 0.3, # Long higher horiz line. + + w / 5, 0, # Control 1 + w / 10, h, # Control 2 + w * 0.25, h, # Curve down. + + w * 0.075, # End horiz line. + ) + + +class BuxtronixLivingHinges(inkex.EffectExtension): + """ + Extension to create laser cut bend lattices. + """ + + def add_arguments(self, pars): + pars.add_argument("--tab", help="Bend pattern to generate") + pars.add_argument("--unit", help="Units for dimensions") + pars.add_argument("--swatch", type=inkex.Boolean, help="Draw as a swatch card") + + pars.add_argument("--width", type=float, default=300, help="Width of pattern") + pars.add_argument("--height", type=float, default=100, help="Height of pattern") + + pars.add_argument("--sl_length", type=int, default=20, help="Length of links") + pars.add_argument("--sl_gap", type=float, default=0.5, help="Gap between links") + pars.add_argument("--sl_spacing", type=float, default=20, help="Spacing of links") + + pars.add_argument("--dl_curve", type=float, default=0.5, help="Curve of diamonds") + pars.add_argument("--dl_length", type=float, default=24, help="Length of diamonds") + pars.add_argument("--dl_spacing", type=float, default=4, help="Spacing of diamonds") + + pars.add_argument("--cl_length", type=float, default=24, help="Length of combs") + pars.add_argument("--cl_spacing", type=float, default=6, help="Spacing of combs") + + pars.add_argument("--wl_length", type=int, default=20, help="Length of links") + pars.add_argument("--wl_interval", type=int, default=30, help="Interval between links") + pars.add_argument("--wl_spacing", type=float, default=0.5, help="Spacing between links") + + def convert(self, value): + return self.svg.unittouu(str(value) + self.options.unit) + + def convertmm(self, value): + return self.svg.unittouu('%fmm' % value) + + def effect(self): + stroke_width = self.svg.unittouu("0.2mm") + self.options.width = self.convert(self.options.width) + self.options.height = self.convert(self.options.height) + + def draw_one(x, y): + if self.options.tab == "straight_lattice": + generator = StraightLatticeGenerator( + x, + y, + self.options.width, + self.options.height, + stroke_width, + self.svg, + self.convertmm(self.options.sl_length), + self.convertmm(self.options.sl_spacing), + link_gap=self.convertmm(self.options.sl_gap), + ) + elif self.options.tab == "diamond_lattice": + generator = DiamondLatticeGenerator( + x, + y, + self.options.width, + self.options.height, + stroke_width, + self.svg, + self.convertmm(self.options.dl_length), + self.convertmm(self.options.dl_spacing), + diamond_curve=self.options.dl_curve, + ) + elif self.options.tab == "cross_lattice": + generator = CrossLatticeGenerator( + x, + y, + self.options.width, + self.options.height, + stroke_width, + self.svg, + self.convertmm(self.options.cl_length), + self.convertmm(self.options.cl_spacing), + ) + elif self.options.tab == "wavy_lattice": + generator = WavyLatticeGenerator( + x, + y, + self.options.width, + self.options.height, + stroke_width, + self.svg, + self.convertmm(self.options.wl_length), + self.convertmm(self.options.wl_spacing), + ) + else: + inkex.errormsg("Select a valid pattern tab before rendering.") + return + generator.generate(self.options.swatch) + + if self.options.swatch or not self.svg.selected: + draw_one(0, 0) + else: + for elem in self.svg.selected.values(): + # Determine width and height based on the selected object's bounding box. + bbox = elem.bounding_box() + self.options.width = self.svg.unittouu(bbox.width) + self.options.height = self.svg.unittouu(bbox.height) + x = self.svg.unittouu(bbox.x.minimum) + y = self.svg.unittouu(bbox.y.minimum) + draw_one(x, y) + +BuxtronixLivingHinges().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/images/about.png b/extensions/fablabchemnitz/buxtronix_living_hinges/images/about.png new file mode 100644 index 00000000..b4bfd54a Binary files /dev/null and b/extensions/fablabchemnitz/buxtronix_living_hinges/images/about.png differ diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/images/cross-lattice.png b/extensions/fablabchemnitz/buxtronix_living_hinges/images/cross-lattice.png new file mode 100644 index 00000000..41264d6f Binary files /dev/null and b/extensions/fablabchemnitz/buxtronix_living_hinges/images/cross-lattice.png differ diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.png b/extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.png new file mode 100644 index 00000000..d03cf75b Binary files /dev/null and b/extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.png differ diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.svg b/extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.svg new file mode 100644 index 00000000..2d738b9a --- /dev/null +++ b/extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.svg @@ -0,0 +1,143 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/images/straight-lattice.png b/extensions/fablabchemnitz/buxtronix_living_hinges/images/straight-lattice.png new file mode 100644 index 00000000..dd911d59 Binary files /dev/null and b/extensions/fablabchemnitz/buxtronix_living_hinges/images/straight-lattice.png differ diff --git a/extensions/fablabchemnitz/buxtronix_living_hinges/images/wavy-lattice.png b/extensions/fablabchemnitz/buxtronix_living_hinges/images/wavy-lattice.png new file mode 100644 index 00000000..d3a0d94b Binary files /dev/null and b/extensions/fablabchemnitz/buxtronix_living_hinges/images/wavy-lattice.png differ diff --git a/extensions/fablabchemnitz/can_generator/can_generator.inx b/extensions/fablabchemnitz/can_generator/can_generator.inx new file mode 100644 index 00000000..a296cfc3 --- /dev/null +++ b/extensions/fablabchemnitz/can_generator/can_generator.inx @@ -0,0 +1,29 @@ + + + Can Generator + fablabchemnitz.de.can_generator + + + 30 + 5 + 50 + 22.5 + 3.6 + false + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/can_generator/can_generator.py b/extensions/fablabchemnitz/can_generator/can_generator.py new file mode 100644 index 00000000..6b3361d4 --- /dev/null +++ b/extensions/fablabchemnitz/can_generator/can_generator.py @@ -0,0 +1,371 @@ +#! /usr/bin/env python3 +''' +@author: mini@revollo.de +member of the erfindergarden + +Inkscape Erweiterung - Dosen Generator +13.01.2019 + +Danke an neon22 https://github.com/Neon22/inkscape_extension_template +Nach seiner Anleitung konnte ich dieses Programm erstellen. + +''' + +import inkex +from lxml import etree +from math import * + +__version__ = '0.2' + +def points_to_svgd(p, close = True): + """ convert list of points (x,y) pairs + into a closed SVG path list + """ + f = p[0] + p = p[1:] + svgd = 'M %.2f,%.2f ' % f + for x in p: + svgd += ' %.4f,%.4f' % x + if close: + svgd += 'z' + return svgd + +def punkte_erstellen(punkte, x, y): + ###Schreibt die aktuellen Koordinaten in die Punkteliste + punkte.append((x, y)) + +class CanGenerator(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--height", type=int, default = 50, help="Höhe der Dose") + pars.add_argument("--overhang", type=int, default = 40, help="Überstand des Deckels") + pars.add_argument("--diameter", type=int, default = 40, help="diameter der Dose") + pars.add_argument("--angle", type=float, default = 22.5, help="angle der segments") + pars.add_argument("--material", type=float, default = 3.6, help="Materialstärke") + pars.add_argument("--bottom", type=inkex.Boolean, default = False, help="Deckel und bottom?") + pars.add_argument("--active-tab", default='title', help="Active tab.") + + self.deckel_punkte = [] + self.deckel_pfad = [] + self.seite_punkte = [] + self.seite_pfad = [] + self.ausschnitt_punkte = [] + self.ausschnitt_pfad = [] + self.ausschnitt_nummer = 0 + self.einschnitt_punkte = [] + self.einschnitt_pfad = [] + self.einschnitt_nummer = 0 + self.einschnitt_breite = 0.2 #Abstand zwischen den beiden Einschnittlinien + + + def pfad_erstellen(self, pfad, punkte): + # Die gesammelten x und y Koordinaten der Punkte werden in Pfade (d) umgewandelt. + + pfad.append(points_to_svgd(punkte)) + del punkte[:] + + def pfade_schreiben(self): + ###Schreibt alle Pfade nacheinander in die Szene + + path_stroke = '#101010' # Farbe für die Dose + path_fill = 'none' # keine Füllung, nur eine Linie + path_stroke_width = '0.4' # can also be in form '0.6mm' + + for nummer in range(len(self.pfade)): + # define style using basic dictionary + pfad_attribute = {'id': "pfad%d"%nummer, 'stroke': path_stroke, + 'fill': path_fill, 'stroke-width': path_stroke_width, + 'd': self.pfade[nummer]} + # add path to scene + pfad = etree.SubElement(self.topgroup, inkex.addNS('path','svg'), pfad_attribute ) + + def deckel_erstellen(self): + ###Erstellt alle Punkte für den Aussenkreis des Deckels. + angle = self.angle + + segments = int(360 / angle) + for segment_nr in range(segments + 1): + #y berechnen = Gegenkathete + y = sin(radians(angle)) * self.radius_mit_overhang * -1 + #Innenangle berechnen + beta = 180 - 90 - angle + #Ankathete berechnen + b = sin(radians(beta)) * self.radius_mit_overhang + #x berechnen + x = self.radius_mit_overhang - b - self.overhang + punkte_erstellen(self.deckel_punkte, x, y) + angle += self.angle + self.deckel_schreiben() + + def deckel_schreiben(self): + ###Schreibt den Deckel ohne Ausschnitte in die Szene + + path_stroke = '#0000ff' # Farbe für den Rand + path_fill = 'none' # keine Füllung, nur eine Linie + path_stroke_width = '0.6' # can also be in form '0.6mm' + #Punkte zu Pfad umwandeln + self.deckel_pfad = points_to_svgd(self.deckel_punkte, False) + + # define style using basic dictionary + deckel_attribute = {'id': "rand", 'stroke': path_stroke, 'fill': path_fill, + 'stroke-width': path_stroke_width , 'x': '0', 'y': '0', 'd': self.deckel_pfad} + # add path to scene + deckel = etree.SubElement(self.topgroup, inkex.addNS('path','svg'), deckel_attribute ) + + def ausschnitt_erstellen(self): + ###Erstellt alle Punkte für den Aussenkreis des Deckels. + + angle = self.angle + + for segment_nr in range(self.segments): + + ###Punkt 1 wird berechnet + #y berechnen = Gegenkathete + y = sin(radians(angle)) * self.radius * -1 + #Innenangle berechnen + beta = 180 - 90 - angle + #Ankathete berechnen + b = sin(radians(beta)) * self.radius + #x berechnen + x = self.radius - b + punkte_erstellen(self.ausschnitt_punkte, x, y) + angle += self.angle + + ###Punkt 2 wird berechnet + #y berechnen = Gegenkathete + y = sin(radians(angle)) * self.radius * -1 + #Innenangle berechnen + beta = 180 - 90 - angle + #Ankathete berechnen + b = sin(radians(beta)) * self.radius + #x berechnen + x = self.radius - b + + punkte_erstellen(self.ausschnitt_punkte, x, y) + + ###Punkt 3 wird berechnet + + alpha = angle - (self.angle / 2) + beta = 180 - 90 - alpha + y += sin(radians(alpha)) * self.material + x += sin(radians(beta)) * self.material + angle += self.angle + punkte_erstellen(self.ausschnitt_punkte, x, y) + + ### Punkt 4 wird berechnet + alpha = 180 - alpha + beta = 180 - 90 - alpha + x -= sin(radians(alpha)) * self.ausschnitt_breite + y -= sin(radians(beta)) * self.ausschnitt_breite + punkte_erstellen(self.ausschnitt_punkte, x, y) + # + self.ausschnitt_schreiben() + del self.ausschnitt_punkte[:] + + def ausschnitt_schreiben(self): + ###Schreibt den Ausschnitte in die Szene + + path_stroke = '#ff0000' # Farbe für den Rand + path_fill = 'none' # keine Füllung, nur eine Linie + path_stroke_width = '0.6' # can also be in form '0.6mm' + #Punkte zu Pfad umwandeln + self.ausschnitt_pfad = points_to_svgd(self.ausschnitt_punkte, True) + + # define style using basic dictionary + ausschnitt_attribute = {'id': "ausschnitt_%s"%self.ausschnitt_nummer, 'stroke': path_stroke, 'fill': path_fill, + 'stroke-width': path_stroke_width , 'x': '0', 'y': '0', 'd': self.ausschnitt_pfad} + self.ausschnitt_nummer += 1 + # add path to scene + ausschnitt = etree.SubElement(self.topgroup, inkex.addNS('path','svg'), ausschnitt_attribute ) + + + def seite_erstellen(self): + ###Erstellt die Seite der Dose mit den Zinken und den Einschnitten### + + x = 0 + y = self.radius_mit_overhang + 10 + punkte_erstellen(self.seite_punkte, x, y) + for item in range(int(self.segments / 2)): + y -= self.material + punkte_erstellen(self.seite_punkte, x, y) + x += self.ausschnitt_breite + punkte_erstellen(self.seite_punkte, x, y) + y += self.material + punkte_erstellen(self.seite_punkte, x, y) + x += self.ausschnitt_breite + punkte_erstellen(self.seite_punkte, x, y) + if self.bottom == False: + y += self.height - self.material + punkte_erstellen(self.seite_punkte, x, y) + x -= self.segments * self.ausschnitt_breite + punkte_erstellen(self.seite_punkte, x, y) + y -= self.height - self.material + punkte_erstellen(self.seite_punkte, x, y) + else: + y += self.height - self.material - self.material + punkte_erstellen(self.seite_punkte, x, y) + for item in range(int(self.segments / 2)): + x -= self.ausschnitt_breite + punkte_erstellen(self.seite_punkte, x, y) + y += self.material + punkte_erstellen(self.seite_punkte, x, y) + x -= self.ausschnitt_breite + punkte_erstellen(self.seite_punkte, x, y) + y -= self.material + punkte_erstellen(self.seite_punkte, x, y) + y -= self.height + punkte_erstellen(self.seite_punkte, x, y) + + + + + + self.seite_schreiben() + + def seite_schreiben(self): + ###Schreibt die Seite in die Szene + + path_stroke = '#0000ff' # Farbe für den Rand + path_fill = 'none' # keine Füllung, nur eine Linie + path_stroke_width = '0.6' # can also be in form '0.6mm' + #Punkte zu Pfad umwandeln + self.seite_pfad = points_to_svgd(self.seite_punkte, True) + + # define style using basic dictionary + seite_attribute = {'id': "seite", 'stroke': path_stroke, 'fill': path_fill, + 'stroke-width': path_stroke_width , 'x': '0', 'y': '0', 'd': self.seite_pfad} + # add path to scene + seite = etree.SubElement(self.topgroup, inkex.addNS('path','svg'), seite_attribute ) + + def einschnitte_erstellen(self): + ###Erstellt die Einschnitte in die Seite + + x = self.einschnitt_breite / -2 + y = self.radius_mit_overhang + 10 - self.material + + for segment_nr in range(self.segments - 1): + + ###Punkt 1 wird berechnet + x += self.ausschnitt_breite + punkte_erstellen(self.einschnitt_punkte, x, y) + ###Punkt 2 wird berechnet + x += self.einschnitt_breite + punkte_erstellen(self.einschnitt_punkte, x, y) + ###Punkt 3 wird berechnet + y += self.height + punkte_erstellen(self.einschnitt_punkte, x, y) + ### Punkt 4 wird berechnet + x -= self.einschnitt_breite + punkte_erstellen(self.einschnitt_punkte, x, y) + y -= self.height + + self.einschnitte_schreiben() + del self.einschnitt_punkte[:] + + def einschnitte_schreiben(self): + ###Schreibt die Einschnitte in die Seite + + path_stroke = '#00ff00' # Farbe für die Einschnitte + path_fill = 'none' # keine Füllung, nur eine Linie + path_stroke_width = '0.6' # can also be in form '0.6mm' + #Punkte zu Pfad umwandeln + self.einschnitt_pfad = points_to_svgd(self.einschnitt_punkte, True) + + # define style using basic dictionary + einschnitt_attribute = {'id': "einschnitt_%s"%self.einschnitt_nummer, 'stroke': path_stroke, 'fill': path_fill, + 'stroke-width': path_stroke_width , 'x': '0', 'y': '0', 'd': self.einschnitt_pfad} + self.einschnitt_nummer += 1 + # add path to scene + einschnitt = etree.SubElement(self.undergroup, inkex.addNS('path','svg'), einschnitt_attribute ) + +### ------------------------------------------------------------------- +### This is your main function and is called when the extension is run. + + def effect(self): + ###Hauptprogramm + + + # holt die Parameter aus Inkscape + self.height = self.options.height + self.diameter = self.options.diameter + self.overhang = self.options.overhang + self.radius = self.diameter / 2 + self.radius_mit_overhang = self.radius + self.overhang + self.angle = self.options.angle + self.bottom = self.options.bottom + self.material = self.options.material + self.segments = int(360 / self.angle) + #Ausschnittbreite errechnen + y = sin(radians(self.angle)) * self.radius + beta = 180 - 90 - self.angle + b = sin(radians(beta)) * self.radius + x = self.radius - b + self.ausschnitt_breite = sqrt((x * x) + (y * y)) + # what page are we on + page_id = self.options.active_tab # sometimes wrong the very first time + + #Eigenschaften der SVG auslesen und die Größe der Dose anpassen + svg = self.document.getroot() + #viewbox_size = '0 0 ' + str(self.breite) + ' ' + str(self.height) + #svg.set('viewBox', viewbox_size) + #svg.set('height', str(self.height)) + #svg.set('width', str(self.breite)) + + # Embed the path in a group to make animation easier: + # Be sure to examine the internal structure by looking in the xml editor inside inkscape + + # Make a nice useful name + g_attribs = { inkex.addNS('label','inkscape'): 'dosen-gruppe', 'id': "dose",} + # add the group to the document's current layer + self.topgroup = etree.SubElement(self.svg.get_current_layer(), 'g', g_attribs ) + # Create SVG Path under this top level group + # Make a nice useful name + g_attribs = { inkex.addNS('label','inkscape'): 'einschnitt-gruppe', 'id': "einschnitte",} + # add the group to the document's current layer + self.undergroup = etree.SubElement(self.svg.get_current_layer(), 'g', g_attribs ) + # Create SVG Path under this top level group + + self.deckel_erstellen() + self.ausschnitt_erstellen() + self.seite_erstellen() + self.einschnitte_erstellen() + + + # Make a nice useful name + text_g_attribs = { inkex.addNS('label','inkscape'): 'dosen-gruppe', 'id': "Branding",} + # add the group to the document's current layer + textgroup = etree.SubElement(self.svg.get_current_layer(), 'g', text_g_attribs ) + + line_style = {'font-size': '10px', 'font-style':'normal', 'font-weight': 'normal', + 'fill': '#ff0000', 'font-family': 'Consolas', + 'text-anchor': 'start'} + branding_line_attribs = {inkex.addNS('label','inkscape'): 'branding-text', + 'id': 'front text', + 'style': str(inkex.Style(line_style)), + 'x': str(0), + 'y': str(0) + } + + branding_line = etree.SubElement(textgroup, inkex.addNS('text','svg'), branding_line_attribs) + branding_line.text = 'dosen-generator by mini revollo member of the erfindergarden' + + # Make a nice useful name + einschnitt_text_g_attribs = { inkex.addNS('label','inkscape'): 'einschnitt-gruppe', 'id': "Einschnitte_Text",} + # add the group to the document's current layer + textgroup = etree.SubElement(self.svg.get_current_layer(), 'g', einschnitt_text_g_attribs ) + + line_style = {'font-size': '5px', 'font-style':'normal', 'font-weight': 'normal', + 'fill': '#00ff00', 'font-family': 'Consolas', + 'text-anchor': 'start'} + einschnitt_line_attribs = {inkex.addNS('label','inkscape'): 'Einschnitte_text', + 'id': 'front text', + 'style': str(inkex.Style(line_style)), + 'x': str(0), + 'y': str(self.radius_mit_overhang + self.height / 2) + } + + branding_line = etree.SubElement(textgroup, inkex.addNS('text','svg'), einschnitt_line_attribs) + branding_line.text = 'Die Einschnitte nur zu 70 Prozent in das Material lasern' + +if __name__ == '__main__': + CanGenerator().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/card_layout_guides/card_layout_guides.inx b/extensions/fablabchemnitz/card_layout_guides/card_layout_guides.inx new file mode 100644 index 00000000..2a231164 --- /dev/null +++ b/extensions/fablabchemnitz/card_layout_guides/card_layout_guides.inx @@ -0,0 +1,29 @@ + + + Cards Layout Guides + fablabchemnitz.de.card_layout_guides + + + + + 60 + 30 + + + + + 2 + 2 + 15 + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/card_layout_guides/card_layout_guides.py b/extensions/fablabchemnitz/card_layout_guides/card_layout_guides.py new file mode 100644 index 00000000..b4fd0d5a --- /dev/null +++ b/extensions/fablabchemnitz/card_layout_guides/card_layout_guides.py @@ -0,0 +1,480 @@ +#!/usr/bin/env python3 + + +# Copyright 2016 Luke Phillips (lukerazor@hotmail.com) +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# Extension dirs +# linux:~/.config/inkscape/extensions +# windows: [Drive]:\Program Files\Inkscape\share\extensions + +from lxml import etree +import inkex +import copy +import math + +FOLD_GAP = 5 +CROP_GAP = 2 +CROP_LENGTH = 3 + +inkex.NSS[u'cs'] = u'http://www.razorfoss.org/cardlayoutguides/' + +def PrintDebug(string): + inkex.utils.debug( _(str(string)) ) + +def RoundAndDeduplicatePoints(points): + return sorted(list(set(map(lambda x: round(x, 3), points)))) + +class Point(): + def __init__(self, x, y): + self.x = x + self.y = y + + def rotate(self, angle, origin): + """ + Rotate a point counterclockwise by a given angle around a given origin. + + The angle should be given in degrees. + """ + rads = math.radians(angle) + newX = origin.x + math.cos(rads) * (self.x - origin.x) - math.sin(rads) * (self.y - origin.y) + newY = origin.y + math.sin(rads) * (self.x - origin.x) + math.cos(rads) * (self.y - origin.y) + + return Point(newX, newY) + + def add(self, point): + return Point(self.x + point.x, self.y + point.y) + + @staticmethod + def parsePoint(pointString): + x, y = map(lambda v: float(v), pointString.split(",")) + return Point(x, y) + + @staticmethod + def parse(pointString, orientationString=None): + p1 = Point.parsePoint(pointString) + p = Point(p1.x, p1.y) + + if orientationString != None: + po = Point.parsePoint(orientationString) + p = p1.add(po.rotate(270, Point(0, 0))) + + return p + +class LineGeneratorBase(object): + def __init__(self, card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc): + self.UnitConverterFunc = unitConverterFunc + self.card_width = card_width + self.card_height = card_height + self.card_margin = card_margin + self.bleed_margin = bleed_margin + + self.PageWidth = pageWidth + self.PageHeight = pageHeight + self.page_margin = page_margin + + self.ContainerWidth = -1 + self.ContainerHeight = -1 + + self.GuideOffsetsWithFold = [ + 0, + self.bleed_margin, self.card_margin, self.card_height - 2*self.card_margin, self.card_margin, self.bleed_margin, + 2*FOLD_GAP, + self.bleed_margin, self.card_margin, self.card_height - 2*self.card_margin, self.card_margin, self.bleed_margin + ] + + self.GuideOffsetsNoFold = [ + 0, + self.bleed_margin, self.card_margin, + self.card_width - 2*self.card_margin, + self.card_margin, self.bleed_margin + ] + + def CalcPageLeftMargin(self): + return (self.PageWidth - self.ContentWidth) / 2.0 + + def CalcPageBottomMargin(self): + return (self.PageHeight - self.ContentHeight) / 2.0 + + def DrawGuide(self, xmlParent, xpos, ypos): + posString = "{},{}".format(xpos, ypos) + attribs = {'position': posString, 'orientation': posString} + + etree.SubElement(xmlParent, inkex.addNS('guide',"sodipodi"), attribs) + + def ConvertPoint(self, p): + # convert point into svg approriate values, including catering for inkscapes "alternative" axis sytem ie 0, 0 is bottom left not top left + newX = self.UnitConverterFunc("{}mm".format(p.x)) + newY = self.PageHeight - self.UnitConverterFunc("{}mm".format(p.y)) + + return Point(newX, newY) + + def DrawLine(self, xmlParent, p1, p2): + cp1 = self.ConvertPoint(p1) + cp2 = self.ConvertPoint(p2) + + pathStr = "M {},{} {}, {}".format(cp1.x, cp1.y, cp2.x, cp2.y) + style = {'stroke': '#000000', 'stroke-width': self.UnitConverterFunc('0.25mm'), 'fill': 'none'} + attribs = {'style': str(inkex.Style(style)), 'd': pathStr} + + etree.SubElement(xmlParent, inkex.addNS('path','svg'), attribs ) + + def DrawVerticleGuides(self, xmlParent, positions, gap): + curPos = self.CalcPageLeftMargin() + lastPos = -1 + while curPos + self.ContainerWidth <= self.PageWidth - self.page_margin: + for offset in positions: + curPos += offset + if curPos != lastPos: # don't double draw + self.DrawGuide(xmlParent, curPos, 0) + + lastPos = curPos + + curPos += gap + + def DrawHorizontalGuides(self, xmlParent, positions, gap): + curPos = self.CalcPageBottomMargin() + lastPos = -1 + while curPos + self.ContainerHeight <= self.PageHeight - self.page_margin: + for offset in positions: + curPos += offset + if curPos != lastPos: # don't double draw + self.DrawGuide(xmlParent, 0, curPos) + + lastPos = curPos + + curPos += gap + + def GenerateFoldLines(self, xmlParent): + lines = self.GetFoldLinePositions() + + for line in lines: + self.DrawLine(xmlParent, line[0], line[1]) + + def GenerateCropMarks(self, xmlParent): + lines = self.GetCropMarkLines() + + for line in lines: + self.DrawLine(xmlParent, line[0], line[1]) + + @staticmethod + def CreateLineGenerator(layout, orientation, card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc): + if layout == "SIMPLE": + return SimpleGridLineGenerator(orientation, card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc) + + if orientation == "HORIZONTAL": + return LineGeneratorForHorizontalCards(card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc) + + return LineGeneratorForVerticalCards(card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc) + +class SimpleGridLineGenerator(LineGeneratorBase): + def __init__(self, orientation, card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc): + if orientation == "HORIZONTAL": + super(SimpleGridLineGenerator, self).__init__(card_height, card_width, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc) + else: + super(SimpleGridLineGenerator, self).__init__(card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc) + + self.ContainerWidth = self.card_width + 2 * bleed_margin + self.ContainerHeight = self.card_height + 2 * bleed_margin + + # num across + # num down + self.NumContainersAcross = int((self.PageWidth - 2*self.page_margin) // self.ContainerWidth) # round down division + self.NumContainersDown = int((self.PageHeight - 2*self.page_margin) // self.ContainerHeight) # round down division + + # content sizes + self.ContentWidth = self.NumContainersAcross * self.ContainerWidth + self.ContentHeight = self.NumContainersDown * self.ContainerHeight + + def GenerateGuides(self, xmlParent): + horizontalOffsets = self.GuideOffsetsNoFold = [ + 0, + self.bleed_margin, self.card_margin, + self.card_width - 2*self.card_margin, + self.card_margin, self.bleed_margin + ] + + verticalOffsets = self.GuideOffsetsNoFold = [ + 0, + self.bleed_margin, self.card_margin, + self.card_height - 2*self.card_margin, + self.card_margin, self.bleed_margin + ] + + self.DrawVerticleGuides(xmlParent, horizontalOffsets, 0) + self.DrawHorizontalGuides(xmlParent, verticalOffsets, 0) + + def GetFoldLinePositions(self): + return [] # no fold lines in simple grid + + def GetCropMarkLines(self): + lines = [] + + leftMargin = self.CalcPageLeftMargin() + bottomMargin = self.CalcPageBottomMargin() + + #determine all horizontal crop marks, duplicates possible + # figure out the ypos + horizontal_ypos = [] + for idx in range(self.NumContainersDown): + bottomY = self.bleed_margin + topY = bottomY + self.card_height + containerOffset = bottomMargin + idx*self.ContainerHeight + + horizontal_ypos.append(containerOffset + bottomY) + horizontal_ypos.append(containerOffset + topY) + + horizontal_ypos = RoundAndDeduplicatePoints(horizontal_ypos) # remove duplicate positions + + horizontal_xpos = [leftMargin - CROP_GAP, self.PageWidth - leftMargin + CROP_GAP + CROP_LENGTH] + for xpos in horizontal_xpos: + for ypos in horizontal_ypos: + lines.append([ + Point(xpos - CROP_LENGTH, ypos), + Point(xpos, ypos) + ]) + + #determine all vertical crop marks, duplicates possible + # figure out the xpos + vertical_xpos = [] + for idx in range(self.NumContainersAcross): + leftX = self.bleed_margin + rightX = leftX + self.card_width + containerOffset = leftMargin + idx*self.ContainerWidth + + vertical_xpos.append(containerOffset + leftX) + vertical_xpos.append(containerOffset + rightX) + + vertical_xpos = RoundAndDeduplicatePoints(vertical_xpos) # remove duplicate positions + + vertical_ypos = [bottomMargin - CROP_GAP, self.PageHeight - bottomMargin + CROP_GAP + CROP_LENGTH] + for xpos in vertical_xpos: + for ypos in vertical_ypos: + lines.append([ + Point(xpos, ypos), + Point(xpos, ypos - CROP_LENGTH) + ]) + + return lines + +class LineGeneratorForVerticalCards(LineGeneratorBase): + def __init__(self, card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc): + super(LineGeneratorForVerticalCards, self).__init__(card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc) + + self.ContainerWidth = card_width + 2*bleed_margin + self.ContainerHeight = 2*(card_height + 2*bleed_margin + FOLD_GAP) + + # num across + self.NumContainersAcross = int((self.PageWidth - 2*self.page_margin) // self.ContainerWidth) # round down division + + # num down + contentHeight = lambda n: n * self.ContainerHeight + (n - 1)*(2*FOLD_GAP) + workingHeight = self.PageHeight - 2*self.page_margin + + self.NumContainersDown = int(workingHeight // self.ContainerHeight) # round down division for nominal value + if contentHeight(self.NumContainersDown) > workingHeight: + self.NumContainersDown -= 1 + + # content sizes + self.ContentWidth = self.NumContainersAcross * self.ContainerWidth + self.ContentHeight = contentHeight(self.NumContainersDown) + + def GenerateGuides(self, xmlParent): + self.DrawVerticleGuides(xmlParent, self.GuideOffsetsNoFold, 0) + self.DrawHorizontalGuides(xmlParent, self.GuideOffsetsWithFold, 2*FOLD_GAP) + + def GetFoldLinePositions(self): + lines = [] + leftMargin = self.CalcPageLeftMargin() + + for idx in range(self.NumContainersDown): + foldY = self.CalcPageBottomMargin() + idx*(self.ContainerHeight + 2*FOLD_GAP) + self.ContainerHeight/2 + lines.append([Point(leftMargin, foldY), Point(self.PageWidth - leftMargin, foldY)]) + + return lines + + def GetCropMarkLines(self): + lines = [] + + leftMargin = self.CalcPageLeftMargin() + bottomMargin = self.CalcPageBottomMargin() + vertical_ypos = [] + # determine all of the hornzontal facing crop marks, no duplicates possible + for idx in range(self.NumContainersDown): + bottomY = self.bleed_margin + topY = bottomY + self.card_height + containerOffset = bottomMargin + idx*(self.ContainerHeight + 2*FOLD_GAP) + vertical_ypos += [ + containerOffset - CROP_GAP, + containerOffset + 2*self.bleed_margin + 2*self.card_margin + self.card_height + CROP_GAP + CROP_LENGTH + ] # stash for later + + for ypos in [containerOffset + bottomY, containerOffset + topY]: + for xpos in [leftMargin - CROP_GAP, self.PageWidth - leftMargin + CROP_GAP + CROP_LENGTH]: + lines.append([ + Point(xpos, ypos), + Point(xpos - CROP_LENGTH, ypos) + ]) + + #determine all vertical crop marks, duplicates possible + # figure out the xpos + vertical_xpos = [] + for idx in range(self.NumContainersAcross): + leftX = self.bleed_margin + rightX = leftX + self.card_width + containerOffset = leftMargin + idx*self.ContainerWidth + + vertical_xpos.append(containerOffset + leftX) + vertical_xpos.append(containerOffset + rightX) + + vertical_xpos = list(set(vertical_xpos)) # remove duplicate positions + + for xpos in vertical_xpos: + for ypos in vertical_ypos: + lines.append([ + Point(xpos, ypos), + Point(xpos, ypos - CROP_LENGTH) + ]) + + return lines + +class LineGeneratorForHorizontalCards(LineGeneratorBase): + def __init__(self, card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc): + super(LineGeneratorForHorizontalCards, self).__init__(card_width, card_height, card_margin, bleed_margin, pageWidth, pageHeight, page_margin, unitConverterFunc) + + self.ContainerWidth = 2*(card_height + 2 * bleed_margin + FOLD_GAP) + self.ContainerHeight = card_width + 2 * bleed_margin + + # num across + contentWidth = lambda n: n * self.ContainerWidth + (n - 1)*(2*FOLD_GAP) + workingWidth = self.PageWidth - 2*self.page_margin + + self.NumContainersAcross = int(workingWidth // self.ContainerWidth) # round down division for nominal value + if contentWidth(self.NumContainersAcross) > workingWidth: + self.NumContainersAcross -= 1 + + # num down + self.NumContainersDown = int((self.PageHeight - 2*self.page_margin) // self.ContainerHeight) # round down division + + # content sizes + self.ContentWidth = contentWidth(self.NumContainersAcross) + self.ContentHeight = self.NumContainersDown * self.ContainerHeight + + def GenerateGuides(self, xmlParent): + self.DrawVerticleGuides(xmlParent, self.GuideOffsetsWithFold, 2*FOLD_GAP) + self.DrawHorizontalGuides(xmlParent, self.GuideOffsetsNoFold, 0) + + def GetFoldLinePositions(self): + lines = [] + bottomMargin = self.CalcPageBottomMargin() + + for idx in range(self.NumContainersAcross): + foldX = self.CalcPageLeftMargin() + idx*(self.ContainerWidth + 2*FOLD_GAP) + self.ContainerWidth/2 + lines.append([Point(foldX, bottomMargin), Point(foldX, self.PageHeight - bottomMargin)]) + + return lines + + def GetCropMarkLines(self): + lines = [] + + leftMargin = self.CalcPageLeftMargin() + bottomMargin = self.CalcPageBottomMargin() + horizontal_xpos = [] + + # determine all of the vertical facing crop marks, no duplicates possible + for idx in range(self.NumContainersAcross): + leftX = self.bleed_margin + rightX = leftX + self.card_height + containerOffset = leftMargin + idx*(self.ContainerWidth + 2*FOLD_GAP) + horizontal_xpos += [ + containerOffset - CROP_GAP, + containerOffset + 2*self.bleed_margin + 2*self.card_margin + self.card_height + CROP_GAP + CROP_LENGTH + ] # stash for later + + for xpos in [containerOffset + leftX, containerOffset + rightX]: + for ypos in [bottomMargin - CROP_GAP, self.PageHeight - bottomMargin + CROP_GAP + CROP_LENGTH]: + lines.append([ + Point(xpos, ypos), + Point(xpos, ypos - CROP_LENGTH) + ]) + + #determine all horizontal crop marks, duplicates possible + # figure out the xpos + horizontal_ypos = [] + for idx in range(self.NumContainersDown): + bottomY = self.bleed_margin + topY = bottomY + self.card_width + containerOffset = bottomMargin + idx*self.ContainerHeight + + horizontal_ypos.append(containerOffset + bottomY) + horizontal_ypos.append(containerOffset + topY) + + horizontal_ypos = RoundAndDeduplicatePoints(horizontal_ypos) # remove duplicate positions + + for ypos in horizontal_ypos: + for xpos in horizontal_xpos: + lines.append([ + Point(xpos, ypos), + Point(xpos - CROP_LENGTH, ypos) + ]) + + return lines + +class CardLayoutGuides(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('-l', '--layout') + pars.add_argument('-w', '--card_width', type = float) + pars.add_argument('-d', '--card_height', type = float) + pars.add_argument('-o', '--orientation') + pars.add_argument('-c', '--card_margin', type = float) + pars.add_argument('-b', '--bleed_margin', type = float) + pars.add_argument('-p', '--page_margin', type = float) + + def effect(self): + # find dimensions of page + pageWidth = self.svg.uutounit(self.svg.width, "mm") + pageHeight = self.svg.uutounit(self.svg.height, "mm") + + opt = self.options + + guideParent = self.document.xpath('//sodipodi:namedview',namespaces=inkex.NSS)[0] + + ### GUIDES + # remove all the existing guides + [node.delete() for node in self.document.xpath('//sodipodi:guide',namespaces=inkex.NSS)] + + # create the generator object + gen = LineGeneratorBase.CreateLineGenerator(opt.layout, opt.orientation, opt.card_width, opt.card_height, opt.card_margin, opt.bleed_margin, pageWidth, pageHeight, opt.page_margin, self.svg.unittouu) + + gen.GenerateGuides(guideParent) + + ### FOLD LINES + # remove any existing 'Crop marks' layer + [node.delete() for node in self.document.xpath("//svg:g[@inkscape:label='Crop Marks']",namespaces=inkex.NSS)] + + svg = self.document.xpath('//svg:svg', namespaces=inkex.NSS)[0] + layer = etree.SubElement(svg, inkex.addNS('g',"svg"), {}) + layer.set(inkex.addNS('label', 'inkscape'), "Crop Marks") + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + #layer.set(inkex.addNS('insensitive', 'sodipodi'), 'true') + + gen.GenerateFoldLines(layer) + + ### CROP MARKS + gen.GenerateCropMarks(layer) + +if __name__ == '__main__': + CardLayoutGuides().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.inx b/extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.inx new file mode 100644 index 00000000..564b806a --- /dev/null +++ b/extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.inx @@ -0,0 +1,81 @@ + + + Hatches And Grains + fablabchemnitz.de.hatches_and_grains + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.py b/extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.py new file mode 100644 index 00000000..b4bad268 --- /dev/null +++ b/extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.py @@ -0,0 +1,144 @@ +#!/bin/env python3 +# +# Copyright (C) 2020 Marc Jeanmougin, Laurent Porcheret +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +# +# Thanks to Bénédicte Cuperly for reminding me to do this and for her feedback + + +""" Geography patterns """ + +import math +import inkex +from inkex import Pattern, PathElement, Circle, Rectangle, AbortExtension + +GRAIN_V="m 0 0 10 20 10 -20" +GRAIN_VI="m 0 20 10 -20 10 20" +GRAIN_PLUS="M 10 0 10 20 M 0 10 20 10" +GRAIN_X="M 0 0 20 20 M 0 20 20 0" + + +class Geography(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--tab', default='grains_page', help='grains_page or hatches_page') + pars.add_argument('--type', default='h', help='h|d') + pars.add_argument('--angle', default='0', help='angle') + pars.add_argument('--thickness', default='1', help='width') + pars.add_argument('--spacing', default='8', help='spacing between hatches') + pars.add_argument('--type_grain', default='grain_v', help='Shape of patterns (v^+xoO)') + pars.add_argument('--size', default='1', help='size of grain') + pars.add_argument('--hcolor', default=inkex.Color(255), type=inkex.Color, help='color of hatches') + pars.add_argument('--gcolor', default=inkex.Color(255), type=inkex.Color, help='color of grains') + + def effect(self): + #step 0: find desired id + i=self.get_id() + #step 1: add stuff in defs if not present + if self.svg.getElementById(i) is None: + #construct it + newNode = self.svg.defs.add(Pattern()) + self.construct(newNode) + + #step 2: assign + for node in self.svg.selection.values(): + node.style['fill'] = "url(#"+i+")" + node.set('fill', "url(#"+i+")") + + def construct(self, node): + if(self.options.tab == "grains_page"): + self.construct_grain(node) + else: + self.construct_hatch(node) + node.set('patternUnits', "userSpaceOnUse") + node.set('id', self.get_id()) + + def get_id(self): + if(self.options.tab=="grains_page"): + return "inkgeo_"+self.options.type_grain+"_"+self.options.size+"_"+str(int(self.options.gcolor)) + else: + return "inkgeo_"+self.options.type+"_"+self.options.angle+"_"+self.options.thickness+"_"+self.options.spacing+"_"+str(int(self.options.hcolor)) + + + def construct_grain(self, node): + size=str(math.sqrt(float(self.options.size))) + node.set('width', "100") + node.set('height', "100") + n1=0 + n2=0 + node.style="stroke-width:4;" + if self.options.type_grain == "grain_c" or self.options.type_grain == "grain_r": + n1 = node.add(Circle()) + n2 = node.add(Circle()) + n1.set('cx',10) + n1.set('cy',10) + n1.set('r',10) + n2.set('cx',10) + n2.set('cy',10) + n2.set('r',10) + if self.options.type_grain == "grain_c": + node.style.set_color(self.options.gcolor, 'stroke') + node.set('fill', "none") + else: + node.style.set_color(self.options.gcolor, 'stroke') + node.style.set_color(self.options.gcolor, 'fill') + else: + node.style.set_color(self.options.gcolor, 'stroke') + node.set('fill', "none") + #paths + n1 = node.add(PathElement()) + n2 = node.add(PathElement()) + if self.options.type_grain == "grain_v": + n1.set('d', GRAIN_V) + n2.set('d', GRAIN_V) + elif self.options.type_grain == "grain_m": + n1.set('d', GRAIN_VI) + n2.set('d', GRAIN_VI) + elif self.options.type_grain == "grain_p": + n1.set('d', GRAIN_PLUS) + n2.set('d', GRAIN_PLUS) + elif self.options.type_grain == "grain_x": + n1.set('d', GRAIN_X) + n2.set('d', GRAIN_X) + n1.set('transform', "translate(5,5)scale("+size+")") + n2.set('transform', "translate(55,55)scale("+size+")") + node.set('patternTransform', "scale(0.1)") + + def construct_hatch(self,node): + h = int(self.options.spacing)+int(self.options.thickness) + node.set('width', str(h)) + node.set('patternTransform', "rotate("+self.options.angle+")") + r = node.add(Rectangle()) + r.set('x', "0") + r.set('y', "0") + r.set('height', self.options.thickness) + r.style.set_color(self.options.hcolor, 'fill') + if self.options.type=="h": + node.set('height',str(h)) + r.set('width', str(h)) + else: + node.set('height',str(2*h)) + r.set('width', str(h/2)) + r2 = node.add(Rectangle()) + r2.set('x', str(h/2)) + r2.set('y', str(h)) + r2.set('width', str(h/2)) + r2.set('height', self.options.thickness) + r2.style.set_color(self.options.hcolor, 'fill') + + +if __name__ == '__main__': + Geography().run() diff --git a/extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/LC_MESSAGES/hatches_grains.mo b/extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/LC_MESSAGES/hatches_grains.mo new file mode 100644 index 00000000..46d34d30 Binary files /dev/null and b/extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/LC_MESSAGES/hatches_grains.mo differ diff --git a/extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/hatches_grains.po b/extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/hatches_grains.po new file mode 100644 index 00000000..62ff9b42 --- /dev/null +++ b/extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/hatches_grains.po @@ -0,0 +1,128 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: hatches_grains\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-09-28 11:27+0200\n" +"PO-Revision-Date: 2020-09-28 11:32+0200\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Last-Translator: \n" +"Language-Team: \n" +"X-Generator: Poedit 2.3\n" + +#: hatches_grains.inx:3 +msgid "Hatches and grains" +msgstr "Hachures et grains" + +#: hatches_grains.inx:11 +msgid "Hatches" +msgstr "Hachures" + +#: hatches_grains.inx:12 +msgid "" +"\n" +"Create standardized hatches to differentiate or prioritize cartographic " +"objects. \n" +" " +msgstr "" +"\n" +"Crée des hachures standardisées pour différencier ou prioriser des objets " +"cartographiques.\n" +" " + +#: hatches_grains.inx:16 +msgid "Hatches settings" +msgstr "Paramètres de hachures" + +#: hatches_grains.inx:18 +msgid "Sort of hatches:" +msgstr "Type de hachures :" + +#: hatches_grains.inx:23 +msgid "Orientation:" +msgstr "Orientation :" + +#: hatches_grains.inx:30 +msgid "Thickness:" +msgstr "Épaisseur :" + +#: hatches_grains.inx:37 +msgid "Spacing:" +msgstr "Espacement :" + +#: hatches_grains.inx:49 hatches_grains.inx:50 +msgid "Hatches color" +msgstr "Couleur de hachures" + +#: hatches_grains.inx:55 +msgid "Grains" +msgstr "Grains" + +#: hatches_grains.inx:57 +msgid "" +"\n" +"Create standardized grains to differentiate or prioritize cartographic " +"objects.\n" +" " +msgstr "" +"\n" +"Crée des grains standardisées pour différencier ou prioriser des objets " +"cartographiques.\n" +" " + +#: hatches_grains.inx:61 +msgid "Grains settings" +msgstr "Paramètres de grains" + +#: hatches_grains.inx:63 +msgid "Grains:" +msgstr "Grains :" + +#: hatches_grains.inx:72 +msgid "Size:" +msgstr "Taille :" + +#: hatches_grains.inx:79 hatches_grains.inx:80 +msgid "Grain color" +msgstr "Couleur de grains" + +#: hatches_grains.inx:86 +msgid "Information" +msgstr "Information" + +#: hatches_grains.inx:87 +msgid "" +"\n" +"This mapping module is intended for the community of geographers and " +"cartographers.\n" +"\n" +"It makes it possible to create visual variables like \"hatch\" or \"grain\" " +"on surface or point implantation, in order to differentiate or prioritize " +"the cartographic information.\n" +"\n" +"Laurent Porcheret \n" +"Géographe - cartographe / Geographer - cartographer\n" +"Sorbonne université - INSPE de Paris\n" +"V.15.01.2020" +msgstr "" +"\n" +"Ce module est destiné à la communauté des géographes et des cartographes.\n" +"Il permet de créer des variables visuelles telles que des hachures ou des " +"grains sur des surfaces ou des ponctuels, pour différencier ou hiérarchiser " +"des informations cartographiques.\n" +"\n" +"Laurent Porcheret \n" +"Géographe - cartographe / Geographer - cartographer\n" +"Sorbonne université - INSPE de Paris" + +#: hatches_grains.inx:102 +msgid "Cartography" +msgstr "Cartographie" diff --git a/extensions/fablabchemnitz/cartography_hatches_grains/locale/hatches_grains.pot b/extensions/fablabchemnitz/cartography_hatches_grains/locale/hatches_grains.pot new file mode 100644 index 00000000..59fabdca --- /dev/null +++ b/extensions/fablabchemnitz/cartography_hatches_grains/locale/hatches_grains.pot @@ -0,0 +1,110 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-09-28 11:33+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: hatches_grains.inx:3 +msgid "Hatches and grains" +msgstr "" + +#: hatches_grains.inx:11 +msgid "Hatches" +msgstr "" + +#: hatches_grains.inx:12 +msgid "" +"\n" +"Create standardized hatches to differentiate or prioritize cartographic " +"objects. \n" +" " +msgstr "" + +#: hatches_grains.inx:16 +msgid "Hatches settings" +msgstr "" + +#: hatches_grains.inx:18 +msgid "Sort of hatches:" +msgstr "" + +#: hatches_grains.inx:23 +msgid "Orientation:" +msgstr "" + +#: hatches_grains.inx:30 +msgid "Thickness:" +msgstr "" + +#: hatches_grains.inx:37 +msgid "Spacing:" +msgstr "" + +#: hatches_grains.inx:49 hatches_grains.inx:50 +msgid "Hatches color" +msgstr "" + +#: hatches_grains.inx:55 +msgid "Grains" +msgstr "" + +#: hatches_grains.inx:57 +msgid "" +"\n" +"Create standardized grains to differentiate or prioritize cartographic " +"objects.\n" +" " +msgstr "" + +#: hatches_grains.inx:61 +msgid "Grains settings" +msgstr "" + +#: hatches_grains.inx:63 +msgid "Grains:" +msgstr "" + +#: hatches_grains.inx:72 +msgid "Size:" +msgstr "" + +#: hatches_grains.inx:79 hatches_grains.inx:80 +msgid "Grain color" +msgstr "" + +#: hatches_grains.inx:86 +msgid "Information" +msgstr "" + +#: hatches_grains.inx:87 +msgid "" +"\n" +"This mapping module is intended for the community of geographers and " +"cartographers.\n" +"\n" +"It makes it possible to create visual variables like \"hatch\" or \"grain\" " +"on surface or point implantation, in order to differentiate or prioritize " +"the cartographic information.\n" +"\n" +"Laurent Porcheret \n" +"Géographe - cartographe / Geographer - cartographer\n" +"Sorbonne université - INSPE de Paris\n" +"V.15.01.2020" +msgstr "" + +#: hatches_grains.inx:102 +msgid "Cartography" +msgstr "" diff --git a/extensions/fablabchemnitz/chain_paths/chain_paths.inx b/extensions/fablabchemnitz/chain_paths/chain_paths.inx new file mode 100644 index 00000000..ef3c672a --- /dev/null +++ b/extensions/fablabchemnitz/chain_paths/chain_paths.inx @@ -0,0 +1,29 @@ + + + Chain Paths + fablabchemnitz.de.chain_paths + 0.01 + + + + + + + + false + true + + + + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/chain_paths/chain_paths.py b/extensions/fablabchemnitz/chain_paths/chain_paths.py new file mode 100644 index 00000000..d8c309fd --- /dev/null +++ b/extensions/fablabchemnitz/chain_paths/chain_paths.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python3 +# +# Inkscape extension making long continuous paths from shorter pieces. +# (C) 2015 juewei@fabmail.org +# +# code snippets visited to learn the extension 'effect' interface: +# - convert2dashes.py +# - http://github.com/jnweiger/inkscape-silhouette +# - http://github.com/jnweiger/inkscape-gears-dev +# - http://sourceforge.net/projects/inkcut/ +# - http://code.google.com/p/inkscape2tikz/ +# - http://code.google.com/p/eggbotcode/ +# +# 2015-11-15 jw, V0.1 -- initial draught +# 2015-11-16 jw, V0.2 -- fixed endpoints after chaining. +# 2015-11-16 jw, V0.3 -- all possible chains connected. Yeah +# 2015-11-16 jw, V0.4 -- gui fully functional. +# 2015-11-26 jw, V0.5 -- HACK to resolve some self-reversing path segments. +# https://github.com/fablabnbg/inkscape-chain-paths/issues/1 +# 2020-04-10 jw, V0.6 -- Close paths correctly. Self reversing path hack was too eager. +# Workaround for cubicsuperpath.parsePath/formatPath limitation. +# Started python3 compatibility. +# 2020-05-27 vi, V0.7 -- Upgrade to Inkscape 1.0. Write debug info to inkex debug dialog. + +from __future__ import print_function + +__version__ = '0.7' # Keep in sync with chain_paths.inx ca line 22 +__author__ = 'Juergen Weigert ' +__credits__ = ['Juergen Weigert', 'Veronika Irvine'] + +import sys +import math +import re +import inkex +from inkex.paths import CubicSuperPath, Path +from optparse import SUPPRESS_HELP +debug = False + +class ChainPaths(inkex.EffectExtension): + + def __init__(self): + inkex.Effect.__init__(self) + + # For handling an SVG viewbox attribute, we will need to know the + # values of the document's width and height attributes as well + # as establishing a transform from the viewbox to the display. + self.chain_epsilon = 0.01 + self.snap_ends = True + self.close_loops = True + self.segments_done = {} + self.min_missed_distance_sq = None + self.chained_count = 0 + + self.arg_parser.add_argument('-V', '--version', type=inkex.Boolean, default=False, help = 'Just print version number ("' + __version__ + '") and exit.') + self.arg_parser.add_argument('-s', '--snap_ends', type=inkex.Boolean, default=True, help='snap end-points together when connecting') + self.arg_parser.add_argument('-c', '--close_loops', type=inkex.Boolean, default=True, help='close loops (start/end of the same path)') + self.arg_parser.add_argument('-u', '--units', default="mm", help="measurement unit for epsilon") + self.arg_parser.add_argument('-e', '--chain_epsilon', type=float, default=0.01, help="Max. distance to connect [mm]") + + def version(self): + return __version__ + def author(self): + return __author__ + + def calc_unit_factor(self, units='mm'): + """ return the scale factor for all dimension conversions. + - The document units are always irrelevant as + everything in inkscape is expected to be in 90dpi pixel units + """ + dialog_units = self.svg.unittouu(str(1.0)+units) + self.unit_factor = 1.0 / dialog_units + return self.unit_factor + + def reverse_segment(self, seg): + r = [] + for s in reversed(seg): + # s has 3 elements: handle1, point, handle2 + # Swap handles. + s.reverse() + r.append(s) + return r + + def set_segment_done(self, id, n, msg=''): + if not id in self.segments_done: + self.segments_done[id] = {} + self.segments_done[id][n] = True + if debug: inkex.utils.debug("done "+str(id)+" "+str(n)+" "+msg) + + def is_segment_done(self, id, n): + if not id in self.segments_done: + return False + if n in self.segments_done[id]: + return True + return False + + def link_segments(self, seg1, seg2): + if self.snap_ends: + seg = seg1[:-1] + p1 = seg1[-1] + p2 = seg2[0] + # fuse p1 and p2 to create one new point: + # first handle from p1, point coordinates averaged, second handle from p2 + seg.append([ [ p1[0][0] , p1[0][1] ], + [ (p1[1][0] + p2[1][0]) * .5, (p1[1][1] + p2[1][1]) * .5 ], + [ p2[2][0] , p2[2][1] ] ]) + seg.extend(seg2[1:]) + else: + seg = seg1[:] + seg.extend(seg2[:]) + self.chained_count += 1 + return seg + + def near_ends(self, end1, end2): + """ requires self.eps_sq to be the square of the near distance """ + dx = end1[0] - end2[0] + dy = end1[1] - end2[1] + d_sq = dx * dx + dy * dy + if d_sq > self.eps_sq: + if self.min_missed_distance_sq is None: + self.min_missed_distance_sq = d_sq + elif self.min_missed_distance_sq > d_sq: + self.min_missed_distance_sq = d_sq + return False + else: + return True + + def effect(self): + if self.options.version: + print(__version__) + sys.exit(0) + + self.calc_unit_factor(self.options.units) + + if self.options.snap_ends is not None: self.snap_ends = self.options.snap_ends + if self.options.close_loops is not None: self.close_loops = self.options.close_loops + if self.options.chain_epsilon is not None: self.chain_epsilon = self.options.chain_epsilon + if self.chain_epsilon < 0.001: self.chain_epsilon = 0.001 # keep a minimum. + self.eps_sq = self.chain_epsilon * self.unit_factor * self.chain_epsilon * self.unit_factor + + if not len(self.svg.selected.items()): + inkex.errormsg("Please select one or more objects.") + return + + segments = [] + for id, node in self.svg.selected.items(): + if node.tag != inkex.addNS('path', 'svg'): + inkex.errormsg("Object " + id + " is not a path. Try\n - Path->Object to Path\n - Object->Ungroup") + return + if debug: inkex.utils.debug("id=" + str(id) + ", tag=" + str(node.tag)) + path_d = CubicSuperPath(Path(node.get('d'))) + sub_idx = -1 + for sub in path_d: + sub_idx += 1 + # sub = [[[200.0, 300.0], [200.0, 300.0], [175.0, 290.0]], [[175.0, 265.0], [220.37694, 256.99876], [175.0, 240.0]], [[175.0, 215.0], [200.0, 200.0], [200.0, 200.0]]] + # this is a path of three points. All the bezier handles are included. the Structure is: + # [[handle0_OUT, point0, handle0_1], [handle1_0, point1, handle1_2], [handle2_1, point2, handle2_OUT]] + # the _OUT handles at the end of the path are ignored. The data structure has them identical to their points. + # + if debug: inkex.utils.debug(" sub=" + str(sub)) + end1 = [sub[ 0][1][0], sub[ 0][1][1]] + end2 = [sub[-1][1][0], sub[-1][1][1]] + + # Remove trivial self revesal when building candidate segments list. + if ((len(sub) == 3) and self.near_ends(end1, end2)): + if debug: inkex.utils.debug("dropping segment from self-reversing path, length:"+str(len(sub))) + sub.pop() + end2 = [sub[-1][1][0], sub[-1][1][1]] + + segments.append({'id': id, 'n': sub_idx, 'end1': end1, 'end2':end2, 'seg': sub}) + if node.get(inkex.addNS('type', 'sodipodi')): + del node.attrib[inkex.addNS('type', 'sodipodi')] + if debug: inkex.utils.debug("-------- seen: ") + for s in segments: + if debug: inkex.utils.debug(str(s['id'])+", "+str(s['n'])+", "+str(s['end1'])+", "+str(s['end2'])) + + # chain the segments + obsoleted = 0 + remaining = 0 + for id, node in self.svg.selected.items(): + path_d = CubicSuperPath(Path(node.get('d'))) + # ATTENTION: for parsePath() it is the same, if first and last point coincide, or if the path is really closed. + path_closed = True if re.search("z\s*$", node.get('d')) else False + new = [] + cur_idx = -1 + for chain in path_d: + cur_idx += 1 + if not self.is_segment_done(id, cur_idx): + # quadratic algorithm: we check both ends of the current segment. + # If one of them is near another known end from the segments list, we + # chain this segment to the current segment and remove it from the + # list, + # end1-end1 or end2-end2: The new segment is reversed. + # end1-end2: The new segment is prepended to the current segment. + # end2-end1: The new segment is appended to the current segment. + self.set_segment_done(id, cur_idx, "output") # do not cross with ourselves. + end1 = [chain[ 0][1][0], chain[ 0][1][1]] + end2 = [chain[-1][1][0], chain[-1][1][1]] + + # Remove trivial self revesal when doing the actual chain operation. + if ((len(chain) == 3) and self.near_ends(end1, end2)): + chain.pop() + end2 = [chain[-1][1][0], chain[-1][1][1]] + + segments_idx = 0 + while segments_idx < len(segments): + seg = segments[segments_idx] + if self.is_segment_done(seg['id'], seg['n']): + segments_idx += 1 + continue + + if (self.near_ends(end1, seg['end1']) or + self.near_ends(end2, seg['end2'])): + seg['seg'] = self.reverse_segment(seg['seg']) + seg['end1'], seg['end2'] = seg['end2'], seg['end1'] + if debug: inkex.utils.debug("reversed seg " + str(seg['id']) + ", "+str(seg['n'])) + + if self.near_ends(end1, seg['end2']): + # prepend seg to chain + self.set_segment_done(seg['id'], seg['n'], 'prepended to ' + str(id) + ' ' + str(cur_idx)) + chain = self.link_segments(seg['seg'], chain) + end1 = [chain[0][1][0], chain[0][1][1]] + segments_idx = 0 # this chain changed. re-visit all candidate + continue + + if self.near_ends(end2, seg['end1']): + # append seg to chain + self.set_segment_done(seg['id'], seg['n'], 'appended to ' + str(id) + ' ' + str(cur_idx)) + chain = self.link_segments(chain, seg['seg']) + end2 = [chain[-1][1][0], chain[-1][1][1]] + segments_idx = 0 # this chain changed. re-visit all candidate + continue + + segments_idx += 1 + + # Now all joinable segments are joined. + # Finally, we can check, if the resulting path is a closed path: + # Closing a path here, isolates it from the rest. + # But as we prefer to make the chain as long as possible, we close late. + if self.near_ends(end1, end2) and not path_closed and self.close_loops: + if debug: inkex.utils.debug("closing closeable loop " +str(id)) + if self.snap_ends: + # move first point to mid position + x1n = (chain[0][1][0] + chain[-1][1][0]) * 0.5 + y1n = (chain[0][1][1] + chain[-1][1][1]) * 0.5 + chain[0][1][0], chain[0][1][1] = x1n, y1n + # merge handle of the last point to the handle of the first point + dx0e = chain[-1][0][0] - chain[-1][1][0] + dy0e = chain[-1][0][1] - chain[-1][1][1] + if debug: inkex.utils.debug("handle diff: "+ str(dx0e) + str(dy0e)) + # FIXME: this does not work. cubicsuperpath.formatPath() ignores this handle. + chain[0][0][0], chain[0][0][1] = x1n+dx0e, y1n+dy0e + # drop last point + chain.pop() + end2 = [chain[-1][1][0], chain[-1][1][1]] + path_closed = True + self.chained_count +=1 + + new.append(chain) + + if not len(new): + # node.clear() + if node.getparent() is not None: + node.delete() + obsoleted += 1 + if debug: inkex.utils.debug("Path node obsoleted: " +str(id)) + else: + remaining += 1 + # BUG: All previously closed loops, are open, after we convert them back with cubicsuperpath.formatPath() + p_fmt = str(Path(CubicSuperPath(new).to_path().to_arrays())) + if path_closed: p_fmt += " z" + if debug: inkex.utils.debug("new path: "+str(p_fmt)) + node.set('d', p_fmt) + + # statistics: + if debug: inkex.utils.debug("Path nodes obsoleted: "+str(obsoleted) + "\nPath nodes remaining:"+str(remaining)) + if self.min_missed_distance_sq is not None: + if debug: inkex.utils.debug("min_missed_distance: "+str(math.sqrt(float(self.min_missed_distance_sq))/self.unit_factor)+'>'+str(self.chain_epsilon)+str(self.options.units)) + if debug: inkex.utils.debug("Successful link operations: "+str(self.chained_count)) + +if __name__ == '__main__': + ChainPaths().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/checkerboard/checkerboard.inx b/extensions/fablabchemnitz/checkerboard/checkerboard.inx new file mode 100644 index 00000000..0e8e548c --- /dev/null +++ b/extensions/fablabchemnitz/checkerboard/checkerboard.inx @@ -0,0 +1,37 @@ + + + Checkerboard + fablabchemnitz.de.checkerboard + + + 50 + 10 + 10 + true + + + 4286282751 + + + 8092671 + + + + + + + + + + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/checkerboard/checkerboard.py b/extensions/fablabchemnitz/checkerboard/checkerboard.py new file mode 100644 index 00000000..992437be --- /dev/null +++ b/extensions/fablabchemnitz/checkerboard/checkerboard.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 + +""" +Inkscape extension to create checkerboard patterns + + +Copyright (C) 2011 Jeff Kayser + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +""" + +import inkex +from lxml import etree +import re +from inkex import Color + +def rgbToHex(pickerColor): + longcolor = int(pickerColor) + if longcolor < 0: + longcolor = longcolor & 0xFFFFFFFF + return '#' + format(longcolor >> 8, '06X') + +def draw_square(x, y, w, h, color, parent, id_=None): + """Draw a w*h square at (x, y) having color color + """ + if len(color) == 4: + opacity=color[3] + else: + opacity=1.0 + + style = {'stroke': 'none', 'stroke-width': '1', 'fill': rgbToHex(color), 'fill-opacity': opacity} + attribs = {'style': str(inkex.Style(style)), 'height': str(h), 'width': str(w), 'x': str(x), 'y': str(y)} + if id_ is not None: + attribs.update({'id': id_}) + obj = etree.SubElement(parent, inkex.addNS('rect', 'svg'), attribs) + +def draw_grid(x, y, rows, cols, size, color1, color2, parent): + """Draw a rows*cols checkboard grid at (x, y) with square size of size*size, + with squares having alternating colors color1 and color2 + """ + # Group like-colors + group1 = etree.SubElement(parent, 'g', {'id': 'diagonal1'}) + group2 = etree.SubElement(parent, 'g', {'id': 'diagonal2'}) + for row in range(int(rows)): + for col in range(int(cols)): + alternate = (col + row) % 2 == 0 + color = color1 if alternate else color2 + group = group1 if alternate else group2 + id_ = 'cell{0}x{1}'.format(col, row) + draw_square(x + col * size, y + row * size, size, size, color, group, id_) + +class Checkerboard(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--color1", type=Color, default=4286282751) + pars.add_argument("--color2", type=Color, default=8092671) + pars.add_argument("--size") + pars.add_argument("--rows", type=int) + pars.add_argument("--cols", type=int) + pars.add_argument("--layer", type=inkex.Boolean) + + def effect(self): + if self.svg.get_current_layer() is not None: + group = etree.SubElement(self.svg.get_current_layer(), 'g', {'id': 'checkerboard'}) + else: + parent = self.document.getroot() + group = etree.SubElement(parent, 'g', {'id': 'checkerboard'}) + + rows = self.options.rows + cols = self.options.cols + # Convert to pixels + size = self.svg.unittouu(self.options.size) + color1 = self.options.color1 + color2 = self.options.color2 + # Center checkerboard within visible viewport + x, y = self.svg.namedview.center[0] - cols * size / 2, self.svg.namedview.center[1] - rows * size / 2 + draw_grid(x, y, rows, cols, size, color1, color2, group) + +if __name__ == '__main__': + Checkerboard().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/chip_scratches/chip_scratches.inx b/extensions/fablabchemnitz/chip_scratches/chip_scratches.inx new file mode 100644 index 00000000..b791fecf --- /dev/null +++ b/extensions/fablabchemnitz/chip_scratches/chip_scratches.inx @@ -0,0 +1,50 @@ + + + Chip Scratches + fablabchemnitz.de.chip_scratches + + + + true + 1000 + 1000 + 1.0 + 200 + + + true + 2.0 + 0.0 + 0.2 + false + 90. + 0.0 + false + + + true + 1.0 + 0.0 + 1.0 + false + + + true + 1.0 + 0.0 + 10.0 + false + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/chip_scratches/chip_scratches.py b/extensions/fablabchemnitz/chip_scratches/chip_scratches.py new file mode 100644 index 00000000..3b3a4460 --- /dev/null +++ b/extensions/fablabchemnitz/chip_scratches/chip_scratches.py @@ -0,0 +1,733 @@ +#!/usr/bin/env python3 + +import math +import inkex +import random +from lxml import etree + +""" +This extension creates visual noise of various kinds, using +3 ingredients, scratches, chips, and specks. + +Extensions -> Generate -> Noise -> ChipScratches + +The 3 ingredients go into 3 Inkscape groups. Where they are in +the tree is controlled by the object selected at the time the +extension is called. They become sisters of the selected object, +under the same parent. If there is no selection, they go to +the root level. + +In the text below, each * indicates a settable parameter in +the pop-up box. + +The extension fills a rectangle, which defaults* to the page +size, or is width* by height*. The overall size* and number* +of marks is set. However, for each of the 3, a multiplier +changes the size* and number*. To get the overall value, +just set the multiplier to 1.0 + +Also, each of the 3 may be separately enabled* or disabled. + +For each ingredient, it is possible to set the size to grow* +with y. For this case, it is possible to set the size to +a negative multiplier, so that it, when growing, will pass +through zero somewhere in the middle of the box. + +For scratches, it is possible to change their orientation +from vertical to angular*, radiating from the center of the box. +(If so, growth is measured from the center.) The initial +angle* and the change with distance* are set. + +For chips and specks, there are similar controls, except the +angular ones, which are omitted. + +Last, there is the option to use a density gradient*. In the +simple case, the probability of making a mark is the same +everywhere. With a gradient, it changes from 0 to 1 across +the box from left to right. + +-- + +Some of the features above may be of little use, while some +omitted ones might be important. This is a beta version, so +I await user feedback. + +I notice that the extension might take 5 seconds to run. Is +this important? A bit of clean-up might help this. + +Two features that might slow it down considerably are clusters +and collisions. Collisions, if implemented, would keep any 2 +marks from landing on top of each other. Slow, because each +mark must search all the previous marks. + +Clusters is some method of putting new marks near old ones. +I think this would be especially useful for specks, which +could be clustered around the end of scratches. Right now, +they're uniform, and so fade into the background. + +Again, feedback? + +Technical note: This file may also be used to generate the inx +file. (The bundled inx file was generated this way.) Set the +global /inxGen/ =1 and run the file stand-alone. + +- AK Sept 2018 +""" + +class ChipScratches(inkex.EffectExtension): + """ +Creates visual noise. 3 kinds: Scratches, chips, specks. +50, 100, 100 instances are predefined. These are chosen +randomly and scattered randomly across the page. Controls +for number and size, as well as some specific to each type. + """ + def add_arguments(self, pars): + pars.add_argument("--pgsizep", type=inkex.Boolean, default=True, help="Default rectangle to page size?") + pars.add_argument("--rx", type=int, default=1000, help="Width") + pars.add_argument("--ry", type=int, default=1000, help="Height") + pars.add_argument("--mainSize", type= float, default=1.0, help="Size of objects") + pars.add_argument("--mainNum", type=int, default=200, help="Number of objects") + pars.add_argument("--honp", type=inkex.Boolean, help="Enable scratches") + pars.add_argument("--hsize", type=float, default=2.0, help="Size of scratches") + pars.add_argument("--hgrow", type=float, default=0.0, help="Grow scratches with distance") + pars.add_argument("--hnum", type= float, default=0.2, help="Number of scratches") + pars.add_argument("--hrad", type=inkex.Boolean, default=False, help="Angle scratches toward center") + pars.add_argument("--hang", type= float, default=90.0, help="Angle from radius") + pars.add_argument("--hcurve", type= float, default=0.0, help="Change angle with distance") + pars.add_argument("--hgrad", type=inkex.Boolean, default=False, help="Use density gradient") + pars.add_argument("--conp", type=inkex.Boolean, default=True, help="Enable chips") + pars.add_argument("--csize", type= float, default=1.0, help="Size of chips") + pars.add_argument("--cgrow", type= float, default=0.0, help="Grow chips with distance") + pars.add_argument("--cnum", type= float, default=1.0, help="Number of chips") + pars.add_argument("--cgrad", type=inkex.Boolean, default=False, help="Use density gradient") + pars.add_argument("--sonp", type=inkex.Boolean, default=True, help="Enable specks") + pars.add_argument("--ssize", type= float, default=1.0, help="Size of specks") + pars.add_argument("--sgrow", type= float, default=0.0, help="Grow specks with distance") + pars.add_argument("--snum", type= float, default=10.0, help="Number of specks") + pars.add_argument("--sgrad", type=inkex.Boolean, default=False, help="Use density gradient") + pars.add_argument("--Nmain", "--Overall") + + def effect(self): + # Get access to main SVG document element and get its dimensions. + if self.options.pgsizep: + rx = self.svg.unittouu(self.svg.get('width')) + ry = self.svg.unittouu(self.svg.attrib['height']) + else: + rx = self.options.rx + ry = self.options.ry + parent = self.document.getroot() + +#Create scratches + + pdic = { + 'rx' : rx, + 'ry' : ry, + 'size' : self.options.mainSize * self.options.hsize, + 'enable' : self.options.honp, + 'num' : int( self.options.mainNum * self.options.hnum ), + 'grow' : self.options.hgrow, + 'radial' : self.options.hrad, + 'ang' : self.options.hang, + 'curve' : self.options.hcurve, + 'grad' : self.options.hgrad, + } + draw( scratches, parent, pdic) + +#Create chips + + + pdic = { + 'rx' : rx, + 'ry' : ry, + 'size' : self.options.mainSize * self.options.csize, + 'enable' : self.options.conp, + 'num' : int( self.options.mainNum * self.options.cnum ), + 'grow' : self.options.cgrow, + 'radial' : False, + 'ang' : False, + 'curve' : False, + 'grad' : self.options.cgrad, + } + draw( chips, parent, pdic) + +#Create specks + + + pdic = { + 'rx' : rx, + 'ry' : ry, + 'size' : self.options.mainSize * self.options.ssize, + 'enable' : self.options.sonp, + 'num' : int( self.options.mainNum * self.options.snum ), + 'grow' : self.options.sgrow, + 'radial' : False, + 'ang' : False, + 'curve' : False, + 'grad' : self.options.sgrad, + } + draw( specks, parent, pdic) + +def draw( obj, parent, pdic) : + if not pdic['enable'] : + return + + group = etree.SubElement(parent, 'g') + + if pdic['grad'] : + f = lambda x: math.sqrt(x) + else : + f = lambda x: x + + rx = pdic['rx'] + ry = pdic['ry'] + fmstyle = str(inkex.Style({"fill" : "#000000"})) + mrx = rx // 2 + mry = ry // 2 + mrmax = mrx if mrx > mry else mry + #Curves 90 going from the center to the edge (long dim.) if parm = 1.0 + curve = pdic['curve'] * 0.5 * math.pi / mrmax + + ctrs = [(rx * f(random.random()) , ry * random.random()) + for i in range(pdic['num'])] + zp = 2 + 3 * int(random.random()*len(obj) / 3 ) + for ctr in ctrs : + path = etree.Element(inkex.addNS('path','svg')) + path.set('style', fmstyle) + zp = (zp + 3) % len(obj) + path.set('d', obj[zp]) + trstring = "translate (%g %g)" % ctr + if pdic['radial'] : + ang = math.atan2(ctr[1]-mry , ctr[0]-mrx) + curve * math.sqrt( + (ctr[1]-mry)**2 + (ctr[0]-mrx)**2) + trstring += " rotate (%g)" % (ang * 180 / math.pi + pdic['ang']) + if pdic['size'] != 1.0 or pdic['grow'] != 0.0 : + if pdic['radial'] : + size = math.sqrt((ctr[1]-mry)**2 + (ctr[0]-mrx)**2) * ( + pdic['grow'] / mrmax ) + pdic['size'] + else : + size = ctr[1] * pdic['grow'] / mrmax + pdic['size'] + trstring += " scale (%g)" % size + path.set('transform', trstring) + group.append(path) + + +chips=( +4.17065, 3.83403, +"M -2.98542 -3.8338 c 0.34234,0 0.74533,0.14835 0.89583,0.32966 0.15043,0.18131 0.19014,0.32965 0.088,0.32965 -0.10212,0 0.0341,0.15422 0.30304,0.34254 0.26887,0.18832 0.56984,0.29206 0.66874,0.23093 0.0989,-0.0612 0.44473,-0.1589 0.76833,-0.21763 0.48389,-0.0877 0.6122,-0.0113 0.72327,0.43138 0.0745,0.29608 0.0843,0.73458 0.0215,0.97438 -0.0648,0.24806 -0.005,0.43833 0.13992,0.44082 0.13978,0.003 0.49312,0.18902 0.7855,0.41379 0.40627,0.31226 0.68285,0.3654 1.1727,0.22492 0.66407,-0.19047 1.37707,0.0827 1.57744,0.60479 0.14702,0.38319 -1.10951,0.94947 -2.1067,0.94947 -0.77639,0 -0.84516,0.0496 -0.84516,0.60652 0,0.36844 -0.17253,0.71404 -0.43955,0.88079 -0.24174,0.15096 -0.43953,0.47139 -0.43953,0.71211 0,0.56109 -0.49051,0.55224 -1.73627,-0.0314 -0.53191,-0.24917 -0.87804,-0.51738 -0.7692,-0.59622 0.10884,-0.0788 0.21711,-0.44315 0.24037,-0.80954 0.0361,-0.56828 -0.10116,-0.75694 -0.93402,-1.28385 -0.53699,-0.33972 -0.97558,-0.78166 -0.97308,-0.98208 0.003,-0.31564 0.0318,-0.32027 0.21635,-0.0349 0.14197,0.21974 0.21384,0.23816 0.21631,0.0549 0.003,-0.15109 -0.19671,-0.47488 -0.44125,-0.7194 -0.31961,-0.31961 -0.38937,-0.55126 -0.24852,-0.82414 0.10773,-0.20875 0.26287,-0.75031 0.34467,-1.20358 0.13057,-0.72333 0.22505,-0.82414 0.77135,-0.82414 z", +4.13855, 4.24985, +"M -1.85248 -4.24978 c 0.27589,0.003 0.47037,0.0646 0.48312,0.20271 0.0137,0.1478 0.0399,0.47805 0.0582,0.73402 0.026,0.36225 0.21413,0.47395 0.84811,0.50359 0.44794,0.0209 0.94806,0.0473 1.11126,0.0582 0.16314,0.011 0.39599,0.28179 0.51767,0.601744 0.12163,0.31997 0.37346,0.58176 0.55949,0.58176 0.18595,0 0.48549,0.14734 0.66583,0.3277 0.18035,0.18035 0.57257,0.36361 0.87127,0.40723 0.35897,0.0524 0.62021,0.31158 0.77039,0.76447 0.20387,0.61474 0.15184,0.74842 -0.50541,1.29714 -0.40292,0.33638 -0.73264,0.79074 -0.73264,1.0099 0,0.21915 -0.16606,0.65189 -0.36907,0.96172 -0.20296,0.30985 -0.30165,0.67266 -0.21907,0.80628 0.0894,0.1446 -0.091,0.24316 -0.44539,0.24316 -0.32756,0 -0.5954,-0.0917 -0.5954,-0.20362 0,-0.11191 0.15163,-0.63243 0.33677,-1.15715 0.18525,-0.52472 0.2637,-0.99731 0.17453,-1.04989 -0.0892,-0.0526 -0.63351,-0.17283 -1.20942,-0.26725 -0.57596,-0.0944 -1.10945,-0.26987 -1.18578,-0.38997 -0.0763,-0.12012 -0.53312,-0.25519 -1.01492,-0.29996 -1.10287,-0.10248 -1.29329,-0.29762 -1.33349,-1.3685 -0.0191,-0.50625 -0.13647,-0.82688 -0.28496,-0.77674 -0.76171,0.25701 -1.09657,-1.581564 -0.42769,-2.348844 0.31962,-0.36665 1.3196,-0.64382 1.92663,-0.63767 z", +4.22195, 4.21947, +"M 1.69537 -4.21932 c -0.0345,-8.8e-4 -0.0688,0.002 -0.1027,0.008 -0.18069,0.0328 -0.35094,0.1712 -0.50284,0.46983 -0.0104,1.09687 -0.6782,2.01812 -0.47774,3.15318 0.24531,0.74578 -0.54886,0.45228 -0.99871,0.50283 -1.3297,0.0104 -0.14408,-1.07574 -1.55709,-0.976 -0.42439,-0.67608 -0.98245,-2.34963 -1.81896,-0.91876 -0.17688,0.51739 -0.9194,1.1638 -0.0326,1.53546 0.37737,0.014 0.60982,0.25307 0.77516,0.58044 -0.0269,0.19027 -0.0344,0.50819 -0.0112,0.88577 0.0503,0.81728 -0.0383,1.14531 -0.37549,1.39186 -0.48057,0.35139 -0.36025,0.73074 0.3532,1.11256 0.18114,0.0969 0.28904,0.14046 0.33832,0.12594 0.0493,-0.0146 0.0402,-0.0871 -0.0116,-0.22214 -0.0798,-0.20803 0.0612,-0.40175 0.36204,-0.49725 0.33273,-0.1056 0.47599,-0.33503 0.4903,-0.78121 0.13921,-0.0295 0.30389,-0.11064 0.50376,-0.26119 1.46647,-0.57469 1.19941,1.53559 2.36963,1.92306 0.98055,1.45246 1.30915,-1.39831 1.46716,-2.1424 0.10424,-1.37891 -0.4829,-1.40293 0.43107,-1.92205 0.91202,0.23598 1.36087,-0.55942 1.32261,-1.38814 -0.0299,-0.64451 -0.35397,-1.30896 -0.98476,-1.52384 -0.44029,-0.27942 -1.02203,-1.0427 -1.53965,-1.05586 z", +2.29614, 3.86905, +"M -0.15038 -3.86873 c -0.32838,-0.009 -0.63053,0.17109 -0.7121,0.59531 -0.44133,-0.069 -1.15128,-1.08751 -1.3529,-0.1297 0.0799,0.51796 -0.18084,1.09953 -0.0362,1.560632 0.0859,0.54933 0.0879,1.28864 0.86402,1.13739 0.41931,0.12913 0.19391,1.48787 0.86352,1.32705 -0.27268,0.12418 -0.56414,0.20057 -0.90951,0.15607 -0.33358,0.0733 -0.0995,0.50263 0.10232,0.59686 0.69781,0.49054 1.25008,-1.24221 1.59784,0.0651 -0.10673,0.74125 -1.42009,1.11534 -1.22938,1.91513 0.45471,0.77949 1.52934,0.52133 2.19882,0.20722 0.426,-0.25368 0.96231,-0.36258 0.60153,-1.01906 -0.16613,-0.63544 -0.25215,-1.31953 -0.28578,-1.93476 0.19172,-0.28339 0.73189,-0.81591 0.74414,-1.18391 0.004,-0.12267 -0.0506,-0.22674 -0.19637,-0.29765 -0.12346,0.2062 -0.2481,0.38506 -0.39325,0.52399 -0.0738,-0.30337 -0.26755,-0.59016 -0.57981,-0.70486 -0.97504,-0.90992 0.71916,-1.624862 1.05005,-2.274802 v -5.1e-4 c -0.35914,-0.76136 -1.12554,0.174 -1.4578,-0.003 -0.18611,-0.32959 -0.54083,-0.52743 -0.86918,-0.5364 z", +3.31745, 5.20184, +"M -3.04057 -3.12517 c -0.12013,0.49557 0.22954,0.992902 -0.0125,1.481942 -0.3042,0.4355 -0.16661,0.96485 -0.24617,1.47138 -0.13051,0.54661 0.48075,0.72787 0.5505,1.18424 0.34005,0.28842 -0.34128,0.56491 -0.0684,0.64532 -0.0254,0.006 -0.0507,0.009 -0.076,0.0172 -0.12397,0.005 -0.0329,0.12902 0.0254,0.13283 0.0916,0.0214 0.17487,0.0566 0.25509,0.0975 -0.0618,0.0963 -0.13661,0.20956 -0.0942,0.3182 -0.0579,0.17996 -0.64502,0.46539 -0.41368,0.58716 0.27677,0.0877 0.30423,0.26778 0.27821,0.46656 -0.10304,0.0342 -0.16783,0.13651 -0.0334,0.1966 -0.0441,0.20892 -0.0836,0.41478 0.0836,0.54124 0.26204,0.0239 0.56304,-0.0127 0.85778,-0.0113 0.15595,0.053 0.3112,0.10898 0.45235,0.19132 0.44943,0.28858 0.77251,0.76143 1.30321,0.92948 0.251,0.13085 0.47062,0.0872 0.47613,-0.0674 0.003,-0.0703 -0.0394,-0.1635 -0.14241,-0.2736 -0.32012,-0.35787 -0.80262,-0.50472 -1.20241,-0.70974 0.26829,0.001 0.53112,0.2429 0.72923,-0.0975 -0.0774,-0.49202 -0.79569,-0.59976 -1.12805,-0.94766 -0.38855,-0.23155 -1.03547,-0.33263 -0.82509,-0.89511 0.19784,0.16083 0.38233,0.34262 0.59643,0.46985 0.2225,0.39004 0.96906,0.0149 1.31442,0.31886 0.30953,-0.35321 0.59538,0.79256 0.80227,0.11169 0.0337,-0.0757 0.0554,-0.16401 0.0621,-0.24848 v 0 c 0.0205,-0.25339 -0.0915,-0.47343 -0.40312,-0.22337 -0.19188,0.0244 -0.12003,-0.54699 -0.50655,-0.40708 -0.4008,-0.0492 -0.88145,0.32259 -1.01738,-0.24187 -0.22216,-0.0951 -0.4652,-0.19534 -0.71735,-0.25079 0.0546,-0.37763 0.0308,-0.78884 0.12161,-1.10494 -0.53717,-0.3656 -0.0495,-0.98532 -0.21974,-1.39571 -0.0611,-0.41652 0.91697,0.0243 0.77055,0.42327 0.0859,0.35784 0.84999,1.14566 0.90668,0.36743 0.24362,-0.49009 -0.0688,-1.08376 -0.55477,-1.27742 -0.23421,-0.13565 -0.50438,-0.44811 -0.0324,-0.37734 0.54993,-0.25032 0.8983,0.51127 1.39901,0.21378 0.31014,0.12139 0.34301,0.5908 0.78477,0.50158 0.32429,0.42527 0.37542,0.96608 0.52008,1.43504 -0.0457,0.40839 0.12259,0.77239 0.32746,1.1089 -0.0386,0.0876 -0.0483,0.19899 -0.0139,0.33208 -0.033,0.23478 0.0471,0.26766 0.266,0.26566 0.0265,0.0178 0.0539,0.0311 0.0816,0.0423 0.0757,0.35193 0.0297,0.752 0.33572,0.99755 0.38603,0.3712 0.90219,0.0857 0.7319,-0.43054 -0.0466,-0.30798 -0.29681,-0.49153 -0.49234,-0.70745 0.0877,-0.0846 0.14598,-0.18839 0.14571,-0.28813 0,-0.12995 -0.0965,-0.25111 -0.34364,-0.30729 -0.0113,-0.01 -0.0233,-0.0175 -0.035,-0.0261 0,-0.008 0,-0.0144 0.002,-0.0221 -0.0783,-0.58378 -0.29364,-1.04867 -0.57824,-1.54836 -0.003,-0.54764 -0.26269,-1.00095 -0.42559,-1.5107 -0.16414,-0.40027 -0.18097,-0.931632 -0.68992,-1.070242 -0.35382,-0.0791 -0.24553,0.52958 -0.32482,0.740812 -0.19094,0.0194 -0.35815,-0.327932 -0.61756,-0.303992 -0.0498,-0.45204 -0.10633,-0.96193 -0.59179,-1.08313 -0.21979,-0.35661 -0.7287,-0.40785 -0.73915,-0.88256 -1.36004,-2.36534 -1.95836,0.29957 -1.63423,1.12013 z", +2.98467, 4.66325, +"M 0.614136 -2.29735 c -0.0974,-0.40618 -0.7125,-0.83436 -0.90598,-1.29221 -0.16432,-0.38885 0.094,-0.83201 -0.0209,-0.95324 -0.29875,-0.3152 -0.35677,0.40541 -0.62004,0.28161 -0.5706,-0.2683 -0.96784,-0.4991 -1.56386,-0.36057 -0.0124,0.2114 0.004,0.42436 -0.0171,0.63525 -0.31209,0.73101 0.0309,1.55931 -0.31858,2.0946 0.0848,0.12448 0.14997,0.25099 0.20148,0.37838 0.0156,0.21967 0.0503,0.44298 0.0725,0.67113 0.0238,0.0613 0.0395,0.12615 0.0585,0.18949 0.50136,1.84607 -0.0172,1.42527 -0.43442,1.35738 -0.24015,0.81789 0.45195,1.85386 0.52381,2.81106 0.18281,2.0407 0.89697,0.86601 2.0265,0.22853 10e-4,-0.91029 -0.0244,-0.95992 0.52581,-1.46817 0.74242,-0.0378 1.71531,-0.0436 1.76344,-0.97207 0.0521,-0.0462 0.0914,-0.0908 0.12716,-0.13473 0.0493,0.0552 0.15625,0.0926 0.36013,0.10319 0.40274,0.0431 0.56401,-0.18544 0.58867,-0.47407 0.0542,-0.63499 -0.55312,-1.55926 -0.70765,-0.51248 0.0324,0.14484 -0.0426,0.29511 -0.1234,0.43883 -0.16329,-0.54242 -1.37396,-0.96101 -1.47446,-1.59914 -0.1211,-0.0939 -0.22103,-0.19865 -0.29781,-0.30976 0.11513,-0.10721 0.23173,-0.21303 0.34755,-0.31918 0.004,-0.24309 -0.0645,-0.52303 -0.11148,-0.7939 z", +2.04389, 5.29494, +"M -1.85309 -5.04915 c 0.23783,0.26043 0.21099,0.66518 0.22712,1.04875 -0.4069,0.38004 0.1825,0.8748 0.0781,1.30474 -0.0389,1.015465 -0.55187,0.49378 -0.49101,1.508525 0.13462,0.44679 0.16841,0.72546 0.81526,1.43512 0.29219,0.0781 -0.22258,1.36221 -0.28588,2.05254 -0.0792,0.86353 0.71412,1.04806 0.51067,1.67394 l 1.06331,1.32048 c -0.0314,-0.1812 -0.0448,-0.35515 0.0627,-0.47402 0.28009,0.15408 0.64109,0.57435 0.77582,0.0169 0.14718,-0.48429 0.42232,-0.0327 0.35542,0.2494 0.26229,0.10277 0.4328,-0.33043 0.71684,-0.13395 0.23715,-0.46565 -0.19546,-0.38058 -0.45959,-0.49191 -0.009,-0.3719 0.26324,-0.82167 -0.25285,-0.92357 -0.0662,-0.19471 0.006,-0.46625 -0.0348,-0.68452 -0.17436,-0.24732 -0.63358,-0.4809 -0.23403,-0.8166 0.25025,-0.42226 -0.85867,-0.85207 -0.48249,-1.2856 0.22844,0.18931 0.44217,0.179 0.35732,-0.17819 -0.13207,-0.6247 0.35102,-0.79202 -0.0534,-1.09863 -0.38584,-0.3369 -0.93599,-0.41779 -1.28967,-0.79966 -0.019,-0.23696 -0.17121,-0.4219 -0.2883,-0.61236 0.0439,-0.11202 0.10964,-0.220495 0.20235,-0.323135 0.29428,-0.26016 0.28836,-0.24769 0.10101,-0.59292 0.21808,-0.22172 -0.30092,-0.49114 -0.22305,-0.80405 -0.27966,-0.40328 -0.31858,-0.96801 -0.26602,-1.46128 0.16807,-0.43289 -0.90489,0.07 -0.90489,0.07 z", +5.1605, 3.51819, +"M 0.197111 -3.51809 c -0.25831,-0.008 -0.64247,0.48592 -1.65703,1.8944 -0.30917,0.4292 -1.11412,0.75117 -2.18011,0.87133 -1.27846,0.1441 -1.64072,0.31871 -1.48755,0.71783 0.11143,0.29022 0.20229,0.59651 0.20229,0.68056 0,0.084 0.36946,0.14096 0.82122,0.12688 0.7781,-0.0243 0.78325,-0.0409 0.0914,-0.31499 -0.4578,-0.18138 0.0596,-0.25533 1.38729,-0.19875 1.16464,0.0496 2.21889,0.19137 2.34248,0.31499 0.12366,0.12358 -0.0554,0.22449 -0.39706,0.22449 -0.50809,0 -0.54984,0.1332 -0.23026,0.73025 0.17922,0.33488 0.49805,0.6159 0.76974,0.70096 0.0157,0.0639 0.0352,0.12709 0.063,0.18811 0,0.0641 0.1163,0.0991 0.11048,0.1646 0.28267,0.39771 0.73888,1.40678 1.24267,0.67834 0.003,-0.26195 -0.48278,-1.34025 0.0102,-1.11978 0.13677,0.65215 0.88947,0.55265 1.32385,0.40816 0.52365,0.38992 1.46911,0.38685 1.70496,-0.35447 0.0158,-0.0853 0.0252,-0.17953 0.0359,-0.27196 0.0967,0.31684 0.14402,0.24344 0.17214,-0.30257 0.007,-0.13895 2.7e-4,-0.25575 -0.0191,-0.35714 0.0953,-0.19421 0.25677,-0.34478 0.56255,-0.38997 0.0741,-0.0998 0.10036,-0.18124 0.0932,-0.24534 -0.0312,-0.27771 -0.69621,-0.22987 -0.87843,0.0617 -0.18949,0.0256 -0.34877,-0.047 -0.49421,-0.15972 0.68347,-0.14164 0.77742,-0.40214 0.7724,-2.03813 -0.004,-1.25111 -0.11592,-1.71698 -0.33141,-1.37666 -0.17911,0.28293 -0.24087,0.73482 -0.13754,1.00399 0.10335,0.26916 0.005,0.48979 -0.21607,0.48979 -0.22226,0 -0.41684,-0.20557 -0.43256,-0.45651 -0.023,-0.36431 -0.0665,-0.3644 -0.21338,-4.5e-4 -0.14313,0.35465 -0.34793,0.34082 -0.92502,-0.0634 -0.40789,-0.28557 -0.99692,-0.42235 -1.30788,-0.30302 -0.31722,0.12184 -0.46945,0.062 -0.34693,-0.1362 0.1201,-0.19428 0.0622,-0.59178 -0.12911,-0.88331 -0.11326,-0.17268 -0.20468,-0.27964 -0.3221,-0.28394 z m -0.32296,4.90546 c -0.003,0.0156 -0.004,0.031 -0.007,0.0466 -0.0389,-0.0151 -0.0395,-0.0307 0.007,-0.0466 z", +3.88374, 3.51074, +"M 0.152516 -3.50963 c -0.0671,-0.0035 -0.13954,0.0012 -0.21726,0.01501 0.0239,0.38383 -0.009,0.664347 -0.0834,0.870756 -0.5491,-0.372894 -1.21382,-0.623817 -1.99453,-0.680445 0.004,0.330283 0.0274,0.672343 0.0583,1.019123 -0.60216,-0.112963 -1.22906,-0.191918 -1.71237,0.117895 l -0.087,0.185898 c 1.00994,1.039798 2.17682,1.967379 2.19764,3.587233 0.17881,0.262722 0.36799,0.463849 0.56477,0.61642 0.13818,0.425596 0.28373,0.847187 0.44201,1.256679 1.15883,0.174004 1.9076,-0.383239 2.23915,-1.246964 0.44076,-0.188455 0.8768,-0.414276 1.29111,-0.606262 0.84054,-0.06761 1.08622,-0.328197 1.02353,-0.67868 -0.11969,-0.669085 -1.36303,-1.666368 -1.734,-2.275359 -0.58197,-0.72387 -0.79212,-0.277084 -0.95819,0.185455 -0.11392,-0.207857 -0.24645,-0.407202 -0.39388,-0.596988 0.20718,-0.755268 0.0844,-1.73265 -0.63582,-1.769775 z", +3.17107, 3.48989, +"M -0.695755 -3.48975 c -0.14458,-0.002 -0.31898,0.0184 -0.53872,0.0514 -0.48796,0.0735 -0.9685,0.32099 -1.33449,0.68684 -0.48142,0.48132 -0.57636,0.733 -0.59963,1.58863 -0.0182,0.66578 0.0642,1.0927 0.23826,1.23725 0.14629,0.12144 0.26581,0.37135 0.26581,0.5554 0,0.44729 0.44932,0.79765 0.83375,0.65015 0.1706,-0.0654 0.31045,-0.035 0.31045,0.0672 0,0.10242 0.35026,0.62619 0.77866,1.16423 0.44864,0.56348 0.93335,0.97854 1.14294,0.97854 0.35308,0 1.38754,-1.22023 1.59865,-1.8853 0.056,-0.17641 0.36274,-0.47456 0.68184,-0.66306 0.45927,-0.27126 0.55359,-0.42928 0.45275,-0.75654 -0.23387,-0.759 -0.79899,-1.36205 -1.72673,-1.84317 -0.54539,-0.28283 -1.03708,-0.70924 -1.20888,-1.04864 -0.29712,-0.58699 -0.46072,-0.77923 -0.89466,-0.78284 z", +4.76911, 3.80814, +"M 1.68749 -3.80769 c -0.0899,-0.004 -0.20175,0.019 -0.3478,0.0548 -0.2754,0.068 -0.80502,0.1779 -1.295,0.27337 -0.002,-5.7e-4 -0.003,-0.003 -0.005,-0.004 v 5.1e-4 c -0.0214,-0.004 -0.0479,0.004 -0.0775,0.0196 -0.0805,0.0155 -0.16738,0.0341 -0.24289,0.0481 -0.55451,0.10268 -1.25868,0.42197 -1.56475,0.70952 l -0.55708,0.52297 -0.1452,-0.57826 c -0.22357,-0.89072 -0.83344,-0.9771 -1.61438,-0.22893 -1.22476,1.1734 -0.44024,2.73403 0.96946,1.92856 0.38743,-0.22135 0.94538,-0.33453 1.30844,-0.2651 0.50575,0.0967 0.65979,0.0172 0.7674,-0.39377 0.0749,-0.28637 0.25625,-0.4356 0.4563,-0.46716 0.007,0.37514 0.15968,0.7233 0.44339,0.89866 0.15237,0.0942 0.1253,0.23529 -0.091,0.47439 -0.32686,0.36118 -0.77208,1.06994 -1.10431,1.69498 -0.72099,0.39409 -1.14366,1.04266 -0.95602,1.53169 0.0709,0.18476 0.27588,0.33538 0.45527,0.33538 0.35557,0 1.2275,-0.60376 1.86139,-1.20819 0.12891,0.3163 0.20815,0.7041 0.18085,1.048 -0.0504,0.63594 -0.005,0.73571 0.32609,0.71675 0.21154,-0.012 0.52486,-0.0817 0.69607,-0.15503 0.21968,-0.0938 0.34301,-0.0121 0.4191,0.27905 0.17931,0.68569 0.76809,0.39235 0.94774,-0.47232 0.086,-0.41422 0.22873,-0.84663 0.31782,-0.96067 0.089,-0.11402 0.22021,-0.45146 0.29146,-0.7493 0.0898,-0.37587 0.33261,-0.6263 0.79272,-0.81856 0.42373,-0.17705 0.70601,-0.44922 0.7829,-0.75551 0.19283,-0.76824 -0.0249,-1.0573 -0.79841,-1.0573 -0.39962,0 -0.93906,-0.17198 -1.26298,-0.40256 -0.12655,-0.0901 -0.23128,-0.15678 -0.32761,-0.20515 -0.0225,-0.18343 -0.0534,-0.37777 -0.0956,-0.58808 -0.19008,-0.94639 -0.26088,-1.21336 -0.5307,-1.2268 z", +2.54464, 4.86321, +"M 2.11268 -4.86312 -2.4e-4,3.4e-4 c -0.42259,-0.005 -0.71865,0.16899 -1.01028,0.58895 -0.2341,0.33711 -0.33434,0.40738 -0.61019,0.42851 -0.19518,0.0149 -0.37421,0.089 -0.43826,0.18143 -0.0182,0.0262 -0.0368,0.0486 -0.0555,0.0679 -0.009,-10e-6 -0.0175,-0.002 -0.0259,-6.4e-4 -0.071,0.004 -0.13477,0.0243 -0.18907,0.0571 -0.0242,-0.0244 -0.0391,-0.59467 -0.0391,-0.65359 0,-0.36718 -0.95879,-0.22794 -1.02811,0.14931 -0.0212,0.11589 0.0311,0.75145 0.13054,0.79443 0.23059,0.0996 0.20734,0.48697 -0.037,0.66412 -0.0408,-0.002 -0.0836,-0.005 -0.13238,-0.0129 -0.2574,-0.0398 -0.36727,-0.008 -0.58024,0.1696 -0.28227,0.235 -0.2933,0.288473 -0.26634,1.268603 0.0133,0.48463 0.0593,0.66991 0.18495,0.74461 0.11022,0.0655 0.20912,0.0728 0.28966,0.0212 0.0568,-0.0364 0.11754,-0.12674 0.17124,-0.23402 0.107,0.0658 0.25755,0.11689 0.41792,0.14507 -0.0242,0.0438 -0.0493,0.0775 -0.0743,0.0935 -0.22968,0.14714 -0.18073,0.29031 0.16346,0.47951 0.16459,0.0905 0.24667,0.16091 0.28464,0.26651 -0.22328,0.31999 -0.54905,0.56105 -0.79857,0.56105 -0.26805,0 -0.38363,0.13101 -0.38363,0.43504 0,0.099 -0.14109,0.28428 -0.31344,0.41175 -0.29557,0.21858 -0.40894,0.4781 -0.23503,0.53776 0.0431,0.0148 0.21951,0.23939 0.39186,0.49911 0.29454,0.44378 0.49384,0.61168 1.14242,0.96274 0.2234,0.12093 0.26771,0.2085 0.26771,0.52841 0,0.21082 0.0564,0.42682 0.1253,0.48004 0.17164,0.13252 0.36279,0.12141 0.72039,-0.0417 0.2969,-0.13538 0.35429,-0.23188 0.31892,-0.53634 -0.0158,-0.13554 0.343,-0.51902 0.92317,-0.98692 0.28788,-0.23216 0.26618,-0.30644 -0.12894,-0.44069 -0.37244,-0.12655 -0.37109,-0.11805 -0.22497,-1.22413 0.0601,-0.45428 0.10536,-0.49778 0.48606,-0.46787 0.10405,0.008 0.18291,-0.0399 0.1829,-0.11171 0,-0.16011 -0.092,-0.15842 -0.53246,0.01 -0.43953,0.16783 -0.58282,0.30447 -0.72314,0.68954 -0.0603,0.16556 -0.19888,0.33774 -0.30795,0.3828 -0.10906,0.045 -0.22827,0.15462 -0.26475,0.24337 -0.0547,0.1331 -0.11029,0.17837 -0.15911,0.14437 0.0191,-0.0362 0.0267,-0.0666 0.0146,-0.0817 -0.0268,-0.0333 -0.007,-0.17466 0.0454,-0.31397 0.0701,-0.18872 0.056,-0.28296 -0.0553,-0.36886 -0.17292,-0.13348 -0.20148,-0.65681 -0.04,-0.73384 0.0536,-0.0256 0.0859,-0.25521 0.0912,-0.59759 0.0308,-0.0283 0.0572,-0.054 0.0821,-0.0789 0.15372,-0.0696 0.2735,-0.27581 0.20759,-0.4084 -0.0286,-0.0576 0.009,-0.313 0.0811,-0.59847 0.0866,0.0779 0.22739,0.11682 0.37448,0.10077 0.33605,-0.0365 0.41939,-0.41959 0.11843,-0.54393 -0.1668,-0.0689 -0.21038,-0.19846 -0.25309,-0.75131 -0.0284,-0.367453 -0.0136,-0.746523 0.0327,-0.842563 0.0464,-0.0961 0.0457,-0.2254 0.0137,-0.35209 0.24966,-0.16135 0.77006,-0.17218 0.9474,-0.007 0.3168,0.29467 0.52241,0.0917 0.52241,-0.51569 0,-0.31975 0.0512,-0.41964 0.31732,-0.61647 0.40678,-0.30086 0.38252,-0.55289 -0.0562,-0.58224 -0.0293,-0.002 -0.058,-0.004 -0.0862,-0.004 z", +2.20356, 4.42723, +"M -0.779833 -4.42535 c -0.11252,0.01 -0.20766,0.0645 -0.31936,0.15707 -0.19303,0.1602 -0.30553,0.46533 -0.24987,0.67821 0.0557,0.21288 -0.031,0.75799 -0.19276,1.21128 -0.16176,0.45332 -0.29873,0.73139 -0.30366,0.61778 -0.006,-0.11371 -0.12301,-0.0935 -0.26176,0.0452 -0.19127,0.19127 -0.10817,0.47025 0.34411,1.1537 0.45766,0.69158 0.55864,1.03463 0.43407,1.47638 -0.0892,0.31659 -0.13322,0.67331 -0.0981,0.79292 0.0352,0.11957 0.15515,0.65783 0.267,1.19605 0.11176,0.53827 0.24306,1.10126 0.29128,1.25078 0.1727,0.53503 0.7492,0.25702 1.23653,-0.59635 0.27267,-0.47751 0.6625,-0.86921 0.86619,-0.87004 0.20765,-9.2e-4 0.5269,-0.33172 0.72679,-0.75294 0.29035,-0.6119 0.31116,-0.88889 0.11183,-1.49304 -0.13459,-0.40798 -0.22205,-1.12174 -0.19417,-1.58632 0.11331,-1.88242 -0.006,-2.47587 -0.49595,-2.47587 -0.25281,0 -0.83601,-0.21102 -1.29552,-0.46928 -0.44311,-0.24903 -0.67905,-0.35297 -0.86669,-0.33554 z", +2.98889, 3.67435, +"M 0.0402496 -3.67435 c -0.32831,0 -1.18189,0.92749 -1.79096,1.94648 -0.3584,0.59962 -0.44172,0.96993 -0.33994,1.5125 0.10659,0.56847 0.0207,0.89088 -0.41379,1.54736 -0.30817,0.46568 -0.51868,1.04377 -0.47984,1.31799 0.0652,0.45978 0.15767,0.48811 1.5781,0.48811 0.9272,0 1.60942,0.10087 1.77078,0.26195 0.68945,0.68812 2.06575,-0.0134 2.06575,-1.05284 0,-0.21065 0.15263,-0.67888 0.33994,-1.04091 0.34011,-0.65768 0.33957,-0.65885 -0.40829,-1.25881 -0.58894,-0.47247 -0.77875,-0.80242 -0.89043,-1.54736 -0.14276,-0.95204 -0.94727,-2.17447 -1.43132,-2.17447 z", +3.40151, 5.32865, +"M 2.71045 -5.32831 v 3.7e-4 c -0.67587,-0.012 -1.14971,0.34982 -1.61607,1.21978 -0.37425,0.69821 -0.53418,0.84374 -0.97521,0.8875 -0.312,0.0309 -0.59827,0.1844 -0.70069,0.37577 -0.2226,0.41586 -0.49528,0.41624 -0.49528,7e-4 0,-0.76048 -1.53295,-0.4721 -1.64379,0.30924 -0.0339,0.24004 0.0495,0.46036 0.20873,0.54939 0.37193,0.2081 0.33168,1.02339 -0.0686,1.38571 -0.49393,0.44696 -1.00322,2.96143 -0.75706,3.73717 0.13368,0.42094 0.97103,0.75376 1.58712,0.63054 0.60075,-0.12019 0.73147,0.051 0.50116,0.65685 -0.0961,0.2532 -0.13673,0.56011 -0.0898,0.68207 0.0467,0.12199 0.19735,0.22188 0.33479,0.22188 0.31413,0 0.6262,-0.56153 0.49789,-0.89591 -0.053,-0.13863 0.0311,-0.82668 0.18716,-1.52901 0.31845,-1.4316 0.19566,-1.84197 -0.4343,-1.44858 -0.48884,0.30529 -0.65563,0.11304 -0.66886,-0.77128 -0.007,-0.43091 -0.0729,-0.93369 -0.14734,-1.11741 -0.18115,-0.44714 0.24354,-0.91857 0.82717,-0.91857 0.24714,0 0.58532,-0.15039 0.75154,-0.33411 0.36082,-0.39872 1.28482,-0.44747 1.58678,-0.0837 0.50646,0.6103 0.83488,0.19 0.83488,-1.06807 0,-0.66226 0.0822,-0.86909 0.50773,-1.27679 0.65033,-0.6231 0.61157,-1.14509 -0.09,-1.20588 -0.0467,-0.005 -0.093,-0.008 -0.13814,-0.008 z", +3.13042, 4.93641, +"M 0.240783 -4.93553 c -0.15688,-0.0178 -0.29819,0.23397 -0.49049,0.81373 -0.2825,0.85157 -0.93362,1.59307 -1.39943,1.59307 -0.39149,0 -0.56027,0.24786 -0.56027,0.82307 0,0.18722 -0.20606,0.53783 -0.45779,0.77901 -0.4317,0.41355 -0.59724,0.90453 -0.34324,1.01741 0.0626,0.028 0.32056,0.45291 0.57229,0.94429 0.43015,0.8396 0.72124,1.15726 1.66856,1.82145 0.32624,0.22878 0.39098,0.39448 0.39098,0.99971 0,0.39888 0.0823,0.80753 0.18298,0.90823 0.25071,0.2507 0.52985,0.2297 1.05213,-0.0788 0.43363,-0.25616 0.51743,-0.4387 0.4658,-1.01474 -0.0233,-0.25645 0.50065,-0.98195 1.348,-1.8672 0.42045,-0.43923 0.38879,-0.57978 -0.18835,-0.83377 -0.54393,-0.23942 -0.54167,-0.22334 -0.32824,-2.31596 0.0877,-0.8595 0.15391,-0.94177 0.70992,-0.88519 0.15197,0.0155 0.26679,-0.0756 0.26679,-0.21137 0,-0.30291 -0.13407,-0.30005 -0.77732,0.018 -0.64195,0.31753 -0.85123,0.57637 -1.05619,1.3049 -0.0882,0.31325 -0.29044,0.63899 -0.44972,0.72425 -0.15934,0.0852 -0.33341,0.29254 -0.38672,0.46045 -0.16715,0.5267 -0.33974,0.3349 -0.41637,-0.46279 -0.0465,-0.4866 -0.17065,-0.83911 -0.33826,-0.96165 -0.24082,-0.17607 -0.24289,-0.21137 -0.022,-0.39467 0.14751,-0.1224 0.24275,-0.43967 0.24275,-0.80907 0,-0.42563 0.11425,-0.74365 0.38136,-1.06115 0.43886,-0.52158 0.46645,-0.71391 0.16257,-1.12559 -0.0841,-0.11391 -0.15837,-0.17762 -0.2297,-0.18565 z", +3.36677, 6.16908, +"M 2.46494 -6.16587 c -0.0541,-0.01 -0.12003,0.003 -0.18482,0.0437 -0.14889,0.092 -0.21185,0.45187 -0.17387,0.99402 l 0.0595,0.84965 -0.8909,0.25437 c -0.85575,0.24425 -0.91404,0.30547 -1.49387,1.561 -0.68138,1.47535 -0.8842,1.39519 -0.95601,-0.37731 -0.0677,-1.67347 -0.53514,-1.57118 -0.54675,0.1197 -0.008,1.20372 -0.14815,1.49162 -0.91678,1.88573 -0.33093,0.1697 -0.55445,0.43025 -0.55445,0.64665 0,0.31078 0.1713,0.37963 1.20109,0.48124 0.9293,0.0916 1.27169,0.056 1.51288,-0.15692 0.17144,-0.15173 0.40028,-0.22045 0.50832,-0.15367 0.34578,0.21373 0.21149,0.66082 -0.35303,1.17641 -0.30209,0.2759 -0.64427,0.77409 -0.76029,1.10686 -0.28842,0.82736 -0.63087,0.63547 -0.63087,-0.35346 0,-0.78244 -0.0622,-0.90627 -0.45738,-0.90627 -0.31541,0 -0.7871,0.90286 -1.04012,1.99129 -0.23161,0.9964 -0.22259,1.08589 0.16459,1.6532 0.22515,0.32984 0.51912,0.64232 0.65352,0.69436 0.40194,0.15571 0.95683,-0.25666 0.95683,-0.71094 0,-0.48104 0.73081,-0.96973 1.18811,-0.79425 0.41463,0.1592 0.35885,0.40487 -0.17185,0.7526 -0.495,0.32433 -0.61311,0.99321 -0.24064,1.36566 0.25886,0.25887 0.69051,0.28229 1.0462,0.0571 0.1824,-0.11553 0.21563,-0.36728 0.12213,-0.92083 -0.13213,-0.78273 -0.0775,-0.84677 0.66079,-0.77645 0.16235,0.0149 0.40663,-0.10649 0.54313,-0.27095 0.19821,-0.23888 0.20282,-0.37194 0.0222,-0.6612 -0.12434,-0.19914 -0.17751,-0.44051 -0.11809,-0.53664 0.0594,-0.0961 0.0229,-0.48362 -0.0813,-0.86098 -0.23192,-0.83997 0.12462,-1.35152 0.94265,-1.35152 0.63152,0 0.89091,-0.51453 0.89091,-1.76764 0,-0.91589 -0.27505,-1.06452 -0.83144,-0.4497 -0.45014,0.49738 -0.77029,0.46537 -0.87594,-0.0874 -0.091,-0.47571 0.45137,-1.57555 0.77684,-1.57555 0.18146,0 0.93054,-1.3103 0.93054,-1.62773 0,-0.0901 -0.16195,-0.3501 -0.35992,-0.57829 -0.19792,-0.22822 -0.3899,-0.50528 -0.42664,-0.61551 -0.0186,-0.0556 -0.061,-0.0898 -0.11526,-0.0999 z", +3.36642, 4.71204, +"M 2.14302 -4.71204 c -0.63965,0.002 -0.47682,2.13844 -1.24978,1.55409 -0.92613,-1.50861 -3.40173,-0.29544 -3.14116,1.46395 0.51593,1.36936 -1.77871,0.91049 -0.92686,1.85562 1.40951,0.21819 -0.44125,1.4145 0.82327,1.66419 -0.57592,1.3499 0.6215,1.87772 1.29993,2.57621 l 0.0604,0.24159 c 1.21026,0.51184 1.30627,-1.98878 1.77943,-2.80526 0.61441,-1.01698 0.0716,-4.43446 2.03773,-3.03058 1.29395,-0.57329 -0.14993,-2.07687 -0.0896,-3.11886 -0.25448,-0.28697 -0.44513,-0.40085 -0.59283,-0.40095 z", +2.67932, 7.19187, +"M 1.11365 -7.19037 c -0.3679,0.0246 -0.63802,0.36228 -0.63802,0.85647 0,0.30813 -0.20548,0.69239 -0.54292,1.01568 -0.4374,0.41905 -0.65076,0.49812 -1.10192,0.40788 -0.45379,-0.0908 -0.64747,-0.0176 -1.02293,0.38733 -0.49761,0.53665 -0.51748,0.65878 -0.46996,2.8971 0.0235,1.10675 0.10496,1.52987 0.32646,1.70046 0.19433,0.14956 0.36827,0.16624 0.51027,0.0483 0.29856,-0.24777 0.67015,-1.55748 0.53886,-1.89956 -0.13302,-0.34677 0.56593,-0.78978 0.75734,-0.48002 0.19788,0.32019 -0.0997,2.15035 -0.38855,2.39006 -0.4049,0.33604 -0.31862,0.66299 0.28818,1.09508 0.4482,0.31914 0.55259,0.52604 0.55259,1.09468 0,0.38551 -0.1213,1.04395 -0.26923,1.46305 -0.32207,0.91276 -0.13816,3.08081 0.28414,3.35093 0.18196,0.11631 0.35857,0.0495 0.5824,-0.21965 0.17673,-0.21254 0.28298,-0.44885 0.23579,-0.52518 -0.0472,-0.0763 -0.0118,-0.39886 0.0802,-0.71701 0.12359,-0.43098 0.0987,-0.64618 -0.0975,-0.84237 -0.30484,-0.30484 -0.35517,-1.49996 -0.0705,-1.67587 0.1173,-0.0725 0.18049,-0.84131 0.16121,-1.95881 -0.0334,-1.94431 0.16284,-2.55058 0.62232,-1.92213 0.14856,0.20308 0.41417,0.30595 0.69123,0.26682 0.59243,-0.0836 0.73976,-0.95822 0.20916,-1.24219 -0.29405,-0.15734 -0.37126,-0.4532 -0.44656,-1.71577 -0.05,-0.83913 -0.0241,-1.70487 0.0576,-1.92415 0.21457,-0.57599 -0.13731,-1.67514 -0.5816,-1.81613 -0.0932,-0.0296 -0.18312,-0.0407 -0.26802,-0.0351 z", +3.567, 4.28391, +"M 2.1794 -4.28301 c -0.79452,0.0388 -2.13823,1.33278 -2.9006,1.67225 -1.91886,1.17374 2.21816,1.25105 0.10284,2.06499 -0.58361,-0.83118 -3.01823,-1.30637 -2.94711,0.17002 3.14717,0.20852 0.16743,2.80766 0.98237,4.53047 l 0.2031,0.12919 c 1.35802,-1.01667 2.60945,-2.23253 4.49275,-2.01435 2.35172,-1.19271 1.28122,-3.42569 0.70123,-5.26324 0.0473,-0.98574 -0.21839,-1.30966 -0.63458,-1.28933 z", +2.56174, 3.97214, +"M 1.23387 -3.97214 c -0.18031,0 -0.50408,0.11364 -0.92088,0.35086 -0.75763,0.43141 -0.89736,0.64381 -0.99891,1.519285 -0.10988,0.94689 -0.17227,1.02365 -0.88521,1.09244 -0.89236,0.0859 -1.14888,0.68747 -0.90125,2.11048 0.0846,0.48667 0.1492,1.23005 0.14367,1.65208 -0.008,0.60558 0.0866,0.7674 0.44804,0.7674 0.25202,0 0.52438,0.10634 0.6046,0.23617 0.21463,0.34726 0.57153,0.29583 2.12908,-0.30748 1.35943,-0.52657 1.40925,-0.57732 1.58906,-1.59422 0.28866,-1.63263 0.097,-2.0538 -1.0387,-2.2784 -1.22331,-0.24191 -1.64524,-0.80341 -1.07591,-1.43248 0.2218,-0.24509 0.40307,-0.615415 0.40307,-0.823195 0,-0.20788 0.17214,-0.54991 0.3824,-0.76018 0.3479,-0.34787 0.35277,-0.53337 0.12094,-0.53276 z", +1.40175, 2.35464, +"M 0.715347 1.73249 c 0.5213,-0.7219 1.00154,-1.43136 0.42262,-1.81986 -0.0242,-0.002 -0.0403,-0.0133 -0.0667,-0.0124 -0.2124,-0.35703 -0.18293,-1.55466 -0.66093,-1.50121 -0.38391,0.0613 -0.36171,-0.99746 -1.04282,-0.70124 -0.84233,0.26952 -1.03878,1.15204 -0.35968,1.72237 -0.28818,0.80849 -0.72983,1.85273 -0.017,2.57194 0.11293,0.13641 0.31123,0.26109 0.54043,0.35233 0.20746,0.0826 0.99861,-0.35508 1.18408,-0.61193 z", +3.58152, 4.34829, +"M -2.44195 -4.34714 c -0.75319,0.0362 -0.7762,0.92587 -0.55537,1.58591 -0.55027,0.26441 -0.90264,0.93541 -0.1653,1.39825 0.67743,0.40826 1.43356,1.01809 1.58319,1.83852 0.64834,0.73248 -0.1527,1.61798 -0.33278,2.42552 l 0.54118,0.63011 c 0.0142,-0.52312 0.48191,-0.59895 0.82051,-0.61429 -0.003,0.37955 0.1004,0.74248 0.40424,1.04909 0.11924,0.14402 0.32868,0.2752 0.57065,0.37153 0.21902,0.0872 1.05405,-0.37478 1.24987,-0.64594 0.55034,-0.76211 1.05742,-1.51075 0.44627,-1.92088 -0.0255,-0.002 -0.0426,-0.014 -0.0704,-0.0131 -0.0106,-0.0172 -0.0174,-0.0448 -0.0267,-0.0654 0.21024,-0.3016 0.38758,-0.56962 0.74632,-0.0954 0.65582,0.69676 1.24636,-0.49914 0.37097,-0.65739 -0.4622,0.24406 -0.37168,-0.72499 -0.69993,-0.96236 -0.10039,-0.91415 -0.4508,-1.68175 -0.81563,-2.50845 -0.28239,-0.46623 -0.83252,-1.22127 -1.4135,-1.3415 -0.0742,-0.0449 -0.15322,-0.0625 -0.2357,-0.0556 -0.32052,0.0264 -0.68498,0.39222 -0.99017,0.71794 -0.2134,-0.59389 -0.55451,-1.1417 -1.22475,-1.1271 -0.0728,-0.01 -0.14044,-0.0118 -0.20295,-0.01 z", +3.66123, 3.92165, +"M -2.89919 -0.28264 c 0.5248,0.64771 0.38465,1.62029 -0.46302,1.88928 -0.85786,0.6722 0.38319,1.31277 0.57724,1.97921 0.11171,0.25581 0.51808,0.48818 0.72707,0.20878 0.35103,-0.2002 0.83823,0.2502 1.11623,-0.3514 0.28826,-0.50439 0.39449,-1.18406 1.07021,-1.30949 0.38793,-0.46627 -0.45389,-0.99265 0.11266,-1.47639 0.35536,-0.69249 0.56184,-1.84188 1.34721,-2.07791 0.63362,0.38352 1.48161,0.65582 1.72651,-0.31936 0.39002,-0.4159 0.59822,-1.04678 -0.19431,-1.0914 -0.59473,-0.216 -1.75681,-0.9684 -1.89285,-1.06904 -0.17327,-0.12817 -0.40811,0.35444 -0.60881,0.59258 -0.2757,0.48096 -1.0685,0.56942 -0.82373,1.34875 0.16859,0.56791 -0.21712,0.74465 -0.57515,0.30903 -0.73642,-0.18936 -0.47345,1.25664 -1.18184,0.50643 -0.15757,-0.16278 -0.39659,0.0541 -0.64211,-0.053 -0.23726,-0.1035 0.0848,-0.3456 -0.27012,-0.34843 -0.37484,-0.003 -0.30986,0.87936 -0.0252,1.26233 z", +4.66444, 5.18369, +"M 2.11104 -5.18252 c -0.17844,-0.0365 -0.59098,0.79076 -0.87075,0.86971 -0.28109,-0.28971 -0.64463,-0.14558 -0.67074,0.31678 0.17296,0.35303 -0.32848,0.92855 -0.38034,0.37982 -0.48361,-0.88691 -0.84545,0.5953 -1.32914,0.67386 -0.34102,0.46556 0.0161,0.50242 0.25064,0.78445 -0.56409,0.44035 -0.67167,0.83211 -0.3612,1.14774 -0.006,0.0911 0.005,0.19332 0.0424,0.31316 0.16859,0.56791 -0.21712,0.74465 -0.57516,0.30903 -0.73641,-0.18936 -0.47344,1.25663 -1.18184,0.50642 -0.15758,-0.16277 -0.39629,0.0539 -0.64182,-0.0532 -0.23725,-0.1035 0.0846,-0.34547 -0.27027,-0.3483 -0.37484,-0.003 -0.30999,0.87948 -0.0253,1.26246 0.52481,0.64771 0.38466,1.6203 -0.46302,1.88928 -0.85785,0.6722 0.3837,1.31277 0.57775,1.97921 0.1117,0.25581 0.51758,0.48817 0.72657,0.20878 0.35102,-0.20021 0.83873,0.25019 1.11673,-0.3514 0.28826,-0.5044 0.39399,-1.18405 1.06971,-1.30949 0.38793,-0.46627 -0.4539,-0.99265 0.11266,-1.47639 0.35533,-0.69249 0.56234,-1.84188 1.34771,-2.07791 0.30376,0.18387 0.65616,0.34025 0.96842,0.34778 0.33359,0.3812 0.84312,0.50562 1.2237,-0.11369 -0.30948,-1.21831 1.01658,-2.14727 1.88669,-2.2686 -0.41399,-0.6498 -0.0859,-1.85265 -0.94827,-2.09135 -0.29061,-0.0875 -1.51122,0.0898 -1.51876,-0.51108 0.006,-0.26471 -0.0266,-0.37397 -0.0858,-0.38705 z", +3.05335, 5.71572, +"M 2.29249 -5.71375 c -0.44087,0.0257 -0.84558,0.29637 -0.4935,0.77566 0.043,0.5726 -0.66244,1.13031 -1.01182,1.61954 -0.59536,0.0643 -0.67884,0.58579 -0.62891,1.04283 -0.0328,0.0299 -0.0632,0.056 -0.0997,0.092 -0.45413,0.43121 -0.7044,1.02376 -0.9338,1.62522 -0.0229,-0.0163 -0.0443,-0.0282 -0.0687,-0.0486 -0.64201,-0.37339 -0.381,-1.68417 -1.16064,-1.73633 -0.89157,0.53168 -0.63784,1.71779 -0.94877,2.58124 0.41748,0.0224 0.78081,-0.11303 0.77824,-0.56637 -0.029,-0.81387 0.44852,-0.14497 0.38963,0.22686 0.1398,0.26873 0.29702,0.57106 0.45476,0.83974 -0.22764,0.40185 -0.52107,0.74432 -0.9617,0.95911 -0.36584,-0.3203 -0.60315,0.95868 -0.12867,0.68575 0.24482,-0.0374 0.49482,-0.0125 0.74567,0.0408 -0.13684,0.27374 -0.30318,0.52271 -0.54673,0.70848 -0.72324,1.44096 1.7649,0.37106 0.93432,1.48157 -1.67179,-0.43188 -1.37967,2.24445 0.49197,0.51159 0.93927,-0.75809 1.02925,-2.0752 2.374,-2.39416 0.0427,-0.19658 0.0496,-0.37691 0.0326,-0.54519 0.007,-0.013 0.0142,-0.0244 0.0212,-0.0377 -0.0109,-0.006 -0.0181,-0.0127 -0.0284,-0.0186 -0.0376,-0.26876 -0.14378,-0.50259 -0.29869,-0.70797 0.0675,-0.50253 0.39688,-1.12995 0.27337,-1.65519 0.0776,-0.12843 0.15978,-0.26383 0.2372,-0.3974 0.51546,-0.0608 0.96877,-0.52849 0.25114,-0.86041 -0.99645,-0.23462 -0.10779,-1.19683 -0.005,-1.79162 -0.13147,-0.84084 0.53896,-1.24912 1.0418,-1.73478 0.20727,-0.50166 -0.26911,-0.72137 -0.71004,-0.69608 z", +3.25546, 5.30144, +"M 1.7045 -3.73289 c -0.59536,0.0643 -0.67884,0.58579 -0.62891,1.04283 -0.0328,0.0299 -0.0632,0.056 -0.0997,0.092 -0.11954,0.11351 -0.22424,0.23899 -0.31885,0.37207 -0.16346,-0.31767 -0.41725,-0.59374 -0.693,-0.86196 -0.0135,-0.57623 -0.52533,-0.68908 -0.93429,-0.86196 -0.3143,-0.11364 -0.30232,-0.22096 -0.26924,-0.50178 10e-4,-0.35694 -0.19302,-0.64802 -0.63614,-0.70849 -0.52435,-0.42985 -0.56304,0.22719 -0.74414,0.56328 0.27,0.2644 0.29136,0.75232 -0.0961,1.02939 -0.41132,0.0707 -0.85182,1.03037 -0.23047,1.04387 0.0806,0.4722 0.45971,1.10991 0.004,1.55132 -0.11771,0.33019 0.0386,0.9166 0.39997,1.19631 -0.16174,0.3523 -0.42196,0.8126 -0.35452,1.31207 0.12679,0.12631 0.14632,0.23085 0.13179,0.31729 l 0.17828,0.42323 1.16996,0.47026 c -0.67056,1.39319 1.77057,0.35041 0.9462,1.45262 -1.67179,-0.43188 -1.37969,2.24446 0.49194,0.5116 0.93927,-0.7581 1.02929,-2.0752 2.37403,-2.39417 0.0427,-0.19657 0.0496,-0.37691 0.0325,-0.54519 0.007,-0.013 0.0142,-0.0244 0.0212,-0.0377 -0.0109,-0.006 -0.0181,-0.0127 -0.0284,-0.0186 -0.0375,-0.26875 -0.14377,-0.50258 -0.29869,-0.70796 0.0675,-0.50253 0.39688,-1.12996 0.27337,-1.6552 0.0776,-0.12843 0.15978,-0.26383 0.2372,-0.39739 0.51546,-0.0608 0.96877,-0.52849 0.25114,-0.86041 -0.99645,-0.23463 -0.10795,-1.19683 -0.005,-1.79163 -0.13147,-0.84083 -0.82474,-0.52493 -1.17413,-0.0357 z", +2.78553, 3.0102, +"M 1.13709 -3.01011 c -0.11999,0.003 -0.27165,0.0974 -0.47025,0.32039 0.066,1.27176 -1.98331,0.51776 -2.42723,1.40147 -0.0487,-0.008 -0.0958,-0.0135 -0.13954,-0.0155 v 0 c -0.1647,-0.007 -0.38814,1.2022 -0.42942,1.30522 -0.044,0.10842 -0.0601,0.18666 0.12544,0.44857 -0.29803,0.73252 -0.15986,0.47603 -0.30581,1.26773 -0.70138,0.52342 0.0894,1.15559 0.6594,0.67903 0.0741,-0.0339 0.14901,-0.0598 0.22426,-0.0801 0.006,0.0576 0.0156,0.14035 0.019,0.18707 0.3897,0.22008 0.6114,0.17646 0.72191,-0.0186 l 0.27597,0.52503 c 0.45595,-0.0258 0.61214,-0.2684 0.60356,-0.57309 0.61931,0.11342 1.21306,0.13704 1.71154,-0.50953 1.48952,-0.17693 -0.82934,-2.42653 0.68212,-1.97766 0.62791,0.54053 0.50184,-1.28519 -0.30697,-0.9617 -0.50501,-0.32149 -0.42357,-2.01307 -0.94361,-1.99832 z", +3.40832, 4.84469, +"M 2.62836 -4.84469 c -0.55086,0.67388 -0.63529,1.54387 -0.99475,2.24637 -0.0561,-0.0679 -0.1206,-0.11028 -0.20103,-0.108 h -5.3e-4 c -0.11999,0.003 -2.65788,1.24415 -2.89783,1.72186 -0.0487,-0.009 -0.0958,-0.0135 -0.13954,-0.0155 -0.0819,-0.003 -0.17807,0.29411 -0.2594,0.60668 -0.20463,-0.0148 -0.40645,-0.0353 -0.59997,-0.0636 -0.21733,0.51377 -0.40796,0.43238 -0.59894,0.21445 -0.86921,0.67457 0.0811,1.38892 0.91467,1.8433 -0.0122,0.0981 -0.0303,0.22652 -0.0661,0.42065 -0.70135,0.52342 0.0894,1.15558 0.6594,0.67903 0.0741,-0.0339 0.14904,-0.0598 0.22428,-0.0801 0.006,0.0576 0.0157,0.14035 0.0191,0.18707 0.3897,0.22008 0.61142,0.17645 0.72194,-0.0186 l 0.27593,0.52503 c 0.0851,-0.005 0.15658,-0.0193 0.2217,-0.0382 -0.54399,0.66639 2.71703,2.46603 2.19988,1.0232 -0.0139,-0.61741 -0.002,-1.35716 -0.17984,-1.98593 0.0244,-0.028 0.0494,-0.0506 0.0734,-0.0816 0.0125,-0.001 0.0226,-0.004 0.0346,-0.006 0.0456,0.024 0.0912,0.0457 0.13642,0.0744 0.28681,-0.0617 0.92583,0.13145 0.99012,-0.27905 -0.20907,-0.18446 -0.45444,-0.38854 -0.68937,-0.61029 -8e-5,-9e-5 1.1e-4,-4.4e-4 0,-5.2e-4 -0.18285,-0.66281 -0.73432,-1.43655 0.21035,-1.156 0.62791,0.54053 0.50183,-1.28519 -0.30697,-0.9617 -0.16449,-0.10471 -0.26461,-0.35892 -0.34571,-0.64802 0.40217,-0.89611 1.62198,-1.24553 1.16322,-2.50115 0.10718,-0.40833 0.32133,-0.44801 0.15195,-0.57722 -0.14476,-0.11041 -0.66517,-0.33109 -0.71729,-0.41031 z", +2.91331, 4.2784, +"M 2.48505 -2.50743 -1.1297,-0.69932 c -0.26081,0.34403 -0.73919,0.6277 -1.09585,0.98835 -0.24912,0.29904 -0.87887,0.48065 -0.71385,-0.14805 0.12544,-0.65962 -0.50944,-0.96834 -0.73168,-1.47416 -0.346,0.0114 -0.71232,0.27983 -0.97235,-0.16999 -0.28809,-0.52063 -1.0299,-0.21119 -0.64799,0.32288 0.0949,0.43869 -0.36202,1.16319 0.1949,1.57459 0.20779,0.3961 0.46321,0.88104 0.35823,1.27627 -0.32873,0.54046 0.48828,0.91234 0.59778,1.40794 -0.21794,0.44035 -0.88762,0.52868 -0.68223,1.17211 -0.14326,0.65293 0.62787,0.80659 0.88904,0.25258 0.25359,-0.22465 0.61647,-0.63708 0.95934,-0.57843 0.36095,0.23638 0.80362,0.33863 0.64427,0.90689 -0.14441,0.70198 1.27406,0.83383 0.55797,1.45519 -0.0887,0.73566 0.84516,-0.20652 0.74062,0.41996 0.0243,0.13225 0.1875,0.0766 0.22429,-0.008 0.52299,-0.10663 0.83538,-0.53091 0.87788,-1.00509 -0.28215,-0.43305 -0.9743,-0.71636 -0.8522,-1.3157 0.1777,-0.15854 0.72403,0.14848 0.86856,-0.2217 0.0626,-0.53635 0.50097,-0.95686 0.279,-1.47081 -0.26406,-0.25211 -0.7397,-0.041 -0.99059,-0.11792 -0.1503,-0.59096 0.62362,-0.44277 0.78004,-0.89386 0.23735,-0.31162 -0.0744,-0.59806 -0.34594,-0.66771 0.35082,-0.27779 0.25851,-0.66602 0.19046,-1.00583 z", +3.95524, 4.27828, +"M -1.82143 -4.27815 c -0.25411,0.0105 -0.45471,0.25635 -0.21601,0.59015 0.0949,0.43869 -0.3616,1.16318 0.19532,1.57458 0.2078,0.3961 0.4631,0.88118 0.35814,1.27641 -0.0519,0.0854 -0.0729,0.16631 -0.0749,0.24443 -0.30033,-0.55817 -0.63892,-1.39159 -1.45005,-0.93483 -0.68429,0.018 -1.4623,0.76829 -0.48681,1.12758 0.43926,0.0751 -0.26699,0.60334 0.20516,0.87695 -0.0159,0.0235 -0.0497,0.0421 -0.0672,0.0651 l 1.56943,0.97152 c -0.003,-0.009 0,-0.0182 -0.003,-0.0269 0.0739,-0.017 0.13893,-0.0512 0.20052,-0.0894 -0.0235,0.0959 -0.022,0.20757 0.0222,0.34571 -0.14325,0.65293 0.6282,0.80671 0.88937,0.2527 0.0456,-0.0404 0.0984,-0.0907 0.15036,-0.13952 0.28739,0.18954 0.63963,0.18337 0.97256,-0.0904 0.0949,0.088 0.29792,0.16289 0.50125,0.2434 0.0167,0.087 0.0148,0.18794 -0.0206,0.3147 -0.0412,0.20018 0.049,0.35167 0.17622,0.4837 -0.60791,0.27447 1.22695,0.76516 1.12241,1.39164 0.0243,0.13225 0.18749,0.0763 0.22429,-0.008 0.52297,-0.10663 0.83547,-0.53093 0.87797,-1.00511 -0.18696,-0.28696 -0.5497,-0.50948 -0.74052,-0.80047 0.3039,-0.33202 0.6305,-0.62391 1.08003,-0.69298 0.3443,-0.30868 -0.18545,-0.98462 0.27493,-1.39681 -0.003,-0.027 0.0145,-0.0359 0.0156,-0.0605 v -5.3e-4 c -0.15378,-0.23531 -0.0824,-0.95349 -0.51263,-0.59635 -0.008,0.0349 -0.0352,0.0725 -0.0403,0.10697 -0.23939,0.0364 -0.4218,0.16976 -0.58653,0.33073 -0.0687,0.002 -0.13319,1.9e-4 -0.18605,-0.016 -0.15028,-0.59096 0.62391,-0.44292 0.78031,-0.894 0.23736,-0.31162 -0.0747,-0.59801 -0.34621,-0.66766 0.35081,-0.2778 0.25874,-0.66582 0.19069,-1.00563 v -5.3e-4 l -1.12967,-0.69918 c -0.2608,0.34403 -0.73938,0.62792 -1.09606,0.98857 -0.24911,0.29904 -0.87866,0.48039 -0.71364,-0.14831 0.12544,-0.65962 -0.5095,-0.96851 -0.73173,-1.47433 -0.34602,0.0114 -0.71252,0.2798 -0.97255,-0.17002 -0.10803,-0.19523 -0.27956,-0.27346 -0.43202,-0.26716 z", +4.74428, 5.06938, +"M -3.5022 -4.25506 c 0.0377,1.35963 1.56777,-0.33227 2.03738,0.80243 0.10379,0.0956 0.208,0.18438 0.31094,0.26506 -0.0406,0.39354 -0.0321,0.76444 0.0226,0.99137 -0.0937,0.13068 -0.17696,0.30235 -0.24523,0.49401 l -0.016,0.006 c 0.002,0.008 0.003,0.018 0.005,0.0266 -0.0996,0.28994 -0.16492,0.62239 -0.17565,0.93429 -0.0765,0.0524 -0.1308,0.11334 -0.15194,0.17898 l -7.4e-4,1e-4 c -0.0328,0.10411 0.0199,0.22082 0.19471,0.33612 0.0223,0.0965 0.0512,0.18645 0.0924,0.26307 -0.0649,0.0713 -0.11275,0.14849 -0.14391,0.22932 l -4e-4,-3.2e-4 c -0.0213,0.0536 -0.0342,0.10888 -0.042,0.16478 -0.07,-0.0196 -0.14851,-0.0772 -0.2347,-0.1906 -0.4414,-0.50596 -1.07643,-0.19724 -1.61154,-0.33475 -0.20468,0.2792 -0.21946,0.73356 -0.73384,0.66033 -0.58741,-0.0949 -0.8024,0.67948 -0.14649,0.70885 0.40367,0.19623 0.69169,1.00265 1.35917,0.8186 0.43988,0.0811 0.97908,0.17983 1.22514,0.50646 0.22215,0.59228 1.0194,0.17931 1.47686,0.39919 0.0351,0.0735 0.0519,0.1516 0.0635,0.23048 -0.003,0.23736 -0.0256,0.46963 -0.1023,0.6877 0.73066,0.46689 1.85021,2.14597 1.91273,0.29922 l -0.0399,-0.38017 c 0.17772,-0.45619 0.21761,-0.97787 0.11319,-1.43135 0.18902,-0.0344 0.36991,0.007 0.54937,0.25255 0.46301,0.54704 1.44266,-0.4874 1.48929,0.45953 0.5239,0.52402 0.35947,-0.79213 0.7877,-0.32307 0.11904,0.0625 0.17579,-0.10037 0.1322,-0.18137 0.23905,-0.4772 0.0983,-0.98501 -0.24849,-1.31123 -0.51486,-0.0455 -1.16504,0.32403 -1.56109,-0.14209 -0.015,-0.23767 0.56363,-0.47753 0.36169,-0.8198 -0.38324,-0.38042 -0.44322,-0.98487 -0.98457,-1.1276 -0.36135,0.052 -0.48894,0.55663 -0.70435,0.70647 -0.55766,-0.24666 0.0368,-0.76423 -0.22141,-1.1658 -0.0503,-0.19364 -0.18405,-0.2692 -0.33237,-0.2754 -0.0404,-0.3067 -0.57848,-0.81058 -0.65503,-0.97077 -0.40971,-0.63902 0.92366,-1.3558 0.28285,-1.97222 -0.0522,-0.16312 -0.21544,-0.27501 -0.49717,-0.33243 -0.0587,-0.0278 -0.11515,-0.0458 -0.1692,-0.0573 -0.0289,-0.0113 -0.057,-0.0238 -0.0853,-0.0361 -1.03981,-0.53291 -2.51397,0.22465 -3.31269,0.63055 z", +3.95515, 2.62566, +"M 3.95505 -0.686011 c -0.15408,-0.23494 -0.0822,-0.95418 -0.51263,-0.59686 -0.008,0.0349 -0.0352,0.0725 -0.0403,0.10697 -0.83055,0.12629 -1.00177,1.38378 -1.97093,1.12551 -0.48091,0.005 -0.94795,-0.32656 -1.45987,-0.33538 -0.37338,-0.52472 -0.57999,-1.00169 -0.26509,-1.59473 0.0936,-0.67218 -1.16382,-0.98056 -0.65939,-0.11679 0.26345,0.50822 0.18968,1.40264 -0.508,0.75758 -0.32954,-0.53085 -0.64802,-1.61561 -1.54771,-1.10898 -0.68429,0.018 -1.46227,0.76829 -0.48678,1.12758 0.43926,0.0751 -0.26701,0.60334 0.20516,0.87695 -0.0159,0.0235 -0.0497,0.0426 -0.0672,0.0656 l 1.56941,0.97152 c -0.002,-0.009 -10e-4,-0.0182 -0.003,-0.0269 0.39897,-0.0917 0.59063,-0.63554 0.87437,-0.0842 0.29559,0.58427 0.85214,0.78099 1.36064,0.36277 0.29091,0.26967 1.59176,0.4144 0.83405,0.98495 -0.96634,0.19424 0.0436,1.30965 0.4563,0.51211 0.65617,-0.49446 1.06992,-1.43769 1.93064,-1.56993 0.3443,-0.30868 -0.18545,-0.98462 0.27493,-1.39681 -0.002,-0.0272 0.0148,-0.0361 0.0155,-0.061 z", +3.39269, 3.51493, +"M 0.0750514 -3.51461 c -0.19846,-0.006 -0.39854,0.0731 -0.58965,0.27905 -0.3796,0.57495 -1.2206,0.87046 -1.87431,0.68161 -0.71429,-0.005 -1.49539,0.87511 -0.60666,1.43299 0.6417,0.38671 1.3579,0.96436 1.49963,1.7415 0.61413,0.69383 -0.14464,1.5326 -0.31522,2.29753 l 0.51263,0.59686 c 0.0171,-0.63284 0.7448,-0.57701 1.00822,-0.58962 0.0858,-1.15842 1.23714,0.33687 1.55236,-0.74983 0.69887,0.1792 0.74695,-1.30546 1.36168,-0.49299 0.62122,0.65999 1.1806,-0.4728 0.35139,-0.62271 -0.4378,0.23119 -0.35205,-0.68673 -0.66301,-0.91157 -0.0951,-0.86591 -0.42699,-1.59301 -0.77256,-2.37608 -0.28776,-0.47507 -0.86916,-1.26771 -1.4645,-1.28674 z", +2.56824, 2.063, +"M -1.65563 -2.06134 c -1.25863,0.0605 -1.00656,1.90514 -0.4826,2.70738 1.27622,-0.20063 1.59649,2.35287 2.91245,1.0399 0.34188,-0.16365 0.38346,-0.31718 0.30757,-0.47967 0.0248,-0.0232 0.0505,-0.0458 0.0754,-0.0689 0.78294,-0.61042 2.07913,-1.20867 0.99887,-2.30315 -0.1618,-0.25964 -0.35631,-0.35126 -0.56606,-0.33394 -0.4303,0.0354 -0.91952,0.5265 -1.3292,0.96373 -0.28645,-0.79722 -0.7443,-1.53257 -1.64403,-1.51297 -0.0978,-0.0128 -0.18852,-0.0162 -0.27243,-0.0128 z", +2.69804, 3.17552, +"M -0.907231 -3.17534 c -0.24929,0.007 -0.46483,0.2028 -0.59435,0.71789 -0.1246,0.75535 -1.2685,1.31142 -0.66913,2.14191 -1.32502,1.15191 0.1607,2.97757 1.02977,3.49106 l 0.1303,-0.11175 0.15128,-0.13697 c 0.8895,-0.21167 1.24411,-0.76409 1.26851,-1.69723 0.19571,-0.87034 1.02336,-1.14446 1.34665,-0.12867 0.20799,-0.56415 1.74212,-1.10319 0.39257,-1.55429 -0.99736,-0.1586 -0.23361,-1.73999 -1.4904,-1.42319 -0.30638,-0.417 -1.01682,-1.31425 -1.56523,-1.29875 z", +2.85984, 5.28311, +"M 2.73793 -5.28207 c -0.015,-0.002 -0.0319,-10e-4 -0.0501,0.002 l -0.34004,0.31678 c -0.17511,0.027 -0.38357,0.16702 -0.5669,0.42116 -0.73686,-0.0649 -1.46563,0.13236 -1.66706,0.13746 -0.67315,0.017 -0.52935,1.98311 -0.49609,2.62775 0.0175,0.11077 0.0314,0.16367 0.0424,0.19378 -0.0163,0.0123 -0.0413,0.0577 -0.0791,0.18656 -0.0357,0.12199 -0.10261,0.35732 -0.14883,0.51521 -0.17169,-0.11412 -0.34298,-0.19051 -0.50125,-0.18604 -0.24929,0.007 -0.46477,0.2027 -0.59428,0.71779 -0.12462,0.75535 -1.2686,1.3115 -0.66921,2.14199 -1.32504,1.15191 0.16084,2.97725 1.02989,3.49074 l 0.13022,-0.11162 0.1509,-0.13694 c 0.8895,-0.21167 1.24425,-0.76392 1.26867,-1.69706 0.19572,-0.87034 1.02339,-1.14446 1.34668,-0.12867 0.20799,-0.56415 1.74228,-1.10333 0.39275,-1.55443 -0.98558,-0.15672 -0.25485,-1.69952 -1.45005,-1.4304 0.0337,-0.19455 0.0813,-0.37702 0.15608,-0.53589 0.30318,-0.62037 1.08029,-1.8405 1.08415,-2.40243 0.005,-0.76342 0.83722,-0.66127 0.91932,-1.45315 0.13685,-0.53732 0.26681,-1.08517 0.0419,-1.11414 z", +2.25069, 2.15736, +"M -1.31572 -2.15659 c -0.1647,-0.007 -0.28795,0.0329 -0.32919,0.13591 -0.0487,0.11989 0.0156,0.32374 0.25373,0.63355 -0.18714,0.21042 -0.36899,0.44338 -0.58703,0.64182 -0.85828,0.33362 0.60076,1.16166 0.42995,1.80145 0.20592,0.53574 0.73787,1.3365 1.35496,0.78031 l 0.16846,0.32091 c 0.59552,-0.0337 1.38631,-0.20816 2.03242,-1.02836 l -0.19119,-0.8568 c -0.137,-0.23584 -0.2603,-0.40707 -0.37311,-0.53743 0.37941,-0.26434 1.13768,-0.0887 0.64751,-0.82579 -0.0527,-0.0367 -0.10821,-0.0708 -0.1633,-0.10542 0.49546,-0.53719 -0.1007,-0.64494 -0.7457,-0.38034 -0.43736,-0.17954 -0.90406,-0.30825 -1.35702,-0.38189 -0.0559,-0.008 -0.10962,-0.0114 -0.16124,-0.0119 -0.0978,-10e-4 -0.18828,0.009 -0.27284,0.0295 -0.24662,-0.12465 -0.50609,-0.20615 -0.70591,-0.21549 z", +3.67275, 3.21569, +"M -0.0460498 -3.21533 c -0.11996,0.001 -0.23781,0.009 -0.32142,0.0129 -0.29093,0.0121 -0.53765,0.0695 -0.3235,0.53536 -0.22627,0.0914 -0.90234,0.55329 -1.04024,-0.0388 -0.31879,-0.0384 -0.77856,0.15926 -0.93379,0.43718 -0.43863,-0.21291 -0.84127,0.042 -0.99891,0.44856 -0.043,0.32893 0.0751,0.60333 0.26046,0.84749 -0.009,0.3245 0.1084,0.47004 0.30022,0.49558 l -0.38343,0.45217 c 0.29165,0.62004 0.78181,0.43344 1.16014,0.0506 0.0781,0.0553 0.15775,0.10901 0.23977,0.16071 -0.53198,0.40496 -0.7605,0.97563 0.31369,1.28933 l 0.72294,-0.49765 c 0.0642,-0.0825 0.11237,-0.15383 0.16278,-0.22686 0.0327,0.0105 0.0654,0.0181 0.0982,0.0279 0.16068,0.39255 0.77761,0.90608 0.66302,1.33532 0.20593,0.53574 0.73787,1.3365 1.35496,0.78032 l 0.16846,0.32091 c 0.59552,-0.0337 1.38581,-0.20816 2.03192,-1.02837 l -0.19069,-0.85679 c -0.137,-0.23584 -0.2608,-0.40707 -0.37361,-0.53743 0.37941,-0.26434 1.13818,-0.0887 0.64801,-0.82579 -0.0527,-0.0367 -0.10871,-0.0708 -0.16383,-0.10542 0.49549,-0.5372 -0.10067,-0.64494 -0.74567,-0.38034 -0.43736,-0.17954 -0.90406,-0.30825 -1.35702,-0.38189 -0.0559,-0.008 -0.10962,-0.0114 -0.16124,-0.0119 -0.0978,-0.001 -0.18828,0.009 -0.27284,0.0294 -0.0795,-0.0402 -0.15954,-0.0736 -0.23926,-0.10387 0.11316,-0.10188 0.2712,-0.17912 0.47128,-0.21652 0.0483,-0.28576 0.18888,-1.14252 -0.003,-1.27021 -0.32433,-0.21564 -0.36465,-0.44676 -0.55502,-0.44183 -0.10408,0.003 -0.0796,-0.25731 -0.19894,-0.27234 -0.0916,-0.0237 -0.21338,-0.0292 -0.33332,-0.0279 z", +4.37172, 2.82177, +"M 4.15107 -2.76363 c -0.12588,-0.061 -0.31491,-0.0778 -0.59006,-0.0321 -0.39183,1.50176 -2.22417,-0.002 -2.85969,1.25239 -0.22059,0.57212 0.36731,0.82629 -0.0102,1.2242 -0.47996,0.50597 -1.83247,1.95136 -2.83873,1.05509 -1.37002,-0.71385 -1.45547,1.3313 -2.22411,1.81568 0.29352,0.31468 0.80913,0.29068 1.2014,0.23962 1.08757,-0.8648 2.32743,0.27342 3.58569,-0.0204 0.84516,-0.67246 1.49671,-1.57107 2.62485,-1.94719 0.46688,-0.61992 1.62754,-0.4097 1.06677,-1.52838 -0.0528,-0.66878 0.58863,-1.79182 0.0441,-2.05885 z", +4.37157, 4.1273, +"M 0.620322 -4.12594 c -0.55557,0.0573 -1.03581,1.84758 -1.54823,2.21485 0.3837,0.6876 0.283,1.30919 0.0419,1.9172 -0.42523,0.16787 -0.86971,0.17674 -1.26193,-0.1726 -1.37001,-0.71385 -1.45499,1.33153 -2.22363,1.81591 0.29352,0.31468 0.8087,0.29032 1.20097,0.23926 0.48778,-0.38788 1.00761,-0.36748 1.54461,-0.25941 -0.14566,0.3988 -0.2277,0.81069 -0.15658,1.24953 0.36957,0.23628 0.50355,0.43109 0.52038,0.60462 l 0.91723,0.64388 c 0.68612,-0.27271 2.29931,-0.23369 1.41335,-1.51153 0.38381,-0.70654 1.05535,-1.29742 0.97981,-2.16938 0.29503,-0.21386 0.61597,-0.39961 0.99218,-0.52503 0.46689,-0.61992 1.62738,-0.40991 1.06659,-1.52859 -0.0528,-0.66878 0.58846,-1.79176 0.0439,-2.05879 -0.12586,-0.061 -0.31498,-0.0777 -0.59012,-0.032 -0.31404,1.2036 -1.55213,0.47891 -2.35903,0.78858 -0.16962,-0.30286 -0.26535,-0.61458 -0.18346,-0.94051 -0.13758,-0.21015 -0.26969,-0.28917 -0.39791,-0.27595 z", +2.40615, 2.34567, +"M 1.22057 -2.34541 c -0.11996,0.001 -0.23783,0.009 -0.32144,0.0129 -0.29094,0.0121 -0.53763,0.0695 -0.32348,0.53537 -0.22627,0.0914 -0.90236,0.55323 -1.04026,-0.0388 -0.3188,-0.0384 -0.77856,0.15925 -0.9338,0.43718 -0.43862,-0.21292 -0.84126,0.042 -0.9989,0.44855 -0.043,0.32893 0.0751,0.60334 0.26045,0.8475 -0.009,0.3245 0.10843,0.47003 0.30025,0.49557 l -0.38343,0.45217 c 0.29165,0.62004 0.78179,0.4334 1.16012,0.0506 0.0781,0.0553 0.15777,0.10901 0.23979,0.16071 -0.53197,0.40497 -0.76052,0.97563 0.31366,1.28933 l 0.72295,-0.49764 c 0.0642,-0.0825 0.11239,-0.15383 0.1628,-0.22686 0.21412,0.0689 0.42973,0.123 0.64233,0.15606 l 0.0419,-0.0403 c 0.16619,-0.0829 0.52523,-0.15309 0.76946,-0.27698 0.23728,0.032 0.30295,-0.10345 0.24339,-0.30644 -0.006,-0.0574 -0.03,-0.12095 -0.0847,-0.19327 -2.9e-4,-2.4e-4 -7.2e-4,-2.8e-4 -10e-4,-5.2e-4 -0.0729,-0.13224 -0.17968,-0.27385 -0.3147,-0.40928 -0.1447,-0.38814 0.092,-0.78214 0.63511,-0.88366 0.0483,-0.28576 0.18899,-1.14252 -0.003,-1.27021 -0.32432,-0.21564 -0.36462,-0.44676 -0.55499,-0.44184 -0.10408,0.003 -0.0796,-0.25731 -0.19896,-0.27233 -0.0916,-0.0237 -0.21336,-0.0292 -0.3333,-0.0279 z", +3.50783, 3.58322, +"M 2.96957 -3.58221 c -0.054,-0.004 -0.10962,0.004 -0.16682,0.0204 -0.50287,0.14531 -1.11843,0.96574 -1.59686,0.75172 -0.10443,0.2409 -0.0893,0.42169 -0.004,0.56879 -0.16015,0.0374 -0.31561,0.12717 -0.45888,0.27949 -0.18095,-0.16288 -0.36634,-0.32735 -0.52012,-0.46987 -0.20437,-0.0568 -0.39359,-0.0485 -0.5582,7.6e-4 -0.3902,0.11676 -0.63677,0.46713 -0.60175,0.74583 -0.82773,-0.51376 -1.62373,-1.30541 -2.57037,-1.06536 h -4e-4 c 0.26652,0.79551 1.77909,1.50405 1.31935,2.59942 -0.29573,1.43857 0.96759,1.36306 1.9262,0.86162 -0.19051,0.27421 -0.33048,0.55606 -0.0695,0.87617 0.2907,0.72136 0.51069,1.5495 1.19922,1.99646 0.20081,-0.39583 0.52596,-0.80888 0.35365,-1.27772 -0.24696,-0.37352 -0.82161,-0.82316 -0.85651,-1.19804 0.67455,0.0369 1.28244,0.50499 1.61609,-0.44907 0.0895,-0.17713 0.12714,-0.35251 0.13189,-0.52562 0.5227,-0.002 0.92832,-0.16026 0.80786,-0.83572 -0.02,-0.11225 -0.0568,-0.22688 -0.10279,-0.34112 0.29762,0.56825 0.4526,0.29332 0.43494,-0.27949 0.56932,-0.62085 -0.0145,-1.20088 0.14248,-1.85712 -0.11901,-0.28003 -0.26387,-0.39114 -0.4255,-0.40157 z m -3.15799,2.26732 c -0.008,0.02 -0.0114,0.0391 -0.0165,0.0585 -0.0297,-0.0163 -0.0596,-0.0336 -0.0906,-0.0557 0.0354,-6.9e-4 0.0686,8.4e-4 0.10709,-0.003 z", +3.7615, 3.60448, +"M 2.71615 -3.60346 c -0.054,-0.004 -0.10972,0.004 -0.1669,0.0202 -0.32652,0.0944 -0.70003,0.46997 -1.05317,0.6656 -0.0392,-0.0864 -0.0913,-0.17253 -0.16949,-0.2589 -0.13989,0.11483 -0.28059,0.23472 -0.44546,0.30385 -0.37044,0.0914 -0.55509,0.29917 -0.72657,0.58653 -0.0611,-0.0552 -0.13033,-0.11623 -0.185,-0.16691 -0.20439,-0.0568 -0.39351,-0.0488 -0.55811,5.1e-4 -0.35949,0.10757 -0.59423,0.413107 -0.60203,0.678517 -0.0136,0.0138 -0.0277,0.0274 -0.0398,0.0413 -0.81341,-0.513967 -1.59923,-1.275407 -2.53061,-1.039227 h -5e-4 c 0.26651,0.795517 1.77903,1.503967 1.31929,2.599337 -0.29573,1.43857 0.9679,1.3634 1.92651,0.86196 -0.19053,0.27421 -0.33076,0.5558 -0.0698,0.87592 0.012,0.0298 0.0233,0.0613 0.0351,0.0915 -0.14874,0.19134 -0.58581,0.55204 -0.12969,0.59428 0.55962,-0.15196 0.50268,0.68369 0.64232,1.02681 0.27718,0.29651 0.87279,0.45861 1.25006,0.19069 0.25513,-0.26582 0.48609,-6.5e-4 0.76999,-0.005 0.16695,-0.18991 0.32821,-0.0961 0.49556,-0.0584 0.71837,-0.71386 0.97589,-1.56297 1.28365,-2.4846 -0.70366,-0.43516 -0.773,-0.65102 -0.81441,-1.42007 l -0.0104,-0.33796 c 0.0471,-0.0983 0.0696,-0.27697 0.0625,-0.50798 0.56933,-0.62085 -0.0149,-1.200497 0.14211,-1.856747 -0.11901,-0.28003 -0.26366,-0.39109 -0.42529,-0.40152 z", +2.73778, 2.64431, +"M -1.85179 2.64296 c 0.2123,0.0405 0.70405,-0.84096 1.03766,-0.92501 0.33497,0.30812 0.76833,0.15488 0.79944,-0.33693 -0.20608,-0.37546 0.3914,-0.98771 0.45321,-0.40411 0.57615,0.94326 1.00706,-0.63268 1.58337,-0.71623 0.18095,0.0986 0.3791,0.08 0.57309,0.10232 0.38124,-1.55226 -0.0574,-1.82885 -0.65008,-1.86604 0.0889,-0.23201 0.18206,-0.4544 0.29609,-0.63924 -0.83934,-0.59743 -2.12622,-0.83961 -2.63705,0.29611 -0.0335,0.0842 -0.0746,0.16672 -0.12041,0.24856 -0.21743,0.0386 -0.42992,0.0931 -0.60772,0.19482 -0.90374,-0.25609 -0.4962,0.82188 -0.69969,1.33377 -0.68622,0.72594 -1.23518,1.47159 -0.69607,2.40967 0.21852,-0.0632 0.39881,-0.18586 0.55965,-0.33848 0.002,0.0764 0.006,0.15365 0.006,0.22945 -0.008,0.28213 0.0321,0.39784 0.10282,0.41134 z", +2.73778, 2.64431, +"M -1.85179 2.64296 c 0.2123,0.0405 0.70405,-0.84096 1.03766,-0.92501 0.33497,0.30812 0.76833,0.15488 0.79944,-0.33693 -0.20608,-0.37546 0.3914,-0.98771 0.45321,-0.40411 0.57615,0.94326 1.00706,-0.63268 1.58337,-0.71623 0.18095,0.0986 0.3791,0.08 0.57309,0.10232 0.38124,-1.55226 -0.0574,-1.82885 -0.65008,-1.86604 0.0889,-0.23201 0.18206,-0.4544 0.29609,-0.63924 -0.83934,-0.59743 -2.12622,-0.83961 -2.63705,0.29611 -0.0335,0.0842 -0.0746,0.16672 -0.12041,0.24856 -0.21743,0.0386 -0.42992,0.0931 -0.60772,0.19482 -0.90374,-0.25609 -0.4962,0.82188 -0.69969,1.33377 -0.68622,0.72594 -1.23518,1.47159 -0.69607,2.40967 0.21852,-0.0632 0.39881,-0.18586 0.55965,-0.33848 0.002,0.0764 0.006,0.15365 0.006,0.22945 -0.008,0.28213 0.0321,0.39784 0.10282,0.41134 z", +2.72104, 3.39079, +"M 0.286178 -3.39079 c -0.14007,0.11497 -0.28086,0.23514 -0.44596,0.30437 -0.43748,0.10788 -0.61692,0.37041 -0.8201,0.74518 -0.20775,0.47047 -0.48958,-0.22623 -0.70953,-0.14625 -0.17844,0.25772 -0.66421,0.48419 -0.68522,0.74259 0.48728,-0.0488 0.29403,0.53326 0.005,0.63149 -0.19034,0.18451 -0.59938,0.72542 -0.14417,0.90072 0.44725,-0.12109 0.48747,0.26394 0.52038,0.58136 -0.074,-0.44637 0.62326,-0.57247 0.80926,-0.27647 -0.19566,0.38226 -0.23154,0.87394 -0.36896,1.30586 -0.1065,0.17514 -0.65649,0.59395 -0.16746,0.63924 0.55962,-0.15196 0.50271,0.68369 0.64236,1.02681 0.27718,0.29651 0.87278,0.45861 1.25005,0.19069 0.25514,-0.26582 0.48606,-0.001 0.76996,-0.005 0.16695,-0.18991 0.32824,-0.0961 0.49559,-0.0584 0.71837,-0.71386 0.97589,-1.56297 1.28366,-2.4846 -0.70366,-0.43516 -0.77306,-0.65079 -0.81447,-1.41984 l -0.0209,-0.66544 c -0.14473,-0.20288 -0.29131,-0.40206 -0.49768,-0.48162 -0.51565,0.12706 -0.62662,-0.15055 -0.84926,-0.31646 -0.0172,-0.40469 0.11379,-0.80938 -0.25281,-1.21407 z", +2.54738, 3.09564, +"M -2.54738 -1.21382 c 0.12657,0.31725 -0.0579,0.48889 0.29639,1.02693 0.28022,0.42555 1.10094,1.23068 1.25829,1.46812 0.39733,0.5996 0.15592,0.35314 -0.13001,1.1135 l 0.41975,0.48888 c 0.0197,-0.0589 0.63189,-0.11044 0.65209,-0.17001 0.0222,0.0431 0.0455,0.0859 0.0661,0.12919 0.0877,0.19747 0.15333,0.26483 0.2067,0.25115 0.16015,-0.0429 0.20981,-0.81511 0.41291,-0.98341 0.33369,0.10267 0.58274,-0.14635 0.44182,-0.49713 -0.2667,-0.19187 -0.0552,-0.81306 0.18034,-0.42943 0.71052,0.46274 0.48797,-0.77085 0.8594,-1.01906 0.15785,0.008 0.28929,-0.0697 0.43098,-0.11834 -0.24882,-1.20063 -0.644,-1.24748 -1.06662,-1.07745 -0.0152,-0.19 -0.0245,-0.3749 -0.006,-0.54054 -0.15658,-0.0274 -0.32065,-0.0374 -0.48318,-0.0305 l 0.0367,-0.18293 c -0.41522,-0.73638 -1.14845,-2.2421 -2.38538,-0.50798 -0.386,0.22163 0.0136,0.52023 -0.16174,0.80202 -0.29782,0.28407 -0.20672,-0.38153 -0.40463,-0.14883 -0.23569,0.10251 -0.42783,0.26499 -0.62375,0.42581 z", +4.16689, 3.81427, +"M -1.95926 -3.81051 c -0.29384,0.0315 -0.63098,0.25701 -1.01751,0.79892 -0.386,0.22163 0.0136,0.52023 -0.16173,0.80202 -0.29785,0.28407 -0.20672,-0.38153 -0.40463,-0.14883 -0.23569,0.10251 -0.42783,0.265 -0.62376,0.42582 0.12658,0.31725 -0.0582,0.48929 0.29612,1.02733 0.0583,0.0886 0.14341,0.19507 0.23771,0.30799 -0.0747,9e-4 -0.14412,0.0272 -0.19894,0.0687 h -5.3e-4 c -0.17727,0.13413 -0.20177,0.41817 0.24545,0.45268 -0.39825,0.48749 0.43336,0.66351 0.60359,1.13223 -0.0301,0.59814 0.20492,1.21839 -0.0532,1.81385 -0.21561,0.33237 0.23479,0.51094 0.38809,0.76015 0.0564,0.0501 0.0678,0.1023 0.10335,0.154 h 5.3e-4 c 0.4419,0.12956 0.9933,-0.19327 1.50844,-0.36587 0.76589,-0.53181 1.53929,-1.25257 2.29753,-1.59473 0.2199,0.13691 0.43069,0.36556 0.6263,0.4749 0.45749,0.20053 0.51117,0.84887 1.06042,0.88005 0.3851,0.004 0.70237,-0.18814 0.91467,-0.51573 -0.35343,-0.19801 -0.27543,-0.7836 0.0424,-1.07745 0.47445,-0.42372 0.22762,-1.0411 -0.13642,-1.4304 -0.40209,-0.32194 0.51559,-0.78393 -0.0935,-0.79737 -0.15158,-0.14276 -0.26191,-0.30716 -0.3855,-0.45837 l -0.23204,0.0605 c -0.52811,0.011 -1.14326,-0.0144 -1.2087,0.19172 l -0.31109,0.56431 c -0.38256,0.0826 -0.41923,0.31447 -1.16274,0.24132 -0.0683,0.071 -0.12409,0.1551 -0.17259,0.24754 l -0.003,-0.004 c 0.0758,-0.27877 0.11591,-0.63338 0.29712,-0.75448 0.15785,0.008 0.2893,-0.0697 0.43098,-0.11834 -0.24881,-1.20062 -0.64397,-1.24748 -1.06658,-1.07745 -0.0152,-0.19 -0.0242,-0.37489 -0.006,-0.54053 -0.15658,-0.0274 -0.32065,-0.0374 -0.48319,-0.0305 l 0.0367,-0.18294 c -0.28546,-0.50626 -0.72144,-1.37616 -1.36787,-1.3069 z", +3.3826, 3.20591, +"M 0.917115 -3.20545 c -0.0393,0.67856 -0.8055,0.38483 -1.10476,0.76992 0.21062,0.50964 -0.42472,0.8769 -0.74454,1.18986 -0.0806,-0.39166 -0.0452,-0.8526 -0.44329,-0.91195 -0.65614,0.0726 -0.81839,-0.6789 -1.28317,-0.87078 -0.2656,0.13569 -0.49393,0.3231 -0.72396,0.51189 0.16808,0.42128 -0.0773,0.64903 0.39322,1.36349 0.3721,0.56508 1.46193,1.63419 1.67087,1.94948 0.52763,0.79619 0.20746,0.4691 -0.17223,1.47876 l 0.55718,0.64914 c 0.0262,-0.0782 0.83916,-0.14666 0.86601,-0.22576 0.0295,0.0572 0.0604,0.11406 0.0878,0.17155 0.11646,0.26222 0.20361,0.35166 0.27446,0.33349 0.21267,-0.057 0.27862,-1.08235 0.54829,-1.30583 0.44311,0.13633 0.77382,-0.19433 0.5867,-0.66013 -0.35415,-0.25477 -0.0733,-1.07964 0.23947,-0.57022 0.9435,0.61446 0.64796,-1.0236 1.14116,-1.35319 0.2096,0.0106 0.38415,-0.0925 0.57228,-0.15714 -0.33038,-1.59428 -0.85513,-1.65649 -1.41632,-1.43072 -0.017,-0.21332 -0.024,-0.41843 -0.012,-0.61071 -0.22056,0.0324 -0.42912,0.0689 -0.60935,0.12495 -0.11459,-0.34405 -0.26659,-0.45533 -0.42751,-0.44603 z", +3.6319, 4.78495, +"M 0.896993 -4.78491 c -1.04618,0.86919 1.22964,1.02801 0.62706,2.09804 -0.0111,0.14066 -0.0168,0.27728 -0.0167,0.40806 -0.33465,0.21103 -0.62095,0.44688 -0.76564,0.63005 -0.40971,0.0176 -0.98566,0.24842 -1.41538,0.56247 -0.0885,-0.0278 -0.17012,-0.0331 -0.23481,-0.009 l -4.4e-4,-4.3e-4 c -0.10214,0.0385 -0.1614,0.15187 -0.14414,0.36058 -0.0621,0.0771 -0.11487,0.15557 -0.14971,0.23526 -0.0962,-0.007 -0.18664,0.003 -0.26946,0.0282 v -4.3e-4 c -0.51314,0.15257 -0.75518,0.85767 -0.51544,1.44917 0.0468,0.13673 0.0411,0.38968 0.0235,0.67624 -0.563,0.31662 -0.99981,0.90929 -1.60573,1.11511 0.0839,0.86303 -0.5451,2.78068 0.94615,1.68955 l 0.27419,-0.26605 c 0.59919,-0.18144 1.14669,-0.60514 1.40596,-1.11211 0.70056,-0.69037 0.4631,-1.79139 0.86788,-2.69387 0.38804,-0.19262 0.71359,-0.58299 1.22675,-0.0295 0.503,0.48469 0.58214,-0.85407 0.69164,-1.07533 0.24966,-0.71685 1.63714,-0.11067 1.72634,-0.99534 0.0961,-0.14176 0.083,-0.33963 -0.0458,-0.59669 -0.0144,-0.0633 -0.0351,-0.11846 -0.0594,-0.1681 -0.009,-0.0297 -0.0165,-0.0595 -0.0243,-0.0894 -0.22286,-1.14696 -1.72872,-1.83888 -2.54117,-2.21652 z m -1.97015,4.93649 c 0.004,0.004 0.009,0.008 0.0133,0.0124 -0.0133,0.047 -0.0288,0.0941 -0.044,0.14115 0.009,-0.0514 0.0193,-0.10257 0.0308,-0.15356 z", +2.20024, 4.20283, +"M 0.680372 -4.20263 c -0.17134,-0.003 -0.35314,0.0281 -0.51107,0.0956 h -0.002 c -0.37912,0.16215 -0.6214,0.53304 -0.25527,1.13533 0.0428,0.30239 0.0412,0.55368 -5.3e-4,0.76378 -0.20661,0.20366 -0.36107,0.43947 -0.42891,0.67541 -0.25368,0.17815 -0.60508,0.27842 -1.04386,0.33693 -0.81735,0.77798 1.48963,1.90805 0.56173,2.45463 -0.32718,0.0973 -0.67947,0.11365 -0.9953,0.0207 -0.64842,0.99087 0.36237,2.72148 1.30794,2.69131 l 0.25683,-0.16433 0.13385,-0.19999 c 0.0466,-0.0443 0.0923,-0.0929 0.13795,-0.14159 0.17233,0.17619 0.32211,0.35812 0.41807,0.55397 0.56925,-0.35075 1.47415,0.57288 1.80713,-0.0207 -1.12112,-0.65447 -1.73331,-1.46106 -0.64026,-2.46807 -0.1388,-0.15461 -0.33557,-0.2819 -0.49663,-0.40411 0.0189,-0.22272 0.0125,-0.44358 -0.0258,-0.65784 0.0824,-0.0552 0.18539,-0.11327 0.31935,-0.17622 0.92186,-0.47154 0.76654,-2.17728 0.97665,-2.5032 -0.36297,-0.32872 -0.97897,0.11256 -1.34102,-0.54364 -0.0805,0.02 -0.16004,0.0479 -0.23873,0.0796 0.0343,-0.20274 0.15489,-0.40552 0.40256,-0.60616 0.59182,-0.58976 0.17092,-0.91141 -0.34314,-0.92139 z", +2.88699, 5.39383, +"M 1.3671 -5.39363 c -0.17122,-0.003 -0.3528,0.0282 -0.51057,0.0956 h -0.003 c -0.37912,0.16215 -0.62142,0.53304 -0.25529,1.13533 0.0428,0.30239 0.0412,0.55368 0,0.76378 -0.20662,0.20366 -0.36108,0.43947 -0.42892,0.67541 -0.25368,0.17815 -0.6051,0.27842 -1.04386,0.33693 -0.81735,0.77798 1.4896,1.90805 0.56171,2.45463 -0.32718,0.0973 -0.67945,0.11362 -0.99528,0.0207 -0.14761,0.22555 -0.20556,0.49003 -0.20154,0.76275 -0.051,0.0146 -0.10085,0.0324 -0.14729,0.0579 -0.23484,0.6226 -0.50334,1.23094 -0.7865,1.83296 -0.19645,0.25916 -0.14105,0.63084 -0.33951,0.83613 -0.11512,0.138 -0.11041,0.31176 -0.0977,0.48472 l 1.21801,1.32705 c 0.11266,-0.0498 0.24308,-0.0702 0.37931,-0.0165 0.29117,0.0276 0.68913,0.0748 0.86971,-0.23874 0.30268,-0.33688 0.72999,0.11684 1.03198,-0.17725 0.082,-0.27859 0.31242,-0.40815 0.41085,-0.68988 0.33589,-0.752 0.92244,-0.0445 1.15649,-0.42471 0.35317,-0.13097 0.0367,-1.3743 -0.16174,-1.55863 0.0322,-0.0731 0.0626,-0.14742 0.0972,-0.21911 0.2109,0.004 0.28993,-0.14967 0.11834,-0.38292 -0.0568,-0.22605 0.26795,-0.75271 -0.0594,-0.80564 -0.2096,0.24628 -0.25599,0.65901 -0.5855,0.79892 -0.1397,-0.40155 -0.0145,-0.84498 0.51882,-1.33635 -0.1388,-0.15462 -0.33554,-0.2819 -0.49659,-0.40412 0.0188,-0.22271 0.0124,-0.44358 -0.0259,-0.65784 0.0824,-0.0552 0.18539,-0.11326 0.31938,-0.17621 0.92183,-0.47154 0.76655,-2.17729 0.97668,-2.50321 -0.36298,-0.32872 -0.97896,0.11256 -1.34101,-0.54364 -0.0805,0.02 -0.16005,0.0479 -0.23874,0.0796 0.0343,-0.20274 0.15489,-0.40552 0.40254,-0.60616 0.59163,-0.58956 0.17121,-0.9112 -0.34261,-0.92139 z", +2.2926, 5.13722, +"M 0.802274 -5.13667 c -0.15648,0.008 -0.31396,0.11235 -0.39378,0.36329 0.17158,0.46045 -0.71247,0.26413 -0.98288,0.53433 -0.18795,-0.0953 -0.37721,-0.18365 -0.56276,-0.25735 -0.30393,-0.35352 -0.57627,-0.46456 -0.78031,-0.41599 h -0.001 c -0.34007,0.0809 -0.48919,0.60594 -0.27337,1.19424 1.00303,1.38655 -0.11896,2.78412 0.99219,3.28301 0.18788,-0.0184 0.35102,-0.008 0.49866,0.0202 0.0272,0.0107 0.055,0.0168 0.0842,0.017 1.09791,0.28456 1.07577,1.83267 1.1281,2.82101 1.29392,0.57385 -0.73445,2.82023 1.25884,2.61276 0.17748,0.17897 0.47238,0.11556 0.51522,-0.14728 0.081,-1.48014 -0.80518,-2.85605 -0.76896,-4.31808 0.16182,-0.1731 0.22826,-0.33544 0.2403,-0.49299 0.17579,-0.13499 0.36803,-0.25536 0.53588,-0.29662 -0.45833,-0.34903 -0.47617,-0.81306 -0.45474,-1.07591 -1.13773,-0.23427 0.49343,-1.18353 -0.54364,-1.63607 0.26771,-0.66998 -1.19856,-0.90889 -0.31369,-1.41387 0.50499,-0.3651 0.16598,-0.81 -0.17827,-0.79168 z", +4.57828, 3.5071, +"M 2.91251 -3.50687 c -0.4486,0.0106 0.45675,0.54041 0.18913,0.76585 -0.86641,-0.29492 -1.26553,1.09463 -1.96578,0.93793 -0.86302,0.0543 -1.79475,0.32429 -2.49597,0.83405 -0.39846,-0.0495 -0.7705,-0.009 -1.1157,0.12454 -0.006,0.0507 0.007,0.10957 -0.003,0.15813 0.0966,0.98514 -1.0613,0.70185 -1.47535,0.23151 -0.37552,-0.57285 -1.03049,0.23261 -0.27905,0.28888 -0.31933,0.39262 0.19955,0.57156 0.46199,0.88831 -0.002,0.0106 -0.005,0.0172 -0.006,0.0284 0.0115,0.11487 0.0542,0.20711 0.11732,0.28474 0.007,0.52372 0.17613,1.06164 -0.0476,1.58079 -0.20304,0.31453 0.22357,0.4826 0.36896,0.71778 0.0533,0.0472 0.064,0.0964 0.0977,0.14521 h 5e-4 c 0.41788,0.12151 0.93829,-0.18412 1.42473,-0.3483 0.40148,-0.2801 0.80497,-0.61424 1.20716,-0.9126 0.50226,-0.12855 1.03791,-0.70742 1.45571,-0.97152 -0.39362,-0.88195 1.08802,-0.72117 1.19787,-1.3348 -0.12419,-0.6673 -0.7335,-1.91974 0.42995,-1.96474 0.86471,-0.32419 0.78534,1.59558 1.21698,0.39687 -0.25257,-0.73375 0.38536,-0.64026 0.82942,-0.33848 0.28241,-0.45436 -0.55153,-1.06703 -1.10898,-1.37252 v 5.1e-4 c -0.0792,-0.0443 -0.15266,-0.0811 -0.21706,-0.1111 -0.12671,-0.0221 -0.21858,-0.031 -0.28266,-0.0295 z", +3.74688, 2.41634, +"M 2.72883 -2.41634 -0.35677,0.016 c -0.33291,0.36885 -0.63684,0.43941 -0.88624,0.44063 -0.0292,-0.0173 -0.0593,-0.0354 -0.0868,-0.0506 v 3.3e-4 c -0.051,-0.0285 -0.0983,-0.0522 -0.13977,-0.0716 -0.0816,-0.0142 -0.14078,-0.02 -0.18205,-0.019 -0.10932,0.003 -0.0935,0.0532 -0.0413,0.1228 -0.0466,0.007 -0.0874,0.0211 -0.1198,0.0519 -0.0676,0.10644 -0.089,0.22694 -0.0958,0.35209 -0.32395,0.17106 -0.55217,0.6454 -0.88722,0.57042 -0.5558,0.035 -1.15583,0.20884 -1.6074,0.53712 -0.25661,-0.0319 -0.49621,-0.006 -0.7185,0.0802 -0.004,0.0326 0.005,0.0706 -0.002,0.10184 0.0622,0.63443 -0.68347,0.45199 -0.95012,0.14909 -0.24183,-0.36891 -0.66363,0.14979 -0.17971,0.18604 -0.20564,0.25284 0.12851,0.36808 0.29752,0.57207 -0.001,0.007 -0.003,0.0111 -0.004,0.0183 0.007,0.074 0.0349,0.13337 0.0755,0.18337 0.005,0.33727 0.1135,0.68368 -0.0306,1.01801 -0.13076,0.20256 0.14398,0.3108 0.23761,0.46226 0.0343,0.0304 0.0412,0.0621 0.0629,0.0935 h 3.2e-4 c 0.26912,0.0782 0.60427,-0.11857 0.91752,-0.2243 0.25856,-0.18038 0.5184,-0.39557 0.77741,-0.58771 0.32345,-0.0828 0.66843,-0.45558 0.93749,-0.62566 -0.18482,-0.41411 0.27077,-0.47225 0.55943,-0.62599 0.042,0.26188 -0.16431,0.57971 -0.0466,0.81602 -0.0361,0.3214 0.2697,0.38876 0.29186,0.65727 -0.0155,0.41805 0.31928,0.10309 0.49155,0.006 0.24347,0.16794 0.51027,0.0323 0.71949,-0.1644 0.15749,-0.44026 0.53019,-0.15638 0.81901,-0.0952 0.098,-0.20391 0.35342,-0.32496 0.4526,-0.4992 -0.0531,-0.28513 0.23897,-0.57539 0.41732,-0.72149 v -3.4e-4 c 0.3295,-0.64851 0.11566,-1.00699 -0.21897,-1.51055 l 0.28918,-0.44994 0.22499,-0.29984 c -0.18304,-0.14669 -0.3661,-0.12842 -0.54912,-0.0343 l -0.38038,0.11848 c 0.28124,-0.43579 0.14347,-0.51087 -0.0885,-0.57341 z", +1.5426, 3.75375, +"M -0.18215 -3.74938 c -0.43006,0.0954 -0.0238,1.66304 -0.29143,2.06565 -1.23283,0.67467 0.70648,1.73509 -0.66571,2.29879 -1.27771,1.27642 0.87232,1.5933 1.05811,1.42669 -1.72666,0.27299 0.54523,3.0984 0.51438,0.84809 0.0778,-1.31836 1.51452,-1.87061 0.99737,-3.31344 -0.0269,-1.19813 0.0509,-2.86032 -1.37276,-3.26853 -0.10038,-0.0537 -0.17819,-0.0707 -0.23966,-0.0572 z", +2.6102, 2.40582, +"M -2.60391 1.07532 1.21829,1.32714 c 0.11265,-0.0498 0.24287,-0.0704 0.37911,-0.0167 0.29115,0.0276 0.68939,0.0748 0.86997,-0.23871 0.30266,-0.33688 0.72982,0.11701 1.03183,-0.17708 0.082,-0.27859 0.31221,-0.40824 0.41064,-0.68997 0.0829,-0.35912 0.3014,-0.69002 0.49691,-1.00001 0.25988,-0.36573 0.40154,-0.79981 0.5954,-1.20228 0.21088,0.004 0.29,-0.14987 0.11841,-0.38313 -0.0568,-0.22605 0.26786,-0.75294 -0.0595,-0.80587 -0.21044,0.24728 -0.25622,0.66273 -0.58937,0.80098 -0.0881,0.24739 -0.32811,0.21877 -0.5183,0.099 -0.43381,-0.0984 -0.16894,-0.56282 -0.0503,-0.81595 -0.18037,-0.10226 -0.47473,0.10933 -0.66436,0.16038 0.14099,0.42689 -0.26992,0.60149 -0.59482,0.72943 -0.10138,0.24534 -0.36733,-0.0479 -0.17905,-0.12239 0.19862,-0.22162 0.39983,-0.47805 0.66131,-0.63217 0.23857,-0.24684 -0.1743,-0.27544 -0.34069,-0.2571 -0.28559,0.11508 -0.52696,7.5e-4 -0.74386,-0.19182 -0.1358,-0.11552 -0.22022,-0.0715 -0.27824,0.0899 -0.15588,0.0841 -0.36986,0.0793 -0.5395,0.17231 -0.23485,0.6226 -0.50305,1.23123 -0.78622,1.83325 -0.19645,0.25916 -0.14117,0.63063 -0.33965,0.83592 -0.11511,0.138 -0.11073,0.31194 -0.098,0.4849 z", +3.83978, 2.30066, +"M 1.89988 -2.28596 c -0.46473,-0.0533 -0.93451,0.0301 -1.2983,0.38777 -0.61395,-0.10651 -1.14946,0.60908 -1.8877,0.45323 -0.65836,-0.53157 -1.19607,0.74513 -1.84876,0.2517 -0.22541,0.36322 -0.81294,0.89409 -0.68754,1.46714 0.20541,0.12631 0.2374,0.23071 0.21384,0.31715 l 0.28852,0.42359 5.18412,1.28604 c -0.12156,-0.38789 0.57265,-0.65546 1.06815,-0.66503 0.3002,-0.42158 1.17579,-0.37128 0.82666,-1.04765 -0.64248,0.006 -0.4043,-0.75074 -0.0849,-0.96787 z", +2.48198, 2.67999, +"M -0.947181 2.42314 c 0.18893,-0.12837 0.39015,-0.1443 0.5237,0.25685 0.51028,-0.15853 1.30811,-0.11944 1.84667,-0.42769 1.22161,0.34616 0.47447,-1.31052 0.96133,-1.80427 0.18748,-0.84884 0.0458,-1.7551 0.0512,-2.62474 0.0372,-1.37538 -0.84814,0.48939 -1.39027,0.62596 -0.40821,-0.37552 -0.93592,-0.18917 -0.97385,0.41022 0.25116,0.45758 -0.477,1.20377 -0.55234,0.49252 -0.7022,-1.14958 -1.22788,0.77102 -1.93025,0.87284 -0.42731,0.88954 1.20329,1.9184 1.46381,2.19831 z", +4.26056, 3.08976, +"M -2.80517 -3.08919 c -0.26757,0.53645 -1.24706,-0.0831 -1.33583,0.28009 0.54354,0.28297 0.25361,0.49804 -0.0894,0.49764 -0.15417,0.30689 0.31539,0.50952 0.66921,0.73174 -0.43301,0.39009 -0.69014,0.69733 -0.58912,0.83612 0.13288,0.3976 0.66614,0.90708 0.14624,0.88781 -0.3356,0.1386 0.28826,0.9763 0.62944,1.30069 0.0448,-0.0159 0.0277,0.18537 0.2382,0.28009 0.59182,-0.12048 0.63855,0.74505 1.24386,0.67799 0.29986,0.0447 0.27308,0.39182 0.33383,0.68678 0.2408,-0.23569 0.71932,-0.51227 0.5607,-0.89607 0.24093,-0.31002 0.88424,-0.0359 0.83043,-0.6966 0.27241,-0.35349 0.87897,-0.0301 1.26195,-0.22117 0.25652,0.75949 1.11287,0.11487 0.97616,-0.46044 0.16131,-0.52891 0.74101,-0.64995 0.6723,-0.0481 0.77777,0.57404 1.08543,-0.60114 0.85577,-1.1653 -0.30509,-0.30498 -0.47604,-0.87464 0.16433,-0.83974 0.20368,0.0876 0.36298,0.0215 0.49766,-0.10077 -0.0896,-0.39051 -1.13962,0.24844 -1.35134,-0.41238 -0.39409,-0.50595 -0.71183,-0.003 -0.74157,0.42736 -0.27477,0.54361 -1.36311,1.08291 -1.44074,0.11938 0.49909,-0.34336 0.0274,-0.70102 -0.47749,-0.47543 -0.34422,0.48082 -1.39303,0.25803 -0.98856,-0.43408 -0.39558,-0.16344 -0.54981,-0.83329 -0.99528,-0.80667 -0.46308,0.47435 -0.67871,-0.19078 -1.07075,-0.16898 z", +2.85227, 3.44376, +"M 2.39399 0.825598 c 0.51165,-1.00701 0.17934,-1.56385 -0.34027,-2.34578 l 0.44899,-0.69865 0.34956,-0.46536 c -0.28419,-0.22778 -0.56839,-0.19965 -0.85258,-0.0535 l -0.59069,0.18407 c 0.43669,-0.6767 0.22244,-0.79303 -0.13779,-0.89014 l -0.55392,0.0248 c -1.05242,1.16603 -1.92058,0.41374 -2.26059,0.73685 -0.31726,0.4997 -0.002,1.19184 -0.27419,1.71558 -0.0601,0.59507 -1.33712,0.72874 -0.96788,1.37654 0.68403,0.42661 -0.0301,1.17727 0.22283,1.68512 -0.056,0.49908 0.41904,0.60361 0.45347,1.02055 -0.0241,0.64915 0.49545,0.16052 0.76293,0.009 0.37808,0.26076 0.79269,0.0499 1.11759,-0.25546 0.24455,-0.68364 0.82318,-0.24258 1.27166,-0.14754 0.15219,-0.31662 0.54842,-0.50454 0.70243,-0.77509 -0.0825,-0.44275 0.37149,-0.89378 0.64845,-1.12065 z", +3.408, 3.57197, +"M 2.62753 -3.57195 c -0.64407,0.7879 -0.64716,1.84506 -1.20222,2.58759 -1.34442,-0.27745 -1.52748,0.69891 -1.31733,1.75739 -0.78212,0.16845 -1.74702,0.16312 -2.57312,0.0427 -0.21732,0.51378 -0.40761,0.43217 -0.59858,0.21424 -1.0749,0.8342 0.63602,1.73677 1.46282,2.1222 1.23346,0.6503 2.55782,-0.35092 3.77246,0.4198 0.2868,-0.0617 0.92584,0.13183 0.99013,-0.27867 -0.83826,-0.73953 -2.26236,-1.79647 -1.23986,-3.02911 0.18907,-1.17518 1.78492,-1.4423 1.271,-2.84888 0.10716,-0.40834 0.32162,-0.44801 0.15222,-0.57722 -0.14475,-0.11041 -0.6654,-0.33083 -0.71752,-0.41005 z", +2.16401, 4.29525, +"M 1.65199 -3.9757 c -0.1751,0.027 -0.38331,0.16713 -0.56662,0.42127 -0.73687,-0.0649 -1.46581,0.13196 -1.66725,0.13706 -0.67315,0.017 -0.52923,1.98326 -0.49599,2.6279 0.0831,0.52678 0.10231,-0.0945 -0.0368,0.38051 -0.25456,0.86925 -0.82603,2.79733 -0.99814,3.68266 -0.0219,0.0245 -0.0307,0.0543 -0.0512,0.0793 0.26405,0.40175 0.43883,0.65708 0.62561,0.94225 1.81312,-0.12134 0.99017,-2.46123 1.53551,-3.61943 0.3032,-0.62038 1.0801,-1.84071 1.08397,-2.40264 0.005,-0.76342 0.83708,-0.66154 0.9192,-1.45341 0.14595,-0.57315 0.28406,-1.1579 -0.008,-1.11255 z", +2.42152, 3.19498, +"M 1.79275 3.19496 c 0.0358,-0.35442 0.0143,-0.94751 0.14977,-1.20163 0.29216,-0.54826 0.76509,-0.61761 0.24914,-1.04756 l -0.46191,-0.29639 c -0.0199,-0.009 -0.0339,-0.008 -0.0548,-0.0191 0.008,-0.67733 -0.40627,-1.15393 -0.87696,-1.61178 -0.0135,-0.57623 -0.52506,-0.68936 -0.93404,-0.86224 -0.3143,-0.11364 -0.30235,-0.2211 -0.26928,-0.50192 0.001,-0.35694 -0.19325,-0.6476 -0.63636,-0.70807 -0.52435,-0.42985 -0.56303,0.22718 -0.74414,0.56327 0.27001,0.2644 0.29136,0.75233 -0.0961,1.0294 -0.41132,0.0707 -0.85183,1.03036 -0.23048,1.04386 0.0806,0.4722 0.45958,1.10992 0.004,1.55133 -0.1628,0.45669 0.19683,1.40675 0.90123,1.35186 0.45163,-0.12672 0.99602,0.14704 1.99196,-0.16774 0.14912,0.4712 0.54383,0.84975 1.00786,0.87673 z", +2.60961, 2.6311, +"M 2.50705 -1.19561 -0.25339,-0.1347 c -0.4738,-0.41913 -0.99447,-0.94138 -1.21945,-0.8131 l -0.73175,0.24406 c -0.40381,-0.23794 -0.62439,-0.0636 -1.21942,-0.73175 -0.45864,0.0258 -0.91727,0.38107 -1.37591,0.59171 -0.0117,0.11781 -0.0183,0.23633 -0.0649,0.35298 -0.27654,0.35904 -0.46239,0.91911 0.20227,0.9358 0.65658,0.0504 0.51399,0.93494 0.66863,1.40794 0.23986,0.54801 -0.23986,1.16298 0.21828,1.63643 0.33587,0.31601 0.77101,0.40448 1.22387,0.28852 -0.1503,-0.46126 0.39437,-0.91344 0.91269,-0.91403 0.76165,0.0123 1.04546,-0.73144 1.04116,-1.36969 -0.0925,-0.60988 1.09071,-0.27154 0.56549,-0.77799 -0.0175,-0.24875 0.0184,-0.48273 0.0324,-0.71618 z", +2.91238, 3.10557, +"M -2.9122 1.73814 c 0.28378,0.47289 1.03118,0.63668 1.62475,0.90306 1.10867,0.1542 2.37832,0.14746 3.32429,0.46437 0.29646,-0.1176 0.26342,-0.96007 0.29166,-1.66776 l 0.0964,-0.71277 c 0.0983,-0.21454 0.10887,-0.66087 0.22079,-0.8799 0.101,-0.19778 0.31208,-0.17115 0.25795,-0.31721 -0.37435,-0.55516 -0.83678,-0.93415 -1.38048,-1.15063 -0.0489,0.0422 -0.0876,0.10835 -0.13886,0.14474 -0.75872,0.99895 -1.59127,-0.26181 -1.57102,-1.05567 0.14438,-0.85593 -1.15818,-0.67142 -0.50818,0.0282 -0.74639,0.10568 -0.15692,0.9358 -0.38769,1.48657 -0.51224,0.50199 -0.80922,1.23824 -1.51997,1.55271 -0.45966,0.11748 -0.20829,0.6411 -0.27572,0.98493 0.009,0.0899 -0.0234,0.14503 -0.0341,0.21939 z", +3.04347, 2.84609, +"M 0.490388 -2.84481 c -0.17818,-0.0381 -0.59112,0.79085 -0.87113,0.86987 -0.28109,-0.28971 -0.64432,-0.14548 -0.67045,0.31688 0.17296,0.35303 -0.32861,0.92862 -0.38047,0.37989 -0.4836,-0.88691 -0.84563,0.59496 -1.32932,0.67352 -0.34102,0.46556 0.0163,0.50226 0.25082,0.78429 -0.88963,0.69447 -0.64769,1.26964 0.58717,1.61261 0.64827,-0.33916 1.89403,-1.4075 1.52897,0.052 0.13212,0.76935 0.98486,1.48997 1.55068,0.56922 -0.30948,-1.21831 1.0167,-2.14737 1.88681,-2.26869 -0.414,-0.6498 -0.0862,-1.85279 -0.94851,-2.09149 -0.29062,-0.0875 -1.51076,0.0901 -1.51829,-0.51083 0.006,-0.26528 -0.0269,-0.37452 -0.0863,-0.38722 z", +2.60354, 3.87863, +"M -2.58741 2.42622 5e-5,-5.1e-4 c 0.0545,-0.28255 0.24695,-0.66339 0.55812,-1.04225 0.58545,-0.71275 0.69899,-1.23193 0.40168,-1.83633 -0.12573,-0.25554 -0.10279,-0.32366 0.0655,-0.19436 0.14242,0.10941 0.35573,0.007 0.47396,-0.22648 0.13004,-0.25726 0.0644,-0.53105 -0.16725,-0.69336 -0.61079,-0.42848 -0.34025,-1.8077 0.39236,-1.99985 0.39389,-0.1033 0.67136,-0.0486 0.77194,0.15245 0.10567,0.21111 0.29186,0.16355 0.57011,-0.14555 0.38478,-0.42741 0.42246,-0.42673 0.54193,0.0137 0.0706,0.26033 0.052,0.57305 -0.0418,0.69491 -0.0936,0.12183 0.004,0.1741 0.21775,0.11617 0.29389,-0.0797 0.38668,0.21619 0.38089,1.21691 -0.004,0.7281 0.16873,1.53845 0.38543,1.80433 0.21632,0.26545 0.31499,0.58433 0.21915,0.70905 -0.0958,0.12468 -0.0624,0.2383 0.074,0.2522 0.13645,0.0139 0.2856,0.26879 0.33189,0.56623 0.0463,0.29751 -0.0165,0.46361 -0.13944,0.36914 -0.12297,-0.0945 -0.23633,-0.046 -0.25195,0.10731 -0.0156,0.15332 -0.25555,0.25548 -0.53324,0.22719 -0.90574,-0.0923 -1.36908,0.17162 -1.43488,0.81735 -0.0549,0.53905 -0.17952,0.61343 -0.83029,0.49663 -0.42102,-0.0756 -0.70687,-0.21398 -0.63513,-0.3073 0.15929,-0.20731 -0.61961,-0.67165 -1.08123,-0.6447 -0.24076,0.0141 -0.3242,-0.17035 -0.26966,-0.4529 z", +3.89459, 2.76207, +"M 2.11989 -2.76207 h 1.36873 l -0.35549,1.28958 c -0.29269,1.05994 -0.25675,1.36166 0.20266,1.6976 0.30734,0.22472 0.5588,0.76635 0.5588,1.20359 0,0.73869 -0.10906,0.78002 -1.53862,0.58406 -1.12744,-0.15454 -1.65256,-0.0734 -1.96439,0.30227 -0.42093,0.50722 -1.08901,0.5684 -2.78519,0.25655 -1.43006,-0.26295 -1.74284,-0.69806 -1.33735,-1.86135 0.19689,-0.56461 0.55188,-1.02688 0.78878,-1.02688 0.23697,0 0.64286,-0.3974 0.90268,-0.88292 0.48391,-0.90417 1.76118,-1.45844 2.42085,-1.05075 0.20303,0.12556 0.36914,0.0615 0.36914,-0.14193 0,-0.20347 0.61632,-0.36982 1.3694,-0.36982 z", +2.94033, 4.04841, +"M 0.955924 -4.04819 c 0.27815,0.007 0.71396,0.18533 1.21285,0.53472 0.89248,0.62514 1.02887,1.65306 0.31401,2.36795 -0.76145,0.76144 -1.35601,2.05174 -1.12098,2.432 0.1187,0.19201 0.0454,0.34882 -0.16219,0.34882 -0.20765,0 -0.37588,0.28073 -0.37181,0.62384 0.004,0.53339 0.0558,0.54652 0.35298,0.0891 0.26617,-0.40941 0.32982,-0.30503 0.27295,0.4456 -0.0609,0.80483 -0.24384,0.98032 -1.02141,0.98032 -0.52094,0 -1.4289,0.0959 -2.01772,0.21375 -0.62778,0.12557 -1.17184,0.0511 -1.31523,-0.18103 -0.13461,-0.2177 0.0843,-0.81432 0.48665,-1.32566 0.40219,-0.51129 0.6373,-1.08236 0.52222,-1.26856 -0.11506,-0.18621 0.0922,-0.41733 0.46092,-0.51383 0.46375,-0.12126 0.65661,-0.47079 0.62453,-1.1342 -0.0293,-0.6002 0.27891,-1.26441 0.82367,-1.77476 0.4875,-0.45671 0.78245,-1.04493 0.67046,-1.33678 -0.13082,-0.34108 -0.0108,-0.50804 0.2681,-0.5013 z", +2.50487, 5.03272, +"M -2.16669 -3.17022 1.86046,-0.51083 c 1.02338,-0.28104 1.94395,-0.73695 2.04586,-1.01295 0.10187,-0.27602 0.34634,-0.41088 0.54358,-0.29979 0.19726,0.11107 0.27852,0.40249 0.17931,0.64757 -0.0993,0.24506 -0.39051,1.29581 -0.64811,2.33521 -0.319,1.28729 -0.645,1.9083 -1.02188,1.94754 -0.38441,0.0401 -0.38656,0.0854 -0.007,0.14812 0.29981,0.0496 0.43437,0.35011 0.29918,0.66799 -0.23474,0.55145 -0.25461,0.55221 -0.43484,0.0127 -0.12461,-0.37299 -0.49795,0.24186 -1.09772,1.80788 -0.49978,1.30521 -1.09181,2.41091 -1.31488,2.45715 -0.22322,0.0463 -0.0643,-0.59646 0.35215,-1.4284 0.47376,-0.94633 0.58524,-1.53429 0.29799,-1.5706 -0.9072,-0.11464 -1.60579,-1.99425 -1.33221,-3.5826 z", +4.0742, 4.47677, +"M -1.73269 -4.47592 v 5.3e-4 c -0.11923,-0.0214 -0.34907,0.20596 -0.62117,0.66663 -0.42148,0.71353 -0.27757,1.66663 0.30591,2.02726 0.18712,0.11561 0.15346,0.28882 -0.11213,0.5824 -0.75139,0.83028 -2.02901,3.17126 -1.90582,3.49229 0.21982,0.57286 0.9162,0.20501 1.12292,-0.59273 0.10928,-0.42187 0.30009,-0.76688 0.42323,-0.76688 0.46329,0 0.96755,1.15024 0.89659,2.04432 -0.0619,0.78083 -0.006,0.90333 0.4005,0.88005 0.25974,-0.0148 0.64453,-0.10023 0.85474,-0.19017 0.26972,-0.11518 0.42074,-0.0149 0.51416,0.34262 0.22016,0.8419 0.94316,0.48133 1.16377,-0.58033 0.10563,-0.50859 0.28131,-1.03924 0.39066,-1.17926 0.10925,-0.14 0.27067,-0.55414 0.35812,-0.91984 0.11033,-0.4615 0.40817,-0.76905 0.97308,-1.0051 0.52028,-0.21739 0.86677,-0.55204 0.96118,-0.92811 0.23675,-0.94326 -0.0311,-1.2976 -0.98084,-1.2976 -0.49064,0 -1.15258,-0.21143 -1.55027,-0.49454 -0.69181,-0.49257 -0.89485,-0.48303 -1.68363,0.0796 -0.35702,0.25464 -0.49911,0.1962 -1.0015,-0.41186 -0.38391,-0.46468 -0.54345,-0.8907 -0.46455,-1.2392 0.0738,-0.32572 0.0477,-0.49342 -0.045,-0.51005 z", +4.05861, 3.1259, +"M 1.4673 -3.12553 c 0.2083,-0.0104 0.30102,0.19858 0.4976,0.72986 l 0.28366,0.76589 0.85394,-0.10578 c 0.75247,-0.0929 0.83822,-0.0672 0.72384,0.2093 -0.0771,0.18457 -0.0519,0.26844 0.0579,0.20316 0.12017,-0.07 0.17818,0.0104 0.17417,0.18171 v -7.9e-4 c 0,0.17241 -0.0697,0.43828 -0.19554,0.74443 -0.13945,0.33975 -0.31333,0.45866 -0.61256,0.41861 -0.29078,-0.0393 -0.443,0.0567 -0.49759,0.31661 -0.043,0.20532 -0.16706,0.68434 -0.27521,1.06489 l -0.19702,0.6923 -1.07262,-0.0537 c -1.68416,-0.0835 -2.45547,0.0134 -2.35518,0.29672 0.0623,0.17504 -0.11423,0.24332 -0.61168,0.22847 -0.63289,-0.0166 -0.67621,0.0119 -0.45086,0.30435 0.21928,0.2847 0.20904,0.30719 -0.0905,0.18553 -0.18708,-0.0764 -0.48128,-0.1495 -0.65307,-0.1495 -0.27046,-0.0104 -0.27432,-0.0337 -0.0267,-0.18475 0.25384,-0.15875 0.17922,-0.25993 -0.10237,-0.14406 -0.0593,0.0242 -0.19242,-0.11646 -0.29508,-0.31204 -0.13945,-0.26497 -0.12017,-0.39565 0.0742,-0.51137 0.20429,-0.12255 0.18916,-0.15151 -0.0682,-0.16636 -0.22417,-0.007 -0.32431,-0.16022 -0.31586,-0.48071 0,-0.25783 0.0979,-0.46381 0.20014,-0.46381 0.10385,0.003 0.18975,-0.0786 0.19242,-0.18248 0,-0.10355 -0.13204,-0.19547 -0.29983,-0.19547 -0.24183,-0.006 -0.25607,-0.0623 -0.0757,-0.26911 0.17714,-0.20219 0.17032,-0.29634 -0.0282,-0.42243 -0.48024,-0.30624 -0.47979,-0.7686 0,-1.16533 0.25591,-0.21095 0.46895,-0.51184 0.47296,-0.66929 0,-0.20785 0.12759,-0.25156 0.45234,-0.16253 0.24509,0.0682 0.50427,0.0347 0.57652,-0.0751 0.0727,-0.11053 0.38795,-0.19961 0.70232,-0.18477 0.42357,0.0104 0.54225,0.0849 0.45917,0.2852 -0.0905,0.21809 -0.0208,0.23926 0.36348,0.1043 0.35042,-0.12269 0.43854,-0.10875 0.33425,0.0499 -0.0994,0.15132 -0.0326,0.17466 0.22238,0.0782 0.1994,-0.0751 0.63898,-0.20767 0.97664,-0.2967 0.74565,-0.19402 0.8271,-0.41151 0.10089,-0.2691 l -0.51896,0.10192 0.47608,-0.26372 c 0.25518,-0.1408 0.42148,-0.2323 0.54655,-0.2323 z", +4.06584, 3.46902, +"M 0.0899704 -3.46718 c -0.17768,-0.01 -0.28056,0.0213 -0.24431,0.083 0.0487,0.0831 -0.11034,0.13842 -0.35322,0.13842 -0.4581,-0.0115 -0.94486,0.37267 -0.74196,0.58647 0.0645,0.0674 0.0315,0.11778 -0.0731,0.11778 -0.1046,-0.003 -0.23714,0.15712 -0.29461,0.35544 -0.0745,0.25648 -0.19559,0.32418 -0.41912,0.23103 -0.25478,-0.1056 -0.29634,-0.0555 -0.22139,0.26509 0.0588,0.25046 0.0143,0.3895 -0.1347,0.3895 -0.12466,-0.003 -0.36123,0.13641 -0.52717,0.30953 -0.27842,0.29188 -0.27469,0.33282 0.0487,0.54646 0.19201,0.1271 0.34547,0.35797 0.34132,0.51242 0,0.15476 0.076,0.23203 0.17696,0.17327 0.10175,-0.059 0.18084,0.0149 0.17697,0.16438 0,0.14962 -0.0946,0.32273 -0.19989,0.38431 -0.13183,0.0768 -0.12753,0.19543 0.0143,0.37395 0.32527,0.41241 -0.0745,0.29467 -0.72864,-0.21473 -0.71245,-0.55498 -1.05936,-0.39598 -0.95892,0.43985 0.0416,0.33988 0.12324,0.48366 0.20807,0.35468 0.0888,-0.13655 0.20691,-0.004 0.32584,0.36877 0.10174,0.32039 0.28573,0.55263 0.40724,0.51536 0.34705,-0.10575 0.38459,-0.42635 0.0874,-0.73974 -0.43074,-0.4534 -0.31081,-0.73099 0.15547,-0.35986 0.25348,0.20188 0.38044,0.45716 0.32427,0.65161 -0.0502,0.17568 2.9e-4,0.32435 0.12036,0.32433 0.1175,0.003 0.16537,-0.076 0.10747,-0.17623 -0.0602,-0.1046 0.0143,-0.13327 0.17182,-0.0674 0.15345,0.0636 0.28113,0.0207 0.28428,-0.0956 0,-0.12179 0.0774,-0.1647 0.16508,-0.10732 0.0874,0.058 0.79011,0.13068 1.5603,0.16217 0.87538,0.0363 1.30439,0.11506 1.14548,0.20955 -0.1943,0.1165 -0.16808,0.15227 0.1089,0.1666 0.29763,0.0129 0.31238,0.0459 0.086,0.1792 -0.19932,0.1188 -0.22081,0.21924 -0.0803,0.36729 0.0602,0.0639 0.31711,0.0949 0.49235,0.14587 -0.0258,-0.0297 -0.0559,-0.0606 -0.0545,-0.13326 0,-0.1003 0.0903,-0.17623 0.19631,-0.17623 0.0788,0.003 0.1175,0.0486 0.1046,0.11334 0,0.0217 -0.0143,0.0455 -0.0301,0.0703 -0.0516,0.0791 -0.11177,0.12094 -0.1592,0.14286 0.55597,0.14794 1.3051,0.23898 1.40841,0.0807 0.0602,-0.0917 0.0272,-0.21988 -0.0731,-0.28583 -0.33674,-0.22037 0.1784,-0.8133 0.69525,-0.79898 0.23472,0.006 0.34648,-0.01 0.35695,-0.0652 v 0 c 0,-0.0331 -0.0229,-0.0801 -0.0846,-0.14512 -0.11607,-0.12266 -0.20835,-0.36821 -0.20362,-0.54575 0,-0.19462 -0.17309,-0.37354 -0.4495,-0.45093 -0.25205,-0.0703 -0.41684,-0.16677 -0.36583,-0.21549 0.0516,-0.0483 -0.0229,-0.21043 -0.16507,-0.35988 -0.14186,-0.14945 -0.21293,-0.34046 -0.15848,-0.42356 0.0545,-0.0832 0,-0.21354 -0.11033,-0.28804 -0.14187,-0.0937 -0.16236,-0.0546 -0.0616,0.12222 0.12466,0.22596 0.10173,0.22495 -0.16135,0 -0.24246,-0.20762 -0.25721,-0.29549 -0.0702,-0.40726 0.21766,-0.12996 0.0803,-0.22733 -0.2585,-0.1829 -0.0745,0.01 -0.13327,-0.10374 -0.1304,-0.25324 0,-0.15017 -0.0702,-0.27694 -0.16593,-0.27694 -0.0946,-0.003 -0.37127,-0.21307 -0.61386,-0.46872 -0.2426,-0.2556 -0.39377,-0.46206 -0.33617,-0.46206 0.0573,0.002 0.0143,-0.11506 -0.1003,-0.25843 -0.14042,-0.17871 -0.1443,-0.29802 -0.0143,-0.37395 0.37657,-0.21937 0.1976,-0.59398 -0.32656,-0.68568 -0.0731,-0.01 -0.14043,-0.0222 -0.19918,-0.0236 z", +3.04742, 4.1149, +"M 0.969015 -4.11451 c -0.1123,0.003 -0.4062,0.23381 -0.6532,0.51211 -0.247,0.27833 -0.4917,0.4659 -0.5436,0.41704 -0.052,-0.0489 -0.092,-0.0185 -0.089,0.0677 0,0.0862 -0.1232,0.13629 -0.2795,0.11111 -0.1564,-0.0252 -0.2829,0.0298 -0.2812,0.12247 0,0.10163 -0.054,0.0859 -0.141,-0.0393 -0.1244,-0.18039 -0.1424,-0.17678 -0.1385,0.0248 0,0.12772 -0.089,0.27161 -0.2042,0.31987 -0.1152,0.0483 -0.2111,0.0261 -0.2134,-0.0491 0,-0.0753 -0.1476,-0.13195 -0.3225,-0.12505 -0.2601,0.009 -0.2789,0.0366 -0.1017,0.14882 0.1624,0.10279 0.1233,0.11844 -0.1572,0.0625 -0.3368,-0.0673 -0.3789,-0.0286 -0.4299,0.39739 -0.081,0.67937 0.181,2.0534 0.4382,2.29547 0.2153,0.2027 0.2296,0.52597 0.052,1.16531 -0.07,0.25284 -0.1989,0.3266 -0.6031,0.34623 -0.4968,0.0241 -0.4903,0.0295 0.199,0.1819 1.3697,0.30279 2.4788,0.44216 2.7978,0.35191 0.1769,-0.05 0.674,-0.0115 1.1048,0.0858 l 0.7829,0.17673 -0.011,0.54881 c -0.051,2.51094 0.8952,0.2636 0.8723,-1.92856 h -5e-4 l -0.017,-1.60197 -0.6072,0.0429 c -0.3341,0.0235 -0.6756,0.0384 -0.7586,0.0336 -0.1011,-0.006 -0.1467,-0.54478 -0.138,-1.63452 0.013,-1.66481 -0.091,-2.04807 -0.5566,-2.03399 z", +5.34994, 2.90409, +"M 0.205271 -2.88963 c -0.13829,-0.0359 -0.26164,-0.004 -0.39597,0.0846 -0.4055,0.27123 -0.57988,1.88599 -0.20283,1.87455 0.14783,-0.004 0.19695,0.23609 0.12558,0.61444 -0.22207,1.18362 -0.24909,1.20421 -0.83216,0.65553 -1.004,-0.9451 -2.68326,-0.94665 -3.80823,-0.007 -0.588,0.49193 -0.58959,1.01822 0,1.10322 0.48466,0.0703 2.31733,0.0446 3.47298,-0.0477 1.30444,-0.10428 2.47502,0.0916 2.48901,0.41565 0.0207,0.47846 0.40456,0.83765 0.9455,0.88472 0.2971,0.0257 1.17457,0.10237 1.94935,0.17084 0.97395,0.0862 1.40585,0.0494 1.4014,-0.1208 v -7.4e-4 c 0,-0.13544 -0.24559,-0.23879 -0.53554,-0.23 -0.51615,0.0159 -0.52728,-0.021 -0.47228,-1.65113 l 0.0572,-1.66673 -0.87063,0.0172 c -1.71646,0.0362 -1.88385,-0.0251 -1.9042,-0.69824 -0.0159,-0.34413 -0.10173,-0.62322 -0.20124,-0.6202 -0.10015,0.003 -0.42332,-0.20574 -0.71803,-0.46412 -0.20188,-0.17696 -0.35766,-0.27952 -0.49691,-0.31544 z", +4.12566, 4.16038, +"M -4.12566 1.26026 c 0.3983,1.33704 0.5968,1.95916 0.8005,2.60191 0.1973,-0.15081 0.2728,-0.16272 0.4356,0.0408 0.1118,0.13999 0.2564,0.25733 0.3214,0.25733 0.2494,0.007 0.5568,-0.47474 0.585,-0.91673 0.016,-0.25389 0.1112,-0.52612 0.2113,-0.60513 0.1002,-0.0788 0.3032,-0.36546 0.4507,-0.63717 0.2314,-0.41949 0.2393,-0.48358 0.058,-0.41963 -0.11549,0.041 -0.176,0.0232 -0.1349,-0.0398 0.041,-0.063 0.2731,-0.0781 0.51471,-0.032 0.37159,0.0703 0.50419,0.0242 0.85939,-0.29872 0.2311,-0.2101 0.5599,-0.49394 0.7307,-0.63045 0.1707,-0.13658 0.2623,-0.25061 0.2036,-0.25061 -0.059,-0.002 0.01,-0.0802 0.14211,-0.17517 0.13679,-0.0944 0.2916,-0.14405 0.34419,-0.10907 0.053,0.034 0.2139,0.0285 0.3576,-0.0134 0.211,-0.0609 0.24771,-0.14503 0.1917,-0.43562 -0.059,-0.30721 0.028,-0.46208 0.5891,-1.05009 0.3622,-0.37938 0.6599,-0.741607 0.6615,-0.804607 0,-0.063 0.043,-0.21795 0.092,-0.34417 0.072,-0.18478 0.016,-0.16969 -0.2863,0.077 l -0.3762,0.30645 0.3152,-0.33952 c 0.1734,-0.18614 0.3417,-0.31097 0.3746,-0.27596 0.033,0.035 0.1383,0.002 0.2336,-0.0729 0.2257,-0.1773 0.2371,-0.4254 0.013,-0.28317 -0.092,0.0587 -0.077,0.0236 0.034,-0.078 0.11061,-0.10141 0.2745,-0.33917 0.3649,-0.52813 l 0.16431,-0.34367 -0.6878,-0.0176 c -0.57011,-0.0152 -0.7141,0.0264 -0.8377,0.24342 -0.082,0.14406 -0.1236,0.37092 -0.093,0.50382 0.036,0.15298 -0.01,0.2372 -0.1214,0.2372 -0.2107,-0.006 -0.2346,0.14356 -0.053,0.33435 0.071,0.0753 0.1477,0.31057 0.169,0.52298 0.045,0.453997 -0.308,0.827227 -0.7953,0.840237 -0.1728,0.005 -0.3814,0.0724 -0.4636,0.15039 -0.2358,0.22381 -0.5701,0.15658 -0.8759,-0.17674 -0.2915,-0.31779 -0.8445,-0.54271 -0.8495,-0.3457 0,0.0616 -0.2271,0.21883 -0.5003,0.34932 -0.5806,0.27771 -0.6869,0.47366 -0.6015,1.1152 0.075,0.56536 0.01,0.62764 -1.1157,1.05936 -0.4885,0.18751 -0.9565,0.38981 -1.4252,0.58394 z", +3.86911, 4.42196, +"M -3.86911 -0.871814 1.5374,2.2846 c 0.2008,-0.0776 0.3166,-0.10729 0.602,-0.2408 0.5019,-0.2349 0.9751,-0.3859 1.0516,-0.33592 0.082,0.0531 0.1067,0.2639 0.061,0.50541 -0.056,0.29721 -0.026,0.43696 0.1075,0.49197 0.1027,0.0425 0.1471,0.13787 0.098,0.21188 -0.061,0.093 -0.015,0.0986 0.1499,0.0196 0.3172,-0.15314 1.3733,-0.36761 1.7591,-0.35761 0.1701,0.005 0.4193,0.13343 0.5544,0.28628 0.1977,0.2236 0.2285,0.38401 0.1566,0.82322 -0.071,0.43418 -0.048,0.56343 0.1142,0.63045 0.1121,0.0465 0.1708,0.13486 0.1308,0.19584 -0.04,0.0607 0.016,0.11679 0.124,0.11679 0.1083,0.003 0.1966,0.0477 0.1953,0.0998 0,0.12689 0.7177,0.55224 0.9426,0.56224 0.1639,0.004 0.1918,-0.43416 0.1075,-1.68103 0,-0.057 -0.064,-0.0689 -0.1354,-0.0279 -0.071,0.0416 -0.1333,0.0151 -0.1406,-0.0589 -0.01,-0.0739 -0.025,-0.1915 -0.04,-0.26148 -0.016,-0.07 -0.034,-0.18423 -0.041,-0.25424 -0.01,-0.0699 -0.1177,-0.1328 -0.2459,-0.1328 -0.5387,-0.0141 -0.9,-1.15501 -0.4197,-1.325 0.3033,-0.1074 0.1118,-0.30189 -0.2402,-0.2439 -0.2282,0.0375 -0.3614,-0.0331 -0.5065,-0.26768 -0.2727,-0.44103 -0.3275,-0.86317 -0.1121,-0.8532 0.096,0.002 0.2993,-0.16322 0.4532,-0.36793 0.1542,-0.2046 0.2449,-0.37412 0.2015,-0.37412 -0.044,-0.001 0.084,-0.13883 0.2837,-0.30541 0.069,-0.0573 0.084,-0.0527 0.1308,-0.0884 -0.2037,-0.64275 -0.4022,-1.26486 -0.8005,-2.60191 -0.3301,0.13674 -0.6584,0.26051 -1.0041,0.41082 -0.2463,0.1071 -0.4953,0.2654 -0.5529,0.35139 -0.058,0.0861 -0.1658,0.15298 -0.2403,0.15298 -0.082,-0.002 -0.064,-0.0868 0.043,-0.2124 0.1554,-0.18108 0.1516,-0.19894 -0.029,-0.13693 -0.1142,0.039 -0.26049,0.0158 -0.325,-0.0522 -0.1486,-0.15661 -0.8354,0.43305 -1.0434,0.89556 -0.115,0.25451 -0.1159,0.351 0,0.40101 0.083,0.037 0.048,0.0698 -0.077,0.0698 -0.232,0.004 -0.2745,0.0305 -0.9012,0.55758 -0.19939,0.16759 -0.4385,0.30075 -0.5318,0.30075 -0.093,-0.002 -0.2048,0.0796 -0.24749,0.18293 -0.043,0.10311 -0.20891,0.18034 -0.36951,0.18034 -0.16049,-0.004 -0.3865,0.0966 -0.50179,0.22429 -0.09,0.0994 -0.2028,0.17031 -0.29871,0.22429 z", +5.21206, 3.61562, +"M 5.21167 3.31641 -2.87571,-2.99268 c -0.10415,0.0389 -0.20387,0.0802 -0.36033,0.0775 -0.39269,-0.007 -0.9471,0.19838 -1.34636,0.49674 -0.14729,-0.0882 -0.27752,-0.24828 -0.39406,-0.40426 0.0978,-0.0826 0.13979,-0.19254 0.0398,-0.3869 -0.11869,0.002 -0.19394,-0.0372 -0.23982,-0.0956 0.0252,-0.0258 0.0176,-0.0405 -0.0283,-0.0478 -0.013,-0.0295 -0.0214,-0.0615 -0.0245,-0.096 0.13076,-0.0385 0.17321,-0.0758 0.0928,-0.0834 -0.026,-0.002 -0.0566,-0.0159 -0.0886,-0.0336 0.0543,-0.31133 0.38549,-0.64795 0.53791,-0.19087 0.30229,-0.0939 0.77511,-0.0703 1.09423,-0.25331 0.7238,0.2051 0.28056,-0.77685 0.56901,-1.06934 0.11112,-0.50295 0.0275,-1.03897 0.0306,-1.55424 0.0222,-0.81487 -0.50294,0.28945 -0.82428,0.37028 -0.24188,-0.2226 -0.5545,-0.11178 -0.57697,0.24343 0.14866,0.27116 -0.28257,0.71309 -0.32723,0.29163 -0.41601,-0.68112 -0.72709,0.45649 -1.14325,0.5169 -0.44399,-0.24164 -0.97952,-0.15946 -1.35193,0.20668 -0.44324,-0.0768 -0.82988,0.4394 -1.36296,0.32681 -0.47543,-0.38381 -0.86283,0.53807 -1.33412,0.18179 -0.16273,0.26228 -0.58769,0.64528 -0.49715,1.05906 0.23477,0.14434 0.20747,0.26981 0.0897,0.31932 l 1.3417,2.68325 0.0924,0.16202 c 0.0405,-0.0728 0.12901,-0.19265 0.24502,-0.311 0.1846,-0.18774 0.29739,-0.23065 0.48407,-0.17861 0.13382,0.0374 0.26642,0.10711 0.29441,0.15529 0.088,0.15111 0.30436,0.10201 0.60459,-0.13753 0.15959,-0.12775 0.31636,-0.20397 0.34817,-0.17032 0.0321,0.0336 0.31919,0.0603 0.63861,0.068 0.3195,0.003 0.57545,0.0368 0.56948,0.0735 -0.0321,0.18681 0.0122,0.40741 0.0814,0.40741 0.0428,7.6e-4 0.16479,-0.0719 0.27032,-0.16241 0.17956,-0.15424 0.94963,-0.38544 1.25629,-0.37779 0.0757,0.002 0.16234,0.0919 0.19361,0.19996 0.0314,0.10799 0.0976,0.17291 0.14737,0.14384 0.0497,-0.0285 0.16563,-0.006 0.2577,0.051 0.14438,0.0896 0.13169,0.0996 -0.0917,0.0996 -0.14246,-0.002 -0.32385,0.0583 -0.40307,0.13318 -0.0793,0.0783 -0.1687,0.11036 -0.19921,0.0782 -0.0306,-0.0321 -0.16794,0.011 -0.30543,0.096 -0.13819,0.0859 -0.39911,0.14129 -0.58333,0.12369 -0.34235,-0.032 -0.52482,0.0456 -0.40461,0.1723 0.0375,0.0391 0.10439,0.0155 0.14898,-0.0525 0.0627,-0.0962 0.095,-0.0855 0.14185,0.0466 0.0459,0.13 0.088,0.14508 0.17627,0.0613 0.0635,-0.0608 0.23759,-0.11077 0.38648,-0.10313 0.14882,0.004 0.27185,-0.0325 0.27308,-0.0814 0,-0.0528 0.15555,-0.0724 0.34259,-0.0525 0.18705,0.0199 0.36279,6e-4 0.39085,-0.0423 0.0283,-0.0428 0.11096,-0.0528 0.18415,-0.0229 0.0734,0.0306 0.21779,0.0125 0.32163,-0.0395 0.13466,-0.0674 0.22391,-0.06 0.3114,0.0253 0.096,0.0969 0.10843,0.0961 0.0574,0 -0.0775,-0.14622 0.21305,-0.26384 0.8457,-0.34183 0.36163,-0.0446 0.45791,-0.0239 0.53033,0.1138 0.0688,0.13016 0.18399,0.16163 0.51496,0.13793 0.30955,-0.0222 0.4563,0.0117 0.53698,0.12369 0.092,0.12747 0.14476,0.13361 0.31147,0.0379 0,-0.002 0.008,-7.7e-4 0.01,-0.002 z", +4.53803, 3.30484, +"M 4.22266 2.80997 0.31537,-1.12559 c -0.009,-0.02 -0.007,-0.0204 -0.0166,-0.0433 -0.0891,-0.18672 -0.1596,-0.43114 -0.15657,-0.54337 0.007,-0.26307 -0.3226,-0.50877 -0.59978,-0.44658 -0.15585,0.0349 -0.21211,0.009 -0.20929,-0.0975 0.007,-0.14506 -0.37221,-0.30892 -0.51604,-0.22496 -0.20972,0.12206 -0.56233,-0.52094 -0.54975,-1.00228 0.007,-0.20306 0.69387,-0.85441 0.89802,-0.84718 0.0246,5.8e-4 0.22013,-0.0893 0.33034,-0.13193 l -1.11178,-1.65212 c -0.0195,0.0111 -0.0463,0.0411 -0.0615,0.0459 -0.0992,0.0317 -0.0915,0.0811 0.0376,0.23393 0.25,0.29716 0.14659,0.5097 -0.3124,0.64203 -0.308,0.0886 -0.41177,0.0914 -0.56956,0.006 -0.0485,-0.28545 -0.10942,-0.55919 -0.33331,-0.56055 l -3.8e-4,0.004 c -0.026,-3.8e-4 -0.055,-4e-5 -0.0856,0.0109 -0.0383,0.12372 -0.0535,0.2567 -0.0629,0.39275 -0.44908,-0.0654 -1.05986,-0.0415 -1.14461,0.0878 -0.0434,0.0662 -0.21861,0.14678 -0.38942,0.17789 -0.21261,0.0392 -0.30785,0.10585 -0.30192,0.21152 0,0.0285 -0.007,0.0534 -0.0145,0.0759 -0.0275,0.0216 -0.055,0.0453 -0.0822,0.0702 -0.007,0.001 -0.013,0.005 -0.0195,0.005 -0.0333,-7.2e-4 -0.12923,0.0237 -0.25528,0.0624 -0.08,-0.4784 -0.33186,-1.13708 -0.5564,-0.91446 0,0.16306 -0.0847,0.21734 -0.17609,0.21377 -3.8e-4,-3e-5 0,3.8e-4 0,3.8e-4 0.0499,0.24365 0.10392,0.55738 0.16712,0.8031 -0.14354,0.0227 -0.30849,0.0898 -0.40511,0.14461 -0.33424,0.33619 -0.74507,0.32102 -1.16899,0.1805 -0.26236,-0.0809 -0.35492,0.0333 -0.33894,0.29672 -0.15324,0.19325 -0.41676,0.31324 -0.60167,0.50786 -0.007,-0.0163 -0.013,-0.0322 -0.0181,-0.0486 0,0.0296 -0.007,0.0486 -0.008,0.0785 0.008,-0.01 0.0166,-0.0192 0.0253,-0.0284 0.0398,0.11691 0.0952,0.23149 0.15439,0.34417 -0.11751,0.0925 -0.227,0.23553 -0.25939,0.35127 -0.0586,0.21246 -0.18947,0.31968 -0.36325,0.38455 l 2.71944,2.83005 c 0.10689,-0.0587 0.32051,-0.1065 0.48394,-0.0994 0.16654,0.004 0.35001,-0.037 0.40736,-0.0912 0.0571,-0.0545 0.38558,-0.0909 0.72945,-0.0814 0.45349,0.0129 0.67232,-0.0226 0.79822,-0.12894 0.16481,-0.13918 0.99615,-0.19618 2.20563,-0.15135 0.19706,0.007 0.40331,-0.0138 0.45849,-0.0463 0.17471,-0.10371 0.36931,-0.0972 0.43389,0.0138 0.0217,0.0374 0.19258,0.0665 0.52581,0.0904 z", +1.92692, 5.24979, +"M -1.16568 5.24449 1.57665,-0.6191 c -0.0474,-0.4867 0.0954,-1.5337 0.25114,-1.6836 0.17039,-0.164 0.21291,-0.1563 0.37621,0.073 0.1012,0.1417 0.23035,0.3447 0.28834,0.4506 0.0858,0.1573 0.13611,0.1636 0.2744,0.034 0.16722,-0.1573 0.0631,-0.3063 -0.31419,-0.4501 -0.062,-0.024 0.01,-0.2644 0.15968,-0.5354 0.14994,-0.271 0.33213,-0.7281 0.40412,-1.0154 0.12608,-0.5015 0.1184,-0.5257 -0.1969,-0.5974 -0.23368,-0.053 -0.38971,-0.2226 -0.53949,-0.5876 -0.27201,-0.6626 -0.33335,-2.3657 -0.093,-2.5786 0.1421,-0.1258 0.13903,-0.1774 -0.0181,-0.2987 -0.2079,-0.1604 -0.2341,-1.2411 -0.045,-1.8552 0.10281,-0.3339 0.0903,-0.3456 -0.38601,-0.3581 -0.27072,-0.01 -0.61438,-0.1034 -0.76379,-0.214 -0.23149,-0.1708 -1.32257,-0.6546 -1.34407,0.41 -0.0512,2.5087 -0.0881,2.9436 -0.26511,3.1115 -0.141,0.1334 -0.16333,0.2237 -0.0692,0.2847 0.089,0.058 0.11213,0.5288 0.0651,1.3498 -0.0634,1.1134 -0.0451,1.2803 0.15967,1.4319 0.1278,0.094 0.22429,0.3077 0.22429,0.4734 -0.005,0.1661 0.0515,0.3404 0.12455,0.3886 0.073,0.048 0.0983,0.1683 0.0573,0.2682 -0.042,0.1012 -0.0193,0.1489 0.0517,0.1075 0.22709,-0.1322 0.12486,0.2738 -0.14264,0.5664 -0.28461,0.3116 -0.3362,0.4982 -0.13951,0.5033 0.0694,0 0.12142,0.091 0.12142,0.1964 -0.003,0.1065 0.0736,0.2267 0.17055,0.2666 0.27159,0.1124 0.32136,0.5471 0.078,0.6806 -0.118,0.064 -0.15684,0.1214 -0.0868,0.125 0.01,0 0.0111,0.067 0.0207,0.077 z", +3.13742, 6.38177, +"M 2.09259 -6.37924 c -0.0333,0.0351 -0.0639,0.10651 -0.0665,0.15881 0,0.0523 -0.18168,0.28228 -0.39724,0.51128 -0.21557,0.22899 -0.38735,0.49799 -0.38192,0.5977 0.009,0.0998 -0.12845,0.28291 -0.29726,0.40676 -0.16872,0.12384 -0.25759,0.22444 -0.19726,0.22261 0.0604,-0.002 -0.0906,0.167 -0.33569,0.37418 -0.24507,0.20716 -0.43708,0.42009 -0.42666,0.47372 0.0105,0.0536 -0.0482,0.12244 -0.12993,0.15248 -0.0977,0.0359 -0.11558,-0.005 -0.0508,-0.11945 0.0753,-0.13452 0.0578,-0.14289 -0.077,-0.0371 -0.42105,0.33004 -1.55709,-0.0183 -1.22158,-0.37463 0.0735,-0.078 0.0797,-0.24976 0.0166,-0.41989 -0.0587,-0.15829 -0.0988,-0.34453 -0.0883,-0.41354 0.0105,-0.069 -0.1864,-0.18257 -0.43752,-0.25293 -0.41046,-0.11495 -0.47884,-0.10036 -0.67549,0.14524 -0.16671,0.20808 -0.20217,0.22125 -0.14981,0.0547 0.0473,-0.14918 0.009,-0.21718 -0.13028,-0.2131 -0.15393,0.004 -0.19438,0.1355 -0.18098,0.57824 0.0149,0.48242 0.0447,0.54807 0.19,0.41943 0.13588,-0.11986 0.24384,-0.10913 0.50537,0.0511 0.28184,0.17272 0.32921,0.27874 0.3082,0.69317 l -0.0245,0.48911 0.74029,0.20541 c 0.40731,0.11309 0.788,0.17473 0.84561,0.13664 0.0578,-0.0382 0.1837,-0.008 0.2801,0.0674 0.0963,0.0751 0.31283,0.14691 0.48138,0.15972 0.35154,0.0267 0.74431,0.3456 0.61989,0.50313 -0.0464,0.0583 0.0114,0.0287 0.12757,-0.066 0.19438,-0.1583 0.21329,-0.12545 0.2294,0.40676 0.0131,0.42739 0.0569,0.5552 0.16925,0.4873 0.11986,-0.0727 0.12074,-0.0569 0.009,0.0756 -0.15786,0.18104 -1.51069,0.30581 -1.51577,0.13981 0,-0.14178 -1.40641,-0.0172 -1.51069,0.13438 -0.0517,0.0751 -0.0904,0.0544 -0.0946,-0.0516 -0.009,-0.12779 -0.0569,-0.10875 -0.18194,0.0674 -0.12678,0.17864 -0.17695,0.19682 -0.18369,0.0665 -0.009,-0.13638 -0.0429,-0.14397 -0.14885,-0.0313 -0.0867,0.0919 -0.12888,0.63215 -0.11172,1.42118 0.0149,0.70002 -0.0201,1.3785 -0.0771,1.50759 -0.0948,0.21303 -0.0569,0.22862 0.40722,0.17012 0.28115,-0.0354 0.527,-0.0233 0.54609,0.0267 0.0552,0.14325 2.4345,0.49083 2.60208,0.38007 0.0832,-0.0547 0.19542,-0.0735 0.25067,-0.0416 0.14753,0.0851 0.14473,0.78506 0,0.78953 -0.0709,0.003 -0.0902,0.13157 -0.0429,0.29772 0.0718,0.25436 0.0228,0.31646 -0.36283,0.45699 -0.3814,0.13879 -0.4806,0.13359 -0.68005,-0.0362 -0.12845,-0.10932 -0.43358,-0.20333 -0.67865,-0.20858 -0.24507,-0.005 -0.44758,-0.0599 -0.44977,-0.12127 0,-0.0615 -0.11129,0.02 -0.24253,0.18099 -0.40469,0.49616 -0.24227,0.75036 0.46562,0.72891 0.22712,-0.007 0.30163,0.0579 0.30942,0.26921 0.009,0.22501 0.0315,0.24213 0.12442,0.0891 0.0974,-0.16124 0.1161,-0.15665 0.1231,0.0299 0.009,0.17543 0.0753,0.20061 0.34611,0.12804 0.18571,-0.0497 0.38919,-0.14057 0.45205,-0.20179 0.063,-0.0612 0.2062,-0.11426 0.31801,-0.11764 0.2244,-0.007 0.65264,0.38173 0.61088,0.55426 -0.014,0.0601 0.0201,0.23309 0.0762,0.38459 0.21836,0.58332 0.33254,0.22078 0.29725,-0.94474 -0.0263,-0.87541 0.0123,-1.28197 0.13799,-1.45917 0.0959,-0.1351 0.17196,-0.37168 0.16968,-0.52576 0,-0.15407 0.0552,-0.3837 0.12941,-0.51037 0.16216,-0.27806 0.0175,-1.04903 -0.2434,-1.29449 -0.15253,-0.14353 -0.15612,-0.19583 -0.021,-0.31536 0.0892,-0.0787 0.25321,-0.1112 0.36424,-0.0724 0.2413,0.0843 0.44854,-0.40882 0.41895,-0.99812 -0.0105,-0.21248 0.0245,-0.69433 0.0779,-1.07052 0.0534,-0.37619 0.10261,-1.28473 0.10909,-2.01932 h -0.009 c 0,-0.31321 0,-0.55466 -4.3e-4,-0.7452 -0.0131,-0.57155 -0.0744,-0.68608 -0.28106,-0.91216 -0.24901,-0.27261 -0.30434,-0.29013 -0.36511,-0.11627 -0.0394,0.1127 -0.13728,0.18217 -0.21757,0.15428 -0.0975,-0.0339 -0.14036,-0.32845 -0.12897,-0.88591 0.01,-0.45938 -0.0105,-0.80654 -0.0438,-0.77144 z", +2.66052, 3.77103, +"M -0.39949 -3.77089 c -0.24655,0.002 -0.48424,0.0415 -0.7069,0.14289 -0.091,0 -0.14007,0.16428 -0.23247,0.15604 -0.56186,0.39932 -1.98716,1.04365 -0.95829,1.755351 0.37012,0.004 1.89317,-0.681921 1.58174,0.0144 -0.92118,0.19316 -0.78062,1.25644 -0.57652,1.87004 -0.5507,0.73969 -0.54645,2.07518 0.50073,2.40836 0.72023,0.13329 1.71345,0.023 1.86698,1.06161 0.14079,0.10466 0.256,0.14178 0.34647,0.13161 0.39231,-0.0442 0.32501,-0.98344 -0.0873,-1.24084 -0.12491,-0.92548 1.37777,-1.34914 1.32417,-2.16898 -0.0121,-0.11715 -0.0461,-0.24263 -0.12721,-0.37852 -0.83872,-0.59956 -0.43161,-1.77015 -0.097,-2.539971 0.45562,-0.35901 -0.33799,-0.65515 -0.53141,-0.9275 -0.74291,0.0304 -1.56344,-0.29219 -2.30307,-0.2845 z", +3.00843, 4.63, +"M -3.00308 -3.2356 c 0.0216,0.023 0.10979,0.055 0.26872,0.1013 0.56889,0.1649 0.8117,0.2144 1.07177,0.2196 0.22155,0 0.65876,0.8395 0.44286,0.846 -0.0655,0 -0.0523,0.2079 0.0295,0.4583 0.0816,0.2503 0.16335,0.662 0.1819,0.9142 0.0185,0.2523 0.0943,0.4564 0.16795,0.4542 0.0735,0 0.11453,0.2196 0.091,0.4925 -0.0236,0.273 5.3e-4,0.4946 0.0532,0.493 0.0529,0 0.10741,0.2474 0.12093,0.5529 0.0301,0.6823 0.35271,2.2028 0.57102,2.6913 0.0887,0.1985 0.29547,0.4232 0.4594,0.4992 0.4735,0.2194 0.77786,0.184 0.76378,-0.089 -0.0797,-1.554 0.36543,-3.8118 0.78032,-3.9574 0.13544,-0.047 0.34304,-0.3075 0.46147,-0.5778 0.11837,-0.2703 0.26596,-0.4621 0.32814,-0.4263 0.0622,0.036 0.15067,-0.042 0.19637,-0.1726 0.10948,-0.3133 -0.1781,-0.4655 -0.66611,-0.3525 -0.21603,0.05 -0.39776,0.035 -0.40411,-0.033 -0.0656,-0.6804 -0.18153,-1.2185 -0.31109,-1.4439 -0.19053,-0.3315 0.13535,-0.7608 0.48473,-0.6387 0.17021,0.059 0.20863,0 0.16433,-0.2589 -0.0455,-0.2639 -0.2012,-0.3747 -0.72399,-0.5147 -0.42937,-0.115 -0.69455,-0.2732 -0.74517,-0.4454 -0.0417,-0.1415 -0.0928,-0.2038 -0.2341,-0.2067 h -5.3e-4 c -0.0848,0 -0.20163,0.018 -0.36845,0.054 -0.28858,0.063 -0.6874,0.2067 -0.88573,0.3179 -0.1983,0.1112 -0.45557,0.2061 -0.57206,0.2113 -0.18831,0.01 -0.18809,0.024 0.004,0.1401 0.16267,0.098 0.094,0.1364 -0.27802,0.1524 -0.27189,0.012 -0.61486,0.1186 -0.76223,0.2372 -0.14743,0.1187 -0.39883,0.2252 -0.55862,0.2367 -0.10787,0.01 -0.15286,0.021 -0.13126,0.044 z", +4.45538, 5.00079, +"M 3.67326 3.58666 c 0.27079,-0.66346 0.32332,-0.78121 0.57421,-1.39679 -0.20034,0.0973 -0.44394,0.2056 -0.86662,0.24908 l -1.01753,0.10469 -0.32442,-0.67827 c -0.17835,-0.37327 -0.32777,-0.8685 -0.33148,-1.10044 -0.0123,-0.7472 0.88739,-1.58524 1.72954,-1.61074 0.5103,-0.0154 0.92804,-0.83692 1.00146,-1.96776 0.0482,-0.75168 0.021,-0.81363 -0.45222,-0.97588 -0.57495,-0.19732 -0.73908,-0.88336 -0.22222,-0.92927 0.16771,-0.0148 0.0408,-0.1032 -0.2829,-0.19608 -0.44802,-0.12851 -0.61919,-0.11519 -0.71732,0.0549 -0.0705,0.12285 -0.198,0.23615 -0.2829,0.25164 -0.0853,0.0156 -0.12804,0.13016 -0.0952,0.25547 0.0321,0.12524 -0.17735,0.31878 -0.46742,0.42983 -0.29007,0.11098 -0.52514,0.27295 -0.52254,0.35957 0,0.0866 -0.11865,0.16151 -0.26881,0.16606 -0.19491,0.006 -0.23866,0.10876 -0.1514,0.35702 0.0667,0.19175 0.0408,0.62287 -0.0593,0.95864 -0.17315,0.58372 -0.19898,0.59981 -0.58372,0.36405 -0.22135,-0.13498 -0.45358,-0.19271 -0.51599,-0.12646 -0.0618,0.0664 -0.11741,-0.01 -0.12235,-0.16988 -0.0124,-0.36216 -0.41947,-0.36654 -0.69941,-0.007 -0.16709,0.21426 -0.16598,0.26711 0.0124,0.26185 0.17006,-0.005 0.17254,0.0494 0.0136,0.25292 -0.11123,0.14297 -0.14918,0.41073 -0.0853,0.59461 0.0643,0.1839 0.0297,0.54243 -0.0766,0.79706 -0.208,0.49594 -0.48287,0.62505 -0.49485,0.23248 0,-0.14554 -0.19528,-0.23117 -0.48732,-0.22034 -1.11751,0.0426 -1.1384,0.0298 -1.03656,-0.62143 0.0828,-0.52592 0.0321,-0.64517 -0.37881,-0.8967 -0.45308,-0.27763 -0.48287,-0.27552 -0.70373,0.0466 -0.5061,0.73788 -0.0284,1.65526 0.58113,1.11704 0.16054,-0.14168 0.25509,-0.15557 0.25868,-0.0377 0,0.10208 -0.0692,0.23597 -0.16154,0.29699 -0.10505,0.0697 -0.0853,0.23703 0.0569,0.45089 0.18144,0.27371 0.18045,0.36979 -0.0124,0.49434 -0.28512,0.18973 -0.063,0.9574 0.23248,0.80537 0.11,-0.0566 0.33641,-0.15535 0.50264,-0.21971 0.16636,-0.0644 0.29909,-0.22545 0.29514,-0.35829 -0.0124,-0.28263 0.95709,-0.35933 1.62287,-0.12901 0.43418,0.15018 0.81187,1.06462 0.49239,1.19176 -0.0865,0.0347 -0.15412,0.20558 -0.1488,0.37938 0,0.17383 -0.10011,0.36244 -0.23569,0.41897 -0.55653,0.23312 -0.27128,1.40722 0.48027,1.97542 0.39685,0.30003 0.52477,0.25768 0.6936,-0.23056 0.12915,-0.37324 0.23049,-0.42519 0.68407,-0.34872 0.40588,0.0685 0.53095,0.0271 0.52502,-0.175 -0.0124,-0.32797 0.45877,-0.54947 0.56394,-0.26633 0.0569,0.15333 0.14905,0.14191 0.36015,-0.0434 0.19972,-0.17521 0.52736,-0.21946 1.12468,-0.16094 z", +4.04617, 5.42426, +"M -2.94195 4.57672 5.547,0.84754 c -0.0131,-0.11956 -0.002,-0.25067 -0.022,-0.34369 l -0.11879,-0.55384 0.67428,-0.21593 c 0.37071,-0.11919 0.75479,-0.27013 0.85339,-0.33717 0.28775,-0.19498 -0.63141,-0.34362 -1.29568,-0.20935 -0.56865,0.11499 -1.08906,-0.007 -1.15769,-0.27139 -0.0188,-0.0737 -0.18848,-0.31709 -0.37655,-0.54178 -0.18811,-0.22467 -0.3416,-0.53824 -0.3413,-0.69665 9.2e-4,-0.50293 -0.54357,-1.30997 -1.04569,-1.54977 -0.35267,-0.16848 -0.52754,-0.36992 -0.6645,-0.76621 -0.10221,-0.29559 -0.14563,-0.52528 -0.0964,-0.51011 0.17354,0.0539 -0.66737,-2.76228 -0.96072,-3.21725 -0.16345,-0.25346 -0.27119,-0.54462 -0.23941,-0.64722 0.036,-0.1166 0.008,-0.13435 -0.0749,-0.0476 -0.11577,0.12068 -0.2106,-0.0208 -0.25406,-0.37838 -0.006,-0.0499 -0.10171,-0.11849 -0.21226,-0.15262 -0.027,-0.008 -0.0774,-0.16167 -0.11391,-0.2073 -0.53067,-0.0874 -0.63302,-0.10779 -1.20503,-0.20227 10e-4,0.01 0.003,0.01 0.004,0.0175 0.0527,0.43032 0.14887,0.71581 0.25112,0.74742 0.10484,0.0326 0.0998,0.202 -0.0141,0.46214 -0.1944,0.44418 -0.0765,0.73425 0.34048,0.83519 0.23019,0.0556 0.28611,0.20689 0.44455,1.20419 0.20536,1.29285 0.19184,1.41099 -0.17315,1.50581 -0.32706,0.0846 -0.58936,0.79809 -0.36878,1.00225 0.20564,0.19033 0.36751,0.75346 0.20212,0.70237 -0.20848,-0.0645 -0.0864,0.17277 0.22532,0.43844 0.1607,0.13697 0.2717,0.3158 0.24664,0.39698 -0.0253,0.0806 0.0317,0.17074 0.12496,0.19997 0.11335,0.0347 0.11536,0.1239 0.004,0.26449 -0.11539,0.14655 -0.10247,0.49598 0.0428,1.1318 l 0.21014,0.91939 z", +5.49752, 3.12991, +"M 1.37015 -3.12969 v 0.001 c -0.1107,0 -0.2247,0.002 -0.3421,0.005 -0.273,0.007 -0.4227,0.0758 -0.4227,0.19482 0,0.26786 -0.2484,0.3097 -0.772,0.12971 -0.3784,-0.1301 -0.526,-0.12457 -0.8269,0.031 -0.5169,0.26723 -1.5029,0.35961 -2.096,0.19586 -0.4659,-0.12864 -0.5236,-0.11468 -0.7643,0.1912 -0.2181,0.27728 -0.3304,0.31769 -0.696,0.24908 -0.3971,-0.0745 -0.4341,-0.0551 -0.4114,0.21911 0.014,0.1656 -0.1182,0.49771 -0.2935,0.73742 -0.3107,0.42518 -0.3126,0.43928 -0.066,0.58239 0.1392,0.0807 0.5196,0.38777 0.8454,0.68265 0.3259,0.29485 0.7242,0.57704 0.8852,0.62684 0.1609,0.0498 0.2925,0.14516 0.2925,0.21187 0,0.15407 1.2613,0.16018 1.3565,0.006 0.039,-0.0632 0.3437,-0.24332 0.6769,-0.39997 0.425,-0.19982 0.6332,-0.24126 0.6967,-0.1385 0.05,0.0805 0.1662,0.12856 0.2589,0.10697 0.093,-0.0217 0.2127,0.11828 0.2671,0.31058 0.087,0.30723 0.054,0.36567 -0.2775,0.48111 -0.4545,0.1584 -0.4945,0.26092 -0.07,0.17983 0.1982,-0.0379 0.3343,0.0134 0.3845,0.14418 0.064,0.16602 0,0.18801 -0.3395,0.1235 l -0.4165,-0.0786 0.2599,0.26149 c 0.1431,0.14385 0.3029,0.23712 0.3551,0.20722 0.052,-0.0299 0.2166,0.0106 0.3658,0.0904 0.2162,0.11576 0.2544,0.22258 0.1876,0.52659 l -0.084,0.38085 h 0.8407 c 0.752,0 0.8633,-0.0341 1.0527,-0.32297 0.1164,-0.17773 0.372,-0.36144 0.5679,-0.40825 0.4395,-0.10496 0.7018,-0.3012 0.6072,-0.45424 -0.039,-0.0635 -0.01,-0.11523 0.066,-0.11523 0.076,7e-5 0.1379,0.0441 0.1379,0.0977 0,0.23852 1.0762,0.16168 1.5126,-0.10801 0.2339,-0.14457 0.366,-0.29703 0.386,-0.40307 v 0 c 0.02,-0.10602 -0.072,-0.16583 -0.28679,-0.12403 -0.13541,0.0264 -0.67191,0.0638 -1.19271,0.0827 -0.9133,0.0331 -0.9439,0.0241 -0.8619,-0.24339 0.047,-0.15257 0.1949,-0.38208 0.3292,-0.51006 0.297,-0.28318 0.3099,-0.52576 0.041,-0.74878 -0.462,-0.38339 -0.6379,-1.28709 -0.3137,-1.61127 0.069,-0.0691 0.1261,-0.22671 0.1261,-0.35038 0,-0.12366 0.089,-0.31478 0.1984,-0.42426 0.3806,-0.38055 -0.5051,-0.62598 -2.1652,-0.61598 z", +3.63043, 5.15692, +"M -3.62726 -3.36795 c -0.0468,0.32054 0.43759,0.66685 0.52881,0.98692 0.28647,0.32487 -0.28269,0.47336 -0.316,0.71696 0.10063,0.38021 0.34235,0.83542 0.13607,1.20634 -0.51118,0.31783 0.37465,0.71304 0.29987,1.10283 0.36141,0.35332 -0.44509,0.42029 -0.41731,0.69873 -0.13664,0.46798 -0.26085,0.93998 -0.21981,1.41789 0.0582,0.12446 -0.11212,0.37614 0.0969,0.41685 0.88284,-0.0585 0.30904,0.58298 0.69294,0.85291 -0.34214,0.33774 0.0244,0.78826 0.73335,0.72836 0.43959,0.29919 1.07278,0.24331 1.63813,0.35228 l 0.0736,0.0448 c 0.38778,-0.10404 0.0245,-0.72353 0.20718,-1.01432 0.51323,-0.34366 -0.20283,-0.45485 -0.61814,-0.53103 0.0274,-0.33275 0.26259,-0.74304 0.21784,-1.13747 0.23923,-0.2064 0.75099,-0.0848 1.11881,-0.12006 l -0.0149,0.53094 c 0.18821,0.46487 0.40821,0.92446 0.12828,1.42682 -0.43537,0.34603 -0.20149,0.86785 0.62785,0.73084 0.32264,-0.28321 0.35317,-0.75168 -0.0804,-1.04175 0.56867,-0.53073 1.11997,0.32514 1.3861,0.60116 -0.0255,0.3657 1.32511,0.75896 0.98294,0.21235 -0.28172,-0.41656 -0.56593,-0.8647 -1.16271,-1.16373 0.0169,-0.28998 -0.30591,-0.44892 -0.51256,-0.68143 -0.27438,-0.51775 0.92277,-0.55614 1.32949,-0.29182 0.37686,0.30057 0.6089,-0.11077 0.11594,-0.20101 0.11778,-0.45323 -0.55455,-0.70288 -0.75334,-1.04554 -0.24517,-0.39883 0.35093,-0.72371 0.47053,-1.00707 -0.74221,-0.0978 -0.87992,-0.65893 -1.14431,-1.03193 -0.0424,0.27079 -0.61393,0.63737 -0.40714,0.94708 -0.39146,0.39072 -0.2133,0.90337 -0.19158,1.3428 -0.38873,0.18762 -0.1672,0.38452 -0.0853,0.62107 -0.61435,0.26479 -0.31061,-0.34619 -0.56846,-0.50332 -0.0127,-0.48721 -0.72194,-0.78357 -0.99598,-1.2129 0.12473,-0.33506 -0.33466,-0.51389 -0.36161,-0.82807 0.1997,-0.42706 0.3237,-0.84131 0.26038,-1.28998 0.68927,-0.44553 -0.67313,-0.6391 -0.21405,-1.09468 0.22086,-0.37425 0.42402,-0.90652 -0.18371,-1.18138 -0.43025,-0.35212 -0.0683,-0.76225 -0.19938,-1.15243 -0.35117,-0.0477 -0.85403,-0.20224 -1.27169,-0.19685 -0.25089,0.003 -0.47094,0.0655 -0.60781,0.24375 -0.36841,0.38217 -0.14434,0.8521 -0.46111,1.23525 -0.16785,0.0992 -0.24225,0.20322 -0.2578,0.31006 z", +2.88035, 4.06242, +"M 1.25865 -4.0624 c -0.26985,0.16593 -0.42018,0.52485 -0.45144,0.83652 -0.0532,0.14065 -0.26733,-0.18208 -0.24919,0.11733 -0.28494,0.18546 0.14687,0.48052 0.0223,0.77037 0.036,0.36289 0.3756,0.58792 0.53905,0.88077 -0.13707,-0.006 -0.45978,0.15371 -0.4101,-0.0997 -0.0108,-0.31743 -0.1796,-0.59765 -0.41569,-0.80388 -0.20831,-0.2224 -0.50043,-0.35247 -0.56789,-0.66266 -0.28582,-0.18946 -0.72788,-0.02 -0.85216,-0.40249 -0.34073,-0.28483 -0.60874,0.19553 -0.79607,0.42709 -0.15294,0.28679 -0.28387,0.62305 -0.36898,0.94692 0.0288,0.41155 0.59654,0.31526 0.78223,0.64991 0.21197,0.12691 0.79092,0.32794 0.42931,0.61615 -0.22783,0.17371 -0.51269,0.28054 -0.73081,0.21635 -0.3129,0.0885 -0.69087,0.0242 -0.91787,0.32227 -0.0986,0.0888 -0.18264,0.18327 -0.14058,0.32426 0.0153,0.33863 0,0.68711 0.12159,1.00883 -0.17136,0.30467 0.34515,0.28606 0.24024,0.61504 0.0458,0.34026 0.22841,0.60042 0.53816,0.73395 0.11715,0.34628 0.48027,0.43439 0.68656,0.10861 0.22092,-0.24425 0.13892,-0.64131 0.4966,-0.81417 0.22425,-0.28822 0.71346,-0.14432 0.87741,-0.50084 0.18991,-0.18243 0.5743,-0.40112 0.46598,0.0664 0.0489,0.38641 -0.2614,0.6663 -0.34171,1.01509 0.0213,0.33786 0.19593,0.66602 0.38507,0.93374 0.16136,0.28358 0.42527,0.5179 0.5243,0.8088 0.11306,0.0261 0.24555,0.005 0.31311,-0.099 0.17679,-0.18075 0.42474,-0.24465 0.67359,-0.22126 0.24753,-0.26223 0.54092,-0.49076 0.73684,-0.79584 0.0703,-0.37759 -0.42896,-0.49317 -0.57771,-0.73752 -0.0631,-0.34107 -0.18323,-0.61203 -0.31803,-0.91518 0.0979,-0.36538 -0.30776,-0.49131 -0.24159,-0.85374 -0.0624,-0.37632 -0.49732,-0.49981 -0.55581,-0.87137 -0.0398,-0.29907 -0.0805,-0.80571 0.373,-0.62533 0.25606,0.0228 0.19023,-0.34809 0.48675,-0.27109 0.24961,-0.0512 0.49133,-0.32109 0.67696,-0.0456 0.3421,-0.12553 0.19087,-0.82493 -0.23511,-0.63717 -0.36514,-0.0659 0.34354,-0.40056 0.18392,-0.66355 -0.01,-0.40846 -0.52884,-0.49985 -0.47624,-0.91853 -0.12166,-0.36074 -0.58136,-0.42643 -0.90604,-0.4595 z", +3.57088, 4.77385, +"M -1.37842 -4.77385 c -0.32004,0.38562 -0.90978,0.44109 -1.06475,0.98212 -0.33196,0.58155 -0.34433,1.24636 -0.0431,1.86247 0.63654,0.61117 -0.46462,0.56209 -0.81103,0.5768 -0.71739,0.43468 0.23093,1.04171 -0.0105,1.64117 0.14314,0.6155 0.45858,1.33418 1.13619,1.48914 0.64762,-0.0825 1.4885,0.94379 0.87455,1.42229 -0.20223,0.48484 -0.89031,0.9814 -0.1661,1.42189 0.23434,0.25918 0.59181,0.15737 0.78734,-0.0868 0.49244,-0.4069 1.22385,-0.34712 1.79188,-0.53942 0.40959,-0.0676 0.43978,-0.38024 0.52823,-0.71925 0.4924,0.34324 1.17879,0.64169 1.71133,0.1823 0.40615,-0.60741 0.1742,-1.49048 -0.17359,-2.078 -0.01,-0.55871 -0.45537,-1.1785 -1.0577,-0.79483 -0.47109,0.82821 -1.0013,-0.36652 -0.57886,-0.79192 0.0974,-0.61938 -0.40188,-1.41863 -1.12248,-1.2263 -0.615,0.15415 -0.83256,-0.44564 -0.6852,-0.84049 -0.60947,-0.41783 0.57646,-1.01268 -0.19227,-1.48999 -0.1719,-0.39383 -0.74183,-0.82494 -0.92398,-1.01118 z", +3.57088, 3.49495, +"M -2.51747 -3.49406 c -0.44274,0.0168 -0.80575,0.24519 -0.65317,0.74056 0.77847,0.68723 0.006,1.14574 -0.40024,1.60094 0.45273,0.85169 -0.057,2.25152 1.13658,2.51484 0.58996,0.19997 -0.83942,0.82749 0.19445,1.21761 0,0.4092 0.84626,1.20435 1.14506,0.8068 0.96341,-0.49284 2.10194,-0.48523 3.16453,-0.62008 1.00752,-0.34932 1.59197,-1.40776 1.48958,-2.45213 -0.18766,-1.01556 -0.54571,-2.14247 -1.52062,-2.68748 -0.56572,-0.6585 -2.34805,-1.70658 -2.30696,-0.17264 1.19275,1.31973 -1.71147,1.34573 -1.07034,-0.0774 0.0918,-0.5639 -0.60964,-0.89245 -1.17887,-0.87092 z", +2.19827, 3.72855, +"M 1.79578 -3.16055 c 0.29134,0.9127 -0.8513,1.88012 -1.60506,1.23145 -0.61184,0.26144 -1.4819,1.48613 -0.34626,1.65621 0.20292,0.5854 -0.87432,1.11229 -0.86456,1.82626 -0.34284,0.66001 -1.30935,-0.58756 -1.16324,0.49712 0.015,0.16218 -0.0225,0.37679 0.0868,0.50798 0.35875,0.66438 1.22487,1.01087 1.95492,0.77514 0.59338,-0.43345 1.13653,0.4314 1.81488,0.39374 0.23014,-0.39462 0.28884,-0.97791 0.31677,-1.46193 0.0963,-1.02031 -0.0218,-2.07603 0.20824,-3.07268 -0.0106,-0.662 -0.26526,-1.55587 -0.0532,-2.3394 0.10891,-0.75342 -0.47035,-0.79317 -0.34929,-0.0139 z", +3.57085, 3.77374, +"M -1.00965 -3.77187 c -0.50773,-0.0455 -0.59851,0.75754 -1.18315,0.62357 -0.2759,0.006 -0.43238,-0.20174 -0.54732,-0.35854 -0.42974,-0.101 -0.98298,0.0786 -0.79185,0.62433 0.0918,0.27667 0.63885,0.21922 0.50031,0.65458 -0.008,0.28654 0.415,0.4124 0.12652,0.69333 -0.0968,0.21542 0.3362,0.39395 0.19527,0.57658 -0.37534,0.22876 0.12223,0.32999 0.18878,0.60483 0.26355,0.34866 -0.14544,0.74459 -0.0203,1.14239 0.22773,0.37599 0.42716,0.78503 0.71585,1.1349 0.20089,0.31178 0.59558,0.80482 0.97387,0.45305 0.53952,-0.18877 -0.0114,0.38539 -0.26603,0.32129 -0.005,0.24853 0.24187,0.42998 0.13101,0.70434 0.12782,0.27427 0.66178,0.50327 0.90612,0.28229 -0.19362,-0.28539 -0.38278,-0.53996 -0.23003,-0.90337 0.0118,-0.18256 0.14722,-0.40585 -0.0853,-0.48031 0.11501,-0.13614 0.31125,-0.45293 0.29528,-0.0705 0.13823,0.35583 0.51741,0.5319 0.87087,0.59257 0.22815,-0.32159 0.48104,-0.66059 0.8381,-0.85811 0.36776,-0.32583 0.73175,-0.66601 1.02963,-1.05813 0.31551,-0.18006 0.54504,-0.50482 0.93287,-0.49481 -0.0706,-0.38435 -0.81564,-0.26725 -0.51007,-0.7296 -0.004,-0.20098 0.28139,-0.50601 0.11752,-0.63332 -0.38126,0.008 -0.77281,0.0549 -1.14464,-0.0458 0.22089,-0.13301 0.47335,-0.47944 0.54081,-0.80185 0.14915,-0.29117 0.0598,-0.94753 -0.38205,-0.76085 -0.38265,-0.0285 -0.7182,-0.62895 -1.06013,-0.13102 -0.15706,0.19112 -0.33864,-0.13478 -0.29078,-0.28203 0.22718,-0.13574 0.44603,-0.63936 0.0285,-0.63858 -0.11854,0.35338 -0.58257,0.49089 -0.85134,0.14477 -0.29235,-0.20085 -0.66289,-0.31351 -1.02838,-0.30604 z", +3.57089, 5.62272, +"M -1.42379 -5.622 c -0.43389,0.0339 0.14764,1.23134 -0.27034,1.52136 -0.32134,0.64017 -0.3091,1.54516 -1.19918,1.59638 -0.5274,0.17075 -1.08366,0.90166 -0.25472,1.09547 0.18208,0.59783 0.78062,1.0544 0.80096,1.66886 -0.42354,0.53578 -1.0075,1.1037 -0.51402,1.81991 -0.22824,0.69684 -0.48371,1.55859 -0.0453,2.29815 0.0422,0.68578 0.8206,0.79979 1.16895,1.23743 0.21794,0.0348 0.4294,-0.063 0.61318,-0.16915 0.77997,-0.43845 0.0476,-1.6467 0.62273,-2.13958 0.98799,-0.075 0.80763,-1.11489 1.07434,-1.82644 0.15326,-0.73964 1.0527,-0.44914 1.60996,-0.48531 0.28374,0.01 0.59117,0.0806 0.75616,-0.21396 0.52814,-0.37956 0.96391,-1.07548 0.28243,-1.5707 -0.29818,-0.54672 -1.30735,-0.15148 -0.43951,0.146 0.46422,0.42259 -0.74074,0.6148 -1.00937,0.33025 -0.36553,0.13004 -0.87668,0.44845 -0.74154,-0.26028 0.0857,-0.69248 0.10805,-1.45821 -0.47727,-1.77811 -0.56593,-0.56035 0.55259,-0.94649 0.6444,-1.55057 0.2319,-0.78726 -0.94437,-0.99379 -1.45289,-1.28073 -0.40803,0.36815 -0.78127,0.16543 -0.91525,-0.37606 -0.10931,-0.0486 -0.19174,-0.0678 -0.25373,-0.0629 z", +3.57089, 3.9589, +"M -0.662738 -3.95715 c -0.22732,0.1856 -0.1616,0.62065 -0.53242,0.4242 -0.47422,0.18596 -1.1086,-0.11391 -1.44717,0.37963 -0.0317,0.5894 -0.93935,0.14582 -0.92847,0.72408 0.18671,0.31101 0.54772,0.37476 0.774,0.25063 0.73663,0.38029 -0.26627,0.73927 -0.27541,1.18012 -0.16873,0.24378 -0.22553,0.49255 -0.0791,0.74385 -0.35807,0.49099 0.49544,0.79295 0.89329,0.76898 0.7408,0.0465 -0.0421,0.63402 -0.3488,0.72743 -0.19071,0.30445 -0.16117,0.71804 -0.63596,0.65942 -0.0994,0.45223 -0.3579,0.95834 0.0972,1.33927 0.29409,0.53974 0.96448,0.4094 1.42438,0.6058 0.25557,0.31566 0.59274,-0.11505 0.78137,-0.28179 0.43541,-0.29546 0.89088,-1.01334 1.42439,-0.89697 0.37087,0.20728 0.82182,0.38467 1.17308,0.10018 0.30848,0.23171 0.74947,0.19845 1.07289,0.43056 0.23849,0.006 0.56519,-0.37111 0.53108,-0.64333 0.0427,-0.41341 0.67275,-0.95516 0.002,-1.22669 -0.51332,0.33701 -1.04337,-0.18935 -1.52993,-0.35215 -0.31537,-0.10025 -1.01146,-0.23443 -0.48651,-0.62826 0.0794,-0.34626 0.44388,-0.30417 0.61988,-0.4711 -0.5035,-0.3571 -0.4592,-1.16755 -1.13992,-1.30979 0.084,-0.42636 0.24714,-0.98594 0.42956,-1.45855 -0.12383,-0.36592 -0.23396,-1.20431 -0.77535,-0.74854 -0.42722,0.24522 -0.7282,-0.3551 -1.04407,-0.31698 z", +4.35997, 4.86053, +"M 4.12802 -4.85771 c -0.10456,-0.0226 -0.24399,0.0881 -0.41693,0.42159 -0.2125,0.98079 -0.39661,2.00485 -1.27137,2.64164 -0.55259,0.76964 -0.84457,2.28577 -2.02939,2.16135 -0.53939,-0.50526 -1.4269,0.18538 -2.12311,0.20849 -0.55867,0.36525 -1.1619,-0.53149 -1.67378,0.28501 -0.92928,0.12919 -0.84737,1.30207 -0.21641,1.57615 -0.23706,0.6136 -1.50686,1.78461 -0.11541,1.86052 0.32445,0.23972 0.55181,0.97448 0.94742,0.25664 0.58659,-0.89664 1.44208,-1.65942 1.52995,-2.76437 0.89443,-0.40943 1.08676,1.66279 2.17983,1.45475 1.174,0.49699 -0.92964,1.24862 -0.11145,1.5821 0.52277,-1.10045 2.1059,-0.15978 2.383,-1.305 0.26784,-0.82205 1.53393,-1.83991 0.82737,-2.6377 -0.22347,-0.70652 -1.39017,-0.1269 -1.3248,-0.76992 -0.23832,-0.99719 0.89102,-1.4275 1.08066,-2.29858 -0.19297,-0.68688 0,-1.06432 0.50602,-1.52073 0.12078,-0.40486 0.0586,-1.10219 -0.17153,-1.15194 z", +2.04794, 5.74865, +"M 1.10481 -5.74852 c -0.2228,0.001 -0.42374,0.10801 -0.27902,0.38066 -0.22773,0.32416 -1.04651,0.01 -0.86657,0.6221 0.26376,0.4125 0.0107,0.98862 -0.32022,1.27218 0.2249,0.43579 0.30114,0.9337 0.36381,1.39786 -0.18081,0.1263 -0.35082,0.59103 -0.47477,0.5752 0.13163,-0.4456 -0.6191,-0.80374 -0.54723,-0.18253 0.0335,0.4939 0.30706,0.8021 0.65488,1.16755 0.0573,0.18913 0.50349,0.27841 0.054,0.30188 -0.32151,0.0134 -0.70298,0.15083 -0.96036,0.26819 -0.004,0.5051 -0.55904,0.90049 -0.23512,1.41321 -0.58144,0.13334 -0.38504,0.76784 -0.14975,1.12213 0.1297,0.3844 0.11185,0.7896 -0.32623,0.90896 -0.31629,0.49376 0.60887,-0.10276 0.51957,0.45041 -0.50415,0.22985 -0.21881,0.79349 -0.0156,1.13687 0.0134,0.25246 0.20574,0.68606 0.45883,0.6615 0.0963,-0.10895 0.22038,-0.21662 0.23453,-0.37013 -0.0641,-0.49914 0.3279,-0.12706 0.46184,0.0763 0.39469,0.33331 0.98388,0.17352 1.28451,-0.20657 0.25784,-0.20591 0.90771,-0.24636 0.52498,-0.65428 0.40076,-0.52758 -0.33316,-0.93582 -0.19243,-1.46581 0.0606,-0.56794 -0.0204,-1.15758 0.12958,-1.71117 0.1498,-0.39418 -0.30538,0.12251 -0.36231,-0.28414 -0.0417,-0.31502 0.45507,-0.37624 0.54784,-0.65519 0.36583,-0.13394 0.0559,-0.67183 0.39269,-0.91255 0.2087,-0.31728 -0.37429,-0.20735 -0.2216,-0.60377 -0.11082,-0.46181 -0.47329,-0.89905 -0.93241,-1.04485 -0.14753,0.0856 -0.34858,0.34434 -0.37436,-0.04 0.25058,-0.4456 -0.0889,-0.88442 0.0608,-1.31458 -0.11306,-0.4522 0.68191,0.0944 0.52617,-0.54182 0.2472,-0.31727 0.41213,-0.71248 0.436,-1.11462 -0.0466,-0.2419 0.0663,-0.32026 0.29827,-0.3073 0.43849,-0.20873 -0.33546,-0.1678 -0.47237,-0.3142 -0.0671,-0.0208 -0.14373,-0.032 -0.21799,-0.0316 z", +3.57088, 2.80202, +"M -0.301059 -2.80177 c -0.17254,0.005 -0.33301,0.071 -0.43996,0.26942 0.0409,0.2666 0.3491,0.47076 0.41858,0.69966 -0.36962,0.1128 -0.73032,0.3493 -1.08495,0.0913 -0.38249,0.0613 -0.25611,0.72381 0.036,0.88696 0.2585,0.30716 -0.38849,0.35691 -0.58937,0.39089 -0.44316,0.0903 -0.23306,0.50499 -0.19046,0.77618 -0.15188,0.28342 -0.52426,0.566 -0.8221,0.58572 0.13061,-0.25419 0.13318,-0.51381 -0.18414,-0.64646 -0.2523,-0.20486 -0.5502,0.37635 -0.34497,0.58256 0.0492,0.32508 -0.0329,0.76492 0.43389,0.8515 0.34683,0.12336 0.70559,0.1523 1.03297,0.318 0.37589,0.0865 0.73238,-0.13092 1.03003,-0.32214 0.24664,0.20939 0.57748,0.44613 0.93799,0.5041 0.31649,0.14136 0.22886,-0.80563 0.61876,-0.47421 0.16196,0.33427 0.30384,0.70629 0.62118,0.93166 0.24438,-0.0315 0.44964,0.28662 0.6275,0.0294 0.27443,-0.16145 0.69426,0.0631 1.03638,0.0219 0.26986,0.26652 1.04494,-0.002 0.59931,-0.38117 -0.10676,-0.38309 -0.23137,-0.76018 -0.4295,-1.11046 0.008,-0.29153 -0.0528,-0.52528 -0.27889,-0.7016 0.0236,-0.29755 0.67185,-0.5939 0.17224,-0.85368 -0.25747,-0.317 0.0128,-0.57784 0.20261,-0.8357 -0.15225,-0.23193 -0.67612,-0.3641 -0.45235,-0.74897 0.0316,-0.51263 -0.46331,-0.52312 -0.81311,-0.58111 -0.28658,-0.15328 -0.55917,0.57451 -0.89206,0.23687 -0.31681,-0.0816 -0.31441,-0.59906 -0.73342,-0.41882 -0.15487,-0.0489 -0.33957,-0.10634 -0.51211,-0.1018 z", +3.16396, 6.28632, +"M -0.0681559 -6.28552 c -0.27397,0.0139 -0.48549,0.2094 -0.46561,0.68988 -0.13806,0.64257 -0.98468,1.02766 -0.7705,1.89187 -0.48185,0.70273 0.94628,1.12941 0.80874,1.464 -0.56632,0.088 -1.05088,0.56396 -1.53894,0.75344 0.69345,0.93338 -1.41697,0.2104 -1.09603,1.20509 0.35057,0.59033 0.4561,1.79086 1.47845,1.37459 0.45409,-0.19336 0.97791,0.0161 0.31471,0.32402 -0.53264,0.2974 -0.72491,1.05029 0.10387,0.95704 0.54052,0.2765 1.10715,0.49524 1.67639,0.62219 -0.14509,0.73633 -1.35981,0.56002 -1.27744,1.47226 -0.11997,0.30673 -0.90705,0.8281 -0.69143,0.97203 0.64811,0.19804 1.34276,0.11448 1.99522,0.29869 0.71434,-0.16557 1.26673,0.36676 1.79782,0.54674 -0.065,-0.01 0.33212,-0.10842 0.24134,-0.11937 0.49432,-0.10903 0.93445,-0.26785 0.43665,-0.76378 -0.0961,-0.57586 -0.91548,-1.29645 -0.12038,-1.6831 -0.4048,-0.51862 0.47421,-1.14462 -0.38966,-1.35703 -0.75428,-0.50253 -0.338,-1.22127 0.38603,-1.49396 0.40886,-0.84209 -0.29071,-1.68516 -0.11525,-2.56832 -0.038,-0.76264 0.0716,-1.5506 -0.0966,-2.2965 -0.33673,-0.72185 -1.00957,-1.22882 -1.66863,-1.66295 -0.20068,-0.36268 -0.65647,-0.64475 -1.00871,-0.62683 z", + ) +scratches=( +1.21098, 12.0742, +"M 0.000565603 -12.0742 c -0.13128,0.38351 -0.75628,0.6648 -1.19561,1.82211 -0.1414,0.37239 0.70808,0.91154 0.5936,1.35961 -0.4133,1.61789 0.0395,2.85731 0.44366,3.80288 0.14158,0.26984 -0.43294,2.12241 -0.31668,2.13113 0.97645,1.62823 0.21172,1.22883 0.13349,3.04219 0.57549,2.43115 0.2224,3.6139 0.12544,6.25854 0.33054,2.36608 -0.73036,1.37715 0.43984,5.73195 0.69244,-3.11326 0.13428,-4.81509 0.0535,-6.02599 0.14464,0.36647 0.22405,-0.58222 0.79938,-1.15807 -0.0141,-0.45337 -0.0246,-0.90699 -0.0494,-1.35961 -0.12372,-0.71424 -0.19704,-1.42486 -0.13769,-2.16524 -0.26034,-0.76585 0.18753,-1.53555 -0.15299,-2.29857 -0.018,-0.66796 0.41747,-1.89258 0.47387,-2.52801 -0.26969,-0.62391 -0.19911,-1.3802 -0.23483,-1.23662 -0.16028,-0.23971 -0.65345,-1.05872 -0.69112,-1.99936 0.0472,-0.699 0.26798,-1.33045 0.18587,-2.0593 0.0935,-0.5642 -0.25882,-1.6984 0.35341,-1.78749 0.55821,-0.1124 -6e-5,-0.993 -0.21304,-0.42272 -0.52661,-0.0264 0.002,-0.62728 -0.20154,-0.94723 -0.17458,-0.0432 -0.29981,0.0337 -0.38438,0.17519 -0.007,-0.1122 -0.0131,-0.22491 -0.0249,-0.33538 z m 0.0394,1.76526 c 0.16024,0.34312 0.14013,0.70048 -0.0104,0.99271 0,-0.34768 0.005,-0.67207 0.0104,-0.99271 z", +1.21091, 19.8304, +"M 0.362522 -19.83 c -0.0425,-0.0104 -0.0565,0.20572 -0.0739,0.68316 -0.17118,4.69021 -0.36552,8.35313 -0.44801,8.44393 -0.0551,0.0606 -0.0981,0.35879 -0.0961,0.66198 0.003,0.45283 0.0497,0.48001 0.26043,0.15399 0.14105,-0.2183 0.25847,-0.63823 0.26046,-0.93327 0.002,-0.29501 0.19851,-0.81366 0.43616,-1.1529 0.17211,-0.24575 0.26287,-0.41037 0.27647,-0.53486 0.0136,-0.12454 -0.0499,-0.20942 -0.18603,-0.29352 -0.25998,-0.1606 -0.30745,-0.89742 -0.19897,-3.07991 0.0784,-1.57793 0.0496,-3.16673 -0.0641,-3.53054 -0.0829,-0.26526 -0.1333,-0.40997 -0.1664,-0.41806 z m -0.52554,11.09286 c -0.0402,-0.006 -0.0675,0.0911 -0.0755,0.28371 -0.0115,0.27886 0.0511,0.43465 0.13901,0.34675 0.0438,-0.044 0.0678,-0.12308 0.0718,-0.21498 h 5.3e-4 c 0.004,-0.0919 -0.013,-0.19595 -0.0512,-0.29145 -0.0317,-0.0792 -0.0606,-0.12035 -0.0848,-0.12403 z m 0.13952,1.125 c -0.007,-9.6e-4 -0.0143,0.001 -0.0217,0.006 -0.11779,0.0728 -0.22286,1.22667 -0.23307,2.56419 -0.004,0.48057 -0.0157,0.84616 -0.032,1.15393 -0.11018,0.1207 -0.22863,0.25041 -0.36277,0.42995 -0.0519,-0.0854 -0.0727,-0.0405 -0.0842,0.12247 -0.15026,0.2185 -0.30279,0.48437 -0.4377,0.83975 -0.11105,0.29241 0.38748,0.68769 0.55189,1.06091 -0.003,0.13173 0.002,0.29377 0.006,0.45631 -0.24328,1.08473 -0.099,1.99333 0.14417,2.75642 0.002,0.0868 0.0117,0.25962 0.0109,0.30282 -0.005,0.2518 0.103,0.52662 0.23926,0.61082 0.0341,0.0211 0.067,0.0269 0.0966,0.0191 0.0622,0.28054 -0.21254,1.2988 -0.31004,1.80195 -0.0228,-0.0699 -0.058,-0.1111 -0.1044,-0.1111 -0.12534,0 -0.22789,0.29714 -0.22789,0.66094 0,0.36375 0.0455,0.66198 0.10128,0.66198 0.0558,0 0.1583,-0.29823 0.22789,-0.66198 0.0132,-0.0692 0.0186,-0.13206 0.0238,-0.19482 0.90374,1.53576 0.17148,1.18929 0.0946,2.97243 0.57549,2.43115 0.22254,3.6139 0.12557,6.25853 0.33054,2.36608 -0.73044,1.37714 0.43976,5.73195 0.69244,-3.11326 0.13401,-4.81509 0.0532,-6.02599 0.14464,0.36647 0.2241,-0.58222 0.79943,-1.15807 -0.0141,-0.45337 -0.0243,-0.90698 -0.0491,-1.3596 -0.12372,-0.71424 -0.19733,-1.42486 -0.13798,-2.16525 -0.26033,-0.76585 0.18756,-1.53554 -0.15296,-2.29856 -0.018,-0.66796 0.41749,-1.89257 0.47387,-2.52802 -0.26969,-0.6239 -0.19889,-1.38019 -0.23461,-1.23661 -0.16028,-0.23971 -0.65375,-1.05872 -0.69143,-1.99936 0.0472,-0.699 0.26815,-1.33046 0.18605,-2.05931 0.0935,-0.5642 -0.25876,-1.6984 0.35346,-1.78749 0.55822,-0.1124 8e-5,-0.99299 -0.21291,-0.42271 -0.10411,-0.005 -0.1661,-0.0335 -0.20153,-0.077 10e-4,-0.13439 10e-4,-0.26153 -10e-4,-0.37982 0.0406,-0.17118 0.0872,-0.35502 10e-4,-0.49041 -0.0109,-0.003 -0.0199,-8.1e-4 -0.0305,-0.003 -0.0297,-0.26499 -0.0801,-0.43408 -0.1633,-0.43408 -0.17193,0 -0.23233,-0.58849 -0.16124,-1.572 0.0586,-0.81059 0.0233,-1.43103 -0.0786,-1.44539 z m -0.66869,13.69167 c -0.0402,-0.006 -0.068,0.091 -0.076,0.2837 -0.0115,0.27886 0.0511,0.43465 0.13901,0.34675 0.0439,-0.044 0.0684,-0.12256 0.0723,-0.21446 0.004,-0.0919 -0.013,-0.19647 -0.0512,-0.29197 -0.0317,-0.0792 -0.0601,-0.12034 -0.0842,-0.12402 z m 0,1.05833 c -0.0402,-0.006 -0.068,0.0911 -0.076,0.28371 -0.0115,0.27886 0.0511,0.43465 0.13901,0.34675 0.0439,-0.044 0.0684,-0.12308 0.0723,-0.21498 0.004,-0.0919 -0.013,-0.19595 -0.0512,-0.29145 -0.0317,-0.0792 -0.0601,-0.12035 -0.0842,-0.12403 z", +1.49495, 18.3425, +"M -0.389083 -18.3412 c -0.0137,-0.002 -0.0282,-0.002 -0.0419,0.002 -0.10038,0.0279 -0.19454,0.22976 -0.24185,0.70177 -0.26567,1.67026 -0.34483,3.24287 -0.40257,4.9351 -0.13546,0.59246 -0.11445,1.16489 -0.0517,1.73632 -0.0585,0.4088 -0.0804,0.92918 0.002,1.32964 -0.12052,1.75209 -0.60079,3.29057 -0.2346,5.20847 0.16549,1.86259 -0.34446,4.07682 0.14933,5.25032 0.0936,0.18527 0.19288,-0.31455 0.29921,-0.15916 0.13603,-0.0189 0.22781,-0.1762 0.28991,-0.41806 0.0507,0.92595 0.15436,1.84189 0.32038,2.69544 0.53221,-0.0551 0.41124,0.9134 0.20775,1.79317 0.51184,0.22894 0.34367,2.25374 0.002,2.89388 -0.0368,0.48543 -0.0891,1.00555 -0.13539,1.53634 0.0369,-1.13406 0.0173,-2.27104 -0.57621,-2.24896 -0.21034,3.7268 -0.29522,7.48925 -0.0279,11.21121 0.34301,0.69517 0.62318,-0.48978 0.76737,-0.70229 -0.15983,-1.72878 -0.22984,-3.51098 -0.2041,-5.28185 0.0306,0.26264 0.0729,0.51868 0.13383,0.76275 0.76367,0.6551 0.19733,-2.26198 0.72554,-2.8298 0.19862,-1.54766 0.11464,-3.48741 0.30178,-5.14232 -0.27355,-1.32725 -0.3366,-3.24034 0.42067,-3.55069 0.7031,-1.9288 -0.89779,-1.8191 -0.56743,-3.27577 0.0274,-1.9927 -0.44524,-3.31209 -0.79632,-4.81779 -0.27045,1.00189 -0.45267,2.49784 -0.54364,3.82767 -0.0214,-0.31841 -0.0436,-0.64831 -0.0615,-0.91622 -0.0602,-1.06935 0.3048,-2.00573 0.18499,-3.34967 0.15293,-0.0682 0.31221,-0.28396 0.43977,-0.72089 0.4395,-1.55568 -0.22239,-3.13405 -0.0129,-4.73201 -0.24661,-1.51874 -0.005,-3.03839 -0.11162,-4.46122 0.17729,-0.52717 -0.0266,-1.24147 -0.23461,-1.27745 z m 0.33951,11.62978 c 2.4e-4,-9.5e-4 2.7e-4,-0.002 5.1e-4,-0.003 h -0.002 c 2.4e-4,0.001 7.7e-4,0.002 10e-4,0.003 z", +1.53299, 18.3425, +"M -0.351212 -18.3412 c -0.0137,-0.002 -0.0281,-0.002 -0.0418,0.002 -0.10036,0.0279 -0.19452,0.22975 -0.24183,0.70176 -0.26567,1.67026 -0.34483,3.24287 -0.40256,4.9351 -0.13547,0.59246 -0.11444,1.1649 -0.0517,1.73633 -0.0484,0.33819 -0.0679,0.74913 -0.0279,1.10898 -0.19071,1.02501 -0.32009,2.2804 -0.38034,3.36517 -0.0761,1.42435 -0.0331,2.95284 0.15555,4.37751 -0.0636,1.14999 -0.12615,2.23412 0.16949,2.93677 0.0697,0.13803 0.14251,-0.10384 0.21913,-0.17208 -0.005,0.0233 -0.01,0.047 -0.015,0.0703 0.51186,0.22893 0.34366,2.25375 0.002,2.89388 -0.1252,1.65317 -0.43757,3.69316 -0.0424,5.2772 0.0544,0.0467 0.10184,0.0733 0.14364,0.0858 -0.12761,3.049 -0.14573,6.11235 0.0724,9.1488 0.343,0.69517 0.62267,-0.48977 0.76686,-0.70228 -0.15983,-1.72878 -0.22934,-3.51098 -0.20359,-5.28185 0.0306,0.26264 0.0724,0.51867 0.13332,0.76274 0.76367,0.6551 0.19733,-2.26198 0.72554,-2.8298 0.19862,-1.54766 0.11465,-3.48741 0.30179,-5.14232 -0.27356,-1.32725 -0.3361,-3.24034 0.42116,-3.55069 0.7031,-1.9288 -0.89829,-1.8191 -0.56793,-3.27577 0.0274,-1.9927 -0.44524,-3.31209 -0.79634,-4.81779 -0.0429,0.15891 -0.0825,0.33356 -0.12092,0.5147 -0.005,-0.41675 -0.0275,-0.80863 -0.0698,-1.17513 0.0749,-0.11708 0.14656,-0.28021 0.21035,-0.49867 0.4395,-1.55568 -0.22191,-3.13405 -0.0124,-4.73201 -0.24662,-1.51874 -0.005,-3.0384 -0.11163,-4.46123 0.1773,-0.52717 -0.0266,-1.24146 -0.23461,-1.27744 z m 0.33952,11.62978 c 2.6e-4,-9.5e-4 2.9e-4,-0.002 5.3e-4,-0.003 h -0.002 c 2.4e-4,0.001 8e-4,0.002 10e-4,0.003 z m -0.0956,9.67279 c 0.34693,0.1444 0.2326,0.99256 0.0522,1.77251 0.51183,0.22894 0.34374,2.25373 0.002,2.89388 -0.0368,0.48543 -0.0891,1.00555 -0.13539,1.53634 0.0309,-0.95055 0.0204,-1.90052 -0.33279,-2.17093 0.0287,-0.40839 0.0871,-0.76874 0.23823,-0.93121 0.1206,-0.9398 0.13944,-2.0231 0.17568,-3.10059 z", +1.20633, 23.4716, +"M 1.20633 -23.4715 c -0.5053,0.33607 -0.23791,1.76733 -0.95755,1.18391 l -0.14986,-0.19483 c -0.008,-0.0416 -0.016,-0.007 -0.0238,0.0713 v 5.2e-4 c 0.18164,0.13239 0.32232,0.3276 0.39534,0.62063 0.0427,0.088 0.061,0.19852 0.061,0.32143 -0.002,0.4222 -0.235,0.98918 -0.51157,1.29759 -0.021,1.53032 -0.0353,3.79606 -0.046,6.48384 0.0137,0.012 0.0215,0.0282 0.0155,0.0491 -0.001,0.008 -0.0116,0.0176 -0.0155,0.0264 -0.003,0.66229 -0.002,1.56265 -0.005,2.27222 -0.26217,1.91668 -0.35258,3.7582 -0.4196,5.72264 -0.4378,1.91459 0.36031,3.66604 0.19897,5.64617 -0.22442,0.63928 -0.0753,1.29189 0.201,1.54461 -0.003,11.37386 0.0137,22.45681 -0.006,21.87567 0.14362,-0.69488 -0.32321,-2.78058 0.72811,-2.35232 -0.12814,0.70466 0.19505,1.16669 0.36795,1.67432 -0.0668,-2.83822 -0.14226,-12.31522 -0.15967,-21.95783 0.0124,-0.0381 0.0257,-0.0691 0.0377,-0.11007 0.42336,-1.49849 0.0674,-3.0137 -0.0413,-4.54288 2.1e-4,-0.48242 10e-4,-0.94352 0.002,-1.42058 0.007,-0.0756 0.0123,-0.15121 0.0222,-0.22686 -0.008,-0.051 -0.0143,-0.102 -0.0217,-0.15296 0.008,-5.2851 0.0362,-10.20918 0.10488,-13.52062 -0.0288,0.0211 -0.0623,0.0406 -0.10282,0.0573 -0.22574,-0.68079 -0.0267,-0.7215 0.11576,-0.56947 0.0507,-2.17256 0.11869,-3.59653 0.20978,-3.79925 z m -2.21742,27.16423 c -0.21037,3.7268 -0.29472,7.48924 -0.0274,11.2112 0.343,0.69518 0.62317,-0.48977 0.76737,-0.70228 -0.19468,-2.10548 -0.25887,-4.29063 -0.17518,-6.43733 -0.14325,-1.11457 0.39523,-4.10729 -0.5643,-4.07159 z", +1.19276, 25.078, +"M -0.421376 -3.88054 c -0.27631,0.25272 -0.42545,0.90533 -0.20103,1.54461 0,0.0137 0,0.0271 0.003,0.0408 -0.0445,-0.0116 -0.0846,-0.0199 -0.13695,-0.0377 l -0.11678,-0.0403 0.0201,0.0682 c 0.1305,0.45681 0.22437,0.8044 0.24133,0.92553 0,0.015 0,0.03 -0.003,0.045 -0.003,8e-4 -0.005,0.002 -0.0109,-0.005 0.003,0.20217 -0.0377,0.38449 -0.14211,0.45011 0.0449,0.007 0.0822,0.0209 0.11626,0.0382 -0.0299,0.3032 -0.0693,0.6025 -0.11057,0.90072 -0.0932,0.0649 -0.2028,0.0993 -0.32401,0.078 -0.14565,0.51493 0.25239,1.08423 -0.0393,1.56063 0.0722,0.17488 0.13539,0.34219 0.17312,0.50901 0.003,0.14782 0.0111,0.29635 0.0254,0.44545 -0.0156,0.11938 -0.0498,0.24159 -0.11213,0.36897 0.24339,0.56784 0.14218,1.21602 0.18034,1.82263 0.0321,0.60964 -0.054,1.23666 0.0951,1.83296 0.21513,0.29946 -0.39643,0.31017 -0.11369,0.67955 0.039,0.74934 0.21111,1.48345 0.17364,2.23707 0.0111,0.43606 0.0354,1.12135 -0.22066,1.29191 0.64399,0.51467 -0.31361,0.91939 -0.18965,1.4857 0.0477,0.49885 0.30371,1.02019 0.0961,1.48363 -0.0396,0.59756 -0.0501,1.20341 0.21238,1.7234 0.0946,0.62129 -0.0953,1.21664 -0.0124,1.84589 -0.0453,0.5497 0.3098,1.19228 -0.0542,1.66449 -0.19063,0.44185 0,0.91783 -0.19327,1.33791 -0.0311,0.51712 -0.0706,1.05694 -0.0429,1.57355 -0.0493,0.5227 -0.0711,1.06009 -0.003,1.58078 0.079,0.51085 0.0409,0.93085 -0.0816,1.42058 0.0312,0.0244 0.0439,0.0586 0.0692,0.0863 l 1.44333,-3.35897 c -0.0392,-0.12324 -0.10192,-0.24394 -0.21963,-0.35346 -0.0796,-0.4752 0.0952,-0.97383 0.23461,-1.4056 0.16936,0.27841 0.1652,0.98193 0.50075,1.20509 -0.0911,-0.20272 -0.15912,-1.62669 -0.20982,-3.79925 -0.14245,0.15203 -0.34149,0.11132 -0.11575,-0.56947 0.0405,0.0167 0.074,0.0363 0.10284,0.0574 -0.006,-0.28889 -0.0101,-0.65271 -0.0156,-0.96532 0.0822,-0.14175 0.16769,-0.28152 0.24908,-0.42891 -0.0214,-0.20087 -0.14751,-0.3117 -0.26252,-0.4191 -0.005,-0.33733 -0.0116,-0.6269 -0.0161,-0.98547 0.0805,-0.35753 0.10441,-0.72698 0.19428,-1.08055 0.0366,-0.47155 -0.0944,-0.90339 -0.21703,-1.34462 -0.0209,-2.51731 -0.0327,-5.33076 -0.0372,-8.29665 0.007,-0.051 0.0138,-0.10197 0.0217,-0.15297 -0.01,-0.0757 -0.0153,-0.15126 -0.0222,-0.22685 0,-0.47706 -0.003,-0.93817 -0.003,-1.42059 0.0257,-0.36017 0.0648,-0.71939 0.10441,-1.07797 0.10797,-0.15575 0.16115,-0.31721 0.0486,-0.4532 0.0116,-0.11133 0.0217,-0.22266 0.032,-0.33383 0.56079,-1.63193 0.75962,-1.19491 0.0356,-1.64228 -0.0274,-0.34604 -0.082,-0.69129 -0.1793,-1.0356 -0.0119,-0.041 -0.0254,-0.072 -0.0377,-0.11007 0.0175,-9.64261 0.0929,-19.11961 0.15967,-21.95783 -0.1729,0.50763 -0.49607,0.96966 -0.36793,1.67432 -0.80568,3.15608 0.55147,3.77736 -0.72101,19.52334 z", +0.670938, 8.19849, +"M -0.407338 -8.00763 c -0.0754,0.25511 -0.0986,0.76103 -0.002,1.48952 -0.15641,1.5163 0.005,3.60812 -0.2616,5.1103 0.11078,2.14938 0.16104,4.46253 0.31355,6.6328 0.0244,0.8744 0.0171,4.68192 0.38457,2.0748 0.22082,-1.3347 0.65056,-2.59474 0.58926,-4.39985 0.27685,-1.75982 -0.59717,-2.80885 -0.47885,-4.72632 -0.0715,-1.81309 0.41368,-3.66693 -0.0322,-5.23362 -0.11395,-1.10094 -0.38606,-1.37269 -0.51194,-0.94764 z", +0.670938, 12.9232, +"M -0.407338 -12.6223 c -0.0754,0.40213 -0.0986,1.19961 -0.002,2.34792 -0.15641,2.39013 0.005,5.68743 -0.2616,8.05531 0.11078,3.38804 0.16104,7.03423 0.31355,10.4552 0.0244,1.37832 0.0171,7.38006 0.38457,3.27049 0.22082,-2.10387 0.65056,-4.09006 0.58926,-6.93544 0.27685,-2.77398 -0.59717,-4.42755 -0.47885,-7.45005 -0.0715,-2.85794 0.41368,-5.78013 -0.0322,-8.24969 -0.11395,-1.7354 -0.38606,-2.16376 -0.51194,-1.49375 z", +0.753237, 9.39521, +"M -0.337287 -9.3947 c -0.0586,-0.007 -0.11261,0.0579 -0.15195,0.19068 h -5.1e-4 c -0.0754,0.25511 -0.0987,0.76083 -0.002,1.48932 -0.15642,1.51629 0.005,3.6081 -0.26149,5.11028 0.10925,2.11959 0.16037,4.39716 0.308,6.5412 -0.63693,1.04513 0.47877,2.68047 -0.28112,3.96927 0.31912,0.41893 0.25879,2.08373 1.06919,1.26659 0.80684,-0.22766 0.17536,-1.16368 0.17414,-2.66186 -0.30014,-0.12043 -0.46132,-0.32959 -0.54001,-0.58446 0.22741,-1.27036 0.61566,-2.49792 0.55705,-4.22299 0.27686,-1.75983 -0.59735,-2.80886 -0.47902,-4.72633 -0.0715,-1.81309 0.41383,-3.6671 -0.032,-5.23379 -0.0783,-0.7569 -0.23124,-1.12184 -0.36017,-1.13791 z", +1.73753, 21.1382, +"M 0.27454 -21.1377 c -0.0586,-0.007 -0.11258,0.0573 -0.15192,0.19016 l -5e-4,5.2e-4 c -0.0754,0.25511 -0.0987,0.76083 -0.002,1.48932 -0.15452,1.498 -4.5e-4,3.55549 -0.25371,5.05343 -0.15516,0.069 -0.19791,0.18561 -0.17881,0.37363 0.093,0.91418 -0.0185,1.41725 -0.27855,1.25677 -0.1455,-0.0898 -0.26453,-0.51355 -0.26459,-0.94155 3e-5,-0.49146 -0.137,-0.77825 -0.37155,-0.77825 -0.2589,0 -0.40127,0.42059 -0.47077,1.38907 -0.0191,0.26627 -0.0317,0.52238 -0.0367,0.76739 -0.0365,1.71506 0.26421,2.89312 0.85627,3.30781 0.5721,0.40073 0.5816,0.49454 0.39946,3.88917 -0.10265,1.91329 -0.16684,4.25278 -0.14263,5.19865 0.0283,1.10976 -0.0992,1.98889 -0.35968,2.47788 -0.50411,0.94668 -0.52832,1.39496 -0.0542,1.00149 0.28816,-0.23923 0.33626,1.20389 0.27647,8.26771 -0.0584,6.89886 -0.002,8.65365 0.28887,9.05165 0.33266,0.45496 0.37624,0.41244 0.55449,-0.53795 0.10638,-0.56717 0.0821,-1.77797 -0.0543,-2.6908 -0.13639,-0.91282 -0.17248,-1.61256 -0.0796,-1.55546 0.0928,0.0573 0.18032,-0.51603 0.19431,-1.27434 0.0252,-1.36423 0.11504,-1.96676 0.60204,-4.02456 0.13776,-0.58206 0.29511,-3.3592 0.34933,-6.1712 0.0542,-2.81205 0.20923,-5.22336 0.34467,-5.35884 0.13546,-0.13545 0.26493,-0.75165 0.28734,-1.36943 0.0309,-0.85348 -0.0157,-0.99638 -0.19431,-0.59428 -0.17402,0.392 -0.23993,0.42036 -0.25374,0.11007 -0.0102,-0.23043 0.0657,-0.50284 0.16846,-0.60565 0.1623,-0.16235 0.15642,-3.36764 -0.0145,-8.03723 -0.0279,-0.76399 0.0292,-1.38905 0.12663,-1.38906 0.0973,-1e-5 0.17671,-0.41671 0.17671,-0.92604 0,-0.90243 -0.0261,-0.92604 -1.04799,-0.92605 -0.0114,0 -0.0199,4.9e-4 -0.031,5.2e-4 0.001,-0.0895 0.002,-0.17939 0.008,-0.27285 -0.0715,-1.81309 0.41386,-3.6671 -0.032,-5.23379 -0.0784,-0.7569 -0.23125,-1.12184 -0.36021,-1.13791 z", +0.90975, 7.69929, +"M 0.5118 4.3328 0.0773,-1.89734 c -0.78022,-0.65432 -0.7026,-1.85535 0.0991,-2.36604 l 0.22155,-5.30816 c -0.0671,-0.11321 -0.12273,-0.0764 -0.193,-0.25561 -0.39953,-0.40971 -0.50958,-1.87041 -0.78623,-2.16685 l -0.14591,-0.0381 c -0.0432,0.0195 -0.10273,0.16373 -0.15446,0.23376 l -0.5399,11.53632 c 0.09,-0.0554 0.16763,-0.042 0.26343,-0.13249 0.2235,1.06334 -0.41852,2.98144 0.13712,3.761 1.10534,-0.76211 0.3114,-2.4459 1.02162,-3.36601 z", +0.909985, 21.0802, +"M 0.069295 -21.0802 c -1.60221,0.95118 0.0978,2.94503 -0.79529,4.45968 0.31909,0.41893 0.25829,2.08373 1.06866,1.26659 0.80687,-0.22766 0.17589,-1.16368 0.17467,-2.66185 -1.23089,-0.49394 -0.14943,-2.46581 -0.44751,-3.06442 z m -0.28475,6.45077 c -0.0432,0.0195 -0.10276,0.16407 -0.15449,0.2341 l -0.54004,11.53624 c 0.09,-0.0554 0.16777,-0.0423 0.26355,-0.13281 0.22352,1.06334 -0.41867,2.98145 0.13695,3.76101 0.11266,-0.0777 0.20122,-0.16697 0.27803,-0.262 -0.02,0.26698 -0.062,0.40312 -0.11938,0.34572 -0.0852,-0.0852 -0.1323,0.67721 -0.1323,2.13269 0,0.59617 -0.0104,1.04983 -0.0263,1.41593 -0.043,0.0648 -0.0864,0.12977 -0.12454,0.18552 -0.0367,0.0537 -0.0978,0.0547 -0.11316,0.11265 -0.0217,0.0815 0.0922,0.078 0.0744,0.15503 -0.0144,0.0623 -0.10165,-0.009 -0.1116,0.0537 -0.0128,0.0803 0.18314,0.1196 0.17,0.20206 -0.007,0.0452 -0.0103,0.091 -0.009,0.13746 -9.3e-4,1.7e-4 -0.002,0.003 -0.003,0.003 h -5.1e-4 c -0.0783,0 -0.1189,0.16869 -0.091,0.37517 0.0279,0.20649 0.12144,0.35145 0.20825,0.32194 0.003,-9.4e-4 0.005,0.001 0.008,0.001 0.0106,0.0622 0.0188,0.12677 0.0248,0.19224 10e-4,0.0292 0.002,0.0591 0.004,0.0884 0.002,0.0585 0.005,0.11669 0,0.17931 8.2e-4,0.0518 -0.0608,0.12352 -0.0594,0.17312 0.001,0.0496 0.0533,0.0771 0.0553,0.12454 0.002,0.0475 -0.046,0.11479 -0.0434,0.16019 0.002,0.0335 0.0533,0.17164 0.0863,0.27079 0.0126,0.33511 0.0159,0.66968 -0.007,1.00149 -0.0129,0.0186 -0.027,0.0231 -0.0424,0.008 -0.0679,-0.068 -0.10681,0.27415 -0.11419,0.92501 -0.066,0.23273 -0.1523,0.46252 -0.27183,0.68678 0.1062,0.21699 0.19947,0.37376 0.28527,0.49919 0.009,0.30425 0.0207,0.49363 0.0408,0.46354 -0.008,0.28451 -0.0302,0.75484 -0.0398,1.26349 -0.10361,0.44818 -0.1356,1.31544 -0.0109,1.44022 0.14782,0.14777 0.17589,1.00278 0.0796,2.44481 -0.0191,0.28562 -0.0175,0.6403 -0.003,0.9586 -0.0617,0.0399 -0.12502,0.089 -0.19225,0.1571 0.0518,0.38782 0.074,0.81499 0.0935,1.24953 -0.004,0.003 -0.009,0.003 -0.0124,0.007 -0.0863,0.0863 -0.11387,0.41392 -0.0672,0.79169 0.0438,0.35436 0.0791,0.9009 0.0791,1.21439 0,0.46794 0.0655,0.57783 0.36483,0.61443 0.0158,0.002 0.023,0.001 0.0372,0.003 0.0344,0.0746 0.0714,0.14651 0.11266,0.21445 0.15124,-0.0321 0.23686,-0.14678 0.29507,-0.28525 0.0212,0.0538 0.0649,0.0638 0.11575,0.0129 0.0515,-0.0515 0.0774,-0.33668 0.0873,-0.67231 0.29014,-0.88165 0.123,-3.135 -0.53848,-3.37654 l -5e-4,5.2e-4 c -0.0427,-0.0173 -0.0878,-0.0231 -0.13489,-0.0207 0.002,-0.84663 0.0224,-1.14112 0.0972,-1.12552 0.002,4.9e-4 0.005,0.004 0.008,0.005 0.1579,0.11986 0.38113,0.13515 0.67231,-0.0475 -0.022,-0.60336 -0.25202,-1.93024 -0.50488,-2.00556 -0.0135,-0.004 -0.027,-0.005 -0.0408,-10e-4 0.0589,-0.0887 0.12261,-0.19962 0.19431,-0.34623 -0.0435,-0.19088 -0.0688,-0.3762 -0.0847,-0.56017 0.0114,0.004 0.0236,0.008 0.0362,0.016 0.24339,0.15111 0.38658,-0.25127 0.37258,-1.04593 -0.006,-0.35248 0.0815,-0.86868 0.19431,-1.14722 0.12518,-0.30915 0.16568,-0.65349 0.10388,-0.88367 -0.0556,-0.20738 -0.10724,-0.52146 -0.11422,-0.69814 -0.007,-0.17668 -0.10248,-0.32443 -0.21188,-0.32763 -0.0382,-9.7e-4 -0.0689,-0.0206 -0.0946,-0.0522 0.007,-0.0407 0.0134,-0.0917 0.0212,-0.12815 0.0171,-0.0261 0.0359,-0.0485 0.0511,-0.0729 l 5.3e-4,-0.002 -0.047,-3.21014 c 0.0994,-0.6389 0.22457,-1.57045 0.1824,-1.57045 -0.0641,0 -0.11626,-0.10246 -0.11626,-0.22738 0,-0.12493 0.0594,-0.16741 0.13229,-0.0946 0.0729,0.0729 0.1328,-0.0128 0.1328,-0.18966 0,-0.17699 -0.0574,-0.3783 -0.12711,-0.44803 -0.0698,-0.0697 -0.0933,-0.26863 -0.0522,-0.44184 0.0465,-0.19637 -0.005,-0.3147 -0.13798,-0.3147 -0.11716,0 -0.21341,-0.13706 -0.21341,-0.30438 0,-0.16734 -0.0396,-0.47302 -0.0884,-0.67903 -0.0605,-0.2553 -0.0396,-0.32487 0.0661,-0.21911 0.10713,0.10714 0.15502,-0.0773 0.15502,-0.59582 0,-0.65769 0.18227,-0.88497 0.0692,-0.89452 -0.0382,-0.003 -0.10946,0.0186 -0.23151,0.0563 0.0311,-0.6426 0.004,-1.30921 0.36587,-1.77818 l -5e-4,-5.2e-4 0.077,-1.89756 c -0.78023,-0.65432 -0.70247,-1.85506 0.0992,-2.36574 l 0.22169,-5.30821 c -0.0671,-0.11321 -0.123,-0.0766 -0.19328,-0.2558 -0.39952,-0.40971 -0.50935,-1.87035 -0.78599,-2.16679 z m 0.0336,28.36158 c -0.0146,0.0334 -0.0293,0.0897 -0.0439,0.13384 -0.006,-0.0264 -0.0126,-0.0554 -0.0196,-0.0832 0.0197,-0.011 0.0416,-0.0302 0.0636,-0.0506 z", +0.70928, 12.466, +"M 0.18321 -12.4659 c -0.10784,-0.006 -0.2246,0.65736 -0.33539,2.3642 -0.2559,1.61556 0.0378,4.44866 0.86146,3.05511 -0.022,-1.62742 -0.25194,-5.20773 -0.50488,-5.40898 l -0.002,-0.002 c 4.3e-4,3.1e-4 6.4e-4,0.002 0.001,0.002 -0.007,-0.006 -0.0136,-0.01 -0.0207,-0.0103 z m -0.37155,7.36079 c -0.0907,0.007 -0.12097,0.50508 -0.0698,1.9544 -0.26241,4.289499 0.38667,9.178069 -0.45114,13.416749 1.02915,5.67045 1.03722,-1.11191 1.24077,-3.68918 0.0171,-0.0704 0.0353,-0.13161 0.0506,-0.1974 l 0.001,-0.005 -0.0532,-9.785969 c -0.32449,-0.66216 -0.58576,-1.7036 -0.71829,-1.69395 z", +0.791801, 10.8742, +"M 0.37094 -10.8739 c -0.0383,-0.003 -0.10962,0.0185 -0.23202,0.0563 -0.32348,0.10008 -0.3638,0.20621 -0.3638,0.95808 0,0.50923 -0.053,0.793 -0.13282,0.71313 -0.0852,-0.0852 -0.13229,0.67721 -0.13229,2.13269 0,0.59618 -0.0104,1.04983 -0.0263,1.41593 -0.043,0.0648 -0.0864,0.12977 -0.12454,0.18552 -0.0367,0.0537 -0.0978,0.0547 -0.11316,0.11266 -0.0217,0.0815 0.0922,0.078 0.0744,0.15503 -0.0144,0.0623 -0.10166,-0.009 -0.11161,0.0537 -0.0128,0.0803 0.18315,0.11959 0.17,0.20205 -0.007,0.0452 -0.01,0.091 -0.009,0.13746 -9.3e-4,1.7e-4 -0.002,0.003 -0.003,0.003 h -5.3e-4 c -0.0783,0 -0.11885,0.16869 -0.0909,0.37517 0.0279,0.20648 0.12145,0.35145 0.20826,0.32195 0.003,-9.4e-4 0.005,0.001 0.008,0.001 0.0245,0.14353 0.0418,0.2935 0.0284,0.45992 8e-4,0.0518 -0.0608,0.12351 -0.0594,0.17311 10e-4,0.0496 0.0533,0.0771 0.0553,0.12454 0.002,0.0475 -0.046,0.11479 -0.0434,0.1602 0.003,0.0454 0.11377,0.32348 0.11679,0.3669 0.0104,0.14968 0.0239,0.28357 0.0383,0.40928 -0.0199,0.3693 -0.0606,0.56165 -0.11834,0.50384 -0.0843,-0.0844 -0.12634,0.43821 -0.11526,1.43558 0.009,0.84768 0.0233,1.18693 0.0553,1.13894 -0.008,0.28451 -0.0302,0.75484 -0.0398,1.26349 -0.10361,0.44818 -0.13563,1.31545 -0.0109,1.44023 0.1478,0.14777 0.1759,1.00278 0.0796,2.44481 -0.0316,0.47191 -0.0123,1.14721 0.0434,1.5012 0.0959,0.60757 0.19674,0.59567 0.19274,-0.21446 -0.006,-1.40297 0.0164,-1.64026 0.14005,-1.5167 0.0647,0.0647 0.19682,-0.0363 0.29353,-0.22479 0.14898,-0.29044 0.13581,-0.38968 -0.0848,-0.65061 -0.14306,-0.1693 -0.24148,-0.32752 -0.21857,-0.35192 0.0229,-0.0244 -0.002,-0.23205 -0.0569,-0.46095 -0.0157,-0.0663 -0.0256,-0.11223 -0.0398,-0.16847 0.10073,-0.0561 0.22942,-0.23081 0.39328,-0.56585 -0.0435,-0.19088 -0.0689,-0.37621 -0.0848,-0.56018 0.0114,0.004 0.0236,0.008 0.0362,0.016 0.24339,0.15111 0.38658,-0.25127 0.37259,-1.04593 -0.006,-0.35248 0.0815,-0.86867 0.19428,-1.14721 0.12517,-0.30915 0.16568,-0.65349 0.10387,-0.88367 -0.0556,-0.20738 -0.1072,-0.52147 -0.11419,-0.69815 -0.007,-0.17668 -0.10247,-0.32443 -0.21188,-0.32763 -0.0396,-0.001 -0.0716,-0.0212 -0.0977,-0.0548 -0.006,-0.51267 -0.0453,-1.07976 -0.14057,-1.72237 -0.0104,-0.12615 -0.027,-0.22448 -0.0444,-0.32195 0.004,-0.009 0.006,-0.0184 0.0104,-0.0274 0.0792,-0.15448 0.12295,-0.41373 0.0971,-0.57619 -0.0258,-0.16259 -0.0261,-0.2425 -5.3e-4,-0.17828 0.0256,0.0642 0.35351,-2.15491 0.2894,-2.15491 -0.0641,0 -0.11628,-0.10246 -0.11628,-0.22738 0,-0.12493 0.0594,-0.16745 0.13229,-0.0946 0.0729,0.0729 0.13282,-0.0128 0.13282,-0.18965 0,-0.17699 -0.0574,-0.3783 -0.12713,-0.44803 -0.0698,-0.0697 -0.0933,-0.26863 -0.0522,-0.44184 0.0465,-0.19637 -0.005,-0.31471 -0.13798,-0.31471 -0.11715,0 -0.21344,-0.13705 -0.21344,-0.30437 0,-0.16734 -0.0396,-0.47302 -0.0884,-0.67903 -0.0605,-0.2553 -0.0396,-0.32487 0.0661,-0.21911 0.10713,0.10713 0.15504,-0.0773 0.15504,-0.59583 0,-0.6594 0.18355,-0.88659 0.0687,-0.89503 z m -0.77409,10.7518 c 0.008,0.0177 0.0132,0.12011 0.0176,0.27698 -0.03,0.0588 -0.0609,0.11849 -0.0967,0.18449 0.0414,-0.31691 0.0656,-0.49083 0.0791,-0.46147 z m -0.14833,8.34212 c -0.0352,-0.005 -0.064,0.002 -0.0842,0.0222 -0.0863,0.0863 -0.1139,0.41391 -0.0672,0.79168 0.0438,0.35437 0.079,0.90091 0.079,1.2144 0,0.46794 0.0655,0.57783 0.36484,0.61443 0.27919,0.0342 0.31816,-0.004 0.16586,-0.16433 -0.17018,-0.17883 -0.16531,-0.21039 0.0331,-0.21239 0.12763,-0.002 0.23204,0.0988 0.23204,0.22376 0,0.1249 0.0583,0.16907 0.1297,0.0977 0.14147,-0.14143 0.0967,-2.02722 0.0274,-1.95802 -0.0692,0.0692 -0.28162,-0.0722 -0.47181,-0.31419 -0.14263,-0.18155 -0.30326,-0.30098 -0.40875,-0.31523 z", +1.07687, 9.8574, +"M -0.468434 -9.85737 c 0.35117,1.50705 0.82497,2.82661 0.79752,4.82073 -0.33038,1.45668 1.2704,1.34706 0.56728,3.27586 -0.75726,0.31035 -0.69421,2.22344 -0.42064,3.55069 -0.18715,1.65491 -0.10345,3.59501 -0.30207,5.14267 -0.52822,0.56782 0.0385,3.48463 -0.72515,2.82953 -0.39519,-1.58404 -0.0832,-3.62405 0.042,-5.27722 0.3416,-0.64014 0.50986,-2.66493 -0.002,-2.89386 0.20349,-0.87978 0.32479,-1.84821 -0.20741,-1.79313 -0.33006,-1.69697 -0.41673,-3.64057 -0.32176,-5.41903 0.0788,-1.41878 0.27531,-3.13331 0.5735,-4.23627 z", +2.2155, 17.1585, +"M 0.126795 -17.1552 c -0.0862,0.0295 -0.10147,0.26481 0.15555,0.17053 -0.0201,-0.0566 -0.0417,-0.0964 -0.0625,-0.12402 -0.0181,-0.0239 -0.0356,-0.0379 -0.0522,-0.045 h -5.3e-4 c -0.0144,-0.006 -0.0281,-0.006 -0.0403,-0.002 z m -0.11575,1.07797 c -0.2067,8.5e-4 -0.36484,0.15284 -0.2589,0.56792 -0.78081,0.4633 -0.40071,1.63009 -0.15092,2.37195 -0.26111,0.38499 -0.0968,0.69767 0.0336,0.94413 0.003,0.15192 0.005,0.3124 0.008,0.46612 -0.0424,0.0281 -0.0954,0.0546 -0.17159,0.078 -0.38372,0.36544 -0.96946,0.62763 -0.47024,1.2516 0.61513,-0.37333 -0.39214,1.24462 0.37827,1.11983 0.58034,0.63299 -0.16417,1.58188 -0.29199,0.99788 -0.36309,0.82279 -0.74943,2.75375 0.30697,2.90059 0.65154,0.38277 -1.22994,0.47827 -0.32247,1.03353 0.12882,0.11405 0.2826,0.54247 0.4527,0.34778 0.0882,-0.10334 0.15261,-0.21193 0.20463,-0.32349 0.004,0.47543 0.008,0.94591 0.0124,1.42162 -0.1546,-0.15317 -0.30245,-0.264 -0.41445,-0.27802 -0.19592,-0.0245 -0.2839,0.23429 -0.11266,1.02733 0.39989,1.176989 -1.12924,1.251499 -0.25992,2.377629 0.20293,1.10216 -0.30896,2.46141 -0.11473,3.72122 -0.26596,1.39175 1.38674,0.67395 0.53589,2.24534 -0.60793,1.13701 0.0733,2.34518 0.5674,3.05614 -0.24691,0.6918 -0.4676,-0.15486 -0.46559,-0.52399 -0.52125,-0.0811 -0.56888,0.96424 -0.10543,1.27589 0.44555,0.85109 -0.8023,1.42473 0.10078,2.29133 0.72273,0.54138 -0.004,1.44593 -0.46149,0.78445 -0.46868,0.32104 0.99774,0.86268 0.33591,1.56889 -0.12715,0.56519 0.112,1.93607 0.42477,0.65009 0.31115,-0.77077 0.98546,-1.04884 1.25005,-1.8526 -0.41074,-0.17674 -0.96338,-0.29486 -0.21032,-0.51986 0.87294,-0.30163 0.89675,-2.52384 0.20465,-3.22254 0.0979,-0.4361 -0.17264,-0.70085 -0.44082,-0.96635 0.0414,-0.83119 0.0704,-1.69667 0.11163,-2.32389 0.0512,-0.6609 0.0902,-1.54857 0.11988,-2.55954 0.17206,-0.23191 0.19942,-0.56928 0.0243,-0.8847 0.002,-0.0714 0.002,-0.15084 0.004,-0.22324 0.21306,-0.76122 0.28736,-1.5621 0.0243,-2.17454 0.002,-0.29119 0.003,-0.5884 0.004,-0.88677 0.22603,-0.40201 0.27916,-1.31894 0.0305,-1.5658 -0.008,-0.008 -0.0188,-0.0119 -0.0279,-0.0186 -0.0212,-4.586229 -0.18235,-9.480359 -0.49194,-11.419969 0.21301,-0.40925 0.4383,-0.83985 0.42579,-1.43867 0.27437,-0.6706 -0.68641,-0.14121 -0.21238,-0.89969 -0.0211,-0.10544 -0.0977,-0.20384 -0.19741,-0.27854 l -0.001,-10e-4 c -0.11229,-0.0842 -0.25379,-0.13798 -0.37774,-0.13746 z m -1.07128,3.59616 c -0.046,0.0125 -0.11609,0.15283 -0.19843,0.50126 -0.0447,0.11946 -0.12068,0.55421 0.0775,0.36484 0.19362,-0.34691 0.21455,-0.81723 0.14004,-0.86403 h -5e-4 c -0.006,-0.003 -0.012,-0.004 -0.0186,-0.002 z m -0.6356,1.5627 c -0.079,-0.0128 -0.19479,0.0402 -0.34883,0.19792 -0.19704,0.0386 -0.26882,0.95532 0.0331,0.63458 0.39754,-0.0448 0.5438,-0.64657 0.38243,-0.79943 -0.0183,-0.0177 -0.0403,-0.0276 -0.0667,-0.0326 z m 3.53157,0.28783 c -0.0145,-0.003 -0.0279,-0.003 -0.0398,0.002 -0.0792,0.0285 -0.0914,0.22185 0.078,0.65371 0.0425,0.16251 0.28297,0.43936 0.34157,0.13023 -0.006,-0.29077 -0.11668,-0.53703 -0.22944,-0.67335 h -5.1e-4 c -0.0529,-0.0638 -0.10628,-0.10342 -0.14986,-0.11214 z m -3.06699,0.71417 c -0.11473,0.005 -0.36497,0.34787 -0.21913,0.6656 l 0.11472,-0.12816 c 0.15291,-0.30965 0.17669,-0.46521 0.14161,-0.51832 0,7.2e-4 0.002,-2.3e-4 0.002,5.2e-4 l -0.002,-0.002 v 5.2e-4 c -0.009,-0.012 -0.0222,-0.0194 -0.0372,-0.0186 z m 0.91829,1.10691 c 0,1.7e-4 0,3.5e-4 0,5.2e-4 -5.3e-4,1.2e-4 -0.001,-1.2e-4 -0.002,0 5.5e-4,-1.3e-4 9.8e-4,-3.8e-4 0.002,-5.2e-4 z m 1.47484,23.342759 c -0.0965,-0.0137 -0.20217,0.35222 0.0749,0.14676 -0.0109,-0.0548 -0.0222,-0.0916 -0.0357,-0.11472 -0.0122,-0.0202 -0.0259,-0.03 -0.0393,-0.032 z m -0.98237,0.9338 c -0.14174,0.0139 -0.29345,0.21991 -0.24496,0.71003 -0.0263,0.31998 0.15116,0.22384 0.22998,0.0662 0.29102,-0.34448 0.26099,-0.62222 0.14571,-0.72864 v -5.1e-4 c -0.037,-0.0349 -0.0834,-0.052 -0.13073,-0.047 z m 0.4005,1.03714 c -0.1714,-0.0358 -0.43241,0.24697 -0.11526,0.65423 l 0.1447,-0.10853 c 0.1255,-0.28076 0.10745,-0.44152 0.0388,-0.50952 l -0.002,-0.001 c -0.0189,-0.0187 -0.0416,-0.0301 -0.0661,-0.0351 z", +0.780383, 20.4192, +"M -0.105503 -20.4188 c -0.0405,-0.002 -0.0956,0.004 -0.16536,0.017 -0.29935,0.0549 -0.36433,0.21983 -0.36433,0.92115 0,0.46985 -0.0358,1.28906 -0.0796,1.82015 -0.0467,0.5662 -0.0191,1.05683 0.0672,1.18617 0.081,0.1214 0.30279,-0.076 0.49299,-0.43885 0.19016,-0.36274 0.40254,-0.575 0.47181,-0.47122 0.0693,0.10377 0.11406,-2.72234 -0.0274,-2.93432 -0.0714,-0.10706 -0.1297,-0.0411 -0.1297,0.14614 0,0.18729 -0.1044,0.33898 -0.23201,0.33532 -0.19841,-0.003 -0.20326,-0.0502 -0.0331,-0.31828 0.1142,-0.18005 0.12105,-0.25755 -5.3e-4,-0.2633 z m -0.26458,4.60917 c -0.0347,0.0205 -0.0779,0.24114 -0.11988,0.63953 -0.0557,0.53054 -0.075,1.54319 -0.0434,2.25048 0.0963,2.16125 0.0682,3.44269 -0.0796,3.66416 -0.16271,0.24387 -0.0597,2.39029 0.12248,2.55214 0.0663,0.0589 0.11298,0.78233 0.10335,1.60754 -0.0172,1.47849 -0.0189,1.48377 -0.11523,0.37494 -0.0781,-0.90009 -0.10126,-0.6552 -0.11523,1.22451 -0.0111,1.494811 0.0309,2.278081 0.11523,2.151631 0.0606,-0.0909 0.10337,0.21775 0.12195,0.82742 -0.11997,0.0834 -0.25326,0.46905 -0.39997,1.18617 0.0168,0.60699 0.0279,1.24832 0.0393,1.8896 -0.002,0.0692 -7.2e-4,0.13106 0.004,0.18789 0.10261,6.050652 0.0186,13.334762 0.56481,17.672782 0.34438,-0.35219 0.35478,-2.7314 0.4532,-3.9671 0.15868,-1.69005 0.20889,-5.0472 0.15865,-8.334692 0.08,-0.0549 0.10705,-0.21387 0.0698,-0.4495 -0.0411,-0.25961 -0.0181,-0.55719 0.0517,-0.66168 0.0697,-0.10451 0.12713,-0.40665 0.12713,-0.67191 0,-0.26509 -0.0599,-0.39341 -0.13282,-0.28418 -0.0729,0.10924 -0.13229,0.0454 -0.13229,-0.14188 0,-0.18721 0.0523,-0.34043 0.11629,-0.34043 0.0641,0 -0.26379,-3.32582 -0.28938,-3.22958 -0.0256,0.0962 -0.0253,-0.0239 5e-4,-0.26757 0.0258,-0.24348 -0.0179,-0.63167 -0.0971,-0.8632 -0.10261,-0.30004 -0.10358,-0.60608 -0.002,-1.06389 0.078,-0.35332 0.12729,-0.97353 0.10903,-1.37832 -0.0212,-0.47251 0.0377,-0.73954 0.16537,-0.74562 0.1094,-0.005 0.20484,-0.225601 0.21187,-0.490401 0.007,-0.2648 0.0586,-0.73603 0.1142,-1.04684 0.0618,-0.34499 0.0213,-0.86088 -0.10385,-1.32421 -0.11285,-0.41748 -0.19997,-1.19131 -0.19381,-1.71961 0.014,-1.19099 -0.12967,-1.79354 -0.37309,-1.56707 -0.1185,0.11022 -0.18552,-0.0461 -0.18552,-0.4333 0,-0.33342 -0.0706,-0.66331 -0.15658,-0.73284 -0.0967,-0.0782 -0.0238,-0.365 0.0372,-0.75073 0.0545,-0.34306 0.0797,-0.6532 0.0569,-0.6898 -0.0229,-0.0366 0.0755,-0.27457 0.21859,-0.52832 0.22053,-0.39106 0.23374,-0.53911 0.0847,-0.97441 -0.0967,-0.28243 -0.22886,-0.43441 -0.29353,-0.33744 -0.12361,0.18519 -0.1457,-0.17035 -0.14004,-2.27306 0.002,-0.68298 -0.0283,-0.98758 -0.0729,-0.96121 z", +2.50105, 20.7737, +"M 1.99533 -20.1853 c -0.0375,-0.25789 -0.33261,-0.42551 -0.56905,-0.58839 -0.23996,0.23872 -0.47489,0.49163 -0.6009,0.8121 -0.0812,0.48893 -0.29007,0.81482 -0.38877,1.29015 0.002,0.54267 -0.41169,0.99749 -0.40079,1.54481 -0.29754,0.24097 -0.55536,0.37238 -0.50367,0.84202 0.0614,0.57416 -0.22723,1.12925 -0.28672,1.7031 -0.14255,0.60343 -0.28189,1.20471 -0.38066,1.8095 -0.0293,0.59441 -0.2814,1.18246 -0.12046,1.75323 -0.2131,-0.15862 -0.45105,-0.0488 -0.16056,0.12001 -0.0693,0.38384 -0.39321,0.81136 -0.33681,1.29405 0.0267,0.64265 -0.0113,1.27603 -0.14224,1.89832 -0.003,0.60064 -0.10155,1.21537 -0.24239,1.79332 -0.22967,0.32796 0.15308,0.6786 0.11208,1.04197 0.2095,-0.3435 0.24518,-0.79906 0.5964,-1.0637 0.58133,0.18835 0.24969,0.75808 0.31901,1.19987 -0.26469,0.52559 -0.0489,0.91024 0.47559,1.11661 0.25093,-0.0203 0.43656,0.83787 0.43804,0.4442 -0.0618,-0.51559 0.4207,-0.87267 0.41211,-1.37583 0.013,-0.55963 0.17412,-1.11826 0.20939,-1.67553 -0.40638,-0.35369 -0.56249,-0.94788 -0.16108,-1.40288 -0.26584,-0.54166 0.46688,-1.0424 -0.027,-1.55948 -0.72899,-0.49884 0.91668,-0.76908 0.36771,-1.29742 0.0275,0.33925 -0.48808,0.48735 -0.42907,0.0774 0.21303,-0.33662 0.68355,-1.28644 0.0603,-1.29291 -0.1772,-0.18811 -0.2848,-1.18628 0.34402,-1.22453 0.56288,-0.22657 -0.41458,0.0439 -0.23023,-0.39889 0.21834,-0.27814 0.12847,-0.9857 0.5386,-0.9766 0.24676,0.4666 0.0743,-0.15601 -0.0145,-0.31345 0.32655,-0.0856 0.16625,-0.26335 0.21161,-0.564 -0.17635,-0.4556 0.40637,-0.92508 0.0292,-1.47058 -0.0333,-0.47745 0.11583,-1.16532 0.30655,-1.6979 0.30437,-0.47718 0.2963,-1.07386 0.51455,-1.54766 0.0565,-0.10923 0.0727,-0.20496 0.0598,-0.29086 z m -0.67527,5.18673 c -0.005,-0.0207 -0.0401,-0.0511 -0.1331,-0.0891 -0.12685,0.13115 0.14583,0.15153 0.1331,0.0891 z m -0.51447,2.32592 c -0.01,-0.026 -0.0378,-0.0564 -0.0928,-0.089 -0.1546,0.23186 0.13611,0.20162 0.0928,0.089 z m -0.55676,9.92556 c -0.004,-0.0178 -0.0117,-0.0421 -0.0244,-0.0749 l -3.8e-4,8e-5 c -0.10421,-0.01 0.0523,0.1987 0.0247,0.0748 z m -0.40593,0.62749 c -0.029,-0.13397 -0.065,-0.26569 -0.10661,-0.39404 -0.0954,0.0982 -0.57871,0.21425 -0.47507,0.55849 0.0692,0.55607 -0.16309,0.96182 -0.64341,1.21137 -0.634,0.49658 -0.78164,-0.34647 -0.88631,-0.80154 -0.48235,0.13084 -0.0802,0.8574 0.0167,1.20292 -0.36114,0.39753 0.0177,1.11042 -0.11524,1.68891 -0.23801,0.62967 0.24476,1.16486 0.31513,1.76431 0.0279,0.59829 0.024,1.19727 0.091,1.79736 l 3.7e-4,-8e-5 c -5.9e-4,0.16055 0.01,0.32283 0.0418,0.48106 0.14355,0.59006 0.21051,0.10446 0.26051,-0.22378 -0.0205,-0.63973 -0.27186,-1.28964 0.006,-1.90725 0.12037,-0.14839 0.19349,-0.5856 0.41752,-0.32353 0.46234,0.3705 0.3394,1.09108 0.53985,1.60971 0.27126,0.36763 0.39796,0.77484 0.51709,1.26206 -0.002,-0.30581 -0.0844,-1.00791 0.24199,-1.29206 0.11117,-0.32729 -0.38379,-0.91151 -0.20475,-1.38978 0.34489,-0.30119 -0.033,-0.25259 -0.0944,-0.49538 -0.24459,-0.22385 -0.04,-0.56816 -0.16501,-0.76622 -0.1494,-0.4034 -0.40711,-0.71884 -0.52267,-1.12154 -0.24067,-0.7641 0.5871,-1.03146 0.79857,-1.63 0.0764,-0.40778 0.0532,-0.8291 -0.0337,-1.23099 z m 0.89502,9.36585 c -0.0536,-0.20202 -0.20583,-0.37279 -0.33916,-0.2913 0.0256,0.46608 -0.22812,0.1812 -0.20758,-0.11481 0.50238,-0.20886 -0.136,-0.53619 -0.35884,-0.67825 -0.19176,0.37421 -0.0305,0.92091 -0.0919,1.3655 0.20082,0.60747 -0.0474,1.25588 0.23051,1.83712 0.46931,0.45584 0.1681,1.16914 0.30673,1.73368 -0.0209,1.03972 0.15888,2.08076 0.41848,3.08564 0.2179,0.9083 0.43884,1.83468 0.46756,2.76969 l -3.8e-4,8e-5 c -0.0559,0.1059 -0.0189,0.23303 -0.009,0.34529 -0.0466,0.49251 0.47733,1.10683 0.86726,0.99131 0.0869,-0.81136 -0.1849,-1.61553 -0.23186,-2.42464 -0.0153,-0.79202 -0.18322,-1.5676 -0.33686,-2.34287 -0.2662,-0.49125 0.35995,-0.65771 -0.11227,-1.06692 -0.29724,-0.73686 -0.33568,-1.55313 -0.49201,-2.32897 -0.13547,-0.6156 -0.29699,-1.09551 -0.32023,-1.74958 -0.42463,-0.16399 -0.2469,-0.50188 0.0726,-0.6905 0.13034,-0.0698 0.16881,-0.21103 0.15303,-0.35262 -0.003,-0.0295 -0.009,-0.059 -0.0165,-0.0878 z m -2.57871,-11.32017 c -0.2708,-0.55639 -0.38057,-0.0872 -0.31795,0.29402 l -0.0116,0.0821 c -0.0994,0.78435 0.40245,-0.0619 0.32958,-0.37609 z m 4.33185,23.83573 c -0.0258,-0.0834 -0.10025,-0.11446 -0.21568,0.0379 -0.0385,0.0658 -0.10012,0.12716 -0.0971,0.2101 0.26257,0.17623 0.35541,-0.10828 0.31288,-0.24765 z m -0.18954,-0.48941 c -0.002,-0.0411 -0.0436,-0.0877 -0.15571,-0.12611 -0.17795,0.32518 0.16312,0.24936 0.15571,0.12611 z m -3.39268,-11.78328 c -0.007,-0.0222 -0.015,-0.0442 -0.0268,-0.0646 -0.39951,-0.3938 -0.32809,-1.07152 -0.63904,-1.49675 0.0493,0.59576 0.19414,1.18256 0.32136,1.76612 0.004,0.62023 0.44185,0.12916 0.34453,-0.20475 z m 2.27835,12.58899 c -0.0101,-0.0525 -0.027,-0.0984 -0.0521,-0.13269 -0.007,-0.44623 -0.38635,-0.40063 -0.30696,0.0345 -6.4e-4,0.18442 0.0187,0.36863 0.0509,0.55019 0.11903,0.61469 0.37941,-0.0844 0.30817,-0.45198 z m -3.29846,-15.55671 c -0.007,-0.0317 -0.0473,-0.0578 -0.14608,-0.0599 -0.11114,0.30062 0.16683,0.15497 0.14608,0.0599 z", +1.65654, 15.5833, +"M 1.65648 7.45006 c -0.014,-0.2553 -0.50256,-0.33488 -0.51056,-0.80616 -0.15816,0.27247 -0.44145,0.24588 -0.34003,-0.16846 0.52996,-0.0216 0.43279,-0.95853 0.27957,-1.38131 -0.46566,0.32298 -1.49686,0.71091 -1.96216,0.28887 0.47799,-0.50839 -0.10776,-0.98406 0.0393,-1.53376 0.24102,-1.11239 1.05865,-0.30535 1.5689,0.0594 0.29417,-0.54317 -0.42213,-1.43185 -0.2713,-2.12699 0.053,-0.33438 -0.14256,-0.76674 0.18035,-0.99478 0.74093,-0.4137 0.071,-1.20457 0.48731,-1.77662 0.16189,-0.87009 0.12472,-1.775858 0.0253,-2.653088 -0.37764,-0.45524 0.11408,-0.79274 0.0103,-1.24229 -0.0546,-1.40989 0.11322,-2.83197 0.009,-4.24522 -0.18099,-0.66609 0.36361,-1.5512 -0.2403,-2.13217 -0.76022,-0.19291 -1.74581,-0.46318 -1.47846,-1.48984 0.23135,-0.3261 0.005,-1.03309 -0.27595,-0.47181 -0.1149,1.29353 -0.0485,2.59721 -0.0899,3.89486 0.0166,1.91664 -0.15304,3.83585 -0.0129,5.74952 -0.10524,0.84254 -0.15444,1.608928 -0.11524,2.481498 -0.1778,1.05201 -0.0675,2.11953 -0.11111,3.18223 -0.0119,0.29604 0.0774,0.64029 -0.25631,0.78393 h -5.2e-4 c -0.29571,0.18497 -0.24881,0.55168 -0.24081,0.84905 0.12861,0.90109 0.33978,-0.31956 0.34778,-0.59272 0.25303,0.5402 0.0916,1.52043 0.1478,2.22414 -0.0982,0.37068 0.22385,1.646 -0.31678,1.42214 0.003,0.32776 -0.0945,1.3313 0.0145,1.937875 -0.20501,0.86879 0.24098,1.79626 -0.0889,2.66081 0.58049,0.22895 -0.1934,0.54647 0.0367,1.02682 0.20168,0.73761 0.51285,1.49881 0.25838,2.27219 -0.43599,0.48255 0.11253,1.05024 0.3359,0.29043 0.1027,-1.16376 -0.0313,-2.33825 0.0682,-3.50416 0.18831,-1.09985 0.14716,0.68392 0.80718,0.4754 0.30346,0.13933 1.74688,-0.14938 0.9679,-0.23408 -0.58672,-0.4472 0.61164,-1.04584 0.54674,-1.60403 -0.11252,-0.73311 -0.62171,-1.66272 0,-2.307345 0.13633,-0.14516 0.18483,-0.24977 0.17983,-0.33489 z m -0.94413,-22.308708 c -0.13146,-0.53592 -0.80296,-1.00793 -1.25935,-0.52142 -0.21226,0.79762 0.82396,0.58812 1.25935,0.52142 z m -0.25166,28.192583 c 5.1e-4,-0.0774 -0.0451,-0.16422 -0.17674,-0.2346 -0.24185,0.61669 0.17474,0.46696 0.17674,0.2346 z m -0.27799,2.11821 c 0.006,-0.0684 -0.0265,-0.1592 -0.1323,-0.26303 -0.24658,0.46943 0.11469,0.4681 0.1323,0.26303 z m -1.26453,-22.438413 c -10e-4,-0.053 -0.009,-0.11049 -0.0264,-0.17208 0.003,-0.25223 -0.003,-1.72141 -0.21342,-1.21079 -0.0657,0.43773 -0.0695,0.88514 -0.0537,1.32707 -0.0378,0.55499 0.30152,0.42662 0.29352,0.0558 z m -0.0667,3.28145 c -0.004,-0.0288 -0.0281,-0.0608 -0.0847,-0.092 -0.26244,0.28511 0.10135,0.21687 0.0847,0.092 z m -0.2961,17.933793 c -0.005,-0.0297 -0.0175,-0.0677 -0.0413,-0.11629 -0.28174,0.10517 0.0752,0.32372 0.0413,0.11629 z", +1.55663, 17.8159, +"M 0.508125 -17.8159 c 1.02192,1e-5 1.04851,0.0236 1.04851,0.92603 0,0.50934 -0.0799,0.92605 -0.17722,0.92606 -0.0974,1e-5 -0.15454,0.62507 -0.1266,1.38906 0.17088,4.66959 0.17679,7.8749 0.0145,8.03725 -0.10277,0.10281 -0.17864,0.3752 -0.16849,0.60563 0.0138,0.31029 0.0797,0.28188 0.25371,-0.11012 0.17857,-0.4021 0.22525,-0.2592 0.19434,0.59428 -0.0224,0.61778 -0.15187,1.23396 -0.28734,1.36941 -0.13546,0.13548 -0.29046,2.54681 -0.34467,5.35886 -0.0542,2.812 -0.21156,5.58913 -0.34933,6.17119 -0.48698,2.0578 -0.57684,2.66036 -0.60202,4.02459 -0.014,0.75831 -0.10149,1.33161 -0.19432,1.27433 -0.0929,-0.0571 -0.0568,0.64262 0.0796,1.55544 0.13639,0.91283 0.16059,2.12362 0.0542,2.69079 -0.17825,0.95039 -0.22183,0.99291 -0.55449,0.53795 -0.29134,-0.398 -0.34675,-2.15278 -0.28836,-9.05164 0.0598,-7.06382 0.0117,-8.50695 -0.27647,-8.26772 -0.47407,0.39347 -0.44992,-0.0548 0.0542,-1.00148 0.26051,-0.48899 0.38793,-1.36812 0.35966,-2.47788 -0.0242,-0.94587 0.04,-3.28537 0.14265,-5.19866 0.18216,-3.39463 0.32775,-9.3534 1.16794,-9.35337 z", +1.17205, 11.7473, +"M 1.02268 -10.861 c 0.1091,0.1814 0.17719,0.37632 0.13837,0.50034 -0.0351,0.11193 -0.27619,0.1724 -0.53581,0.13446 -0.37479,-0.0547 -0.43967,0.0318 -0.3153,0.41964 0.0861,0.2686 0.0411,0.54794 -0.0997,0.62149 -0.25308,0.13194 -0.18099,1.81839 0.10401,2.43261 0.0809,0.17447 0.095,0.4829 0.0316,0.68524 -0.0634,0.20236 -0.0497,0.46476 0.0303,0.58334 0.25808,0.3824 -0.27881,17.31188 -0.58526,17.230934 -0.163,-0.04269 -0.48752,-0.232899 -0.72224,-0.421235 -0.33692,-0.271053 -0.32403,-0.457558 0.0633,-0.889384 0.26957,-0.300525 0.40319,-0.70571 0.29707,-0.900197 -0.34087,0.04626 0.15589,-9.963114 -0.40834,-15.903028 0.12837,-0.35962 0.16399,-0.9136 0.0792,-1.23105 -0.0848,-0.31748 -0.12098,-0.89469 -0.0803,-1.28251 0.0407,-0.38778 -0.003,-1.16267 -0.0972,-1.72233 -0.12675,-0.75336 -0.0633,-1.00192 0.24376,-0.95706 0.22809,0.0334 0.44313,-0.031 0.47827,-0.14277 0.0351,-0.11192 0.19636,-0.007 0.35828,0.23297 0.16257,0.24082 0.3604,0.33132 0.44178,0.2019 0.10143,-0.16052 0.39628,0.10439 0.57817,0.40666 z", +1.95058, 13.6269, +"M 0.471013 -13.6265 c -0.0226,0.002 -0.0393,0.019 -0.0481,0.0517 -0.0351,0.13069 -0.24992,0.20591 -0.47799,0.16691 -0.30708,-0.0524 -0.37068,0.23818 -0.24392,1.1188 0.0942,0.65419 0.13785,1.56002 0.0971,2.01331 -0.0407,0.45333 -0.004,1.12802 0.0806,1.49913 0.0848,0.37107 0.0488,1.01882 -0.0796,1.43919 -0.20937,0.68561 -0.0718,1.6412 0.37155,2.62827 -0.11168,0.0113 -0.23463,0.0283 -0.38137,0.0563 -0.6455,0.12341 -0.72607,0.25452 -0.72607,1.18184 -1.6e-4,0.62786 -0.10541,0.97834 -0.26458,0.87954 -0.16997,-0.10511 -0.26459,0.835241 -0.26459,2.630332 0,1.81333 -0.0999,2.79364 -0.28421,2.79363 h -5e-4 c -0.15627,-2e-5 -0.23813,0.20835 -0.18243,0.46302 0.0557,0.25469 0.2427,0.43297 0.416,0.39687 0.21384,-0.0449 0.3152,0.40637 0.31522,1.40457 0,0.91314 -0.10041,1.40916 -0.26458,1.30741 -0.16825,-0.10405 -0.25207,0.54034 -0.22998,1.77042 0.0279,1.54684 0.074,1.74841 0.22998,1.0077 0.19206,-0.91245 0.19513,-0.90816 0.22945,0.3085 0.0192,0.67909 -0.0733,1.27442 -0.20569,1.32292 -0.36356,0.1332 -0.56917,1.89947 -0.24442,2.10013 0.29488,0.18225 0.69575,0.93239 0.58706,0.65009 -0.12179,-0.3174 -0.0778,-0.55313 0.11522,-0.61753 0.17206,-0.0571 0.3121,-0.3287 0.31213,-0.60307 3.4e-4,-0.31822 0.13407,-0.44675 0.37052,-0.35605 0.4857,0.18639 0.77203,-0.30974 0.74414,-1.28984 -0.41298,-4.18519 -0.41174,-10.39178 -0.21031,-12.921172 0.13216,0.0905 0.25572,0.15931 0.33795,0.18449 0.30644,0.0946 0.84307,-3.81941 0.58497,-4.26641 -0.08,-0.13861 -0.0934,-0.44506 -0.0299,-0.68161 0.0634,-0.23652 0.0494,-0.59705 -0.0315,-0.80099 -0.28499,-0.71796 -0.35746,-2.68952 -0.10438,-2.84375 0.14078,-0.086 0.18584,-0.4126 0.0997,-0.72657 -0.12435,-0.45333 -0.0596,-0.55441 0.31522,-0.49041 0.25964,0.0444 0.50081,-0.0263 0.53589,-0.15709 0.0388,-0.14498 -0.0294,-0.37294 -0.13848,-0.58498 -0.1819,-0.35333 -0.4763,-0.66307 -0.57775,-0.47543 -0.0814,0.15128 -0.27926,0.0453 -0.44182,-0.23616 -0.12145,-0.21024 -0.24284,-0.33152 -0.31057,-0.32401 z", +0.746818, 13.5457, +"M 0.651624 -11.1239 c 0.0695,0.49565 0.1129,1.02826 0.0882,1.36713 -0.0224,0.30582 -0.17599,0.47106 -0.34142,0.36739 -0.23882,-0.1496 -0.28016,0.087 -0.20091,1.14663 0.0549,0.73391 0.0262,1.49718 -0.0635,1.69814 -0.16126,0.36052 -0.11532,4.968579 0.0663,6.646849 0.0516,0.47672 0.0605,1.31946 0.0201,1.87234 -0.0404,0.55294 -0.0317,1.2699 0.0193,1.59391 0.16445,1.04487 -0.17766,10.194453 -0.37293,9.973273 -0.10386,-0.11664 -0.31064,-0.63636 -0.46021,-1.15097 -0.21468,-0.74062 -0.20647,-1.25023 0.0403,-2.43014 0.17177,-0.82115 0.25691,-1.928273 0.18929,-2.459683 -0.30256,-2.37873 -0.39749,-4.69547 -0.26019,-6.34493 0.0818,-0.98262 0.10449,-2.49631 0.0505,-3.363699 -0.054,-0.86748 -0.0771,-2.44465 -0.0512,-3.50432 0.0259,-1.05958 -0.002,-3.17689 -0.0619,-4.70608 -0.0808,-2.05847 -0.0403,-2.73764 0.15533,-2.61506 0.14533,0.0912 0.28236,-0.0846 0.30475,-0.39011 0.0224,-0.30582 0.12512,-0.0187 0.22829,0.63658 0.10359,0.65802 0.22965,0.90528 0.2815,0.55166 0.0646,-0.43862 0.25251,0.28522 0.36841,1.11114 z", +1.38957, 16.4755, +"M 0.138886 -16.4755 -1.35549,1.84795 c 0.27683,0.42497 0.50699,1.05938 0.54983,1.48879 0.0601,0.48725 0.0332,0.97552 -0.0119,1.46658 -0.0892,-0.49054 -0.17108,-0.69618 -0.19068,-0.4284 -0.0224,0.30551 -0.15905,0.48136 -0.30438,0.39016 -0.19563,-0.12258 -0.23635,0.55687 -0.15555,2.61535 0.0599,1.52918 0.0879,3.64658 0.062,4.70617 -0.0259,1.05967 -0.003,2.63669 0.0512,3.50417 0.054,0.86739 0.0311,2.381 -0.0506,3.36362 -0.13732,1.64946 -0.0421,3.96611 0.26043,6.34484 0.0676,0.5314 -0.0179,1.63864 -0.18966,2.45979 -0.24675,1.17991 -0.25497,1.68972 -0.0403,2.43035 0.12094,0.41612 0.27699,0.82396 0.38809,1.03094 -0.25501,0.55068 -0.28125,1.13805 -0.22479,1.73064 l 1.4609,-0.003 c 0.0168,-0.42614 0.0252,-0.85476 0.0677,-1.27434 0.25389,-1.34995 0.14287,-2.66726 0.36689,-4.02611 0.031,-1.4516 0.11288,-2.8398 0.19175,-4.25762 0.12581,-1.2814 -0.13108,-2.63661 0.16224,-3.91397 -0.10988,-1.37381 -0.11983,-2.74916 -0.14417,-4.11603 0.0786,-1.41425 -0.2367,-2.81377 -0.12764,-4.19458 -0.0646,-1.50176 -0.23391,-3.00258 -0.21238,-4.4483 0.78798,-0.10067 0.97116,-1.25283 0.22117,-1.50379 0.42751,0.71673 -0.5987,0.75403 -0.39428,0.0444 0.49067,-0.38166 0.47429,-0.58582 0.0196,-0.82733 0.15126,-1.10944 -0.28977,-2.18413 -0.17312,-3.35639 -0.008,-0.38118 -0.13687,-0.71882 -0.22635,-1.07229 z m -0.46355,8.37158 c 0.0189,0.005 0.0414,0.0166 0.0641,0.0295 0.11988,0.62091 -0.0121,1.26337 -0.16021,1.91254 5.9e-4,-0.24158 -0.005,-0.49741 -0.0243,-0.75809 -0.0694,-0.92718 -0.0464,-1.22436 0.12041,-1.18391 z m -0.25374,3.57756 c 0.0898,0.93296 0.42876,1.87606 0.6594,2.79259 0.23042,1.45009 0.26061,2.8781 -0.008,4.3031 -0.24439,1.27673 -0.30588,2.48657 0.0294,3.77031 -0.13909,1.17698 -0.45156,2.32446 -0.53951,3.48144 0.0761,-2.22329 0.11075,-4.44633 0.0346,-4.92993 -0.051,-0.32401 -0.06,-1.04076 -0.0196,-1.5937 0.0404,-0.55288 0.0314,-1.39552 -0.0202,-1.87224 -0.1455,-1.34446 -0.20132,-4.53663 -0.13592,-5.95157 z m 0.0796,15.91375 c 0.14541,0.99939 0.5629,2.03294 -0.10957,2.94194 -0.0303,0.0418 -0.0541,0.0847 -0.0811,0.12713 0.0646,-0.57923 0.13222,-1.74103 0.19069,-3.06907 z", +2.34195, 11.5159, +"M 2.34146 -4.20638 c 0.002,0.0553 -0.002,0.11609 -0.0145,0.17985 -0.0644,0.3366 -0.42979,0.50248 -1.33841,0.60719 -0.68743,0.0792 -1.29195,0.0792 -1.34307,0 -0.0514,-0.079 -0.0507,0.0201 4.4e-4,0.22012 0.0516,0.20034 -0.0357,0.52005 -0.19353,0.71065 -0.20476,0.24688 -0.20659,0.49864 -0.005,0.87541 0.15568,0.29074 0.2535,0.80116 0.21707,1.13429 -0.0424,0.38883 0.0761,0.60836 0.33071,0.6134 0.21831,0.004 0.40817,0.18566 0.42215,0.40362 0.014,0.21788 0.11684,0.60569 0.22773,0.8615 0.12326,0.2839 0.0426,0.70855 -0.20724,1.08985 -0.22511,0.34352 -0.39934,0.98017 -0.38738,1.41481 0.0279,0.9801 -0.25842,1.47623 -0.74413,1.28984 -0.23645,-0.0907 -0.37001,0.038 -0.37035,0.35622 -2e-5,0.27437 -0.14008,0.54597 -0.31215,0.60306 -0.19306,0.0644 -0.23703,0.30013 -0.11526,0.61753 0.10871,0.2823 0.15952,0.5378 0.11365,0.56793 -0.0459,0.0299 0.15058,0.22581 0.4361,0.43468 0.44013,0.32178 0.46571,0.44377 0.1685,0.80197 -0.19293,0.23238 -0.45647,0.35733 -0.58549,0.27753 -0.2465,-0.15271 -0.29031,0.14035 -0.27906,1.87067 0.007,0.99916 -0.004,1.01393 -0.19528,0.26464 -0.11079,-0.43669 -0.15026,-1.27006 -0.0873,-1.8521 0.19222,-1.77852 0.13676,-2.83306 -0.15812,-3.01531 -0.32475,-0.20066 -0.11915,-1.96693 0.24443,-2.10013 0.13238,-0.0485 0.2249,-0.64383 0.20567,-1.32292 -0.0343,-1.21666 -0.0374,-1.22096 -0.22946,-0.30851 -0.15593,0.74072 -0.20203,0.53914 -0.22995,-1.0077 -0.0221,-1.23009 0.0617,-1.87448 0.22995,-1.77043 0.16417,0.10175 0.26459,-0.39427 0.2646,-1.30741 -2e-5,-0.99819 -0.10145,-1.44949 -0.31528,-1.40457 -0.17329,0.0361 -0.36031,-0.1422 -0.41598,-0.39689 -0.0557,-0.25466 0.0262,-0.46301 0.18245,-0.463 h 5.2e-4 c 0.18433,1e-5 0.28421,-0.9803 0.28422,-2.79364 0,-1.79509 0.0946,-2.73543 0.26457,-2.63032 0.15915,0.0988 0.2644,-0.25166 0.26456,-0.87952 -1e-5,-0.92732 0.0806,-1.05844 0.72609,-1.18185 0.97706,-0.18674 1.12602,-0.0503 1.126,1.03409 10e-6,0.63956 -0.0957,0.86695 -0.30949,0.73485 -0.21128,-0.13012 -0.25315,-0.0441 -0.13229,0.27076 0.0974,0.25407 0.17731,0.63077 0.17721,0.83716 -2e-5,0.20637 0.19145,0.37518 0.42527,0.37521 0.26515,2e-5 0.36883,0.14645 0.27599,0.38857 -0.082,0.21364 -0.0353,0.45868 0.10391,0.54466 0.13913,0.086 0.2532,0.33466 0.2532,0.55296 -7e-5,0.21815 -0.11907,0.32343 -0.26457,0.23359 -0.14556,-0.0898 -0.26459,-0.0373 -0.2646,0.11674 -8e-5,0.15409 0.10469,0.28009 0.23249,0.28014 0.12785,-1e-5 0.38035,0.35716 0.56117,0.79376 0.18081,0.4366 0.44232,0.79375 0.58084,0.79377 0.10393,0 0.17072,0.11718 0.1778,0.28317 z", +1.43162, 19.3805, +"M -0.137187 -19.38 c -0.0842,-0.005 -0.19127,0.031 -0.32713,0.0946 -0.35901,0.16796 -0.4036,0.34656 -0.4036,1.60868 -7e-5,0.85455 -0.0588,1.3313 -0.14726,1.19683 -0.0946,-0.14306 -0.14727,1.13695 -0.14727,3.58014 -3e-5,2.46804 -0.0551,3.80237 -0.15761,3.80236 h -5.3e-4 c -0.0869,-10e-6 -0.13229,0.28333 -0.10128,0.62993 0.031,0.34665 0.13459,0.58964 0.23098,0.54054 0.11895,-0.0611 0.17571,0.55293 0.17571,1.91151 0,1.24282 -0.056,1.9177 -0.14727,1.77922 -0.0936,-0.14162 -0.14047,0.73546 -0.12816,2.409662 0.0155,2.10531 0.0415,2.37964 0.12816,1.37149 0.10681,-1.24188 0.10853,-1.23579 0.12764,0.42013 0.0107,0.92427 -0.0411,1.73441 -0.11473,1.80041 -0.20225,0.1813 -0.31652,2.58511 -0.13591,2.85822 0.16401,0.24805 0.19476,1.6835 0.0879,4.104145 -0.035,0.792181 -0.013,1.926426 0.0485,2.520775 0.10663,1.019821 0.11306,0.999718 0.10907,-0.360182 -0.006,-2.355041 0.0179,-2.753938 0.15502,-2.546099 0.0718,0.108619 0.21825,-0.06148 0.32557,-0.377759 0.16531,-0.48752 0.15123,-0.65344 -0.0936,-1.0914 -0.15883,-0.28428 -0.26837,-0.551 -0.24286,-0.5917 0.0255,-0.041 -0.003,-0.38885 -0.063,-0.77308 -0.0677,-0.43199 -0.0433,-0.75256 0.0641,-0.84026 0.0957,-0.0777 0.17362,-0.44719 0.17362,-0.82062 1.8e-4,-0.43313 0.0747,-0.60869 0.20619,-0.48524 0.27014,0.25368 0.42944,-0.42149 0.41394,-1.75545 -0.007,-0.59156 0.0903,-1.45792 0.21548,-1.92546 0.13896,-0.51897 0.18375,-1.09672 0.11525,-1.48312 -0.0617,-0.348152 -0.11914,-0.875982 -0.12713,-1.172522 -0.008,-0.29666 -0.11319,-0.54484 -0.23461,-0.54984 -0.14163,-0.007 -0.20757,-0.30536 -0.18396,-0.83457 0.0203,-0.45341 -0.0338,-1.14839 -0.12042,-1.5441 -0.11189,-0.5128 -0.11128,-0.85512 0.003,-1.19114 0.0877,-0.25941 0.13668,-0.69471 0.108,-0.96738 -0.0285,-0.2722 -0.0291,-0.40724 -5.3e-4,-0.29972 0.025,0.0947 0.29102,0.10153 0.61341,0.03 0.0405,0.52236 0.0906,1.04394 0.0915,1.57561 -0.0608,0.60189 -0.078,1.11737 -0.0465,1.74821 0.0696,0.63278 0.297,1.09496 0.0998,1.78077 -0.058,0.73385 0.0101,1.474622 0.002,2.207102 -0.0197,0.81022 0.0418,1.60891 0.004,2.4262 -0.0875,0.63698 -0.0763,1.43498 -0.22429,1.9482 0.12394,0.22305 0.34293,0.21881 0.24702,0.84078 -0.0607,1.1452 -0.0473,2.30122 -0.0796,3.45147 0.0458,0.825198 -0.0683,1.62066 -0.093,2.435508 0.0204,1.1895 -0.1012,2.349915 -0.17311,3.516066 -0.0662,0.696058 -0.0537,1.411333 -0.0966,2.110981 -0.0148,0.25309 -0.0926,0.598914 0.0625,0.599964 0.29631,0.0457 0.33951,0.87489 0.30128,1.493449 -0.10774,0.477189 0.0255,1.113514 0.0103,1.577165 l 0.14004,-0.146246 c 0.0399,-0.520959 0.0745,-1.044482 0.11576,-1.564762 0.18883,-2.023379 0.28009,-4.091098 0.39534,-6.147427 0.0855,-1.171151 0.0493,-2.370113 0.13795,-3.538798 -0.0101,-0.73951 0.0498,-1.47317 0.032,-2.21279 0.0113,-0.74373 0.0533,-1.47966 0.0351,-2.2226 0.0413,-0.71668 -0.0126,-1.40059 -0.001,-2.13166 0.0365,-0.74313 0.0171,-1.48879 -0.0109,-2.22673 0.07,-0.4474 -0.0966,-1.347812 0.0646,-1.455202 -0.015,0.783202 0.13674,0.20012 0.1297,-0.24288 -0.002,-0.28913 -0.0311,-1.39426 -0.15089,-0.66404 0.14613,0.14266 -0.0403,0.66546 -0.10491,0.6289 0.1066,-0.45472 0.0111,-0.96117 0.0522,-1.43971 0.15606,-0.65158 0.0842,-1.40153 -0.077,-1.97559 -0.0905,-0.69785 -0.11025,-1.42475 -0.13901,-2.14043 -0.009,-0.18957 -0.0222,-0.37781 -0.0341,-0.56689 0.11245,-0.13013 0.17013,-0.29776 0.18757,-0.5209 0.007,-0.0868 0.009,-0.16965 0.008,-0.24495 h -5.3e-4 c -0.004,-0.22592 -0.0414,-0.3855 -0.0992,-0.3855 -0.0459,-2e-5 -0.11597,-0.18397 -0.18653,-0.44959 -10e-4,-0.0362 -0.004,-0.0729 -0.005,-0.10904 0.003,-0.57553 -0.0511,-1.12705 -0.10387,-1.6769 h -0.001 l -0.26149,0.19689 c -0.0296,-0.0724 -0.0569,-0.12196 -0.0775,-0.12196 -0.0711,-7e-5 -0.12922,-0.17164 -0.12916,-0.38137 0,-0.20968 0.0663,-0.28087 0.14726,-0.15864 0.0809,0.12226 0.14724,-0.0209 0.14727,-0.31781 0,-0.29713 -0.0637,-0.63588 -0.14108,-0.75293 -0.0774,-0.11702 -0.10347,-0.45026 -0.0579,-0.74104 0.0516,-0.32953 -0.006,-0.52914 -0.15349,-0.52917 -0.13004,-4e-5 -0.23669,-0.22969 -0.23667,-0.51056 0,-0.28091 -0.044,-0.79366 -0.0982,-1.13947 -0.0672,-0.42852 -0.0441,-0.54555 0.0734,-0.36845 0.11893,0.17979 0.17208,-0.12947 0.17208,-0.99994 3e-5,-1.10695 -0.0466,-1.48805 -0.29919,-1.50223 z", +1.43294, 9.17485, +"M 0.959443 6.24537 c 0.0279,0.9801 -0.25842,1.47623 -0.74413,1.28984 -0.23645,-0.0907 -0.37001,0.038 -0.37035,0.35622 -2e-5,0.27437 -0.14008,0.54597 -0.31215,0.60306 -0.19306,0.0644 -0.23703,0.30013 -0.11526,0.61753 0.10871,0.2823 -0.29212,-0.46774 -0.587,-0.64999 -0.32475,-0.20066 -0.11915,-1.96693 0.24443,-2.10013 0.13238,-0.0485 0.2249,-0.64383 0.20567,-1.32292 -0.0343,-1.21666 -0.0374,-1.22096 -0.22946,-0.30851 -0.15593,0.74072 -0.20203,0.53914 -0.22995,-1.0077 -0.0221,-1.23009 0.0617,-1.87448 0.22995,-1.77043 0.16417,0.10175 0.26459,-0.39427 0.2646,-1.30741 -2e-5,-0.99819 -0.10145,-1.44949 -0.31528,-1.40457 -0.17329,0.0361 -0.36031,-0.1422 -0.41598,-0.39689 -0.0557,-0.25466 0.0262,-0.46301 0.18245,-0.463 h 5.2e-4 c 0.18433,1e-5 0.28421,-0.980298 0.28422,-2.793628 0,-1.79509 0.0946,-2.73543 0.26457,-2.63032 0.15915,0.0988 0.2644,-0.25166 0.26456,-0.87952 -1e-5,-0.92732 0.0806,-1.05844 0.72609,-1.18185 0.97706,-0.18674 1.12602,-0.0503 1.126,1.03409 10e-6,0.63956 -0.0957,0.86695 -0.30949,0.73485 -0.49107,-2.81613 -0.76298,7.511348 -0.16401,13.581278 z", +0.865975, 16.9234, +"M 0.579895 11.5198 c 0.0168,1.80783 -0.15617,2.72296 -0.4497,2.37916 -0.14289,-0.1673 -0.22361,0.0701 -0.22381,0.65706 -10e-6,0.50609 -0.0846,1.00706 -0.18865,1.11237 -0.11667,0.11879 -0.14325,0.5536 -0.0697,1.13906 0.0657,0.52071 -0.17654,-0.86277 -0.35474,-1.19894 -0.19626,-0.37012 -0.072,-3.62807 0.14772,-3.87377 0.08,-0.0895 0.13591,-1.18757 0.12429,-2.44017 -0.0208,-2.24418 -0.0226,-2.25211 -0.13867,-0.56906 -0.0942,1.36629 -0.1221,0.99446 -0.13897,-1.85874 -0.0133,-2.26895 0.0373,-3.45755 0.13897,-3.26563 0.0992,0.18768 0.1599,-0.72725 0.15991,-2.41157 -10e-6,-1.8412 -0.0613,-2.67364 -0.19055,-2.59078 -0.10472,0.0666 -0.21773,-0.26229 -0.25139,-0.73208 -0.0337,-0.46973 0.0158,-0.85404 0.11023,-0.85402 h 3.2e-4 c 0.11135,2e-5 0.17176,-1.8082 0.17176,-5.15295 0,-3.31112 0.0571,-5.04561 0.1599,-4.85173 0.0962,0.18224 0.15978,-0.4642 0.15987,-1.62232 0,-1.71048 0.0487,-1.95233 0.4388,-2.17997 0.59049,-0.34444 0.6805,-0.0928 0.68049,1.90742 10e-6,1.17971 -0.0578,1.59914 -0.18703,1.35547 -0.29677,-5.19447 -0.46111,13.85497 -0.0991,25.05119 z", +0.920438, 15.73, +"M 0.600428 -15.73 -0.20928,0.13642 c 0.0116,0.10797 -0.008,0.20908 -0.10025,0.29611 -0.24135,0.42805 0.0459,1.00331 -0.24961,1.42213 0.2354,0.42752 0.12838,0.94985 0.13438,1.42472 0.10674,0.60433 -0.83865,0.28316 -0.87696,0.59066 0.2572,0.43226 -0.0173,0.8381 -0.0377,1.27641 0.21408,0.45321 -0.16298,0.88129 0.0558,1.32705 -0.23974,0.30068 0.19899,0.60454 -0.0589,0.92553 -0.006,0.92527 -0.0266,1.85081 -0.0517,2.77606 0.0152,0.4801 -0.0752,1.02655 0.1478,1.45779 -0.25858,-0.0769 -0.30935,0.24479 -0.16174,0.47594 -0.075,0.46382 0.1289,0.91188 -0.016,1.36787 -0.0107,1.507429 0.0413,3.015669 0.10387,4.521689 0.1733,0.47524 0.0581,0.99741 0.19534,1.44487 -0.36306,0.3697 -0.20534,0.96671 -0.25064,1.43919 -0.0318,0.49346 0.11663,1.03192 -0.0951,1.49087 0.14563,0.84649 0.0783,1.712415 0.1111,2.567805 -0.0665,0.45222 0.24575,0.922311 -0.0563,1.326021 -0.16113,0.30199 -0.14399,0.87954 0.10178,1.04644 -0.008,0.50476 0.33634,0.95241 0.1287,1.45211 0.19711,0.12306 0.23505,0.16337 0.093,0.39998 -0.25935,0.34252 0.27749,0.87321 -0.10438,1.09347 -0.51512,0.10675 0.14734,0.092 0.17105,0.3359 -0.11327,0.32055 -0.0946,1.20549 0.39066,0.72502 0.77099,0.005 -0.24847,-0.55676 0.12041,-0.89814 0.0876,-0.7571 0.0667,-1.52622 0.0171,-2.28565 -0.17201,-0.6034 -0.11922,-1.24776 -0.0837,-1.86965 0.24858,-0.51407 -0.0498,-1.029341 0.016,-1.553911 -0.006,-0.45575 0.10213,-0.879465 -0.0367,-1.321375 -0.0154,-0.45173 -0.18732,-0.86783 0.13748,-1.26039 0.17298,-0.38763 0.16687,0.10802 0.19378,0.28939 0.13417,0.39563 0.14967,0.90483 0.22738,1.25987 0.1107,-0.96718 0.0622,-1.94664 0.0801,-2.9192 0.0259,-4.03603 -0.0233,-8.072429 0.0181,-12.108299 0.23979,-0.22266 0.005,0.79598 0.22736,0.78083 0.0587,-0.30736 0.032,-0.62753 0.03,-0.93948 0,-0.1962 -0.0468,-0.69798 -0.0713,-0.75137 -0.0348,0.24268 0.0825,0.63699 -0.16899,0.74 -0.058,-0.72244 -0.0291,-1.46041 -0.0476,-2.18901 -0.006,-2.09788 -0.0295,-4.19582 -0.0243,-6.29367 z", +1.1248, 15.7337, +"M 0.154165 -15.7331 c -0.024,0.006 -0.0442,0.058 -0.0594,0.16072 -0.0119,0.0804 -0.0224,0.198 -0.032,0.33693 -0.18859,0.42108 0.0568,0.96324 -0.22582,1.36374 0.2354,0.42752 0.12835,0.94985 0.13436,1.42472 0.10673,0.60433 -0.83863,0.28316 -0.87694,0.59066 0.2572,0.43226 -0.0173,0.8381 -0.0377,1.27641 0.21408,0.45321 -0.16298,0.88129 0.0558,1.32705 -0.23974,0.30068 0.199,0.60453 -0.0589,0.92553 -0.006,0.92527 -0.0266,1.8508 -0.0517,2.77605 0.0152,0.4801 -0.0752,1.02656 0.14777,1.4578 -0.25857,-0.0769 -0.30935,0.24479 -0.16174,0.47594 -0.075,0.46382 0.12888,0.91188 -0.016,1.36787 -0.0107,1.507433 0.0413,3.015673 0.10384,4.521693 0.17331,0.47524 0.0581,0.99741 0.19535,1.44487 -0.36307,0.3697 -0.20532,0.96671 -0.25062,1.43919 -0.0318,0.49346 0.11663,1.03192 -0.0951,1.49086 0.14563,0.84649 0.0783,1.71241 0.1111,2.5678 -0.0665,0.45222 0.24572,0.9223 -0.0563,1.32601 -0.16113,0.30199 -0.14396,0.87955 0.10181,1.04645 -0.008,0.50476 0.33631,0.95241 0.12867,1.45211 0.19711,0.12306 0.23508,0.16336 0.093,0.39998 -0.25935,0.34252 0.27746,0.87321 -0.10441,1.09347 -0.51512,0.10675 0.14735,0.092 0.17105,0.3359 -0.11326,0.32055 -0.0946,1.20548 0.39069,0.72501 0.77099,0.005 -0.24847,-0.55675 0.12041,-0.89813 0.0876,-0.7571 0.0666,-1.52622 0.017,-2.28565 -0.17201,-0.6034 -0.11922,-1.24776 -0.0837,-1.86965 0.24857,-0.51407 -0.0498,-1.02934 0.016,-1.55391 -0.006,-0.45575 0.10213,-0.87945 -0.0367,-1.32136 -0.0154,-0.45173 -0.18735,-0.86783 0.13745,-1.26039 0.17299,-0.38763 0.16688,0.10802 0.19378,0.28939 0.13417,0.39563 0.14968,0.90483 0.22739,1.25987 0.1107,-0.96718 0.0622,-1.94664 0.0801,-2.9192 0.006,-0.9718 0.007,-1.94324 0.007,-2.91507 0.0104,0.0106 0.0205,0.0219 0.0315,0.031 0.27921,0.23143 0.31816,-0.0277 0.16589,-1.11104 -0.17018,-1.20977 -0.16534,-1.42171 0.0331,-1.43661 0.12761,-0.0166 0.23202,0.66842 0.23202,1.51361 0,0.84503 0.0583,1.14304 0.12972,0.65991 0.14145,-0.95658 0.0967,-13.710923 0.0274,-13.242613 -0.0693,0.46832 -0.28163,-0.48851 -0.47181,-2.12545 -0.062,-0.53393 -0.12687,-0.97738 -0.18965,-1.3286 -1.9e-4,-0.26869 -0.003,-0.53746 -0.002,-0.80616 l -0.16123,0.10542 c -0.0298,-0.0783 -0.0571,-0.11812 -0.0806,-0.11213 z", +1.19528, 10.0475, +"M 0.114948 -10.0474 -0.50148,0.14618 c 0.0736,0.18661 0.16739,0.36967 0.261,0.54185 -0.0538,0.4307 0.22483,0.82056 0.0968,1.2648 -0.0525,0.36807 -0.1816,0.11366 -0.21076,-0.0961 -0.007,-0.23246 -0.37153,-0.97536 -0.51525,-0.43993 -0.11169,0.66702 0.20719,1.30602 0.21001,1.96991 -0.10058,0.38477 -0.12871,0.71438 -0.0766,1.11766 0.11511,0.40452 0.49088,0.70014 0.16472,1.13856 -0.0959,0.46912 0.0158,0.94258 0.003,1.41083 -0.0326,0.51795 0.0689,1.02842 0.006,1.55089 -0.14471,0.4072 -0.12605,0.91736 -0.37066,1.24545 0.20492,0.14259 0.56731,0.13997 0.4087,0.53758 -0.10038,0.73209 -0.0783,1.47103 -0.13167,2.20635 0.0757,0.52752 -0.1133,1.03601 -0.15412,1.55692 0.0337,0.76041 -0.16675,1.50234 -0.28566,2.24782 -0.1094,0.44497 -0.0894,0.90202 -0.16034,1.34929 -0.0245,0.16179 -0.1532,0.38291 0.10343,0.38358 0.48997,0.0292 0.56196,0.55944 0.49872,0.95487 -0.17814,0.30505 0.0416,0.71193 0.0159,1.00833 l 0.2316,-0.0937 c 0.066,-0.33303 0.12356,-0.66776 0.19171,-1.00036 0.31225,-1.29348 0.46274,-2.61533 0.65329,-3.92988 0.14143,-0.74868 0.0819,-1.51508 0.22844,-2.26219 -0.0167,-0.47274 0.0824,-0.94169 0.053,-1.41451 0.0186,-0.47544 0.0882,-0.94598 0.058,-1.42092 0.0683,-0.45815 -0.0209,-0.89535 -0.002,-1.36269 0.0604,-0.47506 0.0288,-0.95181 -0.0173,-1.42355 0.1158,-0.28601 -0.15986,-0.86145 0.10674,-0.9301 -0.0248,0.50068 0.22634,0.12776 0.21472,-0.15544 -0.004,-0.18483 -0.0516,-0.89113 -0.24975,-0.42432 0.24166,0.0912 -0.0666,0.42542 -0.17345,0.40205 0.17628,-0.29069 0.0179,-0.61457 0.0859,-0.92048 0.25808,-0.41654 0.13936,-0.89587 -0.12721,-1.26285 -0.14964,-0.44611 -0.18222,-0.91074 -0.22982,-1.36825 -0.0568,-0.4894 -0.17777,-0.9772 -0.21376,-1.45567 0.005,-0.36792 -0.0846,-0.72055 -0.17196,-1.07205 z", +1.30323, 16.4753, +"M 0.0525373 -16.4753 -1.35577,1.84766 c 0.27683,0.42497 0.50698,1.05949 0.54982,1.4889 0.16442,1.33355 -0.31785,2.67593 -0.0632,4.05717 0.89557,1.12078 0.40959,2.34393 0.16413,3.57614 -0.17728,1.24541 0.33502,2.53287 0.6468,3.771819 0.23041,1.45009 0.26088,2.878319 -0.008,4.303319 -0.24439,1.27673 -0.30622,2.48615 0.0291,3.76989 -0.15519,1.31328 -0.52854,2.58989 -0.56215,3.88389 -0.40545,1.32231 0.79113,2.83626 -0.1482,4.10603 -0.48269,0.66505 -0.53542,1.40168 -0.46451,2.14587 l 1.46058,-0.003 c 0.0168,-0.42614 0.0252,-0.85474 0.0677,-1.27432 0.2539,-1.34995 0.14317,-2.66731 0.3672,-4.02616 0.031,-1.4516 0.11297,-2.83964 0.19182,-4.25746 0.12583,-1.2814 -0.13142,-2.63659 0.16191,-3.91395 -0.1099,-1.37381 -0.1194,-2.74933 -0.14373,-4.116199 0.0786,-1.414249 -0.23712,-2.813419 -0.12807,-4.194219 -0.0646,-1.50176 -0.23348,-3.00275 -0.21195,-4.44847 0.788,-0.10067 0.97118,-1.25313 0.22118,-1.50409 0.42751,0.71673 -0.59912,0.75408 -0.39471,0.0445 0.49068,-0.38166 0.47426,-0.5855 0.0196,-0.82701 0.15128,-1.10943 -0.28974,-2.18426 -0.17309,-3.35652 -0.008,-0.38118 -0.13645,-0.71905 -0.22593,-1.07252 z", +3.07777, 16.9417, +"M -0.540315 -15.4793 c -0.24634,0.11349 -1.09658,-1.59624 -1.32736,-1.45407 -0.46023,-0.0191 -0.87738,0.005 -0.4728,0.85065 -0.38438,0.23736 0.33291,1.49353 -0.0462,1.73799 0.11651,0.36917 0.22846,-0.0337 0.42244,7.7e-4 0.15386,0.31092 0.11637,0.69337 0.1657,1.02389 0.34684,0.15366 0.10848,0.64269 0.28358,0.76644 0.41195,-0.0452 0.55085,0.74543 0.0419,0.5194 -0.27864,0.26975 0.19724,0.25988 0.15384,0.53117 0.1548,0.28493 0.18472,-0.0741 0.12234,-0.20191 0.13378,-0.5353 0.43906,0.1542 0.21787,0.35432 -0.44319,-0.0388 -0.0774,0.48499 0.15909,0.23185 0.10925,-0.0917 0.16042,0.22403 0.24283,0.28936 0.16253,0.3502 -0.0983,-0.0308 -0.20977,-0.0917 0.0884,0.0915 -0.32447,0.49774 -0.0756,0.36635 0.504,-0.0226 -0.0992,0.43767 0.20795,0.63982 -0.12496,0.26315 0.26137,0.29982 0.17242,0.57031 0.17152,0.21667 0.0867,0.45418 -0.10428,0.6239 0.17103,0.10816 0.33957,0.15221 0.1982,0.38978 -0.16129,0.25419 0.1763,0.20125 0.0976,0.39005 0.32354,0.0622 -0.0735,0.53313 0.26064,0.44952 0.16282,-0.294 0.37219,0.22828 0.27145,0.4162 -0.47933,0.1604 0.29042,0.60248 -0.0488,0.85553 -0.3968,0.13941 0.16426,0.23706 -0.0494,0.45862 0.28882,0.23742 -0.26764,0.54324 0.13284,0.74483 -0.10693,0.19204 0.083,0.29149 0.17713,0.48105 -0.15407,0.2054 0.003,0.54361 0.2659,0.31837 0.41731,-0.0408 -0.0181,0.41236 -0.166,0.51107 -0.33606,0.19565 -0.0219,0.65064 -0.0739,0.87903 0.16745,0.29274 -0.13216,0.58183 -0.1062,0.84082 0.34137,-0.0301 0.0236,0.11514 0.051,0.28009 0.0409,0.34986 0.13526,0.72795 0.0252,1.04597 0.15197,0.3677 0.14533,0.69256 0.16035,1.08996 -0.036,0.32787 -0.12398,0.67271 -0.0792,1.00699 0.0442,0.35265 -0.0843,0.70567 0.0129,1.05246 -0.16927,0.31514 0.0256,0.61454 -0.0918,0.92499 0.16825,0.22895 -0.33833,0.64208 -0.0292,0.80537 0.15925,-0.0153 0.26898,-0.23555 0.49496,-0.0945 0.26864,0.26814 -0.20509,0.57525 -0.34709,0.79008 -0.22991,0.0506 -0.30996,0.1628 -0.20241,0.38893 -0.17522,0.31665 -0.083,0.71442 -0.19792,1.05749 -0.13603,0.29173 -0.0706,0.64159 -0.18877,0.95263 -0.0571,0.35637 -0.19909,0.70354 -0.20502,1.0641 0.0598,0.35902 -0.37999,0.56428 -0.25411,0.85446 -0.17361,0.0964 -0.0151,0.24287 -0.10293,0.35328 -0.12389,0.31997 -0.23871,0.64343 -0.31422,0.9698 0.37628,0.16039 -0.17227,0.39286 -0.16858,0.63597 0.30078,0.23058 -0.13834,0.45129 -0.031,0.70849 -0.25057,0.0583 -0.25681,0.38137 -0.29542,0.62486 -0.16162,0.27054 -0.36499,0.58731 -0.41785,0.94511 -0.20866,0.32369 -0.2598,0.71855 -0.47571,1.0374 -0.0588,0.22792 -0.45417,0.58871 -0.21593,0.77317 0.17559,0.16477 -0.45739,0.3482 -0.45852,0.6172 -0.19443,0.35075 0.20244,0.16374 0.23716,-0.0487 0.19866,0.0213 -0.14873,0.46087 -0.16338,0.61248 0.061,0.23503 -0.25086,0.084 -0.18389,0.22621 0.0489,0.15635 0.11616,0.29085 0.27212,0.14598 0.22858,-0.16237 0.2946,-0.0576 0.29863,0.10731 l 0.58122,-0.23538 c 0.0821,-0.26109 0.13335,-0.52666 0.32626,-0.73129 0.29731,-0.21914 0.4927,-0.5536 0.42053,-0.90933 0.28474,-0.14849 -0.14372,-0.26041 0.14824,-0.39219 0.0582,-0.25514 0.25636,-0.49292 0.21565,-0.73236 0.20454,-0.25284 0.2954,-0.60737 0.43347,-0.91621 0.15348,-0.36215 0.22129,-0.75885 0.40247,-1.10584 -0.28553,-0.13508 0.0396,-0.0926 0.0685,-0.27653 0.002,-0.34291 0.29517,-0.66136 0.262,-0.97518 -0.081,-0.33699 0.1328,-0.65558 0.15942,-0.96449 0.0684,-0.31442 0.27457,-0.63665 0.23586,-0.96492 0.0625,-0.50054 0.23178,-0.97825 0.42326,-1.44136 0.18554,-0.19438 0.0484,-0.42979 0.14205,-0.62178 0.0484,-0.35206 0.10613,-0.7143 0.13996,-1.07237 -0.0486,-0.32538 0.0402,-0.66028 0.0568,-0.98284 -0.1766,-0.19954 0.22096,-0.45145 -0.005,-0.58272 0.24328,-0.0558 0.0135,-0.13491 -0.0604,-0.28181 0.19276,-0.31297 0.27144,-0.70626 0.22753,-1.05971 -0.0252,-0.37093 0.27933,-0.65074 0.23872,-1.02209 0.13549,-0.19061 0.0276,-0.13206 -0.15026,-0.14387 0.20177,-0.27604 0.0426,-0.68124 0.0698,-1.00127 -0.25174,-0.36563 0.5493,-0.54553 0.3428,-0.81705 -0.25356,-0.23622 0.32006,-0.0315 0.44898,-0.15681 0.26237,0.0525 0.16508,-0.0532 0.004,-0.17008 -0.44135,-0.0992 -0.0848,-0.46999 0.19506,-0.38124 0.28648,0.19195 0.22981,-0.48563 0.0384,-0.17107 0.12844,-0.16201 -0.19188,-0.2907 -0.11936,-0.0706 -0.26147,0.0464 0.31544,-0.3974 0.12276,-0.52606 -0.5222,-0.16455 0.47293,-0.4875 0.0622,-0.80128 -0.15487,-0.35815 -0.30698,0.0345 -0.12834,0.21111 0.11054,0.25141 -0.0432,0.17819 -0.13073,0.002 -0.25855,-0.2018 0.0244,-0.36195 -0.0498,-0.57233 -0.0965,-0.35513 0.12392,-0.0329 0.17524,0.11028 0.25543,0.19264 0.35139,-0.0251 0.16432,-0.22037 -0.004,-0.33007 -0.26981,-0.63496 -0.12873,-0.93904 -0.26093,-0.11267 -0.0552,-0.27303 0.0915,-0.39209 -0.21433,-0.10496 0.0965,-0.35929 -0.11769,-0.54934 -0.25618,-0.32729 0.28716,-0.15825 0.25115,-0.39389 0.11279,-0.26574 -0.36057,-0.39294 -0.28675,-0.7419 0.005,-0.33252 -0.16188,-0.73649 0.0676,-0.99258 -0.30161,0.0812 -0.28705,-0.41089 -0.53868,-0.52123 -0.15675,0.11505 -0.4179,0.16922 -0.34564,-0.13387 0.14195,-0.3866 0.5009,0.36188 0.45085,-0.0604 0.23245,-0.0749 0.17085,-0.38571 -0.1051,-0.20675 -0.4024,0.21999 -0.32985,-0.45314 -0.03,-0.54873 0.23973,-0.30604 -0.0514,-0.68237 0.0219,-1.00559 -0.25351,0.14792 -0.18752,-0.10625 -0.0293,-0.19294 -0.17696,-0.18581 0.13556,-0.36147 -0.0298,-0.49713 0.0619,-0.35137 -0.28931,-0.20494 -0.41784,0.002 -0.25619,0.36645 -0.46783,-0.021 -0.55009,-0.28332 -0.23712,-0.21349 0.077,-0.44237 -0.0703,-0.63757 -0.0231,-0.364 -0.38759,-0.5027 -0.41947,-0.85291 -0.40308,-0.16283 -0.33097,-0.5917 -0.39057,-0.93046 0.066,-0.25081 0.0521,-0.49286 -0.16035,-0.69864 -0.0175,-0.32952 -0.20434,-0.65743 -0.31229,-0.96069 -0.27709,-0.23307 -0.26297,-0.67784 -0.45519,-0.90665 z", +1.20026, 9.02829, +"M -0.647852 8.69897 c 0.27123,0.89699 0.28293,-0.25188 1.17294,-0.91121 -0.019,-0.45337 -0.0333,-0.90699 -0.0667,-1.35961 -0.16717,-0.71424 -0.26623,-1.42486 -0.18603,-2.16524 -0.35177,-0.76585 0.25336,-1.53555 -0.20672,-2.29857 -0.0243,-0.66796 0.56421,-1.8924 0.64041,-2.52784 -0.36439,-0.62391 0.76929,-1.52704 0.43002,-2.6141 -0.11243,0.31694 -0.2569,0.21823 -0.27552,0.42189 -0.0451,0.49293 -0.42354,0.81201 -0.47179,0.95559 -0.21656,-0.23971 -0.88287,-1.05873 -0.93376,-1.99936 0.0638,-0.699 0.36156,-1.33045 0.25064,-2.05931 0.12634,-0.5642 -0.3497,-1.6984 0.4775,-1.78749 0.75422,-0.1124 -8e-5,-0.99299 -0.28784,-0.42271 -0.71152,-0.0264 0.003,-0.62728 -0.27184,-0.94723 -0.76967,-0.14096 -0.83801,0.98907 -0.55758,1.51309 0.38695,0.50259 0.21479,1.05455 -0.26614,1.39216 0.0501,0.97361 0.11051,1.94686 0.15451,2.92075 0.0822,1.46354 0,2.94343 0.2372,4.39147 0.007,0.81629 0.20886,1.59379 0.30335,2.39622 0.37107,0.77953 -0.48689,1.40959 -0.29922,2.23398 0.25837,0.71917 0.26924,1.49082 0.23463,2.2629 0.0409,0.22802 -0.003,0.42297 -0.078,0.60462 z", +1.28909, 16.4888, +"M -0.601805 -16.4887 c -0.64066,0.01 -0.68406,1.0337 -0.42117,1.52497 0.38696,0.50259 0.21482,1.05455 -0.26611,1.39216 0.0501,0.97361 0.11051,1.94686 0.15451,2.92075 0.0822,1.46354 -2e-5,2.94343 0.23718,4.39147 0.007,0.81629 0.20886,1.5938 0.30334,2.39623 0.37108,0.77953 -0.48686,1.40959 -0.29919,2.23397 0.25837,0.71917 0.26921,1.49084 0.23461,2.26291 0.0409,0.22802 -0.003,0.42297 -0.078,0.60462 0.2036,0.67334 0.26077,0.19399 0.65318,-0.36587 0.0969,0.52347 -0.0537,1.09567 -0.19016,1.50792 0.0168,0.88995 0.65551,0.74475 0.31729,1.64124 -0.0177,0.60701 -0.0656,1.18107 -0.18346,1.53996 0.25987,0.69342 -0.0198,1.56597 -0.17106,2.204 0.0508,0.45325 0.55251,1.01924 0.18243,1.5999 -0.21179,0.38644 0.0962,0.7179 0.22789,0.6749 0.10991,0.92985 -0.3225,-0.36708 -0.2527,0.61391 0.31975,-0.39811 0.20545,1.13303 0.061,1.51257 -0.1973,0.59553 0.0532,1.92311 -0.32557,1.88361 -0.17997,0.49675 0.006,0.49018 0.12301,0.36483 0.33612,0.4428 0.44119,1.18723 0.49659,2.04277 0.35883,0.26987 0.25639,-1.31676 0.30748,-1.8836 0.23582,-0.55477 -0.0262,-1.73369 0.22997,-2.05673 0.17235,-0.37447 0.2776,-0.92052 0.4041,-1.32911 0.0863,-0.79196 -0.53517,-1.19078 -0.13745,-1.73065 0.23614,0.1059 0.15208,-0.41602 0.14108,-0.81338 -0.096,-0.43366 0.0207,-0.65455 0.1421,-0.69195 l -0.0377,-1.03611 c -0.11308,0.12238 -0.18047,0.14259 -0.0718,-0.41652 0.0189,-0.52013 -0.27541,-0.60437 -0.0723,-1.15703 -0.14343,-0.6791 -0.24172,-1.29806 -0.2718,-2.10478 -0.0691,-0.7367 -0.28104,-1.22923 -0.22945,-1.98438 -0.19344,-0.65924 0.37674,-0.26839 0.13023,-1.00149 -0.20709,-0.36744 0.15814,-0.68667 -0.0765,-0.90382 0.23915,-0.85322 -0.17302,-1.75788 0.092,-2.56418 h 5e-4 c 0.18233,-0.97684 -0.41499,-1.56326 -0.47749,-2.1239 -0.0678,0.0482 -0.15229,0.007 -0.23513,-0.0357 -0.0187,-0.0404 -0.0387,-0.0806 -0.063,-0.12092 -0.0243,-0.66796 0.56457,-1.89257 0.64077,-2.52801 -0.36438,-0.62391 0.76922,-1.52674 0.42995,-2.6138 -0.11242,0.31694 -0.25681,0.21802 -0.27543,0.42168 -0.0451,0.49293 -0.42355,0.81192 -0.47181,0.9555 -0.21656,-0.23971 -0.88289,-1.05873 -0.93379,-1.99936 0.0638,-0.699 0.36155,-1.33045 0.25064,-2.05931 0.12634,-0.5642 -0.3497,-1.6984 0.47749,-1.78748 0.75422,-0.1124 -8e-5,-0.993 -0.28784,-0.42272 -0.71152,-0.0264 0.003,-0.62728 -0.27183,-0.94723 -0.0481,-0.009 -0.0937,-0.0125 -0.13642,-0.0119 z", +0.891012, 10.9638, +"M 0.353692 -8.74076 c -0.26499,0.8063 0.14695,1.71094 -0.0922,2.56416 0.23462,0.21715 -0.13037,0.53651 0.0767,0.90395 0.24652,0.7331 -0.32371,0.3421 -0.13029,1.00134 -0.0516,0.75515 0.16007,1.24804 0.22912,1.98474 0.0301,0.80672 0.12886,1.42571 0.27229,2.10481 -0.20308,0.55266 0.0911,0.63666 0.0722,1.1568 -0.10866,0.55911 -0.0412,0.53899 0.0719,0.4166 l 0.0376,1.03625 c -0.12144,0.0374 -0.23824,0.25801 -0.14224,0.69167 0.011,0.39736 0.0951,0.91925 -0.14103,0.81335 -0.39773,0.53987 0.224,0.93857 0.13772,1.73053 -0.12651,0.40859 -0.23189,0.95495 -0.40425,1.32942 -0.25615,0.32304 0.006,1.5018 -0.22982,2.05657 -0.0511,0.56684 0.0512,2.15362 -0.30762,1.88375 -0.0554,-0.85554 -0.16078,-1.60008 -0.49692,-2.04288 -0.11732,0.12535 -0.30284,0.13188 -0.12285,-0.36487 0.37871,0.0395 0.12845,-1.28817 0.32574,-1.8837 0.14445,-0.37954 0.25865,-1.91074 -0.0611,-1.51263 -0.0698,-0.98099 0.36247,0.31593 0.25256,-0.61392 -0.13168,0.043 -0.43956,-0.28828 -0.22776,-0.67472 0.37007,-0.58066 -0.13156,-1.14676 -0.18233,-1.60001 0.15123,-0.63803 0.43113,-1.51051 0.17126,-2.20393 0.11781,-0.35889 0.16536,-0.93265 0.18299,-1.53966 0.33822,-0.89649 -0.30017,-0.75144 -0.31703,-1.64139 0.16345,-0.49382 0.35255,-1.21826 0.1047,-1.81199 -0.36685,-0.1049 0.17326,-0.62553 0.0859,-1.18473 0.11267,-0.55844 0.1666,-0.62712 -0.10721,-0.68 0.21516,-0.68305 -0.17153,-1.14907 -0.0833,-1.906 0.13977,-0.58259 0.0436,-0.99951 -0.009,-1.65408 -0.0315,-1.04621 0.34527,-0.33266 0.55695,-0.48326 0.0625,0.56064 0.66002,1.14699 0.47769,2.12383 z", +1.40858, 15.4784, +"M -0.215316 -14.2449 c -0.0573,-0.39663 -0.09,-0.9845 -0.25167,-1.23351 l -0.008,0.0889 c -0.008,0.51419 -0.0135,1.82829 -0.0164,3.62614 -0.16272,-0.0566 -0.15885,-0.0396 -0.42542,-0.0862 0.12658,0.42973 0.13679,0.99178 0.0761,0.91046 0.003,0.20217 -0.0381,0.38449 -0.14261,0.45011 0.57288,0.0852 0.23548,1.11425 -0.31834,1.01699 -0.14563,0.51493 0.25241,1.08423 -0.0393,1.56063 0.18624,0.45092 0.31719,0.8511 0.0863,1.32291 0.24339,0.56784 0.14216,1.21654 0.18034,1.82315 0.0321,0.60964 -0.054,1.23667 0.0951,1.83296 0.21513,0.29947 -0.39592,0.30966 -0.11316,0.67903 0.039,0.74934 0.21058,1.48397 0.17309,2.23759 0.0111,0.43606 0.0354,1.12083 -0.22064,1.29139 0.64397,0.51467 -0.3131,0.91939 -0.18915,1.4857 0.0477,0.49886 0.30321,1.02072 0.0956,1.48415 -0.0396,0.59756 -0.0501,1.20341 0.21238,1.72341 0.0946,0.62128 -0.0948,1.21611 -0.0119,1.84536 -0.0453,0.5497 0.30977,1.1923 -0.0543,1.66451 -0.19063,0.44184 -8e-5,0.91834 -0.19378,1.33842 -0.0311,0.51712 -0.0706,1.05695 -0.0429,1.57355 -0.0493,0.5227 -0.0706,1.05957 -0.003,1.58026 0.079,0.51085 0.0409,0.93086 -0.0816,1.42059 0.0312,0.0244 0.0439,0.0591 0.0692,0.0868 l 1.44333,-3.35947 c -0.0392,-0.12325 -0.10192,-0.24343 -0.21964,-0.35295 -0.0919,-0.54896 0.15828,-1.13571 0.29766,-1.60611 -0.0725,-0.11045 -0.11144,-0.22339 -0.13435,-0.33744 l 1.00769,-1.16841 c -2.7e-4,-0.0874 0.0233,-0.25803 -0.051,-0.4113 -0.0574,-0.11829 -0.21368,-0.21272 -0.23231,-0.33456 -0.0501,-0.32747 0.096,-0.64257 0.0949,-1.07853 0,-0.22596 -0.12986,-0.49448 -0.12229,-0.73317 0.0391,-1.23285 0.2989,-2.52798 0.29792,-3.1837 0.0119,-0.61935 -0.007,-12.50878 -0.007,-13.10462 0.0514,-0.4966 -0.0418,0.0395 0.1633,-0.14005 0.0463,0.3542 0.0498,-0.47899 0.0491,-0.11317 0.0143,-1.07594 -0.0857,-2.58572 -0.28713,-2.87271 -0.1198,-0.17068 -0.28631,0.41503 -0.45638,0.89253 -0.0151,-0.0313 -0.61574,-1.82898 -0.72041,-1.81959 z m 0.94094,4.32328 c -0.007,2.38506 -0.13253,2.52318 -0.13645,1.38389 -0.004,-0.49656 -0.0196,-0.97179 0.13645,-1.38389 z m -0.7084,1.35338 c 0,7e-5 0,-9e-5 0.003,0 0.0662,0.009 0.17023,0.0887 0.1819,0.15865 0.008,0.0466 -0.0254,0.0889 -0.13798,0.10335 -0.0214,-0.0326 -0.0326,-0.0554 -0.0465,-0.0811 2.1e-4,-0.0603 0,-0.12059 0,-0.18087 z m 0.48411,-0.0599 c 0.0272,0.008 0.063,0.0884 0.0682,0.18345 0.003,0.0634 -0.007,0.13334 -0.0419,0.19224 -0.0347,-0.0107 -0.0299,-0.0884 -0.0419,-0.12299 -0.0298,-0.19578 -0.0116,-0.2606 0.0156,-0.2527 z m -0.55491,2.5006 c 0.0892,0.006 0.19317,0.0297 0.24858,0.0346 0.11311,-0.0172 0.16436,0.0169 0.17415,0.0708 0.003,0.0101 0.003,0.0207 0,0.032 -0.0114,0.14338 -0.23088,0.36319 -0.37465,0.25063 -0.0662,-0.13041 -0.10052,-0.25938 -0.1106,-0.38706 0.0193,-0.001 0.0391,-0.002 0.0615,-0.001 z m 0.13229,1.002 c 0.0214,-0.01 0.0347,0.0183 0.0383,0.0615 0.007,0.0865 -0.0249,0.23269 -0.11009,0.25321 -0.0212,-0.0395 -0.0345,-0.10075 -0.014,-0.14831 0.0356,-0.10904 0.0645,-0.15666 0.0858,-0.1664 z m 0,0.52504 c 0.006,-0.002 0.0143,2.2e-4 0.0233,0.005 0.036,0.0197 0.0874,0.0851 0.0889,0.12505 0,0.0264 -0.0206,0.0421 -0.0842,0.0248 -0.0461,-0.10744 -0.046,-0.14933 -0.0279,-0.15502 z m 0.0201,4.1553 v 0 c 0.0656,-0.0183 0.009,0.15149 0.0156,0.29559 0.0532,0.0409 0.0778,0.0874 0.0837,0.13229 0.003,0.0122 0.003,0.0243 0,0.0362 -0.0151,0.17868 -0.30001,0.30917 -0.21085,-0.0398 -0.005,-0.11149 -0.0596,-0.23076 -0.003,-0.33538 0.056,-0.0558 0.0913,-0.0828 0.11319,-0.0889 z m 1.20973,2.00814 c -0.003,-2.6e-4 -0.005,0.004 -0.007,0.0114 v 0 c -0.008,0.0314 -0.0132,0.12504 0,0.25528 l 0.005,0.0145 0.006,-0.03 c 0.003,-0.0485 0.005,-0.0893 0.005,-0.12299 0.003,-0.0882 -0.003,-0.12732 -0.01,-0.12815 z m -0.0517,0.48576 c -0.007,-0.004 -0.0151,-0.003 -0.0228,0.005 -0.0201,0.0212 -0.0409,0.0895 -0.0594,0.22738 -0.11983,0.55066 -0.2176,3.41162 0.003,3.71346 0.36878,-0.48993 0.18709,-2.28477 0.17984,-2.57762 -0.007,-0.29285 -0.0406,-0.59455 -0.0305,-0.87643 0.0206,-0.16536 -0.0193,-0.46288 -0.0703,-0.49196 z", +1.40858, 15.4784, +"M -0.215316 -14.2449 c -0.0573,-0.39663 -0.09,-0.9845 -0.25167,-1.23351 l -0.008,0.0889 c -0.008,0.51419 -0.0135,1.82828 -0.0164,3.62614 -0.16272,-0.0566 -0.15885,-0.0396 -0.42542,-0.0862 0.12658,0.42973 0.13679,0.99178 0.0761,0.91046 0.003,0.20216 -0.0381,0.38449 -0.14261,0.4501 0.57288,0.0852 0.23548,1.11425 -0.31834,1.017 -0.14563,0.51492 0.25241,1.08422 -0.0393,1.56063 0.18624,0.45092 0.31719,0.8511 0.0863,1.32291 0.24339,0.56784 0.14216,1.21653 0.18034,1.82315 0.0321,0.60964 -0.054,1.23666 0.0951,1.83296 0.21513,0.29947 -0.39592,0.30966 -0.11316,0.67902 0.039,0.74935 0.21058,1.48397 0.17309,2.23759 0.0111,0.43606 0.0354,1.12083 -0.22064,1.2914 0.64397,0.51466 -0.3131,0.91938 -0.18915,1.48569 0.0477,0.49885 0.30321,1.02071 0.0956,1.48415 -0.0396,0.59756 -0.0501,1.20342 0.21238,1.72341 0.0946,0.62127 -0.0948,1.21611 -0.0119,1.84536 -0.0453,0.5497 0.30977,1.19229 -0.0543,1.6645 -0.19063,0.44184 -8e-5,0.91834 -0.19378,1.33842 -0.0311,0.51712 -0.0706,1.05695 -0.0429,1.57355 -0.0493,0.5227 -0.0706,1.05957 -0.003,1.58026 0.079,0.51085 0.0409,0.93086 -0.0816,1.42059 0.0312,0.0244 0.0439,0.0591 0.0692,0.0868 l 1.44333,-3.35948 c -0.0392,-0.12324 -0.10192,-0.24343 -0.21964,-0.35295 -0.0919,-0.54896 0.15828,-1.13571 0.29766,-1.60611 -0.0725,-0.11045 -0.11144,-0.22339 -0.13435,-0.33744 l 1.00769,-1.16841 c -2.7e-4,-0.0874 0.0233,-0.25803 -0.051,-0.4113 -0.0574,-0.11829 -0.21368,-0.21272 -0.23231,-0.33456 -0.0501,-0.32747 0.096,-0.64257 0.0949,-1.07853 0,-0.22595 -0.12986,-0.49447 -0.12229,-0.73317 0.0391,-1.23284 0.2989,-2.52797 0.29792,-3.18369 0.0119,-0.61935 -0.007,-12.50878 -0.007,-13.10462 0.0514,-0.4966 -0.0418,0.0395 0.1633,-0.14005 0.0463,0.3542 0.0498,-0.47899 0.0491,-0.11317 0.0143,-1.07594 -0.0857,-2.58572 -0.28713,-2.87271 -0.1198,-0.17068 -0.28631,0.41503 -0.45638,0.89253 -0.0151,-0.0313 -0.61574,-1.82898 -0.72041,-1.81959 z m 0.94094,4.32327 c -0.007,2.38507 -0.13253,2.52318 -0.13645,1.3839 -0.004,-0.49657 -0.0196,-0.97179 0.13645,-1.3839 z m -0.7084,1.35339 c 0,7e-5 0,-9e-5 0.003,0 0.0662,0.009 0.17023,0.0887 0.1819,0.15865 0.008,0.0466 -0.0254,0.0889 -0.13798,0.10335 -0.0214,-0.0326 -0.0326,-0.0554 -0.0465,-0.0811 2.1e-4,-0.0603 0,-0.12058 0,-0.18087 z m 0.48411,-0.0599 c 0.0272,0.008 0.063,0.0884 0.0682,0.18345 0.003,0.0634 -0.007,0.13333 -0.0419,0.19224 -0.0347,-0.0107 -0.0299,-0.0884 -0.0419,-0.123 -0.0298,-0.19577 -0.0116,-0.26059 0.0156,-0.25269 z m -0.55491,2.5006 c 0.0892,0.006 0.19317,0.0297 0.24858,0.0346 0.11311,-0.0172 0.16436,0.0169 0.17415,0.0708 0.003,0.0101 0.003,0.0207 0,0.032 -0.0114,0.14339 -0.23088,0.36319 -0.37465,0.25063 -0.0662,-0.13041 -0.10052,-0.25937 -0.1106,-0.38705 0.0193,-0.001 0.0391,-0.002 0.0615,-0.001 z m 0.13229,1.002 c 0.0214,-0.01 0.0347,0.0183 0.0383,0.0615 0.007,0.0865 -0.0249,0.23269 -0.11009,0.25321 -0.0212,-0.0395 -0.0345,-0.10075 -0.014,-0.14832 0.0356,-0.10903 0.0645,-0.15665 0.0858,-0.16639 z m 0,0.52504 c 0.006,-0.002 0.0143,2.1e-4 0.0233,0.005 0.036,0.0197 0.0874,0.0851 0.0889,0.12505 0,0.0264 -0.0206,0.0421 -0.0842,0.0248 -0.0461,-0.10744 -0.046,-0.14934 -0.0279,-0.15502 z m 0.0201,4.1553 v 0 c 0.0656,-0.0183 0.009,0.15149 0.0156,0.29558 0.0532,0.0409 0.0778,0.0874 0.0837,0.1323 0.003,0.0122 0.003,0.0243 0,0.0362 -0.0151,0.17868 -0.30001,0.30918 -0.21085,-0.0398 -0.005,-0.1115 -0.0596,-0.23077 -0.003,-0.33539 0.056,-0.0558 0.0913,-0.0828 0.11319,-0.0889 z m 1.20973,2.00814 c -0.003,-2.6e-4 -0.005,0.004 -0.007,0.0114 v 0 c -0.008,0.0314 -0.0132,0.12505 0,0.25528 l 0.005,0.0145 0.006,-0.03 c 0.003,-0.0485 0.005,-0.0893 0.005,-0.12298 0.003,-0.0882 -0.003,-0.12732 -0.01,-0.12816 z m -0.0517,0.48576 c -0.007,-0.004 -0.0151,-0.003 -0.0228,0.005 -0.0201,0.0212 -0.0409,0.0895 -0.0594,0.22737 -0.11983,0.55067 -0.2176,3.41162 0.003,3.71346 0.36878,-0.48992 0.18709,-2.28477 0.17984,-2.57762 -0.007,-0.29285 -0.0406,-0.59455 -0.0305,-0.87643 0.0206,-0.16535 -0.0193,-0.46288 -0.0703,-0.49196 z", +1.19541, 13.7255, +"M -0.876944 -13.7255 0.0201,0.0681 c 0.1772,0.62029 0.2896,1.04659 0.2289,0.96528 0.002,0.20217 -0.038,0.38439 -0.14247,0.45001 0.57288,0.0852 0.23535,1.11439 -0.31847,1.01713 -0.14564,0.51493 0.25248,1.08419 -0.0392,1.56059 0.18623,0.45093 0.31728,0.85144 0.0864,1.32325 0.24339,0.56784 0.14204,1.21638 0.18021,1.82299 0.0321,0.60964 -0.0539,1.23657 0.0952,1.83287 0.21514,0.29946 -0.3963,0.30988 -0.11356,0.67925 0.039,0.74934 0.21098,1.48377 0.17351,2.23739 0.0112,0.43606 0.0353,1.12094 -0.22077,1.2915 0.64399,0.51467 -0.31336,0.91952 -0.1894,1.48583 0.0477,0.49885 0.3035,1.02028 0.0959,1.48372 -0.0396,0.59756 -0.0502,1.20353 0.21231,1.72353 0.0946,0.62128 -0.0949,1.21631 -0.012,1.84556 -0.0453,0.5497 0.30974,1.19243 -0.0543,1.66464 -0.19062,0.44184 9e-5,0.91798 -0.19363,1.33806 -0.0311,0.51712 -0.0704,1.05705 -0.0427,1.57365 -0.0493,0.5227 -0.071,1.05966 -0.003,1.58035 0.079,0.51085 0.041,0.93086 -0.0815,1.42059 0.0312,0.0244 0.0438,0.059 0.0691,0.0867 l 1.4435,-3.35926 c -0.0392,-0.12324 -0.102,-0.24386 -0.21971,-0.35338 -0.0919,-0.54896 0.15862,-1.13534 0.29801,-1.60574 -0.33671,-0.51282 -0.0478,-1.07406 0.0233,-1.5934 0.1794,-0.51138 -0.42493,-0.9927 -0.1319,-1.57117 0.10052,-0.42731 0.34806,-0.7585 0.55653,-1.13598 -0.0485,-0.45487 -0.63618,-0.4481 -0.40805,-0.98503 0.20565,-0.4798 0.19847,-1.00573 0.32411,-1.49994 0.0473,-0.60976 -0.18707,-1.15221 -0.31882,-1.73588 -0.20363,-0.49064 -0.48402,-0.98562 -0.62777,-1.483 -0.0236,-0.51779 0.25969,-0.98172 0.1594,-1.47137 0.1783,-0.63379 0.0603,-1.30668 0.0592,-1.95596 -0.13465,-0.3989 -0.16238,-0.76032 0.0586,-1.11763 -0.46748,-0.37921 0.27905,-0.83492 0.14106,-1.29856 -0.31768,-0.55003 0.008,-1.06122 -0.008,-1.63184 0.006,-0.47253 0.005,-0.94519 0.008,-1.41776 0.24498,-0.23512 0.71548,-0.65116 0.36114,-0.92225 0.73256,-2.2984 0.9711,-1.21193 -0.28683,-2.21043 -0.41602,-0.19937 -0.35419,0.1806 -1.06564,-0.0622 l -0.11675,-0.0402 z", +0.884301, 13.8117, +"M -0.123121 -2.30275 c -0.004,0.0919 -0.0285,0.17097 -0.0723,0.21497 -0.0879,0.0879 -0.15049,-0.0684 -0.13901,-0.34726 0.0127,-0.30824 0.0757,-0.37079 0.1602,-0.15968 0.0382,0.0955 0.0552,0.20005 0.0512,0.29197 z m 1.00562,-4.18682 c -0.0136,0.12449 -0.10434,0.28911 -0.27647,0.53486 -0.23763,0.33924 -0.43417,0.85838 -0.43615,1.15339 -0.002,0.29504 -0.1194,0.71499 -0.26045,0.93329 -0.21074,0.32602 -0.25744,0.29832 -0.26045,-0.15451 -0.002,-0.30319 0.041,-0.60087 0.0961,-0.66146 0.0825,-0.0908 0.27686,-3.75423 0.44804,-8.44444 0.031,-0.84879 0.0508,-0.8709 0.24029,-0.26459 0.11369,0.36381 0.14246,1.9526 0.0641,3.53053 -0.10848,2.18249 -0.061,2.9193 0.19896,3.0799 0.13612,0.0841 0.19963,0.16849 0.18603,0.29303 z m -0.97307,14.8394 c 0,0.28238 -0.11129,0.44439 -0.24753,0.36017 -0.13626,-0.0842 -0.24426,-0.35901 -0.23926,-0.61081 0.005,-0.25181 -0.0503,-1.31485 -0.12247,-2.36263 -0.0894,-1.29767 -0.0341,-1.94495 0.17311,-2.02985 0.21135,-0.0867 0.20302,-0.13124 -0.0269,-0.14574 -0.1819,-0.0114 -0.32231,-0.28855 -0.31212,-0.61597 0.0178,-0.56801 0.029,-0.57121 0.24598,-0.0661 0.15007,0.34917 0.23368,-0.29792 0.24597,-1.90273 0.0102,-1.33752 0.11528,-2.49142 0.23307,-2.56418 0.11788,-0.0728 0.16275,0.57507 0.10025,1.4397 -0.0711,0.98351 -0.0107,1.572 0.16123,1.572 0.54297,0 -0.21133,6.64377 -0.21133,6.92614 z m -0.43305,2.47427 c -0.003,0.0791 -0.0141,0.16582 -0.0315,0.25683 -0.0696,0.36375 -0.17208,0.66146 -0.22789,0.66146 -0.0558,0 -0.10129,-0.29771 -0.10129,-0.66146 0,-0.3638 0.10256,-0.66145 0.2279,-0.66145 0.094,0 0.14338,0.16742 0.1328,0.40462 z m -0.12867,1.68982 c -0.004,0.0919 -0.0285,0.17097 -0.0724,0.21497 -0.0879,0.0879 -0.1505,-0.0684 -0.13901,-0.34726 0.0127,-0.30824 0.0757,-0.37077 0.1602,-0.15968 0.0382,0.0955 0.0552,0.20005 0.0512,0.29197 z m 0,1.05833 c -0.004,0.0919 -0.0285,0.17097 -0.0724,0.21497 -0.0879,0.0879 -0.1505,-0.0684 -0.13901,-0.34726 0.0127,-0.30824 0.0757,-0.37079 0.1602,-0.15968 0.0382,0.0955 0.0552,0.20005 0.0512,0.29197 z", +0.762531, 16.9731, +"M 0.232564 -5.04002 c -0.0256,-0.11674 -0.0255,0.0289 2.6e-4,0.32444 0.0258,0.29532 -0.0179,0.76648 -0.0971,1.0473 -0.1026,0.36391 -0.10352,0.73496 -0.002,1.29023 0.078,0.42853 0.12701,1.18085 0.10877,1.67181 -0.0212,0.57309 0.0381,0.8967 0.16574,0.90407 0.1094,0.006 0.20455,0.27367 0.21158,0.59484 0.007,0.32117 0.0586,0.89271 0.11421,1.26969 0.0618,0.41843 0.0213,1.04432 -0.10385,1.60629 -0.11282,0.50634 -0.20014,1.44467 -0.19397,2.08543 0.014,1.44453 -0.12951,2.17576 -0.37292,1.90107 -0.1185,-0.13368 -0.18543,0.0559 -0.18543,0.52551 0,0.40439 -0.0704,0.80453 -0.15642,0.88886 -0.0967,0.0949 -0.0239,0.44232 0.0371,0.91016 0.0545,0.41609 0.0799,0.79268 0.057,0.83706 -0.0229,0.0444 0.0755,0.33281 0.21858,0.64057 0.22056,0.47431 0.2334,0.65408 0.0844,1.18204 -0.0967,0.34255 -0.22876,0.52665 -0.29342,0.40904 -0.12361,-0.22462 -0.1455,0.20684 -0.13985,2.75717 0.004,1.47266 -0.0968,1.49441 -0.19275,0.38996 -0.0557,-0.64348 -0.0753,-1.8719 -0.0437,-2.72975 0.0963,-2.62133 0.0685,-4.17561 -0.0793,-4.44423 -0.16273,-0.29578 -0.0597,-2.89904 0.12249,-3.09534 0.0663,-0.0715 0.1127,-0.94893 0.10307,-1.94981 -0.0172,-1.79322 -0.0187,-1.79958 -0.11498,-0.45471 -0.0781,1.0917 -0.10126,0.79463 -0.11525,-1.48522 -0.0111,-1.81302 0.0309,-2.76277 0.11525,-2.6094 0.0823,0.14963 0.1326,-0.58109 0.1326,-1.92698 0,-1.47122 -0.0508,-2.13633 -0.15798,-2.07016 -0.0868,0.0537 -0.18056,-0.20961 -0.20847,-0.58495 -0.0279,-0.37534 0.0131,-0.68244 0.0914,-0.68244 h 2.6e-4 c 0.0924,0 0.14244,-1.44486 0.14244,-4.11748 0,-2.64579 0.0474,-4.03168 0.13259,-3.87679 0.0798,0.14518 0.13259,-0.37062 0.13259,-1.29631 0,-1.36676 0.0404,-1.55998 0.36387,-1.7419 0.48964,-0.27527 0.1634,-0.0741 0.1634,1.52406 0,0.94267 -0.048,1.2778 -0.15513,1.08305 -0.10578,-0.19225 -0.12686,-0.065 -0.0663,0.39909 0.0488,0.37448 0.0888,0.92971 0.0888,1.23389 0,0.30416 0.096,0.55297 0.21314,0.55297 0.13289,0 0.18485,0.21576 0.13829,0.57273 -0.0411,0.31487 -0.0177,0.67604 0.0521,0.80278 0.0697,0.12676 0.1269,0.49327 0.1269,0.815 0,0.32153 -0.0597,0.47673 -0.1326,0.34425 -0.0729,-0.1325 -0.1326,-0.055 -0.1326,0.17214 0,0.22706 0.0525,0.41282 0.11654,0.41282 0.0641,0 -0.26373,4.03388 -0.28935,3.91715 z", +0.560077, 8.98122, +"M 0.467182 8.52902 c -0.0714,0.48313 -0.12974,0.18491 -0.12974,-0.66012 0,-0.84519 -0.10442,-1.5299 -0.23204,-1.51334 -0.1984,0.0149 -0.20328,0.22696 -0.0331,1.43673 0.15228,1.08338 0.11346,1.34238 -0.16574,1.11095 -0.29936,-0.24779 -0.36464,-0.99245 -0.36464,-4.15731 0,-2.12029 -0.0357,-5.81576 -0.0795,-8.212422 -0.0467,-2.55505 -0.019,-4.76947 0.0673,-5.35317 0.081,-0.54783 0.30289,0.34342 0.49308,1.9808 0.19018,1.63694 0.4026,2.59378 0.47186,2.12546 0.0693,-0.46831 0.11396,12.285842 -0.0275,13.242422 z", +0.762531, 19.7675, +"M 0.232564 -7.83435 c -0.0256,-0.11674 -0.0255,0.0289 2.6e-4,0.32444 0.0258,0.29532 -0.0179,0.76648 -0.0971,1.0473 -0.1026,0.36391 -0.10352,0.73496 -0.002,1.29023 0.078,0.42853 0.12701,1.18085 0.10877,1.67181 -0.0212,0.57309 0.0381,0.8967 0.16574,0.90407 0.1094,0.006 0.20455,0.27367 0.21158,0.59484 0.007,0.32117 0.0586,0.89271 0.11421,1.26969 0.0618,0.41843 0.0213,1.04432 -0.10385,1.60629 -0.11282,0.50634 -0.20014,1.44467 -0.19397,2.08543 0.014,1.44453 -0.12951,2.17576 -0.37292,1.90107 -0.1185,-0.13368 -0.18543,0.0559 -0.18543,0.52551 0,0.40439 -0.0704,0.80453 -0.15642,0.88886 -0.0967,0.0949 -0.0239,0.44232 0.0371,0.91016 0.0545,0.41609 0.0799,0.79268 0.057,0.83706 -0.0229,0.0444 0.0755,0.33281 0.21858,0.64057 0.22056,0.47431 0.2334,0.65408 0.0844,1.18204 -0.0967,0.34255 -0.22876,0.52665 -0.29342,0.40904 -0.12361,-0.22462 -0.1455,0.20684 -0.13985,2.75717 0.004,1.47266 -0.0968,1.49441 -0.19275,0.38996 -0.0557,-0.64348 -0.0753,-1.8719 -0.0437,-2.72975 0.0963,-2.62133 0.0685,-4.17561 -0.0793,-4.44423 -0.16273,-0.29578 -0.0597,-2.89904 0.12249,-3.09534 0.0663,-0.0715 0.1127,-0.94893 0.10307,-1.94981 -0.0172,-1.79322 -0.0187,-1.79958 -0.11498,-0.45471 -0.0781,1.0917 -0.10126,0.79463 -0.11525,-1.48522 -0.0111,-1.81302 0.0309,-2.76277 0.11525,-2.6094 0.0823,0.14963 0.1326,-0.58109 0.1326,-1.92698 0,-1.47122 -0.0508,-2.13633 -0.15798,-2.07016 -0.0868,0.0537 -0.18056,-0.20961 -0.20847,-0.58495 -0.0279,-0.37534 0.0131,-0.68244 0.0914,-0.68244 h 2.6e-4 c 0.0924,0 0.14244,-1.44486 0.14244,-4.11748 0,-2.64579 0.0474,-4.03168 0.13259,-3.87679 0.0798,0.14518 0.13259,-0.37062 0.13259,-1.29631 0,-1.36676 0.0404,-1.55998 0.36387,-1.7419 0.48964,-0.27527 0.1634,-0.0741 0.1634,1.52406 0,0.94267 -0.048,1.2778 -0.15513,1.08305 -0.10578,-0.19225 -0.12686,-0.065 -0.0663,0.39909 0.0488,0.37448 0.0888,0.92971 0.0888,1.23389 0,0.30416 0.096,0.55297 0.21314,0.55297 0.13289,0 0.18485,0.21576 0.13829,0.57273 -0.0411,0.31487 -0.0177,0.67604 0.0521,0.80278 0.0697,0.12676 0.1269,0.49327 0.1269,0.815 0,0.32153 -0.0597,0.47673 -0.1326,0.34425 -0.0729,-0.1325 -0.1326,-0.055 -0.1326,0.17214 0,0.22706 0.0525,0.41282 0.11654,0.41282 0.0641,0 -0.26373,4.03388 -0.28935,3.91715 z m 0.0396,27.48027 c -0.0714,0.12985 -0.12974,0.0497 -0.12974,-0.17742 0,-0.22716 -0.10442,-0.41119 -0.23204,-0.40674 -0.1984,0.004 -0.20328,0.061 -0.0331,0.38615 0.15228,0.29118 0.11346,0.36079 -0.16574,0.29859 -0.29936,-0.0666 -0.36464,-0.26674 -0.36464,-1.11736 0,-0.56987 -0.0357,-1.5631 -0.0795,-2.20725 -0.0467,-0.68672 -0.019,-1.28189 0.0673,-1.43877 0.081,-0.14724 0.30289,0.0923 0.49308,0.53238 0.19018,0.43996 0.4026,0.69713 0.47186,0.57126 0.0693,-0.12587 0.11396,3.30206 -0.0275,3.55916 z", +1.269, 19.5416, +"M 0.14825 -19.5416 c -0.32661,0.39468 -0.3994,1.66107 -0.7598,2.04169 -0.41626,0.2009 -0.37637,1.71843 -0.58357,2.35306 0.0458,1.94112 -0.13983,3.86046 -0.048,5.80025 0.0294,1.34326 0.10658,2.68769 0.0855,4.03529 -0.0762,1.10649 0.0737,2.4593 -0.0252,3.70953 -0.0204,0.90305 0.056,1.55369 -0.0307,2.40511 0.0317,2.24936 0.21841,4.51036 0.0946,6.75626 -0.0753,1.08892 0.0479,1.9506 0.41334,1.69121 0.43294,0.76903 0.0677,2.22794 -0.0667,3.18578 -0.19001,0.81644 0.11544,1.40278 0.30591,1.39693 -0.0451,-0.42285 -0.28028,-2.17954 0.0281,-1.08788 0.33743,0.48853 -0.12596,2.7085 -0.38629,1.41622 -0.28035,0.0578 0.0439,1.62405 -0.26723,2.03911 -0.13348,0.55093 0.1996,1.81699 0.24795,0.69045 -0.11076,1.53067 0.61772,1.10071 0.51013,2.65016 0.0573,-0.0207 0.22667,-1.00323 0.23225,-1.34788 0.08,-0.9498 0.53243,-2.15075 0.25784,-3.07732 -0.30065,-0.79082 0.41871,-1.52126 0.11979,-2.62364 -0.0371,-0.56266 -0.17904,-1.49854 -0.12697,-0.30689 0.003,0.94503 -0.34219,0.63414 -0.29234,1.70477 -0.30776,-0.58284 0.30053,-2.415 -0.32326,-2.26952 0.11911,-0.39881 0.21227,-1.78449 0.37582,-0.58638 0.38472,0.39819 0.28972,-1.2848 0.30849,-2.1732 0.01,-1.30431 0.11678,-2.2807 -0.0501,-3.51089 -0.22551,-0.80379 0.19385,-2.07867 -0.24626,-2.47433 -0.35322,-0.76698 0.20938,-2.5558 0.24625,-0.9447 0.20473,1.61631 0.33115,-1.44215 -0.0187,-1.00535 -0.20738,-0.73783 0.50146,-0.8757 0.0966,-1.34105 -0.23718,0.80488 -0.81457,0.0175 -0.51184,-1.058 0.23378,-0.45163 0.79437,0.53657 0.57233,-1.14201 -0.13148,-0.58581 -0.34247,-1.16952 -0.45141,-1.63641 0.0722,-0.37607 0.21467,-1.5057 0.37321,-0.66014 0.20019,0.95972 0.14835,-1.38787 0.16689,-1.8434 -0.0266,-0.64918 0.1111,-1.97392 -0.17902,-1.90736 -0.13214,-0.95422 0.003,-2.15651 0.24077,-2.14256 -0.0855,-1.27561 0.30739,-2.14491 0.59873,-1.54848 0.46782,-0.57364 0.0341,-2.11974 -0.0515,-3.1238 -0.0488,-1.29164 -0.35659,-0.91037 -0.47231,-0.43792 -0.20293,-0.6018 -0.22527,-1.26026 -0.1283,-2.00164 -0.13967,-0.42976 -0.33758,0.56271 -0.34577,-0.61191 0.10408,-0.26168 0.33651,-0.79224 0.0907,-1.01316 z", +2.21549, 17.1584, +"M -0.167255 -17.1539 c -0.0167,0.007 -0.0346,0.0209 -0.0528,0.0449 -0.0209,0.0276 -0.0424,0.0677 -0.0625,0.1243 0.29371,0.10775 0.23216,-0.21534 0.1151,-0.1692 z m 0.15604,1.07656 c -0.12396,-5.2e-4 -0.2654,0.0531 -0.37769,0.13732 l -0.001,8.7e-4 c -0.0997,0.0747 -0.17632,0.1734 -0.19745,0.27884 0.47404,0.75848 -0.48688,0.22899 -0.21252,0.89958 -0.0284,1.36166 1.17753,1.85975 0.65585,3.19253 1.11667,0.51287 -0.4379,2.54995 0.4584,2.75912 -0.46709,-0.10692 -0.70481,0.87074 -0.3325,1.21901 0.65675,1.18822 -0.35631,2.59721 0.49336,3.59223 0.1701,0.19469 0.32366,-0.23386 0.45247,-0.34791 0.90751,-0.55526 -0.97382,-0.65062 -0.32228,-1.03339 1.05641,-0.14684 0.66978,-2.07793 0.30667,-2.90072 -0.1278,0.58401 -0.87195,-0.365 -0.2916,-0.99799 0.7704,0.12479 -0.23691,-1.49304 0.37823,-1.11971 0.49922,-0.62397 -0.0865,-0.88636 -0.47023,-1.2518 -0.78012,-0.24 0.39106,-0.72068 -0.12964,-1.48835 0.24984,-0.74186 0.6296,-1.90821 -0.15119,-2.37151 0.10592,-0.41508 -0.0521,-0.5672 -0.25878,-0.56805 z m 1.05236,3.59827 c -0.0745,0.0468 -0.0538,0.51726 0.13983,0.86417 0.1982,0.18937 0.12229,-0.24571 0.0775,-0.36517 -0.0941,-0.39821 -0.17239,-0.52458 -0.21681,-0.499 z m 0.65476,1.56087 c -0.0264,0.005 -0.0484,0.015 -0.0667,0.0327 -0.16138,0.15286 -0.015,0.75465 0.38253,0.79942 0.3019,0.32074 0.22976,-0.59592 0.0327,-0.63453 -0.15403,-0.15771 -0.26966,-0.21053 -0.34864,-0.1977 z m -3.49173,0.28921 c -0.0476,-0.0172 -0.11945,0.0254 -0.18993,0.11043 h -5.4e-4 c -0.11277,0.13632 -0.22294,0.3826 -0.22919,0.67337 0.0586,0.30913 0.29916,0.0322 0.34164,-0.13031 0.16947,-0.43186 0.1572,-0.62497 0.078,-0.65352 z m 3.02689,0.71223 c -0.015,-7.5e-4 -0.0279,0.007 -0.0371,0.019 -0.0354,0.0528 -0.0117,0.20856 0.1415,0.51884 l 0.1146,0.1278 c 0.14585,-0.31772 -0.10424,-0.66014 -0.21896,-0.6656 z m -0.0371,0.019 c 0,0 0,-8.9e-4 0,-8.9e-4 l -0.002,0.002 c 5e-4,-7.5e-4 0.002,-1.6e-4 0.002,-8.8e-4 z m -0.52135,6.72 c -0.3266,0.0409 -0.95395,0.87087 -1.18526,1.33727 -0.16786,-0.13281 -0.29294,-0.12997 -0.38091,-0.0431 -0.26269,0.26077 -0.19142,1.27654 0.0678,1.63511 0.24643,-0.25664 0.56346,-0.67538 0.39223,0.23741 -0.75859,0.63588 -0.69093,1.82753 -0.36102,2.9059 -0.34879,0.52437 -0.0947,1.14594 0.44171,1.23281 0.99104,0.75169 0.10007,2.18367 0.0608,3.29439 0.68087,1.18413 -0.94373,1.30332 -0.72471,2.27914 -0.69212,0.6987 -0.66851,2.92111 0.20443,3.22274 0.75306,0.225 0.20039,0.34297 -0.21036,0.51971 0.26459,0.80376 0.93921,1.0819 1.25036,1.85267 0.31277,1.28598 0.55164,-0.0849 0.42449,-0.65009 -0.66183,-0.70621 0.80496,-1.24759 0.33626,-1.56863 -0.45715,0.66148 -1.18436,-0.24337 -0.46161,-0.78475 0.90308,-0.8666 -0.34499,-1.44013 0.10057,-2.29122 0.46346,-0.31165 0.41583,-1.35705 -0.10541,-1.27598 0.002,0.36914 -0.21848,1.21584 -0.4654,0.52404 0.49413,-0.71096 1.17556,-1.9191 0.56762,-3.05611 -0.85085,-1.57139 0.80183,-0.85373 0.53587,-2.24548 0.19424,-1.25981 -0.31804,-2.6187 -0.11511,-3.72086 0.8693,-1.12613 -0.65975,-1.20057 -0.25986,-2.37756 0.17124,-0.79304 0.0835,-1.05187 -0.11243,-1.02734 z m -1.83464,17.71081 c -0.0134,0.002 -0.0271,0.0117 -0.0393,0.0319 -0.0134,0.0231 -0.0247,0.06 -0.0356,0.11477 0.2771,0.20545 0.1713,-0.16054 0.0748,-0.14684 z m 0.98242,0.93411 c -0.0473,-0.005 -0.0936,0.0117 -0.13065,0.0466 v 8.8e-4 c -0.11527,0.10642 -0.14517,0.38416 0.14585,0.72864 0.0788,0.1577 0.25607,0.25348 0.22974,-0.0665 0.0485,-0.49012 -0.10308,-0.69576 -0.24481,-0.70964 z m -0.40028,1.03683 c -0.0246,0.005 -0.0473,0.0167 -0.0662,0.0354 l -0.002,8.9e-4 c -0.0687,0.068 -0.0867,0.22859 0.0388,0.50935 l 0.14467,0.10876 c 0.31715,-0.40726 0.0558,-0.69018 -0.1156,-0.65438 z", +1.67889, 12.4576, +"M 0.170368 -12.417 c -0.11243,0.0479 -0.25614,0.13683 -0.43964,0.27748 -1.27389,0.78909 -1.21189,2.51347 -0.18945,3.31231 -0.13431,0.55548 -0.36031,1.04129 -0.87302,1.22619 0.20361,1.23934 0.72541,2.15584 0.32094,3.54244 0.008,0.02 0.015,0.0396 0.024,0.0595 -0.27904,1.22039 -1.13252,2.77766 -0.40612,3.53991 0.14735,-0.35853 0.2824,-0.44551 0.41469,-0.40806 -0.0972,0.57648 -0.15854,1.15046 -0.0182,1.72729 -0.06,2.38124 0.71903,4.78601 0.0209,7.13418 0.14601,1.27941 0.088,2.90648 1.11768,4.46334 0.20931,-0.32402 -0.26141,-4.04795 -0.1288,-4.40228 -0.87044,-5.44038 0.51261,-4.61027 0.27264,-7.20329 -0.0762,-1.65323 0.16439,0.11009 -0.0256,-1.53491 0.0358,-0.0631 0.0717,-0.12629 0.10943,-0.208 0.33307,-0.84154 1.06509,-1.4845 1.30907,-2.19339 -0.67902,-0.22846 -0.0546,-1.46994 -1.00086,-1.45768 -0.0423,-0.98007 1.23341,-1.30442 0.84312,-2.52886 -0.10207,-0.60431 -0.005,-1.4265 -0.08,-2.10218 -0.0192,-0.64914 -0.14685,-1.29953 -0.44026,-1.94485 -0.24035,-0.076 -0.43253,-0.0872 -0.58683,-0.0473 -0.003,7.9e-4 -0.007,0.003 -0.01,0.005 0.1136,-0.70342 0.31863,-1.48809 -0.23437,-1.25593 z", +0.606945, 19.5532, +"M 0.535288 -19.101 c -0.12312,-0.64981 -0.32031,-0.73191 -0.52216,0.6492 0.13498,2.03239 -0.19035,3.48484 -0.30626,5.15433 -0.22468,2.50128 -0.19194,5.27546 -0.28382,8.06552 0.14367,2.92828 -0.0892,5.74081 -0.015,8.6394 0.14902,2.95697 -0.015,5.88803 0.0117,8.84688 -0.15971,3.34873 0.87967,3.73489 0.85929,7.01865 -0.015,-0.18654 0.22435,0.61848 0.19054,0.10792 0.3206,-2.15319 -0.0271,-5.6381 0.0215,-8.31354 -0.0332,-2.93964 0.13264,-5.81334 0.0481,-8.77509 0.005,-0.0175 0.005,0.002 0.01,-0.0134 l -10e-4,-1.53853 c -0.0167,-0.17135 -0.0117,-0.39165 -4.9e-4,-0.67826 l -0.007,-8.52476 c -0.0251,-0.17877 -0.0216,-0.38728 -0.0573,-0.55526 -0.008,-0.46963 0.0383,-0.97844 0.056,-1.46172 z", +2.75846, 24.0847, +"M -0.53697 -24.0496 c -0.0684,0.29866 -0.0297,0.66596 0.13574,0.88282 0.0473,-0.31373 0.004,-0.65245 -0.12095,-0.91797 z m 0.36555,2.05274 c -0.1428,0.26785 -0.15703,0.69044 0.006,0.94726 -0.0394,0.35884 -0.44025,0.2613 -0.4462,0.64649 -0.13341,0.55376 -0.0618,1.26397 0.2782,1.6289 0.38647,-0.11637 0.44767,-0.80593 0.38665,-1.27862 -0.042,-0.65364 -0.0767,-1.31482 -0.20924,-1.94599 z m -0.0685,3.66015 c 0.0544,0.007 0.0464,-0.065 0,0 z m 0.13171,0.71485 c 0.0476,-0.0128 0.0369,-0.0718 0,0 z m 0.22847,2.58984 c -0.2894,0.77897 -0.28573,1.72489 -0.63166,2.4668 -0.47716,0.40261 -0.61905,1.44325 -0.27551,2.07422 0.26278,1.07486 -0.0427,2.34757 -0.66794,3.01562 -0.17172,0.2786 -0.0476,0.77973 0.20981,0.82791 0.38219,0.22562 0.82919,-0.30745 0.78616,-0.89087 0.15146,-1.09007 0.68275,-2.05871 0.59978,-3.21392 -0.003,-1.4276 0.18264,-2.88329 -0.0126,-4.29148 z m -0.97436,8.98632 c -0.0867,0.087 0.0488,0.007 0,0 z m -0.15187,0.90625 c -0.52835,0.40878 -0.4693,1.70374 0.0726,2.04297 0.51682,0.6066 0.26815,1.98415 -0.36821,2.19969 -0.32196,0.17741 -0.71983,0.44113 -0.75527,1.00981 -0.0704,0.4972 0.0592,1.03177 0.30905,1.38034 0.22493,0.75424 -0.1245,1.49918 -0.25804,2.21485 -0.161,0.74022 -0.28768,1.49458 -0.42066,2.24609 -0.42887,0.46517 -0.40727,1.40504 -0.13373,2.00508 0.29613,1.28961 0.23854,2.67245 0.42671,3.99298 0.18501,0.44913 0.6129,0.71487 0.60881,1.30273 -0.0974,1.02173 -0.7334,1.84226 -0.61687,2.92188 0.12358,1.36478 0.23492,2.73359 0.422,4.08398 -0.24493,1.20409 -0.0575,2.46873 0.1344,3.6582 0.13244,0.3425 0.51859,0.10392 0.49139,-0.2639 0.55319,-3.33295 0.74881,-6.77676 0.71199,-10.19928 -0.0341,-0.83387 -0.0795,-1.67038 -0.0382,-2.50557 0.0769,-0.26194 0.38773,-0.21698 0.42872,0.0606 0.15576,0.33179 0.55489,0.0325 0.49055,-0.3418 0.06,-0.507 0.13468,-1.1082 0.46904,-1.38867 0.49047,-0.0745 0.76751,0.85571 1.26869,0.67578 0.19449,-0.0457 0.51816,-0.0809 0.52146,-0.46093 -0.0813,-0.81436 -0.69657,-1.24081 -1.21561,-1.19272 -0.33451,-7.4e-4 -0.67174,-0.17488 -0.89675,-0.54267 -0.25083,-0.25457 -0.59572,0.13269 -0.82418,-0.2197 -0.16795,-0.3508 -0.22547,-0.80084 -0.2634,-1.22044 -0.006,-0.32789 -0.0804,-0.74575 0.14222,-0.96155 0.15244,-0.17908 0.31154,-0.47312 0.18536,-0.76146 -0.21856,-0.80287 -0.55515,-1.67299 -0.34299,-2.55633 0.20639,-1.08152 0.37362,-2.21388 0.29836,-3.33932 -0.28596,-1.22431 -0.25129,-2.59774 -0.71303,-3.73317 -0.026,-0.0821 -0.07,-0.13612 -0.1344,-0.10742 z m -0.89104,25.33205 c 0.0499,0.0937 0.0486,9.1e-4 0,0 z", +1.8822, 22.4677, +"M 1.25124 -21.5684 c -0.28418,-2.48971 -0.62962,0.79472 -0.69653,2.55163 -0.0134,0.33593 -0.0346,0.5327 -0.047,0.43714 -0.02,-0.15681 -0.0495,-0.15546 -0.3007,0.0153 -0.15327,0.10424 0.0424,3.35182 -0.0498,3.34843 -0.21601,-0.007 -0.41768,0.37741 -0.36668,0.70163 0.0286,0.18236 0.006,0.24818 -0.0802,0.2448 -0.11908,-0.004 -0.25364,0.43529 -0.18471,0.6037 0.71933,5.30949 -0.84428,1.36714 -0.18964,5.27515 l -0.17336,0.21594 c 0.0917,0.13776 0.14905,0.31886 0.14544,0.60895 -0.002,0.12917 0.013,0.27497 0.0381,0.42665 l -0.0218,0.006 c 0.0168,0.0338 0.0268,0.0634 0.039,0.094 0.0143,0.0729 0.0307,0.14633 0.05,0.22032 0.005,0.11878 -0.013,0.27501 -0.054,0.53201 -0.0541,0.33939 -0.13657,0.63375 -0.18319,0.65397 -0.11671,0.0506 -0.47174,-0.31269 -0.41853,-0.4284 0.0236,-0.0514 -0.008,-0.20294 -0.0696,-0.33617 -0.10666,-0.22943 -0.11316,-0.23096 -0.12398,-0.0315 -0.009,0.17127 -0.0213,0.16013 -0.0663,-0.059 -0.0305,-0.14804 -0.06,-0.19604 -0.0661,-0.10622 -0.005,0.0898 -0.0795,0.23039 -0.16355,0.31212 -0.18138,0.17617 -0.20093,0.37374 -0.046,0.46512 0.061,0.0363 0.11066,0.11279 0.10955,0.17048 -8.5e-4,0.0577 0.0954,0.32276 0.21449,0.58884 0.119,0.26609 0.21567,0.53536 0.21448,0.59889 -8.5e-4,0.0635 0.0919,0.18952 0.20682,0.27978 0.33391,0.262 0.4046,0.46417 0.37893,1.08499 -0.0255,0.61623 0.034,0.7011 0.50815,0.72217 0.35806,0.0162 0.65582,0.76507 0.53973,1.35777 l -0.0519,0.2636 -0.14759,-0.22163 c -0.0812,-0.122 -0.18117,-0.19419 -0.22184,-0.16043 -0.0407,0.034 -0.0928,-0.0143 -0.11598,-0.10711 -0.0668,-0.26845 -0.30372,-0.21195 -0.36208,0.0865 -0.0286,0.14608 -0.10177,0.26395 -0.16293,0.26142 -0.0612,-0.002 -0.11204,0.0439 -0.11323,0.10273 -8.4e-4,0.0588 -0.0557,0.10482 -0.1212,0.10228 -0.0995,-0.003 -0.11067,0.0715 -0.0685,0.45245 0.0278,0.2512 0.0474,0.70532 0.0445,1.00937 -0.005,0.46262 0.0255,0.59462 0.19024,0.8096 0.10822,0.14128 0.21652,0.38557 0.24057,0.54249 0.0239,0.15696 0.10666,0.38658 0.18349,0.51059 0.0826,0.13306 0.13642,0.3788 0.13286,0.59976 -0.005,0.29947 -0.0602,0.43199 -0.27492,0.66315 -0.29456,0.31713 -0.32923,0.45939 -0.16264,0.66709 0.0663,0.0827 0.10722,0.31839 0.10188,0.59277 -0.006,0.36907 0.035,0.51904 0.22,0.79079 0.17112,0.25109 0.20751,0.35709 0.18442,0.59584 l -0.67781,0.21289 c 0.0524,0.58516 -0.0123,0.94307 -0.20099,0.93593 -0.1353,-0.005 -0.20989,0.31179 -0.2378,1.00981 -0.0241,0.60164 -0.11859,0.82734 -0.43141,1.02948 -0.21966,0.14195 -0.22403,0.19455 -0.112,1.34903 0.0368,0.38004 0.68935,2.90966 0.7272,2.97271 0.0949,0.15747 0.0814,0.40225 -0.0366,0.66257 -0.11787,0.2598 -0.13449,0.64857 -0.0423,0.98759 0.0667,0.24519 0.0456,0.44952 -0.0548,0.532 -0.0228,0.0188 -0.0711,0.63594 0.0835,1.35624 0.0409,0.19057 0.50838,1.19206 0.55879,1.39985 0.35151,1.44898 0.46272,2.37383 0.46272,2.37383 0.79566,1.73874 0.72766,1.04386 0.63346,0.41525 2.3e-4,-0.0113 0.27534,-0.54652 0.19995,-0.70081 -0.15301,-0.31339 -0.17759,-0.66368 -0.083,-1.18261 0.0379,-0.20818 0.0431,-0.45443 0.016,-0.78147 -0.0498,-0.60249 -0.0427,-0.9744 0.0205,-1.07732 0.0273,-0.0442 0.0455,-0.20317 0.0407,-0.35337 -0.005,-0.15019 0.008,-0.40879 0.0283,-0.57478 0.0361,-0.29302 -0.0429,-0.6788 -0.13963,-0.68256 -0.0551,-0.002 -0.036,-0.53013 0.0208,-0.57728 0.0735,-0.061 0.0636,-0.34385 -0.0156,-0.44254 -0.0385,-0.048 -0.0692,-0.13755 -0.0682,-0.19891 8.5e-4,-0.0614 -0.0387,-0.22756 -0.0887,-0.36892 -0.0547,-0.15488 -0.0881,-0.38704 -0.0846,-0.58367 0.004,-0.17953 0.25499,-2.55145 0.21196,-2.61624 -0.10744,-0.16134 -0.0424,-0.84634 0.0767,-0.80785 0.0511,0.0165 0.0952,-0.062 0.097,-0.17486 0.005,-0.31876 -0.0724,-0.5529 -0.16081,-0.47955 -0.0451,0.0375 -0.0572,0.0165 -0.0276,-0.0476 0.006,-0.0155 0.0119,-0.0321 0.0145,-0.049 l 0.1838,-0.0577 c -0.0115,-0.0716 -0.0185,-0.14175 -0.0282,-0.21332 0.20698,0.0786 0.41395,-0.23158 0.42283,-0.71561 0.005,-0.26614 0.0327,-0.33495 0.1166,-0.28546 0.12218,0.0721 0.27032,-0.32611 0.27768,-0.7484 0.002,-0.0908 -0.0206,-0.17365 -0.0559,-0.23737 5.9e-4,-0.0146 0.002,-0.0265 0.004,-0.0424 0.005,-0.34543 -0.25055,-1.04474 -0.35226,-0.9604 -0.11645,0.0967 -0.30456,-0.0735 -0.301,-0.2719 0.002,-0.10386 -0.0615,-0.41419 -0.14115,-0.68982 -0.11849,-0.41032 -0.13308,-0.61892 -0.0811,-1.1497 0.0697,-0.71055 0.11872,-0.77415 0.58883,-0.76544 0.238,0.004 0.28272,-0.0309 0.28627,-0.22645 0.002,-0.12743 0.0471,-0.25037 0.0991,-0.27321 0.0739,-0.0324 0.0727,-0.0806 -0.005,-0.2212 -0.0565,-0.10309 -0.0965,-0.4463 -0.0923,-0.80434 0.005,-0.50518 0.0383,-0.66811 0.17397,-0.85156 0.2095,-0.28327 0.22253,-0.69385 0.0313,-0.98096 -0.13165,-0.19763 -0.12715,-0.26243 0.016,-0.22994 0.027,0.006 0.0267,-0.12053 -3e-4,-0.28152 -0.0271,-0.16095 -0.0753,-0.26956 -0.10744,-0.24131 -0.0321,0.0282 -0.10477,-0.11781 -0.16139,-0.32479 -0.08,-0.29191 -0.11861,-0.34197 -0.17307,-0.22339 -0.11294,0.2457 -0.17081,-0.12246 -0.0727,-0.46293 0.0682,-0.23598 0.0579,-0.30034 -0.0653,-0.39999 -0.10565,-0.0857 -0.14006,-0.21238 -0.12273,-0.45333 0.0132,-0.18386 -0.0139,-0.35393 -0.0604,-0.37813 -0.0466,-0.0241 -0.17138,-0.16327 -0.27646,-0.30993 -0.14602,-0.2042 -0.17876,-0.32905 -0.13838,-0.53551 0.0291,-0.14806 0.0832,-0.29471 0.12058,-0.32567 0.11733,-0.0974 0.0792,-0.33666 -0.10677,-0.66884 -0.0991,-0.17651 -0.15862,-0.34993 -0.13256,-0.38512 0.0261,-0.0352 0.0492,-0.35308 0.0528,-0.70643 0.004,-0.35346 0.0287,-0.6367 0.0573,-0.62993 0.14508,0.0352 0.31458,-0.0129 0.31636,-0.0896 4.8e-4,-0.0395 -0.042,-0.13954 -0.0951,-0.23868 l 0.11112,-0.0301 c -0.0111,-0.0958 -0.0399,-0.22407 -0.0386,-0.28983 0.002,-0.0834 0.0713,-0.1796 0.15527,-0.2142 0.0838,-0.0346 0.13399,-0.10798 0.11167,-0.16306 -0.0224,-0.055 -0.005,-0.18319 0.0394,-0.28502 0.0692,-0.15973 0.0802,-0.14567 0.0772,0.10142 -0.002,0.15765 0.0451,0.35827 0.10343,0.44589 0.0579,0.0877 0.0857,0.18709 0.0608,0.22076 -0.004,0.004 0.0112,0.0354 0.01,0.0433 l 0.1746,-0.0472 c -0.008,-0.0688 -0.0286,-0.0867 -0.0208,-0.19104 0.0154,-0.20696 6e-4,-0.4013 -0.0325,-0.43233 -0.0332,-0.0311 -0.041,-0.12276 -0.0174,-0.20371 0.0236,-0.0809 0.009,-0.24097 -0.031,-0.35584 -0.0524,-0.14895 -0.0466,-0.24767 0.0196,-0.34447 0.0735,-0.10616 0.0727,-0.11992 -0.002,-0.0634 -0.11355,0.0858 -0.20488,-0.23611 -0.26541,-0.93593 -0.0346,-0.40002 -0.0183,-0.50647 0.0887,-0.58665 0.10165,-0.076 0.1255,-0.20309 0.1071,-0.56917 -0.0173,-0.34244 0.009,-0.5044 0.0958,-0.59364 0.0992,-0.10173 0.1041,-0.161 0.0298,-0.34535 -0.0495,-0.12234 -0.0867,-0.38173 -0.0832,-0.57659 0.004,-0.19488 -0.0302,-0.40942 -0.0748,-0.47649 -0.0448,-0.0671 -0.0747,-0.45108 -0.0669,-0.85331 0.0111,-0.53051 -0.0185,-0.78692 -0.10588,-0.93418 -0.11429,-0.19274 -0.16109,-1.16523 -0.12426,-2.58004 0.005,-0.23051 -0.0111,-0.47175 -0.0377,-0.53638 -0.085,-0.20429 -0.0795,-0.43155 0.0115,-0.50709 0.0628,-0.0521 0.0982,-0.7782 0.12335,-2.54026 0.0111,-0.7367 0.0229,-1.05157 0.0353,-1.42947 z", +2.42744, 13.3932, +"M -1.21246 -13.3117 c -0.52065,0.12572 -0.51196,0.12241 -1.03612,0.24908 -0.001,0.0734 0.0127,0.13564 0.008,0.20774 l -0.0413,0.60203 0.49247,-0.0656 c 0.3575,-0.0477 0.5449,-0.0103 0.68368,0.13592 0.10525,0.11049 0.21523,0.17879 0.24443,0.15089 0.0553,-0.0525 0.18585,0.42322 0.50591,1.84847 0.40153,1.78589 0.46949,2.16266 0.39429,2.16266 -0.043,2.5e-4 0.005,0.0582 0.10801,0.12919 0.16623,0.1151 0.1658,0.14317 -0.006,0.25114 -0.1387,0.0873 -0.15256,0.14904 -0.0501,0.22015 0.21167,0.14601 0.22839,0.42645 0.0548,0.91828 -0.0852,0.24126 -0.19974,0.751 -0.25424,1.13224 -0.0545,0.38124 -0.13282,0.79864 -0.17312,0.9281 -0.0476,0.15154 -0.0232,0.20647 0.0687,0.15297 0.0797,-0.0464 0.13994,5.4e-4 0.13694,0.10697 -0.003,0.10433 -0.0625,0.22286 -0.13332,0.26406 -0.0707,0.0411 -0.13559,0.30272 -0.1416,0.58085 -0.009,0.34992 0.0322,0.47879 0.13488,0.41909 0.0929,-0.0543 0.11283,-0.0321 0.0532,0.0589 -0.22213,0.33938 -0.21073,0.73976 0.0279,0.96739 0.27232,0.25969 0.31048,0.5796 0.0935,0.78548 -0.1029,0.0973 -0.10442,0.20891 -0.007,0.40359 0.0743,0.14815 0.11655,0.465619 0.094,0.705379 -0.0314,0.33474 0.0303,0.49527 0.26613,0.69092 0.39591,0.32862 0.4506,0.97704 0.0971,1.15445 -0.19818,0.0995 -0.25884,0.08 -0.30024,-0.0971 -0.0413,-0.17754 -0.0559,-0.18235 -0.0718,-0.0238 -0.0147,0.14713 -0.11818,0.18202 -0.39791,0.13332 -0.33766,-0.0586 -0.37754,-0.0306 -0.38654,0.26458 -0.005,0.1817 -0.0655,0.33614 -0.1354,0.34314 -0.0697,0.007 -0.18114,0.0178 -0.24804,0.0248 -0.0668,0.007 -0.20301,0.11829 -0.30231,0.24701 -0.0994,0.12871 -0.25695,0.2064 -0.34985,0.1726 -0.19915,-0.0722 -0.63789,0.30833 -0.64389,0.55914 -0.008,0.28898 0.32739,0.49631 0.64751,0.40101 0.16115,-0.0479 0.37848,-0.0986 0.48317,-0.11265 0.6821,-0.0915 0.75775,-0.16898 0.69815,-0.71314 -0.0515,-0.47073 -0.0192,-0.55211 0.31006,-0.78135 0.25416,-0.17695 0.44432,-0.22349 0.61702,-0.15089 0.24881,0.10484 0.24866,0.10527 -0.004,0.12247 -0.1394,0.009 -0.29578,0.009 -0.34778,0 -0.0519,-0.01 -0.0957,0.043 -0.0977,0.11731 -0.002,0.0774 0.10491,0.10318 0.25115,0.061 0.26076,-0.0754 0.35205,0.12076 0.11937,0.25631 -0.071,0.0413 -0.0973,0.21478 -0.0594,0.38551 0.0649,0.2906 -0.0353,0.37589 -0.36948,0.31419 -0.0517,-0.01 -0.0962,0.0455 -0.0982,0.12247 -0.002,0.0766 0.0821,0.10935 0.18655,0.0724 0.10479,-0.0372 0.18115,-0.0268 0.17415,0.0227 -0.009,0.0495 -0.004,0.14704 0.0109,0.21704 0.0872,0.41425 -0.088,1.66625 -0.25579,1.82779 -0.17035,0.164 -0.21288,0.15606 -0.37621,-0.0729 -0.1012,-0.14177 -0.23055,-0.34474 -0.28835,-0.45062 -0.0858,-0.15729 -0.1361,-0.16357 -0.2744,-0.0336 -0.16719,0.15723 -0.063,0.30632 0.31419,0.4501 0.062,0.0236 -0.01,0.26437 -0.15968,0.53537 -0.14984,0.27102 -0.33181,0.72807 -0.40411,1.01544 -0.12606,0.50143 -0.11796,0.52568 0.1974,0.59738 0.23372,0.0532 0.38925,0.22256 0.53899,0.58757 0.27181,0.66258 0.33329,2.3657 0.093,2.57865 -0.14193,0.12572 -0.13896,0.17735 0.0181,0.29869 0.20771,0.16041 0.23365,1.24108 0.0444,1.85518 -0.10282,0.33391 -0.0903,0.34552 0.38603,0.35812 0.0498,0.001 0.0875,0.0324 0.14056,0.0393 l 2.02778,-1.91874 c 0.0391,-0.84014 0.0901,-1.31251 0.20567,-1.42214 0.1408,-0.13348 0.16273,-0.22373 0.0687,-0.28474 -0.0888,-0.0584 -0.11201,-0.52874 -0.0651,-1.34978 0.0634,-1.11341 0.0451,-1.28034 -0.15968,-1.43196 -0.12777,-0.0943 -0.22728,-0.30706 -0.22428,-0.47284 0.005,-0.16601 -0.0515,-0.3404 -0.12454,-0.3886 -0.0731,-0.048 -0.0993,-0.16882 -0.0579,-0.26872 0.0422,-0.10162 0.0192,-0.14879 -0.0517,-0.10749 -0.22711,0.13224 -0.12436,-0.27378 0.14314,-0.56637 0.2846,-0.31158 0.33629,-0.4973 0.13953,-0.50229 -0.0693,-0.002 -0.12444,-0.0905 -0.12144,-0.19689 0.003,-0.10651 -0.074,-0.22624 -0.17053,-0.26614 -0.27152,-0.11237 -0.32136,-0.54803 -0.078,-0.68161 0.1171,-0.0642 0.15641,-0.12105 0.0868,-0.12506 -0.0694,-0.004 -0.13414,-0.24406 -0.14314,-0.5333 -0.009,-0.28926 -0.11377,-0.63887 -0.23255,-0.77721 -0.18088,-0.21019 -0.21428,-0.54858 -0.20928,-2.06292 0.006,-1.693699 0.0211,-1.808719 0.23564,-1.769919 0.21803,0.0394 0.41737,-0.1166 0.42736,-0.33435 0.002,-0.055 -0.0668,-0.0927 -0.15399,-0.0837 -0.56087,0.0579 -0.60799,-0.005 -0.56689,-0.7519 0.0221,-0.39949 -0.0155,-0.87281 -0.0832,-1.05213 -0.14126,-0.3744 0.0208,-0.75214 0.31936,-0.74414 0.10486,0.003 0.15977,-0.048 0.12247,-0.11265 -0.0376,-0.0646 0.004,-0.13992 0.092,-0.16692 0.12652,-0.039 0.12829,-0.0886 0.008,-0.24236 -0.0831,-0.10642 -0.15413,-0.46452 -0.15813,-0.79582 -0.004,-0.33891 -0.0742,-0.62959 -0.1602,-0.66559 -0.0981,-0.0407 -0.14427,-0.3485 -0.13177,-0.85886 0.0114,-0.43746 -0.0148,-0.97902 -0.0579,-1.20355 -0.0579,-0.30105 -0.0202,-0.47 0.14418,-0.64233 0.17836,-0.18698 0.20786,-0.35499 0.14676,-0.8413 -0.0419,-0.33433 -0.0924,-0.83108 -0.11214,-1.10381 -0.0199,-0.27268 -0.0595,-0.52067 -0.0879,-0.55087 -0.0287,-0.0302 0.0105,-0.22077 0.0873,-0.42374 0.17376,-0.45944 -0.0535,-1.17751 -0.34055,-1.07591 -0.10107,0.0357 -0.20737,0.0633 -0.23667,0.0631 -0.0292,-7.8e-4 -0.0549,0.0807 -0.0579,0.18087 -0.003,0.10015 -0.0715,0.22122 -0.15296,0.26871 -0.0924,0.0533 -0.11257,0.0315 -0.0543,-0.0574 0.052,-0.0791 0.0375,-0.14476 -0.032,-0.14676 -0.0696,-0.002 -0.16379,0.0535 -0.20929,0.12299 -0.0455,0.0695 -0.14895,0.0835 -0.22945,0.0305 -0.0807,-0.0528 -0.34584,-0.10465 -0.58911,-0.11265 -0.2954,-0.011 -0.39714,-0.0935 -0.48317,-0.27751 z", + ) +specks=( +0.19582, 0.378634, +"M -0.161959 -0.371071 c -0.1979,0.116362 0.54642,1.511327 0.31137,0.17337 -0.16941,-0.158525 -0.26567,-0.200234 -0.31137,-0.17337 z", +0.0857523, 0.142767, +"M -0.0570877 -0.130051 c -0.079,0.08213 0.0173,0.518112 0.14284,0.08157 -0.0697,-0.09649 -0.11628,-0.108996 -0.14284,-0.08157 z", +0.25372, 0.210386, +"M 0.0480998 -0.205499 c -0.42327,0.07051 -0.4419,0.885499 0.20562,0.02193 -0.0763,-0.02736 -0.14491,-0.032 -0.20562,-0.02193 z", +0.140526, 0.148695, +"M -0.13122 -0.139672 c -0.0745,0.07221 0.32456,0.53906 0.26582,0.107512 -0.16476,-0.111376 -0.2411,-0.131561 -0.26582,-0.107512 z", +0.249924, 0.342306, +"M -0.114966 -0.341551 c -0.34386,0.03623 0.04,1.35907 0.36489,0.226387 -0.16717,-0.174662 -0.28557,-0.234744 -0.36489,-0.226387 z", +0.825503, 0.732431, +"M -0.326263 0.732431 c 0.0466,-0.194767 0.0978,-0.389834 0.33522,-0.575911 0.67157,-0.184934 1.35761,-1.225527 0.16941,-0.77828 -0.39118,0.182831 -0.72402,0.18703 -1.00387,0.107874 z", +0.16647, 0.33039, +"M -0.07457 -0.329965 c -0.15388,0.01622 -0.13629,0.783005 0.22124,0.643371 l 0.0198,-0.08888 -0.0371,-0.25956 c -0.0823,-0.222794 -0.15267,-0.300475 -0.20355,-0.295097 z", +0.262126, 0.290338, +"M -0.233294 -0.271662 c -0.17079,0.144103 0.47197,1.053092 0.49542,0.204111 -0.29067,-0.215468 -0.43843,-0.252153 -0.49542,-0.204111 z", +0.240004, 0.127086, +"M -0.124553 -0.0975163 c -0.46137,0.111203 0.63127,0.460222 0.30142,-0.02957 -0.13801,0.0028 -0.23555,0.01328 -0.30142,0.02957 z", +0.221255, 0.286652, +"M -0.173286 -0.268838 c -0.24785,0.147346 0.55483,1.130889 0.36527,0.06706 -0.19413,-0.09043 -0.30799,-0.101042 -0.36527,-0.06706 z", +0.187681, 0.221884, +"M -0.00844687 -0.221884 c -0.63303,0.150003 0.66682,0.918773 0,0 z", +0.186594, 0.274126, +"M -0.108183 -0.271572 c -0.33666,0.06033 0.53913,1.16614 0.22586,0.04727 -0.10437,-0.04356 -0.17776,-0.05583 -0.22586,-0.04727 z", +0.143206, 0.14809, +"M -0.134411 -0.138893 c -0.0733,0.07232 0.33765,0.536966 0.27008,0.106063 -0.16769,-0.110755 -0.24568,-0.130215 -0.27008,-0.106063 z", +0.205727, 0.193789, +"M -0.128883 -0.184279 c -0.27335,0.08926 0.26505,0.768387 0.33461,0.05638 -0.16492,-0.06656 -0.27156,-0.07703 -0.33461,-0.05638 z", +0.305162, 0.456411, +"M 0.128243 -0.44135 c -0.29988,0.132509 -0.79724,1.080982 -0.0121,0.866257 l 0.0851,-0.147363 0.073,-0.208094 c 0.0833,-0.462398 -0.0138,-0.57096 -0.1475,-0.510616 z", +0.218898, 0.391658, +"M -0.131822 -0.379923 c -0.19943,0.127506 -0.0454,1.240958 0.35072,0.543718 l -0.0293,-0.2389 c -0.14923,-0.280285 -0.25533,-0.347357 -0.32181,-0.304858 z", +0.314969, 0.187616, +"M -0.110991 -0.158343 c -0.32093,0.126299 -0.30492,0.600436 0.35146,0.16703 l 0.0607,-0.06813 0.0138,-0.06262 c -0.17113,-0.08176 -0.31579,-0.07863 -0.42277,-0.03643 z", +0.144384, 0.265972, +"M -0.0991 -0.265684 c -0.18575,-0.02027 0.26116,1.038075 0.24294,0.222501 -0.1237,-0.15592 -0.19996,-0.217867 -0.24294,-0.222501 z", +0.249929, 0.219643, +"M -0.0945313 -0.210573 c -0.25801,0.08907 -0.22795,0.792505 0.34446,0.186141 -0.1406,-0.177396 -0.25858,-0.215823 -0.34446,-0.186141 z", +0.311515, 0.537401, +"M -0.140345 -0.534025 c -0.2896,0.082 -0.25686,1.549308 0.45186,0.911044 l -0.009,-0.160716 -0.0654,-0.241334 c -0.1551,-0.409456 -0.28705,-0.536186 -0.38358,-0.508808 z", +0.177607, 0.337109, +"M -0.0901732 -0.335988 c -0.24366,0.04365 0.0797,1.339997 0.26778,0.215464 -0.12508,-0.168462 -0.21151,-0.225565 -0.26778,-0.215464 z", +0.174549, 0.307061, +"M -0.0785809 -0.300444 c -0.14612,0.07522 -0.16717,0.806477 0.23933,0.555164 l 0.0138,-0.09759 v 0 c -0.0894,-0.391069 -0.18135,-0.492186 -0.24739,-0.457993 z", +0.103904, 0.181685, +"M -0.0611958 -0.180411 c -0.10023,0.0313 -0.0155,0.631126 0.1651,0.216629 -0.0781,-0.174417 -0.13129,-0.227114 -0.1651,-0.216629 z", +0.300084, 0.415141, +"M -0.145146 -0.407237 c -0.287,0.106735 -0.19552,1.250324 0.44523,0.648168 l -0.0387,-0.306045 c -0.17379,-0.297695 -0.31118,-0.377743 -0.40684,-0.342148 z", +0.871496, 0.707663, +"M 0.738024 -0.703243 c 0.1632,-0.03202 0.20538,0.105011 -0.038,0.573046 -0.007,0.328165 0.23952,1.188452 -0.39899,0.681635 -0.51284,-0.241795 -1.94836,0.149951 -0.63082,-0.4331 0.18654,-0.245067 0.7955,-0.768223 1.06753,-0.82157 z", +0.197296, 0.279834, +"M -0.119824 -0.279832 c -0.264,-0.0013 0.22383,1.101454 0.31712,0.214591 -0.15509,-0.155747 -0.25613,-0.214387 -0.31712,-0.214591 z", +0.362209, 0.376951, +"M -0.0190514 -0.364089 c 0.31129,-0.08445 0.64101,0.259813 0.068,0.656187 -0.0781,-0.02833 -0.31369,0.170722 -0.40954,0.03985 -0.0204,-0.440504 0.15544,-0.645356 0.34191,-0.696058 z", +0.322117, 0.43818, +"M 0.123244 -0.437076 c 0.21552,-0.01825 0.34427,0.190347 -0.0901,0.577559 0.0262,0.147674 -0.23676,0.452306 -0.33939,0.202753 -0.0887,-0.518231 0.21366,-0.762308 0.42909,-0.780276 z", +0.245771, 0.389516, +"M -0.127069 -0.385828 c -0.24435,0.07803 -0.10731,1.36138 0.37284,0.449505 -0.16786,-0.367879 -0.29138,-0.475521 -0.37284,-0.449505 z", +0.230177, 0.205962, +"M 0.0753834 -0.190211 c 0.31684,-0.138599 0.11369,0.694489 -0.30556,0.278851 0.13249,-0.162699 0.23246,-0.246844 0.30556,-0.278851 z", +0.195686, 0.378332, +"M -0.161823 -0.370693 c -0.19787,0.116276 0.54614,1.510428 0.31108,0.172533 -0.16941,-0.158542 -0.26538,-0.199394 -0.31108,-0.172533 z", +0.156073, 0.178711, +"M -0.123092 -0.173272 c 0.12455,-0.06557 0.54867,0.486539 0.0207,0.320803 -0.073,-0.208356 -0.063,-0.298951 -0.0207,-0.320803 z", +0.292868, 0.408748, +"M -0.0994831 -0.377205 c 0.2675,-0.127455 0.66049,0.135735 0.12818,0.70988 -0.0423,0.149106 -0.21965,0.04812 -0.24627,-0.04082 -0.15751,-0.374986 -0.0435,-0.592568 0.11835,-0.669165 z", +0.23406, 0.207114, +"M 0.15688 -0.205786 c 0.21509,-0.03505 -0.053,0.63824 -0.39094,0.33352 0.19441,-0.231554 0.31926,-0.321849 0.39094,-0.33352 z", +0.201117, 0.166598, +"M -0.0170272 -0.150178 c 0.25106,-0.12761 0.39144,0.539989 -0.18409,0.23713 0.0628,-0.135856 0.1261,-0.207647 0.18409,-0.23713 z", +0.114132, 0.18984, +"M -0.0125222 -0.189323 c 0.12162,-0.02091 0.24963,0.600837 -0.10161,0.293838 0.0204,-0.208237 0.0609,-0.286747 0.10161,-0.293838 z", +0.0915151, 0.173045, +"M -0.00111513 -0.171143 c 0.1168,-0.04285 0.15872,0.6575 -0.0904,0.172206 0.0312,-0.113136 0.0631,-0.162096 0.0904,-0.172206 z", +0.197077, 0.0630351, +"M -0.0264672 -0.0279184 c 0.34231,-0.128835 0.29613,0.142843 -0.17061,0.08191 0.0647,-0.03707 0.12128,-0.06352 0.17061,-0.08191 z", +0.32193, 0.326561, +"M -0.0297401 -0.311587 c 0.33824,-0.13351 0.67663,0.670587 -0.23729,0.637132 l -0.0549,-0.125695 c 0.0671,-0.318517 0.17898,-0.466864 0.29172,-0.511371 z", +0.15739, 0.161874, +"M -0.112614 -0.152979 c 0.14163,-0.07868 0.53585,0.392922 -0.0121,0.303528 -0.0537,-0.189612 -0.0352,-0.27729 0.0121,-0.303528 z", +0.492892, 0.413638, +"M -0.474932 -0.402985 c 0.083,-0.07235 0.43945,0.238304 0.76375,0.494301 0.64017,0.214078 -0.41841,0.52196 -0.55019,0.144016 -0.21378,-0.413279 -0.26311,-0.594893 -0.21413,-0.638157 z", +0.280378, 0.178761, +"M -0.23433 -0.147759 c 0.20564,-0.136598 1.00237,0.215878 0.0761,0.32652 -0.14871,-0.18142 -0.14543,-0.28092 -0.0761,-0.32652 z", +0.162268, 0.210341, +"M -0.102042 -0.210249 c -0.15268,-0.0093 0.003,0.684278 0.26431,0.309297 -0.12766,-0.225447 -0.21324,-0.306126 -0.26431,-0.309297 z", +0.173218, 0.312533, +"M 0.0960123 -0.312183 c 0.1701,0.02182 0.0498,1.05689 -0.26923,0.415217 0.12369,-0.317554 0.21268,-0.422492 0.26923,-0.415217 z", +0.225385, 0.163164, +"M -0.170322 -0.147418 c 0.19286,-0.101284 0.78196,0.319518 0.005,0.310437 -0.0894,-0.185115 -0.0687,-0.276769 -0.005,-0.310437 z", +0.256583, 0.29513, +"M 0.153207 -0.27621 c -0.24739,0.13332 -0.78467,0.91045 0.003,0.399077 0.15923,-0.386903 0.10662,-0.459705 -0.003,-0.399077 z", +0.142144, 0.160053, +"M -0.0769161 -0.159666 c -0.19378,0.01932 0.0939,0.633237 0.21906,0.107305 -0.10454,-0.08281 -0.17446,-0.111446 -0.21906,-0.107305 z", +0.257763, 0.339205, +"M -0.152337 -0.339123 c -0.34676,0.01225 0.26021,1.339727 0.4101,0.24746 -0.19896,-0.18325 -0.33009,-0.250231 -0.4101,-0.24746 z", +0.358938, 0.665171, +"M -0.0631218 -0.64564 c 0.1073,-0.03088 0.24635,-0.02708 0.42206,0.02536 -0.16562,0.294692 0.0819,1.345849 -0.37241,1.282725 -0.38085,-0.375619 -0.51502,-1.172797 -0.0474,-1.308222 z", +0.514964, 0.316052, +"M 0.0658635 -0.289668 c -0.47326,0.143016 -1.01805,0.807806 -0.02,0.544771 0.16837,-0.03778 0.41057,-0.08108 0.4691,-0.279942 -0.034,-0.28679 -0.23428,-0.329746 -0.44939,-0.264863 z", +0.28151, 0.425671, +"M -0.238974 -0.406955 c 0.18858,-0.163182 0.91161,0.793301 0.2413,0.832626 l -0.18057,-0.220986 c -0.12698,-0.378745 -0.12387,-0.557216 -0.0604,-0.611607 z", +0.146439, 0.286498, +"M -0.0593209 -0.282103 c -0.20198,0.07761 -0.019,1.143862 0.20576,0.141757 -0.0918,-0.124884 -0.15889,-0.159664 -0.20576,-0.141757 z", +0.224774, 0.345217, +"M -0.143886 -0.34214 c -0.21102,0.06745 0.0186,1.204903 0.36866,0.40122 -0.1801,-0.327159 -0.29833,-0.423613 -0.36866,-0.40122 z", +0.364393, 0.448279, +"M 0.118202 -0.416096 c -0.35164,0.168272 -0.86793,0.937323 -0.0295,0.85876 l 0.1563,-0.199134 c 0.2359,-0.645352 0.0842,-0.760655 -0.1268,-0.659676 z", +0.178445, 0.406469, +"M 0.0463255 -0.4059 c 0.18761,0.03174 0.22558,1.377763 -0.22477,0.5358 0.0833,-0.411175 0.16234,-0.546375 0.22477,-0.5358 z", +0.304022, 0.447803, +"M -0.00200764 -0.442434 c -0.3188,0.09523 -0.5662,1.415475 0.23893,0.655491 l 0.0671,-0.219199 c -0.0863,-0.363197 -0.19964,-0.467949 -0.30603,-0.436344 z", +0.738368, 0.337605, +"M -0.320121 -0.185236 c 0.66788,-0.249967 1.7692,-0.202284 0.41521,0.216789 -0.27722,0.04994 -0.4964,0.346511 -0.78619,0.3014 -0.14647,-0.229779 0.0671,-0.404455 0.37101,-0.518134 z", +0.375081, 0.882719, +"M -0.0815792 -0.881282 c -0.0944,0.0069 -0.19344,0.08954 -0.2912,0.259464 0.43267,0.359195 -0.52183,2.120841 0.4626,1.279309 0.52762,-0.392181 0.23605,-1.588716 -0.17148,-1.538687 z", +0.352805, 1.09079, +"M -0.163519 -1.08216 c 0.0236,-0.0085 0.05,-0.01121 0.0787,-0.0059 0.20435,0.405278 0.95305,2.696139 -0.15267,2.071683 -0.0376,-0.500541 -0.27879,-1.943774 0.0742,-2.06522 z", +0.41009, 1.14354, +"M 0.143813 -1.1422 c 0.118,-0.0138 0.21959,0.07711 0.26221,0.355831 0.0248,0.57158 -0.0509,3.125281 -0.59151,1.256692 -0.51863,-0.436258 -0.024,-1.551867 0.32926,-1.612506 z", +0.140552, 0.154723, +"M 0.0177994 -0.154723 c -0.5212,0.106098 0.44996,0.639827 0,0 z", +0.533274, 0.437204, +"M -0.502236 -0.433749 c -0.0649,0.02284 -0.0361,0.171895 0.16389,0.539065 0.1023,0.205429 0.86901,0.563972 0.87162,0.118795 -0.2874,-0.156058 -0.89227,-0.709351 -1.03553,-0.657957 z", +0.200361, 0.314278, +"M -0.124469 -0.30535 c -0.17097,0.09682 -0.049,0.951731 0.32483,0.477136 l -0.0547,-0.244774 c -0.12404,-0.21357 -0.21339,-0.264707 -0.27044,-0.232426 z", +0.274543, 0.539917, +"M -0.0453373 -0.535301 c -0.54472,0.105752 0.0193,1.964059 0.27489,0.540906 0.031,-0.148363 0.0654,-0.312167 0.03,-0.464016 -0.12663,-0.07108 -0.22779,-0.09212 -0.30563,-0.07677 z", +0.171092, 0.292515, +"M -0.137189 -0.285982 c 0.12732,-0.0772 0.5456,0.554711 0.12559,0.578497 l -0.11369,-0.216331 c -0.0635,-0.232403 -0.0552,-0.336408 -0.0103,-0.362199 z", +0.270716, 0.41871, +"M -0.224043 -0.39102 c -0.27325,0.221011 0.75659,1.649373 0.43008,0.09126 -0.23446,-0.129041 -0.36699,-0.142153 -0.43008,-0.09126 z", +0.173802, 0.188374, +"M 0.0173279 -0.186489 c 0.18489,-0.03985 0.2935,0.568112 -0.19113,0.311443 0.0597,-0.212936 0.13008,-0.298228 0.19113,-0.311443 z", +0.23479, 0.730233, +"M -0.0770773 -0.699585 c -0.11437,0.07401 -0.20017,0.281408 -0.13542,0.641983 0.0405,0.983203 0.0543,1.109157 0.35222,0.01811 0.23794,-0.534592 -0.0224,-0.783153 -0.21742,-0.659545 z", +0.439088, 0.707771, +"M 0.246767 -0.701228 c -0.10299,0.02191 -0.25293,0.102474 -0.45902,0.264588 -0.16872,0.17726 -0.43644,1.694364 0.0511,0.931154 0.43805,-0.288567 0.85607,-1.292506 0.40786,-1.195742 z", +0.139899, 0.344117, +"M -0.0663814 -0.336297 c -0.14129,0.105407 -0.0823,1.226019 0.20628,0.344756 -0.0904,-0.302541 -0.15923,-0.379811 -0.20628,-0.344756 z", +0.102613, 0.185851, +"M 0.0541974 -0.185523 c 0.10196,0.01725 0.0397,0.631684 -0.15681,0.242402 0.0711,-0.187404 0.12283,-0.247802 0.15681,-0.242402 z", +0.302008, 0.560567, +"M -0.0270707 -0.55462 c -0.18178,0.03761 -0.35011,0.264001 -0.23973,0.713802 0.0228,0.671208 0.15302,0.377879 0.44061,0.0069 0.28805,-0.504213 0.0331,-0.769335 -0.20105,-0.721031 z", +0.085711, 0.142485, +"M -0.056959 -0.129834 c -0.0792,0.08246 0.0173,0.517289 0.14267,0.08091 -0.0697,-0.09661 -0.11541,-0.107822 -0.14267,-0.08091 z", +0.180055, 0.427331, +"M -0.0363549 -0.425781 c 0.19187,0.05348 0.43026,1.467351 -0.1437,0.536886 0.0224,-0.422025 0.08,-0.554673 0.1437,-0.536886 z", +0.253994, 0.158651, +"M -0.157396 -0.151199 c -0.33829,0.07177 0.31285,0.629548 0.41139,0.04756 -0.20239,-0.05529 -0.33338,-0.06404 -0.41139,-0.04756 z", +0.142239, 0.160356, +"M -0.077041 -0.160032 c -0.19381,0.01932 0.0942,0.634082 0.21928,0.108167 -0.10472,-0.08281 -0.17481,-0.111962 -0.21928,-0.108167 z", +0.204532, 0.23177, +"M -0.125112 -0.231668 c 0.18825,-0.0086 0.62843,0.52902 0.0155,0.456753 -0.14112,-0.336734 -0.10644,-0.453147 -0.0155,-0.456753 z", +0.302086, 0.355289, +"M -0.150514 -0.321921 c -0.41485,0.206156 0.12059,1.269337 0.4281,0.224788 l 0.0245,-0.194374 c -0.21141,-0.07953 -0.35705,-0.07849 -0.45276,-0.03088 z", +0.319431, 0.249425, +"M -0.132339 -0.243618 c -0.4405,0.08143 -0.0266,0.995486 0.45177,0.108513 -0.20224,-0.10282 -0.34995,-0.127317 -0.45177,-0.108513 z", +0.318818, 0.231988, +"M 0.0318226 -0.193927 c -0.30533,0.13422 -0.649,0.55842 0.0989,0.38482 l 0.16407,-0.11973 c 0.0881,-0.31984 -0.0811,-0.34462 -0.26387,-0.2645 z", +0.196202, 0.386572, +"M -0.0913577 -0.381538 c -0.40284,0.05141 0.50388,1.52278 0.23778,0.253201 l -0.14026,-0.243385 c -0.0383,-0.01208 -0.0716,-0.01725 -0.0973,-0.0138 z", +0.252923, 0.25611, +"M -0.0991266 -0.255205 c -0.34893,0.0343 -0.0492,1.01793 0.35205,0.16303 -0.15613,-0.12749 -0.27152,-0.17097 -0.35205,-0.16303 z", +0.227743, 0.364507, +"M -0.129097 -0.362268 c -0.18019,0.05106 -0.14232,0.970885 0.35684,0.664393 -0.14854,-0.531815 -0.27503,-0.687804 -0.35684,-0.664393 z", +0.164352, 0.175428, +"M -0.045238 -0.173643 c -0.22431,0.03864 -0.11921,0.700104 0.20959,0.09557 -0.0887,-0.08074 -0.15768,-0.104545 -0.20959,-0.09557 z", +0.39131, 0.330262, +"M -0.0448403 -0.29959 c -0.36646,0.172171 -0.65831,0.979631 0.30262,0.455235 l 0.13353,-0.110583 c -0.087,-0.369322 -0.26893,-0.422388 -0.43553,-0.344152 z", +0.08851, 0.144333, +"M -0.06158 -0.131595 c -0.0797,0.0825 0.0316,0.52359 0.15009,0.0835 -0.0751,-0.0988 -0.12318,-0.11093 -0.15009,-0.0835 z", +0.142269, 0.160385, +"M -0.0770807 -0.160034 c -0.19379,0.01932 0.0942,0.634151 0.21935,0.108167 -0.10471,-0.08281 -0.17483,-0.112135 -0.21935,-0.108167 z", +0.141781, 0.160158, +"M -0.076419 -0.159773 c -0.19379,0.01932 0.093,0.633582 0.2182,0.107477 -0.10472,-0.08281 -0.17386,-0.111617 -0.2182,-0.107477 z", +0.209206, 0.30405, +"M -0.116284 -0.296837 c -0.20484,0.0951 -0.0599,1.08425 0.32549,0.30178 -0.15043,-0.26622 -0.25717,-0.33337 -0.32549,-0.30178 z", +0.201742, 0.3747, +"M -0.146133 -0.374084 c -0.24908,0.0343 0.42422,1.48646 0.34064,0.25287 -0.17607,-0.19356 -0.28321,-0.26077 -0.34064,-0.25287 z", +0.322667, 0.259474, +"M -0.114613 -0.226479 c -0.33039,0.161993 -0.30744,0.843431 0.36278,0.242972 l 0.0745,-0.165098 c -0.17776,-0.127834 -0.3269,-0.132147 -0.4369,-0.07815 z", +0.182682, 0.131912, +"M -0.0706049 -0.115145 c -0.38616,0.0825 0.35908,0.51914 0.2403,-0.0121 -0.10644,-0.0121 -0.18509,0.002 -0.2403,0.0121 z", +0.226747, 0.401068, +"M -0.210404 -0.386184 c -0.12456,0.15492 0.50616,1.44357 0.43089,0.3531 -0.26357,-0.33026 -0.38924,-0.40472 -0.43089,-0.3531 z", +0.231976, 0.335615, +"M -0.105621 -0.325515 c 0.23153,-0.10299 0.64145,0.61459 -0.029,0.66113 l -0.0958,-0.22943 c -0.0121,-0.27202 0.048,-0.39727 0.1249,-0.4317 z", +0.335965, 0.335139, +"M -0.0942353 -0.30707 c -0.34582,0.173534 -0.39751,1.086591 0.3636,0.373859 l 0.0511,-0.10489 0.0155,-0.10903 c -0.16113,-0.19389 -0.30903,-0.218301 -0.42429,-0.160612 z", +0.0697059, 0.240406, +"M -0.0569386 -0.237373 c 0.0566,0.055 0.24727,0.84545 0.0121,0.26736 -0.0321,-0.22226 -0.0297,-0.28589 -0.0121,-0.26736 z", +0.242776, 0.518825, +"M -0.137028 -0.512424 c -0.43441,0.07384 0.62996,1.783124 0.32347,0.636705 -0.0242,-0.208434 -0.0183,-0.497208 -0.21632,-0.628062 -0.0433,-0.0138 -0.0788,-0.01725 -0.10696,-0.0138 z", +0.0911062, 0.261377, +"M -0.00830619 -0.25616 c 0.11369,-0.08798 0.1788,0.975612 -0.0828,0.280459 0.0274,-0.178605 0.0571,-0.260274 0.0828,-0.280459 z", +0.175081, 0.18501, +"M -0.0388005 -0.179991 c 0.20821,-0.07297 0.40631,0.681507 -0.13628,0.207658 0.0405,-0.129905 0.0885,-0.190855 0.13628,-0.207658 z", +0.118897, 0.176509, +"M -0.0742332 -0.173289 c -0.15768,0.0526 0.1494,0.70495 0.19313,0.0823 -0.0947,-0.0745 -0.15647,-0.0942 -0.19313,-0.0823 z", + ) + +def mt( s ) : + return s.isspace() or len(s) == 0 + +def addparms( p ) : + s = '' + for parm in p.split(',') : + if mt(parm) : + continue + s += parm + ' ' + return s + +if __name__ == '__main__': + ChipScratches().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/circle_tangents/circle_tangents.inx b/extensions/fablabchemnitz/circle_tangents/circle_tangents.inx new file mode 100644 index 00000000..82e4950b --- /dev/null +++ b/extensions/fablabchemnitz/circle_tangents/circle_tangents.inx @@ -0,0 +1,26 @@ + + + Circle Tangents + fablabchemnitz.de.circle_tangents + + + + + + + + + + true + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/circle_tangents/circle_tangents.py b/extensions/fablabchemnitz/circle_tangents/circle_tangents.py new file mode 100644 index 00000000..4678fa75 --- /dev/null +++ b/extensions/fablabchemnitz/circle_tangents/circle_tangents.py @@ -0,0 +1,230 @@ +#!/usr/bin/env python3 + +''' + Copyright (C) 2012 Rhys Owen, rhysun@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + A + |\ + | \ + | \ + | \ + | \ + b| \h + | \ + | \ + |_ \ + |_|_______\ + C a B +''' + +import inkex +from inkex.paths import Path +from inkex import Transform +from math import * +from lxml import etree + +def poltocar(r, rad, negx=False, negy=False): + # converts polar coords to cartesian + x = r * cos(rad) + y = r * sin(rad) + if negx and not negy: + return [-x, y] + elif not negx and negy: + return [x, -y] + elif not negx and not negy: + return [-x, -y] + else: + return [x, y] + +def deuclid(x1, y1, x2, y2): + # euclidean distance between two cartesian coords + squarex = (x1 - x2)**2 + squarey = (y1 - y2)**2 + d = sqrt(squarex + squarey) + return d + +def getAngle(b, h): + angle = asin(b / h) + return angle + +def aLength(b, h): + a = sqrt(h**2-b**2) + return a + + +def getPathData(obj): + if obj.get("d"):# If the circle has been converted to a path object + d = obj.get("d") + p = Path(d) + if obj.get("transform"): + trans = Transform(obj.get("transform")) + scalex = trans[0][0] + scaley = trans[1][1] + data = {'rx' : p[1][1][0]*scalex, + 'ry' : p[1][1][1]*scaley, + 'x' : (trans[0][0]*p[0][1][0])+(trans[0][1]*p[0][1][1])+trans[0][2]-(p[1][1][0]*scalex), + 'y' : (trans[1][0]*p[0][1][0])+(trans[1][1]*p[0][1][1])+trans[1][2]} + else: + data = {'rx': p[1][1][0], + 'ry': p[1][1][1], + 'x' : p[0][1][0]-p[1][1][0], + 'y' : p[0][1][1]} + elif obj.get("r"):# For a pure circle object + r = obj.get("r") + cx = obj.get("cx") + cy = obj.get("cy") + data = {'rx' : float(r), + 'ry' : float(r), + 'x' : float(cx), + 'y' : float(cy)} + elif obj.get("rx"):# For ellipses + rx = obj.get("rx") + ry = obj.get("ry") + cx = obj.get("cx") + cy = obj.get("cy") + data = {'rx' : float(rx), + 'ry' : float(ry), + 'x' : float(cx), + 'y' : float(cy)} + else: + stockErrorMsg("4") + + return data + +class CircleTangents(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--position", default="inner", help="Choose either inner or outer tangent lines") + pars.add_argument("--selector", default="both", help="Choose which tangents you want to get") + pars.add_argument("--use_style_from_first", type=inkex.Boolean, default=False, help="Use style from first selected") + + def effect(self): + if len(self.options.ids) != 2: + inkex.errormsg("Please select exactly two circles and try again!") + return + + c1object = self.svg.selected[self.options.ids[0]] + c2object = self.svg.selected[self.options.ids[1]] + + if c1object.tag != inkex.addNS('circle','svg') or c2object.tag != inkex.addNS('circle','svg'): + self.msg("One or both objects are not svg:circle elements!") + return + + c1 = getPathData(c1object) + c2 = getPathData(c2object) + + # Create a third 'virtual' circle + if c1['rx'] <= c2['rx']: + c3x = c2['x'] + c3y = c2['y'] + if self.options.position == "outer": + c3r = c2['rx'] - c1['rx'] + else: + c3r = c2['rx'] + c1['rx'] + cyfA = [c1['x'], c1['y']] + cyfB = [c2['x'], c2['y']] + elif c1['rx'] > c2['rx']: + c3x = c1['x'] + c3y = c1['y'] + if self.options.position == "outer": + c3r = c1['rx'] - c2['rx'] + else: + c3r = c1['rx'] + c2['rx'] + cyfA = [c2['x'], c2['y']] + cyfB = [c1['x'], c1['y']] + + # Test whether the circles are actually circles! + if c1['rx'] != c1['ry'] or c2['rx'] != c2['ry']: + inkex.errormsg("One or both objects may be elliptical. Ensure you have circles!") + return + + # Hypotenus of the triangle - Euclidean distance between c1 x, y and c2 x, y. + h = deuclid(c1['x'], c1['y'], c2['x'], c2['y']) + b = c3r + B = None + try: + B = getAngle(b, h) + except ValueError as e: + if self.options.position == "inner": + inkex.errormsg("Error calculating angle. Maybe your circles are overlapping each other") + else: + inkex.errormsg("Error calculating angle.") + return + a = aLength(b, h) + # Angle of hypotenuse to x-axis + E = getAngle(max(c1['y'], c2['y']) - min(c1['y'], c2['y']), h) + + # To test if the smallest circle is lower than the other + if cyfB[1] <= cyfA[1]: + negx = False + else: + negx = True + + # To test if it's the smallest circle to the right of the other + if cyfB[0] <= cyfA[0]: + negy = False + else: + negy = True + + angleTop = -B+E + angleBottom = B+E + if self.options.position == "outer":# External + perpTop = -(pi/2) + perpBottom = pi/2 + else:# Internal + perpTop = pi/2 + perpBottom = -(pi/2) + + # Top coordinates of the top line + cyfC = poltocar(a, angleTop, negx, negy) + # Information for converting top 90grade coordinates + conversionTop = poltocar(min(c1['rx'], c2['rx']), perpTop+angleTop, negx, negy)#1.5707964 1.57079632679 + + # Bottom line coordinates + cyfD = poltocar(a, angleBottom, negx, negy) + # Information for converting the bottom 90 degree coordinates + conversionBottom = poltocar(min(c1['rx'], c2['rx']), perpBottom+angleBottom, negx, negy) + + # Draw a line + llx1 = cyfA[0] + lly1 = cyfA[1] + if self.options.use_style_from_first is True: + llsteil = (c1object.get("style")) #note: if the selected objects do not contain a stroke width the tangents will be invisible! + else: + llsteil = "stroke:#000000; stroke-width:1px; fill:none;" + + # Line 1 + if self.options.selector == "first" or self.options.selector == "both": + ll1x2 = cyfC[0] + ll1y2 = cyfC[1] + parent = c1object.getparent() + attribsLine1 = {'style':llsteil, + inkex.addNS('label','inkscape'):"line1", + 'd':'m '+str(llx1+conversionTop[0])+','+str(lly1+conversionTop[1])+' l '+str(ll1x2)+','+str(ll1y2)} + elfen1 = etree.SubElement(parent, inkex.addNS('path','svg'), attribsLine1 ) + + #Line 2 + if self.options.selector == "second" or self.options.selector == "both": + ll2x2 = cyfD[0] + ll2y2 = cyfD[1] + parent = c1object.getparent() + attribsLine1 = {'style':llsteil, + inkex.addNS('label','inkscape'):"line2", + 'd':'m '+str(llx1+conversionBottom[0])+','+str(lly1+conversionBottom[1])+' l '+str(ll2x2)+','+str(ll2y2)} + etree.SubElement(parent, inkex.addNS('path','svg'), attribsLine1 ) + +if __name__ == '__main__': + CircleTangents().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/cleanup_styles/cleanup_styles.inx b/extensions/fablabchemnitz/cleanup_styles/cleanup_styles.inx new file mode 100644 index 00000000..61956d18 --- /dev/null +++ b/extensions/fablabchemnitz/cleanup_styles/cleanup_styles.inx @@ -0,0 +1,69 @@ + + + Cleanup Styles + fablabchemnitz.de.cleanup_styles + + + + + + + + false + 0.100 + + + + + + + + false + 100.0 + true + true + true + true + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/cleanup_styles/cleanup_styles.py b/extensions/fablabchemnitz/cleanup_styles/cleanup_styles.py new file mode 100644 index 00000000..ccaf147c --- /dev/null +++ b/extensions/fablabchemnitz/cleanup_styles/cleanup_styles.py @@ -0,0 +1,187 @@ +#!/usr/bin/env python3 +''' +Copyright (C) 2013 Matthew Dockrey (gfish @ cyphertext.net) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Based on +- coloreffect.py by Jos Hirth and Aaron C. Spike +- cleanup.py (https://github.com/attoparsec/inkscape-extensions) by attoparsec + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Last Patch: 12.04.2021 +License: GNU GPL v3 + +Notes: + - This extension does not check if attributes contain duplicates properties like "opacity:1;fill:#393834;fill-opacity:1;opacity:1;fill:#393834;fill-opacity:1". We assume the SVG syntax is correct +''' + +import inkex +import re + +class CleanupStyles(inkex.EffectExtension): + + groups = [] + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--mode", default="Lines", help="Join paths with lines or polygons") + pars.add_argument("--dedicated_style_attributes", default="ignore", help="Handling of dedicated style attributes") + pars.add_argument("--stroke_width_override", type=inkex.Boolean, default=False, help="Override stroke width") + pars.add_argument("--stroke_width", type=float, default=0.100, help="Stroke width") + pars.add_argument("--stroke_width_units", default="mm", help="Stroke width unit") + pars.add_argument("--stroke_opacity_override", type=inkex.Boolean, default=False, help="Override stroke opacity") + pars.add_argument("--stroke_opacity", type=float, default="100.0", help="Stroke opacity (%)") + pars.add_argument("--reset_opacity", type=inkex.Boolean, default=True, help="Reset stroke style attribute 'opacity'. Do not mix up with 'fill-opacity' and 'stroke-opacity'") + pars.add_argument("--reset_stroke_attributes", type=inkex.Boolean, default=True, help="Remove stroke style attributes 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linejoin', 'stroke-linecap', 'stroke-miterlimit'") + pars.add_argument("--reset_fill_attributes", type=inkex.Boolean, default=True, help="Sets 'fill:none;fill-opacity:1;' to style attribute") + pars.add_argument("--apply_hairlines", type=inkex.Boolean, default=True, help="Adds 'vector-effect:non-scaling-stroke;' and '-inkscape-stroke:hairline;' Hint: stroke-width is kept in background. All hairlines still have a valued width.") + pars.add_argument("--apply_black_strokes", type=inkex.Boolean, default=True, help="Adds 'stroke:#000000;' to style attribute") + pars.add_argument("--remove_group_styles", type=inkex.Boolean, default=False, help="Remove styles from groups") + + def effect(self): + if len(self.svg.selected) == 0: + self.getAttribs(self.document.getroot()) + else: + for element in self.svg.selected.values(): + self.getAttribs(element) + #finally remove the styles from collected groups (if enabled) + if self.options.remove_group_styles is True: + for group in self.groups: + if group.attrib.has_key('style') is True: + group.attrib.pop('style') + + def getAttribs(self, node): + self.changeStyle(node) + for child in node: + self.getAttribs(child) + + #stroke and fill styles can be included in style attribute or they can exist separately (can occure in older SVG files). We do not parse other attributes than style + def changeStyle(self, node): + + #we check/modify the style of all shapes (not groups) + if isinstance(node, inkex.ShapeElement) and not isinstance(node, inkex.Group): + # the final styles applied to this element (with influence from top level elements like groups) + composed_style = node.composed_style() + composedStyleAttributes = str(composed_style).split(';') #array + composedStyleAttributesDict = {} + if len(composed_style) > 0: #Style "composed_style" might contain just empty '' string which will lead to failing dict update + for composedStyleAttribute in composedStyleAttributes: + composedStyleAttributesDict.update({'{}'.format(composedStyleAttribute.split(':')[0]): composedStyleAttribute.split(':')[1]}) + + #three options to handle dedicated attributes (attributes not in the "style" attribute, but separate): + # - just delete all dedicated properties + # - merge dedicated properties, and prefer them over those from composed style + # - merge dedicated properties, but prefer properties from composed style + dedicatedStyleAttributesDict = {} + popDict = [] + # there are opacity (of group/parent), fill-opacity and stroke-opacity + popDict.extend(['opacity', 'stroke', 'stroke-opacity', 'stroke-width', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'fill', 'fill-opacity']) + for popItem in popDict: + if node.attrib.has_key(str(popItem)): + dedicatedStyleAttributesDict.update({'{}'.format(popItem): node.get(popItem)}) + node.attrib.pop(popItem) + + #inkex.utils.debug("composedStyleAttributesDict = " + str(composedStyleAttributesDict)) + #inkex.utils.debug("dedicatedStyleAttributesDict = " + str(dedicatedStyleAttributesDict)) + + if self.options.dedicated_style_attributes == 'prefer_dedicated': + composedStyleAttributesDict.update(dedicatedStyleAttributesDict) + node.set('style', composedStyleAttributesDict) + elif self.options.dedicated_style_attributes == 'prefer_composed': + dedicatedStyleAttributesDict.update(composedStyleAttributesDict) + node.set('style', dedicatedStyleAttributesDict) + elif self.options.dedicated_style_attributes == 'ignore': + pass + + # now parse the style with possibly merged dedicated attributes modded style attribute (dedicatedStyleAttributes) + if node.attrib.has_key('style') is False: + node.set('style', 'stroke:#000000;') #we add basic stroke color black. We cannot set to empty value or just ";" because it will not update properly + style = node.get('style') + + #add missing style attributes if required + if style.endswith(';') is False: + style += ';' + if re.search('(;|^)stroke:(.*?)(;|$)', style) is None: #if "stroke" is None, add one. We need to distinguish because there's also attribute "-inkscape-stroke" that's why we check starting with ^ or ; + style += 'stroke:none;' + if self.options.stroke_width_override is True and "stroke-width:" not in style: + style += 'stroke-width:{:1.4f};'.format(self.svg.unittouu(str(self.options.stroke_width) + self.options.stroke_width_units)) + if self.options.stroke_opacity_override is True and "stroke-opacity:" not in style: + style += 'stroke-opacity:{:1.1f};'.format(self.options.stroke_opacity / 100) + + if self.options.apply_hairlines is True: + if "vector-effect:non-scaling-stroke" not in style: + style += 'vector-effect:non-scaling-stroke;' + if "-inkscape-stroke:hairline" not in style: + style += '-inkscape-stroke:hairline;' + + if re.search('fill:(.*?)(;|$)', style) is None: #if "fill" is None, add one. + style += 'fill:none;' + + #then parse the content and check what we need to adjust + declarations = style.split(';') + for i, decl in enumerate(declarations): + parts = decl.split(':', 2) + if len(parts) == 2: + (prop, val) = parts + prop = prop.strip().lower() + if prop == 'stroke-width' and self.options.stroke_width_override is True: + new_val = self.svg.unittouu(str(self.options.stroke_width) + self.options.stroke_width_units) + declarations[i] = prop + ':{:1.4f}'.format(new_val) + if prop == 'stroke-opacity' and self.options.stroke_opacity_override is True: + new_val = self.options.stroke_opacity / 100 + declarations[i] = prop + ':{:1.1f}'.format(new_val) + if self.options.reset_opacity is True: + if prop == 'opacity': + declarations[i] = '' + if self.options.reset_stroke_attributes is True: + if prop == 'stroke-dasharray': + declarations[i] = '' + if prop == 'stroke-dashoffset': + declarations[i] = '' + if prop == 'stroke-linejoin': + declarations[i] = '' + if prop == 'stroke-linecap': + declarations[i] = '' + if prop == 'stroke-miterlimit': + declarations[i] = '' + if self.options.apply_black_strokes is True: + if prop == 'stroke': + if val == 'none': + new_val = '#000000' + declarations[i] = prop + ':' + new_val + if self.options.reset_fill_attributes is True: + if prop == 'fill': + new_val = 'none' + declarations[i] = prop + ':' + new_val + if prop == 'fill-opacity': + new_val = '1' + declarations[i] = prop + ':' + new_val + if self.options.apply_hairlines is False: + if prop == '-inkscape-stroke': + if val == 'hairline': + del declarations[i] + if prop == 'vector-effect': + if val == 'non-scaling-stroke': + del declarations[i] + node.set('style', ';'.join(declarations)) + + # if element is group we add it to collection to remove it's style after parsing all selected items + elif isinstance(node, inkex.ShapeElement) and isinstance(node, inkex.Group): + self.groups.append(node) + +if __name__ == '__main__': + CleanupStyles().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.inx b/extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.inx new file mode 100644 index 00000000..35b66d60 --- /dev/null +++ b/extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.inx @@ -0,0 +1,18 @@ + + + Clones In Perspective + fablabchemnitz.de.clones_in_perspective + 5 + 0.8 + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.py b/extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.py new file mode 100644 index 00000000..d3ebf8f2 --- /dev/null +++ b/extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +import sys +import math +import inkex +from lxml import etree + +class clonesInPerspective(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--num', type = int, default = 5, help = 'Drag out center of rotation before calling') + pars.add_argument('--ratio', type = float, default = 0.9, help = 'Ratio of size of nearest neighbor to first. Must be < 1') + + def effect(self): + if len(self.svg.selected) != 1: + inkex.errormsg("Select exactly 1 thing. If necessary, group your items before.") + sys.exit(1) + xpath = list(self.svg.selected.items())[0][0] + sel = self.svg.selected[xpath] + id = sel.get('id') + + try : + tx = sel.attrib[inkex.addNS('transform-center-x','inkscape')] + except KeyError: + tx = '0.' + try : + ty = sel.attrib[inkex.addNS('transform-center-y','inkscape')] + except KeyError: + ty = '0.' + + if float(tx) == 0. and float(ty) == 0. : + inkex.errormsg("Center of rotation ist at the center of object. Please move the center first.") + sys.exit(1) + + bbox = sel.bounding_box() + width = bbox.height + height = bbox.width + cx = float(bbox.left) + 0.5 * width #Find center of selected object + cy = float(bbox.top) + 0.5 * height #Find center of selected object + tx = float(tx) + ty = float(ty) + crat = 1.0 + otx = tx + oty = ty + + parent = sel.getparent() + j = parent.index(sel) + for i in range(self.options.num) : + crat *= self.options.ratio + tx *= self.options.ratio + ty *= self.options.ratio + att = { + "id" : self.svg.get_unique_id("clone" + id), + inkex.addNS('href','xlink') : "#" + id, + inkex.addNS('transform-center-x','inkscape') : str(tx), + inkex.addNS('transform-center-y','inkscape') : str(ty), + 'transform' : ("matrix(%f,0,0,%f,%f,%f)" % (crat, crat,(1. - crat)*(cx + otx), (1. - crat)*(cy - oty))), + "width" : "100%", + "height" : "100%", + } + parent.insert(j, etree.Element('use', att)) + +if __name__ == '__main__': + clonesInPerspective().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/close_paths/close_paths.inx b/extensions/fablabchemnitz/close_paths/close_paths.inx new file mode 100644 index 00000000..6ca80f90 --- /dev/null +++ b/extensions/fablabchemnitz/close_paths/close_paths.inx @@ -0,0 +1,16 @@ + + + Close Paths + fablabchemnitz.de.close_paths + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/close_paths/close_paths.py b/extensions/fablabchemnitz/close_paths/close_paths.py new file mode 100644 index 00000000..17d22439 --- /dev/null +++ b/extensions/fablabchemnitz/close_paths/close_paths.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +""" +Copyright (C) 2009 Nick Drobchenko, nick@cnc-club.ru +based on gcode.py (C) 2007 hugomatic... +based on addnodes.py (C) 2005,2007 Aaron Spike, aaron@ekips.org +based on dots.py (C) 2005 Aaron Spike, aaron@ekips.org + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +""" + +# +# This extension close paths by adding 'z' before each 'm' if it is not the first 'm' and it is not prepended by 'z' already. +# + +import inkex +import re +from inkex.paths import Path + +class ClosePaths(inkex.EffectExtension): + + def effect(self): + for id, node in self.svg.selected.items(): + if node.tag == inkex.addNS('path','svg'): + d = node.get('d') + d = str(Path((Path(d).to_arrays()))) + d = re.sub(r'(?i)(m[^mz]+)',r'\1 Z ',d) + d = re.sub(r'(?i)\s*z\s*z\s*',r' Z ',d) + node.set('d', d) + +if __name__ == '__main__': + ClosePaths().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/collar/.gitattributes b/extensions/fablabchemnitz/collar/.gitattributes new file mode 100644 index 00000000..dfe07704 --- /dev/null +++ b/extensions/fablabchemnitz/collar/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/extensions/fablabchemnitz/collar/collar.inx b/extensions/fablabchemnitz/collar/collar.inx new file mode 100644 index 00000000..36606465 --- /dev/null +++ b/extensions/fablabchemnitz/collar/collar.inx @@ -0,0 +1,48 @@ + + + Collar + fablabchemnitz.de.collar + + + + 6 + 5.0 + 3.0 + 5.0 + 1 + 45.0 + 0.4 + 0.1 + + + + + + + + + + + + + false + false + 4278190335 + 65535 + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/collar/collar.py b/extensions/fablabchemnitz/collar/collar.py new file mode 100644 index 00000000..9595b1bc --- /dev/null +++ b/extensions/fablabchemnitz/collar/collar.py @@ -0,0 +1,753 @@ +#!/usr/bin/env python3 +# +# Copyright (C) [2021] [Joseph Zakar], [observing@gmail.com] +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +""" +Given a set of parameters for two polygons, this program generates paper +models of (1) the two polygons; (2) a collar (divided into segments if desired) +represented by a strip with tabs and score lines; and (3) wrapper(s) for +covering the tabbed strip(s). +""" + +import inkex +from inkex import Color +import math +import copy + +class pathStruct(object): + + + def __init__(self): + self.id="path0000" + self.path=[] + self.enclosed=False + + + def __str__(self): + return self.path + +class pnPoint(object): + # This class came from https://github.com/JoJocoder/PNPOLY + + + def __init__(self,p): + self.p=p + + + def __str__(self): + return self.p + + + + + def InPolygon(self,polygon,BoundCheck=False): + inside=False + if BoundCheck: + minX=polygon[0][0] + maxX=polygon[0][0] + minY=polygon[0][1] + maxY=polygon[0][1] + for p in polygon: + minX=min(p[0],minX) + maxX=max(p[0],maxX) + minY=min(p[1],minY) + maxY=max(p[1],maxY) + if self.p[0]maxX or self.p[1]maxY: + return False + j=len(polygon)-1 + for i in range(len(polygon)): + if ((polygon[i][1]>self.p[1])!=(polygon[j][1]>self.p[1]) and (self.p[0]<(polygon[j][0]-polygon[i][0])*(self.p[1]-polygon[i][1])/( polygon[j][1] - polygon[i][1] ) + polygon[i][0])): + inside =not inside + j=i + return inside + + +class Collar(inkex.EffectExtension): + + + def add_arguments(self, pars): + pars.add_argument("--usermenu") + pars.add_argument("--unit", default="in",help="Dimensional units") + pars.add_argument("--polysides", type=int, default=6,help="Number of Polygon Sides") + pars.add_argument("--poly1size", type=float, default=5.0, help="Size of Polygon 1 in dimensional units") + pars.add_argument("--poly2size", type=float, default=3.0, help="Size of Polygon 2 in dimensional units") + pars.add_argument("--collarheight", type=float, default=2.0, help="Height of collar in dimensional units") + pars.add_argument("--collarparts", type=int, default=1,help="Number of parts to divide collar into") + pars.add_argument("--dashlength", type=float, default=0.1, help="Length of dashline in dimensional units (zero for solid line)") + pars.add_argument("--tabangle", type=float, default=45.0, help="Angle of tab edges in degrees") + pars.add_argument("--tabheight", type=float, default=0.4, help="Height of tab in dimensional units") + pars.add_argument("--generate_decorative_wrapper", type=inkex.Boolean, default=False, help="Generate decorative wrapper") + pars.add_argument("--cosmetic_dash_style", type=inkex.Boolean, default=False, help="Cosmetic dash lines") + pars.add_argument("--color_solid", type=Color, default='4278190335', help="Solid line color") + pars.add_argument("--color_dash", type=Color, default='65535', help="Solid line dash") + + + #draw SVG line segment(s) between the given (raw) points + def drawline(self, dstr, name, parent, sstr=None): + line_style = {'stroke':self.options.color_solid,'stroke-width':'0.25','fill':'#eeeeee'} + if sstr == None: + stylestr = str(inkex.Style(line_style)) + else: + stylestr = sstr + el = parent.add(inkex.PathElement()) + el.path = dstr + el.style = stylestr + el.label = name + + def makepoly(self, toplength, numpoly): + r = toplength/(2*math.sin(math.pi/numpoly)) + pstr = '' + for ppoint in range(0,numpoly): + xn = r*math.cos(2*math.pi*ppoint/numpoly) + yn = r*math.sin(2*math.pi*ppoint/numpoly) + if ppoint == 0: + pstr = 'M ' + else: + pstr += ' L ' + pstr += str(xn) + ',' + str(yn) + pstr = pstr + ' Z' + return pstr + + # Thanks to Gabriel Eng for his python implementation of https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection + def findIntersection(self, x1,y1,x2,y2,x3,y3,x4,y4): + px= ( (x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4) ) / ( (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4) ) + py= ( (x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4) ) / ( (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4) ) + return px, py + + def insidePath(self, path, p): + point = pnPoint((p.x, p.y)) + pverts = [] + for pnum in path: + pverts.append((pnum.x, pnum.y)) + isInside = point.InPolygon(pverts, True) + return isInside # True if point p is inside path + + def makescore(self, pt1, pt2, dashlength): + # Draws a dashed line of dashlength between two points + # Dash = dashlength (in inches) space followed by dashlength mark + # if dashlength is zero, we want a solid line + apt1 = inkex.paths.Line(0.0,0.0) + apt2 = inkex.paths.Line(0.0,0.0) + ddash = '' + if math.isclose(dashlength, 0.0): + #inkex.utils.debug("Draw solid dashline") + ddash = ' M '+str(pt1.x)+','+str(pt1.y)+' L '+str(pt2.x)+','+str(pt2.y) + else: + if math.isclose(pt1.y, pt2.y): + #inkex.utils.debug("Draw horizontal dashline") + if pt1.x < pt2.x: + xcushion = pt2.x - dashlength + xpt = pt1.x + ypt = pt1.y + else: + xcushion = pt1.x - dashlength + xpt = pt2.x + ypt = pt2.y + ddash = '' + done = False + while not(done): + if (xpt + dashlength*2) <= xcushion: + xpt = xpt + dashlength + ddash = ddash + ' M ' + str(xpt) + ',' + str(ypt) + xpt = xpt + dashlength + ddash = ddash + ' L ' + str(xpt) + ',' + str(ypt) + else: + done = True + elif math.isclose(pt1.x, pt2.x): + #inkex.utils.debug("Draw vertical dashline") + if pt1.y < pt2.y: + ycushion = pt2.y - dashlength + xpt = pt1.x + ypt = pt1.y + else: + ycushion = pt1.y - dashlength + xpt = pt2.x + ypt = pt2.y + ddash = '' + done = False + while not(done): + if(ypt + dashlength*2) <= ycushion: + ypt = ypt + dashlength + ddash = ddash + ' M ' + str(xpt) + ',' + str(ypt) + ypt = ypt + dashlength + ddash = ddash + ' L ' + str(xpt) + ',' + str(ypt) + else: + done = True + else: + #inkex.utils.debug("Draw sloping dashline") + if pt1.y > pt2.y: + apt1.x = pt1.x + apt1.y = pt1.y + apt2.x = pt2.x + apt2.y = pt2.y + else: + apt1.x = pt2.x + apt1.y = pt2.y + apt2.x = pt1.x + apt2.y = pt1.y + m = (apt1.y-apt2.y)/(apt1.x-apt2.x) + theta = math.atan(m) + msign = (m>0) - (m<0) + ycushion = apt2.y + dashlength*math.sin(theta) + xcushion = apt2.x + msign*dashlength*math.cos(theta) + ddash = '' + xpt = apt1.x + ypt = apt1.y + done = False + while not(done): + nypt = ypt - dashlength*2*math.sin(theta) + nxpt = xpt - msign*dashlength*2*math.cos(theta) + if (nypt >= ycushion) and (((m<0) and (nxpt <= xcushion)) or ((m>0) and (nxpt >= xcushion))): + # move to end of space / beginning of mark + xpt = xpt - msign*dashlength*math.cos(theta) + ypt = ypt - msign*dashlength*math.sin(theta) + ddash = ddash + ' M ' + str(xpt) + ',' + str(ypt) + # draw the mark + xpt = xpt - msign*dashlength*math.cos(theta) + ypt = ypt - msign*dashlength*math.sin(theta) + ddash = ddash + ' L ' + str(xpt) + ',' + str(ypt) + else: + done = True + return ddash + + def detectIntersect(self, x1, y1, x2, y2, x3, y3, x4, y4): + td = (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4) + if td == 0: + # These line segments are parallel + return False + t = ((x1-x3)*(y3-y4)-(y1-y3)*(x3-x4))/td + if (0.0 <= t) and (t <= 1.0): + return True + else: + return False + + def makeTab(self, tpath, pt1, pt2, tabht, taba): + # tpath - the pathstructure containing pt1 and pt2 + # pt1, pt2 - the two points where the tab will be inserted + # tabht - the height of the tab + # taba - the angle of the tab sides + # returns the two tab points in order of closest to pt1 + tpt1 = inkex.paths.Line(0.0,0.0) + tpt2 = inkex.paths.Line(0.0,0.0) + currTabHt = tabht + currTabAngle = taba + testAngle = 1.0 + testHt = currTabHt * 0.001 + adjustTab = 0 + tabDone = False + while not tabDone: + # Let's find out the orientation of the tab + if math.isclose(pt1.x, pt2.x): + # It's vertical. Let's try the right side + if pt1.y < pt2.y: + tpt1.x = pt1.x + testHt + tpt2.x = pt2.x + testHt + tpt1.y = pt1.y + testHt/math.tan(math.radians(testAngle)) + tpt2.y = pt2.y - testHt/math.tan(math.radians(testAngle)) + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.x = pt1.x - currTabHt + tpt2.x = pt2.x - currTabHt + else: + tpt1.x = pt1.x + currTabHt + tpt2.x = pt2.x + currTabHt + tpt1.y = pt1.y + currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.y = pt2.y - currTabHt/math.tan(math.radians(currTabAngle)) + else: # pt2.y < pt1.y + tpt1.x = pt1.x + testHt + tpt2.x = pt2.x + testHt + tpt1.y = pt1.y - testHt/math.tan(math.radians(testAngle)) + tpt2.y = pt2.y + testHt/math.tan(math.radians(testAngle)) + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.x = pt1.x - currTabHt + tpt2.x = pt2.x - currTabHt + else: + tpt1.x = pt1.x + currTabHt + tpt2.x = pt2.x + currTabHt + tpt1.y = pt1.y - currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.y = pt2.y + currTabHt/math.tan(math.radians(currTabAngle)) + elif math.isclose(pt1.y, pt2.y): + # It's horizontal. Let's try the top + if pt1.x < pt2.x: + tpt1.y = pt1.y - testHt + tpt2.y = pt2.y - testHt + tpt1.x = pt1.x + testHt/math.tan(math.radians(testAngle)) + tpt2.x = pt2.x - testHt/math.tan(math.radians(testAngle)) + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.y = pt1.y + currTabHt + tpt2.y = pt2.y + currTabHt + else: + tpt1.y = pt1.y - currTabHt + tpt2.y = pt2.y - currTabHt + tpt1.x = pt1.x + currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.x = pt2.x - currTabHt/math.tan(math.radians(currTabAngle)) + else: # pt2.x < pt1.x + tpt1.y = pt1.y - testHt + tpt2.y = pt2.y - testHt + tpt1.x = pt1.x - testHt/math.tan(math.radians(testAngle)) + tpt2.x = pt2.x + testHt/math.tan(math.radians(testAngle)) + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.y = pt1.y + currTabHt + tpt2.y = pt2.y + currTabHt + else: + tpt1.y = pt1.y - currTabHt + tpt2.y = pt2.y - currTabHt + tpt1.x = pt1.x - currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.x = pt2.x + currTabHt/math.tan(math.radians(currTabAngle)) + + else: # the orientation is neither horizontal nor vertical + # Let's get the slope of the line between the points + # Because Inkscape's origin is in the upper-left corner, + # a positive slope (/) will yield a negative value + slope = (pt2.y - pt1.y)/(pt2.x - pt1.x) + # Let's get the angle to the horizontal + theta = math.degrees(math.atan(slope)) + # Let's construct a horizontal tab + seglength = math.sqrt((pt1.x-pt2.x)**2 +(pt1.y-pt2.y)**2) + if slope < 0.0: + if pt1.x < pt2.x: + tpt1.y = pt1.y - testHt + tpt2.y = pt2.y - testHt + tpt1.x = pt1.x + testHt/math.tan(math.radians(testAngle)) + tpt2.x = pt2.x - testHt/math.tan(math.radians(testAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.y = pt1.y + currTabHt + tpt2.y = pt2.y + currTabHt + else: + tpt1.y = pt1.y - currTabHt + tpt2.y = pt2.y - currTabHt + tpt1.x = pt1.x + currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.x = pt2.x - currTabHt/math.tan(math.radians(currTabAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + else: # pt1.x > pt2.x + tpt1.y = pt1.y - testHt + tpt2.y = pt2.y - testHt + tpt1.x = pt1.x - testHt/math.tan(math.radians(testAngle)) + tpt2.x = pt2.x + testHt/math.tan(math.radians(testAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.y = pt1.y + currTabHt + tpt2.y = pt2.y + currTabHt + else: + tpt1.y = pt1.y - currTabHt + tpt2.y = pt2.y - currTabHt + tpt1.x = pt1.x - currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.x = pt2.x + currTabHt/math.tan(math.radians(currTabAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + else: # slope > 0.0 + if pt1.x < pt2.x: + tpt1.y = pt1.y - testHt + tpt2.y = pt2.y - testHt + tpt1.x = pt1.x + testHt/math.tan(math.radians(testAngle)) + tpt2.x = pt2.x - testHt/math.tan(math.radians(testAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.y = pt1.y + currTabHt + tpt2.y = pt2.y + currTabHt + else: + tpt1.y = pt1.y - currTabHt + tpt2.y = pt2.y - currTabHt + tpt1.x = pt1.x + currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.x = pt2.x - currTabHt/math.tan(math.radians(currTabAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + else: # pt1.x > pt2.x + tpt1.y = pt1.y - testHt + tpt2.y = pt2.y - testHt + tpt1.x = pt1.x - testHt/math.tan(math.radians(testAngle)) + tpt2.x = pt2.x + testHt/math.tan(math.radians(testAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + pnpt1 = inkex.paths.Move(tpt1.x, tpt1.y) + pnpt2 = inkex.paths.Move(tpt2.x, tpt2.y) + if ((not tpath.enclosed) and (self.insidePath(tpath.path, pnpt1) or self.insidePath(tpath.path, pnpt2))) or \ + (tpath.enclosed and ((not self.insidePath(tpath.path, pnpt1)) and (not self.insidePath(tpath.path, pnpt2)))): + tpt1.y = pt1.y + currTabHt + tpt2.y = pt2.y + currTabHt + else: + tpt1.y = pt1.y - currTabHt + tpt2.y = pt2.y - currTabHt + tpt1.x = pt1.x - currTabHt/math.tan(math.radians(currTabAngle)) + tpt2.x = pt2.x + currTabHt/math.tan(math.radians(currTabAngle)) + tl1 = [('M', [pt1.x,pt1.y])] + tl1 += [('L', [tpt1.x, tpt1.y])] + ele1 = inkex.Path(tl1) + tl2 = [('M', [pt1.x,pt1.y])] + tl2 += [('L', [tpt2.x, tpt2.y])] + ele2 = inkex.Path(tl2) + thetal1 = ele1.rotate(theta, [pt1.x,pt1.y]) + thetal2 = ele2.rotate(theta, [pt2.x,pt2.y]) + tpt1.x = thetal1[1].x + tpt1.y = thetal1[1].y + tpt2.x = thetal2[1].x + tpt2.y = thetal2[1].y + # Check to see if any tabs intersect each other + if self.detectIntersect(pt1.x, pt1.y, tpt1.x, tpt1.y, pt2.x, pt2.y, tpt2.x, tpt2.y): + # Found an intersection. + if adjustTab == 0: + # Try increasing the tab angle in one-degree increments + currTabAngle = currTabAngle + 1.0 + if currTabAngle > 88.0: # We're not increasing the tab angle above 89 degrees + adjustTab = 1 + currTabAngle = taba + if adjustTab == 1: + # So, try reducing the tab height in 20% increments instead + currTabHt = currTabHt - tabht*0.2 # Could this lead to a zero tab_height? + if currTabHt <= 0.0: + # Give up + currTabHt = tabht + adjustTab = 2 + if adjustTab == 2: + tabDone = True # Just show the failure + else: + tabDone = True + + return tpt1,tpt2 + + def effect(self): + layer = self.svg.get_current_layer() + scale = self.svg.unittouu('1'+self.options.unit) + polysides = int(self.options.polysides) + poly1size = float(self.options.poly1size) * scale + poly2size = float(self.options.poly2size) * scale + collarht = float(self.options.collarheight) * scale + partcnt = int(self.options.collarparts) + tab_angle = float(self.options.tabangle) + tab_height = float(self.options.tabheight) * scale + dashlength = float(self.options.dashlength) * scale + polylarge = max(poly1size, poly2size) # Larger of the two polygons + polysmall = min(poly1size, poly2size) # Smaller of the two polygons + polysmallR = polysmall/2 + polysmallr = polysmallR*math.cos(math.pi/polysides) + polysmalltabht = tab_height + if polysmallr < polysmalltabht: + polysmalltabht = polysmallr + wpaths = [] + done = 0 + # We go through this loop twice + # First time for the wrapper / decorative strip + # Second time for the model, scorelines, and the lids + while done < 2: + w1 = (polylarge)*(math.sin(math.pi/polysides)) + w2 = (polysmall)*(math.sin(math.pi/polysides)) + if done == 0: + # First time through, init the storage areas + pieces = [] + nodes = [] + nd = [] + for i in range(4): + nd.append(inkex.paths.Line(0.0,0.0)) + else: + # Second time through, empty the storage areas + i = 0 + while i < polysides: + j = 0 + while j < 4: + del pieces[i][0] + j = j + 1 + i = i + 1 + i = 0 + while len(pieces) > 0: + del pieces[0] + i = i + 1 + i = 0 + while i < 4: + del nodes[0] + i = i + 1 + for pn in range(polysides): + nodes.clear() + #what we need here is to skip the rotatation and just move the x and y if there is no difference between the polygon sizes. + #Added by Sue to handle equal polygons + if poly1size == poly2size: + nd[0].x = pn * w1 + nd[0].y = collarht + nd[1].x = nd[0].x + w1 + nd[1].y = nd[0].y + nd[2].x = nd[1].x + nd[2].y = nd[0].y - collarht + nd[3].x = nd[0].x + nd[3].y = nd[2].y + else: + if pn == 0: + nd[3].x = -w2/2 + nd[3].y = (polysmall/2)*math.cos(math.pi/polysides) + nd[0].x = -w1/2 + nd[0].y = (polylarge/2)*math.cos(math.pi/polysides) + vlen = math.sqrt(collarht**2 + (nd[0].y-nd[3].y)**2) + nd[0].y = nd[0].y + (vlen-(nd[0].y-nd[3].y)) + nd[2].x = w2/2 + nd[2].y = nd[3].y + nd[1].x = w1/2 + nd[1].y = nd[0].y + ox,oy = self.findIntersection(nd[0].x,nd[0].y,nd[3].x,nd[3].y,nd[1].x,nd[1].y,nd[2].x,nd[2].y) + Q2 = math.degrees(math.atan((nd[0].y - oy)/(w1/2 - ox))) + Q1 = 90 - Q2 + else: + dl = '' + for j in range(4): + if j == 0: + dl += 'M ' + else: + dl += ' L ' + dl += str(nd[j].x) + ',' + str(nd[j].y) + dl += ' Z' + p1 = inkex.paths.Path(path_d=dl) + p2 = p1.rotate(-2*Q1, (ox,oy)) + for j in range(4): + nd[j].x = p2[j].x + nd[j].y = p2[j].y + for i in range(4): + nodes.append(copy.deepcopy(nd[i])) + pieces.append(copy.deepcopy(nodes)) + dscores = [] + if done == 0: + wpath = pathStruct() # We'll need this for makeTab + wpath.id = "c1" + for pc in range(partcnt): + dwrap = '' # Create the wrapper + dscores.clear() + sidecnt = math.ceil(polysides/partcnt) + if pc == partcnt - 1: + # Last time through creates the remainder of the pieces + sidecnt = polysides - math.ceil(polysides/partcnt)*pc + startpc = pc*math.ceil(polysides/partcnt) + endpc = startpc + sidecnt + for pn in range(startpc, endpc): + # First half + if(pn == startpc): + ppt0 = inkex.paths.Move(pieces[pn][0].x,pieces[pn][0].y) + dwrap +='M '+str(ppt0.x)+','+str(ppt0.y) + # We're also creating wpath for later use in creating the model + wpath.path.append(ppt0) + ppt1 = inkex.paths.Line(pieces[pn][1].x,pieces[pn][1].y) + dwrap +=' L '+str(ppt1.x)+','+str(ppt1.y) + wpath.path.append(ppt1) + if pn < endpc - 1: + # Put scorelines across the collar + ppt2 = inkex.paths.Line(pieces[pn][2].x,pieces[pn][2].y) + spaths = self.makescore(ppt1, ppt2,dashlength) + dscores.append(spaths) + for pn in range(endpc-1, startpc-1, -1): + # Second half + if(pn == (endpc-1)): + ppt2 = inkex.paths.Line(pieces[pn][2].x,pieces[pn][2].y) + dwrap +=' L '+str(pieces[pn][2].x)+','+str(pieces[pn][2].y) + wpath.path.append(inkex.paths.Line(pieces[pn][2].x,pieces[pn][2].y)) + ppt3 = inkex.paths.Line(pieces[pn][3].x,pieces[pn][3].y) + dwrap +=' L '+str(ppt3.x)+','+str(ppt3.y) + wpath.path.append(inkex.paths.Line(pieces[pn][3].x,pieces[pn][3].y)) + dwrap +=' Z' # Close off the wrapper's path + wpath.path.append(ppt0) + if math.isclose(dashlength, 0.0): + # lump together all the score lines + dscore = '' + for dndx in range(len(dscores)): + if dndx == 0: + dscore = dscores[dndx][1:] + else: + dscore += dscores[dndx] + group = inkex.elements._groups.Group() + group.label = 'group'+str(pc)+'ws' + if self.options.generate_decorative_wrapper is True: + self.drawline(dwrap,'wrapper'+str(pc),group,sstr="fill:#ffdddd;stroke:{};stroke-width:0.25".format(self.options.color_solid)) # Output the wrapper + self.drawline(dscore,'score'+str(pc)+'w',group,sstr="fill:#ffdddd;stroke:{};stroke-width:0.25".format(self.options.color_dash)) # Output the scorelines separately + layer.append(group) + else: + # lump together all the score lines with the model + for dndx in dscores: + dwrap = dwrap + dndx + self.drawline(dwrap,'wrapper'+str(pc),layer,sstr="fill:#ffdddd;stroke:{};stroke-width:0.25".format(self.options.color_solid)) # Output the wrapper + wpaths.append(copy.deepcopy(wpath)) + wpath.path.clear() + done = 1 + else: + # Create the model + for pc in range(partcnt): + dprop = '' + dscores.clear() + sidecnt = math.ceil(polysides/partcnt) + if pc == partcnt - 1: + sidecnt = polysides - math.ceil(polysides/partcnt)*pc + startpc = pc*math.ceil(polysides/partcnt) + endpc = startpc + sidecnt + for pn in range(startpc, endpc): + # First half + if pn == startpc: + dprop = 'M '+str(pieces[pn][0].x)+','+str(pieces[pn][0].y) + cpt1 = inkex.paths.Move(pieces[pn][0].x, pieces[pn][0].y) + cpt2 = inkex.paths.Move(pieces[pn][1].x, pieces[pn][1].y) + tabpt1, tabpt2 = self.makeTab(wpaths[pc], cpt1, cpt2, tab_height, tab_angle) + dprop +=' L '+str(tabpt1.x)+','+str(tabpt1.y) + dprop +=' L '+str(tabpt2.x)+','+str(tabpt2.y) + dprop += ' L '+str(pieces[pn][1].x)+','+str(pieces[pn][1].y) + # As long as we're here, create a scoreline along the tab... + spaths = self.makescore(pieces[pn][0], pieces[pn][1],dashlength) + dscores.append(spaths) + # ...and across the collar + spaths = self.makescore(pieces[pn][1], pieces[pn][2],dashlength) + dscores.append(spaths) + for pn in range(endpc-1, startpc-1, -1): + # Second half + if(pn == (endpc-1)): + # Since we're starting on the last piece, put a tab on the end of it, too + cpt1 = inkex.paths.Move(pieces[pn][1].x, pieces[pn][1].y) + cpt2 = inkex.paths.Move(pieces[pn][2].x, pieces[pn][2].y) + tabpt1, tabpt2 = self.makeTab(wpaths[pc], cpt1, cpt2, tab_height, tab_angle) + dprop +=' L '+str(tabpt1.x)+','+str(tabpt1.y) + dprop +=' L '+str(tabpt2.x)+','+str(tabpt2.y) + # Create a scoreline along the tab + #spaths = self.makescore(pieces[pn][1], pieces[pn][2],dashlength) + #dscores.append(spaths) + dprop +=' L '+str(pieces[pn][2].x)+','+str(pieces[pn][2].y) + cpt1 = inkex.paths.Move(pieces[pn][2].x, pieces[pn][2].y) + cpt2 = inkex.paths.Move(pieces[pn][3].x, pieces[pn][3].y) + tabpt1, tabpt2 = self.makeTab(wpaths[pc], cpt1, cpt2, polysmalltabht, tab_angle) + dprop +=' L '+str(tabpt1.x)+','+str(tabpt1.y) + dprop +=' L '+str(tabpt2.x)+','+str(tabpt2.y) + dprop += ' L '+str(pieces[pn][3].x)+','+str(pieces[pn][3].y) + # Create a scoreline along the tab + spaths = self.makescore(pieces[pn][2], pieces[pn][3],dashlength) + dscores.append(spaths) + dprop += ' Z' # Close off the model's path + # lump together all the score lines + dscore = '' + for dndx in range(len(dscores)): + if dndx == 0: + dscore = dscores[dndx][1:] + else: + dscore += dscores[dndx] + group = inkex.elements._groups.Group() + group.label = 'group'+str(pc)+'ms' + self.drawline(dprop,'model'+str(pc),group,sstr='stroke:{};stroke-width:0.25;fill:#eeeeee'.format(self.options.color_solid)) # Output the model + + #self.drawline(dprop,'model'+str(pc),group,sstr=None) # Output the model + #self.drawline(dscore,'score'+str(pc)+'m',group,sstr=None) # Output the scorelines separately + + + if dscore != '': + dscore_style = 'stroke:{};stroke-width:0.25;fill:#eeeeee'.format(self.options.color_dash) + if self.options.cosmetic_dash_style is True: + dscore_style += ';stroke-dasharray:{}'.format(3, 3) + self.drawline(dscore,'score'+str(pc),group,dscore_style) # Output the scorelines separately + + layer.append(group) + + # At this point, we can generate the top and bottom polygons + # r = sidelength/(2*sin(PI/numpoly)) + self.drawline(self.makepoly(w1, polysides),'biglid',layer,sstr=None) # Output the bigger polygon + sp = self.makepoly(w2, polysides) + self.drawline(sp,'smalllid',layer,sstr=None) # Output the smaller polygon + done = 2 + +if __name__ == '__main__': + Collar().run() diff --git a/extensions/fablabchemnitz/color_harmony/.gitignore b/extensions/fablabchemnitz/color_harmony/.gitignore new file mode 100644 index 00000000..cd4c22c4 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/.gitignore @@ -0,0 +1 @@ +*__pycache__* diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony.inx b/extensions/fablabchemnitz/color_harmony/color_harmony.inx new file mode 100644 index 00000000..07578082 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony.inx @@ -0,0 +1,87 @@ + + + Color Harmony + fablabchemnitz.de.color_harmony + + + + + + + + + + + + + + + + 50 + + + + + + + + + + false + false + false + + + false + false + false + + + false + false + false + + + false + + + 0.1 + + 10 + + + + + + + + + true + + + + + + + + + + My Palette + + + + + + + all + + + + + + Generate color harmonies and save as palette file + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony.py b/extensions/fablabchemnitz/color_harmony/color_harmony.py new file mode 100644 index 00000000..4802b486 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony.py @@ -0,0 +1,318 @@ +#!/usr/bin/env python3 + +# Color Harmony - Inkscape extension to generate +# palettes of colors that go well together +# +# Version 0.2 "golem" +# +# Copyright (C) 2009-2018 Ilya Portnov +# (original 'palette-editor' tool, version 0.0.7) +# 2020 Maren Hachmann (extension-ification) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +""" +This extension allows you to automatically add guides to your Inkscape documents. +""" + +#from math import sqrt +#import types +import inkex +from inkex import Group, Rectangle +from inkex.colors import is_color +from color_harmony.colorplus import ColorPlus +from color_harmony.harmonies import * +from color_harmony.shades import * + + +class ColorHarmony(inkex.EffectExtension): + """Generate palettes of colors that go well together""" + + color = '' + + def add_arguments(self, pars): + # General options + pars.add_argument('--tab', default='render', help='Extension functionality to use') # options: render, save, colorize + + # Render tab options + pars.add_argument('--harmony', default="five", help='Color harmony to generate, options: from_raster, just_opposite, split_complementary, three, four, rectangle, five, similar_3, similar_5, similar_and_opposite') + pars.add_argument('--sort', default="by_hue", help="Method to sort the palette by, options: by_hue, by_saturation, by_value, hue_contiguous") + pars.add_argument('--factor', default=50, type=int, help="Factor to affect the result, between 1 and 100. Default is 50. This modifies the angle between the resulting colors on the color wheel.") + pars.add_argument('--size', default=10, help="Size of the generated palette squares") + pars.add_argument('--unit', default='mm', help='Units') # options: mm, cm, in, px, pt, pc + pars.add_argument('--delete_existing', type=inkex.Boolean, help='Delete existing palettes before generating a new one') + + # Shading: cooler, warmer, saturation, value, chroma, luma, hue, hue_luma, luma_plus_chroma, luma_minus_chroma + pars.add_argument( '--cooler', type=inkex.Boolean, help='Add shades with cooler color temperature') + pars.add_argument( '--warmer', type=inkex.Boolean, help='Add shades with warmer color temperature') + pars.add_argument( '--saturation', type=inkex.Boolean, help='Add shades with saturation steps') + pars.add_argument( '--value', type=inkex.Boolean, help='Add shades with value steps') + pars.add_argument( '--chroma', type=inkex.Boolean, help='Add shades with chroma steps') + pars.add_argument( '--luma', type=inkex.Boolean, help='Add shades with luma steps') + pars.add_argument( '--hue', type=inkex.Boolean, help='Add shades with hue steps') + pars.add_argument( '--hue_luma', type=inkex.Boolean, help='Add shades with hue and luma steps') + pars.add_argument( '--luma_plus_chroma', type=inkex.Boolean, help='Add shades with luma plus chroma steps') + pars.add_argument( '--luma_minus_chroma', type=inkex.Boolean, help='Add shades with luma minus chroma steps') + pars.add_argument('--step_width', type=float, default=0.1, help='Shader step width') # TODO: find out what range this can take on, and adjust min, max, default in inx + + # Save tab options + pars.add_argument('--palette_format', default='gimp', help='Palette file format') + # options: gimp, krita, scribus + pars.add_argument('--palette_folder', help="Folder to save the palette file in") + pars.add_argument('--palette_name', help="Name of the palette") + + # Colorize tab options + # no options currently + + + def effect(self): + + if self.options.tab == "render": + + if len(self.svg.selected) == 1: + for obj_id, obj in self.svg.selected.items(): + fill = obj.style.get("fill") + if is_color(fill): + if self.options.delete_existing: + self.delete_existing_palettes() + self.color = ColorPlus(fill) + self.options.factor = self.options.factor/100 + colors = self.create_harmony() + shades = self.create_shades(colors) + palettes = [colors] + shades + + for i in range(len(palettes)): + self.render_palette(palettes[i], i) + else: + raise inkex.AbortExtension( + "Please select an object with a plain fill color.") + else: + raise inkex.AbortExtension( + "Please select one object.") + elif self.options.tab == "save": + palettes = self.get_palettes_in_doc() + if len(palettes) >= 1: + self.save_palette(palettes[0]) + else: + raise inkex.AbortExtension( + "There is no rendered palette in the document. Please render a palette using the first tab of the dialog before you try to save it.") + elif self.options.tab == "colorize": + if len(self.svg.selected) > 0: + self.colorize() + else: + raise inkex.AbortExtension( + "Please select an object to colorize!") + + + # METHODS FOR EACH TAB + # -------------------- + + # Render tab + # ========== + def create_harmony(self): + + harmony_functions = { + "from_raster": self.palette_from_raster, # not implemented yet + "just_opposite": self.opposite, + "split_complementary": self.splitcomplementary, + "three": self.nhues3, + "four": self.nhues4, + "rectangle": self.rectangle, + "five": self.fivecolors, + "similar_3": self.similar_3, + "similar_5": self.similar_5, + "similar_and_opposite": self.similaropposite, + } + + # use appropriate function for the selected tab + colors = harmony_functions[self.options.harmony](self.color) + colors = self.sort_colors(colors) + + return colors + + def render_palette(self, colors, shift): + size = self.svg.unittouu(str(self.options.size)+self.options.unit) + top = 0 + shift * size + left = 0 + + layer = self.svg.get_current_layer() if self.svg.get_current_layer() is not None else self.document.getroot() + + group_attribs = {inkex.addNS('label', 'inkscape'): "Palette ({harmony}, {color}) ".format(color=self.color, harmony=self.options.harmony)} + palette_group = Group(**group_attribs) + + for color in colors: + palette_field = Rectangle(x=str(left), + y=str(top), + width=str(size), + height=str(size)) + palette_field.style = {'fill': color} + palette_group.add(palette_field) + left += size + + palette_group.transform.add_translate(0, self.svg.height + size) + + layer.add(palette_group) + + def palette_from_raster(self, color): + # TODO: implement + return [] + + def opposite(self, color): + colors = opposite(color) + return colors + + def splitcomplementary(self, color): + colors = splitcomplementary(color, self.options.factor) + return colors + + def nhues3(self, color): + colors = nHues(color, 3) + return colors + + def nhues4(self, color): + colors = nHues(color, 4) + return colors + + def rectangle(self, color): + colors = rectangle(color, self.options.factor) + return colors + + def fivecolors(self, color): + colors = fiveColors(color, self.options.factor) + return colors + + def similar_3(self, color): + colors = similar(color, 3, self.options.factor) + return colors + + def similar_5(self, color): + colors = similar(color, 5, self.options.factor) + return colors + + def similaropposite(self, color): + colors = similarAndOpposite(color, self.options.factor) + return colors + + def create_shades(self, colors): + shades = [] + shading_options = { + "cooler": cooler, + "warmer": warmer, + "saturation": saturation, + "value": value, + "chroma": chroma, + "luma": luma, + "hue": hue, + "hue_luma": hue_luma, + "luma_plus_chroma": luma_plus_chroma, + "luma_minus_chroma": luma_minus_chroma, + } + + for option, function in shading_options.items(): + if vars(self.options)[option] == True: + # shades are created per color, + # but we want to get one palette per shading step + shaded_colors = [] + for i in range(len(colors)): + shaded_colors.append(function(colors[i], self.options.step_width)) + + pals = [list(a) for a in zip(*shaded_colors)] + + shades += pals + return shades + + def delete_existing_palettes(self): + """Delete all palettes in the document""" + + for palette in self.get_palettes_in_doc(): + palette.delete() + + # Save tab + # ======== + def save_palette(self, palette): + # TODO: implement + # if not hasattr(self.palette, 'name'): + # if type(file_w) in [str, unicode]: + # self.palette.name = basename(file_w) + # else: + # self.palette.name='Colors' + pass + + + # Colorize tab + # ============ + + def colorize(self): + # TODO: implement + pass + + # HELPER FUNCTIONS + # ---------------- + + def get_palettes_in_doc(self): + palettes = [] + for group in self.svg.findall('.//svg:g'): + if group.get('inkscape:label').startswith('Palette ('): + palettes.append(group) + return palettes + + def sort_colors(self, colors): + if self.options.sort == "by_hue": + colors.sort(key=lambda color: color.to_hsv()[0]) + elif self.options.sort == "by_saturation": + colors.sort(key=lambda color: color.to_hsv()[1]) + elif self.options.sort == "by_value": + colors.sort(key=lambda color: color.to_hsv()[2]) + # this option looks nicer when the palette colors are similar red tones + # some of which have a hue close to 0 + # and some of which have a hue close to 1 + elif self.options.sort == "hue_contiguous": + # sort by hue first + colors.sort(key=lambda color: color.to_hsv()[0]) + # now find out if the hues are maybe clustered around the 0 - 1 boundary + hues = [color.to_hsv()[0] for color in colors] + start_hue = 0 + end_hue = 0 + max_dist = 0 + for i in range(len(colors)-1): + h1 = hues[i] + h2 = hues[i+1] + cur_dist = h2-h1 + if cur_dist > max_dist and self.no_colors_in_between(h1, h2, hues): + max_dist = cur_dist + start_hue = h2 + for i in range(len(colors)): + sorting_hue = hues[i] - start_hue + if sorting_hue > 1: + sorting_hue -=1 + elif sorting_hue < 0: + sorting_hue += 1 + hues[i] = sorting_hue + sorted_colors = [color for hue, color in sorted(zip(hues,colors))] + colors = sorted_colors + else: + raise inkex.AbortExtension( + "Please select one of the following sorting options: by_hue, by_saturation, by_value.") + return colors + + def no_colors_in_between(self, hue1, hue2, hues): + for hue in hues: + if hue > hue1 and hue < hue2: + return False + return True + +if __name__ == '__main__': + ColorHarmony().run() diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/__init__.py b/extensions/fablabchemnitz/color_harmony/color_harmony/__init__.py new file mode 100644 index 00000000..1bb8bf6d --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/__init__.py @@ -0,0 +1 @@ +# empty diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/colorplus.py b/extensions/fablabchemnitz/color_harmony/color_harmony/colorplus.py new file mode 100644 index 00000000..d9579c77 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/colorplus.py @@ -0,0 +1,260 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copyright (C) 2009-2018 Ilya Portnov +# (original 'palette-editor' tool, version 0.0.7) +# 2020 Maren Hachmann (extension-ification) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +from math import cos, acos, sqrt, pi +import colorsys +from inkex.colors import Color + +_HCY_RED_LUMA = 0.299 +_HCY_GREEN_LUMA = 0.587 +_HCY_BLUE_LUMA = 0.114 + +class ColorPlus(Color): + + #HCYwts = 0.299, 0.587, 0.114 + + ## HCY colour space. + # + # Copy&Paste from https://raw.githubusercontent.com/mypaint/mypaint/master/gui/colors/uicolor.py + # Copyright (C) 2012-2013 by Andrew Chadwick + # + + # Frequently referred to as HSY, Hue/Chroma/Luma, HsY, HSI etc. It can be + # thought of as a cylindrical remapping of the YCbCr solid: the "C" term is the + # proportion of the maximum permissible chroma within the RGB gamut at a given + # hue and luma. Planes of constant Y are equiluminant. + # + # ref https://code.google.com/p/colour-space-viewer/ + # ref git://anongit.kde.org/kdelibs in kdeui/colors/kcolorspaces.cpp + # ref http://blog.publicfields.net/2011/12/rgb-hue-saturation-luma.html + # ref Joblove G.H., Greenberg D., Color spaces for computer graphics. + # ref http://www.cs.rit.edu/~ncs/color/t_convert.html + # ref http://en.literateprograms.org/RGB_to_HSV_color_space_conversion_(C) + # ref http://lodev.org/cgtutor/color.html + # ref Levkowitz H., Herman G.T., "GLHS: a generalized lightness, hue, and + # saturation color model" + + # For consistency, use the same weights that the Color and Luminosity layer + # blend modes use, as also used by brushlib's Colorize brush blend mode. We + # follow http://www.w3.org/TR/compositing/ here. BT.601 YCbCr has a nearly + # identical definition of luma. + + def __init__(self, color=None, space='rgb'): + super().__init__(color) + + def to_hcy(self): + """RGB → HCY: R,G,B,H,C,Y ∈ [0, 1] + + :param rgb: Color expressed as an additive RGB triple. + :type rgb: tuple (r, g, b) where 0≤r≤1, 0≤g≤1, 0≤b≤1. + :rtype: tuple (h, c, y) where 0≤h<1, but 0≤c≤2 and 0≤y≤1. + + """ + r, g, b = self.to_floats() + + # Luma is just a weighted sum of the three components. + y = _HCY_RED_LUMA*r + _HCY_GREEN_LUMA*g + _HCY_BLUE_LUMA*b + + # Hue. First pick a sector based on the greatest RGB component, then add + # the scaled difference of the other two RGB components. + p = max(r, g, b) + n = min(r, g, b) + d = p - n # An absolute measure of chroma: only used for scaling. + if n == p: + h = 0.0 + elif p == r: + h = (g - b)/d + if h < 0: + h += 6.0 + elif p == g: + h = ((b - r)/d) + 2.0 + else: # p==b + h = ((r - g)/d) + 4.0 + h /= 6.0 + + # Chroma, relative to the RGB gamut envelope. + if r == g == b: + # Avoid a division by zero for the achromatic case. + c = 0.0 + else: + # For the derivation, see the GLHS paper. + c = max((y-n)/y, (p-y)/(1-y)) + return h, c, y + + @staticmethod + def from_hcy(h, c, y): + """HCY → RGB: R,G,B,H,C,Y ∈ [0, 1] + + :param hcy: Color expressed as a Hue/relative-Chroma/Luma triple. + :type hcy: tuple (h, c, y) where 0≤h<1, but 0≤c≤2 and 0≤y≤1. + :rtype: ColorPlus object. + + >>> n = 32 + >>> diffs = [sum( [abs(c1-c2) for c1, c2 in + ... zip( HCY_to_RGB(RGB_to_HCY([r/n, g/n, b/n])), + ... [r/n, g/n, b/n] ) ] ) + ... for r in range(int(n+1)) + ... for g in range(int(n+1)) + ... for b in range(int(n+1))] + >>> sum(diffs) < n*1e-6 + True + + """ + + if c == 0: + return y, y, y + + h %= 1.0 + h *= 6.0 + if h < 1: + #implies (p==r and h==(g-b)/d and g>=b) + th = h + tm = _HCY_RED_LUMA + _HCY_GREEN_LUMA * th + elif h < 2: + #implies (p==g and h==((b-r)/d)+2.0 and b=g) + th = h - 2.0 + tm = _HCY_GREEN_LUMA + _HCY_BLUE_LUMA * th + elif h < 4: + #implies (p==b and h==((r-g)/d)+4.0 and r=g) + th = h - 4.0 + tm = _HCY_BLUE_LUMA + _HCY_RED_LUMA * th + else: + #implies (p==r and h==(g-b)/d and g= y: + p = y + y*c*(1-tm)/tm + o = y + y*c*(th-tm)/tm + n = y - (y*c) + else: + p = y + (1-y)*c + o = y + (1-y)*c*(th-tm)/(1-tm) + n = y - (1-y)*c*tm/(1-tm) + + # Back to RGB order + if h < 1: r, g, b = p, o, n + elif h < 2: r, g, b = o, p, n + elif h < 3: r, g, b = n, p, o + elif h < 4: r, g, b = n, o, p + elif h < 5: r, g, b = o, n, p + else: r, g, b = p, n, o + + return ColorPlus([255*r, 255*g, 255*b]) + + def to_hsv(self): + r, g, b = self.to_floats() + eps = 0.001 + if abs(max(r,g,b)) < eps: + return (0,0,0) + return colorsys.rgb_to_hsv(r, g, b) + + @staticmethod + def from_hsv(h, s, v): + r, g, b = colorsys.hsv_to_rgb(h, s, v) + return ColorPlus([255*r, 255*g, 255*b]) + + # TODO: everything below is not updated yet, maybe not really needed + def hex(self): + r,g,b = self.getRGB() + return "#{:02x}{:02x}{:02x}".format(r,g,b) + + def getRgbString(self): + r,g,b = self.getRGB() + return "rgb({}, {}, {})".format(r,g,b) + + def getHsvString(self): + h,s,v = self.getHSV() + return "hsv({}, {}, {})".format(h,s,v) + + def invert(self): + r, g, b = self._rgb + return Color(255-r, 255-g, 255-b) + + def darker(clr, q): + h,s,v = clr.getHSV() + v = clip(v-q) + return hsv(h,s,v) + + def lighter(clr, q): + h,s,v = clr.getHSV() + v = clip(v+q) + return hsv(h,s,v) + + def saturate(clr, q): + h,s,v = clr.getHSV() + s = clip(s+q) + return hsv(h,s,v) + + def desaturate(clr, q): + h,s,v = clr.getHSV() + s = clip(s-q) + return hsv(h,s,v) + + def increment_hue(clr, q): + h,s,v = clr.getHSV() + h += q + if h > 1.0: + h -= 1.0 + if h < 1.0: + h += 1.0 + return hsv(h,s,v) + + def contrast(clr, q): + h,s,v = clr.getHSV() + v = (v - 0.5)*(1.0 + q) + 0.5 + v = clip(v) + return hsv(h,s,v) + + def linear(x, y, q): + return (1.-q)*x + q*y + + def linear3(v1, v2, q): + x1, y1, z1 = v1 + x2, y2, z2 = v2 + return (linear(x1, x2, q), linear(y1, y2, q), linear(z1, z2, q)) + + def circular(h1, h2, q, circle=1.0): + #print("Src hues: "+ str((h1, h2))) + d = h2 - h1 + if h1 > h2: + h1, h2 = h2, h1 + d = -d + q = 1.0 - q + if d > circle/2.0: + h1 = h1 + circle + h = linear(h1, h2, q) + else: + h = h1 + q*d + if h >= circle: + h -= circle + #print("Hue: "+str(h)) + return h diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/export.py b/extensions/fablabchemnitz/color_harmony/color_harmony/export.py new file mode 100644 index 00000000..a391d5fe --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/export.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copyright (C) 2009-2018 Ilya Portnov +# (original 'palette-editor' tool, version 0.0.7) +# 2020 Maren Hachmann (extension-ification) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +from os.path import join, basename +from lxml import etree as ET +from zipfile import ZipFile, ZIP_DEFLATED + + +class PaletteFile(object) + + def __init__(self, name, colors, filename, folder): + self.colors = colors + if name != "": + self.name = name + else: + self.name = "Palette" + self.folder = folder + + def save(self, format): + FORMATS = {'gimp': [build_gpl, 'gpl'], + 'scribus': [build_scribus_xml, 'xml'], + 'krita': [build_kpl, 'kpl'], + 'css': [build_css, 'css'], + 'android_xml': [build_android_xml, 'xml'], + } + + if os.path.exists(self.folder): + # save with given file name + pass + + def build_gpl(self): + # TODO: fix + palette_string = (u"Name: {}\n".format(self.palette.name).encode('utf-8')) + if hasattr(self.palette, 'ncols') and self.palette.ncols: + palette_string += 'Columns: %s\n' % self.palette.ncols + for key,value in self.palette.meta.items(): + if key != "Name": + palette_string += u"# {}: {}\n".format(key, value).encode('utf-8') + palette_string += '#\n' + for row in self.palette.slots: + for slot in row: + n = slot.name + r, g, b = slot.color.getRGB() + s = '%d %d %d %s\n' % (r, g, b, n) + palette_string += s + for key,value in slot.color.meta.items(): + if key != "Name": + palette_string += u"# {}: {}\n".format(key, value).encode('utf-8') + return palette_string + + def build_kpl(self): + # TODO: fix (and don't save it here, only build) + with ZipFile(file_w, 'w', ZIP_DEFLATED) as zf: + zf.writestr("mimetype", MIMETYPE) + + xml = ET.Element("Colorset") + xml.attrib['version'] = '1.0' + xml.attrib['columns'] = str(self.palette.ncols) + xml.attrib['name'] = self.palette.name + xml.attrib['comment'] = self.palette.meta.get("Comment", "Generated by Palette Editor") + + for i,row in enumerate(self.palette.slots): + for j,slot in enumerate(row): + color = slot.color + name = color.name + default_name = "Swatch-{}-{}".format(i,j) + if not name: + name = default_name + + elem = ET.SubElement(xml, "ColorSetEntry") + elem.attrib['spot'] = color.meta.get("Spot", "false") + elem.attrib['id'] = default_name + elem.attrib['name'] = name + elem.attrib['bitdepth'] = 'U8' + + r,g,b = color.getRGB1() + srgb = ET.SubElement(elem, "sRGB") + srgb.attrib['r'] = str(r) + srgb.attrib['g'] = str(g) + srgb.attrib['b'] = str(b) + + tree = ET.ElementTree(xml) + tree_str = ET.tostring(tree, encoding='utf-8', pretty_print=True, xml_declaration=False) + + zf.writestr("colorset.xml", tree_str) + + def build_scribus_xml(self): + # TODO: fix, and don't save here + xml = ET.Element("SCRIBUSCOLORS", NAME=name) + + for i,row in enumerate(self.palette.getColors()): + for j,color in enumerate(row): + name = color.name + if not name: + name = "Swatch-{}-{}".format(i,j) + elem = ET.SubElement(xml, "COLOR", NAME=name, RGB=color.hex()) + if "Spot" in color.meta: + elem.attrib["Spot"] = color.meta["Spot"] + if "Register" in color.meta: + elem.attrib["Register"] = color.meta["Register"] + + ET.ElementTree(xml).write(file_w, encoding="utf-8", pretty_print=True, xml_declaration=True) + + def build_android_xml(self): + # https://stackoverflow.com/questions/3769762/web-colors-in-an-android-color-xml-resource-file + palette_string = '' + # TODO: implement + return palette_string + + def build_css(self): + palette_string = '' + + # TODO: fix + for i, row in enumerate(self.palette.slots): + for j, slot in enumerate(row): + hex = slot.color.hex() + s = ".color-{}-{}{} {{ color: {} }};\n".format(i,j, user, hex) + palette_string += s + + return palette_string diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/harmonies.py b/extensions/fablabchemnitz/color_harmony/color_harmony/harmonies.py new file mode 100644 index 00000000..0f896806 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/harmonies.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copyright (C) 2009-2018 Ilya Portnov +# (original 'palette-editor' tool, version 0.0.7) +# 2020 Maren Hachmann (extension-ification) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from math import sqrt, sin, cos +from color_harmony.colorplus import ColorPlus +from color_harmony.utils import seq, circle_hue + + +# Each of these functions takes one ColorPlus object +# and returns a list of ColorPlus objects: +__all__ = ['opposite', 'splitcomplementary', 'similar', 'similarAndOpposite', 'rectangle', 'nHues', 'fiveColors'] + +# Harmony functions +# 180° rotation +def opposite(color): + h, s, v = color.to_hsv() + h = h + 0.5 + if h > 1.0: + h -= 1.0 + return [color, ColorPlus.from_hsv(h, s, v)] + +# default value 0.5 corresponds to +-36° deviation from opposite, max. useful value: 89°, min. useful value: 1° +def splitcomplementary(color, parameter=0.5): + h, s, v = color.to_hsv() + h += (1.0 - 0.4*parameter)/2.0 + if h > 1.0: + h -= 1.0 + c1 = ColorPlus.from_hsv(h,s,v) + h += 0.4*parameter + if h > 1.0: + h -= 1.0 + c2 = ColorPlus.from_hsv(h,s,v) + return [color, c1, c2] + +# default value 0.5 corresponds to 36° per step, max. useful value: 360°/n , min. useful value: 1° +def similar(color, n, parameter=0.5): + h, s, v = color.to_hsv() + step = 0.2 * parameter + hmin = h - (n // 2) * step + hmax = h + (n // 2) * step + return [ColorPlus.from_hsv(dh % 1.0, s, v) for dh in seq(hmin, hmax, step)] + +# default value 0.5 corresponds to 36° deviation from original, max. useful value: 178°, min. useful value: 1° +def similarAndOpposite(color, parameter=0.5): + h, c, y = color.to_hcy() + h1 = h + 0.2 * parameter + if h1 > 1.0: + h1 -= 1.0 + h2 = h - 0.2 * parameter + if h2 < 0.0: + h2 += 1.0 + h3 = h + 0.5 + if h3 > 1.0: + h3 -= 1.0 + return [ColorPlus.from_hcy(h1,c,y), + color, + ColorPlus.from_hcy(h2,c,y), + ColorPlus.from_hcy(h3,c,y)] + +# default value 0.5 corresponds to 36° deviation from original, max. useful angle 180°, min. useful angle 1° +def rectangle(color, parameter=0.5): + h, c, y = color.to_hcy() + h1 = (h + 0.2 * parameter) % 1.0 + h2 = (h1 + 0.5) % 1.0 + h3 = (h + 0.5) % 1.0 + return [color, + ColorPlus.from_hcy(h1,c,y), + ColorPlus.from_hcy(h2,c,y), + ColorPlus.from_hcy(h3,c,y)] + +# returns n colors that are placed on the hue circle in steps of 360°/n +def nHues(color, n): + h, s, v = color.to_hsv() + return [color] + [ColorPlus.from_hsv(circle_hue(i, n, h), s, v) for i in range(1, n)] + +# parameter determines +/- deviation from a the hues +/-120° away, default value 0.5 corresponds to 2.16°, max. possible angle 4.32° +def fiveColors(color, parameter=0.5): + h0, s, v = color.to_hsv() + h1s = (h0 + 1.0/3.0) % 1.0 + h2s = (h1s + 1.0/3.0) % 1.0 + delta = 0.06 * parameter + h1 = (h1s - delta) % 1.0 + h2 = (h1s + delta) % 1.0 + h3 = (h2s - delta) % 1.0 + h4 = (h2s + delta) % 1.0 + return [color] + [ColorPlus.from_hsv(h,s,v) for h in [h1,h2,h3,h4]] diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/matching/__init__.py b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/__init__.py new file mode 100644 index 00000000..1bb8bf6d --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/__init__.py @@ -0,0 +1 @@ +# empty diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/matching/matching.py b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/matching.py new file mode 100644 index 00000000..44745f05 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/matching.py @@ -0,0 +1,117 @@ + +from color.colors import * +from color.spaces import * + +def find_min(idx, occupied, d): + best_i = None + best_y = None + best_clr = None + for i, clr in d.iteritems(): + if i in occupied: + continue + y = clr[idx] + if best_y is None or y < best_y: + best_i = i + best_y = y + best_clr = clr + if best_y is not None: + return best_i + for i, clr in d.iteritems(): + y = clr[idx] + if best_y is None or y < best_y: + best_i = i + best_y = y + best_clr = clr + assert best_i is not None + return best_i + +def find_max(idx, occupied, d): + best_i = None + best_y = None + best_clr = None + for i, clr in d.iteritems(): + if i in occupied: + continue + y = clr[idx] + if best_y is None or y > best_y: + best_i = i + best_y = y + best_clr = clr + if best_y is not None: + return best_i + for i, clr in d.iteritems(): + y = clr[idx] + if best_y is None or y > best_y: + best_i = i + best_y = y + best_clr = clr + assert best_i is not None + return best_i + +def match_colors(colors1, colors2): + hsvs1 = dict(enumerate([c.getHCY() for c in colors1 if c is not None])) + hsvs2 = dict(enumerate([c.getHCY() for c in colors2 if c is not None])) + occupied = [] + result = {} + while len(hsvs1.keys()) > 0: + # Darkest of SVG colors + darkest1_i = find_min(2, [], hsvs1) + # Darkest of palette colors + darkest2_i = find_min(2, occupied, hsvs2) + hsvs1.pop(darkest1_i) + occupied.append(darkest2_i) + result[darkest1_i] = darkest2_i + if not hsvs1: + break + + # Lightest of SVG colors + lightest1_i = find_max(2, [], hsvs1) + # Lightest of palette colors + lightest2_i = find_max(2, occupied, hsvs2) + hsvs1.pop(lightest1_i) + occupied.append(lightest2_i) + result[lightest1_i] = lightest2_i + if not hsvs1: + break + + # Less saturated of SVG colors + grayest1_i = find_min(1, [], hsvs1) + # Less saturated of palette colors + grayest2_i = find_min(1, occupied, hsvs2) + hsvs1.pop(grayest1_i) + occupied.append(grayest2_i) + result[grayest1_i] = grayest2_i + if not hsvs1: + break + + # Most saturated of SVG colors + saturated1_i = find_max(1, [], hsvs1) + # Most saturated of palette colors + saturated2_i = find_max(1, occupied, hsvs2) + hsvs1.pop(saturated1_i) + occupied.append(saturated2_i) + result[saturated1_i] = saturated2_i + if not hsvs1: + break + + redest1_i = find_min(0, [], hsvs1) + redest2_i = find_min(0, occupied, hsvs2) + hsvs1.pop(redest1_i) + occupied.append(redest2_i) + result[redest1_i] = redest2_i + if not hsvs1: + break + + bluest1_i = find_max(0, [], hsvs1) + bluest2_i = find_max(0, occupied, hsvs2) + hsvs1.pop(bluest1_i) + occupied.append(bluest2_i) + result[bluest1_i] = bluest2_i + + clrs = [] + for i in range(len(result.keys())): + j = result[i] + clrs.append(colors2[j]) + return clrs + + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg.py b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg.py new file mode 100644 index 00000000..b57d6047 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg.py @@ -0,0 +1,96 @@ + +import re +from lxml import etree + +from color import colors + +SVG_NS="http://www.w3.org/2000/svg" + +color_re = re.compile("#[0-9a-fA-F]+") + +def walk(processor, element): + for child in element.iter(): + processor(child) + +class Collector(object): + def __init__(self): + self.colors = {} + self.n = 0 + + def _parse(self, string): + xs = string.split(";") + single = len(xs) == 1 + + result = {} + for x in xs: + ts = x.split(":") + if len(ts) < 2: + if single: + return None + else: + continue + key, value = ts[0], ts[1] + result[key] = value + return result + + def _merge(self, attr): + if type(attr) == str: + return attr + result = "" + for key in attr: + value = attr[key] + result += key + ":" + value + ";" + return result + + def _is_color(self, val): + return color_re.match(val) is not None + + def _remember_color(self, color): + if color not in self.colors: + self.colors[color] = self.n + self.n += 1 + n = self.colors[color] + return "${color%s}" % n + + def _process_attr(self, value): + d = self._parse(value) + if d is None: + if self._is_color(value): + return self._remember_color(value) + else: + return value + elif type(d) == dict: + for attr in ['fill', 'stroke', 'stop-color']: + if (attr in d) and self._is_color(d[attr]): + color = d[attr] + d[attr] = self._remember_color(color) + return self._merge(d) + else: + if self._is_color(value): + return self._remember_color(value) + else: + return value + + def process(self, element): + for attr in ['fill', 'stroke', 'style', 'pagecolor', 'bordercolor']: + if attr in element.attrib: + value = element.get(attr) + element.set(attr, self._process_attr(value)) + + def result(self): + return self.colors + +def read_template(filename): + xml = etree.parse(filename) + collector = Collector() + walk(collector.process, xml.getroot()) + svg = etree.tostring(xml, encoding='utf-8', xml_declaration=True, pretty_print=True) + #open("last_template.svg",'w').write(svg) + color_dict = collector.result() + colors_inv = dict((v,k) for k, v in color_dict.iteritems()) + svg_colors = [] + for key in range(len(colors_inv.keys())): + clr = colors_inv[key] + svg_colors.append( colors.fromHex(clr) ) + return svg_colors, svg + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg_widget.py b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg_widget.py new file mode 100644 index 00000000..321aa280 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg_widget.py @@ -0,0 +1,135 @@ + +from string import Template +from PyQt4 import QtGui, QtSvg, QtCore + +from color.colors import * +from color.spaces import * +import svg, transform, matching + +class SvgTemplateWidget(QtSvg.QSvgWidget): + template_loaded = QtCore.pyqtSignal() + colors_matched = QtCore.pyqtSignal() + file_dropped = QtCore.pyqtSignal(unicode) + + def __init__(self, *args): + QtSvg.QSvgWidget.__init__(self, *args) + self.setAcceptDrops(True) + self._colors = [Color(i*10,i*10,i*10) for i in range(20)] + self._template = None + self._template_filename = None + self._svg = None + self._need_render = True + self._svg_colors = None + self._dst_colors = None + self._last_size = None + + def sizeHint(self): + if self.renderer().isValid(): + return self.renderer().defaultSize() + elif self._last_size: + return self._last_size + else: + return QtCore.QSize(300,300) + + + def dragEnterEvent(self, event): + if event.mimeData().hasUrls(): + event.acceptProposedAction() + + def dropEvent(self, event): + if event.mimeData().hasUrls(): + urls = event.mimeData().urls() + path = unicode( urls[0].path() ) + self.file_dropped.emit(path) + + def _get_color(self, i): + if i < len(self._colors): + return self._colors[i] + else: + return Color(i*10, i*10, i*10) + + def _update(self): + arr = QtCore.QByteArray.fromRawData(self.get_svg()) + print("Data loaded: {} bytes".format(arr.length())) + self.load(arr) + if self.renderer().isValid(): + self._last_size = self.renderer().defaultSize() + self.update() + + def _get_image(self): + w,h = self.size().width(), self.size().height() + image = QtGui.QImage(w, h, QtGui.QImage.Format_ARGB32_Premultiplied) + image.fill(0) + qp = QtGui.QPainter() + qp.begin(image) + self.renderer().render(qp, QtCore.QRectF(0.0, 0.0, w, h)) + qp.end() + return image + + def loadTemplate(self, filename): + self._template_filename = filename + self._svg_colors, self._template = svg.read_template(filename) + print("Source SVG colors:") + for c in self._svg_colors: + print str(c) + print("Template loaded: {}: {} bytes".format(filename, len(self._template))) + self._need_render = True + self._update() + self.template_loaded.emit() + + def set_color(self, idx, color): + self._colors[idx] = color + self._need_render = True + self._update() + + def setColors(self, dst_colors, space=HCY): + if not dst_colors: + return + print("Matching colors in space: {}".format(space)) + self._dst_colors = dst_colors + self._colors = transform.match_colors(space, self._svg_colors, dst_colors) + #self._colors = matching.match_colors(self._svg_colors, dst_colors) + self._need_render = True + self._update() + self.colors_matched.emit() + + def resetColors(self): + self.load(self._template_filename) + self.repaint() + + def get_svg_colors(self): + return self._svg_colors + + def get_dst_colors(self): + return self._colors + + def get_svg(self): + if self._svg is not None and not self._need_render: + return self._svg + else: + self._svg = self._render() + self._need_render = False + return self._svg + + def _render(self): + #d = dict([("color"+str(i), color.hex() if color is not None else Color(255,255,255)) for i, color in enumerate(self._colors)]) + d = ColorDict(self._colors) + #self._image = self._get_image() + return Template(self._template).substitute(d) + +class ColorDict(object): + def __init__(self, colors): + self._colors = colors + + def __getitem__(self, key): + if key.startswith("color"): + n = int( key[5:] ) + if n < len(self._colors): + return self._colors[n].hex() + else: + return "#ffffff" + else: + raise KeyError(key) + + + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/matching/transform.py b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/transform.py new file mode 100644 index 00000000..55a55e93 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/matching/transform.py @@ -0,0 +1,241 @@ +#!/usr/bin/python3 + +# -y11+a13*x13+a12*x12+a11*x11+b1 +# -y12+a23*x13+a22*x12+a21*x11+b2 +# -y13+a33*x13+a32*x12+a31*x11+b3 +# -y21+a13*x23+a12*x22+a11*x21+b1 +# -y22+a23*x23+a22*x22+a21*x21+b2 +# -y23+a33*x23+a32*x22+a31*x21+b3 +# -y31+a13*x33+a12*x32+a11*x31+b1 +# -y32+a23*x33+a22*x32+a21*x31+b2 +# -y33+a33*x33+a32*x32+a31*x31+b3 +# -y41+a13*x43+a12*x42+a11*x41+b1 +# -y42+a23*x43+a22*x42+a21*x41+b2 +# -y43+a33*x43+a32*x42+a31*x41+b3 + +from math import sqrt +import itertools +import numpy as np +from numpy.linalg import solve, det +from numpy.linalg.linalg import LinAlgError +from copy import deepcopy as copy +from PyQt4 import QtGui + +from color.colors import * +from color.spaces import * + +def get_A(x): + return np.array([[x[0][0], x[0][1], x[0][2], 0, 0, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 0, x[0][0], x[0][1], x[0][2], 0, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 0, 0, x[0][0], x[0][1], x[0][2], 0, 0, 1], + [x[1][0], x[1][1], x[1][2], 0, 0, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 0, x[1][0], x[1][1], x[1][2], 0, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 0, 0, x[1][0], x[1][1], x[1][2], 0, 0, 1], + [x[2][0], x[2][1], x[2][2], 0, 0, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 0, x[2][0], x[2][1], x[2][2], 0, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 0, 0, x[2][0], x[2][1], x[2][2], 0, 0, 1], + [x[3][0], x[3][1], x[3][2], 0, 0, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 0, x[3][0], x[3][1], x[3][2], 0, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 0, 0, x[3][0], x[3][1], x[3][2], 0, 0, 1] ]) + +def get_B(y): + return np.array([[y[0][0]], [y[0][1]], [y[0][2]], + [y[1][0]], [y[1][1]], [y[1][2]], + [y[2][0]], [y[2][1]], [y[2][2]], + [y[3][0]], [y[3][1]], [y[3][2]] ]) + +def color_row(space, color): + x1,x2,x3 = space.getCoords(color) + return np.array([x1,x2,x3]) + +def color_column(space, color): + x1,x2,x3 = space.getCoords(color) + return np.array([[x1],[x2],[x3]]) + +def colors_array(space, *colors): + return np.array([color_row(space, c) for c in colors]) + +def find_transform_colors(space, cx1, cx2, cx3, cx4, cy1, cy2, cy3, cy4): + x = colors_array(space, cx1, cx2, cx3, cx4) + y = colors_array(space, cy1, cy2, cy3, cy4) + return find_transform(x,y) + +def find_transform(x, y): + #print("X:\n"+str(x)) + #print("Y:\n"+str(y)) + m = solve(get_A(x), get_B(y)) + a = np.array([[m[0][0], m[1][0], m[2][0]], + [m[3][0], m[4][0], m[5][0]], + [m[6][0], m[7][0], m[8][0]]]) + b = np.array([[m[9][0]], [m[10][0]], [m[11][0]]]) + return (a, b) + +def transform_colors(space, a, b, cx): + x = color_column(space, cx) + y = a.dot(x) + b + #print("X: " + str(x)) + #print("Y: " + str(y)) + return space.fromCoords(y[0][0], y[1][0], y[2][0]) + +def transform(a, b, x): + #print(type(x)) + return a.dot(x[:,None]) + b + +def rhoC(space, color1, color2): + x1,y1,z1 = space.getCoords(color1) + x2,y2,z2 = space.getCoords(color2) + return sqrt((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2) + +def rho(c1, c2): + x1,y1,z1 = c1[0], c1[1], c1[2] + x2,y2,z2 = c2[0], c2[1], c2[2] + return sqrt((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2) + +def get_center(points): + zero = np.array([0,0,0]) + return sum(points, zero) / float(len(points)) + +def get_center_color(space, colors): + zero = np.array([0,0,0]) + points = [space.getCoords(c) for c in colors] + center = sum(points, zero) / float(len(points)) + c1,c2,c3 = center[0], center[1], center[2] + return space.fromCoords((c1,c2,c3)) + +def get_nearest(x, occupied, points): + min_rho = None + min_p = None + for p in points: + if any([(p == o).all() for o in occupied]): + continue + r = rho(x,p) + if min_rho is None or r < min_rho: + min_rho = r + min_p = p + if min_p is not None: + occupied.append(min_p) + #print("Now occupied : " + str(x)) + return min_p + #print("Was occupied : " + str(x)) + for p in points: + r = rho(x,p) + if min_rho is None or r < min_rho: + min_rho = r + min_p = p + return min_p + +def get_nearest_color(space, occupied, cx, colors): + points = [space.getCoords(c) for c in colors] + cy = get_nearest(space.getCoords(cx), occupied, points) + return space.fromCoords((cy[0], cy[1], cy[2])) + +def exclude(lst, x): + return [p for p in lst if not (p == x).all()] + +def get_farest(points): + #center = get_center(points) + #print(str(center)) + points_ = copy(points) + darkest = min(points_, key = lambda p: p[2]) + points_ = exclude(points_, darkest) + lightest = max(points_, key = lambda p: p[2]) + points_ = exclude(points_, lightest) + grayest = min(points_, key = lambda p: p[1]) + points_ = exclude(points_, grayest) + most_saturated = max(points_, key = lambda p: p[1]) + return [darkest, lightest, grayest, most_saturated] + #srt = sorted(points, key = lambda c: -rho(center, c)) + #return srt[:4] + +def get_farest_colors(space, colors): + points = [space.getCoords(c) for c in colors] + farest = get_farest(points) + return [space.fromCoords(c) for c in farest] + +def match_colors_(space, colors1, colors2): + try: + points1 = [color_row(space, c) for c in colors1 if c is not None] + points2 = [color_row(space, c) for c in colors2 if c is not None] + farest1 = get_farest(points1) + farest2 = get_farest(points2) + a, b = find_transform(farest1, farest2) + #print("A:\n" + str(a)) + #print("B:\n" + str(b)) + print("Matching colors:") + for p1, p2 in zip(farest1, farest2): + print(" {} -> {}".format(p1,p2)) + transformed = [transform(a, b, x) for x in points1] + occupied = [] + matched = [] + for x in transformed: + y = get_nearest(x, occupied, points2) + matched.append(y) + return [space.fromCoords(x) for x in matched] + except LinAlgError as e: + print e + return colors1 + +def match_colors(space, colors1, colors2): + points1 = [color_row(space, c) for c in colors1 if c is not None] + points2 = [color_row(space, c) for c in colors2 if c is not None] + c1 = get_center(points1) + c2 = get_center(points2) + #print c1, c2 + print("Centers difference: {}".format(c2-c1)) + szs1 = np.vstack([abs(c1-p) for p in points1]).max(axis=0) + szs2 = np.vstack([abs(c2-p) for p in points2]).max(axis=0) + if (szs1 == 0).any(): + zoom = np.array([1,1,1]) + else: + zoom = szs2 / szs1 + print("Scale by axes: {}".format(zoom)) + transformed = [(p-c1)*zoom + c2 for p in points1] + occupied = [] + matched = [] + deltas = [] + for x in transformed: + y = get_nearest(x, occupied, points2) + matched.append(y) + deltas.append(abs(y-x)) + delta = np.vstack(deltas).max(axis=0) + print("Maximum deltas from affine transformed to source colors: {}".format(delta)) + return [space.fromCoords(x) for x in matched] + +def find_simple_transform(space, colors1, colors2): + points1 = [color_row(space, c) for c in colors1 if c is not None] + points2 = [color_row(space, c) for c in colors2 if c is not None] + c1 = get_center(points1) + c2 = get_center(points2) + #transfer = c2 - c1 + szs1 = max([abs(c1-p) for p in points1]) + szs2 = max([abs(c2-p) for p in points2]) + if (szs1 == 0).any(): + zoom = np.array([1,1,1]) + else: + zoom = szs2 / szs1 + return (c1, c2, zoom) + +if __name__ == "__main__": + + x1 = Color(0,0,0) + x2 = Color(0,10,0) + x3 = Color(0,0,20) + x4 = Color(20,0,10) + x5 = Color(10,10,10) + x6 = Color(0,20,0) + x7 = Color(0,0,40) + x8 = Color(40,0,20) + + y1 = Color(0,0,0) + y2 = Color(0,10,0) + y3 = Color(0,0,20) + y4 = Color(20,0,10) + y5 = Color(10,10,10) + y6 = Color(0,20,0) + y7 = Color(0,0,40) + y8 = Color(40,0,20) + + res = match_colors(RGB, [x1,x2,x3,x4,x5,x6,x7,x8], [y1,y2,y3,y4,y5,y6,y7,y8]) + print([c.getRGB() for c in res]) + + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/open_palette.py b/extensions/fablabchemnitz/color_harmony/color_harmony/open_palette.py new file mode 100644 index 00000000..dd795fd0 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/open_palette.py @@ -0,0 +1,17 @@ +def load_palette(filename, mixer=None, options=None): + if mixer is None: + mixer = mixers.MixerRGB + loader = detect_storage(filename) + if loader is None: + return None + palette = loader().load(mixer, filename, options) + return palette + +def save_palette(palette, path, formatname=None): + if formatname is not None: + loader = get_storage_by_name(formatname) + else: + loader = detect_storage(path, save=True) + if loader is None: + raise RuntimeError("Unknown file type!") + loader(palette).save(path) diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/palette/palette.py b/extensions/fablabchemnitz/color_harmony/color_harmony/palette/palette.py new file mode 100644 index 00000000..698773c5 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/palette/palette.py @@ -0,0 +1,352 @@ + +from os.path import join, basename + +from color.colors import * +from color import mixers +from models.meta import Meta + +NONE = 0 +USER_DEFINED = 1 +VERTICALLY_GENERATED = 2 +HORIZONTALLY_GENERATED = 3 +DEFAULT_GROUP_SIZE = 7 +MAX_COLS = 10 + +class Slot(object): + def __init__(self, color=None, name=None, user_defined=False): + self._color = color + self._mode = NONE + self._user_defined = user_defined + self._src_slot1 = None + self._src_row1 = None + self._src_col1 = None + self._src_slot2 = None + self._src_row2 = None + self._src_col2 = None + if name: + self.name = name + + def get_name(self): + if self._color: + return self._color.name + else: + return None + + def set_name(self, name): + if self._color: + self._color.name = name + + name = property(get_name, set_name) + + def __repr__(self): + return "".format(self._mode) + + def getColor(self): + if self._color is None: + return Color(1,1,1) + else: + return self._color + + def setColor(self, color): + self._color = color + + color = property(getColor, setColor) + + def getMode(self): + if self._user_defined: + return USER_DEFINED + else: + return self._mode + + def setMode(self, mode): + self._mode = mode + if mode == USER_DEFINED: + self._user_defined = True + self._mode = NONE + + mode = property(getMode, setMode) + + def mark(self, user_defined=None): + if user_defined is None: + user_defined = not self._user_defined + #print("Mark: " + str(user_defined)) + self._user_defined = user_defined + + def setSources(self, slot1, row1, col1, slot2, row2, col2): + self._src_slot1 = slot1 + self._src_row1 = row1 + self._src_col1 = col1 + self._src_slot2 = slot2 + self._src_row2 = row2 + self._src_col2 = col2 + #print("Sources: ({},{}) and ({},{})".format(row1,col1, row2,col2)) + + def getSource1(self): + return self._src_slot1, self._src_row1, self._src_col1 + + def getSource2(self): + return self._src_slot2, self._src_row2, self._src_col2 + +class Palette(object): + def __init__(self, mixer, nrows=1, ncols=7): + self.mixer = mixer + self.nrows = nrows + self.ncols = ncols + self.slots = [[Slot() for i in range(ncols)] for j in range(nrows)] + self.need_recalc_colors = True + self.meta = Meta() + + def get_name(self): + return self.meta.get("Name", "Untited") + + def set_name(self, name): + self.meta["Name"] = name + + name = property(get_name, set_name) + + def mark_color(self, row, column, mark=None): + print("Marking color at ({}, {})".format(row,column)) + slot = self.slots[row][column] + slot.mark(mark) + self.need_recalc_colors = True + self.recalc() + + def setMixer(self, mixer): + self.mixer = mixer + self.recalc() + + def del_column(self, col): + if self.ncols < 2: + return + new = [] + for row in self.slots: + new_row = [] + for c, slot in enumerate(row): + if c != col: + new_row.append(slot) + new.append(new_row) + self.slots = new + self.ncols -= 1 + self.recalc() + + def add_column(self, col): + new = [] + for row in self.slots: + new_row = [] + for c, slot in enumerate(row): + if c == col: + new_row.append(Slot()) + new_row.append(slot) + new.append(new_row) + self.slots = new + self.ncols += 1 + self.recalc() + + def del_row(self, row): + if self.nrows < 2: + return + new = [] + for r,row_ in enumerate(self.slots): + if r != row: + new.append(row_) + self.slots = new + self.nrows -= 1 + self.recalc() + + def add_row(self, row): + new = [] + for r,row_ in enumerate(self.slots): + if r == row: + new_row = [Slot() for k in range(self.ncols)] + new.append(new_row) + new.append(row_) + self.slots = new + self.nrows += 1 + self.recalc() + + def paint(self, row, column, color): + self.slots[row][column].color = color + self.slots[row][column].mark(True) + #self.recalc() + + def erase(self, row, column): + self.paint(row, column, Color(0,0,0)) + + def getUserDefinedSlots(self): + """Returns list of tuples: (row, column, slot).""" + result = [] + for i,row in enumerate(self.slots): + for j,slot in enumerate(row): + if slot.mode == USER_DEFINED: + result.append((i,j,slot)) + return result + + def getColor(self, row, column): + if self.need_recalc_colors: + self.recalc() + try: + return self.slots[row][column].color + except IndexError: + #print("Cannot get color ({},{}): size is ({},{})".format(row,column, self.nrows, self.ncols)) + return Color(255,255,255) + + def getColors(self): + if self.need_recalc_colors: + self.recalc() + return [[slot.color for slot in row] for row in self.slots] + + def setSlots(self, all_slots): + m = len(all_slots) % self.ncols + if m != 0: + for i in range(self.ncols - m): + all_slots.append(Slot(Color(255,255,255))) + self.slots = [] + row = [] + for i, slot in enumerate(all_slots): + if i % self.ncols == 0: + if len(row) != 0: + self.slots.append(row) + row = [] + row.append(slot) + self.slots.append(row) + self.nrows = len(self.slots) + self.need_recalc_colors = True + self.recalc() +# print(self.slots) + + def user_chosen_slot_down(self, i,j): + """Returns tuple: + * Is slot found + * Row of found slot + * Column of found slot""" + + #print("Searching down ({},{})".format(i,j)) + for i1 in range(i, self.nrows): + try: + slot = self.slots[i1][j] + #print("Down: check ({},{}): {}".format(i1,j,slot)) + if slot.mode == USER_DEFINED: + #print("Found down ({},{}): ({},{})".format(i,j, i1,j)) + return True,i1,j + except IndexError: + print("Cannot get slot at ({}, {})".format(i,j)) + return False, self.nrows-1,j + return False, self.nrows-1,j + + def user_chosen_slot_up(self, i,j): + """Returns tuple: + * Is slot found + * Row of found slot + * Column of found slot""" + + for i1 in range(i-1, -1, -1): + if self.slots[i1][j].mode == USER_DEFINED: + #print("Found up ({},{}): ({},{})".format(i,j, i1,j)) + return True,i1,j + return False, 0, j + + def fixed_slot_right(self, i,j): + """Returns tuple: + * Mode of found slot + * Row of found slot + * Column of found slot""" + + for j1 in range(j, self.ncols): + if self.slots[i][j1].mode in [USER_DEFINED, VERTICALLY_GENERATED]: + return self.slots[i][j1].mode, i,j1 + return NONE, i,self.ncols-1 + + def fixed_slot_left(self, i,j): + """Returns tuple: + * Mode of found slot + * Row of found slot + * Column of found slot""" + + for j1 in range(j-1, -1, -1): + if self.slots[i][j1].mode in [USER_DEFINED, VERTICALLY_GENERATED]: + return self.slots[i][j1].mode, i,j1 + return NONE, i,0 + + def recalc(self): + self._calc_modes() + self._calc_modes() + self._calc_modes() + self._calc_colors() + self.need_recalc_colors = False + + def _calc_modes(self): + for i,row in enumerate(self.slots): + for j,slot in enumerate(row): + if slot.mode == USER_DEFINED: + continue + # Should slot be vertically generated? + v1,iv1,jv1 = self.user_chosen_slot_down(i,j) + v2,iv2,jv2 = self.user_chosen_slot_up(i,j) + h1,ih1,jh1 = self.fixed_slot_left(i,j) + h2,ih2,jh2 = self.fixed_slot_right(i,j) + if v1 and v2: # if there are user chosen slots above and below current + slot.mode = VERTICALLY_GENERATED + s1 = self.slots[iv1][jv1] + s2 = self.slots[iv2][jv2] + slot.setSources(s1, iv1, jv1, s2, iv2, jv2) + elif ((v1 and j-jv1 > 1) or (v2 and jv2-j > 1)) and ((h1!=USER_DEFINED) or (h2!=USER_DEFINED)): + slot.mode = VERTICALLY_GENERATED + s1 = self.slots[iv1][jv1] + s2 = self.slots[iv2][jv2] + slot.setSources(s1, iv1, jv1, s2, iv2, jv2) + elif h1 and h2: + # if there are fixed slots at left and at right of current + slot.mode = HORIZONTALLY_GENERATED + s1 = self.slots[ih1][jh1] + s2 = self.slots[ih2][jh2] + slot.setSources(s1, ih1, jh1, s2, ih2, jh2) + elif (h1 or h2) and not (v1 or v2): + slot.mode = HORIZONTALLY_GENERATED + s1 = self.slots[ih1][jh1] + s2 = self.slots[ih2][jh2] + slot.setSources(s1, ih1, jh1, s2, ih2, jh2) + else: + slot.mode = HORIZONTALLY_GENERATED + s1 = self.slots[ih1][jh1] + s2 = self.slots[ih2][jh2] + slot.setSources(s1, ih1, jh1, s2, ih2, jh2) + + def color_transition(self, from_color, to_color, steps, idx): + if self.mixer is None: + return Color(1,1,1) + q = float(idx+1) / float(steps+1) + return self.mixer.mix(from_color, to_color, q) + + def _calc_colors(self): + for i,row in enumerate(self.slots): + for j,slot in enumerate(row): + if slot.mode == VERTICALLY_GENERATED: + slot_down, iv1, jv1 = slot.getSource1() + slot_up, iv2, jv2 = slot.getSource2() + clr_down = slot_down.color + clr_up = slot_up.color + length = iv1-iv2 - 1 + idx = i-iv2 - 1 + try: + #print("Mixing ({},{}) with ({},{}) to get ({},{})".format(iv1,jv1, iv2,jv2, i,j)) + clr = self.color_transition(clr_up,clr_down,length, idx) + except IndexError: + clr = Color(1,1,1) + slot.color = clr + + for i,row in enumerate(self.slots): + for j,slot in enumerate(row): + if slot.mode == HORIZONTALLY_GENERATED: + slot_left, ih1, jh1 = slot.getSource1() + slot_right, ih2, jh2 = slot.getSource2() + clr_left = slot_left.color + clr_right = slot_right.color + length = jh2-jh1 - 1 + idx = j-jh1 - 1 + try: + #print("Mixing ({},{}) with ({},{}) to get ({},{})".format(ih1,jh1, ih2,jh2, i,j)) + clr = self.color_transition(clr_left,clr_right,length, idx) + except IndexError: + clr = Color(1,1,1) + slot.color = clr + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/shades.py b/extensions/fablabchemnitz/color_harmony/color_harmony/shades.py new file mode 100644 index 00000000..7f2a9f1e --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/shades.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copyright (C) 2009-2018 Ilya Portnov +# (original 'palette-editor' tool, version 0.0.7) +# 2020 Maren Hachmann (extension-ification) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from color_harmony.colorplus import ColorPlus +from color_harmony.utils import clip, seq, variate + +# Shading functions + +# 4 cooler colors +def cooler(color, parameter): + h,s,v = color.to_hsv() + if h < 1.0/6.0: + sign = -1.0 + elif h > 2.0/3.0: + sign = -1.0 + else: + sign = 1.0 + step = 0.1 * parameter + result = [] + for i in range(4): + h += sign * step + if h > 1.0: + h -= 1.0 + elif h < 0.0: + h += 1.0 + result.append(ColorPlus.from_hsv(h, s, v)) + return result + +# 4 warmer colors +def warmer(color, parameter): + h,s,v = color.to_hsv() + if h < 1.0/6.0: + sign = +1.0 + elif h > 2.0/3.0: + sign = +1.0 + else: + sign = -1.0 + step = 0.1 * parameter + result = [] + for i in range(4): + h += sign * step + if h > 1.0: + h -= 1.0 + elif h < 0.0: + h += 1.0 + result.append(ColorPlus.from_hsv(h, s, v)) + return result + +# returns 2 less saturated and 2 more saturated colors +def saturation(color, parameter): + h, s, v = color.to_hsv() + ss = [clip(x) for x in variate(s, 0.6*parameter, 1.2*parameter)] + # we don't want another copy of the original color + del ss[2] + return [ColorPlus.from_hsv(h, s, v) for s in ss] + +# 2 colors with higher value, and 2 with lower +def value(color, parameter): + h, s, v = color.to_hsv() + vs = [clip(x) for x in variate(v, 0.4*parameter, 0.8*parameter)] + del vs[2] + return [ColorPlus.from_hsv(h, s, v) for v in vs] + +# 2 colors with higher chroma, and 2 with lower +def chroma(color, parameter): + h, c, y = color.to_hcy() + cs = [clip(x) for x in variate(c, 0.4*parameter, 0.8*parameter)] + del cs[2] + return [ColorPlus.from_hcy(h, c, y) for c in cs] + +# 2 colors with higher luma, and 2 with lower +def luma(color, parameter): + h, c, y = color.to_hcy() + ys = [clip(x) for x in variate(y, 0.3*parameter, 0.6*parameter)] + del ys[2] + return [ColorPlus.from_hcy(h, c, y) for y in ys] + +# 2 colors with hue rotated to the left, and 2 rotated to the right +def hue(color, parameter): + h, c, y = color.to_hcy() + hs = [clip(x) for x in variate(h, 0.15*parameter, 0.3*parameter)] + del hs[2] + return [ColorPlus.from_hcy(h, c, y) for h in hs] + +def hue_luma(color, parameter): + h, c, y = color.to_hcy() + hs = [clip(x) for x in variate(h, 0.15*parameter, 0.3*parameter)] + ys = [clip(x) for x in variate(y, 0.3*parameter, 0.6*parameter)] + del ys[2] + del hs[2] + return [ColorPlus.from_hcy(h, c, y) for h,y in zip(hs, ys)] + +def luma_plus_chroma(color, parameter): + h, c, y = color.to_hcy() + cs = [clip(x) for x in variate(c, 0.4*parameter, 0.8*parameter)] + ys = [clip(x) for x in variate(y, 0.3*parameter, 0.6*parameter)] + del cs[2] + del ys[2] + return [ColorPlus.from_hcy(h, c, y) for c,y in zip(cs, ys)] + +def luma_minus_chroma(color, parameter): + h, c, y = color.to_hcy() + cs = [clip(x) for x in variate(c, 0.4*parameter, 0.8*parameter)] + ys = list(reversed([clip(x) for x in variate(y, 0.3*parameter, 0.6*parameter)])) + del cs[2] + del ys[2] + return [ColorPlus.from_hcy(h, c, y) for c,y in zip(cs, ys)] diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/__init__.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/__init__.py new file mode 100644 index 00000000..1bb8bf6d --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/__init__.py @@ -0,0 +1 @@ +# empty diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/cluster.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/cluster.py new file mode 100644 index 00000000..8ff0c817 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/cluster.py @@ -0,0 +1,180 @@ + +from math import sqrt, isnan +import numpy as np + +try: + from sklearn.cluster import MeanShift, estimate_bandwidth + from sklearn.utils import shuffle + + cluster_analysis_available = True + print("Cluster analysis is available") +except ImportError: + cluster_analysis_available = False + print("Cluster analysis is not available") + +try: + import Image + pil_available = True + print("PIL is available") +except ImportError: + print("PIL is not available") + try: + from PIL import Image + print("Pillow is available") + pil_available = True + except ImportError: + print("Neither PIL or Pillow are available") + pil_available = False + +from color.colors import * + +if pil_available: + + def imread(filename): + img = Image.open(filename) + +class Box(object): + def __init__(self, arr): + self._array = arr + + def population(self): + return self._array.size + + def axis_size(self, idx): + slice_ = self._array[:, idx] + M = slice_.max() + m = slice_.min() + return M - m + + def biggest_axis(self): + sizes = [self.axis_size(i) for i in range(3)] + return max(range(3), key = lambda i: sizes[i]) + + def mean(self): + return self._array.mean(axis=0) + + def mean_color(self): + size = self._array.size + if not size: + return None + xs = self._array.mean(axis=0) + x,y,z = xs[0], xs[1], xs[2] + if isnan(x) or isnan(y) or isnan(z): + return None + return Color(int(x), int(y), int(z)) + + def div_pos(self, idx): + slice_ = self._array[:, idx] + M = slice_.max() + m = slice_.min() + return (m+M)/2.0 + + def divide(self): + axis = self.biggest_axis() + q = self.div_pos(axis) + idxs = self._array[:, axis] > q + smaller = self._array[~idxs] + bigger = self._array[idxs] + self._array = smaller + return Box(bigger) + +if pil_available and cluster_analysis_available: + + # Use Means Shift algorithm for cluster analysis + + def cluster_analyze(filename, N=1000): + image = imread(filename) + w,h,d = tuple(image.shape) + image_array = np.array( np.reshape(image, (w * h, d)), dtype=np.float64 ) + #if image.dtype == 'uint8': + # image_array = image_array / 255.0 + image_array_sample = shuffle(image_array, random_state=0)[:N] + bandwidth = estimate_bandwidth(image_array_sample, quantile=0.01, n_samples=500) + ms = MeanShift(bandwidth=bandwidth, bin_seeding=True) + ms.fit(image_array_sample) + cluster_centers = ms.cluster_centers_ + n_clusters = len(cluster_centers) + colors = [] + print("Number of clusters: {}".format(n_clusters)) + for x in cluster_centers: + #print x + clr = Color() + clr.setRGB1((x[0], x[1], x[2])) + colors.append(clr) + return colors + + +if pil_available: + +# Use very fast algorithm for image analysis, translated from Krita's kis_common_colors_recalculation_runner.cpp +# Do not know exactly why does this algorithm work, but it does. +# Initial (C) Adam Celarek + + def bin_divide_colors(filename, N=1<<16, n_clusters=49): + img = Image.open(filename) + if img.mode == 'P': + img = img.convert('RGB') + w,h = img.size + n_pixels = w*h + if n_pixels > N: + ratio = sqrt( float(N) / float(n_pixels) ) + w,h = int(w*ratio), int(h*ratio) + img = img.resize((w,h)) + + image = np.array(img) + w,h,d = tuple(image.shape) + colors = np.array( np.reshape(image, (w * h, d)), dtype=np.float64 ) + #if image.dtype == 'uint8': + # colors = colors / 255.0 + colors = colors[:,0:3] + + boxes = [Box(colors)] + + while (len(boxes) < n_clusters * 3/5) and (len(colors) > n_clusters * 3/5): + biggest_box = None + biggest_box_population = None + + for box in boxes: + population = box.population() + if population <= 3: + continue + if biggest_box_population is None or (population > biggest_box_population and box.axis_size(box.biggest_axis()) >= 3): + biggest_box = box + biggest_box_population = population + + if biggest_box is None or biggest_box.population() <= 3: + break + + new_box = biggest_box.divide() + boxes.append(new_box) + + while (len(boxes) < n_clusters) and (len(colors) > n_clusters): + biggest_box = None + biggest_box_axis_size = None + + for box in boxes: + if box.population() <= 3: + continue + size = box.axis_size(box.biggest_axis()) + if biggest_box_axis_size is None or (size > biggest_box_axis_size and size >= 3): + biggest_box = box + biggest_box_axis_size = size + + if biggest_box is None or biggest_box.population() <= 3: + break + + new_box = biggest_box.divide() + boxes.append(new_box) + + result = [box.mean_color() for box in boxes if box.mean_color() is not None] + return result + +image_loading_supported = pil_available or cluster_analysis_available + +if pil_available: + get_common_colors = bin_divide_colors + use_sklearn = False +elif cluster_analysis_available : + get_common_colors = cluster_analyze + use_sklearn = True + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/css.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/css.py new file mode 100644 index 00000000..9936f453 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/css.py @@ -0,0 +1,83 @@ + +from os.path import join, basename +from math import sqrt, floor + +from color.colors import * +from color import mixers +from palette.storage.storage import * + +try: + from tinycss import make_parser, color3 + css_support = True +except ImportError: + print("TinyCSS is not available") + css_support = False + +class CSS(Storage): + name = 'css' + title = _("CSS cascading stylesheet") + filters = ["*.css"] + can_load = css_support + can_save = True + + @staticmethod + def check(filename): + return True + + def save(self, file_w): + pf = open(file_w, 'w') + + for i, row in enumerate(self.palette.slots): + for j, slot in enumerate(row): + user = "-user" if slot.mode == USER_DEFINED else "" + hex = slot.color.hex() + s = ".color-{}-{}{} {{ color: {} }};\n".format(i,j, user, hex) + pf.write(s) + + pf.close() + + def load(self, mixer, file_r, options=None): + self.palette = Palette(mixer) + self.palette.ncols = None + + all_slots = [] + colors = [] + + def add_color(clr): + for c in colors: + if c.getRGB() == clr.getRGB(): + return None + colors.append(clr) + return clr + + parser = make_parser('page3') + css = parser.parse_stylesheet_file(file_r) + for ruleset in css.rules: + #print ruleset + if ruleset.at_keyword: + continue + for declaration in ruleset.declarations: + #print declaration + for token in declaration.value: + #print token + css_color = color3.parse_color(token) + if not isinstance(css_color, color3.RGBA): + continue + r,g,b = css_color.red, css_color.green, css_color.blue + color = Color() + color.setRGB1((clip(r), clip(g), clip(b))) + color = add_color(color) + if not color: + continue + slot = Slot(color, user_defined=True) + all_slots.append(slot) + n_colors = len(all_slots) + if n_colors > MAX_COLS: + self.palette.ncols = max( int( floor(sqrt(n_colors)) ), 1) + else: + self.palette.ncols = n_colors + self.palette.setSlots(all_slots) + self.palette.meta["SourceFormat"] = "CSS" + print("Loaded palette: {}x{}".format( self.palette.nrows, self.palette.ncols )) + return self.palette + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/gimp.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/gimp.py new file mode 100644 index 00000000..f82b3302 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/gimp.py @@ -0,0 +1,188 @@ + +from os.path import join, basename +from PyQt4 import QtGui +import re + +from color.colors import * +from color import mixers +from palette.storage.storage import * + +marker = '# Colors not marked with #USER are auto-generated' + +metare = re.compile("^# (\\w+): (.+)") + +def save_gpl(name, ncols, clrs, file_w): + if type(file_w) in [str,unicode]: + pf = open(file_w, 'w') + do_close = True + elif hasattr(file_w,'write'): + pf = file_w + do_close = False + else: + raise ValueError("Invalid argument type in save_gpl: {}".format(type(file_w))) + pf.write('GIMP Palette\n') + pf.write(u"Name: {}\n".format(name).encode('utf-8')) + if ncols is not None: + pf.write('Columns: %s\n' % ncols) + for color in clrs: + r, g, b = color.getRGB() + n = 'Untitled' + s = '%d %d %d %s\n' % (r, g, b, n) + pf.write(s) + if do_close: + pf.close() + +class GimpPalette(Storage): + + name = 'gpl' + title = _("Gimp palette") + filters = ["*.gpl"] + can_save = True + can_load = True + + @staticmethod + def get_options_widget(dialog, filename): + + def on_columns_changed(n): + dialog.options = n + dialog.on_current_changed(filename) + + ncols = None + pf = open(filename,'r') + l = pf.readline().strip() + if l != 'GIMP Palette': + pf.close() + return None + for line in pf: + line = line.strip() + lst = line.split() + if lst[0]=='Columns:': + ncols = int( lst[1] ) + break + pf.close() + + widget = QtGui.QWidget() + box = QtGui.QHBoxLayout() + label = QtGui.QLabel(_("Columns: ")) + spinbox = QtGui.QSpinBox() + spinbox.setMinimum(2) + spinbox.setMaximum(100) + if ncols is None: + ncols = MAX_COLS + spinbox.setValue(ncols) + box.addWidget(label) + box.addWidget(spinbox) + spinbox.valueChanged.connect(on_columns_changed) + widget.setLayout(box) + return widget + + def save(self, file_w=None): + if type(file_w) in [str,unicode]: + pf = open(file_w, 'w') + do_close = True + elif hasattr(file_w,'write'): + pf = file_w + do_close = False + else: + raise ValueError("Invalid argument type in GimpPalette.save: {}".format(type(file_w))) + pf.write('GIMP Palette\n') + if not hasattr(self.palette, 'name'): + if type(file_w) in [str, unicode]: + self.palette.name = basename(file_w) + else: + self.palette.name='Colors' + pf.write(u"Name: {}\n".format(self.palette.name).encode('utf-8')) + if hasattr(self.palette, 'ncols') and self.palette.ncols: + pf.write('Columns: %s\n' % self.palette.ncols) + pf.write(marker+'\n') + for key,value in self.palette.meta.items(): + if key != "Name": + pf.write(u"# {}: {}\n".format(key, value).encode('utf-8')) + pf.write('#\n') + for row in self.palette.slots: + for slot in row: + if slot.mode == USER_DEFINED: + n = slot.name + ' #USER' + else: + n = slot.name + r, g, b = slot.color.getRGB() + s = '%d %d %d %s\n' % (r, g, b, n) + pf.write(s) + for key,value in slot.color.meta.items(): + if key != "Name": + pf.write(u"# {}: {}\n".format(key, value).encode('utf-8')) + if do_close: + pf.close() + + def load(self, mixer, file_r, force_ncols=None): + self.palette = Palette(mixer) + self.palette.ncols = None + if not file_r: + palette.filename = None + palette.name = 'Gimp' + return + elif hasattr(file_r,'read'): + pf = file_r + self.palette.filename = None + do_close = False + elif type(file_r) in [str,unicode]: + pf = open(file_r) + self.palette.filename = file_r + do_close = True + l = pf.readline().strip() + if l != 'GIMP Palette': + raise SyntaxError, "Invalid palette file!" + self.palette.name = " ".join(pf.readline().strip().split()[1:]) + all_user = True + n_colors = 0 + all_slots = [] + reading_header = True + for line in pf: + line = line.strip() + if line==marker: + all_user = False + meta_match = metare.match(line) + if meta_match is not None: + key = meta_match.group(1) + value = meta_match.group(2) + if reading_header: + self.palette.meta[key] = value + else: + clr.meta[key] = value + continue + if line.startswith('#'): + continue + lst = line.split() + if lst[0]=='Columns:': + self.palette.ncols = int( lst[1] ) + if len(lst) < 3: + continue + rs,gs,bs = lst[:3] + clr = Color(float(rs), float(gs), float(bs)) + reading_header = False + #print(str(clr)) + slot = Slot(clr) + n_colors += 1 + if all_user or lst[-1]=='#USER': + slot.mode = USER_DEFINED + name = ' '.join(lst[3:-1]) + else: + name = ' '.join(lst[3:]) + slot.name = name + all_slots.append(slot) + if do_close: + pf.close() + if n_colors < DEFAULT_GROUP_SIZE: + self.palette.ncols = n_colors + if not self.palette.ncols: + if n_colors > MAX_COLS: + self.palette.ncols = MAX_COLS + else: + self.palette.ncols = n_colors + if force_ncols is not None: + self.palette.ncols = force_ncols + self.palette.setSlots(all_slots) + self.palette.meta["SourceFormat"] = "Gimp gpl" if all_user else "palette_editor gpl" + print("Loaded palette: {}x{}".format( self.palette.nrows, self.palette.ncols )) + return self.palette + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/image.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/image.py new file mode 100644 index 00000000..5178e939 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/image.py @@ -0,0 +1,201 @@ + +from os.path import join, basename, splitext +from math import sqrt, floor +from PyQt4 import QtGui + +from color.colors import * +from color import spaces +from color import mixers +from palette.image import PaletteImage +from palette.palette import * +from palette.storage.storage import * +from palette.storage.cluster import * +from palette.storage.table import parse_color_table +from matching.transform import rho, get_center + +LOAD_MORE = 1 +LOAD_LESS_COMMON = 2 +LOAD_LESS_FAREST = 3 +LOAD_TABLE = 4 + +print("Ok") + +class DialogOptions(object): + def __init__(self, method): + self.method = method + self.border_x = 10 + self.border_y = 10 + self.gap_x = 10 + self.gap_y = 10 + self.size_x = 5 + self.size_y = 5 + +class Image(Storage): + name = 'image' + title = _("Raster image") + filters = ["*.jpg", "*.png", "*.gif"] + can_load = image_loading_supported + can_save = True + + @staticmethod + def check(filename): + return True + + @staticmethod + def get_options_widget(dialog, filename): + if use_sklearn: + return None + + def dependencies(): + if dialog.options is None or dialog.options.method != LOAD_TABLE: + table_w.setVisible(False) + else: + table_w.setVisible(True) + + def on_method_changed(checked): + method = None + if dialog._more_button.isChecked(): + method = LOAD_MORE + elif dialog._less_button.isChecked(): + method = LOAD_LESS_COMMON + elif dialog._less_farest.isChecked(): + method = LOAD_LESS_FAREST + elif dialog._table.isChecked(): + method = LOAD_TABLE + dialog.options = DialogOptions(method) + if method == LOAD_TABLE: + dialog.options.border_x = dialog._border_x.value() + dialog.options.border_y = dialog._border_y.value() + dialog.options.gap_x = dialog._gap_x.value() + dialog.options.gap_y = dialog._gap_y.value() + dialog.options.size_x = dialog._size_x.value() + dialog.options.size_y = dialog._size_y.value() + dependencies() + dialog.on_current_changed(filename) + + group_box = QtGui.QGroupBox(_("Loading method")) + dialog._more_button = more = QtGui.QRadioButton(_("Use 49 most used colors")) + dialog._less_button = less = QtGui.QRadioButton(_("Use 9 most used colors and mix them")) + dialog._less_farest = less_farest = QtGui.QRadioButton(_("Use 9 most different colors and mix them")) + dialog._table = table = QtGui.QRadioButton(_("Load table of colors")) + + table_w = QtGui.QWidget(dialog) + table_form = QtGui.QFormLayout(table_w) + dialog._border_x = QtGui.QSpinBox(table_w) + dialog._border_x.valueChanged.connect(on_method_changed) + table_form.addRow(_("Border from right/left side, px"), dialog._border_x) + dialog._border_y = QtGui.QSpinBox(table_w) + dialog._border_y.valueChanged.connect(on_method_changed) + table_form.addRow(_("Border from top/bottom side, px"), dialog._border_y) + dialog._gap_x = QtGui.QSpinBox(table_w) + dialog._gap_x.valueChanged.connect(on_method_changed) + table_form.addRow(_("Width of gap between cells, px"), dialog._gap_x) + dialog._gap_y = QtGui.QSpinBox(table_w) + dialog._gap_y.valueChanged.connect(on_method_changed) + table_form.addRow(_("Height of gap between cells, px"), dialog._gap_y) + dialog._size_x = QtGui.QSpinBox(table_w) + dialog._size_x.setValue(5) + dialog._size_x.valueChanged.connect(on_method_changed) + table_form.addRow(_("Number of columns in the table"), dialog._size_x) + dialog._size_y = QtGui.QSpinBox(table_w) + dialog._size_y.setValue(5) + dialog._size_y.valueChanged.connect(on_method_changed) + table_form.addRow(_("Number of rows in the table"), dialog._size_y) + table_w.setLayout(table_form) + + dependencies() + + more.toggled.connect(on_method_changed) + less.toggled.connect(on_method_changed) + less_farest.toggled.connect(on_method_changed) + table.toggled.connect(on_method_changed) + + if dialog.options is None or dialog.options.method == LOAD_MORE: + more.setChecked(True) + elif dialog.options.method == LOAD_LESS_COMMON: + less.setChecked(True) + elif dialog.options.method == LOAD_TABLE: + table.setChecked(True) + else: + less_farest.setChecked(True) + + vbox = QtGui.QVBoxLayout() + vbox.addWidget(more) + vbox.addWidget(less) + vbox.addWidget(less_farest) + vbox.addWidget(table) + vbox.addWidget(table_w) + group_box.setLayout(vbox) + return group_box + + def save(self, file_w): + w,h = self.palette.ncols * 48, self.palette.nrows * 48 + image = PaletteImage( self.palette ).get(w,h) + print("Writing image: " + file_w) + res = image.save(file_w) + if not res: + image.save(file_w, format='PNG') + + def load(self, mixer, file_r, options=None): + def _cmp(clr1,clr2): + h1,s1,v1 = clr1.getHSV() + h2,s2,v2 = clr2.getHSV() + x = cmp(h1,h2) + if x != 0: + return x + x = cmp(v1,v2) + if x != 0: + return x + return cmp(s1,s2) + + def get_farest(space, colors, n=9): + points = [space.getCoords(c) for c in colors] + center = get_center(points) + srt = sorted(points, key = lambda c: -rho(center, c)) + farest = srt[:n] + return [space.fromCoords(c) for c in farest] + + if use_sklearn or options is None or options.method is None or options.method == LOAD_MORE: + colors = get_common_colors(file_r) + colors.sort(cmp=_cmp) + self.palette = create_palette(colors, mixer) + return self.palette + + elif options.method == LOAD_TABLE: + self.palette = palette = Palette(mixer, nrows=options.size_y, ncols=options.size_x) + colors = parse_color_table(file_r, options) + + for i in range(0, options.size_y): + for j in range(0, options.size_x): + palette.paint(i, j, colors[i][j]) + + return palette + + else: + if options.method == LOAD_LESS_FAREST: + colors = get_common_colors(file_r) + colors = get_farest(spaces.RGB, colors) + else: + colors = get_common_colors(file_r, n_clusters=9) + + self.palette = palette = Palette(mixer, nrows=7, ncols=7) + + palette.paint(0, 0, colors[0]) + palette.paint(0, 3, colors[1]) + palette.paint(0, 6, colors[2]) + palette.paint(3, 0, colors[3]) + palette.paint(3, 3, colors[4]) + palette.paint(3, 6, colors[5]) + palette.paint(6, 0, colors[6]) + palette.paint(6, 3, colors[7]) + palette.paint(6, 6, colors[8]) + + palette.need_recalc_colors = True + palette.recalc() + + name,ext = splitext(basename(file_r)) + self.palette.meta["SourceFormat"] = ext + + return palette + + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/kpl.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/kpl.py new file mode 100644 index 00000000..275b2be3 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/kpl.py @@ -0,0 +1,178 @@ + +from os.path import join, basename +from PyQt4 import QtGui +from lxml import etree as ET +from zipfile import ZipFile, ZIP_DEFLATED + +from color.colors import * +from color import mixers +from palette.storage.storage import * + +MIMETYPE = "application/x-krita-palette" +DEFAULT_GROUP_NAME = "Default (root)" + +class KplPalette(Storage): + name = 'kpl' + title = _("Krita 4.0+ palette format") + filters = ["*.kpl"] + can_load = True + can_save = True + + @staticmethod + def check(filename): + try: + with ZipFile(filename, 'r') as zf: + mimetype = zf.read("mimetype") + return (mimetype == MIMETYPE) + except Exception as e: + print(e) + return False + + @staticmethod + def get_group_names(filename): + result = [DEFAULT_GROUP_NAME] + + with ZipFile(filename, 'r') as zf: + colorset_str = zf.read("colorset.xml") + colorset = ET.fromstring(colorset_str) + + for xmlgrp in colorset.xpath("//Group"): + name = xmlgrp.attrib['name'] + if name is not None: + result.append(name) + + return result + + @staticmethod + def get_options_widget(dialog, filename): + + dialog.options = DEFAULT_GROUP_NAME + + def on_group_changed(selector): + def handler(): + dialog.options = selector.currentText() + dialog.on_current_changed(filename) + return handler + + widget = QtGui.QWidget() + box = QtGui.QHBoxLayout() + label = QtGui.QLabel(_("Group: ")) + selector = QtGui.QComboBox() + + for group_name in KplPalette.get_group_names(filename): + selector.addItem(group_name) + + selector.currentIndexChanged.connect(on_group_changed(selector)) + selector.setCurrentIndex(0) + + box.addWidget(label) + box.addWidget(selector) + widget.setLayout(box) + return widget + + def load(self, mixer, file_r, group_name): + + if group_name is None: + group_name = DEFAULT_GROUP_NAME + + def find_group(xml): + if group_name == DEFAULT_GROUP_NAME: + return xml + for xmlgrp in xml.xpath("//Group"): + if xmlgrp.attrib['name'] == group_name: + return xmlgrp + return None + + self.palette = Palette(mixer) + + with ZipFile(file_r, 'r') as zf: + mimetype = zf.read("mimetype") + if mimetype != MIMETYPE: + raise Exception("This is not a valid Krita palette file") + + colorset_str = zf.read("colorset.xml") + colorset = ET.fromstring(colorset_str) + self.palette.ncols = int( colorset.attrib['columns'] ) + self.palette.name = colorset.attrib.get('name', "Untitled") + + group = find_group(colorset) + if group is None: + print(u"Cannot find group by name {}".format(group_name).encode('utf-8')) + return None + else: + self.palette.name = self.palette.name + " - " + group.attrib.get('name', 'Untitled') + + all_slots = [] + n_colors = 0 + for xmlclr in group.findall('ColorSetEntry'): + name = xmlclr.attrib['name'] + if xmlclr.attrib['bitdepth'] != 'U8': + print("Skip color {}: unsupported bitdepth".format(name)) + continue + rgb = xmlclr.find('RGB') + if rgb is None: + rgb = xmlclr.find('sRGB') + if rgb is None: + print("Skip color {}: no RGB representation".format(name)) + continue + + r = float(rgb.attrib['r'].replace(',', '.')) + g = float(rgb.attrib['g'].replace(',', '.')) + b = float(rgb.attrib['b'].replace(',', '.')) + clr = Color() + clr.setRGB1((r,g,b)) + clr.name = name + slot = Slot(clr) + slot.mode = USER_DEFINED + + all_slots.append(slot) + n_colors += 1 + + if n_colors < DEFAULT_GROUP_SIZE: + self.palette.ncols = n_colors + if not self.palette.ncols: + if n_colors > MAX_COLS: + self.palette.ncols = MAX_COLS + else: + self.palette.ncols = n_colors + #print("Loaded colors: {}".format(len(all_slots))) + self.palette.setSlots(all_slots) + self.palette.meta["SourceFormat"] = "KRITA KPL" + print("Loaded palette: {}x{}".format( self.palette.nrows, self.palette.ncols )) + return self.palette + + def save(self, file_w=None): + with ZipFile(file_w, 'w', ZIP_DEFLATED) as zf: + zf.writestr("mimetype", MIMETYPE) + + xml = ET.Element("Colorset") + xml.attrib['version'] = '1.0' + xml.attrib['columns'] = str(self.palette.ncols) + xml.attrib['name'] = self.palette.name + xml.attrib['comment'] = self.palette.meta.get("Comment", "Generated by Palette Editor") + + for i,row in enumerate(self.palette.slots): + for j,slot in enumerate(row): + color = slot.color + name = color.name + default_name = "Swatch-{}-{}".format(i,j) + if not name: + name = default_name + + elem = ET.SubElement(xml, "ColorSetEntry") + elem.attrib['spot'] = color.meta.get("Spot", "false") + elem.attrib['id'] = default_name + elem.attrib['name'] = name + elem.attrib['bitdepth'] = 'U8' + + r,g,b = color.getRGB1() + srgb = ET.SubElement(elem, "sRGB") + srgb.attrib['r'] = str(r) + srgb.attrib['g'] = str(g) + srgb.attrib['b'] = str(b) + + tree = ET.ElementTree(xml) + tree_str = ET.tostring(tree, encoding='utf-8', pretty_print=True, xml_declaration=False) + + zf.writestr("colorset.xml", tree_str) + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/scribus.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/scribus.py new file mode 100644 index 00000000..6672b28f --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/scribus.py @@ -0,0 +1,76 @@ + +from math import floor +from os.path import join, basename +from lxml import etree as ET + +from color.colors import * +from color import mixers +from palette.storage.storage import * + +cmyk_factor = float(1.0/255.0) + +def fromHex_CMYK(s): + t = s[1:] + cs,ms,ys,ks = t[0:2], t[2:4], t[4:6], t[6:8] + c,m,y,k = int(cs,16), int(ms,16), int(ys,16), int(ks,16) + c,m,y,k = [float(x)*cmyk_factor for x in [c,m,y,k]] + result = Color() + result.setCMYK((c,m,y,k)) + return result + +class Scribus(Storage): + name = 'scribus' + title = _("Scribus color swatches") + filters = ["*.xml"] + can_load = True + can_save = True + + @staticmethod + def check(filename): + return ET.parse(filename).getroot().tag == 'SCRIBUSCOLORS' + + def load(self, mixer, file_r, options=None): + xml = ET.parse(file_r).getroot() + + colors = [] + name = xml.attrib.get("Name", "Untitled") + + for elem in xml.findall("COLOR"): + if "RGB" in elem.attrib: + color = fromHex(elem.attrib["RGB"]) + colors.append(color) + elif "CMYK" in elem.attrib: + color = fromHex_CMYK(elem.attrib["CMYK"]) + colors.append(color) + else: + continue + if "NAME" in elem.attrib: + color.meta["Name"] = elem.attrib["NAME"] + if "Spot" in elem.attrib: + color.meta["Spot"] = elem.attrib["Spot"] + if "Register" in elem.attrib: + color.meta["Register"] = elem.attrib["Register"] + + self.palette = create_palette(colors) + self.palette.name = name + return self.palette + + def save(self, file_w): + name = self.palette.name + if not name: + name = "Palette" + xml = ET.Element("SCRIBUSCOLORS", NAME=name) + + for i,row in enumerate(self.palette.getColors()): + for j,color in enumerate(row): + name = color.name + if not name: + name = "Swatch-{}-{}".format(i,j) + elem = ET.SubElement(xml, "COLOR", NAME=name, RGB=color.hex()) + if "Spot" in color.meta: + elem.attrib["Spot"] = color.meta["Spot"] + if "Register" in color.meta: + elem.attrib["Register"] = color.meta["Register"] + + + ET.ElementTree(xml).write(file_w, encoding="utf-8", pretty_print=True, xml_declaration=True) diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/storage.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/storage.py new file mode 100644 index 00000000..26f849bd --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/storage.py @@ -0,0 +1,62 @@ + +from os.path import join, basename +from math import sqrt, floor + +from color.colors import * +from color import mixers +from palette.palette import * + +class Storage(object): + + name = None + title = None + filters = [] + + can_load = False + can_save = False + + def __init__(self, palette=None): + self.palette = palette + + @classmethod + def get_filter(cls): + return u"{} ({})".format(cls.title, u" ".join(cls.filters)) + + @staticmethod + def check(filename): + return True + + @staticmethod + def get_options_widget(dialog, filename): + return None + + def load(self, mixer, file_r, *args, **kwargs): + raise NotImplemented + + def save(self, file_w): + raise NotImplemented + +def create_palette(colors, mixer=None, ncols=None): + """Create Palette from list of Colors.""" + if mixer is None: + mixer = mixers.MixerRGB + palette = Palette(mixer) + palette.ncols = ncols + + all_slots = [] + + for clr in colors: + slot = Slot(clr, user_defined=True) + all_slots.append(slot) + + n_colors = len(all_slots) + + if palette.ncols is None: + if n_colors > MAX_COLS: + palette.ncols = max( int( floor(sqrt(n_colors)) ), 1) + else: + palette.ncols = n_colors + + palette.setSlots(all_slots) + return palette + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/storage/xml.py b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/xml.py new file mode 100644 index 00000000..47129dca --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/storage/xml.py @@ -0,0 +1,179 @@ + +from os.path import join, basename +from PyQt4 import QtGui +from lxml import etree as ET + +from color.colors import * +from color import mixers +from palette.storage.storage import * + +class XmlPalette(Storage): + name = 'xml' + title = _("CREATE palette format") + filters = ["*.xml"] + can_load = True + can_save = True + + @staticmethod + def check(filename): + return ET.parse(filename).getroot().tag == 'colors' + + @staticmethod + def get_options_widget(dialog, filename): + + def on_group_changed(selector): + def handler(): + dialog.options = selector.currentText() + dialog.on_current_changed(filename) + return handler + + widget = QtGui.QWidget() + box = QtGui.QHBoxLayout() + label = QtGui.QLabel(_("Group: ")) + selector = QtGui.QComboBox() + + xml = ET.parse(filename) + for xmlgrp in xml.xpath("//group"): + xml_label = xmlgrp.find('label') + if xml_label is not None: + selector.addItem(xml_label.text) + + selector.currentIndexChanged.connect(on_group_changed(selector)) + selector.setCurrentIndex(0) + + box.addWidget(label) + box.addWidget(selector) + widget.setLayout(box) + return widget + + @staticmethod + def get_group_names(filename): + result = [] + xml = ET.parse(filename) + for xmlgrp in xml.xpath("//group"): + xml_label = xmlgrp.find('label') + if xml_label is not None: + result.append(xml_label.text) + return result + + def save(self, file_w=None): + xml = ET.Element("colors") + root_group = ET.SubElement(xml, "group") + group = ET.SubElement(root_group, "group") + label = ET.SubElement(group, "label") + label.text = self.palette.name + layout = ET.SubElement(group, "layout", columns=str(self.palette.ncols), expanded="True") + + for key,value in self.palette.meta.items(): + if key != "Name": + meta = ET.SubElement(group, "meta", name=key) + meta.text = value + + for i,row in enumerate(self.palette.slots): + for j,slot in enumerate(row): + color = slot.color + name = color.name + if not name: + name = "Swatch-{}-{}".format(i,j) + elem = ET.SubElement(group, "color") + label = ET.SubElement(elem, "label") + label.text = name + if slot.mode == USER_DEFINED: + meta = ET.SubElement(elem, "meta", name="user_chosen") + meta.text = "True" + for key,value in color.meta.items(): + if key != "Name": + meta = ET.SubElement(elem, "meta", name=key) + meta.text = value + rgb = ET.SubElement(elem, "sRGB") + r,g,b = color.getRGB1() + rgb.attrib["r"] = str(r) + rgb.attrib["g"] = str(g) + rgb.attrib["b"] = str(b) + + ET.ElementTree(xml).write(file_w, encoding="utf-8", pretty_print=True, xml_declaration=True) + + def load(self, mixer, file_r, group_name): + + def get_label(grp): + xml_label = grp.find('label') + if xml_label is None: + return None + return xml_label.text + + + def find_group(xml): + #print("Searching {}".format(group_name)) + grp = None + for xmlgrp in xml.xpath("//group"): + label = get_label(xmlgrp) + if label is None: + continue + #print("Found: {}".format(label)) + if group_name is None or label == group_name: + grp = xmlgrp + break + return grp + + self.palette = Palette(mixer) + self.palette.ncols = None + xml = ET.parse(file_r) + grp = find_group(xml) + if grp is None: + print(u"Cannot find group by name {}".format(group_name).encode('utf-8')) + return None + self.palette.name = get_label(grp) + + layout = grp.find('layout') + if layout is not None: + self.palette.ncols = int( layout.attrib['columns'] ) + + metas = grp.findall('meta') + if metas is not None: + for meta in metas: + key = meta.attrib['name'] + value = meta.text + if key != 'Name': + self.palette.meta[key] = value + + all_slots = [] + n_colors = 0 + for xmlclr in grp.findall('color'): + sRGB = xmlclr.find('sRGB') + if sRGB is None: + continue + attrs = sRGB.attrib + r = float(attrs['r'].replace(',','.')) + g = float(attrs['g'].replace(',','.')) + b = float(attrs['b'].replace(',','.')) + clr = Color() + clr.setRGB1((r,g,b)) + slot = Slot(clr) + metas = xmlclr.findall('meta') + if metas is not None: + for meta in metas: + key = meta.attrib['name'] + value = meta.text + if key == 'user_chosen' and value == 'True': + slot.mode = USER_DEFINED + else: + clr.meta[key] = value + label = xmlclr.find('label') + if label is not None: + clr.name = label.text + all_slots.append(slot) + n_colors += 1 + + if n_colors < DEFAULT_GROUP_SIZE: + self.palette.ncols = n_colors + if not self.palette.ncols: + if n_colors > MAX_COLS: + self.palette.ncols = MAX_COLS + else: + self.palette.ncols = n_colors + #print("Loaded colors: {}".format(len(all_slots))) + self.palette.setSlots(all_slots) + self.palette.meta["SourceFormat"] = "CREATE XML" + print("Loaded palette: {}x{}".format( self.palette.nrows, self.palette.ncols )) + return self.palette + diff --git a/extensions/fablabchemnitz/color_harmony/color_harmony/utils.py b/extensions/fablabchemnitz/color_harmony/color_harmony/utils.py new file mode 100644 index 00000000..da96e127 --- /dev/null +++ b/extensions/fablabchemnitz/color_harmony/color_harmony/utils.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copyright (C) 2009-2018 Ilya Portnov +# (original 'palette-editor' tool, version 0.0.7) +# 2020 Maren Hachmann (extension-ification) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +# Helper functions +def circle_hue(i, n, h, max=1.0): + h += i * max / n + if h > max: + h -= max + return h + +def seq(start, stop, step=1): + n = int(round((stop - start)/step)) + if n > 1: + return([start + step*i for i in range(n+1)]) + else: + return([]) + +def variate(x, step=1.0, dmin=1.0, dmax=None): + if dmax is None: + dmax = dmin + return seq(x-dmin, x+dmax, step) + +def clip(x, min=0.0, max=1.0): + if x < min: + #print("{:.2f} clipped up to {:.2f}".format(x, min)) + return min + if x > max: + #print("{:.2f} clipped down to {:.2f}".format(x, max)) + return max + return x diff --git a/extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.inx b/extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.inx new file mode 100644 index 00000000..cfeb03be --- /dev/null +++ b/extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.inx @@ -0,0 +1,28 @@ + + + Colorize Path Lengths + fablabchemnitz.de.colorize_path_lengths + + + + + + 12 + 25 + 40 + 60 + 60 + 0.1 + 10 + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.py b/extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.py new file mode 100644 index 00000000..5e191f6b --- /dev/null +++ b/extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 +''' +pathselection.py + +Sunabe kazumichi 2009/9/29 +http://dp48069596.lolipop.jp/ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +''' +import inkex, locale +import math +from lxml import etree +from inkex import paths +from inkex import bezier + +# Set current system locale +locale.setlocale(locale.LC_ALL, '') + +def cspseglength(sp1,sp2, tolerance = 0.001): + bez = (sp1[1][:],sp1[2][:],sp2[0][:],sp2[1][:]) + return bezier.bezierlength(bez, tolerance) +def csplength(csp): + lengths = [] + for sp in csp: + lengths.append([]) + for i in range(1,len(sp)): + l = cspseglength(sp[i-1],sp[i]) + lengths[-1].append(l) + return lengths + +def roughBBox(path): + xmin,xMax,ymin,yMax=path[0][0][0],path[0][0][0],path[0][0][1],path[0][0][1] + for pathcomp in path: + for pt in pathcomp: + xmin=min(xmin,pt[0]) + xMax=max(xMax,pt[0]) + ymin=min(ymin,pt[1]) + yMax=max(yMax,pt[1]) + if xMax-xmin==0: + tn=0 + else : + tn=(yMax-ymin)/(xMax-xmin) + return tn + +class ColorizePathLengths(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("-s", "--selection", default=True, help="select path with length or slant") + pars.add_argument("-1", "--len1", type=float, default=12) + pars.add_argument("-2", "--len2", type=float, default=25) + pars.add_argument("-3", "--len3", type=float, default=40) + pars.add_argument("-4", "--len4", type=float, default=60) + pars.add_argument("-5", "--len5", type=float, default=60) + pars.add_argument("-6", "--hor", type=float, default=0.2) + pars.add_argument("-7", "--ver", type=float, default=10) + + def effect(self): + # loop over all selected paths + if self.options.selection=="path_lengthselection": + if len(self.svg.selected) > 0: + for node in self.svg.selected.values(): + if node.tag == inkex.addNS('path','svg'): + l1,l2,l3,l4,l5=[],[],[],[],[] + p = paths.CubicSuperPath(inkex.paths.Path(node.get('d'))) + slengths= csplength(p) + b=[slengths, p] + + # path length select + for x in range(0,len(slengths)): + if sum(b[0][x])sum(b[0][x])>=self.options.len1 : + l2.append(b[1][x]) + if self.options.len3>sum(b[0][x])>=self.options.len2 : + l3.append(b[1][x]) + if self.options.len4>sum(b[0][x])>=self.options.len3 : + l4.append(b[1][x]) + if sum(b[0][x])>=self.options.len4 : + l5.append(b[1][x]) + + # make path + lensel=[l1,l2,l3,l4,l5] + strlen=['#FF0001','#00FF02','#AAFF03','#87CEE4','#000FF5'] + for i,x in zip(strlen,lensel): + s = {'stroke-linejoin': 'miter', 'stroke-width': '0.5px', + 'stroke-opacity': '1.0', 'fill-opacity': '1.0', + 'stroke': i, 'stroke-linecap': 'butt', 'fill': 'none'} + attribs={'style':str(inkex.Style(s)),'d':str(paths.Path(paths.CubicSuperPath(x).to_path().to_arrays()))} + etree.SubElement(node.getparent(),inkex.addNS('path','svg'),attribs) + else: + self.msg('Please select some paths first.') + return + + if self.options.selection=="path_slantselection": + if len(self.svg.selected) > 0: + for node in self.svg.selected.values(): + if node.tag == inkex.addNS('path','svg'): + hor1,ver2,slan3=[],[],[] + p = paths.CubicSuperPath(inkex.paths.Path(node.get('d'))) + + # path slant select + for i,x in enumerate(p): + tn=roughBBox(x) + if tnself.options.ver: + ver2.append(p[i]) + else: + slan3.append(p[i]) + + # make path + slnsel=[hor1,ver2,slan3] + strsln=['#FF0001','#00FF02','#000FF5'] + for i,x in zip(strsln,slnsel): + s = {'stroke-linejoin': 'miter', 'stroke-width': '0.5px', + 'stroke-opacity': '1.0', 'fill-opacity': '1.0', + 'stroke': i, 'stroke-linecap': 'butt', 'fill': 'none'} + attribs={'style':str(inkex.Style(s)),'d':str(paths.Path(paths.CubicSuperPath(x).to_path().to_arrays()))} + etree.SubElement(node.getparent(),inkex.addNS('path','svg'),attribs) + else: + self.msg('Please select some paths first.') + return + +if __name__ == '__main__': + ColorizePathLengths().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx new file mode 100644 index 00000000..8e1a77f7 --- /dev/null +++ b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx @@ -0,0 +1,185 @@ + + + Contour Scanner And Trimmer + fablabchemnitz.de.contour_scanner_and_trimmer + + + + + + false + false + false + true + 0.100 + 3 + 0.1 + 0.01 + + 1.0 + 30 + false + + + + + + + + + + + + + false + false + false + false + false + false + false + false + false + + true + + + + + + false + + + + false + false + false + false + false + false + false + false + false + + false + false + false + + false + false + + + + + + + + + false + true + true + false + true + true + + true + false + false + false + true + + + + + + + + + + 1630897151 + + 3419879935 + 1592519679 + 3351636735 + 4289703935 + 258744063 + 4118348031 + 4012452351 + 2330080511 + + + + + 897901823 + 869366527 + + 2593756927 + 6320383 + 4239343359 + + 3227634687 + 1923076095 + 3045284607 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py new file mode 100644 index 00000000..5d9b215b --- /dev/null +++ b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py @@ -0,0 +1,1290 @@ +#!/usr/bin/env python3 + +''' +Extension for InkScape 1.0+ + - WARNING: HORRIBLY SLOW CODE. PLEASE HELP TO MAKE IT USEFUL FOR LARGE AMOUNT OF PATHS + - ToDo: + - add more comments + - add more debug output + - add documentation about used algorithms at online page + - add statistics about type counts and path lengths (before/after sub splitting/trimming) + - add options: + - replace trimmed paths by bezier paths (calculating lengths and required t parameter) + - filter/remove overlapping/duplicates in + - in original selection (not working bezier but for straight line segments!) We can use another extension for it + - split bezier + - ... + - maybe option: convert abs path to rel path + - maybe option: convert rel path to abs path + replacedelement.path = replacedelement.path.to_absolute().to_superpath().to_path() + - maybe option: break apart while keeping relative/absolute commands (more complex and not sure if we have a great advantage having this) + - note: running this extension might leave some empty parent groups in some circumstances. run the clean groups extension separately to fix that + +- important to notice + - this algorithm might be really slow. Reduce flattening quality to speed up + - the code quality is horrible. We need a lot of asserts and functions to structure that stuff + - try to adjust snap tolerance and flatness in case of errors, like + poly_point_isect.py: "KeyError: 'Event(0x21412ce81c0, s0=(47.16, 179.1), + s1=(47.17, 178.21), p=(47.16, 179.1), type=2, slope=-88.9999999999531)'" + - this extension does not check for strange paths. Please ensure that your path 'd' + data is valid (no pointy paths, no duplicates, etc.) + - Notes about shapely: + - we do not use shapely to look for intersections by cutting each line against + each other line (line1.intersection(line2) using two for-loops) because this + kind of logic is really really slow for huge amount. You could use that only + for ~50-100 elements. So we use special algorihm (Bentley-Ottmann) + - intersects() is equivalent to the OR-ing of contains(), crosses(), equals(), touches(), and within(). + So there might be some cases where two lines intersect eachother without crossing, + in particular when one line contains another or when two lines are equals. + - crosses() returns True if the dimension of the intersection is less than the dimension of the one or the other. + So if two lines overlap, they won't be considered as "crossing". intersection() will return a geometric object. + - Cool tool to visualize sweep line algorithm Bentley-Ottmann: https://bl.ocks.org/1wheel/464141fe9b940153e636 + +- things to look at more closely: + - https://gis.stackexchange.com/questions/203048/split-lines-at-points-using-shapely + - https://stackoverflow.com/questions/34754777/shapely-split-linestrings-at-intersections-with-other-linestrings + - There are floating point precision errors when finding a point on a line. Use the distance with an appropriate threshold instead. + - line.within(point) # False + - line.distance(point) # 7.765244949417793e-11 + - line.distance(point) < 1e-8 # True + - https://bezier.readthedocs.io/en/stable/python/reference/bezier.hazmat.clipping.html / https://github.com/dhermes/bezier + - De Casteljau Algorithm + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 09.08.2020 (extension originally called "Contour Scanner") +Last patch: 08.07.2021 +License: GNU GPL v3 + +''' + +import sys +import os +import copy +from lxml import etree +import poly_point_isect +from poly_point_isect import isect_segments +import inkex +from inkex import transforms, bezier, PathElement, Color, Circle +from inkex.bezier import csplength +from inkex.paths import Path, CubicSuperPath +from shapely.geometry import LineString, Point, MultiPoint +from shapely.ops import snap, split +from shapely import speedups +if speedups.available: + speedups.enable() + +idPrefixSubSplit = "subsplit" +idPrefixTrimming = "trimmed" +intersectedVerb = "intersected" +collinearVerb = "collinear" + +class ContourScannerAndTrimmer(inkex.EffectExtension): + + + def break_contours(self, element, breakelements = None): + ''' + this does the same as "CTRL + SHIFT + K" + This functions honors the fact of absolute or relative paths! + ''' + if breakelements == None: + breakelements = [] + if element.tag == inkex.addNS('path','svg'): + parent = element.getparent() + idx = parent.index(element) + idSuffix = 0 + #raw = str(element.path).split() + raw = element.path.to_arrays() + subPaths = [] + prev = 0 + for i in range(len(raw)): # Breaks compound paths into simple paths + #if raw[i][0].upper() == 'M' and i != 0: + if raw[i][0] == 'M' and i != 0: + subPath = raw[prev:i] + subPaths.append(Path(subPath)) + prev = i + subPaths.append(Path(raw[prev:])) #finally add the last path + + for subPath in subPaths: + replacedelement = copy.copy(element) + oldId = replacedelement.get('id') + csp = CubicSuperPath(subPath) + if len(subPath) > 1 and csp[0][0] != csp[0][1]: #avoids pointy paths like M "31.4794 57.6024 Z" + replacedelement.path = subPath + replacedelement.set('id', oldId + str(idSuffix)) + parent.insert(idx, replacedelement) + idSuffix += 1 + breakelements.append(replacedelement) + element.delete() + for child in element.getchildren(): + self.break_contours(child, breakelements) + return breakelements + + + def get_child_paths(self, element, elements = None): + ''' a function to get child paths from elements (used by "handling groups" option) ''' + if elements == None: + elements = [] + if element.tag == inkex.addNS('path','svg'): + elements.append(element) + for child in element.getchildren(): + self.get_child_paths(child, elements) + return elements + + + def get_path_elements(self): + ''' get all path elements, either from selection or from whole document. Uses options ''' + pathElements = [] + if len(self.svg.selected) == 0: #if nothing selected we search for the complete document + pathElements = self.document.xpath('//svg:path', namespaces=inkex.NSS) + else: # or get selected paths (and children) and convert them to shapely LineString objects + if self.options.handle_groups is False: + pathElements = list(self.svg.selection.filter(PathElement).values()) + else: + for element in self.svg.selection.values(): + pathElements = self.get_child_paths(element, pathElements) + + if len(pathElements) == 0: + self.msg('Selection appears to be empty or does not contain any valid svg:path nodes. Try to cast your objects to paths using CTRL + SHIFT + C or strokes to paths using CTRL + ALT + C') + exit(1) + + if self.options.break_apart is True: + breakApartElements = None + for pathElement in pathElements: + breakApartElements = self.break_contours(pathElement, breakApartElements) + pathElements = breakApartElements + + if self.options.show_debug is True: + self.msg("total processing paths count: {}".format(len(pathElements))) + + return pathElements + + + def find_group(self, groupId): + ''' check if a group with a given id exists or not. Returns None if not found, else returns the group element ''' + groups = self.document.xpath('//svg:g', namespaces=inkex.NSS) + for group in groups: + #self.msg(str(layer.get('inkscape:label')) + " == " + layerName) + if group.get('id') == groupId: + return group + return None + + + def adjust_style(self, element): + ''' Replace some style attributes of the given element ''' + if element.attrib.has_key('style'): + style = element.get('style') + if style: + declarations = style.split(';') + for i,decl in enumerate(declarations): + parts = decl.split(':', 2) + if len(parts) == 2: + (prop, val) = parts + prop = prop.strip().lower() + if prop == 'stroke-width': + declarations[i] = prop + ':' + str(self.svg.unittouu(str(self.options.strokewidth) +"px")) + if prop == 'fill': + declarations[i] = prop + ':none' + element.set('style', ';'.join(declarations) + ';stroke:#000000;stroke-opacity:1.0') + else: + element.set('style', 'stroke:#000000;stroke-opacity:1.0') + + + def line_from_segments(self, segs, i, decimals): + '''builds a straight line for the segment i and the next segment i+2. Returns both point XY coordinates''' + pseudoPath = Path(segs[i:i+2]).to_arrays() + x1 = round(pseudoPath[0][1][-2], decimals) + y1 = round(pseudoPath[0][1][-1], decimals) + if pseudoPath[1][0] == 'Z': #some crappy code when the path is closed + pseudoPathEnd = Path(segs[0:2]).to_arrays() + x2 = round(pseudoPathEnd[0][1][-2], decimals) + y2 = round(pseudoPathEnd[0][1][-1], decimals) + else: + x2 = round(pseudoPath[1][1][-2], decimals) + y2 = round(pseudoPath[1][1][-1], decimals) + return x1, y1, x2, y2 + + + def visualize_self_intersections(self, pathElement, selfIntersectionPoints): + ''' Draw some circles at given point coordinates (data from array)''' + selfIntersectionGroup = pathElement.getparent().add(inkex.Group(id="selfIntersectionPoints-{}".format(pathElement.attrib["id"]))) + selfIntersectionPointStyle = {'stroke': 'none', 'fill': self.options.color_self_intersections} + for selfIntersectionPoint in selfIntersectionPoints: + cx = selfIntersectionPoint[0] + cy = selfIntersectionPoint[1] + selfIntersectionPointCircle = Circle(cx=str(cx), + cy=str(cy), + r=str(self.svg.unittouu(str(self.options.dotsize_intersections / 2) + "px")) + ) + + if pathElement.getparent() != self.svg.root: + selfIntersectionPointCircle.transform = -pathElement.getparent().composed_transform() + selfIntersectionPointCircle.set('id', self.svg.get_unique_id('selfIntersectionPoint-')) + selfIntersectionPointCircle.style = selfIntersectionPointStyle + selfIntersectionGroup.add(selfIntersectionPointCircle) + return selfIntersectionGroup + + + def visualize_global_intersections(self, globalIntersectionPoints): + ''' Draw some circles at given point coordinates (data from array)''' + if len(globalIntersectionPoints) > 0: #only create a group and add stuff if there are some elements to work on + globalIntersectionGroup = self.svg.root.add(inkex.Group(id="globalIntersectionPoints")) + globalIntersectionPointStyle = {'stroke': 'none', 'fill': self.options.color_global_intersections} + for globalIntersectionPoint in globalIntersectionPoints: + cx = globalIntersectionPoint.coords[0][0] + cy = globalIntersectionPoint.coords[0][1] + globalIntersectionPointCircle = Circle(cx=str(cx), + cy=str(cy), + r=str(self.svg.unittouu(str(self.options.dotsize_intersections / 2) + "px")) + ) + globalIntersectionPointCircle.set('id', self.svg.get_unique_id('globalIntersectionPoint-')) + globalIntersectionPointCircle.style = globalIntersectionPointStyle + globalIntersectionGroup.add(globalIntersectionPointCircle) + + + def build_trim_line_group(self, subSplitLineArray, subSplitIndex, globalIntersectionPoints): + ''' make a group containing trimmed lines''' + + #Check if we should skip or process the path anyway + isClosed = subSplitLineArray[subSplitIndex].attrib['originalPathIsClosed'] + if self.options.trimming_path_types == 'open_paths' and isClosed == 'True': return #skip this call + elif self.options.trimming_path_types == 'closed_paths' and isClosed == 'False': return #skip this call + elif self.options.trimming_path_types == 'both': pass + + csp = subSplitLineArray[subSplitIndex].path.to_arrays() + ls = LineString([(csp[0][1][0], csp[0][1][1]), (csp[1][1][0], csp[1][1][1])]) + + trimLineStyle = {'stroke': str(self.options.color_trimmed), 'fill': 'none', 'stroke-width': self.options.strokewidth} + + linesWithSnappedIntersectionPoints = snap(ls, globalIntersectionPoints, self.options.snap_tolerance) + trimGroupParentId = subSplitLineArray[subSplitIndex].attrib['originalPathId'] + trimGroupId = '{}-{}-{}'.format(idPrefixTrimming, idPrefixSubSplit, trimGroupParentId) + trimGroupParent = self.svg.getElementById(trimGroupParentId) + #trimGroupParentTransform = trimGroupParent.composed_transform() + trimGroup = self.find_group(trimGroupId) + if trimGroup is None: + trimGroup = trimGroupParent.getparent().add(inkex.Group(id=trimGroupId)) + + #apply isBezier and original path id information to group (required for bezier splitting the original path at the end) + trimGroup.attrib['originalPathIsBezier'] = subSplitLineArray[subSplitIndex].attrib['originalPathIsBezier'] + trimGroup.attrib['originalPathIsPolyBezMixed'] = subSplitLineArray[subSplitIndex].attrib['originalPathIsPolyBezMixed'] + trimGroup.attrib['originalPathId'] = subSplitLineArray[subSplitIndex].attrib['originalPathId'] + + #split all lines against all other lines using the intersection points + trimLines = split(linesWithSnappedIntersectionPoints, globalIntersectionPoints) + + splitAt = [] #if the sub split line was split by an intersecting line we receive two trim lines with same assigned original path id! + prevLine = None + for j in range(len(trimLines)): + + trimLineId = "{}-{}".format(trimGroupId, subSplitIndex) + splitAt.append(trimGroupId) + if splitAt.count(trimGroupId) > 1: #we detected a lines with intersection on + trimLineId = "{}-{}".format(trimLineId, self.svg.get_unique_id(intersectedVerb + "-")) + ''' + so the previous lines was an intersection lines too. so we change the id to include the intersected verb + (left side and right side of cut) - note: updating element + id sometimes seems not to work if the id was used before in Inkscape + ''' + prevLine.attrib['id'] = "{}-{}".format(trimGroupId, str(subSplitIndex) + "-" + self.svg.get_unique_id(intersectedVerb + "-")) + prevLine.attrib['intersected'] = 'True' #some dirty flag we need + prevLine = trimLine = inkex.PathElement(id=trimLineId) + x, y = trimLines[j].coords.xy + x0 = round(x[0], self.options.decimals) + x1 = round(x[1], self.options.decimals) + y0 = round(y[0], self.options.decimals) + y1 = round(y[1], self.options.decimals) + if x0 == x1 and y0 == y1: #check if the trimLine is a pointy one (rounded start point equals rounded end point) + if self.options.show_debug is True: + self.msg("pointy trim line (start point equals end point). Skipping ...") + continue + + trimLine.attrib['d'] = 'M {},{} L {},{}'.format(x0, y0, x1, y1) #we set the path of trimLine using 'd' attribute because if we use trimLine.path the decimals get cut off unwantedly + #trimLine.path = Path([['M', [x0,y0]], ['L', [x1,y1]]]) + + #if trimGroupParentTransform is not None: + # trimLine.path = trimLine.path.transform(-trimGroupParentTransform) + if self.options.trimmed_style == "apply_from_trimmed": + trimLine.style = trimLineStyle + elif self.options.trimmed_style == "apply_from_original": + trimLine.style = subSplitLineArray[subSplitIndex].attrib['originalPathStyle'] + trimGroup.add(trimLine) + return trimGroup + + + def slope(self, p0, p1): + ''' + Calculate the slope (gradient) of a line's start point p0 + end point p1 + ''' + dx = p1[0] - p0[0] + if dx == 0: + return sys.float_info.max #vertical + return (p1[1] - p0[1]) / dx + + + def process_set_x(self, working_set): + if len(working_set) < 2: + return (True, working_set) + + # sort working set left to right + working_set.sort(key=lambda x: x['p0'][0]) + for i in range(0, len(working_set)): + for j in range(i + 1, len(working_set)): + + # calculate slope from S0P0 to S1P1 and S0P1 to S1P0 + # if slopes all match the working set's slope, we're collinear + # if not, these segments are parallel but not collinear and should be left alone + expected_slope = working_set[i]['slope'] + if (abs(self.slope(working_set[i]['p1'], working_set[j]['p0']) - expected_slope) > self.options.collinear_filter_epsilon) \ + or (abs(self.slope(working_set[i]['p0'], working_set[j]['p1']) - expected_slope) > self.options.collinear_filter_epsilon): + continue + + # the only remaining permissible configuration: collinear segments with a gap between them + # e.g. --- ----- + # otherwise we combine segments and flag the set as requiring more processing + s0x0 = working_set[i]['p0'][0] + s0x1 = working_set[i]['p1'][0] + s1x0 = working_set[j]['p0'][0] + s1x1 = working_set[j]['p1'][0] + + if not (s0x0 < s0x1 and s0x1 < s1x0 and s1x0 < s1x1): + # make a duplicate set, omitting segments i and j + new_set = [x for (k, x) in enumerate(working_set) if k not in (i, j)] + + # add a segment representing i and j's furthest points + pts = [ working_set[i]['p0'], working_set[i]['p1'], working_set[j]['p0'], working_set[j]['p1'] ] + pts.sort(key=lambda x: x[0]) + + new_set.append({ + 'p0': pts[0], + 'p1': pts[-1], + 'slope': self.slope(pts[0], pts[-1]), + 'id': working_set[i]['id'], + 'originalPathId': working_set[i]['originalPathId'], + 'composed_transform': working_set[i]['composed_transform'] + }) + return (False, new_set) + + return (True, working_set) + + + def process_set_y(self, working_set): + if len(working_set) < 2: + return (True, working_set) + + # sort working set top to bottom + working_set.sort(key=lambda y: -y['p0'][1]) + + for i in range(0, len(working_set)): + for j in range(i + 1, len(working_set)): + + # the only remaining permissible configuration: collinear segments with a gap between them + # e.g. + # | + # | + # + # | + # | + # | + # + # otherwise we combine segments and flag the set as requiring more processing + s0y0 = working_set[i]['p0'][1] + s0y1 = working_set[i]['p1'][1] + s1y0 = working_set[j]['p0'][1] + s1y1 = working_set[j]['p1'][1] + + if not (s0y0 < s0y1 and s0y1 < s1y0 and s1y0 < s1y1): + # make a duplicate set, omitting segments i and j + new_set = [y for (k, y) in enumerate(working_set) if k not in (i, j)] + + # add a segment representing i and j's furthest points + pts = [ working_set[i]['p0'], working_set[i]['p1'], working_set[j]['p0'], working_set[j]['p1'] ] + pts.sort(key=lambda y: y[1]) + new_set.append({ + 'p0': pts[0], + 'p1': pts[-1], + 'slope': self.slope(pts[0], pts[-1]), + 'id': working_set[i]['id'], + 'originalPathId': working_set[i]['originalPathId'], + 'composed_transform': working_set[i]['composed_transform'] + }) + return (False, new_set) + + return (True, working_set) + + + def filter_collinear(self, lineArray): + ''' Another sweep line algorithm to scan collinear lines + Loop through a set of lines and find + fiter all overlapping segments / duplicate segments + finally returns a set of merged-like lines and a set of original items which should be dropped. + Based on the style of the algorithm we have no good influence on the z-index of the items because + it is scanned by slope and point coordinates. That's why we have a more special + 'remove_trim_duplicates()' function for trimmed duplicates! + ''' + + ''' + filter for regular input lines and special vertical lines + ''' + input_set = [] + input_ids = [] + + # collect segments, calculate their slopes, order their points left-to-right + for line in lineArray: + #csp = line.path.to_arrays() + parent = line.getparent() + if parent is not None: + csp = Path(line.path.transform(parent.composed_transform())).to_arrays() + else: + csp = line.path.to_arrays() + #self.msg("csp = {}".format(csp)) + x1, y1, x2, y2 = csp[0][1][0], csp[0][1][1], csp[1][1][0], csp[1][1][1] + # ensure p0 is left of p1 + if x1 < x2: + s = { + 'p0': [x1, y1], + 'p1': [x2, y2] + } + else: + s = { + 'p0': [x2, y2], + 'p1': [x1, y1] + } + s['slope'] = self.slope(s['p0'], s['p1']) + s['id'] = line.attrib['id'] + s['originalPathId'] = line.attrib['originalPathId'] + s['composed_transform'] = line.composed_transform() + #s['d'] = line.attrib['d'] + input_set.append(s) + + input_set.sort(key=lambda x: x['slope']) + #input_set.append(False) # used to clear out lingering contents of working_set_x on last iteration + + input_set_new = [] + + #loop through input_set to filter out the vertical lines because we need to handle them separately + vertical_set = [] + vertical_ids = [] + for i in range(0, len(input_set)): + if input_set[i]['slope'] == sys.float_info.max: + vertical_set.append(input_set[i]) + else: + input_set_new.append(input_set[i]) + + input_set = input_set_new #overwrite the input_set with the filtered one + input_set.append(False) # used to clear out lingering contents of working_set_x on last iteration + + ''' + process x lines (all lines except vertical ones) + ''' + working_set_x = [] + working_x_ids = [] + output_set_x = [] + output_x_ids = [] + + if len(input_set) > 0: + current_slope = input_set[0]['slope'] + for input in input_set: + # bin sets of input_set by slope (within a tolerance) + dm = input and abs(input['slope'] - current_slope) or 0 + if input and dm < self.options.collinear_filter_epsilon: + working_set_x.append(input) #we put all lines to working set which have similar slopes + if input['id'] != '': input_ids.append(input['id']) + else: # slope discontinuity, process accumulated set + while True: + (done, working_set_x) = self.process_set_x(working_set_x) + if done: + output_set_x.extend(working_set_x) + break + + if input: # begin new working set + working_set_x = [input] + current_slope = input['slope'] + if input['id'] != '': input_ids.append(input['id']) + + + for output_x in output_set_x: + output_x_ids.append(output_x['id']) + + for working_x in working_set_x: + working_x_ids.append(working_x['id']) + else: + if self.options.show_debug is True: + self.msg("Scanning: no non-vertical input lines found. That might be okay or not ...") + + ''' + process vertical lines + ''' + working_set_y = [] + working_y_ids = [] + output_set_y = [] + output_y_ids = [] + + if len(vertical_set) > 0: + vertical_set.sort(key=lambda x: x['p0'][0]) #sort verticals by their x coordinate + vertical_set.append(False) # used to clear out lingering contents of working_set_y on last iteration + current_x = vertical_set[0]['p0'][0] + for vertical in vertical_set: + if vertical and current_x == vertical['p0'][0]: + working_set_y.append(vertical) #we put all lines to working set which have same x coordinate + if vertical['id'] != '': vertical_ids.append(vertical['id']) + else: # x coord discontinuity, process accumulated set + while True: + (done, working_set_y) = self.process_set_y(working_set_y) + if done: + output_set_y.extend(working_set_y) + break + if vertical: # begin new working set + working_set_y = [vertical] + current_x = vertical['p0'][0] + if vertical['id'] != '': vertical_ids.append(vertical['id']) + else: + if self.options.show_debug is True: + self.msg("Scanning: no vertical lines found. That might be okay or not ...") + + for output_y in output_set_y: + output_y_ids.append(output_y['id']) + + for working_y in working_set_y: + working_y_ids.append(working_y['id']) + + output_set = output_set_x + output_set.extend(output_set_y) + output_ids = [] + for output in output_set: + #self.msg(output) + output_ids.append(output['id']) + + #we finally build a list which contains all overlapping elements we want to drop + dropped_ids = [] + for input_id in input_ids: #if the input_id id is not in the output ids we are going to drop it + if input_id not in output_ids: + dropped_ids.append(input_id) + for vertical_id in vertical_ids: #if the input_id id is not in the output ids we are going to drop it + if vertical_id not in output_ids: + dropped_ids.append(vertical_id) + + if self.options.show_debug is True: + #self.msg("input_set:{}".format(input_set)) + self.msg("input_ids [{}]:".format(len(input_ids))) + for input_id in input_ids: + self.msg(input_id) + self.msg("*"*24) + #self.msg("working_set_x:{}".format(working_set_x)) + self.msg("working_x_ids [{}]:".format(len(working_x_ids))) + for working_x_id in working_x_ids: + self.msg(working_x_id) + self.msg("*"*24) + #self.msg("output_set_x:{}".format(output_set_x)) + self.msg("output_x_ids [{}]:".format(len(output_x_ids))) + for output_x_id in output_x_ids: + self.msg(output_x_id) + self.msg("*"*24) + #self.msg("output_set_y:{}".format(output_set_y)) + self.msg("output_y_ids [{}]:".format(len(output_y_ids))) + for output_y_id in output_y_ids: + self.msg(output_y_id) + self.msg("*"*24) + #self.msg("output_set:{}".format(output_set)) + self.msg("output_ids [{}]:".format(len(output_ids))) + for output_id in output_ids: + self.msg(output_id) + self.msg("*"*24) + self.msg("dropped_ids [{}]:".format(len(dropped_ids))) + for dropped_id in dropped_ids: + self.msg(dropped_id) + self.msg("*"*24) + + return output_set, dropped_ids + + + def remove_trim_duplicates(self, allTrimGroups): + ''' + find duplicate lines in a given array [] of groups + note: this function is similar to filter_collinear but we keep it because we have a 'reverse_trim_removal_order' option. + We can use this option in some special situations where we work without the function 'filter_collinear()'. + ''' + totalTrimPaths = [] + if self.options.reverse_trim_removal_order is True: + allTrimGroups = allTrimGroups[::-1] + for trimGroup in allTrimGroups: + for element in trimGroup: + path = element.path.transform(element.composed_transform()) + if path not in totalTrimPaths: + totalTrimPaths.append(path) + else: + if self.options.show_debug is True: + self.msg("Deleting path {}".format(element.get('id'))) + element.delete() + if len(trimGroup) == 0: + if self.options.show_debug is True: + self.msg("Deleting group {}".format(trimGroup.get('id'))) + trimGroup.delete() + + + def combine_nonintersects(self, allTrimGroups): + ''' + combine and chain all non intersected sub split lines which were trimmed at intersection points before. + - At first we sort out all lines by their id: + - if the lines id contains intersectedVerb, we ignore it + - we combine all lines which do not contain intersectedVerb + - Then we loop through that combined structure and chain their segments which touch each other + Changes the style according to user setting. + ''' + + nonTrimLineStyle = {'stroke': str(self.options.color_nonintersected), 'fill': 'none', 'stroke-width': self.options.strokewidth} + trimNonIntersectedStyle = {'stroke': str(self.options.color_combined), 'fill': 'none', 'stroke-width': self.options.strokewidth} + + for trimGroup in allTrimGroups: + totalIntersectionsAtPath = 0 + combinedPath = None + combinedPathData = Path() + if self.options.show_debug is True: + self.msg("trim group {} has {} paths".format(trimGroup.get('id'), len(trimGroup))) + for pElement in trimGroup: + pId = pElement.get('id') + #if self.options.show_debug is True: + # self.msg("trim paths id {}".format(pId)) + if intersectedVerb not in pId: + if combinedPath is None: + combinedPath = pElement + combinedPathData = pElement.path + else: + combinedPathData += pElement.path + pElement.delete() + else: + totalIntersectionsAtPath += 1 + if len(combinedPathData) > 0: + segData = combinedPathData.to_arrays() + newPathData = [] + newPathData.append(segData[0]) + for z in range(1, len(segData)): #skip first because we add it statically + if segData[z][1] != segData[z-1][1]: + newPathData.append(segData[z]) + if self.options.show_debug is True: + self.msg("trim group {} has {} combinable segments:".format(trimGroup.get('id'), len(newPathData))) + self.msg("{}".format(newPathData)) + combinedPath.path = Path(newPathData) + if self.options.trimmed_style == "apply_from_trimmed": + combinedPath.style = trimNonIntersectedStyle + if totalIntersectionsAtPath == 0: + combinedPath.style = nonTrimLineStyle + else: #the group might consist of intersections only. than we have length of 0 + if self.options.show_debug is True: + self.msg("trim group {} has no combinable segments (contains only intersected trim lines)".format(trimGroup.get('id'))) + + + def trim_bezier(self, allTrimGroups): + ''' + trim bezier path by checking the lengths and calculating global t parameter from the trimmed sub split lines groups + This function does not work yet. + ''' + for trimGroup in allTrimGroups: + if (trimGroup.attrib.has_key('originalPathIsBezier') and trimGroup.attrib['originalPathIsBezier'] == "True") or\ + (trimGroup.attrib.has_key('originalPathIsPolyBezMixed') and trimGroup.attrib['originalPathIsPolyBezMixed'] == "True"): + globalTParameters = [] + if self.options.show_debug is True: + self.msg("{}: count of trim lines = {}".format(trimGroup.get('id'), len(trimGroup))) + totalLength = 0 + for trimLine in trimGroup: + ignore, lineLength = csplength(CubicSuperPath(trimLine.get('d'))) + totalLength += lineLength + if self.options.show_debug is True: + self.msg("total length = {}".format(totalLength)) + chainLength = 0 + for trimLine in trimGroup: + ignore, lineLength = csplength(CubicSuperPath(trimLine.get('d'))) + chainLength += lineLength + if trimLine.attrib.has_key('intersected') or trimLine == trimGroup[-1]: #we may not used intersectedVerb because this was used for the affected left as well as the right side of the splitting. This would result in one "intersection" too much. + globalTParameter = chainLength / totalLength + globalTParameters.append(globalTParameter) + if self.options.show_debug is True: + self.msg("chain piece length = {}".format(chainLength)) + self.msg("t parameter = {}".format(globalTParameter)) + chainLength = 0 + if self.options.show_debug is True: + self.msg("Trimming the original bezier path {} at global t parameters: {}".format(trimGroup.attrib['originalPathId'], globalTParameters)) + for globalTParameter in globalTParameters: + csp = CubicSuperPath(self.svg.getElementById(trimGroup.attrib['originalPathId'])) + ''' + Sadly, those calculated global t parameters are useless for splitting because we cannot split the complete curve at a t parameter + Instead we only can split a bezier by getting to commands which build up a bezier path segment. + - we need to find those parts (segment pairs) of the original path first where the sub split line intersection occurs + - then we need to calculate the t parameter + - then we split the bezier part (consisting of two commands) and check the new intersection point. + It should match the sub split lines intersection point. + If they do not match we need to adjust the t parameter or loop to previous or next bezier command to find intersection + ''' + + + def add_arguments(self, pars): + pars.add_argument("--nb_main") + pars.add_argument("--nb_settings_and_actions") + + #Settings - General Input/Output + pars.add_argument("--show_debug", type=inkex.Boolean, default=False, help="Show debug infos") + pars.add_argument("--break_apart", type=inkex.Boolean, default=False, help="Break apart input paths into sub paths") + pars.add_argument("--handle_groups", type=inkex.Boolean, default=False, help="Also looks for paths in groups which are in the current selection") + pars.add_argument("--trimming_path_types", default="closed_paths", help="Process open paths by other open paths, closed paths by other closed paths, or all paths by all other paths") + pars.add_argument("--flattenbezier", type=inkex.Boolean, default=True, help="Flatten bezier curves to (poly)lines") + pars.add_argument("--flatness", type=float, default=0.1, help="Minimum flatness = 0.001. The smaller the value the more fine segments you will get (quantization). Large values might destroy the line continuity.") + pars.add_argument("--decimals", type=int, default=3, help="Accuracy for sub split lines / lines trimmed by shapely") + pars.add_argument("--snap_tolerance", type=float, default=0.1, help="Snap tolerance for intersection points") + pars.add_argument("--collinear_filter_epsilon", type=float, default=0.01, help="Epsilon for collinear line filter") + #Settings - General Style + pars.add_argument("--strokewidth", type=float, default=1.0, help="Stroke width (px)") + pars.add_argument("--dotsize_intersections", type=int, default=30, help="Dot size (px) for self-intersecting and global intersection points") + pars.add_argument("--removefillsetstroke", type=inkex.Boolean, default=False, help="Remove fill and define stroke for original paths") + pars.add_argument("--bezier_trimming", type=inkex.Boolean, default=False, help="If true we try to use the calculated t parameters from intersection points to receive splitted bezier curves") + pars.add_argument("--subsplit_style", default="default", help="Sub split line style") + pars.add_argument("--trimmed_style", default="apply_from_trimmed", help="Trimmed line style") + + #Removing - Applying to original paths and sub split lines + pars.add_argument("--remove_relative", type=inkex.Boolean, default=False, help="relative cmd") + pars.add_argument("--remove_absolute", type=inkex.Boolean, default=False, help="absolute cmd") + pars.add_argument("--remove_rel_abs_mixed", type=inkex.Boolean, default=False, help="mixed rel/abs cmd (relative + absolute)") + pars.add_argument("--remove_polylines", type=inkex.Boolean, default=False, help="(poly)line") + pars.add_argument("--remove_beziers", type=inkex.Boolean, default=False, help="bezier") + pars.add_argument("--remove_poly_bez_mixed", type=inkex.Boolean, default=False, help="mixed (poly)line/bezier paths") + pars.add_argument("--remove_opened", type=inkex.Boolean, default=False, help="opened") + pars.add_argument("--remove_closed", type=inkex.Boolean, default=False, help="closed") + pars.add_argument("--remove_self_intersecting", type=inkex.Boolean, default=False, help="self-intersecting") + #Removing - Applying to sub split lines only + pars.add_argument("--filter_subsplit_collinear", type=inkex.Boolean, default=True, help="Removes any duplicates by merging (multiple) overlapping line segments into longer lines. Not possible to apply for original paths because this routine does not support bezier type paths.") + pars.add_argument("--filter_subsplit_collinear_action", default="remove", help="What to do with collinear overlapping lines?") + #Removing - Applying to original paths only + pars.add_argument("--delete_original_after_split_trim", type=inkex.Boolean, default=False, help="Delete original paths after sub splitting / trimming") + + #Highlighting - Applying to original paths and sub split lines + pars.add_argument("--highlight_relative", type=inkex.Boolean, default=False, help="relative cmd paths") + pars.add_argument("--highlight_absolute", type=inkex.Boolean, default=False, help="absolute cmd paths") + pars.add_argument("--highlight_rel_abs_mixed", type=inkex.Boolean, default=False, help="mixed rel/abs cmd (relative + absolute) paths") + pars.add_argument("--highlight_polylines", type=inkex.Boolean, default=False, help="(poly)line paths") + pars.add_argument("--highlight_beziers", type=inkex.Boolean, default=False, help="bezier paths") + pars.add_argument("--highlight_poly_bez_mixed", type=inkex.Boolean, default=False, help="mixed (poly)line/bezier paths") + pars.add_argument("--highlight_opened", type=inkex.Boolean, default=False, help="opened paths") + pars.add_argument("--highlight_closed", type=inkex.Boolean, default=False, help="closed paths") + #Highlighting - Applying to sub split lines only + pars.add_argument("--draw_subsplit", type=inkex.Boolean, default=False, help="Draw sub split lines ((poly)lines)") + pars.add_argument("--highlight_duplicates", type=inkex.Boolean, default=False, help="duplicates (only applies to sub split lines)") + pars.add_argument("--highlight_merges", type=inkex.Boolean, default=False, help="merges (only applies to sub split lines)") + #Highlighting - Intersection points + pars.add_argument("--highlight_self_intersecting", type=inkex.Boolean, default=False, help="self-intersecting paths") + pars.add_argument("--visualize_self_intersections", type=inkex.Boolean, default=False, help="self-intersecting path points") + pars.add_argument("--visualize_global_intersections", type=inkex.Boolean, default=False, help="global intersection points") + + #Trimming - General trimming settings + pars.add_argument("--draw_trimmed", type=inkex.Boolean, default=False, help="Draw trimmed lines") + pars.add_argument("--combine_nonintersects", type=inkex.Boolean, default=True, help="Combine non-intersected lines") + pars.add_argument("--remove_trim_duplicates", type=inkex.Boolean, default=True, help="Remove duplicate trim lines") + pars.add_argument("--reverse_trim_removal_order", type=inkex.Boolean, default=False, help="Reverses the order of removal. Relevant for keeping certain styles of elements") + pars.add_argument("--remove_subsplit_after_trimming", type=inkex.Boolean, default=True, help="Remove sub split lines after trimming") + #Trimming - Bentley-Ottmann sweep line settings + pars.add_argument("--bent_ott_use_ignore_segment_endings", type=inkex.Boolean, default=True, help="Whether to ignore intersections of line segments when both their end points form the intersection point") + pars.add_argument("--bent_ott_use_debug", type=inkex.Boolean, default=False) + pars.add_argument("--bent_ott_use_verbose", type=inkex.Boolean, default=False) + pars.add_argument("--bent_ott_use_paranoid", type=inkex.Boolean, default=False) + pars.add_argument("--bent_ott_use_vertical", type=inkex.Boolean, default=True) + pars.add_argument("--bent_ott_number_type", default="native") + + #Colors + pars.add_argument("--color_subsplit", type=Color, default='1630897151', help="sub split lines") + #Colors - path structure + pars.add_argument("--color_relative", type=Color, default='3419879935', help="relative cmd paths") + pars.add_argument("--color_absolute", type=Color, default='1592519679', help="absolute cmd paths") + pars.add_argument("--color_rel_abs_mixed", type=Color, default='3351636735', help="mixed rel/abs cmd (relative + absolute) paths") + pars.add_argument("--color_polyline", type=Color, default='4289703935', help="(poly)line paths") + pars.add_argument("--color_bezier", type=Color, default='258744063', help="bezier paths") + pars.add_argument("--color_poly_bez_mixed", type=Color, default='4118348031', help="mixed (poly)line/bezier paths") + pars.add_argument("--color_opened", type=Color, default='4012452351', help="opened paths") + pars.add_argument("--color_closed", type=Color, default='2330080511', help="closed paths") + #Colors - duplicates and merges + pars.add_argument("--color_duplicates", type=Color, default='897901823', help="duplicates") + pars.add_argument("--color_merges", type=Color, default='869366527', help="merges") + #Colors - intersections + pars.add_argument("--color_self_intersecting_paths", type=Color, default='2593756927', help="self-intersecting paths") + pars.add_argument("--color_self_intersections", type=Color, default='6320383', help="self-intersecting path points") + pars.add_argument("--color_global_intersections", type=Color, default='4239343359', help="global intersection points") + #Colors - trimming + pars.add_argument("--color_trimmed", type=Color, default='1923076095', help="trimmed lines") + pars.add_argument("--color_combined", type=Color, default='3227634687', help="non-intersected lines") + pars.add_argument("--color_nonintersected", type=Color, default='3045284607', help="non-intersected paths") + + + def effect(self): + + so = self.options + + if so.break_apart is True and so.show_debug is True: + self.msg("Warning: 'Break apart input' setting is enabled. Cannot check accordingly for relative, absolute or mixed paths for breaked elements (they are always absolute)!") + + #some configuration dependecies + if so.highlight_self_intersecting is True or \ + so.highlight_duplicates is True or \ + so.highlight_merges is True: + so.draw_subsplit = True + + if so.highlight_duplicates is True or \ + so.highlight_merges is True: + so.filter_subsplit_collinear = True + + if so.filter_subsplit_collinear is True: #this is a must. + #if so.draw_subsplit is disabled bu we filter sub split lines and follow with trim operation we lose a lot of elements which may not be deleted! + so.draw_subsplit = True + + #some constant stuff / styles + relativePathStyle = {'stroke': str(so.color_relative), 'fill': 'none', 'stroke-width': so.strokewidth} + absolutePathStyle = {'stroke': str(so.color_absolute), 'fill': 'none', 'stroke-width': so.strokewidth} + mixedRelAbsPathStyle = {'stroke': str(so.color_rel_abs_mixed), 'fill': 'none', 'stroke-width': so.strokewidth} + polylinePathStyle = {'stroke': str(so.color_polyline), 'fill': 'none', 'stroke-width': so.strokewidth} + bezierPathStyle = {'stroke': str(so.color_bezier), 'fill': 'none', 'stroke-width': so.strokewidth} + mixedPolyBezPathStyle = {'stroke': str(so.color_poly_bez_mixed), 'fill': 'none', 'stroke-width': so.strokewidth} + openPathStyle = {'stroke': str(so.color_opened), 'fill': 'none', 'stroke-width': so.strokewidth} + closedPathStyle = {'stroke': str(so.color_closed), 'fill': 'none', 'stroke-width': so.strokewidth} + duplicatesPathStyle = {'stroke': str(so.color_duplicates), 'fill': 'none', 'stroke-width': so.strokewidth} + mergesPathStyle = {'stroke': str(so.color_merges), 'fill': 'none', 'stroke-width': so.strokewidth} + selfIntersectingPathStyle = {'stroke': str(so.color_self_intersecting_paths), 'fill': 'none', 'stroke-width': so.strokewidth} + basicSubSplitLineStyle = {'stroke': str(so.color_subsplit), 'fill': 'none', 'stroke-width': so.strokewidth} + + #get all paths which are within selection or in document and generate sub split lines + pathElements = self.get_path_elements() + + subSplitLineArray = [] + + for pathElement in pathElements: + originalPathId = pathElement.attrib["id"] + path = pathElement.path.transform(pathElement.composed_transform()) + #path = pathElement.path + + ''' + check for relative or absolute paths + ''' + isRelative = False + isAbsolute = False + isRelAbsMixed = False + relCmds = ['m', 'l', 'h', 'v', 'c', 's', 'q', 't', 'a', 'z'] + if any(relCmd in str(path) for relCmd in relCmds): + isRelative = True + if any(relCmd.upper() in str(path) for relCmd in relCmds): + isAbsolute = True + if isRelative is True and isAbsolute is True: #cannot be both at the same time, so it's mixed + isRelAbsMixed = True + isRelative = False + isAbsolute = False + if so.remove_absolute is True and isAbsolute is True: + pathElement.delete() + continue #skip this loop iteration + if so.remove_relative is True and isRelative is True: + pathElement.delete() + continue #skip this loop iteration + if so.remove_rel_abs_mixed is True and isRelAbsMixed is True: + pathElement.delete() + continue #skip this loop iteration + + ''' + check for bezier or (poly)line paths + ''' + isPoly = False + isBezier = False + isPolyBezMixed = False + if ('c' in str(path) or 'C' in str(path)): + isBezier = True + if ('l' in str(path) or 'L' in str(path)): + isPoly = True + if isPoly is True and isBezier is True: #cannot be both at the same time, so it's mixed + isPolyBezMixed = True + isPoly = False #reset + isBezier = False #reset + + #if so.show_debug is True: + # self.msg("sub path in {} is bezier: {}".format(originalPathId, isBezier)) + if so.remove_beziers is True and isBezier is True: + pathElement.delete() + continue #skip this loop iteration + if so.remove_polylines is True and isPoly is True: + pathElement.delete() + continue #skip this loop iteration + if so.remove_poly_bez_mixed is True and isPolyBezMixed is False: + pathElement.delete() + continue #skip this loop iteration + + ''' + check for closed or open paths + ''' + isClosed = False + raw = path.to_arrays() + if raw[-1][0] == 'Z' or \ + (raw[-1][0] == 'L' and raw[0][1] == raw[-1][1]) or \ + (raw[-1][0] == 'C' and raw[0][1] == [raw[-1][1][-2], raw[-1][1][-1]]) \ + : #if first is last point the path is also closed. The "Z" command is not required + isClosed = True + if so.remove_opened is True and isClosed is False: + pathElement.delete() + continue #skip this loop iteration + if so.remove_closed is True and isClosed is True: + pathElement.delete() + continue #skip this loop iteration + + if so.draw_subsplit is True: + subSplitLineGroup = pathElement.getparent().add(inkex.Group(id="{}-{}".format(idPrefixSubSplit, originalPathId))) + + #get all sub paths for the path of the element + subPaths, prev = [], 0 + for i in range(len(raw)): # Breaks compound paths into simple paths + if raw[i][0] == 'M' and i != 0: + subPaths.append(raw[prev:i]) + prev = i + subPaths.append(raw[prev:]) + + #now loop through all sub paths (and flatten if desired) to build up single lines + for subPath in subPaths: + subPathData = CubicSuperPath(subPath) + + #flatten bezier curves. If it was already a straight line do nothing! Otherwise we would split straight lines into a lot more straight lines + if so.flattenbezier is True and (isBezier is True or isPolyBezMixed is True): + bezier.cspsubdiv(subPathData, so.flatness) #modifies the path + flattenedpath = [] + for seg in subPathData: + first = True + for csp in seg: + cmd = 'L' + if first: + cmd = 'M' + first = False + flattenedpath.append([cmd, [csp[1][0], csp[1][1]]]) + #self.msg("flattened path = " + str(flattenedpath)) + segs = list(CubicSuperPath(flattenedpath).to_segments()) + else: + segs = list(subPathData.to_segments()) + #segs = segs[::-1] #reverse the segments + + #build (poly)lines from segment data + subSplitLines = [] + for i in range(len(segs) - 1): #we could do the same routine to build up (poly)lines using "for x, y in node.path.end_points". See "number nodes" extension + x1, y1, x2, y2 = self.line_from_segments(segs, i, so.decimals) + #self.msg("(y1 = {},y2 = {},x1 = {},x2 = {})".format(x1, y1, x2, y2)) + subSplitId = "{}-{}-{}".format(idPrefixSubSplit, originalPathId, i) + line = inkex.PathElement(id=subSplitId) + #apply line path with composed negative transform from parent element + line.attrib['d'] = 'M {},{} L {},{}'.format(x1, y1, x2, y2) #we set the path of Line using 'd' attribute because if we use trimLine.path the decimals get cut off unwantedly + #line.path = [['M', [x1, y1]], ['L', [x2, y2]]] + if pathElement.getparent() != self.svg.root and pathElement.getparent() != None: + line.path = line.path.transform(-pathElement.getparent().composed_transform()) + line.style = basicSubSplitLineStyle + line.attrib['originalPathId'] = originalPathId + line.attrib['originalPathIsRelative'] = str(isRelative) + line.attrib['originalPathIsAbsolute'] = str(isAbsolute) + line.attrib['originalPathIsRelAbsMixed'] = str(isRelAbsMixed) + line.attrib['originalPathIsBezier'] = str(isBezier) + line.attrib['originalPathIsPoly'] = str(isPoly) + line.attrib['originalPathIsPolyBezMixed'] = str(isPolyBezMixed) + line.attrib['originalPathIsClosed'] = str(isClosed) + line.attrib['originalPathStyle'] = str(pathElement.style) + subSplitLineArray.append(line) + + if so.subsplit_style == "apply_from_highlightings": + if line.attrib['originalPathIsRelative'] == 'True': + if so.highlight_relative is True: + line.style = relativePathStyle + + if line.attrib['originalPathIsAbsolute'] == 'True': + if so.highlight_absolute is True: + line.style = absolutePathStyle + + if line.attrib['originalPathIsRelAbsMixed'] == 'True': + if so.highlight_rel_abs_mixed is True: + line.style = mixedRelAbsPathStyle + + if line.attrib['originalPathIsPoly'] == 'True': + if so.highlight_polylines is True: + line.style = polylinePathStyle + + if line.attrib['originalPathIsBezier'] == 'True': + if so.highlight_beziers is True: + line.style = bezierPathStyle + + if line.attrib['originalPathIsPolyBezMixed'] == 'True': + if so.highlight_poly_bez_mixed is True: + line.style = mixedPolyBezPathStyle + + if line.attrib['originalPathIsClosed'] == 'True': + if so.highlight_closed is True: + line.style = closedPathStyle + else: + if so.highlight_opened is True: + line.style = openPathStyle + elif so.subsplit_style == "apply_from_original": + line.style = line.attrib['originalPathStyle'] + + if so.draw_subsplit is True: + subSplitLineGroup.add(line) + subSplitLines.append([(x1, y1), (x2, y2)]) + + #check for self intersections using Bentley-Ottmann algorithm. + isSelfIntersecting = False + selfIntersectionPoints = isect_segments(subSplitLines, validate=True) + if len(selfIntersectionPoints) > 0: + isSelfIntersecting = True + if so.show_debug is True: + self.msg("{} in {} intersects itself with {} intersections!".format(subSplitId, originalPathId, len(selfIntersectionPoints))) + if so.highlight_self_intersecting is True: + for subSplitLine in subSplitLineGroup: + subSplitLine.style = selfIntersectingPathStyle #adjusts line color + #delete cosmetic sub split lines if desired + if so.remove_self_intersecting: + subSplitLineGroup.delete() + if so.visualize_self_intersections is True: #draw points (circles) + selfIntersectionGroup = self.visualize_self_intersections(pathElement, selfIntersectionPoints) + + #delete self-intersecting sub split lines and orginal paths + if so.remove_self_intersecting: + subSplitLineArray = subSplitLineArray[:len(subSplitLineArray) - len(segs) - 1] #remove all last added lines + pathElement.delete() #and finally delete the orginal path + continue + + #adjust the style of original paths if desired. Has influence to the finally trimmed lines style results too! + if so.removefillsetstroke is True: + self.adjust_style(pathElement) + + #apply styles to original paths + if isRelative is True: + if so.highlight_relative is True: + pathElement.style = relativePathStyle + + if isAbsolute is True: + if so.highlight_absolute is True: + pathElement.style = absolutePathStyle + + if isRelAbsMixed is True: + if so.highlight_rel_abs_mixed is True: + pathElement.style = mixedRelAbsPathStyle + + if isBezier is True: + if so.highlight_beziers is True: + pathElement.style = bezierPathStyle + + if isPoly is True: + if so.highlight_polylines is True: + pathElement.style = polylinePathStyle + + if isPolyBezMixed is True: + if so.highlight_poly_bez_mixed is True: + pathElement.style = mixedPolyBezPathStyle + + if isClosed is True: + if so.highlight_closed is True: + pathElement.style = closedPathStyle + else: + if so.highlight_opened is True: + pathElement.style = openPathStyle + + if isSelfIntersecting is True: + if so.highlight_self_intersecting is True: + pathElement.style = selfIntersectingPathStyle + + if so.draw_subsplit is True: + if subSplitLineGroup is not None: #might get deleted before so we need to check this first + subSplitLineGroup = reversed(subSplitLineGroup) #reverse the order to match the original path segment placing + + if so.show_debug is True: + self.msg("sub split line count: {}".format(len(subSplitLineArray))) + + ''' + check for collinear lines and apply filters to remove or regroup and to restyle them + Run this action only if one of the options requires it (to avoid useless calculation cycles) + ''' + if so.filter_subsplit_collinear is True or \ + so.highlight_duplicates is True or \ + so.highlight_merges is True: + if so.show_debug is True: self.msg("filtering collinear overlapping lines / duplicate lines") + if len(subSplitLineArray) > 0: + output_set, dropped_ids = self.filter_collinear(subSplitLineArray) + deleteIndices = [] + deleteIndice = 0 + for subSplitLine in subSplitLineArray: + ''' + Replace the overlapping items with the new merged output + ''' + for output in output_set: + if output['id'] == subSplitLine.attrib['id']: + originalSplitLinePath = subSplitLine.path + output_line = 'M {},{} L {},{}'.format( + output['p0'][0], output['p0'][1], output['p1'][0], output['p1'][1]) + output_line_reversed = 'M {},{} L {},{}'.format( + output['p1'][0], output['p1'][1], output['p0'][0], output['p0'][1]) + subSplitLine.attrib['d'] = output_line #we set the path using 'd' attribute because if we use trimLine.path the decimals get cut off unwantedly + mergedSplitLinePath = subSplitLine.path + mergedSplitLinePathReversed = Path(output_line_reversed) + #subSplitLine.path = [['M', output['p0']], ['L', output['p1']]] + #self.msg("composed_transform = {}".format(output['composed_transform'])) + #subSplitLine.transform = Transform(-output['composed_transform']) * subSplitLine.transform + + subSplitLine.path = subSplitLine.path.transform(-output['composed_transform']) + if so.highlight_merges is True: + if originalSplitLinePath != mergedSplitLinePath and \ + originalSplitLinePath != mergedSplitLinePathReversed: #if the path changed we are going to highlight it + subSplitLine.style = mergesPathStyle + + + ''' + Delete or move sub split lines which are overlapping + ''' + ssl_id = subSplitLine.get('id') + if ssl_id in dropped_ids: + if so.highlight_duplicates is True: + subSplitLine.style = duplicatesPathStyle + + if so.filter_subsplit_collinear is True: + ssl_parent = subSplitLine.getparent() + if so.filter_subsplit_collinear_action == "remove": + if self.options.show_debug is True: + self.msg("Deleting sub split line {}".format(subSplitLine.get('id'))) + subSplitLine.delete() #delete the line from XML tree + deleteIndices.append(deleteIndice) #store this id to remove it from stupid subSplitLineArray later + elif so.filter_subsplit_collinear_action == "separate_group": + if self.options.show_debug is True: + self.msg("Moving sub split line {}".format(subSplitLine.get('id'))) + originalPathId = subSplitLine.attrib['originalPathId'] + collinearGroupId = '{}-{}'.format(collinearVerb, originalPathId) + originalPathElement = self.svg.getElementById(originalPathId) + collinearGroup = self.find_group(collinearGroupId) + if collinearGroup is None: + collinearGroup = originalPathElement.getparent().add(inkex.Group(id=collinearGroupId)) + collinearGroup.append(subSplitLine) #move to that group + #and delete the containg group if empty (can happen in "remove" or "separate_group" constellation + if ssl_parent is not None and len(ssl_parent) == 0: + if self.options.show_debug is True: + self.msg("Deleting group {}".format(ssl_parent.get('id'))) + ssl_parent.delete() + + deleteIndice += 1 #end the loop by incrementing +1 + + #shrink the sub split line array to kick out all unrequired indices + for deleteIndice in sorted(deleteIndices, reverse=True): + if self.options.show_debug is True: + self.msg("Deleting index {} from subSplitLineArray".format(deleteIndice)) + del subSplitLineArray[deleteIndice] + + ''' + now we intersect the sub split lines to find the global intersection points using Bentley-Ottmann algorithm (contains self-intersections too!) + ''' + if so.draw_trimmed is True: + try: + #some config for Bentley Ottmann + poly_point_isect.USE_IGNORE_SEGMENT_ENDINGS = so.bent_ott_use_ignore_segment_endings + poly_point_isect.USE_DEBUG = so.bent_ott_use_debug + poly_point_isect.USE_VERBOSE = so.bent_ott_use_verbose + if so.show_debug is False: + poly_point_isect.USE_VERBOSE = False + poly_point_isect.USE_PARANOID = so.bent_ott_use_paranoid + poly_point_isect.USE_VERTICAL = so.bent_ott_use_vertical + NUMBER_TYPE = so.bent_ott_number_type + if NUMBER_TYPE == 'native': + Real = float + NUM_EPS = Real("1e-10") + NUM_INF = Real(float("inf")) + elif NUMBER_TYPE == 'numpy': + import numpy + Real = numpy.float64 + del numpy + NUM_EPS = Real("1e-10") + NUM_INF = Real(float("inf")) + poly_point_isect.Real = Real + poly_point_isect.NUM_EPS = NUM_EPS + poly_point_isect.NUM_INF = NUM_INF + poly_point_isect.NUM_EPS_SQ = NUM_EPS * NUM_EPS + poly_point_isect.NUM_ZERO = Real(0.0) + poly_point_isect.NUM_ONE = Real(1.0) + + + allSubSplitLineStrings = [] + allSubSplitLineStringsTransformed = [] + for subSplitLine in subSplitLineArray: + csp = subSplitLine.path.to_arrays() + if subSplitLine.getparent() != None: + cspTransformed = Path(subSplitLine.path.transform(subSplitLine.getparent().composed_transform())).to_arrays() + else: + cspTransformed = csp + lineString = [(csp[0][1][0], csp[0][1][1]), (csp[1][1][0], csp[1][1][1])] + lineStringTransformed = [(cspTransformed[0][1][0], cspTransformed[0][1][1]), (cspTransformed[1][1][0], cspTransformed[1][1][1])] + if so.remove_trim_duplicates is True: + if so.visualize_global_intersections is True: #ignore that calculation if false + if lineStringTransformed not in allSubSplitLineStringsTransformed: + allSubSplitLineStringsTransformed.append(lineStringTransformed) + else: + if so.show_debug is True: + self.msg("transformed line {} already in sub split line collection. Dropping ...".format(lineStringTransformed)) + if lineString not in allSubSplitLineStrings: + allSubSplitLineStrings.append(lineString) + else: + if so.show_debug is True: + self.msg("line {} already in sub split line collection. Dropping ...".format(lineString)) + else: #if false we append all segments without filtering duplicate ones + allSubSplitLineStrings.append(lineString) + if so.visualize_global_intersections is True: #ignore that calculation if false + allSubSplitLineStringsTransformed.append(allSubSplitLineStringsTransformed) + + if so.show_debug is True: + self.msg("Going to calculate intersections using Bentley Ottmann Sweep Line Algorithm") + globalIntersectionPoints = MultiPoint(isect_segments(allSubSplitLineStrings, validate=True)) + if so.visualize_global_intersections is True: #ignore that calculation to save time + globalIntersectionPointsTransformed = MultiPoint(isect_segments(allSubSplitLineStringsTransformed, validate=True)) + + if so.show_debug is True: + self.msg("global intersection points count: {}".format(len(globalIntersectionPoints))) + if len(globalIntersectionPoints) > 0: + if so.visualize_global_intersections is True: + self.visualize_global_intersections(globalIntersectionPointsTransformed) + + ''' + now we trim the sub split lines at all calculated intersection points. + We do this path by path to keep the logic between original paths, sub split lines and the final output + ''' + allTrimGroups = [] #container to collect all trim groups for later on processing + for subSplitIndex in range(len(subSplitLineArray)): + trimGroup = self.build_trim_line_group(subSplitLineArray, subSplitIndex, globalIntersectionPoints) + if trimGroup is not None: + if trimGroup not in allTrimGroups: + allTrimGroups.append(trimGroup) + + if so.show_debug is True: self.msg("trim groups count: {}".format(len(allTrimGroups))) + if len(allTrimGroups) == 0: + self.msg("You selected to draw trimmed lines but no intersections could be calculated.") + + if so.bezier_trimming is True: + if so.show_debug is True: self.msg("trimming beziers - not working yet") + self.trim_bezier(allTrimGroups) + + if so.remove_trim_duplicates is True: + if so.show_debug is True: self.msg("checking for duplicate trim lines and deleting them") + self.remove_trim_duplicates(allTrimGroups) + + if so.combine_nonintersects is True: + if so.show_debug is True: self.msg("glueing together all non-intersected sub split lines to larger path structures again (cleaning up)") + self.combine_nonintersects(allTrimGroups) + + if so.remove_subsplit_after_trimming is True: + if so.show_debug is True: self.msg("removing unwanted subsplit lines after trimming") + for subSplitLine in subSplitLineArray: + ssl_parent = subSplitLine.getparent() + subSplitLine.delete() + if ssl_parent is not None and len(ssl_parent) == 0: + if self.options.show_debug is True: + self.msg("Deleting group {}".format(ssl_parent.get('id'))) + ssl_parent.delete() + + except AssertionError as e: + self.msg("Error calculating global intersections.\n\ +See https://github.com/ideasman42/isect_segments-bentley_ottmann.\n\n\ +You can try to fix this by:\n\ +- reduce or raise the 'decimals' setting (default is 3 but try to set to 6 for example)\n\ +- reduce or raise the 'flatness' setting (if quantization option is used at all; default is 0.100).") + return + + #clean original paths if selected. + if so.delete_original_after_split_trim is True: + if so.show_debug is True: self.msg("cleaning original paths after sub splitting / trimming") + for pathElement in pathElements: + pathElement.delete() + +if __name__ == '__main__': + ContourScannerAndTrimmer().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/contour_scanner_and_trimmer/poly_point_isect.py b/extensions/fablabchemnitz/contour_scanner_and_trimmer/poly_point_isect.py new file mode 100644 index 00000000..4d1a3028 --- /dev/null +++ b/extensions/fablabchemnitz/contour_scanner_and_trimmer/poly_point_isect.py @@ -0,0 +1,1306 @@ +# BentleyOttmann sweep-line implementation +# (for finding all intersections in a set of line segments) + +from __future__ import annotations +import inkex + +__all__ = ( + "isect_segments", + "isect_polygon", + + # same as above but includes segments with each intersections + "isect_segments_include_segments", + "isect_polygon_include_segments", + + # for testing only (correct but slow) + "isect_segments__naive", + "isect_polygon__naive", +) + +# ---------------------------------------------------------------------------- +# Main Poly Intersection + +# Defines to change behavior. +# +# Whether to ignore intersections of line segments when both +# their end points form the intersection point. +USE_IGNORE_SEGMENT_ENDINGS = True + +USE_DEBUG = True + +USE_VERBOSE = False + +# checks we should NOT need, +# but do them in case we find a test-case that fails. +USE_PARANOID = False + +# Support vertical segments, +# (the bentley-ottmann method doesn't support this). +# We use the term 'START_VERTICAL' for a vertical segment, +# to differentiate it from START/END/INTERSECTION +USE_VERTICAL = True +# end defines! +# ------------ + +# --------- +# Constants +X, Y = 0, 1 + +# ----------------------------------------------------------------------------- +# Switchable Number Implementation + +NUMBER_TYPE = 'native' + +if NUMBER_TYPE == 'native': + Real = float + NUM_EPS = Real("1e-10") + NUM_INF = Real(float("inf")) +elif NUMBER_TYPE == 'decimal': + # Not passing tests! + import decimal + Real = decimal.Decimal + decimal.getcontext().prec = 80 + NUM_EPS = Real("1e-10") + NUM_INF = Real(float("inf")) +elif NUMBER_TYPE == 'numpy': + import numpy + Real = numpy.float64 + del numpy + NUM_EPS = Real("1e-10") + NUM_INF = Real(float("inf")) +elif NUMBER_TYPE == 'gmpy2': + # Not passing tests! + import gmpy2 + gmpy2.set_context(gmpy2.ieee(128)) + Real = gmpy2.mpz + NUM_EPS = Real(float("1e-10")) + NUM_INF = gmpy2.get_emax_max() + del gmpy2 +else: + raise Exception("Type not found") + +NUM_EPS_SQ = NUM_EPS * NUM_EPS +NUM_ZERO = Real(0.0) +NUM_ONE = Real(1.0) + + +class Event: + __slots__ = ( + "type", + "point", + "segment", + + # this is just cache, + # we may remove or calculate slope on the fly + "slope", + "span", + ) + (() if not USE_DEBUG else ( + # debugging only + "other", + "in_sweep", + )) + + class Type: + END = 0 + INTERSECTION = 1 + START = 2 + if USE_VERTICAL: + START_VERTICAL = 3 + + def __init__(self, type, point, segment, slope): + assert(isinstance(point, tuple)) + self.type = type + self.point = point + self.segment = segment + + # will be None for INTERSECTION + self.slope = slope + if segment is not None: + self.span = segment[1][X] - segment[0][X] + + if USE_DEBUG: + self.other = None + self.in_sweep = False + + # note that this isn't essential, + # it just avoids non-deterministic ordering, see #9. + def __hash__(self): + return hash(self.point) + + def is_vertical(self): + # return self.segment[0][X] == self.segment[1][X] + return self.span == NUM_ZERO + + def y_intercept_x(self, x: Real): + # vertical events only for comparison (above_all check) + # never added into the binary-tree its self + if USE_VERTICAL: + if self.is_vertical(): + return None + + if x <= self.segment[0][X]: + return self.segment[0][Y] + elif x >= self.segment[1][X]: + return self.segment[1][Y] + + # use the largest to avoid float precision error with nearly vertical lines. + delta_x0 = x - self.segment[0][X] + delta_x1 = self.segment[1][X] - x + if delta_x0 > delta_x1: + ifac = delta_x0 / self.span + fac = NUM_ONE - ifac + else: + fac = delta_x1 / self.span + ifac = NUM_ONE - fac + assert(fac <= NUM_ONE) + return (self.segment[0][Y] * fac) + (self.segment[1][Y] * ifac) + + @staticmethod + def Compare(sweep_line, this, that): + if this is that: + return 0 + if USE_DEBUG: + if this.other is that: + return 0 + current_point_x = sweep_line._current_event_point_x + this_y = this.y_intercept_x(current_point_x) + that_y = that.y_intercept_x(current_point_x) + # print(this_y, that_y) + if USE_VERTICAL: + if this_y is None: + this_y = this.point[Y] + if that_y is None: + that_y = that.point[Y] + + delta_y = this_y - that_y + + assert((delta_y < NUM_ZERO) == (this_y < that_y)) + # NOTE, VERY IMPORTANT TO USE EPSILON HERE! + # otherwise w/ float precision errors we get incorrect comparisons + # can get very strange & hard to debug output without this. + if abs(delta_y) > NUM_EPS: + return -1 if (delta_y < NUM_ZERO) else 1 + else: + this_slope = this.slope + that_slope = that.slope + if this_slope != that_slope: + if sweep_line._before: + return -1 if (this_slope > that_slope) else 1 + else: + return 1 if (this_slope > that_slope) else -1 + + delta_x_p1 = this.segment[0][X] - that.segment[0][X] + if delta_x_p1 != NUM_ZERO: + return -1 if (delta_x_p1 < NUM_ZERO) else 1 + + delta_x_p2 = this.segment[1][X] - that.segment[1][X] + if delta_x_p2 != NUM_ZERO: + return -1 if (delta_x_p2 < NUM_ZERO) else 1 + + return 0 + + def __repr__(self): + return ("Event(0x%x, s0=%r, s1=%r, p=%r, type=%d, slope=%r)" % ( + id(self), + self.segment[0], self.segment[1], + self.point, + self.type, + self.slope, + )) + + +class SweepLine: + __slots__ = ( + # A map holding all intersection points mapped to the Events + # that form these intersections. + # {Point: set(Event, ...), ...} + "intersections", + "queue", + + # Events (sorted set of ordered events, no values) + # + # note: START & END events are considered the same so checking if an event is in the tree + # will return true if its opposite side is found. + # This is essential for the algorithm to work, and why we don't explicitly remove START events. + # Instead, the END events are never added to the current sweep, and removing them also removes the start. + "_events_current_sweep", + # The point of the current Event. + "_current_event_point_x", + # A flag to indicate if we're slightly before or after the line. + "_before", + ) + + def __init__(self, queue: EventQueue): + self.intersections = {} + self.queue = queue + + self._current_event_point_x = None + self._events_current_sweep = RBTree(cmp=Event.Compare, cmp_data=self) + self._before = True + + def get_intersections(self): + """ + Return a list of unordered intersection points. + """ + if Real is float: + return list(self.intersections.keys()) + else: + return [(float(p[0]), float(p[1])) for p in self.intersections.keys()] + + # Not essential for implementing this algorithm, but useful. + def get_intersections_with_segments(self): + """ + Return a list of unordered intersection '(point, segment)' pairs, + where segments may contain 2 or more values. + """ + if Real is float: + return [ + (p, [event.segment for event in event_set]) + for p, event_set in self.intersections.items() + ] + else: + return [ + ( + (float(p[0]), float(p[1])), + [((float(event.segment[0][0]), float(event.segment[0][1])), + (float(event.segment[1][0]), float(event.segment[1][1]))) + for event in event_set], + ) + for p, event_set in self.intersections.items() + ] + + # Checks if an intersection exists between two Events 'a' and 'b'. + def _check_intersection(self, a: Event, b: Event): + # Return immediately in case either of the events is null, or + # if one of them is an INTERSECTION event. + if ( + (a is None or b is None) or + (a.type == Event.Type.INTERSECTION) or + (b.type == Event.Type.INTERSECTION) + ): + return + + if a is b: + return + + # Get the intersection point between 'a' and 'b'. + p = isect_seg_seg_v2_point( + a.segment[0], a.segment[1], + b.segment[0], b.segment[1], + ) + + # No intersection exists. + if p is None: + return + + # If the intersection is formed by both the segment endings, AND + # USE_IGNORE_SEGMENT_ENDINGS is true, + # return from this method. + if USE_IGNORE_SEGMENT_ENDINGS: + if ((len_squared_v2v2(p, a.segment[0]) < NUM_EPS_SQ or + len_squared_v2v2(p, a.segment[1]) < NUM_EPS_SQ) and + (len_squared_v2v2(p, b.segment[0]) < NUM_EPS_SQ or + len_squared_v2v2(p, b.segment[1]) < NUM_EPS_SQ)): + + return + + # Add the intersection. + events_for_point = self.intersections.pop(p, set()) + is_new = len(events_for_point) == 0 + events_for_point.add(a) + events_for_point.add(b) + self.intersections[p] = events_for_point + + # If the intersection occurs to the right of the sweep line, OR + # if the intersection is on the sweep line and it's above the + # current event-point, add it as a new Event to the queue. + if is_new and p[X] >= self._current_event_point_x: + event_isect = Event(Event.Type.INTERSECTION, p, None, None) + self.queue.offer(p, event_isect) + + def _sweep_to(self, p): + if p[X] == self._current_event_point_x: + # happens in rare cases, + # we can safely ignore + return + + self._current_event_point_x = p[X] + + def insert(self, event): + assert(event not in self._events_current_sweep) + assert(not USE_VERTICAL or event.type != Event.Type.START_VERTICAL) + if USE_DEBUG: + assert(event.in_sweep == False) + assert(event.other.in_sweep == False) + + self._events_current_sweep.insert(event, None) + + if USE_DEBUG: + event.in_sweep = True + event.other.in_sweep = True + + def remove(self, event): + try: + self._events_current_sweep.remove(event) + if USE_DEBUG: + assert(event.in_sweep == True) + assert(event.other.in_sweep == True) + event.in_sweep = False + event.other.in_sweep = False + return True + except KeyError: + if USE_DEBUG: + assert(event.in_sweep == False) + assert(event.other.in_sweep == False) + return False + + def above(self, event): + return self._events_current_sweep.succ_key(event, None) + + def below(self, event): + return self._events_current_sweep.prev_key(event, None) + + ''' + def above_all(self, event): + while True: + event = self.above(event) + if event is None: + break + yield event + ''' + + def above_all(self, event): + # assert(event not in self._events_current_sweep) + return self._events_current_sweep.key_slice(event, None, reverse=False) + + def handle(self, p, events_current): + if len(events_current) == 0: + return + # done already + # self._sweep_to(events_current[0]) + assert(p[0] == self._current_event_point_x) + + if not USE_IGNORE_SEGMENT_ENDINGS: + if len(events_current) > 1: + for i in range(0, len(events_current) - 1): + for j in range(i + 1, len(events_current)): + self._check_intersection( + events_current[i], events_current[j]) + + for e in events_current: + self.handle_event(e) + + def handle_event(self, event): + t = event.type + if t == Event.Type.START: + # print(" START") + self._before = False + self.insert(event) + + e_above = self.above(event) + e_below = self.below(event) + + self._check_intersection(event, e_above) + self._check_intersection(event, e_below) + if USE_PARANOID: + self._check_intersection(e_above, e_below) + + elif t == Event.Type.END: + # print(" END") + self._before = True + + e_above = self.above(event) + e_below = self.below(event) + + self.remove(event) + + self._check_intersection(e_above, e_below) + if USE_PARANOID: + self._check_intersection(event, e_above) + self._check_intersection(event, e_below) + + elif t == Event.Type.INTERSECTION: + # print(" INTERSECTION") + self._before = True + event_set = self.intersections[event.point] + # note: events_current aren't sorted. + reinsert_stack = [] # Stack + for e in event_set: + # Since we know the Event wasn't already removed, + # we want to insert it later on. + if self.remove(e): + reinsert_stack.append(e) + self._before = False + + # Insert all Events that we were able to remove. + while reinsert_stack: + e = reinsert_stack.pop() + + self.insert(e) + + e_above = self.above(e) + e_below = self.below(e) + + self._check_intersection(e, e_above) + self._check_intersection(e, e_below) + if USE_PARANOID: + self._check_intersection(e_above, e_below) + elif (USE_VERTICAL and + (t == Event.Type.START_VERTICAL)): + + # just check sanity + assert(event.segment[0][X] == event.segment[1][X]) + assert(event.segment[0][Y] <= event.segment[1][Y]) + + # In this case we only need to find all segments in this span. + y_above_max = event.segment[1][Y] + + # self.insert(event) + for e_above in self.above_all(event): + if e_above.type == Event.Type.START_VERTICAL: + continue + y_above = e_above.y_intercept_x( + self._current_event_point_x) + if USE_IGNORE_SEGMENT_ENDINGS: + if y_above >= y_above_max - NUM_EPS: + break + else: + if y_above > y_above_max: + break + + # We know this intersects, + # so we could use a faster function now: + # ix = (self._current_event_point_x, y_above) + # ...however best use existing functions + # since it does all sanity checks on endpoints... etc. + self._check_intersection(event, e_above) + + # self.remove(event) + + +class EventQueue: + __slots__ = ( + # note: we only ever pop_min, this could use a 'heap' structure. + # The sorted map holding the points -> event list + # [Point: Event] (tree) + "events_scan", + ) + + def __init__(self, segments): + self.events_scan = RBTree() + # segments = [s for s in segments if s[0][0] != s[1][0] and s[0][1] != s[1][1]] + + for s in segments: + assert(s[0][X] <= s[1][X]) + + slope = slope_v2v2(*s) + + if s[0] == s[1]: + pass + elif USE_VERTICAL and (s[0][X] == s[1][X]): + e_start = Event(Event.Type.START_VERTICAL, s[0], s, slope) + + if USE_DEBUG: + e_start.other = e_start # FAKE, avoid error checking + + self.offer(s[0], e_start) + else: + e_start = Event(Event.Type.START, s[0], s, slope) + e_end = Event(Event.Type.END, s[1], s, slope) + + if USE_DEBUG: + e_start.other = e_end + e_end.other = e_start + + self.offer(s[0], e_start) + self.offer(s[1], e_end) + + def offer(self, p, e: Event): + """ + Offer a new event ``s`` at point ``p`` in this queue. + """ + existing = self.events_scan.setdefault( + p, ([], [], [], []) if USE_VERTICAL else + ([], [], []), + ) + # Can use double linked-list for easy insertion at beginning/end + ''' + if e.type == Event.Type.END: + existing.insert(0, e) + else: + existing.append(e) + ''' + + existing[e.type].append(e) + + # return a set of events + def poll(self): + """ + Get, and remove, the first (lowest) item from this queue. + + :return: the first (lowest) item from this queue. + :rtype: Point, Event pair. + """ + assert(len(self.events_scan) != 0) + p, events_current = self.events_scan.pop_min() + return p, events_current + + +def isect_segments_impl(segments, *, include_segments=False, validate=True) -> list: + # order points left -> right + if Real is float: + segments = [ + # in nearly all cases, comparing X is enough, + # but compare Y too for vertical lines + (s[0], s[1]) if (s[0] <= s[1]) else + (s[1], s[0]) + for s in segments] + else: + segments = [ + # in nearly all cases, comparing X is enough, + # but compare Y too for vertical lines + ( + (Real(s[0][0]), Real(s[0][1])), + (Real(s[1][0]), Real(s[1][1])), + ) if (s[0] <= s[1]) else + ( + (Real(s[1][0]), Real(s[1][1])), + (Real(s[0][0]), Real(s[0][1])), + ) + for s in segments] + + # Ensure segments don't have duplicates or single points, see: #24. + if validate: + segments_old = segments + segments = [] + visited = set() + for s in segments_old: + # Ignore points. + if s[0] == s[1]: + continue + # Ignore duplicates. + if s in visited: + continue + visited.add(s) + segments.append(s) + del segments_old + + queue = EventQueue(segments) + sweep_line = SweepLine(queue) + + while len(queue.events_scan) > 0: + if USE_VERBOSE: + inkex.utils.debug("event {}: x={}".format(len(queue.events_scan), sweep_line._current_event_point_x)) + p, e_ls = queue.poll() + for events_current in e_ls: + if events_current: + sweep_line._sweep_to(p) + sweep_line.handle(p, events_current) + + if include_segments is False: + return sweep_line.get_intersections() + else: + return sweep_line.get_intersections_with_segments() + + +def isect_polygon_impl(points, *, include_segments=False, validate=True) -> list: + n = len(points) + segments = [ + (tuple(points[i]), tuple(points[(i + 1) % n])) + for i in range(n) + ] + return isect_segments_impl(segments, include_segments=include_segments, validate=validate) + + +def isect_segments(segments, *, validate=True) -> list: + return isect_segments_impl(segments, include_segments=False, validate=validate) + + +def isect_polygon(segments, *, validate=True) -> list: + return isect_polygon_impl(segments, include_segments=False, validate=validate) + + +def isect_segments_include_segments(segments, *, validate=True) -> list: + return isect_segments_impl(segments, include_segments=True, validate=validate) + + +def isect_polygon_include_segments(segments, *, validate=True) -> list: + return isect_polygon_impl(segments, include_segments=True, validate=validate) + + +# ---------------------------------------------------------------------------- +# 2D math utilities + + +def slope_v2v2(p1, p2): + if p1[X] == p2[X]: + if p1[Y] < p2[Y]: + return NUM_INF + else: + return -NUM_INF + else: + return (p2[Y] - p1[Y]) / (p2[X] - p1[X]) + + +def sub_v2v2(a, b): + return ( + a[0] - b[0], + a[1] - b[1]) + + +def dot_v2v2(a, b): + return ( + (a[0] * b[0]) + + (a[1] * b[1])) + + +def len_squared_v2v2(a, b): + c = sub_v2v2(a, b) + return dot_v2v2(c, c) + + +def line_point_factor_v2(p, l1, l2, default=NUM_ZERO): + u = sub_v2v2(l2, l1) + h = sub_v2v2(p, l1) + dot = dot_v2v2(u, u) + return (dot_v2v2(u, h) / dot) if dot != NUM_ZERO else default + + +def isect_seg_seg_v2_point(v1, v2, v3, v4, bias=NUM_ZERO): + # Only for predictability and hashable point when same input is given + if v1 > v2: + v1, v2 = v2, v1 + if v3 > v4: + v3, v4 = v4, v3 + + if (v1, v2) > (v3, v4): + v1, v2, v3, v4 = v3, v4, v1, v2 + + div = (v2[0] - v1[0]) * (v4[1] - v3[1]) - (v2[1] - v1[1]) * (v4[0] - v3[0]) + if div == NUM_ZERO: + return None + + vi = (((v3[0] - v4[0]) * + (v1[0] * v2[1] - v1[1] * v2[0]) - (v1[0] - v2[0]) * + (v3[0] * v4[1] - v3[1] * v4[0])) / div, + ((v3[1] - v4[1]) * + (v1[0] * v2[1] - v1[1] * v2[0]) - (v1[1] - v2[1]) * + (v3[0] * v4[1] - v3[1] * v4[0])) / div, + ) + + fac = line_point_factor_v2(vi, v1, v2, default=-NUM_ONE) + if fac < NUM_ZERO - bias or fac > NUM_ONE + bias: + return None + + fac = line_point_factor_v2(vi, v3, v4, default=-NUM_ONE) + if fac < NUM_ZERO - bias or fac > NUM_ONE + bias: + return None + + # vi = round(vi[X], 8), round(vi[Y], 8) + return vi + + +# ---------------------------------------------------------------------------- +# Simple naive line intersect, (for testing only) + + +def isect_segments__naive(segments) -> list: + """ + Brute force O(n2) version of ``isect_segments`` for test validation. + """ + isect = [] + + # order points left -> right + if Real is float: + segments = [ + (s[0], s[1]) if s[0][X] <= s[1][X] else + (s[1], s[0]) + for s in segments] + else: + segments = [ + ( + (Real(s[0][0]), Real(s[0][1])), + (Real(s[1][0]), Real(s[1][1])), + ) if (s[0] <= s[1]) else + ( + (Real(s[1][0]), Real(s[1][1])), + (Real(s[0][0]), Real(s[0][1])), + ) + for s in segments] + + n = len(segments) + + for i in range(n): + a0, a1 = segments[i] + for j in range(i + 1, n): + b0, b1 = segments[j] + if a0 not in (b0, b1) and a1 not in (b0, b1): + ix = isect_seg_seg_v2_point(a0, a1, b0, b1) + if ix is not None: + # USE_IGNORE_SEGMENT_ENDINGS handled already + isect.append(ix) + + return isect + + +def isect_polygon__naive(points) -> list: + """ + Brute force O(n2) version of ``isect_polygon`` for test validation. + """ + isect = [] + + n = len(points) + + if Real is float: + pass + else: + points = [(Real(p[0]), Real(p[1])) for p in points] + + + for i in range(n): + a0, a1 = points[i], points[(i + 1) % n] + for j in range(i + 1, n): + b0, b1 = points[j], points[(j + 1) % n] + if a0 not in (b0, b1) and a1 not in (b0, b1): + ix = isect_seg_seg_v2_point(a0, a1, b0, b1) + if ix is not None: + + if USE_IGNORE_SEGMENT_ENDINGS: + if ((len_squared_v2v2(ix, a0) < NUM_EPS_SQ or + len_squared_v2v2(ix, a1) < NUM_EPS_SQ) and + (len_squared_v2v2(ix, b0) < NUM_EPS_SQ or + len_squared_v2v2(ix, b1) < NUM_EPS_SQ)): + continue + + isect.append(ix) + + return isect + + +# ---------------------------------------------------------------------------- +# Inline Libs +# +# bintrees: 2.0.2, extracted from: +# http://pypi.python.org/pypi/bintrees +# +# - Removed unused functions, such as slicing and range iteration. +# - Added 'cmp' and and 'cmp_data' arguments, +# so we can define our own comparison that takes an arg. +# Needed for sweep-line. +# - Added support for 'default' arguments for prev_item/succ_item, +# so we can avoid exception handling. + +# ------- +# ABCTree + +from operator import attrgetter +_sentinel = object() + + +class _ABCTree(object): + def __init__(self, cmp=None, cmp_data=None): + """T.__init__(...) initializes T; see T.__class__.__doc__ for signature""" + self._root = None + self._count = 0 + if cmp is None: + def cmp(cmp_data, a, b): + if a < b: + return -1 + elif a > b: + return 1 + else: + return 0 + self._cmp = cmp + self._cmp_data = cmp_data + + def clear(self): + """T.clear() -> None. Remove all items from T.""" + def _clear(node): + if node is not None: + _clear(node.left) + _clear(node.right) + node.free() + _clear(self._root) + self._count = 0 + self._root = None + + @property + def count(self): + """Get items count.""" + return self._count + + def _get_value_or_sentinel(self, key): + node = self._root + while node is not None: + cmp = self._cmp(self._cmp_data, key, node.key) + if cmp == 0: + return node.value + elif cmp < 0: + node = node.left + else: + node = node.right + return _sentinel + + def get_value(self, key): + value = self._get_value_or_sentinel(key) + if value is _sentinel: + raise KeyError(str(key)) + return value + + def pop_item(self): + """T.pop_item() -> (k, v), remove and return some (key, value) pair as a + 2-tuple; but raise KeyError if T is empty. + """ + if self.is_empty(): + raise KeyError("pop_item(): tree is empty") + node = self._root + while True: + if node.left is not None: + node = node.left + elif node.right is not None: + node = node.right + else: + break + key = node.key + value = node.value + self.remove(key) + return key, value + popitem = pop_item # for compatibility to dict() + + def min_item(self): + """Get item with min key of tree, raises ValueError if tree is empty.""" + if self.is_empty(): + raise ValueError("Tree is empty") + node = self._root + while node.left is not None: + node = node.left + return node.key, node.value + + def max_item(self): + """Get item with max key of tree, raises ValueError if tree is empty.""" + if self.is_empty(): + raise ValueError("Tree is empty") + node = self._root + while node.right is not None: + node = node.right + return node.key, node.value + + def succ_item(self, key, default=_sentinel): + """Get successor (k,v) pair of key, raises KeyError if key is max key + or key does not exist. optimized for pypy. + """ + # removed graingets version, because it was little slower on CPython and much slower on pypy + # this version runs about 4x faster with pypy than the Cython version + # Note: Code sharing of succ_item() and ceiling_item() is possible, but has always a speed penalty. + node = self._root + succ_node = None + while node is not None: + cmp = self._cmp(self._cmp_data, key, node.key) + if cmp == 0: + break + elif cmp < 0: + if (succ_node is None) or self._cmp(self._cmp_data, node.key, succ_node.key) < 0: + succ_node = node + node = node.left + else: + node = node.right + + if node is None: # stay at dead end + if default is _sentinel: + raise KeyError(str(key)) + return default + # found node of key + if node.right is not None: + # find smallest node of right subtree + node = node.right + while node.left is not None: + node = node.left + if succ_node is None: + succ_node = node + elif self._cmp(self._cmp_data, node.key, succ_node.key) < 0: + succ_node = node + elif succ_node is None: # given key is biggest in tree + if default is _sentinel: + raise KeyError(str(key)) + return default + return succ_node.key, succ_node.value + + def prev_item(self, key, default=_sentinel): + """Get predecessor (k,v) pair of key, raises KeyError if key is min key + or key does not exist. optimized for pypy. + """ + # removed graingets version, because it was little slower on CPython and much slower on pypy + # this version runs about 4x faster with pypy than the Cython version + # Note: Code sharing of prev_item() and floor_item() is possible, but has always a speed penalty. + node = self._root + prev_node = None + + while node is not None: + cmp = self._cmp(self._cmp_data, key, node.key) + if cmp == 0: + break + elif cmp < 0: + node = node.left + else: + if (prev_node is None) or self._cmp(self._cmp_data, prev_node.key, node.key) < 0: + prev_node = node + node = node.right + + if node is None: # stay at dead end (None) + if default is _sentinel: + raise KeyError(str(key)) + return default + # found node of key + if node.left is not None: + # find biggest node of left subtree + node = node.left + while node.right is not None: + node = node.right + if prev_node is None: + prev_node = node + elif self._cmp(self._cmp_data, prev_node.key, node.key) < 0: + prev_node = node + elif prev_node is None: # given key is smallest in tree + if default is _sentinel: + raise KeyError(str(key)) + return default + return prev_node.key, prev_node.value + + def __repr__(self): + """T.__repr__(...) <==> repr(x)""" + tpl = "%s({%s})" % (self.__class__.__name__, '%s') + return tpl % ", ".join(("%r: %r" % item for item in self.items())) + + def __contains__(self, key): + """k in T -> True if T has a key k, else False""" + return self._get_value_or_sentinel(key) is not _sentinel + + def __len__(self): + """T.__len__() <==> len(x)""" + return self.count + + def is_empty(self): + """T.is_empty() -> False if T contains any items else True""" + return self.count == 0 + + def set_default(self, key, default=None): + """T.set_default(k[,d]) -> T.get(k,d), also set T[k]=d if k not in T""" + value = self._get_value_or_sentinel(key) + if value is _sentinel: + self.insert(key, default) + return default + return value + setdefault = set_default # for compatibility to dict() + + def get(self, key, default=None): + """T.get(k[,d]) -> T[k] if k in T, else d. d defaults to None.""" + + value = self._get_value_or_sentinel(key) + if value is _sentinel: + return default + return value + + def pop(self, key, *args): + """T.pop(k[,d]) -> v, remove specified key and return the corresponding value. + If key is not found, d is returned if given, otherwise KeyError is raised + """ + if len(args) > 1: + raise TypeError("pop expected at most 2 arguments, got %d" % (1 + len(args))) + + value = self._get_value_or_sentinel(key) + if value is _sentinel: + if len(args) == 0: + raise KeyError(str(key)) + return args[0] + + self.remove(key) + return value + + def prev_key(self, key, default=_sentinel): + """Get predecessor to key, raises KeyError if key is min key + or key does not exist. + """ + item = self.prev_item(key, default) + return default if item is default else item[0] + + def succ_key(self, key, default=_sentinel): + """Get successor to key, raises KeyError if key is max key + or key does not exist. + """ + item = self.succ_item(key, default) + return default if item is default else item[0] + + def pop_min(self): + """T.pop_min() -> (k, v), remove item with minimum key, raise ValueError + if T is empty. + """ + item = self.min_item() + self.remove(item[0]) + return item + + def pop_max(self): + """T.pop_max() -> (k, v), remove item with maximum key, raise ValueError + if T is empty. + """ + item = self.max_item() + self.remove(item[0]) + return item + + def min_key(self): + """Get min key of tree, raises ValueError if tree is empty. """ + return self.min_item()[0] + + def max_key(self): + """Get max key of tree, raises ValueError if tree is empty. """ + return self.max_item()[0] + + def key_slice(self, start_key, end_key, reverse=False): + """T.key_slice(start_key, end_key) -> key iterator: + start_key <= key < end_key. + + Yields keys in ascending order if reverse is False else in descending order. + """ + return (k for k, v in self.iter_items(start_key, end_key, reverse=reverse)) + + def iter_items(self, start_key=None, end_key=None, reverse=False): + """Iterates over the (key, value) items of the associated tree, + in ascending order if reverse is True, iterate in descending order, + reverse defaults to False""" + # optimized iterator (reduced method calls) - faster on CPython but slower on pypy + + if self.is_empty(): + return [] + if reverse: + return self._iter_items_backward(start_key, end_key) + else: + return self._iter_items_forward(start_key, end_key) + + def _iter_items_forward(self, start_key=None, end_key=None): + for item in self._iter_items(left=attrgetter("left"), right=attrgetter("right"), + start_key=start_key, end_key=end_key): + yield item + + def _iter_items_backward(self, start_key=None, end_key=None): + for item in self._iter_items(left=attrgetter("right"), right=attrgetter("left"), + start_key=start_key, end_key=end_key): + yield item + + def _iter_items(self, left=attrgetter("left"), right=attrgetter("right"), start_key=None, end_key=None): + node = self._root + stack = [] + go_left = True + in_range = self._get_in_range_func(start_key, end_key) + + while True: + if left(node) is not None and go_left: + stack.append(node) + node = left(node) + else: + if in_range(node.key): + yield node.key, node.value + if right(node) is not None: + node = right(node) + go_left = True + else: + if not len(stack): + return # all done + node = stack.pop() + go_left = False + + def _get_in_range_func(self, start_key, end_key): + if start_key is None and end_key is None: + return lambda x: True + else: + if start_key is None: + start_key = self.min_key() + if end_key is None: + return (lambda x: self._cmp(self._cmp_data, start_key, x) <= 0) + else: + return (lambda x: self._cmp(self._cmp_data, start_key, x) <= 0 and + self._cmp(self._cmp_data, x, end_key) < 0) + + +# ------ +# RBTree + +class Node(object): + """Internal object, represents a tree node.""" + __slots__ = ['key', 'value', 'red', 'left', 'right'] + + def __init__(self, key=None, value=None): + self.key = key + self.value = value + self.red = True + self.left = None + self.right = None + + def free(self): + self.left = None + self.right = None + self.key = None + self.value = None + + def __getitem__(self, key): + """N.__getitem__(key) <==> x[key], where key is 0 (left) or 1 (right).""" + return self.left if key == 0 else self.right + + def __setitem__(self, key, value): + """N.__setitem__(key, value) <==> x[key]=value, where key is 0 (left) or 1 (right).""" + if key == 0: + self.left = value + else: + self.right = value + + +class RBTree(_ABCTree): + """ + RBTree implements a balanced binary tree with a dict-like interface. + + see: http://en.wikipedia.org/wiki/Red_black_tree + """ + @staticmethod + def is_red(node): + if (node is not None) and node.red: + return True + else: + return False + + @staticmethod + def jsw_single(root, direction): + other_side = 1 - direction + save = root[other_side] + root[other_side] = save[direction] + save[direction] = root + root.red = True + save.red = False + return save + + @staticmethod + def jsw_double(root, direction): + other_side = 1 - direction + root[other_side] = RBTree.jsw_single(root[other_side], other_side) + return RBTree.jsw_single(root, direction) + + def _new_node(self, key, value): + """Create a new tree node.""" + self._count += 1 + return Node(key, value) + + def insert(self, key, value): + """T.insert(key, value) <==> T[key] = value, insert key, value into tree.""" + if self._root is None: # Empty tree case + self._root = self._new_node(key, value) + self._root.red = False # make root black + return + + head = Node() # False tree root + grand_parent = None + grand_grand_parent = head + parent = None # parent + direction = 0 + last = 0 + + # Set up helpers + grand_grand_parent.right = self._root + node = grand_grand_parent.right + # Search down the tree + while True: + if node is None: # Insert new node at the bottom + node = self._new_node(key, value) + parent[direction] = node + elif RBTree.is_red(node.left) and RBTree.is_red(node.right): # Color flip + node.red = True + node.left.red = False + node.right.red = False + + # Fix red violation + if RBTree.is_red(node) and RBTree.is_red(parent): + direction2 = 1 if grand_grand_parent.right is grand_parent else 0 + if node is parent[last]: + grand_grand_parent[direction2] = RBTree.jsw_single(grand_parent, 1 - last) + else: + grand_grand_parent[direction2] = RBTree.jsw_double(grand_parent, 1 - last) + + # Stop if found + if self._cmp(self._cmp_data, key, node.key) == 0: + node.value = value # set new value for key + break + + last = direction + direction = 0 if (self._cmp(self._cmp_data, key, node.key) < 0) else 1 + # Update helpers + if grand_parent is not None: + grand_grand_parent = grand_parent + grand_parent = parent + parent = node + node = node[direction] + + self._root = head.right # Update root + self._root.red = False # make root black + + def remove(self, key): + """T.remove(key) <==> del T[key], remove item from tree.""" + if self._root is None: + raise KeyError(str(key)) + head = Node() # False tree root + node = head + node.right = self._root + parent = None + grand_parent = None + found = None # Found item + direction = 1 + + # Search and push a red down + while node[direction] is not None: + last = direction + + # Update helpers + grand_parent = parent + parent = node + node = node[direction] + + direction = 1 if (self._cmp(self._cmp_data, node.key, key) < 0) else 0 + + # Save found node + if self._cmp(self._cmp_data, key, node.key) == 0: + found = node + + # Push the red node down + if not RBTree.is_red(node) and not RBTree.is_red(node[direction]): + if RBTree.is_red(node[1 - direction]): + parent[last] = RBTree.jsw_single(node, direction) + parent = parent[last] + elif not RBTree.is_red(node[1 - direction]): + sibling = parent[1 - last] + if sibling is not None: + if (not RBTree.is_red(sibling[1 - last])) and (not RBTree.is_red(sibling[last])): + # Color flip + parent.red = False + sibling.red = True + node.red = True + else: + direction2 = 1 if grand_parent.right is parent else 0 + if RBTree.is_red(sibling[last]): + grand_parent[direction2] = RBTree.jsw_double(parent, last) + elif RBTree.is_red(sibling[1-last]): + grand_parent[direction2] = RBTree.jsw_single(parent, last) + # Ensure correct coloring + grand_parent[direction2].red = True + node.red = True + grand_parent[direction2].left.red = False + grand_parent[direction2].right.red = False + + # Replace and remove if found + if found is not None: + found.key = node.key + found.value = node.value + parent[int(parent.right is node)] = node[int(node.left is None)] + node.free() + self._count -= 1 + + # Update root and make it black + self._root = head.right + if self._root is not None: + self._root.red = False + if not found: + raise KeyError(str(key)) diff --git a/extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.inx b/extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.inx new file mode 100644 index 00000000..70f25c04 --- /dev/null +++ b/extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.inx @@ -0,0 +1,16 @@ + + + Convert To Polylines + fablabchemnitz.de.convert_to_polylines + + path + + + + + + + + diff --git a/extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.py b/extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.py new file mode 100644 index 00000000..7f3a6401 --- /dev/null +++ b/extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +""" +Extension for InkScape 1.0 + +Converts curves to polylines - a quick and dirty helper for a lot of elements. Basically the same functionality can be done with default UI featureset but with a lot more mouse clicks + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 05.09.2020 +Last patch: 05.09.2020 +License: GNU GPL v3 +""" + +import inkex +from inkex.paths import Path + +class ConvertToPolylines(inkex.EffectExtension): + + #convert a path (curve) to a polyline and remove dangling/duplicate/useless overlapping handles (points) + def convertPath(self, node): + if node.tag == inkex.addNS('path','svg'): + polypath = [] + i = 0 + for x, y in node.path.end_points: + if i == 0: + polypath.append(['M', [x,y]]) + else: + polypath.append(['L', [x,y]]) + if i == 1 and polypath[len(polypath)-2][1] == polypath[len(polypath)-1][1]: + polypath.pop(len(polypath)-1) #special handling for the seconds point after M command + elif polypath[len(polypath)-2] == polypath[len(polypath)-1]: #get the previous point + polypath.pop(len(polypath)-1) + i += 1 + node.set('d', str(Path(polypath))) + children = node.getchildren() + if children is not None: + for child in children: + self.convertPath(child) + + def effect(self): + if len(self.svg.selected) == 0: + self.convertPath(self.document.getroot()) + else: + for id, item in self.svg.selected.items(): + self.convertPath(item) + +if __name__ == '__main__': + ConvertToPolylines().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.inx b/extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.inx new file mode 100644 index 00000000..7c2c9b80 --- /dev/null +++ b/extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.inx @@ -0,0 +1,16 @@ + + + Convert Vertical/Horizontal To Line + fablabchemnitz.de.convert_vertical_horizontal_to_line + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.py b/extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.py new file mode 100644 index 00000000..ef789cb3 --- /dev/null +++ b/extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +#M 60.403,71.0937 V 89.268022 135.773 + +""" +Extension for InkScape 1.X + +This extension converts an SVG path's d attribute the following way: find each V (vertical line) and each H (horizontal line) and replace it by a generic line (L type). +A lot of extensions do not work with V and H, but with L commands. So this is just a helper extension for other extensions :-) + +Example conversion: +from: M 60.403,71.0937 V 89.268022 135.773 +to: M 60.403 71.0937 L 60.403 89.268 L 60.403 135.773 + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 23.08.2020 +Last patch: 23.08.2020 +License: GNU GPL v3 +""" + +from math import * +import inkex +from inkex.paths import Path, CubicSuperPath + +class ConvertVerticalHorizontalToLine(inkex.EffectExtension): + + def effect(self): + if len(self.svg.selected) == 0: exit("Please select at least one path.") + for obj in self.svg.selected: # The objects are the paths, which may be compound + if obj.tag == inkex.addNS('path','svg'): + curr = self.svg.selected[obj] + raw = Path(curr.get("d")).to_arrays() + subpaths, prev = [], 0 + for i in range(len(raw)): # Breaks compound paths into simple paths + if raw[i][0] == 'M' and i != 0: + subpaths.append(raw[prev:i]) + prev = i + subpaths.append(raw[prev:]) + + seg = [] + for simpath in subpaths: + if simpath[-1][0] == 'Z': + simpath[-1][0] = 'L' + if simpath[-2][0] == 'L': simpath[-1][1] = simpath[0][1] + else: simpath.pop() + for i in range(len(simpath)): + if simpath[i][0] == 'V': # vertical and horizontal lines only have one point in args, but 2 are required + #inkex.utils.debug(simpath[i][0]) + simpath[i][0]='L' #overwrite V with regular L command + add=simpath[i-1][1][0] #read the X value from previous segment + simpath[i][1].append(simpath[i][1][0]) #add the second (missing) argument by taking argument from previous segment + simpath[i][1][0]=add #replace with recent X after Y was appended + if simpath[i][0] == 'H': # vertical and horizontal lines only have one point in args, but 2 are required + #inkex.utils.debug(simpath[i][0]) + simpath[i][0]='L' #overwrite H with regular L command + simpath[i][1].append(simpath[i-1][1][1]) #add the second (missing) argument by taking argument from previous segment + #inkex.utils.debug(simpath[i]) + seg.append(simpath[i]) + curr.set("d", Path(seg)) + else: + inkex.utils.debug("Object " + obj.get('id') + " is not a path. Please convert it to a path first.") +if __name__ == '__main__': + ConvertVerticalHorizontalToLine().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/convex_hull/convex_hull.inx b/extensions/fablabchemnitz/convex_hull/convex_hull.inx new file mode 100644 index 00000000..941efdb1 --- /dev/null +++ b/extensions/fablabchemnitz/convex_hull/convex_hull.inx @@ -0,0 +1,16 @@ + + + Convex Hull + fablabchemnitz.de.convex_hull + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/convex_hull/convex_hull.py b/extensions/fablabchemnitz/convex_hull/convex_hull.py new file mode 100644 index 00000000..77dd98db --- /dev/null +++ b/extensions/fablabchemnitz/convex_hull/convex_hull.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 + +import inkex +import sys +import numpy as n +from inkex.paths import CubicSuperPath +from inkex.transforms import Transform +from lxml import etree + +link = lambda a,b: n.concatenate((a,b[1:])) +edge = lambda a,b: n.concatenate(([a],[b])) + +''' + +Convex Hull routine by Markus Kohler, found at https://gist.github.com/kohlerm/0337f7c64df42f21f96405b3f8e895f2, which itself is an implementation of: +https://github.com/flengyel/REST/blob/master/quickhull.py +Compute the convex hull of a set of points in the plane +Adapted from en.literateprograms.org/Quickhull_(Python,arrays) +Content available under MIT/X11 License at +http://en.literateprograms.org/LiteratePrograms:Copyrights +Copyright (c) 2008 the authors listed in the page history +(see http://en.literateprograms.org/index.php?title=Quickhull_(Python,_arrays)&action=history) +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +''' + +def qhull(sample): + def dome(sample,base): + h, t = base + dists = n.dot(sample-h, n.dot(((0,-1),(1,0)),(t-h))) + outer = n.repeat(sample, dists>0, 0) + + if len(outer): + pivot = sample[n.argmax(dists)] + return link(dome(outer, edge(h, pivot)), + dome(outer, edge(pivot, t))) + else: + return base + if len(sample) > 2: + axis = sample[:,0] + base = n.take(sample, [n.argmin(axis), n.argmax(axis)], 0) + return link(dome(sample, base), + dome(sample, base[::-1])) + else: + return sample + +class ConvexHull(inkex.EffectExtension): + def __init__(self): + inkex.Effect.__init__(self) + self.paths = {} + self.paths_clone_transform = {} + + def joinWithElement (self, element, path, makeGroup=False, cloneTransform=None): + if (not path) or (len(path) == 0 ): + return + g = self.document.getroot() + # Now make a element which contains the twist & is a child + # of the new element + style = { 'stroke': '#000000', 'fill': 'none', 'stroke-width': '1' } + line_attribs = { 'style':str(inkex.Style(style)), 'd': path } + if (cloneTransform != None ) and (cloneTransform != '' ): + line_attribs['transform'] = cloneTransform + etree.SubElement(g, inkex.addNS('path', 'svg' ), line_attribs) + + def getControlPoints(self, element, n_array = None): + if n_array == None: + n_array = [] + if element.tag == inkex.addNS('path','svg'): + element.apply_transform() + p = CubicSuperPath(element.get('d')) + for subpath in p: # there may be several paths joined together (e.g. holes) + for csp in subpath: # groups of three to handle control points. + # just the points no control points (handles) + n_array.append(csp[1][0]) + n_array.append(csp[1][1]) + for child in element.getchildren(): + n_array += self.getControlPoints(child, n_array) + return n_array + + def effect(self): + + if len(self.svg.selected) > 0: + global output_elements, points + + n_array = [] + for element in self.svg.selected.values(): + n_array += self.getControlPoints(element, None) + + k = n.asarray(n_array) + length = int(len(k)/2) + c = k.reshape(length,2) + hull_pts = qhull(c) + + pdata = '' + for vertex in hull_pts: + if pdata == '': + pdata = 'M%f,%f' % (vertex[0], vertex[1] ) + else: + pdata += 'L %f,%f' % (vertex[0], vertex[1] ) + pdata += ' Z' + path = 'polygon' + makeGroup = False + paths_clone_transform = None + self.joinWithElement(path, pdata, makeGroup, paths_clone_transform) + + else: + inkex.errormsg('Please select some paths first.') + return + +if __name__ == '__main__': + ConvexHull().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/create_hexmap/create_hexmap.inx b/extensions/fablabchemnitz/create_hexmap/create_hexmap.inx new file mode 100644 index 00000000..6c63643e --- /dev/null +++ b/extensions/fablabchemnitz/create_hexmap/create_hexmap.inx @@ -0,0 +1,63 @@ + + + Create Hexmap + fablabchemnitz.de.create_hexmap + + + + + + + + + + 10 + 10 + 0 + 1.0 + 10.0 + + + false + false + false + false + false + false + + + . + false + false + false + true + 1 + 1 + 1 + + + true + true + true + true + false + false + false + + + false + debug.txt + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/create_hexmap/create_hexmap.py b/extensions/fablabchemnitz/create_hexmap/create_hexmap.py new file mode 100644 index 00000000..18670079 --- /dev/null +++ b/extensions/fablabchemnitz/create_hexmap/create_hexmap.py @@ -0,0 +1,420 @@ +#!/usr/bin/env python3 + +import inkex +import sys +from inkex import NSS +import math +from lxml import etree + +class Point: + def __init__(self, x, y): + self.x = x + self.y = y + + def __str__(self): + return '%f,%f' % (self.x, self.y) + + def y_mirror(self, h): + return Point(self.x, h - self.y); + + def __sub__(self, other): + return Point(self.x - other.x, self.y - other.y) + + def __add__(self, other): + return Point(self.x + other.x, self.y + other.y) + + def __mul__(self, k): + return Point(self.x * k, self.y * k) + + def rotated(self, total_width): + return Point(self.y, total_width - self.x) + +def nrdigits(f): + return int(math.floor(math.log10(f))) + 1 + +def alphacol(c): + d = c / 26 + r = c % 26 + return ('%c' % (r + 65)) * (int(d) + 1) + +def calc_hex_height(hex_width): + return 0.25 * hex_width / math.tan(math.pi / 6) * 2 + +COORD_SIZE_PART_OF_HEX_HEIGHT = 0.1 +COORD_YOFFSET_PART = 75 +CENTERDOT_SIZE_FACTOR = 1.1690625 + +class CreateHexmap(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--tab') + pars.add_argument('--generatelog', type = inkex.Boolean, default = False) + pars.add_argument('--logfilepath', default = "debug.txt") + pars.add_argument("--units", default='mm', help="Units this dialog is using") + pars.add_argument('--cols', type = int, default = '10', help = 'Number of columns.') + pars.add_argument('--rows', type = int, default = '10', help = 'Number of columns.') + pars.add_argument('--hexsize', type = float, default = 0.0) + pars.add_argument('--strokewidth', type = float, default = 1.0) + pars.add_argument('--coordrows', type = int, default = '1') + pars.add_argument('--coordcolstart', type = int, default = '1') + pars.add_argument('--coordrowstart', type = int, default = '1') + pars.add_argument('--bricks', type = inkex.Boolean, default = False) + pars.add_argument('--squarebricks', type = inkex.Boolean, default = False) + pars.add_argument('--rotate', type = inkex.Boolean, default = False) + pars.add_argument('--coordseparator', default = '') + pars.add_argument('--layersingroup', type = inkex.Boolean, default = False, help = 'Put all layers in a layer group.') + pars.add_argument('--coordalphacol', type = inkex.Boolean, default = False, help = 'Reverse row coordinates.') + pars.add_argument('--coordrevrow', type = inkex.Boolean, default = False, help = 'Reverse row coordinates.') + pars.add_argument('--coordzeros', type = inkex.Boolean, default = True) + pars.add_argument('--coordrowfirst', type = inkex.Boolean, default = False, help = 'Reverse row coordinates.') + pars.add_argument('--xshift', type = inkex.Boolean, default = False, help = 'Shift grid half hex and wrap.') + pars.add_argument('--firstcoldown', type = inkex.Boolean, default = False, help = 'Make first column half-hex down.') + pars.add_argument('--halfhexes', type = inkex.Boolean, default = False) + pars.add_argument('--verticesize', type = float,default = 1.0) + pars.add_argument('--layer_grid', type = inkex.Boolean, default = True) + pars.add_argument('--layer_fill', type = inkex.Boolean, default = True) + pars.add_argument('--layer_coordinates', type = inkex.Boolean, default = True) + pars.add_argument('--layer_centerdots', type = inkex.Boolean, default = True) + pars.add_argument('--layer_vertices', type = inkex.Boolean, default = False) + pars.add_argument('--layer_circles', type = inkex.Boolean, default = False) + + def createLayer(self, name): + layer = etree.Element(inkex.addNS('g', 'svg')) + layer.set(inkex.addNS('label', 'inkscape'), name) + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + return layer + + def logwrite(self, msg): + if self.options.generatelog: + log = open(self.options.logfilepath, 'w') + log.write(msg) + log.close() + + def svg_line(self, p1, p2): + line = etree.Element('line') + line.set('x1', str(p1.x + self.xoffset)) + line.set('y1', str(p1.y + self.yoffset)) + line.set('x2', str(p2.x + self.xoffset)) + line.set('y2', str(p2.y + self.yoffset)) + line.set('style', 'stroke:#000000; stroke-width:' + str(self.stroke_width) + ';stroke-linecap:round') + return line + + def svg_circle(self, p, radius): + circle = etree.Element('circle') + circle.set('cx', str(p.x + self.xoffset)) + circle.set('cy', str(p.y + self.yoffset)) + circle.set('r', str(radius)) + circle.set('fill', 'black') + return circle + + def svg_polygon(self, points): + poly = etree.Element('polygon') + pointsdefa = [] + for p in points: + offset_p = Point(p.x + self.xoffset, p.y + self.yoffset) + pointsdefa.append(str(offset_p)) + pointsdef = ' '.join(pointsdefa) + poly.set('points', pointsdef) + poly.set('style', 'stroke:none;fill:#ffffff;fill-opacity:1;stroke-width:' + str(self.stroke_width) + ';stroke-linecap:round') + return poly + + def svg_coord(self, p, col, row, cols, rows, anchor='middle'): + if self.coordrevrow: + row = rows - row + else: + row = row + 1 + if self.coordrevcol: + col = cols - col + else: + col = col + 1 + row = row + self.options.coordrowstart - 1 + col = col + self.options.coordcolstart - 1 + if ((row != 1 and row % self.coordrows != 0) + or row < 1 or col < 1): + return None + + if self.coordrowfirst: + col,row = [row,col] + + if self.coordalphacol: + acol = alphacol(col - 1) + if self.coordzeros: + zrow = str(row).zfill(self.rowdigits) + coord = acol + self.coordseparator + zrow + else: + coord = acol + self.coordseparator + str(row) + elif self.coordzeros: + zcol = str(col).zfill(self.coldigits) + zrow = str(row).zfill(self.rowdigits) + coord = zcol + self.coordseparator + zrow + else: + coord = str(col) + self.coordseparator + str(row) + + self.logwrite(" coord-> '%s'\n" % (coord)) + text = etree.Element('text') + text.set('x', str(p.x + self.xoffset)) + text.set('y', str(p.y + self.yoffset)) + style = ('text-align:center;text-anchor:%s;font-size:%fpt' + % (anchor, self.coordsize)) + text.set('style', style) + text.text = coord + return text + + def add_hexline(self, gridlayer, verticelayer, p1, p2): + if gridlayer is not None: + gridlayer.append(self.svg_line(p1, p2)) + if verticelayer is not None: + verticelayer.append(self.svg_line(p1, (p2 - p1) + * self.verticesize + p1)) + verticelayer.append(self.svg_line(p2, p2 - (p2 - p1) + * self.verticesize)) + + def effect(self): + strokewidth = self.options.strokewidth + cols = self.options.cols + rows = self.options.rows + halves = self.options.halfhexes + xshift = self.options.xshift + firstcoldown = self.options.firstcoldown + bricks = self.options.bricks + squarebricks = self.options.squarebricks + rotate = self.options.rotate + layersingroup = self.options.layersingroup + + self.coordseparator = self.options.coordseparator + if self.coordseparator == None: + self.coordseparator = '' + self.coordrevrow = self.options.coordrevrow + self.coordrevcol = False + self.coordalphacol = self.options.coordalphacol + self.coordrows = self.options.coordrows + self.coordrowfirst = self.options.coordrowfirst + self.coordzeros = self.options.coordzeros + + if rotate: + self.coordrowfirst = not self.coordrowfirst + self.coordrevcol = not self.coordrevrow + self.coordrevrow = False + + self.verticesize = self.options.verticesize / 100.0 + self.logwrite('verticesize: %f\n' % self.verticesize) + if self.verticesize < 0.01 or self.verticesize > 0.5: + self.logwrite('verticesize out of range\n') + self.verticesize = 0.15 + + self.coldigits = nrdigits(cols + self.options.coordcolstart) + self.rowdigits = nrdigits(rows + self.options.coordrowstart) + if self.coldigits < 2: + self.coldigits = 2 + if self.rowdigits < 2: + self.rowdigits = 2 + if self.coordrowfirst: + self.coldigits,self.rowdigits = [self.rowdigits,self.coldigits] + + self.logwrite('cols: %d, rows: %d\n' % (cols, rows)) + self.logwrite('xshift: %s, halves: %s\n' % (str(xshift), str(halves))) + + svg = self.document.xpath('//svg:svg' , namespaces=NSS)[0] + + self.stroke_width = self.svg.unittouu(str(self.options.strokewidth) + self.options.units) + + width = float(self.svg.unittouu(svg.get('width'))) - self.stroke_width + height = float(self.svg.unittouu(svg.get('height'))) - self.stroke_width + + # So I was a bit lazy and only added an offset to all the + # svg_* functions to compensate for the stroke width. + # There should be a better way. + self.xoffset = self.stroke_width * 0.5 + self.yoffset = self.stroke_width * 0.5 + + if self.options.layer_grid: + hexgrid = self.createLayer('Hex Grid') + else: + hexgrid = None + if self.options.layer_fill: + hexfill = self.createLayer('Hex Fill') + else: + hexfill = None + if self.options.layer_coordinates: + hexcoords = self.createLayer('Hex Coordinates') + else: + hexcoords = None + if self.options.layer_centerdots: + hexdots = self.createLayer('Hex Centerdots') + else: + hexdots = None + if self.options.layer_vertices: + hexvertices = self.createLayer('Hex Vertices') + else: + hexvertices = None + if self.options.layer_circles: + hexcircles = self.createLayer('Hex Circles') + else: + hexcircles = None + if hexvertices is not None and hexgrid is not None: + hexgrid.set('style', 'display:none') + + self.logwrite('w, h : %f, %f\n' % (width, height)) + + if xshift: + hex_cols = (cols * 3.0) * 0.25 + else: + hex_cols = (cols * 3.0 + 1.0) * 0.25 + + if halves: + hex_rows = rows + else: + hex_rows = rows + 0.5 + + hex_width = width / hex_cols + + if self.options.hexsize > 0: + hex_width = self.svg.unittouu(str(self.options.hexsize) + self.options.units) + hex_height = calc_hex_height(hex_width) + + # square bricks workaround + if bricks and squarebricks: + hex_height = hex_width + hex_width = hex_width / 0.75 + + hexes_height = hex_height * hex_rows + hexes_width = hex_width * 0.75 * cols + hex_width * 0.25 + + self.coordsize = hex_height * COORD_SIZE_PART_OF_HEX_HEIGHT + if self.coordsize > 1.0: + self.coordsize = round(self.coordsize) + self.centerdotsize = self.stroke_width * CENTERDOT_SIZE_FACTOR + self.circlesize = hex_height / 2 + + self.logwrite('hex_width: %f, hex_height: %f\n' %(hex_width, + hex_height)) + + # FIXME try to remember what 0.005 is for + coord_yoffset = COORD_YOFFSET_PART * hex_height * 0.005 + + for col in range(cols + 1): + cx = (2.0 + col * 3.0) * 0.25 * hex_width + if xshift: + cx = cx - hex_width * 0.5 + coldown = col % 2 + if firstcoldown: + coldown = not coldown + for row in range(rows + 1): + cy = (0.5 + coldown * 0.5 + row) * hex_height + self.logwrite('col: %d, row: %d, c: %f %f\n' % (col, row, + cx, cy)) + c = Point(cx, cy) + if rotate: + c = c.rotated(hexes_width) + if (hexcoords is not None + and (col < cols or xshift) and row < rows): + cc = c + Point(0, coord_yoffset) + anchor = 'middle' + if xshift and col == 0: + anchor = 'start' + elif xshift and col == cols: + anchor = 'end' + coord = self.svg_coord(cc, col, row, cols, rows, anchor) + if coord != None: + hexcoords.append(coord) + if (hexdots is not None + and (col < cols or xshift) and row < rows): + cd = self.svg_circle(c, self.centerdotsize) + cd.set('id', 'hexcenter_%d_%d' + % (col + self.options.coordcolstart, + row + self.options.coordrowstart)) + hexdots.append(cd) + #FIXME make half-circles in half hexes + if (hexcircles is not None and (col < cols or xshift) + and row < rows): + el = self.svg_circle(c, self.circlesize) + el.set('id', 'hexcircle_%d_%d' + % (col + self.options.coordcolstart, + row + self.options.coordrowstart)) + hexcircles.append(el) + x = [cx - hex_width * 0.5, + cx - hex_width * 0.25, + cx + hex_width * 0.25, + cx + hex_width * 0.5] + y = [cy - hex_height * 0.5, + cy, + cy + hex_height * 0.5] + if bricks and xshift: + sys.exit('No support for bricks with x shift.') + if xshift and col == 0: + x[0] = cx + x[1] = cx + elif xshift and col == cols: + x[2] = cx + x[3] = cx + if halves and coldown and row == rows-1: + y[2] = cy + # with bricks pattern, shift some coordinates a bit + # to make correct shape + if bricks: + brick_adjust = hex_width * 0.125 + else: + brick_adjust = 0 + p = [Point(x[2] + brick_adjust, y[0]), + Point(x[3] - brick_adjust, y[1]), + Point(x[2] + brick_adjust, y[2]), + Point(x[1] - brick_adjust, y[2]), + Point(x[0] + brick_adjust, y[1]), + Point(x[1] - brick_adjust, y[0])] + if rotate: + p = [point.rotated(hexes_width) for point in p] + if (hexfill is not None + and (col < cols or xshift) and row < rows): + if row < rows or (halves and coldown): + sp = self.svg_polygon(p) + if halves and coldown and row == rows - 1: + p2 = [x.y_mirror(hexes_height) for x in p] + sp = self.svg_polygon(p) + sp.set('id', 'hexfill_%d_%d' + % (col + self.options.coordcolstart, + row + self.options.coordrowstart)) + hexfill.append(sp) + if ((col < cols and (not halves or row < rows + or not coldown)) + or (xshift and col == cols + and not (halves and row == rows))): + self.add_hexline(hexgrid, hexvertices, p[5], p[0]) + self.logwrite('line 0-5\n') + if row < rows: + if ((coldown or row > 0 or col < cols + or halves or xshift) + and not (xshift and col == 0)): + self.add_hexline(hexgrid, hexvertices, p[5], p[4]) + self.logwrite('line 4-5\n') + if not coldown and row == 0 and col < cols: + self.add_hexline(hexgrid, hexvertices, p[0], p[1]) + self.logwrite('line 0-1\n') + if not (halves and coldown and row == rows-1): + if (not (xshift and col == 0) + and not (not xshift and col == cols + and row == rows-1 and coldown)): + self.add_hexline(hexgrid, hexvertices, p[4], p[3]) + self.logwrite('line 3-4\n') + if coldown and row == rows - 1 and col < cols: + self.add_hexline(hexgrid, hexvertices, p[1], p[2]) + self.logwrite('line 1-2\n') + parent = svg + if layersingroup: + parent = self.createLayer('Hex Map') + self.append_if_new_name(svg, parent) + self.append_if_new_name(parent, hexfill) + self.append_if_new_name(parent, hexcircles) + self.append_if_new_name(parent, hexgrid) + self.append_if_new_name(parent, hexvertices) + self.append_if_new_name(parent, hexcoords) + self.append_if_new_name(parent, hexdots) + + def append_if_new_name(self, svg, layer): + if layer is not None: + name = layer.get(inkex.addNS('label', 'inkscape')) + if not name in [c.get(inkex.addNS('label', 'inkscape'), 'name') + for c in svg.iterchildren()]: + svg.append(layer) + +if __name__ == '__main__': + CreateHexmap().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/create_links/create_links.inx b/extensions/fablabchemnitz/create_links/create_links.inx new file mode 100644 index 00000000..56d6b258 --- /dev/null +++ b/extensions/fablabchemnitz/create_links/create_links.inx @@ -0,0 +1,99 @@ + + + Create Links (Breakaway Connectors) + fablabchemnitz.de.create_links + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + 1.000 + 0.000 + false + + 10 5.5 2.0 2.0 + 0.000 + + + + + false + 0.000 + + + + + + + + + + false + false + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + path + + + + + + + + diff --git a/extensions/fablabchemnitz/create_links/create_links.py b/extensions/fablabchemnitz/create_links/create_links.py new file mode 100644 index 00000000..775d677a --- /dev/null +++ b/extensions/fablabchemnitz/create_links/create_links.py @@ -0,0 +1,316 @@ +#!/usr/bin/env python3 +# coding=utf-8 +# +# Copyright (C) 2005,2007 Aaron Spike, aaron@ekips.org +# Copyright (C) 2009 Alvin Penner, penner@vaxxine.com +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +""" +This extension converts a path into a dashed line using 'stroke-dasharray' +It is a modification of the file addelements.py +It is a modification of the file convert2dash.py +Extension to convert paths into dash-array line + +Extension for InkScape 1.X +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 09.04.2021 +Last patch: 14.04.2021 +License: GNU GPL v3 +""" + +import copy +import re + +import inkex +from inkex import bezier, CubicSuperPath, Group, PathElement +from inkex.bezier import csplength + + +class LinksCreator(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--path_types", default="closed_paths", help="Apply for closed paths, open paths or both") + pars.add_argument("--creationunit", default="mm", help="Creation Units") + pars.add_argument("--creationtype", default="entered_values", help="Creation") + pars.add_argument("--link_count", type=int, default=1, help="Link count") + pars.add_argument("--link_multiplicator", type=int, default=1, help="If set, we create a set of multiple gaps of same size next to the main gap") + pars.add_argument("--length_link", type=float, default=1.000, help="Link length") + pars.add_argument("--link_offset", type=float, default=0.000, help="Link offset (+/-)") + pars.add_argument("--switch_pattern", type=inkex.Boolean, default=False, help="If enabled, we use gap length as dash length (switches the dasharray pattern") + pars.add_argument("--custom_dasharray_value", default="", help="A list of separated lengths that specify the lengths of alternating dashes and gaps. Input only accepts numbers. It ignores percentages or other characters.") + pars.add_argument("--custom_dashoffset_value", type=float, default=0.000, help="Link offset (+/-)") + pars.add_argument("--length_filter", type=inkex.Boolean, default=False, help="Enable path length filtering") + pars.add_argument("--length_filter_value", type=float, default=0.000, help="Paths with length more than") + pars.add_argument("--length_filter_unit", default="mm", help="Length filter unit") + pars.add_argument("--keep_selected", type=inkex.Boolean, default=False, help="Keep selected elements") + pars.add_argument("--no_convert", type=inkex.Boolean, default=False, help="Do not create segments (cosmetic gaps only)") + pars.add_argument("--breakapart", type=inkex.Boolean, default=False, help="Performs CTRL + SHIFT + K to break the new output path into it's parts") + pars.add_argument("--show_info", type=inkex.Boolean, default=False, help="Print some length and pattern information") + pars.add_argument("--skip_errors", type=inkex.Boolean, default=False, help="Skip errors") + + def breakContours(self, element, breakelements = None): #this does the same as "CTRL + SHIFT + K" + if breakelements == None: + breakelements = [] + if element.tag == inkex.addNS('path','svg'): + parent = element.getparent() + idx = parent.index(element) + idSuffix = 0 + raw = element.path.to_arrays() + subPaths, prev = [], 0 + for i in range(len(raw)): # Breaks compound paths into simple paths + if raw[i][0] == 'M' and i != 0: + subPaths.append(raw[prev:i]) + prev = i + subPaths.append(raw[prev:]) + for subpath in subPaths: + replacedelement = copy.copy(element) + oldId = replacedelement.get('id') + csp = CubicSuperPath(subpath) + if len(subpath) > 1 and csp[0][0] != csp[0][1]: #avoids pointy paths like M "31.4794 57.6024 Z" + replacedelement.set('d', csp) + replacedelement.set('id', oldId + str(idSuffix)) + parent.insert(idx, replacedelement) + idSuffix += 1 + breakelements.append(replacedelement) + parent.remove(element) + for child in element.getchildren(): + self.breakContours(child, breakelements) + return breakelements + + def effect(self): + def createLinks(element): + elementParent = element.getparent() + path = element.path.to_arrays() #to_arrays() is deprecated. How to make more modern? + pathIsClosed = False + if path[-1][0] == 'Z' or \ + (path[-1][0] == 'L' and path[0][1] == path[-1][1]) or \ + (path[-1][0] == 'C' and path[0][1] == [path[-1][1][-2], path[-1][1][-1]]) \ + : #if first is last point the path is also closed. The "Z" command is not required + pathIsClosed = True + + if self.options.path_types == 'open_paths' and pathIsClosed is True: + return #skip this loop iteration + elif self.options.path_types == 'closed_paths' and pathIsClosed is False: + return #skip this loop iteration + elif self.options.path_types == 'both': + pass + + # if keeping is enabled we make of copy of the current element and insert it while modifying the original ones. We could also delete the original and modify a copy... + if self.options.keep_selected is True: + parent = element.getparent() + idx = parent.index(element) + copyelement = copy.copy(element) + parent.insert(idx, copyelement) + + # we measure the length of the path to calculate the required dash configuration + csp = element.path.transform(element.composed_transform()).to_superpath() + slengths, stotal = csplength(csp) #get segment lengths and total length of path in document's internal unit + + if self.options.length_filter is True: + if stotal < self.svg.unittouu(str(self.options.length_filter_value) + self.options.length_filter_unit): + if self.options.show_info is True: self.msg("element " + element.get('id') + " is shorter than minimum allowed length of {:1.3f} {}. Path length is {:1.3f} {}".format(self.options.length_filter_value, self.options.length_filter_unit, stotal, self.options.creationunit)) + return #skip this loop iteration + + if self.options.creationunit == "percent": + length_link = (self.options.length_link / 100.0) * stotal + else: + length_link = self.svg.unittouu(str(self.options.length_link) + self.options.creationunit) + + dashes = [] #central dashes array + + if self.options.creationtype == "entered_values": + dash_length = ((stotal - length_link * self.options.link_count) / self.options.link_count) - 2 * length_link * self.options.link_multiplicator + dashes.append(dash_length) + dashes.append(length_link) + for i in range(0, self.options.link_multiplicator): + dashes.append(length_link) #stroke (=gap) + dashes.append(length_link) #gap + + if self.options.switch_pattern is True: + dashes = dashes[::-1] #reverse the array + + #validate dashes. May not be negative (dash or gap cannot be longer than the path itself). Otherwise Inkscape will freeze forever. Reason: rendering issue + if any(dash <= 0.0 for dash in dashes) == True: + if self.options.show_info is True: self.msg("element " + element.get('id') + ": Error! Dash array may not contain negative numbers: " + ' '.join(format(dash, "1.3f") for dash in dashes) + ". Path skipped. Maybe it's too short. Adjust your link count, multiplicator and length accordingly, or set to unit '%'") + return False if self.options.skip_errors is True else exit(1) + + if self.options.creationunit == "percent": + stroke_dashoffset = self.options.link_offset / 100.0 + else: + stroke_dashoffset = self.svg.unittouu(str(self.options.link_offset) + self.options.creationunit) + + if self.options.switch_pattern is True: + stroke_dashoffset = stroke_dashoffset + ((self.options.link_multiplicator * 2) + 1) * length_link + + if self.options.creationtype == "use_existing": + if self.options.no_convert is True: + if self.options.show_info is True: self.msg("element " + element.get('id') + ": Nothing to do. Please select another creation method or disable cosmetic style output paths.") + return False if self.options.skip_errors is True else exit(1) + stroke_dashoffset = 0 + style = element.style + if 'stroke-dashoffset' in style: + stroke_dashoffset = style['stroke-dashoffset'] + try: + floats = [float(dash) for dash in re.findall(r"[+]?\d*\.\d+|\d+", style['stroke-dasharray'])] #allow only positive values + if len(floats) > 0: + dashes = floats #overwrite previously calculated values with custom input + else: + raise ValueError + except: + if self.options.show_info is True: self.msg("element " + element.get('id') + ": No dash style to continue with.") + return False if self.options.skip_errors is True else exit(1) + + if self.options.creationtype == "custom_dashpattern": + stroke_dashoffset = self.options.custom_dashoffset_value + try: + floats = [float(dash) for dash in re.findall(r"[+]?\d*\.\d+|\d+", self.options.custom_dasharray_value)] #allow only positive values + if len(floats) > 0: + dashes = floats #overwrite previously calculated values with custom input + else: + raise ValueError + except: + if self.options.show_info is True: self.msg("element " + element.get('id') + ": Error in custom dasharray string (might be empty or does not contain any numbers).") + return False if self.options.skip_errors is True else exit(1) + + #assign stroke dasharray from entered values, existing style or custom dashpattern + stroke_dasharray = ' '.join(format(dash, "1.3f") for dash in dashes) + + # check if the element has a style attribute. If not we create a blank one with a black stroke and without fill + style = None + default_fill = 'none' + default_stroke_width = '1px' + default_stroke = '#000000' + if element.attrib.has_key('style'): + style = element.get('style') + if style.endswith(';') is False: + style += ';' + + # if has style attribute and dasharray and/or dashoffset are present we modify it accordingly + declarations = style.split(';') # parse the style content and check what we need to adjust + for i, decl in enumerate(declarations): + parts = decl.split(':', 2) + if len(parts) == 2: + (prop, val) = parts + prop = prop.strip().lower() + #if prop == 'fill': + # declarations[i] = prop + ':{}'.format(default_fill) + #if prop == 'stroke': + # declarations[i] = prop + ':{}'.format(default_stroke) + #if prop == 'stroke-width': + # declarations[i] = prop + ':{}'.format(default_stroke_width) + if prop == 'stroke-dasharray': #comma separated list of one or more float values + declarations[i] = prop + ':{}'.format(stroke_dasharray) + if prop == 'stroke-dashoffset': + declarations[i] = prop + ':{}'.format(stroke_dashoffset) + element.set('style', ';'.join(declarations)) #apply new style to element + + #if has style attribute but the style attribute does not contain fill, stroke, stroke-width, stroke-dasharray or stroke-dashoffset yet + style = element.style + if re.search('fill:(.*?)(;|$)', str(style)) is None: + style += 'fill:{};'.format(default_fill) + if re.search('(;|^)stroke:(.*?)(;|$)', str(style)) is None: #if "stroke" is None, add one. We need to distinguish because there's also attribute "-inkscape-stroke" that's why we check starting with ^ or ; + style += 'stroke:{};'.format(default_stroke) + if not 'stroke-width' in style: + style += 'stroke-width:{};'.format(default_stroke_width) + if not 'stroke-dasharray' in style: + style += 'stroke-dasharray:{};'.format(stroke_dasharray) + if not 'stroke-dashoffset' in style: + style += 'stroke-dashoffset:{};'.format(stroke_dashoffset) + element.set('style', style) + else: + style = 'fill:{};stroke:{};stroke-width:{};stroke-dasharray:{};stroke-dashoffset:{};'.format(default_fill, default_stroke, default_stroke_width, stroke_dasharray, stroke_dashoffset) + element.set('style', style) + + # Print some info about values + if self.options.show_info is True: + self.msg("element " + element.get('id') + ":") + if self.options.creationunit == "percent": + self.msg(" * total path length = {:1.3f} {}".format(stotal, self.svg.unit)) #show length, converted in selected unit + self.msg(" * (calculated) offset: {:1.3f} %".format(stroke_dashoffset)) + if self.options.creationtype == "entered_values": + self.msg(" * (calculated) gap length: {:1.3f} %".format(length_link)) + else: + self.msg(" * total path length = {:1.3f} {} ({:1.3f} {})".format(self.svg.uutounit(stotal, self.options.creationunit), self.options.creationunit, stotal, self.svg.unit)) #show length, converted in selected unit + self.msg(" * (calculated) offset: {:1.3f} {}".format(self.svg.uutounit(stroke_dashoffset, self.options.creationunit), self.options.creationunit)) + if self.options.creationtype == "entered_values": + self.msg(" * (calculated) gap length: {:1.3f} {}".format(length_link, self.options.creationunit)) + if self.options.creationtype == "entered_values": + self.msg(" * total gaps = {}".format(self.options.link_count)) + self.msg(" * (calculated) dash/gap pattern: {} ({})".format(stroke_dasharray, self.svg.unit)) + + # Conversion step (split cosmetic path into real segments) + if self.options.no_convert is False: + style = element.style #get the style again, but this time as style class + + new = [] + for sub in element.path.to_superpath(): + idash = 0 + dash = dashes[0] + length = float(stroke_dashoffset) + while dash < length: + length = length - dash + idash = (idash + 1) % len(dashes) + dash = dashes[idash] + new.append([sub[0][:]]) + i = 1 + while i < len(sub): + dash = dash - length + length = bezier.cspseglength(new[-1][-1], sub[i]) + while dash < length: + new[-1][-1], nxt, sub[i] = bezier.cspbezsplitatlength(new[-1][-1], sub[i], dash/length) + if idash % 2: # create a gap + new.append([nxt[:]]) + else: # splice the curve + new[-1].append(nxt[:]) + length = length - dash + idash = (idash + 1) % len(dashes) + dash = dashes[idash] + if idash % 2: + new.append([sub[i]]) + else: + new[-1].append(sub[i]) + i += 1 + style.pop('stroke-dasharray') + element.pop('sodipodi:type') + csp = CubicSuperPath(new) + element.path = CubicSuperPath(new) + element.style = style + + # break apart the combined path to have multiple elements + if self.options.breakapart is True: + breakOutputelements = None + breakOutputelements = self.breakContours(element, breakOutputelements) + breakApartGroup = elementParent.add(inkex.Group()) + for breakOutputelement in breakOutputelements: + breakApartGroup.append(breakOutputelement) + #self.msg(replacedelement.get('id')) + #self.svg.selection.set(replacedelement.get('id')) #update selection to split paths segments (does not work, so commented out) + + if len(self.svg.selected) > 0: + for element in self.svg.selection.values(): + #at first we need to break down combined elements to single path, otherwise dasharray cannot properly be applied + breakInputelements = None + breakInputelements = self.breakContours(element, breakInputelements) + for breakInputelement in breakInputelements: + createLinks(breakInputelement) + else: + self.msg('Please select some paths first.') + return + +if __name__ == '__main__': + LinksCreator().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/README.md b/extensions/fablabchemnitz/cutcraft/cutcraft/README.md new file mode 100644 index 00000000..a05ed7e9 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/README.md @@ -0,0 +1,57 @@ +# cut-craft + + +## Python package + +Note that this package is written for Python 3, however requires Python 2 compatibility for Inkscape integration. + +The `cutcraft` package contains components in the following categories: + +| Folder | Description | +| --------- | ---------------------------------------------------- | +| core | Core components (point, line etc). | +| platforms | Platforms used to construct shapes (circular etc). | +| shapes | Fundamental 3D shapes (cylinder, cone, sphere etc). | +| supports | Vertical supports to hold the shape levels apart. | + + +## Core + +| Module | Description | +| --------- | --------------------------------------------------------------------------- | +| point | A 2D point with `x` and `y` coordinates. | +| rectangle | Two `point`s defining topleft and bottom right for a rectangle. | +| trace | An ordered collection of `point`s. | +| part | A collection of one or more `trace`s. | +| line | A type of `trace` with two `point`s defining the start and end of the line. | +| circle | A type of `trace` with `point`s defining a circle. | +| neopixel | A type of `trace` with the `point`s defining a cutout suitable to fit a variety of [NeoPixels](https://www.adafruit.com/category/168). | + + +## Shapes + +| Module | Description | +| -------- | -------------------------------------- | +| shape | The core 3D functionality for a shape. | +| cone | A cone `shape`. | +| cylinder | A cylinder `shape`. | +| sphere | A 3D spherical `shape`. | + +> Note that the fundamental `shape`s listed above can be used flexibly considering the number of `circle` segments can be specified. For example a `cone` with 4 segments becomes a **pyramid**, and a `cylinder` with 4 segments becomes a **cube**. + + +## Supports + +| Module | Description | +| -------- | --------------------------------------------------- | +| support | The core support structure functionality. | +| pier | A pier like `support` to hold `shape` levels apart. | +| face | A solid face to `support` `shape` levels. | + + +## Python 2 vs 3 Compatibility + +The initial aim was to develop only for Python 3, however [Inkscape](https://inkscape.org) currently uses Python 2 as the default interpreter for extensions. As a result, the following should be noted while reviewing the code: + +1) The calls to `super()` are written in a way that works with both versions of Python. +2) The `math.isclose()` function is not available in Python 2 so a local version has been created in [util.py](util.py). diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/__init__.py b/extensions/fablabchemnitz/cutcraft/cutcraft/__init__.py new file mode 100644 index 00000000..6a4bdf6f --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/__init__.py @@ -0,0 +1,17 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/__init__.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/__init__.py new file mode 100644 index 00000000..f33ad79a --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/__init__.py @@ -0,0 +1,27 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .point import Point +from .line import Line +from .rectangle import Rectangle +from .trace import Trace +from .circle import Circle +from .part import Part +from .neopixel import NeoPixel +from .fingerjoint import FingerJoint + +__all__ = ["Point", "Line", "Rectangle", "Trace", "Circle", "Part", "NeoPixel", "FingerJoint"] diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/circle.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/circle.py new file mode 100644 index 00000000..838605a5 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/circle.py @@ -0,0 +1,131 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .point import Point +from .line import Line +from .trace import Trace +from ..util import isclose +from math import pi, sin, cos, asin + +class Circle(Trace): + def __init__(self, radius, segments, cuts, cutdepth=0.0, start=0.0, end=pi*2.0, rotation=0.0, + origin=Point(0.0, 0.0), thickness=0.0, kerf=0.0): + super(Circle, self).__init__() + self.thickness = thickness + self.kerf = kerf + + partial = True if start != 0.0 or end != pi*2.0 else False + + if cuts==0: + c = 0.0 + else: + if self.thickness <= 0.0: + raise ValueError("cutcraft.circle: parameter 'thickness' not set when 'cuts' greater than zero.") + if cutdepth <= 0.0: + raise ValueError("cutcraft.circle: parameter 'cutdepth' not set when 'cuts' greater than zero.") + c = asin(self.thickness/2/radius) + if partial: + angles = [[rotation+start+(end-start)/segments*seg, 'SEG'] for seg in range(segments+1)] + \ + [[rotation+start+(end-start)/(cuts+1)*cut-c, ''] for cut in range(1, cuts+1)] + else: + angles = [[rotation+end/segments*seg, 'SEG'] for seg in range(segments)] + \ + [[rotation+end/cuts*cut-c, ''] for cut in range(cuts)] + angles = sorted(angles) + if angles[0][1] == 'CUT>': + angles = angles[1:] + [angles[0]] + + for i, angle in enumerate(angles): + angle.append(self._cnext(angles, i, 'SEG')) + angle.append(self._cprev(angles, i, 'SEG')) + angle.append(self._cnext(angles, i, 'CUT>') if angle[1]=='' else None) + + for i, angle in enumerate(angles): + if angle[1] == 'SEG': + angle.append([self._pos(angle[0], radius)]) + + for i, angle in enumerate(angles): + if angle[1] != 'SEG': + mult = -1 if angle[1] == '': + incut = False + + if atype != 'SEG' or (atype == 'SEG' and not incut): + for pos in angle[6]: + x = origin.x + pos.x + y = origin.y + pos.y + if len(self.x)==0 or not (isclose(x, self.x[-1]) and isclose(y, self.y[-1])): + self.x.append(x) + self.y.append(y) + + return + + def _cnext(self, angles, i, item): + if i>=len(angles): + i=-1 + for j, angle in enumerate(angles[i+1:]): + if angle[1] == item: + return i+1+j + for j, angle in enumerate(angles): + if angle[1] == item: + return j + return None + + def _cprev(self, angles, i, item): + if i<=0: + i=len(angles) + for j, angle in enumerate(angles[:i][::-1]): + if angle[1] == item: + return i-j-1 + for j, angle in enumerate(angles[::-1]): + if angle[1] == item: + return j + return None + + def _pos(self, angle, radius): + return Point(sin(angle)*radius, cos(angle)*radius) diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/fingerjoint.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/fingerjoint.py new file mode 100644 index 00000000..ef2ca7bb --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/fingerjoint.py @@ -0,0 +1,40 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from math import floor + +class FingerJoint(object): + def __init__(self, length, fingerwidth, style, thickness=0.0): + super(FingerJoint, self).__init__() + + self.thickness = thickness + + if style in ('depth','height'): + self.fingers = [0.0] + \ + [pos + fingerwidth*2.0 for pos in self._fingers(length-fingerwidth*4.0, fingerwidth)] + \ + [length] + elif style=='width': + self.fingers = [pos + thickness for pos in self._fingers(length-thickness*2.0, fingerwidth)] + else: + raise ValueError("cutcraft.core.fingerjoin: invalid value of '{}' for parameter 'style'.".format(style)) + + return + + def _fingers(self, length, fingerwidth): + count = int(floor(length / fingerwidth)) + count = count-1 if count%2==0 else count + return [length/count*c for c in range(count+1)] diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/line.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/line.py new file mode 100644 index 00000000..eab7516c --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/line.py @@ -0,0 +1,82 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .point import Point +from math import sqrt + +def isclose(a, b, rel_tol=1e-09, abs_tol=0.0): + # Required as Inkscape does not include math.isclose(). + return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol) + +class Line(object): + """ Line class defined by start and end Points. """ + def __init__(self, point1, point2): + self.pts = (point1, point2) + self.x = [point1.x, point2.x] + self.y = [point1.y, point2.y] + return + + def _line(self): + # Convert line segment into a line equation (infinite length). + p1 = self.pts[0] + p2 = self.pts[1] + A = (p1.y - p2.y) + B = (p2.x - p1.x) + C = (p1.x*p2.y - p2.x*p1.y) + return A, B, -C + + def intersection(self, other): + # Find the intersection of the lines (infinite length - not segments) + L1 = self._line() + L2 = other._line() + D = L1[0] * L2[1] - L1[1] * L2[0] + Dx = L1[2] * L2[1] - L1[1] * L2[2] + Dy = L1[0] * L2[2] - L1[2] * L2[0] + if D != 0: + x = Dx / D + y = Dy / D + return Point(x, y) + else: + return None + + def normal(self): + # Return the unit normal + dx = self.x[1] - self.x[0] + dy = self.y[1] - self.y[0] + + d = sqrt(dx*dx + dy*dy) + + return dx/d, -dy/d + + def addkerf(self, kerf): + nx, ny = self.normal() + offset = Point(ny*kerf, nx*kerf) + self.pts = (self.pts[0] + offset, self.pts[1] + offset) + self.x = [self.pts[0].x, self.pts[1].x] + self.y = [self.pts[0].y, self.pts[1].y] + + def __eq__(self, other): + return (self.pts == other.pts) + + def __ne__(self, other): + return (self.pts != other.pts) + + def __repr__(self): + return "Line(" + repr(self.pts[0]) + ", " + repr(self.pts[1]) + ")" + + def __str__(self): + return "(" + str(self.pts[0]) + ", " + str(self.pts[1]) + ")" diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/neopixel.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/neopixel.py new file mode 100644 index 00000000..8ab4681a --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/neopixel.py @@ -0,0 +1,65 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .point import Point +from .trace import Trace +from .part import Part +from math import pi, sin, cos, sqrt + +class NeoPixel(Part): + rings = [[1, 0.0], [6, 16.0/2.0], [12, 30.0/2.0]] + size = 5.5 + + """ Line class defined by start and end Points. """ + def __init__(self, style='rings', origin=Point(0.0, 0.0), scale=1.0, rotate=0.0): + super(NeoPixel, self).__init__() + self.scale = scale + + if style=='rings': + for ring in self.rings: + pixels = ring[0] + radius = ring[1] * self.scale + for pixel in range(pixels): + a = rotate + pi*2 * pixel / pixels + seg = self._pixel(origin + Point(sin(a) * radius, cos(a) * radius), + pi/4 + a) + self += seg + elif style=='strip': + xo = origin.x + yo = origin.y + xsize = 25.4*2.0*self.scale + size = self.size*self.scale + seg = Trace() + \ + Point(xo-xsize/2.0, yo+size/2.0) + \ + Point(xo-xsize/2.0, yo-size/2.0) + \ + Point(xo+xsize/2.0, yo-size/2.0) + \ + Point(xo+xsize/2.0, yo+size/2.0) + seg.close() + self += seg + return + + def _pixel(self, position, rotation): + seg = Trace() + xo = position.x + yo = position.y + size = sqrt(2.0*(self.size*self.scale)**2) + for corner in range(4): + # Points added in counterclockwise direction as this is an inner cut. + a = rotation-2.0*pi*corner/4.0 + seg += Point(xo + sin(a) * size/2.0, yo + cos(a) * size/2.0) + seg.close() + return seg diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/part.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/part.py new file mode 100644 index 00000000..a8d1813a --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/part.py @@ -0,0 +1,91 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from copy import deepcopy +from .point import Point +from .rectangle import Rectangle +from .trace import Trace + +class Part(object): + """ List of traces that make up a part. """ + def __init__(self): + self.traces = [] + return + + def close(self): + """ Close each traces back to their start. """ + for trace in self.traces: + trace.close() + return + + def applykerf(self, kerf): + """ Apply an offset to allow for the kerf when cutting. """ + for trace in self.traces: + trace.applykerf(kerf) + return + + def svg(self): + # Generate SVG string for this part. + return " ".join([trace.svg() for trace in self.traces]) + + def bbox(self): + bboxes = [trace.bbox() for trace in self.traces] + x = [p1.x for p1, p2 in bboxes] + [p2.x for p1, p2 in bboxes] + y = [p1.y for p1, p2 in bboxes] + [p2.y for p1, p2 in bboxes] + return Rectangle(Point(min(x), min(y)), Point(max(x), max(y))) + + def area(self): + bbox = self.bbox() + return bbox.area() + + def size(self): + bbox = self.bbox() + return bbox.size() + + def __add__(self, other): + p = Part() + if isinstance(other, Part): + p.traces = self.traces + deepcopy(other.traces) + elif isinstance(other, Trace): + p.traces = deepcopy(self.traces) + p.traces.append(other) + elif isinstance(other, Point): + p.traces = self.traces + for trace in p.traces: + trace.offset(other) + else: + raise RuntimeError("Can only add a Part, Trace or Point to an existing Part.") + return p + + def __iadd__(self, other): + if isinstance(other, Part): + self.traces.extend(other.traces) + elif isinstance(other, Trace): + self.traces.append(deepcopy(other)) + elif isinstance(other, Point): + for trace in self.traces: + trace.offset(other) + else: + raise RuntimeError("Can only add a Part, Trace or Point to an existing Part.") + return self + + def __repr__(self): + return "Part" + str(self) + + def __str__(self): + l = len(self.traces) + return "(" + str(l) + " trace" + ("s" if l>1 else "") + ")" diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/point.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/point.py new file mode 100644 index 00000000..937d7c20 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/point.py @@ -0,0 +1,64 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from math import sqrt + +class Point(object): + """ Point (x,y) class suppporting addition for offsets. """ + def __init__(self, x, y): + self.x = x + self.y = y + + def distance(self, other): + """ Distance between two points. """ + x = self.x - other.x + y = self.y - other.y + return sqrt(x*x+y*y) + + def tup(self): + return (self.x, self.y) + + def __eq__(self, other): + return (self.x == other.x and self.y == other.y) + + def __ne__(self, other): + return (self.x != other.x or self.y != other.y) + + def __add__(self, other): + return Point(self.x + other.x, self.y + other.y) + + def __iadd__(self, other): + self.x += other.x + self.y += other.y + return self + + def __sub__(self, other): + return Point(self.x - other.x, self.y - other.y) + + def __isub__(self, other): + self.x -= other.x + self.y -= other.y + return self + + def __neg__(self): + return Point(-self.x, -self.y) + + def __repr__(self): + return "Point(" + str(self.x) + ", " + str(self.y) + ")" + + def __str__(self): + return "(" + str(self.x) + ", " + str(self.y) + ")" diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/rectangle.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/rectangle.py new file mode 100644 index 00000000..133578df --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/rectangle.py @@ -0,0 +1,60 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from math import ceil, floor +from .point import Point + +class Rectangle(object): + """ Rectangle class defined by top-left and bottom-right Points. """ + def __init__(self, point1, point2): + # Correct the input points in case they are not topleft, bottomright as expected. + self.topleft = Point(min(point1.x, point2.x), min(point1.y, point2.y)) + self.bottomright = Point(max(point1.x, point2.x), max(point1.y, point2.y)) + return + + def size(self): + # Calculate the size as: width, height. + return self.bottomright.x-self.topleft.x, self.bottomright.y-self.topleft.y + + def area(self): + width, height = self.size() + return width*height + + def expanded(self): + # Expand the current Rectangle out to integer boundary. + return Rectangle(Point(floor(self.topleft.x), floor(self.topleft.y)), + Point(ceil(self.bottomright.x), ceil(self.bottomright.y))) + + def svg(self): + # Generate SVG string for this rectangle. + ptx = [self.topleft.x, self.bottomright.x, self.bottomright.x, self.topleft.x] + pty = [self.topleft.y, self.topleft.y, self.bottomright.y, self.bottomright.y] + return "M {} {} ".format(ptx[0], pty[0]) + \ + " ".join(["L {} {}".format(x, y) for x, y in zip(ptx[1:], pty[1:])]) + \ + " L {} {}".format(ptx[0], pty[0]) + + def __eq__(self, other): + return (self.topleft == other.topleft and self.bottomright == other.bottomright ) + + def __ne__(self, other): + return (self.topleft != other.topleft or self.bottomright != other.bottomright) + + def __repr__(self): + return "Rectangle(" + repr(self.topleft) + ", " + repr(self.bottomright) + ")" + + def __str__(self): + return "(" + str(self.topleft) + ", " + str(self.bottomright) + ")" diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/core/trace.py b/extensions/fablabchemnitz/cutcraft/cutcraft/core/trace.py new file mode 100644 index 00000000..16dfdb3f --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/core/trace.py @@ -0,0 +1,149 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .point import Point +from .line import Line +from ..util import isclose, iscloselist + +class Trace(object): + """ List of coordinates that make a boundary. """ + def __init__(self, x=None, y=None): + self.x = [] if x is None else x + self.y = [] if y is None else y + self.closed = False + return + + def close(self): + """ Close the trace back to the start. """ + if not self.closed: + if isclose(self.x[0], self.x[-1]) and isclose(self.y[0], self.y[-1]): + # Start and end should be the same. + self.x[-1] = self.x[0] + self.y[-1] = self.y[0] + else: + # Add new end point to close the loop. + self.x.append(self.x[0]) + self.y.append(self.y[0]) + self.closed = True + return + + def applykerf(self, kerf): + """ Apply an offset to allow for the kerf when cutting. """ + self.close() + + # Convert the points to lines. + lines = [Line(Point(x1, y1), Point(x2, y2)) for x1, y1, x2, y2 in + zip(self.x[:-1], self.y[:-1], self.x[1:], self.y[1:])] + + # Add the kerf to the lines. + for line in lines: + line.addkerf(kerf) + + # Extract the line intersections as the new points. + pts = [line1.intersection(line2) for line1, line2 in zip(lines, lines[-1:] + lines[:-1])] + self.clear() + self.x += [pt.x for pt in pts] + self.y += [pt.y for pt in pts] + self.x += self.x[:1] + self.y += self.y[:1] + return + + def offset(self, pt): + """ Move a trace by an x/y offset. """ + self.x = [x + pt.x for x in self.x] + self.y = [y + pt.y for y in self.y] + + def clear(self): + self.x = [] + self.y = [] + + def svg(self): + # Generate SVG string for this trace. + if len(self.x)<2: + return "" + return "M {} {} ".format(self.x[0], self.y[0]) + \ + " ".join(["L {} {}".format(x, y) for x, y in zip(self.x[1:], self.y[1:])]) + + def bbox(self): + return Point(min(self.x), min(self.y)), Point(max(self.x), max(self.y)) + + def __len__(self): + return len(self.x) + + def __eq__(self, other): + return (iscloselist(self.x,other.x) and iscloselist(self.y, other.y)) + + def __ne__(self, other): + return (not iscloselist(self.x, other.x) or not iscloselist(self.y, other.y)) + + def __add__(self, other): + new = Trace() + if isinstance(other, Point): + new.x = self.x + [other.x] + new.y = self.y + [other.y] + elif isinstance(other, Trace): + new.x = self.x + other.x + new.y = self.y + other.y + else: + raise RuntimeError("Can only add a Trace or Point to an existing Trace.") + return new + + def __iadd__(self, other): + if isinstance(other, Point): + self.x.append(other.x) + self.y.append(other.y) + elif isinstance(other, Trace): + self.x += other.x + self.y += other.y + else: + raise RuntimeError("Can only add a Trace or Point to an existing Trace.") + return self + + def __repr__(self): + return "Trace(" + str(self.x) + ", " + str(self.y) + ")" + + def __str__(self): + return "(" + str(self.x) + ", " + str(self.y) + ")" + + def __getitem__(self, key): + """ Used to override the slice functionality (eg: reversing). """ + new = Trace() + new.x = self.x[key] + new.y = self.y[key] + return new + + def __setitem__(self, key, value): + """ Used to override the slice functionality. """ + if isinstance(value, Point): + self.x[key] = value.x + self.y[key] = value.y + else: + raise RuntimeError("Can only update a single item in an existing Trace.") + return self + + def __delitem__(self, key): + """ Used to override the slice functionality (eg: reversing). """ + del self.x[key] + del self.y[key] + return self + + def __reversed__(self): + """ Used to override the slice functionality (eg: reversing). """ + new = Trace() + new.x = list(reversed(self.x)) + new.y = list(reversed(self.y)) + return new diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/__init__.py b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/__init__.py new file mode 100644 index 00000000..b1e48b63 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/__init__.py @@ -0,0 +1,22 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .platform import Platform +from .circular import Circular +from .rollerframe import RollerFrame + +__all__ = ["Platform", "Circular", "RollerFrame"] diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/circular.py b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/circular.py new file mode 100644 index 00000000..c1475b5e --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/circular.py @@ -0,0 +1,39 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.point import Point +from ..core.part import Part +from ..core.circle import Circle +from .platform import Platform +from math import pi + +class Circular(Platform): + """ Circular Platform. """ + def __init__(self, radius, inradius, segments, cuts, cutdepth, start=0.0, end=pi*2, rotation=0.0, + origin=Point(0.0, 0.0), thickness=0.0): + super(Circular, self).__init__(thickness) + self.radius = radius + self.inradius = inradius + self.segments = segments + outer = Circle(self.radius, segments, cuts, cutdepth=cutdepth, start=start, end=end, + rotation=rotation, origin=origin, thickness=thickness) + outer.close() + inner = Circle(self.inradius, segments, 0, start=start, end=end, + rotation=rotation, origin=origin, thickness=thickness) + inner.close() + self.traces.append(outer) + self.traces.append(reversed(inner)) diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/platform.py b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/platform.py new file mode 100644 index 00000000..711997f1 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/platform.py @@ -0,0 +1,24 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.part import Part + +class Platform(Part): + def __init__(self, thickness): + super(Platform, self).__init__() + self.thickness = thickness + return diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/rollerframe.py b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/rollerframe.py new file mode 100644 index 00000000..970c93a4 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/platforms/rollerframe.py @@ -0,0 +1,378 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.point import Point +from ..core.part import Part +from ..core.trace import Trace +from ..core.circle import Circle +from ..core.fingerjoint import FingerJoint +from ..core.neopixel import NeoPixel +from .platform import Platform +from ..util import intersection +from math import pi, sqrt, asin, atan + +#import inkex + +class RollerFrame(Platform): + """ RollerBot Platform. """ + def __init__(self, supwidth, wheelradius, upperradius, lowerradius, + facesize, barsize, primarygapwidth, secondarygapwidth, + scale, part_id, thickness=0.0): + super(RollerFrame, self).__init__(thickness) + self.supwidth = supwidth + self.barsize = barsize + + cutdepth = supwidth / 3.0 + barradius = sqrt(2.0*(barsize/2.0)**2) + + facewidth = primarygapwidth*2.0 + thickness*3.0 + faceheight = facesize + thickness + fjoint = FingerJoint(faceheight, thickness*2.0, 'height', thickness=thickness) # Face + bjoint = FingerJoint(faceheight, thickness*2.0, 'depth', thickness=thickness) # Base + wjoint = FingerJoint(facewidth, thickness*2.0, 'width', thickness=thickness) # Length + + if part_id<5: + # The circular segments for the main body structure. + + # Outer section. + x = barsize/2.0 + y = sqrt(lowerradius**2 - x**2) + a = atan(x/y) + outer = Circle(upperradius, 72, 5, cutdepth=cutdepth, start=0.0, end=pi, thickness=thickness) + \ + Point(0.0, -upperradius + cutdepth) + \ + Point(-thickness, -upperradius + cutdepth) + \ + Point(-thickness, -upperradius) + \ + Point(-barsize/2.0, -upperradius) + \ + Circle(lowerradius, 72, 4, cutdepth=cutdepth, start=pi+a, end=pi*2-a, thickness=thickness) + \ + Point(-barsize/2.0, upperradius) + \ + Point(-thickness, upperradius) + \ + Point(-thickness, upperradius - cutdepth) + \ + Point(0.0, upperradius - cutdepth) + outer.close() + self.traces.append(outer) + + if part_id in (0,4): + # Central Motor Position. + inner = Trace() + \ + Point(-barsize/2.0, -barsize/2.0) + \ + Point(-barsize/2.0, barsize/2.0) + \ + Point(-barsize/6.0, barsize/2.0) + \ + Point(-barsize/6.0, barsize/2.0-thickness/2.0) + \ + Point(barsize/6.0, barsize/2.0-thickness/2.0) + \ + Point(barsize/6.0, barsize/2.0) + \ + Point(barsize/2.0, barsize/2.0) + \ + Point(barsize/2.0, -barsize/2.0) + \ + Point(barsize/6.0, -barsize/2.0) + \ + Point(barsize/6.0, -barsize/2.0+thickness/2.0) + \ + Point(-barsize/6.0, -barsize/2.0+thickness/2.0) + \ + Point(-barsize/6.0, -barsize/2.0) + inner.close() + self.traces.append(reversed(inner)) + + # Outer parts are complete, inner parts have cutouts. + if part_id in (1,2,3): + # Central Motor Position and Bar. + inner = Trace() + \ + Point(-barsize/2.0*1.3, -barsize/2.0) + \ + Point(-barsize/2.0*1.3, -barsize/2.0*0.55) + \ + Point(-barsize/2.0, -barsize/2.0*0.55) + \ + Point(-barsize/2.0, barsize/2.0*0.55) + \ + Point(-barsize/2.0*1.3, barsize/2.0*0.55) + \ + Point(-barsize/2.0*1.3, barsize/2.0) + \ + Point(barsize/2.0, barsize/2.0) + \ + Point(barsize/2.0, barsize/10.0) + \ + Point(barsize/2.0*1.2, barsize/20.0) + \ + Point(barsize/2.0*1.2, -barsize/20.0) + \ + Point(barsize/2.0, -barsize/10.0) + \ + Point(barsize/2.0, -barsize/2.0) + inner.close() + self.traces.append(reversed(inner)) + + # Upper segment cut-outs. + x = supwidth/2.0 + y = sqrt((upperradius-supwidth)**2 - x**2) + a_outer = atan(x/y) + y = sqrt((barradius+supwidth)**2 - x**2) + a_inner = atan(x/y) + + inner = self._segment(upperradius-supwidth, barradius+supwidth, + 0, 1, cutdepth, 0.0, a_outer, a_inner) + self.traces.append(reversed(inner)) + + fa = (pi/2.0 - self._faceangle(facesize, upperradius)) / 2.0 + (fx, fy) = intersection(upperradius, angle=fa) + if 0: + inner = Trace() + \ + Point(fx, -fy) + \ + Point(fy, -fy) + \ + Point(fy, -fx) + inner.close() + self.traces.append(reversed(inner)) + + oy = fy-thickness*2.0 + (ox, oa) = intersection(upperradius, y=oy) + if 0: + inner = Trace() + \ + Point(ox, -oy) + \ + Point(oy, -oy) + \ + Point(oy, -ox) + inner.close() + self.traces.append(reversed(inner)) + + iy = oy + (ix, ia) = intersection(upperradius-supwidth, y=iy) + + if part_id==2: + inner = Circle(upperradius-supwidth, 18, 0, cutdepth=cutdepth, + start=pi/3+a_outer, end=pi-a_outer, + thickness=self.thickness) + \ + reversed(Circle(barradius+supwidth, 18, 0, cutdepth=cutdepth, + start=pi/3+a_inner, end=pi-a_inner, + thickness=self.thickness)) + inner.close() + self.traces.append(reversed(inner)) + + # Temporary cut to remove where the face will be installed. + oy = fy-thickness + (ox, oa) = intersection(upperradius, y=oy) + inner = Trace() + \ + Point(ox, -ox) + \ + Point(oy, -ox) + \ + Point(oy, -oy) + \ + Point(ox, -oy) + inner.close() + self.traces.append(reversed(inner)) + + else: + inner = Circle(upperradius-supwidth, 18, 0, cutdepth=cutdepth, + start=pi/3*1+a_outer, end=pi/2+ia, + thickness=self.thickness) + \ + reversed(Circle(barradius+supwidth, 18, 0, cutdepth=cutdepth, + start=pi/3*1+a_inner, end=pi/3*2-a_inner, + thickness=self.thickness)) + inner.close() + self.traces.append(reversed(inner)) + + ia = pi/2 - ia + (ix, iy) = intersection(upperradius-supwidth, angle=ia) + + inner = Circle(upperradius-supwidth, 18, 0, cutdepth=cutdepth, + start=pi/2+ia, end=pi/3*3-a_outer, + thickness=self.thickness) + \ + reversed(Circle(barradius+supwidth, 18, 0, cutdepth=cutdepth, + start=pi/3*2+a_inner, end=pi/3*3-a_inner, + thickness=self.thickness)) + \ + Point(ix, -ix) + inner.close() + self.traces.append(reversed(inner)) + + # Face and base cutout slots. + cy = fy-thickness + for (x1, x2) in zip(fjoint.fingers[1::2],fjoint.fingers[2::2]): + inner = Trace() + \ + Point(cy+x1, -cy) + \ + Point(cy+x2, -cy) + \ + Point(cy+x2, -cy-thickness) + \ + Point(cy+x1, -cy-thickness) + inner.close() + self.traces.append(reversed(inner)) + for (y1, y2) in zip(bjoint.fingers[1::2],bjoint.fingers[2::2]): + inner = Trace() + \ + Point(cy, -cy-y2) + \ + Point(cy, -cy-y1) + \ + Point(cy+thickness, -cy-y1) + \ + Point(cy+thickness, -cy-y2) + inner.close() + self.traces.append(reversed(inner)) + + if 0: + if part_id==2: + for seg in range(2): + segnext = seg*2+1 + inner = self._segment(upperradius-supwidth, barradius+supwidth, + seg, segnext, cutdepth, 0.0, a_outer, a_inner) + self.traces.append(reversed(inner)) + else: + for seg in range(3): + segnext = seg+1 + inner = self._segment(upperradius-supwidth, barradius+supwidth, + seg, segnext, cutdepth, 0.0, a_outer, a_inner) + self.traces.append(reversed(inner)) + + # Lower segment cut-outs. + x = supwidth/2.0 + y = sqrt((lowerradius-supwidth)**2 - x**2) + a_outer = atan(x/y) + y = sqrt((barradius+supwidth)**2 - x**2) + a_inner = atan(x/y) + + for seg in range(3): + segnext = seg+1 + inner = self._segment(lowerradius-supwidth, barradius+supwidth, + seg, segnext, cutdepth, pi, a_outer, a_inner) + self.traces.append(reversed(inner)) + + if part_id in (1,2,3): + r_mid = barradius+supwidth + ((upperradius-supwidth) - (barradius+supwidth))/2.0 + self._slot(barsize/2.0 + supwidth/2.0, cutdepth*1.5, cutdepth) + self._slot(barsize/2.0 + supwidth/2.0, -cutdepth*1.5, cutdepth) + self._slot(barsize/2.0 + supwidth/2.0, r_mid+cutdepth*1.5, cutdepth) + self._slot(barsize/2.0 + supwidth/2.0, r_mid-cutdepth*1.5, cutdepth) + + elif part_id in (5,6): + # The board supports. + x = primarygapwidth + y = ((upperradius-supwidth) + (barradius+supwidth))/2.0 + supwidth*2.0 + t = Trace() + \ + Point(0.0, 0.0) + \ + Point(0.0, supwidth-cutdepth*2.0) + \ + Point(-cutdepth, supwidth-cutdepth*2.0) + \ + Point(-cutdepth, supwidth-cutdepth*1.0) + \ + Point(0.0, supwidth-cutdepth*1.0) + \ + Point(0.0, supwidth*2.0-cutdepth*2.0) + \ + Point(-cutdepth, supwidth*2.0-cutdepth*2.0) + \ + Point(-cutdepth, supwidth*2.0-cutdepth*1.0) + \ + Point(0.0, supwidth*2.0-cutdepth*1.0) + \ + Point(0.0, y-supwidth*2.0+cutdepth*1.0) + \ + Point(-cutdepth, y-supwidth*2.0+cutdepth*1.0) + \ + Point(-cutdepth, y-supwidth*2.0+cutdepth*2.0) + \ + Point(0.0, y-supwidth*2.0+cutdepth*2.0) + \ + Point(0.0, y-supwidth+cutdepth*1.0) + \ + Point(-cutdepth, y-supwidth+cutdepth*1.0) + \ + Point(-cutdepth, y-supwidth+cutdepth*2.0) + \ + Point(0.0, y-supwidth+cutdepth*2.0) + \ + Point(0.0, y) + \ + Point(x, y) + \ + Point(x, y-supwidth-cutdepth*1.0) + \ + Point(x+cutdepth, y-supwidth-cutdepth*1.0) + \ + Point(x+cutdepth, y-supwidth-cutdepth*2.0) + \ + Point(x, y-supwidth-cutdepth*2.0) + \ + Point(x, supwidth-cutdepth*1.0) + \ + Point(x+cutdepth, supwidth-cutdepth*1.0) + \ + Point(x+cutdepth, supwidth-cutdepth*2.0) + \ + Point(x, supwidth-cutdepth*2.0) + \ + Point(x, 0.0) + t.close() + self.traces.append(t) + + elif part_id==7: + # The face components. + t = Trace(x=[thickness], y=[thickness]) + for i, pos in enumerate(fjoint.fingers[1:-1]): + if i%2==0: + t += Point(pos, thickness) + t += Point(pos, 0.0) + else: + t += Point(pos, 0.0) + t += Point(pos, thickness) + t += Point(faceheight, thickness) + t += Point(faceheight, facewidth-thickness) + for i, pos in enumerate(reversed(fjoint.fingers[1:-1])): + if i%2==0: + t += Point(pos, facewidth-thickness) + t += Point(pos, facewidth) + else: + t += Point(pos, facewidth) + t += Point(pos, facewidth-thickness) + t += Point(thickness, facewidth-thickness) + for i, pos in enumerate(reversed(wjoint.fingers[1:-1])): + if i%2==0: + t += Point(thickness, pos) + t += Point(0.0, pos) + else: + t += Point(0.0, pos) + t += Point(thickness, pos) + t.close() + self.traces.append(t) + + elif part_id==8: + t = Trace(x=[thickness], y=[0.0]) + t += Point(facewidth-thickness, 0.0) + for i, pos in enumerate(bjoint.fingers[1:-1]): + if i%2==0: + t += Point(facewidth-thickness, pos) + t += Point(facewidth, pos) + else: + t += Point(facewidth, pos) + t += Point(facewidth-thickness, pos) + t += Point(facewidth-thickness, faceheight) + for i, pos in enumerate(reversed(wjoint.fingers[1:-1])): + if i%2==0: + t += Point(pos, faceheight) + t += Point(pos, faceheight-thickness) + else: + t += Point(pos, faceheight-thickness) + t += Point(pos, faceheight) + t += Point(thickness, faceheight) + for i, pos in enumerate(reversed(bjoint.fingers[1:-1])): + if i%2==0: + t += Point(thickness, pos) + t += Point(0.0, pos) + else: + t += Point(0.0, pos) + t += Point(thickness, pos) + t.close() + self.traces.append(t) + + for eye in range(2): + np = NeoPixel(style='rings', origin=Point(facewidth/4.0*(1+eye*2), faceheight/2.5), scale=scale, rotate=pi/2) + self.traces.extend(np.traces) + np = NeoPixel(style='strip', origin=Point(facewidth/2.0, faceheight*0.80), scale=scale) + self.traces.extend(np.traces) + + # Camera + csize = 8.5*scale + t = Trace() + \ + Point(facewidth/2.0 - csize/2.0, faceheight/2.5 - csize/2.0) + \ + Point(facewidth/2.0 + csize/2.0, faceheight/2.5 - csize/2.0) + \ + Point(facewidth/2.0 + csize/2.0, faceheight/2.5 + csize/2.0) + \ + Point(facewidth/2.0 - csize/2.0, faceheight/2.5 + csize/2.0) + t.close() + self.traces.append(t) + + def _faceangle(self, size, radius): + # Returns total angle required for a face. + o = sqrt(2.0*(size**2))*0.5 + h = radius + return 2.0*asin(o/h) + + def _segment(self, r_outer, r_inner, seg, segnext, cutdepth, a_offset, a_outer, a_inner): + # Create an inner segment cutout. + t = Circle(r_outer, 18, 0, cutdepth=cutdepth, + start=a_offset+pi/3*seg+a_outer, end=a_offset+pi/3*segnext-a_outer, + thickness=self.thickness) + \ + reversed(Circle(r_inner, 18, 0, cutdepth=cutdepth, + start=a_offset+pi/3*seg+a_inner, end=a_offset+pi/3*segnext-a_inner, + thickness=self.thickness)) + if a_offset == 0.0 and seg == 0: + r_mid = r_inner + (r_outer - r_inner)/2.0 + t += Trace() + \ + Point(self.supwidth / 2.0, r_mid - self.supwidth) + \ + Point(self.barsize/2.0 + self.supwidth, r_mid - self.supwidth) + \ + Point(self.barsize/2.0 + self.supwidth, r_mid + self.supwidth) + \ + Point(self.supwidth / 2.0, r_mid + self.supwidth) + t.close() + return t + + def _slot(self, x, y, cutdepth): + slot = Trace() + \ + Point(x-self.thickness/2.0, y+cutdepth/2.0) + \ + Point(x+self.thickness/2.0, y+cutdepth/2.0) + \ + Point(x+self.thickness/2.0, y-cutdepth/2.0) + \ + Point(x-self.thickness/2.0, y-cutdepth/2.0) + slot.close() + self.traces.append(reversed(slot)) diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/__init__.py b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/__init__.py new file mode 100644 index 00000000..bd494361 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/__init__.py @@ -0,0 +1,25 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .shape import Shape +from .box import Box +from .cone import Cone +from .cylinder import Cylinder +from .sphere import Sphere +from .rollerbot import RollerBot + +__all__ = ["Shape", "Box", "Cone", "Cylinder", "Sphere", "RollerBot"] diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/box.py b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/box.py new file mode 100644 index 00000000..346d79c2 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/box.py @@ -0,0 +1,161 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.part import Part +from ..core.point import Point +from ..core.trace import Trace +from ..core.fingerjoint import FingerJoint +from .shape import Shape + +class Box(Shape): + """ List of segments that make up a part. """ + def __init__(self, width, depth, height, thickness, kerf, top=True, bottom=True, + left=True, right=True, front=True, back=True): + super(Box, self).__init__(thickness, kerf) + + self.width = width + self.depth = depth + self.height = height + + self.faces = [] + self.parts = [] + + for face in range(6): + p = self._face(face, width, depth, height, thickness, top, bottom, left, right, front, back) + self.faces.append((p, face)) + self.parts.append((p, face)) + + if kerf: + for part, _ in self.parts: + part.applykerf(kerf) + + def _face(self, face, width, depth, height, thickness, top, bottom, left, right, front, back): + faces = (top, bottom, left, right, front, back) + + # Check if the requested face is active for this box. + if faces[face] == False: + return None + + wjoint = FingerJoint(width, thickness*2.0, 'width', thickness=thickness) + djoint = FingerJoint(depth, thickness*2.0, 'depth', thickness=thickness) + hjoint = FingerJoint(height, thickness*2.0, 'height', thickness=thickness) + + if face in (0, 1): + t = Trace(x=[thickness], y=[thickness]) + for i, pos in enumerate(djoint.fingers[1:-1]): + if i%2==0: + t += Point(pos, thickness) + t += Point(pos, 0.0) + else: + t += Point(pos, 0.0) + t += Point(pos, thickness) + t += Point(depth-thickness, thickness) + for i, pos in enumerate(wjoint.fingers[1:-1]): + if i%2==0: + t += Point(depth-thickness, pos) + t += Point(depth, pos) + else: + t += Point(depth, pos) + t += Point(depth-thickness, pos) + t += Point(depth-thickness, width-thickness) + for i, pos in enumerate(reversed(djoint.fingers[1:-1])): + if i%2==0: + t += Point(pos, width-thickness) + t += Point(pos, width) + else: + t += Point(pos, width) + t += Point(pos, width-thickness) + t += Point(thickness, width-thickness) + for i, pos in enumerate(reversed(wjoint.fingers[1:-1])): + if i%2==0: + t += Point(thickness, pos) + t += Point(0.0, pos) + else: + t += Point(0.0, pos) + t += Point(thickness, pos) + elif face in (2, 3): + t = Trace(x=[0.0], y=[0.0]) + for i, pos in enumerate(djoint.fingers[1:-1]): + if i%2==0: + t += Point(pos, 0.0) + t += Point(pos, thickness) + else: + t += Point(pos, thickness) + t += Point(pos, 0.0) + t += Point(depth, 0.0) + for i, pos in enumerate(hjoint.fingers[1:-1]): + if i%2==0: + t += Point(depth, pos) + t += Point(depth-thickness, pos) + else: + t += Point(depth-thickness, pos) + t += Point(depth, pos) + t += Point(depth, height) + for i, pos in enumerate(reversed(djoint.fingers[1:-1])): + if i%2==0: + t += Point(pos, height) + t += Point(pos, height-thickness) + else: + t += Point(pos, height-thickness) + t += Point(pos, height) + t += Point(0.0, height) + for i, pos in enumerate(reversed(hjoint.fingers[1:-1])): + if i%2==0: + t += Point(0.0, pos) + t += Point(thickness, pos) + else: + t += Point(thickness, pos) + t += Point(0.0, pos) + pass + elif face in (4, 5): + t = Trace(x=[thickness], y=[0.0]) + for i, pos in enumerate(wjoint.fingers[1:-1]): + if i%2==0: + t += Point(pos, 0.0) + t += Point(pos, thickness) + else: + t += Point(pos, thickness) + t += Point(pos, 0.0) + t += Point(width-thickness, 0.0) + for i, pos in enumerate(hjoint.fingers[1:-1]): + if i%2==0: + t += Point(width-thickness, pos) + t += Point(width, pos) + else: + t += Point(width, pos) + t += Point(width-thickness, pos) + t += Point(width-thickness, height) + for i, pos in enumerate(reversed(wjoint.fingers[1:-1])): + if i%2==0: + t += Point(pos, height) + t += Point(pos, height-thickness) + else: + t += Point(pos, height-thickness) + t += Point(pos, height) + t += Point(thickness, height) + for i, pos in enumerate(reversed(hjoint.fingers[1:-1])): + if i%2==0: + t += Point(thickness, pos) + t += Point(0.0, pos) + else: + t += Point(0.0, pos) + t += Point(thickness, pos) + pass + + t.close() + + return Part() + t diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cone.py b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cone.py new file mode 100644 index 00000000..de0d8e8b --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cone.py @@ -0,0 +1,34 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.part import Part +from ..platforms.circular import Circular +from .shape import Shape + +class Cone(Shape): + """ List of segments that make up a part. """ + def __init__(self, height, radius1, radius2, segments, cuts, cutdepth, platforms, + thickness, kerf): + super(Cone, self).__init__(thickness, kerf) + +# levels = [p/(platforms-1)*height for p in range(platforms)] +# radii = [radius1 + (radius2-radius1)*p/(platforms-1) for p in range(platforms)] + +# for level, radius in zip(levels, radii): +# p = cc.Part() +# p += cp.Circular(radius, segments, cuts, cutdepth, thickness=thickness, kerf=kerf).part +# self.parts.append((p, level)) diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cylinder.py b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cylinder.py new file mode 100644 index 00000000..945382d3 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cylinder.py @@ -0,0 +1,47 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.part import Part +from ..platforms.circular import Circular +from ..supports.pier import Pier +from .shape import Shape + +class Cylinder(Shape): + """ List of segments that make up a part. """ + def __init__(self, height, radius, inradius, segments, cuts, cutdepth, supwidth, platforms, + thickness, kerf): + super(Cylinder, self).__init__(thickness, kerf) + + self.platforms = [] + self.piers = [] + + # List of vertical positions for the platforms + levels = [float(p)/float(platforms-1)*(height-thickness) for p in range(platforms)] + + for level in levels: + p = Circular(radius, inradius, segments, cuts, cutdepth, thickness=thickness) + self.platforms.append((p, level)) + self.parts.append((p, level)) + + for _ in range(cuts): + p = Pier(height, supwidth, supwidth-cutdepth, [(level, 0.0) for level in levels], thickness=thickness) + self.piers.append((p, None)) + self.parts.append((p, None)) + + if kerf: + for part, _ in self.parts: + part.applykerf(kerf) diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/rollerbot.py b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/rollerbot.py new file mode 100644 index 00000000..f663941b --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/rollerbot.py @@ -0,0 +1,64 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.part import Part +from ..platforms.rollerframe import RollerFrame +from ..supports.pier import Pier +from .shape import Shape + +class RollerBot(Shape): + """ List of segments that make up a part. """ + def __init__(self, width, supwidth, wheelradius, upperradius, lowerradius, + facesize, barsize, primarygapwidth, secondarygapwidth, scale, + thickness, kerf): + super(RollerBot, self).__init__(thickness, kerf) + + self.platforms = [] + self.piers = [] + + cutdepth = supwidth / 3.0 + + for level in range(9): +# for level in range(7): + p = RollerFrame(supwidth, wheelradius, upperradius, lowerradius, + facesize, barsize, primarygapwidth, secondarygapwidth, + scale, level, thickness=thickness) + self.platforms.append((p, 0.0)) + self.parts.append((p, 0.0)) + + levels = [0.0, secondarygapwidth+thickness, + secondarygapwidth+primarygapwidth+thickness*2.0, + secondarygapwidth+primarygapwidth*2.0+thickness*3.0, + secondarygapwidth*2.0+primarygapwidth*2.0+thickness*4.0 ] + height = secondarygapwidth*2.0+primarygapwidth*2.0+thickness*5.0 + + for _ in range(9): + p = Pier(height, supwidth, supwidth-cutdepth, [(level, 0.0) for level in levels], thickness=thickness) + self.piers.append((p, None)) + self.parts.append((p, None)) + + levels = [0.0, secondarygapwidth+thickness ] + height = secondarygapwidth+thickness*2.0 + + for _ in range(4): + p = Pier(height, supwidth, supwidth-cutdepth, [(level, 0.0) for level in levels], thickness=thickness) + self.piers.append((p, None)) + self.parts.append((p, None)) + + if kerf: + for part, _ in self.parts: + part.applykerf(kerf) diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/shape.py b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/shape.py new file mode 100644 index 00000000..e26b33e8 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/shape.py @@ -0,0 +1,27 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +class Shape(object): + def __init__(self, thickness, kerf): + self.thickness = thickness + self.kerf = kerf + self.parts = [] + return + + def close(self): + for part in self.parts: + part[0].close() diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/sphere.py b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/sphere.py new file mode 100644 index 00000000..b0ed982c --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/shapes/sphere.py @@ -0,0 +1,25 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.part import Part +from ..platforms.circular import Circular +from .shape import Shape + +class Sphere(Shape): + """ List of segments that make up a part. """ + def __init__(self): + super(Sphere, self).__init__() diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/supports/__init__.py b/extensions/fablabchemnitz/cutcraft/cutcraft/supports/__init__.py new file mode 100644 index 00000000..e5e12000 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/supports/__init__.py @@ -0,0 +1,21 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from .support import Support +from .pier import Pier + +__all__ = ["Support", "Pier"] diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/supports/pier.py b/extensions/fablabchemnitz/cutcraft/cutcraft/supports/pier.py new file mode 100644 index 00000000..6a036ea5 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/supports/pier.py @@ -0,0 +1,84 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.trace import Trace +from .support import Support +from ..util import isclose + +class Pier(Support): + """ List of segments that make up a part. """ + def __init__(self, height, depth, cutdepth, levels, thickness): + super(Pier, self).__init__(height, thickness) + + self.depth = depth + self.cutdepth = cutdepth + + # The 'levels' list is defined as follows: + # [(height1, x-offset1), (height2, x-offset2), ...] + # where the values are: + # height: The height of the bottom of the platform (0.0=at base level, height-thickness=at top level). + # x-offset: The distance from the core axis for this level. Used to create slopes and curves. + + ys, xs = zip(*sorted(levels)) + if any([(h2) - (h1) < 3*thickness for h1, h2 + in zip(ys[:-1], ys[1:])]): + raise RuntimeError("Pier levels are too close. Try decreasing the number of levels.") + + self.topcut = isclose(ys[-1], height-thickness) + self.bottomcut = isclose(ys[0], 0.0) + self.vertical = all([isclose(x1, x2) for x1, x2 in zip(xs[:-1], xs[1:])]) + + # Starting at the bottom inner point, trace up the uncut side. + if self.vertical: + tx = [0.0, 0.0] + ty = [0.0, height] + else: + tx = list(xs) + ty = list(ys[:-1]) + [height] + + # Add the top points. + xtop = xs[0] + xbottom = xs[-1] + if self.topcut: + tx.extend([xtop+depth-cutdepth, xtop+depth-cutdepth, xtop+depth]) + ty.extend([height, height-thickness, height-thickness]) + else: + tx.extend([xtop+depth]) + ty.extend([height]) + + if self.topcut and self.bottomcut: + xs = xs[1:-1] + ys = ys[1:-1] + elif self.topcut: + xs = xs[:-1] + ys = ys[:-1] + elif self.bottomcut: + xs = xs[1:] + ys = ys[1:] + + for y, x in zip(reversed(ys), reversed(xs)): + tx.extend([x+depth, x+depth-cutdepth, x+depth-cutdepth, x+depth]) + ty.extend([y+thickness, y+thickness, y, y]) + + if self.bottomcut: + tx.extend([xbottom+depth, xbottom+depth-cutdepth, xbottom+depth-cutdepth, xbottom]) + ty.extend([thickness, thickness, 0.0, 0.0]) + else: + tx.extend([xbottom+depth, xbottom]) + ty.extend([0.0, 0.0]) + + self.traces.append(Trace(x=tx, y=ty)) diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/supports/support.py b/extensions/fablabchemnitz/cutcraft/cutcraft/supports/support.py new file mode 100644 index 00000000..27363817 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/supports/support.py @@ -0,0 +1,25 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from ..core.part import Part + +class Support(Part): + """ General support. """ + def __init__(self, height, thickness): + super(Support, self).__init__() + self.height = height + self.thickness = thickness diff --git a/extensions/fablabchemnitz/cutcraft/cutcraft/util.py b/extensions/fablabchemnitz/cutcraft/cutcraft/util.py new file mode 100644 index 00000000..d08e7cbd --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraft/util.py @@ -0,0 +1,40 @@ +# Copyright (C) 2018 Michael Matthews +# +# This file is part of CutCraft. +# +# CutCraft is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CutCraft is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CutCraft. If not, see . + +from math import pi, atan2, cos, sin, sqrt + +def isclose(a, b, rel_tol=1e-09, abs_tol=0.0): + # Required as Inkscape uses old version of Python that does not include math.isclose(). + return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol) + +def iscloselist(a, b): + # Functionality of isclose() for lists of values. + return all([isclose(aval, bval) for aval, bval in zip(a, b)]) + +def intersection(radius, angle=None, x=None, y=None): + # With a circle of a given radius determine the intercepts for an angle, x or y coordinate. + if angle: + # Returns (x,y) tuple of intercept. + return (cos(angle)*radius, sin(angle)*radius) + elif x: + y = sqrt((radius)**2 - x**2) + return (y, atan2(y, x)) + elif y: + x = sqrt((radius)**2 - y**2) + return (x, atan2(y, x)) + else: + raise ValueError("Invalid values passed to intersection().") diff --git a/extensions/fablabchemnitz/cutcraft/cutcraftbox.inx b/extensions/fablabchemnitz/cutcraft/cutcraftbox.inx new file mode 100644 index 00000000..acd964b2 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraftbox.inx @@ -0,0 +1,32 @@ + + + Cut-Craft Box + fablabchemnitz.de.cutcraft.box + + + + + + + 60.0 + 30.0 + 30.0 + + 5.0 + 0.01 + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutcraft/cutcraftbox.py b/extensions/fablabchemnitz/cutcraft/cutcraftbox.py new file mode 100644 index 00000000..c7191404 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraftbox.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +import inkex +from cutcraftshape import CutCraftShape +import cutcraft.platforms as cp +from cutcraft.shapes import Box + +class CutCraftBox(CutCraftShape): + def __init__(self): + CutCraftShape.__init__(self) + self.arg_parser.add_argument("--width", type=float, default=6.0, help="Box Width") + self.arg_parser.add_argument("--depth", type=float, default=6.0, help="Box Depth") + self.arg_parser.add_argument("--height", type=float, default=60.0, help="Box height") + + def effect(self): + CutCraftShape.effect(self) + + width = self.svg.unittouu( str(self.options.width) + self.unit ) + depth = self.svg.unittouu( str(self.options.depth) + self.unit ) + height = self.svg.unittouu( str(self.options.height) + self.unit ) + + shape = Box(width, depth, height, self.thickness, self.kerf) + + self.pack(shape) + +if __name__ == '__main__': + CutCraftBox().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutcraft/cutcraftcylinder.inx b/extensions/fablabchemnitz/cutcraft/cutcraftcylinder.inx new file mode 100644 index 00000000..fe1f5bc6 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraftcylinder.inx @@ -0,0 +1,36 @@ + + + Cut-Craft Cylinder + fablabchemnitz.de.cutcraft.cylinder + + + + + + + 60.0 + 60.0 + 30.0 + 3 + 2 + 3 + 6.0 + + 5.0 + 0.01 + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutcraft/cutcraftcylinder.py b/extensions/fablabchemnitz/cutcraft/cutcraftcylinder.py new file mode 100644 index 00000000..8b08a605 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraftcylinder.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +import inkex +from cutcraftshape import CutCraftShape +import cutcraft.platforms as cp +from cutcraft.shapes import Cylinder + +class CutCraftCylinder(CutCraftShape): + def __init__(self): + CutCraftShape.__init__(self) + self.arg_parser.add_argument("--vertices", type=int, default=3, help="Number of vertices") + self.arg_parser.add_argument("--levels", type=int, default=3, help="Number of levels") + self.arg_parser.add_argument("--supports", type=int, default=3, help="Number of supports") + self.arg_parser.add_argument("--supwidth", type=float, default=6.0, help="Support Width") + self.arg_parser.add_argument("--height", type=float, default=60.0, help="Cylinder height") + self.arg_parser.add_argument("--outer", type=float, default=60.0, help="Diameter of cylinder") + self.arg_parser.add_argument("--inner", type=float, default=30.0, help="Diameter of central hole - 0.0 for no hole") + + def effect(self): + CutCraftShape.effect(self) + + vertices = self.options.vertices + levels = self.options.levels + supports = self.options.supports + supwidth = self.svg.unittouu( str(self.options.supwidth) + self.unit ) + height = self.svg.unittouu( str(self.options.height) + self.unit ) + outer = self.svg.unittouu( str(self.options.outer) + self.unit ) + inner = self.svg.unittouu( str(self.options.inner) + self.unit ) + + if outer<=inner: + self._error("ERROR: Outer diameter must be greater than inner diameter.") + exit() + + shape = Cylinder(height, outer/2.0, inner/2.0, vertices, supports, supwidth/2.0, supwidth, levels, + self.thickness, self.kerf) + + self.pack(shape) + +if __name__ == '__main__': + CutCraftCylinder().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.inx b/extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.inx new file mode 100644 index 00000000..2181fe29 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.inx @@ -0,0 +1,30 @@ + + + Cut-Craft RollerBot + fablabchemnitz.de.cutcraft.rollerbot + + + + + + + 12.0 + + 5.0 + 0.01 + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.py b/extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.py new file mode 100644 index 00000000..0e6cd4d3 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import inkex +from cutcraftshape import CutCraftShape +import cutcraft.platforms as cp +from cutcraft.shapes import RollerBot + +class CutCraftRollerBot(CutCraftShape): + def __init__(self): + CutCraftShape.__init__(self) + self.arg_parser.add_argument("--supwidth", type=float, default=6.0, help="Support Width") + + def effect(self): + CutCraftShape.effect(self) + + supwidth = self.svg.unittouu( str(self.options.supwidth) + self.unit ) + + # Constants in the current RollerBot design. + wheelradius = self.svg.unittouu( str(100.0) + "mm" ) + upperradius = self.svg.unittouu( str(92.0) + "mm" ) + lowerradius = self.svg.unittouu( str(82.0) + "mm" ) + facesize = self.svg.unittouu( str(50.0) + "mm" ) + barsize = self.svg.unittouu( str(25.4) + "mm" ) + scale = self.svg.unittouu( str(1.0) + "mm" ) + + primarygapwidth = self.svg.unittouu( str(70.0) + "mm" ) # Must be greater than width of Raspberry PI / Arduino. + secondarygapwidth = self.svg.unittouu( str(25.0) + "mm" ) + width = primarygapwidth*2.0 + secondarygapwidth*2.0 + self.thickness*5.0 + + shape = RollerBot(width, supwidth, wheelradius, upperradius, lowerradius, + facesize, barsize, primarygapwidth, secondarygapwidth, scale, + self.thickness, self.kerf) + + self.pack(shape) + +if __name__ == '__main__': + CutCraftRollerBot().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutcraft/cutcraftshape.py b/extensions/fablabchemnitz/cutcraft/cutcraftshape.py new file mode 100644 index 00000000..11d80b69 --- /dev/null +++ b/extensions/fablabchemnitz/cutcraft/cutcraftshape.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 + +import gettext +import inkex +from math import floor +from cutcraft.core import Point, Rectangle +from lxml import etree + +#TODOS +''' +since InkScape 1.0 / Python 3 adjustments are required to fix "TypeError: '<' not supported between instances of 'Pier' and 'Pier'". A __lt__ method has to be implemented +"for this reasion items = sorted([(p[0].area(),p[0]) for p in shape.parts], reverse=True)" was commented out +''' + +class CutCraftNode(object): + def __init__(self, rect): + self.children = [] + self.rectangle = rect + self.part = None + + def insert(self, part, shape): + if len(self.children)>0: + node = self.children[0].insert(part, shape) + if node is not None: + return node + else: + return self.children[1].insert(part, shape) + + if self.part is not None: + return None + + pwidth, pheight = part.bbox().expanded().size() + nwidth, nheight = self.rectangle.expanded().size() + + if pwidth>nwidth or pheight>nheight: + # Too small. + return None + if pwidth==nwidth and pheight==nheight: + # This node fits. + self.part = part + return self + + nleft, ntop = self.rectangle.expanded().topleft.tup() + nright, nbottom = self.rectangle.expanded().bottomright.tup() + + if nwidth - pwidth > nheight - pheight: + r1 = Rectangle(Point(nleft, ntop), + Point(nleft+pwidth, nbottom)) + r2 = Rectangle(Point(nleft+pwidth+1.0, ntop), + Point(nright, nbottom)) + else: + r1 = Rectangle(Point(nleft, ntop), + Point(nright, ntop+pheight)) + r2 = Rectangle(Point(nleft, ntop+pheight+1.0), + Point(nright, nbottom)) + + self.children = [CutCraftNode(r1), CutCraftNode(r2)] + + return self.children[0].insert(part, shape) + +class CutCraftShape(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--active-tab", default="Options", help="The tab selected when OK was pressed") + pars.add_argument("--unit", default="mm", help="unit of measure for circular pitch and center diameter") + pars.add_argument("--thickness", type=float, default=20.0, help="Material Thickness") + pars.add_argument("--kerf", type=float, default=20.0, help="Laser Cutter Kerf") + pars.add_argument("--linethickness", default="1px", help="Line Thickness") + + def effect(self): + self.unit = self.options.unit + self.thickness = self.svg.unittouu( str(self.options.thickness) + self.unit) + self.kerf = self.svg.unittouu( str(self.options.kerf) + self.unit) + self.linethickness = self.svg.unittouu(self.options.linethickness) + + svg = self.document.getroot() + self.docwidth = self.svg.unittouu(svg.get('width')) + self.docheight = self.svg.unittouu(svg.get('height')) + + self.parent=self.svg.get_current_layer() + + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'newlayer') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + + def _debug(self, string): + inkex.debug( gettext.gettext(str(string)) ) + + def _error(self, string): + inkex.errormsg( gettext.gettext(str(string)) ) + + def pack(self, shape): + # Pack the individual parts onto the current canvas. + line_style = { 'stroke': '#000000', + 'stroke-width': str(self.linethickness), + 'fill': 'none' } + + #items = sorted([(p[0].area(),p[0]) for p in shape.parts], reverse=True) + items = [(p[0].area(),p[0]) for p in shape.parts] + #for p in shape.parts: + # inkex.utils.debug(p[0]) + + rootnode = CutCraftNode(Rectangle(Point(0.0, 0.0), Point(floor(self.docwidth), floor(self.docheight)))) + + for i, (_, part) in enumerate(items): + node = rootnode.insert(part, self) + if node is None: + self._error("ERROR: Cannot fit parts onto canvas.\n" + + "Try a larger canvas and then manually arrange if required.") + exit() + + bbox = part.bbox().expanded() + part += -bbox.topleft + part += node.rectangle.topleft + + line_attribs = { 'style' : str(inkex.Style(line_style)), + inkex.addNS('label','inkscape') : 'Test ' + str(i), + 'd' : part.svg() } + _ = etree.SubElement(self.parent, inkex.addNS('path','svg'), line_attribs) \ No newline at end of file diff --git a/extensions/fablabchemnitz/cutting_optimizer/.gitignore b/extensions/fablabchemnitz/cutting_optimizer/.gitignore new file mode 100644 index 00000000..99ee6b15 --- /dev/null +++ b/extensions/fablabchemnitz/cutting_optimizer/.gitignore @@ -0,0 +1 @@ +/Debug_CutOptim.txt diff --git a/extensions/fablabchemnitz/cutting_optimizer/CutOptim b/extensions/fablabchemnitz/cutting_optimizer/CutOptim new file mode 100755 index 00000000..039c6b41 Binary files /dev/null and b/extensions/fablabchemnitz/cutting_optimizer/CutOptim differ diff --git a/extensions/fablabchemnitz/cutting_optimizer/CutOptim.exe b/extensions/fablabchemnitz/cutting_optimizer/CutOptim.exe new file mode 100644 index 00000000..8f9da7d0 Binary files /dev/null and b/extensions/fablabchemnitz/cutting_optimizer/CutOptim.exe differ diff --git a/extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.inx b/extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.inx new file mode 100644 index 00000000..c3c3468e --- /dev/null +++ b/extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.inx @@ -0,0 +1,47 @@ + + + Cutting Optimizer (Nesting) + fablabchemnitz.de.cutting_optimizer + + + + + 2.0 + 1000 + 1 + false + + + + + + + + + + + + true + 0 + true + true + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.py b/extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.py new file mode 100644 index 00000000..d787c1bf --- /dev/null +++ b/extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 + +""" +Extension for InkScape 1.0 + +CutOptim OS Wrapper script to make CutOptim work on Windows and Linux systems without duplicating .inx files + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 31.08.2020 +Last patch: 14.01.2021 +License: GNU GPL v3 + +""" + +import inkex +import sys +import os +from lxml import etree +import subprocess + +class CuttingOptimizer(inkex.EffectExtension): + + def openDebugFile(self, file): + DETACHED_PROCESS = 0x00000008 + if os.name == 'nt': + subprocess.Popen(["explorer", file], close_fds=True, creationflags=DETACHED_PROCESS).wait() + else: + subprocess.Popen(["xdg-open", file], close_fds=True, start_new_session=True).wait() + + def add_arguments(self, pars): + args = sys.argv[1:] + for arg in args: + key=arg.split("=")[0] + if len(arg.split("=")) == 2: + value=arg.split("=")[1] + try: + if key != "--id": + pars.add_argument(key, default=key) + except: + pass #ignore duplicate id arg + + def effect(self): + cmd="" + if os.name == "nt": + cutoptim="CutOptim.exe" + else: + cutoptim="./CutOptim" + cmd += cutoptim + + for arg in vars(self.options): + if arg != "output" and arg != "ids" and arg != "selected_nodes": + #inkex.utils.debug(str(arg) + " = " + str(getattr(self.options, arg))) + #fix behaviour of "original" arg which does not correctly gets interpreted if set to false + if arg == "original" and str(getattr(self.options, arg)) == "false": + continue + if arg == "input_file": + cmd += " --file " + str(getattr(self.options, arg)) + else: + cmd += " --" + arg + " " + str(getattr(self.options, arg)) + + output_file = None + if os.name == "nt": + output_file = "cutoptim.svg" + else: + output_file = "/tmp/cutoptim.svg" + + cmd += " --output " + output_file + + # run CutOptim with the parameters provided + with os.popen(cmd, "r") as cutoptim: + result = cutoptim.read() + + # check output existence + try: + stream = open(output_file, 'r') + except FileNotFoundError as e: + inkex.utils.debug("There was no SVG output generated. Cannot continue. Command was:") + inkex.utils.debug(cmd) + exit(1) + + if self.options.original == "false": #we need to use string representation of bool + for element in self.document.getroot(): + if isinstance(element, inkex.ShapeElement): + element.delete() + + if self.options.debug_file == "true": #we need to use string representation of bool + self.openDebugFile("Debug_CutOptim.txt") + + # write the generated SVG into Inkscape's canvas + p = etree.XMLParser(huge_tree=True) + doc = etree.parse(stream, parser=etree.XMLParser(huge_tree=True)) + stream.close() + group = inkex.Group(id="CutOptim") + targetLayer = doc.xpath('//svg:g[@inkscape:label="Placed_Layer"]', namespaces=inkex.NSS)[0]#.getchildren()[0] + for element in targetLayer.getchildren(): + group.append(element) + self.document.getroot().append(group) + +if __name__ == '__main__': + CuttingOptimizer().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.inx b/extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.inx new file mode 100644 index 00000000..ade405d2 --- /dev/null +++ b/extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.inx @@ -0,0 +1,56 @@ + + + Delaunay Triangulation + fablabchemnitz.de.delaunay_triangulation + + + false + false + + + + + + + + + + + + + + + -1 + + + + + + + + + 255 + + + + Qbb Qc Qz Q12 + + + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.py b/extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.py new file mode 100644 index 00000000..5d44b741 --- /dev/null +++ b/extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.py @@ -0,0 +1,197 @@ +#! /usr/bin/python3 + +''' +Copyright (C) 2020 Scott Pakin, scott-ink@pakin.org + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301, USA. + +''' + +import inkex +import numpy as np +import random +import sys +from inkex import Group, Line, Polygon, TextElement +from inkex.styles import Style +from inkex.transforms import Vector2d +from scipy.spatial import Delaunay + +class DelaunayTriangulation(inkex.EffectExtension): + 'Overlay selected objects with triangles.' + + def add_arguments(self, pars): + pars.add_argument('--tab', help='The selected UI tab when OK was pressed') + pars.add_argument('--joggling', type=inkex.Boolean, default=False, help='Use joggled input instead of merged facets') + pars.add_argument('--furthest', type=inkex.Boolean, default=False, help='Furthest-site Delaunay triangulation') + pars.add_argument('--elt_type', default='poly', help='Element type to generate ("poly" or "line")') + pars.add_argument('--qhull', help='Triangulation options to pass to qhull') + pars.add_argument('--fill_type', help='How to fill generated polygons') + pars.add_argument('--fill_color', type=inkex.Color, help='Fill color to use with a fill type of "specified"') + pars.add_argument('--stroke_type', help='How to stroke generated polygons') + pars.add_argument('--stroke_color', type=inkex.Color, help='Stroke color to use with a stroke type of "specified"') + + def _path_points(self, elt): + 'Return a list of all points on a path (endpoints, not control points).' + pts = set() + first = None + prev = Vector2d() + for cmd in elt.path.to_absolute(): + if first is None: + first = cmd.end_point(first, prev) + ep = cmd.end_point(first, prev) + pts.add((ep.x, ep.y)) + prev = ep + return pts + + def _create_styles(self, n): + 'Return a style to use for the generated objects.' + # Use either the first or the last element's stroke for line caps, + # stroke widths, etc. + fstyle = self.svg.selection.first().style + lstyle = self.svg.selection[-1].style + if self.options.stroke_type == 'last_sel': + style = Style(lstyle) + else: + style = Style(fstyle) + + # Apply the specified fill color. + if self.options.fill_type == 'first_sel': + fcolor = fstyle.get_color('fill') + style.set_color(fcolor, 'fill') + elif self.options.fill_type == 'last_sel': + fcolor = lstyle.get_color('fill') + style.set_color(fcolor, 'fill') + elif self.options.fill_type == 'specified': + style.set_color(self.options.fill_color, 'fill') + elif self.options.fill_type == 'random': + pass # Handled below + else: + sys.exit(inkex.utils.errormsg(_('Internal error: Unrecognized fill type "%s".')) % self.options.fill_type) + + # Apply the specified stroke color. + if self.options.stroke_type == 'first_sel': + scolor = fstyle.get_color('stroke') + style.set_color(scolor, 'stroke') + elif self.options.stroke_type == 'last_sel': + scolor = lstyle.get_color('stroke') + style.set_color(scolor, 'stroke') + elif self.options.stroke_type == 'specified': + style.set_color(self.options.stroke_color, 'stroke') + elif self.options.stroke_type == 'random': + pass # Handled below + else: + sys.exit(inkex.utils.errormsg(_('Internal error: Unrecognized stroke type "%s".')) % self.options.stroke_type) + + # Produce n copies of the style. + styles = [Style(style) for i in range(n)] + if self.options.fill_type == 'random': + for s in styles: + r = random.randint(0, 255) + g = random.randint(0, 255) + b = random.randint(0, 255) + s.set_color('#%02x%02x%02x' % (r, g, b), 'fill') + s['fill-opacity'] = 255 + if self.options.stroke_type == 'random': + for s in styles: + r = random.randint(0, 255) + g = random.randint(0, 255) + b = random.randint(0, 255) + s.set_color('#%02x%02x%02x' % (r, g, b), 'stroke') + s['stroke-opacity'] = 255 + + # Return the list of styles. + return [str(s) for s in styles] + + def _create_polygons(self, triangles): + 'Render triangles as SVG polygons.' + styles = self._create_styles(len(triangles)) + group = self.svg.get_current_layer().add(Group()) + for tri, style in zip(triangles, styles): + tri_str = ' '.join(['%.10g %.10g' % (pt[0], pt[1]) for pt in tri]) + poly = Polygon() + poly.set('points', tri_str) + poly.style = style + group.add(poly) + + def _create_lines(self, triangles): + 'Render triangles as individual SVG lines.' + # First, find all unique lines. + lines = set() + for tri in triangles: + if len(tri) != 3: + sys.exit(inkex.utils.errormsg(_('Internal error: Encountered a non-triangle.'))) + for i, j in [(0, 1), (0, 2), (1, 2)]: + xy1 = tuple(tri[i]) + xy2 = tuple(tri[j]) + if xy1 < xy2: + lines.update([(xy1, xy2)]) + else: + lines.update([(xy2, xy1)]) + + # Then, create SVG line elements. + styles = self._create_styles(len(lines)) + group = self.svg.get_current_layer().add(Group()) + for ([(x1, y1), (x2, y2)], style) in zip(lines, styles): + line = Line() + line.set('x1', x1) + line.set('y1', y1) + line.set('x2', x2) + line.set('y2', y2) + line.style = style + group.add(line) + + def effect(self): + 'Triangulate a set of objects.' + + # Complain if the selection is empty. + if len(self.svg.selection) == 0: + return inkex.utils.errormsg(_('Please select at least one object.')) + + # Acquire a set of all points from all selected objects. + all_points = set() + warned_text = False + for obj in self.svg.selection.values(): + if isinstance(obj, TextElement) and not warned_text: + sys.stderr.write('Warning: Text elements are not currently supported. Ignoring all text in the selection.\n') + warned_text = True + all_points.update(self._path_points(obj.to_path_element())) + + # Use SciPy to perform the Delaunay triangulation. + pts = np.array(list(all_points)) + if len(pts) == 0: + return inkex.utils.errormsg(_('No points were found.')) + qopts = self.options.qhull + if self.options.joggling: + qopts = 'QJ ' + qopts + simplices = Delaunay(pts, furthest_site=self.options.furthest, qhull_options=qopts).simplices + + # Create either triangles or lines, as request. Either option uses the + # style of the first object in the selection. + triangles = [] + for s in simplices: + try: + triangles.append(pts[s]) + except IndexError: + pass + if self.options.elt_type == 'poly': + self._create_polygons(triangles) + elif self.options.elt_type == 'line': + self._create_lines(triangles) + else: + return inkex.utils.errormsg(_('Internal error: unexpected element type "%s".') % self.options.elt_type) + +if __name__ == '__main__': + DelaunayTriangulation().run() diff --git a/extensions/fablabchemnitz/delete_above/delete_above.inx b/extensions/fablabchemnitz/delete_above/delete_above.inx new file mode 100644 index 00000000..c6708c0d --- /dev/null +++ b/extensions/fablabchemnitz/delete_above/delete_above.inx @@ -0,0 +1,16 @@ + + + Delete Above + fablabchemnitz.de.delete_above + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/delete_above/delete_above.py b/extensions/fablabchemnitz/delete_above/delete_above.py new file mode 100644 index 00000000..76fa6aff --- /dev/null +++ b/extensions/fablabchemnitz/delete_above/delete_above.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +""" +Inkscape plugin: delete the selected object(s) and any objects on top of them. + +I.E. delete the selected node(s) and any other nodes that are completely +within the bounding-boxes of the selected nodes that have a greater z-order + +Simply put, you select a "background" rectangle, then use this plugin to +delete it and everything that appears on top of it. +""" + +import collections +import subprocess +import os +import pprint +import inkex + +Point = collections.namedtuple('Point', ['x', 'y']) + +Box = collections.namedtuple('Box', ['tl', 'tr', 'br', 'bl']) +# tl=top left, tr=top right, br=bottom right, bl=bottom left + +nodeInfo = collections.namedtuple('nodeInfo', + ['x', 'y', 'width', 'height']) + + +def contains(outer, inner): + """ Return true if the Box inner is completely within the Box outer """ + return inner.tl.x >= outer.tl.x and inner.tl.y >= outer.tl.y and \ + inner.br.x <= outer.br.x and inner.br.y <= outer.br.y + + +class DeleteAbove(inkex.EffectExtension): + """ Delete the selected node and everything above it """ + node_info = None + + def load_node_info(self): + """ Ask inkscape for information about all object bounding boxes """ + node_info = dict() + command = ['inkscape', '--query-all', self.options.input_file] + check_output = subprocess.check_output + + with open(os.devnull, 'w') as null: + for line in check_output(command, stderr=null).splitlines(): + raw_id, raw_x, raw_y, raw_width, raw_height = line.split(b',') + node_info[raw_id.decode("UTF-8")] = nodeInfo(float(raw_x), + float(raw_y), + float(raw_width), + float(raw_height)) + + self.node_info = node_info + return + + def remove(self, node): + """ Remove the specified node from the document tree """ + parent = node.getparent() + if parent is None: + return + parent.remove(node) + + def bbox(self, node): + """ Return the bounding-box of the given node """ + node_id = node.get('id') + #inkex.utils.debug("Check if " + str(node_id) + " is in " + str(self.node_info)) + info = self.node_info[node_id] + + x = info.x + y = info.y + width = info.width + height = info.height + + return Box(Point(x, y), + Point(x + width, y), + Point(x + width, y + height), + Point(x, y + height)) + + def effect(self): + """ + For every selected node, remove it and all items on top of it + """ + self.load_node_info() + nodes_to_remove = list() + + for id, node in self.svg.selected.items(): + selected_node_bbox = self.bbox(node) + nodes_to_remove.append(node) + + # search the document tree for the selected node + # when found, every subsequent node will be "above" it. + # (i.e. svg documents draw from the background up, so a background + # node will appear first, then nodes that are progressively + # closer to the viewer will appear subsequently in the svg file) + found_selected_node = False + for node in self.document.getiterator(): + if not found_selected_node: + if node == node: + found_selected_node = True + continue + # Hereafter we are iterating over all nodes above the + # selected node. We need to delete them if they appear to + # be "on top of" the selection (i.e. within the bounding box + # of the selection) + try: + node_bbox = self.bbox(node) + except KeyError: + continue + if contains(selected_node_bbox, node_bbox): + nodes_to_remove.append(node) + + # Now we remove the items we've previously found. Search and remove + # need to be separate bulk steps because tree search is disrupted by + # tree modification + for condemned_node in set(nodes_to_remove): + self.remove(condemned_node) + +if __name__ == '__main__': + if False: + # Some tools for debug use + PPRINTER = pprint.PrettyPrinter(indent=4) + FMT = PPRINTER.pformat + DUMP = lambda obj: inkex.debug(FMT(obj)) + + DeleteAbove().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/destructive_clip/destructive_clip.inx b/extensions/fablabchemnitz/destructive_clip/destructive_clip.inx new file mode 100644 index 00000000..c9687b03 --- /dev/null +++ b/extensions/fablabchemnitz/destructive_clip/destructive_clip.inx @@ -0,0 +1,17 @@ + + + Destructive Clip + fablabchemnitz.de.destructive_clip + + path + + + + + + "Destructively" clip selected paths using the topmost as clipping path + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/destructive_clip/destructive_clip.py b/extensions/fablabchemnitz/destructive_clip/destructive_clip.py new file mode 100644 index 00000000..554e996e --- /dev/null +++ b/extensions/fablabchemnitz/destructive_clip/destructive_clip.py @@ -0,0 +1,220 @@ +#!/usr/bin/env python3 +''' + ---DESTRUCTIVE Clip--- + An Inkscape Extension which works like Object|Clip|Set except that the paths clipped are actually *modified* + Thus the clipping is included when exported, for example as a DXF file. + Select two or more *paths* then choose Extensions|Modify path|Destructive clip. The topmost path will be used to clip the others. + Notes:- + * Curves in paths are not supported (use Flatten Beziers). + * Non-path objects in the selection will be ignored. Use Object|Ungroup. + * Paths entirely outside the clipping path will remain untouched (rather than modifying them to an empty path) + * Complex paths may take a while (there seems to be no way too show progress) + * Yes, using MBR's to do gross clipping might make it faster + * No, Python is not my first language (C/C++ is) + + Mark Wilson Feb 2016 + + ---- + + Edits by Windell H. Oskay, www.evilmadscientit.com, August 2020 + Update calls to Inkscape 1.0 extension API to avoid deprecation warnings + Minimal standardization of python whitespace + Handle some errors more gracefully + +''' + +import inkex +import sys +from inkex.paths import Path + + +class DestructiveClip(inkex.EffectExtension): + + def __init__(self): + self.tolerance = 0.0001 # arbitrary fudge factor + inkex.Effect.__init__(self) + self.error_messages = [] + + self.curve_error = 'Unable to parse path.\nConsider removing curves with Extensions > Modify Path > Flatten Beziers...' + + def approxEqual(self, a, b): + # compare with tiny tolerance + return abs(a-b) <= self.tolerance + + def midPoint(self, line): + # midPoint of line + return [(line[0][0] + line[1][0])/2, (line[0][1] + line[1][1])/2] + + def maxX(self, lineSegments): + # return max X coord of lineSegments + maxx = 0.0 + for line in lineSegments: + maxx = max(maxx, line[0][0]) + maxx = max(maxx, line[1][0]) + return maxx + + def simplepathToLineSegments(self, path): + # takes a simplepath and converts to line *segments*, for simplicity. + # Thus [MoveTo P0, LineTo P1, LineTo P2] becomes [[P0-P1],[P1,P2]] + # only handles, Move, Line and Close. + # The simplepath library has already simplified things, normalized relative commands, etc + lineSegments = first = prev = this = [] + errors = set([]) # Similar errors will be stored only once + for cmd in path: + this = cmd[1] + if cmd[0] == 'M': # moveto + if first == []: + first = this + elif cmd[0] == 'L': # lineto + lineSegments.append([prev, this]) + elif cmd[0] == 'Z': # close + lineSegments.append([prev, first]) + first = [] + elif cmd[0] == 'C': + # https://developer.mozilla.org/en/docs/Web/SVG/Tutorial/Paths + lineSegments.append([prev, [this[4], this[5]]]) + errors.add("Curve node detected (svg type C), this node will be handled as a regular node") + else: + errors.add("Invalid node type detected: {}. This script only handle type M, L, Z".format(cmd[0])) + prev = this + return (lineSegments, errors) + + def linesgmentsToSimplePath(self, lineSegments): + # reverses simplepathToLines - converts line segments to Move/Line-to's + path = [] + end = None + for line in lineSegments: + start = line[0] + if end is None: + path.append(['M', start]) # start with a move + elif not (self.approxEqual(end[0], start[0]) and self.approxEqual(end[1], start[1])): + path.append(['M', start]) # only move if previous end not within tolerance of this start + end = line[1] + path.append(['L', end]) + return path + + def lineIntersection(self, L1From, L1To, L2From, L2To): + # returns as [x, y] the intersection of the line L1From-L1To and L2From-L2To, or None + # http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect + + try: + dL1 = [L1To[0] - L1From[0], L1To[1] - L1From[1]] + dL2 = [L2To[0] - L2From[0], L2To[1] - L2From[1]] + except IndexError: + inkex.errormsg(self.curve_error) + sys.exit() + + denominator = -dL2[0]*dL1[1] + dL1[0]*dL2[1] + if not self.approxEqual(denominator, 0.0): + s = (-dL1[1]*(L1From[0] - L2From[0]) + dL1[0]*(L1From[1] - L2From[1]))/denominator + t = (+dL2[0]*(L1From[1] - L2From[1]) - dL2[1]*(L1From[0] - L2From[0]))/denominator + if s >= 0.0 and s <= 1.0 and t >= 0.0 and t <= 1.0: + return [L1From[0] + (t * dL1[0]), L1From[1] + (t * dL1[1])] + else: + return None + + def insideRegion(self, point, lineSegments, lineSegmentsMaxX): + # returns true if point is inside the region defined by lineSegments. lineSegmentsMaxX is the maximum X extent + ray = [point, [lineSegmentsMaxX*2.0, point[1]]] # hz line to right of point, extending well outside MBR + crossings = 0 + for line in lineSegments: + if not self.lineIntersection(line[0], line[1], ray[0], ray[1]) is None: + crossings += 1 + return (crossings % 2) == 1 # odd number of crossings means inside + + def cullSegmentedLine(self, segmentedLine, lineSegments, lineSegmentsMaxX): + # returns just the segments in segmentedLine which are inside lineSegments + culled = [] + for segment in segmentedLine: + if self.insideRegion(self.midPoint(segment), lineSegments, lineSegmentsMaxX): + culled.append(segment) + return culled + + def clipLine(self, line, lineSegments): + # returns line split where-ever lines in lineSegments cross it + linesWrite = [line] + for segment in lineSegments: + linesRead = linesWrite + linesWrite = [] + for line in linesRead: + intersect = self.lineIntersection(line[0], line[1], segment[0], segment[1]) + if intersect is None: + linesWrite.append(line) + else: # split + linesWrite.append([line[0], intersect]) + linesWrite.append([intersect, line[1]]) + return linesWrite + + def clipLineSegments(self, lineSegmentsToClip, clippingLineSegments): + # return the lines in lineSegmentsToClip clipped by the lines in clippingLineSegments + clippedLines = [] + for lineToClip in lineSegmentsToClip: + clippedLines.extend(self.cullSegmentedLine(self.clipLine(lineToClip, clippingLineSegments), clippingLineSegments, self.maxX(clippingLineSegments))) + return clippedLines + + #you can also run the extension Modify Path > To Absolute Coordinates to convert VH to L + def fixVHbehaviour(self, elem): + raw = Path(elem.get("d")).to_arrays() + subpaths, prev = [], 0 + for i in range(len(raw)): # Breaks compound paths into simple paths + if raw[i][0] == 'M' and i != 0: + subpaths.append(raw[prev:i]) + prev = i + subpaths.append(raw[prev:]) + seg = [] + for simpath in subpaths: + if simpath[-1][0] == 'Z': + simpath[-1][0] = 'L' + if simpath[-2][0] == 'L': simpath[-1][1] = simpath[0][1] + else: simpath.pop() + for i in range(len(simpath)): + if simpath[i][0] == 'V': # vertical and horizontal lines only have one point in args, but 2 are required + #inkex.utils.debug(simpath[i][0]) + simpath[i][0]='L' #overwrite V with regular L command + add=simpath[i-1][1][0] #read the X value from previous segment + simpath[i][1].append(simpath[i][1][0]) #add the second (missing) argument by taking argument from previous segment + simpath[i][1][0]=add #replace with recent X after Y was appended + if simpath[i][0] == 'H': # vertical and horizontal lines only have one point in args, but 2 are required + #inkex.utils.debug(simpath[i][0]) + simpath[i][0]='L' #overwrite H with regular L command + simpath[i][1].append(simpath[i-1][1][1]) #add the second (missing) argument by taking argument from previous segment + #inkex.utils.debug(simpath[i]) + seg.append(simpath[i]) + elem.set("d", Path(seg)) + return seg + + def effect(self): + clippingLineSegments = None + pathTag = inkex.addNS('path', 'svg') + groupTag = inkex.addNS('g', 'svg') + self.error_messages = [] + for id in self.options.ids: # the selection, top-down + node = self.svg.selected[id] + if node.tag == pathTag: + path = self.fixVHbehaviour(node) + if clippingLineSegments is None: # first path is the clipper + #(clippingLineSegments, errors) = self.simplepathToLineSegments(node.path.to_arrays()) + (clippingLineSegments, errors) = self.simplepathToLineSegments(path) + self.error_messages.extend(['{}: {}'.format(id, err) for err in errors]) + else: + # do all the work! + #segmentsToClip, errors = self.simplepathToLineSegments(node.path.to_arrays()) + segmentsToClip, errors = self.simplepathToLineSegments(path) + self.error_messages.extend(['{}: {}'.format(id, err) for err in errors]) + clippedSegments = self.clipLineSegments(segmentsToClip, clippingLineSegments) + if len(clippedSegments) != 0: + path = str(inkex.Path(self.linesgmentsToSimplePath(clippedSegments))) + node.set('d', path) + else: + # don't put back an empty path(?) could perhaps put move, move? + inkex.errormsg('Object {} clipped to nothing, will not be updated.'.format(node.get('id'))) + elif node.tag == groupTag: # we don't look inside groups for paths + inkex.errormsg('Group object {} will be ignored. Please ungroup before running the script.'.format(id)) + else: # something else + inkex.errormsg('Object {} is not of type path ({}), and will be ignored. Current type "{}".'.format(id, pathTag, node.tag)) + + for error in self.error_messages: + inkex.errormsg(error) + +if __name__ == '__main__': + DestructiveClip().run() diff --git a/extensions/fablabchemnitz/dimensioning/dimensioning.inx b/extensions/fablabchemnitz/dimensioning/dimensioning.inx new file mode 100644 index 00000000..40b4ba06 --- /dev/null +++ b/extensions/fablabchemnitz/dimensioning/dimensioning.inx @@ -0,0 +1,59 @@ + + + Dimensioning + fablabchemnitz.de.dimensioning + + + + + + + + + + + + + 1 + 5 + 0 + 100 + false + + + 1 + + + + + + + + 0 + + true + + + + + + + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/dimensioning/dimensioning.py b/extensions/fablabchemnitz/dimensioning/dimensioning.py new file mode 100644 index 00000000..4e39429f --- /dev/null +++ b/extensions/fablabchemnitz/dimensioning/dimensioning.py @@ -0,0 +1,283 @@ +#!/usr/bin/env python3 +''' +Tool for drawing beautiful DIN-conform dimensioning arrows +(c) 2012 by Johannes B. Rutzmoser, johannes.rutzmoser (at) googlemail (dot) com + +Please contact me, if you know a way how the extension module accepts mouse input; this would help to improve the tool + +Add this file and the dimensioning.inx file into the following folder to get the feature run: +UNIX: +$HOME/.config/inkscape/extensions/ + +Mac OS X (when using the binary): +/Applications/Inkscape.app/Contents/Resources/extensions/ +or +/Applications/Inkscape.app/Contents/Resources/share/inkscape/extensions + +WINDOWS (Filepath may differ, depending where the program was installed): +C:\Program Files\Inkscape\share\extensions + +License: +GNU GENERAL PUBLIC LICENSE + +''' + +import inkex +import numpy as np +import gettext +_ = gettext.gettext +from lxml import etree +from inkex import paths + +def norm(a): + return a/np.sqrt(np.dot(a, a)) + +def rotate(tangentvec, point): + if tangentvec[0] == 0: + angle = - np.pi/2 + else: + angle = np.arctan(tangentvec[1]/tangentvec[0]) + return 'rotate(' + str(angle/np.pi*180) + ',' + str(point[0]) + ',' + str(point[1]) + ')' + + +class Dimensioning(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--orientation", default='horizontal', help="The type of orientation of the dimensioning (horizontal, vertical or parallel)") + pars.add_argument("--arrow_orientation", default='auto', help="The type of orientation of the arrows") + pars.add_argument("--line_scale", type=float, default=1.0, help="Scale factor for the line thickness") + pars.add_argument("--overlap", type=float, default=1.0, help="Overlap of the helpline over the dimensioning line") + pars.add_argument("--distance", type=float, default=1.0, help="Distance of the helpline to the object") + pars.add_argument("--position", type=float, default=1.0, help="position of the dimensioning line") + pars.add_argument("--flip", type=inkex.Boolean, default=False, help="flip side") + pars.add_argument("--scale_factor", type=float, default=1.0, help="scale factor for the dimensioning text") + pars.add_argument("--unit", default='px', help="The unit that should be used for the dimensioning") + pars.add_argument("--rotate", type=inkex.Boolean, default=True, help="Rotate the annotation?") + pars.add_argument("--digit", type=int, default=0, help="number of digits after the point") + pars.add_argument("--tab", default="sampling", help="The selected UI-tab when OK was pressed") + + def create_linestyles(self): + ''' + Create the line styles for the drawings. + ''' + + self.helpline_style = { + 'stroke' : '#000000', + 'stroke-width' : '{}px'.format(0.5*self.options.line_scale), + 'fill' : 'none' + } + self.dimline_style = { + 'stroke' : '#000000', + 'stroke-width' : '{}px'.format(0.75*self.options.line_scale), + 'fill' : 'none', + 'marker-start' : 'url(#ArrowDIN-start)', + 'marker-end' : 'url(#ArrowDIN-end)' + } + self.text_style = { + 'font-size' : '{}px'.format(12*self.options.line_scale), + 'font-family' : 'Sans', + 'font-style' : 'normal', + 'text-anchor' : 'middle' + } + self.helpline_attribs = {'style' : str(inkex.Style(self.helpline_style)), + inkex.addNS('label', 'inkscape') : 'helpline', + 'd' : 'm 0,0 100,0' + } + self.text_attribs = {'style' : str(inkex.Style(self.text_style)), + 'x' : '100', + 'y' : '100' + } + self.dimline_attribs = {'style' : str(inkex.Style(self.dimline_style)), + inkex.addNS('label','inkscape') : 'dimline', + 'd' : 'm 0,0 200,0' + } + + def effect(self): + # will be executed when feature is activated + self.create_linestyles() + self.makeGroup() + self.getPoints() + self.calcab() + self.drawHelpline() + self.drawDimension() + self.drawText() + + def makeMarkerstyle(self, name, rotate): + defs = self.svg.getElement('/svg:svg//svg:defs') + if defs == None: + defs = etree.SubElement(self.document.getroot(),inkex.addNS('defs','svg')) + marker = etree.SubElement(defs ,inkex.addNS('marker','svg')) + marker.set('id', name) + marker.set('orient', 'auto') + marker.set('refX', '0.0') + marker.set('refY', '0.0') + marker.set('style', 'overflow:visible') + marker.set(inkex.addNS('stockid','inkscape'), name) + + arrow = etree.Element("path") + # messy but works; definition of arrows in beautiful DIN-shapes: + if name.startswith('ArrowDIN-'): + if rotate: + arrow.set('d', 'M 8,0 -8,2.11 -8,-2.11 z') + else: + arrow.set('d', 'M -8,0 8,-2.11 8,2.11 z') + if name.startswith('ArrowDINout-'): + if rotate: + arrow.set('d', 'M 0,0 16,2.11 16,0.5 26,0.5 26,-0.5 16,-0.5 16,-2.11 z') + else: + arrow.set('d', 'M 0,0 -16,2.11 -16,0.5 -26,0.5 -26,-0.5 -16,-0.5 -16,-2.11 z') + + arrow.set('style', 'fill:#000000;stroke:none') + marker.append(arrow) + + + def makeGroup(self): + '''puts everything of the dimensioning in a group''' + layer = self.svg.get_current_layer() + # Group in which the object should be put into + grp_name = 'dimensioning' + grp_attributes = {inkex.addNS('label', 'inkscape') : grp_name} + self.grp = etree.SubElement(layer, 'g', grp_attributes) + + def getPoints(self): + self.p1 = np.array([0.,100.]) + self.p1 = np.array([100.,100.]) + # Get variables of a selected object + for id, node in self.svg.selected.items(): + # if it is a path: + if node.tag == inkex.addNS('path', 'svg'): + d = node.get('d') + p = paths.CubicSuperPath(d) + # p has all nodes with the anchor points in a list; + # the rule is [anchorpoint, node, anchorpoint] + # the points are lists with x and y coordinate + self.p1 = np.array(p[0][0][1]) + self.p2 = np.array(p[0][-1][1]) + + + def calcab(self): + # get p1,p2 ordered for correct dimension direction + # determine quadrant + if self.p1[0] <= self.p2[0]: + if self.p1[1] <= self.p2[1]: + quad = 1 # p1 is left,up of p2 + else: quad = 2 # p1 is left,down of p2 + elif self.p1[1] <= self.p2[1]: + quad = 3 # p1 is right,up of p2 + else: quad = 4 # p1 is right,down of p2 + swap = False if quad ==1 else True + minp = self.p2 if swap else self.p1 + maxp = self.p1 if swap else self.p2 + # distance between points + delta = maxp - minp + # rotation matrix + rotateMat = np.array([[0,-1],[1,0]]) + # compute the unit vectors e1 and e2 along the cartesian coordinates of the dimension + if self.options.orientation == 'horizontal': + if quad == 3: self.e1 = np.array([1.0, 0.0]) + else: self.e1 = np.array([-1.0, 0.0]) + if self.options.orientation == 'vertical': + if quad == 2: + self.e1 = np.array([0.0, -1.0]) + else: self.e1 = np.array([0.0, 1.0]) + if self.options.orientation == 'parallel': + self.e1 = norm(delta) + #if quad==2 or quad==3: self.e1 *= -1 + self.e2 = np.dot(rotateMat, self.e1) + if self.options.flip: + self.e2 *= -1. + # compute the points a and b, where the dimension line arrow spikes start and end + dist = self.options.position*self.e2 + if self.options.flip: + outpt = maxp + delta *= -1 + if swap: + self.a = outpt + dist + self.b = self.a + self.e1*np.dot(self.e1,delta) + else: + self.b = outpt + dist + self.a = self.b + self.e1*np.dot(self.e1,delta) + else: + outpt = minp + if swap: + self.b = outpt + dist + self.a = self.b + self.e1*np.dot(self.e1,delta) + else: + self.a = outpt + dist + self.b = self.a + self.e1*np.dot(self.e1,delta) + + + def drawHelpline(self): + # manipulate the start- and endpoints with distance and overlap + h1_start = self.p1 + norm(self.a - self.p1)*self.options.distance + h1_end = self.a + norm(self.a - self.p1)*self.options.overlap + h2_start = self.p2 + norm(self.b - self.p2)*self.options.distance + h2_end = self.b + norm(self.b - self.p2)*self.options.overlap + + # print the lines + hline1 = etree.SubElement(self.grp, inkex.addNS('path', 'svg'), self.helpline_attribs) + hline1.set('d', 'M %f,%f %f,%f' % (h1_start[0], h1_start[1],h1_end[0],h1_end[1],)) + + hline2 = etree.SubElement(self.grp, inkex.addNS('path', 'svg'), self.helpline_attribs) + hline2.set('d', 'M %f,%f %f,%f' % (h2_start[0], h2_start[1],h2_end[0],h2_end[1],)) + + def setMarker(self, option): + if option=='inside': + # inside + self.arrowlen = 6.0 * self.options.line_scale + self.dimline_style['marker-start'] = 'url(#ArrowDIN-start)' + self.dimline_style['marker-end'] = 'url(#ArrowDIN-end)' + self.makeMarkerstyle('ArrowDIN-start', False) + self.makeMarkerstyle('ArrowDIN-end', True) + else: + # outside + self.arrowlen = 0 + self.dimline_style['marker-start'] = 'url(#ArrowDINout-start)' + self.dimline_style['marker-end'] = 'url(#ArrowDINout-end)' + self.makeMarkerstyle('ArrowDINout-start', False) + self.makeMarkerstyle('ArrowDINout-end', True) + self.dimline_attribs['style'] = str(inkex.Style(self.dimline_style)) + + def drawDimension(self): + # critical length, when inside snaps to outside + critical_length = 35 * self.options.line_scale + if self.options.arrow_orientation == 'auto': + if np.abs(np.dot(self.e1, self.b - self.a)) > critical_length: + self.setMarker('inside') + else: + self.setMarker('outside') + else: + self.setMarker(self.options.arrow_orientation) + # start- and endpoint of the dimension line + dim_start = self.a + self.arrowlen*norm(self.b - self.a) + dim_end = self.b - self.arrowlen*norm(self.b - self.a) + # print + dimline = etree.SubElement(self.grp, inkex.addNS('path', 'svg'), self.dimline_attribs) + dimline.set('d', 'M %f,%f %f,%f' % (dim_start[0], dim_start[1], dim_end[0], dim_end[1])) + + def drawText(self): + # distance of text to the dimension line + self.textdistance = 5.0 * self.options.line_scale + if self.e2[1] > 0: + textpoint = (self.a + self.b)/2 - self.e2*self.textdistance + elif self.e2[1] == 0: + textpoint = (self.a + self.b)/2 - np.array([1,0])*self.textdistance + else: + textpoint = (self.a + self.b)/2 + self.e2*self.textdistance + + value = np.abs(np.dot(self.e1, self.b - self.a)) / (self.svg.unittouu(str(self.options.scale_factor)+self.options.unit)) + string_value = str(round(value, self.options.digit)) + # chop off last characters if digit is zero or negative + if self.options.digit <=0: + string_value = string_value[:-2] + text = etree.SubElement(self.grp, inkex.addNS('text', 'svg'), self.text_attribs) + # The alternative for framing with dollars, when LATEX Math export is seeked + # text.text = '$' + string_value + '$' + text.text = string_value + text.set('x', str(textpoint[0])) + text.set('y', str(textpoint[1])) + if self.options.rotate: + text.set('transform', rotate(self.e1, textpoint)) + +if __name__ == '__main__': + Dimensioning().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.inx b/extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.inx new file mode 100644 index 00000000..320f846d --- /dev/null +++ b/extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.inx @@ -0,0 +1,37 @@ + + + Dots To Path Points + fablabchemnitz.de.dots_to_path_points + + + true + false + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.py b/extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.py new file mode 100644 index 00000000..33f5a14b --- /dev/null +++ b/extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.py @@ -0,0 +1,75 @@ +#! /usr/bin/env python3 +''' +Copyright (C) 2020 Christian Hoffmann christian@lehrer-hoffmann.de + +##This extension allows you to draw a Cartesian grid in Inkscape. +##There is a wide range of options including subdivision, subsubdivions +## and logarithmic scales. Custom line widths are also possible. +##All elements are grouped with similar elements (eg all x-subdivs) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Fraanklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +''' + +import inkex + +class DotsToPathPoints(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--endpoints", type=inkex.Boolean, default=True) + pars.add_argument("--controlpoints", type=inkex.Boolean, default=False) + + def effect(self): + if len(self.svg.selected) != 2: + inkex.errormsg("Please select exact two objects:\n1. object representing path,\n2. object representing dots.") + return + + nodes = list(self.svg.selected.items()) + iddot = nodes[0][0] + idpath = nodes[1][0] + dot = self.svg.selected[iddot] + path = self.svg.selected[idpath] + self.svg.selected.popitem() + self.svg.selected.popitem() + bb = dot.bounding_box() + parent = path.find('..') + group = inkex.Group() + parent.add(group) + + end_points = list(path.path.end_points) + control_points = [] + for cp in path.path.control_points: + is_endpoint = False + for ep in end_points: + if cp.x == ep.x and cp.y == ep.y: + is_endpoint = True + break + if not is_endpoint: + control_points.append(cp) + + pointlist = [] + if self.options.endpoints: + pointlist += end_points + if self.options.controlpoints: + pointlist += control_points + for point in pointlist: + clone = inkex.Use() + clone.set('xlink:href','#'+iddot) + clone.set('x',point.x-bb.center.x) + clone.set('y',point.y-bb.center.y) + group.add(clone) + +if __name__ == '__main__': + DotsToPathPoints().run() diff --git a/extensions/fablabchemnitz/draw_directions/draw_directions.inx b/extensions/fablabchemnitz/draw_directions/draw_directions.inx new file mode 100644 index 00000000..0f7a52ed --- /dev/null +++ b/extensions/fablabchemnitz/draw_directions/draw_directions.inx @@ -0,0 +1,16 @@ + + + Draw Directions + fablabchemnitz.de.draw_directions + + path + + + + + + + + diff --git a/extensions/fablabchemnitz/draw_directions/draw_directions.py b/extensions/fablabchemnitz/draw_directions/draw_directions.py new file mode 100644 index 00000000..88024e77 --- /dev/null +++ b/extensions/fablabchemnitz/draw_directions/draw_directions.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +import inkex +from inkex.paths import Path +from inkex import Circle + +class DrawDirections(inkex.EffectExtension): + + def drawCircle(self, group, color, point): + style = inkex.Style({'stroke': 'none', 'fill': color}) + startCircle = group.add(Circle(cx=str(point[0]), cy=str(point[1]), r=str(self.svg.unittouu(str(self.options.dotsize/2) + "px")))) + startCircle.style = style + + def add_arguments(self, pars): + pars.add_argument("--dotsize", type=int, default=10, help="Dot size (px) for self-intersecting points") + + def effect(self): + dot_group = self.svg.add(inkex.Group()) + + for node in self.svg.selection.filter(inkex.PathElement).values(): + points = list(node.path.end_points) + start = points[0] + end = points[len(points) - 1] + + if start[0] == end[0] and start[1] == end[1]: + self.drawCircle(dot_group, '#00FF00', start) + self.drawCircle(dot_group, '#FFFF00', points[1]) #draw one point which gives direction of the path + else: #open contour with start and end point + self.drawCircle(dot_group, '#FF0000', start) + self.drawCircle(dot_group, '#0000FF', end) + +if __name__ == '__main__': + DrawDirections().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/dxf2papercraft/.gitignore b/extensions/fablabchemnitz/dxf2papercraft/.gitignore new file mode 100644 index 00000000..3b6d0df6 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/.gitignore @@ -0,0 +1,2 @@ +/debug.dat +/delete_me_later diff --git a/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.inx b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.inx new file mode 100644 index 00000000..ae37c044 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.inx @@ -0,0 +1,81 @@ + + + DXF 2 Papercraft + fablabchemnitz.de.dxf2papercraft + + + + false + false + false + false + false + false + + + + + + + + + + + + true + 0.0 + + + + + + + + 1.0 + + + /your/dxf/file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.py b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.py new file mode 100644 index 00000000..d2447059 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 +import sys +import os +import inkex +import tempfile +import subprocess +from subprocess import Popen, PIPE +from lxml import etree +from inkex import Transform + +""" +Extension for InkScape 1.0 + +Unfold and import DXF into InkScape using dxf2papercraft. This is some kind of wrapper extension utilizing kabeja to convert the dxf output from dxf2papercraft into SVG. +To make it work you need to install at least java. + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 11.09.2020 +Last patch: 18.04.2021 +License: GNU GPL v3 + +Module licenses +- dxf2papercraft (dxf2papercraft.sourceforge.net) - GPL v3 License +- kabeja (http://kabeja.sourceforge.net/) - Apache v2 License + +ToDos: +- in case of errors maybe think about adding ezdxf library to filter unsupported entities (similar like done in dxfdwgimporter extension) +- maybe add some DXF model preview tool (maybe a useless idea at all) +""" + +class PapercraftUnfold(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--inputfile") + pars.add_argument("--resizetoimport", type=inkex.Boolean, default=True, help="Resize the canvas to the imported drawing's bounding box") + pars.add_argument("--extraborder", type=float, default=0.0) + pars.add_argument("--extraborder_units") + pars.add_argument("--scalefactor", type=float, default=1.0, help="Manual scale factor") + pars.add_argument("--nomerge", type=inkex.Boolean, default=False, help="No merging of faces into single polygon") + pars.add_argument("--number", type=inkex.Boolean, default=False, help="Print face numbers (labels)") + pars.add_argument("--divide", type=inkex.Boolean, default=False, help="Draw each face separate") + pars.add_argument("--overlap", type=inkex.Boolean, default=False, help="Allow overlapping faces in cut-out sheet") + pars.add_argument("--hide", type=inkex.Boolean, default=False, help="Hide glue tabs") + pars.add_argument("--force", type=inkex.Boolean, default=False, help="Force glue tabs, even if intersecting faces") + pars.add_argument("--split", default="", help="Comma separated list of face numbers to disconnect from the rest") + pars.add_argument("--strategy", default=0, help="Generation strategy") + + def effect(self): + dxf_input = self.options.inputfile + if not os.path.exists(dxf_input): + inkex.utils.debug("The input file does not exist. Please select a proper file and try again.") + exit(1) + + # Prepare output + dxf_output = os.path.join(tempfile.gettempdir(), os.path.splitext(os.path.basename(dxf_input))[0] + ".dxf") + svg_output = os.path.join(tempfile.gettempdir(), os.path.splitext(os.path.basename(dxf_input))[0] + ".svg") + + # Clean up possibly previously generated output file from dxf2papercraft + if os.path.exists(dxf_output): + try: + os.remove(dxf_output) + except OSError as e: + inkex.utils.debug("Error while deleting previously generated output file " + dxf_input) + + if os.path.exists("delete_me_later"): + try: + os.remove("delete_me_later") + except OSError as e: + pass + if os.path.exists("debug.dat"): + try: + os.remove("debug.dat") + except OSError as e: + pass + + # Run dxf2papercraft (make unfold) + if os.name=="nt": + dxf2ppc_cmd = "dxf2papercraft\\dxf2papercraft.exe " + else: + dxf2ppc_cmd = "./dxf2papercraft/dxf2papercraft " + if self.options.nomerge == True: dxf2ppc_cmd += "--nomerge " + if self.options.number == True: dxf2ppc_cmd += "--number " + if self.options.divide == True: dxf2ppc_cmd += "--divide " + if self.options.overlap == True: dxf2ppc_cmd += "--overlap " + if self.options.hide == True: dxf2ppc_cmd += "--hide " + if self.options.force == True: dxf2ppc_cmd += "--force " + if self.options.split is not None and self.options.split != "": + dxf2ppc_cmd += "--split " + str(self.options.split) + " " #warning. this option has no validator! + dxf2ppc_cmd += "--strategy " + self.options.strategy + " " + dxf2ppc_cmd += "\"" + dxf_input + "\" " + dxf2ppc_cmd += "\"" + dxf_output + "\"" + p = Popen(dxf2ppc_cmd, shell=True, stdout=PIPE, stderr=PIPE) + stdout, stderr = p.communicate() + p.wait() + if p.returncode != 0: + inkex.utils.debug("dxf2papercraft failed: %d %s %s" % (p.returncode, stdout, stderr)) + exit(1) + + #print command + #inkex.utils.debug(dxf2ppc_cmd) + + if not os.path.exists(dxf_output): + inkex.utils.debug("There was no DXF output generated by dxf2papercraft. Maybe the input file is not a correct 3D DXF. Please check your model file.") + exit(1) + + # Convert the DXF output to SVG + wd = os.path.join(os.getcwd(), "kabeja") + proc = subprocess.Popen("java -jar launcher.jar -nogui -pipeline svg " + dxf_output + " " + svg_output, cwd=wd, shell=True, stdout=PIPE, stderr=PIPE) + stdout, stderr = proc.communicate() + if proc.returncode != 0: + inkex.errormsg("kabeja failed: %d %s %s" % (proc.returncode, stdout, stderr)) + + # Write the generated SVG into InkScape's canvas + try: + stream = open(svg_output, 'r') + except FileNotFoundError as e: + inkex.utils.debug("There was no SVG output generated by kabeja. Cannot continue") + exit(1) + p = etree.XMLParser(huge_tree=True) + doc = etree.parse(stream, parser=etree.XMLParser(huge_tree=True)).getroot() + stream.close() + + dxfGroup = inkex.Group(id=self.svg.get_unique_id("dxf2papercraft-")) + for element in doc.iter("{http://www.w3.org/2000/svg}g"): + if element.get('id') != "draft": + dxfGroup.append(element) + self.document.getroot().add(dxfGroup) + + #apply scale factor + translation_matrix = [[self.options.scalefactor, 0.0, 0.0], [0.0, self.options.scalefactor, 0.0]] + dxfGroup.transform = Transform(translation_matrix) * dxfGroup.transform + + #Adjust viewport and width/height to have the import at the center of the canvas + if self.options.resizetoimport: + bbox = dxfGroup.bounding_box() #does not work. why? + if bbox is not None: + root = self.svg.getElement('//svg:svg'); + offset = self.svg.unittouu(str(self.options.extraborder) + self.options.extraborder_units) + root.set('viewBox', '%f %f %f %f' % (bbox.left - offset, bbox.top - offset, bbox.width + 2 * offset, bbox.height + 2 * offset)) + root.set('width', bbox.width + 2 * offset) + root.set('height', bbox.height + 2 * offset) + else: + self.msg("Error resizing to bounding box.") + +if __name__ == '__main__': + PapercraftUnfold().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cyggcc_s-1.dll b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cyggcc_s-1.dll new file mode 100644 index 00000000..385435f4 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cyggcc_s-1.dll differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygstdc++-6.dll b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygstdc++-6.dll new file mode 100644 index 00000000..2903adaa Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygstdc++-6.dll differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygwin1.dll b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygwin1.dll new file mode 100644 index 00000000..3f312967 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygwin1.dll differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft new file mode 100755 index 00000000..c9ee93d4 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft.exe b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft.exe new file mode 100755 index 00000000..3ccb5730 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft.exe differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/INSTALL b/extensions/fablabchemnitz/dxf2papercraft/kabeja/INSTALL new file mode 100644 index 00000000..bd46c089 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/INSTALL @@ -0,0 +1,26 @@ +Binary-package: +--------------- + +Windows: + * double-click "kabeja.exe" + +Linux/Unix: + * sh kabeja.sh + or: + * chmod a=rx kabeja.sh (only ones) + * ./kabeja.sh + +Other: + * java -jar launcher.jar + +Buidling: +--------- + +You need Ant for building (http://ant.apache.org). + +If you want to build the Cocoon-block you have to copy blocks.propterties +to local.blocks.properties and edit this file (set the path to the Cocoon-libraries). + +try: + +ant diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/README b/extensions/fablabchemnitz/dxf2papercraft/kabeja/README new file mode 100644 index 00000000..ca9acf66 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/README @@ -0,0 +1,148 @@ +Kabeja is a small library for parsing DXF-Files and converting +this to SVG. It is licensed under the Apache Software License 2.0. + + +Limitation: +----------- +There are not all Entities of DXF supported yet. Text-Entities generate problems too. + +Supported: + + + *Arc + *Attrib + *Polyline + *Circle + *Line + *Blocks/Insert + *Text + *MText + *LWPolyline + *Solid + *Trace + *Ellipse + *Dimension + *Image + *Leader + *XLine + *Ray + *Hatch + *Spline + *MLine + +Planned: + + + + * Tolerance + + +You can use Kabeja from CLI (Command Line Interface) or embed in your application. + +GUI: +---- +Windows: + * double-click "kabeja.exe" + +Linux: + * sh kabeja.sh + + or: + + * chmod a=rx kabeja.sh (only ones) + * ./kabeja.sh + +Other: + * java -jar launcher.jar + + + +CLI: +---- +in the Kabeja-folder try: + + * Help and pipeline list + + java -jar launcher.jar --help + + * Convert to svg + + java -jar launcher.jar -nogui -pipeline svg myfile.dxf result.svg + + * Convert to pdf|jpeg|png|... + + java -jar launcher.jar -nogui -pipeline myfile.dxf + + +Normally Java uses 64 MB of your memory, to setup more use the following commandline +switch: + +java -Xmx256m -jar ..... + + + +GUI-Viewer: +----------- +in the 'lib'-folder try: + + java -jar kabeja-svgview.jar + + + +Cocoon 2.1 (XML-Publishing-Framework http://cocoon.apache.org/2.1): +------------------------------------------------------------------- + +Copy the 'kabeja.jar' and 'kabeja-svg2dxf-cocoon.jar' to your WEB-INF/lib-folder +of your Cocoon-Webapplication. Then you can use Kabeja as Generator like: + + +in your sitemap/subsitemap: + +snippet: +-------- + + + ..... + + + + + + + +.... + + + + + + + ... + + + + + + + + .... + + + + +Note: DXF-drafts often real large drafts, so the SVGDocument will consume a lot of memory. The Generator is +Cacheable so the first run will take more time. + + + + +Feedback and Help +----------------- + +Any help and feedback are greatly appreciated. + +Mail: simon.mieth@gmx.de + + + + diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/parser.xml b/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/parser.xml new file mode 100644 index 00000000..6e3c47fd --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/parser.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/process.xml b/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/process.xml new file mode 100644 index 00000000..840caa96 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/process.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/ui.xml b/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/ui.xml new file mode 100644 index 00000000..29672b10 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/ui.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/doc/userguide.pdf b/extensions/fablabchemnitz/dxf2papercraft/kabeja/doc/userguide.pdf new file mode 100644 index 00000000..d8911349 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/doc/userguide.pdf @@ -0,0 +1,1000 @@ +%PDF-1.3 +%ª«¬­ +4 0 obj +<< /Type /Info +/Producer (FOP 0.20.5) >> +endobj +5 0 obj +<< /Length 112 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Garg^iR2p+<%p5Z1Je?Kj"^U3a]o#Wl!/rM#!ck#?t,8-jCLh;`e=bc,R[K>=W=Z*Ail1!t_?Bqt$5,r~> +endstream +endobj +6 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 5 0 R +>> +endobj +7 0 obj +<< /Length 1506 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gb"/k?$#!`'Sc)P'tt(mlfq^FAb.q8FuJ$.Cj2c@K`a)Q$b"YFD"caf!cp'6b3nW'=bk)/JCeid0]taMGqF"u)Z4];""ZbQN042KV?7e\o7mE7=bmn*,j$8f1)S8g5E85'rCd`S2af.e+%LU^I6Pr_>%_t8%/pZ)DqE6sFgIPa'b:n9!eG?ipq";203,.;gK&dPT,).?kNeGj@);3_coe-sKu+m;^.c)S@Y4aB1usT4('LjlpL5%GGf2u&KNr+h*RA>%?B3Jc0#+Kpn>(=)>mqn[J@QM];(.lpj$c"uUtKht@8c6i0'jolP[iH>EY;8sO?S'o?N.,ZEQ%nl(JDVu2BfPp0"9nHRLuo#iY=RTM&oosQT^Shi!BQd\\M]1A51-:5+fmKA>No"\cpYuC^`/n.Q.8Xbb,1*>h^g6m"f/TnT\,b$Rk7=ONO+L2q&Jq+$YN=1Z=&3k`hD&#iJF)o`2Rb*^N\n3Uf'dgkL']sp;d1A/YB+OOFBR=&S>%g!7W]X"Z96Sb%9F1J%9gXN\`]GU?cT'@kP-tboa[8D7nSE#KO@6gG5?ul9&<-Z#(I;/SFa9.2o/mu[3().MY1**dH^c?d!gYE+nGC:PL`@N$J=:g;cbWf/aOb?CgP%ehR0^"dIFn9^=3@m]30%A&d#S`7PclsGp8H`)M5#edsT'Q3(qs@Zl<:(MP7_+K>!Q4jaT[oFnZg0+pX6b2_]^DpNj-WWkEs_pfl.L;g)Zi">JlQMJt6a:Y01&,H*Tr:jMkb"B#AI\HkS8fT`kWlMuEkn+GS?b5CGgbFr9\o4hhq@@.'Z%`30Q_+2/bXotMEjqAA'5Q%(u3*r\6L]'ZYfS#c-%2ZX:ToW'3W>j#JJE`]%IOT>B9,W.G._kB""&``1*0]7/OWfN8ferrRK)>71~> +endstream +endobj +8 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 7 0 R +>> +endobj +9 0 obj +<< /Length 883 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gb"0T9lJK7(^KPW5)#'PTuQOSgt:g;`f#@YBG0qoFb"7g8G)a"OAR\YCDqa&4U0a[Spf%9hS>;q>?IJ30baHPa$q_09;-+?oM/SL3;m?'_?r==#e">ut*oorf=+G5W_+/VNmPi0;X:;APd#=PeVp4'+#_q_-F4fe2Y@`.o&'BuH/L,mb?V7YgC%Wbl"iY:Z/Ml*,$ep#=[5X4tXt<^Ztnh2U/48/_:a$\8]02iZ[Pu/JY+fWT"4eR`FZ6'9YDM5mQ5D]?3W*i1g4@bX`=N2MC##\3MM,Fb5U_l_L8U7DsFO/=bU:Vn89)cgSK=P\3n2f9#cS7D6%ARr$Vh/`%Pe$D!(+7MRCu*0SucY-CCRRTm?1%3!b^s259AZdP'``OjHE5_mk3I=p^0b[m5Ge#1fI_^"J"DeU$3oP9aCCO0@l;Mjs>XkrX-M~> +endstream +endobj +10 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 9 0 R +>> +endobj +11 0 obj +<< /Length 167 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GapXOYn"W)&4?3h$BOSiEClU(Z;q#P2PahLCpXoZ"$uiLaacO!H+#gS*K8i#S>?N2jiA&A1ca-]R!`Gr;E1=%=Qr/YdJg(`M$:>rC+)Y7&TdZ>V.uG5W#NfDRN;C.g*m8RiAOq*9-(;/;;0B9qE?"ELcatY0DtlUPTVs~> +endstream +endobj +12 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 11 0 R +>> +endobj +13 0 obj +<< /Length 1912 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat%$bBDVu&DcY&\5RcML%>2`Y"kE*Vjk+qde)$p5U'kbTa1iJ/\>BI+[H_C>-o`(@:BMdg_gOg@!K@jrVXL<*1,=/2I"kcrQ;B]piEMr+L[V=OWBT=:9$Z^8lDb@g%l0:1il$b%/ZM3>T;Y/AC8%8D85=6JB_nM.]VoS6k:FRrrVRoZM9f'q6\'N)`HhF5OuPfA/:\E[hPH(]X#GM4N;6fM3E#47tE45m=pJ+gJl8X*LpN%cpr6nnk"n%\_lTQb*UB)j(%#WLh&F$W,X_a@Xipg!ReT\=%Oe/D%[;Ro=&E*3T!b'!?!O%3P>Cg!V$1RQ8p9A9H==Oom=@0i!+.J7T-p;Gb4V.VgQ^a5lTXB4mgq'T)+;=l1KZoN4)(XPiOd7A)F6$J9k%rQ7+h1b((f,/\Un8:SK6oc2CPiisK'X>fS1B4.5Aq:n,%CK5l(AGBZK_`,NVMFm"r0p'J.2P16S7Q4U\N\sF&B*sS1l?R3XkgX]#Sd17k43IZKnc;J-DIK*bb,gKZbZQfFC'U!Ipl01<(uj^S8g-cBkr7'*]^?<hSfZ=J%3nD_]4'9/39a7TUrnt=9f7Qsl^EUZ['#;r7a8BHcp9tu2J/g=U)Kc5Ef&.'U!M$_9fI_IN?.\Def;)o7g/8+k6P\"+)3"koVK-]n3]f.5e&WA05S9Q2`n`i[@"Q0ApVm^mh!2j3I1&%cL'R.4n#qg[IibciEN(I&Do6/cQcmI&B0l(+s:t!rK/rP^_0?R'`M\P26d&XJa^DMAlJYUiq@I&CS&N,loqo[8VVXaTgS1,YmZ7&.['7C!S"s7ih!?]i5AVKUa=r?eK!7QSN4p5`12^\*^dL>c4L/C(iO6=S"f%8VHifKUXYnE2:-*MU"XP[$s.bHe%Q@W7HjCHPWJF'3do6'CLg"B+Oouo*ZpMq)UoUbA-3FC0jL_n74Djrn%6jS@2]eK+lj@s!-4l+J0p-9Z4g-cVTd`?g8G`@=DW:(5u +endstream +endobj +14 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 13 0 R +/Annots 15 0 R +>> +endobj +15 0 obj +[ +16 0 R +] +endobj +16 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 194.776 497.355 208.276 488.355 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://ant.apache.org) +/S /URI >> +/H /I +>> +endobj +17 0 obj +<< /Length 893 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GauHIbAu;j']&X:ZjU#=kUeg<,]/9"(7ils3i*5)aC+9<'da6:?c`h3h5&/';*87Ni;5M.*p[.XK/`D[\%NK2LdjWB#q=l,#Y6d?nfu"kO/Oe;%_`*XJ0>!^$Jf1P3%8)da=TkIIkQffNX1l>8'!a_lc7E0V@SS-;bTd*,GI0Z9OJ'd9;VI`rEj1jUl\h29K9i)6B#rD=J`5\7D!Zm5K\'AW_F2/g`8\N](F7qf3eXQ=b9WNQ?NW8$8mJSAg:[E:JD!ED'-$eW3>>lho\')pZa6p9[IF705a:,n@g5dg\^Ua^cBc.0W'dJ6+$umPpFr42oBQ2^-QNQn?G:oTV?d!j2ho.d1E"ekJbi=,>XL3T]1b>]Xre*hPc*k3%9NQnZ'2ldmc#O8[&#mU.hX0nQ2U=P<.E\@J4*@)3S^`obKHI7k^2OQN">Rne!NV@R:7HPg7,pBO!aQukE9W@@;H";T2^9\u,"&lCL3lQ)%[$4^E]h^J`reeLo1maUZs=LlS[&I)L4E4O&?2an)+&cC7Kpl>?b1$t\0$D#2eT`rVjjep:$X?)iCfGoU=Uk2U&UilN)6jm\l^M@KC/?<.])k63ND`C]"7Vgf/hg'oVJF:6h[P.:bEl>7;7"i1^mZY8"0Eb*etmEWr>ioRd#09L=DG>SNG'm.4-a5Q3\_J+bUt\FOHb@F'N(dn]Dd?Q`aF,0O%kbJ.YHl(CT~> +endstream +endobj +18 0 obj +<> +stream +Gb"-Vktfh's6p!F5B*e)/tL2K_WSf16B``j)A>G(#U.,'UG7afVT-WE[W.-s4h.mPTP`NZ"T`U/E2b&L$_i/"MJTTeg[#lsYTNN-IQm;>)^r#5!0;JE-i"f#L3\c#Qq'B3Z*03C`Y`3E0ub&?N%r>8M\GEq=HUj'"4E_A%,.61)T).Psuc.#_M,0&8OM2sl["b5[toD2EnTD\!pd".jR_7[P,0AmaWA-MASijN55m5Or,GpM)7L>jCrlD,L+tSdnaVC>i/cW-aNTjjr1Y\>%jUb^U@_'(O6O?X%tbXs7;@u(9f5K7N%rZ?D8d?%N%r3\8JGGa6g2,]]=/sT#)dX.sH0bt`DS!rVH`#+sqnaVC>TM;&cldL*,@]rT#ouXto!?DG,)0A:1XO*Z7dmM0sBO68/D8gA2=>7eY2N4o?MN9u\"`<$qgfBB=0uW65N3T@>O$AR,D;8/:Dl_8Z.X`C-X/'r4SQ%'&*F:/U96nr9l(sUhAM_>XUF]>BI>\qPZR%g70G_%[PBM?mY>=NXWP1Rlf/]K+5pq;F#b;\k1j"&&An5mcEEb.U/`Lgj`n480`uigS&mjl$j5CDn;nI'rBbamj,Sn?Uu'_,O)pa=%\fs1WG$A1fI>$M\os1,sM;^(:<=iG't:4:[IbR^-;AE3M6I?-\IEbSJ=1BFF'e(4ie8$1VXVkLd;gjOUD%shN0S^?3I%UFKgi:#t8?Z-JM]/q.^f)l*cYWY.BfA,2!d*$P*(^?#LgFE?PhU`.kI=CDF$\7+/NkTDplK`tom^aIe-$hlGq(C4L,C3e@Inkf5-Km1kGP?VO=Qr2Lq>"d'M*rD_DOlX$e'%jB"TR!;'>XG@(jhI$Hh7%WqD08,oo;OC)PSrQk=)l4Mho557F18U(2(0_>Y2_?$JDn+'[T^R)]*aIV#;gB7EK1d%,s`E>Wm^(a5)YIL]jL^)hHijL&*fn.t9gPXaCgPUe6'=S^c'bS\+gfE32PI%A\GaXgaC6kkGrF=0t083D]YJHsHpL-AS4`Lkla#o*%HQL&@fE^p%mPJ#cF3CfR2Cs`r,LYP_?+43=b\^H!H\[DjghmV-+SPLO$WW-O+.?D7_aecXT#1D-_nqdfL:qe>_62NH2`;]Kp<;E8&+l!-_4J7CGmp=Wk8=]`P$!?cdfhIe5sI+h2?WUNRD7o;%,BeDGFI3lL57mqlUod4aj!,dX!8)9U=k+PMVDl41V`Uor`>"!8`05R;rE":)C_:e+rLNklOtT:^'M;]n[?mARMb=*k?JFW"@?u[lg>cQGjS*puW8MSa1o]f.KUAjb36/>`^An?i/d:nD[c"iG>Y)cK0?\H%%`P_s:UIsk47hGV_JR8/77=Hb[hZ@e[hZ@e&PX`m.rHj]RO,JG\?.)l>BNPTP5`G@qHl/Ghib'jJb%6QO(%S#!a$(J=E,N,@P?iZX(j`/X`Zlp@hTR-2o+0O46/60iHRgPX>lCG92?9>:?RI#=E<^*Ua_^FPBTrN/tS!a)V=@ZFLD;f`g)B1q#45Q/3?u75G!*-92?;=i\U%3q8p+MjE.Zc<#$rJ;[Q/m^O^_hDV0*0!g]?+KZ.S]@+!X_pu0^A=Ea6]/3WS?^5je!$\b_Pk#tb%QOi))Z@YUE5F[Xau*B/YHHn,f:+I*a9e8h,u`6_@-5s>]:h'%S*/"^kjH3E9q9@*-p6HLGE%$X0BLNX3STA,C,"WmgUX;@*.XW=Ea6MX?:MBiZoOIq?j;?P"lN.,"e319q6*m'/(b:fRAidj>?h1i6/0%fp&$C2aTKdB6\_m2Y5i.iNpYiKaM2"pT.gn!'$r5]7JEo]+UE&&Ma4S0%_S9Sm1q>us(cA$0PF(&@%4tJd%?o[]kIQ3i"5G#rHmuP/57E>#X]9C5'j09tN-+akK])/-W@+]W_#Nd,LKLJCP@,^'L=E-;6Y30#^Ts#"#h(FIo7pa*m,B$u3nJkYY/.\WUkCeY'Jn'M=nF0WfNW'1^\7[VQ[D944NX*G2R[!JChjot_)`KtbpYM,+Vp`lmI6J!R$Y'X4%En^XM&$:rRl@qZ?KlA0:(p_uR&Gr[L[\qZnmX)&iBC/.7qf(NA6>rPdg^^H/(A)TJEKW^jBoM!4[)*casr!SIm8[AJ!\$(6Ns^`?kt:Spmd.R]_5pSG6_HjP5UfQlbYGkp3/f\^B76gc\Lu`h1kS=b+[>B#IY+0Z,7):r:L3ZI=:&CqOt'm%pmb2@/7W#OB_1)3e&5NFnEJHMn)[4ie4ACc*2TQ6`BJ=K-HAMWiZYX3VjSY*de+e@(p`4#.XRo&0:KH;KAm9lKA7W.kf+=hOAZ8JOt-s?eZf$f/c9do%Q:4c5d\lk?^"_$lVd"UrKSkbE2D!E>QJW(X5MFL#&n_YJ[a7hmPLHZVuci4)c@(`PKP(jFW)VB/.'N4LjTZduZ*H:+_,Aaqh$l`+qi4"qk#[&/YhsGmo$P0rcY@,2_4Rj=6rjW?JV;ouMl&MRg6cY#.'-/Vb@Ic'Yqi7^'IK.2tdbLs+@DQ;2&@F_9(B3t4iNK?/nFskg2nY"D(-EDZ`H-ILF3X[LQ/QZ!JpgF'>LGlXp%f@;/UK/;l043U8?9r'-gigqR12r4`^4rluB,Hs8XJOnMHO`kskMj%(lmbZ9C2*:NLJU9%Y?>LNJ`FM9qSofeBHOo8Y4Im=o_ho@r&[$)g7,<*ZCYT0U\Yduh7WlMm\V3n-Sj?oRA!e?b$aq=X6b2"VWV<#P9h-;,f_65#jjub08JUSTFqG^BIB[8&:l=rpH]R"b%S,l3$'?4Vo1WB>_8,quM:RbTiJoqZQ'Zp(&]:OpBkdIfhnVc[k*4?DnF3iiQ=/+pXF(Hir7HHOGa-(m^[+a54V+UMjSm_^>0SfJ?WUpc7P.U2SSuU8)X7nVJI-Yla]4eReOT8A=%N#qS7=)I@dei54Le\0U]F99/2OU=1EmnE;BiZgJIMMg\upHZae]".1&)G`[_52dj<5/"Mj+8if+WN9ECO_4hT47h)pB\()0V`6HeQnQ4.T37ii`Wo^\K[[Pk[N&1-3HsiHRkF1lFHu:HP.rHkT/"UO^+1ca#l#j-8s&I6Z`GIK=*uJYU\bNs")pU>"&,=p\gf@cu>I@#`;P*MWMYJb@k5LJQiI.L7INA"XSZq6m0$N4%"6TT3)kqer#E_+9_i4UUjLM/U>SD7qRKmBq!@".H*fTP(m$P$ddgjLgaIqQYXlVesAf6rJ1OY6&0j7d9;mqE?<.2c/X4/?@aZD>r:a,&"S*A#uHgfAf5Ro\^@Vut>pEs:q3a)ZO:XgkKbiTHB*kAp9o!6bu0u%9"H\#flRD7[bZJ\XZ%D4lSZS;D:%Qk_mt[A@->X"fRD2On&,C.[Kb[YMpGd[oL4Rl:5,Xkf-"Po%E"K9TB#($r%f[0qd,n;*1grgcSa_n3*XZCrqh*Lh=eXgq$r'p8V>CR)\BF;/qcZ#K8=A'+`)KdKPsJ;W9=UCp\,Uc?&%i#=!;,?@gLh:*MTtf5ie4]nE\bO:tjS-5G!60+jh_M]&=jsUM+31%1%m+$$3Q11&UR_Yl,_u7:1h\>>l[B[n@:dJ'Yq!%j5\()FXLP)a^;!JadMjTQa]&[PS9I@L1_7#=>m`JFG/T0]RWmH*3Q[Xr2`)l$':]#GU,E_:KXS+Cn9>iQln(IO$fZ6=VboI!6?Zm`^EIR+DoGf/oA+-P&Q;]Jf,)BonC')j:dU0s;^9G8>jJIfuIWZ9U'!n5XgBM]DN<\f23l2[_r]1*JJTm!14h`%+2k*e_JG2XG_n@BhKElZG-/I/@3eeiOGKm662PGSpHG+5T@DVSLO+2X.Gf8^cjs@moL:%MkThgfE32Ht8]qkF1oGS1Wp`[c4_&L7^i)CF5Wg`ZK0rSVu6[gPXaCgPY/$eoT+2"4!3REEdEe"iJY0cSZB^2<,3,rQ`B!`GP:e[T/Mj.cj9HV/Jq[=27h14>ab,]204@V7fUWHpYqI4V2T)cR&0@#ETf\i5fZm.rht7&fG!6/E9R'5@K^I'=OI\&`J(CD_kcS/XbUWt`^Xu%tG3"1&,\6XbR'S"R"t!>D/k#'OL2Y\@6MREn#'hmEGei4$.ZB/W3?,-<:XWk>TQEKJl(MTTkD9ZaDC]TT+pq*#o\OsEZ?9P3Fl65)FE%%5h*A$&@qXniR^F.[It;fYDG&_pi[a4Xbqc#2.sk,@BD^"@B30hGlMp'^r9%Udmo/&0G2Q'&cE5OYiZ(AY;8GM7P9nt-R>RK9/6SUed=a$:a0US9D/A99RpD,#`*9c%4*k"?73+uW_WW%BHQbuZ$.o-M`kceWWhYh9R*IEA]>'dC(kL[ZnI+C_ZC0,(n\'$T6Z)O8-]$maA'd2bpa2=I0CfR?&"1!9+Vhd&a"tTrnf[W7BJag=F1JKiB:r+6-ru-hlaQo5>(rWg+OaD3^%SDE*I]+)Iq_r^5?pi^d(/=/7dqkWfr\!(jncfT<=].>[hZ@e[hXB=:"$TI.uEG@dJP'H[c4`a,nGqs=7DaG9-/'GS;Z-ZgFB/1eXY1[E$Mt3r;J;S"Fg'e!(k[d6Y<-MEU@JFb,6o.2W=-r-%5Z]mdFETsJeD1urFL2S,eJWmtc;)b53hWf8?t*A!+CDLoklu=bi0@koB11&,8O\USJDUJ^0k'jIp;G+g\KWH9,"*])&$gIam'$/cpcY7r`f>lf\qoU)U[)gS+Yp'D-K7T`=Q7+MSrX1AY#IjLD+o(BWu0d+-eOJNu0X+kd$QNm:r:"T0rmHdoh?1N&9Qde%bXJDPE3h499q6Y]X.bZT96\?39CLhLD\[c4_>U03*&MVF$CMVF#E-5F!)[hTM"'&6OC<^F-q^0Qp*WL63%h:2sOD*IHrG=(ZQ4n.'p=?(cj)!p+a$iKu6fX^lTd#S>-r^$J]G%_\C[UF:]^ZNF0.qhL:VPY<#ac'NMD6l7M[;TOcc's"RraSKJ:;3Sf+W].[LRps)%TV^rXSG*Ga+EJ'_fm\Us2LK]ee1k8MkOgHZk?#4t-eIcQjYNqt`df)P5R0HT(8GlUe>f]F3mhem$g*qk(bBJ]JFH3\pl^FISB!.A=kCY)>.0<_OXL6U1%cmS2]8T/qT'5,t(-O0EsgOUCni:k%&)$%0';$+R+IXnWIJF7EMapfsRR+L`)peb&_DD5NmTfH*;&Y3C)3;&tbQMVF$CMVDll5/ctr4BF5,CD7$7[c4`aIfH(ce8kfJ!sm41^!8L8"*.Uc>6WE_R^;EE>feAoQeM[-^CM<55CE.s=5`Uo^ub+'VN'oWj)MugP0<6GkF#+Rf?W9iAnqRR[gbH+s)?b2+6ZfgFZL!B*Bj\!&(gli*'q0'IpVX-381s9!3Pjm$J_02lo.AMQHu`ZA+G9^o6ST\]P:phfZfMFTkMj$sY/rblq*F/,8"5&77*rtUo?HcNK\%TqkqsDUJ_`MBI]oFdrq$e,+4Z-kY`qZ:_7l*)JNc0Y3NQJr!q]TEn,!L\5CB*ke>Ku)]31c&k$ANVA>B*jNeINqO`H1QSPBSWs.rMEGg/deM;#^OkRjIK5kn$2WiQOp6@JUekd=oL*_[,/%Ue8\ZNBD\?-TXN%r?)\Dt#<:A8TOGK[rq"^n_uKFM`M2s;>UF&N0CX>\F$ktcn[`$*BfFIlH'qL`sDe)5l/E!T;GqWoU51V8Y<3Op#u!Io<\/sa^MMCrtB?bZE*D0uef'DC]TTDC]TT`Y`3E0fK$@X_,ec3e./M['Wr.WOWlb>:lLt">.kmct]h:IS.B>^kJUq.7C`n[>Z=.))I>TF-8.)^$osg%B3[^Xf&WuY??AQ8u)^?:QkMhlHfBANl)]DN%r?)Vs-!>oD`!fcSM1b.jY)C&kQGKAU\6o(]GL*;L0qZ[VBMjK"BNF8@i.2F4QidDC]TTDC`^D@uN,XCiN[!>B*k]gfB@g`Y`3%b]-i]pMKTjWd%(IT+?p@bu!"g&,"1!d*PSo9o\gBhp;K8N%rQ#IX5I:t*bsHM9>If0Wbk,LeEe(h8N08ZPn?-bskfIVPm$,F_Hmq[D\sd\!Im\pC)5gu"*7Kj!4N]P'k<1W`n9p@gPS^AgfE32N%r><,Gde@-FH;FT99s)cW[6S6&'j=h2_'3&dX^GRr0ub&?PFqY(UX;$gT#+^NVHl72obCU*.@^5m9Z=!t;$@XK(ILc6JYB#5]SE3_6V0iu'G_L9gsUq/U1,N'.=m(pDkWu2cqm[C`C96hs-niH-m$)H8`0!d+mD/Y@Z3%](`Q!AUs&\8G#M.7?f2]g^Zc$5H(N'8tcnCobEb]f;#6q>L$haXC?>6[j#*NX,p,X3^[IFAC<.rHkT/&iE9N!4:X<\A9jWJfMggPXaC0ub&?1F?ui(UqrE`GIL+f3>A7LQm`An9P2pE4Vaj@KVt;"5Yq#[+aMCNjXh^R$77\!?b6N%rc:Q[b9X93,HBI`GNS2`>E*DZ!`UHC?2n,^2Vk.gfE32N%r^eah5(Sh_sdjVWgcQ0o37S@UHTds?.pa@QLt/2&$`+YI%3SrT;tc\D)AO+X3C]?Ft6gDoH(NE\?39C(h8LZ(p8$KqYXZJ6+)CE'2gs/CY3U=KLBG=cl[(6])%p5r/E-j_*OS=G[/hVbM-,lNqVQS[rl*Q#tiIIsfdbn\C!PHS$LZn-[TLI8Uk/0ubOaIH'4NFJk)[bKZeO5G]H9QLp$.D@lc2q3q!"oiq>BAP3V5UU4@UlWGh('lK729)hF,Cpa5)hFh;*)G-Rhl?>HDr?[jB\6%B,eOt3eb9ah4@jV(']eaRtl_MSL6)d]7+mG!D/Esj10BoLe)eP[[H7jVdC]9.H$$mRa9.RBls4(eh^r;'T^hq&-`GNR2@uR[#Nn]HGMVF$CMVF"C`Y`3%r,Gq\>B*llN,<_5E=mHNIW2j2L,M9[l`E3/]:dhdLK8]@p9\%J_"$A`9-8E6AT7B=//7.eLV1i5BIJ9/?:u#X*6mD`fKe%dX478_Aac>bI3Gu,#@LqD3UC._]:cal,/P\XQm6/AW/@`)#O6TS&d8IZae>m6@D&$+#-P@rMI!N,tX`9?]^-jh%tBk\uc`@o-O>N\pt]pY9^fQYGF!'7+09B=OV?U="TO+afU""*@q_s[?=9.4o69L=jlR)K;?!G46`lC]2E:.hW?iH9hFfG'iLp)fCMW27ae3-HC4h+O0"[&s(irPHFG.jHCOS'\Z*:DqL>B8_9rB$*Y\^c't4pe'k<1W`e#RU.rHkT.rHkT.rHlW(h8Ma5Ahuh.rMC*[]MmJ?%dkmDnot+J^;pPA*Fbi6@a8:f^a0qMMNV%0ZX)#b4pS<7E`i@:Ks%r?DO?>e'q4ca*Q%cMGkRrlsB4Xn5Q:N%r?_ba6^qWfo_%UL0jAS_c(!EkV!WP.iR5J94i??(`j3dKMI/8sf0AT\c7S8Va!g\Lo#<*Z\BV-/DUqOtL*IO`ciDX6.B9ro;S?Uj'>OJ90.%8O(YYfP"r4K"@7[8@i.2gfE32gfB@g`Yb39\?39C\?39C\?39C(h8LZ2ZC4g\?39CB'QgnZT8,Mm_8jrY64-7-a\)?K>-3B];Go!S"$+NW>>-(fB$ZH^Uk&Kh#@K1>o2Gs?QlZPQiA/%J,\>[?b_/7WtmtmVKH9j\=ok2'M?Qk^_^Yhh,YT/".WCFPh.h1S,*>FfWY[V',*Y2EGuEF#huA90ub&?m(Y?kBLk@a0=0)>_WLeSRe4er3Ji2QT82`JN[c>\**&0Y<4s@OLjlNRP.h15mYb)n>tIP>GrOu2cu5U"0n4E'(OA7,42LjV\l4ndqAQUW8M?hli6nU'GEdPE=-C9a9j\"qX/*3pYAg)/mi/I>kGb9/;_@6*p"AREknhHh+6q15q%$6hH!O=WUj+?adUd*,DM/pJrdGGu>B*ke>;=,7@r/1)[c4aT[c4aT[c4`)N%r?)puAgB[c4`an_5O(h$)/BA[Arjd*W"KFr0fCp4CQWKY"$]d-l*)r>)m`NSq.XK8f[hiPM9"GlM:Te3=Crg*[L%k4UR_Z76iANd>Zs]hhs3"n0XW_;!?A2Q%#>Fr*-?*[n(+JD@/>#[=VNgFlA3qt8q6-sUqMr*aD6^0J%50Z[F!Q.&%*u`E;j/ebZUJBgfE32gfB@g`YeTiEEf[SM;*pBMVF"C`Y`3l4DlZ-+`U]ioKAG&d:1jm7qKWQUN*?Qh'-[it,2o0h-*V8u#l'rji,mVf@J@S7P4qdRMW+]>7ZEF[1L&g3G^p.#5%(Tmo=f-:Ud.SWh(rb(h;pidWqQ_P4dL^H+?UT9r@RE5Pc:j$;!IV\$4GJ^)T_ReX&DD/Bn#11&[jeiSX5C8`i6]]gDZ59b!*/^TsN0W=]d3('(fY[hZ@e@uN.^VCHI62Bd'EEEdEe0ub&?CmN+Y`?ljJX'jdb@I#R4>hU^4=<,]8fa0RG&)')Hi,H9$VQg;>)scEoqAlfN]O8"T_<2;YX2PBoWuHH[#(rfcXL;_SZ.QnXn:JR:K$ofK-nd0&%Y#FBC^u*R#u6sug\)YlC>Egt_p?*7MUcK-h`oRu9)na+h,`Z.Rl\P+@uR\m:7inU85jObo]`hK;)CL=fB:fKBCG\Zs"42!;Rg7DA8D<'cWgA>dX,:bAUXfK^=0fF7"51@?DZ3%%!?\M:t8YY$$Qc-gPXaCgPR`*(h6JZ[hYBo\?39C\?-TXN%m66j0iD1'":jpD_&M*'(3C5O2he0Ws7:i]#!?G6>'@9<7Wlk6[]WDh+e1m5Rs^8#nDa,jn+)Di<;lT$^rXO\$$H]%\GH+;Z@Is8P'MYQ^0m,HTO4SG0iroF4e;]0AQ-n4Q(s?MZ]3I:b[[oD';'n^@H#oG'Mrni3s0r?F"7=S#2B7edYH5Bl]p6DLK]XbOuQ3_6dP%_/XNXgkJM@uN-#JT4n6>CH=WXgkLCXVbQ,0fJX_[c4alno7k;osS$=&*NEC6Xukpr9XMu[+JgF'j,W,<7NlFb,QRI/Ie3[$eXhui,B$Y"e6('Ye_]&`[:%[ZWY*gMVl1(P0u,T\$puaYL2G7X'jaG,Ulb35'\3oiCq)W'B8'T3fMS@uO.253j#uGqS>#Xm=m6@_T_Dp_6%*G[8aqk^(%D^5ZrfeQ,a=s%bINeC?m5H9TPUP6frEgfE32N%rmbTJ$2O$5E[_?(h7C%<$>81dS6MZd:]@p8Y;''n:X*2kKBK8biq^DpQ'c!X!-N3R_`uJEEdEe0ub&?Cbk"Y)DZ32)'$-9fXKD"6o]<6)g#;0I;R?XC'1*C%3/,%PZ?=m$:CX#?k$%@%Z)?=f4bD%0aGWrF7+UWW-7d)Vd,MGbk+XtWh@6iWL(I%^M'Q%R-gMgbp05aD/];_+3YO/qEN`>E*DZ0C*NgS$ngs"uG*oYCCK6(btg`G$YMo,\l[KX0iBs.:V05P'U'eWg]4p'/%/\?39C(h8LZp:50I%2lY*%$')"gPXaC0ub&?P7b:SOE"LLi4,o/rZ:Fs="5TRIg:sm/YK;VWblL%k2n"hX/e*72FBi)'/VU+6UQL"\_.$Y9eA\IKSJV96W5KlMC'M(]NK/B;fe^I0ZY!/AiW=RA()RFEa/FEaQ25o1t=/A7n.P_N%rE*D0uhis8[jsKq/6ke:Wd(jg@N*s`GNR2@uN.^(`P5J.rHlW(h8LZ`n:(H[Mo%OP.sojdc1D5gKb#]!ubAqi-%2uC2!]dX!+g1,,Zm]op@BgR]i0mlhLUAk-!/TFdJnrE_H6@S"qF^:JLLb).SU[`e(IHf3<[u?W'(l\=G>CH7O9i#&Yr/X3$CVCsM2>B;lF;\o]P=@>>7e;6q[d,[:VK(Ia06s)8gqA"dY@PA=%S=FI<=6/paV\NH0c!^tZ)q8+i3qXRqXT'V0f$[3%bt+?;=,7@uO.2\?.*#>;]Qb@'R((bjJaJ)B's0&C0K1H_k0FEfn;%Y&0bP\p8'HTS58%GJr2C8lnlZbehlo,h#hL%K77lWYV(Is]OE=^/PZCAeXYrdUV!X=j>Q$,oPn$G7Uj,K2\O_sf8Cs\fUta=-l&h2ZAP95&!i];MD,i1<96q!=79038l[&7:[[#>#2V=SYYd]5-D1R8QJAC:N:Kod1gjXn3D/cun:4pIG!P?ei(:sYQ/o5``_r1[/blKGp)]X/cK[&c^QdZ$pRffa8K>ZdT]@-q0_e]hGn>p#;g7YkRp`EY/G*)%U^Ps#5]%t`unU]6Y"@rLZs2a-]i4l&Otjrnqi&%e\?39C\?39C\?39C(h8N0n],LcD8gA2D8gA2D8gA2(h8Ma5AmO$g/e&jWMlb7Y^]-d?]UnY$ej<<6+<,>&Uf5Y#"_>'BZAFfN@a[a14R7?.D;1\HhYke)BZ4lO\:1%\,PO%VIHMK/6)Ci9Z00E&&RGcLubWU\NmTE&?MhS4H7.>VI.S^B"XB+2R3bGMuZ`9fSE&%]@VloUDFE9SYDqL9h]a%.!gs30SFp:*i&VZf`FG\b#RRoXR&&1@[R+YqHjY:*6u/L5VC]iPNRWE&fo^oHWPY'B.C$.hJ=l*qV3Z(G:8f7'B`XV-gAI)1d7I3hLL+oJ27>PD9gDFD2B&&gZ:?(2;^ge-7'Kf*.t;s](ejbE,"+68Zq6Z-H8ZHN18Wi?/A/,etCU)gP_g*!/]a=MCbIcNqO(NO9mTHAGcmXhN\4(MDR5sLN2l24Vn'cqU&h?GtTm05T/WsZUTLM%o^fU)@MXEHPXpu`DP>oq?/0f?FB5[Q4AQSH8IWRYG[o4;*/Xe7c$@^UjaH:FPd_u+g2rMJ]nK'?iMm4PWTIB`b@0kdiF@B+fK1<(/@T+SOI[hZ@e[hZ@e[hZ@e@uN-#rj])?XgkLCXgkLCXgkJM@uR\_a)*\FgF=`g_P.H5mRk!OR1+X1+11e75^.E*o_/&'+sIH>06As&%UDYcP()JJV!CM%KRQ>PaTsQ+dN,6Xd_!eP@=<]iq,==?h$*YlX"HtN9=719q52p3-g;Er?d]&AJC6Z+IIY]@8_9Re%Xl1C0hE1Cc4bWLoGZtg<$CMN\1?eSUqR_Y12GiAm=L-b4H92?V@4;Gq-A$JVOVY5BUBL&)kh4a"[!@k5&ueVWDjbpdrh.V-^hFET[t-Y.bKSk.ZT1-VctqX$"`4FRmp!0Rn:&o6\"i4a$o!p)H8:%*UZer$M"NLDu8D3"8WD(V]*O7)g'RCj^5,EEdEeEEdEeEEdEe0ub&?j,_rPgPXaCgPXaCgPXaC0ub%LJ)"('[B8SEL-W]T#^BSL!Z%tF!)IYW_YVNHiQ(%1+SXtR(ub-g\l6hr7A'2;VfZ/-Ab>(Kq@T8Gk&$s`6`t?)Y+O.oD<^',:T]cm-1e$V([,YZ3[NTVqB"uXP&;du8_;:O^>;K>RU0?LV@uF+Dm`NlQ^F2MQ&^u#8`,/+n)l`'^Uq4YlDAZ!dda7dWC50OPq.j]oiCnp@,=p/4^9rUG,H/%-Da":I/l%GrK(%8"u!!Xn5[D3\=NF*mQ<9fHW()h+r3L2[0(Ro8q=smAIpbD.AYbDL$.nC+MZ&.s7muShGu\rk*(".p&8`/\,?TFXn9KL>;'FNhKX;qE$*efq,G1a)J*o9jUi9HL-G[BeBI777]V&*H=Zp@_](]9Qn(i0[@N:9?109l?;dN8eoI^tcmpL(JPOrs'E1WC8A/-t7DijRjTijRjTijRjT@Z3%]`ZMZ)[hZ@e[hZ@e[hZ@e@uN-#rj])-r&r]-k!q\-XTVBEmt]1P06D;[5u4DP\'GQs&YWSR;!%qWT@.B7q@O_mqPkWc)3Kq:>n_N3kV_6RV:VdbefU&o8O$d8iRP,pXqKPk*Kn,A]=oaE9esK?9"1)"$bC5VBM!Es(.k,clH>X!9):ZVeDln4d"E/7#dnY2+L3F!;geA`8"2-8Z-oD`r]EULW4n[9^9NQ$16NE'ne;!;7d(!dt[0#_*!R+unC6qI$0"&n@]45,7eo^6BQg7BEqWk?#l*,a7#Dq2m0uhiSMqa-DMVF$CMVF$CMVF"C`Y]YEgfE32gfE32gfE32gfB@g`n:(H[[Qc(2)d!)b,TJjl)OQ@oBILcq(idEDd3fA"^)BX*WdR&/);s(VTepQK_2>;$I,1u^Y2>QL7(7`_FqcjL2WZZ"7!"aDd%&8V&cH*h;.`5g\$>/LS;GTm$s:_?'8*]In]*fQL7\";+u_?U\L*2[BI'fD3a#2%[g<\6\Ptib,nK:m=C5/Eql8F_]Z.q&WS,AJORa`_3)YMaK'!-Y$g_0(4@>#uAD*E5RK]"@iD9%1HQ7ImeEWkmOBF8Y[.nqG3r*X8,Z)Ut>OdQeUKbYJ((oI4IRQRRaj=5AOcH$,CBm4k"'3hUbBC/=+BEA6^C7f]Ec'_]=Vr2I=7!eb\F2SDoSs78q5t69)APY\m4m(=@pq08RLk-?..>\kptT6P:AB[)iG$D2/(<*=Au#XK_;8!e`0#!E(#PKKE>Un=OX9iC._gKLC7o2kRd9(DV+WgVk1f5qj`80*gUG%iDnh"13HGTP+eXP2!;gkuLcL4h@:BM3!Q%1@+X0#M+sWgiDU_on\6pI2>.=hRJ+l)Wq0jco=M=i;Y#l"Frk&S=Y?D#IfDc'&^I?&kc.bM_P^\\H'ao@us+J/eg]n)Y++dumNl.h0Vr@",3&mOl"ICbg6gBr;E;f&2\:#kJmbGMa&+2T6-]aiaer'sXaa"B"?b_9'DtBX#U^/G"b+Po?"rccB@@Z)pmrX32@5rVm&JS2++KO4-OI$mIQ$,DnPs`&(]@&JK<3ut(U!bN7;AgR%;ZheC55iZEtF8[%f-MPH*u7#jagL0*Up_q!BRiu.Xa*>S'[5;!G+^b7pacR6[!#W*(YG[<`^6m>i+GHF``2biJ,?Q)gM9$0Q;=#BCUtu\?ZR3K`4-]IS*Fs=#I-@=K+)`hdnM],cNo$1;tT6!7^uk?AQGF=1^E*PVUr@BkC>\HoJfnk1cmaldFA=.XtFC1[XgUu168MfVc__TgfE32gfE32gfE32gf@AL*,2:ACGZ:W\YduhB(H4pWTW9LijRjTijRjT$3o9dUUhLa.rMCjI'1j:OQW'=kF0X7A>YrVgM.XCX(JCAoKW/4ftA'#FpBi\21a$6JQ@QBjp?RgA[&`"_6SAT'K48tLOcbL:,#&A3\2XgkLCXgkLCXiC1;Fu3ROD8g?L+m0d,!I6;hCR1K+S-PQIk;$D!gPXaCgPXaCgPXa#C4Fcok0(<;\?.+=>iRphcc'tMP&lWSJ@"EDk0%^J"nT1nG[(e1DsH_3H(_Fm!k\He#Q'OQJ\?h6_-]^lL3IBE3dbtr:&,Ykj5)coY7;O4"$&$lJA,Tna5r%qDC`?B%1-+._<^@d]W8;)I]Yuii-hF(nnVI&TZ.%e2:g/*(kQ>k53mP)`Fc%a2'rEtZ4*Y(g'0u'%R[?+5.U!6osWQaY:<^!YL3a]FY4Nj$YrF*\BJX#C(qJ5VeQIcY:=G\6@Q$W$6!1=Y0I%mIFAdGl4CGO26>d*E4sMM21rR]hHM__D4Y]Rnp:r\brGQMYCEZJ@=o(s=$#_bqU#6S5X*&%`GH>p\?5brhVbj%[ebO/MVDlJgf?g2j1oNND8gA2D8gA2D8g?LoM+GU+sNc-_/2%][["R57doMG49#Yd,O;Bp9#I8ZZr.VX4uS#!*=Lp"M4K'Zb$J%i\/*DjK"A_m3X*VhLOoNdiga53aB@I$a/;VK8Z'piTcCZ8@a%Fqu[`fV*](V4"t$JIWor-H5^&g-QT@ch>mMSe8%!/069/83i$)o"]$nZ+Yi3gkbkRi9f8`D%-PWil_#?1Fu:"4Y$?Nn=0Fq_aq[I/d\Z8-C.]s\POqfEX`"%]V+>pk.p%nmg9mscqe:Kt;Qmt!bK8,]f`;2!Ms11N&L2_9iL'WN/kIFeSrr:ZPHIb"gGMcO'7N3LZ#W#[\BG6D8gA2D8gA2D=op8OnbH4kMj%(s'.j1^qj*nD8g?\1EO"?[hZ@e[hZC&k<)8oF'>/nk6h30"j$cM?Qlo/o\W]hT2*8B.q!M/K>l:_3l1+G&FDeJipQX_SY*`n3lXS%r3O-%k8e2/k8H4c!Z+b+6^+8MoT:EGfaS^r]=e:d*\VV,h49;m[+irWK>8qk:++\rej8rF/uKBTX6__`\6U_+fPFA`:]SI'7F9oR#Ii.c0"K0t>NjK(^P.-IdVF<"SIP&E^'22:q^<@lnCh^`\ZP^6D%8WiGk_7[5'dKPNuR`.k2-YD\Qd=NZJ'/'Z!"mhGI638QcB9;Fg]TEdL>uY@?iCgc(KQrq?Np2n%\2)r"4":040>+pc.L&kluXQ%m@V>d+R4YJaT,gZum;Z=0;K!KKs/tFEMe[:X\,Unjd-;5ErG#HX>qYb2K*cTX1\_Lks'PV_\;nS_[,q@"EqXc@J0+s5`'%4$eAlF'EWgEE`V6\[\cOXgkLCXgkKhLqWk,.rHkT.rHkT.rHkT.rHkT.jC_Xj0kEEgIe(<-iH:'hWr4Aqqf5>s+,6\X'Fc'(V]Bm!!*-0!JZ0@0T7,60H:p\K*955!lmh5T*.o7iOC/YELc/(G?M@cX"3UDP1?Co[eHZdKj;'S@ILhs8tYp.8agSa-Ce@?X&Rj_u8-^Y-Nn_Jg^27Rmk71,+k^M.n\3>Lch<[DllB"!d?;CGH.&Xb(^!>':``fiJ+!,!>X<47q7M0U[s;78En1&oe`t"CW\sKBZ&6-5&%XlDp+&[!M7e?+la:4#SYFe5W;JI15t"9/%9D5^b-?pHa5'YHJ`P%h1j2N7Bh=HKf0D76t4re[`Lef[X5O8J$CKQ-4,STFX(Y&;KNO$uW-[[:*`kqWe>:5IA;V&K>K'qLUn5aBC<3#@YCTXARlq+7d=rlIoUsB*I5Slnhu)5>3(!L^$<+6p%`u`o*UdC7r?-NVU?n1:$:KfJfd1kk8bDDUJS\+/>nR1Y&#Vs'l@(+L>LT[UNIGXk6ZjX-U>oD:NEEY#f\H=+*8>Cb)sE2RV(tU[Q)oDAf;Zk/Eja4I*%oFl%DGHH5AGIUcq->qg\!8)i_WlR]]ZVXd\KQ%h>XA0q\B?FA?`2@%EN7+GH$`5HBr>ds3CA!o-,nO$G]m7n8""`iTX9T(@)UT518m4d%BXie)Xm3(3YmNjh/b/)H4Iqa;TGWZ-m90S`%-",)[_K[j()NV]f^A&=%Fp&!O!Vktf56QK1qqo6)54r"PkjSKNT6]k^n/p!T$i]D48"oqZB7I^J,6NR;BWr#EdV0Q(_GCoGU[96fJ*&$Ck\,aH'3!7"=Fro8KCIT3n"Jc,?*B:3*H7[T%m$cS#oI[l"oL%mM84]A6$V/PgL8j5G,PL]FPN.AmF$Pnk>%Y#?_'._A]R_8:IA/*#`kT@"j``'$bO`m_l9VOX\_0",p\CKm+4>lCgJ^nc^\m=ff\=pYNugIds8MZJT\f;/=!JgPfK^J"2`EN#:ED_,FZ59g%7.+sYl%=lhr_MmYIsWCeFA/kRb3k4RX<2]^?\e"'l;Fn10:\[f;hq&fW+7;jU*oeHGu%=W'>9_/D0H[4U7Ze0^(0PqE5Z%"sM`YD8iqm>Ht<_IoCqZF4F>,'usM,X',(;$\'+"DiZH?U,1&)o2'(.5,F07pq,IpA[pUSp3-H9\'@r#:()A`cGJ.oUrofW^$@9YKq3;P_/!)^GP&ZB%98sG.^ogJ3d[M@A$rlQ]AA>@bn&+;Bn%&@@k"oA56k\t'\#oE,TMHaQigj'#X&+J=4"4h:kpV#hc##Z!@oEbi50jI^@Lt0\7f%7ahKqJSY--RTd]9rl\C*[]eH%66d(>%m]Km+3'.@&=;GJtfr&Jd_"i7/I.mC!iEHNt^qa]j>ZV,Mfc=-T@,JaB$of#e%U7JHaNO<^b::dO/9T\1@c:'8!sW]>DAdqdD=IJGMbg:7c6RH=dNgJl$s6csJT+VP[cOR=Q/-?&!DA+1.dLW'C1C3C1C]MM;SO[^BCq1Gc@Vs8E,iO[oC83'KM5orduM8,*N:8dHSN'?%h6%)udK34]ZPs4hYuatLm\4fdmSg"BDB/%-2IMJ^>@@U$+>#U/8`L2Fo<@U$+>fN)f=[M@PSD++^Re\eh1\[FPDjB\-Dk6s.U<_SGB81Iu$\W)QGZQ#mM87llrQHVTG]i7$#PGubE[@?fN=?Ho_,qDcu]MdEf7VHQmoL0B'FO8?>rFf3.ck$_0U]UY/>GNpF=D=_fAQYS(9J`[p:guBj8Np])5(t0jV\?8h9m="FSS6/D":bWeBD_MC9Ao)^@-icIo2[$fp$9n@=Vd[FYJTB*YT#)2upik*;XO(;eIc"$Q%RUg!aHt<_@@U$+>#U-!ifN,-'<_a(;IIJYlU.Ns=C5mBce(&,gTic&h3f@Z,$iO*CG4l?]?U"*9r;@]YJPJ07?eb/Vr:tu[KV*[A*5;:'??l2!7JOY#&&L^i"X!O8KCDqQr>JF+c,0LkrrIB!mW/YIsrYrp:e81m*>i1^-7u[aj!ZNTii0CTMRFkUt4@/D=GlGB]K+?%&qj]Tns;V7q44eYb@*WdcgT!bMuF=-O&SnVP/LSZ3QE9K]0Ib&)@3,0RViUK.n@Pi8:,R!p\%26ZUN=Sq-pp5i0ke>TURTL!89*7)"pPZ*A4#cV]#7hi,,D0Lq>;??)$MdrMBWHYLYFtQtc=&-b$L2jdIH63)i#n9=i^\C4.+G]:FK#^5oSWt4T:U91SiLj)55=`A_,I7,_@)\__O9)&W1Q$iT"1B;6cZL+cf^"!JsMZ!fn!O,:ES*?HK_&0_Ci[[)EQ`TXNrXFKTJ(4cb"K@Dd-X01h4FQmPtX-@@U$+>fN)f=[M@PS&43CPD:L+QV4I2.JYUS-`M(=IXAPTncX\nZm.`M#muP7l1]tL:pO2PY5Q)>nm3q<=(kFpJa\SVfMS^0:h$a8^YCApQX7e,,G!^*i"F'4f"Xg21iHOb#$XTBmLNidV8'i?86@GJV*JO>REumR$[JMj!$HM,N?+](.-NFOt'9'^Q3sc]j$0\XX@Yro?e_]h"Yr*:;'f,M[*+%mrL\aNYos@S->Nth>)t0DS=$9+l$oh)(0$S])d#(5b?JGa;ef%>S3"C(uQ+#5HJ,^qpnFJ1"^jA66YQ+S155a;^_S_Eu!<;T=T:jeZ@+=b_iSI>^2`qR[M'S#_4`GRf*$4nE"Pj#[-[b%K:Z9!2h?RD7r&6M>jd3]4af!rn3Kdoa.N,7r6BM(LAThQ+7@eW?+=P9]C;-tr<_>.b:Yaskg%_*Y\Rd;pH7'$4o[Nk$L[k+%0#S3Zgc#m]+aW0qeold$H%sjKji.,b@rIijm"'4$G'V+NRjCZV-0LeX)sg1#Y,CGL-`Q`4['+B3I_o]>:o$eE+L='VkthL/shYYJ7df4siB7kaH7PmM1>,&4/9@a>G*_?\>V@@U$+>#U-!ifN'TUB8fM-q$(kq+bk'U$N\Z6fe>HM4b_HO@tgE0dS6aIA<245%##pF[2u!u+,#21#bF"q'&%L7#%aIWd.emQ*Ee&&S/Hq7KCeThSN"B?GC:DoFoOTYYipX2Q44''HK!f'0FZ"]Y''g!+Wp=Z*-e`0'TVl]_Vb:T-h.*UhhHXZnJs=NRt(OoL7W>s?L$a*\el%&"./pLkRZ>8q<)+;-Vdou[t"/LnF4iOi.47f_"kqle:c6Hb%b/FGUkr/klIFj06qDZ[VZWe%F;rl^&'__i6H8Wk9'U69Er2WZ9>@%[$?*6l13U^kfqb&BUCfb(?/mkht`A,j/iB3)_Q@eGiiHse3D!8b@TV;6rD#3_Zd4[7MA@dnCZ(#+U_`O95[Z)uYZCb)q/+bYr?YcZPYCb)q/gPTje[UNIGXU$)GHIu9#doI'jkNsM`WlK[#hO#.8=$9D?\JTl2*nPC-X:h:Dog[l,3:9r8@Q4T_Ajc(b5PuDSH/"nZjJn"W5Gurf`]"^jTn;;CQkdBB:2_7GWBcSIZT9_W"HLB<0e=GS4FI@81>nQ]@rCT+kn,Q]so#!nG(nNj>"f?>kE-]D[Rs3,Y\>F;i0IpY.#@@U$+>fN)f=[M@PS&43CPD:L+QV)J^1Fl*cj3#ch-F5XiM(_4eOE-TrcH<\H?*M!"=q^)Dag_5JA;aECO(krrN\6"Dh*:]=gi`Mgi41??Y]k11Nj#VGF[nSLW-`/bc?4*Wb:>g]hh>5E&].3&E;n7u)k-11ihqM23nM=:U:F/JngI6-j9O>W6M(nF>Bu"Cn,o(jA*F6.bPJQf(]t+:MBb(l?m!'_FcaqY:AJr#>-UDAF,%(=4PYQI0,AVhM?@@4s]kR#%T4'hgpNlL)0"b4`Y9s6:CS[^6/>YokT1]N%r+Y&K;<<-VNt/c8r%0-Hff=6H7GcJ*8'T0EUZ4g$HQFU0$QI1^pN7_Rl/Z.&Atlfj>`nqI#\O^KO!)o$Qc5_^hbO0(#+U_`O95[Z)uYZKFgJmKPe]:@U$+>fN)f=[M@PSD++^Re\eh1d^CX:@WhFjX8iD#M2"J_d9UoYdY$fVROllQH+)gla;c%XsKC\SKKH#`%SQ0OhSIA?K7r'%B]C6sL;q4Jq.hoZs8$+-?/!Dll&uWUO@gTnj-OlL!hg,Jul&(5kF`7K)JGB\hL*FjXY9e*)rs5qrAW?CVX@@e#s8EJ'Pg/dfdY5OPMplF#:6ad`aMJ^>@@U$+>fN)f=63nb#_RS70k'4;V5$phH"r2VDlYHl0Y7MI3Js#9SB'&dP2>aqFLLks1[osY7d1:j-3uShRR$(XB4djYbLdt\B9984DDV^@`QD"][T(Q6WP%=(KB3k2LOi($ZKK#!\L#HB4kjb,SkrSfRY3<+&6(S$MCE'5?:_"A<")KbQo#=&OE$-(T%V@>RZ%Q:>pet1Tedq:9M(KT*]-6I;2`[q3IWaoP7)Y\=Qc;2(r7s=lGH]6l6R5Kg)3>$jMA;6/Uie#23+(B4'K?[9@.t]K2R"Y:rTT+_281\P>mq_Ye*Q(CP?IrlS%9f^QV]*,f?*]Q5G#A<12Tb@jNg$'BQf8$pSHN3JZXjN3?5,&-Z,!sMHk)5r%lkn6"(A^Qgcr8_CY-OcXeH;gPn#Z8(f$3J+ZS3+kqlk`O95[Z)n#\MJ^>@,(pN5+`&[;(#+U_`O768[M@PSD++^RA4,!MXj^O@aHg5AblkFDI2IOD;>Pfla:jcps&,IB#k?U)kIpNKGOi)iPk4n(pLkRa%9:aHE-NN1(MCC"H=dLZM=O`m(M>'AiS;X.<:gj%K1B\LYG_'A>"9DEraBpq<4Ni%#'qM?*U$Ja/9Fa3Q-Hk/YL:6`[M@PSD,gdVX')m]#-VK?&OHb#fN'TQJ#XI-bXnj+*Y5@(j#edK*>fj.ajd!KgZGsY2!#U-!8@9^"=fN+!_+K`4]Co]=">7j1-+\`KJ^q:_58U/a/+)iDMW=I83+&6*HK'9AtO@YKg6[=QN_nk'DEoNLM@`)[BiM5a_DiVL1#s@jrkH=9'#*6Lu.6RP-kO?j+nMTf7GkcoPBZk^=f<;A!)t/4Q3?/kWK=2GINY?uGg/`OB4Y,TI'!LR38t6l9[YTSJ63p^)r=V=;N!e](gT`kWX3JMiU.lleW[)C263na18RYi.Xk6Zr]4G33KPa-`+bV[$Cb)qoD=>:^Zm5(B6gqjF:]eoI@]o]d(k]/G"J#)(>LN?4XS_S?H>A1&7uXNh+V9B0\d..k^k"d!$Fck6Eag'/>A7<,1U4BRT!?Na1[k<8#U+k_X[$Z281oo5c@:XfIhi$@6GY!-N%%U:S5=L5I4i&n)Z>NmS<:WjL/KAC>oIEHqjODeZND8*Q+e`u6BQD[cAg-h=+W%IleBKKme[3.CB3o4U>W68YSXYpXCWW?[8Z)u0(D+,?M[T0ZO[N_N]YcZPYCb)q/gPTi:#[gjo4)?E6l3l@(D,j;7"YBuUm3mAZcnQA4A=sSha)ls%Xia`aL9%XoH(&^lDJUj+m7m;EJ[bbiKG$8\'4\3=CO!?JkjN##U*_/?sBnHJ:fMDQ#`.maN@#.>9$W]"^*8)`G,]FS)Q65eooIe='>]&n,cD&J92C[D@6%uF!:eSM9oaG+N3@^`GAbR7fae=;(b;rWqa/I'lL1'S'DZuAc"0;K#`P0?GgS^Rf>e5q6&RndH7IQ`:s4DCI\-M'3uEjSp.;X,gg4LE+3e/Iqk=qUTp4=tJ#Cb)q/gPTm07K9dhK?pu8>ESd![V?gTSVMuIMZ#G5kP[NbBuD:L\33X[kWXg&YLL2GHTYcZPY2/0+a*J4TX^'fi'g>i[K@Kr\b=`Lt\o:%L:^<'=YB!Ss)-B`)AUPE=K,YY$j0UH.$iFj4nnge\P!ZL4>GTm;-4sXnChbWqt!;CNXDZh/k];*\E5-l]nVZW,6*K%V/cY;ld>^:LCee?;^`'3%Y!2n;qUETI8BA$'fBG;KK32b]&#!\6%&Gaub;_JmZ#VpkA3#iCRHTkS/Inr(M?3n-M#[3`A2kG7#u2#DN&.T*YH.@RoCohh-4fIT1Pa\4b1Ej__m+K)USB?c-UagPTje[UNIGXk6ZjWuD)J(#+U_e^X!%[V?0%(^e=Ajj"p78E\pV?+3.k`Qk$d?oSdSh7Wo0?t]].;t4r>Y.'F\gL?Z,4(:;U,;E7_8F3je,8Q9J$:D8P\np2IX)[+E_R%)m_OlJh_Z'o=KGT?e/I&0tq2I,4XN]WoAt#,tTZfpMbN9ERg\O?>@UaBoH3%MNXJ-+BD"qU8pQg4*I.L["%:Rp5#E@m]sUn2KfN)f='=Lp,_7$B&#GgHt<_@@U$+>fN'>8X4Do?<_nicj>Ht:K"1As!Wg^@'fT*!GLMn1m$MBOSPCrte:5S5T;O2:Bc<]ptP@pOPEpE![\81hU:]p!cn)"Sh4F%_!s1g9r^ktE.P(Yo?m=lc3!Hf17J-1#^fEHCW>L=[8kRU,@^%_I.%Lc,uIjbNe^L=mkH2XJ`:_0&hY!/f_XoZMM.]2@gXj$)QoeRn`\[seEOQZk>3O(T()2@9WPW7;f/7EUp0d:+4(T(eP@@3<.#u\-sFY'a*e1GYi.(m^3J:"s.d(lh[]1CW(#+U_`O95[Z)uYZ2ZdfrFl.I#S$E''>HtfN)f=[M@Q^7Y#?`mQ5?!;`5b7/%4![T/'KYSBhAnWd<;uCoa"`[gG)L\9Is-39Q@=q*5oPpg*QTq*34EG9S\&cp9;)K9ki#$?BAY]@"Cgkd*Oio)5SOtTnVk!GQf3--d\(,UoD1$DSXke!g_)Rqm`o(Ye!U%CT5SRPmm"ILE8t1WRFCgIk#ZC[!G-_p=*,a)^>\5*U;V1[M1r-H?;3hEFYDq>,pq4!D,.aS!\,pa^>\7lP&O">F$b_o=-NgLnsImjo15-k2^T/t5Rj[c1[!]T!sda'YJ1PXm!B\cqT:=-n(u[To?TQ)p!3:"#^Z^q:&.RNpOtg(p:e#pSl]9O0>6j!4FH?(h#I(0nA,&%n?"Y,K_o*5$e)@?eFh6UHt<_Ht:K'D&/4>;\0P/%-2IMJ^>@@U#8(@U$5]CobugK5JT9C.ujHNc!=fYcZPY[:q-Q$=?$e5+G`4\U%PZ]Fd+HN\/4Yd597^)MY`fg^U/E2Uk5D(G0mTcJ.9af7=Gsng+.`_iMVMp)J`A9+cF'*WHS@H$LL%nODH]4*JMUNrocJiO.Xh4*SRkNs0I:lY^snI6WFH4S]LIj,:^!DcPDi949OVa-Ye$e:XR!WuhQ-Yd6ZFaL3Rq;lo(!T(m=dZZ:2TZi(:Mk!7a]>(DpHKtfKmccGkC)uQ1_98"C:(pa;:0$\*;i-[`E:6nT)&.;\8U8onF7kIK5\En)Z926SqO<7f`V9Hf]2H9iN^EFK5XBXr9jC^T<+:BoEV4bH"rYGW1c-2d#R:VbFG6tk56E/F1I;I[;(3O(cU\WN&N;V5#d/%-2IMJ^>@@U#s]!Fn=4[V?f7@@U$+>f"HSgT42"^%W&1g(P?SD[UNIk(Ub(5WjZd;g,nc?OnnJb8*B7s%P:*,n3RtPc9(,L;Bprc?*LR;$]`L;Tft4i++b_Y5rcSdX``KT':plt?a/MIU^p4H,&h!G/37`dhL_MDTf)+6Km>9(:`"8!2?:c5CoAjdX"@B"DGl6kQc.F*joM-ugt"=_[B3Jj7*)edVH.Q1hmkdiAPu&,\u6phc-)MVM7PFFFuHg9k2ia0u"S;j"nC6,I:`l*qR>0+6*"EAf6%:QoHi!SH,T;ADSN6q&JH431#=B[0e]AIYRnUV_jXencaes2?=L_qSgk8rlbLH/0/8)`LI",uCF6?:+o7@b;#,fnQ;9m4U`9Egl$JUGT`O95[Z)uYZCo_-UJo/K8@U#8)XgT+U(#+U_`O95[Z)uYZbA=5V7J?u?MJ^>@11=C(1MeSM7PrrlQc8r/3N$S7`o**mY0I[?*L*1*IdkaLTnIm'7Tl$a0<1^$\%gFB<\;C(Okr>Vm*A>+-)A@_7BAeW+V:@OV)j&i[$QA0`bid+89r&_bWMr"Eo!3_9Y=D"D/9d\<9M&h!12K?&"'/>2:d^rN7h;1C_U"CRugj"?h(+JtD/uA>R%hl)XIGdt)O`$[R99:"V$[/?l6k#ht5R`O95[Z)uYZCb)qoe%rIr@9^"="L_=j^p[]VZ)uYZCb)q/gPTjuFKhlJfN)f=JSipsYcZPY[:u\'lRQoR#PLjGY[\j[]-`-6F!:TG-A/H7Y+6$]Uq#q>?'?GAhS^SiEA\"`-SVG#[V>dXpA:WhFdha!9CQER!"=NId'6m07FcJ&TJ.aX1TrDs0>i)=4\(nV67+!j@:!I0BGA-?ZX/l&&P?:mIjnV8F@2>"b%*$$Z9s*?B*HC_U3cE"4MEcbUi]&&J7Z??kPP+ZMS@#`g#j#d]@IeF?Rc&,+P3/XT:GTgmV]Or$ke:;G,F8a:oq>Wllea_FFM&BmJjZZ3H.+R$AF?gnC;r>\*q_mX#YZ)uYZCb)q/gPTjuFKhn"fN)f=[M@PSD:Na4Xk6Zj/%/F[_RXp3q8OK9+t]#7eX7s*PT2p&7I#s%BQ4Im*cYf[k9Q?Fb:jG5$/G^#+1qD!^#L]s,78qY2:KDS!jf#j\5MY>>"YQhJ&%?KTGU':O3heQ4X-AncYF$&/_3j>a=9M[8?.i9E^p[]VOnur'@Tt]:\u9GGk(7Hh[]6L4CoA/ccbFo7T'VktB86?RglPV0^pE%2TdA=,`__t?Zc\`fGqm5uDbO6gh.MJ.ep)Yj$d\NA_7#q4(j$t)5sJma'iV0Al4q;B*D<7/e6h,&#K!%Ko0PJ/qN[`J!WJ)JOC2ClQBP;1]'IQ4I&OBu43?gee]jF2qL,%^EQjp&PNG2m-p8jJe+AmoR;bPJ]1M6#FAQ;5E2cb1>+:ON-Z9LL+%T1XrsBGBTl$+QL"5ojmof%pmXffY3^U+dDm^sBdj*9pTjM-j=&"?jcA_Fqa#61;XmCN5\[Mnpcm54XH$#QHu]@5ggm_7!fWZ)uYZCb)q/gPTijUVXBJ>;^"\YcX?7[M@PSD8iqm>Ht<_bXL`4@Qj@PTfhl?=Q/WgHttPn'gO$+e(_"$-R57'GqKjlO]Zmi!3)d!+'cU>l=!g+"fb>uY)`I35#HY,NY5Qd%QdiN/]A78LJUX>4KTF>*Yo\1#!?]IrDBprsC$joLl+0LKYtk_Lp@A=_TtdV64]cGJ+m&^2iii6(?Gf?Gr2iE)pP_3O+Eb[salATdk8b-]i,2@Wa[NPsr/aYrY,nLpQLO$9C5R*T@%r6."AV34[D_4JcFiMA&kTe,b,-C'RHIS`)V!6/5,DVTqAYR2F2Mmf-A$*R[UNIGXk6Zj/%-2Il:+/81>@\'eHhNM`jTV[fN)f=[M@PSD8iqm>Ht;J1itCWXk6[6J@T'(X!WO;`O;eDXn4BdZ!B_?)#BdO>dEC!')F.\^M:fidC1Qkb&DFj>ik6e_g9jE"d`7#L9Koci_Yu^)fVJ;6sqDSKQb-AfiH)AWi^C&/j[7sc-*Y@5u5ZMrZXg#^IO^4ZbDLro#BRAon@8%[UNGu8:%MBfN*N>K=Gk<.`:S=2>.I%um*3`hlARVAh*=#he@h@_HXM)c*rV^?!lTJ'\=`sKYfmE2jeVH.Qa,KpES#Xr[OXqT],E)8MFkeuUpR,7H46/fFBc+gRW%&nlZmMGLjo!]"hX)rXZjJhl=r^bE5)sb[-'WW\0,?#+q]o2PZK\m163RqnKo6p7pE_a+g[+0uUJdr5O/ne:eUpG#K@M1jq[lcTGo[rTYnM7YrH"1Ug0`-0=G/@@U$+>fN'pLCb)q/gPTjU'sOgm&1;^P2\6]HQ&^<4_bF8+5mF45ge1@6k]Pfg%4*[E(2(o_M)@Dfu'btho-"u5"*5:Pal(<0S#S_H6;3oT?.LAef6nG&>W_Oj!\;lH7fVZLpLDTC.*$$ofuo<^V5kZR6OKVsMg#_*Kd0)W2O'Ak$J;XG2U]C[J\L>?;J!o&TL`O;Mq,MQs=fN)f=;I@Z(c*h(c2$.Tp-A?/n'V&eLE"fEEg^DS!XlT%?o'(_^ghGTU^!\H3!/;A,^."IT%P![0p9joTiljk4t5X,bSAWAbTA7W=m1o&)2#dfb8@L3.L!5^FM(W.Q-1kRc,#8,X73#Oq^IKDUHt;F8;Si%[M8gZX*'JB`LN:*JiX@qWd;l@`jTV7fN)f=[M@U>fiIEJITs(ZC.O13#IY?JCo_]>E5e?6\UljOgT#SD/]P560%a3@X6R]/3A>,:i&_1)5Wb9RNJm@`'2?;6,RqXg=/S+H=?UfVW`S7N>;%LmJpNNcGBZD7`'UmQKP[\uC-LLs0*Hu;5o3Pi#lR7ZmgNIHf9DG)4.HhZH6fF-"YL4UNLX,-+Q-d/>lfh^$]q5XXlINTL;MA+B3V<1!*=E'Z0RbOs^h)oB$m>HtHt:K"1As!MJ^m3%FV9B`O95[Z)n;2$FU](MJ^l\YcZPY2/+SS@Qei.0MJ?A0Tf,JPc4VI8S2?kQ%c2S2,f7a]L^ecJot0:h=%=pmd_W%=dVgnG'8&FeH6@D[d+ucD7*9R[aGa!H@oZiVgK-j@f24YBA+S^rn35("`6*pRI6]aT*>1A9NSbW=5DuR[UNIGXW"<-[UfX.YWQa&F^\LZXU(m,Cb)q/gSuu9>Ht<_VZE9"`nao.OK8PB1%.ls;WAbJ7_+X1X"DY0u1S1Kuje@Io_!T#]'QFF!N?H58AFShn`-beN.7c=30.J+^T^e-:J@`O95[dHsg2PAO;.gM3-n77[kr>Ht4sr\OOk6#XPSc`jX^ocgP6^]7%CpgkmMpi72Y_[N=6-H8[\%>A7s=7A(-adSnrm_Dq^h7W5us.qleeM5O![#*asi'%U-P4_XicAmS?(k@_-0)?dJ`gPTiJ@Ag?32C[Bq?.`1o.mdtWgPTje[]1io/%-2IWkqM>>A[9He[huefN*[T'"/P0MJZ?pfN)ghR^?'kI-8S_cqZ.0E$>g&M2[gUiG6bgbt'Tk:D6kJ9r,aeCXP)+b!J1YJ=diH"iH0RN*^jdCPJ>rZm/-ZM.^3IR=jI#HB#2*CF%l=Et?=?Y-A\",Vs41V:Ji-XX`VUN/6GgX-:ao4->(q\pC&eLKuK5[T,&iC+HK\s#+2uCA$`P\u;M1]uR<_2BiuCBUMM$?4?%,HmJVod/1NB`-Pb?jnY[E8Yrm.Y&[AGBh@q1QOre-2sC4X`s)&k=EG_Rp6*iQkau\$.d5[RE]mGRFDL)_?,*&u^*)X.SeCZ"l$A&e^Q7Vt?b5Lo4?jrfoIC\[(Ub(5MJ^>@@U$+>fN)f=6>?e\C=BDhRN8gOgPTje[UNIGXk6Zj.mdtVgM53AXdU9=(#,`8D5HY^oIfc)dP)M][@AKNKjFY>XI+!5IB\/)%"mMl(gj$Q8\c?.Ga)9la0[5JS_ArC46]e/d%ZA`!si5(brduodR5UCAr(Qo?mfk>8E\a2((;SdRVNt#dmiJ6:$?ek%Zf'28fR!kX;@mPcYVaV)KlZj'>_+d>Ht<_VHZN6ODrc`h5h,#URHC(os]oNEcn3TI1S-$U,NtfQf">pair@f%ZkLDo8-XG!ga-!k$,AW%U*)$1lVFi\J6dl-&DpN@,,BstXf@.neYKFOfN,CsX4R(fKp05!SFXYWoMTpn;bKtBZ=Sd6GJY/9?&Ga]hbY,<`bRp^?)=s*NuU.U&U`e$O2-IG0\ipS2k45qi9[0An,;e&i*/^36#EY??PlOa*E]\G,rT?=)dti&`M>-g-[\cNm0ghT?2`-U,EQcM0"#FE1NR#Wc9`n-6+C9H8'mGnM,)H^YhfOHDc$0$>9@qSg/^-?H5#suKG&@@>PO&J?!69`'%5Ku;a;YU=-_6Ajt*rR*G^RN0g0;@$t]ZKdmo(X"[03VDdWMj4=<6;ga)+,lb+1)(q(16MJ^>@@U$+>fN)f=6FHs()&O43(adX93f^_m"XAL4_8t*14!:BhL&g_5;Y7g%4+3'=CuUAONPdZXGgM)h`'6K90qMRTd+aSfE?6hQ:umd,*/kMdOi[Nnt>W`8#dXPcu:ogiXCp$+?A-IWOrREh.n:]KTe2SEM3[K'=NACgKF6.2+knl?K?I5qgsbjJh<'4X1+5*L!=,Oc+g_Z1Vq7pNs+@@U$+>fN*Ze7Y#@+m'*VEP@6!V16QOq34(H0gM#cnRlDh2S)@sWTBa8fU=_jQXbs)X>7CsdlZN/T*u/lph[oc6kWOBm"nR,?bB(;"6dQdA*tmEEg'"Od9"-M$"5lr5Qbj79S_+p,omK-@0D'ZN[lfHt:9+cQKVWnCfbZ)uYZCb)q/gPTje[N^A]!c4oLLMb#=W_$Dti>?t$XeW+;49.$p>>QEP4Q[H4U@@TsF2)@EoQPJXb;>LfOOK&IPoriK]"b`EX4*=]Oh#N5Dd5[[^"[]VrGH%uIX16$R+r"5A,k@3B7$L_YMXX(#ho:eO/'Po;.'d86lQ@Wnl[]64,/B`TqTES\Io.W;]57>g0cbXZ)Y35[p`Hc]S^]R@AG\O4)Y((VSB*[S<3I&8V&mjoCK\$E3>rNVi6afuL[;)`K_(01X/I4CW\"KYJ(PI8Dk!/N?oH*?X$24_;KO5+2$'%j0HKe**_C^ArZ<6S3Y,>3HPs2KXpm%M1>0^Rg63t+f?sBnLcMF\%tj8?\TYpBj]nUV_5gUR0=G7D7Fm;6FKlK[;%34%+Sco`f\!A)'euAqMfiIFU[UNGQ63q9CfN)f=[M@U>fiIFU[UNGQ63q9CfN)ghC>)95;ci\t%##@6.@br13sGRX!X%+u@52QYiuk1kmMh!3C(^!%4mkBcqE=.^.]925P7_b!oW%Wu6oci7`b6+0cJ2'6b5Y=]1Ka)ufF8E`"Z4/H_jk\\Pg(bmheCo`HE_L-!%%"5-DA15[Zu."O:_%&E`!YgXpCX-[2NruNCMi!HesDl3X8pEqdE]UcPeIEpVVo(a+.t&`ch!@mtF[5L7RP#;LX6GZlLMW2`5mPuo&Jh1NRgK_pEaKG(\8S"M]qh^OerGmPpl&k-aHt:9.>D\.85mF7@U$+>)PoaP\s_OXbs)X>Nr!<(Bu=^7!b)bQ[(Gj@U^@JV.[6]rEF&c+7iH7@N'<1FO6G$"hU?*#b9\;Qq+"pZmDTKirTl\g$?a1SE'#P3PrXK<-6Pr@:MjsB(-.8`\5LjlJtn0=`;\H1Hb2=A;`YcV*-6!AEEfN+hV>Ht:9=^bMHdOMK'fN)ghL1u`M>q`Wd.G.[;.md:hQk$U==RRh&BW7/[_fu>]t-4Nm-SkR$i1*`r-YB\3tb2l3"RnF3lpK#hpOo<#a1jZO9GP"/TMScS'qg!1h*l)R-?r<]+Wm#X!/"4daErP](0EdEJdK]=\QsL!Sr5>1'p"KD")gXq`Nj7qXcf64rE`;960qVH.Q1MpWjC#l6_')WjJ]Sqp"_e==OS`:,0r`)?ta;9dR1<%sq"PKFonD>/8/)J,CVp3![C$g-IQt"NpY9Od?j/*:#B)dWe4,?XH$G#k54Auk04j[l^I+^FU?=l.VJ>c;Ej6((aVB%qYdQe\G9Wj^<4YY6:f@0>Ht<_d>I@0Ug/$bFMqcEbng.D,j93g.I-'l%XLcd!N"_U-:'jrQKa<4=-@FW)n@@U"uk_R:Ya2.0XnXk6Zj/%-2IMJ^>@,5$Y,77_40[UNIkVQIf8LQ92I,RK+NoG[BO/!:I-0GI)[@VSggX"sdIBFmX0,cK;QD7Cu-M-=NQTC5p&K*+%mpJK`ck%0[m/WgHttQ%mU6ThWmJbU^Aa0[GilmeW1DLq_[":uuNDS3]09A'W8FGt"3hOR6[U=;4AT.a:F=+!H<%"5A]M`O95[Z)uYZCo_$t7jaLfN)f=[M@PSD8iqm>8>&a+tWfLMNGEb[UNIkUocsa(qt.N0O,%*i.@5!j._fhSkr+>MofmZd8\tAldS@/%(^c'--PuYpY6"GqT!YrH=7-:G/p.mC>K?QHNrE\e/Z-e^[H`G*^9fMqX#N30N6e(Q<;doV?pA:m>uFT/RR31.e/6o$@8g6]\M0J6ad*in7,Z;;ld@TdtQY?>jk[1%P0Af`U";0\==L(lcVp0-`Q<%Y='\%\@aA4_-,'k-m=S#3Qt)+g/1.#h)]P4O0HLY'*p#l[M@PSD8iqm>Ht<_Ht<_7jb?fN)ghg5NL]@W:f8@rTj4JJ8%$)Q3Kf39,pS&NK092MNqRH"nc0B73XU$U;18_7T17$2j'T4+-=#0>J\-k^GMSZf/^p%(tooHf;<7]E'+%pea!m9L.EC;r040pP,\go-R_/P&PRn$JRW.'XPBO*RH^P-)^cSkeRga;6UaY*rHcA+HchY^XIMgglZ,N1`$7m]XAUD)tGPM6Nu(+kq_m[/)k@q0R^"-d2km)b?6,&jclYMJ^>@@U$+>fN)f=[M@@U$+>fN)f=dMf?l#cTIn/%/GPg+$K#iG8=N_U1dW%XVZ(`"Ri7Md\TZk_SZp*buIbL(Vh(k3A]$l>ce"95hZ0p[![1ZV.P&l5Y3Jq,cPM]RPpe]s\G8q9Kl8UOR>*?#\`3-N`t'H>f_h]W*SP`OHb;'+5;_eBneZ+U@:`c*f+!U^SYj?5?\qjLGflPRS0cZ@D)kgc1bprb"L"%P.2YjKdoNmshu#8$#WE9:F-tLji"sQ3GS3>:fN)f=[M@PSD8iqm>HP-3DD9^DCb%i\!k&iuMJ^>@@U$+>fN'M=WuDJU(#+V-Xak9-[]7_iY\2AlLZWG50H5Vu]?8[mQg:e,2CuMIm5jPo1)ka\?%XhALS5`o+PWo`>.)nfT]Zb)TVSu,?>Gtb<7,0>\-Op$XePL:=)!ebKrF36k3_/N)L]cpYAuO>X5G&kfj"aD_.SVjdk!UqWaF08mYbW'lAPF\pHHtRa8fT<_^GY4q0=O-o?:Rh?>e:fN)f=[M@Ps%+nTsX7\^5-"'rb0Pme4@9^"=fN)f=[M@PSD8iq5"1As!CAgqP$.r91%,5N&fN)ghR^?)AMSN2XI$D@*adIf45F.D1lb20>e.kf7rn^SdN@6.3H4P2$gUl1lg3h`RLoio\ShN$hk$T%sD7.QNY!GqC`#cT=Ob,X!arR_KQ0sp%lqMh816;1OLZ]8^MaNpL#or(7/D]T7uD7XufN)f=[M@PSD,ic9/%3ttB,e;0%E5nY[H9#TIY]KMDJDYn]Z($0f^c0t2)1nF.(=]6CVC]7&4&:N;qkOD)GJ1G"bI:jO_p36T][T(I"*PMr'sXluWE!/:\b$1qJt?LpfL8I>)#/asF70ic(A`i9'BpVm]esn#lX^Rrd'X]*oHIG!T+]mt5aW:`KQ8thX!%__Ne/h81?Qc&1mE@WT?3nedsq<\=CSe+^3.g\S*T.c$+R:pI;k`Yk?TT0&,i$`Z24=_Hf8V0I0i!Hcbi^3"(rse0Y;XS\aI[n%A3Xc-2>Pkmm5,l_*gBj-RUI49P0r8\\][EjJ8lCT#`hHF;:p`U)toa&=MPrF^jqOFlF%_O=%rZ!&!eWQl0Af\>7j[gPTje[UNIGXk6Zj/%/F]YcZPYCb&BdgSu+!(#+U_`O95[Z)uYZCo[nN>Ht<_\((PY*Br3.8L0K_:'_=JlpBMR$@N\&"fUL%qS6UtB79a'F/0q[cf..;P',QR/FNgn]QY3-/gi5H9=]J;MY06RfBTG<3-@'ctmWE!.k%5aCq692C!1Qm%ZA6u:(lX&RkY+jGqB4CIkXY\M*bkL(-iQ=c$YYQAQK_+dCY]/8KT9#LN+UfVVIege*iP*q<_GY(o(1n_'XZOCG+4r@*HC\'%K$t[K9?XDC4Mq)k@2OhI@4JSboq(Ca04j)=7s"0p:Qf[=3!Q_"'q!)q_m#>YF#-*q#%B4N>#(BLgpq2bQ26_j8ZY._N!js/eOqH7"BLKm7oDQnT>h$t,kOV]%tG9?f[bRi`O95[D*^RoXk);ZCo_\d>HtrfN.CLh_^o"+PjX&:k*2QYifD>D$]%Yu(MrR/J,]\#(I6ZrS:I"'/F.]-6`eKaDo*Y@sip!:M$Kfb!Z_@GO=6-loacYC-$qH^r]_-HaJYsu/>4leEBbA_IC$PUW-b[`L`/LJGiR*K5N[L=sHKr<_88Z+@9f[84ZodRFsGsQMbjAt]&JK]?hAM_L`PKp?d(/;W!=U/P>CZr?dF<:/JcGF*M#=G1I4Ru5Sro)fRQq=KsJ2[KFk9Eer.[OFq6\D^!PKAY3UAIJi`tcU,e`Kc\*(m!pX>ar[.ssi8g>HaBH6sq-l]=S*pY_$Y`b&G[Xk6Zj/%-2IMJYer&[iG/$F$YR7^0!qfN)f=[M@PSD8iqm>EL[K>Ht:1gPTeMgM2FZ`O;dD><.f_I-g*1i,>60rSudBL6"Os_A`IL\!LBmIS"pL[]FuU\+h.p7+=_uHM1?`[]KYcFp,sC42eQWVH.OK(A*bZ8$(o'`Vcl4$0@,n0OJ/3`$O9.CbnLIW8(6?^;(@TV\63flph:l)+0&K^TuD#ZCDT7E+F2)k*L-c(UYZpN"<1M/@(R@2SB1(43(`;TMrif*cmmAM8T@c]f5hNjLENZrrV),=6JjRS-r]fJcGfPJcNW;n\Gb>iP;[+(c!@-YTXC;+Wj)B!m1FhXO"1#lY*-)Ll8d#j:!u0)NllrcJJHT?.IJ2]m"Vdqi[4[eZ%dlj-Qa&l=+m[c1Ed[M[(A-Q'E4!)&X/bJJ$^OZpDaA^^hKs!5A9Z&b*L6[0/V(%>*+YI^Rn1d6+Y7(6HDbCHg.e*cUI(cj-Vu54-DV#m8DDjd6QY%eV87mq4J!X#AdkDFM#YpC4]6YL'E8=H1+g7[l'p/_d)Vs.SQQ%ml<_QS>#MX>N\eX&d*^I4"$/MUokZ2f+ZP0nbhQG(!e1-LkJ3ig^#8M#1Z5OYT*;uWr7BlS-_:LV3$g\4/096!3Q:U1i>5;f>&ht"1=TA'q3/Pt5C;tsDB=9CN(qTLN\H#^+V3d;i=(,FFr<5LKTpD1Ioc@IQ+p1YXk1=gni;uM;OLS]=-^6oI];lAQ2ab0B4seOBP*&tmU6e:?nW,r]9*@i/1lM1V&7jA6pY92!g637h(2#*,WKTHln8,[U>W#9`hB[K&FkHkN_!q9\qm.<.jdU9=jutn?Sri;ir/%pq36Hd&l#D/%QJOMJbklU0H$IQpZRF7CT!q0tfo_C=B.kZ6XNbH22<]S[+?1:BlU]VZ<=&NLb0)-<5'O]TP%W[dT0[#/,SR.XqV7ATCAq)i?F(?eHl_9ed851`k_PdagSaDJ#2[O+Epcc>AdHQP6nP:hKbd0?n=I(aEMeT_-t[KgW&kIFuG3LBS:IE]rFK8i\,h("q'\WtBLi[QYt).]PA[['+hZM.Ke+g:MU4S_^"$?L^Q8q5o4l')@iXg77!+ERR[d/`0,fh)pZYNCBe&Md&k,a1ZYbuT?SLtCq3F_r63;+aKd;uoJE!V5bih>k7EWk/^E>%HN8Yq7tW/o-$O6j:ZJQKb`\Sd"5]!MlUhb,Na/WgBq##N&_Pl'>C]`84><#9o07V_B*qgN4sW(#=ab7CT!qdB/eRKPj5fU0B?8_\'LT\"[*SXlrf-/%QJOME+Ao4W#6)DC4tBB!b?=<[gHbMDC+KAXicu1k#J3bo#_1e[oAYmA8'EC9upOb$2)lr?TDp11IKL%F=U(YJu(Wa.O8R;SSeKa)d>SG^pRBSGp*X^Q3ZJ-KgH5bCnsAT9u6ZNIsI9V/gbc'[;F9Yo`L>PTW>+s2&d$e;89.[qaBokZ2dU\eX%YDFM$D%MQDgh26*hoF0QU9t-j$%EYaC`>X!__Ag;a>!B(oXNiB?a6pff4Q)`Y>T_.4JUI:9>Gbs6g[fsF?!]6+#;g9:kQa1e$Wr\sU_maD`>#K8!;0.>G$;\'gHLWnaK;HL^U)=i_ASYDD6(=G,2WlW.PcOq/%8Mb:g$cFa$WWqT+^GgV(_)ue!Tu9<3mgI`ru/Y\s94XH5_.SeJ7B%]7]3/l&C?lU?%N>!OZ9]]:mk[Y5lIZJ6l])Lu=nB)mn3_k=sW#Dg*Zncfr^OCC9]kYV_!L;e`FP'[odgWk^TmI$3(+`@A$D?DnmGB^+]]7e0tT;-N/rAg,HS+;I7SVS;O6_0X/s*G?k0d#K=V-D?LkZ2dU\eX%YDT*S0\eX%YDT25Yh'sDU(#=ab7CT!qdB2V5bX%q,dB2V59`NJA_P(2]XbPk:V)ik_[5WWka=Ks=C4(=;d&m.W=Dh]MUfG@Aj=NBc$p4=bl@$<:4se8Aft"fB[H&2'/\.1B7K:lQ\**jP4r:o!DKVUMa]^/3&*:_]2&mPET?Y>#E32%&*"Qkgmt!m,%"b[WT[%kG%pnW<]O`T'DG8W^*7H:'."P"$!BSO?W)QHp(>f:-ZNWCN5*.EH[H?h3DPa8WY;Gh.Me$BuoEW-l;B9MNAAXJ+dt_2M8XJrM6FW[ndB2V5F=Xp;h2:G(h.f/r/%QI:@-CWS6ardodB2V5F=Xp;h2:G(h.f/r/%QI:@-CWS6ardo%G.^gIe@j10KifG4q5]cE"9b3k]?7@W,(T5eS-Mu9cFq8$Q>lOl@oV(cF`tp_BRY@[p`B(?E#kW+J0!5C\emV#O8/g#-!s7cl7&!VDGiH:=?@olD@?j]p7Kq$AB+c>D4ja[ouV=U@PT^9LVFl+/h<(nujP#;Y^]c+/sWl7:)*\q36afi;+shT62W:ae/Nm,];T5LBS:b6E4Zjbod62*n3RI6;Wc'^Erl5j;[624nX4!\_=^#5H.N:P&Q/>Q4b8C\iPUp34Q$&?('e./*MS(^H,5&OB19Rp[,3pTJ1G>`KVoD[[.b@X;W9=J-68`.]R]=+[4L``B_'bV;WC(Ec-A]_9JD"T<7pU6nZ3O@>be8*>A26?GkCBulapJo0M2^Z!X7S1AH0*s")k(!q-.IjQ/IcLK^h]?'=#8HDqm\icHkRcKbr[TXfZZie7oL7USL,SPNQR?`.]CoU%XdUd:jKg+tQDp&*R,*UH=0&m7kDFM%/>LBS:'^F[GDr%[E]`[4UM5A%M\%A5Y%9/o?2J?(.Ko0u<^4('K,D6V1L$k#OEekNF^^*U7h]l-HZD<;sI^IdirO@2o&/M[ZM(0-4#:O@NKc(#=ab7CT!qdB2V5%qb$+F=ZaGmf0.g0aEDMeMD:t\eX%YDFM%/>LBPobgcBfZr'aB"A';$4ZM's8G$'m&B0aQbWA+E:r?Aplj&()2N5!JcG$H*s/`Im?=1=%+n6a^aC1L)!kgk+B^D603<;p.a$S&Feqe&mBVBRD#U`s$Hs.:deW-hA%(FjGW.F15X]V8;)O_rrddEnX<8%_X\,(3-Wf45JQIoDJ2jQ!gU\LecA1qk3W+IFa]\[EndkEMW?n\AaKrI@"c]AajN0!WmK0:tJWSme=-qm_Eblkh7,KkJYhApLBS:]%$eS>LBP_*P,61F=XrQOPHiCSp]Ju=@nfE4QWo@/G\Xt5s/9PX3'Y+@O5"Znqtp`S8i*f#QF>8O+XWbo,kg3rp1"8^7,A"qm.r-\_&h8`5A2JX#i=\l09\l_O&"I*r=rq_<,&FXt#jpr`/(7.O%]=XR_b$G?&08oIm5cpWe8eLg0hUar;i!WVfkVk`UIbb$K1B6n:pLd2:.Oo`##nj%A'DqZ7o%h),#;fm.]j=e'Wm+gTLBS:]j1gBFg_=P>B[`>tSIS^Jr7Q7.Br[5@[X:O`P>IJ"Tlh8t5EXZT_B/V3Rg",LqJD;P2u56$u-^E7k.XR,)#4;X.910E85p]Q:%JB51FM)SU>_3T8%?u`d[UaI_^'Yqf^'$(fGJ:"NpbcokpMBT$g7TB!mb,8bVK0C+%Q``jt.WVaeDY6k+?fNB'P'u?qWU_3FbNC[-,KRQ[q_#!#Q5r#;5IkX=D%L_<(Nc5i+J7o2"?a*9Ao".Cl88gf_dqLCLp%MCbhcn]DbD[p0l.5BSS@d]q3=t<[4K[>\NhM11'W\3N.\3h1s9:MXLamt?d#&f\!$%Kfs':.Y^O)0=f1G6Q.R^N%aZ(.5c)g/or=)9fqLBS:LBS:8d2RXS7CU]3\"[(9)Z>e\=6N\,/%X8Nf3=N?i3DGuJ=4Z6c\Bd$7^7m)c'"fGk*XoIK6^lM#NkGTp+FCu`54tZ"D?RBJ=4ZVc^'XknbEWd'5sp(K#2GlJ96X%odgrLNIlPU#OYM=Ac^^;S7/sn$kBRRBh)`+7Ac_5Ub&N^W,/H7X!CY&[;Q\__r_aOaA8Kl:4h7.?NY-Ec\]im\kqPNN1dEEtc'T#puf["n@FP:huM-@XJqB0#k`[fE)m1R0M?/!CgtH_2W5o5ZZmcKNt*.RI18p]/im\I>Y(Fi3b-J9Y[t?-MDKR4k;;.;fY(:u?!922-L+\st"35OME$"+\Z8hK`%2XF\UQ;PCXuAoD'-=/2qAan,uFg3-;2Zh.im^>LBR5(V8-/UMIgkU2_HdU0F2Rd&lM4_f`"MT=Y(Mf(*3rXT0^"nilR`R"uQ+eA2fB?T_glY&uN4cRT>m?nrk.n67HRKOS36UL6ALT."L28='VYL8sL^C)W&T7"DdIWL*j2X)NgTSfnog&#KQ,FueE7hT*j=(F=\BU:Q#i$g/HQ:qg,WP#3>3@8G%X.X=:6.>MBc;#-Sb"X"*YZK!p=H71tYG4Vb30jff^LXm7f.qp$Z"9j,OB\gfYAJnU%kQQ%isL,qV36U;SPM)qC::tD8d8D+$Ugu:,ob?L#*=OcDnl6'puq!#0JbKmf%2iHT"*V(*h!?T9t[EijRj46J`&5V)[_jd*%sF67Or9h$"t2.KR+\cOA"!oRfS[A2.&UYB@MoqC<2,)F*k>_?1Wh9^1iJ@SY]N%dpZK^-j$L$S&IX\ZE\_Ao"'*p5*^#J?5E+PuF/V"X%\/DhWAgpR.VE!A1biJgl$#<9S5-!BL`Ikk2a6:@\lSG2&WF[i/.TTptDtY4fcBSL/.FlK"]tqE7?J(%ZoBpJ;LOV&F@^rDXP"We<)nen"q]F5@m.?ik^aKnubSg7FnE[.l*N?8k%Y#s-O\T?.)7'A"GAfpBPpsVd%QNkZ2dU\eX$n5F?>2[N^]&\"[)tMU8Kh^#Jld&mU@ia=DiVp"!"ZS9TB1e6S+0gfR1$>B`_eQTL,[+E4Aj#q3j:e#gJ)Qj$.[b1,GKB-L.m!8oJ$a[M*D$T>'=OImoj8$W=#sOH5`Yh.hRa\dGmSE^1Zq=a/?*#ggb)=\[hc(6C,a4'`K?%c/cp[k=h$!mrX3e]GeF?_UNJ:n]N'ha,`^J116YC*$>H-4n;Q>gIq:V?.aL"Tj``DFIoX4>%j#%;r43SJc(FQcbI/%QJOMJbklP0g>VB]rK=X&BeF(#=ab7CT!qdB2V5F=Xp;hUXlrf-/%X9Yh5X:cJ04^U$1R<#pVG=^?NJJ$SpgPmGjb8!_6XqB<*VX.>W\Hh%(_?5)OieJFR'H_iA0>7\2B;6T=.fln!\lC^WG:R9]d:[.hmFGnmqMit=>R\LQS"&.tc8.]"!9@(*.dHbbP1k>s1Z6:?O!P(TIB7]8E%[a*u!Wu=QdqW)0RG7m"X-3SWXU,#i2LnkZ6k+F=Xp;h26)=[sHCf\"[*SXU_\*=jBeN",qMJbklU0H$I*jj:rkZ5T@X$RDoZ9HsA%?_I(Mc@Xsl*B8HWVBFca!#RRC'/FB'-=LLpU,VI[9dF+WgF,`@4V7.OXepI[T!;'@NNSr5dq)UDKR;c*?9K&U2Q,Gk?1rEK3U#>AF5O&+(&#nrUl(VEdSdMC8I+lLX$=W"#=R'\&r5"i15(0!n1k9c0[P?Q4+m?B=eM=Wl\bYZb$C@eN0Y\)aO,D?jGSY+6jMB\J$#FIT6.9q+>[9"V]G67^_9LAB=^?ibH(G>\aE6KeM&n:EIKKn:=+/]l/.gSMouk/'p]uuXaKGgNh=lPO#bkPNXlrf-X&Iq!F=Xp;hLBS:I2rGk&2N_$_',?@)!5nFC@5Ji1&4(9*[SO.%oeop>pZYAW^s_cpq"6F)i$UbA"XA3uTMR4mV.^Pobf@NEc6epG(^2-6\kZj;Uj_;9(74j+J,Dg@]b(@W[5_iDVQ:o9;C_7-.h6V*V1e<;]`.a2E9Y'F5VR%UUP,`K3n%uC%t;*p$:h-kkYqJK3\:IQ[K6C(DuToepH,k#e%aT;PLH"/H[>uK0)/+8Xb(4CeV2CaJ^3lsaFZ"S__V?4'V)JCs2T\gA>Kt\BR.'ktSm:cJ__,FjTsXlrf-.rp-4>P/E\l9P^3MJbkl3n,J>Fjo`[)e&O>=GtBQa^MDQHdG2KX.PV='Q;6Bf8[>5JIJAhAup1f)iLW!Od2e^p;ZXNmHJKg]6#t"l?cIo'jMFpg\_EA0R?$fnQ2)k@2m+B%sEfa(]K>6^p%)J+^07t?2dK!',Sd'mR$f&;,#"5,DV@1nB]McZ>5c&:LEmCSG1OTU):bJ2EA$#gpk;L-8_BrBPhZ/e8D,;]C5bpli[T^ICp=M3lK<[]p?N?La6?ufgCOfA2"6r>bLbhYQ%fXsEYVadXcitBIACRnboN1J2n9TsZ\"[*SX\P@FcJhuU0H$IkZ2f+#;($J\eX&dZoQ3QXV]fnBBWCZ3-6[^(#=ab7CRTi6FW[n*QP;C(?EV\nEZDnJ5"YcWL+f4[PY>D5GR3q;iF0Y`qjT!Yo'n]LH#j]o:AQNcDLgF1";i66!$>O=#4o/_?ts-k>^CSqN/an=3TeHhZf&jR7<%qr!graj%STZ:J[rm.0K#*qPLJ8oG%q[AbU(("kUMsjh?"dI3"'>q2So$]cf;dQ#k$JM"Z$fR@!69$bY7lGqp#X)3jK!&kB=YKO4M+jj>OOId6*ecf`lKi6&7.i^nl6FJ^d?HYg:AQVg#rC`0QI!NN&ldTBT)>mdEW\r6,pYR+VTUdi2]m@'8:s[^Da;QIHU3b&cM4H,p="R6!4!;78"Oc3O[__l8!n8`;i6&5Ql:^H69-8\!UBV^GjgnIdBp9Vl1V"!sAfKqqah+\XjAPhP/6O*`;gD80+5(2aH="@^kZ2dU\eVb?d&hVKDKXMt\"[*SXlrf-/%V"!DFM%/>ESdbh5Y,ONrbT[^3]l;eCjEb1=ajaik+]!gDrZ6mV*3+-6+&*Wm]a'tN'Y&7Ao+NJ#up'N>.Q%T)0iFu5O<*nEF^"radk**4f%9X]ZY>%Xc6MY*A8R@.]JC9X='o=h#/PmAq[c`uOi8fYd9f0ME("td7_Ge;G^J3$J;d#pP:m0ml_[i9"8R2BXlCIY\kVii$T&;/4T;ZUn:1J[A"ZtAJO82t\$!]co_8o`RG7pCdnht5A>i/#e2$6(T1)cVPk`)JQ(;e]\"[*SXlrf-/*LBS:)7n@\6ao,B%WYnA7CO0hFK5WiF=Xp;h26)=\"[*_cd8eSSY$R\(UUSjjc0JTlf$+?-oXdP2B4M0nFEJ@Xgg1)X[oU>ta?"S/h$*<-M][NEhO=aoDQeZH\!FkTCMQ,c,@Gn8%G\M%!i@/3Q"%$6Flrp)p:LL0#rp1XFV>B,2gbK2/kW:eM=XW.h6HX/:oC=f>+e0;=Mt'gYgB%2'A6IX%Peh6D)+&I6Ki@3t?/aLk1[`8bS:DS"AC8oA`$0QY4+Gcb0kGJ*($Uq5J6qGe0C=T6^a`/!liT"2+H^oAIc4Dh-aCn0RS?;t#:p55o>:jb9&:HdB>2IeVW%i6CFk")kmF!Vjq2=2DtK9lNUBrFu`lcK.?ud0;As#Q(IsU=mq2)n<&3rl[l-72HD+V;EEUfg,L&@%"/"()BRt44=2]DQJ@VAdnn'L:6'U=IX/s5\_H5R4hlo"6d-Pj>_LBS:i_?]k0YWtXV7[2s>-`#r1_f_SQCCnW9MUQKR>)`%`Y^PGhm6&=6IAm>bfuD<_fC=8WnDL1ki`j3PmUoJ@2`*\71e5gcNS3adecFu@R0sZOa7H\=m'o2(>Xjc7CP:$>W"/%QJOW_Kss>LBS:<^U#.V2fisPrF5-[=PE^1)rsGJ;2k]7Y#]WZjt)?`cPH^D_sa8SH:>3305Fu7ahG0*@K`jno<-aJ`D&!=I<\\^ic\jRT@UQJ6QlB[V,IW[m#B1q5@mH+'Sco[IX,?&Dq2I('rTXC_P]S^I%hDqhl6QAl_0lD?>*,)GQi;A-Z5&#NY.jf*':E-1K2uhZRks1fTJq:eNU`Q;_1*/dltfK.8WdPXk0kQ)mTVIC`&g;<^q!Q1O98K7n,2\"[*SXlrf-/#HtCLBRa%]3IXXlrf-/%QJOMJgCTKl0>g)PeKt/%QJOWp='((#=abF_nOeJeroX&X;SkW&.1E2X6sbBI[gpY5;2`f!$lW)BVbc@=aS2qBWtWCk,1.k>s35,HT,oG&R]>D76dp-7F0Q32hM'AU76!8`$;"ADP9Ja&R?&BZ9.qVc#T?'X#@%b5:X[!g[m`nScGY@#-R!M:6n-gB)jrcqG"n$Co9NFP6HAiMaWs"c^>9,J@/%QJOMJbklU0B?86ardo%8mbK(#=abeTES%MJbklU0H$IkZ2dUVCQa=]%%o,Tj,pHkZ1soe#hh7FK8i\eT3BM"M']W;`6n<;H)(nasP161f'4W!+\`FTQ%tF0!i--8J"eYe<*s(WY%mBh^O=lcFMH-:3!IC""oO95[ho_3XO=qJZEd@`h48]meJ8Q)3h!b;gY[I:^XCH;&_gBuqe?&pWoor3>a!"4^1i,g$/I9'Bh+ERec#uS<(Rg)E^aE11ka9K1:FK9bN;r^pLnR,T+j!-WNINk/Ig'*J)#Ai,u]o&N`^>U=&)FH$Zr7;pd%CW_9TNJ:H@)m`(hC9:4!Rl"=S4AlBRjoTUd78#df+,j',Vl[I6rEr:6uWIDeKI;hU0H$IkZ2dU\eW[MFK>@mkZ/d(&@rV4MJgse0\qV(7CT!qdB2V5F=X4=FK>@mkZ/d(&@rV4MJgse0\qV(7CO2$>1OSa&Ya[^$ooCKhZZ@sD24n\"I,a*\K1*E`^@q=$"?uVE(AR7ZrsZis[_Yu\Y(&BOZCR837#Wdu>h@u:?K%+*1(_%;&lAtU_!j'Ai+ESZm+:r(i!`d@!ZHKn1Q"+e#e5n*%"<.IEk3hU0H$IkZ2dU\eX&dCo'o2#H9f@Wb;4UXlrf-/%Sa\d&m/"DFM%/>LBS:'H(#],%Q73B&/Wc[0%NpC786WB6/q-HoOHJ$26`ArK0ObY1LN@K#$4<,_,nAM/b#ZFp^1-\.tCDXr#)`Q.*5+Bku7Lc5kdihJ$_s3fl+8UoIgEH4f3GA^E.[5dq)UDUl(FqIIB)3-#DL.PbVYU8gCi*i+J*$qX1ICrZXi]6TK1Q%3_ZJ8Feh]ibJt\d*-0(^&1sK.Yk?#.KZZRDAE10Nb[X827P218%mX^rCO5`&G-@E\%6-[g@YA8>^QF22\b5>%LXOP/N_MJbklU0H$IkZ2=NF=Xp;h26)=\"[)t[a;/?dsR[o+sZ.VZJ'!WhKorMWNY4M!e<)7--t(&&phTW6@I%_6HB3X<^C\[bK'tN_c`tr'%0.<=mh9!r\MJc3O*#mGrh',-p5Bh5c*576OV8O4K%U\mL:,OId"Te9lFfib0sM$3UEb1eD$lEm6JfH$'D>66BZ0J*)9BGapF"2fb^n\E)'L%_^JY7Z$kD"jbk_@5sQ,1VuV_Y0nXn7D4iYrs?e$D?K?iYI;G./te?3r&Mf+/q)?:q'E=a)>ETosf6VmbW;A?lUn'bbge)q\a1Um#B:j-j.K6U%HOINRD2;^umirh3QDXlrf-/%QJOl:ctN7CT!qdB2V5FK8=Q\eX%YDFM%/>LBRuFQcbI/%QJOMJbkl3[LJ(dB//h<_rYi2))dB!4,m@71%1T'u@aVWLM.2_;(?rAe?S1Qb_rk%P2GY_07!?^\C!1._o>,k9;i@+k0XmVYdUL)AAe?RDk10oJ@AaH!XXY%#_H+tFUt\hUC0okCJ5G.mOd_;*7mP.tr%:RM$Kj]u/)=a30kHo?4tJ'\A;';jSmtM+Cs)u$lWI'*)aMtP2%?26h'+N](J#@+?-m/3BA3o02X=acC(*M*&[8sV%1ZGIFk,Tp(6J?(@bV+7"W(G>?l@0`V1D7djkR^"`gOL'LVu4HT1.EiXhJooRb'HdhrJKrCDN>JPD%i2G1e`JO\^QaVH\[t314^"*=oWfNC]FZlCan34@IM#<<5\-IB\d&lM4F=Xp;h26)m(.5R*>LBS:OPttgHF6S%/W`"(W#0Y!DLP?i6KgrkWIFh;To0Q1EY#M$e4(2NWtI'4m9OeUbH+U[Q]'YV`Z=TF7?"#%HY/ZLoO.J*,7YQXLD(`r8R!&:q+=+H\*D(_oGu"f1Z+\(n=Kq=hP-k9/6S013F]UFY"&fM^FPNK[/radqd]G.C/9GO9b>6k&tXh5!b%5kVo0\G7*0+J*9pT/%QJOMJbkl3fB\9dB2V5F=Xp;hLBS:QO87\(!ZpFg@e^28+Nk3ZN;,Ij#OE_Nq\H;9H(WU_GbEYMTXjM@n3.>"t;$YhO0lu&/?XCb)kQ9d15P!5k1H.Y'p10l#82@UVLc`R=PMC#$W$l?HJ"$!Fk]QOsi`\V"?2@Y6[+4Qae5g@g)/FoR"%%_5a5oXLPm;NU0rh3QDXlrf-/%QJOl3rAaeMD:t]%'VD\"[*SXc=:1(#=ab7CT!qdB1\jkZ0i6\"[(9-$1ZK(#A/BTj,pHNoO19@N"5V#5I`;YCXm'gYc6\")^Mii+=586EcLBc`O#HOB8STdY\aK2S0"XbcQJE\aH4Z[gM:!F=W2)S_-t;jm(A,JSgl!ZolKl[#]T^>iij6Y6*DTghYGjlSUtCf)V57"+g[sb"ACj'T`W$Y\ld.*#.YKhaCQV690f2mLMCkKZD&P,u!lrJ[O[R%.oYfGH__rmWI'\de^rqf0edK"X+H/MeA+G3??\-."O]K#O#4I4Fh>"BB<+V'n;S=d(EFsl)[>!*87sZ!di%++E,NLD?AR1"*ps#BRtCZ"WYQ]\0+aqq;@?QPC>iKNKMOOHqM-:-*sK7'p)6p6K`"4lKM+<>e^;$48mJ6k1]P/N_MJdR,d&m"/\"[(I4`i3ceT'A:k,YdPG.-0+abg8qb!,'qfgW2_K2fC\BTVhDeV/*qjP>=C-XQtp;AJ9a=]!>?!So5q#LKRWMu$8orig^S5_ehSXQlCdBd^p.)d(+fNSjLCcf=tL\Hbg$50rrYXS8c9k+F+A(>SPE7;Bm@FuHsE]UACB"E3l"WTXZPg,/$!@qWf6:[D1Y()>9,28X*]uXk#V>B4$'eSA=,!6l9O66I=!IP>djkDGme_+D'8VQ5s:M(/B\[FA+p`f^8%Bm=g,0+<\ZmL3tJ-cQ'qkg(7.=l@Kt\nPV#4(_*dej5Uk"TK1=/b\mo3%m8pj5t\"[*SXiUHmDUftRX*YGieaJ927CO0lF=Xp;hLBS:4XOS5c.tl]1]!gdP)X`C*md7?VQ-V]_YR7O95s$Soh#[OjiJoh>Lu6F:A@i=K[;7k7MtHeK4((H[0#R/J)8@!e$."i(kU,J)OE%$IE,OBSA(7RA3E#Ye3j8/"9]2`c"'E>?a,GQnFJc>l'k@jdGBm+rRKC0;6&Vngct3OY="q<(rQe\(K@Ah26)=[lSXA6FW[ndB/EF\lI)'Xh%7m\'dXQC=B_&e<6FKq#Y.uI^nSHmVbM]eM4KV9B\FNsg'&&3a4+*0VZKn"Q9cj]#&>^_ZWY5'[^PoqUXfX7M@&XH$UVJDq\ur49a?KQ#&^i3#5\8%'j>7HSs\J!4ERWNOYbor,?mFaoT`&Y+O=Fl$e>1gM(C>T#8iFYW)l^?6Spn5gm?n`%O"t,[4'O*IJmNfHQ>6BkUq\09]1$4U4![/=]!815^j:Pc7FI45usVW5A>+-jXCp77CL@RV'<+ub8*19Tj,pHkZ2dU\eX&dS:tk21N]\#'@LBS:=hW]s)$c@/dT"Q!Mj@^C8")se^\kfMEi5LBS:YrKV^m,Ge#ClEc^AsU#$l'Z,kZ2dU\eX%YDFM%/>FiOUXlrf-X$_SY7CT!q*A_df\eX%YDFM%/>FjBmXlrf-X$_SY7CT!q*A_df]%'X4W_f^GQX7?2lBVerQ3WkUO6hC3R5Q`n(GsGLQ;8a@;n*p1koE=A@OGI%+h*gJ$q65SZ[KikkCE1Zl.C*YE9L?9U[CmuXo-8'ML;uBDSA:Em^t[`rq^Ef!Fs_.^tRQRR!`fbjC^7kQrjToLhmXHX&S`GIFK0Y]9VbE5YOf"UY`4@-=$Yn8.Q6el<`O&\CDpfG6W(<:Mj==,\n]p!jZ?N-'ePImj4P5Na;M?F>b"H=q.+dD?J\)1'6ao#+3'/!.OR`B>FGQ31.=`$F2`>+Npj.[q[oTi,utRT958*5Te>uZ9A)iS*oWsDFM%/>LBS:LBS:]P9"^=lQI/\BPmmT.;)"jjBgTj.2M\iXYRFZ5]BW.2CE:ZOtbUa'%3QXB_=0KfrZr7]o@1L"8HdQ"Jc%LC=N9HY!2h,@kDER`am4]R^F.)mEn[Cr+8N[jAW7LIeV#NT=KhVJ9rL.\f:JDd,u>7G`s]%%@4,e"-CqE`*u[i/78h$$^9]gNkDI8'MqA*@^-#)UfLJJr%P;jVD)AO=](&$H(XF'AV6Mk>RB%qi`RV&:EA[bT.NY`JKHmE,*r\5af[!2O"N,jRWNb@q@?MJbkl,52>RLBR5)7gR=MJblN%s4kDTj-?:d&lM4FK6X?DFM%/>9,MA/%X8-ge)1[^NoJRYhV-Mg-1h_@ll:#-u?pc%9TcoW?H26Nd#p$15>jTl_J<d>Gg.Q[)(DE/1?g!5WTk?.NH$"ccEQTDJ+p`-eKSJ9o.l>S]-Ya+>0Jt5jF9TDl!<&=o_[KAipD#[[)2j*p,-<\6t9em"hb2p4/!F4.pUSIEg.2#]M6+u+Ts/pB8Kl2$060M@IeueSj]?3q1K_'7h5TZ$:?55;dD=Dm(o^U_;W'sQiX4[RIA-(JU(]d(#!Ck*F^e\>427R\c3Z*3V*4.e-gII["e!UPoGOg9uVrIDo66<9MdZa+?cDr\%qdg4:o!]HE3X2>P4#f4#.P5IF3]Ae3)sW)n3W:`#AF9hu*qET1LZMIgsIuAF@SK0\\0%o/^#RWjXNt79$')DQ!tE+2=ncD#tU*V+6GWW,L)W>'q.-8s>6o,g\tR\oUPV<$e^lDWSBFd)W8a&OM*6F^_;W[-/,@ZpjK.I(W[oSSA*fZDokI,JfVLqah*;llYF7\pnVJVkJi&"$+,6-,6HN\boMsWN$[D3)1F:c"mF6\NR;@aT\t+HE1TZf6%f,&gdA'+;M:aoQqMSA7;i2jOPk9>oS_r:''$KrPq\s")be9#$,WEJ@=#%O]qNqjZA1*JIE[LfcnU4TZ:=Vi"80ITj,pHkZ2dU\eX&d]S15l\"[(I.l7EP0`a7Gn&i7#09h=K`uLSr,FHP7.VOs@+hQS+uDTZlBAD.I*-U$cen\.i0"'.Vr1ANr%Gn?eh24>M5S-"Ie7.>M2*,VH^QFH=([e"6(r%E>e(/u2%'gjYJ)!Y%?GPE$D#cFITk2;@T!f#?8i0V/dU?DWQ*qOGh8JMf_gki;icCZIuk2EtVj)Jf\eEkal,hgU9@B-*8AL0h&\e.Q*JkPsO1TR7mV68RB^/h%d*)aIQ@;q;Le[I9ljPA7K*YPfjf'alL8\'pY[^Ib'V;]=#$Kg@[@;-L5&SEX"LH$`koIJmUY3!kA4*"BZaK#P)AeeAlDd50=GgQ`&.+d:aMu'c!k4lUsL6-Km\"E^=:bndR,HRAX!gWf:1"<3'$75H9skJ9^\)rM8+i.$8;'re/Hj!Qq6JG`FZ?!7H(eH.s`qH5NG]6Ot&[0bnV6.;gaO:f9.^V'Kl++4@;/^8kgGDU3+\"[*SXlrf-/%X:,$f-\X7CPmRUkG5*"uu.]3_HGfXJ]iA.pW29;bNc_We4cS%-UaNd&hVlO'ATm`2tr;2So7N#5H3Is#651!f=<*E:pV35Wg951"l$OO6a6)9Z)naIA-X:KDDC%\5fM=!4bK@B7a(NW[-KY(/-uEckO#-#:-R_^huK#X'&?ZY5>1ZN3[P+t+7#+S8e3=5V]f"Lch`oDR1t=^G1NjagSKj(2,&+I?2e7=j-.J;*f%d&T%",H3.6-@oC#:P[^t:3b\c/*.sG,nn(8D,;i"^nJma6uH3_YfXXpc]2+]lN+KG"MNUU^`F65J]HspBRF>08>kiK`'CAu#5cJ^^L!8j?@!J=W!/-+$T&cZWW@^k:tLkn=Xk@?Z5P?`g'*,a$JDXhelt^Ihqh"V'-Pq[4no['rpq-]IV`3GMdQ;nQsZ?c4o,cHMJbklU0H$IkZ2f+o,"tQh26)mW6h[1gU0H$IkZ2f+o+nnPh26)mW6h[1g)N%b\b>n&MMf4-e?4B:;.u?#`9b]lE;$+pf'h.dP+=6AC!Q9/%?mXe'c0tSFi0Cc)K@jcOX=$VJ/Q)/n/V)BB4BUIa!',9a;=Q[2"rRcQKTEbY:"4Sj-].5U^rT1`jNBEroi=4C\*>!YXn:?oDKY!iWuuG2"ap4)IgYIq"lf%mE;>J(5\b`gR%=c:CsLM5Y4$WgKXN<',;V0oBE6_2gG3&BW*#o+QD4ao(bUWHjFH?<5"a)LL?hUJ;r3!0<3%X5nuSpgJ8Lc@(7TT@%@Ta,":h+Ko2V2:H_(P/iiD>N(e3'`KQU`2SEd[A;\>HokH"!"oZA1Hq,VN:$f6],B_60EuTOSA$SG7ba^r$omI*pMoEB"E^'g7>P:e$:P:C'@W"T]sre5BXU">(Yeg5R->tOZd*]%?N(uJ_MWq52oULb5mW9!\(M:RNQ]4^[APp1HQ6TdchP0f7@MAJZ+Ym\Zo6Va<8rHeU?/[O5BG62q:M8fX:m6JO?Q'>*#`cbH-?(fG\Fj(3oJ*(I@um(7;j!&+i$;`N=aT;O,9ZRNN5G"?hLrHfeB*#uBr4*8QKi7CT!qdB2V5k:Ld+\eX%YDFM%/>Fe1G91nhe1np_)*IH+X'fAJTI>B4?.o7;$IEo7Bj;!fVsGdo`CN8.YDE7$"c+h5[Kl9WIi+FRa5$VkJUS:(bBNH'7.+fQFF/-FF!tP8nFW(*mh%+Tj.38@GE@/d6'rg;rI,Zo0]adZ4&(WkYm0aTR=tI1H-e,qDS-J%t=jKqtWG\C3RU@;M$>QFIUfeV%%A[CnH4r-+(+<67^fG6U!`;gdirn2QFV$=K[p(b0g'T.hnm$=m'ssMY#`M(B+5?Jqf'CG@-a0#$W2`S<ndO]RR$'s0ZJUER_5GnXl="UNPhI=)<.$_t@)H/\_XQeNr9S;Hg7?GV,_,dE9IeqJ#@!Q2`gq7k>[#HsTc.1WBPZjC)7AEMKa3Zna\!$@HF6oUdgTX#RU0H$IkZ2dU]%)'6h26)=\"[*SXlre5&\8_5MJbklU0H$Ic#t*.-*Lb?1Njm1VJnUa0&K&qS@r%6i@c/G2mtImoBnm%6i7?j$%PS,T*"W!7IM(<]rgZlCC5r9$MRHY0MSt,R(p]O5C%r]a[fZjhSt!;37AF!L\_d`E\h\Wc"W9U_'==1>.X?DZe\;3gXRV'\aamn@L6.9j>Yf'6#Y,\SlCFsJ8b+Rm0Q[u:?1=&Y6e%i,55&*)_XjI9fe5d@:.!_al)aLO_l;=-TF;8&mH5jNmjsAqF/gsdp?o]g#bo:&+]*^$q2V?Y1KB:/a0^9F8_HT_>823_j)NaW2JL[VL=I<7pqYICg#AVG`KPKcZG[J:'trh$qWh]*LHS,*t1&jnDeA[9`t2]EM3F(!rm@5X$h!\QE_N\Q3*Bnsb:!,=S/n8qRq/Et'ZP2aB"ImUCI#b?n8Yj/mZ$lIf/R(i5T[__+1\6#GLfk11mQ'qL>mqZqO9+e^DkIkV;]>gTC)]at"hplQ.N*Fmu_E^BV\YoAIo/&WEgR]=8k7!dS?n-)\h"phu-%_Q&^r=@P.8`)@c(>$@$i\)U%6]!;R\Q]kf4=s]3mXj!Gdf#Ls0f4`"HHt-.u!DV9"2_BFmJcb,.R:"*H:]M'R9)K2=TWJ^'=T1994UWM%!Kl."Kr:g*a06iitWX?.]AA,>2DjRcn5Qc9)rS\HFOu4UJPt$fLlH#acHcJ]X$3&7%hWj[Gf,kT5OLG'oU!_/^g['AWgBYlpF6?NF*c)dmq?"(I1&YW00"/mfM!Z'@-_RpH3?YmcG3$F!<:Gm@#:XajM)%3eG:&6hmY'&\!&?3L_C>9G\j"BXKQ""R"J0R@42gq;onj\cM7o_plg\\/,Vhs\Y72OKqlJLd)-J_jju`>u1qPQEAYs$(jKp)D%tVX=C:^VfL_#6>5M#RhOS$mRHX+:&Sg"rYWmr;2'ka:'g[a>S"GM)/;J,k8g=/^(1G=dJE!Ml^1uWI8,EOeOakC[^*7Hf[c^Y353o50\+dA2d`eNU+BYWigZWWd6^l8^8i7+Il@/S_!E:Do*?uE+ISp>Gdpgj7&E96!m^_LVGooS=J[XPScba/;OUY`+F0!0/p[,jId9388;\ccoC]`Xl$c@:GfTj&WsOTa');rGm&PCO%pPI9S-m-*($K/+tb=99pAfd1\g"3-[M^:'HS->bb,u?e!LBT2X;S94Hmc)(\lo<pKKtS9&02^1Wf^5%6(X<']QJnXHkYcjlf99Oa_j6osY#s9FeP]?,KO"9qZ_BS9I5n\c`_3k7kTdOSr9A:pX0?2]6#"](t./>Na0/*N#CZ9$"J!5%UGM'#Hj"E^qn1p/5LV^V01Qr_3%BcT_HlOd!,"@3-t9*8>N.L/05%:X3/McWi)H]<^T%K@/S.apkSnHI;ips+1QXX&f&%d+<=QS2hG5\#0J$krf'-n)"RL*7t?g*BjI`mbJ=I+5@7t^UF:bgUeDp4ELYsIuhX`0UF6kkG]^JeGGA&'XG5*3DfcSRbTEcJ*3=:*+m0>#"p4C"GHU7-"O26P!4eQH6DU7`2Tmbiu?QV8=q`So0B-0+AD\"h5k>Q>sk90!Cqbb/#?/Xf&IA$>M+`R)#6#bi)@F4W1-fF'JhLNKELNagC-]T/O#QY*:*jL5<8cs*P2aZo[4Lokl'Q"_O_..lrFn:hJ.LW!SeO+%UOGBAT6+=bAuEZd)).!2%+nVUPA9rf.;Oi^A?UVRTVLg/%Lr#8o>raP$<'5jAp:O\WtrBDC)c,8*!]k/%Lr#8o>ralF+d9jAp:O\WtrBDUjcgXlNO-I=jZ`;Q1Kmd!Hc!m5o*R!sa.uJ:kP5^k(@k@"7&OYcl!Ab)a$`SY]/AR!@WL*[%iqtYYU12(aps^"%lFp[$1tI)>Q*;jC\I2LS?@'.[=THa%mj;"dY$c:b!a+;UHm\6'Ve_Trb-1]:F0_^)Tb!R/lR@@NbeFb>l0pddhg.O&BsK_!\(I4p"jJipmuTZ*\mK"PCT+iZ]cdkJ:&>+^e_:?p5X9YQ,GO".jjL1H>$k$#j>Q7DNJn+`>8sB/*`nF)s.QYHHlNXG'mV>,qE?l7R?TCYp2X7rBW^P$?&1jAp<%DN!:BDC)cT>KO#.raP$?&1jAt(P\WtrBDC)cT>KO#$&\41^WYr9<-IX(Y:Bk@l5U=#K-<'LYRTafD6)6-]NA+?GMZK6VcQn[F?]A`6%`Fj3FnMbeqAQfVN`uK'!#9hs5qG#$P,T=\8u=j7R/h9.b/g]bLL7X$PjIes]k_$UGqdc5!P\<#^B5\_f>7!l*<_QnGJN0]4og_e0bBlq$(/:+,#_uZ.P_#KNiC*E_"(q.fXLTn+;,\"Z03$l)BT$Ej*-Gd+>Prg7)@C6'SoFX#"1o^mZn<@JuQks'gs7@?uk6b?nnC>iug*3#%CLC&=o6kQd2-,ObjAU[?cUEDH9"lm(qK?2[n\9@cW3.:9U\:&W>SG;:j\9@R$i.-bU`^+l4:J?:P,\BFF4(W0l2W-hMG?jc`5U9`Pl4.4nZ<:Ya.#:>?_:3K-h]oFS\U^XZ]4E=e7R6d&PICPtgXO.n&<5HG/7EX84dtPghDf/<(Z!,nERbn2NT4Y(K@AubU9PD'V(t;R<>i>Iop@\CQ\rs"JP^t``Agq#KI;WAX6q/ehLk";9dS"4L@&U%EC/X@t(!'>D0O9^6d>]p]am(Wt+kNBXr[:,/e8V?,NJ9*kT_"d[M\2n^@g`F$/HMLeYe9%8mVWfn[:P$?&1`#9l0$B*\S9k%$4\Q-8'>LeYe9%8mVWfn[:P$9g,NQWYW-FoiU\0G<#ORGFdjld6TI.r#5@U%t>$(F,Su!\P$=EV?egH?3$M`PiprI_R+pCdV$Em((Up_#Oh)*(OU%EAb.FF==Ac)cFgjo=^91&.XogQ9&_j7KTjX]8e5PZb\r:4GR3B77`(eE#rpndnd?[N"cT:Gtq4-+uiger[Y6iQa[mB%bF$B*\3DC)dW49t-%HHE:h6uKCZO^#4&\Q+:'X[F2NXZAF^/%Lr#Wq.4+>O*TEWY2kmRRD&D2WRmJ,.A2-+LgXoaK=N(c+$b9R0JdA'"kr$)bA:f6$.D_,\@fWP"]LSWm$(YHHH=t-G+kSAcWl9FWSK\.53P6#NSpNO^!Np8l[RTMt?,G?&(_AIgZ,3a_/HSF6Wng6IBH#"JnpY_/R'd0=A#Wl4='KO!%WJ@IM!"^%>*h4$62+2%i"0t+>Oo;'l@&XM=!?MW!?"V:OihNc[]%RMc(FQ5-DA`T:,prc^b9nC^Jn02?@-3j"55aG6j`:n0BE3K:RqaK#O:7OI'7l,>P3N\WtrBDC*jO\Q*5%i>IeJ.RW:n@c.;GnnraoMVA07\mXA)O7LGntA1EV8=&YV]\eB6m=)MU*IO.2Hr3WK7Q;'in/&^t:cW=Ngm8.MQoRa08l]Rj_'c<]tLf[g:-s/77K[\a2XJD@r,VA$m^da48$7:HkBSf8#,HL`Nb!X?4PeF.g%UpE%&Bat#mH'DYTV2T*t['"EC1(rXEA_;R`d5g_c=hqN2dPe5A`%Ge[ApY43l-kucT"Y:Kp26?5s"l(jq49TipH5F6"q'GP,CKl=-](1q29-7a&L8G\GE@hYag@ZL8g#qKFY)S&/pcMs-Q^>&/12(MB>ErC(@8h&seONTki4#>6'lraP$?&1jAp,Sge)J7,.@p3p?k\;.kRkmq4DKXl`*e:GUtE.5e^&MK#_36hFY8*&b)KZbnWLubMPcK!&u70#.L*bHNA)EEF?tl.O2F&*_pE/&%D(1=tG4%6GT0O4p"YqDM.ue_,Fb*Hp>\`(-o8,-:hG^"f:=!7T%[?+^/"'TE7C&9c9Cl:_>fa$t]1TC;J3P\=jo]kjjYHo6H2/:-7PR%>^gjYR_"&2+YB#]pc^,0S#EL=YbQmoPnB=qqV8WKac=K:MFqLsJ8on-3SBlc7EXRMR@K:0u2[@ta9/@kJETnh&oXh$;;D&2trV8=4]J]t[B(M\&?n<*#bi])N=3lG<3u^gKo:XlnbPuu$2I3j&I1L@[fTu(FYY23if^aal!\!09TK&8CQTdG?Gf&,#>9KP@"B/Ak6+QFF$-L65\?7W,U\O^#r0jAp:O\WtsM*KaRJX]j^bn`2OZp?jQK:ChfK>&GK[Ft;#/Bn,No04Y+>MC(d6>4sRF+_()Ip/b[nTgTT2F[U+MY5fk!GYsg`.\903b)tJZ130Fq.?uE%l`KqjCAXHG^/+g+KbE=l".N(F6S%9f4Ylh^ck;]0E9gf.Bgjn@5WpLJ]2);=$F4rr3Zlc/1@^c.Bed^Y(/;k^Gq-'cO+:Uo75/XdW4C(ULIAreU'VjHd#^ESntn%pFH!=N>"9kUdJf^;7:M^VAi1ogWgF[usrQL>8e8jAo8*[p"^2XlNMJDC)cT>KO"u3H?X\Q/&AojAtpt\#L@WeQP@Y-+2iT)e1B7`D't]RaK8in5%&hW-$/Z\0XJ"9iCqQ&I/\[%5^IS`bUmGCXQ-S+*s\R);kWLm=b#QcF2mSE+t/Kcqb[,*3FDg3*.eN!VViFcS`2eBTgAe1qXstO][U!]3:8,l*YY>5qLDr="EH*&HXgkF9QilJH(#O?kQ]MkS4p6+Q*olDS^;o'^."?i?hn:\hE``:N\,-LnBAN3Wnh0fYGJ:9e\0fS0WQ5To="0iD:6dK&LQ$NQ7IdVZU9$f?033!b5=g1j<9XJAKC5J7hc=mUju!m&om=9KB+@fs$("h],H`rmf1(KO#.4W3sj>;*kgFa&,c@bmc%O@qgN((Nl@P^$+R*L.-nQ$5%QsaPYC]uR'B%&@rArU-c;*l]j'MkU\OH#`#9F$0/Y@M(9[Cq6hu<$Si5m?r$M^ZHAe%d>`1#;d[(PXph!!6Uc=X+HOR0@QhliiJAAHEK!+LeA0go>+:09m>IfsI17;d>od"r%%bIl3e.Z""]R`_'@:8p%Leb[@hWfBreBb\(`&nkq-53^n_AH'"Xnn`7!Rp#JL2Pp@W?SK>#=A@ul*Wg`2jf%t*>E&4oV!So?6D!;*.fGREpQd9$a?O%IWKYscAu/>2Ct#q?.p*8mtS@luaVNhHH1*\9[[%ltf&i/igq0Rm`.(Fr;=N:n0hqdZOF,(GS,U'jk[C!D*[HqZ([JVa"gOm4J+URsE)lp3j,I`h?afXW)E\"\#QUPfBE9('c;kB"d\r^6a>:j]F*gBm:4`W'`Q/"uL-+B%AF]md+%7bIET4m-.ZWq5p4Gk0u5t'q#(IOj"/M7:mPrS\X`>$B3!f^a"ni%3.Q\*rMYV57#7QC%02RO+U),Dh-5;#(5qk?O)!l/cks!A1@a(s6AKm'Bf8/k8sC"\20NU%mTbI37)^dn3!J&R=O?"\=JulD/[a.!)-+>gQ@#$LLn9+1D`>$R/q?/Wf^Lc%I9Ulpg#&Xl85tZr*-&[miARGn<`VX1OjAaNk4ok6:cCU>E"[=5;ffZP2jG7euJ:o(e9CIpm"HG(1Z`09*s:prh``]NSI-D-+B%AafXW)>o'tN_i\0*F*ZJDN0),_WpZ$S.A%KgQ/"uL-+B%AafW-*EiXp>[p%tc['pkqO]tiA-+?c91NG"VG`_Q$cY2/$"BWWB?skOYmHnTi+:YIk(&a^.*#hCD?NBV,)K9*-XXYR)WZ",!@QVn<]Ld+d3D7!M&L=/n5HqN[=pHXe9`@%Q4*Ij5@'r-X=,48;Igicj$6)-K/%Lr#8o>raP$<'3=Eh;U]ocO$7H@Kb;'*8JebFl^>HMu-))SG_)/o^V]#$ea'#$49W/)[SR,6:m6UcO`\YnNeF-B\gH5JNBbQYsdXVnH`Z/+7ikqCZ"T(N2c.s&^1E)9W/i^%Ht8,\]cQCLACtNhi>IebCFW>XX[^YiYmoq8dTp_Xha&QCi9pR>fI-QN,::do+B86b;hgM_?67n`P2&DQ2_E@PN%/lDflRS%Y-./cT8dq,L^)VChg]i=h(BHcWUZH6]n^>KO#.KO"u-upiKTQIfo/@lOgl6!_bnrEe.fmrQ:4`*tg<)a)]5[NsXM!lc&?nieqg5nnSW:?J!HSWj']%(FkA^E*mfre!='jfD;U\^qsk]>+.!ss-7L*IgOsAXf?E*iAb?Sfl>oUE;5.B?a]NH8@.eeB._G6C:T%Hr$>Gu^P.[*Y8+J?_Jc\a[eO>rZ-6G+ppfa\aK=N(E\"\cge)J7XcZi,j]6CP[j=EdjAo9MKtidT.A%KgQ/"uL-+B%AafW-3EiZ_*8oEb!KLgdOWbSm0=)ohQ1F'Al>IE%arpndTi8jP63&-p+-\l14f:jIJiIKt?@c5m8"IpBjJhu"gi7Ph)TST-W%QJnh!npqTR#tX5;qGL:gs@<+I]abuE;X\(3NO\s`1KI2&d(PB>+['2ZAOcF>_5O'*>BJ!fXOqXG?bO!q/A3#hASWFY087/ah-LqU@l15:7pfZsFI]k7FUXp<@a7/8@RaGY]1`7'oMhXQa)MJTBIgkZ242q5iK>4S+fCI_dfCG]gf?8*k_0l4W9CVsQiHNgP0;UFE/%Lr#WoK1FafXW)c,J:?DRCb!P$?&1WXTS1DRFS9^GoC3\WtrBDUiaJXlNN'X6/F-0"5#I>KO#.`FjG?i3Dr6@3EEN'j`rGPokY0?Mb^5`_,IV@]V9o>qmlMSC*E.JYXI$f8a3Q/&t0sst.`//jnI!'g^=MYB2*L:[QT+\dP>LhWJrh<#uO^#r0jAo9B>HL>:jAseT[p#EFXd8$KE\"\cge)Ilp5rS$XlNM_OB\hUFlZTR,.CaJaK:che1#t>T=!(0239^%5HNI'D9`),oWgZGLl*BQBeFDJSN<`LBRC4##BE\"\cge)I\Zmp)H\Q)SoXmDGIF;k)Rl0#n/Ie,e^Qd9LQs7P_*j!F3E1Rl36T6WHTfp7Ias+*LV('MT6(QWH2mL0``Lj>a$Sq7SQ;:b6=G/g_HhP'nechgR]Xu;Ru$7df;`a<.ibpY\<4S:LCAfBdP$?&1`&]'NWYW-F]Ai!Wga0Fm>KO"[Vf^W;`SY@CW,aE!ebVdR-+@WG>OeH&J,7LLV(LH;VUr8/(LDMG@*;d4`@]i[VCc#32at4Hd[&M$VCc^'D[!fE2L'65>N"T,o3b^g!$etQN81H/YRC4cV-EI,D]BqFl_f-r;2lJ,;BA%+ouD1-LglYJ!h?[a35-p=:&'Jp>:dbD;p-IR%d#BE\X#m1I_U6+o"/QTI]Cup(%h#ZaBcN31R<3KoR;bS8o>ra''k2*WbUTqD3*Ie8T#i`P$<'J"b#H4SK,2*ge)H1ed&`ce]=lH*kBgage)H1\*DlYqT,d"3H?X\i>I_[2a$*4)0A6nNBd\&9!BZSH-L](B)o/Q3F7E4bG0Ck-K3oNV+?CO]s:#(:f^9DNS/24`W'`3KrV&[N"Ni]`;MQZ623!&"(IiPNT(K\lCkX#'-ceaK6A@D]_/fGRY&)m4N;8Okq^$00ppIa/ap*YD/cB[k=oZRFPdQP,WpPpQafSb+kO[\^@aW8Kb^=jCdgH2Sc^kBSnPcDHOBY^SDUi\m]SW\!6Bk*eX#(APlF^$j\V-iu9'u.E/^=m]?*sJTE\"\cge+XaEiU[P>I>u%.qSZ([o1dD`#>DH/!'X*-pLV6#1-)AM4=JNb^(?CL"!3uW#NQ3r$_Jr$[^RX*0@q,pJ*$5IO=^Sd/m%`fB?m(Nrl1:/IDJQ;DV_XNqYfQ:]eg=`df@51i,g!WM:kG8T>&9\4e&RfmW:N?e.]^:[+1&+C?[M>Ws:"b6'sr?WbMRShRc]J9quf-,:-o>Wlb5H:koU"ShSs[jU*`fj.p=-F7quYO6H-b^$uYQ8IZ'Q'#9"MP;Lkk:b?YKe/TMQ5qA]0alV;fk^]Mo#2>kn)&QoAnJB"::-B?K'A[,ONj'+_I=#ElH@ca0>.&m\C*SIpsJtm`?M6o?IJDa>d_?/%G"us0b:d0G-M>JX&J16!fjNR+pI%.Q'#9"MP;Lkkqr>@`fJ%l-spDaA:qRu?Mfsq:UcpNkEO$D;*Ie;Zm!nu4ZMZ_moDgiXa:.@N#R0):Bc?I'6?i1NrHL`n[>:>#8@MZ>_<=S9^oLqMj-4:Hm!UPE%B.njooi?VYafR$;[o*o/;3]@_ge)H1[ust;XlNN?U*tnn1`s8nge)H1[ust;XV=3$'Lc_"E\"\#9AD"cb^ee"eh4S8+f?o"#NTDSNgJ8P)NUL+..GJ"00pWT8FMm'c'T&9/IpssZ(#C919"gQPYLaE4+_$V)r.+e$HJD0j8`gAX=RH&AHjI&X`Oj!gJOkcrlE[sRUPjV;i+6It>E"9uAXh"YQ_Y][*bHKG>Tj%t08hTF+%(TBUO^#r0jAp:O\Wrm;9".9-[BUpbP$?&1jAp:O\Wrm;MUIoT>A^I_XlNNbFfR*4D$RNoBlGjdCWq@ad9/.9SI(+r!q'e2/C4"Z3-aqT07k-QEH#\;i;$*NK4k1r$2j!7rrjf[J+o$(%$$o>&&.PS@ph-Z"TRZV%tO1p$9[h)_dI^G$>rWd_/KAK!dN\3Xl,%cq%'_(aD#U7+q7"Oo:We!=sfO9\"Y\:G'%U*,EWj_ip7sV[n7q*5]0R>\Wrm;8iJ&7n[mB2WS[3FCsLK%Y9^j,[p-";GYCZk[QJT2L*O0j>KO#.KO#.4#A>i8loS!Q3qH0Jkd/0JNfe-YC/RnS)rj,2h1nCd$!!`:R[tE'"8!pYQ#_4n`IVh=(@X4TERYi9A"h$@_cVhgfQnh$sAR>MfN10+EJ&*rd_bf"_.hI/DfN%/Om:JA-+'i5%o)#=&+aoAK8V/b#UOIfb#rM=6%W%\Em*`UMpsW27Xr2J,,N244M5P8Rj7%$/_d)rhfTibUi8gT]`-P?V$VDP\b=dZmC.35Jg8;&3F!/F.8Wra;A;RaZH0.+B]N37/%Lr#8o>ra;A;Ps3\#0N%2udBgo;Z<'hcf%9s;;6Y)L<7jZD^WOUS`TOp2"58^LfkeHoKn&Hc*P-btH%;h-+ao$&V&ohHK3T1FU.d1j*41CgSC:4hHH3RC!R#(pDAi:>+q\2p&Z/C10I0lZY`'O7-MJ1GgV?uUK3>eZa5(N1WdgY3BH^(UU87MC:sTmn2&O.Q:GH(F@YCm)a/3l\WtrBDC)cT>:GH(.%Lp[eOGVT8oE1<>?/mLKAP;RqK?iWKNu]78^W@E\"\#CYDp/eS+#EE\"\cge)I\.#QFnO^#r0>1:c;X%(P]l`K0GJH'n)#<6ul%Sg8)!,afF4U+YeNuP?S)cQ(BaVn:-noTApfZVk7-Z13Gam/u*Y>9^Zk6=16R/o2e'6:.raK6.F;7\NQ[/8HCP@paj'j\7P>#L'NMDpYN4?[SOjVO54[X?E<=+A^dQYDAgpoo?d6[j[$/[&Zp3&_AU*tn[ge)J7<-dP*NM](uC+;(KrqP2BE+CX80GFV;K+W(PkT,Tc$r%V'bq[Tcj$mNCDmJkJ=2E1\f3f:4)2a'UP"c'n,*`QVPXBr88_EF\Wrm;8iMHbmaj&GdOL(ZOYqSP]ZEhACN0_89"3MgTe?;s_XFk<23(iM=ZYq]pP+CNDpHnbZ`%oFL*O0j>A]aRafVR3DP\b=U+gU<\Q)9H[q[mC/%O2bWL)D?>3&_AU*p?n[ust',]]r?diiTD8^2eK[VQ2(/rtV%=2r#fU\DnZkd`GLNa.S]Z*k9&f&9ePj*muZi@C,M;#a,tpQ's@b9Ps/\H*77Aj@i6!ck?aaK6.F;7\3(FT:.%gTo_BYIX.Ugp4ukUnu1+q!<"Z[CCo*jH]n6]p=9d*n0\S2OP@5="S8$"M%OMO]ut#K61nBjAo8*[o*o/;&Hj/go<468T*'ljAt+"+Pg3S\Q.2$XV=3$'Llsd[qa/QP$9f4%WSQ1oJH?f+(##;ht_L#>Mf1sp_[grB=G,NCtZP+ea-Qt>$f_HXOeuBb<'mN`[a,7#-[Lj#b4)&)8p#^OA?#b7Vop(VX<^D5RbV'q4q0QJ\SKO!N'"M#[BsV$s0o8:;Z?dib'7K2aT1jAqP.>:GH(FAqtuk&R9l/FQd!CG,'[G.DFt[(JGK(YpQVnH)->nltl>IqJ^ip"JM'fW$FEXlNN'/$V:ZXf=j.V'q4q0QJ\SW?7qa1E_kfOBY^SDP\b=dS8\qH],i^8#n9$_jPI:lEV-#-DH-3$g4l]Zg>&D`#=DH/Q7.n*;LKooRkafS_Y\Q-P0>D\>kgo>,M=ej#5lQ4BrK9Kq$Jn-VGprnt,4)JW_UZi]=(q$/o@"Rf+h=6B474mVo+h/]T2)S%7b:^\(YfBXXYR);A;Ps(qGpeW\l)e>;[>0Q/$,l+h+J1ge(EX7:G7XEi[cU:i=fs3b5p(1c5Blf_-r=bi_6;Xqn;`:Q6)lNI3m*TOqnkb\Rcbk40X/E7g[AG7eeQ/XmE8>?+.1V'q5L:#VlE]9]'nIat1jeFICu:FtD-4Op2(`q"2;Y??;[>0Q/$,l+h+J1ge(EX7:G7XEi[b",e6pMO^#r02B6b"pX&sBHCu)f5biajk+\t]7[hOd!Qf@=[s,tVAN"T7:/V/V'^jNj!.bnc"+HZ_GX3/Mc'Lbm1+FIX>?H8m^afpHuAGLe14nt%K^s\OCb,lSBgo@]C>Et=T:mt!=rOqO_i\/G2KGiREiZ4&>:GH(-uu@7\Q)9I[q[mni`<#rY^P^3@(@"eTEpEJ-/dsgSPQLY8t]YFat4dK\>=f8bl1d_YB9qHr7B(1T0jf(%.J-L:S^8!h!4iE0KE&7D/lV>b99M15Gq_>S@R;s.Z0rKlP2Up[ocg_#u2M?0YHU-$P/ik:P:;j-H"_]ub6!mGH_^k%tL^W\(F7MKqkQ<^Yn]n;!@f!HP6@O^#46\Q+Vgr7B(1?Z%1!;A;PsQBpT4Ei[ce@br<_]DBbmoFf:oi\dNjQCV8s8;D*1dt7UAY\>`QBs.MrG?F)Rk-\\M_9C0nDJ4gDH[sZ(XKbMntq+VQX7(Ag5CpUXemX#+[qZ3eui3S>-hh=%O%#C:U'm(7cN?oc0k_E2);.m>;[G3Q/"uL-+B%A.>jjA=l`V(X%"ENEiZ(d.;kEB"`J;5$.?/<+>]>fl.K7]2b1"o>VY@V=2i]?OdQ=7/mSVkIc2G(4rFNPa%h.U/--frB!NPI=TJ-FX%["4eQhQF)c"]`YWSnqJ@&1YhC8VjaY[[r>J9Pm+./EJJ5Tf)?le'\iM6:#V3XUYh2;68HZ8Wd.>jiJSK0o4jT4S=_1iQ5;+O%;\:)OBXR_\WtrBDC)cT>:GH(F@YCmEiZ)"&ot%MdpBM@V:#D/3UkbR*Iq@'l%OX%=Z!E,g*nQWU_dbnP*uW4R4S-gk8siKkrJ8.QbNks`hpQ755tVMMPn;$9E!e*Dg_kp4L&u<9Z6*Z1pp_u^!Ra:eL;_PE7g[AHP+W^kshfO#5a^WLV`b-&M,LumI!h$'`utc)sfbD/[VXAK6`FU8*U#?esBB6'Lc/oKWP#aq3h$_nP`S.iP@NI?.\Z1iA"TUek8njRN(;=SMdQ56&Dc+I\f*I4*6:1Ohk>;,uUA^.i%=5Je[Y$`M=^Ojkc$oi7h,2b4,)ioiQh'rS7HbUB`gj9Ajo@rHDZd1cTnAj_-e'C2[rq+F@i&P7leqLa2cfVcr>Pp3O>I`u0(B5n>^Z$QLjVaCgM@oD0?Y."6Nu%0[PJn?0^\Y8_UccA^Ii#E0jQA_7r5oNhIk^3-*qYH-?e&-as/T>G*&8-n3i/,X$OP#:X'A;-L:!u\Pu#JGp;]"5M3*%;Zpp8"pn?fAI_Oo2cJuD/HA/^q/_Au:/9An?696`p_*`\>Y8%\AODg5BhI3b[+meM9dWE4%^+2R*BIu+7fCEiL?W;Nl>"3*pr5]:lq1^a$g>s3)':@sSr=_0DIg8+7niK*S-+B%AafXW).t1LAj#uHL'iL!P?hl2K/TNAPeS!IMs/MA?LQ$nJ:8t)/6GiraP$?&1jAr=G-g[C5O^$@\;7T\d@rrge)Il&`"oo"#b(G%h)7ZK'UF9M%$mX3=U_?B#3ut%(J%>l.hd;(`l>&S!10/pr_JY!Ij\4hh&n_oQ>+mkRRCCK+A(<`4k*Wi#f`04`GIO)RR3/9edM>4I#s!VP]?`(#5=L#05%r!c]0&a[?iMC;&/%+!(N+WsbgYJj_@$;OKB"m?!:H5U)d"Ba\iBIo2LcAuS\4eUR"JiPI3\4u(4ui^/5Ze9i>,cR^P/"^MfFY.`f.n:MJ)(T=:DX!YHgAgg*Pk?RjFlpr6KfR/KpmuQM@NX?#5M3#%Ye0ILBrMLR&I#`Ih=1OSco`id_I%*Ih#b>(dSIUj$RQ.H=V`ACU.nZPGd4GTQl5#jE%1A_o1iJG7k772fqml8(9$$gp'&OIranc5Y87r6u!P6ip-2\3'N:P1mEr!nfmafRT)\WtrBDT2AeCYV?r-+@(Fl@,)T.Nu9a>KO#.raP$?&1G^F^s8*Z5F!%qm6>j3RW0:H-X]?CArh:Q'bBKK6_Lt%cjAqP.>BPp0^%CG>E-4"DK#,ja$Ef=^K7VDY\2p'bCBg6fl<#B`kHli>,=s*iDGJH,_)hsBol_<[)bkmWd3Q4[Q3'EtP2PV=b#nOeX[gR45lXq)p]81]3.CQ.TNa"/7*mEmHK22Wi8$OD_:]Lb^f+&-!rU@PIf[_B"ePSd00gkL#/&@?[u=Pd&%mC/\RY/JHp;9(/'1SHr)B:is1.6sKtfZ\@DR2#?M&^u4O4J[UkM&5D[WVi$F7hP-h4j&G6cDGGXB.2\Ea7?Ba^PU]_YPB/qr5/pgs>p>5/qFqg<)QRH9%>:HX#Ir5?h*[6eI8hQ9oSD&.9qcch"p=ghFW$$HZFpP0M*_d<>=KoNlWE$5G+`h::HQHiT]@:<[Bq9SL]EL5i?4O6_00D^gm`tf/JMjFCK]On/)\`*FVAc@f"7ib+::1b;ck]uH[-Z-$_Of=C8pV0kQBP'pq7-Y_Zol7=a4$N%!4eBM8o>raP$9)M/%Lr#8o>raP$?&1jAmcU[ust;XlNN'/%Lr#8o>raP$?&1jAp<%js.A#3k'G*opt%#bs]@L'Y&68@Dp"XgIWUn0&03F3k#a[dRY:H]cI:=DT'B1gF7+#AfP'iSH=FRZ[hF!1bfNd%7e7"OYga$AQqhJpjVBK\T021Wju,F^;7O21jJW0@pmp&e)3l+r%cq'l,V`Ea=Rs_a2#T"GR1)X8\d>3?043a^1I'hi@L>7iOcli>J>#a"ZcDA-$V+^F2!t_Z1+-EQ3T!hp%,Ta718:$HnW6EiPUkN_LoU=H.VVSKf/P'p_V-:/_n$)h1fJplQGY[qrB\qW,ETIja]$79sbP*Q:ORO%J=M8J.:!Hl2kIdd>lTK(C)FJC&@:>e6]=EWF#N.D\b9Q>l-clH+FofW#S(HOc]I68OMork3IH-mq,tla!VhO_frs&R3N.8*O$\d\H(@F4oi>D0!B&,JFjUK(:GZ3(al#@]2O'DN<@CsKCn7gm2J`M@CQA)e%Ma8`]2pl4F[Hl^%r,W#.O-=`nSa5>2QQ/2=3(Q#BI5f^I9^)CNQKVA-$Obnhj:(h^VX6Wd-+E.FjAp:O\WtrBDC)cT>KO#.#4K/;+hi:N"R_"A/S)5Fk+7KT);Gg)Qp!WHJInlcb&?#?c]Mn'EUJpoq,,73"3kH7O1ULu33jllq>VZL&iL$Pr^G-Gnec9'0mlR_mD((^[=T&ecFWs=GNYKUmm1!FfA[`$iPO7XB-7lt^+23*ja3D6C;/*J#[b&c/)`5gcM]q>nS^Sil[;Ot=>+t6k>?_InI\V(J"`u8dR?LO;h*5%e;%c16o2^?kc&S_*Fmn&+Gc4,#9K]mta-kM_6V4Hg"kfW\b5B;tUs$GuCZYOq-u\;LkJp'$MNS%iCj7B,@\^K`2eYU$8tdu]bRI8M[PI$g3KNucM;5+8ga\_`!RG];%ZV#mK"e9_E-s&H0K9e$'EuOqIDM-[CcONj!ur8X"t)[^abt[:CO'q'Rf3M<)X7>!*Yr'-&$]88c85>(+>NUnRt;g(nZpa]*!.4jR1>A.mQTCMMV>\Loe"t+?ekP*IGIMJ7YSN+eU@ckVb^Q3_W_)Fn_MH>cd/L;O7AG$Gmh671Q^cNr"[Dm2h&LLX3?4pRPeEBlXe^U>[>c("?k0I1/?@m%X+')?0SrbJt66>q$O%p+%1d8W5%b\BD+eK'GHcq0uAW?-mhHsOJbk#fOYf`2GYK;bu+Z<.VNR'40K&MOpOB]i/7(4;JP$?b%ge)H1[ust;XlNN'X#5ml8o>sC"6?E;]VVLo7.://ADk>&X)R#=lVU]r/]tfA6^=r8M5Ea%u[^TNa"lb^qK1p`T'%CqcmZ.Y7VsS]`#J!oaTVZN?_R,/uW-cU.rrX,SbKmdgA\SMM.tZFP\0E+[C2h/W6P(RC.]@_T/DB&q-qY?KMJ;b+T%NQWpqFQ&S%q9%hgrT)Ng$b,oa+HQ%*b&1\IfjCh7s((siMdO9=R^*=2Kr]tqb07C3kIoc]n.N>b4:a#oj,ga8?Y@E)*PHtdaS@;)b3L!B80d.H_^R!pi>*3#+5!LEZ!]\KMcj`H/-]1AnHRs>pYtQ"LT!-8f$o1^Rg\Y/*bkkZbS_Y].dk03EfghR17Y^mI1m"NB<^_L?Aj_Wr;FV11M6bY)pGcX63)>en>YV1lYe*@0U\_L'np^#K>1DoRkD[?l=@Z%unB=6JH\6F;t/cbHLMfi#uqhs25jn:p$K;u_[F;XFFXaICo<.%dl2^.!r%oA%3KkEE$65I51EaK=N(?%q(6)KI@=Q/"uL-+B%AafXW)EiX>=ge)J7a.+i_r@/p$7Yj_L,YlEL7EMjaXY#.i*HUV,\hXe4mSdTbXhXb6-"(:#c6#bgM5U;HnnTYI!kuNXc!ke3b1%>0nZf(Db.j17;JVhGnLr?#1'oN0@fH`Geooiq#0DGt=1aD#>-gggHkB6b:Hn"PI4N?[e_jAl[Mk;'cpPtk+n5h/':WQ`/k?]OH`LiQ@B03F/UG[_fiVSiQ.^g0ekki4U$Z!S2rTY6F$>O9]DIEi3DrDK3GkV@?u/j#.6O!03;C&-5C^,Q8o>raP$?&1<]p3>PUuE!946&T0pMdc^A%p%P:fW0;p3XdHcW>M6uI+&44m#ge)H16ri;K63n`f&9T/*g(8-Z2AH7\9H%l`QaV;N?@1j&nFE(;Jlgg_!T)VG'C[4Qah(SrQW/RdiE#unji<["/8n^j*g@9%$&+(32+e<8LZ0Pf;O!J;DUh(bop+%/p$,TNkkYX0l[VsJ2AW=E#"*8S[o/H5M;5+bFR(HV>O0hAlI#8>m+)3:H>P34Y766AWdEQZhdFc@;IJ86Dh7q9o#Ul#=g'r!iD?^hR8nrF76u#B!i@_O+?g_L;s>]dP_lRdQ&(%!&4-XG6jJfG`'?/E=[=5f'9LE<.[Ad]DPc.7O]r,8KFgIpjAp:O7B&4d.j9QW63rY-Wqia62q[0TBu'CBWDip=4aJ)%7kHk>DWt)aX$2cq!N[iXQXNLM5%Wld]\aXJ9)@WoI'^/u_oC"ZJc])X4cCl6Wq)A@IGmdXW"VfpN8)>Dl!&r#0ahZeZBcBdRhd>!BXFn/7K_,`LeVib:p&Qj3O[eHl.EkOGr-;5TY222UUpHJPJ6<4u6aeP#Sh&G8Yk&tn71`MA71P2&ZIV;+"l>BS5d>P1n-m^EP'?E0@WV0[!7HHE;MH5(CM&i&`E,;:P?Z/2Pcg)&8dHSn&0ce=Al`q&\Wq2"7rBW+&4-X76[0]uJ=[%p2iEiW2t>$$X4eZ'e_5F5S3hl;[4QV`;a([eU4DUQPCh@qr9!-I^TMVQPbGX&@+lV9.lmdhTDneRMdS`nI>qKX=3#/RMQq[&SCe)>m4+Z)2;^(PJTe*c.ni6@($?U*1ncV;pW;)r7WjaV9O^bLA\HqW0BG@Q"U=opfU@P-s?b78];W8_1j&iucJDi/jRP(E`F1oq[ld[QNkpd9:9g9/.2e)Jdl,3k*5^W9$/-d*&iHSI'#AOBo8!X0-'6V)h<\UfK?Y/a$hgd'i5rW?mO0X3$:r[-FBfC>SD_kZ1r>`K.RQXlNN?U+#bEC3_If]OCba67sFjW_?oD2LcdY2IFGDchL\OA!Zs.b!%?c(@LDeU0)<'%1kF]5"lW?-Q8?Fda:@X_PFNc6Kfu2m'Z)X.!+-eNUH7K30Z+IeM5<_8@md\:j3H'LfRY;p,jF;9NH%?Yh-O>JB1hAXBU3I)WrS?ZZ%SbMTFn^UJU.jW?&RB_eRVo0a&`VWD#7hmRoFol)DO0/!9>q4?^*>lNRM+04T%Q604Xkjfr+B/38cStEUlbjohu0.d-7q5*1%bHG1Mg[].'D_/YGq7Yl#/l,\2++)<(8'@MUJ$qIXnQZ"Pnq,sl$icPJ0=e`3fkbrQZGlC7j`QnK/Y#gY[;Zqk]PZ?aZJDh(nug.gbBkl1><]9=kjjkt'?f96cQ3lt-Fm][A\ZChb9>&;QQAfglKPVp[2cZGYai(jE]Its@l\0^CZ1TNQ4'":Q:mOeQ7FTdQE-<;QYVmqMr/QmEms$Wgp2mKN*=4Pitahm3-r+Z/=fH8\WtrB;&!RD7;aE\P$?&1jAp:O\WtrBDP\b=dX:+VE\"\cge)H1[ustO=)PuqYU>WSn>iI9#p+QV;,GH[iDCEZiZ$bs>g"rKjB<'sr)D_X9?=cb:OBU*B+Co60>&rZ8Duq9isQW#*e+TV_(GYRO?QYYV,aM>_AKlk8;Y5I!'0>&l.(Q(iA@jAp:O\WtrBDC)cT>KO#.raP$?&1jAp:O\Q/$7`Q>okKu8sio+4Rc><)Eh0ocg+$dfV'_cmG>8.W?-T6!Xr;8'^67cQ;If0)O$3.:?tp3dOIGRUK5[ESR`7;4;n/%Lr#8o>raP$?&1jAp:O\Wrm;bsuXt[ust;XlNN'/%Lr#8o>ra;A>u'aK=N(E\"\cge)H1[usrQYhk8`0hr83"oNru^X^G-5OT'/1U*e^3B@njacF.I%^"Yk<-T,ULFul@XS1E]u+4IH-#/2mqs2aQR3e'HrG*T_=Fg:HjfO0oqn]:8uj/FP$?&1jAp:O\WtrBDC)cT>:GHXI,n=K/%Lr#8o>raP$?&1jAp:O78]M7ge)H1[ust;XlNN'/%J[IDT-Q_nNQ'1Jtn?1]P-dYCgOj,\`G=W(5safXW)E\"\cge)H1[usrEMUHn5KO#.GV-L,8;m!ac82fC3W#OTE@Shto.e<raP$?&1jAp:O\WtrB;3^2f[ust;XlNN'/%Lr#8o>raP$9AmdX:+VE\"\cge)H1[ust;XVu./^81ZZ5+fB>K"r`Q+0[k^04-md3D8?.MiUKE]D921m_EHg+7G`/n--b>3@?h7HZBMO?^t*bNR)D1bl6mTlhO*g?OD2DEYj5E@W8Ue@^U"T?SB0E92Uq>7rBW^P$?&1jAp:O\WtrBDC)bi'W(WHXlNN'/%Lr#8o>raP$?&1jAq/41`s8nge)H1[ust;XlNN'Ws7AE@@(/p)0HtdGB#+L/Y%]OP_W0L.UF\QAG?AfbCp0cBW7gcI,SjT?=/Uo>-+lB.>lQRe8iUOXlNN'/%Lr#8o>raP$>%HKr@Y2l8mSdP$?&1'W%!lb8ht>P$?&1jAp:O\WtrBDRJ14U+T`OlX7J#DC)biPYOt*GF[G\DC)cT>KO#.1/ekGqJ,'OLlD](k9NrpeIfb`Tk%5O2"(7@j@d1NKqj$J0m/,pJ,#eWo\.8[3VPnC\`mDho11)ekI:o3O?JHA)5rj[pm!JH+3>GobEfo\Wp5GT>oZD!l\5*"j1cB_-X+R>>_B0Ku_Q0\:mQ:]nu_gMd+T)3.^$(*^cd`(:k6GMHf@D._j/"(>\8"/rdDA/X"*Q9aTY@0.nDcjWuFqXdB[/HJMJW>C!%POfTRh&BUrkX[4;60":D77A\`,6FT"_H:$E0.ofkm`@[Sde#gp*:pR`LcrK`_,G"JD@.[ga0Fm>KO#.JrhE;-iL0YZ@':mSeUP*ub^N3K[AYU'Z2,(grfta#q\EDJr6WF/'7:+sKqkK1CU%396?!ae_d`Cp&$>+hSri((CF^;bZg[!ZMW%'W+!`#mi<.Y<]rp2u)3DSI6K2ds`@N/9o*9@!a^]R"eP_@;MX&g1pd*?\;p53rL\:5I't?.UmBOu4<`V<+[>-E+[>_EOa'3B9ZSD)DW,=W^Pbugb@2kArg[3l?[I"r/)OXaEVt;A+X&!S%7u%'L,?o;(_`YNM@p),#m<]$V3D`$Uk4_WBgFW`9*cr?5X8Hd#pPiM5aKiIpT9-9gTM5"n!Dr(rTR`SGFQ/#n)KPV:NP^E=m!qrch$:jRB0hc-pPkN:J%62/%>/Zb(Wpq!II)fr7Gn$nlpD#^8tP.9nI9%Mjp"/XSh;Ua*,L5HV'F:lp'e0=]s<&^V3URRn3&B>@-0fA9.F%VAJkOmVJcgr)ZT:I3mrUI]H\ps*j-4D4k65\8mSfMZ,Pi1f=7hOGIkhQ+#+AI18-'R3*,[odjtQF4s5jBe+%sXgFA%dT5'o>@"5SlOIY[VJ*$(CmVTA8R#o0U91ef[aJ418m?#1A'n=A4F(ZZ-VrU.N8%_;U1HH-q=6;H5!LKWPQTgkb9aVk/M"T->98'+>Bs!@Wb-["b>1cSem-SKNH_YNMb-QJ/qd?WAp@_^;H^qfSV@J-AL$nOtlGr2Hen=)I?J4D=ICM4a&\02XG[K!Vb1%Und8,^j]Ipe0'aMMBB"!,!%9Kt^O0`jDkA_OoRiF>7c`c]Hrp98]2VB$0Cf[.qQ%eonYIl@^#3NmJ/@%V8LZ(6FX8@2VGd5/:HVMqg=ndIsB(hKXot)r7Q/7crSlcQg.)sb)9p`cY6b:rdr[$_pd3aF3$`'#MNod>A:/:aD.fXiQ>3^EE3S04H?jRh`u%$1fj>8hKHccj%Sk9/afIQd!%gcZH"lV]pgR$j[]2qS5*8tAYIgm_e&M9DWO`]pr"f%T@H]eH>M3MUm+tI&^@J%I5#/#XL9f1DCTAQ4G@DHc%/(K"s"B].KI8m%)>UAlHmiQ$_?[KFq68b3RXOV8h"!_PTp:]=c*CC,M%8=`\LsMDg,CDMH-8^gWr5H`']OMsBg+mG+3pD&"eAh1W\+)qYO6l&I3'tG5M,#shXam[;\,65;>/>megE,aHsZ6jR5WYlk0n#<[Mnrulo[@.kChVNrrg'!<.+jiB_=kZ]G#EgUJDp%UO3F=KlZ*En#)*A@t/C\4!BC:f1KDgJ\R"AA.A-E`dIrek!+9Xmk=Y7aX9)eZDq7[Got7ko#MV??WK@4HBVq5-TAO4:?gN)O)'22aW]&=<\"R&6(?,%=k/]^?PB[7>c_%Q]l.AD73"hpgsSo?h*+J?DsMI@&%Gock^^lGVJ3*DbV,JL[g[,MXnK!bEf7B[s/Pc7Br_\WX".nb4YL)FBrabO<`boADWrL[:0[,=0fgGbeW@5fIqqZdoLg=N"/Bq208t#II2Q1II"(O4,u'V">Kt=R9?_JFbnk=`^?!SkQ[G3DB!?baE[o-hQ06VKoD\EIdW]<;[lp5PjRR(4hq"@mj_S>uC/uPuR$I\pq9>)!k8UeW7-@4o-[ClYmI"oYq/5UO1r#V+qlTFoP1Nd\!;UC)h^pk.I]klAjN^n/_C&,X%_mJXc6op[Q@*=n<]+s5XRgQ\q_0hkZfUWG\FR4oo1,D6XC3/(HS!A*;rWI=^*EXG8iA&hJ=:?$q'UquY4_RTE^RsH&Eh[:Aarq!b]Zl1+"G35.6]1P8*\N`e1/GTrF51huQN0A2aR1:%^6.bUlUj=DM0Q,>7N>b>Nh"+`8KrbT\CF3s&7qPVbO5K?Qk\==DB>rgm,_jPR=IQb:hbK;0(.K=,b:Pa>ZLf+C=i8jU]Me;Ok67>>/`r2eFQ^3U=ZsAL+,6<_jHJZ2JR:'5_b>`(d`\+lT!'+lI=h3SV8%0pDR,(BQYaWZQTT:@hoPZTQ@@ubn%uk;b*Q%;^7+;Ml`IOZ[aJ4VX0&a/d8nsn>A5TqS[KHbc7@r.8KBnVPjLj(TgYOdU1F,4c9(3Nmn;jHc:+9_JQpkQbPIHBBp%-88bb;epj?C+@,`e.,b+8-Hp6h:Z2)7PBSMRh$o9GTeUao*a[9^o&5,3RJan)*B4O9gtn$1Y.LI>/fbPG&WqW,=OLK:"M]SLUk/1Xqn),Yk]F!YUh(!Gqf\%JnTqOM4ld,dc#BI4e0PcS;ccK0bPV`U4`AIW_QAeCHujHbjn/F0tqcX7NN7o#gj.rpn^js6A6IBR2Ce&$C,oNBt)931CIaeUH-@?-s2ieo+(j#iV&X^%TfXiR,)P2oc6hrB?B2o$lt6Bi7:Zl!"nu0;`-%*"r$\h9AL/k4Wd3YV4l)@9Oa"/p:0qUZS1H2*Pm_6Qu.OcU5IhG7'&l(')"hApX>b6D9&=aDtd7qS'Y[u!6'H10#r14L1_:<4[CYfY=7*9N@XFNH*@]"I\+lcJP.=7a_)a2tqeDY]W^hg0"YIBjTuLadg!b\uT>mtY6[XY`oS0%'Dhm[V%^j?5,VSB&`iV+1(BR;ZUJIDtn9q#U1b>7G9sD5FA?:i3&2[$A)JA5U)V6.*>YR,/(F9HH'o'EnugjAKQbII5![k-Qo)h)97rVW2c7F)D0AL6Zt5C5<'T$']G2U8Zi*tb"VrWc%rj0"QSls-?MA`_3?T1n`pT3O18'h_bBQBE]8*@:$AJ+_,3ns5Ms:mTYp2LVdk&FK3`b@E-/a"g*0ST@?_Q5gN_B?XUDI??NT^Lf(L%cipgPcSWR.LXKeRlP?RSBCs0F="\nq+lI(3En,Fam?(;Uob:,fc->)kLmti2`iJuRp12CjTV.>P-W2TRHJh?MWOMr?dG%PW+9s)1XFfVI[#&`XA@iS[oKj\D3aEDZXPquAeFjSm2U7OeL\*-V(91]^W;JM;fYNA&Z[aJ418mD7a[aJ3l0;Ye*[$A('BWK>18m?![D=qu(8m;>2PdVJkK!m^]iSlWW'jk.Y-iT?;!W6T.RNjF*4s0P^F]iB5oqBEE0ZBQmae#+17frjM&>b[T>ba)jZAC%.TEhE8X,?p:!jN]d`dY#(VTC\\gO_rE;p^JNj[N$l5U1@Y@2N,YK5-fP,J9_@j>FALRP`e82jBS$mpd7b^Vb+5o)GH.QAci*f['ET[rR=%5O/+01e2fQo/X2KlX)*oY.PVKe"'u+Moar>8a2k@SJP-5dHmKQRX/#Ks$`mdAKYWoSEFs2an)+[Rp5GUanfO4k9*>bjq>sEp6E=RAB8iGYfr1j/^:Ph29a3UII\C&q5kXDg#Tf!F"57SjgPjmfjjhn7fQ[brtAsMSiHfA,U:PM+m&\)Ym,=mk%8?M8f7(#/0QjH!%@rn>I9,21V6'_a>7G;I.qu&ddoP1;5IAt7dT5'/+LK[\[^oAng9OrZm-EWN[VHV^q_R3pX1GY1[u%ii]rb=eALhWJYH$ohg?mVLYHQp-bHq4^B90Y'\"0XkG#h@j8%BO@BRe,Dp]9%i3S-M:hBMga4fDom*$B)UUogeqXgUZ&Br_?0XU^W)dT-@AXbO45Q*f)MBIdqB+LK[mdT5'/+LK[\[^o@d$Mjn8h`5V_453ddF5q,@j'u9Go>aB3Op=X0$@9H/jX0`P=NS?BpY4@'WMeaumbRhoXf(/Zp3bapg!X]OgcR(gqQ$X!)>&-#L%OG(7*8$#R(%g?ML96X+7T!,XThXfeJ%G/s#HG;l4t[RFC@l=su_D$?T7L:#K-J'79KHMuZIfB/LABN8+Dr`raY:%V1`REr($b>GE`T"OQA^C*\A%SY'Q1[/M73(/1?&,m(!/EjE%;Dl:51e4`LItcVelE$L+"c43!3K596+^(;mb):[K6F/VJ*"RD$9n>9[Qm.g'Rf[R%g^;ZkWQ@0L]1TBe'/`@#DB2dT->J^_CWCUoaUsJ192e86Z)p!)p8TOL>2j!2aG1+`.A_!)1d@6eVkI!19L_L9qZq!&-iG%;@S!.ZNPC.MP0!!#s)eW@3@!!&m0X!)<`!!#^?<^YRJ!!&C\XbO1t!!"]A>7G9s!!$Da[MmRp!!'eKD)J,k!!%Nug1j/_!<<*u[+18H!WW4tBWE:n"TSNrd8iWg$31'nU900W'`\4f79^48.f]QWMRFGO6+^(;mb):[K6F/VJ*"RD$9n>9[Qm.g'Rf[R%g^;ZkWQ@0L]1TBe'/`@#DB2dT->J^_CWCUoaUsJ192e86Z)p!)p8TOL>2j!2aG1+`.A_!)1d@6eVkI!19L_L9qZq!&-iG%;@S!.ZNPC.MP0!!#s)eW@3@!!&m0X!)<`!!#^?<^YRJ!!&C\XbO1t!!"]A>7G9s!!$Da[MmRp!!'eKD)J,k!!%Nug1j/_!<<*u[+18H!WW4tBWE:n"TSNrd8iWg$31'nU900W'`\4f79^48.f]QWMRFGO6+^(;mb):[K6F/VJ*"RD$9n>9[Qm.g'Rf[R%g^;ZkWQ@0L]1TBe'/`@#DB2dT->J^_CWCUoaUsJ192e86Z)p!)p8TOL>2j!2aG1+`.A_!)1d@6eVkI!19L_L9qZq!&-iG%;@S!.ZNPC.MP0!!#s)eW@3@!!&m0X!)<`!!#^?<^YRJ!!&C\XbO1t!!"]A>7G9s!!$Da[MmRp!!'eKD)J,k!!%Nug1j/_!<<*u[+18H!WW4tBWE:n"TSNrd8iWg$31'nU900W'`\4f79^48.f]QWMRFGO6+^(;mb):[K6F/VJ*"RD$9n>9[Qm.g'Rf[R%g^;ZkWQ@0L]1TBe'/`@#DB2dT->J^_CWCUoaUsJ192e86Z)p!)p8Tck3Y8R1#@IEU)&1A__;&D9L:,!!%!)4L_tsr22j!2aG1TqcG)e#,toj0m][?&#ch!.\Q,D=scH?b(.LgbQ7%[K6F/enM0.D$9n>9[Qm.8'k<2S2dp8[+293]QkBU>e[iZ!!(replgm,X\P0Tk:\ArPI>dPH!\%fr,'h^g'Rf[Y#a7K>6+^(qkpRihcBb`5#O:QX&J16/0f"SVT)nc^MOj,!<<+[M)U`*'m6M2J+;MR2JK4iQ04K8QFE3V7q+kjBe'/`\2n:RD$9n>m%:_TD6&$,2p1=,8'>L]Fab3@c^nI_\Jf,+SmTK?!!(sP4*Tg'A!=@DF^$ek^Fnt+8WUe\ng)&GXgAfC!*j*BQ*p_o!;92m?.i9A9>4X+S)k%>T8U,Z!!$K.Xe&[%<*ike?'67cOlT)c,mg?KZkWQ@>TL2:[K6F/p.nm%gZh3&%>Ouu=?BIdp'!!$(ICR\^T_j0shYq!*n?+>Fi9CIMqVPpt(l&`#J/K`XBq[jf\0jP4V;(,Yo%(8XMo*[K6F/N\t[MXT/?OrR4eK[ai?;\pUu7[="iVs7BAFj6f]jI2UqSoZ/d_S:>JqVpF3!W,^hpO-akDq$37+nsj,*L1(pR@2N(^G[ME`T"DLkmp:H'2Q,_ItH:AJg/1(kuH9=3Jrkg<))X__;M:0T>skCU^De.6f9UQS[_.jW!;Gb2])brae4kg$`(`'5kI0):q%C%El9\VI,90h=S]u>kb>3C>?L]-U$dTL1(pR@2O`-*;=IO1LIbQ)fBup14Jo92_6RA+?BSnWR!p6k2Ynt-mm+=%g;&]oo`7a`M9Ouu=?,[hHR35`niA]aql/_@h4&cnh%uZN5U*pErK],hlWDE.-qq/PY]FfPADjQi!#+-P;S?S;@]npcqX^&M+s=$@#YL/!K[#j"msd<'QTHj?NbiacMTq!OfuC#BlEA>&UJ>O5_LKQ-VZW;tBsMfe))7s&8JqPi"%L.0!SY_nQEBL9EMi?6eB3iVWd>/!K[#j"msd<'QTHj?NbiacM/lgZ&,54%idl.prn3D1HJCrdgW:Xk*0db"!@^/+RD0&!T^545k"t(FWpWh,gm!-V6em*&$G4^pZ6&_!]ZP6eVka1:I:m`VBa^T=3J#8n@TfZ2-=\5Amdm*basH!!&%]5/ZjF'`D48ISnY`J'e$+D$9n>CdM@.doHGK^a?G=L/oqGlIiR:Is!sV!!&%]:$2AeRsI=?l\hc$Tre:pJ/-dQ6eVkI!*Gqsp8i2s-N,fumr/7,?l/0NWkV,"CqFqPNj\uhJ8:IZ3^DC+!!'0)g1khJZ82L]JE(G"c#Kl +endstream +endobj +19 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 17 0 R +>> +endobj +20 0 obj +<< /Length 2198 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GasaqhfG8H&:X@\_=XSG9W[ehd"fgj9p=gIYEtaRg>#s$!?9]8"iPs3a7n3C!YS[FSbd5f;0d'6X&fLnX%Ee>?1ogDN@;Y!oIRLjlG,)h\r6Xsc]/?G^GPFo+%r"Q:)ED\CGolLT+1i\U@q\:mF1k,i`haAugA_2%pSi,6.mEj*qn$+WhH^@e$mR@T1Y^X-S?@pJVB=HT`-u)G$L@/E`?VG:.4>U.dn[2<^F/lcabhQRU[?/GRL/D3tm0$fi%kA-ZeX=!f0?[So.O>OdD@rf=bF(7lM^TYlQ9p49-7V$M*6*6)YJ80Mqj=45P>EV?-Ds^ikuPj`[?mK1M`thNI#>0[/0:Xe#92;#oM(Mc^th\lM$amTdLXW]ofBTL.Y;Y0*N")*6"8>7MiXcodIcWSC/"#QK(7?Zio:>-oAE8Lq%S/KsSjun^j]+h(&hK_X"'ALYpqI%ioR]Y27[>Rc/:U&!3#%,-FVI+2]OD`l4))$htGM\sL&_KR/X11#ITb,lG-r(1ag[oRu5[m8aIX=6S=*QI]WV(UJCZS:9p(YKo)3L!%=-![L7GP^QLd`2"fs[4fT+S@?V([UL;kQQ+8C`bE[if^&TR.L_o*D_ieUA3T7hhm1mPcs&g*]Anq?)$atk2C3bhZ-O1U9+N!@=#$P]?cE2q(K3!DiSXE*`SiN#-c:^9J3_P8_p&!%Hp,GI(6]76CN]5eThtj8F]i%hqNNnBOO]*!]1b=.R;6G5q?i^*6:mWlLXFj%G6U;rp,E<24U32X'!9HB^L)ujb_D%dCTgA$\4=s2uH$Ai-YV%1Jp;clc)odmuE;Hk`=%U,pfHOT["LXiS*jIGYM?u:$JOVn.Da_$KVWVr2^q7X'ok5HuT'%f1firJ[a@j6!e$0di+m5r^ZtjF),9G!f=UFo.kk64-0\0oGi+3=b<$YTq/*J&/0^ufT1L6'&a)__(-Y.-u`f'6j+D$Si7@fZ;CE.pe,,ER=-n352T[^'(oMI[]dEjiEq([07;I=B9$)qjPMS;\Be"H9.&rh/`KOt/W@8bT"&`Ole039iU]-L_2T29oL/=L-HG8QI)USGm(/2O.[0A(?TJa5c3I%0"@3UoDuR8fG(UG2sVL#:K'P1FT*"LuMW9D2!hGl?WG0Gs).U&1OA\;K#,>5m;T[8H;5p5BA0m2)*8N(]fp)U(@,P0\GaC#o@JBPVLDUl;Ae8QrT]=(AJ"Oi<>QPcmkP;o:K@moW:jNb,8SpL]FLT8?:b$CqmcORcE2htdF"WjCr:Y42&fHo?Feq6M+fRi/\9'tme?-4,#aG'r`:j9XI6YK0*H_C(=cR)tFX1)-=HGEH-DbQ!(LN_DrLa(H'?V3\XR\!>ZC"pep/c2ljf.T);NjMk]EZC.mOakk+B=NXMg^:_XgTfZ^lA"l +endstream +endobj +21 0 obj +<> +stream +Gb"-6l&Si`rr)j5I/eifUX+S]"!?;'-6sjk`0fi9W'/2gU7q!fbH`\BZ7O2)Y-3T6F5/Adl@-/mbH`\BZ7P>rlEs=Z7O2)/Bb?#8n;iTQbAYq=dEW%Q=X3aaPNprO\Jig/m^;_=/iojc.a4;#g*D6K!M,0AQcoEC!fc/aKho%7@nu[C\UQSo3CR%nP;53K0[VQr_#1h782::F^+Q?Q=Z>Hf/Aq+%@''U=Ouu.]iA4g>?R7lnLr6l/&+ODmj7*nu]B]u$=g6:L1"3]QDZ7O2)/Bb?#8n;iTQbAYq=dEW%Q=X3aaPNqu.bS+H?U++:O_b1"dZQ3%`am8b#W``C,j93oTqI$(#;"%:*r8Sfe2=N_lZSER+3PS2ihE!eGV8?neE>h`G(9dJQ@UB7[Xpu$eq7S1Or[ZuGL0`!5*8Zo_r6d'#`"#Ak"*Am*^ScrSOjf>t8!gI7]`/8NmqMfp`5\Zk6pT8S3Q!?))E#+>hO$5s@WO%N*3]p69rA_e'kg;^G"Tp"R\b8Rgp\$EKK/?9l`g;^G"Tp"R\b8Rgp[jip,i]=htW0W=ULZCrAq(#&qe=Id@Db\U@THAd"$i246X.V*tb8MGu68[1LZ7P"3UOWbQ$b>rsKlnBeFY2WZKC;Q3%G0Z=%Zp%P6G!"\Z9>_#3I%Ycp.n(=b6oAQ;m;,d=L6%i/7.^nPS;L1DeWAC`^Mk^X0,J/&7s7i#,_K>lADYcK;`Q<%S5U9+anCC4HHFi(HL'NeU]%P4[&K*Bd/0P=T*/?VQsjjeX\\>CX3C,1;Qm"25gGdf.+QDq-CDqAmog*&8'sAV+[jE?qGJJ/?V_q<94-non?UK?r9pF6?U!i<=+&)YcM:MKKM3TYdq:Hk'@Yuj+%V!*!6-0%C2WR(W_+qeHlVaZ[c!KK!$!!Rh\pPY]B=qY^B(nTrKi@\foFf^ne!-*kW@u`TD@rR(IXM\e2SR>n<7PUqktA%:E=]"tZcg$ma/N'f?G.l./>.U8eMNY=aF9>70;j/PUb@Q;sj!_Whh;\`Ff=SX7k`JgFW"$!Whuj37@1&#]utk,eMIgknPd5r1iS6Gl+t1UJ+)m&c$:A'4lnciJ'VJDlD\.7GHRjHD@Io_'5R2DHgGiS#@W,grFk[&ce!ehg*H3t@r8Sa7hTF\i:qTe=RoMB1>gW#6s"j4@0]T4_i1Ff2J`kTAJ`kWDJ/?coJ`jd=JJZpL^u)jc#@:Ze"J/nc!ACUV#;s1AsAD*p?m?%'TQ9n;j,F'U/:o6aWq\s^:+&PUr@"ja;H"e*47)pWuu)tJML?J&'b9'5q*#ocVdX?R^BS6gYAE'OYM^tUR$MsJ\9X?-mj^@!9AgUbklL!S(s^O:PLN;<>Ui;I"$&q21j^jBX+k`$+%4U:uVhCmfZ+9)Nlc1h]pq"$N8m]R(MKmrO_C%1YQ1Z5%q%H,_&B>LV8VnqZc%H,'heq!d+G8SP+;[)%XV&m9RHPW^:=qB3N89jHe#/Fu$\G[EBpm23Sp6ILBr+d5OGA1n#i`C5R4re!npl3>7F!sl#lu?YrRW44li5.ju3pFT(NS\[cT-.npV7>^?-D[mXsE4M]Wo?dloko?MN_QSH.-iSd!HB4TV/Qpc+YP[N8-qP5`pXV#13-eFpk;m%,DVnpht:4Qt@8glUIg/A;"fCrhCks3>-,K4Id59>b<2a:pUf9oQ$5*Z[+/'_tWX?@"^9mIEMGC:L!q-=o_pb!M!#-WI,P43l#bkNe482ANj0k'ah%e/i^[:%.H>JTPDS%st)>JZg_cQmmf)U/!U%%."L3ACL1*16Cd(6$Ioc[j\+B#'AoS%tOg$2=C8%JVo=hf@lbgUREEeq7Rfp4S0S(1q5E`bo^+N%kFNhTF]t(isJ$De3iuD`-UbTeY[f`SSboar#28@;f^q2$i'=,NsLds6qamfuUpkbWhcujF:6_M5q.7X?$J*TD'@nq"-)pdA\dMM:5c3';k^94>QjM0^@W]i:2#O-G3Of*a=%T@F]'Gl.m!ZX,\'-bg>q5WY8e"WcJKI:P-?a3X21'q`"$CR7grbnMB+HIHSD9Di]Mm::5_rn(*$nRneSPhYA&5q>)etSSJ=3O.QSk\(?7Rh=.KI-h`D8oXf;IJ*a\u?s)9W9Ao/Q5qW!bGCX)o@Z=6_iRC.U,%YM66G(;#[m/dsa=Vo[U##R1JSudqe9cMsF,h5r&<6*q[i,IAgT/@7)f2>1)E`_9_BFu6X[;.Cr*VN.]bjQMHYc]_]n5_2Pif"Y\/N+1tZR#?Gd>'n!7G%+oYQ$`;/J$CnYI'g/tb#Oq!`md\"ANRGWXRbBAIDbBAGd]O(c:Xk/u]#8/_UEsHhMmWf[:dJf#BOkFNL\=ANR`(V,\XfodXVabk^U7#X,HRjFn@uM9Tm&fWVN%qdSp/^lf"4?3Qr[hW/aY4`W15LE"H#(c6s02nn0RGagIr6j*2"t3n[_;e3@u8ld)RSQ5i-];FR/bGZ@.`eki;U7npV!gFY_`2>mLJS@`g@nnR>Al,q#rl7B2?D"SUk'Sm$o)(gqVHm=5I0eC==3]_:LVtD[rSZV!3@6CGtP]A#@HOI%oFQi?."@ZN]jWNoT&[\NbX]q\??s?j!q!r^gMcVq]#:Qfip@c#$kCcb%$@qK$'<4(!S./(];'g\65d936`P:]:GQj9hQgmK@cOjgQAiFp3hP?m6FBm6`R>_&cFCkNCA"G4h[+:tQEunkihS\TpcD*Rn?-^TIt-8,Do4?c"!>/K@P_5J^sJ@hD#$]KC@.c*=a`[kbtY4P3lk>8^pg-1%c#XmE0Er&-COgpYj>fio>(DC+YOm&^K@>8;a'KoQE.qhJC--GHhggct7/0R?JGGl3Qi6%*5fBPttD6;'*ohg-?N[pK>tRh-f$N?bt0jdpV\n>"-p1=\TcXKYR%'[m#po%Z_Rgi&^mVYBN1IQogbIasE6lu`_5O?6^cbIG#Q,QfA)L$gp%Cc2Sgj,[];Me3c[C0P4>c4KnA%7P"aM33u@r;J:XmE1VXbQa31re>EfN[$5).ROfm&fWV#/aZQ#P"u:2[7e9eHYQ%Lm)1P#0+sG$gqB++,kX0C[f-h\_t:QF21/lk(.O$k(9kek(?NlcN=^'h#YO?XT`4sm/^_[m07(WW!/rU0kR@%o>[pSN.,8\+Na65]PZTP$*Sp[q=@t0*=kgEGKVnEO/9j\k7(u.:AK>;g?dh>2Fs!Wu!Fn`3aJE^j1JVWB(!VcP6*OpImLLAX(&&:?WhZn@$>93K(8;rqeE5[u@i%O]1K;Ur6"3&L5eprp6CB3CRR[.peoM5K@n@f]'"sYM1$)Rs@)RM'ZP9=$>RM"6e)AZKnRMpN'HRiUMc&99#]p1>7QGDA"hTF]t(h8:;HRjFnA'?NU]p6:]Fn&KA5t?NM#&Ocpr*LrS^J9(SU'"fYJpi2R0R!F:^lReF3.G";2rIhK(*3IN(EEi&!"UX7#KA;g(q]9&i3s'G+,Jut5R6W\[mn/*Ra(rW"OpT?J]1-qrJQ\dd0oZ##8cc!R(Eei1d>F(K)OVYq$4a'"h!:)"hVS&q>7tkY2[#1[r;ips2Htd:k2L+k_8oMfQk45Si(]-DrAG8q\&&["lnaq-G6TF@GWX+@$b*aL3`R^M]8N7>dtT/HXdk:B]1!dDVblmi;?b4G/=02iS)Hbk^Wcqed-MY4l:Sj*4'TK(jg+RH&ZeOp40CUpB"+PA%UmLDFQe\4rF=RQf&JHC4H$%lX,2>SpqPMR.i`\2.[(25P(q/f=skDnJ-m@:g5k1M\KX4ej?4<],,0ao6,0m^hd^_qLCb\^b[lSUhn;%6-pm]$8N[Xlh3(Rn6b:s;i?`m,^W$,aKDY478BADf;JVRk8#f^1t*-!Wp.#\IkmTR)D1NmpVd%iD8r4PUl]d9mC@HL$5DY>D2G%ST)62q4Z+7qi1XU!)Vm0O40/W@B.]p/[\TEF$P!U[#UXTg57"$3(W%V7nP.sidnX8^sDrOWpfciG06!R"khAT'FsE?*=+*H3D/g0<67>pjQ52X!ua01"Iu/R895W7kM^CA&\RgNO_D>PHWul932'0=;$M:$n'rI[i5T\TZHPC94[Ka2-3=^qq=7$Y=Ro#X@6Cr!O"#@E'68+Bf;E&UQ$T.gL/]#J>f-=ZKNs"7+J`T`W:ij^letWJ--:RJ:l_%''JB`88hL;ZB?Z=Z:>l$TL).QWIr;Pt500l-qm&B=elciJnG@*,a\&+Ih.s.;X"Ejn:*mFln7k*E.l_/cFE.8XJ6_s0D@!$2Mo+_Z&GWZZX=HRf=@XFMT/L;2-G%0I)d02%h)-_S/<]iAD@2CLS+)QZ43K%m,eYI>>lCer/5`TcaZ:g"_b3ifg63A.aK[N\c]"o>.[eiNR7?[m&&Pqp2#DF9C=fo%s]N@@n[3N/6Xf5k!@,5-?$d+>3m=q3%C]a/_UaY40ZTG?[P8Xb^2Osn3]sn3$/Mm5^U/X7gk6U7ZY=pjJX&B$`o,djhV_Q1j"EutnCjeq4,=UH-ji`bPP:CmQ*bOZj%PHJ(A6LO0B@V(Ke;BOD*,]ajSqEOhK3LsGdnN*"Q$gE5%WJ<,hV2h#WLKDUoV)2Y]WP.Y7D#3gVoJj>oVl8mUb`W=N?FifaC^nS\1&S;a^BbA5&2]d=K[CrUC@GHYYUT:,Ek&YZ(8E1>UnF7%-T%19dj)85'>"%Bu;)"=E5'4JkW$j+e&Pprn:+fH:c.'[mN?O!SL-rTi`)nNW.`_HHUtU:s^M%-(fID3Y%]G;E`t9>ja>o/(%'fjlYN42XYiN\oh'n4Hi?-V4'Yh67]C6:\N=ZK$:)2JA%5]Pqg9,p/^lfp/Ze^d,&LSG01m3/@gW(X]!iD93cfoHRjFn@uRB$HRjFnH`OsjBQ#a:46;M*QJ=n%6mC>E'TBrVF6>RGH7:sKCWQIKdE*38=G"u&PgEuq.+.8XouUEB!T:La$(X]WB[2`;]GH3E:IdK+9*^f^=li,o=Xl`=)X5gK;,Y,>ehR:(mZ6'9X\Od\%>O=TBXA#]hLI8i,RK;KiHJWS.cORUe.WF86VRmANj#Pi`_S1iq(/LS#GAF_;pQ-Ou1Q;.Y<#Ql99:$>ppE`q)QCC`RqCJNf?4q,keT`q7`$/%Wqi*OA'G/406nGlu6%,1*q0:J?XTXgm.1hLbNg][H49"t(`-[@A;cK>h9H1T8aTLltJAHl94F=&(H:`EHdA\$[>%"pCfPtH[p68Q]9oll7r9KJNr*?H"kp/^lf2m^oA%0I(RUN%4WN-2<+?AF()`k5;RPg3V5%[aY;-()=>*ADifgL*cap1!-c+f0"?.V6ngK`B>D"69e@+=pR)*]L3/h:EU^S:rK/X9He_!37j(D)ad]#5ZjRMr"NGHi[c0fEJ7WdGE-<,qB#:l+i!I&X*!uKkbfj!-6%BJ%)N=7fE(Wd0NJA^>@\Q&ac>7Gs+@rF4AfNSe'p/^lfIDOd_hTF\iO96!m7C!"Vi,H2)DUj:2lFe`/;p!8IYpW#Qnq]JbETK[Q3SBYC@`?AE>p7C?1_/"fLUeb&q]Q_6;(hdTs"O7c8JotF;"=e-;"8S1,dh!%mj-Lo1=c7>R&($f#@jj).:&m8"C;P`qKePOZA,DBIl<;OrmOnQ?hdK*N)FFs*#'3a-DJb/8q'=q)R.A#CF)&1dc5d;jQ1:LMu$jphfH_X]\E-gJ0!gm=kD6gDnlZs:,j"6R_7FT>`LCKI9R;eWcGR(;RGBJ4[CPR"qRU=tbKe&NQC,.c5[U'\X2BF\5O7LJ>mQcrOG)TppF6_M58.#MEo:OA%*nA3Tq`$]o;='^0Zd.I"?q@T&\9&Ms`u/T%.kg.?UGA#";;FPWtQ'[Cn&hF,=Sn,,UNClNBq'H?uJ-,:enj`1I&,B0mm`JO-%APb-B,]VIkL%^1/2[OfN'tVCh2pL`\@,\DV+I-^Hr4md'>2A&XhTF]thTF]tgqMEFfj!-6fj!-6fj!-6fj!-6fj!-6))H6uXmE1VXmE1VXmE1VX_q$Tn!%ltagW>?6,fI?#&hKZ<_]P%i"Dco,S":i>S/]i1PeUbU8Kf(mB!3U$B8"0EhlX0EEJik6'7&h[7<\cjRc&J/j=lD]R0l^1A=g-gE^H6/m\!*..L?nE0V%%XmE14YFk3am&bU"PWlL0AIVGg>M366>M34dZ+%$JZFB,&m&fWVm&fWV/;pgCZF@-KZF@DSDe3iuDq/3#:N)N*DTP[,'AX\IZJGt85H#`]H!'8L6"fL&5ifuc9M252J-5at&6n23`J^B@Le5h7,fX9A'k`]&ef_t@@rfslGJhMgP`DE&Q<(d\4FLZMO0GXc&*'UP@T>o$kob7+LdrS<\80SBd!hYjN4`p?.(#KLq*GHKhf]%]o$-+P`Ck_f-50cPAo;L("YHinJ;_O-QS*itM\cAs6>=!W!S4FN$5=F/SH7tk!IXG17aTk<)4\I/^jtSO2I3#Q)&-$('-<_>(uPR4q\0AhJ.7c=B0e`=$nbfK!/9Q9^c8<8().+XTWRTJ6Kl5n(GC@%QLd7I%l,9>WU3"Wcq>u$)kj&D/qR':"f-58KPV-;(ipo=pSYC+GC\6P(BQaHR>&(n>Qh1rD;`4'6X]bsc\'g?(I7L8r1W@9/p.5=$:dbTq0'QnjA9J1Nn).H1q;1X)/t8<[Trka]t(N[0W?Q6.%G2X:"^LGJ)LI=F2UVrG2XW)Ir2[T2;/,e,M!VY<[2GTCUn[)XS_R8:pSt.]JC(J5j*dGeq<+CQ\!F-`D1-^&4iZ4%]p"%*gc\"5\t3Q=_g[j9T_pnmudd]mg6K2WW]DHJoKMC%"a*E!7dr\e:fZGu/mDiGYsT>BS-Gb21:tb.:;YDe3iuDe3iuDe3iuD`(qU>M366>M34`QG&QsQ+`HrQ+`HrQ+b_`FZmE<-I>\dJp;rC8!>egk_UGTcoV"G\@!*\TM:JCkYFQr?2^`sr'q%tgWhup``U:QgYh)Q,'2?4kD6`8.b=aS/=AgD\GMkE_7Hha"`Gqq$6FZg0ehRka2+B;N!.=*^'iS\:&4B'h:rK(h=(kUY[do^Geuj&iNYt)p#5-]NR0',5Z>B7cs(LBFt2AVRL1'c__7:i!$^7TODbA`\MfO`^&[R@3=7Tc"n1T=f4KRUX1*_%6Spfd.C9/b`hBtBi1>;a"#'WMCQj!;GF\;^sgbd2UI[ad'6aoZtu\D+l1DR_F:]sX,Wdj>P6d@Zhflh^tF)?i*B0l*QiI;]Bp*!s@6o$]%ksF(+rbn(+iho\2O?<^]"];A^1rT\POapF4p-GJD4pcahJiU#e6[uqXcRO_88WkhVm,Wj'^9o`IMSQ?bQS\*V@`LCB+`RJ43.VoMM8FKkGOoHn@7(Q8U"BZ<"^<%cF36:5o%[e7YD%%PZhOEt*ZMfXc2E=;o-,-Nk1!j#Y[?B4Kp8-&6*VS.!cuAl-cW'u9?=.lc,4!pU\n_6Kl'hDjAZE%7+XGDs$>S7p,uAad>DhPQP/FSo2UL0#LFB'bXEH4XaD-HReb8&31n;Wkmd`]Q63eS*dg273RU_6J_738Kf(]_5juZ@H$HV\,]>l,F_$Q(D^6JPgXK$b0>UpA?4Er.N,+ag3Fh9ueJ+Rp*VtL'%/6o5?lKi$/oOM>AR7qOD58"rn8(UT#.#)sitF)d,j9PVY$HgVg^cDCs,<)^Yls*>]5rF7^pj3Ed;j,b:*VBH&o?bc"l%%_kC=n)0Prr]dNjp41kXoM3T2?R7q$iP5:+n3G"l/7%uq(LC1\H^DbSSHB"idK4A#:CDt!B(W`>-)u/L\l[5j7=q=#J/R%p@ep*H$de^;!*eu,h)XTEjDY^gi;L_i+,1bS8-7M*oR8XC%`JR_'bk)$1>@ecf!lp(;M67Z%`<.hLh_(@/P[J_9$b4^mU06`b%6a=9-hLp+lEBk#]?)5(5C!:,ZY!KLnsj"%Q,fhUHJHrYR24EtpZu.Y&,+mK":QAU6%(4!hS1b]QFE/qVbLhZ^u;*+[L5hdEq&ZF@-KZF;Tu1\OlCK(pcfk"2J?!'b[qbI<"$.LhtsEXMU9J,Thc,lUllPbA$Z0o;=_Xn"boe\;>P)>$jhIY3&(,+iqd#fFTAAp_@@M'oh/^]VF9_rDKdm:X^[t5H9=qL-LIY42:*Y%+kcJJ5iLh@_9iXS.!Yr-b@*/>L??N`+0MP/ck9R7t?7gA@@[B/[F[9]u\RLAa,m);J*3-+L^%NINn#7"&f'$`ndJjZG6i.K@j"cl?G!le$+$kAn)Jbqo$"=?lm)N8t*&TFg8"7@6m*_^g+$E1#O!%tkJcD1Km["hCh^u>,@3)lLPAL\cSOI+1&@60k_fhlq]fL="(qu!nX@4YUKLo+YM_DaRNn%dYLqE'U>lha,?hT'V+*e873,oFII2KoI8^k4#[JNH>[!f'S7^qnLEJJOri-YEeEnEGU*XpsI/C*7mA3l>f&#HtQ)2%J,K_;R2'>sQ7<4d/GsPm4>fprAs/s.-b9Ctr2%`f?YsfQ9VY2h@sSrtB@6]PQ-=i9*7G@+(;&^^Dg/$GQG3$F'/tof9h8Hg#Pih"Bh8^dAb^K5W[J%">/S'oX(r&b*LoHn#;s^@2c&0^3:j\Eh^:#lQ(DZ4>p4Vph;L^Qnd!S`Il7&(cG$f-Z\s'^(eY4GZZ[#>V/3*@'tV%mMrU9R-JLYiM?4i5h;p(if:ui3g*'_:XMiJ.X"rJO?@+i5M&^%3Cr01mkn""k[26!6.g%":h&A!b957"s0B.1gi6_4d,nB5Q;Ak^?QM"GC90Z'0(*6&PRFs.X5XDj++U!"*,1=1jJ1hpOI9O]k:i\IG!BQca8;W9ATj:/t^WfphuUBS\:<%Q+`HrQ+`H*43QL'hTF]thTF]thTF]Thm0_s\$EKK\$@R-hTF]thTF]thTF]thQ#JET&(smJ[t3XlM40J/cuee#YG>uK!JsPF;$IZckUmff)j5TAO'>o-9-F'REilBBQd/X%<2,MD,NC^kKFbQi%^668mLHSI[3]FR>DefUSBmMAsdcJb>P)$.O\XYGJOY'Pd"Y@jS?oL"bQN_]9P&45_=%)rjqp&[hY`%!We5esUlop^9[Du0Qcg`jEFef'9H1W=hn$+_%F$'\bVh`@*O(H/a'03k6p7B?X?$/klL$h-m:H4I=]KfA!QNb%M2a?'t\@X5WC'*'^%]oPF1Y?h$%<`dG,Y/M/O(H/1j10gf.Br\o)Urq1]:3*H1OuCpP1`%,FfC%h9n9@WlY%4'4';QqNi#(Hl&MVSfPs#o1(RLMSOZS.@*e?oq"7H.fQB$Ep/i!\H*fXT_!\B$oCqT2Q3T43]F,W6Bi+@s8:&hCb21:tMV).d>FF4WHRjFnHRjFnHRjFnHRjFnH`M0%ZaVDnDe2TgfN[$5fj!-6fj!-6finnYDjAtFEh;Lk.JYdHiUN20\#MN0"tX#j*%Y:%_AHcV.1;Ih/6_`o=SC<5Se/N9&fb'H@#T>#!A&FF#XiSJs+=agCL3udeD@EVJHW2VpZ]Qab+^T[t/B$)o1#lR=l-^Uo[f3[M?ts)^]^1$*`u)&!K[03ATf8=E>a,3!W&R6g7+h4^eeX#?-+C9p$d,rCA0+J]c><-(eSkSBJBnD20(HejDI%rD4Q>4scQEPK4:e\ZVM5Y*WD]:?d$cBJ5]&/(@^:=JcIP*rtEd=g?$WbL3GP,]#K*!^@c$q"3=cJ:H.D`*4PRn3ueq!Id5$"i^(/=eF>jBDCI^3=IeJGkDdJ.=OY!oAl[giX!laq[0"T9.5TpE24-Vm=R?C>Toue"2brC4AD!]_=88ZM.%2Cu3d-8ET.#omnkQ,u6iai9;)nMohGT!oh$jI9GbcmPoK+aXCC?bSVtC?XiDW3*<;APEu^M1mbcS;h+t(uBafsI*s"%PUe_UE5Hu8ii&2mU$BUAME"a_bHX5UVU)86.K(WQOsE&\!5)=KP3.sidn.sidn.sidn.sidnX'7Ghs5H#2!tL*:2rbokDe3iuDe3iuDe3iuDe3j0h7Zh1KBr9mEd9s_RrR*L$/)DClO,X,@%ZFfhr4$l^"k<7kY!B1gs"H-!67$4A+D)B8&LZ&liKE&r!H&bQU@g:Wu0b#n!-U)_U_un<`T"0VAAC[Q'JC;Wt/;.IE`8+ESIXLY((Z%s%j^ac9K;HQ7PF7Z'4Eh&oX0HYK/_JS'%c.%^ZP38@FV"8HlX2[)9F;L6!0b16DK#3gb9qWe#BW39*%k9*ci`!+fj!-6fj!-6fj!-6finVPT()GS%d8EQ3.(h^>M366>M366>M366>M36:]\Y,8-7GM4!nK&t8b\l#'N;=E3Isa\;*^-$J.CdnPm#UKntloa$/00cMd8osSCOZ!O'HBf%9KF,Og61%S*://2P&-GY1<`09q^E\C`Kl'+EH$d+E]d&;Xb1Iu0MJ9QlS.fD^FR7pCoUl'A?[Mc:Y;n7REc!k]/ruOu?dLQLp^IS.$>inS,l)``_Wog6/5'OlNQ-Qf@6D&:f<@H\[b22DqYsS.b%d8G\,bVhNWU-bRXa71N]p69r^""4JhTF]thTF]t!?LZQ%VTc\.XN[mX59mlDe3iuDtV/V\$EI]*o>&F/Bb=MbHe3X-%5Z!De3iu=dEW%Q=X3"?Y+.eDe3(;AQb=1=k:B"De3iu=dEW%Q=X4M^h%FqDe3(;AQb=1=k:B"De3iu=dEW%Q=X4M^h%FqDe3(;AQb=1=k:B"De3iu=dEW%Q=X4M^h%FqDe3(;AQb=1=k:B"Dfm)6'a(bPdm6@Rjd'I\Q=X3bAIVJ(TTV1I]p69rAQb=1=dEW%I?V@0]p3/3Q=X3bAQ],%^"&,5<`u(Ih\c!(bH`\BZ7O2)DDo0HoUheA5p\/!hTF]tZ7O2)/Bb?#R-^sAXXqZ$/Bb=Mb8RnWX_tAPb3-)R'pK6gOW/SBQ=X3bAQb=1%>lbAd6u>cH,#WXQ"=*aAQb=1=V]*9WiYQh/Bb=MbH`\BlBCS:b3B1YK0Ae)`Z'3"Q=X3bAQb=1%BeE:h@.QiF26YThTE,TbH`\BZE+CEDcJ96/'G4LbH`\BZMGqqX&<4fDcP5Q^$8'nWF]4uAQb=1=bEG!61e47DfsUeb-ESAZ7O2)X?Oe`WiYQh/Bb=MbH`\BlBCS:b0&S`Z7O2)/Bb?#50;Z]XR*&?bH`\BZ7O2aPO,Eob21:H/Bb=MbHe35akj&!m&_h^Z7O2)/Bd=Bm&eFQhTE,TbH`\BZE-73hQ![DXXqZ$/Bb=MbNb;XXiefCb-ESAZ7O2)X?Ob_WiYQh/Bb=MbH`\BlBCS:b0&S`Z7O2)/Bb?#50;Z]XR*&?bH`\BZ7O2aPO,Eob21:H/Bb=MbHe35akj&!m&_h^Z7O2)/Bd=Bm&eFQhTE,TbH`\BZE-73hQ![DXXqZ$/Bb=MbNb;XXiefCb-ESAZ7O2)X?Ob_WiYQh/Bb=MbH`\BlBCS:b0&S`Z7O2)/Bb?#50;Z]XR*&?bH`\BZ7O2aPO,EoC1t9q4,*@l$u50f1-q@N5,]bU*Q1'6dN][@3CqJ*dmYH^;J-^hZh-fN6BEO.I@-E3'oC/`=Uf6)a?+P85!k:kljP&R8'S\_*YQAq_Wc/@ZfEO:[Q'J[=,Co1b!H*O_`RtFah&eG6.$)4iePIQh;gP%:2Va7Im\E/")AG]pJUQfHPSbc^i/(dPu&USIZrNTSd9?%,/cJ*,1_[/A]d[P>!7mV'$eHK/M/hg0nMts7C5Gk`NqgX^i'q:=8U5Wapk6WqP]QV,s@9.]I0TY(DNng*5k,9!0@9+-"aIaI7lc_'C'!Q-@nSB>4&H'AT-+6Dq3#^_:.eR>4&HYXmE0-95hcuKb\*#g4Pi>;ijaTbek]<^*8G66^(KW6!Ci@3=o.]k$p]G8&^LH1]iln(OCXYK_LM8R$MktUlk?B8ie8]R<^c`,C+NeP<"^%(8PSK5I%:16!F*(TS=R9Z$1X'd`B(BRDe7d0o5eIUch#6EZ&h':e)(\:'YdYAeHJ4%W%HMdd)Om&[hi,"gV:`:s?gIUu$DKP`;=\ZT:WIn+IkEl?e/jku\BQ*cd\bb=,\sPlA:;U>T%@"S?hA%LgKTr#L"]bMX.`*7H`J[j?pU--:2lFSBTWbT(4EQ86QdU=Z_>^_E!fORTW.40&C]s7f#cAoQ?/%U#+:FmE"T6B[Xi:0(RuXt^-L%)Eq+$Y@oLajOUnJtK(ce/8*t1X`lRF3DREJ68NiXN2?$`@FGr^rLBMnB"4fCU%k33h:[!h_:cs`\R4EqY1']'#[!]D_'BHs=)[*ZmW0=!6f@Us=p5.e3d7tUTeFPJ[hCZg,g?gmoI8iL'j,I$F"`178N%,Sf:/&l#8B9TL+G[3-rN)Rh\(>4-07?A##8=b$Z%S3YC:5MZf)O]3[94G&N[4==-9O\uI9JTCSgM,`i\fe[Oh@@2t.qo,-fbgN1ZrOMCR`,'lemfbLVl0JW5j8_Nkq'Z]N\@U.E]sfXJ=d)2jlgSAk2BiGn#6[*XuE^O&YHpOQp.MBFTh$JBi+7"N[T(I2RpK(@1jq!:&7%E:Zp"PS\"WQN3((lFW[Fr8El$fMUg(REqR`!X:H[\Fp^1`ok>8t>F!@f.N[:"lDhPJFd?@5]iCuDeaI'fAT)-uAT)-uAT)-uAT)-uV#ftcb$JK:FNWI_hPu@tXmE1VXmE0mg08^ChTF]thTF\)>OmVGmA@t6?M+SR6EGf6c`.?#4'1aC?__1qc6U!Y+];s]C*X=Ji,fn%8tHc#_.oOoh3t.%Fk4u$;pWnF\<8t:*fO>6`UOp.SV*Pq/I!1-DoErkkOgpGCa`'%)MasGeLBV?+,^rcXAmf)([4\MI+SE;:Nb$hOMRmuaMJAG:i`A5_JUlcc+>R*rqbpsDjaMWsgq#37CH9o?#M37$mmLmd-/d]2T)4(4hF4^%X\:a=FeZ!qNC3\m;G,5;L?YOnk:=A:(BC+g%HOeQ$ssDV87I>M366>M366>M366>M34\;J1?WGb.G:7P9J%\$EKK\'cO.WP+S1Q+`HrQ+`HrQ+b`@&.9KkDl&)>7p+=WO_0XO!0uT"7k4%04Mk6,,O8L&;Db[#iQm-$]u/'?1MRtgZV;_jMVYB8oa(#WaE(15R]i%LPi2!\-1>Kp"0('9=HW2M.95C\EQ@FLX%':hdC)F,.iUiDlC]hGO&Fs77?QTY,HJZBG..i_6Z+HCAVsAXHo'`*-j]AQAUh#[;\9emA"_U+8m/cggr8eO!IbBD%MbIEM>Wu]0M,e#CptijH;AV`MA=9eLa+6\h4@N!-E8bn&i_3$n[(!fuoge5Em1&<@2^2T^N6?R%2O1^FkA1`''0HX;E2\c6Eo[aum=XLXo\7QZY5#00(d\7$]$^CgY^NA0/-=CeUBLR>2`t1gm+C\d;HmLOH2Z+nD]s(8TuGUJmTjQR6/S>B^ZZBF/YSe_'hZ"C.L^D01UV,^O[*Yo4+Ukm@IaL\7.F@p(+lW*/e=@n-\*$4'k4u*aqA=2_m@d30[GVeW)S9mRKCf$h^&,ZSCQYUlr#FE<*F;'s[g7:$SiM`\Uq'c2bmM0O[u;nIlV[.:;Z5!c\(ego;-@8`"SoB;u/[,*:<[93_7o;JL[pe4OXc3[MrF*YQ4+d:P?&PLD8X(OjJHp5/bdkoBK$cC,f,L`?_KsG/KF`W:J`L*(eQLFIu(Q>G"W$m[=4\MDAOcdF(qPOep9)3r\Zr"2lpKJ)3p/\$L=j1]#<@W?rlQNqKH`KngX5@"/hTF]thTF]Te)&7(8k&lCfN[$5fj!-6?*Um(V)@VA3pj%u?WDG'HRjFnH`Kng.sica#s;[8AT.6shMR@kB''N;,HO#*5n8a1LgqtK:lRsE12AahD%d5So9`ho`G:N>+D2WN&K6b/F5oric9.gO`lJ>K1G7*b3f?Jmbe'?S,>r/dk2V2A,!U+^Ic:P%CUB4"E:[`$Re077-LD-!&WR"mKshJ-FrZ^uFF9&44N="IlQtl.NhV`cTgeM!VO,1JR\%JKjUi7H=blV#qq>D)7-a:%U0X6`mm1fDaMp&[V=p6NN*9l.J^HsF^+E'j!Fha=\og<_UTL5lb-'7fiG+I4-,!1s!'5RrR75KDl]S-.J@Zra%)CU`>:_N0\CT*?noR\SQV?p%Lbt[2:F4i!0,l?`V>cf.'j,ANTnK:Q$@0hAM-]--f&08I6B]A^9Dcm:aEkkr=Bo^*=X_tfBi#G/p)'7!9MYLMB@9]C27(6+7p:#]':!I6\QU9Q@2r-1W]8D(Kj]V:XV.-.lEopVd,+&f]iDQ.XmE1VXmE0mfN[$5fj!-6fj!-6fj",T]KghEX7fTMZF@-KZF@-K\mfShDe3iuD`&BgMBA(cj=5DDl`d(M`6=K7NpM9m76XtUVahM%W]n]!\r+sO;!dpK,3pk3Lam,D8B!D7ZF>ti\]J&-[3-Y&N6h4HTiN_G?!k;A+boX#5*7+3YZF@-K\m_nR\mfU./UK!pX!.+9RtB;9RYOJ(K.;_Z1VXE0-Kumj,LYru&a:t$Fh1sYTDThD]96puhU0cZX@c)d<>%\<3+8W>3`,#:%%4"J<5D'HAJOZddu+/bamB-()@2^:#;If5j03n1_HL]^f$h]&_?%IH,[+4(kFr&_cf/6'D\%(ur#!$m0od$l:=4JoqF:QCN]%:63&[=f">qE-"="GZ\)N==8.mH!2Pcnn7cIBW/6p=Tk\ZI@'>`#q!k/_asR7El_Q!@^m^EQ*7!_0W6W;,.Vk+UUL7;o"ECLs*Y^66R0FOr0ao5riS\hrF,O&N4TZ>L_W,+jd+bH#LCOiUIUO&8W/(^/[>`$G!uPl?c9Ksle^(*A#Z'`D>jj7!`)3nSOf;L4T#HDa\h1L9?1ViBMW6Cr6AnM[g0tcbAR1(,A;q6O,-iSS\";G`O[e7iS?#mAYq^D#d4WeG%[6il3n2\fWr8i;bE?1PjDBs,K3c)ecf2()A[+GaS(QYH&i#6>F-('nYtuH!SC#cEn;4#0JlUo+bCGQ#VhH"P,'+-q?,q$IU\F+[ogI$!mZ17mlYj!<>kV3P;+k<]qX*p/Y8]Xh&(^Fk,?khTF]thPsfRVMkBO=jLQ$CE1U#)`f12Fc))6S`Yc>N\gg6;j54p,5\JdB+;FS=pbIp0Y+(PV.$M/E/r6m[=stJBOcME_%EKAO,*h9"TD(uQ*<@o9Z!+/FaD8d%5CZNQ8O5lX/Lf_`':\SG,jn5h<0XM366>P01eX/kqph6OMq\$EKK\*C?0lD<`%:F("W&L`",;V>8[Z+'"a^"&Bg1PnTPMV23Vg0nL)"=X-k8XL*_E7t>46&RGs:713\gFgBH=TpV8H?:eagXHhuD@AcLG:k)0AGutMNk#uD7BDk,=-(,X=8U^H*ra:SbTc7>5+`Y1o,">8(AWBc-E34j)>('H:XJK-SGS^0^7l\I?ct?q.2sIo?($"F6AnFs%S*,1YX%DKYM,]bHW$XsA0^-Lf]b$D`unXUK>TqBiVR-=TiY+?&!&5-L$F)D)'j_(`B&Ad]#eCj<[Z6e?PPhYKloD2A/iiJjYHWS"]LU]F)>;ogEUrcKa\TR5qQcQ7H]EMS,-MGKdC8HSM33iMV&j@?1l:fdO)QhHIA*S1VQSt\`#dDR4\Jke=q.("98H,e,"K!pFfs2"f#rnTTJecnoE'.u`i5r#INL,GFFI2WHNQ.3I^iUSBUY`T;Mr_n6\9UY4+'1SZIt=n7NN4J'kj:_*81\*^cGY4WO+5T=ta[4#JH->SuuRp7j@AUZ`&m4^.6TZA>+C;U8(/LYft"9Uoh3ckd'DArW*'8CWQ/la0XpU/LQ\%HDS4;Q''`KOnjcdEak!/Fu[>r+HP^fO%6\d:9+t07n$U6@l8:.7Q-0=Al^dpmaWm:O]L"XK0qtpNdk5$>@(s<8:r_h0_ko7O)R\7,b:'>C>u2@B/fGO-IQ5O\"HFCG?2r*Q+7[104VCCkYq+q\ohjEI5WfOB6>!4C?V7)2QqS^S/$spZf8;qmk:!P,Tb?-P^:oL+AJjBdP9'Cd@3ZK>C+C'nLT$f;R'&FX%n#B?E0^*T3djRNZ"?]$Mq/U-?4#l[$&_V$;>H^h^a`5C+:]$(+Uc")F_,f)<9.WDb<[En$M8gh>VKZQ/VBWX-GSfk1UhH8hSTX2<4D^jOTohPH&:&W<$!)D@[pJ,q3PSn'KgsX9I$EjSKMN/m5ZT`t/aK#FiDi;B96]6,;C,h]p69r]p69r]p692VnJA/Q+`HrQ+^1Z[MT`NWoO43OhFcJ$e2NLXfgA^Fj&XAe)%*/p/^lfp/^lfp/V:Cd!@2_,j]+9%]^M9NTmRP]CeA<+4=pi9"gL]7<-M-->DYK3X(Mq=*M"=AS,ABTfqY<_Qja:m#[fo1i`5fEba6Z$g^@M0r`6qhpTIc;Ym`SYCg-g.,c^-:Nl\Y$5RFLZFRcl'%6*HnICH=oGs=WU@*N$n\'IK2#FF)Gld=g6F3U:QN05d-ZVB:"fkpJ%D,4M@:+LMka@CNf(1S:Y.XK2We1B]0Q,.C(Yb-QS_sn1J-J9%'@"e\X2=&U4LancplBUV(JkQJDD71A_'@'0Peb4A3f9S,K?O8:Z3k)KlX,5N3Rf@\5i"5b`'ak*Eq/GOk11mb,@DQgRRZKqc"@ZbT(mNlEc>F7p^<,WFp-,E7nH\9&%DCWq7ihX6V7$AT)-uAT)-uAT)-uV&*f`FiE4;>P;+kBlKZ?hp@Bok+/PEH<)?hX`un=>6AWZ+s4tYdrhdqV)'R+1l>OPU`,Afkj.KE*GK3#'u)Ru\$"bZ6UIu7X+H/DA01-/aR5bClEjQeVsBE2oi[s\iA*d41@c+NLbY^3dm:jk*u>$*HK6P"5LHAJ_V[k]l6Q=Q='pGrk*trGr&T$]S+ZT0&1S/S>'S%u8_?EW!%)**Tr>RF`0na4e_\UGFgIWBe(YEHDN'add4H^%4UQ:,6'EBbJImp2X[g+W%VX7J/.o&@E)on#R`$O$eh*sc?5?eauJ/^VG5);6nP=F(e_&CXR[ohX&?3!H`L%!ZFs89^""3i5$28sp/[aX)4B?:em#C:/r9-leJL&;`3&>5>FrP\81PID.QNPY[SZM_eEAL.Tr%GX.7eA?^%TX_9.rdo(,:j;&S%D>K-CgorBe60)kP#2qM-G#"D;kJ#1Wc21'`>9"coVNed\_nYo<=:V.-.lRTGjGqWO!I@H7J7"sFU>;N4<"cV1XR\mfUNqlsRJFkPWohTF^?LM366>M366>M366>M36R_cs,8pXUk*$N2NXN_Cd>+]M$DIcXI?/Y/seT:FHU3h@SETcT&l+75"DMuIr_U<"NTl_>2QW./Go4#O_us>^`ua#FWM\]W$$EnFVN>Mu69Mh%%6A*$k@gFr&6.T=+qG>M;9PH\_\_=m7K[LT`<7F90;&iV9+YdD6UO18u5AR)D=6?O:Mhn&B.dF(B%_6jBd]a^UDc60V"Ko_:ru'X=a\a+q&dChF5]4c@XN:6B/N&K2`3!8N(([pGl1]%5$VemMMNp8he<73_&Z?tOiP79Yu9?(ddONN#9NV.JoCVtFI7H&tljl`IZddKtmbVFu_905DUM@33-[XCQ!!M,#Pkp5+nVZ`)H1(T;s3Z6,B(Cd[@Dd#,K\d)Qntf6%.is@cq,RimaZ)c&pmID'\:=^?luoFXl?Xq.[@]tooKqtDe3iuDe3iuDe3iuDe3iuDe3iuDe3i%WE;Re4%n=r8bQ1dm&dj1DfsUeWa#0tp/^lfp/^lfp/X+;[t_BG(fX(=rcl&V;5k3;`u>pci@1l27@.W5R;U>"Q%U5X@A021$A3WQZ@e:;@/2Qt\%pIR(go!Tq:6CVb>XUh=I%B,SM8N]/A*odCH,:nGUT"9%kl*^,F*V$[V"Qj,m3D6SQ-Lh.[_8*=Lk)kRuPc0bMauK)qV6[RfbMK6up/]d4HL:E,AJYbYF1Uc8?F@mO8r]_@a%MZKGZHJ(aOn\AKW8"&g<.s7[uApYeBng]0-(:DkG@h^\-g)IF$C5385ZqFVhN5+Dqq'MHe'%i`<[2dr%UDI^.:!j>RtuK1.\E!om=Q'7^Gac\r5oB=\_+L*MYD)ZocD'nLcmbPC[Sg/Ge]30'D272!QUCCPV',3/ja4cccMBsCP-]ZS1VcTVHkX6:LoHWdY&M]IqFMM7fb5?M_+MK8gN"Ab.7DZ*FoNT+2n^Q(r"Kot>6DD.#hH7QiI2[ZPYHmdTCfg`gN_rL`X34HsP`sUrM5"qV[C)'E&NST"AZ#]=p-JEYG_TtiBASUU7Qk)6`3AT(B)pi:n0nnHkNpZPj?-()*5N=j!eRlK*]cM-JME'esd180Vpd[u+D/Xl;__$<>g_2J4G0IZUFPb0PJqE"&a\Ice["sgZ4`1F^SY!Vc^M3H$&L+UTK0Q&'KM:P-WP?%\7h6TcSp614X`$$9k08WBA2/"1'Ag4F2r(g2";,[4`QhoE8,9+cRaRsobkGq5*4,\<"0`%";iZqiFLIq/51OURpD"%VXCVEF7J!H/R`UP0XBUg5EI-?@9Gel:"M]$Ij5+UIGkMj5akZ22jQ->p4%EN?TLga[2!8_be5ogmm'5&M+EMHe'%SgSD5)RsF@6p,Ii]=?AnEN;afl=KQVh!.(@omEOQXl2&]X!+MYqFO29rs`-YAtY+O%;6DD*mMY+K1nobeilkh\XnA)3#1I?9P3[@TWIeo3`?h^H4tcgK;rc8umlL)rq]CY6T=!+`K^d8:n,FUl6_&q&Jh>K'5V\e\YsG.EK_QGmTM)[1_^g\'SW^a=gV*pZk`pJS%m(rB\$DA9jl+q3pr]ZRH_-9khB\`-#&g[$i[jgh9]dddN6kK!6$;p=Nea&uukl)_I7JBa*YbS!r=_D(W;Pg1H!eYtS2;fspekBXg6-6E0SJCXAc/!naC=,(271k:=_RCL.ErpoNUFWD*b%)N7Kp,N_fK>2M\AEZS%+$;t!Zi^.mY<(1M%s)FQ0BLaPT,WobDVqc;8DYErU"''/p>ai.PMT^U8CehS-1IYPO(\_$H7'4'T2'L()&Jc7X$Ecq]AVDU:.tQcMq@+0V#N3QA:*nNiqKD@r:d`U`p*HHg'u6i`o00*`goJZT:kofLI:WKI:LF4kGaqc<1=**Z`?s^u62UXWe)OqZC_55Km;"bYEc'N@Wsi[pht'Un0iQ68#8)(mkg_.Et7l(B6APD]6>YL\*"a;Tl3%TH%7\B6]>;S`6;e4nV16D(b7!D?A`ZJ.qU640m!MgG/R:S;3]B_-eg#FEiD^H)p%O1rZRLENA8p,&l=P$XB*>X16\)EN?TLga[2a(Uo9+`NA-#E@]#gr5>`*j&XJBLWYQ[`N:2<>K*`(19T78O=*"U!&hS(_3Z_qAW!%UTG0fb\c66Pr-&2n)CB\/'CUg2>(\?FVlor&"io6$t3`-]k3#l?=j!h;!r^/U1"\9*Fl'VF1l(+d-Jpi4]E7$)Q(Q[5]\UK8_JYfgM4?G@-D_]Io>G4cXN.Ag2Tkis485'Z2_ZMdWu%Lj/Tm&X+DIXB1mo@i9j/aCBq@5mDVS3C9";lh*Jg:VSj5K2rWS@;ZsghIH'a/psmA&j.kNOVt9c=,KXDABX<>K*`(K*^&j]K!4a6#u;2s"q6%-cEUPK.l0SQG/>E>#r_pB!6ZX's+>#X2F',6g;o#,.HV._Z'.tL$L:m:"p3)NPcI_Y?/6<"t3M,4;h55Ec:tV);:upWC(FnfTU+!W$&>r8L'Wk:rAI8%]Vd4K+QlX0O_2`Z=@Y4:9a190d_Y),).kk1:s*G%"nqeF)'O@bA>\H_[Q1q$@5Meag5>IFL[cl[n:JBQQa<=K5\+.t\'D:lMDP;GHCiYqr8(ueT>M-F9FtWm%DY6P_7,080[1RDZ\5h<6DABX,,]5K-<_iaS>4!bmM-JfVXWE:&`NA-#ENAuH$XdhakT#nXd.TcCRXi%X_rdh5EJmo9OYlCIW33?Zc,=6._JR&R'+B5OW8?_eW!F6"e\.ru8clIs*ZhV+8r*KZ<76LLN]3#ViMD.4q6A0H0-d(s6Qa@;5-6i;@]7d3gfGaQ74O1E<7U<(EQuhd(:tp10]$(T^CDR,A)3"c9RaW";8BXZNlRoO>I:%dNi.b?$Aj)qp`0W90roZ@/p9sBn^`h,r&Y+,M6AjC$NIFIO#Udr'9P@%B0s-qb(X[->jE\%7;^j&VMVeJ$Vd\CEd]XY+Uo#NAd(X%2/MEN?TLga[1V[u+Bac4\oi>M[9#SfhonM-E+S[u+BQ'"93fuQD\^gN'4F`X(:$:sV)R/qd/;X:o)*[Kou!Tg*mPtt0@k`9qgk(cDABoBB5V_^E\b_lO&@Z7Z0kF-`BUOZ[TNNl4L_72J%_?lqA]aLBG=MgbIXb"MT7<;a`C*pnqC!:S-"bXK0AqI!ZCmA#$2ea'F.WO_4mZo(0uj3QFdo,l$:"alG![tEn>?+c9+nu/,BCG'_ZDL-7u7CVdkP'#;&*&3!jo%'D:LrkUhhJ7hiLFV/d&Ai`>E3SO4JM+q.7m&uN?)CO(&Ap%k1HEH@K1VG>.c=F<L=kkKE't9')`NA-#ENA8DBSpUcX$q#c,5:0F6b"O5:WsBZ>#*j&DABX<>M),6PkXXa8N-R:&4#1DM4Da)R"^B&8=?ldOX`J?BtI-/@L;O2)<]=c4e(HL=Wli5Tp43b($('/d`"i:s"(4GG?3%jIDWPTCVj1*`+!]b\Vf=.Ia/BBlV!TZT:VpUbQ+6'BG@W=Pa0BoocBT,`J/qH,&XfY\CEHc.W0B'ghKdIHkVGgEpECF&"(pD-.(frh\q3[,)=<5haf6M?ZYW)8LjpY[Ijj$fS1R"`+^n+HV">Te\"jkfUb4J]"IVuE]o9]K6LYp*5d:119b>.G=d.QE8*Dk5rMW\19D?kED`[*tFIQah"53>o.(A#13Ylc7DQRF1MHC\[f\sB7G,!nN^>D;h`fLaF``JZJiV23f+]NHFFs#YrZB)&cQlCOI"HX-qWS\q*&IY1^$03?dA3^4[34mdBn>C!2"Pejd3N!g\NeWH/uL!r)#0:#/4VfZDZ@:jZ.>2WPSa,:rD"nYd0[-U2=C15qM[?%2C<;V[u+D/Xl&gV?\CC\$X16\Y3TNffl4UR`>K*`(jWo_%A%F$AKH8'nHWT.*j!gGOEslE6RBb%O;MRFpjj'20=,!n%s[sFt"PDusm/^@SrB@t01q`faU*-[h)<"Od*mTGcpTbT[Y7=CoH/U&euWfu?JZb#%+O@/L88:k&@PZDt%`ICP>MFR]Lm(Q=jPu%n&%lR[&`P4V;YP@2*YJIcg(>\Z$<8`>Rs%dV`i`=5GdC@`f;fSl8\CJd.Ynj,M\%7W)`NA-#EN:JFn[MTS.W-!1MHe'%\.Z9>XIl4=MW4D3ga[47#d#)URbTU8XfdLb`NA-#EN@3\'&lsDn9EaR)A53OXk]e(>LD-fOBeKCE.mKeJu@gf`69g1!r$uqM?o-UquZ\";kL:@#>fqZtMH\O)OfDQTB2[IWVN-N(e.(\X-O;7rCrQmV;f/uiKMdO#9MnkW9Os!V7e^H8cqKLcF.bW_qO4,L&iKCJh\eKk8OJiC88[.[VZ;n!1N-DF$$76WLP8?;%kFdCtn$t@T;/hGYa>9WY;NF.FGr+\=?YXQ'1Lr64\94lW(%85oH*0u3mNh9L%B^6u03.oa7tDM33.'F`+QXKjR3ItBU<^j4P8tf46f5St5-O&;"O1A<%id[TZG'B9ls5B7_KeU_AENA2G0,h=rIGF)gC5bn#\(VPEMHaBGLq0%P'eaMO!%sSTr[sAh!HG1)5X$=V+i`:'"\CC\$X120b.W0An[;l.cUWC)<*4J$Bo`Qoa2TCLIHkZRI<_Skb:4?f2E[HlH/8Nrl3oL^K.sB?hOJQ(+1%dIrJ>R3Yh=10EI@LnV@2"g\!Pl:#I#.VAoVh7^^eUl/XB7oP?:9[m#ORKVDnUmf:IE6hh^DqEJB1df<*8T"[DEQ\:2)qLZ4E[7'Bl8G@M`MF8`T_NY(DXQAHo[b\3\6<,3!jK]9qI#r/Z:1N.t421/aA+V\nCsc%&:UHMDLVg:h4?Fm1[u7p*].A@76(-tuHeM[4Ybhiha/C/[YdDKQc)H6@)?[sB<;FW\)M>K*`(enX120b.W-!1)YjTLiV0'0V;QRR`H96ScT_ST8?NMt"8h9L%`9ml>".]Zp(C1)G4dm\>[d'fM:nqKZ/uPhB?*s3\L0_0S"?O*gu]0WU([5U\[sRH^F"8R*`@^bjTa;^qSF6Q`B)'lc3l-/[;Y)HHIfd@Id+B;46dLSLC*]Fob1aX\>A]H)kDAD[/pcpN:Qs>+&SIZ:eAkCNFtXjtX`7%4`0EBp<)0o*2^LMHe'^c'?(VZM;dm+`$#[qb/+$-HB%NO]Cu4rnLEYY"YEr'Kd%NXcn-bSW*Bo(aZ!kGat]0T-JTnR(A27Di>^&)i(,J3G-#SUKj=XG6dVq+A0fB,N#40mKj#.K&nGuGc`5b@=Juq(^1=2,,?uPHbD9A.#EE#*$C)13H5K*`(ce[sPsE3I+2$S^IncJ#A0Fl?s@$;g%dJ<`lA^$/__ce`V9us'agNc&$5R[u.2\&nht4`ru+kEUFcNn\HCjVq8KZ3'qN1UP`P1$pBYqf.'i/Olu?/GG6Hs^BYkio2!b-DQdL`d"56HZ#7M^<(q!!'Q3_W,.IL4KJ4BdGPuJkaYL^m/Oi#\oK8GMjb%nB:?O!ISjHk%UL%B"+"rGQ6YD[ej\\T*0bl[qicGor]1oDtITKpRns`5&:X3/r-Z1dZ(ueTJ`3$Iu4NFQVEN?TL,An7*MHe'%i`:'"\5h<6DH0r07o.C!\CEHVX1PlAga[1V[u+D/XlB8fF.gPi]hT%>iG54$k#'H2N"#$F3W1VmJq'@h/1g3O@)pT>8>t443/8fNggZ=WahYd(h32oQV#'iEPpI.^e3^I\Wa8ZF0D?S0s`l)mbr'"45n)iKsbosQp?PP`Y0INq$LGRd6^4D7@ngpD>PYcW[sUl(Z@B*p/KXY@WYe-/@93,\%bcj*_YN`^KV>HYJ43Lsro:uC:OTV/l/Jh"$i$-Ea+]R4o/M;ZY0I10na8!$BD%u3S9j_:#,miX[os8u`i\NBGTn=?I5PnbM-Gu",0-fqG5o3'"'i/2k6!?sR9_\in:3]L+c[0S//B=eY=u\^L)NLton/B,4a>UW\U/9LedA7AW,:ik8X6%:%6ASj"&@VuIi`>#\,Asn5EN9Z1<[#D`6@cRGGhn0[XiRbbjiP[3=W?>m`1>0(In5"u8Nj_X'Q`^dDWO9m."pD)3nrru0\`1<+:G[9"HH\l'=S=bSaBOk3B$R"H;_u#ENAT?;097sqdHoriBS/r^Bkmh\gD;0Jih_lG&qKbiUs"6HfJ/cFee/:X7sMJHbt=bgjTnrDKX2qcD:[^\CD@bjLc6'aYFbEjOdb7'?tJ%qm42CZA2psFG/89U=X86+k+uZr[cju`2tAC>D3&sWt=8k+iLM"CI6fk$fY215hmiB\5`fSX72Ph\(ZFDh.k9!L(HZW+bUD-+`9//ga[sg63n`f0LX]2P.4Kt+bUCn#[rP!eKf.8&4-XGKFl!3EN;[j<[!,-63n`f+lZOd`2u?3+bUCn#XcP4-Abr\&4-XGKFilo>>5a>$6b'663n_C&\"2SDA>JD+bUCn(aUPJjRi#U+j463orsXX8m/Kb-QV+bUD]Lg*Rd[gF:3&4-XG$k]t;,]4>`#U+j465Una2+cRQKFgHU+bVO;ghN"^<D3VT#U+j4L59&.'"82kKFgHU+UeslRNubc63n`f&4.3XDDb#@.YJ@"#U+jT7,2O?\5`eXKFgHU@>MGD,]Tjr63n`f&AeuuX%D;O+bUCn#U+jEi`;8]X[3::KFgHU6c?)R3NZKtjqj#,C](4]DU!f%LB@KT/<"O[mPj/BifMZ6Lm]d*NPrra^NrK7nY=+O)**j%2NH)(IaB6@4nfp"cHe^6\DipkVlpm%`=Em+j$.JWepED9nK0]E13Q%O:koE_\S!JnTs87&004Sbc=qK'BB/`GT"Z,PRNuc.8_e'D\CEd]X\MFB.W4oMgo;]=[706hb;nt8l>4D@Q4p`r,]5J2ghIqj<[T/1't8K7DH.@Zg7n1ojd^L,FZ/5[b;l\/IC[0.pL_";0'*J(:3"QG7A)cm=_64,maV_/r;'j&U%!Y'd9I`*BYlCKqJ6QOVh%EX:Q=3'XT9f4+,"MSh?i[rAD-n[BH+2N#Q4C2h-"o_XW7(O.[[.Xq6S=-T=6\AJ*VqC$<9C`s:iJMY2jM4s3o>?qoO=q2.aXYqJC[56kkDKUe?m7uI%7Yt?/iiL/%&b69_RNT?ghJjIFfV]&p^-/61l@!0hXIm6O@-5?76H5H68Dn15#2S-\=b4@TsWIfm-pclf?^W>CF.pXqo?_AFk?fNGaEg`>T7[`bEQ3OdPl?bDRF+A,V9KrYU"Y#iL4EAB56_"%t2E7jY3bG%YIt#8Y@.)?+bYK\El&Bh9)!Z`.M8/Fne^A?7UN>5uSP90rl+Oi>f-F.gl&di43F2SM5nHU\Hn1qMAE.-Z4'`>BN;dEN;fj>Fgkc2Xd0X0]#:_^+i:b>VSoT38DG\4ogmm'rOCCX3/;LS\CGK,Ic=DO3S(=f\:@cqL,%niq!B\8*-eECIAu1h015:-Z-admG@DuJ@fJ5`#t8jhD:V=R-hUr!/53o\LKj.+.`o[h)J^(lLE^4k4.0.kB"t(7Nm?ZG0]P5?Yl[//$iDuui#=ljlk-^A^+kE+&LiD>=ldlBAV)V@V4;G?:->k\$(unY\`Gr@i.uBkIj&VXIA1VV@+1HQ([D(K`h!.@c>E.VJj&X>H_RNSn<(l"]3H;+A_&0YM/<7?e>"S@^*k0jf,%GVnqmb/YX7c,qi`8!1ghINn(q3ZY&]Uq6Tj$GVb;n.UMN$Lpo?)2C@tuC=_WT!*ThB!2Ooa]ahr=/m++gljMXBuH9I"S!*r^qQ8]gGLj,[*<14?bDqgo@;?[M]R-T,'3qDH.Ct_EN:['RiR[%79hEaX6%:%%OZ/%:G_[.Jh(iA9AJfXi`8,W0Q&b9_k,j%oeZ78]L:d\bDBG?1#)&V`%Bt`M-DRpeSqR7Mo+.d&,2ep9LM%)q[-\rVC/n=MD_PLmH-M(s3`"rDJ`LX%@=a6F,3Q;">gHU&)Q'4T0<]gOZcY+edi_SV;B,Q)F[*^R@i"C,si*0p'dAVpi1p+P-H5&]V4nuU:n)-GE(U]ml$[FbcZ3gZ]1RUj'+(T>iE1I='Tmdj3cr.^Y^I)OR7V:I&9b?JkH-72D#u"UX@Q5k+dn[9\aA)]\ch,-g[4]S^:,iX+c$E2"Z%JlC,65H0CBc\CGDAk#K::XfdLb]be/8>;bD@5E/la9\_+8[2Z97\CGWZk.W3dm>Q$Br[4u[%\CGK,>2iT+Gr=B7^#-G])]Ce=U#Hh%]nJ/A4$=/gVU.8$kQ_P]DB.WU)@XVC.e4n`]KnIRO_8PPHc!j2r]_YI`ss/rfqlJ)r&B6^`1d`go"86K(>7o&0C9RPLg/[r7H5GVWtXLel>`ld`2sNI=@%Ii`cu')C98YRZ3M%7,2N4)oW@p8DIs*.i6lp>:m%r+r`\`X^26i`]Z"W-RYRJID-oq]lu\CJmCXm2hH,n[Vt`3$V->Q$Ht[23h`/\#N(11#urSq>rll%d'C_Z.fNB/a.7>\!d'D,8C$Wc,G'(T">up6;pTbOPM7iMYOH$miJ#?Y^XEqUmjC>J4K"i?+NucN+"#+Nu!ek!D2>$r(`O<=u*I/(^K2Xa9PZMbW-cKq%"c5B#YK]!0S-31cf`(/N30l(*g*pYi9.*T"<3cg1s3%c^UA`2tY3X14FdMHcX,\CJmCXYqJCFZ=BA9AJe8`3&$"ENE)D$EN.7s4,"s`8:CA,/H$MT1>JVmL!T.9FgPZe]u+82C36`3,tulh!3\)FUD/F.rMbb\CDmCog%rJi=WjM=#WF%M?uZCYi"`Mk6=!?!3)Bae^6R6ht/7iE:R6i`=[LX`ik)DWS-Na>f^qF3D3Vo5&:JgJ.ID6QHr3p1)p9"#'-#1A&JX.>)OD+`UKE8jpq&@\*&ga[2a#.K37Vfs?W+e=O>,>C/a+mLD.-(Y7dlH`jjQ>DVD5*l_ZXWrVW5mJ(W\7cpPLu)>fIaZ.LWJ+@@nnH*g/R3.AMbC*&DupPknt6`I[3r29+>R@d")lC,65cCEIfQmt8R*1PJ%^>>6Dq3/=RQ[g#iM_?uuiloHF_Tf@:@#S;A-Z7I;5B3b$\CFp(XfdLbm7c;M;rUi5'=S=P,\mk/\CGWZS+BU->p4IkBAE]5%L2/j'.LgO.X@m>i@Wk"E-/T4NFS@c*>h:N*@k]DUh>6W_R?UL"2%"X^5Gq<]^u(g6B+tiP_k8/'1t)0Q+:g\5anrX#d@G(KMn%[sEab>O>,>C/a+mLD.-(Y9[nC_78$9cL4dj**FRtHqBUIoCuL;bjgek_O0LtA%R?t7/.9%-gIUU3plmp/Bhj)>0acTb)b^)m,oO0[50c&Cb3s2%14KqGK!gUsmtl6)DLuBSMJXhEMUa207e9T->p4IEN;fj>9-Jo.Ki,jMH_Y[DH5_Ai`=[LXgT?iF\UY+BAus]'"9ol\5`fhXqeELcM?:R.n*5f4^iXZ*kqOM7cTRfL&>bR3a3McpiPOTNM3f=VrL-?RA%_'riJI'5/?J)#[u^nk94`N1T,@GrXf?u0[%D(NONd1(V+0f4Gd;@I=pP7:_S5`;&&M9kH,N&Sfp4MHPF)hTuZ1of>Oe+LaR'T\(ZhOeMV?ISV^S]'=S;LgnWk0bDBHR&5V(2DRCF'X)$]q3to*W#8ap`@Z4MC-Z0Y#\4=N?Q?,E2"[-)U[H8ROK5p8)?DL$AimrI9[F.A_.IrNX_QirENB%p>?qoOg6oJ$VSoSH-Z0Y#`3$HjDH.@ZMHfIDh!1?:nPjMO4j%2nFXt`m*0U.iTIo/(2/>ninD2)f&^J:3`KK:+hp@,,DDfpqB6,S*]cV+sF]^0qa1@Q9XUK,Hhq=.$`=?U!Qc/4-:h?reiC_m?3H;+I^i?Ebe^h[@/odq0esZpgDRCp5X2BcuFV;0p;;tVrX/CbX>na]9CusZUi`=k"-D2sM<]+Ye"VA/sPdo9&`2u(W>MU]IX/"I-g0jlR=qDc&@?t)EkMqQ0grcZ+?V0AGah3mPW&C6(TuW(Mon9jhm^0$]h0TbE?4H:9MZOYqJ5Lht3)!c-:>uqHSr>[A-CGnJCsM"EkH0&6E)06g%lgJ%j3q%&HpbC5ARLg.j#?KtRm+MVZQea9Aj$#O)a\2Zp1h"jd`\!V$@lPgVNTsT+QkTgGOBs4]uME5j4`:I%>\rG1E3.JY.KR9<"EcJ#\9(DnSI(aMjlHJjTU^hd]q:KNM^pb6MU,rbgn:LGa"tRdBa\@3*@iAj[2NX)$]qEN?U7M-IY8\(YHJ.>V2&'";%>go?RJeP4s?>?HZ#X6#l4)slEfOqqJL(j\$T]Pf]+Y+?NQV-q]hUms0B36^Xrc)X:.'R&M_m]$"D;'bE\>kqdF-Qqcd4$]ART#b"a)dN2^j4J/fMa*/MC_!pIrK-/"?4[Jt3*U;Mph"$mj!SiIe[KUHnn+ZLOgrpfDRDQGX%D;ObDBG_Z@_5C#P#!/=;@egf')o\2".Bj]_SIMC?qoO]#:^oa):P`nQt7R[tB_S%ri5k+s+lqUE!CFSU@G7'_#56ikY$W%Y^n?q[IFkIjNrg3+c&9$s3G1d8QIi3RAG"W75+H1(bVs^)T+M[@FbW-#WB@h!,N]H@iZW-#U+PEN;[j(FV;0pFlHGAWu$Rr?/emG\gHOdo$V#ip6>+l:PX-XfdLb9bOq(S<8[ka/rAfDKS;*<]^u(RNudYS@I)tX09'oYdb=TRSDQeDY4'NX%V75H/_jp&\#?iX`c(02+cS<3H;)sF?GaY86#'LL].tGEop)K&8a$Dj"0TE_kt4?7C1AIl5#c-o+jD#3&\,M-Is$?6F,#[sEV8eKo+@4)q;mi`=6Z>LaEC'">G(i`?qoO]#:^o-Z1e5ghJihX-u@Ei`W/MhEQu-a;#np-hu(JF's5\39/..J2,mHTa/uM$>@$5hHf6nV%",]qhXi[D.[ZPjnMo^6H4on90/\V@^MNZ\?V2sms*CH#*j&DRD^)*k.R`DKS;*@$b;m=A(!B<;Z.Wa2B);?mK?*^Kk]A1WSDQ8Q#,*CN>+'lL4`B#BLPms1X17.ip6D>7&iacO:#,"H\([Bs`+L%h-j]F$#.NH<)CP'[L*%cOCQh\HUVRZd-h)m1%eK(B1I`5:l<=^Q6&qI&k*G#s[i-k\=2*.&7=DO?e00/FkE#`\FnhrU]N5"s_mbHk=LW>:KWl%06uf9h`3&$">N=]Oh(#SGXnEoUFbs>iNqWNnX1.+iEN9XO-#U*oEN?V"f!m\,[u)\UX*oe.?/ensj#oZ_lKu)]ga[tWM-Fi5q;$oY:Q*a&c`\;cVO^pYVfd_Pj9sp^X2V':*j$jcET=Zj4UXe].;;Y^U2^M"MPAq_gd>6+n[R+,EN;afC3TI,1D>SZ_/@!7-mfMplR]Dp0RfP@9RcoQL*$Z/brp,ROnkS&gHAkRhPZb]&).NEiD1EalHiZc>.H%Mck]/\gbL4pNVhr\CGWZk]/\gbL4pNVhr\CGWZ%;V^pKl?XcTGQF^'N3:2hhrN85W6bkGK[K_Q^+gNs%UkNa#d&\%9M[G/oAEMf5h@V>.oQ&&gP9.+U%l=jSAC3h2Q4,)9E[>D74QDS-eAG[?%`Dmc+FeKf.8R\HNWcVI>!KS`oM6/:`<\([C_eX7jA+1GEKh!3F"]CB3Lj*;6VXd0X0RNucN;cM93q<<`k0QF-FLg+0EJ5?!2r9I14>4R]eT+tN\)IblkC7CaSZSe3(5JTtgu(]\4aA*#D2-$VVQdt$br=UPNP\r_nOsXJaUd800)A'-GhhSQ\CDmC[24cfD_HMOa/nB'7@8dH`M\d-ZGVX73^oWC&<"SiFfXLYG>A]m+E$kpYh]f6nZYNP[ghAsS@;ZsghQEMU8%Qbga[3L/odp*'"?SM\CF:b\([(VeLO#B.W-!1lDZ0r't9')X\7I7KZ("d+`;E9`2tpDDY;-`[u+DGS6NQ(I'5hWJ%G0VL;o=1H@e*hjD[3r#n&GkBEsc)I.82Ncck`i`:'"\5gj,n8')RMHd2Lh!0R2XnI<#(q7'_SEIE4EoL-'$ur>Xe]kXi90k)W2ngrX7>G5.$C`GAmg2+0]th,l%^Ri.<6JW*MTpZ-[P2jE>[3sSMV>9F3l8DW20#ZighM'4d,<'+>(A)?qDjEL8PF">g,+-42iJ_`l!kt"iUj.7[%2;X^7FMi?mL*>E,?eMq=>DBtnn_;o\E4R2cuN$Fa2e3&ndbePY+_:crl.&Opc3o*tET`3#==[u+Cl6JQ<2)^j_uZ*`Vg(];[4(H'^%Jo[@FbWEoL,>X&Xs[9kNE243tFec39/2SJa?e=5m8e/!DK'X/!0HTm5k<,)kMDa/tYKXBQDWlhT@`d>a4SiRB@#"Q'l9(pa!NNA!.!ah2V)(33A:?God<:-#1_`HN4^N(V\4ErEPg)a!V&K7Y(Fac_h]9V;B)p)ddECeNL6)U=:"p[8q`?gGi_8@W^)t.+]gcScQoInRANf*Ni3F%Kgs,_u-<-,k7#:l4(3M`FSE0bB:la_dS#D.-e#rZe!UJJ(pVUjI%NFT!r_Mj&SZ)2!NENI5pkRE03<&(!qe4DABX4\5h>L$l"nNghIPd0Q)"IEN;afC(90'>7e94I(Y9583Li*[u+BUga[2a#)^MbDDd;m(q2P`\CDmC[0EOOX.Jdi)XmKgP1\,>k,Dc0PijV/cGtOS\PWC;QL\ta-D0)ElDn3*l*h`l?40`kH18Q>7c@+bsU:Oojha=F3ipu%?4qkRa3qFQP6i3OgnEHC'IEWDKS\/C?O+,R>DN;-]!gePQb"Fmb[Q\tQAK\(ZGDeV_;Ii`7jS&ojsfi`8.=*k.#2p#AZ#>E.W?`3#&/BWcF&jOOd"jg`hVSCXgVhtY6iGt5(hi&eEej(n1%i>amCcDlf/B.41FXS)d?(dD>+S\t5'Oe3\Prj1?M]]S%)F1;<8't%>A7K;$noqP!#F-eYg8iC`lFUSk<8XX8m//]Z%fF6NN9_GWL=#Xqd@!]s*%3`q(*XbA9&d=61SX3(1X=,L3F0lQ4Y7=Ng'bftuKD2O5b[_V:UXa.O^PO-tWE$`H)Q4p`2NgC(8d.o,DV0M8:MQHLSG*nkDYR'8n$Wj'ss6MWVYDHIXp7L_M+3NQ6eRIN=POjj='XrBthTcLdr2eM;RhN9b'Gi-5J_Q`"o6+Igfs;.H8r-\'kHo+A63n`f&4/?(EN;[j<[!,-63n`f+lZOd`2u?3+bUCn#XcP4-Abr\&4-XGKFilo>>5a>$6b'663n_C&\"2SDA>JD+bUCn(aUPJjRi#U+j463orsXX8m/Kb-QV+bUD]Lg*Rd[gF:3&4-XG$k]t;,]4>`#U+j465Una2+cRQKFgHU+bVO;ghN"^<D3VT#U+j4L59&.'"82kKFgHU+UeslRNubc63n`f&4.3XDDb#@.YJ@"#U+jT7,2O?\5`eXKFgHU@>MGD,]Tjr63n`f&AeuuX%D;O+bUCn#U+jEi`;8]X[3::KFgHU6c?)RM-GZF63n`f&;H!F9bOoB+bUCn#U'Tg\!eR['g`0LKFgHe,&T9[Z#4\;gg9Tpean$JqSJWE?)&cZ#;5:SW"_[fSfIIbV[0rd;aoW9W`uN/gJJZ_#[CUhNgVC\NDd^DPLZCIMeoKFJ"/o(MB[nK)B6hHO_6%&Pkkq!#LO\'(%2gA7Mb@j!8q/GeQ&BGoJ5.:SRHhN]ep57#*HqRD)Z8Y^!gYgC2%`Pkj==(.`'#rB+4K!4E7E;i`;8B09"QmD3B8>2U;4sOlti1-U1&X[@SiL0AIb5UaAMQ+CjH[lh+.7RR)eY5#jNOorpF8'4q'ucH4IXqDr6s-ft0ou!dgnKB?O]Rqp)o[?p.<8:.7=.2R-=[aT3A6tuHKR_!1r3?eE+Q/q(V>p>=K>V]V\jC]A+&U64``rP7,7&G&rg,GnMj4i=,XJ5.#5c?6[=\r:!s^6l:X]7:Kg3,I*5rE[P[T]3qTqg&\#?kWQ2-Dl,fqUMCV-o5htW;[sFdE4cM3b;47%8.B7SuKLHQUPlt1>b'`"01>&jYk(Fq8\CEG^)Rla,ELnf5--UaO%0Q]crl[#0ho=P>tZu=,Qj*\CDmCogDAu)J+`!1?ZVT<:@I*M^DOV$*L@pq7+sdY[dFO#t5JHX(t8u=LTJ=o4C4B.H2eRas,4WLL,[ma,A0rJ9l7W;r04<2Mt*T$92#V7@oErEM_=]oOQ0#(HnHo]6fFJ*Bb]#QDC+rpQUo&?1aGSWoKBKW^sh5D`1#Z&FAY)-B51&'`_DH3%1TGZ1=YUX1G*HX83UMX]EASoe]p9_k,^h<,YP?(>4LJFk0Y,->li4df^&8>>6m&Iu56>FQ7X+k.&r*`3&J1u<+tYmWOk](=siJGT)*C7r1rk@#%=HU;C@9(WpqA(=$6\`DC&)HZ,.E2j+4Am0F5;ft1%S?>V";;&LR)a[*E1?j(iE[,e+N7SoUptP0?l]H,p&:&N3(uhq4O1Gr`3%)bU\e+%Q^$WUQ_;t#\C4p]ji?0m71P^rh:Xo+&V^J19`RkbD@7Zd[tZ]bI-?i>1Dg@UfA\()>O'BsF$Q3$5lhi`1s':7]Mur:4>>2U!]CH$ElHiH^%_(S[AKq%TA*EG(W,N9S+l)m?]%4aBdn)YRc\mlrP_EUU%`(SG4a!?a;MJY@>?qoOMHe'%i`=YB3,TJ?>-^qk#MFo;h8cXh8Aa&9>@$5hcZfAueMSt"ghKdI`@K,Qs@G#(:,=Gqc'("r:<&eAM`>+]@^M#U-S>;g(\]*\?qf=(9d?s5jPecACmi%d751![nkq9dPnLB0.OU[TV%S)U/(!`3Qk6Iu+KsOgcYpTs^C`=ZtI]i$@jlD$JMd88II:P#`KbgK(\4(mj.EFV06(#Nk/8N2AS3SBFaP7/A7C_GSij)Kn[hmut73+-on5G+I$@+V8-$Fbb%!uL-)L.*L`V1oLfu]plVc\!\@IY+k+m`@]Y9Soo=WPq"cEmULLL)fCLNe>2oNYHs<:P]o7?bO4&!No4kl8B5ORXh/TSF>K5g7Ndi>&2)N(&USbX`G9>@aMU0#A0\+88\TPsC=S/5nbSVnDD:*M2/jW"s/1S]ts<&538.(XObT/\a1`Jp<1)I1A@Mic3QgqVNC%TRCcf%`(f3nX5/S9`N<1_+h/oN?P*-7i%_b\0DrE.JYTR,f(esX&o),+!KHVE7_HUgUpm06&P94P`5I&3o]_(fLC?gRY<$n(eT=6"e-d&u88K0FA*PO[=!^7"^F1o>_di%3phHqb:*_Mel3eK_\/ks1.X.%>r'.-ISXNaWV8%<\d#*j&DABXT>]HgSAXlK*]sEN?TLga[3l:#,"tDY6-4\s;m)E$-b)KVbM7:Me/FbMc16P/*(W-"#f+u:!=%),)8?+jC:T:gu`X_U/+,k_p`?4N2@-bkk3X\%(E'Mqt@rE0jZIdUFE[(=Nbi@%8Dcm&V0M9:P*3(U,3pa-)haM$W"Yp%2K#a>8ekT?_n).;>;[rO#+M-n_V^tSt?=*PB%M/^nou.h+bL]0uXUpQJr&Db^st6r%jc_aJ$@'5-GTV,_4K1o4$j]@cO^IB&e/qMMbUi-Z0[.MHe'%Y)-B%Xl^=ZS8Ek\([(V89Se>K*_Q->jR-H7I.UX?t]W;iZ"$U>9f#(*GBPbjPjkc]9kE\]&cLh0\B`S/(#jnbBI$O=5OB7+q/Js!QW0KP$bFT?7I6k%PNIZ&<+Ik-*/FL4t9#5M>Nl-[LA[PpOP]8CZf:#Y^_6#Ks4:XYl/<5OLb=3Zlr24;nSF?-BO^eHh\^HgI>XT"t?H]Kb"QS9LX\E5gQQ[RP`$UXF'L\5iIU";5j1jH/B*iT,kTDq(dW*&72t'h?f!]]f8A?I/K9s&Qp1O2+H+GCn60R(:(Gd`W).r(VE+\/hBa"RBn!T*m>gnKNc*37JI[K$tX\+Z"u0PUi?5J?eId`ettSTO>7h?2)!Dni,NY3i#9V/XU()OCat&\tZ]41dOnd(u8`Q9i.?2!u<#^:bCjS.i4VOL;'?eJ:JHVTBG1AYgLdTO=Mk74`bO-1!Dd1k9U/1K>e1%'Y1.XB>4-[#ErdrSr#IFF\UZV'"<00DABX,,]4@+MH^h6XmY4M)\]\!9u9]FXY+Uo\=U>3'D;Gqtd4We[tT3;eq&8+b%\,Cp1-Vjcm8rbk9l57>EK\0:a*!O\+o_8h1dW%>jVCpbUmj+Ve*"UYWl17j$$r7Y#V"$i[MTO5LO2ra0f+C0b4i4G`TNlA+VK*PF/o"!:_%hYg>i+jtmFKqlE*l90mJ>L\*W*pPT1ra-*soadbgL`,HdYd'?+S0]Do"-W$l#O.G11N.ojm2q3<_9M\c+RsHHp`EEX&LcnNK'h(7WTAijNOb>69>O8F2Tc#<`05ufHi`=6Z>M[?%i`;&KeU?4&DABW1M-F9F*6>FIG?;ieVIGKXl>H/C(Q1CDpIi,@a6[ogQSK>4a!OJkf,P^09_GlDc:3cqu<2!ETY'*ugNb7*lI)J_221%XiiGX:WoC^hYFKX'CjU0B?qI#E"S7Hf;@R@OTY.?;je`D[Jtlc$M!;]EBi*m-s7q'$jq1B1.-T!Sd@qi.34br=:A'=Wj'`NA-#GB'Ygi`:8CX-XF-]#:^/->jR-H6dAC[u+CP7,080eW8HADKR&1H@Y"nXmY4MEN;RaC6H*WA-(^kpMm7ceZFAYbPmU1=FaMC]Hu_'YML4FVWA0.1$;fO`eThXZ@Os^9EZ[`DXf^$kNAoO(!a"[R2gI/eV^+Pgd8(COLCob0Q%S4S&tqiVl2tc'^&EY8B#N-km8D`4t#HA%I]7$`.>8RC101oEJVt)gh4lh%Y+V%`BRr.D;H(`5B:e!@)@fOsX&=>Bn\MOs?M%8J(FZVk.4C*21lI2rf!>#+qE#f]!/QlgKi^tZ`Fj-Rq*NCUY]&Q`AL(duHOZrWdP&s'/7AKKK.7:TTC%iZW.:uF<^Yf'-LOgnEH.W3d(ga[3L&TOj'8eJOi>OBF%gr^N3G_6Jk;/nbD>E>Q3qTq,=&9l^V*Dl(hf.cf7mV)D-P&l'qP@0:ICn]B3W(34d,m;Zb&rZObt3f6arc"Mct8caXZaW[`b[`!4k4Z-Y#[sB<;FW\)=+Dqq'MH^h6XlIY-n\57$EHu;SbVQuC7=TJ0#fA_S7LF2C*M,=lGq1Z=c^:oMC_7iF_E6_l^'/=/FuZ&59@VsGYAn-b&f,)<#e`;'DjDBQ8:i0:ApurZ[ouP^.W-!1MHe'%i`:'":?#;oX0%4_X[q4sDABX4\5h<6DT.mN]TM9,mqE,.@Ik=I9#ij$jjd7Rj">[uR0FjtB\i8(03]@(JBECdubZnT5psTH/U87,VW#qYM!>8[#_WJ(g>JZD*q1oS:e+njIBbbMSEtb7Vn[-U,DFL:[O;9c2`='%S=CCtdeub;?R$"mIEB%[uOh3sjh6I.)>PT:U0i]iZC@P`MT#Za127/Ii_lNUG,^>4FiEA6`(M-l)VSROLpeM2+*4K*Hga[478DNL!\5h>LV8TLE+E"T$.7bY#FW\*X->ms_>K*]cM-F7![u+D'Pdo6Z`2tpL"\HY7mc.@(`2tY3X!]$]\CEIW\s;G>3WQSQ(?G+Ls#W,C#Z!N'_E^4'g[X(rf+"oOGSBUDMGH-8;T93-';<[2XO;I/9k?5[R64mQZ+WBJcK5QTjXE6@9>TY!Q!:[fIkR/dGU_U0^@k11.)&A5#lMFogpR-oiLYRD,FAkZf/u$T_&4tF;0GA#0,kVP/P'e'*Wi[I@)#;SH@.I:SHNBV.,:PCH/'kYoF47sJJmTl&t\[hU*#OZnaLg.hU7K6&[I>$[UrYYh^ril8bYDW-K9tQ0,_5dlWHqnbB`dKq>C&((;BrIT'(50/Qd]kc7tI9V3-YeOr3P?Le'QVr8`0n@2P%VVLdTPsO0nK\O?g`A#%(5("O!O6=(qGhcS_0`G]8IXE1F=Lt+@KqVC`V0Ib["Sna?Y[c+%-])%Z-Z4'`>K*]_EN?TLga[2A6aak7i`7!1\*AXeh6dM%[u+D/X_?h+]h(:.?[QjE(mm^.EJiXLjE->kPoQlNWt#mAk$SiN]?j.=2kfFa5f-4gMTlYqOaKKdDo8/(pE1>#EC0U@[.HJ(#NR66Ld'8@J^,>ju'MhRuM/cW!`Q\$#,9_dE6'dS^EW1VV0JD%pu5K.')`s8_te2&?;(>T=FLjRu\[R!j*o.jp6cu564`C$-CZ/)&8-/gm1/QPtt^S/k-nCO+U?$9[02K*T9ji":\EK@R/h=ZN(/Ee[$Aua^8YpV?t>ECT1;f)+uPhP%EMr>.uOgOTZ*0sfNFfo[CJh(pLMW7L0':;ePs3\W"jlZ7Li9p[;3+r*?@MQ;eo^7GY*bG_V`FQq&Il3[C'N[C/@2q+]]7d)H*k-0CSeuf\>5eIMO9A;9qVd=dSMhec`T^-\?r4%lH*.k93>NaPRIp(5BnrURe^rO9:^SJka)]!L-u<)tF+1U0J"!*8L;kt^RU=Yt/YVaQE1#8-M21iOPhl#=HKLX,4bsH:#tE'@3V:8R7,>Al\mot7DKS\/.W4n\EN?^]eH9flqmb2J[8F<_>**FQl4URP=Xi?2PJjT_PrNZ\WQXu.1H`g*(R83&s"b.mR6\[,("QQIjcdjnrh+k(H7a6]-'`+*$GfjoCg:\gVT5gdVW;XjQNDZ*GB'^eLs3PSc5+N8.Q-k=/;mnSiQEN`TjbLFo!K*]_EN?V";dged't;nQ\5h=!Pm[9Lk#U8P;rUjPEN9?((%SqCeG<&dtq$-k^JGPsZs1ImD#(]"fTJgI(qC8)[+YNo'CpAD/bWJP/Yl.p)2!Fli#bE"+`@nT#uimZJDD@DT`[!Le&moG,X1"VK*`(K*`(n$&s/eRLZnff-M_@HMk7i`?D3'0jb((dn4N/`^Y-@=J7sPF9NM(aA1L""3d?g]\8%QcVZ&!Hr_-VtAq)?*f&0b.#9%Dm6<%eihU/=gG6W;G3#Y]lB0QodY'8_.)/HZ0J:#1__)5f5,fmY+L!$6m6=RTa?#TZke`"@$5hEN?TLga[3lLg/]SXl(d;Z"['J)2uo!_!..VlMC>0ehQ?]ldH+)'Gf@UWh[o;Mjn,+i;[p"5%H_"tPV+;*sE8!Ue#lZloO.<_+h*maP]NaMIQ5a`;1XqqYiX5DB#[)O\/cp*%atkWr-pIH9qt&k&6)'<18jU]<4$B`#RJRbpM6a`<)'@K6pE(dJ6!_^SABYDd1%XhVNt[6dj.#NhoR!QKX?M`!r&iSsAIUt6u6a!pl\D?=ZeSbtCHg1IP.g9e4M9C0I/Rim?R,WUF'M66FY)-B=a/pD=>K*^N-u%HdDRE^3#83##`NG-'\CDmC2'-hoC*2G9pMm5=i`:'"(J5UTMHfK!q11roms_>E-ZC\(ZVD\J82uL=+&o`YZZJfM(iq^;I>%Y)0DgSA4PO"8m*$W?8.#GhDE1rKpIg9KWS[;*_QlCs8Ck^4o@E\`MYQ7h_kc-n?hYb9i"q@CAI^8:iOkmR6;p/G.fIO9@^t(1];3Or&m_k`BVl$<>jkdR#t)jWe^C9"`u[R/))XOO'=#3i(db,30O:"J5rEYg6N6$+lJ=>`^i+a"$0K@Gt8Z+1dFjV;B[AM^a@Im8cCNa=XG(O=1\VDFKZq[rT\]c*%:b0nfM"N%dqsmOcX7`AY-&BCJmb_#A@0@5sD.*:hC4A\u&jQ9Qb>;dL"UQuc0>76MHAk_^R>INdr055.Rk$s6\MX`P7i[G?RpH7kJIQt7pLV?1^n<*FLOgrpemVHmDa[G/iGB'[nlqM"VS'^)M+NeXfCk1JT^)[OVo2]+WKC_2=,q8hif"HS&2nYl_l'8A#bf:#o3aP=Z48pE^bH"R4=BM"r*4&7Rg0jQb*MW8FpB$N4''Sd-SOKQPW#?Re'KcH7:oh787h%;EonMn#!r!+1jQn+]S6k6chDo/i?hdI4LB3J)I9*V,-X#nK^g8J8tb_a:"M9kW#V&-75-*2Y^,6[@]'+rd<;f$e?bX0NiH^G.rOS3.!mA_\,Lo7nME.l@UIV1>!1Hslf'2M#PbHSTd5>Q`11t`Z83'/<2@IKZ_gMarJMla4,oYfrcYfH,2g%]03>Q+i=V[ICQR?0;/pe1LU+cF=bq#T3-.mB!SC_Vlg:SrK>n(jt0IU4lk_W!#:=l\io=,N'Vp\\3dVY'fHVY!,(dW0eaNm(mncKYma([##J=RgZd_K`gfc$MW*N!!a;%n?9a(6(CAKJ'PLcC$%$3]=HL^K__s>:^SP/'^6h]#NO8hVbYPdQ5=j&ZVQiqkP0>Qr7%CM@#8HoRp`1b--j7RiLlLf"rGs.j&]6I:CTGFAX;%[os8u`i\6$EN?V"IG?;i't9')4^UIW3:fNT[p"p(eT)XNh!/%tC+i+7DABX<>K*`4j&U0#\5h>Lq#YTUR4#k]eV_;IQK+@m*`F1&`ZW$UB=Gc&`Tg%f\e;_)a;E&b4LC,M)?3m3YGlkFF(U(->_Jf"fQ<7e2pudnlGr3Pk7f4*]isH$C4MGK$+'nDsOXo9]:h7F&67)r0TE,6J:\ibj:YI4?HqZ`O5FmlnZZ0]M4&VJ8234pJlONd;fB.%F3@=.7B]2OK49\]5MoApa75IqUbZN]HGcn=S_dGPf9q29usP"+trS3=X]&t[Gc%^[:uZW2fY=mRHEifW40\[V**r!*6NG-L[a7+GeOE%CFfYl2,R7*$+#9SBQB]jouFFXXF16GcnZI?*d3"0G*S\mV\gu:$%jb'h@-sYEr+cjAcBP#Kb]'>0>=$p'ec3h5OEClROaZLGN0R>qT/#K$NMc)7BHbAr0/$+q"C3\Q).G00$^N\a$+A2p+6fFoJ!7$Rq*k08u;)rUP?7IU(43[@$5hEN?TLh!01EIeOS">H.`.bemm39'JXbu5^!prCKmBpd+-.]Ejm+Mt>fTPG\_XOM'5W+Y1RAX$);EH/m!Hq9L"YT%\@>Q,E+?T23r@#*i+#TF:H9#K&O]VjkdVT$!*MPB5n0L__;6qAD(@W&Hoj_S!A#X0H>o"^`H[/A$f0D'Haj+@R.E5HS5WS9'7kH-l*(N/?A#jap("EoHP><.ID@Ghs:]!i#lQV65o.4-6W-@I/dQ,urfhdH1M5[Xfc/Q0Wk*!UfIW`XtaUW9KoVnC?O'RlBXR!*_3h2W!b1933+S`io'8ZV&5I\/l5cGK>`RJ6!'Ek9,CRXdg%8@V=?Et4<6ni/-<`N`!S(<21@28T+Eb2o@-F(O=O,mg4+Sen(D_Oaiso,'O\>2[H76h:pE'Hq_OF+c\J:q^D`97WXl>:h4?FW\)=+Du)i`:'"\5a-\jbd8:'">H1>K*]_EN?V",B9bWga[3lLg,!c't9')]o_GS'?%"*ENA9mj)M+mh!,2@lW4%^_>6T$=o-fTHZS0fjgC9$R5_k4+AoQt//*3-56u0&\+/7J*8n"T&Y*$Z:6HjNJP<@9@LQUN]qh2i,faoFAfd!)*_M_^)ifcRE';&lhH/T)%8jX#YP=Eu3UCLSUce&hdkfhC3I0e1Vb"0C"]pMXpaS@Rj-fDkQ/^9k'X65@clnt1U(eFU0tVn%Ok^(glf]-35''HV,14O3p&aE$Wrf;T.mmkQVMemr?3h,u0mXJ((ZAF6m]/^O.#'GKj5/4J">Nhc.`$bK.-XPW\AE.(J`BeS+jmf"ga[1V[sAh!MHe'%i`=A=\([7[L"cAHQQ%CN+X%abbA)5;P`404,m3=;qSt.8!0V&su7K5'2a1ouocP,Fs%4[75f[q#'UqBa6CpE*n>!UcSSpmEm,?2Gb,I5/FlO>OD&[Ufd!t@18lRB.C&[DN/7uUSCpdVr$q9ochO>YXl9F('/5o>)nR[&3F;+^%2BRb*5BK3oRcYeiBghk]`4(`Xt<4Kim\F_Mmpil2XG+cqU_Kc`e58!7-K*\G__H?>uW1/Vorkc4tpL:Vu[!6f2N's8*^3If@oDj1/9,/X]emc3=1:@9!LDLtF=+-R:H_Ii>#Tn9qhZhOt.crd`PY/:U,hQDm3P%58,2e;)XWn@e"#UpWq#cXk6WO)cRii*>Ua!BC\ECe1.5Vr(n=RYfq63A%'!#oR<;VM+#IH4jG.?B"pWbUeZVR/lWOMi6VG7X-59t+bpgfZGH&H<['JR3ua801C5iV>N-[CTP%-u4K[YI)>edU7>1'EH/*Zl[^2RITCGQj3Lr(u30?K=%#!LJi>YRXl,Fi]iXeY\F/ga[1V\!m&9ga[478.cBAi`97p[u+D'YXla8i`:%Lf-+5T+D9q8hJ`[]#/(Q=\1[/+[aB=iY.>`Ag5Yp<*leGr&9%>q!J(^Dkpe7".bEY>pqD6==>&k*(irq-@p-uuSjjbhlO>Du1G@X`Ke@(P:hOjg&r4,7_8m3"X]I]b(d=8+>D(a+jl0@T-$K^i$P<[BHs3V,[X!IK$q12^/#p(DSDa?6rqiS5p>b-'T&Dof'9Jps'0XeC0?44enWs@WbQakQJEN?TLga[3LS@I*ci`:'"FU+Zt(:W"^A)5<+LF\ln@(4%OTaAUgIp!]&7HYG_E6XTXV`5[7-Pucsp>5Gn[d:T/qd\(V8W\te/KkdYQhWOW*M]VN,)1OmK&YNJ&(FjrQiktOUZ=$um$[tQ!m(tTDe'KX@_f%fuL49?Eh;hd%Xq'CK:_q?'mVo+^=to*0h1]2"r;X@4LHo#B5d823]JFb:QAb7J^5V6YXZSb'LqF6.g3eF1St5*(jG?7!6eT#%LPI_?A["?[L>8b^,8oM16gA:!E>5nG>UN9N>u00(D3_P%>G\IMMZ-XhE]dED3_P%>G\IMMZ-XhS@TT/,'Mb-a9c5&"u0AJA3p6Cr?#k4"o"q,LHdU%9eD[NZGP[(3:gY@hQh_DL!=Gic#?\;B8.@25O-H3=@CYG20aO*"#,e+FIj8R[42M2C'?]*tEC;8Im04Yno&f9'T]d7=0$=HUd(&2$$i!*&]J01$aP?@V-nK]q@1%(01b.4sIA2;ck%+l7aJ9K67pl.32K0T%/l.b?QAUUY!e4jlU!XO1a.YY5"rj&&roaZHp"[`RAQPC-&H'T&r5rH6j9AP>]Doa3QFIL;`_rkLYtQ&fCN^R$U*\5ob$8LUQPWdL'[.cHmBFYI?dNl?^lZBreU@g+$t4>-gKJlB.bUBreU@g1j`(doJ8=X0[5:[X&qAoie[eg?Ofo(29hVc[FXuY6/NRf=Pd1sX+2Y-@b^uDPk#PhB+!?7+_RPdMIqW/_Ma=EbZKth$nJ6(7.?KH>^g"6gV6-mJD0;2RH:?O;D3_P%>G\IM<`_?N\WaH_9%rQb?(&-IRC5^l/^d[6X0bm\.W(HZ_WS:+g+$qC<&neQPI>e*[ecA*X.aTaDS\s2dmGDCI9Hh>E=5D?X#d9sOZ>pbQmm\s6pr[2YpfSo4oA#m[L!"^.i/7pU&l.R"JP6?bHEHfb\fifDG_08TO2nUbBEdP"^TtDjq\\";K3)D8>0@Yr1S8E!*OlRN*Zka3<_`>qZB#fod&F&LI#/?i!eK_VTRIj=.ZmAmuYOP3,H<][dp6f.KO35lUnHiVQGBg7)ITL*?2@#Y57,65hbLLdT1(_ZrPg0D=nf]X0gDmYt`qePI/m5Uohr)3eRs>XjU727bT>/Q*s:hV6+&KD3_PU/[e5TD3D?=T![&$>_fQ"ZrPiFd@a-rqU,Dn!R`d'6",\F+UgC"o#"\h7Bjl*_8_j)IQl<8F5^aV19$cX"sjO4L>0J>-Tf`c(d$9te'+AinY2HNHI%g?Ol\LreCJ3UgDAf*,nk6DbR%PEYAM-P$(M(2*WH8.1C9t3JJOWB(H>&]Bp_(oFTBkS8O*P"^no<^<6EQbIME9dl1?"%1:QnYLr$4[5s1u3,JcYJHf+AW8!lirM./P7\D95q_UB_s_Rf,'M[cV`LV^`?'&FY`Y;DR#s)hN':8)64`b.Tk:io_,Wt\+2/UTA2h9)VE5jQ1?-B8rIH("j2uMZ-X?BMZg>MYUPg+$s)[X-.P%r&)V[+-\TYUi`kCq/3FPA>;uS5q]2cqBjP`MN"*)A\YL*uCD!^*bucpoE'G^OYm(*a9p$%j:\*la-edNG^'ihnV4f`k$c>ile6,A@G2W=FKR#KcJRK;M"uq6bL*?m##,9,;o4Ge!6`^n%b5NBhSokC!\oZA-38fi",.L,!7Bmu[LprpIgf2Wt7+Ug`8p25mLp+_s&=Y3boA&KGXIN%lLfY5$qZG:O^ZGX4Dj*=n=VljO;Fh`5TYKD)sCLKGU@`g;9]XrqEq,aUYeftfmB@h4@[fH7P*-U-VDOGd>e>c67h.+1)BoP!47E6`ZH2/RICKr2!#M/(.I4X0gEBrLUHd)=!g%]&@Cf[X+(E]'6l[JO7gdBreU@g?N8'l4n$6ZrPiFb'm,jbm\_j>MX8+8R&l!>MXC-lp.7?X/uec)XrMX.'r5ZW.@<'gu?5:KK\[\$lc>\gY`pPRj.CD`Ua#!$Z^4q"C49/_cu5)k%Fr6,k:U\G`S:0ID:7t@Q$W3n1F!'3^2$9'L?3^LFUcu,c1r'85T.A(,R$hAc0n^Irg1BTEt0FG%_t(T-j>WVpH?($Fg$2K$iRaIa"aR_9YNeH!29P3TgI'D.)U>el`IT^b)HI/d\&UVe9e@2HUgX6W,\SoV$=hr[6^5bG7Q>*E1'sH+)W!d8#b8]);k/SgnW8O3I)tpl#/=dO_r_n.E9D[E&0K==e=C$c`^)6kS9X=]S^KY68@)5&3mP2s);V2in4S@]a!6e9_F3u4gMrg>)Wn#3!AL#=s0KnWY@bYbIR[8N6E*tb+\6"hhpHUX/pc*C-$kc<_-D:(_XRE!<@69XaC>M"4,X1%HF-C/57Z*41PidjYb1"fcbu54O9;e7G@$QdT1(_ZrPiFlf[uXZrPg0D3_R+7b[,BBreVk4_^t'.sBY3PdFHE.W(HZqYIaN0Q!)`8mA-o^6,jM7G95.F\g`Vm#%@B3ot(`Q$^PQG+)uEl`e:]]L/.(%Gr'>7c2q1ZK'S6e%m+F*"j>c1R*$\^Zac"kHFN5dYIRVmE\P@Y2iF8LKcjBi@@"G4X;("&$C4(*%HAMbX80";!C'PG1pSAe_8.5.m%OiOP%*e)Z3VE>qf6ufaj)*Rht&%QSehGG.QFbGU1E7N"1%b]Oo1(T.7l7kHW\TQ!aXdhV_!phm)":SB.lj5btpFC#fK9o_a&S\:EdT1RYXrG9/gmJs?$h[nQBS;rAlmt4[Bnio'oiKl4C]uK([F6&.ZI@Vsikb3DW^jq"dYGh)1jT[t^6DoL',6Znptd!39M&Pd^V,B.4l]:F2e_kH^nVAlh=XZ!`6_mItJ\L#mBhVOlu_u`Gd'>;:69:`X151nJVlKG._D#[H'IDC=<2E%$.4l%\P=X%b5<0Pr[gBEd%./8[6\Og[=4R:rXWLkpkCG[!^CSL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]SL&+f&J5Te&Vin]S`ORn'qO?%)K797/:<.V:?,PG)FMt:Ih)d6>_HnOdW\s(SXl5;jLVmW6g9ZRi&oZB+n?KSTM(_#hsjhsN1&,m"7o&,S`nBh.upli-I-#N<1D=t^h>RQn4j/VM5e9!(ibrm%=InU(0_6+9)#DThEi6_$jio)%BcV:r4Ih/+4REUR4:"nmr9Gt/)P]!#ik!c)JNjdo,j[43/hCM%fSR1I0cDGlTcZWeP\5S\,&)BDD1[N;;5AnA+qto;Ig?Op0e]Y>M#E*OQ>l'J][^/o]SQn,JE%(Z>)4UrD3[>a`l>D5Abk]iCoc&VBWrB@TCDs]+!2tuesK0+q7:+b6P+&rhi2ma+"j6A>rG$rmOKB9pLQ[U@-:4lo>pp*p@(qO+QI1@QH0)+UjcaImCf21%llD1OW8R'H'BW'5?mibc8S@N@7`rT8j1TLL`KP%bCciJrD8rR#/;_ZAZ\!IFMU`L*(oR&maE2KDTJRV:2=+SAWF;UYOq>,R5/mP:?bi+G_i`Wg$63]40B'Z#?P4-Tenh?ITb[R>'46:Jt;TqPh#:-l^T`JXZ_1-po>S\/_06]f>@<49^U'U$2Y\d14N*mU`1T88V_D9a/M^Bo=hhKAnq%X(:G>^p$_70$_6"ec$jLp5J0.tMb/5lj_=A*hG%r`K`/Pj@$s!;o`K#_G>hmIhWdL4i%):!&N%:Suk,Blpl?J9dgg\>.s3G/P$[17NCRmV!#8r9-@6RqlSMdKXI%8ce+=:>YX$G`N1,ia&[N03Fu/kCq2)#T?s;\+L+-G+%SFPK)`%$TDi_A+&s)tX:krUkjr")\ZL\>HXl:fDQjDZ&3t(bNM5prW9?[K?rQ*J:ild(-=Od'q4X(Or[IMA(JV0t7R?\A4bYrU\!)dtdN+K6/)KjtK1F%b=Y;E`WlZ>ZR/[m^!9+'i)F%+d2aq%u2:JrjY!VR\;dVKb>Kmrj3a;nDQ,5=n$W=ro"^.,S+c[DXk)HVl\cYlm-bP(`W+-`WNA2brZ=Q%.9&i4<+tEp^ED=E%aq1Gc30Nn4H$k^LP;*%fD7(+]iRccPX2Z,9XV^Jt7\I`-(,Z7Z1'\HaEdaJAcQP$h=#rfn]%s2[J-n.6CIh"jOSsSh"/RfJ9aj.u4f3TG%uKs3ZG:s*?s7WA:reoD8pDE/V6F9+'u.M7lWFM['VO@hjW1X&IGI0@Nt*86_pmmR^X-QIAlq6eZ:]au6ac>1-G-BreVkCS\)XK#+hE.;>iLBrb=2XjU8EUoe7PBrf8tD7*MX)r);_BrdZ/@%ZPe'ga1NuJLRE<)Hq,N^.&nIB7M/b[P/n-ZGffV!09%A_%H4QN:Gj$[EN849.C+CKC!biR(--kP4UHR8gE",n40-3?@S\mtkLGUiG[g=G%H(L32PB^s'0K?NY5;!"C5[k3=3Un1E\Aa03_oDf*EMTG6,&K2a3&G7$l?Wui<\kfLm_Q9\?/"QNdT/$L]58nC^am_7&_JVMmC[+:"L-LL(>/c5"dsrpt(qc/5FA)C@"R(]2Hc)?GJ6eK/`nC@KUHIIPT`k%3f#VUZjFh;0?lB/H.7b/Iq3`UCgYT`urVK0(+ef,aF$(`U84(gKLC%#*CX$'E:.Tf0g?MkhJJnPfZqLZXds&)`7j^Z'0$+bJ#09M-Z(`)[Rsae2"'e=eQEEZQ?!G:.\['9Nuo^BrejeHW/Y`'G@=G?Dahg8D7f*D3_PUB\_EXX0WiW@ft.[B0ApmSW^F-RC;rGdT1STp854I.3qYm]hDXYOJgW0\Dbj+G8\,sMmUhDdH190p/CK#@fL&'jd"X*LNu;9PF=`A-*Nj_9j5oY]$;W1Mn^gfuLa[ZWp$%CNi6O$Yo[''/BlMVC'0&/9mWNa0&N9F5$QHb&6d?0Hjrk>aXZZN8KbN?kbSu:i%s3%OEpJgq@WFUD?@Ec%dHD]?Q-Pdu)hsJ`"hnS(VrU+gGE!Z27U#F"A]/ET=C'1,NR[+4iFXjU6a/%8s@.W'<(g?OolO*Qqtg*CNXQaZ`uOA,8CXhL128mA-odT1;U0Q!)`H>S4->Fe)!>YSF.mpXpb->iFp[+,8B[Rsc;Q7Hg;[^n_.\XQ^s^%O5Hr2&Dhi"..i`r%(;c9?%OJAL2W]+92.FL]O^^NiQnqIkrW$pM94R@ZK`^k]n-WBX0n2dD"T'+\5_L)+9c)16lmr,t-1>VCT3IgA>qdD?V?$lRdP\9&,hG'5uiih90kK&(.5TjFPbce/hcG<@,rITd8m_VcO6Gm&k_4PT$d?T@df4*9=oYer&b[j"0!MM9'DdKbClIpH4=!?^5<4?R-lT5B\ZEi58]U@VF(@sg\8W/1b],c6/U\)BWIT6(YR@$&Er423np^a>-a<@=<;n.=sa+ZXB1OQ7!_3!u.343[JWcQaTLjM6p::l8;+r[X&qA<\nHj][Jp\Z4%]IS4nj_%)bkZK,5u9]t+a'!nl`AM?)gBS3I\%5PeUFnO?&6SI=(fA6:f>P%s`sOY':_$bGCDWQ&T"4mNI-IdeFL_qq!XoO99BU49Q1F`rr$fP%\fq(0pg1(>SbX"mtY]gu=.1B9.RQmRdsZckkTJ^l@ehfYaCZK_'C=R(8`m+Yb>n4D^Ti>N#e,Bm4n!0/'j.[h_'=bjh!ic@&l57;Vlgn=\=B&4\SGn7*Y!30jmDO`+Lp6X>uc*m\<9O#9JP5ptIWI)h8^l49DTiei6?Jg,G%lc9F\8!PZdY[cjE(>.rcC[0ABr!JBuC0=/bjWK>.8U.u@@j51J\)f?S'BQf3Brb/\1i8MdHHef.Vl_!Sf0*tnejJf"X_&*mW3$l*97NDbA^hi]Z1K3g%!F/h;G!QBFp4bZ"!cO;>Lio!86%gL,;$hf^WqD"o(G+&l]9RCiJm*YLX5\59)K]ELe$UW1Y@QW]Xes:ROSQg)h7Zm,89pk`1E&e]&?uo!$\.XgT,P^FeJ%EaZq\iK;D\Fe2W';:QE9.gUIJ#gQ!GdL$+6Yi>eLc:&4n>j0)D=p.VXg[fM"+F=?(P[3XgpqB_28ST@Z[fAB?Dt-Q[`&WuT%(uKb<5D_0Es`_%NhFc+oikfn,1IRPB5a@.?34QFK-mhfU'GQk<;$@OlEL[^/FKu@6418Bjdbe]k8=LldB*\BGp_IIo52h&H`fL(.rIWGMH(0%E:N'=)8T3@>2[EdI96J^llG8#f^e@,i.Pididr8iV?F__Ocdja.gI*T]S\?uu[qtVDEgo?l6iQ;Z_8Bf2BTq1#toJ4JHaMgn;oJ0M#'Sb&het5uIZ$1OPB$_0FdI44S0Z$!%[2@s3qZR0qK0d8f4Fi2h[YK<_)1S1/*cd0D<;BQ9o#e*oEOQId5S#n1#5MDC([?>B"_J_/nW4QJG7<3Ca4+.-%J8T*@_gFZ`]R3KE(XSQhF#rRAKL[`='c0\==LcP_>-B[ho\<0lV1D8k)pbmoP-BIGMh^qh3/LCLiZLp!s-P#?O&$8Bdb"X<]N+8al!khANBT8m@jL[Rsc[PI=(fh359.`JN&EO$hXdA_JVNQ*s:h]cqP.!CtD=o)iQ+"93[dlA=4cK>Vn,[H*^aa>;?+me(rX,Tj-4JbR6ar*ajbfC'cVoSL@$&=.)u_>aAKG<"n;o.YaEkAF]XNL@LJ>UeJ[V;hSTqr,M26m$Bm<$Rb;OU5LBBndXB[kk#(o0M$m'G3n8JqSQ[+D'b<1j'!r/YNQF.HZf/4TFPZo!cetB.djXKPi29]X34:E0LTrkidcd!WL@a.EeL+d.G"u6/,C+CA>p3t/_j6.K9abU8jiB.WAW>>be/t;3D[G2tKoh\-u&RG0*3f1D$c\uKt"m>+a&p)5.&_T>-M"J@1H7o)oXF"o!XHG_`F\:BQPdJua[+-\TG\IMepk51]4;cAnn28Ua2C(@k$GFkTddXM]:\2al*3),KOktpt!I0OW\VMP&m.JE0GT5G_El^TPp15:/M71965*O/A*:l8HXufjEQP@J;m#4;A%XZZbLPC$>%s^.9OSJ1_#R1fF*=l!U%YL&IDoY4e_;M"3RDD6!%N\O0*=i[_/J#m@XO>G83*"!6+1-]0aW7ND3:YB)&ejtXAN7[8_u+OO3bU&"BNLVO>T&"]@gBK:*uYRRiFT_#9XGPN[SOs=T`MQ/(6Fp$7rAc#TGWu4g`Ujrku31NB$([l>GF3OiYIRnE1XmabFUd25)aHV)7ps#L6LZS,(50`e[+1q6[^o+9V6/0HQYNR0HN*[@8`cliLnAs>ee'.S1'W0,L!kH>pfjp[GfW6J&H=$MTF3/`a$]2qT)r^4lrgEE1q6s)h(4#]g?h!B20,DaO>LkE*=kBLT]q1SH?1KMp]e>h+D:FafS2$J3&LUOnkcp\I=p34Q4I\oUSqH9=?F"1o1Z,k552LNB4`$cbfE3aiCOGg+$-UOs>D+OR!"Q'3&dT39AXjU8EUoi'GD^'%`[^p)g]siU!dT39AXmXVFe*`ZrPiF[1NRVX0gDmUodt#XZgF=M:5L<$Vai2:YKPYS@6!PBreVk4_^t(eP4=nd7qB[(l%6.+F.=YGqkicfdQuTlsCUBbX5^W[6ZHH2WuZD_4fbAZ,)N0+_'jJ/%5!-a^"OPQ=7g$%'hs&E9I?j)HJFJEVIEs^u-SRVb`_Pq##1@dL7KtQjtD8IYpG.$lc!FkfQEbcpP\;_[GWEA=(+f5'm:^TL17?I:."RDe4QM[@X>o1(U?>M-]41*d[4eq$8(8cn>[)_\iT[I/ee%E5_DiEG5.L/.Xq^E8G?-/9_G$k/n2cW0aROVSf^/`HWL7&0>fP#8]#bM]4>[an:JoBm:+qIh$;rn4^2(HS3^tO"T4QZj+h):^d?PGY!3s6$=1m(XN$sOMcn6>OE!o.>$oNof!]\fn4r[F;UEVs+po>fc[hM:?r@Ooblq<0[=-FK>G\I;T5Sjoi@'EH>Tqbn/T9WrA(1F=R"hme@*nH[mULQ&#Su>$%23S,ST]/pY+Y-C3=]H4c/Mf\RGDuZ:ce'5&%*6:FKXTgY;aM)qOHALl\NmE1UM:!H`@RXbg(XId5glG^1%,r'$AY8o)G_\F'cU>YL9bS=/a>^3Q5eT_TLM=Z%k/a%8U?Mq^LW>cI)V.muK'eLsm%gaY8R&l%>G\Hd.rCQ[H;cMZ[X(au.rBFo=PE$mD3_P5Uoi'GBreU@g?LQDkW\i&U6hM=fAOrONH^jkE(J/_8=:modqmXAqQ$X%!pnD5.eroSUZ3=a"]ie@E1*QF7K,!@/8sCO2&M+)O(qEL8>HVjYMK(UR)QV"@=BR+;;Zt?&K^6#D5)Z3lHW@deO7HhdCd_Mb7!:TI1P4C5IBJ]=Bi=XI/]fC=2&2'r\ARS="q^\DdSV$q\D7^m-q[rC;I$u$'+D7AuIIK1EF+snc4bp*koHSFJ\kMi0e7/_Gm&'K)U3YTTVk4hh@a0mr?72m@W>;c6\Si%in:O58_3M=5<9i'OY,m1!`p,.)D]<(CDHCG3gAq\ACSndE@]2AIBU8(^fpq,XhC1<,b7QIEJ_5/KQ%HH.ek:%aN\!oX*-tBreU@g<-tSER*YdC#>G\IM<]EkYdoL[,X0bm\.W(HZHF#iMQ*u",[e_ZgZ0X3;[eagol4n$6lUbKE`s.'nUV3$k'cggdBR)J*/X%QMlX(:oi;;b=P*]4WJ(_E6B4^^uaTRIS)D,G8b6I.ql+EK>F*bB!lnfD+2VY.kMh5O`9%u1"!:&WI(AE>]B%f\Aab*_dRMVP601jr3%d/(Z]&M6n5ch\O,OEamLAN(t8?2[D4QD\q^mjHX`p&_=m@D#<8PKmgLE\.IC6\M.skeTpiDN:YP(dD=p2IBreVkCR3FMBrf9%D=oZ$Q*s:hV6/T.GLBN+X0e-T9O#2$>C@&&93[t[E+h9`Vld,r0Ptq>C!p$:06N/o]&+ifJp:iD,$A8+=l,L:A&t!jbr.DHR"n+PhGr%sd\ia$ZS"Y-?hGf->gS,,!r?F2nopfVBD!ThSm%R?-$aR-)A\cQV!bM&hX3r3#\=V8"B/1mma-Z#I-;h!f+EZk'X5e2n`J`.:'n]J4Zp;[G;:AKGm5bIqu/1&aWjCNuLoV7(C`HIO[.\])mH33hWq5p0J&'+5U;\,gu%R3FVA`>+CXH#1"5=QTs+bDnk!,]BdZm)0!Je!8YPZO3^Rg`eIe=:bH*_MN+IIotQ_DB_2N-h<2uKH\eC?/ZRrZ%_#)kQr[GnT_jI0,dE!3jCeSdr1'`58[?->dlgBrdS7X5h>KD=sQtXj27Vd_2o_XmXVgcX`9%rR3LG%C%CYJ&+D=rdneQ:1"a*Tg`oj6A;K@p",eLA_t[+-U$X0%,!Q&U`bl)sXn7dgo.'=YKfS_+/&L-$HnNe\IaQ&#:oqI#(_6Qf)AT*I)'h7'=*H^sIcJqkoGq"'m,b!fEH%^!Q;N/&#,6ANJrgp+c!_*]E@.m6!o3rH[FdgWcl-s)3`L)rJ<+^4#/*ra[KOGCW)*Qi[2*q$\kYS9o4T,"ZJTmc:dTf.#-'*s_43,`@i0#IUt%1aK;nft?3H$:1c8oN&"^m%fS?e"\;L:Vfc3@U6"DkF"fJ*mW+p::e'gL!L%F0k3T#KU4&6#C_YjUlLkosB:DL!^&(V$>IiSg],RCa6)/48P.;]*^U:LS5&pD88_@a\rQ[g?M&O>Ieg#Qe8bO`PM?>d_s;s7W8ru9H3%.mIO"6A5^!X0bm\.W';d:"nlP86_pmdT.DRBreU@g+$s)[X'b@doI93R'o%%D)IZO[X&qAAplfsdk2i.E?DqIZH^/PQ^4ekV2T,$*)Vj7FB&5eedR3@\0QZ^XbOuI%)hHhfM$`ZV6.-16gtsjMR!.X%D%*_)%r!_BR>4.>HFr^[?mI^krUFPUI._^(6QWELg(jEHCL:*;shr(33=J$)$RET5BVKC,c)][AbA\Do4cU:tLO8\$h$4^(uTIs=$KB2T:n[WK0>S\3g#nMfWGGm_G^@p5+T4A2@f./bQ[CaP/lDI+3laXoW@t!ip[+-\TuH+iD=B502cZ+hZmc%pLWj+)0LZ9WR,$+#$J2'i9PgP(*ICJ=<4mLA#&LVH$p5SL7e^gt6o1mjdcgLBJ;8lHbX-`#3EnW![oigg'-#Icsg+$r^:YKROMmV#;&(=R'Bra0L!a!fNGA4+bQ(1WSc!WPKFir0JX'r+/ggXpG3=Q@kJ$F<-0Sn$l*"q^b838U8DWRS<$6@i/I>b:lqV.]*6OSMtHFua2I!YaQLV1U>o8V>;6guH%E)7t^n-sR70,A!2_9PaEY30*Q*FXT=)qZ%H#YXo"OL(-PHK]7P6%A'idmGB%WoGqmaF8Ho`&f$o+J2>W-6E0'_MK@J$CjFc*rNfK`0F+LaG&?Bm^=q@rN6Zss#\j>9>p9DFU>`b>`6hJ)k3dB:bn7f9F;(c&@PDbuXIG\LHe:$e;mNr`O8GnYZU&pAY6P9$IljO2HH19LQIEQ3,Xjaos8n.^,p`Z!:fo[,(5I)-]^s5_,gkJQtZe,`)0ZL@@0oHct8)!6SdT1!4qc;E#D=p.jB\I4pd+r5bBrgP_9O#2o[X(Br.W(HZ8mBQEJ>B;B8R%anls"2)[+,7ETkUR\6[+_'VQI#q0Q$JXg?KDeX0bm\.W%&\!g9uQjdBd44%;?p>JnG]$pSe.4.M'M#F7>m4WD&!LI86'"N6QH3fVH3;1s#D0rO!fSCNu:!4ZS36/dR0>1a#n9OQtSRhYRDLdl@J"H%^C1Hb>A%Cn;rDmp0k>4bLlAnd#\Ha4,J/D6jc)ZLKre0`Sf([6)";M3r$A4FE6<(bK^g2qVDh%Jk>!Tu38;@E*@MDhXqKL_((B]iXdhCn-n"BpP:Ds&R-0V6kbHjA(2g^]+LalQGl__Z$;]opC5e,b2,@Bd9OOZD2`lOD,q&r$]Z&]CEf\?sfZUodB0)CfUs,&R!TUohpg3+O+#9A4.06a!5ema>.>86_pmmR^WZXkj2HdoNBBX\K`P.W+i&D=q#,Xj25PA0496g1o)(Y,&2fdT3PB>G\Ii8R&$nh?9.nS;l25:#sra"=1!LF?k]Qe3Ad-SZ;.8e4Ke&U6ji]>)u"0([H515@E82T.>u%.V=j03Cu_.GuudXUm43Et:uI'XDA`LFO*RG:-@ZEpf8HA;r>_bSs'R(Jd9)$K$TqgYg4:P+P?[o$QAlMh'J%VUp?on7r="LUAO+]#$Ko?e^TiMg`hKK:h"8@Oq)AkSQn"TmEft9@YAfV0!Oq2=$+oRJF%!N;pn]\X*`8qhb77NXY_P6HJ7XM_<82U.;>iieNIWIZrPg0D3_R+:_,_HdoL1`[$G\Ii8R(#IXjU5Xd\O"n8*rFLE7KTZX+]A;oo/J\jkZ,)4!%l#OG?4#E7ARA_dTE%n^'@&)()F(e*dq(+A:2Qau>0$%'m[[GO-J[YpKqCXkYusa0f=&F6V8I*ZGU,L:(UU^]K)HOQMX[N][OWI593^0H_S+.])b(fqB0lpI''@DtJ[;5';+HLL.'P`WcYYM*-RA*s$P":CrR/A.D\>nmtbP7sj$Gm_Q`W.ljE->ihXknC^=UR!Li2kSSXO>K.a(,QbO#6fVU-_5Gga#TjS+AhNq<@#=5VEXDE\27+4H@#=]IN)%S,9;.kfZ5YdLW^ZEs(-jLT0_kURg!GA#C?3BV4*(hTQ@6i4ZA,3+Q:G#&ZQo"D00#/,T=r>DM=BYcX2J0e[e!P-"(Y23SW^EB-#Idk[X(BrlBJYUg?S3">Fgqc\k?8@,&NURH>Sd9>G\IMJ6=LD09q-VlfC8]>DgT!mZG$2H"*6A)+KBGPL]$(fTS$_sU7T=c5FbQ1V&%1aDL6;Z5D01a!s4jqt*=.!#UknH0<7Tg^piRXnB>iBA]A\IGKYd8^?XgV]n)I!+F(>SIcjpLe@aba6Y7Uob[>$6u$F;0uF\:@;D08Y..W'<(g?S#?l1R\Q4TlH[`&;>1ZW0b)*UVsqeL<*pD07astbX[EsN-:257%L0I4h(_G=AAr+$qIO^@DI1]Ogl:'D4_;Z$$MDH-EKsW-KDnkmhWH84a,QF;irCpG^F"hnV"&Xp_&iGImjgOhV\"cLpu1A.*?0Aa*":e`,Q+*!h9JCDG8qP1?KRr"EQ',m1far9IA[i+js/3]o$H9d^X>InU-g!-(GHlrr6Sf[!ll8e"+(\_>iie7V]iVoNPB)Lg+jN+b"`INX:2eT*:4J&r"/qX).5Ch2SZ!:\1VOM6dDRl6-j3QZH)UV#@tVV@4S15.GXiuQg1o*SZrPg0D3_PURC;rGdT39-4`,=6g+$r^:YI:8oiaEfFl.1T0R0"@^;UiUBV\4(D0hSX8mA-odT/$Mgr`"8+#]e4SD'@.QR@SNDO;k23",e/!Or!gm6b9C,5g,>s1#k0=KDtF4D67nluXjfO>P9a>7I3)8!;>1K<+uk'<]\#*l^`#`Wkt,MstdY5;XK;CC>h/OS`/f56(.^3&$Anb[msPpaW+EDA2HLVLI[lKo!Z`inU9*mP!kE),*H^TX+O'LUb<[*IVp\dq_qGXfdFGdoNBVXL-N9[+,82@qi!M*Y&V/8R!5.0Pts![X(Br.W'<(g?L;-o`e[;[+/I9l@Y'MF@"XG7G@$X_6LAt=UtallD1PBHC2.P93](RD3_Q@-Z+!m[X&%Y@+so6WO7ur,VY0[$9X0"Xe1`tp`[76\F$!/2"q_\R4CG].$i>,.I[PTj.Qp&`A)lpF"YQl*IJn@*t#H3.[(k`G7<1m2m89jg!7jY%1`abA(qpgE,*TiMJMLDdTpDm%cdAHL[!2RFb(>^!f()M'Ce(N-Jg3jGaPo>7Z^d*"L[m?qW4`T+%I:I"WS'*!Z.\lug5!)4>:AgtEWg[,DS3!!d"*lsE)!@]oLh@&UBm#uf0Xi/+gh7eeqZNCau,_"Nf6XgHV/CcQ?Tf$;OVNO75=%u1l4T@6hR4\T)9V6)pPg?N8'.W)"cUoi'G2h=VUVQJ9IW^YVkD06L?oP)WURGiR(<^.\/0t-FQ"E/\:dYSK;`^>6qr(7LuD9U0SZOlZ?pI!W)L2Vi&=r:Ggog6.o@bO0j%Zq0"hXQ]XcUBr9PWjJISWPU:G6fpFJYO7G0C]OKqacFi3+*RcoQQdq"tYJ`bJPbA]4$=Eh$/YQ4!"n.eG\Ii)+O)>8R(#ARkibk>KsYidT1"M-#JpU8mC,AVq"fh5Z7eE7%,Q7?t%Y.W(HZ8mA-omR^WZXmSbb]p#ls>G\IMJ66/8mA-odT.Fodkbi`b0t)UpPpJm+cWP?T'LfmTD%uUi:r^EXBIHF#L[\bO>Q[XfmScTboTc9J%'h[LoBk,G0+X44h,fZ%gdIUa==scrWq6#_oA)o`5A.`8']BpU*_rd(q^TJjWD[]6_DFBUq*QX2EQehQanm8K$,9cp+?$NjWsB]:p4M#>&-rXjU6;^Se1T'Zs$P]guA(XjU6aX&l+!dT1(_VtH-.BreVkLDJ#IC7;SWRC5^lV6/0HBe+=Mg?Pd2BrdS7Wt4bp[$;GB?B+Z^c[-"?AU$Y9.t^.NEi5"R>J.$*&Up.'2L'9R#?]uuJ:N-BgkC?p9'Uk<olMhn*h[)uQC`4WK@;_$g,MoBXa^fY)CEE6AXo5:TW.R/!)S6/pk%/>AL^IeI[8D**L#doNBBXj5r"Z(87%g?Q+Cm7XjU6aX0bm\.W(HZ8mA-oDYOZa'[R6H>eitKQ!o9S:g^InV`Ef]n&dhaL[O9?6RT=d0u("2m(a`b8Ah;YeC5O#0mK$&4L@E2Ii`cpS&8c)><.[MeTRS]=FhEBZA(^g^u7/S;;TBA7cP(C,eHk336cD1dIm'rjMBuR#D7f5X+Q0q1-6OdE:ArBq@4QUn?TAn2eSM(mM*P,6U_D<&dE'f0.ofUfOh$XGKS:U,drJp*OGqg[)T#d3tpLQm$Qu,YQEHE8(9Us"RDEag-]X+:THj#Qsg0f.dAi1'?8QGnQ3]V?Td*%aHG.T+9E^kgR5A:),]Fd4)kiLj;ck""ZS`FA&bk$QMQgfGf$cWgE4l=7+gE[%j+VP6hnUlUbTPpP*d;dRk1`4\arkRPI>d_DB\"3g?L5'X+qg7Fg6^4:KsC_0PtqJWgpN/93Zhk_mEFtl8@!jB;(-geL>45Qff,.Y,&2FP.#ZBdT.028G9F@=V&t^B;*I^X1Pah#u*"3nZOBb#X(tRl*K3?"4Dc])N38Lgf"[a5l#(n2p^`M-BB+42ZH;rQ=3q5u0T%#YXGW>I\["apN!IKX\]r[PT8/gP7M=HZP-W\SQh\7b8=i9/&[Qg&c2`UL,a2/;R(*hlZ>*ZdjkMb4er^Cu]4">2Yp18]DjB^_Np4W)ii!KL_dhj-AGfKOd]/fE60Mdg(e9#AL%!%5BE.bm_H,Fgqc3m2Tn<]cE/Kc"9L@6GTNGr`:'\(\aYMX>WrYWmbq3t6>Rk?E4FSn'Sdol?Ll.u+`Zno/97BB%m#B?Dnk#?O.\*pt;f3EH^i*=ga?RWmu3S^M_.H*BE4R9.sfa$XpH0o%["XBq7DFN9BWYq$^goMAU!_rf=%g1cinL0>!eaQ5(jmgQY@NLcBm8].]T=fW$HL+BaUj_!J/T,q5Qi2*PN8R($d)=k\QQG*[X&5-4(3qlEYoU!CXWE(f?;@hJj\Xr(*i?(%.Xs9;gdum7XrR@$*3q@Wn'H\KV=4'I@!Pj1YH7V]LZVEC%W-Gn]e6AMNZ3U\=#0F4TroAic(P`Wdk!Qh[2?'..r@/ql`sc5(9XI8*eJ%!Xl?Hj=>ufXcelWr(ha7H7(b+IXj3*VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cB>VnLkpkCLdRu?cLPr.l5SW*s8L?-lFiWFVJe*^8`a/j.iS$R(LLGjZJJmV3otQ;\FSGf&J5TenXL_&s.72j/Y6!I+_m*!O74$BZrKL^6psFJ7bT>/'bM#i&Jl=A+kIf?s,9e\=-O:K[[n9jn6psF2`*6!j.W#n4&J5TefCQ8r=CqJ6q"tiUoi'G&J5Te&TKsJX#&JpT.dp_pd^7W[n'^l6psF2`!H[UeUP%&*u9?9nUh4F#@[g]Jm_/S779O37)VTUZrPg0+sJ3T,-E;1orW_Wq#/05([io(Fn+/(Va'j,pO?nXLkpkCM"phu^NTYO%K;Zh3mh!CHiNgV(4TocSVp8sO<02ij9^DA$%o0J>=CqJ6q"st:>.17'bM#i&JC:/T)iL=oI/;-Z2Fu&jD)cW77B(4.GemQ\Z8&h4N4G#l&=rGOl"uDX_$OiV0W7Tou`ilJYf<;jecelA7qhpBI^A-R(s1L[D+@_G?#Sn[Zg?N@$%K2m7\)-&_m*=P0e=\^R%)2*5S`ULm5.BGqK,Mm@#2`=2B,9e*GEO[tQ+"inP8`5Dh&6-X)UtXG_7/6ndl`5uk8'Ru0S:7ei*0scbX0#B:,7:b[+1)RT.KtTnc%P(`TJ&P[.s8(J)^Irb?t1,qnI@4q6g+70<`.JIciZXs1\-NDr1Nmp,g$c/'"uH%JIigCtcQnIqi%m4b&_m.l_RHt)W\/SHkFVu3_7s68N-?Mk%dIrFlG/H5$mGZ+Mmn^JUK`5dS_T8;Y7+Z_nN@6B*(Tg$:WEWCZ@A3`O*.hEUi&&\bE"Mo\C6.D^4dT-t+R:;YAGUcmH,+]`fX0bkp>XPbj6p)3d57u5$[+27[^:F$*$bg/mmiDH%ih%cNH1@>-+sJ3T,3$un+=BQ)BIA`dYU@pJpdYf:&)KZZrPg0+sJ3Tin9L'8m=_P6psG]oq\^%?7p2Lh_O=eL0n"&WoPNDhm<+8(]V\f$VMKmD\gI/tYdJ=OHgdkYGXWlaCMJXQsWG)6eG]'=ZB)FB,+2$TgO88/$]*j'6R;XAA"3S84a_r^$AOTeq`tuC/8^%.)Lj1!=Lj3Zq,3%WLlVGI*KqOtjT"ppoTAUeOJ3Z@T+lt7r_%0nbpB"(VC8MZ[@&g>79;^r25J!0E0i4%K;h/nN?RUn^JUK`5dS_T87+f5s&L;JN]\j_*;r?JUh8r6m*uk)EX)h$'Vei>=H1>'\c$o;pkFTnSCd$V6(s$!fCh=ii-ViM0QJ)X_',ipnT(@i+n*t]_KAJNUZTE5G1].rU,9WHr'7Z`@j_L6psG]Z\5"-nNKsep_[3D/=n).F^Kg8;j<#pd0tsFXNQ'Mgq[rABpmQGBO!gA`Tg$:WEWCZ@A3`O*.hEU\VlS6HBrd'!Mdi03GUcmH,+_#5X0\V(,2t/m2A,IY[/NHUJ'qAe$mNkbZ$[na?O<1hO2W206psF2`*8-EI-W-K=XkMnHN#!i5=F3T+sJ3T,'HL]c(qHc+sJ3T@Y_>@-Gr\3bH;laAcbLkpkCLk2q``OMd,qWe]1n;)mVLkp9c>T)hqW/7EQ4HE"d.O$&\,3!**g?OEgXWer5+sK4ZUog4!4,k*i&J5TeD_Fng3Bf&XF[&Aa6psG]_t) +endstream +endobj +22 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 20 0 R +/Annots 23 0 R +>> +endobj +23 0 obj +[ +24 0 R +25 0 R +26 0 R +27 0 R +] +endobj +24 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 428.885 469.692 448.388 460.692 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xml.apache.org/batik) +/S /URI >> +/H /I +>> +endobj +25 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 487.0 373.392 514.999 364.392 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://cocoon.apache.org) +/S /URI >> +/H /I +>> +endobj +26 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 196.366 258.192 227.353 249.192 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://abj.dk/dxf2calc) +/S /URI >> +/H /I +>> +endobj +27 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 208.549 177.192 228.052 168.192 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlgraphics.apache.org/batik) +/S /URI >> +/H /I +>> +endobj +28 0 obj +<< /Length 1857 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gau0D=`<%S&:XAW&H%am2'Z!(WBMl[VT6,lTSpC.@'_7`S$nUIW['[r^Yb/&R\XcQTdLM]>>oKO*_6;s3VMLH%l.SV`+h'K.&rC*&^No2f:Y?hO);=Lk(F.7CNi`0W6?LuH'\P;[3CGQ`ORIV9LbSTHL8b5nlk9g/G^PMcI5"1ms+#mZ"Mot0mH$pgEMT(mk9"@5rZEaE7=bfh;IlN_F^?t<'C%q=YMNi:S7f\](4%N+Cl(hJes\'W,'^N%UZFTTF'Bco'VE\\_V"WR?I)XUYA6uR>hGt81Jmh6k!@W0-H(2\UZu#LVkmG=/t+oTca9&]G@qcg-rTJt0I25(#g>s@&8+Yc,=aoX.ClEW;9CK],fpusK,$&kV(nf!A*Mm:bk62uDiBP-I'!_>?THCjU>3]H_;Hl'"\jCFE&1?kQ9s-1W^WrP].73qG"O9UEp;pbp*`4(jP)SBGkGZ%U!F4074>AfhH_WJ^7LA!_,kn9@,Ujr8Ok&33Q[lQqhi;&N7I-Q;)Z;4h2.)Q0m'V`[d`:^)KqO[$MNOg00epnX2$iC7tc+DJH?KIs>G2JY2\II7+H#Rt8l&uZe'"/sh,#;>Tkt`%$MDcNqq;5H^@hecjKl2WB!$Bo`Pica\Bq@@=N*2l](H*ehCms,>T>1;?1DXsSONj6bYN"Ue8Y1G!9W2fS4Nk(M9kt_p9TsI?O5-Vk0X;ShJ+;#D5CV%*&]@5Z,0nEM_TMJTXA\'b*'eRBRch]G&D7iY\XAL2i"/)6_eSge`/*1d1giLeHk.GA;1PL(Qr=@TMo&o\YbV!`BSZZP;WiD@iECfS4Z@IUpc=nH7#<0JE93T@?`mm+VC4:KN=n@IC0Fku,gHgr<1B^j2Vk,'UN&s/]mG2T)'F]W177KjZVCF!oRu7$QSE;72UC1K?=AIl4iC1Hm]MQ7;p21MaZ'L9sV%JbO%+1'535KWoAo*"d>Pc5hg$E!p\C5D4`B>_7p0X.=Q9F&D"r=MTBA^Jf4-NO=b4mGKZ:]^Ylnb^pQLUmt5j3$aNFVd*XaEGO>T$#gW.6*i&rAYd9"RRHE#Jji)9WOTp3Gj#!!=Wf[o.hCc7@pe'#R6"JhXM_Q=Pj@k[hqt$DbA$'an3Wh%;Dnq:"([X2XiP'uTb6j$Y:\1V3!5O6Aj=7h4^\Kj.Q$k0$o"R;h[;,qR/EVtmm"HK"/V2rpHT$7*?A1:#)F\HUr6h(C>M^=D>-k;k?p-bj@aV.+nW8pK7>RP3A#8:)t^MBNV@=,2Y+K5\7in,=tBH#*c~> +endstream +endobj +29 0 obj +<> +stream +Gb"-Vfh^+1j8O&u!DblLa9)r8k^eSI8Rk(X$mC986QjFTYT>p-lc&<"N:8Q$o9Qh\X)#HJS<)ht\s)Pc%O9l^_,JR$duqd0JiL]K\N.c5:&M0ub&?N%rj]:"gCG/.9^q+Cg?b`Y`4P]ko+bq:.`ta]SGLXt=NA`Y`3E0ud=S\?0?[[hWD30ub&?/4SDqZ-t>)RI$f$bcf,9o4mhM`Y`3E0ui))[.!M7Rt'fX:m5<7qb+Q0hY']jPIR_3@uN.^(h5@YgF@C%56bIV5TZ=gJ@N3RT%-^roc1Lc=A=5qgR`noCuRs+H_?G3UFDtVYMIl.J\5Z!Y1N%Mnhc*A\9fXoNO9lKnH0uj2Cn`p]qmqh8`]6YF"hUnm?RKI:IW6(]%KUNWjBW1/MPEEh$`GNTHHP,/i0ZMsMr;+=`3ubXD[hWE>%H;^R`n9%'?[io>BB-Fh2XM72e^Y/;P=ke#89Nqn%q"9EIG;a?>WG.Dr"_Blc])JE"#0Q5C/\dS6bSXiKrHfL8LqIM4+p;E9@2PV]%cQTfPRgeZ*0V^W6N0M=@R=RnZk(SK3lYYde.:+$e%Pt=f4%A;j.\cgaVQ9HKj^4]RM\gXV?rX:(k4`P&c(@Q]J-P\3tV"m>LT)@Os>JDY@V[9iA?J$rt[H*e)_0=Q=D;gtP@4c+PMiUIIQq1XjFjT"7Pq'SaW9;W23Fi`'0/2]T?(fBlm%2Lg0hX831DC`^DA*dKYgPXaCgPXaCgPXaC0ub&?Z]EjugPXaCgPXbN^#)jFN`k%GHtf[8bA-&q:a*O:#P*Edtn?oDq-[g4eM;2;_o"unDICjXte0oVX@BdLAFV@F4(RRhu@G@1V7lN4qH&S-RC_aYqKC!G)N"LT;e:nB`r8?EG_\+>+ba<5+s=Oc7=od92!$)7_U_l=CN2JDTl(#kDU7GRnTr9<4RWpHD57bJj&86PRj3^SHR!Qa$aVRC[#a5M%e=QnibB(-HiKMbE:%NWWD\6c0id"?-72OI@d3#(GJ$ag2@6>f/rjpUmg>>VMfCKj/Ij*1O51BF4:(YK9f,SgfsmS>K``5SoCl5:q*g=7VZchK82%TO]mGD/K1b6"ed6Rek#P3#H_"QHFF#\>0]ELCGFU[3=cWB>_!(RMW"$\Z=k::QU^SN\HLDp^=RBk6et`nBlAj.okmV`pKGm/91o<@]dpIuS:Q#=7?[R?mp:MnYC%4p1gL+Si7=2<:d7Clh0`nLHR>2I]7nY>9(uMr$D@(R-\m:Ec"EiY_HfahdNmU`3X:kXgs)/mTVY5ihf;19K\!c5iEhGhg3a7q\"&2bG>>sP];MDc"o"H]c:ZOlBU.(!0g=lOoC5@GapCn:k<\]2\CW")hsQfB`=NNk@EOl*jnP*JOl#<3eaqfV26t^"5iO33S0ufS-DC]TTDC]TTDC]TT`Y`3Ebs$"qDC]TTDC]V*pM='5mq&T'A8%6faLYpVAH1^hAW/@`rr$O`CHU_.M)msL:,b!ffPJ?\42i"j;=,7A,l53XgkLCXgkLCXgkJM@uN-#qm`cc#?-1G;)jI=?NdO@j:Hhdu(h;piTB?!i;m'$$N\ZD42VtNenSe_d6;PBWh@BBY$^es&J0TF\Cm&e>)(a`.?k#%`YY1"om%O?1Y`*c-$TYWA'NpB[6cS"$j$AK#^IIVfQePc4?$\2E"PFQL8Y0:k,rYg)#%BtB$B!@:"XXr6G=tujV\U?*corN\@Vbgr)Y$%Y(NtA.eoRd+Q0d>Ib.<`3A*V=;[6h#.[]_V$*HoTmM8.Gl=e&kRMi&P"65sk(irbK#eR+2P"QtV\H"ok3J>&Q&9KE=V.uu!n6H+1V]K+:)Xt<'_!eEB4;qP&/qVDj0p5c3<(f(\r*D[9fAoH4.Kt$lJ>W`Zp1!NES&'0cj8UGEsRd&@;IJ#j($DD6;riHH,%K3b0J-^b1-&[@mnQT2-A@];56V*S:B[Z2r_8TN%r?/Tt%57XgkLCXgkLCXVbQ,0fJp=XgkLCXgkLCXo:cDasg9Hn$l`%Y(([pp.mkP`Y`4Phk0$T`p/rA`0<>LS[Y$n[DROX$D]MS_[!khYfN1AMapjaP2S6"Ce0=-qFk!@/K5Ege-U+>=b8gVQKrQ6EHDX8O04ag+[mcSNX0?o+$mn[*b::Y%')i]JaD?V@J/i1=?H@.AG<3Yn&k4:lG!X3mre,HDnrlt$E?^^@'D!tX92VB@&>W^$7pUn;O5\%$0Hdi0Fm59CF"&GC+8]h_a(BsOX+hl%HN(h:bX:"Jo4teoJ%2;2F(X4QV^o#$=).[#eI2F0#@!9#E;e_@CRrqN$I#K+'JujTe'V+3uZS01mfKrXbOq6Tg(ISe%eI]*/p[8>T_MCVk=un#!N\)Kn5i?:inT9S@2nr]5'ZkOasnV)R&U^F(Z"NrW-jQ2+6*ZC9J\cTAe?*6De;$^5V$.gf#&M=m:oh,I-qaMaYE*D0bLl0[hZ@e[hZ@e[hWD30udfI[hZ@e[hZ@e\(1AjXo'sIh2RE"?J.]6\g$,uq,A5AN3Rk\RVDG"?&X3S@j[kRYnABM*KY:j*Tm4X@F"I(QoglfN%Gi4$,ZIX+e0Z$_L,]'bR5`6!l$GHT*bt]P'7'\Ei6c@O5s#f`=C!=\Q6Q[q^P][bDKiVL,f'F8@7GCWdYBsY58g4Q3IUSDo:+o9^p`a"ChLXbt1g-@$D'ki6eA,qIFQ+VLVSmNMM,8<3V@Z#fGoD8;]+2'!-`M?li&He)2])$]K`&@-Z&>j$5L>#$4Ba_E\n#qf?2d0?[d7YS;JV"uprT*kXrc?qQ$m=2U7&5!pN=oL]b+,c#.b8G*dQ]%XL=)5s`sUupFNl;LM`GmL!*3W_3T3V_D7n9R4TP6D"S-kqEfg/_S%I[;(;Q,qJI:h)o<'/`nAKMeM!gPR`*)#KB7D8gA2D8gA2D8gA2(h8N0fuIsKD8gA2D8gAbYM<._=h!b3m'>uMI&`,[`n8&?2qqBn_%'Rh.1t^&`IllFF2jQ!\nc=X"lius@(G2k&;#a*-jeDW>2W-k4=Pk%=UUd7YeZe>$XFXSfTmsG,\I<4[0b#-.j<3$.:p>99/\&aKTskAYe+WpFEO,T^Z,Mt'd\L]Qi__(Jm_7T[2lo7"@8@WDTSYH#1og3e4HF7TU*IUU`.C=15*J;@42jA_h)SV;j&A@+7dW2tVc?l;M%1;H#6-D_+K)),W48c>&bkZ\5%*at^'(CErM5Zc!TE7rFMDQef#$i-H]PZE(K"]1D_U9[1u+;IDFHEje#M31e@Gn/=Us^kld'kn+X\gD6*?8c*@GW,+4l@C5f*:U';"7'k<1W`ZjENijRjTijRjTijN@n6&Xtb`W*-[T*BR$qZ%5=QGc1\l<2;Bja_-$d_W19pstK,IQJ=C7Z5HHFU%%I/&#Bcp?9\![%J6&c.[heFk;$G)fKq";7qnF5:`YZm%EeG]uoVb_tr+W5Zn3:NS-5%Z`b6RKL=2k3:oC?FK7Z.4B'[bGHZ'[%?48HJf>BOC=s^9bHF(E:]3:e5.o=rREkhOYD=YRH->AcnCDkOUqm(]q)ueB!O;7;na`HeD`Y=db^"C5f*:U'?OE0\f]f0ub%tgfE32gfE32gfE32N%r$-W/HGQ!>UWIGpA/4qhHl?/KX%7P@9S;"m4Q?^q=%f/2F-@ieBEpW)&$@c88X:9n>aA'nRY>(0`&"\s*4g/X`iQ0,9e]Vnb(2C.Q\ZM,Lu4)j6.q@9^^;nE@tcE7qBZ=[=6V9e.>s8-#i-3VZ:ii&2m4b:#@CWF4=*J7CP@m),g\cm8uCX2$KT#3u'M`o.Y?)G12)J7.S6(]#pQ?$b27_5W'F5n2&".0Y*b"AljVk=@A,$dha*VLh1%#a:HE-OltFiY\-Xoe?u\!)nA&(jZk331'i[Ss>u;b5g!f)X.'OdI),'oa$;d//[ZtKnA@LnFZ5lYaLBbCoN*YP!VuS%0oi3g#D8$[&D]4H[O2*KG+;=d0b(2bYB(h8Ln`,3J1`GNS2`GNS2`>E*DZ.[07`GNS2`GNS2ocMjfG@_S%s5[*iN%r?Op!%Ya>tTXXhW6F=S.'I_b_$(C&n'#JF(,'e-*X1&"W$>Y@@f[ik56qM51$Kf`O?LhhNe>Ln9Q;&gUdG$5>6]THPXEp@gh7JqF$]pC_=n5Qii8iiaMi["d&4%'@\U*UMC!\%W&?D$6FC*JBMsHapXELAP@Z*+T_:TSI^J3$tu_:JqH/IK<@-PrnRGq'HCBY[a??S%1AZr(-piP`DBVK#DIX[JqiP:TH@8pLcj#B,^"1F$MsW#J-Ka0\S&@H?4e3/7Cg=mJEaLkhZWMQti;`aAVLFirs_tlJT+)0^s/fQj0kTC<]XQK;JRa1:VE$6a2NF7G.G769+JHE2>#bW\5oUCNXW)*6J=g?Rk7E=$h=(4;`fn@!!LnFM0\$:G/T>Wp@c[iSKXRoW_A?eG9E;%-PHC\Hq;.`DBiG$/+!7Y\I/b`%R1(K890;k+BBnFa8/@)\!+fY%#1=T?KX3:Z/af^dcDpc'o7eGf=DgJ;5/c>R.3p93Fabm@50XdX0GKC5m,_.)UC9I@!u*AD&/"lZkteQUZ+PO4SLaOKiY@t`To0ub&?Ii5^1[hZ@e[hZ@e[hWD30udfI[hZ@e[hZ@e[hZ@e@uN.^B&>/KeY:71@Es*;bRLJeS?6j@_7^PMHhKgoGA[^,HRLBF'je[kH3Ia_;)SB@)jpY_/2btOAe=6nNIYrp+a$2l?q/khJZlU9tjFS:c,Q4ZNgZE'D?b6d0c'ng5%PEHcAN@8B_XOl_q!PK-THDI2,C>cmVU+Emro"B]m*$(r%VC8Q"-o-,#W1gB4qZj)/`Z?@Y\S#:'GooJ='m5gOsT^mU:^UY/'DA=L'[<:e2OH:"YM2=Reg._;>e$W#>Ih7pd07j(KItOABfDpD;q[QY<-:)65!n:0iL[1:&6dq$sTXL+ghZG4#&`g@Pm;BBHe@#_-B!SPia>V1aaRWot+s!6!-+.#'8,7LNu81@$*&VjrBiqo.(Togcb7;rmbSaZmPqk\#$ssIIgn(R>!?0H3qgO\H(c/SIb"ue_Gcb+gE72&g!jdntBkjdBA9VPoJ]@j'l\;/V)8*WSi5NM=m55L3P]Qa$MHjVShft"OQmU_PomqTV6BTr;+Y>3-/''NMaLobo_II3"md!(I;W[;E2C?&a]=A+WT1G#`e:Z$9]E_:g9@sUV1#$e('LeruXn-Vu8CgmE#P1^a`1DXWFhhK`7PNE;JKJn6=lp?qc5`gD@ZcgPK;Z:59(`18(m9"_o\AJ^Xi?6L0W-?l@+;g@L6=31'oHB,3i0\L$b4QZHT]mu-,NNeQuG2aYKo"Sc]k!kkL/d/Mc)Ce@:TsRMgos`2-Q(86=I/>f!psV1+A*6n6b?G?C70W2"([GL(:);pPXbI9(f"ob/HXPU:TAZK*Z6;:k*S.@9L:(eP+I00ape`C5R@Zh7Jj`J2q4q5:9d[e^-*o2\RE[Qo&g;:(@f"/A^(+o:0^XfKA[e>pCZ<+hqF,:G^-UZ7F!.I:5"J=a4,_LG#8P02BA04ADgGDr]FXU67%4qJB?lR5g;dVR&#;Uu38Aj9:E;)gW%/6h93jV*'-iCPi)*D^q#SpnNS3FFsr73jsNlFH5\,uT*6n'"$#/RDX4GFQSO!K?p=H]kBHD.FXJk],rMm6(C9`t'')#DZGf96]aJMbaH$/H+m60m&X)!Tm;kW0e0!Lg@JCS`_.SJ&RH$Li<XY,d^#rP%Dobj^2.[9LtVWp!;=.FrTRXD'549>+4Vr6"BI(3'u*1F&1#$kMi5WA6J$jI_SXEJQngu.p\JD5t9l5tu>MD<+Qe@;WjXgkLCXgkLCXkkmP.rHlW(h8bL>B*ke>B*ke>B*l\:X/Hlf'=@.R`S,RD6NV?`Y`4cSn>O8(>$UCS2':(&sta%-\S>dGTiG&KG0#8U(@mu]bk"XbR^KThIOHh!Xh--6H->6(-,<%Yqo*HLF!F=W?i">=Y_,FRL/L"@C]N3Y[g%_4r8[OqAMC:SHbFo'J:(Q#IU]3Q?^65(r?)iLd.-T9YZVKh`DR*ZV<=LP<`)^((GF?iRU%597A.(hH22`aW[r^YMINOjcC[<);kF:mFN!,AAdJWd@]&2[pJhjbg&[[#/]W0-2m8b0NZCID!766.qh&#Vh"%BU0G;o,1_GlhbH0__K_P`o,u_:6.:N4iA%kZ]LWrAE<<$@_eg0g)uG#?^Z^5]&$d,uHA:$)Vr]3V`5F@-pg/\q'APcN4%TQLqAS%i;<<7]@A\Lu`=ulgEeO"E/$)jge$.W%r6!\1&@Z>CJ)JY>LV2GSOq>/Fah0BPY\!<=]#)gG)/sd7LrW$nAEEdEe0ub&W(ZMm_[c4aT[c4aT[X,9iX^;#B@Z3&8DiWS0gPXaCgPXbN5J+&)cT*9"r`g,c'U$?&iYfSNKJ;M^j\"Uk14NrrDn5o$n'2?mdb*23W&Y[S:SrFeBD]Ua@uS)'^"0X'eQ<,fJMpWXO9Y;=8MFfT6^TuJ2'L1h0$G>?/qajF?78YV8c`A75:MaK):UOr(V58gXu&G9\,*n&-J4$k0*^#Y9.$LO;S2Fl2'(]#)5'`4V>'/ghV-;KrSDNjgT%\E*IPF,#hp##Eb(RO_.+27b):Q2!#RCG%h^c[\fK3]S8fot[iXDJ>IN!BMb&_'kD6YUfPPa.S$KrVEkat(Z2''THs9KE^GLEUDb3fe6b"A@:]Mi@p](n]oIq_-7&8jC4BN(oVk"KR\G9+fQ[\OcP6paJGO+\G8Xq0jc9j\N3U-s=`18mcQu\>,8h9h#`AmB?u^B//F$"HqGtB:]u&dc<%/9BoL)k4IFt)#ELdsYhmlY-K]UN\6GcYI'9\pm/"WgT3jKo/8s_k<`8)>3L>bF?^D0[:R2'[ZBBeCE=2fR/dccCkjC!%YiE1uKWFAOAL,TVQ$o*=3$nQoo?>`_R8p'Sd]*[j0)PapVGU%H2sTk(dB"3N8&'rB&R-oglWS2p6[gqU0%qRUm'@AjW/H9J4u<_g+E\?2?D>B*k%`Ya&hijRjTijRjTijRjTijRjT@Z3$"qm`cdiE)];(T^(HdA/B[L.B8_&g;mm3>&=iTUXsH[HO-n*bn77gG^Zd68t*Zl^b=*J!FqLS3eW6)].3*.j)c#DMk=d*O,ICWO+?FW?.Z*Co):P9Y%C6b"K!lo53Yg\um'O&*X^PC,'Q._o\t#D`7%\==!^dZY3&RWh)6itgV)]),4VUb*0"1i8"#p.pY#`kI((7K`)p4pN6p)RPg*2F[R0#>?\HV;$1aBd=+>tE8\[m4^o_B=j0bN;eofsFNQlG*`m<'dcua>MK]Yb_m]E**h,\uZQJ9.]GCG,?9q1*=bE(#!rs.b9qD4KILVZ+,%OSk!\?2WfgPXaC0uhkX'=S^c't4pe't4pe't4pe'k<3-fuIsKD8gA2D8gAbTASlS>unY:Ih^CHVWYbrpiHI5Y`,XalYnK/L-H;?El"b[$YJ3b_J#OJ?5WJXXMZ!m2Y&k1L->dqa9Fs1-!5:sK4T.goF4nKgZX]+*Vi8DrAih!s4&:i:Ve3E+fBo-H;md1^<7?)V5a7N4gl=\#n-l@(E8ts#)c9_F1=C`e*q-'Y"6Rmk+$RD@>m%K(Bnj*7r#Df5M"uBj:bLj/R2iY[8/^2XPZ:NPUE*>k!h;Y`3Me"mODYr)m?<\#?>Fa8lE%@5@E1%*LBo:t*/#OUO9p&]CI)0hASE@Ttit%e0>t^hq&-`GNR2A*dKWgPXaCgPXaCgPXaCgPXaC0uhl4j0msUijRjTijS^0DCbC&?Mt>+Y%'Y,>Bup9q@i@#dQr9loRJ@sr!'uM8/.$)i&7H_bE+3M$2P'E,rg&3@+V6+6_=i`h+D*4$Z%'@&aZ9ED)b$h/*2A*dRR[_aoh7^3pC-_p_,=jIL=YWcbMO<3Tu75"S9u9E3]6i(`kSde)c4rr]pgLKcrQ"Jghp;bV!c``Ya&0;Vr!QIErDrSP-hnEJUm%_L[%Fo!^m"gC/PW*Un>lJ_,;`4K]WT,DPOBG$`Y-$6JAq#]@[oND#H./ih0'+&`\&7r9Mu4a7u>SYVfO[8N!=G`9[L*PlTn''p?1WQ3X@,?ZOmE_5+s/!W``JB**^\mfWn(eRYMD.fUoN8UrVr$Afu+'b+1YN&"R\+QP=696`d:IMMd);W]lETAcuX@H^Ar]107bJC.$#6^7A^?G9@e$OH+G"Fc&a,[pq1@G@Hq(S1*Sq,3r!40WSgf@A6[c4`)N%t%o`,3J1`GNS2`GNS2`GNS2`>E*$p2O;V>B*ke>B*mGGINk6BAo:re_N.ij'uu:Gr6>LV?HCXP6>A>9MVUSoBI'=$@)3Bi0'VA'QE8:8?#u;9c$8S^bVDdG%E'0CkLD=(0H;8R0QcFYs1`^/*2A^57`\TJtYueodcYbZ1h06m9^CAI=eVG"8)8(KBBe*0J[BpB:V0s#R2Fh%Y7efC0PC*KE"aH).SU[2Y5uIjiL0!O2#pho#b'Z!b-&J#8$I`LS1gcr17LlN\'pAn@BPBf:>IX7d3Baf-@i/8scA)_W8TY5EEj)9tDf601cTki\$k00"Tc)Rr3C@c786$Fp<>;5s)A]XY!b+FJiQiDOQFB&Ngt1QIIYRIl"&d[_mSdD6#+pLf7J0bC4E"?\`2G\BK;3@+PhRN+R)tRC?u0+d`D5kn'e1AMP1?@Wd4M/T=oWkI0BY@Z3&80#_\HD8gA2D8gA2D8gA2D8d?%D"_jQEEdEeEEdEerF`UioB0H=jZa$#C#XCT\pO9^bSu'of90N^2jk;ps'fX>?XCFA9*C;>$/E+&@5J-m,K\j\9`b-)W\BS?emZBQS14rDK68j]/G/;FmjY.;3J19Z`KV5Ld!o>9nHZ)Qd^uoD7YNIh=gp]P>amuu[6jRJ)];A9%"qh_h?Pd$Pa34aDThGcf_%:KK$3`*?Sh-N]B'T+FAIGA.X'TJgfB@g`nm8rXgkLCXgkLCXgkLCXgkJM@uSYrDC]TTDC]TTDQEg([[MI/LZb+i='[sV&9`iep=09O)O&#;E`Kg628t3gQiM"k1,sE.bE*"Td3S4?VLe'P]R%OWS-mjHFKc9fJ9>gb0Tle*_)*kcDQBB%0[Tb9N-9XVSSc-Wji\,&W3$Hq5A1;2`s;T/!(*ur([L@OED?JoT/">&@n?QB/aZVLFdL3dK)5>%:fCX'F(FlR7umKW!RCiR"n"_(hZNu;D,:?^jQmoXrH;??Np,\.CY-)I)CsqArC-Wff32gfs]_4]Hjd=Ran2Uu2a0m)Ff"L"HmaKghYm8cro#.h,g)6/u7l5,,+4@T2S7]TL3<3+Y;jakmm(dHq2/Xp^/&iE9s%M3KgfE32gfE32&TM#p>B*k%`Ya&T\?39C\?39C\?-t7[e`5OXjj.Ef3jq(4RF!h^W-eCSu^3!s>)Sd/QcVlHP%>:1:MN*=R#rI@["G^lo5Snb>&Q=B>k^pRacnlU,X&]\ntWARhDfE*G':fKZ#)P,gbEWqo#YreArB$kN^>5[JDXil^@%&0;4sXiq".(n2/YD`X'6-sf\!o=[uHCH)9]d\2D$go>Iq3o.[]E1:C-,G"4\g2N8"aQHXH4@NiS"PdN"^KY%kS@EhMr8e:88<+c1$,QhJ>X14/^p[#T;tki&DZHF;Sc9V;D-^c%D`Rm*AJ5B!&&/N6ScRkGRCn$=Yi/U8CRhR!D\mTU*4N\(D4?jcNiq#nG3EWLRb`I-lsQjX!lF'uA%2%4\?6g)?\k^K$2I2t=%gmnZ\RkeENlXT.,RKm,8\M3U@A*ECZ#^W?H-_EXogLdCaY(EO:G.?)p!:11SG\+]V!4]-JA*beE4^D&1)jRB-X2h1=6od.@K(6*"9T22knJ@hgPoJ>u^ur96;m*sn$:3Q4_>=4M?9J??e!@fBb=<`>DN\mg)HgRD(9e]q5]0=:r3eTne>1gi7kWl*Ned4[S&&[J%Xu`8:a`LFSu[IP6#b_7cTb!S:NGL3A\/:8pJ%SGrsa@aDAi4TQ_gY8C*o-ZRVa@Se)#9J"FRh$"oPSR*Idp0-%*TXb+`:&:-BdL7(n05Cm0#081^1kJHb!X!.Mh,Y1Lo#J^8J"En^AK>LROYjmXJ&HC]oBYL&ErD2$4kEA$lGq'60XbV]+ItEi@$>=6nK:B@=J_f8dO3I(e_;rSf2?205rJghQraC`<\Ajat>`:E2Nhu\pWmZ@`4XQ*W2Igc`M>d)+LL\2G(g_S0N/`n7N>lF_(2/>>huTcn(%sQmhHLP1\%oT1,`%NY!:8i;:`!=0H0`<4\c[4<.?L(0(jt1Ei,r=\+26!S`8sW7/Ths+^!.,X>SZ%\+m9O9?D7TZ&$u/uMh,P#*f0YF5'l[/AjfX?(4%CE;9`ghKo`^l/rsI&Ch>i8-KT0??JG$Ipd+NCW4K\_k\4]+LT_ts5n@=FllT>CQB*n?=B>EiU(Z\]iHh%?NU]QQC#WW('?#o([cZK;@XocFf!dq-q&9+6A^[!^M?Cotm$N.%?i,p(A^[!k(m=O58!iDK"3[iXA$T:;1,N$\n:G8]Pk&D@@YAKn>57DGa1%;`6K@=iHe._H+%g[1_H#6(0aeSI>Zd:gPXaCgPXaCgI`Eo't;`*&[rKbm!XcGMVF$CMVF$CMVCbX/@Umj+0=:!*RB&Ij7^:5/'/>V-%]?n!!-:Jp^A7^Kp*U/AT0e[RPPc&cRscqf04h=UJ'O#0:%3-+<@PYR:%"*K&2N1:jIL-N"3"A[KgU,fC,"l6JPhe5EQ%2cT[)lQCf9UFZum3Yn.s7r@Hb$)HN]\Kq[q\TYFtWoQG]ch+p39mC'T&Ps^S_[$$ar;eg`ktNWWfU')Q6*uh58_aRMlEfM2T2d]E)Mn7L6T/6GRpOI%ID.onEmr>E],&.8.Kl]`dV(mSgRELZ%]-KqQ$Y6Co)$HL%Ab&_'h6@rA>>\DOXuen0C;!UjS*H)`%S.0m'J4SX;HT['Y;nTu$F?JXF?%UNeI<";3<%J\^k+Q+[MFli=IVZ],B6L_TZ,C#bl+Q,?iIet!ZRjdJPJq1HAI#_+ofEre_3=BSXH#+iNlmi(DAL8L//VKe_$s3sc+lGBa+jUI6R.c0i?3!8m5'UF.VcVB)-\qL/ptZ/XgIY3HVEE.Pi-%\8_?C/Xku]>8@?$6ICZTY9?rg\*^RD81Vi`>3ehD(DBa!t7X4R&stfZE:dTD8gA2D=u2mD8d?=&)t%W[c4aT[c4aT[aN04`GP:.`GNR2HOo,EijRjTijRjTijR;/pMHu)V`isenZMnWS!T<^?qp]o.8d;pJUM&4Cri"T^MaaT]$Kaq^N1jr5Ke\qBBu5Vfgh^DW>\e^8gh[#Y[aP.bfCs#aW@%V^(h<#/g2YUb;n$H?I\14Ma^.Xi(k4QC?CGJ1^%dhqW,4C5CkK!#.njh2T+LSLKn/oXi4B4)+-]#Wr"?MYIObg;1rAfp+2I,Nha,V9)gng3&F`t\ml0>nB#\lD\1n)7ra@\Z>ZW*0B`t(*&i^nu+X;+IF?Z[Y[$5-00[tX!;\.T!jn2l4J@ckSmV;7+4D=t;FP]W9fQ7DMX^)DXHQ@dpeIZ\+!3`Fon5d?%NJ[/\VA/O3)o-&:K0KlXKABE7gG`c_aeLlSob<&/F<2naCk-H==q3c59S*Xb4p09t.@@b1]<_dUY-TfCE#]AVbC\V0-c(Ail-OU'#C%6O+QtusDX0"o*B4%sO(H53hbrFch@+Z"E&79[a2)OQ#sRMqcjq1JP/:H`\i1@!*a/kEf/A33Fr:.;"/*qqofh1AkKdbXl(_rhF?0Mq55kS7Y(PZ?mt^nFhk9N)-fDH#"cmL2go15Y*6*WXIX`T,(T0W7;(As/gBd)BE*IO:f=i1TUKaGVH61R9A4#=A>VPKP_1SWXTT4H"8`c/c/KWZMi3dD;/6fnuh$Z\X4)eECNn]HGlB*ke>B*ke>B*lHrm#B2%5*DDe@+q;&d>W"PMH"FE%-MUYj%L,?'csu-@p:f'eCS]BdaG7K,J&7=:+++2ni`>8-`Y.T^PSW?%4=4pLX[ofeCj\$AQ,m$f.4)fUWHRh)Wj:\OLhT*r7s>Ts$iIHn'5\Hj"kYf>IR<+/,X/$ngGI&!sFWJ^rn9(u%[[h6I"CgZj`6O)2:ADtNa:g-=7SM"0H1DNDf,Zu9%sVK/3hIMF]9.:Q8_HbDi5H>rNop5+3Lqm9)Du,Zt[#"o8,2HnMM8_fiFei(^mc;.!Q9>r^ROj[0lm[#R9^Icdr:]G('eAitk'dl>jtgN.ZYi"[_'M0^c[b!T,d0nXDCtR2HOEmi6tU`"0ZP\Lk<0+lpBJNS!njC@VuSm&u09P\"7/e3h%#!3`f4!q(u>SQ%dS25gnba4OGemiI"eX-\CpIpIgXmutOq3t$Mp):/h`K$E1"6=&-nd,06[RMrZNcel]/l^_CuCG1:%SjT`'9+kLCp^Qk<*eoHpgL/?n'Y%?D"aFkZi3F'4iB:moXo<)QlJ;tUO+fgmXFeIg9q]cXR>)3hWPbdp?IM]C)qYOZn,opB1ru+QU]:e?/pJ?-a(%c]e#+'H;fF6Nn;GB'VhHg_frP-0Ff?\F/iYo=)Rfd!ODJ:WrD-Oegqd$H+$>Nf@XM9>?7'I,u#t(+g)+ar%TO8X2!RjjpR/>@Ke=.=Ahn'LjHWCI/X'qeS42Pt".N%HpL4RVik^SmK4O&MmVe^u&)sW^6Vg6Y>+nRs%&,0:XJ@"E3iR69Rcu?N%e@'D>e@#_,rdepo;q<2ZQM'll8Wi\ge:Z:'I=23jI;k/A2"f#r2"a@7qr#TmAWNEm#!&Fpj"]j!_Wnn"W*@b5I"1e<8#ZajAruk.m4C%"BF73^1kWZ6`hK@O,ME[[Ng^eloO?UPI`X;sU9:*?G+#of`m]aKX^6C+#'CCK(u)(\Ad(k]g0lP^$JK>S(46+U5SNoTN=bS:J]DsR&sb2)j`*p9'RBguf1d+V[m8Se)Zm_mnAD+\TGEs9G72i"/;6UgcU-!&#Lp0:^Y4bVVb_13h<7:(f3l(Ul6,<(%'R.B4;T0\2;$H3-U13u.Q,.JRZ9b\l6OHoMhdAEIL,92ie3BQiT&]=q!)q:DCu*rj#e06KFK"N6JI,;&Fc1pYPS_:oq$b0?R19Q=pI7C3U%62]N+I=`alSW^CbkM!nb8/-(I#b#O:oj*Vk;h(lA]Bi6Oc)i3]#,rB&K%VJH?n"jVbHEst0kI->H4#R>RMJD55QN$G7Z^s3AX3K(]A4T\s1@H_J')4j%g(>P3=E3JeY-p!UqDT?`&GkZg=-?Q]p!e[&YJiX=je$0q9cE71jH$4=Yp%,)eiC[r>pg"-?B0.NopVPI=H#W5tHLSQ?_S)gBTV4+[K!*#L1iEJWFZ0^kq["lTkCD[c4aD`bi\3`GNS2`GNS2`GNS2`GNS2`GNS2`GIL0\?39C\?39C\?39C\?39C\?39C\?5b-D=tE6'-&[^N4a2k;DJC!M;Yig#UW-0!^?R'QlK6RC#Bh&!rHpDfLD%?19pu*UPW@r9GRD)JT2eQ%/jn5IsKK--"B^tk^0UDZs+C3aV)1u0$;B:I9>BK``0ILh.O(SLcu4h0-`)ltqV]QjG[s5^UdT19pql-e);h'mJqe&:@2l49=0Z(W@d*)q/%S-,"'nQ(pl7PMBX#HM[0cH%CG+-D&BJHBP+aVicp1@f/gIu4Gp+b8moif&^aI:6M;L)j=(:PXXIoK;".`Os,k++dmVV,_oZ'd/K(`P'H&5s*gX_F[2_PgAI$LM?1+5SQ,0r\W0puG`,Kun3)I*,g)cg`rs\/bBfgZfiYD&!E5(]8I\\ZNjQ/J.Q]_Wau`5[<(g84m%mldrFGi'>F5m%0GB*TXN^7jM`f8>R@/mQQSG&$/!Jp&8PKqYBh"CY\D+Y4f&Xb8.CoZ2lF*2T"!;>9W44#ISaWNY8S]MrDkP$/dM(6dR9mWZ_>fFg19-%.JPb"kQl_4"DK4/qt$pEePa=_<\Z45C]:2O'6^ZhfTP5;TO8%`r5):k;WWo=#'(:2&3:FI1I?8^C$$OJ7n9(i,S&mfXE(CN2+#$C-Dnn%]7+",FQo!q`>Y]h@0M;EU^U?&=gAK1pR?]+&.O=U:&AZEHAH<7ss:BldMXqW_5XG3?Y_r.j@(jNUrqOahm[B9;Z5*Ejml=jT9SS`Z!h6mg][f-F*k:T$eV0bPb/[/F7i,T/(jL.scD)L-eH6te/cL*<0qFh,U[T>_#hCafDP4gNq@l+^&[hI>@]K=!NlZU)l+7GHnpe0p;fcb4!reRpfpf.'2L\-A/?!&b.\eWeGqAXf/IK073W3!Q6K>T$\0t]c@p=NH*[5I%m*=NChKqUc-i?/PEW4PMgKOJFO+NRbV7YO]RA0_^Ph5/R(,3\\c.3o(l0q&5t0p9ouMI[-GaW(Ag,n-!HR)=O+&*iZEMr=h?WuZ"7$VWRkAWpAlSR#9c"Y@(^S2kWq2K(4"DneFEs.?tdqhZfWs$$GZ#L;_IlDqY_$SV@nUm"P7,fG?I63o:K64&pn47e2EXu+gX<"G0@-u=GpS6PWu.pD[Ft"@YK`=_`3j@i`:\GVQE#T'2sRAGi];)>#'&,8op[gXo*2+]WZl=]_l[,J\p`=;Q%qGF]\KY4mLZk,oX$*hbA2^=DjS9$g&^r6K@h][D;[$hcJaeFgu7me,5XXGqp+)_<8Y2ApPX1_GH,:[dHd=Z2m-h`(Ih-_o#?[G^"$`F<:g7uK-76@?fB3umG3"2.q#Rpp,B-1Xg$HVL;h'>U^uJf\%`.J)@c6j0^u67;\b%2$"s4)`AcQ)eQV^n/&]-n`^h+I=]sb6?J^aI_lM!V_i^.IbaLi__j4JeJYc.!1tF!EYWUVOt<_cX/Sq?8)&b,>XAT/J-JB`<\FG`C%H[Q@Wl3,I9)%H!+OW[fM!37gZhPO0]Uq6`df2a6VhMYl\`S-3WeIdSE'l,>NHtVGD8k4d[2!I-elJlS=Bceo=Bi&=@Vs*8>ND<_b4uXha5U)F6$r5.@JAhgR'XTAL[Y`ugr4G97(fiSt+ab1G5K-Vh1fcYj3hrO3pm^dSA=5sa6HJqI?J1;jZrTiMF,,Jq?TL^52fMMe])FL2p14:B*tc+rLH5Thbul-gt=H^72n+;,>>E;mK^/mL)-(.c0F%PdlD=Bh,CpN>L,\UaUeXqIph_Y^Oppoc:-j73R)$]mWE4&;AB+td+GOtRK8;husRXda*fFD2;Db5+AsY_#/6W&1!:dHX#q=+FUe"f"Nlf%o4Y?V+6%nFNgb+!3Wcs31l*9?)bIZNIqU>B&ST'E%d:@G`SH$N^Fd&/7M8#Oaok#SlKTY])NhSD&S980TO@i5JMT2oN\GJBrF,I(Tj4Sp!IfJdW4;\KU4M""moa_53&"\=Do?.k/F0CF6Q29*n[;[Xm+?!k36?E"T6i)n:)C^b'ikc4di$T%oVI3ntM=^j&CJH"Ya:>71545WCrn8Ig]ANb\L*JaLF.q#UlJ5k;7Tu"Kp:,<0!b:@8)\dT1E^Osut%M%e)eH9u1+#k9:#b"`J=t6\`>a?`Y\A_UC`ZK^R2?4`JQ\;IMp0,\g""m4c\BTH[Zucqh-IBms+=SH6N5e@q[kn3=BL=Fj_3G^!0H5>RU8nNcV$=F[\)4k:#0h8lYaQY#g5TKb2k11dir^uLMns7G!:a4roQHf0PGnlVAH]pK6nrX(Ai#['_c.+H>nn1jA`0lFJ4X#V)JLoC<(13DQW)Eg16`2IA`7#U(4oOn$3ip2fF@SkU<YnEXM#b^c4&$3c[=Im27>n<^H@`S_R+V-W&U-Z5U%Q6Zi6/0PV9nh2OVr?*<&m2Q\n7j']h@K4oU<<_@4pt'okC?P9?2@5cIccf+'^>"h`/D%loDUD8k4d[?^Kj[UO*mg5<9QCFdt:XK>T/Z*n+Y`S-3W'l0kF%r3]HHtVGD8k4d[2!I-elJlSNn.8'JA61"3AaqDN5+Z/0]l5Us>"?!%049nJe,,g/dTNET&CP6MhOK9"&cLM,M/R=%SV+Vq99SSN1@X7K!Q/Z4lSoY(tkH7]a@!:rN9MaOkVUC;-U;$=`'UKM#9uA+G%Sf95s!uH0NF4N1i."s8/M0f"9+W,s%O_6PKCA5Ri)`*+:21/a:[Gk'^MWK3EtJ=O#RE*tJOEn=*J/lZ&:DnoK]jO(PR%^U6JF<3i@Z>8]8Rn4^>RkJu^>!crg;\jAIG*e:^`!#IR_A)Qb"OFENn#ro&`mQb(!,G9cG^W,:16X23+J=i&GA!@$oZc6FaeubX#@PmiJ"m8TeC@fSnBg&X-@Q8ABg3d,"bl:taMki#<'LPQof;BHPo$?XpbZ:Yr"rf!eolIK>P1mbi3Y?DGK'4_$%?8?4p&4$RBUga8Ok%5oS&V6GJL*E#FDD#(8f:5AkF0sc4tl[>RsVWP9Ju;8`7=::&bLc`ZE49(CKP(I'AtVTsl6I8rFn/A7u1*\H8k0#3]kd$T2K-?o;!$lW_0&&WiL\`]k="G/eY[/iu5jE.YXeV1!nB=fM"`<^5rgfXjLP(kC_#U%$-jO6+2mV2FANFo_DnDh1\o4!gjft!it94#a\HIBm0\nA/W2=a(EPHO)GZhq;YS]l3kD):PZjAMVdF@&`.@NPKL_RXgi/NF+6(-Hd4`V>HtVGD<3p^X]Sf4[UO*mg5<9QCFdt:XK>T/Z*n+Y`S0V@_qL!U'l,>NHtVGD8k4d[2!JXUU1d1Vr@BP[j(jCqUF:/..oYEQ+:::E=r%olCamL*gDtd_>W@T:fMf]$B&d6Kg\esD($qXM@/fKBi%onlDZJt:DFT#4\/Gt4eaWgb(eom>UV)EV[=i`AbXcZ$4BL`U+@]Ac%2=`7o7h0!h-aX_UDQod*Xo`)Qa$6FLW^l5B%'Tmd&r_=n8#Hj^jfd?33@+)T(*$pjK$p&/[Y8"?;3&-folo+=@9q'>Z%:&/&HIbRb\mLTiHaKSSmOe0tJf6s*i(5S;DkHAIF*!KX.4\6+>)8+BT`0;-g6k)9oc&r=JI`;)eF0i8-H8TNgR(bT,m6cu6:aM-C0+$P(*CKO]Rp0JdZnb>iES.6U'el6m,.gF5VM`TSHtQJfgJ#X5M[<+j^"p5B1g'%E-QP0U*W'jSDEL;`Zr\9,gm2m0/HE&o#:VT1ur:k;N8P/'90eme:ifq\bV*(L[?\'SYKT%]EduH!!N';K56gK_!V%*Bt%Op3m&8I*+Q4Z9o+K*&01HqS>9DMpY`8?#O1@nKV//O[&Q=ap,bZqrBZ,:%[!ZFW/*Y\3oW(Hb_cIgobh3(#Igh%l6iZoiR;H@SOqW8[ChSSU>73ELc!WE9_q<^c\=DU^=fER+SJhi:0D`MKmRpqF21sB7"BIkt<8Qh)L9]_aG6XM.$1TEJm"]Jl\i6FY:ThB`aZ1;$DG'X!b<7L@+XRn6_=TAh*$#]N"6SskCB*m>2h>`pK.[rSiX+PsMZ.3dm'W+t$s["VTu#H?[2!JXmhs\WXK>T/Z*n+Y`S-3W'l,>N@CWNHtVGD8k39F2YN@qWrsM?O##ubUc<8G1]bT@7+p`fi8p&q6U.JhL1&)YK*;cp`8u9]n)akn"BEo)"F-[Gs:Meqq6=*O>H$mCL@i;#!$2C#@_'L\t4inrBt;uHg#]:9(Z&1A+6F@'KUP)5^VB*[.V*V\jrF,HP/B39L8]Z3I(70'fu5!K2umlPKXd!>ZJ`@:jKc!eP/84gbGZ6(`^4J9*Ku%3`Pl`5uj%%GcT>:_s^5KSPs$DNR\I%3d#:&05J;W(9)@U5_R"QLGA45/Eea$NqB*PgnBm8kK*j#t3c53Li<0,ULRji^Mkt,pe[)KB/7S8e*e_M;d=IAf)D2%GVHg^<##YXMWR#kjO%PJ0!o2"9ifcE:P7dI*r5rcIIcU05IH!g:OXR[p$fZHW<^-7@>;[g'E$uW-EXHnVfl+)>JRm`5`PHC&FCJ`83hPF#l9NSNfmq-#)9=F_USDri>*j'lddu;Qbl8g/U-=c=F`fd8?!]'d/]YJ5RZoe_Xt*WDu;fGTH-V.6YaH"R^L?%fQkaK=2p[A;d`\=I@RTWDc4'.0gGn#O[ii'kIVf#uqCpLuhci+%O^a+G_rhF;LG_ki(kG@UD^S?')"9]j5SC#Kb*+jV.lo:fjj!iPm`,gq6CXhNUB5j"pK"E=A(P2:sHAi3_6IbN/^K*U_k-*DYYZ*"l)',h:f'[N4.h90(X!-%n:60GT5b:_!h00!*@U"Jm@O*9M:GRu4.<_O(ilI5*^q'[p-7L>BUeLrdjt:JQUju=5%XQZBGkiTlm.q^+C2S[AE!Q(_Q"O=S[=hDD!t+QGO@j&fYH85k^#"XS'l,>N<^/LDX]Sf4[UO*mg5<9QCFdt:XK>T/Z*n+Y`S0V@_qL!U'l,>NHtVGD8k4d[2!JXUU8R\%f!u\oHM@6-J2:3@7-`C[1+--YGkrJ8IADf,5="$iF.+KNL3uFn6pncrOCkGrPqnTV;@9:^t\BjGVd&8,@epdHB`Y37XZD6`ti)sP^'oT$(ei.h@VEu/Ao98"aKTU*X6dHIeE(#.Qhu>:Q-jA^rSQYoT+OR?j\?iIZkV.mufF+>QOo1!q>(NNj+':'eVma)VS2i#$G3dgu9I_%C3glP<0cn4+647On$C#9WKL[l8ak^G&.Q!@q%jOD9\q/TK*q"VYi=:["+ZB'`S80+cp]WQWCO8rZJVjlS>tn6Ol%nW8RA$+uN@,G;IgD[]pY*^OHVhYnE!b2qVqIE&oQ.^#"Vc0"\c;koXcC^%GFtYh)p&Olb7sgTHU/g`HgR,Xjn4bP@9>]n^IV>J`BiIA#GLb;BW3Li#4[_2`RRgs4O0EXi3'?efeXh2YprEXWTS(PHW.[V\C]9>^[[H;4oI:LVHG(n?U6i3klDi3N$,pG/e_JE"#i3.2JWA_`RmfWl.E[Vjao;G?S9lCtj=Eg,7pBd7:2\ZF'6Zot3g^i"T,DJLK,/=_J:SK>X3JQuWLS-Fc`Pi&'Ro3E.o%7:dOY@8*G0A/Xifds;OjB$SN<_".\HtVGD8k4d[2!I-elJlS=Bi&=@Vp8[@;X!;MR=17/(Rb&X]Sf4[UO*mg5<;gOkP]l%bUTi%D+hfI%"4>\^Cg_\K4.:%1"o#Yd1-ZV%l#702#_c5m5[.RkQ]MK#nlJ9MA+;$:ChS+-D%nSVT"Hk=17C1L!@YnDrCd%)-#$Bjr92<<8Y=D+/'.c3tF#g]io"FpJWY%&Y9i&/Am\maBeDd\j$W4iG9@JB+GEX:WE.K0WfI^-G;m&Flf?p<-IG^GqQfK7pR7Jd,1`,'!Up)Np6hm\8JQ0<--T=UCEJ.u4m">c"T/Q,3-/;W>8)DVgJlm@2%re4iO:ko#D@H*77'l#7.m[kCdp`k/AD$K"-;kSAi,mm(!.'d?CiH\d^9JuC(6jbB.9JepfES.HWT#C``h"S$(`/Kb2d"up\X$jgPt`*)))JcWBFp7rr9V1T.I>.AZO"3JZ"\9s]88Kk6A+g,,rDHp,Vbo99bI7"&"\!4\!`i#`XJ:AmJL0hQIp%;=H8AlX7C4WuZ]1SbCe3mhH($t=G0Hq]mLl=)T$r77.d0b\d0b[DZnD4=gHlE?7+7l\qitW[r.u)LZ`0iDN3.'3V#mhs2gD>\L[gS@^ZuFuu%[&L0i>VedGJWsQe90cj/HmGUgSlYn]q^>SF9Q41PsA+,-IgR1J[]RT_^6sAK@'[2WtF\V2fJf:rN7]Kj8HTZ42?/\q$5X=Z[3a:gs`J\WP6E+(XMI%EIIJ`m2REWmpO0j#$\6S*d/Nn\$4s6U#&UfMea0>`ECshf*'p8@jh!+oSOPJaHlcNoaG*N-a;]W$?"T@oaJ9F:C138qt(M]0#HI4EVJ]"D?\UbD<7nU_qph5CFcph49VgVgt!fkR-J*e;RI(JSb89&RTuU>JG2]apBS0DP4#G@B'5Lgr_($O`211@GCPW>c(DNCFaHWEH;[6pd?=XrA'"%"AL4"7;>QE)rUL9`B$jM'r@H_D^R+3)4d&0dn_.C+[hJMB,XfARpL7;T!kC?eo%T8,d=Bg2p=Bi&=qHJ]^'l,>NHtVGD8k4d[2!I-elJlS=Bceo=Bi&=@Vs*CgQ?DHAm_r0Q,pXLFXfT7r^/70jF'K@h"M6q;_2*mY9md2VTHce285`:IO_&4k`<5S%L'CEVRE&KEn5IX\DO=l1q?@Xu]RlMA-U^FB6ZgN^&`na3I%%ml[gRHN@c5;m+c^IDJ\XmJd6UIm#/p%u_;E!8:A?\3@\O4T-Rg2&Jr3IDKo6kZGX2Y&P?#P4,3?*C\BAu$8Q!?aCN?q6>m[uX&pNcbM,Z4*VTL#+9aUPLKQ-[W">[;A5]GjD]V;aD\dY't@Z\`#+BNHr^4fWLLl-KY1""_Ymk_oQFs&D4"[DsU%`aT05TEQ.!eCbT$]Mm7ABp^-6!2c$,.n_@q'?]'q]d3.T3"?WOpWgHO?i@_"^KoDeuquSLk'ifY?p%@P*`>7RWV`/pQ6oPjQ-%.;qM5\:ds/V:Y%9rP67KQh@kK2B&b>.kPB()'fP:>ji`4&:)pLHCA7&l:gDHahG0[rsrR_<]]9i-)6>NdJd`p24MoCPJ;N6l0KQ\N[m=H^pg'Z.tP]hO:NcC6\Pp>HUg6q\EfVHaiEl9Y;Zb>B.'iXh`Yr^Ejl'_!N*c>gK?7MJdDtVd<8Ri,TnS?NO>hGPmp5AW@V#\Q(^\%(i(i,\I@gX-C5NZP26gg47Z7oVQ=[Q#:E<%DBq+`+9bj_+a_Xi5qIed=#;Z"7^FC4T#-\$^p_-06u8K?N$QmbRbijg8uq.D!K!:09$^AZGpFV33;1LS]Tq=(QTDbJF!#MnZEbmt8MU!o+,6Qhe?#[u"$KR.I8(E#B%6>NFm$k/6%gRI\1*b,+[ED(HrU5Q8f:as;pK<">0&qm,N?FcW8$9^1IhAUmLI$$pkXfQB2^e(k2>mP_RKPi2hVNAn[f\E1P8]Kqp'JPfb_9'L\a8q`j:.)DQ6!,JX]XK>T/rCt2`MR=17/(Rb&X]Sf4[UO*mg5<9QCFdt:XK@LHXK>T/Z*n+Y`S-3W'l,>NHtUt8mAhjDo(:[$r29eN)*/u<+c6"/)>3nA'`i6E8&E>T1_g1tT19R@Gjt!$1^lV/&VGHJ)B`>r`5D0I^5$>sj+m^:$pH]=iT]AY!&.j(&:.[0)Gj_hrK9F6h+LVgnSaN8.LTqPmsTYnH`\Vm_>YD-7e?%_.b@1^@5Xu30=E[s*bC[JmRs:\INhi7_q;3(G`nkRFVq/qZtK#.[t>;Rm'4FJNq/nG.2Lq"!?mFa=9f$U-qpB`n,8h??.$=pPWXK]&N$E5K'krqO/4NrPOM^E"t^kic3+NuN\CJ)S3cJ!@gLLi2\mW.JO"P2V($+o(o"!0?j[_G?H7Q)eC+(g%-XfSADFHPTtiu$KPfs5^):$iZ<5$))=!#&U,lJ,g4BFS!'^gh!I0K*C\90F&^#mk^>37\g@7AfcP7sBMNmdGf\$`VZ\%re+lr_Ol;:LOR.p.MY@3n%MO1CmQN?i+=iGhULLn*%Mhd7;e^_61G+KAnCo>8*c+jbYdS"X`S0U5_qL!U'l,>NHtVGD8k4d[2!I-elJlSN]sPH=Bi&=@Vs*"P>S\*\7Z8X:,)m,*7lkK0^DH85=bC&dCBg0^'gVTG9nG=r[_b@5qpZ,!\Mpf*Tu2'I[%X4ig[`5e9W@&X"G(Yp]V"![4F/o6_+p`P]\h!XRtF`Q8g-XA=GnSjDRgYm`4TDnobc_;9L=s"/(VAq"V5AnIAPnl.cB:U!/P_IqjJE@,)t_BZW8q6CD1!a6`Bnf7T"1ER5C5Jk27'aDC$Bb94[#Urh%+[&g0^\j5r8Je#7KhEZ[YC?enYK&:^_RXm[msbR-r7P[Q\N0lVP$5]Jrt8SKp)\ZCFp^RRdNL2Z')8@T+[:Gl8rBHA=KDXWOf`;Z&&&\'UCCh+^%6&/q6*P^FY6"bUi2<3A+na,/q"^b=YKq@\o1OdEO.Cut^ha8^\-bD`(ZC^QH'"RQ$L-e"OI#_T$M,O)?Qb&S+up>RM*Q%V(;(P,JW9>&&;_YTQ-)@pPQ5njI%a@@dC_6EOL,I0cYYu-\^-A%A;.7dE_&c&6>1$cE6AH6HjV!VhZNoXM$MgRMW31&eJ'`C]=nQc*kr!f8MB"<_DCucO/q4)Igb\?/qB#/"UGR^KW?PS^b$rB$GH\#8PS^?YC$T^aakD?Sj?md3FlaI5]MpF-rrYHoq6+'l=qEYlf$I2[?X4Z!e\l/B!VfNF;jC[IE28!;Z2=.^7`Y\#H,`P%Yl"I-9Gnj#*;DV+Pr@!k(X"l)^ZA],XNZ^iFVU/6smY]XF.e-%:W=*XAI]<2:8EO0sO?QM,ufrL^iT0+nHm\UXm,[*K8d/q\JMS`2b#FXMH50guGpmk^.Z3&^c`BbTHX]Sf4[UO*mg5<9QCFdt:XK>T/Z*l\c>B,-2rpsb=E#4BPSQGrm645H<7YAV:$T<,-=B'rR'aR8t!#XdJ@$CnI?5[,m_0)/f&<\lEc])Y]jF`9@o#+(K;6ZV`U>e4I!oB-R%-,gAG;VVfpn-H2Q'Z$d(G9Skb%3L7#5,goA0W@,<.V5k"b_Um!M:$,_"U5X`5d9K">A`nKiL[WUObE(91ViY_&kk/&0+pa!^R%o#Ns!i.k`&&X;I+`H6FCRK1^oli1&XHE#$YGF[5HEEs[8mL/'jNA<086CMF.8IBn716j/eW?.X#lt)"&/*\$dCeY(FQk%*]]"Cq\';_K%7,;p!^]6>i7tm;7,eIT"r0F-l9#1Pj?e=`.WEQAY?i*$^q`X"kI3fF65P8Rimt016i^;C'eit9UY*OYculP^pOo$4?V]7`nHg@;X!;MR=17/(Rb&X]Sf4[UO*mg5<9QCFdt:7j$;_XK>T/Z*n+Y`S-3W'l,>N90QBp0Ai-*:UF]5/Z%&!m"q6(`A,6\&oe_b!9no!l-E9/2G)F$jZ:Uc.@F?u7M+QC-gNgf-C0;6Sh^LQ[NU.'7mueW#3S1KqS12M0K=":#t9PC`a=>:k(/\)(kCDB<8]Wo>9AP2YF;'dFK7!?7OEo.\=a)I5?1U039*)TV>0+n;Gf\34HRLFA5uEa_MXN&Xgb2Mk8Z;b`bEPis5YYscU-]:M;5tq(q=@cF)+l97>+4E%buOI0:"#;++GB8?/:)_2i-eO58,t]E:`3-gqKP941AH_RMjOP%?Q]aVQ<1sS[bSQ]6>8`Q3jiP/WcN?J=LF=jQ1-54:UB7'8=%/4qnVuKc2?lf#%C_.OZ_l9$>`Ri.2N`bGA$4+b@d..9'@sTr(El[5ASqY7j6.>q_/`hFH9A4lgX!R_>oI:2l?'qq]'LFFqbP"gcS^HE@Z6.Q+/i.M#.*-e6',h+^UX&#)ter^6Cn]CHN%^HtS45HtVGD8k4d[2!I-elJlS=Bi&=@Vs*MR=17/(Rb&X]Sf4[UO*mg5<9QCTG4JXlqermPmEl3;AtB6k[d&Q&I3nk)?;6a&Er2KTU#_3A;sCm,=/[R#1AcU:i/[QA2P@Fb7Pk#MM06N#S8Ud$W4,d*t>8l`6'WlR#-OY.6]:W`PLPeJ/D(6R883Tp\l?NQW?@[`D`_6HNIrQ&POMR=Nh7o3:--1[adJ\Y,u;KB8A3dogLF8$I[DiOI!.=\_pf62Vc"C)=D&sLb(&eAi_%bCE%;7%7C\gRqmSf4;1SbJc#SUVa;+4'cI@(-0O83/Q$>;qdgs".9/`LWU3><6DTW#q&'^MFe^'="l:o.nT.8rOs"#Z6$45m5_!o]D=C#6fN=@&tXW`d^LeTm#`EG[eU]c85^IR]bS"qR;8`QC>0-,1\XVQl,kNS_[^jZ"Y=71E4'76(quV.YQ%Nj^$`YNT`%dnKBDX",P7iT@\aK_0Fe%2Iq?+h2+FA*@!#)R!uVVX3"#'u4nUt1p1&='Za[hp5D4DFpAfP)Nt0h^HD?n6r"UP4Rab_#)CPtqc$"&0D;]S>$+C#F^#kDD*c!:WT/*IV$oZ*n+Y`S-3W'l,>NHtVGD0<4oU;QpZf\(ie'=/gFQsoc83,hIN;#,`<)$!]_0UUsq<&j*\@A"?(JO(1T3b\k5KJB,47Y,YE#a?9*+CF5]E[(e,bGS`$W@6.$+^@&3lUqho[QlE6_6d:g9uT\p=r7Jbj[Qd3+-t7\ZkZ!Y:bZTrD0#bq2SMSPoPBLL.h@f3ghEXf;UKqjn`^ZZdNBq_R]MsWop)t"M(Tk*o6s/N0=8_oOd$a_/>q+5'X`(b.FeTiW42BbFd[t\*A7BZ,gn!!k:\/Fus-e%51N.UTiKhPkUO,DR*/qh"`Vu^+\OAcZ=CmjN`8S0=0AK#PS#\hH=<)`S-3WQ1qMk@Vs*T/Z*n+Y`S-3W'l,>NuhR,o^2W=+LFd!n=q-!Z@[SFiG)(\'_ORskdG97DHR%i7O=&HX+A5=%d80+]&s09EA-Jo[7iZK2?oTB1W;,nf?@@prsr!e`A7+J);\L&'3%1rfjh)XR'ZEA0Q#KDAiGhAaBQ<#:oC_9$M]9$\>6hA2iGgru"pTc8WGka/?d,C.FM_+=N=1ak(j]-q0XMbS0-$Be6AIcjTPhLsL,?0q4L^Fep+5tYcgXFS4s'676@GC?)XI(Ce=_HV"t_rR,[-Wnn;qD@m3CO=WDuO3JU>0mO#iNPr^[M>SMKEpO[<@P;g:G\$nJ@dTN8*YV_s"XA-("IIkioD8k4d[2!I-elJlS=Bi&=@Vtcs%r84qHrsVO_o(3nRu[bhX8chdC('_f#>5`rrPUhb[FJY135/AB(NuVs=CikrXpY6);uhNKT0TN7JX'A%ge@N&aMi/G_Au2J&CiE!*1FU@;[h1QH/#oAm>=7j(I>q]4Au6/gX-di-o5jaOD.'?d_trHSZ2f-.o,-Vh)n3L71^B<)r1s\;eg;cuV9o347S2Q9LW#)b3]lHMd4'[MDCK[LLnU_n!AZH(iPg]uf\6FK][pBT>BiTf>?+]7&nMP$/br(>CdE?sB;hnP6<0;AE^4cT'DCfH]*E6BHttZD#eHMj)iYmWRLIQmUke)Eio*8!V,chM%BXIcBPUOD8n`-E^nXClU-er%?ZlZ&T^C,Ro^o)T^J>+A$+F@,eLOa)=bKN.#-fT\Z$6qX;@./sj`'X80iV6/JU:[%).m%3[\mMPe&oUSu?S3H"^luH>%%M6$'B[6V@eW&$;r<%rJFPBQ*M7k`HcE3]*'>3]iSQeZ")e/ui+c4Zu2OY6+RsA2#tcJu\*R(jnLIX6WEOT/Z*s3EelJlS=Bi&=@Vt4H^@?Cf@"2up>HqVSk!(o.XhHfsX]Sg+/]6;"[2!I-elJlS4O,nbXon$O%;RIPCtSYULUGYkk:`bD&!%oV*>\#AsFGhIj/L]#D5JX!*)J&Jk@!jP0EtTcTVh2@0jr-5nG%*'.eUlJS9bIFmV.&h[bIr)?(0hs)48H:OqeI!K_0uQ!?o2'&9';hZ#5aqBbg4N6[fYmWco`!YNC-Ws&K2REVC"*1LPO+aih7Ar>&Ec5`C`6<>$=Xb!F"5?[6693H\[1#_kVAiFFH6XqkC,Yje8T9kjD>8:R;-/]4E&[H8lP3Qg!lS_rEoe-&*e.L!\G\#5rtnOHs2ZmHkoJ2"VFC^#m\M,4kBM#H4_/""mmF)Rc?5r\LhVnQ1^0G%bQp5nhf(m%CGu6Q=E^KnldBU;[7^40Hg6XmIIpOTF/sN6pFT"n'V4;2:%m,W_mL/iBJWmV\kVSfWT@hHmaJ^-2]HL]2`O$k+[SBk]`C(jZZs>AXX)?uN`DLldK#\QfHEh^h*8UC\=^D:$qF%1Q#O2`,QD?-q*fL2T3FD&-f!21'"R2c=`6F;U[1ia+^-3f3Q**RU^=N\2o*F_`B_FSA[]SpL65d,1aO-iHY0!DaeYj=p@n(jIN_b/unmnmi"qhS+`PoefRFFMP;L`G>N!SaU9n^[!_/%3%3ArkBB&Bp`p/(Rb&X]Sf4[UO*mL(,([Is"jtZ*n+YjZT]I=Bi&=@Vs*"]k"b9Mb#Zd3D=;:b=pq[d/a8Q(Pg_\+SIg2H#$rl3tW%RoMjK&9Q=:^+,r1?6c*Wbg@ir7bD&9Qo=&/FbSaM.4$bRK?FZ(M"#g:F#P0Yn!s*rd$u8,j')@D>,Nrsr4W*s^7:@q#@H*))Ca@:K-CN4_`5]D6$";:Gu-%sgL_3$NlK`Blfi+8c6#+e4InpEnSYDHjYa!A#H:(_Sj&Y33sd+'`=d+c6*oW3CBo?c+4=bm!jZLmt&&sr`i7&n0#FCld5[nblQIIa8P>nj9`XcnkYm\_na_YiX%>!^fcAX08/imfc"C6[6shd5'Zf!3P6G\#=>*ee1(Q6[NrS-K]@EPr)G]R>27mcB^#7U\LqPkK].W<98'%Gks`V"8)5jaG"]%+7[^[QPni>G1@\/$r7P[QL;Y*\I')fQJqXtB>?[*>2#G(@;?P(dR__:/Zim:g=ffkj7X_k_$u?=1c(kL`W:k],Po846WO;qAr"R5P:Cgr8\/HGtJMW"+sCK-Q\km(kedh:Z04=!5*[Y)AX))5UKE]>,;==N(,tlfiF]&XB8]3@DdiEd>#%DCFdt:XK>T/Z*n+Y`S-3W'cT&IfGoHtVGD8k4d[2!I-elJlS=Bi%=_hQF`LUGZ>D6$Bn(;-iemSNe59gr0L!JH%Yab%>O-+LD39*hpN&6,B#fP@Ms66QaAY-$d.OW[kg!:^E()?n"R(_G$_5Vs>^DgBC^7FZ5u)s4uRF>V598&6>:(p(J:&(;2)@Id>:N(rj$e$oD7O!I)):)TkjpI!g9DW'5@UJZTi@"uFsXgg.ln#$W(oRL.a2,/jAX-qeTqJ(>FR$mpZe'he\2)P^#+5b!5dFZ=K0i)^X@J&BCL\G_Dd$-@;Ppp0f*i>gSiVgBtnF"O(]VRDNkKV'ei,3j.kO%[qGl&!-mo$/5AqK8%3%5*iF-TBg5<9QCFdt:XK>T/Z*n+Y`J+g@2Fek?HtVGD8k4d[2!I-elHV>Y[MVF@;Y[MD+-Ybohjl*KbY++b7cSE\,^m-go%ZOp+.alo<@^i6e9BGrmVW@o@0C6jPDF=_Xc]LLR"^tK<;rSnclK+/'G!//ZMuY'>jVB.L:`]BXb"U&rYhdQ'>B#!kCW,@Yp2>,GN(%"#k"%Zb"b5`!WpLZVpEc>hea9Du-bElmqM1eqG'Yh8J8ig(4U"oAC3$4CXEi,SYI-H>a.Y*<$Iqp[o2BgAc[#pCH&WpX+Dr#CGB[#::deCeTeE0uOo<#_X$'"G-ZK"uY%b]dnum:r.m:d\Z]p"rN*OlS.tfHhmKnf6+cH^"1L>`O>YmjcOrZ%)[Ss_`Z3>W=V`T-K5Rkek3DC]TTDC]TTDC]TTDC]TT*fn@rppdH9XgkLCXgkLCXgkLCXgkKX4:k@fAb@dYAtYg0#26Zn+=m7!bk1:WklD0Zm+VV@s*#@Ss"iLZN:lOkdI)E:enGGkD']W/XTWq+W^ef^Xe<#N9V\]2b:Jn$0?ldOB-TI/pfgGidfbJe_;2P%"&:'n%sSj-20\X7P<8Nd@I&orgttB\QCEeAX"PWCYXmJ=6lTds/1u$0C;,XN72,I4M/,fE]Q2O.AI!Pa9'm?9W>4!q=USb3.7Tdhj5E.P%EF!AVns\19QBkQCXEAZ&T:tbJ'`(p#d.udGGB\IiVFD?W6G_(sf=mPb'[U3PSJcFCN;aOV+8M*7>0hNUHKG!f%EK"#d;Q]q3D(bbDoLc,G[GgQM[aVoJ@p-D3,'b"/(6'D*\a>p^M3qM^2VpRf/F+i[j46SN26H4l>+TLACW/ktPo!1VZVg!o^9P5a_[YC*\US-4!6$1U*\:4<0>eV!bG997>='n2aoaSdja9514:BA-YTJ*eN)IW*YUK7rtU4Q-Ad7Y)J.8U+=bnG.J8_ohm9V'2$Ti"^&;JAObg.3-#>4&8J9hd*s[\D.[p%mrC,EC@IJCHY"lm@]sdc`%N>`q*_rUS[V4LJ,;oMGG%SDp4=W!T6H?Q.DW*Hc/_*Hf&&T%ZT>I^oJ82Q1Fo)*O$X8T@u)GWahA)n-Qk't4pe't4pe't4pe't4p=a5_#agfE32gfE32gfE32gfE32gf?NYO14Y!>Q)+7Q@U[%:B.do?OMk50rV5+6$@u5%!/#0lrb:f_QCWesR["WjS@CUJ.*3MIrJa;0$5]&A40Ebl1@k]?%f3kLX"mV"sV([nD8a(0Dg/?ZtN=g4=kZbLGRZ^9Q)VnrLf$mFV,aCB,[D=1ne(.Jik2ar/:IVC`P0E0f24\#.k;\VbD.QIQWHVBaBnP6;`fW_LBiNOWE_.LKL6PP#WJ@K1P%m=DgPX&3n\4_,XgkLCXgkLCXgkLCXgkLCX`urLDr]ldijRjTijRjTijRjTijRjTiph9+NK;iZcYXu2\5)4hW3(/f"#P1[5XXk)ctJ*Ji-TG=WZ.Hlk9,!V-RFh[Nc=QJK-9&nihR6XnSe[+'@(RPdh+]*CuOZND/e?\+5D$^"Q*LsiSL/sE5uNSgtqoIGTX;F1[^9BpmsS45#8dc>7f,XIOV+8gC=d<*N[L<#fZ&W0O/*N'U46[a]LSPGA#R6)P;k)Y_Vb.#ldR`f.J6CRiF>U`W@>2W\YOD4H4)Tm>"S#'M'I0*jH;ttN@7_hC40rqnP<0?<]hFaBE#EC\?39C\?39C\?39C\?39CGW[$cj5[T-[c4aT[c4aT[c4aT[c4aTnT_^+O5&sK[T[!?!_Or"/6tgL1`9r"c8Yk_c,3@adg+P0%?QrhJ=+8!Le84&j)biqQnLj?5tj[$KL_?F]/UgYGS:C%m#MEBNX:7[n2;O",!6r5Pa*g'=pnd5hSQIl;QIjhMo:Ge!^2,f/<'WUMU7'YL$U6.\@dd&WD9O\qL7S:F=P.iQ+4TW>Af;_F;$C/V$N<%:CVU>hhi=8Qc-h*e`Nn#h,>k)=&,5#qG9W*JO\oWb?skhYLpU%__tA>uu5d9dfS78ZFE4JbQ#Z>U:W5=f"\.C.IhU72g!k-W[-!m7%4O[UA/SL/'L;/UCZ+C6#-VA\_R%luGSaNn!MK^B'rhN=i&Z)p>RA^X/)X!,,s2Ia_o&r`5],%3ck#c;A8GcZ1tkR(,kY/g`ot,"qhNltj-Z*X$]TUY*9D@bD3N^!G>kY4N]sCf>YCXaBq19+OLlm,O*a+u_B*ke>B*ke>B*ke>B*ke>Ocr#hT!TQor#6m@ob+$YctD7"f:>-eCb?AD3IfF1_/X?I8Eu!%Jm)"crG0QIT\bnkb[8k81u_aDLNTo>^[m-Sco#Z7hB+l"CWqG+Z6Y3U=7iS6W,5+7H[#4JRaiV`'+Zd+:!+HE:JVVi$&GaXFh>:Q1-9/!hMk\_W/]=+g_;uh[>Kt9>Tds);GZR!M;:cnB#sV!Ea3>O"VRR5]&qk9&H_Y;BnhO.gh7kATWT?TA3I-)nAIZ0B=NN[`eUrQRetr<,,Y!aR)s8929nZ[A9%>>a;q_m,bCl?'W#G8%#a+fe#5WWpK&`4?Gut[@EH9I:YT_oP%-K;?G=>@SL^I_:mW$$*;C/XS!UHU1m#]3@D&TM(E_RCONTj-l4#8_7$);='T+i2:seC[&/IWgf?NYO8$'&D8gA2D8gA2D8gA2D8gA2D8kQ*GT.a6't4pe't4pe't4pe't4pe'p$DqD1(,>?T;sM-Yl@V>RrE`EG4VM8fN)MU:(/=X';6uU(rP8lCjl`9IQrmgsSZcYR1_XCEXoN(93O<+g8*cii_'iFIRmojn0IRF"8@oV$uA4.O"b9(qd==!$Tqe&:OKh`5LcRlhD(uLt0DtW+$$k'OF=ZiApBi,THX_bMcH7.JO$XJ_-A8TXMH'3#6fFL1#7&)#O)ki=D,N'0pD'0*]uA;!PNLH67GRY(d.?%RXCA;,Tj+d5_[t91Ae6D-Hd;pYjLYbFA6arup7C>RF6Z5jEL[IiSU4f4!d@Jf[U.86/9>/&#]npW(O(-MsW$S8]f2<,ZW<]W*J2Gu;VVXfP.!fF3^GI-m*_3!-2#`3oS,Fi"nT_^=GMH6SU-@5HM\eJ6ji]gVgi#-ao%O98*a-DH42OYJIGjkL6LY^24P9t#T3F[]\#!KE*Sss,rb&=knIsm\@gdO)h\+p3GV+dEjg3!paX&omPSrWNGAaGJ"nAeL&;ECu/+q73#f>bi?f)O*m0^/:?H#sLD(7&L4+jQO3W^%=@6#RVZbF,V)%1As97rB72-V4P/jDh)B/E&mb%dXM=K;M]c<:aOMuKMG:E/c'@Yo9JqpqPL)2fM"=%;Gs9h!C\/$pRrZHqW-n5@d*9KmS'7c3KZaIV*9h.Gq0qsa4lhu>B*ke>B*ke>B*ke>B*ke>Ocr#hT!TQ`GNS2`GNS2`GNS2`GNS2`T-K5)]uQ>T?g^n9B+m[_TEMPQW?G"a!=&A>_i;"2jbPkK\=2TYgBj$Ak\Mpe6r`=[sj$_j'/00ef#l=Ke_Uo)!nP^Sh;N1m')2CE[SpgZj$#+\&)7$/$q5VKW[3pk\.2Up,WFlX`oN.H<6fo)-X)2TVb2WW,[KFE[ReD*/2O52_^I9JmuD4UhAM;$b)bE]pAr5q(N``#)D/A[M@&W[\?i(*cg#rkk,J"L8;7UDc%a;;M\X^d)@*J0F+,<'Od.St&Qp$[7;np/U+=u6KG],HoV.S5JM&]R(ZhM)5tU/fG>HLQmYi-6#jN-#DP?p%^C>MM@rcZ5l?DnH(M+CG14=<%b#&1:ojDmr)cpd`o=]E's3u&"6f/#G`"%LD[h^TA8g1^+qo2I>5/l.KkjU>%naUOkc\')/)$pWotP%RD8kQ*GagI+.rHkT.iPl3[hZ@e[hZ@e[hXtEj/m[`m3l_#AB8=WpQLgaoNtASY3Xd&6'MeTL/)Kji)+hc4pc,:/IlN"g04XiS*=>\G>%bFS?;t7U+-[I=nu.q!r7^ke%Yl&d8u_,#Z`kW@Ko;l?ho[;m4tOYOq%$*OQWqHDefW8l?1OBq2Z\Lb/5364`1VS*8ZWkg\WrkN!]+d@KNU4XChkiTM[**R:AjMia^[RI3EaSRRRBB?DNa1A[<0DGopsBgu7**mUJkUTZb-"mIh=44?DO:g9ocH)GDPNhaKp)HV-\Da0+1oqLjg8+\+#hc=h@qF*mB:;=7$[%KlmWKBV@V*:HMD7(h-SU!==mp@hf.rHkT.iPl3[hZ@e[hZ@e[hXtEj/m[`)TX4"c$re=#4Q#%i-dNPhS*e&E,ZWSaH_&M]HN4t!m%@["W&P&WV%/+6"UkT:cl3H\WSRpi\g(%OEsH!%-QI/NJb/Uki0nim:g4A<#brJK%fBaUEWWsn>>]BBb>DK3PUFB*La57.PdjHM[fXY_5[DP>6h;d7YSP\OcFC+JRS41PI9m$(B9ctdds-l.4:H5TLq75(dn,@/enF;0YI3bh761D5+43k.Zd9LVG>:.[m@E7_T^4,kkn:="Ag5ZF2:6I[.-?PHZ8?M#VY,tF:2VlPO#V;USh'n%I:/#2i:O'0lo-l2IlI8IKceX"3,oLm#j[\EXq>H*ZWB;qh[k_GTZKLA!iqA#tN?fgl[4B*lp\?39C\?39C\?39CGW[$ch;bs'[c4`iEEdEeEEdEeEEdEenT[1Q]#S[\Bj30k/Ag\gX5sL5d+:RqBbW=cO2L>"DOBnK"4I>fYh18Gp?m[??4.TEfEXiX\%k>:4cC*BK9G8!Ttk(UjIb<>h5*#;C:A`m>&+s1*e]h;/*LkiJDNbhV9TPhl@o(Znh-nATn,t+_(\%&hKra&Bd+-k]"+A&-n-D]]Nl/>B.seUu7M`[RVJED79s!fr(%&7G^$&A_6WX>eo2]t!C6opr67&JBl'35OZ(D2&G?;3ph%YlEW0+CISQOkSF#lP_H:j*e>NcF`C0M.jdI0BtEmq@nH4>&OOrUqGO2p:K5Ahuh.rHjU[hZ@e[hZ@e[hZ@eO2p:_He_ZWYCUlG&>Z3DKt2at0\*oG-3eY29_TSFmFr$IrO/q,CBp9J\%k=j$^BQ+#.eT^TIn4hnrN\MWCOFJWRLrpRKR,qSPX56]leMF;0NS?RV\Y!jrh$t4%Y4#\\\@cWZ7_0g^1"',e[#\iXBD;LVTR(K4:B%jQ]Klj&'GKF#sOXh2?s3Spm?@qY9me-76ak]*A++b+2TuS(1"ck>1VHIk>n0pUI?8XgkKHgfE32gfE32gfE32gfE324PmZiD8gA2D+3KnijRjTijRjTijRjTijRk:eidoO:YY17SgXM&cOif#940.uLYh/*#emYVAo"K!Y/*e&nG'2+l-01Ce`"9ihI$k"ohJnr[>3l_4(tY#LXnL6BW?6+L.WhlY7R_W*2'1Q)6++#TgJ2NAL/s:pfLOhF+KK@2osHnJC@q>3-?_X4MAVJeCb@b]mVRg3XCo_'/2L2".O`lJDQi'f;V?u)KA0?:=o[2nG&"UL6mnCD^=)Oqfo5nWV%t013-1iNF[R8*:e5s1!;k$>V&@QV$$H\e^dl;oT^?M1.4_LdU>c3P?M#P9A44>tu]sOZgiH0H@bp>Cc72KH8F,:s+hYiVm*BEthoIg;gEf/^ZUTNalQO_KlB1VJ[B:u![e0@q-Io23R=YmX1W#Yc/dCZHe7F1o(Bi%CKS`uU4C0R\97;YJS9M))3(B"Nff9G\jT4*Zu<>(kE)Yime+&(mj:t5B@QZ+%3UB?&=:K;.?EEiBGgM-cgl;&`+kJpXqK'8c%'nP5GqS3eAA&C!,;%>r^-*T-c.P*3fr5oAJIWYBOeA(+k_sF<$>4@"/EEdEeEEgi#XgkLCXgkLCXgkLCXgkKX]QK:iMVF$CMT0MPD8gA2D8gA2D8gA2D8kP;He_YOC+K+]0Xn=ho`+/[=Bl"-F[h1k[fD'8YHZYr#Euie0K*SFUB;"aqs[\NDfLJO^R]=UgOEV9m4?c:42SV=Hbe.F(J^P!"_u5!^]fdIO;)=.a'AWPQd0H'h)kT<2_JqJCTIJcrB\9;@ghY\q]F2N4CH5'rs,C>LI%];8dept\Bk[KBe(PjGr$&2XZAQ@@A'M7qF:`tot8h!D(BpL9Jo*jZ;lpfb"aU$l'mZ=CXFjS3aG2C:03aY'V^DVm%TN8#17*7[@?Be"Wb6rP,%p$T9QLpIR&q=k+%X1>Nc^]<+PmfcHE2,[)'hX[\E@fl?tMC8gCY*c?*kmD(Bp);/`.YU/-`>BrQ=?6U])ESa"gp3eb_1Nn;YjZb(8MajYUa&M!W4--4I9d\hCkm\Use+PhfJ1Yn4hdt2>]q9%)2h!(_%4h()jNd_2sn#'+PJK+h6I?RJ7;5;OXc`+&1cLcY:L?I(.>l1-e@)+/VgL5mJ(6_CD+,hu(SjjL$05AUVDp-0/ATEp"S>-9K'oFiE9nDY:7Qm09@mT`C^B/fIOkD+7912Sf':@09"f^TjmmloEEdEeEEgi#XgkLCXgkLCXgkM4c/Z7lnMW@E.rHkT.iPl3[hZ@e[hZ@e\(/6=gf?Po#01TRBj30/'3_KRoBcK"5ANJ?<80cdZ7ULA?TC+FV(W09:e7k(f>)9%`/**m2]I:S5:K6$TNRdR8><9el[C>@mKM:?-Z;+AkNF:15A*>,#U9^DrgP(Q\rLp+O%?88.C2MA%8G_lS\_E!K>CVX7*l(qpj=QTVX4Ke4R=_%&9ZZttKHcJ`:jMT:E9SP`Nk.Tcq[$pA$\=S(<"&Cq.`F",OO"bH%DC]TTFkg$QOct()RgHj't9GhDC]TTDC]TTDC]V*J+^=RGeA0YgZm7r>*.>W?!3a8j@ogS->;T^JrIX3:iUt8kT%#rH]/-P[-rak2G5a"=i5p/&lL?!KuC%,^efXmq"jq*7QRVZ\5g%_k83>s4p[_(Q4P(J#946O!]HAE!G`(:XM=l1meS"F3OAtXh;/XRIet3$jW4H;7m!E=e3T15[@1&`c@XJF\V2*o(N":B$r!4?d,3Y(d!;\^EL<5`"_t*_\jS6c4!!N]?cf6&.&2TkG:udihO/9/pfQZP,I0/397?OAAK#JbVfpOX7P@@kg.G)52,-dgot8iOVI#4PqLY;gkgQ1hZ+l@%1KU-$hhgH3,3[C/cOkY5eWdCPUB=(PIfMSUPo\.d5))_(nJdsBIiq53%[YHFnFEerAUc!Uoi.-:)E26C1pR'$'"UbdbN=P%J@,*?WR>OT15gZj'2Q1prSM&e55nIC&GLuR.]BX+9+BP*hZ]2HfkXKJHRnJco\d)iFu)$ccH9!FZ"7X8g*<@.4B:[J;hsTTV\Le5(55ZZ+^5W)Jc"VTc-+DZ3p-0TRZ_5EW9U#pQ$9&'t4pe'ogt*gPXaCgPXaCgPXaCgPX$UpUI?8XgkKHgfE32gfE32gfE32gfE324PmZiD=qUIdA9?70-VnG++27(R\7VV#!!!-YgR+eq8[r8PbVGkZ,I(43eZo34!;`FIo-)[#L%BO6=62k$lZ6U=R)4KgDkm4"45M-$bbpcd,&:B/[]cK?@MrYlg1:T_&d?l%mk](cqnijlH4f!K2AO3!:+DN#<,/G[Q8as'KSq$5],%1g^eM`l3D#RNMKHjd19%e8ZL$m/9B*@Xfo/iN^nN2[aKs_ohFb1/G6q[j-OCR>H+AE;K's=/BSs?XYfH>9sge+U)C^.asApNf$m_=dqGe2ATS]K:4(BTM*@jV@e"L2jehCmLb-+S41,gZR>tFtS(+81dFub#mhmZ0/\oNGS738"k@ZubZ8<(bF47A!3;8j&-"1M-!O!)hb/s12*K7:M_&rG9C8T6A_.-M8hI%89r"gK/$_"c8u&gQ4gNRAelQ&o!S.,0d=#354>j)dNmsk&8%H"([\BbaXYc25SN2h/*gfj3Mf-Y#Misk$]uS8m;ULO6AQPKZ26uE^iiKF!EYMYu+1&&#oH.+NiOVdK6$K0p0i7=qCQD@8Q7W%V*(D=ISZ5`Q99rg00pX(8lk_ao9U;:(>*`aC9.TM,rA+NDB-4St[hZ@eNSB?FMVF$CMVF$CMVF$CMVF#tmVuHN>B*lp\?39C\?39C\?39C\?39C\?1#A*k0[tD'f5ZiiE+LnW,nK:f:U)D'gL'-Tf4fcYckOh$`$^H_C/d(=6@b'p]aJ^f6X(N:lOkOj8A/DVPc?7SDt2Y^q@K/*LoZL*!>+`CagPL9;jB0\+p/Z/-8MC@.\%jrcK^*Iu\KWfY@DTZ/*Rkmp(*YmZf]*C6mTIc3k;E,gFBfAbc5btp)4H_Ip\#H4cE-H:SM\E^JR2lj(EVgu?dI3l;8+u:UG1^`I47@#q7[DB<*?t<+SXXU7!3)\X%iNl\?APSA9]uX(R8pumm2jlI]6WG&4V,!efep#u.[_AOmVma1%WKF#3on)T'35&[j3GgW+2^q767IN\.Xlp(WI^+@ZMm9<)eBdk$XNZX?o$f?E9ae#2I!eWuns0%KfUsoN4M#k[L:UStDS0B*ke>B*ke>B*ke>B*m;eidoO:YTXSirf3fp&DpVBc6OXc-U@nKrgL`0K$3V`Wu7R;O]8f7;mt#:0SS"[Xb'CI5'Ha+/l;r9pRK[Yoig(XIuakk\[_^Se`:/P"a-=(-3B#TY4ZFXZZqa[J%sL,;`@+[?Zb=\MI2(S=ib0f/nMV6msW&oE?V8=Q]fi3UU;DF9mn697YJM6c%F&$e/4j_u9'6g56r,IL7KEoPtl/ZbB&[.'g$X8XkuECW`Ku$7Lm^]sc?;+EchReXE?I=_l/4F&#ebK=4[==flBW9IcKW%UYRUeC_DJUeXG\\IVtfa1(*SHj*g;Kfl)Q6hR:c'[)/1edF0:]2+pXt.LgS0,Me>5@B,$4SgG<@BS=e$#+2GDKSB_U+ii+:FRDZ7E;LP)eeqkqUB^SLX.dj="&hZ4n)SK0ENob$K918n%5O!T6eT"+?o[F$\2ZkGOi,Q9jr#^-QO6+)YW0u4o;c&&AY9Nn\2_;%iY'TAmCB?D?YS:rgfE321i=g].rHkT.rHkT.rHkT.rHlo]#S[,D8g?\j0msUijRjTijRjTijRjTijRjKHe_Yo[aigK19@q7nfed72*nig%Urp1@=5utAd4pKo;XU=,%Q-iTo5KH:7KdmJ`m&;(99af^OKs,8(b1:ZIEu)tn3A%!U:?O@^9Ie\R&NfN9Z2$U_pKka-TVC8&+B(hg%&iT<`LBs*!CeoKtj'*dc[U&:#hA@jff^9[q*YFgT$]G0RE/-9%6[+M"qAP6bVd9U,7B)C1C_,V;6E.:)N92KR]-.X'o&HDn0\9,,o=`[P/ZeSD^sPLS@:=-VQKMmgIUNP3O;!>\J'>F)\?39CB\ZYDXi=(Zf*e]AfgWtiP35A(oP@-KYj.-Z6BI$@"h_+Q/$,%q9d+osh27l+dUX1/%)dK)Mh@3Y(KpHJIU$=>]<=6,K8"caGW,rFt982q7GL.5'OqUYkHisca4_^8'o-_OqlsCXHi(p!e`9&J+PFa8.CkX`=2IKA5>COnDH/>179@Ra.h0#?Q5BIt$hbJ'ps+>fBNDc6u7fB]-6[L>28b+YZ*'MNXF#F;fl<,8j9S3JG#3SO0_A>@J?^Y0W5sPPZ4&E)KH=DSF;6)f;ct$gPU/Z\Kp.V]?jisBf$G$1uCX-/>EB^$Fe3CPDS^$'3'$DkG(G9u@.1=(YhpZFg^OMU"Zs>%E56?MfWNp12?teKg6V(+.qubX`Fg`=p;0#ZcgA-'p0.liqd?%],rcr0#4<:Zi:-P13-ckj:0eA8UT"cM]"4PYYRe`Da'`Lo(;=*Zd0%g@'YX"/(FSjW7B_^8p&+Z$66fUH94+&b'C2,W?`[r[0s\Wp0`(3[h'Ootn[A[c>k7;LKnjpAHe-pGAmY+Z#YW0uPoJaWl?PAZ7`k[,0(4'.6TrKLSU4W<9]iGXql<-U;nN6Wg>6KVbOs=D/B1g2^W,2$].$g;*XaX=uR:Z\qJLnQLMhMmn^d>B*ke>H-YkijRjTijRjTijRjTijRjTiiR@Y/eJHqS!N<-mA[Tn=2%2&WP=#-JPh5Ro7SYPR`YCd+]H3g-$R%>]&)P@i5]BCL"@_K>5ZA6+M@a*K$iVB#XVD`lMb/p:F'_<(0`HSC$I]JM'#[Dk\W7pbnX]Erc4F2^.>>$ZJ=@#;sJ'E;b_W>k:&fDGE)d?^_H^WM/h6aTdn<]0`0E"b\lt^j1i$@*"-)rsL3-h7Ffaar:2$mt@RJ!:Y3BYP'%K-%g>M]ImnD$A%i2Gj&:5"meE_/r$_bg[rVCi_("1aU"d9.DJM,f=(i!mEU"_*VW=*-JK;\[`TFQY%#!62gN\DCaR5`bi\3`GMH3gPXaCgPX!f`GLB*ke>Ocrf4)QQd.rHk[gfE32gf?7L.rHkrgPXaCgPX&KgMpHr\ZM0JT":o'.Os_WUMCY!]-j<*e-@RBK2BtB&#JrN^9.]5W]HiPU)WY4?'(sC5u*Q(IG9+4r1gGTpI:p$Tr`8q1H>irP&.]0-_0g/)bk4rOHrml*=UK5@AMDqC%0aj^?tq*Des[5M1ZUo8654YaFp?*lb@fTR00KM_rOr`LD>=>ZK3j0&hVAbBefX+<%p86'T.=QJ.6/@l*"G6>PnesT>J`CY*Urs0s+?kHIt\hS:-iK$)#.9=K%IGh;H3TO=Gse$['i8F03nV;;jTh0SNeW8131)@WJXNel=DUNYfnNUrX8N#S[4s@>'+7=s/R`gG)Wi;[/,Hg7[c2/H\?39C\?48#>A`B6>"E@MP<&C5)>?jp9(&bQPLe=Wd5O492X:B$5/d19[hZ@e[hZ@emjjCPMVF$C8fbCk-LRpgPZB`2F.](EhmBBD^03a8D+u+#e&,h)*`1laI,ApJEEdEeEEhtId^ZDCD(E3i3^"VaLZ%i:FjSf'%L"0/nC[amj;6E7D=\lL2YBF(VB0c8)PF%A)j7OB_(RJC?3DQAH@?O'k-mZTY*@BF&,h]GQ\&R`/qbP&6V(Z2"=FInA"2HMLBd5YY7VsniFus_4F&SB$n@%5:NF;K9dP%t.YjKH$ukU%*j5@*!_(]9LP=[N>m)OXL-nID5P0&A!aUGL:978rdIZ=o\()k`!+1[9NS^lpG[,7,Z+GA)D>%>>L^uSreZi%C@U=3nqZBlf3u4f!Z&AD:'8^3ZQ5krDq#.8KeR!fK%u"jBWE_?f'6_SEPVbF>WE6J+g8]+d0nG:74aGpX^>;!?LQT@o(BJ8#k5j6MNiRR@ei9bml?J`:"B20Fu\F9L>M@PA"QTZJ>7mh_9@il4"JZ6P563ED8f`"\?39C\?.U-D7/e[mtCPs^1f_!2#$CDjeis)'t4pe't4qHk8h#H[hZB;`ji/%^$hLg?edT"#G1(lICB%fj0msUijRjTir-OM[eb&Ld7GiCC9,eR>%ha>!G>IEaOf$o[@I\)2tfOOFXO]/T7\LE_P*p@'DqqF+YY)BJg.M9q8d-g.Q0S5IN'Qo[Y*D09+Ve;$tlcWJJTJ`&<^-+mh;-40X_#=I&M[1@288gZr.1/&jgBlnbXdqFZUWc"BNAk^Cn'JWWK-$Y4rdMV8pH,LP;D0Q*I(p5aH\jju*aYaP*Om:VqL0.,;Xn,3LfT)2sr`]!Qar,)0#r\tjE*-ui*-PX.g>jdUl]h*XHVC,L=(A_.6p\FSms7!;\@/f1Rro*\Ol`efK!'3c\cqu>2$XpbT-a`!Q@TtJ/[,jYMC_/F)l(P5Z)!]97T[o24ebX)aI?Qi"l?&FjSXThK"W:.&T*?%@.8Z;!"T#J2#e.-m,^Ume4F[iEJt>0+@!'bWl@6X%hE89sY33U\"Vk1,Y,@;c;m%X*rrHPbZC+%#m@+,GC1%DsL.0N%BJ-;.[_PVfLl"Z-#,0O+AXAkE/6XMH0CcO)fDFTEn8[[J\ZNBD\?1"g09+_DgPX`XA*1GJTRG;Iq1ee$Q`iXoe[>p?P^E\T4E0\WYn"5,RjOCVi1qWAA346A,j70Z(NoK,U"GR6ARcQL*M#*S]KKchm]8Fq<4=`8u;gZKa$`WBWD$P5(Q:>>3?:"78H-(U[s+@h%RmHg^[H%jMX#SAC84DqPL)FO5*dKNJuVLgPXa#:&>\ZP'B)1DiOX?:O4j8.rHkT.j".ta)/e4`GN#[I>\n54/V)_#D\LLkmj;c\k3$ruqWlg^&Ql&UNrVoGRd@Wo9o>CO#?[!'IE;!_(]9]*WH;Hna@H08*h:5JUjf4RfkO%$X__hV$h1+W=+&'u5YViF"M86$HBXoF1H1&(4K@*fp%K+$J)Qcb8V5e2&XUEli>VEaa"WjZG]P_>f_*Z*oC"?KYar/Ka-0Eac4!$g(YK@C@lmjr2]W[P7s*)D`Q(6Qf?n(.1f15#dg.JtXk#b,"UF9[IFM5]KO]e>1,M@=UQZdUOCI.i,EhL&BFg-qK;Mo^jP&9pFYTT_Lkc]XP;'<#[=n[lXSX+jV;Xnh%e6#!c/_CIid7#:\M2+PLEL`:"N%N]9A(UFglG^E;<8>=.DMit1C#+5ZeKJ[`@"nCm%@]R=f6K("!%8Bt]^ch<*MSGOud:$;Ag9YN2.c/]5!)#=qTgrgT%+_>hhH7B4)X:4VL0F(c8W1_oohT0N>O!UZ]Hi>1Ept6dgM1>@eR.6<'[#@a]!6[BKa6cW_F$"J44O_f_RWLrsC_i:ooh)cZt-SkgLPWY3U(7Dl0^.WG+NK80IRi#>o*LX-.Am2(IqiB]N[Hr1e+eS`[=76q<`7-gl`*SX]_mXQiaTgWA)eg#.*tO0NXkPA+aPt*YSfj-�p07Zr+%[7^kJ\EfW9(F`&T.=G8HN7LJFqAS1%gCRf5\Y$OA>I42H?'YZ`.!7/fLSPmM1F[N84`UH%^N`b5e<4<,YABpc9]slk7AU-#/Ytg\,Hs;l7mtEfg=-$]oZVR]\b@_EJ"c4n&!g,54Hej%Qo5]%:8hbJ:%$n_h6!9&:FL9%&Z7=M=d8kPsK<(N&7#L)s4GZfrUYsT6Un0QGYVm?ug'cR$[pn[hWh&a)/e4`GNTSnT[1fa)/e4`GNTSI;.J;gfE324RTBTFAKC8&+;%NC>9U]$"NbpYY]mbfYo*u^R3mT`28Y2#!HA'M$=(7@*o=ld_r^dci"oE(ce_`Ra41Ib]U&V9T'q3T>?uK8$.kab_6Id4E;3lN>^TKV-Z5fu.Be+YFu^8j48OK^MT=cII[4h)ZKTSllB[`Eq."^K@=E)$r9egH@Um!rPRIqBnM!n6!4-h<0NSo47D`/L$q0sLJb#O?-n3:TM@2[NQm:[)6X`_:kcurd_t1NKB*[\0[ZFoLA=bseGnKKg.m=/Hi]ftr&/?,k#nc,-'+kF?mpAHC6$nFF^E;;QY_AlS:E_RQ,m4CaK#$";&G5N26sm\5iVT^mhou2Yq:pRP#N"D5a@GaiL*o0oi/u>CiSI;=mr\lJmp#msZS!r%H4)&u0#&(&ZmP:PqA-qHlG26)(Z%P]_rV+0i#c8+Sp+]'@8JCth"Ul)cb5*>7o>!4N](a5d,c>>oCdmr%e^+)_6rX1?miG]r+(/Cl0N*MJq*NJ?-?%kq'*"UgThYZUE*VCNma-7&Y0H+JX%3!W&ufq?O3JE"4`+ZBi;1QipIeoaNl[=nZ`B1P'k,9;:O(DfUQHnIg?5Y>Q@KZ1ZVq!^QD&FpUn8,,I"olH4&[1>H'>7%3&69r=2#^l:JhE?2k5u31nO1c^PlP]mh\-js;]]#jNlZ3H*gq+&Wmp(R%G:nNobq$XG:H3E7&*R>E^f[9g"d=dUiNUl$0Jtruj(%,dj90F+nMYUHB*ke>Oh]`j0msUijRk:GWajFNn]HGMVF$_mi8geVenk:7@'6nWnJd:(nHD3i$d5nBaaCH';;kF(W)n&Trqr4.N8TMm\>!q+fQ;rhL?!DHibHsf)h?d-:fX"'(_*%o19oiB=5O1b[q,VXbV[MZJa)dLZ&+T*PD;+^uoi(]Srop:TkUSo'cnQ2aq]EIL=kU>m?Xf'Z0P+H8p0t%5.JA^tCL`Na,5/;dKWHipqG0kj/=[=#]dGou$"W#Y`E=>H,B(^ZBY[O2p;NrcT3fV3P=Z/$QCj!%Ws`nDpSS/2\]j>[8o)WW8MO8\?39C\?1!<*fp''a)/e4`GNTk2iQLKgPXaCa5c]7?[LR/gfE32]RRi/XoTYSn`R7/ID.-cDk66S?rLsP=9W3fV#OPU1M8^6`W^-P;'KX\5Zn1(FJ?:<;[Zd9V8o"H"`"]`G<2e?t&$A,.8:?XSB"24Xe2DPb@;_u5PX`urLn)p6%[C*NW!q\UiZ8`5@f2'2&9dHgiKEIdAR]CfHb8"G><>#]R'd58;&I?j?QS;e;!bP)3_,TALQnIr^a[1KE-m6iD/G(i"f^FH9hd\@2HQRS3O$i_o4]#k%&+Z7a_Vk$L0V@b:P8V5^Q8]4bhLs;ClU&rY.(.e=HJ;_%kN)tjWAe3?m0ZN7Sd.=66mb++O)R_^JB<%E,!d&=3!l>dVdM(DU_%qUVID]A.!M&=4tO7\N&41:4uXQ8bXT4[<4!Ug7_-AJbMQ]DY[84bKTV*_i.%umD=4p9\?39CGW[%.p[-"<`GNS2`V\hXgPXaCgPX&3nT`r?gfE32gfD(;hRK]egf@("4E0sb>;a=6a?4S<:IEaL%((.Q6;tq7?kR5/7\RD=(eST?Kt9PuXQY50W^4]Xm=VL'DTF6kJ^d"0\Y'&aE`sSDV[Xiu)B^l5&`0EB_:sW(GSAs?:W'3jGsiZ8$`f!%Tlk<=YR9g4.>QZ]$ukNd5j,8P4ZC01a!KYm/JX<'c%hMW%H)4d'O!T0TZ>Og"$QT:1,9?p<]hFapWjmDRFA.uO&,8L]JKkBf8ma?<>`rF"pl$\O2^k!+L;ZI^d7oEl@V04@0@"D77R@D5R*c$K^P\_`J[bf+ip\_V.:]kS'&\m$kY/W@G("f2GU^gOKQ34K4imN-r$6nbJH56F:;f3p/jZB0/7MVNEnn0;#%9=P6P8KKRNGT)k]cb`Am.3\[I9ZN]U.2$u*&sY9mF$th,Kp`c:R#X08j,pJu.8<7@_+]Ng_?jhN\Q+Ys1*b%t3PZ6Mm4^B*m;IaW4?EEdEenT[/;mtVgj't4pe(%3Lj\(.+R_7mPfe5hK#b>;-d%/iQBcoX2hSUFG`hE:tCS^Yr!S:J3%0rSe-JVo1jd+8^m;9^3tjsV$k9E-[IT-Y%]nI+9_k>]8$RSdgo_.spi7K_W:/:o"'p$DqrPM/*`4:2HpeC_RqJhlU$\@!28FSf\#t`H=6&=\iLi]hQ<#81]#%)o&U;nrh/Bek8F2cI6^?@">A`&9R*$:Qlp4gPnLJ[?A)lc$e?odX-9K_iu6AJiCjKKRQ%U"D?ecH3GKGT!E60303n34&[7R*Duq#h4qM`V@UnRl8oi=&C+GeislFS`n&r$`f?*>T8_!+!ou3r16U`4Norlqs.,EeETej=j9H*/-;#>8[Cu$5oGi@4K\3VB_Xc-jLp48I0NnR7IRM%QOeNmgd-fh>QAAlCIuck;]gd8"lo!#jPWIlGe:OW:,Gg\fN9"l@Qm1%`gF3g%mVJ/8BpHr"_iFD2-!1-A]o_KW*B)#Z%ISd"FFcNin/QW&f/:?4AR*"M]-qn2*sd(gm@4f7MVt;Rl*q!nVjYiQC1)\G2]sc9KMScb!n1nmVSU)7uT[e,qj^I5!W=#i&HC*fp&6g%(:k2on.oEYK;3Jml5Q!fl^+#%NBqBRb(<;D!)ZjK@n>f#7]bmiI(2e!A@IpDeQDXPqP]9,P`q"RY_\i4dB0Lq@a?EZB9hMU`aRhn9KYD>&M;hCUDqj9^`!Q_=>B'h%Nc'oEOiJr4X#0HPEMWr/Ap4NS6\cgQUQ/!_k2HQI:ThSg2lO6)!W(Q_?o6(..W=\YrRL9hrltP5+':eApF`DUYlj.Fft_us,qK3-8+peN^:mnj)B=9id;e*Qibe+nXgkLCX`urLO8"9egPXaCgPY`(NSB?FMVF$/j7.@Ykd[b)XgkKX5Lm9Grqa9mgt_fio_&_Z=*G`'41_,r`<\?/9i+\i$\ks%d$Icu&^ce7TiBD'.teP/\?lV8;Mi++DrrMS@]-6(^#&ABSqiNC.7:(QAQtm7WeJdirfE-\npVG$a#F$7;Jrnlu6JHW1\7Du^qD7TU/,,SgQ/N%mnJC-RDuYOf1H*VQj:ES_mY7I6#9ifXDJ2W4KS!isck.fkF4goVnSSn[F;qU#GCbpt2UE9+!?]Vd#'uni;!2U#I6e>so\LGiJt8RnYn^6ogC#7pSKQ0e/+gN\L:2m7?nBA;.^&2iZHL##E.A\1q,?gfE32gfD([C>;kFA6gB75ak5GVIrUBDOrqHF9e`u!6>(Y3@-e)]K)R`Hm=P704$("-Tt@oA#5a0aHup@,XVU!-X`urLmiT+e=JGgAF6gdkB36U3+I#!CmM$aF/:IoM8RC>citnXR?isR//E#s!/MNIW#=2uR_/7LOE(##%C*+:!]>IA?D;`"g(T9F_!)^A:_c$CI\F-jA-;nct>IWKu-Ii3qPKq%i4o^58`9T)kmg6l\(Z>8^hr0:FaUV7&/&G=)IeX[7RB!OLcr8U#_I6rlPaJOP9Hj8*8.&TI9lE`PJ&K`5keST^m;Sc5'b4h@iCqd%+KcAqgiq+gg7jEX$`>D?9Aqg"Ttmn?NrX==o368l,-51H5P52E0W5']^W/t&I=O)7`]7lRK(YFhR"e_d0_gq6$l>.(.p>*,Am9Xpp)EN,HC=udoqY,[:29o3sYH:dmh*"PVDHX,;5BWaDm(H?rhf#YtIe!#l?-Ca^oo%Ar4h%K;5MW?SH"q?_M+)/ua&;TeSQDl1`[.YVRHrA\[a=4'XpNoK7u_Dg;i0DX=./5@eunk\P:G+T6+^NZ)uYZCb+!L[M@OH)hA6;;j;5'5j?++tut?Dk(6+&p@A%I3`R3gJTCQTEp+5\7CUX29G"<:S5`.XRgc'b7BGq0hq0!t?_mAbX`UZ+VYemYt%lhlUX@mkQc/-^S;?oEG/RTY\f4HDQcumXk0T4ejZ:!6MVE6WksZ%68'lh`D,r(iVCj=$eFq@<:RNGpl!b&icCg[`nBY&\t>qHN`O\qCf]fW53;eNf?YCP.pNFi(#(3=fN&!&.Bor,[Q=)Urg4"kF.Q"=_"Q)12A2lk02RmL=H6X)mFQYobiJ%.\L3L&3ESJlmT:(;"L%;fFQ#%,#$[)mW&OW)l^:h;Q1;^37DX8\+MeEXWG>Ht14OPq1A*iHNdYmTlTJ269c4<]-h:T%Tb@:RtC?F'ku^[^3!Ij\+-Fm\K,_3M@(f-WNsc)3o%69(b$5Zqd[_\MKqVe(+gUI&-M,G=m!:IB!(gL3f:aWP56+lJ0Jhl>?C6;J3a@I8-ElQ4kb$r.T:aJpNp$#W7>6PIm;[WpbB,$.[XT;GH"uk"p9Ff.)4:.s8SfF4K+#Wg[*)W]Sn1;S?e`[_h.F[UNI['AEio^p[]VZ)pi,fN)ghG[akX!8(=g/%-1-$ess@[oHCa[8gZP?qMa5]$'Y?"TT*`KmZ`l'XB2I5,#t("`$L8NK:-a5Y@l:Ts!f9Q0<$c]q(^oUU*NIduZCMZfhXBMBZ5Q.ZUSN3N->+/HjL:QTNqPDQ*R,bVf$U>*g0.HGCQn&NkuHutT^m;Xn^kiPs"eT$Ih#:JfN)ghG[akX!8(=g/%-1-$epPU'i/Wr!!(c2D8iqMD.-XS`bbkZ!3V,Ed@*mc@Su7Y=lo,30p3DRkPGK`ZEI=UP!,M1:e.6QV7I<)kYj.5_i8Fus79GPHMXF0GI4>;U-$lTAT]IeGU,?aW\Y7P:39]3Q'eX#o^*8"FfOlt/iEH[G5EpS,B[9g=&2/*-TY8Z\$u4+9q)"X`!,t'H]u3kE@/F_r9AWY>5&QXdhTuB;7Geq=&o&Dp%EQadXrdXlq2BFUP;B":lk>V=neX'%1rcD?:od&(,7q_&($'e)*WSV_pV:$f85*]0JFIs:sCRRiH1-Z3XR#EJ6l#jEL0#AXk!V<\OBmb7%(h$VL!.ZP.>?+e5kKtSa>G5NYnlILS'QSA;uS/.Xt/eAiQOiL'Eq3YE@dP2>#]0^M@4.e2q\Woad+`i?<,-SKH.U!=SEP*9"*Hb8NT4o&_U8'W]GFjr(MKq"4&1iq((n$el!g!)sB]$KYc%TjlYTCb#JcC(Au*j^VMg@]'+43cFr=SDT^ojulYbRgK,q8h9(Dl_!2jPOXd#c\?K#=loR&7_`5:s(jfa%@QSH=D07`ntVnq87(Du`mn`\1m/kX-&eV)Z4ZngkbMZli?G?X^GaE-4iXCTNtJ!35$33LYcRm*^h(?j_I^Ql6H-12fN%tP`"Ul4QNc+N'f0p>[C,SKQ>Z)!@Aa8k!P?)A)F4]aJt*P\FT)&4h[WU$5"g<>[D3jn'$^PFlUrga,&%T+"V4Y!!#haCb,EVCb&b)Cb)q/!!(IJgC!rngBq$9FPU!sP\,CIm\FPT?^N(8OuF*U!*iAiC[tP5Tr9;^fL.-#NEb(mJf;,r,DCuEROECao`MDR602)C+!>0iFll9%boAE$4a`4`4Rp8I'?3NOgBmo\<"[l"L9(#45g2W4/%-/m!7MS8C5/e_5=!F\dsbL1RQf28:75UhOuF*U!*iCK75`&>-@[\i>6Sg5=-F`;n<9dF.KD9NULp:SA_o1+4a`4`4Rp8I'8C?-!!)#/D$?TLfN)f=!!&lB[M=<"RqCEtYGg^S`18V3dp^Oh^RIjP;ucnp@j4:AN8FXiK04!W2Z&G?HJPKSNtJ!35$33Lpo*_N;oucagBmo\>UaJ>!%"nPfN%tPTIan0!$t@kD3Zur`o#T3@@E-^s6sshD6qi10n,2ZdjZ@mGFSUhs'^@g!5oZ-MJWLs!!(s*Z)pVK)S[0h?H.F?_mJrH2DuM(F6(Zk&`ZZPI)EU3[[KqQ3O?OaBqC,_%fcS0T]2[nF$I&/1#$!*hRnrRfMI,Ij:tAMZCs84T5>cjbJ"D`r!U/O8=>#pGq.6_'akr#bMhq1jjWE(b+u1X/]ENSS\Pga5Un;TNZUe5:O5k)nR,Jn)I%ukTVPtr7*(#'(o$(Pi4<""aO5]!^-fN%u)!bWGPe\^>W&6itOd\7u0059X"$btESYSf3F-_ua:J[40Ch8\p-c3V2K@QOPi!.\2B6[SGfmmhdjr;.K'J`)a.7tf1q*u[=+I#LIs\/r+Njk*T6!!!#A_6thQD$9n>!2(U381Bih(5l='so7#3`_nXNKk^`49iNpCVL/3jCYHD>=Z)rQ1_V#,Y[IEqn`#m`K8o-!X;rVTqTNZU6+^(!% +endstream +endobj +30 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 28 0 R +/Annots 31 0 R +>> +endobj +31 0 obj +[ +32 0 R +] +endobj +32 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 372.994 679.455 389.5 670.455 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 34 0 R +/H /I +>> +endobj +33 0 obj +<< +/Type /FileSpec +/F (resources/processing.pdf) +>> +endobj +34 0 obj +<< +/S /GoToR +/F 33 0 R +/D [ 0 /XYZ null null null ] +>> +endobj +35 0 obj +<< /Length 2455 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gau0F9lo&I&A@sBE,nQ_,+&?9IU%3''5*Ib9fm@DG+'I#$'Z<#,XYImSR5`#"NZ;@05qR"&:rhMpFY5(YX#@/04*OBI(QVF>CETtL!PkJ#F7l-j=k0X9TTq_QAr,6F"=isj5T@'NIui*`qGOS^!jU37Z@3B-7&'lo0"<;'q-uD%difk>N0km2S-,H%CU*CLTQ(N((e[,/g:e1DKj[Hcc\;*?Dj3mX\$G9(TG^C>!YB[UE0^E&%1in#X7V;L>#2B6/8$1^)1)MT3.b6`3V7Q=V*jpE]fAP^.T$(WUc+hOUA(%#oLKBMk4_M^&/GJ`'Fg^AJfa^r;(t?C,U*l5la<)&=q$]C5f:Z92E1q6"W;^j[4+*/``.4nai1^cs%15n8$1S,!m5QPhA\-8mV9AMQj2/.h^=T["#(/bs]\f-[`b?r4Emc'8\79[Yd$rji.@U_*"3%?uSodu)3([kH(f80\_2E6^$g=TZ/BoR4S3?[ASGI/I53>:mZLJQ#F89aOOiog%<>E,G1oa8ep%(#Q1!r0f$.]0cR*cb$-W)DXC\&IUSn9cJDLm6#l;q!^eN2iMA]r$nP4Us0A%S:2<7Xj8b%grO[CH2Ku?D$_+$=41hkAY)Q9R[`:%pOEZ$m\;5aC^E./Ol8J:/.U2Eu7;rc*t^e]/n$9Oqjb=W`pr,3&/J3(7S;8pSUpe2;T#F(Y_9pk5(l>`t`GcPmCh'U9TE^))b]>%;]!WdU_'"K/)pZ[qDEYUXP/n)WkFB'Pa!s+8D6`c+m#3:GX?5kC@6C)8fu>i+M%+"+_QCr4^ORYXkP.1@=&:,g(81Jbg'h9T@P0@O"6=-BlqE`R]lD=[]ns8tIF"R,[d+[M@m+fW;DPpX1"CLe2LH!*/A@9rJU#9Tt9uSg5=RL^EK0(mI?\F2`[%BaW7,s-)mJ%XVU2XKAAX^b"7.2fUUc\-tmZ,:Ag#f4/E519aWL8X!k/nn]Sph"PORD9k*,d.(DC;'P.qC3XBY4WjHeW1>g_UPk$Blo>Uqknp:T!C%6oe&%]cZjaS4d=NUOHIV:t_o,#u-;C@O6#fe=7GqP+X3t+],Egf-%_TN)"P*af]lP>Ht,&&A%Oe0Fu4h-0CZ`oi9K$o\mY]EM\>S2?WDG%.R`QXO*b%T$iNY&G(Kt&rk?c%A77(u;=JN>B&PN%b,\S<9,d'^qbpXFjto5BOf*tZI25A`W_22X_^EiMGe2qsl+RTh?&)uN*9@L7OHmNBhX0$dPbJ[q*0>=HT&^=pI*6l;"KX6`O=cR@)q-W`WAR]S8U)Lnl&-Fc7An?fOP5P:5,#TtGP8%ssIplLkj32p,ei[4Qui;7D`l"[BTTZiNE.f1'%K'[6ILf(c%U,P]2U0-7Qd]a>&QqX4^sdh1#qJA+qsArLtL*b2=k(NX#*Q)=f89c2L/EEnDVCicOV`pN_W$qpQ6D.)f0dA'..Q`m]#NlH_oeX<]t0sM_Ei).t6F21oh.Me\dk=h!o,O#!-GU.4%)Ma:Mr_/6=SoY91Ve"qR-I;^MRH0%T'JbSj^lI9V*[<^Uuq\Y;P(4NemA$uWIH;=,8j/4+4pOn^5AmHP/CqkU6L6uDC;3iuAb?M0TmpJ:/tm*5Md!tKu02Q1($jRe1[Rj::c&n+LOYq,AWEFhSH!;1I2FjYO8+4f"#,Q~> +endstream +endobj +36 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 35 0 R +/Annots 37 0 R +>> +endobj +37 0 obj +[ +38 0 R +39 0 R +40 0 R +41 0 R +] +endobj +38 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 103.704 300.137 134.691 291.137 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.abj.dk/dxf2calc/) +/S /URI >> +/H /I +>> +endobj +39 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 120.526 287.537 195.253 278.537 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.openoffice.org) +/S /URI >> +/H /I +>> +endobj +40 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 251.026 265.937 320.011 256.937 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (mailto:lbj@abj.dk) +/S /URI >> +/H /I +>> +endobj +41 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 178.522 244.337 191.023 235.337 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.abj.dk/dxf2calc/) +/S /URI >> +/H /I +>> +endobj +42 0 obj +<< /Length 923 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gb!#Y9lldX&A@ZcFA$X>kS&egdNk$"VDE)FaeA,'KC"]hi\!f%Q*noGJ\'f<2$8,Dr%t."Z&P[cu!`Hs&'p.Jn.49dYLWCc\(Yf4;J0>!V$B;:rS5gmRj;Of/4f\n*$%[^""R0=Nr\Nhe>Zq8uA5Z6q&BQA60kLD'.`;;^]?rhYZ/@rX_?&VW$-'B0on*ffkYaFDL19a.GE#'N'a*oni6uY906Q?C6'RJ!NXkS?;WJD""CB[,L&&K+'G(Yr"k$'^9k&RQ,GIXtICD9.,9gCX%/)CQ[*U[S<0jerMb$P*`l0(j$1?T7t.L6@iW3YSPj0=qebc5'#UK.HF`K(C:u@0"mP"-6FPAK+k9u]MI8qO/@(!CeC'ZD+XJC(KsZO*`cN]>B/K_p@:>Yq03X>`?t3\[-sINdd*hWdpc-/?]7Puh@?A1Meiq:^-Y8YLc;AjOAGdConU6DqdJ2bULp(+Y>q^YZu9PL/aAZ*)E06qd^PW$o,6$&?;+OpG%t(%N@LFRQM=aS&&,51E0bfHE9RiUT?$-OPTN,Ccg8+d/*r@85]b["R>Y:`[//0:?ija?GW5?cqQJC*;mSnQ(Y7F()r^t:'M^3Y3OtXgP'@bkQ@?=#N@VIWR?BNm0U!N]WB,gAj~> +endstream +endobj +43 0 obj +<> +stream +Gb"-Vf5DU@g-5MNi&uLLhP36dK,j6o!XgQ`=g-5"(5p.@YuiR.(L,*a6WhQ5//F/_@^0#dee_Q7mqZW6k--`Kd[;n&bZ>BQt2YZ3cC`F?)S//F/_b1j4_n7D*-cNOq!1WhQL;Wktc&[PCu:G5a>-1f2`qmDAJ/L@^0#d(5nHA-%gCm(5nH[iq8)Gb1U74@^]aN=9Bt3D-/>i[YiZY(+X$Ufd_EYas9m,HPCU&dO["Nc)RSU?`'Ah+XT21X]=L;dV5X*FSOZ#[:?Xa2Sr)qX1gL\=7bIh*t]?'N*uP_OL]8t,L7WZ.t@W4JeiJuWmlcE^QRgo*$;b4ZUU=KF0PGl;'UEjfN*0#MoOfZR)u#6,;@,ToWgO:WS?6@sq[%suB\^g_dD40o[.'oS@#`N]l1`QD6OqSQe(Cb]-K>Hq;3!>NR4//Ba?`Tn%mQ*\GGQ!F%'XPTo@<$gutP^br$rjCkfrUXRpme[>n\@;acQ7dsPML@1$`@`QA][9W+"K&^(+_;AQ((&$.BV;.e#R\ECfkD:A`g:80YLp?aHVk1Xi`Ph;7Q^"(9`Csb-b'WFL@rS*DBU6"*/[Z?Eqdf/X49LZ%m]Pm?:AW+]U^Loe5K%);nE*V[QjLq2uQ?l@GF&[2qpiD5oKr&skBHdDtS08(3d,J/OV00XGKrPZ;RRl/c\g7ceA5XUlF[B%85q[^ZNRFbGP*:@Wg]m*Qg*4$Bd'slHRH?Kh:ik,faE+dA[`Ui<'1KuS1Qjr;?orHKGG,lhD>OIf:%K>I+WJeSKrF[G*5iHXYXNh9+$W9OG=k#grA`Sb>WgX7C9F'U)>2O]S1-NBBgM(-2LX*s.'#@9=g\q*Y2'P`X*-e^g3k):9jb4C8lk?IMp,,.DElA$GQ>n;m"UocH_@lp)jIG\Q_Jn9WmO9"nY9CKTjB?3>Q*-]CB1g:Gm4`D-%a.J`G4@+hAXU)L#>A7(!nJBoKf+W:l]9nUQ2<5OXOTD*FSQ]>^\J.O4*qLh*Nk):Vf0G@!uIYIboR]\G<+.mYD#]kDo13q(SPU$;4,%B%ns+Z#QOOrmm3Pn\uA:C`Hn@QU5+C6M'm!Y]OJr#@p8nT7TYbRp\S5(6C+!rjZ_cQ*/gC96QhWiejk(lCB&E0sPa,9_d7R*u.dm;momC41j=C50E5:j]GmgK$TZWHW/icKo>-DRBk@4Fh`f58b\.F0WM2]k&!6^Aa>DQR(N.sN*j4=-84*XF#G+o292l8[^.o#Dsbk)CY`X-.\;b7!(d#qUoS&k4.<877PcPMMS11L"GjoZWT,qm4%sp8>`P+8l$PB=;9Xb*Tj="eR69p85WP$5_$f1POM>fo"H42\p&7idHoHkBp?D[UQ\fS&N.8Rf`%->Weq0'P=Dl/R,ngeY,V7iFD],7ep,KjW@=ukJ'Vtrld,W5OskSn].ikgCYb$^OIba3AX.A\)72h8s\&DKV\pHB\>9l>db6%.X&_*nf:P+Z-uU]M`qdh@csD[>K*gp1Jt0CON7TjgQ_*)b.#7KA_UYDiCe.\qE6f=HPa+34V,`E*J/.+Y/-'.>@I9FqljJq%bPq#$Cnj'&>h$_#)+iL_!^eQ@K-,Z:qUHNX?1MFB!9tk,n$'Wp>_L4CtT"pHf,mFfQ@VR*BF:(*k_c')>f`;(L[(4A$Fo_/M,Or&13]]J4*mJLi!pXL'd,VA@j3#ALqJ4Ir^1eH4t^-XD?>\WZ@Bt9B'$J$F/DbXt8B9,>&_=g"QB?omj/,gEfY:(1?+pQMeng,9Ke$T]["Y`gAf'6PjTKN!4/geO&;h5VLZp/j+\SEB\t_llLP-7r-PBN,_FUV6[UQZhAh3_j0O$89&bT)JhYrnEL'=muZPBe]%4>a7_;pO8!R&u)HZdi]XXlS@pQ8]\MW][:"<'=.PQ[b'KP*pB"o0<6T%tCgJI/@ROb9-]gSfKJ=YJ:#lPZ2OR8JQTGY]?e@C,6Qhmt?PZ4.qCc-m),2hZEL20YVob,lX+DHo"ag49bJO4GTL)%`3d,Vr5Y\$W&m&$.NeI$WlaZJY0qWKU3-C\9[NtPg3GLUn9NZrq^BZl>R`?TgotqY0pjY3%QnWB!N-uj""-j]O],n#oXG3Hn&]?I=M53I5,j2'$VOlBj^smU9WYHl.MnQsl\D'f.%NbDg6Mai>>6Xb>N)KC`?>2d`fXKO@,KL):poU79N\M;$>2#E)(W/4Y4K,17eJfEJ+sG:<7J_E-#6o\oS'MWod4Wk;5j5D@Dfq)0OaqbQr^p1rq,l5@$Ra_WfF-kW_0"@KFs%g&m-Er8>ot*@^[JTcP!Q!ZP='L0:8l/XdH5HM#)t]MV3lCW#*ZYT3\mOY=edG@sO93Tus?,rc.#2WkK?2&rPjP_fpV.,96X%TAfX]rW9hc(]e2XrrbP$Qb\8#2)'L,8nB4]0%a];\,jSuKaTfmCp9k+'2s4F3=Cb+=#*uBFe2C6Gi-.2.2H:#&]WSI2tZt2InR-A9G[*K2eUQCHJA1!n#JQL#2dspHJLV19\>H$B^nP?S@8\PGFX2`Ra!O0i`+RClQD_4FpDnJH3o;Ee)AaBa"VRC2;E[b%i9!L^pLD$0R_5E3.:H`eD>ZY'BUhJH%bIpObHUe^ChU;3FV6I1GE9C0jK#!*-NAf%D*+BJ/Rqp_3$O?i8W!OY\Ei/3-jmT'U;[#k,l'Cg'EB?2aPj.op,bs_;;jB)WXUBKAJB!0CN7dq=;gq_0*3)i3mQEd1bOVDLdiqjY2/"C7)N,"stm-%7Q3+_!%3:QEoUKZ=4&4>-\Vb/mJS!Mc[g77@&PYb@'E'V(co:8siIU"-XP&J16Dc6/e=C:qV#tI.d7&@#:oVWqNJSY=bOEKFs%g&m-Er8>qZ<_ed;.p#Y$8RB:M,YOY@q[UQ])R?I==PcQF]D"VA2.>-r&bZ;qgbZ;9$G3AOHOP)*rqC9f*Ah.IDSger7:W^c=bZ8*5R52:t`bb;cB<.s\q=fmiWoX,62c]hDq[lXaUC&>C.Y[?*q?m6#^].g>j8ZuPs83"0B5E,RZRVYVp,j0R@g.g\\J>Na/VDHW/HrI]^t>sSrNX3d*uFCt;L,Tn6,GCH1`rPdZh@'.:UBcmln,cVpp.UCq:Z)#;28ZOC67a`_5uatb,SkIm,_&GQSDJ/qf?cB#0PI1SJ3r65VS&2ADD"J^MGJ:_$ji=>.?rZAg(fRjE7aG5fY;9@\=17Bl-3(Pr:fXj%VlJg;Lk#e(AULuN$oMR59tZG\IganO8??1]bkBlhi.*P>@S/=`Hq?Y5jA/m7bHA.7iL1>FS7W:8=Hs@2r;8n6/VOhlg1b$YMJGMQPc5LRl\&b:>0sWX(-"r7g4d`LM,$R]kmU+9.reV][D""(b,^L;V?9@2U@16UWfAEFsAMI>MtM-qF=s"qG,7ZK&%=_`VL[+O:8nL[F5H:Sm8GTq]-,)h0nAh.Jor`i$^XYRHr10Y4_`kcIKPaJS?XbNY+0O#"([>sgqn9'S]l8HjebZ;qgbZ=[YZ!KV'[d#5P.qU;D.qYi5G8k.p@CXlcIMfdO0iZt`fo"JJpTddaaolIRKiq1TlNX)I]3p_:KkO-2Dc.IQssm,N*8oW6Ip%@8ZUS>6HDZ?rG&o#CX6O'T<7st$@AW&0DiIFh(HdE_TDNiC]rjQPcH8!,WP.QWZ6NErB7(eJo[4ZVBtDO\]jDZAa1>Ls2l,]s8UOo1(`ok,?+1D[/lh2Zn$I([][0l$n3XlbcSQYha:5^R%"#J*jGY&1aZ+\*4Kq#A,@,nUeL*B;#1[RrHck!MVjDs;00J/#GTl;Z4l?_C;ok9Hm3Z3k\K/k_dT]_*,!RR*hG?&]sKBq?*%D,)>6C/gWe^*c3YQHcX.8[lrYeo#9%1qO`L4"MFG](O56W-(\_RWbDG\%;OYGjB`e1/g:L)+S]]f2M)O^3ES7`()u1o,ikI-$^M:?U:[JU_\orFQCELl3B_YkZhg1d,dAG5'[[.2BV+T?KC7\al=.7)sR_t]up!;jR5meK5[J$TnQN]Q[;2F'\%^pqcV_?7"upAgT6.]LCSXdH5XXYLc510ZJ;0jCKjCc*2j&*utu[UQ[S[UQ[S[efHdR&u*SnU[5[bZ;qg?Wab"k7m2]rN,:9WnA\^+ma9$Vs+r[nZc5XF2nd+o#:4Yn?-U>N/n^#pmq)NqjP@Kn.ZL*g!^(*0:W1BW&oiphQ;'ll^kr03AY+(RcWK-fIK.K`?c[R=tE8@U)E6f4bB!rk9/eGl/BA-HDiuV&m?5\Jel\"4mZ\=:r!7;k1:^tq-"`R5"q6Jaj]f!<`^pT=j$2L!o(70c=j.:>rCBhJ["Z3\W!r1`fgL8d`H#W&i54CTO_!jACg8-U`C3^7PB*0C\GW`h8#WeHkn?dd3h@;]37cr:9DqhK'j9d#FpUck;k\^FSG\M-m66Y_I)kZoM_3PeH7S8!:4CeBr[ele8gX':_(+&?;)@LZ=0`_"/rJ6+TeM/F^#s[#a?K<:B3c",>u;.Z#2Z7O4Qr?t$KQ[UQ[S[UQ[S[UQ[S[UQ[S[`X&3j5S9`bZ;qgbZ;qgbZ;qgbZ^A>f"T&uCq>;9=k+Bq!*F^A)$[&FTDqS:Y0#_$tJCoCJ?NeZ.>YH/GnN[?.kr=b\cHNO3:c/7L@n\\0aD),p0]*`'`*bPk*>n1hc>/9TL_Q+JKiV])W0Rlh8]RKAYPg,^&2m-G@7187np+74ko#)_S[Cd-L(/KUMc_&#>Z;T>_@ghY[Ynd9/kVc/<^P#;ec/!nOK6,=t2]m0>1%[<8QL'qWh_RKR?)A^Yk"(2*,YAjC8(%=4fqBC^Zjg-=Rpu#It1tRB'd0+f>DM>C\-*UnVAsbQO&73(q!`Q!j!ne"HA("Q_MU1B\>+i*-1rrRUmb`cY$01"/UB`KHBH18:Ii>b3=pJ%BMd]c-&f",c,9p'_t\%'"nIu9Q<7t^.[H+c17^<#Ur`ATi?Tom[_K_h%]i9']9O9&\7l[nnN'!BbkJ;C1UglBFSqYsNs:pifY6k9SKbZ;qgbZ;qgbZ;qg=h9SJ>CC\c3ZKkYd2+"1cP0tAAh.IDAh.IDAh.JohD&5_G4I[60jE$A,-T<,Auf`ZX4!siA#.]<3fp,CH,CP6DKlIfjU:&?o;Agu\cRm5g]oSgqe5=JO<*t?>!Vd\7Nf">WPoNYbD*FoO0AQnf.N[#flu-Eqff3\c>=NZp5N7;`[hri&h4[AKCAj=*I&T!i:!0%Kf%VRP=Imh^2d@:N#hL'9Ue'L2JoOHLC\:?L:&NtQE"-"!8K.8@//R9MiZG8G[$Y89IMFlGB5p3PtZb/,n",0qUJD)Tb+A6\H)[+m[m<6UBFoTY)!bpNiHa\R.I9GZ@O:uL.QLuBlQpECXG<*Le#W#+#6d>0O\5@SRNZZpbF(^cTPD=A@WNpO".bM=P/P+JSII%M=)F#"-9m%S6.ErV4]WG#8A3MuA?:2i!M(i^W$%2L75MEt4!Dj@':h%1H*K178Dc"kOmK6!?n8X\\J1ju;[0f+4?(=`Qe/P"pdG)RH(6Xhhs>5pK_Q*#r%85qDq+N!?\=Za=!/a$#Bt&N_s:qHf)7:Ogh7P*C8S#mWckFP[UQ[S[UQ[S[UQZ`\pH'9eX%_s6ac:'HK,\3fB7.rUjb,+'seX]'seX]'seX]eW?q^:j6YdX$Ohp:bB;bhY9M;om*&_WSbp9ong$*XO8O/$G)q=nKiE"ol+lr2HWtm"DUt:_U!FD^rjeGY[R3FQof@-*8\:@2QU'l4#a8Hq%J0p9-*dIocS&Ea7&@XRU?'rjn$Z'iTqHOq#2kD?901RSi?joB9p?G1<[&anaPc1FkF!C"oNcF.P./m#(*dqJF+:V_h,1.E;/&i=LY"+T%q'encm9p"g^JfX6'"-+E*,2[9DW'L?^)V^uoB]XH?%ceN$fJnD_r,9W$.9K7nUAp(gMCje]RY]Idp^Fgj`'hN=fA<'$I6!b?\;mpUL"(bDh@E[AinET6?=C/]AcCI'+qfciX3UR,qD1T5RVS]n(#N9:^3S:WT-!WQ\'M]b+%kGd=5[rVN8!9WWT/$#E^@"l%V2K"]ns_O>&t+M2^kkQ*Y_E&X"VScC8k(;Z-HgL,0C!q=8-D%BFk9CTF?V$K'G5u)KHj1=mYRcWY8@9"&,9Ib_W9BX4+l^'m5f\Lf4#@ij2QbDlK?:&89S9hj=F)e7!,W00\]g_##ir/6/1=*bIqB4+KJM!-3]g^3\90Y't[M)AG[*k9i10aYEIuirV?1,+JtGeN?&2H-D4%GmXYRq5`GEM0Q.O](g9`'N!mT*?p^Gr[oh[QKfJ6H#L@aS(JB-IOM)R,h^ZtI!1k@b",.U::dI;ORpg<),H+<##JNZgfIB$a>[rq&Y6#a4i6..83)o1L4".uV84KYeca=bXl:i8dU;@eVDGJ!qOAp8"m\/b2"DLD\F,h:#si+R?=p(ls1qgc=djI*)"(X>?=nH=rK1S\In\/hcGV;W6SAalROkh_V,OD_;#g+\B6a(CT1L$?PiiSLsm&9KtKgY<(?Pi'jso(m%q-tsaqfM:FMJCG%OAE+s^V3*_uM(+=!QgI^^G7pgFg>t?D90aOcH[>,jfU%aMM&(0^Vm-1NP/ag5G@>gf"IM>hC5UTRQf)^u!6s$qK+&#R6s8\i[3Wa5C']ssd5!oV)$'JH](J)Y*&#+br"?C!f,t09Dl^jPoTfR,N!F/Ta7!7r&j,_O2::"J_%im?j8_I^0icO>;9>:>;9>:>;9=o&Ue-4OaPb"E42^fgB*?m:pOCOZcT@RT_7WMSpgoe)n4X.AUH4]m^I>_kgMa1o?fPM:7RXbHADD-+)1:!m/;Nn)Cc^3\>44G;Xpk!_;9,E4*=]q+.C8g%Se+Vt&:nOG8pZqUJEJ(G`=ueCFI(A5hmMD#Yp"ekgO([P3oa75)\EnO?Pp*pI1&I#kn9XtOg[du]t:?9SD7l[\-/B2JWf0a'Wk+RbRidj9%,>W7K&$fk>$Q\E.,Pqm+>VZuWKZms=d`d4*Y91')3)O8$Tr>DjLq-;0e@/m0l^$+Q>?RaYmNk$^)]5Y>#[!J%\easdHirl(Q>Ym8#1b`,g>;9>:>;9>:>;9=odAOfs`G@EeR&uaXR&uaXR&uaXR&u2.9>GA_Cc1"8X`>dnbp\t]D.+Go8mB7)VBZ4@dg$K&$_=Pq,oV:lh#lKl+EW>qBTF"WQD!su(=o-AC4L[G0`qtCrQl/(TIgk.M!fuj8.aL$TquE5#GFNL%/VV"934(Q1#:7qeh'`43[+d8LJ9&tD%TEffMH\RMM30f"@0]J5"/M7Zn=LqI@eC$nXU\R[]ff"&^t2N9M)>Jm>)Y,((+6^(--uO:]T50LV=;)(XajkXqfM1@K\rna?90N&i-e`%edn9g'h8l2EoADMmcG#HE(qa1`N'DNd/kN[6$*!#`6ff7^,VOV8[6iT5O&E:i]Tk!u?%A7L^G]6oBdSr/aMA&eX4^FnLsgL0\7b0d'b6#Wfj-,fVjl+NS09#d#Uf8SmA$a>H1mkqik5;E@12hX2(l=si"E0%UPMGRuSQ(=GIf$23>8N#X/Y('(ZUZPBe]ZPBe]ZP=)"VoEPlCc,IbXdH5XXdH5XXdH5XXbc16_JI2-2-cNNE[=qT9qMVu4U<4U%q3@b"PjVI]atYM5R(Lkh$]e4!43UbM!5ZmmY2,ZA/5%efd[^.UkfjO#\dTN)a;5E4CicS2#NI1AsLGH\f9?3017Z>6o7,A5n?B#IaE^!ckc>-1o@8J+<%X52GCGJ?^8\T,.\k,MC^&PUsI6.p8&Bg5th..on^TYCl^ujR"5rtciXk9#kC,eh%,t#%3aO<7aMMu7:m$D4p^HT8B_b)`u]QB!tr^C\e".U_u>dtH,2\*CqP0gRdMP-BEl/Cq-5&3R[?ScGA.35dko:A&#B4nN$-dI925`h%Z3*&+;1T;XUPqBe5\h'$lqZ64\/s@)+enK?Tng="aDm9Z=%>ZN[D\'KYk(67[)haY%(JPl+EDt@ho')r+:l+1"p=/BDbYQfOf/N%;$0.I&Eou-bYU*K6M2,CVoW8fP4VW:4JF't6,`C^3,".`IZU7l@CRnd`tEJ[38P-.AELga3njm#2q`,rr=Uk:&Q8qjmfr$3U%gmULJ2-b@^]aS@^]aS@^]aS,,4&3CrL4UeaCIo`GEM0`GEM0`GEM077;n[1[(e3Uf/(,\CTK]7Q`8(d<_I+2B/;Ub\"i:hf"KjaYK,B35/8T9%B6!e6^*f33CUk..t)T%46d_mI-4'6bAVS',ri-'Xp/:Cj-]s>.qF(,k67-FY1gqRnNC0">e&bLV9GCa9T3>RA3Kh,=$TC:Zl@))kJck!^NR%fV6Hkc'q+Q&1Kl!c:O%bZf%/@MD`+SBZ4]?f*8F3XQg/OJ#kk@DQm7R<5#Y$qdoa(CW@-@X\H!Oer)YcEi#fVE]&&6EodKm.9Uhs&t*3d?l^X!"&i9Ws1$huuI?mKPTDlo-o(72GPEL6Wea@Sdl/%Jp'n#W0r(1$ZcgmdAKUtUa)^uMAK1d@)Y]Q+VN5HDp<.pt2d)%&W5U]Ws")!F7!N0"R%7P!['-^^>A@c7H9-!bNrp.qU;D.qU;D.qU:U)FDYKbZ7lbCrL50CrL50CrL50Cdgaa%;%,&X"7_gb+WWO3Yh#-?c`"Fe%?5k6=C0"%8,'h.Gej<4'!d+\$55b6eISI'3SZ34#Ud'(X9)AIhK.C*h>?/!&IXR9*HfPRh0`h]l3Z2lc4GXY_UVRuq=CjU5Yep3CsG"M[6M0',$]5"epk?^L]i@mA-09soIH-7cL5O#1caHeoF`k>#:+%rXbR'%oLr3GGEAIV/j&ZX(1j!G#.YrrZ`IfMTG#`GEM0`GEM0`GEM0779M"fo"H4H\SPfXdH5XXdH6eJ)+M@@^c-:V3nB@BF$:r0jA58:_g=e:h6WKOE>69^N!8kk"*DjT6f^7fnu&6kfaL'>db>=b3$R/F/M=Ug^jnu5i/"^D^A,AXhnKU*3G2S]sIoS/?FLbPr18#U^W\q?!nL88BOuaK2.94?MBVbXERhd7Mr#K=UJqgSUtR6GJNhsCLM,"Ec?:tpu2)OfY-l!BSHoUdNj=W.W3aBJ0tlqJ@DommbPM_ITHn^3dVKM*dR7tr[='`rE2f=W6Pml4Jhi3s6cTsLKr9Z+69l;T).ffo=_Xstl-]SH7n(h>n'1dngoPdbSg_4sM];q0B)!LYs-UuAeZX/cmT4Lbo"EfGqe^u7YTIdN&AL`TH:q!\mB1`_Ss3t;cB49X?@1M>!"+J?QeK81Q^M8HfE(Z=/`#Oq`k#EUj..5,#?KW_IqYd_9PoL\RG"^EmoeqUI;aC4d0i%m\e>J^<]`H.9puD?7j[pAC`lh6;=^>.Asm#50\H&Iu#>*q#P##]7CYGkBntm+T#lY$F'j1"-Xg7Z&*J8/aA]i80I*d,5DL?)J2([dA^Z9s(YokUCcMb>WZ[[LFKd]mnW;+57MCD/R*eA@i@_Zhs_#!%*\4($W^nMS"#5((@qs,[3t_2]A'cR&uaXR&uaXR&uaXLhJ1k>;9>nZhlI]0j?A:0j?A:oo@^_fntUV&$m"WAK_"<\QgcJ*N%.$>u4_=#3Ka)KsLB<@F"/5nF^uMTXiSREZo0V%#C9:QsDTZG&CFf>nI`ZTdVHsZ3%c9Fp+%'RfbHZ/VN[pS)N)IY@6"F'sOXL)VSX4YeO^K'%!b]Qf./JZQRRcF[f*(Hi=-nLcp7c!:4W@Puk.BS5TVVr:iDhNunO(rp`M2qX=H:7K9Uips#Gi07Wd)jLQh'>lNfr\Z$(q^3p*=Nu`q@FnP7`eP#B:"*!YIF\m_Y[p/XR%f2fAbco'l/oORJ=Nf;u**]D(d1ea(gpf:Lg&F8$/HZZ\3J^$12E>;efH9-`6'EtdW-S3;?3=r\#+_]^G3X8nmM&"C%GKq#Ph_=\aK@Fq*AY^YV90Z++]5I_6,hn004;i9PrXm9ria?bnTq=*q#Y\*8PE-[s-@cRg)H2A@nfsVVRDqtIHXU_jfmiHlOm5H6c@f?#TYDP235"b`RUlrTO,6oBnqr+S?rXm:FVo):TIK5_0!>81gCG'SN+N6[89lo+5!j:ZE`Cn#Wc;-b%2M8k]9)+gBr.C?%qZMeq;cJ'+a?.!T*2oVkMd^5hX.=i/GC$pM\qVH_^aISm@!CS_`e/Wsdd+Faso#h^]dpOo;&IVqre'R7b'\N@U>\7[8AXMV3m?MV3m?MV3m?MMOG*Ah.Jo]YeR)CrL50CrL50CrL3Z6og(VMV0KJ0O&soC_bB(@"pMJoB7'>rS8!MmjBSRnBLtP"Z>VTJ/7cC=LZAmh!]-7-P,Ztr9\BGRgHYIKP$Pm^AE?nHo#4er*r-OjZhd5eViA*GfCu&5Z.0(8k*JB,.&6H&L^>=8^gf*1X"]`HC)+P[`bcL*=Kkj!i'gUG#2?f/cUp[;L(76-;W/;0:hf"fgO2o)PI8nHO..'KS$[ec>qaf9Ko*d4TX)-9]RCrecC=po8-D\[4TjUAn,k3nYCm&e(PAL5"ZL>U#!$Xt7ZW*T"_1tgd0(:JDEN#_G/Js)+2P;H00tUn=kRUn;SEjrY$VG)pu%hjLZ-Ol]-,p3AGs567)LVHTB\]W#uF3U.eR59PK+/ar:;E>G:S(i9M&K=@NC'SG)qJje!r$S=LC`k1/+9.;ZQ4?b;AMh)=mlIg9EtM?JFW0+lQ:gEVQ,]o\dN!++NQXs?T#:/?bcRU:0tF?2f@H(=3mLkA=85c!."7K(A*3+A:ML0ir,U+#$5]tJd^0P^fQ$b4&f1_"-9IDkloOT>N.*/8*Jukfft@_(0PuS7"\Uoo'5m@ph=gN4KX)BV=U!3H?f02gqIqL*o4F3GAg^eH/@i?V/q`C2l92FD'9AL8M5:+X5r$M^qh,l?n(ja]K3e.[/2pmkGYTBS,`@-L]gs*Irqdtgu.k4_Ya)`d,*.S*U7M.D5n"3LUXs]osiSU>s"aiGS9B"]bg+l\Hbp%quZDN1fRI-K<&'l^lg"/nFM9&+E&T6ZD8HU/6E0.XoZ#d$b('3L"WfpK#HCIo,#0s(ZV,cp%\&%Yhur'D\)j:Nefl;^O:>78JC3`16o<)GJiYYLI(Mm+<5%uDp'Zm2)lO]5eH99BKTVoM"pqQDt?/;FoNScSGb9:&gV$=5>2nU)ORXoXdH5XXdH5XXdH5HBK.\M0jE`[Ah.IDAh.IDAh.IDAh,(J6-NBRo]?3oa9n7jRp#Q7I]D%>nsEX@2?d0RR=#=;T=6k#,FmBShq,u7q)^NC!g?To!`X^k$srCaA-2#GJKA]h+Sr"XDRoOlf5lL3ZF)In@KXUg%Z7Dc-O2]oGi7=3X>sqcs[,%WWaLbN'N0G$Cub"d-Z$DbSPr:Tn+8*6"36X6pj8%J'5j'Xi.W*B-A0Li6$sZn=]b@4DB$@[pR_(P8>n2nBo/#g!p,lhS"UR^V9_rT4sA_"K.2(.CnJgL_&6dgq%qPm"aX!,\f1M;r&C%s9K>B)tRD5l_2f)3m,p_46,2&F>(M5A]`fL$ONm4Oh>/Oq.;:]XoRa%ZL'JnGM\1%sf[QUoYmDVO%W/)p@PgAMF$nBIVNTdd%nt),>3/m:l0:$b4E"g26CFaZmKsq;?NtjY0d(gH[22WTe]XlL>-6oK[<%H%dFf6)OaZaFBAge[o5OBn)7X_O'I8+E.?MN45!"nE^3F*9-#"E9WMGM<#?NN]UnR-,AtO+Gp*.T;R2h.'(\Y-NQCHLOK='9r9;`qIj3Lpbf]HMiScS`BY?sF#Eo8RA3t@T1S:K=O-fOoeZQM'I'\U=g=3cB`7@K4&O6eGFSb?7SH-//;CJbW>2(D+,[sbQrqt]#heck."Pm`nY(ZF)u95s"@=`?:6K!WMk_3q(1Ps*8r\9%=*]SVB9_pfg'HbbRu6KmIim2nau>nH_=_8dX_Hg%.=#_j=\DFA#.;Y#qfZoku#!%sm-!U$VWLJ(]D_St6hE9c^[\6OAQ3=iO*(G(p!K3V0jeLRU_h]=ZAVp)94=$Qt.GA^[iT24`$71Z94k7inN&%^1$`CLWohOs12;R"I%XJ"l1=$5e.d'6:?ZarKdIuOP\YtU2H#tM-"0?,*i,%`1Eu>f:cD0K7<"i)AZ&&=?Ne[LkZ!IePPgsH?n@>5"`Eaq@p,rH@>4JUd+\K6SoL-UfGK.eaZO-:hH$4KmbD^`'6Vm3e,RU^V>$AIEHkGD48Fjl#hFSQ+MF.k([QA-d=.-m"\L4_?d`H4fX.QD8G+lX53-4(2k0i*kdNQ'RMnh4pl)pVRml&1_1G#$Y6IU2LV5egsBY8jPS3RgmUGkXoFNrpKMOL+k$[nl%dTmc[X)4.l[":+K+[8r[/Bq!4*EH'seX]'seX]'seWP)EBn)A@>sU@^[2h:mqV,l$i&MC`4?YdbMlG_?AmS""L$!YEOLJ#_WPZ5A:'c1e@!K24Gp5ilYM-&b6;3b1Uu96(2k5'4:R/M>+KP%g5K#%Vl^!/"([;0d0MKRbu47rA;[_D!s+_j4K`:0;-P@f5]2K'g;Idst$]*Xq>FV&XPK#_(+J_!k`[Ca']crsYhkGj<1X23dhj`=QeDMq`p>l4FHi:f'\N0\%:lu$M;Deg"W[c6mZbZ;qgbZ;qgbZ;qg7%)-LE@/",ZPBgsOCP_.[UQ[S[UQ[S[UQZh)Ep/Cc=F@m[UQZ`Em.QOR&ssqT)ra+gpFPGTkr%?AOFB_Z!j84$[Z$1HB>$@[S>#+VG#C*ZLRJo?&fp!!?S+hD1#YCT%>Qdh6lEgb7d`:$.o[S$e&Cqe10hV%.7;/Pee1K\;79.]5"*p%s$8)'pEYb5MJ*9\stc6psF27%Y4eFHuf3s!\jF#+2N[Xb_dhLkt8=0O$89&J5Te&^fMk>P0pZPtm#ifdbbV<&>1!&J5V'CA)HicWa*l/-'94Ah,&L+sJ4'O4fEDMMR(ELkl7rfkS=k@(/WUAh,&L+sNa7(8&'F[NZn>+sNbtA%#jT+sJ3T,,2n`[MnZ,#Gc;1B8T9%slS)1*pK++KU7?<5![T((]^39=F^(KP^Lm<7\PYGL(l:M5^_+lPl8f+g@Tg=l4$g0E'Q38\5XdM!fnk`ANGg?:\gsJ233=8sI2Ai[:9ndPKER,1h.3*_^#"pa#E-!4'6,l)r%74/;aX-hlDlS$2brg/]pr\(]%eJ8[]Yh5PGE+PV[rqaoHoQ+`0CXYE'tSk&dLb\W_S80f#-QQj\>A<=hpPE?Td'slFucAR-'Q1aP5c^DXd2%5kS-r2O$AIGgZZW2K/>NHN1.qU;DX%^fsIP$iXmI/Ah_JD(A@Y8a:AegK_%d86i>a9N=%'"(<[,n)*c]0Eg&o;>4IZ<-RH@CRnd`FlPEHUNX,e'_ZL_),@>)"LkS!8(B#:BT?elU3Nd"-!#Cd3G^r+_it[VRKYa01:EsaS2K5`K4Hm'"=&!Fh!5*kbuZp0OgKt('m5s^^%I0!n6d,HT29cbn"iY$H6q_TWTPSpUsA"@F7e.aCX&S!tYhj+ZG'KVr@ndG=!k?L:4$,d5P#d-hV?BRP<+62TT2`6k]I=IL*$].BL-u>TeA*(7J;rdloB1X8AL7'(J9DP2rCVs*t@Y6,kLfDNQ):0]E/_$pf6e"l02D6p_LT`L7pLC!a#j6AO]RLun_:%mo9c)_E1"FI?9LRV)KYKhqcDAe_TFCc*?Z[UQ[S[UQ[S[MiJr;A\m;.CcTa:Q7Ma?]hj[6+JBnuH1#e]DX.IE!Mj_[L)hK25B>B`T505oPrn(L/DhR'],qmQ44A9[(GgY:X\>KkMJHPD(@*DoIV#J=c#$f12)-/+]],A8m_qphZfFT0!rbp!C:(lq;qhR7W25'H1OhK/ppX"srugUlEm7hFCc^!PH_"`M!nQ8Sj%\$s2WD%ZOSD21%j;9SHQ^EJs-O>_r@\h*A%=c.Fj;0]:?q&[q[A:=1Wf6"83BkHe=Gn[qh5YQt-*>.N7GW#8pUXLD7j84!%hK4JWB-=hAh&1sU[iU?K#;'3cZuoS6hWU9NOJON5l)o.LQ;;N4Xk)_$$A#R*B6slrmr!oi*cDp#')-(\iQLj.gASYV9dU61D/j91)9*pm-]g8Cq#7F?/:glG9FBo`-&f=J@Af=8@k]ePX0K$61qf4PO;c1k;IN1W&*%So8U5)O*(-am-]3a9:S)$o\QbEE!i"'mS+ci-G51Ld*W_cc?Co)kg\O-oKBkQm"!I;(e!6Ed,(m-3hmgaM`:#X98=\j..qU;D.qYiU^hbknbZ9@03bBmS.qU;D.qYj@`GEM0`GCeGAh.JoTuLn+5g38]BKB`UAh.IDAh.JoiPfWPCc*KkC3!H+BNbu$oDjPsDMX$p@$h^Z1]Z@#"qf>D#ohe0qS=k;+FguUVKni$(K5fMD42cJq7nicTSESVKRscc2/(Sm=ahZAi_TFL+@ep\]jN7FQ4I.30.7m/+khiFJko6njD8#\=Qj0dG$b\qRP'\W)T%pId\!;'+!U634[Ol.N0"ith#Po;"aLu4<4Br"1ZPh783H:)V;36CiALceP5a\NM`fZ9jA4Hm3e-%m]oU(M^4Y]]$n8%c[-5)q6$pZcp3<5nkQg?p+X7+%c-ib?_#ENkTAkRZl4Om@\f_tL^sq*j7N32!"qfZ!M3CL/@g>TTleE/SP>.<*Q!;q7%\.59+S!^5#NaHd1H"ZW=tT-d&279QO89u,qEZoi@!k(P5*EU@7Mp6N;g4Wdbp*1RKPjsM"56'B#R.maO*DrCkCN<)>^t#1I;G*liO0ptUBK&/FE#e".Ij/3@#D1kK5"Gn]C2?s)2cK;DPl:n*?cG6Zn-EKH+[5-4eN%lPthU=]V'&+W,=pl^^k9J016E`;9=k!414k%l^iFJ2(7_>;9>:>;9?1Z6RG,`G@DfCfO_@!cm;@!j0faBS'S$m0(J7"7X-.&(,g;T`4F%M"mLe*l"ECOB7%Wi*Y%]#?QqbF9!2,V0Q:BrH+.?mISCKoRIl)\jZuc6\G1Cet67T:](a=(MSW&l%;f[/RVdaROr?:)IN\2OQaBd?'ZqFnKJtD6!_A9Gk12I4FHu4[#bTKl%8W-"/;Y7,"<-fTFYR*eC5TqMGru/9t+OK1kHT0copGVe8AI$9g>uggklp)`57W.^2@__SS]N@dt[Qk@c%Q]dMC4rAkk%M&.Spf(,@&mpOgEXOK!lcfaW.3)R/u&6YHmMJJO8KidJ+&,j#>+]pgnWn^.$o]:EG?/VX-7UcCJ&\u:!P-B6^%9hGnQ3q8tR%:W0:A:1?AWQ_RVM>X3]NI8'KL:ot.H_qe<2#AomPNI4fI:QrX,(G\mO-?$i"nmqBn$+g]]g!H%0A%LL//j/&.btM"GI.NsXX]#TLGsdSHL`P(4m3,tCY7Aqc"UbXLGD<4fm[@oO7Z6Oh#@%%B?=SL2YRKA/j'.\Et?-b?$@G1MLk1+J7P^VpLC,8`B"q.6CP7&IS39i6Mt<@6T=q9"[*D,H6F!lK4.s=iHhGNFW;0'>6+8TbQ:Ra1W\n8@p/jn63]u$8c09t6phkRpR![9o4jOoEpiIZmMJXG\V``G+Wo^OeXjJ_2)dq]Na[t*8KjHj'g$qO8M!ZnRQXR)K0c)""a#6ViW$MtX:3L>(q9(OI^]@5m!4n3e\i,lT(^8V9Bei1C^Q]Ij6`[*<]%n',F8:6UoJ_V8$fcBrMR-)PWVSUa:C@bWgLL6;nFE]7J$(E&i>PSl==mLT<-Z?lmZ].e&Zjr\?nj1Ll>1BL_46QqF=\NUHLH;UCgJ48mit%bK?"XsE-o/.P7,fH&*qjF3Ci4cuqtIp\1T)DSEIh@[m-e=XA?0][JD#h5MV3m?MV3m?.a>[`>;9>:>;9>:>;9>:>;9>:>;9>:>;9>:>;9>:>;9>:>;9?Yfc=\*oU)bJXTk&mAke#9mX\Ke!F>]VE-UAUBUCh%r"UO)0_4,*q^5%'[g?(g=9.)W/q]hUJYU8GK3ZsoGA=\=3gsBmMdINW>gW32g]DMMPbj%],U8Y?BU]er**EKrkNBYWk>a5)9F4s<3Xro]'ATa&W305*(XJWTg#hBr9Am\?'2\Go.?lKW#Bt)l"UPJ.S%*mVic[8t]!\SIgZDd\^%Q)PW,k9R*.fJ0kJDgrA^L5K"W.7nFN20?8P8Tb6)M_8FMpkW7n%-;$+'2b*ml)M#sbEV"gd_F>X*N7*nO^&?X4\>!=rGKHk$57=P8EUN&ZYC#gkHb:ri6e14o%d5PijI/fj]DO'\[_`_cYKI^Zl#h*07qrfDLbusgVO09`E[jc>@+iS&s:>`_!kKY?5J8]50sBAMsiZ2]2/[fem7dHnJp&f4p3+kLIbBs]mD\i4Gn:MjuqA.BcU^sdd=f1a^KL7pBFT^08.q1Sq-c0"8g/*k"R%jFJ;>Q*NLB4ncg/^E-uM((G9);V"^=b?\4lV#s>m3M?"24fgWk#VD&B7#_BVL-JK(`_DE+3pB9$!T?+!!ug!KRPT#>E'R2bZ;qgbZ;qgbZ;qgbZ;qgbZ=a.HZ/Uf5X_96=MRK7]BIheo[\Bm;/)#lhU9/)Zg5<>-Bl/"M9972Q``mT,9Y*M"TDW"rhKPG_hY1Z.m'].$n^BR2HV_8$Fht,a]C8I>_5HE[._jj6Q2GO?!PO$E?Bh"0R8o':."b%5-+a>L#!aEY+(HP:G]pLSAfo0W8Vg;i<\VUsnWh=&LpI'^KWNn\+Bb5^8p-fg\Z8#1(iBA[d>oNT%EIIQZoEp`.QjV4K0'(,SWgTSkbWMZl[d^SD\K0);_rV8'kml_3&9JS'/g7%-s/RQTJa,e;aX$;`=If/.NDVr#s2E+T.YI!]nhg>6Cq;'Y,AZ"s,FMVcW-%#5Tfl65<4T*H9\`gHajCbNZbEHS!amR"dh$*a]l,r^7D#/O=oGQb[D&:n)T6A@Q5$BH%CX1'U2m/F[;=k/tIHInalg:$MD>b@*>I]:,FLuAV*g!S,5:^YVdNW=PhB6``rMV:)H:7I=Zh!ufT?EL2$g"8YX5uLNmZKa:ldi/%Q"Q+MYOf1S)s(_)IO)COq76.^kPX5Hk6Lh7^YC)q+5&=GNs6QSI4BZ[iS!tnra*>4b4F%Gl`!j]oH4k&gYXMC'1l?]fH_D>g>us_5ER"ZElT30b1`;jntnYM614Yg]6&C;hR$&SY/"9#PLeoss./6(q2\1@CqfoDg>Zn4:E/2,q)n:S]70NYDY[bToF>eXWL%JHF`RFnT?-'5%`nmX^*kMWSrh')RnTY?A5dQ/gpd:gqkHl7o)#W"aTFcpP)hgg=+7UC@p*/E+fiq\P!8jBD=ZA#B`DuG_7T`1hCX0dE%[]>9FT)#e>O?.*LGSlkN.>S*g\fKEiVkZgZ88[k/kcp-fgRH5*nH%2m-L>r?_#W_qu0cRJZpXC"IRW5:?9"p+-p2,Vr^/n.5u[`7M[WBEnf_No$G*6Ep'nnjQ;HfjmBP6+qO/B8U@Nm2QiBb]sU,&dp99Kq^Kj&>NPkQ?B^pS+3;GqKhN$Nal=*FZG!;3I_**a-9I[WHZ-VM=0MNmqF(2FbDl)YY;T%7)6#T<>b3oq;#8Tslg?j2s']uQ5;*Q8gElfVk$J@CL&Ie)CSl#OHlDk`ZK^u2Z9R(e*RgPWs!A//'UXntkN@QrEHi%]miWRo>pB1]N+lA`0unt@]ujLd,ih`B.2monHgn,9UlmPpDn\TFV5bpHskmsltDYYFhN:<6XXqn$Z?T9gpoZa)HXQ^MYbp17,WQY_l+NZO8epAQ>LZ[(6PcmV+00:,CU[IS?TeL>2_g5<>5X_96=MRK7]BIheo[\Bm;/)#lhU9/)Zg5<>5X_96=MRK7]BIheo[[OI<21OHrEj.&EF3/N7W`?L0/e$o-e78`OcD<)2t`JaA,cLo9h4Z78%tHCcZc"H2uiPO\`T)OjHgh:8cO7q46pe[jLe"Dg^!#`:$Y$--]T70hEVSnF6ED8\LT?0&%ju8:T?eE>&34imk9c8:@47WNr1AOC?35.U6k]_.O^H2jl_q:Bo(jQ`;dda'#mZ=T64l/nJro&WO*@ui_t:E2GA>?gCSdne5PY:k,l5!Enf>d:q8me^^r4FD+O>eTDIq:mc%b(&2pVt=23^%n[EDf(_[++?Imr-XKOlX(%\B<+7_INGoO.[*TLY%3mCjKc(cVFDUgF[fE]eB<"#f>t*_X'E.5;u+SZccZRUba*>M3CeO&#c.pCqp$.$kP&?,qRT;P&:F'=8*.W!c&p>rImUmGo(-n>qDIj*(S?uY5$K<`c5`1CY?NScHJob;esd'.r28]!n%RI%(VK)nTsU2?Ou%Am3V#O\]Fl&_,RjIVGdT&^O&A?)]=p_Z#2RKiEZ267rFVED0>EP49$XUDKN,BB^-$[E_i3LS6BNc>ETNK.fWalh%I"ZG!e7Ahtm(qtVE)5MMNBQ)F>WOWQ]8]3Opf9leYZgZ2Sbh(QB=c*G)G/,cY[`t%O&cDCF+R3eJps.io5EeX.o]8i4/Hq,Lr:%H>1gLVk"OL\?"m-SVSqmO6lCJMM[RI65\aT8s8E0EuXqIO<6?9\2'KCXf$\&lD@HF(9I++KV@l]uqfY'b'R6dfW0aeOWeIr8L)rl5S2b.Qd.>GZhOHnXHN/cWid-bF3B]@,1'N-as[f49NDMS\&b-;:WYbH%`lP7pW6*!]::g(Y$CJ]bAu.RbG9V3?!E=6rr^OScTWYu(V_?r03%oUdZ9\IOWI`l;"\*dr)rcjkS.mag"n"OHF)'"b1G')..:;a8hN-\/t`%j/cXGW=o!O_/ohV9Yr/)#lhU9/)Zg5<>5X_96=MRK7]BIheo[\Bm;/)#lhU9/)Zg5<>5X_96=MRG"R[X)QB;f_GuT5Bc*D7+EOS[Zc_GMO_RIp=S?\a:`SERs%.:s0aPQbWGi55;pGo$#JpntGsLQS1Q"N-tE:#NYH]`U^u\kKEZs4>-*;pE$kbh-0X(]LV)LYIl:Hc2FR4'?0S-`"a:db"[677\3m;5H@p1f:;b8DV;d2k.81#a&_t"kDio`4M&[:@lo%ghrW#BAMVrq/H)s"pt+:JgXaM8j&>Nqf7/t.LMrOV[lc)91DOs(r=@%e.O.#YRcQaUQm9cj/X-WLH;Qm&n3?#Y41<>$b#?`@&cVUaIF9&O:JRD$[RV[6AS^Z^3Hrb5jSmuije3n`b%,_.9I8Dg8#Y86[p,XMPjREB*_G>\EO5,I7m?Lb>^>M'GK>40IZed7gaBl5C5\TDpL3mjNpSUro*r^cH=09%RujUC7WrD@jhB2<6=4N7-2+RZO.[=>0"*C?46bHfXbZ9BBZE4X(tokWub&m2G66Bk_:EhII_ikFR#i55OJJq=N-3b*QIa;;Q`q?1O7^?BTc.JY7RrU47,]fAsRE_Sii*`1I2tnKkk_!s;l/RPp^I1j\reU2jd!&j",_$\IX%l:u!1`f)6dk^XIbODS?ZQJ`IW&q9Q.]EWI/'?*jm;l9OE]#s7,DqHrUQ(rccK^1RsaA_H."Y+YJ0Y1oMs*7?KY=ZF5K./_c$E91p.IPpO)t.-fpQ`k/r_X-L$;jpZBo0-f$4Aqmp<2jW7QIFJJ1^o1)X0?]:KOZ_*GoZAp\`mr(S?%XqMK^uD7@TO/'=\I3Si4,)'8RFbp?r8Vd3n5Q1DQ3n&qj!s!<`UV<$cE'lrUNa(9TI0/NEWS24fDltEMbGMdOuh!ro2nq$],OoE6E$XS9W\r#ErrkP#i?g@E"9(.c$jU7pJM@\50g$@1k9+knA71Tb[?R?FQ;5'\L(0AkTo;f8XPP^=A(U^(Po1Pt%d#K=U?r4VT:lB`IA8cP94s+PjkY@b`H`^S3]O8cm,g5<>5X_96=MRK7]BIheo[\Bm;/)#lhU9/)Zg5<>5X_96=MRK7]BIheo[\Bm9>$F-OmkL6QG0+:'?1t*uAG=d;10]$+p1C>dfZ>@Y+P>T%.f6MS3L&uu\b:2,GeQ]1ZUri::J:`BjlP%"e[_8TR;(D!PBEM?I)?_fY!4+W1Kg.1mYrdQhd4ZV__i@i]fmk$X56`mi8bnUpb$ndj(>W[h)\@Sc;C9"ZV>'nurk+b+7(@bl%=LC`Vq^:,G8A9::TNhW\&mK#L[7dEaam]`oYYhK19IiHdjY*Fq/it8A*(F>_3GZ:4Iu4/Fmh%X(?gU&EeQEcO#E=,[O\BA;NU^.We:kBf"j44PrflDeAnFbT1\Dii4DN%>V+9Ne1nL$3f`p-!CR+-XHS?$L*j=shbWn?@j522uibP),:n6`_Q6,PT\bu?mbJcn[0V]/;:K.$hb=!O#]/oO=Ri.BGY!/7IoZGJ)N:aK:5F3Sk,U/3=5GkWf%]UU(B68dm,$1c#2XlIjZRdT_jsE@A8Y)Dh:!WV=FX4$qS#PPUrHq)20+>k:79G8a].52pk!?GIBp,i?Zu,Qb!\-8Hh*:tI*MVI0@W2.hOOA+D=R`)Zk[FH>L?KY'l?BDd8mUhD+.[VL?KY'l?BDd8mX)N01QCXffC?SpGF[b\#S*0;mW[C:IY8PE`WIohL8AF?#ot;;W]d+17N$FPP=[R5ukHpQZO?Dd8iFi\dQ8+(X/^:A2Y=iBmPqJEZgX3q82AGA!bu\n^H.:laF?7LWgN_*%s:jfA&;a(Yok8aa@0V*68T19I_?04jC8oh^Q7V#Q(gTa!-l."Zr0QA[\Z8'$p6HA3SZrHVu;\:NX^MT-#E[ZTc;*b!gdp4jmW(9XN!WHrBgTf@?M\mZAOK>jj,sV9;[9WV1Z&=!mD*_oeV;8]k;4=o(&5>O"Im=*f$cglmcB-em]m48>pGX)p;nAibS3dc[W3[C>YuOm0r7iHp!hSlA%&%56G`kYQSrI@/eXfrc[dZL_fjC=4+3EcT,cm,q;5T)`5LR)9nb%ar8B:bLbdU^"Y01&\ZO,;dfSp^69m/t&P0t/%9]?!EJj&@!fq!#D4c*4mQV#8i<)WGOF41*^e_cRVh1\4>_>%'LJ#t>E'eT>#?*L6rCO8AIF.Z7:>W*o,UX35t`XDL9>%G4kq\MpQ,I<*P]qC!:Rr"Agh'ncVC6t:_i5(gR$1+hHXTgYXK@%-/)okfd;-RjDSp`]@)BHpk"]RbHZ5X_96=MRK7]BIheo[\Bm;/)"aX86aJB=5R'MSpF(B'-4BZZ:_Q*,ST<49YeJ5B`ig?gN3?oL/.V1ta`?j*eS@t)LPLW&ZelKqJ_Roin`kq?aCoB?GlY@a2C+CKD,3s#>aQE>OZD$u&0\Vq;eYf5;ZX7FHYE0P@JkNT&:9c`oiA?CmM7dN6c:$6TPmrEfEl#?@.N.-WnYO;!T:rHjX-Y^:%C3.A=k5Dd7Y\CPC?f>HIA=gEXK@[mkF27e@.['&FfhaECQR(hp$tdV[B-C1Q_(mnTdd9%ZF[J1ei#A.lFKGf=]7!PMC5R.Y*].K1R6Lr^8XPIl.*2$OYmTRVRBW.s1I&M>?OlP4]cJfj!@aWe4LfKmgXbAFa[fuXi\,j*ilaf>2LH)dlFehf5,qPK"g\glB0=!>Jl<`N66=l31!fh`tX9iKk^fhrpF<*pNEP5\WB2cO.YVhr/$pM+;YCT*E@KuI?%V7oR12V(F&@:T6Rg!gkOo(o^Mf#XmpB4#3/dp-L'e46stP;0!V^]nEYS?k5%^'>$iM&.%BPK80?XBm.E2!-nUG/ZE^)YZDf=ZYp*:!0D`KJ`,>AGVsn>')QTZ`Nr9(9g^lKbW_RQ^H=HnT:@SLUb5)aZWOD@i[Pl]+2FUC/QF[FV>'E:k1n9\N%B!c9j%7qPGY0kN<62p0WiWD-P`9fcd[,m#\nX5c2S&ggC^a'Y6N3_&Eno6#RS3;Q.Ib.>HR*Gs>L?KY'l?BDd8mUhD+.[VL?KY'l?BDd8mUhD+.[V<\pn\*h+PSdht0/cc^E7ZY]$1Q#2@=RHU`;]cBg&h\hhUe][Z&A4rXtG'5^bFA&Z.[PuAt8)ok.-X*Z`='P9]9XM:M.AfZ`Rq+#%/H&q%k;jiOm4C*@d1Fu6'A:bID#Wfr\$jCXH](R@e4Hj;?V.^ca_XV*]UCuJV+%M6B1GV=ApMcJU>>-&E7(rcpPXk-a7cE,*0tLq/<^IuMgXpjEr#"49B>/DqT9msQZmH"W!+WkSDV,5LMN9;FN0E\"n,^@L\)q:Z)8o(9?D>]Kc5:L!/TDmk9m.]iQ9>h%Jl@dP!Z:dDVX4S*V0pr1!.HYKq"Q0>5l>lX'U!R9]5f\U8&Sa7>L>(X&0&?6m5OhIQN#gIidkpr:,*[K2p`fEZ8$F"@!W/AK%%!q?1!uG$[TIi9dMGMR;S+c@&EETFhq=g/M`8?[N>edITlO--\jof0mT-aaiJ0Zl\aM@QPkU$`UB.c]PY".%[d]N/j?7>?'cK0nLYnIg-+kghiu4=6t@dDo$fG+Kbap+p/)#lhU9/)Zg5<>5XfhQDdoNgjD,iXFL?KY'l>h'Uod6gg5<>M->iG"]Qpe9T9\;_ZV>Ti>%Ld49m1&NA6Ut?%rgt)BT`,9'M!X>kI[]f6XLoW>IaRS#Q)UBSpLhs3B'GMt)`ZAc$.ffeb4"%An=j3:b5+)mV6dG=IbC"5hm*Fa'?`mE&jq=s]HVUGZh6Q3KYO"gRa\7.KVXqJVe(lBm]n=b:`6Irb7.s"q1>UA#)#n.8NQG8=hT0g58q6Enk)/dYHhMQq8*5-pV*?YtmtpZeP8b-_?o$I]0=1;m24VNVpQ*r%U/`3>?@%c./i;H%H0#S//'2V:9]^Ss(Z?+P`m")ab3[HHq6RW'hI'+HgUBiPSujZp-2gC(bF+=5?"uP_`SXVh%?1=tMFmd!kP/QDZUm15/+8q:il]7mI[s."=,I3'lo]ok[\Bm;/)#lhU9/+0hf.[k/)#lh.NN4Rg5<>5X_96=MRK7]BWKcjZk[F8NRCk(.W%UY?&Q.;C>P^@SaM`7D-/$PRd+ER9k7m2KC!8bQ@;B2TDmSBgE\jrRUp8?K5>;(P)YH6ASY4eYkD/^8(YatD6/qM5&K*K\jkB,cleecdpK>YW?t^t>8ea@K(0(drg#H"T9V!&SpgrnQG\;]XcI?8%ppO$:Y^'A0Unk.G:1`b3hs$ltiYfIG&-b'oZJ`c_ol4:I`(up?OK+lB$GI`0FT8@]Au;#8(kq2QpqeUNCeJFg>q8+N#E0$Q'DjD4,q+/gqQq>AE&)Ao9Eh0K`psZBajCE7`Fmb[),A-Qis8/BG2gKJ9P#q84l-8^^Y9.W%UY?&Q.;qXJhdT2*MQ)`Pk#qDt$XDj0(.]gI8IeQ05-kBF5,[7Rr7DRoQr1==Yshd#ZVCoF=tNAVG+r^WUZ8uVnDJi=`XKToAn%)Qc`H\^Jc3+o:rteSq"hF-]Z8Ns0t`$ktcej?I_CJpWD1`b`\%4I7XA0j7i*dGMO]LY?W7NqWF@/KD3]XhTsdI')asr3G8%KEqVZrOP\sqG/*h=I/2-ZqrH%@G=\o,D<2Z2p)=D#'9CD's*WaR\ZC1@]^)^^A927_]^q/ua[bJW,]C9YO7L*#h/`4j]B,@uek'6.:)uDIn%ATWks+gu;sUW:\OkY$lco!u4ZhaW\,98*mC$6[9n3#7oVo6Fk;VrBs7Lm'\\=U#aX-#!]g'YUW^BPY*@;sS?Ec6JDmsg!.!%>D\m"2Ws&pPSCg8@Nc$`Fbq=F.)FD]E+Zk[G#j%*D%-mX#7.7$P(/%FeESc$N--B@>4FQ4I8kqQ#\c[SQi?aE@B>.7ZVg:L"lqQ4J3H1o/gq;pe3ag3@Tb,WoIZgkXsB(S?nP5Ou%KqqrI)maIHlK=Ba&+"o..S(=^(%Fl1pp+4L:*U+p]n!CcEp!`[@Hh0"ZlB98L5jna,#je$JfPC-c`D#)W40BA/\>NB(6hC]gOm;5S'VWt6f]4R=Up6hi>-S%EGccpr;*]p`94ud2`r8Smu9;]>Tjl-/&ah.#Q6S9rt,k&JE:ALePrg3P/a&Y3EmXrqjZ"iBUEo$"VjBlg$PMEq98,;f;O%BkKn7l5#*^gf?[?emG3dE$>HthWOhC(IS)o[4?V7N\UA*N1GMIABI.!E#jIcJM-eZpQ0E:_-!dX+62p7\/rep^R],f=lI.L_E/A:]-?[5NF/RRKW=jHC\n%U+%RiA.VN8EW.T70+QpTFL?\btK;rEgFlVRNb'IV&(!c-q/LJV]-2itTD43nkS7J,GB-+a8CI9r9sU,],tSd8kLsZk[FH>>=uJ4!GkDQa@KE79e_.Pd[/Vq'9E-[s7g*p[[[:H5?bWd^@p"HErG9!jM@I3ani$D=8!%tMfk;_s/eIhr5u9sHY$PJ,CRo,g8[8`6Cp2W<-mKQG<hqeZZ4e>l"@4B3NuS2o]#ad^F;+Ds%L0'icF[k0/q%-n%L*7/QjLZJ*RR.iEAbFs!2ggn?%*6q.Jb-YIl:XmeT4ql!C!KSsqArf@%V[8.VEbk'/SE$g5YThg("TBN^`S>POe3N;0'YpXU;3iUb?aY?dl`W@rS$^\i\2j40LWmdIoQpWg?SqXX=5b:cCnoN]-0A5Dg>F7\Me0/gs@99WWM_R%\BW/m8tOnFuPjEK?:bGXOJQ%%eCXq7]O4M5m)oFpJ91C6)/^[-c43*jPE>7L5djM!cAaG/CUq;oW(Z6u!'nIP9T4?2M18R'SCZrK[j>L?KY'lAY\LfYg<79e/?86aJBZk[G3Lks#C>Q)QYp%/oYb"T*HDVMHoelA?)23k(MFi?r:=6cg29&EqLQ(!TZEnf_NdZJ\3a?d@Hb88S/VL0b$p\aN_XK=I1M(YIgRlAHQ7h3]1[VqG&`m8$W[!0"7\*F9%H0Vp;k,Zbt`8Lg(Y4<"H4K#-XBH"?[opHKak^gFQ2j]\V#&,F3I]:GL92'K:b$;5>B"H],0%h]P^f%piOmV^pYIDViU-g9]R\e?JeqRA]hGc/?dg>:3aTfB2S)m'h+6dEX:VN!JgMr'VZ+D)2)NDU5UWmn.N1\*ND&UGCBM-M-ISRI4gRhC]m9O%]$J`Xf4J/MA;s#a1a\17`*BnRI^MMTg7N?D??"FgfEK<0s,&.re"a?#B/bJ\?*ph68oqR04]XhO+"IPL=pe`?V.!WD;-uSX*1gRG[;SVkch1doNgjD,oTD9P3M^R)D*XkP*p(lo5FSce;!C$M6Y?S8IApB..2:kD7hfccrs7X(*]h/(9H2%.Hf_Ec\>SiLp\`(m)Z4\2&ZD4fnHKe?Z,6#[U?f]`WS`<66bMVm++X5q7^eE^bn-Wb`>r%a@>iM:NmuaslD1sp/Zk[FH>>>!u2Bj?jA8*RJ$LoUBX_96=C>+0F&J9"093Y]>[X.)8-Y5K4P.Q5=?LHR]9-3kBc^"._LjttN&[/M^B'"#U:%_Ml]qo&D2V#sYjuVb]k.#80@;FgXY@(RMUMOd]O<*`5d]^#7f?;?2I,u*T)R!c7Vm)qmnN,@[g`Y@?lD7jU1`S17j5n$,+89NYrM$&#^!b>6GDSLTii>r;5q2B?H0()/4"-.0hBrj#h_"f*HpgB@\;(RnFhq^Y4L"30U2@BIh$%Pd[V/l-lj]>l1.mJ`Sq^u7'po/^B1G4ZWS1D83j7UfTj`:1F7Im58A^]MJ+"iU*03]hhr,:mSA(Tn?0e[TJs#nRi`E="LrPM3pIEL6HHk.pmm*YdON'1B_jOn26a]?ir:\@Gmnnn!k5MT2mY$CVZ')h7n+8>3T'l?BDd8lU'IHKC.Q1XEE^'C=58p'cpHa8q/lr/=2BIheo[\Bm9nEdLsD+.[VX)mPg'Ri<`dtQ"!.aA?D+.Y0z5k33%ZkWQ@!!!!5%rFa>!<<*"!'p)$6+`Z81Z8d!!%O"1<"Jgg5<6+`>on'WHXT/?=,\S\.!4Z@^6+`Z8C1B;!-#WEX_93bJ/\gK$31(/(UV^MD6(]fHWu^+Y.IqC/Ih]2TBqho\j/dD]>0.d9;"<'KQ=a(!&K\4A]plfouiYe8((GF'l?BDd8g5I!!$(*D+.Y8g5<>5XT/>$!/c?9.]p."H?c-trI-Eh8\d4R6,7^5NejMd]I_Z8J&""kn]^OAT&%k?0!DpSoi8g%o49Z9Ol[+40@Xq9Gl8KKWqqpM3Muq-bH^349E`")DoKhK2qcZi0-!JgKW!K=pako_^sffDFpIq*?MQ5USnihkqp7F@kE!*q*uOJ7irQpScga3s2W/KDZ.KfD'DOGO.KBGKJ/Jl779e/?Zk[E]!!!!q4L>i?79e/?ZkWQ@!'p)$I^7YEPhuQ-E![e&`>E05TEWrNRp^TN;o04"0[I"7(+2uf5l5HS-c^QilUGu\gA!72kOS$<95-#(%ANglf1FP:PnZDmr2(_F5tGof>j0;h(ls[lHP1S?2ss*JDV$I'l?BDd8mUh!!!!an^(=D'l?BDd8g5I!!'u*>Er5nH(9eJ\+Bh."+HiPDf._MT>g1_n;nXIf_`5C^;h9$ljWe'nG_s6*fnS9.h4<&3c@H2^mX5n]Ycm7//kc295S#:7rc'E6s7gha`E\iqE*b7p'43Jd!$5J0#KXq]d!!$CR5[2W:Zk[FH>6+^(!#,r\79e/?Zk[E]!!!!q4LA+&[8hUePul1*q9B0!%W3/6cMIVIK(#uC<,DlWGefBlp5O/i^oc3"n/*7.P?Ja>`Sm;'^ZD;=p\"f=e*^FgDjPC`])p8(J$RhFS)\8TZJq_=)KdZD"&fX*3ZC$qE&W(BC_"Ag.!aEil/#<6j+H[bng8^E3O6;>:[C75F5Gg0pc1!!"e[g5<>5X_96=$31&+TQk-#g5<>5X_93b!!%Q/TrgqfXc1<)U]\=epHTeoL$/$omSAD9!T.BG"alO#BYEF4GRo]^9SeO)+>7].`/je__AhVYCbqDYZKScg_8uLQBb]YC-8,o#)TYjfS#=]a0Z2oBGG"Nu,14I;con'-C0gn'bY9]`8$4!165h/)#lhU92RP.f]PLJ>/a>BIheo[OS2WzMMAPhXg[f6Z,b?>".mO,Zjn1=Jb%X&+1Q_Ki+I[()>r"STn$Xk-0Erl+Xb[S(>P9YRRj^HuBk8DN.`utGrg`cD^3u%_^Ie,c4]hQ&C'/q(T/4HD`HOuQ@I3MYr[iT%KHQ4KM;fm=r-f+]_>!!!!qEmRjo'l?BDd8g5I!!'u*>L?KY'l?BD!<<*"'G#%\>&=ur@H:L;^Zs1%-\FY(e&4HuIOABDA`@!'ih>L?IO!!!#6(>>dqg1kZjfR7\NP2as/ZR^KC*5D=L7DqDNhH#*^qkemVO5G(UYs.]7j4cc:c2SK!9sJ!=-p=_F/#G9A;f&FiDeZlWVHC+uBbQ!^C1dK7/,tNN*<6'>5cI"Qd8mUhD+.Y0!!!!5%rFa>d8mUhD$9n>!)Peb>m(--!5LEX>L?K<5[0N&<[G?`!!!"LBnWphXT/>$!!&[:BIhdDz!/cQ?U9+Cq!!!"lG\AV]$31&+!!%n3[\Bl(zTQk-#g'Rf[!!!"VLUNqZz!2+RM/(t=1zMMJX7XT/>$!!&[:BIhdDz!/cQ?U9+Cq!!!"lG\AV]$31&+!!%n3[\Bl(zTQk-#g'Rf[!!!"VLUNqZz!2+RM/(t=1zMMJX7XT/>$!!&[:BIhdDz!/cQ?U9+Cq!!!"lGc#/To(")hn[?$t?:eAKL?IOzE%R`bBIa&_!!!!I*nlL[!WW3#!.a(&X_93bz-m%*"[K6F/!!%Q/TrhuYz!%8oBMREQd!!!"LihKqNi@G+mm-ia"hKCXjHk/g+8HSdJhHN=*H!!!!kO2i<2(HF/>dC80q#HM5H.AM074j'sL?IOz:cu,8YAUD=kKT2Rfo1#W1#<6;!!!#W7O(+RC4'Jmk&W!I^jYrLg5<1-FOz2_;!!!#<6X.r=z!)Peb'l=*Sz`C!kWi?"TSN&!!'u*>L?IOz:cu*"D$9n>!!!#<6X.r=z!)Peb'l=*Sz`C!kWi?"TSN&!!'u*>L?IOz:cu*"D$9n>!!!#<6X.r=z!)Peb'l=*Sz`C!kWi?"TSN&!!'u*>L?IOz:cu*"D$9n>!!!#<6X.r=z!)Peb'l=*Sz`C!kWi?"TSN&!!'u*>L?IOz:cu*"D$9n>!!!#<6X.r=z!)Peb'l=*Sz`C!kWi?"TSN&!!'u*>L?IOz:cu*"D$9n>!!!#<6X.r=z!)Peb'l=*Sz`C!kWi?"TSN&!!'u*>L?JJ6B#7T^Xq.sA9sS+L?JJ654^/>gfqpan.3V[K6F/\.PC9BIbJSHm`/?q#:Ee!cnFP#L3R%cGs;^D>Zr?e+g&r^jcJJ!a`ch(CUK,Mhk^@L''SipeL>FpB:Ici/,7?!O#p#i'1]##Q>?\.I^$Hqt[5,*J*AUh?k>OJ+EUHr)_gu_#Fo>ZL^9_"+gIkfGs)_`%*9c#eX5%NF04sq$$g!!#)^SD$;3hD)FU`d8g5I!&GADMRJ*LK!q,@X_93b!.^IED+.Yp$/mu)mXVX\Vf>_po70VQhs+hV9n>^*1>m)%o>HQ+%X9kd479:_^pii?]&.6.prhk9o3:'^:ZH#W#e6&QK3JEFPhs4LJ9,FCi/<,Pj_ab1nMU4k&._dEcRf/FE-&fV]IWJT^`Rf&?t7!;j>BU7I$hR=gB-fu_#S9Fs]6XX8o2W1,[N@-L^!5S%6g5<=j&q[QdX_93b!.YppD+.Yp#sheCT3b7Rd`IlH;Sn;@$MiuTo9RY^D8-\IcRd6j=P2okaVh;TpSm-b2W3UuW?ro@u"T%MABpCl.AilQQ-Z%,>>o`r-8n[6+^(bZ&7+g'UFXg1l5JU9+Cq!+m^f'l=+#K^XSBdiQ77p\F0rIJX`i@e-b#k5t/jBb,G#rYBaKPfI!RB[?*sDuPe#jp)k`c3f'Kgi7If*s57T5Lb+2+MJNG%!ZTT7i8dn]ZKS$IuZn?42JPJURAcrp_29XMAQ-@^r(_Jq8UHZGtVcRr*4Xlgfjk%%HjY$*t>jsnBN#51#8`c!!'h'!SWF>JeE[DU9/)Z!!%Ne$Z/=:5m]h]d8mUh!!'fnKsm_XTS2f/]8%;M%+LVpFb,SU^=i2s+5^Q]%!2Xm&K]ZdM>[VR+E0$m0g8os_oI>dkIl?Z(^dc=]Nr\_roEi1fY++fT2boANgK0r;i:^;Oe2^SS7M^3"S5iH1k!%0S4d0g-h-+\=hkgkIu^SS#K>#KpKTo)hK=8aq[W^7cs2^i;4br=A\8`X!5LIF[\BmsKV5G\/(t=1!+L?JJ6I8c?'l=*S!&.oVX_945+ahc,qg"gRK7Wf%=7_;>(r[S#mV.EY9K[^^h_3m5qj$rDU\IA+%q:F"]I3DWT%GPO`E_9#n^X!.Y?61beb37@q:HL-uopi(l@/Ja7&i-k2q/Nb__\924sh^54H$d3WK/qocnpX0\pM$ZhQt+p&>(h"l9`6#eAF%1#b<8YW-&22=Z/'^5e[V>=$@t>@$>,C2.E4g'UFXg?L.PRC3.s!4X)s<`;@id8j(1pc@PYePH"d>QoT!pCsg,@X&LLieT8;`"s?TC:L?JJ6I8cJ\fH6PoUr;d!9!SYD0;,jG!;O5o>?rO6?s=N+VXb.=-l(b%P5NlF,F,,K^5+4%\]C'9F_gdL@!_QCOTu?r!,bou2]dG0=q/OOST+`qKAFmT:iao`--GlJT-=dc!!(fYcrRmqg5<=j&q[PA;5SR;'RAU:!8rTc[eciI6+^(!!#:ScrRLgz!#,r\79]cm!!!!an^(=D'`\46!!!]DD+.Y0z5k33%ZkWQ@!!!!5%rFa>!<<*"!'p)$6+^(!!#:ScrRLgz!#,r\79]cm!!!!an^(=D'pK7S!P^B*(_07"l2e]=76`ER]cmFVn687ad8j(1crL-&+5.&%i.croU91)ATWJ3+5-u%)^^UZg79`%aiK?5B3#ee%A)g5<=j&q[OnQm'gW!!!Rc[\BmsKGY4V"^G8\CV&+0i!.0X62s6+_STrhuY-q.f"J/JE*"TSOW[\Bms'Ig>i4I6/m8Mq4O2"=Ym#<[@GUuF>'f55.#9II1^!!!kiMRJ+7KXLrL+ja6i!+9Ijg'UFag'V5B5[+6hJ>')Y.k!iDCod?eT\Jaq^lH3#!Il+b#1a"L?JJMU5B(1BcD=!!!FE79`&,6cp?0.6\47I_$)Zr6Slb+eKVAIqn!!!FE79`&,6crL,H?t_(E$;(oa$=JTR>6+_STrhuY-q1:=>FG9QrdsnskE83V'??a,4tU,VJDVF%$31&7D+.Yp.7.5>bReGf#'pKoLeLtRhqhV]WFXo]*Tre:p^sH,h'pKoLeLtRhqhV]WFXo]*Tre:p^sH,h'pKoLeLtRhqrgZ613t6>W3,'-;<6.Yg'KR".5mU&!W]`=TrhuY-q.gM?dA:V'Q$9C!A)g5<=j;M;LTjj7&8e[:(=!W[a1Zk[E]V$Lp\Q!Es8]B1hjks?_8l,-MCd`KDe=+(#i,>egHKgWWpj[uI$,6el*#kMpb.[,2;dXTZ!SWF>Jl791\k6Wdg5<ObeSXZ$fIYF+5?XZdB@f3+?oMCdJVmN6BVR5rgWI/fij*%:%uns5;q%a"82aMN>qr5cAf)&nb;"+>37GZ9\=

3GUQKtQ"7lBc@Hjm24?k6b>pEdS]n,-5:(.gpnUa+QOeWTQV17ONSaVb;cEXVtko[jXr]rP,1+!Cleg3@6IJQp5WK=J%!5OQuD+.Yp.7.7dgS5f#`)N3SDn]BZ(BF/omJ'N6=^Z&i#".KAV5^]8sX!3W4N/X?d*'#\LHi)p0K-t3>_&mkV%%TU9I02So1a5GE7qJB\,,<9uo/,XV%Em/h$$joW3!u4]:jnlT.J`Xs__R]!OXEp_bDqTHH0/Y(/@:X(H*U_a[Z/?]^GmZ0E:f-MSX1t70G:FJ[psGt?pYnu>V@UC4!L^ejb]0QZ>X\]*^/4"#Q#n0l-m'2jJaW^g7"=9B8jDPL.;J[,2"Waqr*JrYeO1=T$>@Z#O:E5j/6Hqs/>j)j$%bRA&8Zk\fLZk[FH>L?IO!&2lpX_9457;+4*MRK7]!!$E(6!M`;:l7ro!oCB]"A$WL#.GGe>ZDsX%?M"sRP(g!"IJjh"c3"I9g9n%CAdJ2EEeF07/$mjRVF0jI0'`o(sGQq89[o16miHm'2W5mC+^6]tG)bWMs*Ji71YtI4c?@H];lJs0Wj6SWGF'D0"CB+(X3L2VE>P;m'<0:1d^WAG+>23Rg2C'6RHg\pU(8:@uZ.T2Y/j4j;&MrlV7IP-tDl\C$tOBIbK"BIheo[\Bl(!+;Zi>L?JJMU5D2'l?BD!])'qfY#"V^nH:n?[Di\T9B:?;1*W\SFfb#8,=Er]sUVqZWeL.=X16^rGl3>=7Yk;$91-qDdtN@")L3?rp`[^iB!5i0?Ppi;8$,b.!D&f\\$Z`i=Qm&uPdQ"We-J3UIjnk%0O,EE4=%'653S/=4,X6%6CYRqt'HPj*o'\T[KYq:WX+f:Q.nGAfMlGATAbe$XJs``%fVOaX.h\CY6WS/`T,Ci%><_af%72rA6.W_^p]VNq6c?TTDI]_7Uq\akETW>gr*rr/1a315mZ=)=.1PZ?['G!7ZDR=*=VBB@gQh/^W3h/Zn:=E\nLaOQn(P_2=:ZFXX=Y1n1l*]fOI]=r3FkK]]`USHjiA:-qV[uJO!Mg*gF?!@i^QIF[\S``5'a+%oi?`a0&DZ+[d4L;4[mT?qgY$&&1QG:.+G#[Ydp.[V[J'Y@k)P0)r/SQ^8J/\sOMRJ+7KXRVWBIhdD!!$ULZk[E]V$Lp,>L?KY'`\6X1h\Dn$;(T]Wk"qF@eepFnZUJRVZc"?9_Vb?-2p&e:ZGNhL-m[XYu`fs)P/q&o"u]IO[G6Mf5HqDeb07>[%-;/6`teiKDHkCuK#IaeI=J$TH.NhH;(i/D;Yubs&(IRZ:U?6g^r6hQbdi^7\RO513HT-eEi<=TT0F^4DVQj'J%eX[qrA-qIc[HJO1pjNX]R5@s*0`4p[JHul-mmtj/68,%BI4)5$QUAg(=)E-CN3P8714(/#sq4"TWM:6!M`;:dWN0Zk[FH>6+`>N.n^7Xe:??X_96=MREQdJ/J`379`&,ipg(>[YgE0Dt'X&/\_o/W::_pongF@`Nm.2Sh%PGnIHTY+-hPCP9\!.A0L$pf\i\J*tCb-F!aA3a!6AZjN./<_H/X93&5$npuLJL_oSSDk6C&;@-#u0W#RuC3Arc=$X4^3-u>:k(`8H(,Nn1PaFs2nG\!mG%Le??^A_P$4>J&fHWp:BF8jsJ*$0tW)&eJs5;'j\Kf'a0UEa8hE,\.(L-=tNl0B@ShGHZ'#A'UnV74s8Jfc"jF:T-b?94:ja!(lr6TX,;WoG.,2*N9UL'Jq28+Vs$&U6r>We&mqr)#n#m7.i8=SG*]uXi0+NRN7\E"9N-!oe`.=,)<60&q=hXQAokm?%Vg9T<)_&%U&g`F"6rILMh0qent56%0O_nADtU\^@-p[$j,Ht<_@6[Rr.nrNB6eP_ZN(FG_ZFhUnRtS^a3$SS&g<'?Pd/n`hpqroc$W/OZ^tjR^eB@C];t/]&ccf46^:HH9"+.m^_OX3$GUg!t%h@+;\44.i#H0m-acNU$#3AD%%6?(U,!,i=N_g8l^EjO=eW^=t>fUY8`pOX9&7F;L-^B)8R9W?"`dX-+#\a?RJK@U"sG_RA[N^A9nmfME@U"sG1*,+!\T[&==e9A)nMkN!YF]Tb8ouktR2fltW=Pg*]Cj4(=5EjA0!EEXGg;NlU.&-VT"O\q_k3*UotV<>%V(q+'(fN*Y:6E1L'(#+UVOU>s%kV(^-d`Wmr+B5ifdgq`E7.J/&7;k>o!ir(FJm)R6Os&Wbm_^ht:@o)Uj].(Q[,1_Ou/!-hJT%7\\2`Sd`8p"SRc:C-pa0k80dl=#0,8k&O8Ci?UWGPHMKR+L[5k0pu6pr7uAc'gK(!Idaj4ac8e"eDHYmN*BN@+kqkc6Db]KM_2>Ht:9+bWf&Cb)q/aWfuX;HuL(:+)#"pcTf!8t,C\F;'\-DcKoGmZ5)Fm_SOAoEekD`3ETMg^"<4+6r>4f6:YWq8;m2/3,?S8kGYDJC7iQ#CG4I6,0q^KUs8Oa#:MH#W:?V-\f'F6Wa+P>;)?H#F:;rOrTQH%/^rsU(.q/]atBS%$Ob'c&UgNJ,J,B4Ze0?2eje7d"7QrFJ[PF/;mjP%)cV5_n;Om^3k!^*CKd#PEAs&e%Y4._&t-Cj`"HPK_e:`hm\%r`B>tk%n=Ru2[71PKt85BT.SRI]D`p1ao0#+/M55/D++^Rdg``#gPTMR[M@PSD8iq-KFh$uYcZPY,`An/fN)f=[M9s=OD9Db`O6snUdA9#KY9]u0U29t?3TT&D@'*m7R=M[YKR[VL%G`@$BKm_AEj*C$$rD]mtrG9?M*=:qDBXo5$Da4GV]7gTBFZZEVmJTGR&isMCqiU.AG&**JDFuQ>X3Wd9cUJhgoFd28Q`Ah/MDoMm2-XE:<5lYdn(-ahHZO/^qVuPhmb@6RjT2l8mlbpbE%UGD[GYEl]G"VND20K7>_c'."SI_/Yn%B5XbTtnS)B-uol0Dc$XGiKqGe"7]$Mu$j+R81:k&IhDKiq)X7nqT:AmWGrWJ@gWMKp,XU$(\]"tga>ELJR[UNIGXk6[-&43B+[M@PSA.c6bgPTje[N^A9;JiY?fN'8UUt\N5A;@BWBG0s&/V<]J3oPlk/%cS!$(=N`eg'.NT_kLrWj`ALRXQT"(2aDhX*Via&4.tAa>_EDgM+03_g2$D5OF&X%UFdrF\VA[_`-N9/Z3#Mb:$W+nfY$7l[[$:hh(b"S;4ft6RF!@HkH(cn6j(iiVPiH!df91f[AIa5Q"n$bi_;p(l@4pk8oj2CIq7qP+%DHgq;_egpuf9]Q/H(em/^CfN8PHqTk.?`\06d-X@mC=T8_Sd4hp71%`?pmbZ_)ogJJfnDP1U*JJ-$4bGi)?%p&nF>\I@?j*&bo`0/"bJDoU0As_C#@L'f-p7FpAZ-cLImfcpRipIC&4365Cb)q/aWbOO[M@PSD++^RUtT3\Z)pP4@9^"=fN)f=63nab#2>#P75BO^PQm&[eKF'[RS,F?/YF"j5WBp7+Y4CNKnkB>$@;)E&G39V=kQ"SF:TH!)LWuekmogJW.FVc@Q6+W^j1hK_M_K:E5i.Ki;Q*WnDM]Cf[UYNbrZkPF'B]#ft!+HI4l+RhX?mHcepI*^&\`*!]Xf2nF#ZD/mj&6DVFRk5(2_3RIBTsQ5.;hjhN8u`j#uLn:KL\(UeE$i$Z:m"p[X"Gi[3b\8fD$BK7f;3Fa9R/+2eXchh1]CKi%56"dpt_&sYL)EtK?T8$Xt$F$KaL6p3_d.UuEgJ<"1RD1ie8&f$5nsKTT3+nJiKCEM==`SPW"q[3A_41d>%IJL]i&tNZ-R@N63s>7J3*,!\abN]3l=f3_m=)`M#R/^6;#o([X36h"V#>1hF&&@/DD+_81#[UNI'/Aei)>Ht<_Rs)VZ.sJn-.sAbJ9D6.i$b*sKbP&c_o6/$j99-gFs)%q/qpckbq.I=tl;ab?nl;/f/oSRXi)hm"nneh@[:UeV4+A2S\7@C#[X8lr]]]o3Z?/$1Z/Q="^2aH`[.%;0Gi:9bBYcang&[F0ciY/='^bq_1n;$o)dL$d#@+u`)dKa\X)[[]E8ff9E:K+YE9T,t`?r*@`BNM<%^bdZ%)X&IId@DH]QaZd\6oDD[;m'g\nJ9eaYpYFnIE'BSoN$?m;W$8/MNM1KGrHN(rOT;cbdYZp;&b1[_g#,p;2MV2oEU-2o:9,[_ZO5&&B!=O2?TlGJb_"p;$J3[_el[1Ge!IjkF2#b<`)Y=*mFNA6TX4aE3&O`O6s.Jo/K8@U$+>#U+k#/SlrG(!.#'/%-2IMJYcf+f&j]>Ht;$(=@ETdo#^Hn(J:@)#CI=BlLG@LMdqGK,>qZ[]%t(1jZkS_.$4Z]lK&$!$0C>qB2p;;bTkpn_Y#FDYSc[\#se_#;URNQop2J;UQ&d)ibrUOp(Jd0ghXGMbXQN\<;io2T"\&b1:,H=0ZgVB\N]hK=lf_L3fYqN0B1m6l#0Q:kriNHID)sk2,knT.h+93pjTC`F[2hK&hTSn&-l.o2*d-,hnSkMk1&7Fh.n2%A@Wc:k,369b!2$70k'c%CR#+MI[=-(#+U_`O6tD&5mALXk6Z"Mm0>9OnVXEmabmOu[R(amR5fPT7=2G,!'16!/[698MS)W+B$Rhb)=$"'6i%:Ng&[bFD6h:>IZ'<-*+*S5*-3+bYqsfN)f=P""#(Cb)q/gPQP/8@?:B@U"sG_ROd0`7p>I8[Qm*DAQ(3X#YFst:W=uH-Vi@MVXc4WL>k0KDU()6H9?t1J^2P&r0YLsB-TieUhpT7g9u9^*W[*6/;?km5D+1`9gPTje[UNGQ63sPKfN)f=P""#(Cb)q/gPQP/8@?:B@U"sG1(E!RD[MQ:k+bj_:ONDCSn_aYKjo8Z!t5T&+%.Zu2&iH7^6K+5,h]UselN!g`YqQ\eBh'"%uD"q03a;_$Yh-9%$B?8Erjg>Nt53-/XUHF4+)m;K)5DdngLr9TR^&+r4LM"8n'>StF?@kelK9P.@mkO=X]?1NrW:Vc,X9P+SI1l5`aF'Xb8s7&8"O.kauTOsj.>>TO]$O<>9(SF5l(`&dijfYL63mgkN#CSOaY*1ejY@6ADd'H(VpdQnf^a-Pi!\F?%TbG.lY3Wko%Q+Z#W-bI;<;a/?j;1\k9gVubkBlqcU]+AYq<&t=l:G])mXT+(63rusYcZPY,`An/fN)f=[M9s=OD9Db`O6snKPe]:@U$+>#U+k#)f.%5(!.X7``m-XPb>k1AXU(]6*4oO5s+B$0gO+XucbL.u)/&juPCj7f=UCP`2:*b12(nRIK$ka\n=RQ>BZ)pP4@9^"=fN)f=63nab#2>#P7C!3RMJ^>@@TsF2#cT`7K+KYBEYZ$j(>s[l\/c@)!gjB79,c.KTOq8$Y7H[7GmsH7]a8I-otYM>[).2SK_tL#^mD_hgp=U.?G#nBSiYR2F\%jj0rGk$'0^`,K1d#Q1bQ]M[8g[r+//TD":1.u9l>7'Pk9CZlNqI6sL8h^b;_$#=<\i)a9&K).j_3nD';61Hd*f[BU-ZE4BUA@fUc@U"sG_Ri]-kspWMLZMsYKBZ@fCL7R,\>isqToE#4aa`-o=3lE/ODNMfPD_7=X4_h&st.h(A!ZYEoMlL:2EZK/JX.+i))G=2TDr^\r8sJdGb_DPqL0LN?mm&l[!1\CkSB@p_Uj2Jr:K#*E<#oTpubdai#hs&*T":I^l'"8^t\T)_sQ3]_8QeB_$BY:iLtm*ToLAHbFu32+_4dh6HF8$D8iq-)1l_E[UNIGXU$)'<%Vo:[M?mqCb)q/gPTi:#U-!Y@9^"=8/?J#kUTg_D8L$rL6*'D#l4q\gA4^70D#UlL"X>!TXCW^Gq"+bg_K5_H:[a^jQX-Pi6Nq0dMS=:ac`G2SO[Fn"\X6$VPa.sU^]6b%6[=ZC'f;>BLW"97qi[89AVd#`jXS_P!PFV?=$)$J0t46.b-'?%UANY*#O]eL/iR)J_An9Ae1+dN'jKAj!#UW;"'4iORESYdUtBG!39A:JV73YSmR"Vi52YB55;56Ko`i^Gj/*>m-X7sI=2TADKu`\hW]_W01Oo_DstPioj+f)mK$!nM3lsl(^BK[?i`H-l@\K+"&NW8f5X^%cUOVk"Y_kN_0^AI_7TH6_>]cR%"h)mTMmNS]e7+dFcW4k?iTc_+MRYDn28G5"YMoEb4g;Ki28".B)rA=)'OJK0%dU9?_C(Brf\Fsa>rR@DB]OCg63s!fYcZPY,X\f#U+k#/SlrG(!.$O[aJ=3odu`@4A);ckmGlIlZJ?hG_K^NKpl<3\'jTAnCAlNM+3K%Z/W*f0#?!am_Z<.RUOI_S+-'L)e&n3Fg;mVY'C)0*9r&%O$8.Qa'.HlUCH_Bl.aPtU@GK`j*H^hn(t%!7uuMXh]B<;CMFoIXmktnH?f!k,5!3+U3BY[ic^fFf04(T4Vba\9$`BT6dkqYEc)F0WmT_9l[drbsA&3oOY24nG:UM*:FMbW4Xmj3\H?f-o1V@t8!S3d>K4dt<_=M=-6-$:)mmJjJH1:`c2L+fB4]kY3!0<\`$SPcOL?HiFKf,ds_/gEr)DBlu2(./:M3ACQk&_8!F\4c;(Zl)8e=T.lUK/4#+oKsI*sa$Cr91AefN'7bYcZPYCb)q/+bYrWKl+f;+rPuL`O95[Z)n9TKN'O>/%-27+r/hsa543GMD0(E:&s_X(A%\6#([#SfIo%F#gilbIDtdt.)U76I4GRdd>#50]n+6]jFN&cXtZ9E]XZ]MLlG9J(rjSJ2MMeP,7jWg,g&:T(5sGAFJ4_5;M-*Fnt`IaV'6qh(&3nG0Zp\`IbaO"URhTK/]j,%Qqo#HKs!0"TamWWZ!q/4Q5k6*rj@ce>M!H7B>/WYTmhXShr-dHt<_@6[S!=$Np@E]nH.1K_D8O-._b#^W)uJ%l3^20]]tDeCfhC``[EabH"/TTV]Z2,hfRe,05eYL1.!lfc0HOSM>hs$%%@q<_Z=?\&B,MhYS/-B#8fNT#;89l/XhcG@aX6ZOs'5L'P^H3iA\p3lS"&=m]IF42A=CEE@U"sG_R>?T8fmZMR$s1nFt'*Vj7AbpC21.fasI!eal@SjLaA@j-;O!=a_!D9ZkOekoODoLPP'VllK]"ffR`9P87bDi;Q06:RcK4#8*u2u[Lsh2(oNHt<_W8.o/]#f1k?u:FEL"25aNC^0pUcrD\)s;q[0&iKW\i.?EPX?cNN<4QOUd+nOKidpg)R'6UmprqWNd-6H$D,#5-'.;p(ech^\a.oLQ49h*H@q(8G=X^%W;6Y@T=3`FmU>S$+,!n[$P'H,Bkf^&?Q]`Q\dg%DuH]F\g,qOTE)(+T-4,X].bK)LieCIZQ-IB+WrbEGQ#n<6BbTIsL?.AP0??a=]>CMOl">7j3CFG"GL[N\k-D8irHZcTXb>7j1-W>=,eCb(Z;fN)f=3Lah8[M9s=OD9>``O6snUdA:^j/BifQ#7dIcr\XG9P7Ef/(1%^8!]lfl..6*\+E%n)0b+%2GDtj-i>)<^e#jQIllP4lA?O5Y2_ldLZ6PYH=6i/nJJXh*-?gAW"BV0"mC3N_"V7cF]:-[9Vt2/EfknCquHT4Ii;VVG^8LC(3KL;*6er1iX1W1"EhYH+4r7U/ZHt<_GQ5.5&hH9[cNG]#En?5o;od;l?f%j6r#/\*%5567X.qhO`?'jOYo7i0&)0L6e,`aL3:GOQcu(MJYef#ht5R`O95[&OHc&2V;&H/!@iME2KAP(mLb=[QifELfN*Y:6E1L'(#+UV&[iG/MJ^>@,(pM*D6U.p<[:&rUKY."Y@qceV^rTY$5\At_E-Y4Y[.#hcu'a6oGLQ]9!9QN-scHE#l='U$bF_K_LR^hDrpd1Pjq=?DCgN`^:XmSr0Ke?jO$hLn"'p=YMuV&K%G9kUCU\BciK\($sb66/^99:D++^Rdg``#gPTMI[M@PSD8iq-KFh%hYcZPY,X\fdX,CD!r3qq-4&\(V49L*K?*SYib"V\7,>'Gl)qC*6ZBATJ(nhrcTgI^S_g\G](Een*bcOUG8jND1oVB_'nq`(`@8JmXd)u`pccRfFKR[K3b$#SFbi^W&(:=f\?cPlh=/ui+!*Cd#;02!)ZFU)51n>$_aX1k_*Tc+`Irifc1OnGaSuij)MAYgrfs^ifN'7bYcZPYCb)q/+bYrWKl+f;+rPuL`O95[Z)n9TKN'O>/%-27,3eVuqKpf&1m`:q;dRgP[!)_.=+W'"]q_(DH-psA]nfu&rIS?M3mG:>YY40nF:ZiAbKJu^\S_CS]o$6FgBd000YZ`W?uN4Z+$Ioc[Z45;d@#d5QT]l>O7^=g-Z%Gl2?s%b3\^&430kM<\ms'Y=n#F@#[\)HYk-6R*#eJ.i9M6R^%>ab@gi#)Ks7[n#^1EO_;=T'QqT:(q(R[gf_9+hG5$s4(XHBc1TpKHqf$("K"98Gp@Wd:ZRlEo*uEkV5Qo!?29O_?q:l7_7Ul.g1Cm!1@lVj(_N)&ZppbAZ^?UdQ>BZ)pP4@9^"=fN)f=63nab#2>#P7C!3RMJ^>@@TsF2#cT`7i5+1.u/[XHuVL/\piFW/Ef)X$j-b"_LWLh4_.ilNg"M>#jOnPXQh(rSf9uIoo/m+;4!B8N2qV/I/!Ht<_lV(luZ,o;a<8rPurC69iNOQWI.qq6LRc;'H>:bi5J3.UX"T7Kn3q".ZYcT%#dJgoYjXk5tk/B5V9UPGX)r-R$qK+)J(u%jAqp(eA[X-OA."(pnI+`Z4T5,#KF"V_q9Tf2M*W;@:U=pTZeh0M69^"29s*9Q/`3ohYH4`kToZ#Qnu`l0\Ma3Z@4nSs&rh3L=$hh3PD`#j?3=63Pa^7-(cs+;mNVKKit,#YnjD>IS()?e/pqr)YM]t51S*0#1JnR+bYrL2JanP(!.Y9/%-2IMJYcf+f*h">Ht;$(1CFPXk6Zj.maLbeHXccD+1a$Ksl<.oi,V*$4FW!>8=U>B8umj_=.*ahj5aD^?J96sGmWd^terURQ3k>q#C9A7#U+k#)f.%5(!.ZW='K6uUbhX091ISO9*WV]o6BQ2?LN"_l4C*WhA@W`'Jid'P)'(AjCVd4cSOij3l"=Zg!a5g/=c,]3A&@T74,(%+[RLD=iO#g:dZIM'WE3*ahe$)"4Ya\=C,TZX2Y$CNQMdT;Oeqakttc-)p/LA]\Gr0RCR>$;m(oXQFX+bTj((#+UV&[iG/MJ^>@,(pM*D6U.p<[T9P)K5.GTOi]'r\-Y,&OlIe'T0/=P@f>T\\t*[[4[jG5-k1gDB.M=aGZXpCSj?2#ShMe4)-ais-5M0f!Nd(<"-fso8jSSUEV"l4o)'C!3,,\CTF;ZJ\Sd_"Ib2G@^KQT>?u0RmL28A,#aoS7Xk6Z"Mm0>9Ht:9+bWf6Cb)q/aW_JR8mhC3QW6)GdVkshWIQU++gR>Sfd5C9LK_IfPWb_#egXpH0M/9h"I9J@@0aEDDpI`H'kC(BZ$!!=CscS9Dpi#aWVIA&&oA9rCL`Fa`#DIb+=RDPK8nj$?W$8A0Q=k=8aoHE1.^"+PVbb6Db]Ht<_m,]<674>FBg;f@L=V'#kYP,'jonZEPCr][+CKlFEW6edZ0Y$gm45gcXK!06/NpnBEp]&rVo,T/Tg,G'"TqtlAJH"4ZK%ZMD"fE[1jY&>:$n_qj!0fKk7N?d&]@5V;*6eZVp#$\ZSJW\pmE:is.i]C^iUCV!]"S^J4DU\%5legT(63nab!o&TL7C!3RMJXZs.GK_s70k'4>$tR>X[n2n8$sB]SQ)eH'nW=0LnI!*6"*%2-g9*_Rj\OQKF`aKTY$="jp8O;\qdJB;hFFlL6sLTj),DfY[GFhcKDV)`CgS^[,tfS9*`0P(.X=3Y:Q'I6MUIi*ff<03&p3=(GC_nUX\6n;/AP!&ASh5h["/V(kV^i/NB&Si@fYg$'#a0pr>UJ"1rnr39.])cuB/d"._Qh!2IVd>+4jG3I(G@(p'k,L'.B/SFrd)nF_SF)]E&#I67:6C\o4o)3*U7)a.#9A"FW+a*$A1?jsM^\cI$C^(.>R*JC>+7Uc%4$\%V7%K-&%[iW7%N8^PW&K$7JW5GJ0^kN*gp;+"r(uDjt%.<$%!!`aWpp/e/HhZ(-Ttq!E]^fIeMVs]=`]7DnJ[s/>%_]]l7$!:Rr2A)=;l1c5o8M8-`dE&EX=GU$8#R^Q&]dX&<Yi'F`3X51V%(2m+*#aI-ch,"1CN%*,r>(pnhDsfr&M,@m)b/jD]oVK)+a!&f/souJ2m7.Q\f6.rCCNCLU_W%_!W9G,2&D:4`pcQ\$[;'N!Bo=qH:-/iZ3rCWp"+-@^'"+;@snLG0#_cTB:M!BCZG:^@*P*?Gk^n3e2bkJ^TMLk*F$+JA]<$<)aBj4$6It]"?150$!/Z6[Pu41Z,).7N]+\`?_)aTI!uph^"!Y>So04-_Y(t,g=cP[h-aHlX[n1S>Ht<_7j1-WERqTCb(Z;dV[M\B[k6BoLGssn37:r"e@)jVsoP9UU2k3oM\rt*BA7JppDeKcnT"`H5hRo_N:FC]X6B:*GZq\D4^B[_;BZe"DV/s^6OK0>lgHQCHn=Pk6ub,^#eb1\(u#pQ<)Yp&\sGlq&3S@HNX^O%)^_KXrG0sSZh"+bE(Sd'2RPXh0&5OdkNiW.Y=;mm9@)8oaU]#`Ie-[*uj1PL1bJgY%'-o@OUi(]@u(bmrcJD%pm)+o.E?kn6f%q%l\@<$/I:e[<9gSJHPZ)[G0$cOeWG[NqSW_?DN5!\tAh[FVLo%.E!>KAZ%0%kh90K"q8+)lu'S%%".W#nrL9">rKXMU_]tH?`2*eSb+bWNJfN)f=P""#(Cb)q/gPQP/8@?:B@U"sG_RP>_8i+Acuh[R"7B?^gS"P_J&If\+bYr,-#>*?(!.#'/%-2IMJYcf+f&j]>Ht;$L1"5jXk6Zj.maLb<=@Q=D+1bO1SI,Kkq?;.8]T4XEiDC>kpu!jW_cUXlTMq^l%`0o$XjafE,6eOSfL2-n4%POfXeUD02:,RN$CBkCtYr4Qs?lZn2gR2e]7tFk8>p;l5KL$>)QgPQP/VAj>%[M?n.Cb)q/gPTi:#U-"t?sBn<8/>Wd=]Ed-oVKlEbC;>=*-j>bW,oe0@\:'"U;In0[26n4i1oFR+7o@H9`1+'htN1H@\r>tgtF;blmX->1l%)qAMAYEN6drj8L45:e`cRJKYljXo9tSI`KGq'!u/jElGp`O6snKPe]:@U$+>#U+k#)f.%5(!.Y9/%-2IMJYcf+f*h">Ht;$(7@d!V&rWc\Gc6^2GpdWArcCX3lgss=L.V,)@2Nh31$&WB:aETVFM];Mo>X;naWB<8bbXng-e!@88*YC9N$9&biD\u/]hpp5qPEEJrYELJR[UNIGXk6[-&43B+[M@PSA.c6bgPTje[N^A9;JiY?fN'8U9Vnl>&&;+HF*cg;-IN]Hal@:7a/AKQR9jKgp#tl\]k?Tf,7U8U#gE$;Eoj/>roK`N:YgK`6&d,fZjsB6T&'>NVB>,f&Qt5(91g[V>(i(&1[;cX$Kj)MbLL0Ud"Qdr-"G3lM_f"`pKa.s88?[$UR;1NDV4"bD&N.Knbg7e&CoU`Kl&f7IS(]/1;p9h,u.Q?A[N^A9nmfME@U"sG_RHt<_Us/Zu;La*$0@+j3#pe[B(@PJsal>R0i8A0+39\71Fn]>h#MbOEKjt\jW_M]5u_ktH:nEuhWGj"3F3&VPf/!l]4nHK29hIq[%-a1A3Nddp66+W`Dg\TjE"'=F"M]MmjPNUY)e]27X*:U]?i*kZm"!?OI+#B*jcLV=_F^_?[2nlD^38SEM(%JT=pJY![q+Gc\>.:M;Qf!^>f?+tt'6@RXmXk6Z"Mm0EK>fO0[J?qNd/!H6B:'Sd79/7\NRj'35J_$TUL3@0puX]ngcu42NPB?aq^N'"/)BMCTsmXturqH"[F;r;6e7$7lLTf[mHd?*)C1&%E@1X8=2ho*Ir@YTmmf4=["E5n6_tSWZ2&mNmi2g)E@.+I>cMZ3f3'IO^6;8poY[B:Ocht:='Z6MK%t8Su#sRX1i5f"/B?jTa?hV+9Z1/S,_s\)QU#?j&)DsE344"@o6*XQ>oR.YoE\Z@Xj!NQlds1la0W_l!_q2fGO$;8!BE%H%I/:2MT0+!DT&W1F8#A_prSK_k"%+g0kT#4*Q=#@?lWmV>m3u;ME'Ja?b_N;p3V[p9JI`]@E649\Y]%=.%j!od^)o\4rP#,-)03A)+bWNJfN)f=Os/IYCb)q/gPQP/8CbSc@U"s'_7!fWZ)uYZKFgJM(:Ft4MI_ie5p+r?WV!=S6EMpkkUW]e=2HnJ[ZqW]%RC1h(XAl0+=n9bQ[U1C0In0QV&*YB%m#Z`rP"$su+S/mBFX-8@Z/LHo%n"s*Tjn>So3A5VjTYa5f'C,p=1[@WT@Z?KNT&`"X`3=S>L7P'p`KN[1E7?niR;*'q6Z&m=J$C*P]AF.R>@MjI>TW2*\<$W)':eUl(>/H(1NpE_\h1O%6SJ)jp74p^i5T_Hf_FA(FU0$Kq@_B14bG7d>_3tJ0t^Z@&!%^A&!nh.#NsDp!Zs8k_2[cA6-kDHpgCfBgKIc'gPQP/VAj>%[M?n.Cb)q/gPTi:#U-"t?sBn<8/>WX:/9Zg/95NDLk$&@ARP'OM,9KgF[%5sIP3W#'Q;QbK:6W'eHZ]8DZG7X;Al#Q+?&?1MuEOY(i8r]S(KI]S=3"h'P,Qf?9-qY(-4`#!SK]g[rKX5=[JG8JU_7%nr>dO>D>eB,TXM*ibuYa[VN^+pRf5gLDo+IF_@C$UU,\F!dO?.4`pT=5(;k9V+^R"/R'mDg+1LBmFY7u)#&YFCi(2EZY"'0Gq4V^:,g&#?QFg#B$DNkfKnlen5^-fL7:*dn!S?btRqDS`0m:;C-sn&)8sYJYX,p;'OSZN5OQd2H,2klokTi=*)61"=s)HUfmQ*:/=i1>Q>BZ)pQO?sBn##MJ^>@@TsF2#cV"[OY]MG]`IL*)\]bfhNC`%j9N+3CdflIk1>^70h>Bp^]?[DpY?$-ja=]#8[XM/4M^Dj=^H4fF>XBU)Y\m>@WVZ?Z<#>^qmKBq)/L[3RZKkj^0L?hp3K54L-LO,b3=.Fp/Ht<_5*]kegl4Q!)m"kfL=T*RY\&As(Fh506UaLE6k6)[;E44aGBJA#OV%+PF*R(e.>G,7IQ)]"AdQ1%[W(N]Dt`%u-b[D;0]SE:KM&P7o6('R14K!`969)!ZEh2o=VdL,f`.[#I?SF^aZqT_RN"H@WR5h8A<=ctL$De4KG!$/jphgO9S0d&?-\Vhnm1H%2AtTm"t=+b4ZA&92^go!k*?4m[N^Bdkm#n"D+1`9gPTje[UNGQ63sPKfN)f=P""#(Cb)q/gPQP/8@?:B@U"sG;PC4Als9L^#XY:Mh!4!s?(b\f8g`mW5^e6E,%%^N0!%ju--3Kqd@3kAU56m._RUd^RqCC(AO*..L@8OPeje;>ELJR[UNIGXk6[-&43B+[M@PSA.c6bgPTje[N^A9;JiY?fN'8Ur,?LQ@6O(hM74C/Q$t6B4]mjpk"/ZFc6SIsnmnjiW0.`L8K=.FSW(tdPNR;')jXH_[Zq*H$gWnEFMa9tBjDRrNi5gMnK?d8T@&Hc\"4XKi4IA1*E[XU:"W1g4-h;X/kHW!5o]*lg3*TH3Dj]INfq!$KLrii\Y>TIhh*6NAPR=](SD3($Bc5HhclI_X-.mrY:3.JId3(:P;T8Q'HNRleCXfTh-aHlX[j49>Ht<_7j1-WA`C0Cb(Z;VUALD$'kp@oA02u=.$'Ld1PIp5'`sTB4FMfn*Q!*Xgt6Tb"\JS9gC"WYi;0Tra]?0elHMg=*e)m?C:7i,t![a]k"'>q-/\:!\5/%,]TVClG7#ZEEREU5j8W.18@85:+")QA?]3^74&,uFM<"kb%0g`j)1)]^NV;P,ELE8s:0[,S0o$$)>t2B^k:kDg"a;Dc@5u^%%9cO^OoeV55'8XU$(\]"tga>ELJR[UNGICb)q/+bYqlJSiB7,$BS9`O6E3Ht;$(1CFPXj$TL>Ht:9+bWf(Cb)q/aWbOO[Zrj;Cb)q/+bYrWJSiB7+rN]he^A<2^M!K_Y8,L/G_3(P0C0Hr*be^&=OS#M*?b/*QM85<#C?BoE-$nQ33Tt5)#VVZi]rC4)jr^9CTcM6+D50*OOT-Y$65VhRo83+9$R*I._dgH@]l(*2p?;ig0t,L4$LNr?Z^d=?ScJo,R2R;%!V!$?5$[o5L?UK'V$[J\-)tK9n665WrVk)agh(S!pR`FU8!6ZQ4#(b4G,@M&s0Kfk%[:isFAgD8Z,)>6M^tEXD0dHk,Eb#D!EY93K$8%W:$E&oQNS%)*d)T]LoIZnMiBL@[+pE^e=GiOK?hn;i'&#]k\:HG7dH"/ms.g=chch-aHlX[n1S>Ht<_7j1-WERqTCb(Z;[&qbrFAZ-k>SR_U-Nl$#ZYaCj93mqFu)Fn.`IKaWC@beWd*kZmb#sk7r5h=:i3\KMrt,5Ae-*JMi:6MUB6YJDU"/t=Y;/%"*IkdW=WB-tl;p?9JR!7(T'3:,mLTiHp-HiL>fG!F6f7iatdUCVN5bDG/mDua+2/Qg5,31dbr]"nZrNQ#l.k,WIOg.SZYD@Bjc*5O?[L*-EX(ARlU45ef`SZr+U0FZu=W0>H[Fp.PXHO6hERND2lT*,*OWt&IMAAOP3:;bbkpVYQ/$XTr^!o)J%__YpeiS=7d^uj3FGi;O&oRg6S@<63/A6TX4aE3&O`O6snKPe]:@U$+>#U+k#)f.%5(!.Y9/%-2IMJYcf+f*h">Ht;$(3q+f/+nK@N*`*B":Z,`X0'6S62TtXiL[8Z==O/TTh-XFTb&R0i/LnN\o%p@q03;FjY,3&Z-aBu%#P75BN3LQ8jl[rc)#]f^KE#DC.7C>k,E_kV;Ved=^`>NmH/:Q5/R]lq[-l\,(c?:7Qm*K%6pkS3Y[opX9ad(4MLp`0;#YLhaGq'Y+>Z[#Z"W?89IIfo[]eoA32>6eEHVA]C"B1q0fj(!&r]K1<6F;mnc*V[Q]i9+OnM/0>j1CnEZaMGEn^O^TIp;"]E#i<)f)K+5S)d^57#=&130t;E*)7Y.56)^Q[U<#(/5((pC$o`+<">=-IL6`drdCc`j,D'G$)!8e3)m;RKR.e25KoXB4/qI*:nVtA>qB<@dm7le*0t_h;(G>LR1u,J+4Nn>Un@q3?!dgNk0Q:JLA%Wd!F(XYi@H6&\E:)qsE;T?uE&\rWfo$?W1RFQgJT"cOg!_r@Ir6iC\a0Z.[e)%SZK+-\=uQFWSnNWX4,,f0InNuRA6TX4aE3&O`O6s.Jo/K8@U$+>#U+k#/SlrG(!.#'/%-2IMJYcf+f&j]>Ht;$LN+ReiqtBIhP.,kcGJtg"af1J^Kh?4bhE[.qUoI?J'e;,@)5;l3pOTA&]3OY_';HF_7=Vf_aX1+_Z^FWrDVl\E[tD)k\HR/4"pq&@i3*@CNmR>o=)U4$b!kT$b(TjQ\b7qY(6c"KoTq9*GT]U`"fdimM;a*fDV+!D[Y&r.\)f99/jZAQj8O`#AqY>419P>kC0rW/mYshlII>&iV%:j-Yi2LD8l```(b40]X@6Smgq&L>%(?>/,V,>&qgf_ISABpCb(YlfN)f=[M@PS&4/q<_RfN*Y:6E1g0(#+UVLicj$Lli#dIk.Den[I53n%+9d]Tq[5d'atYHP&q@+U,k^$mH(6Z#)&[on7WglI=f>K=h7FSobY2#U:AI'S\4K_>rlG<;/mq9Fnk$?5UT>2P=D.h$J5i`RKE`gOX5Z6(+:WBOHeiRh1I/%-2IM@`*F[DB:\>EK>fcZ%T=l![:bWMBkpAa%TBp96l,]bMhTAjb1n6f3+GUrOYT7NDmNLoEh+=2L,YGetSFTJ!>KSW_]iB7=,UHgnXRq;tV=3lkO`h/?C3b:J5cP"8J0h2^*j9bepku>EK?1[UNIGXk6[-&43B4[M@PSA-fUYgPTje[N^A9;RNa2fN'7bk`8boRkBLB<8imhDXY'M=i=B>P7aZLppd6HB\Wo]a%#4:U9Y_Yl7s]pu"6$CgF\t^Hm5iRTIqXrk35uZ=B5&P-*Vnhef.1eof6&^1B%pD9,fSY$6B#on$M&%j*\qrHt;$L1"5jXk6Zj.maLb<=@Q=D+-2_gPTje[UNGQ63sPofN)f=Os)<69DVLbiEH8/*)GgY_h%!SB:ec+@Do4XXqjW(;qVCEYd:COP1[Y'`rQu6E#g"Q4/%-27&8\DVLMb#=@TsF2#l,:Q[UNI'%)KAuHe;A8/%-09KTLZqCb)q/aUm]>XS!=!lMO0-^!)[hN1Yu!HDKEG8+kqM_07WAk"<6Aa\2Upq;"fh,a%cU9S^quI@'DGlu-sg:=>=B,9__6=4gPi/!;(.<^/-O/%-2IM@`+q42A:6>EK?1[eaE@>Ht<_t&"gPTNtFB^3Cno=*"L<655g@b8E'.+DlEAXM"8Yo7`#/4T[R=U#&6@Lu"Xk6Z"6a3]l&[iG/MJYcf+f(!'>Ht;$L1"6a,A\m=(#+TW6:_j-[UNGQ63n`f&454o[M@PS&4-XGKFm_BYcZPYKFgHU+bYr$LMb#=,(pLo#U+l64)?FU'd85A63naqh-jNmXU$)'&4-XGmge*0D++^RKFgHUH$@nACb%gX+bUCnaLf?u@TsF2#U+j46J``k(#+TW63n`f&G#7nXk6[-&4-XGKTLD5D8iq-KFgHU+b[KiCb)q/+bUCn#U/9b@9^"=#U+j463nb'%blkX70k&i&4-YJGM#r4.maLbKFgJk]>M'd>7j1-+bUCnhAs$>gPQP/#U+j4o'W`afN'9H7)E/67%l<"CX>Y8IVUE[ppPtO"7_EK;rQc.TVk6)Z^tK1Y_73^)F=]QKN&P"/%-271i05%Kl'6a+bYq!#dtK&MI[X6e_@sL,(pLoa:AF.MJYd;KKe%D.2E1@6BFMUrq"#,,HMN"@1<@Q])Q%QqZ#<^[i`f=qFn]r&'SmnElH"&E5BLaOWodHcq)OiTdW6`&K274in-U\L*:'7_8H`g3$BOM84%iX,[_J7#@i+>D%8kj&0MtPF5-(G\@]>QWk5>.?t6uq\XAk5rHl0Hf3[gDeQmOhY342ZdFrqqH`uJ4mqpV/7+udP%,^dP!E'DXpd,VGDEaJ24e+<_ntCQ^WLZ'q8Bp"b<.2\'hB\+M*hUV-Hh+G0)XT2b7F=Z1)"eo5cHpHigT5R`>a>+3nC4;i6C%@omb^UF8di]bh_3k=kuNk2]O85?p9\b`_qN?rd)ja,8)]\cY.Vc(7o4O#0H.O?;5$DkJMUZ;M&XX'6G[O]sDmRt\X\P"GgGd+!"ALF:#hGgcqq+g_?g\',QE&Z7[P1NheIpR05<.>k@Oco*(U!#C(^U'`@B"RnDn@&A("99@r9"/8\kZ59[D?U$(V-E1b/.gW0\'hAY@'Xl)h22B!>A5j>:Pm.J\Oe/m7HK!!oT[S_=%f]Je@.Q*4.]>GdUdHqjK>,&'mu<-<78Nf>10PDg%+BjY;+@GRP"J'adZn5Z[r)Lc_l(ONo0>U.h'*62HH1^sm\gMVHk(R.nbmJb?RNI($\kUo.b8E`M76Z/"4nbBro_RTE7`R:X#,]:$rdo#_'<1J8JJDkZHOVcV0LncR&8!#Lc8V-C3\F=Z0>[fV)ZdB.L@(6NL2>No/g0K$G,DT)YpQu#QJ,+Xup0BcV3Y0*Y()8=LdpQbiqjXEE/#QEV!hWm-Q\s70P!n",l.fe3[]%(EWHhNo0>OE@Nt4Z*iMh,OObDea?*q)3?q@'fFa3'V.6J(C_S8@R$L=JoN8(jHk'PYgCqFRB4K;c=9s+=^hrIr6Wbqu6R;Sj*Z&#hHWL2]QT5SMOMgjX,DW!rBb6D9\b.*GCA\Mg5^p`Q0_k['.h:0SSoM(ogYNf0(Pj)5['oOJQDa0rSf>'5Eh])N`cEa9$0Yn]1\DLfplTA#c00_'L2u;385;sY9Y'udi?'eE(A`2DA*BnGT"s/WM-#`Wja_p?5jTVu0p3aX#H)1JFeR*qhC&Hp0Yj&icOUKct`7CV!tX`Q($)K`"hh2916+3/`O.nbApjp]R`URu<29PH7E'<97WqYo$[73:^V)sKad5IV'iB6m_C\rmq.f"%Dpoc)Pul+h,5T9&Y`R]$!V*dF5,gqRR<2_l]YE;=[&Utf>R\U*,55Gm2;>hA][/B+8n$/BIfjfQ@=)Yb5]3J(LrcQa5F5nq3&GF?^4cd][#'hd?94Tmf-7(-olYO24V_5(>tq7XYt8O(5Hf#P]!=%(#A.(h+G-X-:YJud&gCi]%'`jQ#9TDX/C%ih$TMdh.f['Bo^/r$LE`qMA+]hTK-T=k4ifRs??^H0eDimZbQfY[Hacc([$-\aYVon[DWI1N>IX-FR]4A(9mE2S)WHk.aVI\#N$>$j;.">./>eXRN1NT0]hYln8N`YrGhj/JP2j>DMS4IQO#>,q0`1^,HL@'Z;RhS0.JsmF6."thc4]7A5j>i.JfM[=*Jh+LAtc*;gGR:iEn/3\G3Cn#5uRgUN1YB"`p&O9_26K;V("qQFqS<=Cr]5/\/DF(Nn#_*/e'eY:)Dq3DB13f9InW:S`cga3(TMX%G"X]_gTQHq*3bVS@rXaLm#J!2JaY\ePT@\'hC#/)No2"Q#=-r:L*1^p:b=h9EaEARPfrG3ng4,TN]/MC1U6/A;/!^7%U6-mNG%OL=2"A5!)Gj2;1kj0:?WqJHdKe6XEgc)cah2saG1,)b.%aj1gW=X;H21=Z/,se7-(IU]k?'o,Z4jP2s.SKpW77[1n2ut!T22m3PW+n59j'I3.]6sO8qG,[aFAf<@-0\3qKpKLnZrD/BQPc\M?T_YkuPB\DP^S%\'hC/ajR;5.i(\U;`JE.k.OnE?^R>iGpZLYnn!!,VfMN.l:Il1\K<)(E1JL*?V%n;nq(#L>[LV\od%d.YFK10L:R71S")C!iE<\jro^q7hR$Y-]^hObG$WtaF/Aobl$VfA-MCU)FNH9UQ$(B!jXu^t:C^"J3QE?$]U^q(HfZYgPPa1*5+(;33!]2"Vr+Z4.WVIu8t>1/c,gY_n!0(ggQfI7e]>nrW>rFI);TE2LQV_n9]l.u,PmQsQ0fS5EE9CUheas2q;<=$tP!Djm5bA"!mjf?(Rc8+KthTDm.YjCIT&kIb3r:JR'h=,p?OjkV^B2*$XRVr(]NMFO2[MIeYc!p#VfFmnekgRa\V.q_k'^#p0D]L>T(]M:)Im*%#N_j#3n-V7?&:Sen?"1&MZ^!HQ\%^6\ZQ#=PBdB.L@h+G0)X`Q($Z?.VQM?T_YkuPB\DP^S%,:M#]ZmqpA25BGQ&feP$-T3H%+k0e0ps6`[,Z:t9h5H6rF"3V*8Q+`V,2/nTK7lgIN583lNbj4o)4Rgjtp0kD(?`%28rZp`(Uo\tCminN)nbOi^8NY*=kZ=j8pWVgt_u3O^7q^a^oQrI=o[df,E;TSR\Ra.0Z8_>F>"O2Hq[\I5h6PGmf;F+VFP%T$Ial/a)u)Ocje63pAJ_d@+ABSL+[mK`%U7^n^h2bsl&Jm"+/%#jJdsqAh]<5MkJ\@0ugfLNTK^;d8^Oui86N97b"/eQ%H[u@+WG_C@-%Ao?J+b(9@jTYMAL-poKd@H\V5BkT?,B>(IQ$Fk/.13*\'hDTP>/NtTRPD+U"$2d/)[/KX`Q'/Li0%nkuRc)VH[>&5AK+Ql;kJ2E)Gh"\eP2F0V30Y>6+^(j69UU'`\4fh@AmQO^F+A*UEb+^dpQV44lp0!WW3Q(>VTl!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fX`Q&n!+7qF9"+j%!63KiF=R=k?p*7;[fQO0`m_&3.f]QW4P`W=!WW5?e#d^B!!$Chh+G-X!!($fXg[#eY.njUbK9FbQ8?j'Zt-'EG,mDC+sJ3TZESWJ'`ZCf4M+gg3cV7_lDq($dB.L@&J5Te&c(&B_YB:ddiq=u]1cfYW8!3i]QFfYLmRe*0)BKJ9R\QLtn]>FmkHA4qBTE\IIn^r#C*_)b)qd]EKLJD'-ekL$C3!.ZZLXj/`.>@"`(pKLCa37bD*oM;*EF%trD;dI]HniZM;jihdXQIkC$5kIARhpa'lk;@W2B?O$k^7C&6n1>0CaP!k_LMuA72LN]c-ZZZ^jPej=\//iR\Rh@H3HJf-ARjc"Q;%9R*FEZoqT@]0dB.Mk8IV6Xok!n%7iC_e0mo9aL:^=lT4O8GY*;Ke5IZShV->P%aWl0,S^#%_h;>MVcN>cbX%P%J]B[ou\s7.jf1c/>10g]=Kg&^ano3:E/G.W$PD@=>B;*Weh+G/F27f(3M_eVH3=C8Dm,[-2bus8:ALA"TD9bJ?/\9IVFfSg"^92$ij\X.ZV>W!D:*+bbS3D).jlD8n@l!NhaiLq&&J5TeOlsmOb,NP*P:J4Lrpa18o$ZB\'?:Tk]_8@,[HLZ&Q&(6PLkqSNX`Q'*&J5Te\JW_r/n2<$rjlAeX31`PCWg?h:T^f@C0=j!gTn86T]PI>?J0@!q1J70o'rGYkuJuP+sJ3m+M*hU,pFNW+sQ'B>A^WLID=Q;Y2=AMbL,FJQDLF5>1V;l>'AeIGK\$FqFJe^GQ4=ImHEMp]as#XEbsi6bJOkIe+1lsJ$A#>htpHtdH-!4O$%MkbGk0bQK,#=/U?F$c^'PqDHSn%2dfrJ@"I^@SJ1\(paK2mg6pSSrFlorDEHnr9i&\Rj+THWs5b?Z'"2G,/^+B:Xj7Lks,`S+X2>Q4q>?5H4.B_1/LsJ@>1T#N[9S.!'eS%%5:l7TT.6f].3kf>.4i&qDC$JN+sO>>dB.L@&J5Te&K)\HC:IK=.]_ZnntYc`ntn@Y^?+#<^6[kJ&%A&i^=omihYUNkqW0eB:-ZJJns15tD:s@;%pQbof<$WcmX)2"/N<$2q27Ia>K\O(n^<`4htZ?"_[#qCoO$l9+sJ3T,*s]nl`2W'a4FKi*^=g+a-Knh*noFj@cc"'COYHs/[$fdQM6`lPZ3^.OjoR/Q;e^W9",EF&J5UX`9:75Q&(6PLkq"NDDbq53a26B]?AgLS$(Z!Ech-)QIVhF/Z4W2[%(5]f!9a@V<.L+JX5t=#?sqC?$`ZD?<_;-H0fLn2njH*bBr.FNg;5dA_'on[@B:,6psF26prY>f$7GbVT9[me=?04G/`/,2mWrrtb0&+t,DZ!$4E9@ob@ARo>>D;kc,p!poD^\Gf8`grT.>u)Y<4>Y#9RY?H?aq_j!Rl3Ek)!:6psF27-*?*ek0&'^]`#9IbCG2tp3n`<8Fp?oYmjiF3D>4t1.?d#>'6:=406puKL%QrBaAH2)(fsdm@nG\2I*o2&?fc574AbF,jbDT^%P*WSD&!TkT4%lSDb"1eh$;2k-DDbpG.hN@*&WoXQ\'hBH6psF2A:/L"$[JU3=ajW,bMfb)r3/,\b#MJ[=%)E:USu#bGSS4]]BMQGMMcbZaoaMcd$C"I9,dKm;jj^k0(6kgiCGPT5V9HEr.G\Bt<9Tb.3l8gtCKZq.D'NFmhLR4R5,In8m?oWSr,$_[V+Hn4fIS,>WG`MW'ITI&^8j(,sp3@ec?e8Cl7FU6J&-'4r)NQ+q-qHIYGZ]BN23&@Yb].3e>26j);Lfn808]WH32$Ih'%f%%l,?WEq#XggjKDiF>XUSTCW$s*.fZ_f[Kcl=,6&pc3$_`.*`kj6*'c`UIRNTB_]I`D(NP(d@(]h`4c\oT.Vc0O2(*mT*,K-VFBLnOhJAo)4@D<:26..j$CsA,18i2j[h3^R+t$rbK'Mr%9[)=*3T<7_hdXo*;->;tNc;1QB`!5#_DRr_j&"&5jBD,#Tph1f?J77T*#[=AiR*C31u^$Du&&#+-4!5;4t+Q#6ba@;Z1kMpEK4)Vo/<>)o""=MT$n2df'e('#*[r>5-RgUG0I\ljQ#6a*!0a6`kuIca^j*H@YVRT+OhYItD_aFPnsbUD9)^g@&'?h(IT>t$o#^Hbo"jn2o%2tdj^"Fl!!!#->sC-kUcm3%9^FRccf@<5+9`pR+XJ>?,"3a,,@r.n,_[NZ-D`%H8%6pK!!$DAF=Z/S!!!j3\!jR+D3XrMj8@Kfl*=?MP^VYEP$a1GG56oVhkIc[j;0@3>s;-bGPPA:-nn^]FlpA,^eWk[#GrhHoM!spNR,O,;uKDh;[623;Ai@V;CbX%;E[oI;GU1m;INIpJ]Z'14k'1"lnd2-ARs^WX1EUP1`_,Q[;>RY;3`aT?HuOGCaK':1rF!"RHgdIpfQ;C!SV"'DkJr1\jfe83odX8;Tm>8C?WO)4,UA/XF1',HHGVCB"'=V7n\;hnr^5U4C#20G6?=`?t\>3"RHgdIpfQ;C!SV"'DkJr1\jfe83odX8;Tm>8C'bZ\Z9CBWu<5(?u:qY>N9qO.8Z%\t5C18I=6I"%Y2,!u74UD)g/?E":r-`MK$e.N#<&G'>$31&CTNfZ3[fQO0#3])leo0e(rG,@.*=`&L9YnfLr[_nqhMl1FkZ.Z`Y[cou(QiS=!!#*HDD`H@lq@BZ?uaH'F6jV450a-.^nipWcEU +endstream +endobj +44 0 obj +<> +stream +Gb"-Vfl'i&^-2Dg+8FZ`X5DIdW!Y91LSA>&(I>-u-/a6ms5\2'Odk+@B\:f+YF"D\__;M:0FYi5AR9GXcYD#ilrFP40FYiQ$o;A1DY44ODT+:<__;M:0I&LBuhgKKNZ[L1(pR@2S.?bu!R#;@nR\eiqTl`GWXK%)Xb-__B:W@CI.afW?!F@2O`-(krnRlrJbZgSBSPRi\Umo&QK:[jPGi__;M:0FYk3\+.c5Ab,r7I2M1k'V/.m>R'Pg@.KPeEQ$/ENPua.cL1,rac(5VqM&:sb.H1)X@>ZruBpWPH9^H>j09^mb"&]]+1.[7`=s6=%WeZh$TmQs#h2:$G@>[(8gFs%7W:9`&0LZq(.s5B>D&A!V<-\CNR%b&%e_o7u.$[E-UM-XJAr3J]j]mBWTZu0c"dbZdO_40h[r!RclJj]/Z=u3Ln!FBD>-@\ZYsH0RrY`0EXd=WdrDg?(XlZm[?8ekku()j"Y1FCKs)A0u[fTj3uqs!jS?b_/bbb@/o=l1!A-;d:!YiEmm<_rm4r_5@rZ\9aa?a(H&9'R+glPtpf2IG4-0cJ]bgiGW\F,+f&0Gp,X+T9i6(d??*=o:CLr4tW04I@`rs0EXKh.G1(NT:DYZnA:EB&_p3/>8kE/!,*h2:$G_`=7)8+c;;@(0USic#CjE"7A_i9gmchOjbli>g/%*<$.tMco?U-jQGTh**5o\d]Em3smM3SV6+IP+BX$mY8V%UXgI`"]k$f$'ss=%F^X3L$?eS_7*WtKGD*o.OSX"*nU$a]0O*,F[JU3MUedPeO.K8e<<24Gf=R>DT1QScJ^!b\/2al]+p*B3/;SM.h*<]B)WXF#\ridW!$?=B]#8(FT/%`dV1os'<&Qeh521?g7-pY4lSDF#\qr3/>8jiTe7CQL4+%>Mm9TmEB&_p3/8;h34fp;'o-iiLNE7V%VN7[[pli+E";&M%VN7[\)M?:kAUoD\,$ZJePh`N(&>njns>@,?]sLm.*iqj(9W&]Ipgcurs8YtViTc&X]&W_KMdgq>*eN#"o/JE/g@##eV#6\TlfN?R':,)C[kFR>IG,][74Q@Zu=mXNG>uZ'S+?g0W[M21Xno8W6F)Plf+Hr3-=.:9U[[DDRIMnij\5]fq.5#2J4b/Hp&,YY2'TTM%!XgBn?`%C;K=e%Ms'66?Pp<:>Mq(@lNhlK__[AFO;F:Tm%%[dJIU!`@<9CEtIC6#d`+NK8OdV@+)M'Tkr*\ODZpg_[]dmquTPq[K0"_/V/e%>N!Bs7^sCn^s'4@@*It;YY.DWQ@&e8;FRU@PS'lB;HTa38?$%,@^dO*@^fgU+sM?nfWEf.fWBsC"CeiL[j!#Bj4LKjEOV,2ALpnt_f?6+j_,FF.VPtTM5CONR<8WIPT/fWaB91pm*fna]\Ab]L[TX#Jthl&2c^isrTMcj#[MXFs.Qf>GPGS!>T('[;ZuE";&M%PQ?$D'4%fI^^'3c!:EMQLBK:GFIKW]+:QNaX.id@k!Yf?OLH&D1EAuN^QLOa84*74O7\)KmWS.h:`]%d3=F_qD0EXZ2ig3LmuoBfN^>]+qpmLN>G1F8/C`ZWj\=EB&_p3/>8sE-A8`GH9mVo"U.F8qscH=@N3LEg=dK'oV#!5Q26Ys$-MoI.lIt"X!d10/.Ck;YY##)AkDGeZc,PjHe?!giJ)&idD5jF#\qrGeo.GG%O\D01`/)Y$@H/<)obo0LX/Sj6YXMKpghSo(f`U1`_N'6ru*s"r]-hY`_NL`:WAX9R&REW$M^oS5*X8u$[oJBHaqrnSAR@W_r'nOrl38e!TRcFLG@lui86=,]4N^LESi=$M$qnNQfX-5>fAJM/D&Ng94?':jY3iH-'Z^4!:o(<'e<\9[)F`-@OWj/frT3rjfF>=%k/`$:Sb3cKoo7X22C#QpCu@jbi'Pei>hiS_Zr90.I:+%AE;da_83WIQp,u\35f,B=DEdi.'-@r7Pga-/lL6!pW$?DJWiOu#_R+tK0iUW`2K4VkgIHAVdKP.WMmb(W(^?i1drJ^_jP"QQUh3*8Hn8lW"R/<91hsVQ1i>g/%Dftgt;]7[Xrd3YVrJ[.Hk*k@o\aen=oWQm!alTZsY('4sF-X>Vj?>#=NLO#SEn@fm;dC&Bs"9iDF&Z2@lqodB,1T''Lt!(e/5fp/Xk9c.Xk9c.X[_#`Ft7_d%d.d@kO:DoSDB(YMVX0Gl:Z:NG,p`aSDB(YMShHE_`@XS%qi@$So43l7K0p(U#K.aY9I%9e.Z7E[4&uR6.!$L96Wg7+\9Nr&$]_1P8e9NKh'&n'pCLrI6XkLF&R:IGqARA9;V/%:@]"oKC&Ldr3+G"tFkmZLeeGD/D5OBX87"7Lu->6`b3n^rB_7uNO;Gi^5IW4%HI-6ZSE((VoNd(MjhA!dSD%j-$n#8)q!5rYO2kn1nj54YG1=:!tVA\hol^MMm+YJhVpn+8Vh>dCuTmhEf#+;,09*27Hr^!(H((qnEA-]gN1C+jd<6mJCV`*SN!#mXau!KS!VCV=6bUBBMl7RZlp#!=IJAQ%J%O,!r!SUu0#Q*G!>VPu+Dfr">(MGt*8,>q=5YXjJ1;T!CkDT-M4DT-K^lrNIR6ptqo]+qpm]+qpm]+qs.Lr4,LDFHtc(9h!X\6J2I*@eHHQW1%W)arF"+JT1XNr(!!Kg60XJIuTrg;&TR6[(9i))DD=g]qGm*UJ"UUl?M\iE"$%;6U]788:FE+rpd56EQ>GS4!@YQr!6&mO`$m5Xr+t5\f,_:c$0uG/=KiVQsO6b48ple,gL<$r4YEB!`"XPb\%?LP@Y-^;"mU)fn^gHd`glm,='^PfIQe1LX0+]9e-]b:hl:Kj3MI_J6ct57'.GL!?n2"9H$,"%dr0^NVBL4k*>Pb:jX/Lgq!p'Y+:>U7h]Q5+2l$5&.c4$*bkePB+iX&5t*e]p@1?ik%f\Je[M4E_**lalL.`hMXMelW1OmoI<]b,]K+hbK9l^6St:WNQ>P90L?^Rg?BP'b,[7l%&I4pY`AR5([I@'l*3oJ7*^Kj>J4;\onQ-^*]emIL0%-Sd.-<=('@?ojGgl+Iau%C]u'KL\dHDE,b8H\8^^M7/a5a;fri+XB5T723lP9>R(^\98T*ZihfL75,XE2W7^1u,,5);`qd%k=bi!'T=olPE?LllFcZOnL-#^3L%WE!L'mG0j_>Y..+4\&5qN)kluN9k_+F%?7c>@+X!&E<"cHBWSfJeMf-K>>m-'fZ]/dTD\\G$GYTln9_ZhkoO$rp`G%!W;!M6Cr,\;6q9IFfVc6_ML/!C;_?L!hZ>STK%fK^BPtBl'341pXB.E`,1T''Lt!(e/5fp/Xk9c.Xk9c.XZ2j,MVX0-3LmuI]HG,FXk9c.Xk9c.Xk9a>eDWlhJaR%#Xk9a8SAR@W_qD0Ko59giBiDRCE_[o%nO(CT#*V\QTVJn$%Nd_37unXEe#.YL?VVYp<@aEQmTnQii,=6],QIjP$g@*l,U,PLgL's^X-P>k3O<>7]\+$=]BU/*.@U`QN?8Dsk0APFgU9@=a`nX[l>p(8E]L4-[0"LoVo$q4A[#b;7T_Wg%`H6cd%V[;'2e8.28dGAX.Wok3Rlot!tFqt@+3-'Y]7Q!=MJ_gbl=OAjL+-rWIWYXVnq?rF!9mg#<`iW==aT\SW=gT"I?1+O$=\?MHSD99%cW-DXddq27"8p9#cEE7\2UQp-UgfhhdtT"J;k$`f2&Je#,oo263'r4BPp*oG=.;rOTU[rRrRmHKo#X4o04ZIdAKhnHDM.ZF#Q9='D%Ma4+<'d&4S)q[o"Ql,=ui*:FV9^^IfL6;RL`oB*!LJmeZa/;6BK_Xouh?:QO&@oOGJZX912%RL)a'3k0/L.rUXN$ZXsAWfXM-_9q)J'9#cE%A+Z@U2rcFQo:bt0_L?a+,tttCJo>'AUA*%h5987!^(9sSh"oqm1t:$*((N]9@j?._oJ5lLc_l\QplHKcVeDeag1/!n,5NU,O#0?7JnP(dlRr#*jJ5*/#(N!7q"\l>X!KA[Vf1TCKgIp*jR?2ZD27MJf>?MF4(.BO<=f[b5W%+'OcV)n>ebXreui0`QS4qbFXrfqZ(hP4g#DfM)f"]Y[88T+.dYlt&[lLX%0uTCLHDuJ^nUY2+VJI@VYV4@H1`_)=LA:7?T\G,p'2.BCOl=+)JXmmDNFN!qcdLf]F%cKF>4cfZNCsrp]b8+QS"d6Ha[jIFfUhETm]"2e%-8*ah89k/KfO#*=oWsh5Y8KCOH2P2lqb%j^kZGcSjF`@hWZ`[h=]Bg'dFiRk)tuM,8uU%e:II-%B!p:#YSc4'^SV$b&Jce,aTJI'_B#(jXM1e1m%Qd-";BnZmqloCQDaQTV-Y[lfFe3/;R";%Fc0,j\G6]W9@+84PnlOK7sKAN4o1"B=3e!oZB`I&6E6WN9,\TH_oRap>To]+qpm]+qs.Hhb/C5n%D8H;A`)LN>G1F#^cH]+qpm]+qpm]2]GkE,[eKeU+pg31RlHSAX$^7Td,,1t=jmirR@P.tOlONec<:Va*)c%S#(clY(rbqZDX&EF1MhTm"e8XcQBOE#X0fE?(3=.KR)-Zs;!;gXu4=93+#!3_'4kKsB^_LU`#?dUBTG`]%#KXmLAM'dEQ,)"Jj'^cQoapdRJJIj/CcY_n\A&3KL_#G@.n&)0+FgXjF]%8!^BrnN2NXC*_gu)IA^WOd.s8ft/RZOY^^.D9I`LQAZWGZN!;')<,_@TMOfR\A0.VT]l[=j`eT.dc=1GpEA@QFt\]%,C+TEpBAr(fT'$=5aGLV9CQN;Aj*VViDfF16J%:n;TJJO(;R_Xl(5WmC#AL7A2l'"b*$atYX#_;ib!P-C4G!Oj?%.Y$7W!*gM-BMg<@K-fc.iIZAi/2V=!8/92ABJ*J3G=oZOe!\c='e%>9@(;b34rpZpNcMT/S_f,,p$lRBW,bb#'muX=a4(9=%nI*P]3rZ,ii;+Q<:'lMLWfj3/>8`_rUu?OQ#cH0pMEZT=^O7*dZ1?YS"6-;a5o)AE#u7>n!.Hom'XQ,eW!+*B1@aYAg5%>@^nSonWa?+lmkCgE&U*fF$TmN3:cWQ!#T;<;*As>HqD;>HqD;>8>fr#D`&mDY7?(3"G-@!Y/kP@^fgU@^fgU@^fgU@^k?9mr3HNpN4Gq3/8;h34fp;'t`!XkZ1ls*TU!Tje"EN4^o!f`$?P8DmMC+Vnr!Xlo^\pWu8[/_@"Kah\`!1k?]b#>L?"n8=O[\-$9j]b7m2V/.kBe-9+/-'n`F"^=8N\CNI?8"])a]=T1$p-BnbG==T$Gi-8l"ZlqZZG5jN-$kT/*ds%aQX&qRQ0oQR@=H%gs2*s6eM?X*pXohU1oahqHV9+*&RJn\^V(@%FEn'.jkYRSYK@)Se@2gnLkppYreimRhW"M/o7!Fud3-LE/(4$cmiF79lLQYJ_@R/l&.^'PcV4ZgdK58=?m,#O+"s%?`^6e87>%6:>k(Vj@Zb8hH>p^p_YZY0P*at`q3Df.'tY3m'tY3m'tY3m'bQERlrNIR6cX)`DT-M4DT-MD&%`Rg'bQR9[plfb3d.Q4GH8*G6dgiZ`_JeMMY>M573H*\+Do(\[!ko]81=":n36G?oQ^XD$j4q)N;O>m3i&m2inZ-f9%c6b[L)3RZ@P,HDH$:%l9WMF&Wg)_Z\#?=Xb48ef$V;1i1W\FM1H'r.^$^EDKlE.bBEVqXl*utqbW"XmmW#D0*Zf\2nn2,hHISHUN\[*:IJ1+1._T/>\@hLkY.G,1)#al$ukhUj<'ST_a&[&k>#a>Q3g.;#05,V":Xa0Si)dD!]!LZ;HD;D(1%]&S%j.e1Ci9RdZ+MeB4JD[[plgm\$K"V.s@sP\JFZ-k^>sn@RNWQ%(d8Q/p8ag.sSAPd;I8$Q@Vh',t,dq42GRk?K$WMH\1OE"NRSm7&8AO=Bp5Ya^VciVjLMj^SV=geLJ[O0?60hA,\E,5urk9'N#l'bi.iVoBP:j]Zl)"-2t:i1@*JF:#6C'NaIX[2B$Hg:'"_u6#c+DXhup\$kb%i02PGEcnZmjd4q^@f)B=UX\q)p5,#"X/p8ag.sNq-7DFc:CA?W-:-crV5YFM]0MONSj9N1t=Ug[f!^en38lfS&#PmM?ALC`KbPO5ghF])@cq&gUmcsBa0mC-E`1So'62p=A%G1O`btp<>5+K<+(Uieg%s@X8_X`sB^b?C_9q%/%@j'#K'(eQAodb"Qap#;$i=+MV>6T%:OuAa`6Js8Hj1sLR#@Q]D1ALY5ItN[B00gl9MgHakg[dW5g7$sOV[qbNj">TUr%Yj/nJ!$-begQu5#EB=PGd7+m+EV.o!fWF]QaX$bOamm5b@e\(XM%(dmr>EouE-*U!N4@rVZNi#s&SK]"=em8!T]R$1bF;I<1n@,",UW9^=%j?F\XJrd(aH7o)na#ee+BqhU8FMT)ZcXoR)R9a`>JAGR9LSMZlLPVGSjh1O_iVEpI.8\#`'M+L,uY_m`O$iI=;l;I(8QPacu$-Wb)(XW-GV\^PZaO#oONF7jCWMI*^9%IF-X5n;LL_+I.Jmo\U=M(S3.*5'e/oaGjflArpJB=JRaFch2:$Gh2:$Gh2:$Gh27"X'Qu!MX5P$VlrNIRlrNIRlrNIRlrHMBs,#Qhh.ep)%D1.@G,piBJS`J\9_Up,GOu^HiHuB)0A6cnb@X"LRh'=6K20J;Pr9bSYp!iG+FQaZ?G?R4KpRgc7ZafH%-=[3jio2j/"9-tq5eiqIF1(m4(SnL4DH]@'2]TJ;?j7?IRs3<)SJYlMF#[H_Mr=IU$;P>n?k*)UW;?iV=P6+qEVcte_,"`q]:l-.ss'p/52K$DqI+_"NLB.+(4HmrsUCnIKM#^!qK&<3E=44o!dMJ_=QhciR_G/_367-i4%Tm"hEs;M;o]`gTN*Q<4k``;\_;J+0(R+aB^PnSp?Db]iE%TdV&>rn?0`g(XGD8HM"-T-;5h=7[5\Xng59O@]TE272B^1arol#Pq#S%4pG.2=i*%3_hSbSG7T#oZ943"0>F"Wmu,=oZ!.[tBOSAreSaL45tF$@`9\1sRlVK8cJ&=Fo=)Q'M::F,>m"3+"rSol#Bk!>\[,p6daB8uR#j-^\970ogqJ%CWbu'q)cnXYaPR?qert'V;9d:oX"#ISr2+,)>&DPs[#o<&U_G;7Wd6lYg%XFidR#9,V)LKh6*_N?'u5q_W@@DdCNU=,b[CFUjE:Sg_GfWh'AXfW>6UgLi`$23fC"5eO9(uk'6XBiFBY$\pJ,phS;Nm+Cs>r#Y'rFD1=.UuIhb>1r;]QbTIr:*;Hil/,"aJV_(O(1c]#87[ac7X!3IjSN!Wp*SG$HQ1Jdh>qn\F=S`&JRdjb^r8>JS7fUQo1'="hm+!diqYB3IVZTH6LV,Pk%Kl]Ug#.I#d@O<>HqD;>HqD;>HqBEd>*P6MV[R"*%gMXlrNIRlrNIRlrNIR6o;cb>HqDGQ(s&hC8g%!P+JDZQ0C8IkscEcj.E+)%tFF+r:s-5?Y4mQF54__If7HH+Bj6?e-J*$m(q;iI7Ih29S.N'jG`No+a,]aL^Q*=L$^KUu=^Dm^SQ`c'!Q&Ta_3Xd*i)@,qP50.8t/is)S[J;>>cTtc.K<)O(A-o;S?@b@31Z\S%38oXqX95;kr=q6jo=n\RR/[3ag.p9`mZ13DO$A0B;%K*f/D(FcSj.njp's'&j9IYane?I3AhRdO+P@2H)SPWWV*Bs>`A(\M4#:'pCm,*:(2Jh.WAS"eJrdoj.DuW+jo?BBO/K<9ChZ0s8oaM@,>B_0l?Fp63E"l?T?45Mrmst<.%j7._680+)5VNURPtV24G$sUejU_iTTtGak1c;bXU;c$+^AS;plgeboI)RR;[sfQ\)*8U/SN6k&s8,$RmX>7s))E$dCtJm>VU'ol3!.jCmt?RU3O!;n?L[alE96A-BR%l,[r,23@oEc"Q;.QGp[7:29P)#F*Op4e.Ps)nJh4q,2/D/:@l)%:3d``-*o+;I(HOVTY\DQu\9mrk*&qmCA396EE!YM9*WK+GaMQ,DeoV!tgH+9),tgP4r6/:Y+NO(8P3E\EnGlZp&=OR+J=5mojn85lQ.E`+9\?Rs*c.AD0A&/VYHVQ;.huuW3O@nd`NuK#g?!D&e8PqI3dLdB,6E08"HV+5"Z^q)%R(al$_#=1Y\(ofq"`tW\6Dl6NugN:g^,#/^)%,iON87'o05]DWOm?njJ!+MM+!X]1T%"8PhpB?CGIQ.!?g8Qq:i^Z7-+#CGPSQ@&1/2fgOZ3e[_hZTf>-Xo=$b(`F0kd(A?73#q`P](_>2P-U%637O@iMS;[)$#cWId%]iKQ)n$hD_J(,QJgR(3XET\lhRe.KA)YFp1G%+i>2KZ=W_m;j)GlH\O4Fm&iiTW9jV%j,s\GBYFUK-*8C#1LpbY4CE!eHo$D4GHrp$o1H(&g5e?QgXss`Qr*!Dr&&,En,/4MbH/8WMBXefBMkaVb\@"7n4LL>IjrZ?%_::7X4Ih1U'OTjEY9oF`q@>gTr.gAG\LUmK-PdR[Ru9r9,j3YiUE(KWD+FSD:7n.CCXAJ-^bMUGmBkj8o4R%&b?&*KO2p5CW=uLKmoHrHq\I7C;Z8nS'RIM.e8s_S5H;RaQ@If`m-,anYH8$)FT]5j]+qpm]+qpm]+qpm&WJ4*[n>otaP$r>Zj=`-De]lGarltl0m&MXQ_tj*^/h0Z-+kP)46qF+ABBaU$]Bh]6BJPfd$6@/ASR=6DPlod3.*3!9TVs$8Y=F6,g3&0Y?su=>=kZ,g@`>NWl+Q.g1:p6#MM^gVMdu"G)RK#l7^jefkan!+/5P"T5D#KL7q)fG0;K5_dH%-2Tj?be@,E$kN/!*[UA-Q994B\&Wj;`ft,%-'XaXXXXjIXm4`Q!FIAPPu+\*_P%J/FgQZ=8:FnRaMQ,_WPsJI?$EhJ[\4[*ZL5#$AA.'FPQN$Hl@Ad:pU>c;F.QS0QeXH_a)F"nF#\riNSsu'':K[G6#0sn<*d6IFk&FEp1!fp76p%a\Rii8UL-?]nmWi,&6&K6o'k2FO<:Vnb;/q!/Igbk<$Gm#5S!HNe0W[/USM,UD]/)8!k)/U5'?"PM5VWKX=NocEALs2"B_&:.@ThPp.o1X@/.3BOq'C!QGiuem#Za'bl5t/_s@URro+D!"g1=ct89uiJM?ZA)#(BVt-A"hqhUo,&,@Ep6O::q.'5WA%a9R#:#-k*2Z9!:g!*[^SonY'&(4*%a?F%>%LkpkAb_SZO0PI_7LaQ@kMmn<[$%W\K6D%EB+Ks4CSsbB=i?e(hO8OV<]raID\kl=%Ft7_dFt7_d+sJ4W*UHfO'>#!kPr]Q1Xk9b3Lkt9>@(.&BfW>AH.N(l*>I$?9A*s1_3k0b4%>@SMVLTZouWa,a3C9II8tccO(/#fb2Zn7);H_ON;NqWKo`;N'`jEK65OnY1sNPe`l;EB*BlK>rftU%mhm(s%<-(GoAusNb`lp9u30gM!2O:dY;2?1FlOA=RtYQQTVh&)#I)U;lMaPP<*4pZQH_N*o,q$$b_1Mam_KeZ]K^a5J'qSpBV?C&J5VgO4^SeXb_dhLkt9fZ!4J;&J5Te&^foS[plfj+sJ3TU=[G'`GS+46psF2YE.Lsh27#ELkpjn+1i9"'n$p^oZ!5V2iBs0,dR`l$*kgo@6pr7/]+qpmI2G/tfdVm`+6q7sDFHrMd]csKm8ifJpIYXX'b'O;5BqfsZ!uI0`P7(2Mo"$)_cZXWfpKaeW("!-YI$F\?jVa@M\X0$??`+F)Vu@r2&0YIj<`H\fWC&&NE5P&r7sdnpp+lk?Lo^On25O\2J03GC6>U:.kT(/=Mj(T@KeKLf:AjjL3H+59a+Z@GmSXEG,sVMUD8/"Is4`t^2.&4f0"s,I#[!pNEL(U=sRnR9$?f9QE^.n=@%o,FXJZ3iLQ*;;aH^>?@q"5DmtUXIDZVWpj^obT(t`"RjAXUoM]R1loj(#6TGX7Ik?Da?@r[\*b1r&X&b`p[7D'CO<*LI>nhH6L9da]/-t)I/BIC@^pc[n*%aQ'btpUBLNh;fh?e%DPGM?LMQg8?Xe`btHe(A0goMrCei+N$_?A9)p![7D'che*4kcg;Gq(4GYIPDnGqqCmX]d!._/ApHQY-H8*K&ok+W>'Lnfc:ro`99;-_3:\Z>Aa1@Z](Kkj5Su*=fUG\BB^pdY]M/`P!R/]B&E:;jIo!Ba<(p!L=LRCsiAhO$h(<^p[a7J"E7NmU=*[/h79hX[C+4+_t3,R5,nK:4OApJh2tEf95G+gI;VB\!Rr,SN'_T#Y_!"CsrniU(JFnF\"S#8D/"0@XaEN1.eSiH1akZ!85YgBa`uVEja,ml*@BMfT+.\@pk`;YgOHB\TR7MR0b2-d\@qCg6L54A]:?!D*V1B"BeYd*WWaiEEjASLFse]L)#;NDIn0+%1R,0$jjh)U_AK!1('RD$`nRUF?Kc(&I-:7Jh2t"6pS2nXG*af*40b=A/l8AGQa2,#'-(.\T3/fUeHkSj>$JDm'oqb'9]4&Z5?.X%Tu;Sr8q!0.--rb4Uu$tjY>Uh6:T'Kfp!!'D)fUBZDOK7!BICG/pRtba,dNf[WP,E&Q^^lWSC(E=#uXhakPUW_$@TH\D!4.Om#;1]!@"R'S:)N()E5\F+"a6J7/bCNDmGH(>KSFj+t[mi#RAi[6hbN%:$q%K3l.IP3B#rS&ooG:-g\\!9'O=2kI52_!fqP?Tjq%ZV-RLWMMdo`2XLQiSua"'PCh>n0t_(qfjs77'>6[eDimi\G(11$P7blL!I1,06,n$)Tl,Bf\"VO_5ftk@;8N>ajb&=;$bB"@15QR<9p_]!5aN@?N1BtE(mVS.OU-TP:V3qCU`Bp*SA9$]DT-M4DT-M4DT-M4DT-M4DFO3;Z!4J;Z!4J;Z!4J;Z!4J;Z!4J;Z!.gR5'Et=hQ7dAK;UuA',/$gdX26^*TbX[EQ5DplWHrNd80NOGTBqiafl9(UUY16X=O<4K*1KQKCYuH#Hd(!nm-",P&9HR5K8*NbjA7Y3bF*5(/GkpI2d-g\[^#>ZuZjKP^J^Al8"V44f(27FeKq9"';cp*T-2[K*n&;91^XGi(:5M//^Gj<-Z*8t$'2g!imt4@'@+j`JD7j[WbA]H:PX2ohS#i??R-:<5I+aL'XI?#iu4Ep`hAMelBrYa904p$S+f<@&XpZAo6G'8"E0-XbK$7<#?j!*G'X3!gV"7KelL*&-1S`?CdlTJPhfZke=qQO^g)K:Cf[M4J$60hCLOE9nF;F1\iHXJqG+a)lTVMWOef>G%OO,aA9mhs_]bhXgXfA]/qOb1e`9%tQqXKZ7C-<&NHcE&7PtbCij_`7<%XC@_?H8.Hp6>K49XK\TSs3AAk8OT4:2F=Z5Na>ac&RlWB[**E12?!-kp$Z%eK%no+gH9)JCMWIt0+PR4Cmaf7Cq[]>[Q%n'^*:/ml)92gS+F?pd"$_6a&?]>%#CV'WODqI/Z!4J;Z!4J;Z!4J;Z!4J;Z!.gR2=+B1`,u"Id>Z$l@&Z+k"d=@n(qX)qM0B]t:_)S7(GpSH%&a2=k(Z@O]75!K]Gmdo;a)2N'WQnreE9`',k<*.q,P&Y!*k4UBo1M]%9:RMK@Hq\(6#tWc./7#ge)B.mKlcsXGkqS8o2f?iQ\5RY^A?%PPYCXcMSLg.U7!`d6QBZAGYW>tHc7^R(da:G/el3%MolhMqBS$*5^817uabdA2\L)CD*cq!]G[$4pG;]X#e]I#_kKX+A\r6d!`)A@-7iP.Sr;\23$:$<="MU@,%ah'VcapH%r93m:L]en$h'I3jVJR"-N7=CiJfKmCi/k,O/tG'5Q6$8[LA?k,G07_J,ZqThd47FKEt#QaI2eVT>$BW&XJ0KMpunKfK5C&'55bVmD-dbD')@EOZG?>h89nS?E;1QCM(!&b0M(m+:9im@+CE'KpWfP:'R7A`.$*nA:O.n:`8LRd>B&lW2FoYXK=/$X+d5O8MIh]2:'KKd-^U@:FT*!@hn9,&GJk(eT$GCuF4jFb\R2'P'"aV$45nh%pdaJf"AL\c1c*Y3g=`0L;1;jTRR2"m$:SC\`Cj%rmsse02aCM[$,f/ZE"!3:<7'?$&,DDVaoXTu?h35I7CJRg5.][9@A:6I;>b8?ct154Zld.DLT@*79Z$Hq"=EPRJ:eY!^ds/F9BfheSP[uPJZJGactkk"PL[oc4F.A1*sETE6iqfsn^EP<@*``ciUA"(H-cP3:67>E[plgU[plgU[plgU[plgU[plfjH@+;HfWEf.fWEf.fWEf.fWEf.fWEf.LgD18e]@)XWDkr=H49-^ej8K_^I%G=s+0'BY&=c%JBI'B),Eq[5NT;fBsZK@EZYJnC,d;i+P/^Oo\,>#mdpjJT0WhM#(^N_LDr:CtSqU*B=Q-[MCiJlpo^7@lmr/GTPG;>QXeGDhI(7*ena6ItglLIY@/*c@q4>J99*Z#5>@00W\A1#F\#Z[KNia7.mE0"eST`qhmgh_ErHiMTl6Y)pEuQ)^Zldl$=q4UdS;2uij`(%\045YHG\G+U6CeYd^7lW+[QK>[c)HJf[2-t9*s_[<*.cq82o1+!'l`^0)3>24D+<2),N%t)T\mcrgXhH\t21/=W*MT5;q"rtJ!r9#3omGr*8'_E/Y?U1M6(maP\9N!EgEtBu3rUAC5dl4f]S%o"T[+:p:sV;fcY"q#(fG^3BngCNm\gK9P6jPGd?6O$A57(X)ot8AMYc)e&K,F`;(+kmUEa$2#m33f-)kNjgE:q_((dJ!10Xg'B_AB!I)m5de&)AZ>/tG33(XAS%F2.VUo)=g$i2?VQ"Q[q0XhG7:I.S#(,9b-1;0]2"#;`RbNr;oXl!GOMV91\e,eII#ic!btPr!CMfMD#8^&oKB&mVhl1&U@$O$L.I*1?+n08#N_(I9>)K:e0O%l^XrK"G$JE8mc;@*ak8E8g.T33[T3XBtE;GV>sJZ^ptW5L_LpTqP29,K:Q5U^b<`hJZlHbjMrhB*K;p,Qbr1X>N!ZCZQPmEGH5UJ_<8U%Dj:)R\Dmq)eqP@N`JNiFm$4J"_f=c);B[L7m!5)nM>9"dNEC"c2dE&B)*T"]+qpm]+qpm]+qpm]+qpm]+qpmd9FD(`GWY4`GWY4`GWY4`GWY4`GWY47J-H/X[[EAHE&86ePHKP^AJ+;a,YauT779)5Q;NfRifGFT76p1&]r(ubXog'q$"i%WqZf]S6S7-#%Z:*BQ!q?A[1@_/b0.FlV9$_D2l`sa67\KqnjT`8)$jdl4F>E^uYs%6"Z^tDdA(G-[u3..t99s6NcRREZO)5L\JU`K0/%,h)1:PLs#IoW[b2;@sngA]mTuL*A-d0Ob4dQn*&_YY]\Du\9[HcgqS%PB$ZnUNg5-j'a<>a6.UiZaR4d[bHJh%c.+LsAJOF.B/"K!=SUkI0aP-C_V,_tiV_r(E9,q@OM.uAlR%^c-eu4P&[lR^#;Z7DpVkHC*W^P=Cu;l+rqXZ+Y]ePpn:$uXJ&Q6sIB/j&2aH6CkAh6d?K#i/jSMuS'?5ZP5uK2CHjrJeJWq'u9N-?kaK.tAcb[<,5`1s$VJkYCL-ti^J^e3j8>_`?_70"c?rH66OBZ83U_h*6/jGatC.\VD:[NqD#>2e;g*(9DTX2gmAW+dWE.W31pT[R6QG>9`F`mYr(ej)FSQpMfBV=cfa85?3p0,2\.r4*hU^KoWK/"?Poe4>K:N=LA6k+576im181.ko**[.0t[^TPWUhE:2cn34s/ogphYB<\@SZ\#s'>fpHejT)%IbaD"J"!qXV*+$i([jTe`T7f2Gk+h2R_$uB+^$E@uM!VqU^rW;?L5;h53DhEck+4T+_KO]@)67`t/R<*#VZ"$9h5(I0@Kq&2)-Y@DNpBUCYrOlsU?ZQJ5Mp-U`^?Y.&6I1=Ah?rLJ^:"6e=E0-9=X`$F#0-"JL-I5,K`>?pJ.n48?onS62aI&#CWF-cE4e%2a6pE&K96AUl%2EO$IZKq.EdC^qtIq<<@_MHc5i!'%Aj(hRUN[7[plgU[plgU[plgU[plgU[j$-FfWEf.fWEf.fWEf.fWEf.fWEf.fWBs9+1p(ElrK-V^_8d1p%pY_YDF)Y$FE.\nh6([U*)<`Xt)$`4>5l>kusR@/CTp7&f8[^u+BC]q9Q]+Oa&g5\PE%Y9hn+k8B-c'=*W&NZ!Q5#;r`)IKdeuVA=bOe-DEXKTm((X<%Pgd6OjPqCpA%c-\B'Bh1KSbe[JhL[r-_YLd9ZcoOI,oOSpL&U-!.AlkESD\P0JV$0;rU5&!LhWU7,+JP8rDGqF<#ga/FYShOM*eSF7oPNlMm>>?\jeD5_3L&jjn!fflV%tjer\a2pK\&`HM4XbMgd1FB/AA?;#HETipR5Q4PN.LoaJZ(d6&Uu_B'RqeGG05ApXb0k-4_Zu#B6?iTJ8@U+Wo!aqiB?dr*^(9o5rPp:NTG"'O3*h/(etpRkla+?f"oV3-Xc>U6a6=CEDZZc,H8XLOAt,me&#P_T)%L8+E(&T<,uNl.a).a"%`t\=WQt!`-[g>?J&Lt]BhL[YR;7#_@;b\(GE\6b?)O;g'[C*l93)iI4aCUY6VB$l.fgQQRm3McYfL"3=Y*cH4EX@#%]?P]O>#+)Sg?ed$[Km,kW-XS\,J?CoW0%Pn)GA(6!>H;X0b7AhjB=W@hl9*71g`bL")1/9kj(+fXc[FkVraYkKCo;c*;9&[KRGoV1Y0E5[$)hX$n1sRqDE;:Bj]$a:l^*AXFr\qbX4)kk1)5@^.KPsmFM1c($pqrf+_sOim6i+IfU+9A&I/()=_GkWWLU7%]$_p9P<.dV>s37Ab(?^)6N0F87g/*R:Kahacf)sWs*eO.Xkh%Yf-9s6:og\\:B%q#.h#1UKD1N=W(bY+8'Y:5mUH)+#C*!>cp0c?6@qoLkI!4cupdYU>?;:YDPA7hET&n'oXOO*?ZOT;p?DZ6'SM#*R,lXO?P%#l.#-,hK,6XNQkEBCtjJ8,6SlOLP0Ao[*`^4-#^KpbX%@5531T;ZD"'MWl=INO?q1EZk43&cN+A9)('Z^j9N-8h#"$O+Ogm]*G%j#;XAY7RM"p)<;)K_=iH$+67cm;adJ,mg;NAB_=m2(JOJM&TY:5@ieK\O%'I#Z8)d-7M0fYYfBY$RRp*!]<\T#ADH"/(OL8a3KV?@$Jl#,CmfDZgCBV2Epj(2dif0!;h@mW#6!ngqVnmShKYu9?$tfa!pS-&qemSi,1r1[pTr_Y\ha'Y!@Z]iWpF\25Ze"W;E4BPVrn+@*Xk9c.Xk9c.Xbmn+'tY3m("!8:h2:$Gh2:$Gh2:$Gh5]DcXk9c.Xb].@lrG@D>LhN>$$A+*E;S5:h^/:@IOG`@;gIbS%I\QHH#WGYCVqij7=A+7X00@rgGdujTtI>Un6Tmlk;i25%rgL]*B88>$I2tl%Hjoo_mq:AiN.(rR^hChhVT44lj_S2ld]t:qH].sf8[DFlSXRs)"6tl@X+O@Rd9URC0,l#4HGW`lIF3eY5rqjjP8`Y1:>@)m9*jWEW^"l>"/\hREfgY#WBmRl0-[nh5?4[:SppmQSt]T#^j9=c9UFKY+il?FU>_:&$o%3putJr#jlm.5lhV)?1Wt27t:VStWi8C`!MdW37JL$tfa!pS.5TO&n*l-'T,qr&]_58.9NV.JT7HeFF%:rSAX.'tY3m'tY3m't[Jn@^fgU@^dQX!3f\4>HqD;>HqD;>HqBI*4lrt'tY4.#CtWFA9P!ea,Y[thoaBA&.,^2reiT'r>O!fK72cONKP@G]g[U$T!Lr*99&6.bT.8g\%2(5lTS*$cnPrk6AU?n_[m:R"u=88%5MZPT)IdL^0W!%!4h4foa?l*BOKIiaE1UI9H1-n$)t;4.qM#bh[Z2K'BCpuU,upP=42cIUu??!Ed:PE&HO['!dT_eU"kf\*[TVuFm5"oq&gSh"*mRAb&hop8+,r^QJ>qb&U;F_,^#HKp!]2U5q_\r11QEN[=72)_nHo-^Qr&pXK=j=iB>-2".[;\e"+VP'[N*+8XOaKAQtHHCRuit1F^W@4P.4UXh10[N;e`H(<7oUotpqY+H*=1OfV_FiDo/XDc(Gere`c8`GsGZ<3J>d)HHR#_aAjen=T^WIeEWf:F[FumEH+*`2=\-s+G`jIn'5Co=E\G=0H2C\iM7J;]'L\cI]r5srDWaeO/WtQS)UgDgIU@KW'YQ+5jlKJ-6WrMb:IoQI;NGkb^?[>R4r4qdOalB"lZ(ZX>`Fg9nV]L=YSN1[p4nd6pe>X+RW+V`K9YGZ6TR,gQhlDd'#5,o%&#erGqcdg]$dYbq&&+a/Hg5Tnna%^ta9-oghu&!(6+sl("ng9j_s5!dqeJ&Qe?=6]bY3toWR2m^a8c"WTpPe[d*-cn(3dp!D[<)YSQ_+58qVq9)FmmY*Wp]`/\(&:]KXu?k]_^OCr(#l35lL&IGH9X"k#^h$O$BA!I<7k?o9UiSTf;_HetuVnn'CE!'>qM-'V8pupXkKjKb80C'C0DRD`/2E><\)F\^I*>J,Z')Ht;das4>0&J^=C[2%H]fS:QI_;6eel.g"7/#fe^8f]qi[dnY0Hgs,hfuG27Ro_8BB:jKT?+kJX4nk9jP^a`]G5gGpFk+W!c\Lu(X58;H^O"sl5H^c)LDDlMchJ"cjsq9.75W:$6@os::h>WqfU'C*uc*`rC@mrp:s4nmh1C\>ubn#?8(]W$AL_]Pkms8-`5hS'#5pYGQl^J&-9Zg-oB9Jh7Jo$m6CR6cdY1.o:,%5+5`j]]'F_.S)=-NlF[(>QTBHbYNhsNp8[^#/h6lNIX1Cce3aa2U0`-<2:^:7Tg&A5$[)5s,Pg2G:]:3X5?Hn*@qote?hr`pT5WiYper$3WR7F4[,X)l2gp7RIg_*HZWd@@U$+>W"e"Z#PP"o"d]->,biP@D8iqm>Ht<_H5$);2pY/W6+!nS0,eQ./u>s3C02-+!_B>=40eQoqg)QU'Al7;&Jl/NkbL7=NpJ*%[dc`#$"^JM>i/h$`Lr7\>[pepp12:l)7>qP_aXM7^0-bOQtF#DV#Wr+>1qsZa+eD7"ITDVAg^N`r4?G!06p09fQ`?"d1HfaTcFlUmf2)@.`/t=u*r+eN@nl&PpoYo[iZaj*GFgnDU9sq"!]hrp]25n5nNN1t",rIdnXKK"9oZOD2a(p,*m(#+V%[Onp&gPTje[UNIGXk6[d349RVMMS\m[ac.0X5b9D>gTM,*cqG9u"neL)TVndG?;1PI[jh??rIsccr+6bmdSJ0U-AQr5J)@/j`mjB&8,ALcASSTELkpjf[-F8dVT4G@jB2GQNEZ$TbI1ka&_i1[`O6s7,-("^"`RVPKjh/0FnVm%J>eP5[?+YJZq-1KN="c!%n-`l)WghTmWiGBOeAZL,P^gR>9)U@@R;&/^moT1AbKA`%hfo+@^:iKVDWUoNGM),pW_EorX5UcF2*TN68)^5]:iE9&cSNr(TaG%+))]k"Xo(p2)sgT((;GgcFafa_*WM#b.(k95<^]>D?Q\$[D8iq5e_!p!'AJC]779Q9os(X-?sC>AecBpW_!C9F=8/\Hqd3X2rNEu;hE&/Rq-2]&uUr5SP:_XCl0ho[YQKROX@?@,fipb@6pc2B-)@I(NC-!U0#nTP`CI[,B@D%;'&r4D;[&j-(S6:=4@;B:#BF`hZHt;&2RZTl(4LK*?#2#8,,,F*D7(,5C@@`12qIRHhZgh\g>Q@eMd%1s1Lq=N+,I!]2*?;UN+gT18MpVEGEe_*j$Y+>SZZ)uYZ<(?9MEBBG7Cb$\RU7u.%Z)uU+cE@?(83;:U:8K&eMMR(ekh&p?Yc[W#bMJRl>"=YK0qQd:t_^[%.J0;s`T!VMGes#]nUJ,/!%qXS@>[UNGAfVNcjWJZLfW%;C^Z)uRlJBG.g:K9eN6tHtbWcY[L=kQ;5'b^QI=Hhi`Abic\p6d;Y?sfhslYKG3mIfc,KioE\C=;/+XgM1#;r*YSA[OhIZYU40:[M8cB!.`=5k?fQ;]Lp%^lI*X-lK4@QWqsk@Flr;1.^g)H$31&+W,-9#[M8cB!.^&=>Ht:1!!!"8goB+Dn%KUfpt25XlKqD2D>!26`D_Y2`O5gJ!!"JfgPThO!!!",j4ICK.f]PL!#rE4[X.J?B@Yp*GJ9YljkK(sKp.C2`O5gJ!!"JfgPThO!!!",j4ID/ZE7FgHd,DD@Lel/9oh;Dr:B82cPsX%ZfV@r0CXR=fn?i]FdN5;i/8qp4oT`l")#hPj$-E?;'-alU\q:dX12U9gZ4\=1O`UGN8Mjg!!&LDD8iqm>Ht:1!!'6CCb)q/gPThO!!%P/@p>5@[do&f5=G65l`BWoDk@at#CP%r#rniAT<7-$."u:E>r7#tro&;gJ)7hJHB$g,h_MndW_>AnrAJ"@^66@Ti28.%4n##iDmQVd5@H%SHi;[sg[4a8s3SJm?4?V!oQ/:T(A`ICB6*f3oq`O$i&Thifg!W'S6pNppm:$m*c>`-/miIbo]Q;U!.^?eghc=S@4Nf'6=3+aQh+tNMQ/llZd.g,U)Lm$U^TQn"`qW("rSqhdf-0lo0Q+b2e5q0mNo\[50B4/9Y:/hBE#oK2s/,R8cp*TKA,Zdu`j_l'k',)@08T.p)8=:tbI=D,X.Pbu$Mb(Eq^D0Wl;uppa\Oth00/sAr70X%A?kXL"98G;B%d(05.0Be0BESMeR2a>@U$+>fN)f=!!!##`3s,ZZ)uYZ!!!#O34;iOCod'Xf\b]Cb0QF=1qkX@_L=W9a6J--NZVbdgWC&S7uX'ToS)f[o@JsDlH^;sQ1&>F2pC_X^PmZP?b;rPjl]j%K>hc&J#3/'^3BJjqNpR+0>CE"@K,Zf]@S\LhGh8Ur"[NU'Il?7b6O9H`@m`8"hre#`m64-YMF,OYACtVn-#m@j58tf8c\nlYZ]PdXa8^d(#+U_`O95[!<<+-&)2tY`O95[!<<+-1U*uRH!C*d5(5iF)obs0+0/a(IN\#25OLVP?c(Vp=h83m1)r6%HR=[nX8@S?iT'*!q-/4Iq8DlkH1qug_XjRNOnj.qmI?O$pT@@Trj5!+=j>$J31!;fN.=B0CYLbl'hkW!!)?o[M@P3*S=Bm!!'eTfN)ghF^SDS!!!"C?sBn$J31!;fN%tP!!"p;D8ipb!!!#'EGR/6'`\46J;n&CZ)n!+!!$gTgPThO!!!",j4ICK.f]PL!#rte@Trj5!!(Y2[M@O(!!!#7`j)Yu$!,NY0MJWLs!!$EefN)f=z)ooBr>6+^(!8'9>(#'&q!!'gSX`I^Segn0DgBmo\!5KYa(#'&q!!'fH?s@Ke[b;)h!!&\/m+_-;o!du=]19QAk;bCVfV:n?]2WuiSRPg.XT/>$!:49$Z)n!+!!$g>[aeDpX*jsJ!!"LmbBmSnrg(7pp8Sp8Hq*r-!2);fX#OoGz`F2ui@9Wa4!!"DWgF<]f$31&+5]PFWES+:l!!!"V_mYH?[K6F/!)OZD6+^(!%8?3.Lt2?!!!!aES+<3fN%tP!!%no[Yhu2!WW3#:`QoD*4?R^!!%Q/YcZohXT/>$!#13*'o-W0!!!"l3,GWTCb#Jc!!'uH>K(#T!<<*"-k=u]%bhZ.87UB(A!;/E9mCb#K69l)<[5j;`^`F2sO5\X\3!<>_.gF<]f$33[j30*of3b8Y'`]oMkfH8uK_E7PC!<@9L[T+Q?JF6k7i7AkrgLP+/pZ&je'Sf>V`4_M+Bf&i/9'>R8US+Um?a?56(Df-VFF>m_lPk_mTVsd_N9m!0e#&u")Z*KuMGuKteRoP;t]KEYH$mZ*U:a2]W@]S@]rDJ-<2O\04nFnYlFb-YcZohXT5"NYcRm*jb%CbLM[1pV1EIe!%8q*X#OoG!%8;#DC_&KkBh@?!VQ">DlQlG30kM\/!3hE!'o-W0!2Y6`"TTqmCo]O3.f^t,Cb#KNq-[FG@9Wa4!!"DWgF<]f$31&+5]PFWES+:l!!!"V_mYH?[K6F/!)OZD6+^(!%8?3.Lt2?!!!!aES+<3fN%tP!!%no[Yhu2!WW3#:`QoD*4?R^!!%Q/YcZohXT/>$!#13*'o-W0!!!"l3,GWTCb#Jc!!'uH>K(#T!<<*"-k=u]%bh\$S((-eV:)1P<5pkqe@\A?E'X5Sqi^Lp,6+S^r-EqB`O:ZA[K6F/jaq=QPR=j!*4?R^!%8Y"/"fkGXl?Re!!#9ppnmR1PVR\)G/-4UDO>bAY1[=__XEke`qS([J+Z&U@9^]Z>6+_SEl#0c8d3s!%bhYcZpOqJ?B9!6UQ+J^h0Z"k.=9>PYnV)aA61,rK,29s*rLWbP4gfo[L9T[^6KiioNb!'k7->61RYD&%hC"TSNp'AEjB?#6Q$]51^IK5`0!>MWIH+TMM`D=@;DI\KbcN)\^NqFAeunAb?-$fC&!lFnKMnd>31e?s]X@LdJ2IMJ>tX&1n0Ht;,b1Ka7G1j!!#i@r0ah5'\Fk2AiobFG8F/XlA]QD<6u(s''8g8_!nB\[(*!rbo)tru!]p!#jq>Csq$i0.F3#poDX-0`iiioP*Cb#Jc?*_mTCo^ZS/%-1YZ*!$\Q*RN4Cb#JcDIZni@U$+>Y`*E6a00T/Cod&FhS62p+6==4o<#IbWr!EIAU\+daJ%!$1"XYtk)[O>Fj5$0!mr`kLVV^(loe"eOL^hWiJ(5e0C$G6+`n\(F_t/%-2,#2:U;gF?Z:!PTZ=S'bhq5TMY0En2fuA@D+!TWW0'275*9rH)aqonA1?XS;l#[8(uJeJ+/PGih7jpg\VJZf3W;of5!/,JVOc:`l:G)3g$MSll[fN%tPr%5>lgPTj%YJIYNq3;p!YFYVV4J"8*`ZI"?Qqtsbgsi(&XT/@R7,bTFGNAnZFU:8p*QY<7r&jsUriYacr5&V$F+KD+o_UY]1Y^Z=e_)`qlC<"r9Y5W9n^#b5pH$k(QQ+K>0AG$f1\o=dBi:9NhGVZ`I7YH.]1F%C]MVtEd%\gVBiXP;K.s3KJ5Shp\2:CeNl5#6R1pk807isu=Jn?^9G>)@)"!'i*D(#+U_Km7F7Q!ZQ+C'D$\!!':V@<4EqUf\f4,VpJU">gubif%oYag#%rL9/fD<1J*l-l=J;V.[s)3<$nC&k*%9[b,KJ@UU!O"rU&%D=d;NieREPrAMVZ(V6+:BA0Re7DRK&IDR8a?PSpp[b-.=P[0#(i!.\0fX4WKeXLm(KZbM32KsJP'>5=GiX]Ah6!<<[hD&)qFRs"K%BD/g=X\^q.6+_CLB?XCD7ZJ8=&I;n"[6[LT4a^%iTfEg>^fu?EbR%8,um"4W0T?9o)06*4Akc[K6G:'l9r'ca1p#E-5tIPTR>6*4Akc[b;XKBDPj1]+_ogDLlF`^J'4EnrHBI_Z,kVhr9t/hrUIar9sdV$?'[1bG5P2C]I(1\?3W'YOI)tI),L"pjn3MSc[Lb5.h[K7g4pJ$@L?,hR.J:e-3!r-WP-D(JYcT+Xe^e,47;OISjc=6nH^W,Vi7cjb.!9@,3,GXOD7)7RX\$q/GJLlc/Dhn2n/>3T\PqpkAYQ3d`7]0C7h]KM1R$U;e;b=EA/c+pbs>63BAfN)f=[M@f,Xl?Re,.?$6?sBn6-_\6^P[?tLHU(liLe/_;mtYVDeU7moi74@NE8oVl%toK)p,$/Q\SO];aNYAoJKWK4f85L`$KQdk.#/BSkqq;[&\s(qbS=3YZ!D:AQ3a2M"8GrJ)U-=\2R6AfN*"E&5%pp%a^`c(dUVSFV_!)P_nD<:6W\MRcu)1TgAj'0NqWV7;1l]Y\p?d2fp5MT%ho"!g_qIfCOit&AC?%.mq-gL]Lpn,P%N#r<7Rr(,ao;cPCSPl3b$gQ"8kLJX<7\)b*Uu$Qu;2pO4e;#.>WUKc>+4Oe]e>iQF_n0[@b?*6A,GXPo-U(I'NCbufQ;@Yc.@&.H.^Sd.J%Mhp2c.rT@69M\V*4Akc[b:_i(#')2m`)\E>Ht:AO)5VeD&'=X2Sec0^ZYQ\ao1S+n9*.WS)XIu]jJdOm/1.IJaf/pr:>U)>PVnADasN)[Ch=,IqF13pk'8e-G3bKrB1:66406$jX2JPBi_@U:N;p]IQjk5Aa)b$-]ChW^\1%75I3Stprg;l1]FNfN8JkEMq6bu^.S;Lj"L&hlXPj6A^,<%tqso`+bc9dfj%N3bf"HVi_mYH?[Yi^K(#T7;T#!`O95[!SC-!._?B@u]Zl[);"j;Y7knG+ng=+N"b]WMNmFjg2F,F,OetMcNK/=lmADj&\ZH,+j?I.MLPd%biIB>AXhXK^Rb]Ht3gIuAg=!e8$:,Io5)'$2#Vbq?#$PYt/L;(Wm2[ae,]>G9QOXl?Re,.83d!39L3m1cuD8fcY9%biIB>6+`.MJudRbGE"tU&2HLOni5ZoD#"MGa\%0XRHn7"V\UXq[VJ6l]t5A<'$4?a])#HlqL,sK3CI7[CqbrA_#5BW9.\9Q-.=OCbCo)>#b+bC%^$>^>7T(KN^PSbEe]kp(_q9NSTY4'o-W@Z)n!+=9[GoVm*:"lI]-WfN&U=$35TVYcW'UgBsd;D&%hC'sXk@!*D\"Xo-7KTD=U0A%lIN=kF7N4uBD(KXo\k)SbdN9rGO2r*=aOj2YXkEb&17!pd&THEV(b>u5IPr2#jSb,WkJ=g]rM;0+NRp#-.8C3hp=O$@_a?+JOf'$3[=bp:hLNuqDd;].GS(TGg07HKDd9O1<-b[_mYHTB=5tN>FoL`X3dGa82)L>m2dUE'p\aedp%W$`eaFT)>s85S%JAY3a4+$`T28TAc`#._Pj7X?:oR\h,uY1d#OaV<,dp\m[T18S63Uk'!@WnD[6:[K98BgM2)>X\aK!]79CYHLg"j,'o-W@Z)piJp^%207Vo,B`jS4e?sCTY>=E?Y<%re)8=K$EKO4tWOqft6WkdXa2W0Lp^k7SQ\A/]=^FO]O&$N>[+40p$rq3HBeU@0TXa^67-e811h5B\Ok66"s04%^ErTT7*2tu]:^\HnHlCb&I=[M=>0fN-bND^!jBV2fC-LM[d2X\^bM#+JYcEC^A.+1FN@U$f[>=E?Y<"-2MJ7>dc[Mdg,AV4h7LM[d2X\^b)>0/!LLOLfS:s%?jgEV*Ap"a.KWCq/%/)OAX%W55@ln-n,56&j[V-.oP>V;e;5,2[J,El,)/uc.e"dP"/q3F78=(/:KCo]O3X,(VHMSZ_&:b9'*p0_*ur33<_YcT+X'e0FB$:(lKdlI_K`LDu>,8r$,">n[CVh4pgR3YF-2c5N;<66%RA;g=i_K)Q)'4,<+/k6r"2N:+IDh'3"_P?Q)sgQ;mM1b?*5RRl)\#Qr*$8U^k(`>,@CER\.p)F?6=Ile/gO*%Y)>[T+_Nac2n-tR3F[M@O(n^pl^fN&U=$9O,^"e_*bXk6Zj/&Yq%`F2t>Cb+kN*SFKPcb0;GpsG-%^AEW%h_0FWJ6ah`bYu0n'>*caQdC8)p6;(Zlau+8%.*_#3!_L\pp0B.b,fdbBNR3IEf'D4X^F^0[jhouf;De3lb`29`"[5Aj:t`,fAGe$.89<261k*>cjP82G`[THg^7a?8ImT,'VU_M!KBhA6/S]YaUY^L8?/>2PLXb>ph,*k'G?>l1X]h:o@TGYkQXd%p.A_dr'<8Zk?DTE8.[s/3mCZY"6J,=YfN&U=$9O,^"e_*bXk6Zj/&Yq%`F2t>Cb+j#[M=\Z)nRuD&%hC'sXmFU\nOKgbK7Yo?&`Q^Ta,Bp4IMI=$rEpcG\i0L`/Ndq@G7=u)WQreJlKVMKrV_k)H-\?jmdu`)G-"D\FJMob_jp#Y8?)UFKR.du2>,Wm6`TD%N9]fVWQF[$NK9u:2OhpWcD]"!2c+,==E?YlmT:WJ5XCq@U$+>&Bf%r5<2Qlsc+M6W'>]&':=MAt=#8M\Yj-T9\U!i*4hlmD/cO,X*u07A:k@@@hY:>`e*grL])4-QGDqtpaHoN^e7'V/.N,5(U6Y4gatGQcOB$AnO]je*;Y0K\18>J]8GQg0M2Y');CZa=ro;D_Ls#=r(%_'D5Y1Eelj-AZ2oI,G5`L24DncPgq*,(W^LT*ATMoBQV4?T0A=RKFCn_PA^]grPuMq[B^+bR78ZZg1MPr0,F_7Q^P]/*UJQj#=E?YCd#3AJ25*P@U$+>&I]tLXT231AM*piHYUad;TbW2B;QKqkif6CV&.Xu_RuUYi\oLb:*8F:&iX=-J2@=fN&U=C)(NpdL*du!`7:sK(#T76@lYr.b#sBC>dh]RL=e/`S2UO4#u^?\A4dJH),3I`#%u/\QJ(Um8\g16kgqjLe);rSQ@hND?PJec@Y\5H`#HB%60H68^]DW6+QI2)R+jll'@4Mu$0E#mGj_'\HH8SD`R`qD3plD>Cg+N'F_(K>g'thrW2-iSf[O*e,4N2?&Qs\'R?%]W'l=T3l=-[JRT6_Vq+SMc/JX@r=%]NDS40=g/RhSX`'oHiCLM[d2Xk6Z/fN&"A't+k3MJ\&lCo]O3X,(W3[Yho0!e@JYXk6Zj/&Yq%`F2t>gUjT)s1l7e]ORNl^G-6;s'CBYanH!XO+6P2/4jFD/PB:HMR>!Cg\Q&0>mLM[d2Xk6Yt[M8et`jT>\Z)nRuD&%hC'sXmn<["md!8PT&@U$+>&Lfklk0kfBaJe(V&_2?2?$174W4L\dQ!@"_9KHN=P>Ec!('(F7JSeD*DOLN?r.)U:>\e_1rN#Grqn(.@GE'qXC#cP#f5ql0bG9&,J("8Cp^Qg*^W0S8D8n7,ZLRf>Hj3`Gn0t?MD,U$;/uV-mcDf4=[/0?8TDJ?8K^.oq;]d"D:uD0/+4S1=eu@R+mZ;b[l-nq5S*fLg-U1MRXn-:P0VO5U12?VlrSW(($HKT4_mYHT=EA/^W!X=fN%u[fN)f=[M@f,Xl?ReU@$c;iC[i?GFO$CLZX]o&+^UtcNXkjIk=]tN6:IUQEV1Q0D*fS0UNeE#\t8uH]EApRHMoRI;#jefN%u%(>F^``O8)q[T+-V>PV"df5XLgr5.E.]nRKNhrP[JbClciq7FMI[&C0VIIjSjpl/X#s5`cs1,V4p"pXp'Dss@ako*K!,;X(V?p]h^:T:@oH8VSH)ZnTXeLafI,-Xo][[?:FWG)La^*5?"lP:Oh>gf%%4-,OZ^Un%NpB^%9f(p$TG!W'bKo;/a3j;B:5T<5/+u]mKNIp#a(De3!,jTGlt\U+/?:Y!^Z%Ee^!OmLM%Fh8*3m3l%PX#OprLi(,>@TrlK.bIdck/9Bi%kaFK"dY)V!HdX&O*l;OLLuKt2jDO&CkH`rKMDE*KI3Z$4aAK^\K@KYo0B2rOu2[tK6d>g(5cCDhj1#2KIu\2T^k^@K%&jYBjp@HI5X-9J(%h[mokP%qtnfodhUcBjGeetPb`,NT0PbQ"_8/sXcO\u#/XDR8a?PaOCFX3oli2;ECKosWDOWXE/`[M@P3,M6%$U#9"g[UNGA=?j5oNbubD67fQF*4Akc[edSIV8/4=pq0P`UUEq6YC^W1[K<[^Co\Q1MJ\&LCo]O3X([8pKA@X=rO$96R1j29H,KEXgA4$6mltsoY4LdmF2JtTrpSQZesA2#'.2=Ab*oQSmqBq(N/XdQ_-o2`4JWbTk#>e5V$;:Ee?,$aITBEW+fj`=.Fll"Xr?#`<,6-IC2.Q^"2,AJ\SardH+[I+1lnYY,#V#0n(mqhiHs8HTC=64!/fkK.DDq$-aN4P38k\\s6N\Bmt]jL/?lkrr';cZ9DDBC9aqnAJQoXMq,W^p2a4)9YC&7(Ep:fDat:r/M0qs'lg6I\PY.hi!,OZF87>`-Xk6\L)f2Q7Co_5r[oN3n&jEl$2^NiHn^FT;/Hno$EdjkDIuD%,]-UG7bLuN7Cb<+MHt$B1o(=B%kg#?j[$mCUW8@LcQ+$E]:X5rbp-(>kZ(Pu>Dc$%HBpDA(<)lYpC?]D0=0!sS933dFlDeTAiH1!(jb6K09APt-c:9@Jb,JW(U\mt>]NY^_9)q5^_JSC1-%6_]f^\-qE)MCNf\pt,:Oi?M_gej8]Ma7!&"f?.:Ddt"^Mrs)\s=)A^:Uki"*H)Y;?"mnUf3CZ=I`7f'UR+j.c3rNm`]tfN*gK[Yhu2MRI_5Kf?E^r8.@\H,8!un;"qHc]IBF[fQ`i[6>U^c2,XQ?$ho@0[&@ijo6/\s4Xk@qiB-;k8)RLc2fdX3j5F$-h9t_W;>4C2)mRu()Bh`A7AXuZo+iKe^r?mkcef:C/o,qIHpE6f@6Y'D5sLT>5?@AYB]b9>:JYA1&P/`%r&m&^B0a1OTAQ5gfFEaEQMHB&"8^%:\]@Rpk814Mc&M1A;l5ba7J4VU9LS]8^0!Zh^/;aK4ju%3KWh/If,dWp7TWH?9*(2*R=,ID)s:R>TMLHqo*=]NHQ03VCn^+01A`e&AQs$Lg=]MC.f`e,D8iqm>9P'B.Lt2_MV(t!Y\r)oCb#Lt'&/:\`O8)q[T+=iEq,ZI(+7=M!'_j>p_]'\HmGY[7&q6Dm&`0a2(\h54.=9kFO0RTC1Gc@PFC[^D^0%-oqrGDYR[dG:eP.NYLt(En9(hoNX0u6WWkG;tF`dAXk/McXeU?`X8(Z;9/);\cQrF"<\Ck+b/cA4D.I6;HGI\WD>`q;b]u]lM83EW;H$FUn2t4Ht:1ll`_OgPTj%G\jE?Co`A/`O95[Z)n#-Jo/K8@TsusgF<]f.b``r(%TtAoc%8r/Sk/3.d+&h>SI+\QFi.su5"#qHJhR8eB`TK7m6ZmPr`u4;*FEa+]V`.Y?KWqeW$#H[Ij-j(&uD_.T1h7'rBIU8AFG-Dp6g4UMcV#6F!ZF\Z)nRuD&%hC'sXm`(>F^`"^nC9Xk6Zj/&Yq%`F2t>41)*sSDI0%g<9Bo3#Aq+g#\P>=1P.h:"cSHq`cJn3]a1utT9=*pOl;fM0D5s_@>?s5CTFUDi9XQd=Wa%S_R7pB;U'9Y^;n@?8ffsVo[QDt+-f_tkB?WAWg)Mn=9S%9]!*$7C>8;D2$ti"[kI:TEo&8P3_M>t84J*Da_l!#q8:QPIT((FGW(55:+&u7qWK)FL)u*)l;GXA^c9Io:^id7*`Ua#DM'8#t.e,P`DVo1?@Y`CoLciNqh5O_XRg#;rN]VG!c63T\S#7K#V_pK5=KY`Fh:X-%rc2:0aHW\/[ufN)gh/\7q?m4!!Q\)A*?!O``t$:("f>Ht<_-.4S!P?V"%HWnImZ\EJd^qJW@)[X*)Vr(4l9@U!9SfN)f=!+gn%[6=A]"VkE?SNlKs5EeBMdrWkGN9F`mDWA2:86VC'iqY"mO"gn^C-lVr:\PH(a&;`Cl?qu#)(ePb/(`^ZhjT@,U.CsX*/`iKX>f/Fa0Icp,V#L%[ehj=Q\o<]S:2MH)&_&jZtgOj@NV$]>T`]YB@oAu,bQV1P3%^J6,kKd"cr*:g:GLBY#8uWPt-Y^i*9Q!T[W@H`8[T.6MK;uNXV.*Z6Xg!*'DmS&m<,]d^/0r=^O#Lqk9=4QO0QtgF&<:.rdlH4fAFmS;qFnJY5nrp)>Ip21N`F$^<^VCR;[!q0o;/Tm\VdBDIo-SkXi5L4R-55m0$K&-&5;N;JebZ^SpgCM[[r^BB>?EX>55u%SbpClfdn@F:5Ht:1PVfi!cJ<`R'hTG".Lt2_@U!]S'e:D)/"Wn!.[aO<9@)Jj-5Y1ube-Op;egJn?B("?X6Wi&eEHCdnlM8#*#_[5X(kUV9s(G!CK<;Mq/0MW;BLC-?CglP\f)WW:fER!C1_ca:!F*Gl0/Li1>bd>RH:E!F<[K9:>fN)f=[M@f,Xl?Re,.?#;Mn:d_QX8#(m28b[YICRSZ%O#:(ph4^?#?q==.5\N9;p_H!EJ%0TXqa^<-qi9C9#%FRd9h"V)++2k2n7\8nM)Wo)GTCrtBL(!"!!k^>L$<3WGXrGV2uUF.Aj.k.g\jJ6sZ$D$mHj'?C>8p]U`O=lHg[LD1gT?^`/0JapdH*qQ#$_7XO^BRDEQ2SQq\c.g7!>PrD6s(:E;2pAnR^C&jmNu3@>Qhb:SCWlbVMe@u50`&(j2*U7%DY^X/Kc!#I2DpGml^*@UZVR,g'4X&Qf:,a;^2-m$2:Lj4a)@mi-[O:+%lLAF(PgPKWrqY&)jf*m%tCD33Rk4cRrbUDH;%nuObu6-7O;JI`F2t>Co]/-[TWjh$:#J:>Ht<_trViW.p%Q2)7:fqRX\sB-3aINApaai`&tSB3tS(md69XZ^F5sXa$OD[JX4%^555_P+&Mc1drj]+4koI)#[ls4fN*G>Oe97-`#LQ3Lu]Z>LJPW2?84)OJ(X;3-pMptO&B:Cr^?3NikDPmU!gE8T5El"bKn<$LUbOIcPlD_j_(^lB7AG,MY(cIDt/hLO.!_jmPj+BHXg!HlKXsBD]V$;`l?Kmd_u60nBDG#0pYg0NjbtVhK>H:m,9GeV[)'[D]PoZVn\U!O$@b\27Lf1Z&s\X*_NJT-E"/sS6GFnNhDQ>Xl?Re,.?$VYcZPYCb&mP@p?4?fN*gK[Yhu2MV(rK_Rrt8lu$0BJ^o*\,I1-)2NVl/);gq67UEb]E4:,UOCX8^CQPtko?>W/MFgY5\%?*.jYCK2BcbgisuY!pu@DJ2iU$Bqf;5i>^nnXJ,JiW%6ptoanS_j?`BZ0je)%4nbM=FCQ0:J@?&9Fi?].T.t:gs42GjJO#9/Har``]N'A6X?0A,HKob3%3egX5_h,I=DHM%gjj_ZgqUG+4f;Nm(%BHNGVptV4euM_V%&q]gnicqrUO)!Plg!--*`ZQ+YIZfZWhjE3,ni;H[ZcWSHa0^4YcT+XeOHdFfN)f=?rpiBZ)uYZLrZr]_mYHTJ6e.O`O95[+WfAf%biIB>8>IkoA!,%b%:-TdoeOd3ifi<-<3^nTLu")2)%"ek3#Y-qR%6,>_nXE8)/P7f0j(Coo>*olPi[f*M$ptO]5>gX_Ms*?Ca2YX/9MclJe(4Q-+$f`UIMr10rYW&Wk@K/.&-(_PQW_L=W5:(Xc^YL?6Y1fN&-(A$.h*SdB4mAWSW)(8>e]9.^2t^ZjCH!hl$TI@^;N@P`C*,tg+O0*8X/1r:"puK)&knm;g5jl;K::SZ70Ib*l2j0@m)LnO6GVf<1:9XNK4SYksCO[tN)-i\tlO8=uabl#TXUS$EqCb&n;#e-*!G%Um8Z`m5[n1k1H&/5Hn>7*J2LY!U(Yjh@>$J_6BN`sUq$f;Rh5Pd%:Lpm&.efN)e.[YfL9A6Z=@JDGut'e?qlfN+q1Co]OEV/.Zje_7:1@\51(@l7)PY*6bb5$RV2;sa2J`lG&MY]@*$iAmTG^>SrB)#U.&Kj3W.<*p2]nu0C5;bHpDc3=]$,ccn"VE.ph0sT8so*9K4(lks^lGQN'u'V,\iWWTB>@m8'R-8=W;tX/.mIATJ1>Q\dl67Km4)`F2t>CocR#Xk6Zj/"f55X]An8Z)t6hD&%hC'sXlua0oG]Z)rN`_7!O(D8is#1:C1&[T18S.UFl&W:&V>Q&62h0fu9[P7q\MDG^!::8k"]HBh'7PqSIPS'I?qWRSeZ>+!XfB>:ASc-<8n\kW_/%]HhI-Iq#1Y'Rl>H#fMj(Is24IReH-9OEI;s]jT37Uc.NBuQk17+c'P#Yf:[`GtZ?aLcDmqrYeJZ-k8#G#8n!F&"n='LGH3IW-4o@5fr+XYp.QQl03i]`nX@;E2p!!WOBHp_TXnY=@JJ62657E7o+)4n!lL>Y*pKAYOROSB?5%(9ks].57/\X1>c3fst,9RAi_//EC%3-7JnL<2QOu.UgZq9=mpo+!&hpPZf!:C=Bq@PR"Ws*4Akc[ON?QMJX[;V?"4LgPTje[R**b>b1c_S!;,U,dVt+Ei270`hlC*%\0B9Vt5HC[$7b$X0^DcJ(;Z5GM.Zr#U[e:3];;\01)tH]4%&hQXI;5ut:gNqaRMol^Z[1,GGIJK(mo.[[e&q^VEdsALh""64re9))\&k7`rKniiQ"neCXmigpZ,E%"M)SuC(s*S^hc0WpT/Q]1m.AUEJ/o2=.j#\m9UiS+rmUWEj*pU.q:lrHrg+W)'@Z!]GMHPb^Vq;e^1$s0n=P]4%su1g+-^N!?e6#kDt]SGis-"O+.Y;_?1!a=BNn;O]QQol9]adFn:DQ"S5tge.J<,`c"b,pf(mt9T;ekm>Li)qK'MZnU=PX@fP``eW1Ok)?iY*\n2%htRf)T^caiYK!d*C#dh;i2J+:6UbB#.4db9gLFk3l#N98L_6O6\@CDrPg=7m>]S6Gr:7f^0+,lT7ssGbODi6#N3Apb8]rI(Tt[55P>,*k/g9ceQ4E@QX;`RDquhZa\a/*bQP.L%O&T=IAaukEl#1>Coa\R[UNGQ6?WKJ/%-2IMR[)!\R8VZ[aeDd>Ht:9+Zfb6(#+U_7GP,L>d1==gM.,7!V@TIp5]a$P4;pf![qFTlLtb[_kIs_OcaWC40nogQ6p%>fF-`D#L6*#KaTCKfKV1u#C?5T:b4rZT8-j^!_]@Mf\:Tf7SsBPEcZ223AE>'#cC0?iQBS`U9Z7PkklbjM,GfpB/Aeh'7u5s-It[W"hIQ:o3O_d;83_"&4VA>>^m#&m8(lPX%S%N8Mimn:X0>oL&=iqbDnaClD1)&3C7@Il#,^cFP`r[U>>ISTU3f^"mmr`gZWRJ1uIqrlK(u0N@'&D?!YqKG#o!!o''^F3>KCeVrlse:S!'oICB9mgt)d\oum*f)m.(*i\P6+Hgb9rYPdVr][NF(;r^'SH#j&P\$C(Z[*rGf\R8VZ[ac.$>Ht:9+Zfe7(#+U_7GP,L>d1==gM.,#Xk6[-OIZF,MJ^>@,&Z%60%a3ZD7'Q.eBneACgnCL8QG]tje9D>6)_tOAKO[-9YcpI`$cU[-Kp2Pj\b510t_u$#40(O"oV=*`b#MqPC\GI1q[i"%#dn-1![Zb&7rRUIQ7dY^6QF9b5]>CUF##telUP2U?lGhYh,t/!I[ANI+UV9oFZQ"3[)Fuh,\j&eJQ\foqGO$<3AGOa^3!$I-IIVjm&`[:\uU<&c5b0dn]9FDIc4Ob11`PkbiFai,SOm?TnL?rpV#f,EKJL_>eb)%t*Hi]A]rBot'oGq!2;TL6"If148kpHf--`IM`"(,L=9"r8\ajbD0GXJ,.8R(rmeANigD5Jo0V$D.V@#>C^S0[N^Ck%+nTs/%-14_mXU%[PD["/\nf(>7j2F#&Gfu(#+VU@9^9M>8am"(5O&SChs0M/3GmS"LUiO5:Dn)b.r_q+W,P(M<.r\F_LuEK,>)X%)]?d;5iBg*_)&A#SYDE'j565YFhN5?Ed6"1NF."=S%<0rHT#LqL/otf"japeU@,>f`/-M4ae[NZ#o.i3"P_m\8#Cb)q/+_56$[V?On/(3jiX^&*4%,5M)YcZPYKTM`*gT"8XX[p(A[W93m12O";0IESH1GCWkm2K2)p>FG&09#gX)#ITXASE"DbgA/sso-6Xr_B%LXu5Gqck?$FR"9$'a62*+,bJ1mOqE*+9@F\0:'NXN8cT$,;1cNjlQ5c.sOj*L308o&u-k*@8qt:f@aBWL`ha(#+TWZ7TKh23a?7_mUcV%bo,0gWHb&l2fXsD++``QE[J09$5ms>EO)aD<6@dA_:%QVu$)Hin2m3XBqho?+>B'!9t>+e6*Zdoc9oobK_bNIoXt;7r1[;DEE%VFbs+\[&@EPYCP2"^!8mtF-q4`>,5)eJ6N8jn=(C<7'^#XGB)#=8lUG=[2#;sRrj[#i[Iaj)5hTb:c3utbp$au=/>AYFi(#+TWZ9r#([0j>WBm8310%a3ZD7+ZAPbCo0*V=Id9hQ.L$QTg_Qn,`plY'Vcm*ohHmIJ[?5>`53$eE.pn_prkSIFW(qb+X$M[UNIGXU$(\*S=E;JSdh:&%7`2[Zt9*Z)uYZKFkF!Coc^6[N_7IgWB]Sb1*Vsm&fSPp6tAul!4kmLQW89?1eBuYh;umV7_1#mo815"5<#meG3,qMrSb6=+\>b,B.7B%XRqkU:19c3<-[,G/[<"7_'.*D6(U>[nI&NSW;N,H4(Q%*Z"*hdn)i4F]d!PUB]6*#_*O(Klb,W"MJO;(\A;8GZ<%6U&"D:YTU<]XVC`,#(,t2KkJ]J+8sAh3'A=u>Lt\#e?MGeqt;dmp6j+nM8qi9cTTh_T7>uGgq3;!I.X\]nB!&lJ7&4s!Y4s[n4r^7e@*ds?EO1E8BYCF\R8VZ[M@PSD++^RlbKrD12JJh0sIcbYcS>gMJ^>@,(u&#?s>K+[MA$DfN'WWAT7H/WTUhjg^D&%ghE-Yk#(;19&p"Y,S2gSk.ntGM*6XpJh)94`S7>Z#OaL3:G&Uc%b0:3A/*I9"[\.g^m5Y(+SrUPUJd1$[iM,i1K&4972QH5HKqJ'BHLB"oTtpfcoBo2[3$5pDkJlG,]C*K1Gm"*;fcBk75If'9Fh/>N/HhUj%B?uk$+.kLuHgZ,t@BK`gL0%b"#Dlk,[ecaC/V7j$Jo,)OIe-GR0L$`VT44[s'f4djuG`"=q\2[V?Hiu>CB*[f"7N%r+rC8[YB7h\h3eLT_&a)^reu?gWD18@"*52L1,"0kn_KUVA"jg*1IpD*1VOV.>5_%U$o2%+NQfXE_tL?N)joN%ICYD_j=`C#*0bH_6XqjiQ\ML]RF>kN_QUl0J[T_K-dgO?sC0L>8ajagPTi:#U/NL[V?:g/(/^IX^&*4%,6YV`O6tDOEFr82$^Q)krdU!0%a3:X)2FWK793amB=+sh\UW9oCo\IF\[C,6YcS0SUuPie2&(BroI73`Bm8310%a3ZD,gZe[l/RN[M9s=F<#+tL19V+5/jrSm1.mn"l%2LDn_KSr>"95Knk>JKf=]e"[/TO'n.:$Um_06oF[XXeSEQ6)tjV;2K;e8T:CFXiotikYjB3V`A(IIGJTqo'C'eGlZIYcH4g_E*JW,58!ceI`Y>-&<^F5(.q8hJq[5+#je0&IWI3.g>uO`Eh!@m1#U(4Ah,[`a:J(uE8<*MQ[?oJQHhs*nV2n$^^nY_pB4#UP]m,2>1GmQJn:`9@?T8U.PeX5gi9W<\E$*L2Fo<@TsF2a?$Q-)@G5VF>.M](MkV>[UNIGXU$(\*S=C%Kl'7>(q,\;[ZtPl>NpeiqhM5q'EriPQ!S1J(:p_U>P:88T16sT.HROgXCibGPr7AVLdP9-"0;$q`aK^+6PCfLXpi.:?\H+F_slfrDAX(G0T%V>2Ha_30Ns2lbpn[S`D3a\84hZtXYP]>!_X7#4jM9WnbO,245,C4%PhXcT5IA!uq)Dg@LP\;,`[24k0S]GE6t1F4Dc&ffW,ZA/>LY/r,mGET&TMCR*n6j`>_*MF^T)dA7"5/,FqeaC(MkV>[eelGKWV@h,I"9UZ!gk!2MZ/".bIdth-jNu?s=MWec5UlCi)morKN?%1)B[;Z'rqQ>ToT(bJTL1>9/L\i_:6pG@3%\_](#+U&%^m,:'\HH&/%-14_mXU%[PD["Fd?H?Z)pRW?sAagJSiB7@TsF'Cb$<;5[R?r63D\]cJoj"_SpSV4JUG/7("'o%0H'J)TbXhs?JQ1DMi4q^B=`*_]-jaq>\fN.=R[UNI'`kf)-SH@QgYcZPY`!P2@"l%2(Xk&&?`O6tMK5F%<"h'\)>Ht;d'=O/6[ZtPl>M7nuDL]F4DSlB^=FI_4XR!,5Z,=V2?hVOGWCj0FWN,9HP00jY_mu1LQs7kOKul':=mUdoKml!Cd0E`RQf-rW'HFhC!&J[(E-6FAAlklDQR?3ZFW+kX-XjIK'[4eF_>/p:=NhJP:;!T55N4PMR\'Q9S88g$QgI^@Qa%W0lk=kI-YtTq+mEt4[aNp]*C8FP-NH=UBM%Hh*Z"B-r0d&=TIYCrpqHqp_B0M7qOsKT3aGDA1[;[pa.%*)%ed*Cq=u5i]B9f3?4>c2Mc9,l_'M'(;hFo?O2)k:n4EE1;r-qe^],"^rp"(inV;>I$SNTPrI"^:*\5.=\H%AH&(suF*O_4@[Zt9*I338U[Mohec^)EFM:bcP_YqS60!`WET'4$&r]Kaoj<(c:\;=g3N;&;]EuJD;u)6B>U4D%oh/uM*d=,m70qSLfPRH\ksVGeJq!=k-\;gX5./a%322o;>gP]6U62;H0E$5D$\FC:F>rhF&a6^Blbk=PdfqkF8uI(H#ki1!Rd`>lgDV&6Jcc*=4EGfac:g[rl?=-@Mk>J'pO,4.cX32o++/#F*^27e5QCX.I-mb7n/"=h"Fe)R2XJ'A_<$@VG2JmG@2qR[:dK7?Cb$<Ht:9+_2VGCb)q/gPQP/eq%\W[UNGQ2f'u\Cb&H![aJ71=eTtJs!qu8b$L-W8Al8mLQ/u3p=>^+%/!t@LQRo?`iqLH.1W&.Hl0tQ/\S/c?4So2oMXeW7MlZ?KfrF#"IR^ZT$hqF1:,i93q&(ft3+('$m-5JS.b)SiPU103q2_E8`kEm2Le/&4*k-oCfXl@9^9M>8akLo3bc76:cmJ[V@R6/(-/VX^&*4%,7e-YcS0SUr-SE2&Wh;knr&R0%a4%IVlKT:"]2lPb5R9F0SfFbG8r2jcO/Lk?DI`W.3Pbe;)!-Y)69[Ucfu1PTE?F^E7BnG6R;Nbfd'=HnDdl<,='OaA0Ng/,T$boJLkZ^Tc5ktK`10%a3ZD:L2i!I@X0En"fZET0K\E<1'Y]>q\&pBCtSonXcK9&=HY->$5YcS>gWXZ1N;Yh*^M@`*X#ht5R`O6t.fN'WWVl1#U(dQD8iqm>7if1.i3"P_mX:^loV:4i`XnmBO/qR_T0A6g:'q-C*U4e`d^+(&CN=3k$.*#=Kg%s)modj^7=Jh2NgE#HL-?.Irl3ZJplZMBg)>&g7o%&a6[A8p3Fne:+FB[bL#iQ:hNl*@0A)*6s)!q0T:pHZD-Ph"PpChMP(/QDV;fZn=V+ncEjO`Tu>*7otL62$0m3-+A?m9XN?KSD<6@dA_:%#!8EAB6J<*](#+U_7GP,L>d1==gSt]j>7j1mHc!4#>Ht;d)n)">[Zt9*[1g`8r[;[mH5tY,A#GF%B)>SS4PS'C@5B;?#Wt!N+Zg%CXn4C$/Y!Vp$9@'@JmNKjEr(7m3iEl/SeC`'HKj"7on%[!3$[2i%LH'c%c/6?/d`I^LN=77I;4h9]@nP^#U]dMZi;65,PnBg.-S:iTucV*1[n.`*e+%W.CbOti9XngQ958-ij%P(cjL;1n[W`1lEu(CSTkkdpr^dP6Eap-\WF>6j?nA$4%Wga\R8VZ[T,E*[N^Bd[XrA8[UNGQ2f'u\Cb*E3C+%Y7KFlR4YcZPYCb+M"D<6@dA_:%#JH"KHL#35_iNP!d]I`9m9E/_>*n\'dIh@D=]iXL9\fMkY*#J5ZHceUS5.-Rkm^(>`9kdLI[d!)0*jqCNQ$/^#@(Y$VsJ+"jL\A&:JrjSN:fdS"L\i:-pS]JV743R-\?$G8BrqIf7e5OuX0->HU^@:^Fnd1==gSt]j>ESd![N_MRYcZPYCb+M"D<6@dA_:%#!8EC\(Ub&%on%&"[UNGQ2f'u\Cb*E3C+&X]dms%CTp_\U^]4?LE8`o'A+O3*[L-3I0E.J.(`FEKi=;jaNNuDfV?p)K`<@r7/3JF;diPMp#qiKrRmD%7`oqZlS:NYb!$2^075#.dJKPiCP)Nqm5%&_8uGMM[+n^c?(p+%[$s5k^(kf!3h6)J0J>OA>S<>**V*pbkq]^N/N]NFV%ouO3@[/gm.52R^+Wp*jM@>;B+f+siTm\$Lj+;mt95pADlfb$%@)0'NXC$nNOJ#@9^9M>8akL42J?LFb+Bu8A/D8Z)uYZ`!tJD"l%2(XkF)i'r_RW.miM)gPTje[N]VA<\E$*L2GHFkRUF,Ont=A/FEjg*8-D*CUP=ia1Zd[kR-uEFg]qlqRM]VZ/]#[8iZn:IK`9qQm]_i2S@I.?kZVCG-F9(Kn\VgX\9IE#`:o;/pYWXes7j2ZiOaTR"(-QR0`5nA)>M>1Zg`VA:;HVt>_%*GK[gWB]Sb-8#%!4EVV&8Wl*'r_eR7i6!.i3"P_mX:^fN+e6YcZPYUdj!;1#%S&7@^Ta>d1==gT$gKcNh%>?9H(hge)0IjrT2c(;K@3I@_'B9WnTn.[SQC@$R3!r(b#%7gm@1;hjebrlem7c/50%a3ZD:MCcX[mkK>Ht;$NNfN'$JUG[0Pi6UCb*E3C+%Y7UqX(8fN+e;fN&H8D+-K&[Zq6/Q!mn)'.KQd4VCN#-.RE&GXup).;bpF;jo`CP[5M3Nk,o_12=*BpZ^:"laJ]dG3L7J3c@To`*:1j;'`$+C`C,P-@nJF5R7)ELh!D<6@dA_:%SO5lO*Vk9VF'!?5.UrfjCfN+e;fN-85E?estOZ%u3jaq>\fN*ZA?a_lMat=gM<)*eS.=0gk$fqhjQR:NUrPnLHKQi+l$L\9#-9N[R=ST#fPd$:gC]9BLF:'I6V$HBp"b#HtTRTm*rrg+fK)Tb@^BgG=3rSQ.T[O+[&O$hLNo;$Fa"hA>r]k8GZI?Wk@C2N4>\QXJnB>V)t_6u+8.mgZtCb)q/W=cR=X'f.oG)'qrJo,)Oo_Dg+k22fqiLq.[IcP::'LBoK&l$W0D"'p&qNn**&0q_/:bd[-e:!KT!]#"Ke/PTEV+rX]ElSn<0H*k^%?GH5>_5IjBClkdX%tm\'H(s.*/7iH.;3o#WQD;C7!J_aSh2cj7:5/b-C7:;[T,3DmHQ'&TY/L]K3ubVn$au=/>7n/h@9^"=8<'jU=p[N]8Z_RWBm8310%a3ZD+2P>V-\#8"#FdEqrN,)d>9$Uf13$F]##,4:.ok:3%O4cfm\RbFa_E8[YB7\A@l<[Poa+T4O4=4Jf`m+">-8W"l4i,ZdRN,3iPa'djo+Pfu'^P#l;Ug_&aZ)n0?a36[`)s0j]P%Is;GUA0Q9WdNX'gcPS2K%/g%p)>Jj!Igj'^_?Bf8A,G4$qZbut$U/t:os8UHaM>>@&'dogk`mA07qHB+/)\O0Jo0V$D.V@#KPY#JAC8=+SnoKHg1jJ%(]";`7)'jMn$!IWSgdiRqT+2k/EjRKleauF'6ML1/NoShKMH?ark97pj8(ODI!H=tgb$:DOELjq@t8@,T)012_\[WuVQ%ap$PBYcS2a^9F`lLI:6?bX[nGUX]bn_MR5H].i3"P_mUb"qpN]sdd)s#G3l.!bH(%/d9Og%"[ON9PUuG9lGECCb%i\05N/I'r_eR\fN*ZA?^f>B\fSJc+q't?TiYE7U;%&]#nICs$[TF19@0kTs/hsgVIMqcDD#JSO>>]c>=KF;:UH?#;XC4-=4qGUZ7YrM\$or;:V1'(ZOt)IZedXD%!1k&QNJ'p-8A1NZ'T,:_]VRQ"R^\Jj28Z*eFf3os7n@-b-:^[ZE8:0Cb$<AGa6P@U"s5@9YT,H_8tlUeP9%\R8VZ[M9t?(Ub(5MUVpdWl`ojbdJ^4$JW],gWHb&#hcr![]Sn)ToL;`lr&G[TUX:ulo?Wa5F<_`N87P2PTFsj\_+B$qk1?(Q'+H_[.(u4,PF!pqU,+ikeT4c?kdpk)Gji[<\>[PNlnT3PScbtnmVm$^&n7^of175.*b.21:G_.LMc.)D.V@#KPY#J;[,'($T,Y<\E$*L2BB#p4[?P8<'jU)@G5VF>.M](MkV>[N]8Z_R;5!K/Z-2Q^$rH^E^r.]*02eAV<3u%Q!ec)Gmns@Gsqsm^VY1@-d^T]fQbFa,9AM:X6jUdD3^i*tIqF_V#e;mX=O6S8ajaW=?:9P@7[XNe)'/Jo,)OEIgMc95d:8#]K.HH?c\CBh+*mrOp\Z?4lef>c++*ncI-o7Hi:ATDJURJ<>[Au!WYcUIZ_7"C#[PDYL6FJO`.me!(D:KWYIe-G)7C8'gD@:5+Z5GR*UHj\;;lq3:,jPI.P(rghs,`269$R`(\DOl;f@$SMtH.[8O"NQ7FGl-&;$j$qXSU!YI->Y1KCb*E3,%USf[N_M:fN&H8D+-K&[Zq6/Q!ml/Z@-.c&Q0iiX+nL"+rq*Hap$PBYcS2a^9F^FW=cbEoI6=YV2)WG@]q0@*"4Cb=4qH@Lc='Tm*FkgbsD-eCS/FeGO:0thDtl@r9@G[hQAAJfBs=ANAnV&n%=&kEVEQ(mC,j-?14:SI/>IBo8SghgMcG2Dn`q-?G(4t#!j+rED0jeK!4BV"7tu\R8VZ[M9t?(Ub&%28Ze:%W!ZDH*FDUYcS>gMNI[s;C*b"V`[j%Cb%he`,;Ws,3>&oZ+k,17MjVh9j_JX\$AddHOof!gXNC[CUQ0aZLpq?c7)s.6OsBM#tC$f.o4#)/ATnK'.`qaX1OaSILs:S?A2rD#=G[':$()Php>0K@<89=TlY$EFqAI?(MkV>[N_MrChdou5?7GVO)7=K[`Ob>Nmp:fkmo?j]-V5f[g9'7'f[iPZQNkhah;BHL0m+)nEn(l86!-cC3PpTTROiKJ83M"/@QT\qa-H0eC3b/3tS`h`O95[&N=MV(MkV>[N_MZfN*`D7CFX]/%-2IMR[)!\R8VZ[M9rC@uiQ,1:j^)^q&m2*nuR6)G+Wn4bZh/`X\VmTZ^;u6."AkSO30Dfg9&K$gSPChB1RPY#'>d^7a.`:[(/No0t?G.EcC/7@!ndYO;Y!Z<8$`4q+2A>k:jUQd8aja+n^J)`O95[D)9gFCb)q/EPo5*_6u+8.miM+gPTje[b>>tXk6Zj/)l;#jaq>\fN+e+GdOP@5E0Y+A`8W%cUP@.JkhuC0+QO;^G%l:$fa3Oc`*lMW4es%l/[XuW;u=PqgKFJI:na-fO+>!eqD]M];\kKADugFKE`34H+<"+S3?(^K8cn?_eq!<=6_74pVMTV!sX*Me_^[o$#^/3]$O1LPOO\'Wh@,'3A:;8pfu1:s)3Ka8(.@`qU7C%"2#uah4I?W?Jud\S=nK"Xc;Z=QTBbCoC0/ScGP-\k^>EJikr+#a5EY>bOEN2-2?OC:;TO#j$!1cdoYI'Ie"K6Zg0AojO`kIe-G)7C9ZNK&nd2tHN6Xgqm/VH.dL[B8eD[SK]NqpOg%<['ksalg"WI[.U`3?b]Th9l\+5,-6aj\uJTp(^/SF)/cB&#NK%fr]8M:N^FXUqM`#o:&ocVcbT'/Aa8]jhirIAPX^!m=O.pqEmFmg_)4F3_&BNQA(q:qM=:^DZu]%ooAN/iJO;WUCIQUlM\&^.ATnIFLp%tn=d'/*#A26kf#i[H:,1mfPQmo`[UUrGSe*jg:-S@d7*ik';*.uSh-BQ0>T_UZS7>3@Mm!P*IO[-@9^9M>8ajaWK""hAaPh&C<[372moB,aL5P^Z)tG>Cb)q/gPWLL>Ie-G)7C9ZNNEY$m?_a+bmf"Y[A&#h[UNIGXgSIN/%-2IMR[)!\R8VZ[M>bN4^.K)GB8?G7I7jIrGBP',@SX.[ET1YHWRVW1`7e5!UU(?QTaR0!=Zk:9[K\Z@Cq'Vbg?fe5*E5@eFY:#UKC3E&4%/NZ108Fp&\>&0<"bQ/=)rhRXuZ6jg#Cq5.ZtG,*MCYefg%9"gCtsTPd`Z=-ZEBeGY4j"4o)oW6;-NcX@C$2%.I/\m:^[ZFm[UX&WBm[VE;#@@L\4^,GOP'D-P#h^@'[>4\eL"J#sdnh[]"Pa#a$UFGA-b-)CTeu\(6Fh^-7oM!)ra0*4AVgB(QN5J/8rt.A6E"9VTegYk1AA?c`G[_X63nb%8GiA`$n=prl`/0&`A&IfsM'7,QB,^&BPmB_ff(`!3Vo#l__6u+8.oI=4['6ZA[M@PSD7/b=><16Y%`<"KYo=8pTTgn7a`"]:`(p+fU&.0n'O&R_7?DBn&;M92DBs*+OTorbG@UT8q.'YqBdpfXSt\fPj#/6@W`?5UAdc_lka(A(#YP:-9DOBPmb$c@9\l=^pZjjD8iqm>AZ1KAZ1K"h*h%U?jrYP5Js-kSE-,Up:5mN8RlBb#D%QU+RT,Ia1N7_X$L1(cqF@4HU$f7i3G"g1`i#NE>aKHDM^`=h)J^+[K53A+omllk`lFt8RS?J3PO#bk@]C;$mOr?XVslR(?j8t2=h@mf:4V>0TM(<(f/A47Br(Z4jT:hWcK5^:F5=`n'-ZA@A\fN)N=fZ/_1_R,95nTg"jTjo^gblIq+MYAEust2!A"u`7%"dT=inR/ek_N58=A!@/EK$nZ_DP)q.pr618QkS_F!ZVFZoTBRMC.Q\pWW>mp!s3YUJcAjcpI:q$5ICkcX338[kN$K[p@F4grIhq[bV-i\0s2oq0(:I41=d)f.e6o6c$[n5;-1t[?`7A`V'BukRm3NELl<-+rZ)uYZgD..s6Xa2]%Yei^Jo,)O-*a88:/:3)UKtX)?^Wk"9KH;ZZ,<.PC%l:PeM$n`NFa=)nAKQqmNPXC:!DX/c_nu=6bg"H\cHX2RoQ9*J4=n]O_;bA$/54@,M&X?OAU5'9N"*\GpL*[KN.V+"JX74n:m\/?4J5GBOO7"fPs)(,CeiYa]Y5gJO+U9YYK#0a!`:$/';N?DK-a(ZH65'U.3cqHFdXCf(Y"lc:Iqk[*Id(u]#QOLu>(%H60Qp[bVg;?&-BMc=/%-2IMR[)!\R8VZ[M>bTCb$lL/%-2IWhX!,Z)uYZ`!tJD"l%2(X[o"e:LP8:fLM/hFPPBS3p7,,q&).N2[`E2I2k`<$!>Jq_9@9[>ZmJIG6\?2_XnIGSR7&IS:OO_'q2W4@t,@cjXg'&<>^EM(mdTLEd%q<_%[lW\-9483Ok;H>g=t;e]]4Baj7f"g^IH5cT^8rFp?6o9YeX6oE4C%CXh4P\s/b;/(kfMS=>7+\LG%YSVF`"d_098:cF_'ZCG!/TU2:).uWFaVf-g2k_Dt^mci['Y+VOp4-pX%/aI,IVk.5F>C@Q70QpZ7N9E7[a$N)e-U@tP*sk.FoV]#Hr(>?+`^)m$M-gVI$Ms>,_LE:Q$i5$A#k&+Hr90S,brukaKf[HQ>9W,&@iHTQ@buTI#u1mEi5Zq0J[rFEF7Y7cpNOOD^70bY^O.!op6O\/:L8g#HVoZB1=kB78P>apISahTl0,Wc^KPmb$c@9\jT_7"C$[UNIGXZ@B/(#+U_7GP,L>d1==gPXJe[ZqN7(#+U_e^:V'fN)f=ieD=3Jo,)OWV!OckjIqU\H>[#@\^bR7P]+D)ibc2gR=iBj;_YOUJFc]<0WLqtI=koKL>a<$ZX\iWB;%L(>KTm@E"qT\FZ8moRFnsD[$C3#Jl]#Q]ntVPqD8),TM[Kilk]RM]IhnQ[)@GHkXPTaE)ua#d/3]Q_N+iUNEsC?_M?"c$$p9!4R1+*r1*.a[C:J`NfOt7q]C1fk8",Dna\Zp^HZ^Mc@c#.R"c.M_pe,.Vf0FBI^]RMg3!cE4>[S@Ic1[eh[%c)e83":LJ#b&7F`r6tqL;QiSWBT;P5nd$\h]ILu*f"_l$@RC0`pjo<]g3K:;WYVi1m/]U__@$=&qaU07jG7L;)8FLOZ4D9]$Fr+!*8!2(r`7HfBeb-TPhHSci,=t>oA6&=:g\bCY/A_^3o,Cdn`17m7L:C\Vg7e*T_=1fN'""gPTje[N]VA<\E$*L2B?t&)2tY`O95[FXV&V[M@PS\7&UP?s=MW'kof(O_M.a.tG=;hUXW.!O9+?V`3l`N!&9j0q9:(KmnIN7c#0LAOdF4+rm2EKZf96\2lhbj'WUjBEa.L15qr-==pL3$Vd-aXGhl$4*4st5iYYph)hAAQ_f00q*%oKs_T^FR>b3$i9+-UQaMRQ\S=`AX>onbOMkb6*DAY"O%6`Y?r%MA]*.s.W,DgJu.neoAH"duBM?1/%-2IMR[)!\R8VZ[M:0^3&Tjb`F[67r]!2/AJ":m>+ERq`J72A\RelF]a_l"@VKBj`fUeDHi)dGe08.bRXoI('h800N:/XR4X6_f@2S09[C3_'S0"&Kq`k&u*^+`PIeD5gGjOKME;tKmiVE(HiR^Rq_aB3>M^RHI;s3+jYE$HjkIuQR%ig3lO.:s9T"k9t.sU^MBmAe4-)e".Eqfc"IdAmRFRU.Fk0-8=kht(^bioL3G>+>`E8VQqH1DsQErT!]m-?Isk`Jg5`:7d(n`+8U^?VaPO2;RNcbd$/cb[?`?gsIQ2PtF1E';Ko4RJLJ@kqq$n0%a3ZD+,?RgPTje[UNH`-u:EB(#+VU@9^9M>8ajaBfp2^[M@PSD:P>aXk6Zj/)l;#jaq>\fN+eVfZ0\/PFbg-6B?(eQk8nZMY4T5Y?KRKDouLi:YBe#JpLAh9@3E"kS8.m[rNG-@1USc$p[&LiUjto>[5LiQ%aK#HE0m*;FPS&/;WCUPCqDB=()CfN\A2%Hf9-D)*q4cT)](XP+YmbMl)40<.<[i0d0=N%.,Kn*0/Ub085k_6V3\KM+S!7d?lf1]BiL6ZF@H\Y4GqLg$_:TR#P'jJ2J\fN+eVfZ,/iMJ^>@g;r#?3I9@Z9nmN([UNGQ2f'u\Cb*E3+q;FR%bXm!/%3tthG25@bI2.@Cb)q/gPWLL>Ie-G)7C8o(b#OkSU@4@=/R8Lp1RS>;0t!b118bUR!']jm6f7h@+XWC@CZC:dJs]g/m-=+6SIre_!!'1]fQA[Vl-0oF"e$/@KC4J`MO']3"*-r@_W28-Kc&?Qf+;56h5^^"X0u(33)_;BFEN9YPso2Y0a%0q2P?c[^)s5mil#oKOnS-a%m$]$*bD0?=I/VV6RIBm<[M%*V.0(ISmR5WnY!F:8VCVE_R=L$[PDYLdP1%H0&)8#`O;c_Coc^6[UNIGXb[q)Pmb$c@9\kK@1RS8gMDP`gf_hT8IgCNOr*&k;_Q1Ps_Z)2M/>R)fcgG4-^WZSQE'qujZ+a4VDVi).Dr&!gGjPjNEFg6Y](IMbEVV<$EpYVEp[&^*J,^[:p"OCnn"$L5S"57!R"oJ>>KI:)PD+"h!\968(WY^sR^S*IQ9l8=9%d0JV6%_FGk9Y3*r"6-0!/P\=7plVF=3:#^%Fl!/M\?pkU(CfUR,4+%%IlNiFX-7[r5!YrkU_ppnMo7<0#r8Hia)XJYci8dDNlK%h*jM\b#=]eNk%l#-P*U^A@,DR)p2T\gMDPaM(#+U_`O>&RfN)f=[Ml%ENkfI['jg@?")m)2$^^&>Tt0nl_Y9"`!j%p10T'p*Nf,TIc8uF4_$hJrk;?&%L&9>Wp"FXgin/rHC'eoZ9DobS*M*d[Uh$S=>(BcfX0$^aaa#h7N/H5CNdMphV&M`NT!N(LK4ppqh=OeC-qGNU*WaI^TZ_V\A`4m`St8BYpZ5g(CcY$au=/>EOYKO'pXACb*<0,+SeiMJ^>@,&Z%60%a3ZD+,@t4b@6LZ)n#\MKB2A/%-2IMR[)!\R8VZ[Mb(&5\`,)DcKF05i#'Zh/O=6S2+^f"Z,sm;8rQI[#2p1OIL[u)cGF2%Q"%4&8g`jZ3k3_$g&C\ZqiF@Bf!drR0.HLp:'k86]7bqB*BAKokd74.K"bJ[31CqVI\q4O?f-].sh6hC-6bGC9]$q>tp*^^,>YM)4XEX++O2:I.+a4q"U$Xi74mOE,)Ze^\rdDa_S!TAk(NM'd3o7A$sRqaJNZEpM2q*sk*15s'e#3B<'B`QH'S:S$,2rMr`CTtFc+'uO'"\t,<_0fi9k&QC,(_;?u#"BpMrGWWDnIgeo/6n^48Shj?g"i4I7.u\`St3>AS/(DZ_q-Q+esGu38%oeOXn8j&Mr)2%fMC0jGfisr)tjX+>IL+5.9k]N78N)NfmDA);ar_9h5,S1kIj[MY2'?@mbPqBo?SG0DnU2urooDjE;07Mi3'a`iU6G9,eeI,55Y8EnF\`c^peJ/JT&8N*:A+H,eS*a2QZhHTS^A#HMt.+F;A[C(MkV>[NZ0u5*4DtCo[f$%CR!cF4aM*gPTi:S?T,#YcS>gMDPb=5[ms&XWBG[fN+fm@9Z0:/%-14_R=L$[PDYLdP1%BYms3E$r@X[\?!)]HVTPQA$[28"G(\U^WFRh:U_D5ro@bXn8Tp*QBu):VG?.[ce[3>h3CIp0a^W@2Kq#`C6`?:o\D+IN'%,O_CD`EO)aD<6@dA_:%Z@G$2>[M@P3]jkOsYcUIf@9YT,I=l>dddF?A>d1==gPRfr4chLS4r+&=iG%9>K`;3[r!_nc1;4'q^B3.Z&q=+kMnT&*#LJ&:ZE,K+hat0UYe;VJe:e*?37PJ$c?J8=?m)rJQ;t_rCbNM-f9Yo1h[+9BtCd4cNg;r?D\fN+eVk^fNYUn^j/\Cs;Q4UuVnU4kdB%lI=M'@,Hh6fdNCC*?!,A\_&t;Gja7(=%o:"-ne-o!e\l\M7aW^8VkSE%S:bgk#`YI/o4)8a^RBc_Zh&-5=BJ1sr%D;YS;3$qAn_A2Kj'OjEC"M@%p?Ohr)i`!G[5PcGYZUsh@T<<"*S34o?\]++ltf<2cI=gH'kqmE<\E$*L2B?t#2@;)Xk6[M_dQcW$FU[`GM#qKfN*`D72jLL`Y.uq_+'c*ofH@o4c(Y`!GEslkkiA+&Ve90`)8fNX:E(^cbiF7nbfr@E+N`)RQ(DE?kF<@9+3V5d41*mV8UOVhq.X+\2Z2D`s,#+?h+h`Pj`"@>Ch4)dneigDEVh&0Dr;7TUVZeLDOYKG$F4)op)3A7SaE<$SMe^Lp$5M62UU>_Lf!rpd[UT>rRI-"[2W&'C9FcD2Wfp?b\W1075P^GJF)6S='`Cj?s4KSq2S^i]$&s@'OP+F3f7?NuU@bjnmbA\NH?/SpCY(EX(e[/N#:,%)Oc9iTE[6$/EMa7!bkAj:M*AGZ0EnAOVVset0H;/TJW"T+bDTke$PSAaS'P)2I5SrGZXh(7+M[W8Ajb3Ah!%^D/-SA.t@BV?@o5c3pf^#DDgT*V\82hs06UZnEm"XTenkr2pF"$-.^?_S6G(ph<<6>A7""-q2l_%r=E(29gRt*"cBQiGF;6a4lr3TE"QgI,rn/JVsmZm('G(Nu]6lf5JsO(S:L>^@nJ2nAV>7F3QMTF&S.%(sM40ocmaW!mgn-4XGEqbUm$=#08l(S*Rd/LdCW*Ul(H@$IecpSAXZhk]O]GeRYQ`&g1?))@fdD4)B(kVeJ#JYmE5(+CLrc`jC?[P$H07FkWB3t?QG'=b\luX,*N35GAHQ"4:A(^_*NO/k*.i3"P_mUbb!NZS/[T2-k>ES'c[V@5@$`+$]MR5H].i3"P_mUbb!NZS/[T2-k>ES'c[V@5@$`+$]MR5H].i3"P_mUbbai%(,7W6[P2:a^VRj_%5^0E>ROej\*7;&aL`",s5hlYX$lD;:9;e]%o7VhZ7h8>1j%&7ij,Y45]AC+$^H-T[SiT"=c^deslC*CV5>IoeCEbhR[Zq6/Q!ml/dU_!2c%U"'C4U6P.bIdth-jNu?s=MW'd6;+D:MnDl4c\'Sg7uZs&";@]j,L/p8^7NDI+l[@HCunN"X$1%&4("]GRgMHsmT^YZrs1pHr%4)An0bJM3I=gH'kqmE<\E$*L2B?b+bZp!gT"8XX[p(A[W93m12JI-#U*_!;VJ-Wf_=1RU@&t;>H/nc'>Q"KMo>qnK,iCU0&cU0B^YhqM>Na)=Fb0Nf;of77_T_V./%'h(L\"(G0[0fdMUV;0%a3ZD++^RKWG:1Wl_KI8B8NSEl#1>Cb%gX+_2VG<_\l>Z/kNPTc?ah&G%#4_nOPgTiITS(]86gQIQ?\$Ap\AMTL`E6=#UZaKJ5A;IW*m!VnaD_Y,O5j9AW=S$5PZ`0sE'ShO1._;f\fN*Y^Q^%(lASB#j,,?NhXW!)1cO/EaZo`(S(MkV>[N_N0fH[-'i!XiSRMU(6l[jT-o3FX@U$Ju(;0.=!$hYrss[g4GQtd[R,C4p=4geoOti=C#%T8pau0)=?aE^-&dD$23k]KcfP_;YJ0*,,ek(?7nHUV4=4V[us6F/E@6kHUTnS?@o_8)1$`9lA2t@;8LCd:Q/_m>_GCFJt-bedpZIk?s=MW'd8QiD+-uc_mX;.Cb*rMYcV07XUNsAO@I*q,,CuB>;[,'($T,Y<\E$*L2B@M,LN3I?>XeCoN1"aTI9)i_Ri.LE)t?W<6&0'Nr"lG?NKdKU&4GXTOUMuR$Rk@m'b?+k`2=N`;"8f:PE@G:OG=ur^Os7H;2b[LlOE9R6M(j*o3I+_@seF@%[4rr`m41T'eTu3`q%W^OI"7Z3JTL8+=NX8N8PkLMsqM"ccKdSc:!7_HQn8OVYdAEl#1>Cb%gj$/:?!NeVE$.bIdth-jNu?s=MW'd8QiD+-uc_mX:pCb*s%YcV07XUNsAO@BjekSQle:[Kf^(j8HsAZc@5RMC1@PeE#^/rg83_HLfYpuD]p$gb=-:WC]`*E;r'QkZENh84XRF;\p>SO.HlQkfTGfX[f1P@oSH5u6e>D_'Yo_>Y0/2d(h&n$r_1X!'TLFrDDa49S0oo'i]`VVjiApdb,/'=ZpF^\\^/pYldpHVYH*k4p7+YKr!1;e7pQ+$e_A@2&mLeXm^n&Srs6Cb*E3,,C@*XU+0)fN(_$D+-Ji[Zq6/Q!ml/dR`"kKQK%eX!Y`m+rpd?ap$PBYcS1F,`tN'ThfCGBH6:2U?aQqn]F&Q2mPYk>Nt(*-[q8a5OanDXquE9Z]C`)@3>*cI"QR^DCbYop"UDsoZYjRP%OoE^=>#kT(r/9m2#nrN2a-458B1a$\E9^,=/5?llNF_ClFiJO^5VLBmO&#J4mJ_og:C\fN*Y^'"/O#!4Go)^p[ujfN+g(@9^9M>8aja+jD;ZZKtFe]h6F:#D%lh"E@n#i&Y5bCDcp.c3nrBW;F$16$/mqDR;X>cT3Q&pSC)6He`(C:U,/:+-(7\PBQ'Z)7J65,\o*#KNI=X_ap_UpeDAl+befS>_6bC`8*XB[qtjjSmbrldok?sC0L>8aja+jItIm3leOSUgZiZ`Vpmh.O/rP@7[XNe)'/Jo,)O#L9bm6ZesR<_\9]^$p]o<"mYBeFM-@eQ]/)Qmn/okVE!#fs@F>3(eI]Y#ujOO"pOn.?E-Y@u%D)WX1%DjTA6do3rTW;5,e!`)nV-C1Ko)KjbH0;hC\b6=Y$i2?Aa\%u*@V<^oYWLWq0''?SOq:2T\($,76^&De3[4Z#Vb:\:Z`f3XFTq\Q[Mr%P3f'\b*L>7j1mj0<*ID8iqm>M2*a[Nb)KgM6+;\#rSEX-d`m#U,2JNY/]7gPTiZml]?^Zo`*)[I;n^7^9()[M9s=1_IE10+"+`R*D9CD-U<0gW9cU6k9V(+?V4Q5hI[$0%bBTQMd-Bm:6>/%:)Ht:^7a/">2cNF?OfjfU65FT[8C8!+RCJSR(r,.(ZIj/RE*>4E4>5pCpQV=p=<7+J+m=7KKhm@S5mL@*"jKsD^crMS&Tm=Bi?R3!*=hE]_Q=O4s<[p\;IC0j6[I:.q$hpXKO8iQ)IS2M5-*-f'GV0-i*:iT\3.)g!mou.4jn1,Ko"B5WacXDkm->URq-63\N#1UTrAS:7>EZ2&pn_f;GYMdk7@D76jSJP]jA`!%^&.$GUn!Gp3To$5)Mh"&5X_94e`R%Y,6!KUf.fb)7,e[%K"mI;'P]U'pC@LZZPi_ef9df2LM[D7ddXcgm17.;'bD22aYID%^GU7VoLkB8gn3lbWi84!FH("DV$D%Yg-M]LfpUfs$bj&oBUF)VDH)TI.EEW_4+L2ji4dTb('9X]<\Ur.o/*Hb%!s0bH"^"jZ@D;O?`Wa-FrPg:%H=hI9+)Xg1C*8n+OnH0CFtIVs_a:YHtOH[qrcXOLaAH,dJ>R=Pl?VUQChu?*1E9l^mIWG=.r`EDY(aZkWQ@//[*@1:.d579dSXJ[V!Lg8[PF!*?f^Mk#om)sMGo'R9YD:5#e\bb"&Fu(3q2@MX4DV_FWp64?DZ=2YeCGC4n*N<;H85)D2ngLd_?-:n;^#b_"*_mo_k61H*69]\9thc?FVg;hgFa_m-;a9K83XlL=\'$gL'.)]:7*f^\Mf_OoP:40BE03`S9s-:H-Cd4$)K,T6t!P\i:ng^6t3%/p,0.XrrYO#Q)lEHL7rZ.)nbbNdL?&YIhJak8i6!l]OAS@_\_@BIa&_=>7*^Q03q2U9/)ZW,$(I\Y-&sZkWSV$:7rsH%'EWg5<=j\q[Y^$ehUK>6+`R!e17,#Wt]AS#,7R_NGFdNSA2V]C-+k%,MF5L?fL8+XeqJKcPooO5%fUe\"WUd8Xf*1p28*T$Y:\*c4-GC=R.DVK/2DVEMas7J;UjP+TYPZtU;QQPWV-b"#4QKMH>aBZG)U!]iK%JD:g:=#qi>Km=gE[\(Im,^X`NR2DGa5TW[aLtqjbdX@Ab1W(GKf3lqC#h->_OK6Ti#f6jlDgC#N^Z:"7jm>ZDS6%Q*_9C"TSO\LUJ\[d;*+NogJjPKA?)'o;uuIU7F]A0)Lcq^0L#*B,sPZi%ujHOoL;bj9+s&r\t7bq4Nu"5Wg;,+/NNdGO\W7IJ.$F=p(LHKaF%Do(5c%r=NX4h$50)8nep,$nt4'@r4;oPi^9n1s@(?NcH4g\24Q7Ygcq9Xna0#7u+c?J%.m.(&Fb,M\uRh*X47mE?I'l=*S!"4OiWXNapR*\m<-D7JSWu5S$!.Yf:[]0aQeX4]aYU6$FBWE$![T]p<"or-_&Lj(!!(1OD,mC6BWL4-8>3.n'gc-P<\nu1g'Rgf\a^ut=`GhQ>;cZfhib-]^/V;Z%H?hTY5mGnpb:D(0+RGh,(H@>eIe[6l?7,N*=f)`/"a`"!nY[m!cR[Zck^logVptSj\to7_2Z7`j_ap#maDu)*sO>QIhFpQ:'YD6+5r7_hmGV7f.^]CgqGWoY?r?6)um9PNXZfd2g9?6cQAaFLC`:-:Hu0]I^8.2I.>lGEk2kERH>"Tg+3']F3jg[Q8irO?A#u/8[g[!\mT@tm+]RO3.4"r-k>(9Z2\N;,7HcpSTAn>SS-jt_83BPCg)BIOh[[McU!WZ=WBIheo[]0Pc$f1D$9pD@aJ/_'l?q[Zk]Z/BWJPu.EC%H="-NrfrYJ@Qt?YusJja.?TaHAd,;W6k;5%_PkN\')Ijm,'ME:A/mcZo$Y-;Wms=03iDq/Ld!:-?kN\eKD'Pn2+-TV#[;n@,skoQakm+0(CKO.;dEY:]4TI-Su^90R@Agq@c9?FhsE:S2Kf[r7>KcZck@\)(e\Rl?t&kKf.1VP[+6in11lEk"WR^A`(r;B@gO.PG-JPBZIZOE^+$b?VJ$MoD2;Yo5]gTri"/)/(N#J/*^FWZPn)g5<=j-&&e%X_+6.!!$%.g8]UpX_96=$C2C[C5oT#RS1XRViX_`YB1]`!*Bj`>e4"pg:IF4Pti`#?ZM^!Scg.JDfMAY37?W(#qh81.D1Z?o@(1EVp:@`D4Gk=38`ihm)SWSl2.&J8C('m68M9K<5,!s>6C743B6q%p@OEeJ`-iF#:JW[E7qDNqm*,49_S1GmH],g*=)G]AQMCThLRE7h)d7dq^,i\hjF>maXkS'^33UGcrRO(gj@FL!!(21KhF@A[DL9kZk[E]9+#N)>KshtD$9pD9N8NDdoIt-D+.[VG:9!@]e'(D`dk^k_Y0_1F3$&$p]i30WJ,3CbSta*^Uk`.4^LsT-_J5[l\'.$)WGI#E"NqQl1ef-_*tP:1FJ2=1Ma#sZAW'JBQcmPLFO!'lq@UpIG[^kWCmuph-Y9QIOUHNXYbn+rBWE"a.fb)<6)\U9/)Z=9<0:[FS@n82#Sq!!"]#BhbD>ilL[s^<7InQ/oR*e]ZFZ8;B\!@AJ*IGT>W#S4jGJHM.1("KMS9q=`u9%2ErMZ1[-`+1tM<8:R02cAKb->7;#h6/it6Jq(XmX)J!:QYoh+$lk%+5XdGC2C9%GW[]PSXQa@KE"TSP,[\9g:/(t?m%rFa>!<<,8GG2-P/(t?m%rKi^D$9n>!/nlB#Hr+7#k0GAKX=@aEOoP)]"WLeJ;tQ:?K&]JD:7dNn1#n-:V+dI]Vpp(RAkSem%g/Ab0&sM(>bCGWN=>*a5trU6$hD=nE?gpQc5Xl'f<5Xl'f<g1`\(-NA5L.T,FM-Rc\K6,6Hl.*<2jt9$A"-tZ/*X=SL[(ei)#,OT#IafMS-j&Kc\l8Lh:j1Fe>WrRlDsen=(bPT4l.Uu*ZC-LmYo:/47:34roeY'_R$`5j1j4tJ+q_>qV[rE(h"MX2m?q2mcpo^C.Xh]_^Fl4Iu*r&a*$U,&JQeT[#*l"3S_'7X6_A_d-0&8%)V,)!cFBWjqkN%aM?1Q[HS)ihr&\2u7/c#/phiJf.T9mkes-\92h[[`:IXbG%Hg+ISjm''dCRpXOcF:p.QXqg\,]*_$,MVM=M>d!co-&DQkWVRBd8g5I!"BuN[\Bl(!!$CJcrRLgD$>uN[T\&_V15#iB@XKP_[>/&41hg\]!Sq%fIE9ZcPrjQtf83lN0*nB"JXR@L&"aq*^VnIaJQX;a?M9>#H:Sr[Ndk-RgKV4?_:s*eTf:)n",rufP/I%_g,iDd661PNKc(FE^uPa2((Us'RnV.WQBq9EVn;pk^.P?9AI_Po4BkBb8Coq>skjk2f9H^3@NbfRcn@WU1D:nB\Y:XW:N't^e6].IlMEoSa1b1b5[As.d#gg(S6b-]_[6Xj6Q$l4+DKHdT3^i+sLL68mBQtmt\?g<@;W@-aXU4+sL&@D)HgX+5.''S[?q;/@qq`!!&[CnAlc:i4IF]nQkR[F>&^EZe:kmjU*c,ai\EX+6LF1Y/-]iX=>K%9rJVsZR7QS68m-+m!Q2)Y^L1K5@-6,'p`L2PtDp^Rjq"UO"1nkA1j@l"jiNnGmGH"aSp&e9pU\#aHq;[dZkWQ@5f5om/KqJ9XBoS@3MEPT!!&[:lPU's:kW/(t=B&J5g.D7,&FLg!$89AZ'(@7k(u&)oaH5S!>pNoZMG;[`G(*^0(pSjQ,P]"7kC/2L4=p^O6!fB)2'T]AuWN>3*72pW@>7ccBajh(>7GmM!-TcRjG2lR@,Fc@DG/k%1\t[cX2RXK@1qp6L(qG.-4j]j7`qST"2q_7p-=K+A%;MRGi>6sPr(4e8m^WuVca&_F&^`]n[Y8`%(-;][sgKfj\N9BhFS?,%S13a1XVBDtX%O[&g9%XI0q=kRopY\ZLC6s_p(7Lo'6aNh6+nndo;H0;6/o&@2ll&E@foZEc4[^+`HYE/1q`NNh<]eR'9cT0\83[S(V[`L[Z:L?K-LkrPhBrh&&>N)$8[[LQ-FU,C-Q=,3hh=e5rm-0V,"$L\#^\^lSS(%dl+X/+>rTN_d>FjOdkDoZ"VA^T1)+K7SUAFue(,.=I,H_N4:r\Eq.I^DuM,P[f@%Ek&=540Iq\l3]Tpj\Tm-*$+7+51Iu2?9-Ni-1;?R8Dc;Wdk4,p3p#"%]=^@)G.>#Vm(aW%g=IqF&%7`Dm?/^mI:`;1jletE*9q7)@fp#Bjr[$nOcTE&O,rp)J"?mlg>l*)2mU3YNr4[jWSmGW>N#-mN&XTQ/@6./KntPpHDRaDQF=Xf.;_LX+X/,idR[SB/T$2W;VJ.N[MfHuK%n-;i*apZH;b;J?PX^Zr]>&A/amVB?1%CIfPmH&*pAphrU]\4kN0cmO7Y?p/Vo4=LkrS+*:!!U?0u"BT*8!qIgC3#:(PC$o>JK)KV>M].mucn7)Ur9D+.YP+sJ3Tio4h9[d"=i"rDp06#Y@\g"5%0s520%6$e7)gGc:XJ,JPljJO*eOFR#6Ij8c?A?\7B0A%:)4WG]l'*jF/`_f*-d8l'ZLkpk&=6:=407)[(!J8I.Z$j<]Kp#&frg%L^')XOSMDor"H%QQGs0@SBsJ#$Ft1%pOgRcT9*f#`dG6S_ra*>&kq&J8*&Bj3_>]GYMn4qF/)NY1H2K>e-a>L?K-LkpkCCL5_P[R*AM6q"u4]B7kJ&7g@t_-kV%g^;=1h&Wu$gM1i7:Cd&?9A_MWf-u,odp$']^;W[_Hn.TQ6q"uDCYDf.K(jnY"#%@UoPfaK:E1o\(e9QALUNqZ&.oKd&_EDW'lAY\LkpkCMmm][.N=^lb=%1giLB_O4;"+(RO4ns423"VSgNX09O6c80I(ic-,=I_(*)VU(W!iT`KgAjL@i;*OPDpVOl'`]ch`\mfn/%GQYe/PbpjgN;8'7j4?o\V`J$Z613K4Da3^uraf>PSfGbCNIXDhHpMrt>5ZpugS%z!3kI-5jff,#ONSPHXQ<9^'F\`!=+4?_%GY-E+h3o*$``B#E'88;+"R8_Oz!*5V3AF;aqL[cGJK)KQ5L$F(d)X$31&+!2/2AX_93bz=?NrjQ#2csr3qX`X2WIo+Qs7%#1iqV0_/an..FDg57.5ibO*-3?urP$GTQp#b'OH&4sBu?'Y+,Be/KI'HdM1h]Ee-Ol?i$h*,m#[)&s76$AXAb__L.5ENhE2*&Y)/Bk:T\c?DBIa'b%#f$'TN6%1!N7qjX3.5rZ)88=r.g?HlsWEB^QRq@')`'"rL6CYD.ToPkd.ibn4tZbk4\pBIBY)mejfiCN<7]RJ@`^PFqKo`#nL>JO#&.W@#@2o\>dAi&knA1s\.n^^Ps2loK%!"A!7V7O&o)h_!73-5r;ij$4D=ICh?/*8of`(o%QG#i%#tU+KgR(Z.d)Y@V,!mjd8g6D-&c[@TN6%1!N949/(t=1('%h`!2pW;IfSaLg8]0tq)=2]7$cFh*";al8=u4Ai1%NsU:_N%$GHjp_J]E>I;h?CejfiCN<7]RJ@`^PFq61f4(u#$UXl0$X:q+ePZkWQl!6-ns:b0'T!7WU-6+^(!!#8AcrQD\-<-@`PmRBSa,.SrN#W4Q`k7>kE%mM1#QT"e5XMT6#QPbHY!2pZ:HG*A:u?nTkC!!!#L5[.5[KrJ0gG#d!u.2`*c!!!"$[8\sE:V/%bW)Z![WZ#P$z!2om7<@,!ez!*"KW=to1kXerkq7=)fOzTH74r:qrHfW-.X3*4-F\!!!!a_a7QZ+g_sa!!!!a_a7SX&(R1Dz!*Hqa\iC[_>//A`zYe8Js3?!TT^Wul[!!!#'][XMQzzzzzzzzz!!!",2=^\I3#`Xb~> +endstream +endobj +45 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 42 0 R +/Annots 46 0 R +>> +endobj +46 0 obj +[ +47 0 R +] +endobj +47 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 237.049 290.829 276.541 281.829 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (../download/kabeja-latest-src.zip) +/S /URI >> +/H /I +>> +endobj +48 0 obj +<< /Length 1333 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GasaohijNf&:X@\U&+"+'?^II6Y(5.8THsig6m+FFZ]!_qOk`X,6s#KS?pu7s5!n^8D(WZ5Ch=sX5-RDG5(rYn_JBYpO_=Z_Lp;,CU7D$-8\&_bHOcijA?.D;2A6e4p"[koW\+9nUA)Pht`(:K!rdQJ--#gpc40+]t$M7k;d3[TKfVZR8oMchHZhjd.[>M<NNCYf>.HhJ>d&;piVU9u=XI9(QLc\2e@Y8gB'3GoSk<=FS)s("\E\.HSE-]1DjI\(nIpB`T/_jB/7j[GLC?@bJ%p&Sq/*GUHnO"uETiYF`5^<*m2#^_s'^/E_X.mTYt$CG>mc=4"qoh#>T[ISH)VEZ(P_-..oV(O8%CQL,fFS(X]?80GQ$c`FnqZ_WCsTXie,B\aH8.Y8Lo$3lAXoZ56e"Z=*aLMX8uJ5.b!#:qbnfhqs1GBhMWS1a)1H][d&qB:n3AJ'?Z5lP13ioN_q1hZr[cDK7E2')6;fiB;OaBR`db_$Z.d_jBf].C1C"tCI3HZRla_R$!RKrg?fP&4jZCs4(c8i%E@%m5:Tr#lk`bk#*4U`OJp!'85:eP$+JpZ8b!&CB4ojs>RP9O;@c^gFnbW8#_8MN?k_ML!`t$/6NW*r<8=#VEB#TS#Q+r$$>i\2F8IdN;cbTn.jN@DRSKj/"?[.q&g7kh;CUj2t\@<^>e3M4=luMA_#l,&ZO85jr?aR^TH#AQn[l-f!m@l4f3a;[R*U[hG?pe5k%k6UU(?1pHYX^#sP[m5[!UBJ8cMo#&(DlbB%ee,'(/OTX;!.:i.XR6e*jK1YU/[1+7q`"3D$r`"a&QofK%L"7;:t(IN5_$>*Tk(T]':( +endstream +endobj +49 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 48 0 R +/Annots 50 0 R +>> +endobj +50 0 obj +[ +51 0 R +] +endobj +51 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 350.272 296.655 382.258 287.655 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.inkscape.org) +/S /URI >> +/H /I +>> +endobj +52 0 obj +<< /Length 1570 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat=+968iG&AII3E&9`11DNR`":8\[(WVRtBps4F1l&(98:i,,'VY*Va1q(@":9UABt;aGii]MDD]dV;>YR^Ie'Yr"i=,N=p*(+n_O.eQOkAck*J`U>_u#D;kkcbI@H;e.B2ZM:'JHofAr$JKHL:I8j5?;tLp>S;A`iqN\!:[:ohiL,*`3[dc6s&e*-coAAcHuLS!FS[0ObX7KR&e)TD6nHiI;h%N,,qfCMO3Rn5]Jnm`#,_oWHa.O8\6V3kDg)oH4g8j8Rs/"?dLZZ79"\WeUAV<.(Ah##-]IKBYrM]2ZpbsRNNJ2NgG<4`rC!_/q5MR]RL)LA)4fXc0LC,ICpr[d4&LU]m\LLMEMEmgX'46r'2<3G.R]ci(P2;Hq3Q,RRjih+IHc*MK@7FUGAkZ=nQS7AK\4cqsf770r?A9Tgtj`n^d^r6C9(:HQn[u`jeN!eA@S3,1l*/99iVJn2TUB3D3OgUW1L/?Diup%,2FsB;)>Q+XbI/..^tUQ$0+rdDFC9"3'64ejRICr%6Z[`Ii`FO$l>d2Bl@0[cmj4bj8o(b=/E$QW#*DicelBWPPZOT\arV:Y"Hu5eC:gA6pUg3T85D.laXH@LN,OUdU)pKElqa=J$q.lrBkl3=?8dELXBbg$VgG!k_FnW-m:?b9,(r`iibj&8Q%"fE%;]P7Bp0h]7H%).ThL,[J.D/R:UMA,c$bX5Ash5)LdOOO3CLh$?qdDaI8;ON)?*L-[(MgrlNQDgO?g'd%hP8E1B\0%a463mNJM>jiOY'3faM*)ra-k>LAV=^H:&]N*\m#P$d,NdeU.rh%>.6ACk3fdSn8_%Uoo/WO-*/Tt%%1aH@iML!q)-[NrC\J)M%H`QG[+kCeAg"Z[KHC;sXk7j%hI5q+oYo&m6aJ'5g?*W's1=&B!a44bi%uj$@'@+IU,$lVi(s[=PQOG^7Ig6b+<_?6-[$[me(VOcdWQRI3&_)Q2ujt(qHiBQ)sG1Va/SN&)6)qIEP+h'[NA[sA0SL/Q5S-*;+0m)N$8_)8!0QX*j-L&\tL;/B;$PksWcILY6i(h*2q]`Nue%/DZg-urG!pJ;Ld5^da'o[28=(/U7KgFeFVQJFJ?A8&D/aPe&Y"G"#&5ldWHlfp-l1d4GpNf6$f>ekn:nOJ=8QBY7-YE,Q!$ub"`W~> +endstream +endobj +53 0 obj +<> +stream +Gb"-VfkXR]s$-#!5N$C^HI[p[GgQnm+G_.l'G6H?,!dc;Tb>=:<)QqMdCRgR7ZG$f[GN^bo6sD_),1d2RPq>s%qs')B?p'3b;84LqB)VB%Yqs\E&aB%KY(7QiGQWnE&\gILVr(iq@`3sh:'PAW$"oJTFsPuJr3%k4]t`[#6#WFgoWOU%Yqs\E&\h4?c(X!pMdV$E&\gILVr(i3.2*WX&l/OG?<1!5LLWCdRp1I[%oQK/!JP380f>;(%I*eMmS>JE]BS?Od<(rkW.XA3.iN)r8DT!D!7Ua0&u35ShB^#ih,K9'a1NF<$J8A:sks$6"QiFG@5F"ibl`o%-6oc%>Vjs:uUFFLGN>Uh28fZLVnCin?i^\_td-fit$o$@)Lg#pMSNJ8k%''ZpeZ980WKp>2`1"occ7;eKT3+W^Q8o31PP^gKF@!F2[$V##"ad_r2$Vcp^$%`m]W)?0]nX5Lfca#ZM\?6r:"YU-[>)0-uOg'mD/c4J?AlgJYHUrJH,5i6&Xf)F9>.p1Ff0q)?'s/W=Qo?M[HOFmY,5=D-23D"D]V^Yk"RkCX6.fqO@\hc3ra:Oph44^QJME$Mu1[fPSbep)f^-($-dD.1a=r$OV92eqBltA_:0-KJhq(-n/5*c$9uFb%2t]Dnrr*@486S@,XNp9$bV`r_+/p?I3+dKabq5/_G;+#b+TGKpCa\X=XrL8U1<%<#AGP?@aEcI'DnA"<4OtTsR.@-"k*!oTBV%:2<[H:5>)NA$G`-)f.L;\PBWNatkL]=6Qm^8chW.4g#.sX=..YeHJ1%Sl9&t\a2A\oMC]Wq-?V=9bU[6j*J-?GIBsFB56!\m7qRHXLuM&([=hLWua1YjmYWet6Z3ZEp[;mVFtdY6[DX\KIt5l%O!;KlnlAk"Y/#qTX\a>T!=gr>i8]s;i0FZ)SCK/W[pi5-TJAk,KF/)eQk+Q('mD1r/eW'HX`VkbJ[rNlt7H9S*!eF[6bLf@.&C=gDE"f/pb#`:T5o4#%Tq'5)6\^2294Co6RPG^i(2qd7%OU".=+^=fN5kMu%`BC(&+_]Ono@DN7=OC7Sr)88>/^t]SMI!a"9FP?ED#mV6;OCA+p",`,L(*(r!kg+E#5,Q5L@lA^a>]UqY_>FrRbWGP5$I;+JmR[eD::Z82a3QBqVJ!3XOs;-;He8RW-S:^4/-8I>3j@nN"S5C30`Qe47Akc7I+/\aT59.sPAut:b(cXc3\3DH%Y]CWT]eoPjrOsud7Mf0_M2u)(f6H'[%?'0^HH<'0^"B!7Ak7#X^#s?"kk@4O#ZXb8IaOo+mrVVLu.^$2:*\!kJrlSGkU3l2/ic8hbX1KE?43A)2(4;O5SW:M&pii\9?aCme4$VIKrPLFTeS-rX$?i47H16%#:l^Ycfe_L[QQuCS_Ab.MFLU_(M*SHk6eEGm&J38)WRB;>@9U.I=$_#.s:N?uMV%AEs=Gg3XWj:7)H3QduTX\eV87KW59B&ZR4lgj$foMS%ESR(/J-m0B%=HSb>+S,NMfP(!kBm!n^-L/osKph$SpSWC[tS?_fG%_5e`\)M;ucVFD`O"H"Rm)_V1i!b.NT:!5*G:W)^K4f]&gQD2^9UreaqQ`iqJQ#.TL0"#_H@J;_QT9H"hJpG,=^iu9/5tC)OR'L*M'^`#Vl+_urs7\4kh!b)OY7(R>UphTC_-;?kH`mY?(Anun=C5AQ]W5rDILf+6Ur1CY*b]us(OWuq&df*Q@FkE9R!G>>M@Oo?rdd+t\$$Z]*GC/amcuR;p_P@6f*5.afhcWaJQW63@+Q\8'Pst)g&(6SWHoG>%Q-ViT`BJH:PQj#n&*AA:-cY07[U_>!)*@)!uhcCK)B!D_t4$h'HBrCE)./6D,I"rO;DLMBRtI+gL8q&C)AgD/^3)#l8i#LL&5(ZHc,?tJQCBO0,3hm(Ku0QI@q$]*0=U[r\,&SDhFG_gS*Pe?gtTib[/(%)a#sE\M"3n>G&cqUOHQssm&H.92.9Cn%J]/u_aB`rl-8,/t(*&CNZBI1OnuAjc"r2S-(7oX`*=ouRn+OQ,mg_VQi@kt:nA<;/!@:7:iBUBK(8%a^-)YVTZfqe?hWomAEf8k[#X-A%*nX53?r?Ti1.(Ye$4Bk$&,S&(mT'GJnri[nJDGhWU)E:?97qH=EOXqF`>E+R'6btpA23'B,dq_g((#2X5L$=V,/+\!lo'YnAhAPE9>/WaPV(AVJ`SlJfXS.J,=Y-HhIM1:Fq#84q26N%q4M'.kkehQ`t;p9t6p?^n4V$Yl8SN*,Ptur*M(mnTkYILD$iUfF?J[_[!q]%`#6*c#B@^L4X9o@EPd&aP.rU#9SMUZ2_8S]DO?oB0C(@DF)+!q_3H-(\5&e6GZFKe=UJ`gEdgitCP;g5[ccj=c%[g86M\c]!2KW59B&ZR3X=K')5WSqa6h23r\!HGU.DT*H&mgjUmmT/,F(h81'G:W)^N%t&*E46`bh28qiR%@h*&Q(qY,54Mq9j%h6>8gr8cZ`g=-UZjB6\`+V1ZVIO=*u"-DlAD1)t(W=ZJ(o$f*JcN9i#?p?0d42TCh^&.mAmJ3Uc`0lV>LFnm)6CI.>DjWCuqDYdeQ_IhSMgk4-%'@7f7eStEPN2/MmZfqb12_L\I'KpoEm(V;o^"5uQp8bo:^!n("Jgh!iVSnp@H?'GaIQW?3V/QQNmj>'e@7VS8T[;eWfrONYn"ck%m]A$f4!n,M;W[W*6(atLVg?l0Q$2gB`%*KaSdS1-;@hUgQ#Tp5:UQepWJ&!SjN`G#`BQYZ&cq1;F')VS%6bji%b)kU6(8U?4)KEp=E=ltQ8QJ1p$M70*9(:O+IZ,-$ie:Flbf:q#08gmhfD-FU%P#q=rSA'G@Mp5*N4Z(F8*TAftTh%a^1@IF9bKE\fXBWrX,:DFH%b2kaJt"7M]ir&VW;Sme4=JC>'/"EpsnST=GV)c.iQA^Fk/$1Og&2\-dDqe7F!"acSl7ne[7T[0q^(mY'SJ9ou]T&j@1;!#n@U'0.[c7>.ZGPnC#D<*6*9:oWDk`SG9Z:&I9fQ/&Lu_9h1Z`SHE`'mH\ZF&X6#kI?#f$'C"oIqEA6\)M;Eh.lHGmfVrRakc5&$n^mJgo\(jEOQi?8+cn,Nr/R@&:%sfB8.1GX$P+7Sr(g<):OcX*KdQ3I6$k8O\o$a@D\=6aP!FWDXj@g^EF[,FJ"iqP>Tf\_t]Be(q7&t[A=qaD\b5g]q+::oMUV:Q63pIVZAldBR[7"UR-9*-ddlacd)i`YqJ$o^k>FbgeF&1oB7jK.p<,:o8CDRGQntQK(.=G&dY9S6Ue72O$;#h9PRUOY,H]YSJ%W]bXU$:5jrpisC4FIR3o"K`Z5OO-mj6'7GUE";H.U63H_Y?ib_?\a7(hm>'*HrX-2)b9:Nd;A_?*%?-ji'1U7""/G&X#,;NL^mOr<@/,[F@I/RYpu8oFY+c(RC>NA91%,)NS%SthTDLF'pi[`iB(c%.?sMYSQr(:57M]in&Tdr%*tQshm\\b.l.DE.;WK3f6R(\^W-V8XTmB%ZKdmLr)QGgQXghT?J!C$r[('?5%sKPl(';=.S,OSTbZi_jHa&&M7&3EPf!2;Nksd6f3uPEM_MF.-KGLI/?+/id`\df[4m&.)uQJC-Y$u^q/UO$9\`SV;`7WBdG>)Z51eTg/ZsNHY;9g0'9)b\+FH(a,8BOKn%3lB)M$]?ZRP3kmd41sfFLCU>%,_UAgfe"RWG,6jrS>j_V]+dWstC^\]X,1o09f_Is70=fY=JXf^T0PT>haBNj#-B^6Q+`C?aI'rMHjK1Q5&hi?!G>6b0)^_]%#ntorKtOgrS/(->Z1Kg4Y.b#q9jZL1aBb??VT?J15&2@:JI9aB>;&R'>R0j=WY''2'f[@TuMQV,q)'kr#-1(bj!r!BW$.&G_"#6gLj$c7-F0\SEh8eBKp[;X$3_>?q`,;tHGuiB0db("SV]edCE5af@&fh5&R9Y-NtI>C$d"j`bRNGJ*rX,t*X2G@A(*/9LP)SQq8&_S=J<.q7VPnC#D<*6*9:oWDk`SKe]:<]W!pH5gm>B..3DT1Gsh``ce&G_"#6gLj$k&//oMS%Esg#)U)nt(UPG:W)^go\(jrS&^^'-a%[H"anA`8%I!H+,Os]HT3WQUDVgYQVh?%8%lPZ5JFZOapj++bZVO+I%>_MeY\-OR.X^"PJfJM1Ln_*__o:-!j*H?.glbN!MsT$kt'!YPRm_e4:3uq,]DRWfmEOkfZK//+fND1CCfI=4XJ$;Y7OY'%$#5qlqo_\$Bh\1@$t!SmD?;"K!(*=so6THt3^G&.H;/h%]i;#5rQ'ZYcdAO8B95`jX$YSi"bl$sOFJeX&m:H'HTfFWp$+@dXf0F\<@(=9-T&P$ftO;9im-\2cEh1"?)T9VqP87iKF1Br`#!m0j5^QARH&qPRE!r[e**QOFO79pE*7LV)*plrGhQ?,Rsc/Q*atGj,i;D$&$;BRq4@eIMsZ##"JPp;Gbi+`9l54\a'rTeC=taZcBNLmqhoT%K,eOL,`n=;(6ecgQb'lnL:)VW7dS8MC)nWe\Ae"455(d5j*101>IU]\,EJJJO%Y+eTPk1VuBjs!'$m$ii"Q*%_/Y2.hLa-9R)'5SMU'[!K,f)pm002pAB!oP0%&<`mt;+5Z-@@+&'(.8k]V94D>K.ST]KS'id'Sm\HfLcuY[coPQ;+1LA(]aD(2^+!V?AN8YYgQaUMf-V/)(Ja7!,UIApj/TI87l]eP"QOSSg%>T/5615f0Ir!0[e^PMlA.5ks<-=KYc5+/t,AL"97G%K/#7ifif4$?%!aljhVDEW@7?O[I5)0mQ4)*f10MOe:VWMpO$E54di/WF6Ci%=X&bm2N&OfU$=pTK^&jY(90(DXghST\*D.!F1:.HohKJ8ibl`kMD=fjE4=hE`SHE`c/Hf\^9"p4#a?Z6C<#%]>BgL,=!74BM-7E;!V'+u:(qNE]#"+Xu@VK5HB:qmIk()@@#.C4W&e9GS5,!2BSdeV;9FWO?JQL*;#j;`85qfn1S]+B+)al1@m&P5S![BjuIctqQ*N/"(ljDl9ag7[s;#$U5=NZ2OD0!BK]!3+/j2kZ5:'!%cAFGehhB?tk):A/Wg**U(tIQ4B3qJ.dr/$FYNCdg1[H!'7p0/%Y06AK"aB=0._E\=6CF?)k%6ZHELT%00$I+Y_B;gVj^ZoDFW'esd[ahVZ8b*4>d&M;Ru?l[qmdVZG/JM0WbDm\+3m!Ji/\f81uKfBMC(AW'3tIZXNTYE*YPSg'&!#kegp_r->tbR3OXJf,a?75g#C&>AATAVB=T'c-4t?E"=PgRV33#"K&PXTZG$K.uYucesl_^VYfQLOlSL@&C,b]-tB/3.(!7UnS&]9c5.$(sX3"""YbV&iWWtdjam7h_2Vt[SOD2kqGq:gI$SK[kr%='++8C25$quY\$j2roAH>^>'&YWD>,.[n39*6L("]Ga#E8pBU@-]R-V?4=AKHH)d"%*M`6g\1+AM;EiR&V5:71bAnWBlpKbtPWdjuB_,f>&2t7tIEcTLsZpKC(qI:,e5%/]D;5_S0'D!Tr54?ub_Gcrb>o8lmQuNgKu,e/^[\2#KNVqC*8]%qp;-M@WC355jL:e*p)Jf5UK82)(:<=DA[dO_OUL:qK;!P+f2`9jg^Z/3Cs8"7-FG,KgY4CBT)I:inqm-=;!4m.TtZ"5T8`2;Mp,=B\T*.Vquht'*tGq&V<]hL$^?M;;TmqC_)Ve8f\b>Q!fM0f_hs6dhoC:*KW)GELKH]bY];:N[3mDR]M2q"mjTGc44^B..3DT1Fh07a(D'6CYBU"01"\Qa'_ibl`kMRsUI/+-HnXghU*"n81r!9S1<6]8QVDn'#bqeifX8MSSg2-kdsZ3N5>%jOOP#?p`*BB00fSPAEN_hoaui8]k_JoIA'es3Cgm@-&Mm$S#bK`"*%Qh1u-4l*-LW$)\!2KU?H&"W!);foD1LmH?br+,,Cigc.=5;4Ba5sFC29u)RX:<=[Gib8Yi&_fpg"K]<8E/pM[JFYSt.QHdR:TamNel;^)4M"NBkZNG0FVJr+6.<.R+D"82@fTpdp3B5hb"8NNIoJnB&]m_t9p,_!bugokRXFekK^@SU/H>4D8T3KsESZ@E2._JaO)Cq4Z>SaR)7!;34!Gk\tkH;E:O+KjeT02#(\Ff._+/=I>I3*gSB1"tAbe"+,4mNRa)E$j$2Ul5-WBr&n,YVkjm3DH[9X:*'ES!'bDT!7Rip"a"=iEp4bb3qQ@t?T.YFN:^\)Qd!GaBL#I6UA(@*T(Z/*baCRSG5)[a&m?@g??f"fZt&&L7]VaKFE!h_^NoSLI>A,90G)*\V6cgmeZ^oX2Qm?['<[7<@FO:HjN%]=24lqDE6aO*s:L8e8DCZM-Z)(h;nQTjQ+](!_K972C]DMa<<2F)tk.Cq._ZYR[=2rhgZ%+`:_$'p;?_a,sZ&&X1X9CF(PH+6U%1+LO]>0&^2Zu)RaS="AqMfg#!-?a9-b@gOgF<_j1bt^jPs:rKibQ&#d3Bh7=)38ln:BlK,7"hej8mFpsm'Ei6II5D(?jr59-_oRtXJY#)urAt6I^!h+$K'gq.?;P!U(DJk0oN_>na8^g_$0,F0r4,)CK@W0P.9b@W\=Z2ocj4t`-Xr#d?a9seDudTh1C?%D?OKKI%j-YTPB\JK$<3[3HZeB:pmX4D"a]fejspbVK?_mD%E=>F"lITWKPd40_stXZ_hd9D"9"ger9O`_(%pt,fs#qM$D9R2#ML;IH]a!i^4T8/$]PTQi+[+ah7Ihq;:/Vc55]J([Wis[X]YtNNuS.g%7BhTp--P7@uS)Ogo\(jEOXqF`SHE`'mD1J(h;q"EOXqF`SHE`'mD1rjnQ)GG?ZoTh#hu@;oek;\u1;^(#99e'Ap"-%99m@6dCAT+MV0UQa2t-OBe78LU)''5mmL_E7PHM[!iJ2r6Pm4UIU;o?aam-"nRYfmqDupq8,.rFTn_J<8P+j<3gCH/I/kHW4f#Cmbb'u_V$_QaeJ6TT&i_"5?"_kp&Z-am4J"(aoTl>+C)I%#3H[:^sCcd_k2_X^_\YB1OLW)2[AD/4(N7q4kM6kJSiKtlcu,Qp)Wu9D:96C('2t$57[Yse##fn9R.%n5RFu7OicS>pVZ13L&m9?3Y9^5"Vg#n"hLgm-N7TR-6$3],Df_6LoTiJ6D:(cu=DA65d4*4:HZAZLC))Vp$;SajqG@o0UG'hk#N)X5So[c2p9HTbml^U"]2L.uID?(e*ULOF$4L>0Q%?3`c7"5%o"6G>q9V06g:+Cpd;Hr%:jA(Zl"m&TF'-?k3*FmY6?N1%,!.p(<;[<&G.l3PTD2Xe5.Y`N$-J`B^'rI9A&,)Zn2?][35@8+F>)?#%V?'&[aqV(QF`b^BNie&,`"gTNg8.cZH#0$G1!;W+"[<3t2gK+3E+9MSC%9?lK7'l@h9lrDX65!Zgpm7L0Wm">kGRLBjK)'s5C?"'RT$OS[.UgV6.W0'm?T9+:m'9MK]Xi2=nYl9V(3VPWMB..3DT1Fh]+nh71%t=N>B..3DT1Fh]+oN?mT,9$`n9&+DUj*C>./Mb,U*Gk^.'dX9q_@J61WMk\@iLH5T@e97Sp`,+F._(BpWHjsJ=>9WU3hM.VL`1981Iql2*_JQ]RV([))=Q).D[FKdZ[=aUUOR$B!D.#pfe_e`+^Z?MM^':8C<,Xpe_.Ko]hT-H4^Gn88DZDSK2"W2>kZ_N]qbfM+k0g#iUl'pU'6u/ZOo"RVlg7C)k#S2#l`s)0LP4=C9%NWEB&b.CF^JDME$JZ!O@2qWG53Bdm_))KeNZ"Tkh#JOU#a6,cb-0sr%cZP5X'#?hJgE5@k;5l2\;+WXIl*F%;>edAlQW21ErV*NL8T`&0j2ZYKH/LbPcm(lIQ4'J9hk^D1MD?6k,g'_`)(%blY./jF44`s"_WqdU,Qe>c*0ui&_I1[!6/+-HnXghST\)M;Eh23r,(jfcJXghST\)M;Eh28fZG:UZMA*iT&\*CY2rNLMiR&0qU8K1QI'9[>C&oejOj)J-E$6@6E/)a)HUQA/0Jdn-7P&Z;U&jS+HU,F9l(3Cm>kXZPP8njA$3hctW@N$MUQ:lUO11`a$l+iKn*0QjJ7,nV"isCO^@ZX2NTd+7XN[qdaHAZ:USu.j(7I.8js!h^j^5Up=NVI7*'=;r9aQ],(oR<0Pd[pLM0@N#6MG]U,pad<10GgmId5VcpZNo5?h]lPrH#W=e9kg5Gi+eDgp:=]M*'/kp+CHWVj[#?N'ek"!3JpU?c8]d,SR?)J.t5)V>jtjB..3DY:HJ>J9hgfU)R;VPQVtOs(Ff^bKCSoIr[,_30H_3*$l4gL]%NcqgBJ#]/7,g0ofiI\<#O;$@@q!mB$-ZqS;Vfa9^!m]n^+(p:C:MAe*'ic6"X,)-SI9*NKGJaH"TD:scoPGu.3qWT=XAH1``DqH$*=)nh;*eL>m60.-^mUBoo32Qb!<>fjWLt[_/$1:S_1CT;GJo/%L>631YJRqF23%ERHdR-6cS[^3!ZrO>)"(HupO#s(Dg-LPI5)>X.QQ?<6)\L9^&n[l7VZD:?%Kp\V9r?QaL7+;4jQb,uIF0p$.]jaML$:HHT9J$\+Ds4";5aSE$K;#ndL'g\%ds'3A(o/tl@V-0F6Nt@56StZ,ge_7e$C7fF@k#d.?,j.$5_gB6h]52g1HeB:k`WqBA;JnS7+4fb-"7%OgQ7`:0eAu38CTE2[_1O#)FW%Y]F0/V!6r/nb:Z_EQmmYt8.a1*$rK@qg:M3#!a:B4H_kT$&2daZV$l^"3G*qLQK"W^A#V_GT=2&)9+Wn9"qac=a&Kl1-&=TjLrUeqXYA*f`d7I\0,_>C/2IPD>6=!LEUT`WAjBsAM1%Bra[!IjDQ-,F4/7a-'CGUFNGL,Kt(uMV1g&W8?RaMn[JV5*73mL6AJ/oT[@/B[H]_l&+l$!L*16p@%&"0FI0*76*io)Tke&6hl9=]*Ell;!nu&c*(PcMW`2`>pZWhg\HH"4j^sLNA/^KYq6&5mph$db"s4S9$h#45[Pj)6d$,!lr6X41p`TVcK%XS:5IR>6H!0UR4H;$qmcMu[uo@)bGX2,?Z`6BrD\$jl]&`4p=%4r\Qa'_ibl`kMRsUIX4Qeqgo\(jEOXqF`SIQ_\6BClgo\(jEOXqF`SIO!mT.$i1>K"A>B..3DT1G3n$lR2.bq0&h5utW"-o#4bG33Qf.W`s:MVOakqd%?L`LI5J,9h['mCKc/A-&]O"ZO,j;D0VL`;.d&I<.d[bP0YA+6UW;p4Gd31Gqfm@/^6%Kqc3(pK2IXOUCYO,@F7gCL,J_QIAiT?+ME:%BD>eY;$1c5E@W!T?`#C:$t^DWIYmmCT;X1k8GdUNrhLsZP!9pbMFlWI2S\.OB!G)\$"%bY]i8lf1u>abuT0#,BVU%:_L3k7n\KLT-2;/\b_'O[:\;oh-s]V;fF/ZB)FIf9'Vt6mAY3&*&F?oU1j`eU!l]=]oWtBN,!n[_rRXkR,S=Cj;Uu+CTN2YZ/,2Gld?h]*<@&l-qj]-[IgPpM8F"blD98&RD`"P()N4(&7b&&ZDe2!`PC-C%ri[H6I?tC)AR%!lke$AXLimg]fWY2^)+\m6R[!ttK"H7O*:\oA;j3<8]s;,`%cg.J$qY3:1.#X_r/BQC$dWpX,ERl;t:mE-qE0@eY1L;nspi:Zr_k@o^]*Irp9(8MR7W4R0cDVr1n>UIiJp1Pgq@bL)J\^B<@U$relL[[S(B8YjfN<;j8*>sEk*/B=@_,n=5!=DmPSl(4=&lH6I-Rh3\J&W4ckbKc%f7>8HR8WDN],[p\6Es^ibl`kMRukA\6Es^ibl`kMRumGEOQhp\6Es^ibm9UG:W)^go^F(]+oN?mT/,F\6JVHGH8Q1]@@jEX!LCT6KYps9CTI?!IDI.>rpD@"a@m0nFXg9GlI'?lhOI&#nK,dK;5#hLjms@p#hlc98E?7$DF\C2EZ9U&0=&-5VfLZP6WPHEOd&%&IBF=#c87>/Ln[7T6J/=L!*ldmP?PBeL%N[S`$G%d/@X4l@[rJW&QIpHhn!h4a77YSihWA0:kKe@_eK$&[/l+[LF*,QCiopcQDiLpe_8iSidU.mJIh_;DH8lX<2pCL1a:DiPg_qT]ol%1%KAkLV,lRpb]?5HgVh)4*?PAqaC7PR`C'DZ)+Z'.?SF97_Wirr:FDW";FO7ELd*3I%@EDI$,J2^GS&uOcNJ>2$ifY)\:m+eu\ng8edF1rOnD9[:_c%\s04*I/F:=N=[@O5M/F2$pt4H)M0kC1OLIriq5[>2[!X1N.m_cq`qbIm5!Mc?;uGmdMXQ5hp;Lp*pei9tmjT)h`Q\NGq?4jqs2!1l.Q.0Z%[7)_0q3c[qWd5.FPG#$(De@/5[X0QdbtQA]W0%I7k=g+?\l&qm@i1jE$!WbI2LpZc2*aH<,71=.bGmN[(bO\'nrV?LB*pb>&.VpN[YQ`lp3kq`_*Mm;=#^k)IRl`WO(WL>ku/s<`5ke0UL4:b)EAd8;$/TJ*/TgRWaun=4Gk@JSPP#Ondu9F)*N9S'Sn;I^(RmC."b;[)$82f/&XJbkj1jUs$VTP-2XO"K_0&AqrN'!,qmVO=ghp&r:TtB4Eus.1;P92<3Rr/ZH=Pa4\6Es^ibl`kMS%F)EOXqF`SHE`'mH^mj)-a,EOXqF`SHE`'mD1r+Zi?o]i0%Dp[jS)IO^'jS9:3`1>4Ngr36kH@n%aYW+qe3cJ_Ol_84F;--+^Ce1_?34WNgB\JESqM\A>@HdEA`3;>6hVaDZdE9]4-CVgCAAcM[q5_)I..^2g!7:DiN'Wb)=6%+s*Wti&U=$A!DjN*!]>&=f.\Xl,5efb1XHe`l(*>!@6XV^f->P:U_@8b#eF`ck9Ap^://`%LtaEOF4lE)c'.iY\9D@D4H[X8dl%\NY"XF;p3Em;1.:,18/SLIO-C/?k*?[e#1dYj!\0Zd6;8R5cJAC22!ZDh=o^=-@4n]aUG)(FGcB<0=*L"!jKV["l!HbR(oqAQ[Gu67U2_3bFXmV.&K._n.tOuP;k_Un$DEctd,*U\M51:O=&/kOBRr)]2Gm,&=N#ee7FmcAJ/u7OK0B,+__6@A5F-2?os!=U&1#/kDZe'k4/W7-U2gK/4$:VZAlCGFGklaPgCSH^L0>7<=%>m0u0k3EIE;=Ytm+uph:7]'$kK>NrUrcQNFB"&U*\\fg<7V8HTP,4e/RAoCM\a*ad:4;CdNnTslr]W5/K_S&k-,p4o6=4=qR-bm&=J7SWZj`E+98khI8F)4LWNI&JGp9H+^\0c5ehQ;X!YE5mc((dTK4)i?B..;M7XLH/+-HnXghU.*I"R#Nk9c+`8\nGI98PRc41p$HSdE%]6>B"XCe]!UeGr_Wr[>M@/=qo-a&&EIP4UI^`^iG)pe<*[-A\e,-.,/Nc2_r9+1>7brjnCs((Yde3ab[:8mf^TY,rc'6?ELdjJ_pI>c`OerC\,]\Y"0PW__l.Q^_VnE0^l3D$_2N/6]IfDUj*-.[U4Noal.bo,qoi&CEk,LkHpu8a/0th0qfW^,0TS84]'sGUC(JnH9mtl%DK`MP20e;eS?X)4m3Q&ChfbN3n-f'"%d[n_tFZqlPU%q?bfOhk^R/AsFFN:A:\>.P?;hl+-3Pn6lreM@-&Z]a8T3\-B5YL-9m4"hN$HmS/-Bp;$B9;k`=L%6/h)&tD-k!L5SoiTAZ`E:$7$<*VHph4D=;T4;Kan(H^*'R5$Ln:ea;#mS0mae4MuB@(jc*'/9a@l<_;c?J1+f/7J8h.r9Zqs:&V9kC"#+0Z0utm%$6_24#7p2(qMOcQ78O%U3XrblB_5gK-20W/kJcuWdmr43R**jO:^#5DWSpQ.D1AimpT?J)N0!Z\s/$HfQ$%;0QPJA'"C6R#M<;9O]3:P/8O`2E?@Om?e#K4@Fp"ha?sl!nCBDZbJ3!:=VTck21gO\d2B#t)Rk^pIAf>/1kdJHnooTV&ER:EW"OqW(3riW;4VMYfK(;jpTP2>YGi1E/YN[%^\:#*)806FWFZum0]Emekg>VnA(-$ZA&PcVMJE%A'@JuL/d&gOFj&DMP_[nP&81%:)jN02KFeh:M,ZnBa$Dul#J8Rm9^qkHGm<_r?oZQ2lViQK*KtZ'eg]SEH>_'pp-:9WK^t*@65SosDVgp_B..3DT1Fh]+oOj/DRA;>B..3DT1Fh]@D7H,6'g]XghST\)M;Eh28gE(@G5YXghST\)M;Eh*k'7)q-[2W152f5di.)]R$LrWH`m.k.qD+/CoPp7QL51m;Z([O9A!_\Q]_SQsMpu-H/k5X*=]<6H'BZ;3Y4pZ7e>,PYm4cObss!D,/Ao(Ge6fG`+8D%/?.)qM3HF6CgKrFL+gmJS*+X7*pVD4BJYO[DCs*VsjF=,lq*FtJSbpl356:U5Fjf&E#K7(.+M6W]1TLLRaTt^#MaU8F"?g`$p+=qeo1q&]AcY:E3kX/FDHTPt\G=3H)PH'GHK`^*TMtk2>4.?'8+nNR$k9:O)q^GdF=OQg2H[_:$nPQS)48Da.,1+"QIu\'QjT/<"+';iSOt)\m<\_odO(p)?O8Gk"aUOP'6+_X.(X<(2@RAG+iDt(O.%V@PH1;[^d;*$+1i/npi0[=p@hob3/V20Yp;>0C8)]ee-XcV%Sab#s++p9lJSnWUO>T"Hi\:.:8SC%)_Q9/4JK6]MpT'UsQ)b^0m'o0^F>"oATZ]#t\@;tsTI"%CXLV/Q[gIRKGlbqGHk#t5QG\PXB>CcOTG?"TDInJddj:)t"jUJi!>STUW,/l80baZA9YdWK2k^*.3QPISC(_e$6)^i"J30l1pgN-'GjP;6;@ORR?9oVHbZP:[Uf:d^7M%+td#'r>]]MFPE(%`?13:Z6-c7G,@n+#p,K\0['9&'pN5#/bH=`m%+X[VRsO4adP$gpIf=mG8?F54>Oi$nC&7\6Es^ibl`kMS%F)EOXqF`SHE`'mH^mj)-a,EOXqF`SHE`'mD1rr]\]HA$\D5TO8Z`i\jo9$F19IYHJ\@`?Y7!l>%PA=F)KYJ'Uqq>\4Opi@rb=QUCH5j%sm+$r6bm".J[*,TI2.a60`:kk7^R9lTc+1$mOK*Wl>!TILDRO:F+JVVVO5k$S$L5M^n`qBaDS4Zi'O$/7Q1.9Z)BPP'_m;5QoZ2Io%D;f.^PW!cm@1tLE8=1<3h67'c=4Y5OY6n>M6ZE$J.hjX@$_N6n*#[`J',%SR:=M/^j,`0%[fa?K]Ga8#rX;!jlr+`c@4LV*=:V2TJRaBV@]SGYH!l$F,a_[2,L$.)1!Ecs!l`@7K=Kl\#lX?rN(e3kl(qSr>7Z7aqVg(\95s]u$ru[DBNAA1oH>29G8&8&S-Rf5JKEY9R-d^mk74#ql\/,iIK["J5(T+85)+@?j?rq%ARJ%-O1k/]Z)"u)5Q:_e4RqJ;*dHTD#mn_ZKIg73+bYP1"3?JS%o:XAZ@f$`_i<4-Ls[FYoGRbi02;(lS#@&7(,$GGGm7q[Veqi6Tls5V_j`RhgS*dR<"Z)bJZ*dm`[d;aDJ4>D]$MPl&,XXM%/'FRr[&kf\R'arS6'J$ZZ(Z.cb?LAP*/Z(E_"Uu,u?/eh590E77#=N\+-#ogJ=5mKD)0'cs:W2Z9MaaZ^MPuXNc$CrgW/.f8QtWQ"7SV+!2c&otm@XFV)=d&L0q=,i4+"E72Y3ZX^F5OZ'He_PH,-.#[Y,qnI&X0$-uN*ns4MrLhBDnQ'N_$\B?99(q1rU54OV-6GICDh+@Ios?Aj&,@AG@lYD?M];!nu'fkmlp8OnR"'n(Jk(tkMdsuA+F+m8C!Es:5W\UIn;d"iig:W1M=Zgs*e&Il^`N`2/Cd"%mP;7Y^L6pANieiQ4ZcU0,0[*'RdNdW)b)sd!nZh=KtbOpqa^6LUOLX-"hh>[W66Hg<-ggCFe";A)l:c[?YMXf2f&V`fFo9Y<&hg>[+bIEc'plb-fdP\@-Epjk@kbQ#!Gjj4`e!Nbb];C9+0=58K%KD\Hs7#Q%/gfr,4;:gLSU?1Je7Qhj)n+7nP(Ij>S%CY,['ldr6S4*PKQ#7g):CY,[#q[`$/Q#]X(iqGC3@W3G$0>IFZGlAN*Lu87#Ab!s1Seo.dmcWT+(S;B=jZ2W:J'L3kps4qMK6$Foo9S%aOZX7A?>uXW!E$mQg>;p1g;*;]IptSlksE>GCH9;:4"-7o[Wd7Jk;422YfI)]ahS];9mV+8Y;75sFHbS.X;E.ScKN&9I$Z'X.H!GG87oMSW=f7#dR'p4uiMj:gON\(rC^s5ac#eRRJM0A^lAf_X@[MdiYiKL)g*&6\OYk]\V-;ge678&WH_Sfute_dh]6?[l92GiaDE`q/(#-^k2n\Zk%Vf*pVM:_ap.DAIWtr79Wk'XukDS+u*KIkTI=mG5H^TL!H"18_j0MgL>'4>pS+Zo"p;<$S'KM(&ZMtg?6D=7E;M5%\X_S[@$^N/J'GA*#EC6kJW)WI:>uJ;9W7U;68WY:=PGJ1-lJ/^?e.j@H/+XJ(7RSHdu`5I,du,Apqno2*8`d:H]q;NL"68C8+SKM/p-Tm^`?`Z#[lNZ"h;L':!s;\GNEj`2_?\`Nhq)MU,>*&PJF>-G$gMMHTD_.:2tfQUJMa&X@A^Q7Q>crq5F2`JZtYDt32Sh\8;DnI>$@J))a6Hi7f$o\^NT08\h3f*'qMi,U''4M5(p*Fer^pM(W^Y>7;3J.#PPd6FL#-gimG^2`*YjWl;SH3h_kOBhC7n]E:H\/1&_)]4VpN%u%-.hKME/JZ5#nc'aiui5P.T1Z&l7IIOE7B]d?Ef'JeZ1HuKoIdjLbs+>O6]%&Ih1_D)Hl)e$[_-*7n5oX^#)@[W66Hg1kG/>Ih1_D<9Ko[FGEB9\3%fi!<Zpi^>IdOgnb=n"B)9]hUL7LX.^"fi'<(>+\?V\4?!TN)^)NKVBV*YHS^/JLhnIj,X]RQlCLF$CF'h+%TTj$.mj.CO+s00Ydg9?`ke;p:[,OdPt7qdTQkO$u($&SS5Gr13IL[4:s(lC]&OAst3:[iAm=t(C((<)\.7U4"T'k(2WKDD#s>Nca&6C0*T):>DUM>i0;XWdsaa2Rl.!>-C/+gToYj^T7K5kbc9MDF0bImZm`?q)1^i`9%%M,T%L0r.c:51;++Krc[BW+AAjHq\?Y^I7]!3DhC&LeH*S3LAn5O64SRBshe+3kVAO7!T".#S^$:iBl5:ofFAT?J)BQ[C"6Rm/uHk!t"jY92#:=#@h#BEUc?,TMLQZ!t[M0l-c)0k^K`@eT/bio=/L`!W``3c4!s+6Hrng%'um'bLTe0hP*&l)S1&j']=3Vk)qTlTCKHBNX-SWCb86!M9,EOpnU`bFWqM8l.Z(*m'>825LfI(aMtr9sM@\l&&@:N>HouJIfWoe9#_SY7jPcjWXZB,i-:BTTLtXLgOpQf0QD]Ih1_D<9Ko[FHP3*+)uV>Ih1_D<9Ko[?YO.;/gC6g<-ggCFe";Y,s%]jnS-#g+$B4^%e*_>B(o9XS.Ks/LOYElBSH,L31?fD20LRp5X#W>Lf_k_.K?->;<_L"c1.#?7q$<,Tf^_&'\h+"N^kZ*Yi2MA^UM#lEDE+C[bqt&cK,=BO(A/n1^AN)Og8QBiK-t87:&&^na0E@]sI""VD3g&&W>i)?Ic45EdJOi0VS6)#q^U@^#"K.l=#q+AL?4hZ'g2@>52*3C.,O3'LUe%F(32#C26&C?7Y,MTUN"QNaWsbDF?#pNCVp51/>BX<;2GNJqP#gH#(dq8Q5b%+>f_0o`+W-mGbd$4c=)1Tsi?M>GT),-H91J!d0;&Bu=N#(ikRe4QH4l&&'0YDJAMr-F_H]`2\7GqflK0O;&[JdAB%&N'oidEDuEL\!UP/"]bS6G6P6I'C:*oEmE"9od@RdAU$`5`cZXopC%BK>o95,:WuUIJ$*U_*$UM1F1;%_*:no)&*_C/#:"(KIH.THi?U.WXhgA__e.$BWi5of")Ss`F'oDW&)mkIj6.&r)kCKQ[qLa[`rPh+9+Qt.!F/B>BYFs;o:nt.s-5]-JQk@SH78-6V!AcWT-BhG308ZW6N_/C&7P,iEj:r,2#uX7)qbFT#96s+@]+,@bSjk)jQe$;aD8,;BrZOeXU:pm[I9ud:hA.QdXR3YXb9Q!WBljAp+WpT!1WK)6K'9at+`*o]D&>Q5Gac&jT$EgL9>Ih1_D<9Ko[?YMXf2f&V>[+bIEc'?ELhj'5inDP_Q"qo%Ih1_D<9Ko[?YMXf2h9n\@.hWY,tU0eLt;+Kr@LQd;s]-aRpR6krg6]]uNREn*#66q;)F>KB]Q4Q\NFg'D(h&=*lu"L0j"-$s,niHr/l[LIA<>X%U1qn0FAt&_R:J`EjF9l1W>'o^j+7g$B<5krg?tH<>>5sdrt-r59o')j_8Oti9/UnW*+G@[c\t:,`IqYp[!r\*\i4'OX$(%p$nYmt&XQ*a(f]7!g28QE&CT@d$g<+CTa0E._Ec#rAgh="1[FKb5N(jf6ClgA2h+Jr@MN*1I'absm_/%F+Hg38Mq54LZn:`&f',-9s9g8!Xs-'"p?mh)g@nN=((aaC@(iB5/dFO>K@B%9d6T#?ONSKkYMDq?q9)3A0B%:@q@/`j)GemW>mCbLqM\aSSM\jYP*DVtPWhgcQe32W?g2S+q98..3f2c73CFe";?QNHV9bQ&YY,tr53KE,n!NrP0>C@*dX^#(YH#RUX8R,K1[W66H30#cu\@.j-[V?ns9$UXpjd><$egY4,X?Zf+V3LE`m9fgpNMI:(7_nNsnqh*M@>hYC[$@cbp+>UK?iKikq"a6V^Cc`?7\D81SM9G.E?el)&SnF^,qI95)2pS";OfksFAb)HWaD85CkrB\hMR2b^E.IY<(!0>;&:KAEO$mf^"),lajp_m[)sR@pPSWZQAP3Gq?;m?I;2#@HUGfMAOnkb?5AG_rE/\N8n,Ae\`5ZpQO;>FY-#DTf2f&VDG4;>9g,Y]>[+bIEZE,f4Kbek>CA6/X^#)dR(0SnH['p'>OC7S;.P"`MuV;uWrlgZHi#iVhNNc_5bk`J`&+/](DXYb$VaO,=m.=uiI.1!s$u51/8dM1J\Q>0YF!oX?#q5T&^gMj1-.NF2mJgfD;&dga.`bkC)!85+C%a(eA!]c_PE`%`c/Wub80UCiAtDoe:TCt<*tk8Q:`FO=pPE?o_=8%R_?cBegg>6-@X[[/fCFe";NoN)4_mPbFX"V>tQ#!E>'\?AaLMNqfS)`5F[?]c3cGX[=Q)^s8q8.3):Q)!M[VT,"HFrm/lhbbsA$1,WK6'9t9*qXZ&_6Fsi$m*9@5O34-D(iV@DB'bocc-fj7gOIs7h@ol]&Bl5MuC:GjG%S`P::-]D2-dYDN64-e<239K`*@rt4.[n[*OO`Xg$U1S,9kIeO.G/s\m>k!TdC7=E5f_pH2MAlU[_P-E5jU:^cLS7jc0U@%HC.(3tr.lM>'-oPp,/2lkJ,<##H0=L=4/G:.;/Y7=OLS>j`M4#I",OYH[2oU"?lQPfZ'9A"5T)#Yddjr0K;]fga2J/27kJq3l8DN+$#j^%2>R;l_6"GugONFV:]dd2o.3UA06g9A7"5HSSVq@G87IXL]*-nkl83G6-KRK@pP\qY(`?lXBKn:h>7HlXA4D!2&\:k>?Pd:/O("!AGU-C+8EombdS>JDmZ6dl7PQ_b0+jK*GPOc5C"C&-C=:en$/(Uh++p^_3#L6("$/>HRLm7nEhQTkDilnk-,Ll%EKOjF;[@"0BQ7SCP)F7D/QPIbb*9TNif2f&V>[+bI9#n?)CFe";Y,r\aELcRWg<-ggCFe";l+"0BD<9Ko[?]c3N\__]>>8.&os[PFO0RG6i3d(sg?Qbq4ebp>&Zqb_d4hr.Tgu>>XV?*cgZJK]=]fP6d)-BP:##E!_d*FCW3esf4t&%R^EDBYr@amBm1UGID%RjAgFee0m1Yu`kJXBkh;Z*_)aqBr'NSEI2?H1V:@neNrqjDYX:Mq'*tYh`:6^[MU7F8Pl_ZQ!h0GWLfuq"Hr/Jb8dd:2BH:M+SgX@Htrfa6J4j8^Xk'ej"5ujRhBLTO3'!>fM`DHE.orEcE8j)bQ.QP=Dn%J=Ii)[0j(6r@$5^&\8#XqS7`?\6M*,Gn(pmgl2b$!-KJgT,E.9C9GS?R?Dg3%/7+kT=Ad"4kr+N2n=PF-aa#+.4rEe$l2MRKgrJi)RUT-2D;"1pucdj8hlEEt;?>V'599:Tf%K!MEIKR\C[#"_C\,).CJrc(Q&cpW0&A,/otW_Y0rDTdT[]@1-o\c2#7F6NK<.eQ-ca1"RXd='GDh?P$*4Op1eQBMhd"^b&c9ME#s_?Z`qMJ7KcJS\f[2`LhT1)F6hds$jtI*9TtJCFe";Y,tr5NAoKp>Ih1_D<9KoE?*":)qS,nX^#)@[Mj(g\[HNqjk@kbQ/aia1H)D<-EF92c$;f!fXjRWhnC%.>Hrfl'u'L@S&DD]+,WrV-Z6KVB!M3=je?#%Msl.6L:I8tHc:6:ec"BS7',(t/%-K,`9sdqhI8kEpCE.*hYO"Gf.pgkk3ZWoqC]&?GXM*l-cFi@`0MgmPSI%IL'('"1>#(]VFiQnIfAu#6s(mq#9UH_giiR3U0,PFK'g;oI9=/YVuIG)h1)VQj3>>q]C*7/4SHH+ik(8"8,V;e-cA8#'[1'bRM?F#1P.ZC[A$d6CnY683]KqP#PRQsX-PCO]j6C^VWXnVQEoMVPtT&eSQc6/AN&:+`t+#DS(EXMSD!hD?+ip.k8dbc#fOfqc^'JU[TbH0]8dpDqfZlk[$8fnd3Zi9X0X/lU(LACM8=qfp)XrL:6Hdc0AChIi&Y%6jls;JCK:^%A]r(N!frHJj['b+`&LsnN1m?X>;`[8cZXlr\U[+bIEc'pll3hQJjk@kbQ"qnjE?&U2\@.j-[L0#t#oSlr.IV&fR+eS#S4gMK=M/%E\F$`.M*M%%'esY+/?rmY-_aKjL`%ui'kGB7UfLGe0\YgNmt_.:]>U`J26lgV9,u,67+<%bs*WiAd0R'fh59RKiJ-B%GAfju:7`+(o7LMsTfu>SKu.T*Al'(84T:_Xop/h#OG"6N2m*fYHhp7l^3f;`++ksdpcr-OgpU'&W=WME">[?nn9eU;&V1;IO:EasVpLANZI:1iK!LJqL\C0LB28+-RaZ$$"PTm=k^Lp%E2TqoWg)rboibCd)/P,FAgG`(`E]mFoM[-+io5[@iq04!5n>"uH9_o27tPoXX\]Z6/ac's,*VOH*J_]1Qp5BJqUJ4BDm9f?gF:FVPnAdd3kNoN*__6oPD/([h)X\s.Ujk@kbQ"qnjE?&Ur\@-Epjk@kb<@Y/R>[+bIEc'ntNoQ'+f2e*cCS[7dScO;If*MIP&.R/*6FLhJ.f0ojsgJlZ*Bc'7)/tE_nDR5``d=(qSLr-H*j%;LOp";Qr93K(G6k/PCg_QB/F9*=p%UK0nN!sd\DK0-Y0(9(7IqiZ3B9%_ccT=(f(4;jHVi&#pU(QJ)kom#]$qGY*%^3k/@-@:qX[$*a)3M`0Vc;jn*6$pU*(AA3W]^cIEHiYY,GLhVcrN\"`$6kinC]S5d%elc"$]_0iiq84E_[b%85h)3#pPS9,\X/#T$R*N(INdN>WdL.OO$1u.X:QNn*:`t3A4WA3KE-)'s=ZD>Ih1_D3]uo/([h)X^#'jNoN+Z_R5YE/([h)X\s.Ujk@kbQ"qnjE?&Ur\@.j-[bA!'[HKWb:L)ekb9r7:L=MLZ(ZduEYVM:j.@YL`e.\plHLRUu`5bM/M>:otMpHS0`NGt)d?fjg`uD4?Ya,lnD-A6Wrm`OY\_k(DIf7EYin<5&/tW(0T0si0'VfBCU>Ye`mGaoS=89"F&B'61?8RG#%F]K+:_HtkXVJI.*Z"Xb,LKd+6m6<&W-M:238#!1q=,,m*qkHX>LnY-$Q"U.CKHDlHa\gGmR(Gsa"!rKfV0K5;"W#2+DbM_4]h,&[ncQ#!m_O/Gi##:)l:<44XBp]HFZhE!Z2(H"G@;sM)9$d;(hR.I0t6$*6N&`T"lqN/062/WKSpMrY]!LCM7X+`F@"WOWg^N4%PF*PS%S2Y)m]ZG?gfC:A'ADD:RU,SD\C5LM@s2kQ2eqHZFh\gY^j`Ejf8(UJ_B@=j[Y8_J6-[I`Gr.7gh>d5P&cecMm)pa)SQ_>OGai#b)@]TZP_^%/$S)AJ(/I@d1a4Js3"Z\OCKXa8+0Bg<-hR0WqN_>E+>P/([h)X^#'jNoN+Z_R5YEX'o7;\[ECaf2f&V>[+bIEZE,>`eA3/nS,&.RMYAYAXF5*Tmcel/A?:=9Vn+1Tt[!m&Qd)qdb,mIMS8".^NrXk>/*sOh=R,fZ>oP>XC&;-XB>=UYT)i+F2I#9r5B)QC1?ptNT0`,^#I\\4lY[V(iFI:hC"=*ML#&R:C'otl3Y2j)$!_Q/^k?Y;(\X[Q3G<#_CHSfnWQ\gggEgS'bd6@bR.C+d7TJUJqiAf0lpTiB\(,DuKEQtn5(ipYi\WZ@]lg[X0#P;`+P)k[+45hjNC%Jf-NELKC#o,[Q%i>EZc&AjqIfP&R!T>`j%c0;:UAmbS39gq?c]a%j)TPq9f3JY5Iq4:PbW-r<$KS'4'M!qL9C)NCC0N&sYeM-t\Ks;Vr'6KlZ=S#R]D)VCD3[(A:A7qk+c3$fZ9/.]0mn@mT3.R:H+^20W<,?2gh-:+5`S'%>^38^M['Y?8JKSu>_s1"/A8*QN064Lhh?D06T'[W64BXgkg.H[+bI\dD\H\[Ir->['ocY,tr5\[HMua-f&mXfhN57QRA@>UJFH0J:`#49TQHg4\QH^*'H"tmhfn(`$\#g6>WE\`D^/dpS)o&WEQ>PrSM-AlJ#SK%s=s-iuRO+iE+]C_.Q4_@a/#I[+4-&?KWGl_9g1oWW[]6sJRSI*l9g,Y]>[%Nd:[W3A.\LLigV/!&tSpsf1PP:i"K>!S434$A+'Odh6[.RL^)ZdG3Pjs0NI*@d$f74/q'U?Ec\mRk,82fNU+&5R*YRAIH/XOIG?DKQE.ijfEH3V.fBS6OTjfNm-/=s'C!lF/C%'bp)D[!Z`1_UeXN*o_$'Ajp/kPhD&DNm2;,GARTWCI@TMP:jJA#?f^EAd6#]p]P?U/B*i)qN>$WCKW7_e(J>P;KL(e9Af(eP+.j,Mkq5]V_1t\SDW5b4dhEiYnmm=&gu5Fmo"ro9]Q?]#IHk7ur]'iAFlfVC2H2X6CS\cd[65=V]tD_*4E=[Q?=#Snfk.<`]r<.Db0#b-dLMX)!K+X!t0WCFe";@hDf![FNe45jB7Hm2\>NY-"i;Y,tr5$.i5B_<0Io[?YO.CPQ]+.BTpl/([g3&Qdhse^Xmil5DVK*BcHdXf`2;XhI]eMXsl.YUlMP3EhBS6Cf3L6I6GJs,-o)8H%J];KU>Rd^3IM-:g[eQLkH'hTrE(dB>UnrHC8rZjU=0CUmM!%!]7&nhCI6sp&JL@RfUB/:h*]`CAu-hq`t?eeAAWUdB$$Z>m/7?\a*f:d(lQ;1F_d5lm?3`PI(QWe`>H.k?+/>t&GHc,4G^Y$k>U7DCKJA]DdZX&?tNP3Rj^RO9;b-fcaKU0Tb[(L/d'C0iWk5][D0>5cD)H<<>GZJ=CTC@!j$E,@JW"3n7(eSD4YOqXsD;(Q#JZ046S>@`$jMWKcZLl5nM@`?c@U:4pQi2P6W4r)UGT=E%+>:O`O.**\K6r;-aH<;!l9'1V&6qVT%&k-3XQmSh?`\Hj'k.*n9A'Y$&Yt_gmT'[c1N(n]=)Vh[SoZm;g.^_M+0(oI3fKiNM1h4;\.%q*:inZD/U\=CZVi*Jh*ZaO#V5hV^U]=`K%(d7D!#NoI,oB]SELn[(Yug;L]2`t&3M.u\lCsq"E%b;HmY*?l;6Q!&$qfO,7irL:O6d\=?&-ADSXW$L4Z+ZDcAJ,D_)kI[Df?Ldn-ZP<9RK78^g_q<+FA$U1+3G4+!6W5bFbgI*4B.ukW5+@m0"A\f)h^,DQu(c\6'M'R=;XCmB;!R`Bp1VE+#Tr[WT:)kISY#?!@FQlfc15R'Zr<`jUK;UhMnQW@H0gktcaV.cm1n5.buU&Z&s/3-8iC(p.[q&bP!01G,ABPf[@p1;TL-(`Ih?gj-p\Jm1_Tm1LAh/ecHX]6:7lm:mp<=BNh*p*?/-XCLfpQ@QD;NiUQ`$DO;H,ABVYd<0QGfWoLVW0T3u^u"H&dsFd\Frq:(c?9i_N9Y(LJ$Pg%7==Hen`tDV,rT[H/_F?Fh7Q3Rq>GZKM@S8"7Zap\DcaZDR$tsU5eG`'0nrYm8G8cD2lL&4s?7Q-FR_q-+]-)'tMOcZ#eY\;(ZEKL[3s)dk3IgTI!Ag.[s:/a#7bp5\!k\Ci%t<7b#R`Z$4e8d=(ASaS$Yjm@9AtNNt93DM>L"BWIr&OY2gs&34]KQe7P(oY&pqdARgK]i#R'ctXci(#dlh[?YMXf2f&V>[+bIEc'plb-dLM/([h)X^#)@[W66Hg<-ggCFe";Y,tr5\[HNqjk@kbQ#!E>?X(59iq"@q('K80`KJoKle!8@m5c@j/tF@B?TKW">Oe]Vm5ZT+NpdWs="P-[]N(uQ)KW(Yo,iH,g*8QPJ:&g'.qh\Y?5:_`,1&`R5q\E1I0+srn(bMb;_&U$Y?lHKI.6RY@[+X/:;3)i&Pt&jKe3@`\K4%bCqIcmirmWJ5GPpZCU]23ZT\rD(4@[2#!!2N"$rWF'ia`JV9Womd/L%pI"`d6Zd!IVl=GRc9^hG`o9OXpB0R0m6WmB[>NAI\,Xu1=<1Y_X$/C+;m^l8*HB&>MrU1EW(VfdroA]^us$KTu<@($p#%J(^$<"TubO0tB4#p+R"Nbj/I9;SCq3"MWFl'BGK?.]:"GuXlDP7gDNLEBUN$nHH6&(Y67bB=Ak;-T?ng3:fDnIFnl[a.'#N_-4V*CRgV[qLI)g;![\Ih1_D<9Ko[?YMXf2f&V>[+bI]&C'I04/s1=D\dRH:0"!#sPC25I+?E,98eS7gugm@J:]L@A]od3g]En!i=STFc89ZL$Wef5PD^4ohn)LL\C0L]j6Bsdia/;bn[r,CAX7$#QW<*\l+ASQ-$gLE?*K,0tQ'Ggf#V(8>Nf3m+=kF-sqfa*08F5*E7A'kr+4r1/pOi?d$EH"'*J9K[BY071)mh%Y$G_P-D"/l^s.8V0fJp*ZLEJ=hMUKOd]$nq2G+d7DPRPr?IGKY]rn4c-S)@iCp+:&Ka6.:qJdE^!cM!&!\+5qsK"eHbrV`pL'T=%V!@`\'fsl4ehLEa`+\\):!)NfL7&\j@TH`dl%WqV87m+@Irnng5]*l5ZT^;k?eZdL4@6DB>f#X3I'OdP_1Y]2ZR`F5L7Yl?i1YS_HCX,k.D=&S_u(1mQHd29GCLu);D?]k<@f5;>JYU'&aQq18FW,tLr`p'K1FigHDGRbW()&eYT7bn_l/CpnP(fcXt$NUU$Ln/FZJ$kNWsN(4s*.8@P:p=hu*[)@+L$JML#8BIA5PdBA`Hg_OT:T?]E*N(LU5V%`&ZecM*b>)`]hIFD,s6G/_1mh88HSZ]X*TJ>ub&c!j1p)'mclAnsW^.F4oA@.B)hOSs,lH^ns!p.)2ibIQ.3iGQpo^:MkYjCo]j6Br]jh_2Q!=_J@o=`R7E'#1c>iAWi'sf\Jk=W7`45n*Or[$oo7%q9b4OFLi?-S52p9^>`%]"r]q1RBP*FG:sZ0inm&.<+L9f0ut6r8k2j&@H)]Tm7_f2f&V>[+bIEc'plb-dLM/([h)X^#)@[W66Hg<-ggCFe";Y,tr5\[HNqjk@kbQ"qo%HQ677`8%Fit]fjD(Ik).?:_r-9'lje:(p:[NFfRs=;@qmk^O58^Jt1MjE95j3IS^0TZM'/&-JrGsPSX_n*!7Up#R4n[3.5MH2MEN.Td1VK%tf^@F?oUR1+*qWK/U.uP1g(R0'sD-mrUor4j<+KQ4=WH\C@[NOc1m^lQI^a"X/$hAT:R@ad)$*@efk0KMCCacE<1!kq0,,ZFrl"s]/'RkS_K$s+uk8OJXn(YHQd&0,*l-mM\KirNs]\1.3.n]9r4YH)c9,cr#]fp^s8>EK&))mZ54Zc^Ju??Qorean@+VT[J,GP8ZPIHSn:Pq=*CR8diQ3\;3_5\%W@GfLC=j9peNa&*BLb^iXf06h5Pg2/oXjS+9CUHuM)!AKqVNY'($fg3;7uYk4+aBu^[GLF]ZM.Z1=0^$%2/!*c(!8lRU[`1^\mngJh+3mI$h=OFk9oCMJ,Ps%JIPQ#n+qi;'3=L\4om5G2/J+K7M#jT'4qdr,4gd2HC`N5_[+bIEc'plb-dLM/([h)X^#)@[W66Hg<-ggCFe";Y,tr5\[HNqjk@kbQ"qo%Z8mBQ.qlttB2:4Y8&nfL]()JTn(BXblJh*`oT+pJ6SJC<@S.h^/FSVZ@Gj0fn-U*#TOSIhS$_j]f\DYr[P:+<%`6Oo8+%&LhcDOI1&j1=,id#P3r)n$Rj14r!dgE7nV9>4E:jW=2E^$HQAR2fj2MQPb8M/46?Fe,ld[W9W-n\cpk7u9LWV.&Z?+MH0Sin;h6N\uI\fg3/lYq0*/#U^`&f7_#J!fj;eOCG(-Kl@>bOu/86=dRr'M(`S,r[h;.cu;V#O;P`-;4ToGQ\4u^jJBr>7A;4="S2(>9e\g73`_JinU0h^/Met*'`1.d3',`-B"^aR#pcmGUDmO!pad-RjaT)Fg)Y[n7R%L<]>3HIgF[=HP>cSfBLl^1G2n_P=#Z(l+t[iM'!;kC;4MH8Bf-YSo#CuY.r9\_top57F=BjBipd\"GplY5)[anRoH+f6:O(G6%Q9BXW.']_Va[_(;-P>ic<#/F+'"gM?m31kB/S,':`]AlX(AY;mTf!rX)mE%.U9J;G^B-pE^_^r@HT!=J?%h/(<]?8c'aZ>5:3^We'#?olMAm.r6!mJMR[+bIEc'plb-dLM/([h)X^#)@[W66Hg<-ggCFe";Y,tr5\[HNqjk@kbQ"qo%M]).lD5;h'g\rEq"T+j.L==(rU]D8`7GX&'XAnkF/&V4niPe'8%QaY9o7\HbKV56n5!@_N!Z;4CMmF7SPO&arI-IUS%,4R,86tcaA_77]4o3D#YqM30TSZ:/`Ujua]'UbnL0D<:;Tc$;E8Zuo,8N2:c/W[u,EkDZ6^SuS[CZ<``"9'ZJpqccaN5lL\@%91PM]:898T8fu2p=:3es5^g['qHQ"Hn9D08Rt[FHSTA0k1XS"$sd(CEc(JpZZUG.eS2I5m8GI![r+d*^?eeYfn#6kCFe";Y,s&58i+pk86`e&d^(,d>=ChL]`##m"N'>^gM[mudL'_,5sA-tAjY4/%q+tEaYThjMiP%Ek7b#/*D)2?G^duk[PP1"M:!-8fpgWO`)8AGT,@CnpqF[i-Ur=Oq"DYIB747E,"(oEB:_/G(_%b\Wl2=l[OX'FPD5u+9[3kVU[hB:.m-SgD,j.i.l#2@V:9Ho@b`/?*)6sP-:V,pd.Z_h`9a3Y8N`SpZsba<0cLa)lu6EW37ncgYUO?R@MD+8]U'Ill,jHlnJ#S0Q82hch%YDND)GuU:T[7u5N[+bIg?[I-io\s0O)(e)F)C$mb-fbW0\9?(B!/7@>Ih3%ES"6X?!D_@,[=PrRVOG*<[5hreRd?5_rf[q[?YMXm+Q/(W.u\hp:oGu2]6u;U&QKlC*BI;'7AVa6J[9"dFcHGr!(/3e">8X@OW2Cn(#>pM1pd`.$6cgou&8CB_98T2s`k7EhP7S[T'8\/i^9FrB/Y-*h-=Qis%8Wgbc>7[+bIP.A#AD)IWATkg_#Y,tr5\[HNq2/Esfjk;2aARgma2u_j0YDZTu]D8=n`/2-CU,[5VUp+9T4cRRI/*!T>,FA@i9g_,:?qQ.^C-0O>A$]^D!fZmlch_59B=mf2;c<0pB!\hKh(759f'HeOHT%qGCd-)@G'^VeT_R5:h)j%KgpmIZf:CS.6OYGRr0>T%N0k,nlBt2#Q($69hYi;+lm1gZil3J=e[u;"NG1r;m;*,`O@;];<17$%;1G!]1[5enUCh<"rQ>X#(i!ik)2.;ip2FLKPnT^#hfNuSE4196YQnhg,R!./,BNANp%.,VV3na!qH0oE8PdTGD0bg[Z>O8#k>*s]=-mfFl8aL>Mai[("L#+N;W['L(>9jCl[+bIEc'plb-fc"#-r$FWA4g'D0:9N[FJj?&ZLYE6BnMlD3/mGaR4>f.*($"MAn$VsT-?4d`Maj4FiCE&a]K7GR0=`MX!/>5b.nehZ7DL]="![<&B^7$X.D0ETj,6cQ&uGoXdXSd_$p;Q=.9U"EHnI`A^CV3FEoekt"#*UMg0jr_p8cQ;#Me+2eB;HgmZ)NQgr>tQ$$$2,;eM5T-26#\K83";Yuf(2QXeuK`&j!b$BSO-dd+uTj/bUO_bcSr5A7>>U[8PC&7Y@G%8TmagZD=aOa6q/TL_\OM#SPlPJLcBqA!rmuh;$^#GLg8IY>3&QVbFYS(pcTLcA+=1m!M?*Ed3S^$r:2jfVe(fR.AuI9NH=+Z60!WNO+aTf5@W#XiKd=Fj:h"fln6cermsf"0E)ZMX]XA8%NM#j*:`j&r1_L.PgnN%AKtV8li#s0ir>NWk[C%NM%JiE`S-rXbt!'Q#!G"2:kmn9dXN)?u8d2/KFt>[+bI\nZ;'2.]7NY-"jf\[G+K1-)tTl87*nQX!b*[PI"!lB5q`@<6;Ig<-hRLM<"mU/?nZC*c`\PnPXA;9OmP^36Qm(,&i:/gUPJ@2BT[\_.uJ[s!gLllipV[ZEilbVg/DoC=:*`E`mOdLWCMO(Oah._g)T-Zs9>/A4M,'Fj1ZQG2O6WP'o_=kf<9VF"J<"+gb-lX&#QWL886"Kb)c\Frb$,@j>MK6C[OOCXu+i!3q?$Ka9&P.@h?56FiAemj2YH(q4F"cd"5(p\*FI#9,\H42/*oHiI!CMQ14aBp`FILP+=Wl'JQqj7,`a`eOG6t-\;`O[.FSH/A&U>:GeA>Ih1_D)IWi[W66Hg<+;*?!FkJ)Cr1">Ih1_D<9Jddb!"Z`ZYEd&0Q!p3X@D:_gI@*2$bA0ConH!UQW&SqMLXVO`)__Y+IH&%8s7::\6>II3oTIP.4LftZ^jfVQs1!FmCPJJ:E7]MGaqZl=$,Vn]B?A6QlJplNqk<65mP\TjR\k04BW4+rG=]D^9;F.kDR/];f?JC5l',tP*JH&DEc<_rq:SC5el]Rd=B7bc$td$X3E41_=o>FcFeTHH.q?7:j$gEa??D%fDMDAC2&DAEWCr`b&@?;W07KPN*i<`GfB+iWH1"rIi1bATKN_4#G2:A]4[?W-0]#7Jr`fA-C"h)dB>n]6)&g;W?5j4EKEtB,:Z^@,)'b5Z.oHQiB%7udasL`VTbY$,,duN')S70%YO]c&H%TTgKFJCOELn?rgBu_OH][WPIGB"^PQrIFd0e0'fd4bcLI;2"JG#V$UMi`(h,WS*\I-:bb&rOeFpD7GI2A4LVlqO7.a5h1A*QFP36[AcXmG%_V^<+5>nFPUMm,[E9Gb.;,Ym%&g)2XlT9O*C)3WOdQGqlPVS+jY6L>NbLX>E[-8@\XSW][0?A_l(YUCO5G%64n#W\3`ijUa"r"VN`Nj9O)4cN"$Dk_?op`g]_3CZ=/C=1PR?B"%t4uRXFOWJ`10n#6Tou?(rkX@HcqY]GKkdrNWK3U0X\*%CU^1.4B+hgMfT>#9o6?4Ofe\@2+PWg,%C6.rai_mnN*KSc>r\pu`Fssr0'n*W'\hO[,BQBMWsc)45&[U+>[+bIR[CO0nHBNSEhXHEML)BMZG$3GpTCCG[l5!a4agebbkK*&J,6g&qPd90LEC%p-J&r/(l1X-(R'7&SI`/1$bbPhpO$8jR6=3uYhI7FcPWA$\H%A^h2h*Xc7'W?%"(.#:d]Sc^a9P9VmM[?"IkTj(SZ)!\%>90H!BU,1WJdN!BQ7kS:'[3.*V)mlj?BL'S56d2V;!],B#"Q>$m\bPuK3qP3dL0a!jHY8F3'*]6tl9`\JE8+4:s0'=/VpHI+RsI_46YPtf5?#Z7rDL!lJKM:jn?m1Tr90h,8/tcXY-8F,(u!N(8VY9r7F]_)p>#mii?4g'FW8uO%qCA'M,i:_)^OLN2DH-i/E0XQ"qhe//o:%3fpH!F"]jH`$Bpi$82HhTJ@DKd1mVtTlQl0E#T;>@JM[W3=O4UfEc'plC-:Y4lB5q`cPPm#b-fcUNK@qVEJCE-/([fHk'7:[6e>A0k1[tceJB-hGAT3OUJTQCY-#^tr4BCXD<9K/>HY)5>KL,S?$'rVq9!ct[FI^tI.7uI2oTJmrQKH`0&6HbLjIAJEgOn(jUg[212^_[@2B\tBHU!aQ?&;T0Am:,q`abp+d2_cp=6L>6EB>/m?.b$;@E?Z)'t9WKN30f',^[OdHkn$J($cWQZ+euCS6_=!h$?AP0m5"SF9E:hZ)Ot^K57rK`TS#c0s+QH(hp&^D5_N0JAd4*:)[)9b!^n["@kSaQ#\>fZdT)Q^kO8oYk&\LElELRS2?19gNI@WbXt!E,cdQ^?_^7^4nT\sg)aIotj[P']:2%Z80IZ9u.VgQ\D3ntdak*A/(7rrnW9OdmVM6^r,18GY.P2R.>m0gNYdm.+ulAmH[N]OW:[BDr7nCs&/EQHl:],'ncFDIobU)k#e`m5D,f2h-*TrtM&>E,"408saA"ZEV;bI,m!:*?fW/([fWf2gog3lSL,Vn'6VD'a7?jkB!7X?@r@[[O9pW,!p8<[/s;$Y(,SJPBt(Ec!\6'1hKDb-dMY[FI6r:2t.$Bs+RC>KL,S\[K'fCX3_o@Y"e@^rJkB&P1]q`,TO1eK>e5;[>R-&=+&'.:Rl/XH:L;d!N-n:?d*;s+5/[Y\I;D)jk3#?/kuM$A@i@G=KN7f>aG*,?rfpLHrqVr?g0.Z+c_\lggMo><+R[pjrJpZl4V@a*`LN_A/-g1GbOY\k*)W[4?$'PmWKD=CShON6i?^P+YlmT[.DT2r5%_(GQ%'9m'8b#*FZTCEVjOrBM9rcX6[+,ZF4D&'tg4+omkCfn#G*8/"k\@*=+.+GYiCTF^P)qS,]k1Zia>[+bIEc#@qF`$6ob-_uHg<-ggCFe";f@4&0?$:)Hg<-ggCTFKiWp8<\[?\tDQ"qo%<`3r!K$.+3/XB/m.BX.JWh*t&[quSL``[AfEe`TTa3PCG+>jB[R!QW8^,n*(Ckf'MR)S_!cH]?-rf'G!=n\QZOAh92K6h!d)Q!l`9\8h\qL-g27+2-;U)N(1+2L]Tu);9K)J7ZgSV8WA'a-9(@7\TP1i7@7a$JK'$%)n>aQ>Io*(*&niSF)b<5.nhR#HP9]bA&l::ddo+.,Dn:S^=m`Jk/PF`C+Q%p/[L50XcPng<-ggCTHumCTGX]XZg[+X^#(i#[5h\URI0ff2f&V7LX@MPdn/BD)G?E>[*2&Y-"k`.+GYiCFbenk,tgIc*c(jf2f&VN2(1kV`YH+be(<(D)GdigSMirQ#!G*>2e1M<-)o!ogYX=e5e7%63Q7%d>YY*<:(@jkKFW+V';qi?Lbd+4t^_FCr;!M,-"^4(_t#C[+.PDn,@tF`0O,eKlt9*e5g`2A.YS"A`ke[HBNM>nr4NDHu-dg%aCjoI`A^Cg%j=h$CL-Wr+!-78n'l1=_"JE@#TuF8B_QG9",mj[JAHl7Z)]J.'desLZsC7fQGXlG'.1+aGOTk!"533Kp;`u1(baq:;tl`gD/9h%NAU,i`)/U`O]lP;?!/Z#25&"F_9*6"2Gt+,*442Vq?9TB=Ehlm>$D[0B<*BA?Wu9-:@KC2@cq.%bC%P.F`g:R?h#nA\TKTSpW./_hY\X;taCq,\3;%6fQJ8!K+*;)b'*fbV"_F;u's;Vf(X_P^"Nfo&2I'%01_heGc1nopC/AYUM:gl@Ne%f2`P>Wo;[S[?YO.'Haop]&;:Wio\t[lA\,9>Ih0\1$N\s[FGH4Ih3=r9T3L[W64B_KE#`>[,Ih22KXUa=07GRK>$a&&QtdcUT?d=%K]+X_&,J]!O:aE!G10/?pYC2"W"8QQR#&2&W)aUF:S/9N$.i*[iQQK0M&dVk(t:)_$s9ARNae,1,t%O"D&Bal_SEWpfE?Csr#2]V46[%TK#G"Lpcl<\I*6M_k-Qgdh%4>?cb+aV)8kVan;uCJp8!_^Q7_>N[7.'QS0eqD$Eb"22gG%WK28sING`$(^Y"au1pYnka=Tu_q2Nq/jY_Aa:adI38jMMVG'g-*cgYf?eM-YmjN/B@!0E]sV\%7K:]L>68!ni.Lb%6HgU-:WD3!m_N!P\#Kl:.,q+P%T8X)b:Q'`Q0@1rUd\W+'R4@0W,1[b'kR(!T>cYRb9]09k)[*.:%4aAokE'N]EU6g>b_I/E7fVX<#Iu_>M1cggZ3"e>aOnMup0?9`+79,1o8'`Qg'dA$uVV]+pD%cji4e&D4)-1sjO'[+bIEc!ZGZT5Y+Ec'plb-fcRa_Ik`^$r*/KB"-_9B%%sI3tQca_]@^/rF]>R)imN`8%o0":),6;%OD,`IEWNZMQ&^,[%Ic!]sQ4K6Ert`oAuTm'OuiB'2On$JQcQ7MOE%`(a=f#q'XM`X;Aik^q9\'NYa]-gYTB@S6]uj;^",TlH(it5EmUVF6Fpl._IbGV_PigUo"B/r[8ddkiQ)1M@RF!9n2J71^Pg2djW?HE(iAcBm>7r/n]>_)+YWmrZN+=:I4$sXT/?F#PZ^Wnc_'rd:8;u!apUV4YVd39G^'CkU^'tB1RWrC9@N:(1[&Z2g=9@igGmmhj-Q2fUb_E(0jk@kbQ#!GjQtn5(<[6Bd`Q$BqY,s=e[W65MQtn5(<\i9-Y,t0HKH3diXi>(XXfgOIC@9g@R[S"Bf2a-O6H-snn#icF\[HNqQ'c>;f2aZY!hM,,c5E(c90L?^r]3S_5<@auRkCI7aQrB7#\sH8QrD_jm*]UoNKD==o?8B24@^6Rgu_)fq5a6n(oo-KT0AD%S37ni.:m8n',1]7P!U$/aT3Bdno+*5u:7>=D"F9Q>69Z83b?;I%6a^t\_T3!U5c"pSQKV6&g&k"eR-4L%DB;EF4qNTRGn0IPLWa'gB[;r_\;uqR(+ZfKB>1VF0P*(L.1NZQd$Qp5b7qd4>!!\$]Q52;MQe2'-Qd\o0r:AL7DIU*RJBc*b-dLM/([h^1"THm>[)WjmB3Qr>Ih22>\(FS]&_Sf[?WJu`O1tH/"(0'f2e*^<\M/UU'Q?7&VUr3Pg>2bHpNFn7SHW"5nH@S6ppfAKJ=.gOdq`)/Z&MJ=TSSr7DlB7GZUQLg.51j`,I8.2s+qimn9CUp8At[rBjsBCF)om(1JXhtmrZ2,AMg6QYf;*s)QN?l0.X":%7)(^C9PJfkjW5ct,0j4LRLfT$F6ZK&ZajR0s+Cr`t07rBVUP-'c04%l:d;PZia[qiI\X%4!fOfUSV^V,(Ge^u`>f@k"!7?2rh[$oZsZh\Ih>i]DKRK[WokgjBg9;C6.9$%!.2uhuL0K7XoU7W4aO6p'jBHMYi>-P_VVK=,&d<'bYS1>]s9h,th0[f2b8XoutY2]ldBsM_BVM-g6tgRo-(?gR/_41OJha41W/bG\dBE'f,0F_5[PD(KaDA7m[^mU(A%()J>FDV9LfQB;RBFr$CS"SbZ8X84BKa-YFDZ<2@9mD`&6h`DJ=G*^"Y_VOWh\C4^jG?:5eQc#ZPWk1A0DCuq9+$I1NSlrMMmqh;P`am&A`kZ5f`]cMITItD`UE;4&1Vi<=UOSe-_=V099O?f*1X%c$=sU%.)-VZXLfmB?Nn:ZrQk.jlOs%:k0sYK$7>r8`Joo(lLFF(`+3u3G6B<1H0362H^ThD`Vn;1H`=qALi^ZR+rt:oH-:heu2AJ%V$0lDr@^*`7DOD6*LH1BjVlTSqK653#fg<8uU0q57a:KW.&`R4>K=YB.jFi;f+:0gqoGcN>@VVVQjMb7+l;$;pbeu-CG*)qk88D%5$;YfC+:jZr7OB:p5#\q!%#8mJ;C7K=6OcnEKF0%aS;[MdBDob*YA4:jQi[t3RC@:Hd9?%GL1[GM/=[Gp9-]FDU6A@C2G>FDVS(0A^\AugiI/Bh-6AuiC"3&4^+XishrA@;/Z-$mj@C@pqaXsZ_Xisf^'j6p+2U#3?DfB6q10^0KWl]'7\hq8sT!u9SghAEq=1`P4Q1i#lmS^RDSI>1>-LChRDT\1ZdVR[Y.M2,KjGQAILmV0DJ@JgbajH4?0;tkqlnQ0/N1)lK/W_cW@5U'sZ'cjhGd!.Odh)^b`TjXn%5EBcAkgdCtGI1aON8.lHW.Rs^,Yo3",[)lB1A_#=O:K05j+m[.6:V&ra=Z\Rn]WE.h`&VC/'*c6ABO5LBJMef;/(XZ"F)Dc]]MFE'l7>eA3\AufcIJ_=f%lafqM>FDT[Ah12faD>Fr10`9]Zdkr+lKu_CQnC"JLMN70b&"J&.PP'9I9edhAh12faD>Fr$CS$?2.65)SqSUeKT)-q?=E9TR_]cerRTOLqqN-ZOBh'irpYNZMk`rMYfi_9gZVjcBG`6GFU;@rb\(PUQf%Vqo;@9nKaP()8A`-VC`ha0g$Jck/3WghiCT9P\U*Jj!.*JVAl%p4G>H;lY8GO\$eQ>DRakQHnGM?-oTtHis>I&=YWLU-'\l9pN"%h2)K%%_35uMD.Y>]WV-3r?=DhBW,^_o_0-TR4D)Q=)*di/Kt"1ifKo*N1R1=[%W5Qesuu5k,!,b4DcK8Hf@Pr_nJRgiF-'UX_/"2bdp?GX:'g_G6?REMY>b#3XN+qE7C>c#fulNBu-#jFgf[Q,MeRI1M//DQ.[WWAueY4Q.`/KFZ3Nq1L"-YR^1VhCh:%1>FDVYQ.]nokn7^=)QV(_Rq=1WLb71e`bF-Z4pO!E8?fCtu>90+r&:SZgMr>HkYD7W"<&=H9LL(>frVJbmAtJIu(;p)g,@$,.*k:s)n@cU4l^Ya*h544g+'p>D`5=DYXeDe@ig*4:]NbiaA=i!E##SjIWI'.`_>(1IT$9j>252KBq_>r`2j55nd%uC%jLg;5\O%(C=jiKSjM_m6=#@YQc3d4A9R=V]],f^uEp/.%n[a0,RQrn_@X(d:DLkd`6"&QD@,qe_;,f[]8&71LV?:2?^s"SSp>Hc!Y3_fC[(<%fYO`p,8aSh"]i/NpKYk(EUG$:ShU5eAEmR)TQKmm2B*fkkDD;L>JsoS^64S,(j6:T9\hQqld[aL)e067q^hP&BV`i]H4)*pTR@Hfe!R7XZGj]nGV$KkOe]7>$nl-V-'L's\)Xj_k$-3oVM-SH3CtY%WoY"l,o9^q+nsUf/oC9FXji#'ijkF5SVuM-KhMFZN:4,YuTNrOP8CL-2R7B6#@0oqrs+B9"V]"oFf>:%)9At>45.oTaLAUB"n4NFG\6HK#?4?S^9Aqh<0]D9%'ml`So/mQL.3r2HF3\"[YjPo,?s7/j=Q^cS(aV(#g`f[&:QZ]:dFQZ);kHA"]uggIUY@/u1>?(<3\?*;>p![-AuSK]bD=RHd*I.3N.(r$\+H0-"GqR=R);`o7(gJ_Y"1t]:b_SC]#&K<97*(l>5&t`8R?a6Oc$7lX#U]s*0UkTB8+mLQ:F_\?.9@24JOV\Zb/?DLHU)>6oumBb?/#pdicT,f?dR`bEQlGXU;c=^*nK4uW!/A4`S_U8;?rY^MBY@bY="sIXe79d3^@dDl&"5++s,>,_E-e!7B'",=V"j'F@ts@!7ZRs;k2O`Ch:&tOkK$4g$7tDd(8P\Ah14<[PfsHD4%GKR,Z=jAuh$Hb%t',T$:<2MG28qAufdL6__g$YhVYZ5/r1!C:AX)tAkeNrfT/;PC=Bm&9/qQUP7=EM+UPSji#K$!ei%DK(3sqB-X4M#rn]RFk79E1__tZI*"iGRIF-$L>=p%f7%(E,MqOj)p6Q5c;jnK(L0)+gTIuZB&oIe)?rA>,T>aMd,g/;+Ccr&fOAT!,h=mT$B\[0$>N:N(Tfu>kQ*re%)?)+01Hqj?q-\>&rWs1#S/_lF+qS%]95`]`um7ifiU2BRONhnoG0Z1l"[Ak65E8>?8))YWX0!j**fue,B[PD&m9XKQ-lE&\(K$78-/$mb/)Vf/:/P0!enfIpAh12f"h+9W2)g1iR`jZbm=Ekiqr'3ar,:O1(Y6GV*,:6F40OG>i?-nm5()k!E-M+C\C4V"\C2A+],^84NeCKFLVfRslF._k97s?kR(c*Z9?qf5?*/4*jC+ph`+m8eVfT?p8?cfR-jJR::DAaPnE(&gPIk^$&d^$UkYgt^+eI'a'E?%a/mBeW(^hiuLn([e;&U_VeR+3VW@6WOXXk!(oSIH06/>6*$s@8nja76&/0GEC7"!orZd@/(UoYL>h9&V:4W1']4..j%'LJ4d[2*SW1jU5q6j7jA7hZ%.4igoQH;otV[0NL&4.Md29MO#gLT.TI^8R^mUIaluKsZ.$5sSjZ$Uu-$/cF&-mM!+IL7EZ4Of8F7nQR!D'-uAmFc_K9'=1`6GBBKl@rdLmkUA`F=@eZH21`j0^MMgGC8!$)kS.k:A]h2/ndb\10^0KbZ;WWduN,(Ch:''0mdqFVGJE<(iHMrp&&R6(acF?SroMbLO$@T#GiAB]#d5lI$a4]BiK`98SaKamgH-B]D(UNgph7D_5&oS,GW2oCj'?$D)(C?C&2TL3V:3&>Jo1W]7k;[)QDgHoJB<_)acmNn>HD2SH9/dI3nbKU*ShHD"W9]hj_F37G21OARFQk20V`P:8fR&u65gdR(ZJk,?5ITEG/7Ci.^)bZQ9U?`4i!oC.1*<"kqfd_dam?3"hd>cjK?+=*i>X@7:SMf8-;a#E9Z9OF,R^I=3,t2S%$I*%t,^H%XKmdLWQ:?bZ7GKTnoVmk`F3Ik@.n;-Kg3P(qL/8/kheq8Yh+#[1-d$c`:aF[W(WAY.KBMGnY`*oCt;.A@\903+:O\+Po.uYM9DU.R1+OB6q7FUKn%7Fl,ou%iZp^N4lBL>5i[tlbr8u@\'?-+[M9h,lgTmf(o0=Q"V!Lr9n%=gqUC#Ke='5a[4E,eM]E1I[,kU$\KgMCH010`k]Ch:'/QFkgbdqiU(.O25Q>FDU:l??dI10^0K9$(m,]#`B;A[^D^R)B?aHnA@=O3[X.iKA%"-sRB=\6kGkiR\8[ANkI\^lurf]qde97lMRFEaE9,os[Qpc>RLG:4J`fcgfmKe'_X7kAgg!L%Yu^`T'[2DbL4ZJ4+BMmS9#T-o9\]'-d_gFeEHh;%3Cs2oMDRYdP]$e,q?p\$EZL[Ep]n8H20^Um'XA&J$\EFIq(sdKmEgXsXR3M,pIqn:`JmH@1\!`5>PNgQ8n/1_kRaaQWJs1F-%hn9'Uu_WNNL57Vp2O&>M7_?eRI7K7!0Wl*>g[9tT5ePeu%T(:@CF@@D^;C4\A;6FRknJ2G"XisgXWuRP02U#3?YGp3tCpcuLX3AXA>FDV%'n_:dA]h20$%j?[PD'LBf3?1m^a@Sm<1;@mk,DoK\&8eE5/eCnFCt:g[0\j0-1FLpRhF1I,MHJ$K([P^Bl!#]F\E<2T+?oCZ*K9Gbm2\E7&ZQKDjlQ'B,?jX3T""*b0Q4/WQ@*).;AM&u<.-#$W9,jV_B;]h$AJR]4l&_WrSH':CVpEMA4Do*i541?BBJOM]JZ'T>o)9Zuaj.HR6=4@@7r+k*lUBBVr_La51J>._k-/`2+GXB)D41q50t\fA&1d(MJ%1u0bL\(l+[,otga;D4u./%SC4/V]OF3m:,ROUh6kd\6+*58s#PrQ\Wc+jVQ7EJ:mo)sl>]#Im4L;F,%`3Wq\3Y_CFe&p)5!,#^GT*&XH+$s83mh0gH,SETC*9^,L4dZjD1N,HOXQisB;D_VG6BXG)u'9n8oFMCH2lH^&96s:!>Q-9Qt6onIb@j4'"7_s2>Bm!D*N]'t&er/F&BFT,c3gu:/KlXY_Aa2_IC'?KWkr<.;raO=)>4>l`:b_HL_WNL)7t4#q>/A-Q6\$"Rf"Dh6eC.ERAW&*q?CoQtL?VunMBPp)Q.a;rPp!:hnSGWP:kP13Xanq]+J@d%G^ErLO5TR_N"'4k5Oj/Dg5W6IIZjs8nTm9?i/itL-P^+lbiU+GpPRY[UQQ%9$YZ,1G#<4U#Ls4N2kJu]%E.NEf.#b\sb"b9TmJfI:f4%GU=fe*9jK$CJ#)mkUnK]S:T"bb\u@8Q9fo%C?`n5B^tOLnPtp,LQhB0'Vi8FF(+o"%RX,Y/p'h)qcO@;'!'f^#LP)@C6.;4q@8*`BPD_BMbf6*`raM`,"IZC938EsB$,]0$S6B36LHD(&E%/5ij#I']lI:[[Y%B3?f-._'ZVWBB)=QA/37N4[e"IUY)J)Q&>)U=NW6aPk$51so(-_A`ABqf":K=0`M6BmS.NV:a1>dKi/-IGg_='.V176i?kYl'Ue$$$0'!$D[G97qo:QZT1!*^4&Xebu1j4d`_N,P)5;!`ZS$#^,514qb"[1e<0\$%$LE0IXg_p0))tn1m:m1XJT"8As@SA!KM[!huB%QMV&pgS%c;rNtIiS(K=Y^ukq0S[!;QV47+%VB0)=9R>p]6CJ_hY3G.`da*@5$tEGPM2/XY.+!T&N!l0i[)KODoC>RajOPB?)PW9,U7HG";*nOi8;CjQBh3T=2WPW<238:[V$@;=)a#^,$5V4`kZ?+K<_QOt6)HWEkVqf"(Gd(sqAT^LoVWi>7N6A@Io7W#Qrg[24JPY\U1Pp^Q.a;rFfmp:lLbq0hM1`Hi?AL,E:=sND/D,MM0`??IC;FPKH'hf>G@&n',AZ^-&Q>ienX`(YH..rkll7hir?aY$%_5AQK%BHrC.@2Vh"-/R'9I7GH/L07JCJqn'X`94kVJi6:Z'QL&V$$Dp2YVlm#YE7nl=AI)m\gc0PLU!r*U(q2paYOVGCptg$7r[>Fd]WRB=Vf9[-UM/$kMoC;XjfX3=V>MbMArAufc1#@t8(DmhE*RB=\6DkC6I6aN'2C0TN=[MSu??I60b;[;cdMp.`7dl3?ToRejA+=VfQRN6t#aXg<3aKK14Jt`".3X@ll423a&[_TZ&=6L4g$\bu@o4n\m;+'8J,\.S*,-PZq=9.]B+6[h*[NVM;#bN83Zp`+[S%PUf^0D^?%G^t.AiR+HEc)gt1#>]\L7>Hd6iam6`i?1B3Zg+[l/\hWPA!YW$PK7\Ff!YElfpa'q:/$f_*l*>W'hV'6#N5-0ct0&ZFSMR?fscse;9j[(0/qJ69;cE3,iN=10^0KEb)U^2d>[B7"T$O@qMbL10^0KFrF^KA*Xl9Q.[Wt[PD(S,dZ%b10[0qRB:QWdWJ]*I[s'S`,YDpKQU;I-?'6p[!/R4F"V^HRY;k#C:N5TDh@6K%)GW7Eu[0q5H>?oP_ns5m@W]`*N+e!(t6op1R(9E.W=&-T=I5E&[l0)eQ%)#%OC%!;OLgEXUD5'(JGYYW5`dCPY,aq/KDuu/)W\LoJ\TLr;LjV)eQ,Y8d(=N:1Ab;PsitGWfr8%7#Pd'kHn$Z=j0oNPuD9H][fDj:ILcI(XJJNL6b=KJHX4uAh12fNm(Nk?e8bSXgT_,:l2YR8ZSr9KP%7W9(X78bZ7)hOVgeTCpr%O>?t&LOL03E"%9=4PC&dBXYKWg$5SVYI,)4G8fGjQ0%KoDS@QII/S/sf3\j12$\SEEB3shX,Gq<%kWQ`SUnt4K=s,am^Vj8bB-T0\.^hCZO!><5D27F&$M8.Ti[ZE_<;%I-jP5#$2EPe4qHX@*Z?I84TM=R99G$jjB/\]WMbmL/gua,\j>@,0_s,HVS'O9<^$_CN(TIELKX3m-)G?B0o8PV4CMdb13**H+h]m/(O*Fg_6BQ;c=\HM0?&Qntf<#QuaPcZjH9lL`fKF3DGhg7aAoJ7T3'Z)??4dDK6?n9@PK>FF#6QX&NSLbA:au10`k]Cpduc)F9V.Cc/Sd'@kLO1g?5^b\@I8-#F*o,W\]L0jAKpWI\*Mh\3OJ69V6D3ZN/?+d)>O.Q,G\OpKcpGh?i?NNqB[;!&f6'TE+27/\`e^;Gp>Es'LC'iH;D%3Wn3_n-Y>A[B>JQAf.'=fJW4f>/<*-)$&On+;X29`Uo#hjrVfPIrqRZ;9+&d:qX/(&Hb-#otb@rfb/Fa::CFk9t8m^/:t*09CZk/0.7Ht0\63u6])?4FYgjCn=Nf,EW*5//(dG(21#l86DTf]k'0C+k:eS2qP=7bH?U+.b`M_c@GlbH`\BZ7O2Q75A)8XishBA@AcpbH`\BZA-M@%9Nn6=dX0A*;T=U]fE)rD,ipKBNRjNEPPSnFA+^NoD3nBW/'.D4icrS^Lq.BM=sJbT1Spmlp0LBG;48)JI0SRH@V;DMHZQ=X3bAQ_B3[PD'TX\-]OAQb=1=dEV.Q.a;r(%/Gq_Yn?sh!6PH^]'42KV*X3+ahm_Xmdtb)u)W>fcU4]mp6J'k3;\\A#0t_G*ZkdHu-2*?<^PBo?>o\.t$@OnZXp'fugTObH`\BR_$^DAh12f.@I:hbH`\BZE0`T>FDV;Rb%u3gZdj3MIkhF:X`Xj9GNZhM.s,I=)h.4j6MTfYbM`\uh\X#qfu)dHT-%0T$3/q1h[4l$?`sc'>H>G,iF_lGqXLdJK%\;P/Bb=MbF6#dV;DMHZQ=X3bAQ_B3[PD'TX\-]OAQb=1=dEV.Q.a;rFDTca_YNkQ=X3bAIXpXb%tXt.ODEdAQb=1=dCpEAh14<:2I>l>7A!-%u64JG/BgD;RkUi%X4B5iGNE`][C!mGM7+HAZNH3r)rgKX$.:_g2D^I4%f\MRc2_n:55[iu5;+eW/*/H:r%I1XaWqDt6LWGY\,I#rsN)Atad?-n5aK7Frl`p[QKR)L`B1o^8(qe^\,cH%(XYS$3P&.%W.tRB=\63AOfMk,#)DN\5KeX0f6ee]M,kAuj`6ZdmF*e6?)aZdmDRbZ;'O\m!FDVYPM%EA03,E%FKmW+V55K>O=&2XbM"qhU5SpXbLFr[[LdXeRE-k%C;>QWY/MVm5Mo\mUCFKgC4,]WMdTtpcmXB5B,3piRR'g\C3DMjp76X'jk5/)sk93_SF-9/(eTbrE+AP*iI,R"U2%!'.qMEE`Kdast6"iRF8uQY?IQEogB7+Ma5SF"00/UXs*/AQ(8h&0Dluo73`QErWtn[rs6UCn[@S?d?gIjBQ0BR3WC0Ah13Qfd]L(X0g)O6Y3^+0qP9nXcD)7XNX`*OP-Y>bZ:!?[PD'TXish@bAEtK,C)f!5c6COCahV\'QTSCi)9/rHZr1BC2rdg7EW.]6RZ.[iugacll8gg[\>k2i77[7k^BOtqf@1t-ms9b>mVrHFF9PZ*L\$Y^m%O?kc7ch"8<^fq94IMY?`i>P4R&u*TC::E#W^LB<`GB[BZISX">nr*rp`+U\4WhE((I&FKoT+aQ[CbDhF%bK:FDV;<]Mp>NP;bG-6fcrN?WSQ*uFHAnnc[/uhXVo?M&TPP?`rWNYTtLk%'Uq'X?X2U9mDLZg-=DFOg(&hf>5c6-\5%[G-tqbI^;D.6O#eXi@B2>*uFHAnnc[/uhFrb-.K#DRS9db3A"nUo>'"9[-UJ?MbB+u6]<[PD'TX`@s\10`jA:ieR"m<7U`nh/?i$;[O2X0F.P(1sV@R@:7ZM^f=,>VTGgk%rRpK;uf%J\1l3^[S5'_l&PHK[7B>07<2UkJNd9SdHRSkFqCk^\7?iHFFbm[S"']S.FNPeLuYah"sE_B%\YR"WUoAU;%=dl,ZT[Q2&4A,)aCB+Rr&!o--?k`ES0PV=V8r'%1D*e^l1t/4Ro]IHifi,X0Tn$-e'GZ3jY+)C7@$fdP4s+QJ&9-Bhbui\Ri4\4PB#2l`UY:XD+fK&8l^S_CNCRR*n%\iP][h"T9W7BNm`O:Q*eoqLa(V)ml,?C^AQ0GJQTq$F/PBPaVnkpddWcmXP]_3lnSn.@VU"]+d4jjHWP7p+7i\qDXUdRW4"C%jU9X"VFXUnRtVFM"CSoB]Id68gH!)O`5^N1T*-c)'7=pnUqZk5,\mE.hLleJOZ,n`lo?.e[PUpak%)D-@QfpX&S8C+>FDU6A@C2G>J4p?UTNA=_+XishRbA=Rp[X,R07GEY$Du.:XZ"F)]0p83)J-?4>@!JqY.=PsE:;&TS\OEsc9ccP1EZ%.#Ne\DhtlsSiBMbR42^OeS+hY=NZ8IO>>*r:epOtA>931A_Ms7:iA5+ALM*6]oIWLm&XNfi)hfN],-a."PXh'2nq%nU'hZ\%M.Y.(4>DY4>"m+EWe/r!M(B93A.%-!hpm3G%=j/RbA2o_$.JX.2'nMo9Y2kp2]mCJh3AFc#\9cMUKs^.bH!\jgm=ps#7B05@3n\72m%>FDU6A@=6t>uZYSbuS>>frD+d,Iag,&t,2jdUhPYZdh#^.kQh8.T8@d2f#G,W/4"%MV6-gA[]aDfue,R;'dtT>E)WpX0P?Vgq'd^A88PFQ^ML1%bkD8C'O0tlj=+[8(SM.q-)@9f>26dq\FK0/231l@I(:):)HUFS>P9@@02/Jur<(8okCU6\WFDV;<]Mp>%F)7`FgUC&>Wm3jbt68uFih^@ch@Sqh,fhRD!Q"t$ZTUiVof!b[R4_^Cp]gU4gLW3U:%d*46:+WM7A1N5'*#MX_*Ugr09)jBL%n2`:/+Sk'q>l@h:7>@LX"ui;mY"Tl)^`Y_[Va]WlEi)@^b!e10\UaXm4:.fP7h'(l#.,WK-Y`iEiPsm^717^ce%lPF#t="B"0>H-^d']<9Fm(X1:RP!a$dPSl0%aYY!D(S<V*14![::[M194_kHg+&XG\72o#WnNA>[^p"6#SOJ/fd^?@WsC#XQ.a;r[8Sg(,uZB[U9@^Ig^d-h?rFNW-f6a*"4`.=Rr"]OMV6ki!Q^mgO\cC&f,a/*D.*$R1CNE'Skaskr-@&Zg[Dacq*:hX40rA,cq>Hn(W2OlY5idf.X)fJ6omtmKn030rg?Pf/S_cW+!?"'M;bZ8=+ZW3%0r/hN'5MYYo$\.^<=+r`\q/EON'^g/Mm^D8pV:_fYn65Ud`ubdMS'0dHaB!\7IDe9#h9?!q^N4FH/%X9_"Sr)9+"m1fTkYlAA?,ZF]]Pea<0X`Of!Pj#/J9MuY!AU6>E)WpX3)mCQ!gRb@4V=mK0t>>=e9ASXcWN+1a?hUXk>pWQ'd[Ho6ai<#:[Y+KkerW\n%%]9WjbbbZ8>V*1!=,`N%V6Wh;ajElDj+[PD(KaD@+jZdmE8bZ85=frB)8FX:->;mY"Td4An1U!JZNe"!18V8cnPV,",eM>8C8X3)mCQ!gRbbuR21f%JAc20@!C4YNt*XfRF1Z&B;@Auj+>XfhZTn4NRKGdTX&$dV$N5(@H&I-0WG_ah=_KjS2:/3J.7\)EgkHu4,1I5p##*sqNjGE@\<=ZL;@k1%MW2StEWb>?Mc-fue,B[]2u4/$kMoC1_%cWgn*8$'r``Cc/S&bZ7*#AULb_.@[H@MoojI[b?S?Y.sE$n4II[][g3k\!r/i^\lbt_^eC;#s\IVItfo5T-&=FiUDE3h[BJ][m(Z-[r6aNghG&fO0,k-V9W;i5$R7d7NC7&?n?HWM?FUW-r"Bk&h,2C6!iA65:a[SS@fK_>-&H">R2rQUnc"-$4NW(C=V:F`7[)UeQ?CkWgn*8$'r_U2kIKfm(`f$b`&b@.eU^/,aG;s6K9R#=#b,p-.KE*b?VXSkEafDCh:&tOkIln[?GjYCc*f4XX^5R=+[8(2-Xp_/fZqDl\o\hWj*CG0j@fV10^0KbZ5t2Ch:'/8\AWCR[2/uPuFh9_,?\iXgUh<%\Te)f+=@^V9E4n@sD;,N8Og]fV_a..rqAn>Ymn5POF3b:gRHejc#=[K7#+$>E&\[APUA%OKWVQ2Z#1(V@U0SoZ2T0Z;T!BkP.$4CZbg#!u5a9O\m9TqE[6keSc=,q2WQDCG+&+oT.UC8^Om-*oEo0r3!l_)b$I@$^qTOo&'j##I)sgb3S6NDacB\87[Djksj`[?fbq5_RJU6]-Z!5f:7.lpHAen_L4ZO.g?ij_[2;*Y4WOInocFH`)RkLR=8k@1C@u5u[J!8P?E4qr`E!u(3cSs^I-0M3n;u4g%CT^NX1b8=O'%?=bDe]U=H8ZT\4(NQ+!fHnEse5c9:umkI[\7G6L8m*Fh3Ym!b[jA'%VNp(+mO:?<8BtC<@:RYt#.@jk75arrkY'I*K1p]MuWo`0EpV?FslEC@S>kF_1)8+gA?IJ5d-YM/TWECr]C>,$`1ZFP09)nNU/M]CE>qq*L<"VdADA9\PndC$rBE!]AN@oZ+tp=Ys*W,NO]'\8qDLec0"?'8=/*k_FjW%q#N&!E_T(TVel5rAc&0Zdkr+Wr*95[bRB:(-Aucg933uVE10[JMVOEk)C9)"rZ^'2nA@C2K>Etf]bZ5Zp/$mdMbA9%g*G;g\;.clNe5Z#p>AY)aA[X?uKgoXS67]0-ph4:`ghaY>mN5^EpUZ@R3stBRrNF+opAZcCcojT$+7II0qqXWu;J`bpCP5bM"2B<]<-UrLbQ_;9B@V-_?<:s-!Y'Q;0ptu&4b]gNDt-Mq(o:ui_heNhGa(fdN0HUOXYOhVn=XfcY#\fd36B?t((/HD3UKa><"S=J'fI:o9IGoHnrW8Bf/#.l=TqX`Sf&b\NKa=!!Za]nOImQYHT^4_KbdSAdB2V_8[FaVD.Ifue,r,IKrfh]\.%ARBfJrH^Fi<>P]a?KWiNeP`PN%*jZ'+B(+^9IHK$r(O_9S?NC+DtCfR5CnMBR,#QMaUE`C14R)mF#uOD;``rVG_Xo4]7(dI!Yb,X:"fNY)p*NXF5_ldmMT%]^:$I&1:@uh`HC?VHIln\9"X-N?W.:cI$5BMY2)Fob^9MSL`M_3gt;j=\'&+U"O'/O=J4MmC@2N],W_5RB>b>fkRS31Cm?D<[C%IH/[JI1>*uF8]6%:W)u)4`W>(ptbuR3$`GB+oR[D<"*OD$a8i1="L"jd@_W?e\_._XoR.F?+:TfI+Fm"hlg0MKpH_2/M/[cRBb;\&i_MN38S#sn8UW@7_[`Ye6fue+gj-iU!ajb,aZrtURAugd1Cpduc10]UZ:RKm0ZRan76:B)VQ`S/$mdEA@C2K>FDT]j'sUR[CFpp%X4?LiRM6Zr7:TZ"fZaDg3K`_8%W2[me#b-iT[W_IjiU-S100055J=>FU#o9OhOh4B%%Kse3^%9-QYH!W]$pD_pIUm;,57rX9I'H'+*g.L=p=N9-^.ad$kVAV=4nT\O,(\[7[g4%^_a0,^)Q^-+8i(("2[B"`MZOGTeDTXb@N8n[hgs5UO4]cGQL@k9H8tqZQ8K35uFLC:38d(!RERb]GBmD4-3_OFMk++B_B6->`mlQ$#sg/AWp,f5,$,g;[16f@jZY>!Q$GE1C8=<[c;jEMOcMs>1]?'rU6<^UmLt:KV,1KVLG.,PN`_XC0/JmA[X?u+`]MG=Za`AA[X?ueLn2Y:mnFDbuSbLfkOU0Ch:%1>9S#G>?O&0Ch:%)_,eOQcCp`h`P^ZhDu3CVma/[%ch,p!gY>mj)#fk_IOJG.WUM"Eo:=i).X]j=GD:;d>No0qf?2$94IdOe&cW8Dk7,D,"L'.lkH-fQXVK8sWYHR([F')Q[n?%RF)E:-_eca8<@V0a?dgV)Hm+B`2q[e35YQ+Xe06V[2@Ja\:4+hq:a)BqFU$ci:7`@pk=*%KGW$ElS!8YZ80E']/H>Do81rFPURo>PN9u)aj?I74AmT4&^kdFC^3mt6[SDnbs2priEE(B26(08H_[r68I7$$SH=@'tXi;NjM?K[4!.P8!WY0\F%Y:X@p)McO;AS&<=6(+i)bA9&I`lD,n<[3!2hb2p8rp7[6G_^J)b#c@MfeLh1Kb/6$P>8C8X3*2%N@qP;KTb$2CfRq5Aui2ZCpbcMQ,8`afkMK^>EtI3S_7cC10[bEfkPVgO0-"W`POF4aSSPD+G^-XJ%0,?Pr-c*(>R:AU^]0dB\^.Jr*Oga):5*>HXn2t6P8LjrL$6@k"Ho..Eos!aB/F25"WUA[%Nh5m6seRQM+pa>j]Sl&oh)lgOB+C)qt&MIqXCSk+1f2C?dQYtUpkA>HR4Q3o6RfiT!r+.C?\^@'Ri8"b)*]-,5:,OFGZN<``GI93tZUX.Aq7Qb(;,W+9f(/cm#r2T+[34,)_t(NYQlFcs!,@79.b+X[5#k;,(6UUP7p\$02TCeXf2rJ.H'n4"3i'4Z"f4?aXN4CeV-di"DIG0;QL5p=ZHL_'Yi.BV40rUercVm?pm>FDV5,dZ%J@[O:G10[IBAuj'WR'"S5gZAsOQ.a;P-kXd10jC'JbZ6_Z>7E0=fd\S[eRW4!Wgndrb&"J&hCr0%XfR0gn]V`SeRd'-$Xr72[G),](%cG$oTeoQs,Zo/htrc?/UZ`bD\%&Smk;Q%JP$rE4UsH7I@EmV48A@hni=g9*:;IRt*dq.#rglH5/4_Jb\^XN203(:nANuLP<[fKAdU+!bHE@acFaS"WXi?]]l@D9$&72Li$a!Lt=WfWrAAQc$"G;H%H^Bh80%d!i$k3&4X:$])B\$Ve5S4,P-4.;C&gVSZBsc4Bj(2qX$/[Be>\mlD*\n5!@"J+D1hiL=_s-Oa4]]KoP+Z^'4D:^``T=a4=#%':Ban6>F(a=.I0[r+Y&aY5ALc%>?5e-`d'O0YNsH[OF7uuKk=,$'D]p?:JtIRh(]XqFLfMHT%_Yc8S(C57Ma;.J@gH.X/D&;I22HRp7,4LPqUT_ALbUAMZfoWZGq4=/@%i=29XVW[7eMXDIX5PXHFWgV(>@.isFPFK;T=6R[NE^"qXYO+KX_(1;X3*2%RB=\6Auju>>-lBJ>8_Q:_o>T*'FF$f^rBg"V!=Xn'OWsB=ZT!`!\&u.^-C:5m%RB:L?[[OeO<^W^OR]SKlZ$ok/l.n;2U,97/$i5IRB<>=ZdhldVIlkV;DMHZQ=X3bAQ_B3[PD'TX\-]OAQb=1=dEV.Q.a;r[1cd;g'cjMJ+3EqgOAe.n9Xu>n8`Rnr5`CJ*^5#Eeo8+kRrGG(>$0HmH1A<3c!UK;R#Zg$:7kVrYHK#YS#n6bZ7O2)X;R8Ub%tXt.ODEdAQb=1=dCpEAh13QfrC:\PKS<_B6AN5kn](HSp3BD>/dsSV=<$b%rp^RB8$`Z7O2)XJ%CRRB=\6V.@$?/Bb=MbHclFCh:'/M64@kq=(k2r^s]XCPEe!,N1;)qLda>T)ML[QE1!=r7&3Y#bU>I$S+eSouV[nJ+KNjKumO=;bh:?'1oSF5iD$721AQb=1=dCpfRB=\6Auefb>?R8'=dEW%6Y3\]>FDTca_YNkQ=X3bAIXpXb&"I!>AZCj2"9M[JacjP(&ii0r'0/Tqs-HRY;VsZJ,Y2g_eX&4Ybq?E+9#VU^;8*s:3/&Cmk0AkY-3Vg&^4:AAQb=1=k;)6[PD'TX\-]OAQb=1=dEV.Q.a;rA[X'7Z^#*)Q=X3b2,n0DndOpi5<;8YB669$X:jrH6mt5SNdL+>Ou:UC:2Y%T/_9^XGpVrZ7O2)/Bb>rXspX+J>CJ-CkU^$*FCL:FmfEZ_Dg;_5Q%Lm%Ym8jbH'SRCirO`f3&CR]8a&Jb%t(]bZ:$@=dEW%ekhd:bZ8>V;DMHZQ=X3bAQ_B3[PD&moXr^HB;tBNX]C`(_H1+CdI>1@p5s<0IPJLhDhd#;6fDH&n*'31>e%%X.(m9C4A<7u6qs>jC!;R-Ff*O]6>&`jmjuoGMS;i21r2SWgsRtD_g75Kit_rA/+KhZ6c0aT;7Vj'W:M3]7e>'Zck:B\FWgk%eV$MopNCe0rFOH7Fd5cPo,H`02594Kd!OWWO$T=U%FXGN9&:hj[h:\[_-4g/Y+&-+k)3HM$+L28@5(F9g.I&ln9CJ8:)`SE/ld;$&P1Hk1iRfYA.WDN65lA-F,&mQ3J91Ug!19bp"l\9U;g+LOMm%[cbN@DC`BJ=q$n&bZ;-mCj"$>A[^='Sb3b$jK.K)MeXsZ6)+&#JgI#1aYYAV9easGM,qkMF&$ijktj%>eV;cBm5(QklC?OB#:2iN[0..GP^5uTc"pt"WZX&S>FDV%nV+]RMZV=^op2b#]&k=\:9:?S=_UaDP%Z9"?0F)5QaVX7O=OqDTh7F7(-/G+cD"L$7$))qZs\`'E\bm2=VFIc9;5F-b+)D$6ori@Cpd][HM\+b[Q8'0g-LQm=Y7HX(8]m9?o)#TXX]-#-c/mdpH")Ha4BCiS`ZVs(Dap/\udZ9Q)S0QcT_#8\C"Cc:RA3W("*D3V%?ks("%?$I\C?sDB16LZB/B9$Z<']=r6]_=%MLf+\h-ETjp0BB1RgI,9:OA/M.LtE.uoOW*2NjBYb<-jHc*%H]V]M?$*N)EVlE,>`Cp5V=8.dFAq[:#5%e'[IMN$bJ6CW_JbFFYX*Nn8PLlbtH(?)*,#dZg`1G#PkH:A\_``tt/"AW*;JjJhOJ*LE^bFof&b_]]UqRUAmgW&16U?EE;C#\9CQPo+]a8C<9_F>VLTW/1#'L][qqo?oMT9i)q_PS72eXi;NjQ.]oMSZpBPAug'\FCXL!T5C>E]+4rk[4V:*cC22m[Nb%rpB>P1%:n8`S&I.CAq][AtVDD`6JCV<3IZZI&XLB19QaUo,/R)h4dt^!+AY0>sL$F,Ma'5Bl8mo%`LEd_D_.85>)W>_l(!lg[\c\W6\3cUU01>E;K'9BC]MXD2_hm6t"M$kKYniF&WM4-Z3\IEYG^glB;bElR7+F/gnN&b=S52SlH6I[\Xj;a:IHqp4DJ*D9hGW!BA[\U?Ah13Qfo#'^XisiA,%\*Gfd^O@g,*#>OP-X'D&Fd7X&7WuCh:$^RB=\6Ah0u4=dZ>8Fd]WNA,::a!3%Cn]$M#@i=VR+j+L"QEe%`,$cNU@-%`m]X_PZ:3)DAl,+aj`Yd7^O=?^k'CW\4'8;?<&K6/bZm=:>p\,-teC<-CsY6IAkGLKdaS<,]?Ol2XMDdKXqqO.m/3T&6DDjQIjmuFm;CmpD2as@"`!nLkB;%XNNZDi,qAWh(ip5#"HW^YLDF`c4$,u(ZH;B@PBFAiuTg@3i&j`KPCPr)V0HRPaUhc4E"(MNgd^JrnHC1>FPu>p7:58_8u+g-ld)9"=)D/=ftcZVTMG98]%2;JJn]$HZHrk)`q[ZVXpL*#R#Q/JQa\Lb71Q.[Wt[PD'TX[W^rZ^'4dCh:'/0O*'PZW2EJ=ibDj[PD&a0XK;ag$415Z6L)eQ.[LCI>/210`:UhWh.KqJ:CnV&`lJm=a)WO+^khp#Y[Q$VTIIhXaS=E-im)K"^kE3-!eiB%`&+j6$c%Lb1Y4Nk]pR)lDLnA_(>@@unPZ_*3aUS!ep3!rBH>eo%@&6@qm6&76nT(2TK9C\]b12Ms>CJF,Oo[AY,TIoZf)sEJq&(&Aasl//2*"$=&cMcg]MuM"5MXN5joo=8;H==b82tP!mb"U"!&&O4>;>)P[(D#(r@ab&jZ]Y!o1aggZX,[ud8W4`<'dFWZ=)^8R'(at.j6Uq_0A?1\KqY>`hSj*nF4F]!=CFt8_IdkYPb>1>B5-Xe'n@k6\#f#riPMomIf+5`6h1b@geTTU.Xisi=b%tXt10^0KbZ;-)W7f=0A[X?uD47TlOP-X'Of@$VCh:%1>A]h2bZ8=+Z^'4D;F#9ACh:'/<\UkFfr>Hb>oE(=(;b!<"hcc8?L>/;2h1cViF_C@\6o$+f3KJI\9g.3Z1$Nirhg^L'Q,c@Z5(Ock8dYj=@Vrp!F$IKB3o.8eA[chN@,+rbi];6GLJ`l^W3fZd)`!fFd_/*S\AbQ/aAOR\4&Kc=!q0rMkFWOc0GqJ`XhirP,fmn$LnS+IkH--L!tAkl+&$F*]SfAGL6cK*iYMD>:.f7;:bStbD"&4Ndlr)DPD?Q>\A\^QosY":o<5sHgd:1=qe4q;R-lo?(8mc?qIc(+u[lINu9MZ*US%A#QEaJfsRrCn_[0iGo*NI1&9plYIB$L`K@rpZ$d*tKH@U%$pZ_SFDV%MCctPRqA]/10\U_XisfiN@;-`VV16dbZ8>V.Vs7`Q!qs'ot(fDW)@6k\#7aJh9#dn.nYK\3pL7(,FFdg[]"'4A:?[\h8/B;lKr21Lt`t*JhRgrbXcu".`)1(mTIc?T7&RMh3C^:l>HEd,80&3WobuBII/:k]aHcHHns?ThulZ+_CV#"45#8@%G3BMWe:,:.7!/F!/X+SD.R:O.(WL<&FRkX!s#G%S'=\;AZjM`\h>^rD3]VWB(EK!G6Vc6#,VB*Yd$0q=>c&9%:8>;Fm!3)rXJt+UF.?&If+6Ik10C9/G.Agq]k-m-JEnF"=7h=P=FLV70Uqaa;(Zj/)@O050k#@Ft$"H"kq(&@N)V>J`C;%hqX@-7S;@+O^WrLI?@a=&WAA>rEOEPNNZQ.hChjr_-Sp`A]h20$%j?[]72Ff3T3[^%o)-2[runXXo0-H]-j+j%/s[?ZAO0`3HZ-Hggr"Gjb(giHP4942Uk*[DOAQpVQ=Z,N/c02Rh(R,PXktsX5Q[+O!d&.SL2-58bJr**.+=U6#2T\@s`Z]oO>C%Jno3uiMp=%-W<,@ZJBb@*QDW36s7\HFh4YjW,?WsX2CrHaEp]W",Nij2pb=SZci#0\47lYS`X1CuDKd4&OmX+VL@\Zm`'TCZ:\9bOqnkFB-GpLe\>VTHNXisg+10^0KbZ8>V9s`@UU-*%gb_Dk7Ah14<72+`"Z^'2nA@!9l10\UaXkmA;Zdkr+l@R5\AueO?F\TC#=q%TVk/6TK_=1'@DW'O*f=pshnGI;Or1WlbD>;HWp^b6f5B^\LeS0bZ5/$sH+g90hR.F?+erPTab?"J3c6J&bgF%`dSo,\GJJqj-"^uFZZ_TZ5ej1T)k#FQhKh.W&"'IkiCr6l9L`U.O10LFJ%PY@o=F$GX2-EaT[KkS3*Obeu)K4#XCj0S87LBH:a71inLXmSl%bK'^]%8,6[`oK<-Qq\C42W0lik"<.TP8\GN``.G`1`bW,ku(mRdQOK9]c]7`Fb:JH`)OC7Y<9@)rPc]SfobqnQ_bjFPp(J!W\7)6T@/bZ8>V*1bZ5FDV;<]T:#MV2anCh:&t@B8Ng(qNjS=Ut2Ks>[d(TsiWXi(T0=+Ko?`-KR:Rlq1]j/]@+Pk3D[Xs4$5%A4HS+H9\*.CHBZpJN(LiA&io"8$9QH%SXaW6r*>,o$b07c!_cqFbJG'#^\4(10GA]]EqA7j"N4SW),D@NV$d`-%Z610j0_^0q>i?P]QNj@9kS2kl?`Xm.FKQ[,Jr+/II2sYnHF4QJaCJ%R?>YL?&2Cbq"Y"5>Q]h>EVBA[3>%V7(FV,!a9hkDKBGT`C18UrI?p^9LKQS^E\&YtsdZj2OZqnX/5Q%g_"2?H;K'R3;XisgXWuRP0bZ8=+ShXGdR'!Z*[ONf6Q.a;r&eRl>GBnVPU"tmkqFPLW7)*W?:7!N=sMSs`-^G'=u#uPRh>Nm&m=S2rK&kqB3YgSb+A1MLs`#)H5dLsDt>bQ?SY>[,,r,gVLpsIQ]]Z$,P1X3MMb"*:96>L5=0k37u#>(>=7k>hT#'1e2j9G^gBJGm$l0]/,P7Z1c`Lqn[nL%J;*5g*;f$_%ND.L:?q8FaQEXisgX.rLcW2U#4T10[bEfue,r0=-qsb%rr0bZ5b)_+5ln-g[+oO6SMk)]WnlgJ#iXskkn_cFFHVoEi$Xk&kMWnV,`et99nL=M0:R@:.@Vc9(p!gVueg*ul&S@3/VGE"Y0OI8K=1/SG(SV9c/8easo(JulD>&@4o%H^VDd:.pY@PY,f0Z6b"g1$M_hO5']%EuRKn;eT:m_:"Eb-QH3AuhUL;mVbBb%tXt)Ci(Yfue,rOP+BL7LT8P2-Xot,'T#-ZW0'aZkg`![;!(L6Y'r?10^0KbZ7)B[PD'TXV*BnD:OFC5c/.oX\.ZW;.m=0LS*-!RB8BlDF8V:b(cC+J(V/V[%B59ABFQm>o#Ve[/$(,lQSd\l447j$a%PmM(CLX`$3/8h)RT(LhG?l6QGq<^F*^%0L-9B4G-hH@60\hgU0tiV+V-*dr`/W-QW.=#q.8*K[/-$Apf`?]hHW88N33ekS2k.N`[tZ'-%"oFVb8n&kF,[$3"<*hX/qCX#fk7+7Lj`\`/2K0"A-='Ic@8OV!CH.i0TGqNNDULM.t^*CXhAP?9_BQ(9`W":/_i8UotXh48qa6ZWM;lsOX>n,\KQ%5t*QWN,Z;YI4)'b#RP%mCb_hA%t60mGHd,hR1thjYD9+NN;m#_jFqo3TbQmXnaRn[bl1dV-%5Z/1&$hmHHj#^un:tWQYM0E-t$e$3u[4gsI!c_HLnpZ+hVbX9&3GK3M3@JBobb]MRcKlpEX6jl,bC)S0C-159,/UJ!Xes:D(c]JX#Y4@3:WhkeIahmuUEc)6Vn$-l>&0)0jdCq[fWL#5;4POYjSTZqgfbLO_4#\AtLh>4[Z'nLOM5Hbtn9s$K)Z8=e&-tWHi"`=YDktZj9;HcZJaH0?I^:P&9X$&aMt.IrHNl89:?H3h*B0W#_%HnK*NG>m*$k!SB@S4VbA_#@eA]A[;qj"-fJ=m&LAD(N6VQ'Spi@Q';S!Y'+E.i$7nt4jURh[F=,'hkbOb#QUKQgqXAkICQM)^+i+2c0P+F->lnM6fgHSP0Y20>0kHEb,B#(S>NQa9H&'Znk!PY,LikYc@L.@?d2@Nm%/WkVS5Hd.+@0Ddsb\0s(6-%U>99.)m^[Q!80^5#0j_465>heP!rTE3!rYE2u/.[gKUuAajZ>E3!rY54G"q>A]+!>s>H2X)P+YWsKAU2)uL1ga_)/gkpQtXgZ-L_Q>kP>OCZGP_<7p>O@k\\5g%=_&\87Kj.iN>91DVj:Z@<,F#k@Qeks;Y3XtJnrr)u.+q^*.f%D?qBmSM4Sqgo5Q0?m-+D^8,K$?V-$t(&r=-ZH)S\4CUTl5#8pcK"^i6oC3uV?e+:OD]dYc!ipOc25&!`]g0IXbpY7RHY=%13E39/(+YRe"*+82H6aYon-kC"ifSXDPcN/jnp-gAJd=<9=^"S(/43/5m*6SKq>J8LG1nl'D_90,1B-/_.&M$_O>c7`F\o8?i]%a-)#YoW%i+ZSh#"o:MP`^1.2@B;p=51In'5)\gmd-A=TAG@hg]FMDZEN+R`^mCH33n"TL5TR9J,q+hS3$ap&c!p:=1T__b^_".e@%S&OY!N=cKJ[O)J#>'nnos,6J3J(j8Y@`l_)NE'WT.oUdk_p=2$/V;+$29Wp$jO?*0Lr'qemeuSPt7U>59dWTDY,)$'dCM]@%@'1K)mE:>gbOj'^XLCH.=J7:mnUmYB72kF^<.d?#$DO(-t25)uOiOSL2Wi>i.WSQd+.+$(ZHHF`QP>4F#r.blN/WXltK_QC\W_QC\W%KNCriE"o<]-\A4'lFb(2'Ki=-:bSrG.:P^-qKj,RR>MWB_bul"1GHt3=M*M""P.,UZf=TmB10C+uq&fY3^Is%CGAemTmfu'^nt,UU9$->*V36hg`=g1:"*#hHU.5(V8d@u0YrOcL"_:$h#AWB7NI*p,HlRZ1O-9hb?sdJe9'Gd4%[7Mi8=Q%!3Iq\16YAJ+^cmIW+XO)GRgT?^oO2j3T>Q]:q2"R!K'uF\*'VFTjK"@n*\dfBWT-c8:E:k0U/42E#OUL_hLbe&+LA70QM\Pu0T!RrhC5fU'D8;o'%&mbiF`#"^ls_QBKQ\.*T5BXfIO8/*)U*E'DnLoNG(s%gJcau9?LmE%R_`!T58k]oIdk[A]'uKj.7XiDu/[#P;-RlIaLR9;"!)_]:bN2CQ,p5Q5!2>HYT@jIOn0?S\t[7*2F+ITZ04\%f'+rU781jJ`C!?IJ"plc?Vr@0r:5^A,Z#P\e$*VRA/8-_$YH3m=]+N.]9K7O35[f3KDqbSL1m#:H[`FWf:>&ErW,*Q\1M>[]65O8jU0"9!2kOjg$A=WI8LE]jdOEVkA3+=pb"+ai7^,c.k7qnN/Yq)<5t'q'!Kj$nlV/Ipl?4-1l@C.,6<-.bq$7_QC\WG,;23KQ*u2X)P*DcoKl2ga_+%#e/Lr\!dI>&\[2j-"DKR(>2-cS%H/JMU>On'iGM_lOP3(.3-*Os8;mNh/ac[27o(u'TSpIhU/8fTVAT:4$MYC%]:iag$/*E>];/B>MKf\]V;Ee_o:`+@7=VDaH6.^B%lnk/,.(9"%-;kq$(@,uKutk7VLUO#PsrOPh4-@q4Yi0cHke,!*L=fKn=1S`iDYMI)\"'Rs*2:[)[X:l:dRJ9aLB";ko_n%QNP'T;g%?Tn`G)M_htbdR>1(eR+Vl5W013\U^5n==`WTGlj8I1OHfCJDoHfXegFG7cGj1.W9Qn01A!]&L)u6tZHqgg2gk8lR:ucq_jPj*`G"?@J6Vogb(j2T>D6;S6+Bq)8>#Wp&lCj>D68r_QDObkA[Ip@HGD/_QA!$X7_aSP'=S!m3Q_PiPKX^0>G/)nlN=">06.*J#hZ1qKK\RZ8eS%U_U3iIqS(%GCP798+ZlaDqKj-Cc(cM%@TX3EHPsH]Kg&6!]m]Z;65oA*hI$@NJBM"o\V2+)cE(o";!I0)n'``cCklAnbGZ6b.9OgY#lc9/Ka::*Kf5.+(J/We+"L$i=lgs>*)(D%t'K$[.;C0^QTgH1$&O+A*P&*6W2?f>@GE`0c)2PG3hEIP<-EDll=qkWhNVUT4/^r213;231+/#6H&@_/!RNDo>iY[TdhAIEp^m>D6:8>O;Jb&8i5#'lFb('lJ._LSQ3NWf:tumCh)oO2A$9X`e]bdILPa>Mja4aj7Zfk=S3:F![;?f54kG0dG,B]cOWMl.tcM\dbn0DKp*fqeqYR'5.>R.-%R4RBBSh3E1\S\(FB!TR1@J$3"TfsbmlqbaM(K95XZM[AI`^0K:Q8aAAitYc4K%LoYU^SM2'PBSpnbgS6hA^3Wh*:jO"c*d#'=g>kXT:ESLQ#^qe0,iZ0-Tp;gTZ"7V1gG,(LpEZ=HN5PJ2eT==^QZ6U"l6q_0g"f%JHDVFf+',3u;o\bS$(`5AB*NK@1dN6D:r3OU;VM(gA(q6\-e=t@c)L&VIllUtm9?s(GQ/$`@d?5%?b1fQIk3#Bdo@H0.nr8.r9$+s:1F3:db+CK6Wgds$u.kR[f\Sa(u;C@XH0R>oPpA??Q2ZEYId/l*<>3u>g=7'F@pMe5)F\T6OlN!b<;6<"MI"q!7ou\@9W2V$2X(#6SVdIM\3Pf`XU*i&oJG%'lMP,iE"oN&WC@nR*:g'Y=#;V"8-E3%6&X",@KC-13c)XuSi[lRKA>D6:8>D69uKj0Ot/Krna/)9D^=VK&tXZ")!Y(Ubpm;T+?^jB]tghO2Y>I#r4WoU9&SpC1;P4^W/8kqPHABE/)s3?eH`VG[Nd7h[(B:g^m/tFIp)pO_:>Ff%APjg-s(LMQ`jI512^&^O&%YaHH]VbkP1#&3m9q5i%!XM#[L[S>"/maZ5&E9&eVh9%'#"9V@)5&tr%$*B[8`t=$,K"5D0o_8&/]Fa>_1q_Ijs>,u1P^Qp$4/#^UX&6Id$`;[Fa':X"b"a]-[j$u3_W!J`'fgd(^(hqX&F"JAqc:oKk0dX//fBRO;l95h09;h3Utjh5/De?cLBM#oZRsCL8/s1,GT.$_Vp'NqTpNL>D69U&)gRJACUiF#hEdD<%KMTFV5BjQsp#T5gliZ\A^nU>AF'kMQCfgc_?a>8#i]5X51FR!aPYP#Xt=kPuldIQ/@^eH(7eAQTQcI\h\!iT-!_n.g$R7;@7##ND+h/thf[3fkDe$ZL7bJK[@uGiWoNgsH/OTa!k<-l2FKHauDXO`V=cQ-h<>/p^:.a-[%@*tATS`Q-'q8_R<#R_o1L`=.'!TL3)\A"!7P!0Bk#U$%+JPd#`MF^T=VY_>pqQXEN**?n;9b7\b/Ma39dE)AHf6Su`h0JAY(q_/dtnbWGMA5MIA=2@=NS)LL$J;K=_@2@/C*$[<*Ydb,#"PE4pis7?&@W]V!('J]nYB)rr1"YXlo\oJ*Vi6CX/6na0M!iNRU[a%ho=mPiraVm'?%fc%,mUp5he6obd=&\i:Tr76Ut!sJ[9q7h8YkA$)WP/K8*Ta>D6;S6+GI!E3!rY%cLHXiE!WXc\ro_'lFb(76fa3>N&W35e,A*@*iknE2u=8Z_5IVmu5O::*P20R7I^fTG9M_%tj^6*=KmjGsi]K0#=9D,i\kM64\1*qWV]J"@cdN=G(RD-fB-k'_>4jR?E+T(<3/'1s@tCcYbdSFmpJbiKT'0;],Fo&f/I2I1MH1V"$Y"+UI4hI9sm#0q>[,*SM$VhB8'XX5hhD?R:JL5VoIKSIYq*ME^A[Hjn>sK`1".E)XfW:8g:TidQog!*?'5-$UGKBcQ!Chtn8>':cX$]&u9OXW#295OHo1s"i*-``P^7@L(po`(Z]>YC4VJ%]1Cr\M7#IicO+@A)17E2)KE1/tl:TJ9gkq3#NQ>Hs%C1+;!gQ3\diT1[?'25^/Xu"\2lucVo7`W/j.5rgfm/Z&oGii,c?q7JK45d/fFS=TQYi!-\)]^hq8^D3oYB$C*mm6CqgMe_=L0C?>5=,hB'##DE(9kGCT4&2HXhq3WXnj0q.blN/MWWku>N&TrG\4Hc\CH&4"+[H1RGh3$H`_Y)ppi#M?fY^nt^j@X1S%;$9u^o^*LFq"kO;K[4irTu/hQOL*\=_H@k>pd@+g9S`NWCNr[QbQkTt#61P&6dWtfnL**H'[BM#<;rd*9TTaT8@-)/V/*5pq5+dsMe@.hWL:>U3mO5ETQ;?=Jo1=4*0jY@\-(!d44(Jb`TV`15K:"SS>Xkf:;WK&6!Eej^pci?Su*loclYKH]\^1=HmZ@k[Bb\'+Bo'Z7bVrXs#Y3W=#2CSCVJ,+3.E%k@&!jseN/`A21CF+n:8lg]T--nf*VW@F3<[@C'Y_bolH,MB6q+Ws*oBm*i(STcY%d%,BFeBfh4Fb'B.inPUAVP0nKFT[DZ;Yd@>(*.J6_H763;*uN)1iQelS_.%?Y3^P^1Zl97q0g.&0H?6O$;>5E!"6=0gQk#r&O/\/6'WD[s'fB5CF:1K6_b'RmHfR3odS$(FhMaVaH3s/He`"3.RMh2*c4P`tPDh734#+,F$6@g!i^Be%pOHosh2<=,4Z.DV/X,lp_K30T09_n;*D\4CSu/(/0f``Ynd7!CQ[XpO0gt3r7g`),!OVq5k,PDn%j1)N=#jTL6ROH]WYq>[YVJe+A),@b,Jtkl\O,GliO/n&>C^5Eph*Kj078og-)f\5a^-.blN/lI>&\2(iP`DA@%H$,WgeQ,9Z?Xhq2`+l"R&WXs%_DRCSQ2W7]kiDs#H\5g-_9#@^IX`e\7Y"+I@M^:Uf$U8"h[LR8W[rb_US1FEY:OfZ\H"!Sggkm8H5AJsc]!_MlCaOgp5+%qX3#c:3TG.4hrRS<)^88/<>RYm8Bb=]8sHE-t[tIJaObJ%48-XZQu='n'c`pFX\DHtrgD'[V_+Tea/#6]e@TKkX;;;g1dYikZ+cN37Dd45";?m_Vr]Hl/4TpnUO(-%-k2j(4I?oDHE3!rYE2u/.[gKSO[gKUu%(@,sSjg.h\5g%="6!8c<\3#UghIIT>Ep^m>;8OUD6:8>O@8dX6jl,nI]Zh?33a9Xhq2`E@^HBSN-.=aa;q>hNIWHn!?XYAnF]oo5>+BrJjD27'T+W3=`l@:aaU9bl/%O6F_%,+M*")%2c5fFb7hVl_+&p]"V\NWq"-F'bW#1HF_QiN.NIIhD,@V$%`<7'qffMPT*R7US";G>O1-H]S64do,X3i1?E&%(b8n2Z%0rr47L>c;p^.dW43K=#)^fum]dX5KBN]5QdmWda?q5fE1_5O'-KXqYagDA@&s+2Y.sXhq3WXnG/meTSIQp^">9[gKT*(q3[U=Xa*:htaAe5.(H`Bh$/CD!TD?]D988)\&is8:c'S@bmsMY+^\l'CQ9aZZX=fd>N>>/nGi=%l20.T3rT3\+WAUR^Q-&@IO)KM5`5qo(L[`T-ol1:mTP'9Chb+"rAj/?q*IUJ8q2%:F;;%J%q[UOdOrRAA7`UM?3m\C?-.Y=9Y*`(S8*$(s:*)hV8h4*\E7`"Ba6)^^<$o68lh?1tU8WWP^+4lkYhV)0D&pqCA,8A]'uKj/\=LuV@BeU\GC[gKU5":Q2d'lFb('lLE"DA@%(DA@&s&%j=Locf"%i(N't*[GNpqhu2u807c'qV%QCd(J^3b?S)r']Y<5`))g;6a3&[1/!-0W+-@Y)GKs3&$VPU40/Ur%>1B;3?.QV%Aq#Sb`l8GX_:Jko)de7%S7@3N&l2(4,$2kVFG,r-*q'4$jqia1**["]l4gY8)A5r%b(!m#)J&C4CITY],ra8N9N2GSDMhJ)b/W*U`WcKBB#!<383;GP[JGS!3SKu3"*5ea9U/H.:.3OG98N)+-AQ[_@ZJZDm@qqs3q':0iJolA&ijG8t<^m$VoRJ(+[u*]!3gDQniUU%^r6b5g9>j]5IoVDf-Gec^Ibp"bA]e)%2I@'ACfWaaK7:kjY3`X)P+YX0E4R'lFb('lFb(2&1dKKj3pL:FFq4>_H=8>D69%%,k7K9&Wh0Dsct%rAEPG##q048?P",?ct2D:Odf:dVY6)L3mN=^9$9SP^!@=&j2I;lsl?9pPrfPGM)\qI@jQsN7@*5a2_]C+fXM6JSop])6EK3?6'8$8fGE0'Xd0Z0Bo<]hUbXD`b`RSJqM<@5/ngHp"o3X4SicFDCa9C2J+1o\MF,f"La[\]Q(H+Rns!2<+?\lHrfp81QUPKJTGHh_Je)NQ`R$.blN/WXltKp'd3rSOBgl\(V1u$F^AO$F^AO'"lK,XgZ-LXoqp^>D69U!X9+C$F^AOnftUN\(V1u\m16"D!2AHXi?&bpZdE9D2)8#^JS5:-SPsachcM"FFq?\#@/lUcM&A.\apd7P^NLnLJ)5T4^GAee+sklAS"AdK:.lq/o^1`T3hQ(NuotDSZJ*mHqEa1"[N\&5nF1N1;^01Xhq3[6F^#,"@3S%6*M`RXhq3WXi<];<=f:!&-P;'-c3"BjP9%AZ("C@K=MUCeb[F9akXa,aTm=o2bIu"qr*^9B1=1kr7dbgMi0A;_ke"mcYkA$Qs9@j(I\5g%=\CF[e[gI^0#_F0)p-cDj\5g&h=9uACJfk>N+:.[/\CI(=>9,kMA'&[D>6;:n)sj>b6-1eY]3d"tmg!n[F"<_+?bYQlOq7QgYEfT`B1ga0$ROq9:o`L&W=hhIX^6D6I#3goDA<:?&-P91]^?'7$F^AO)@PM)5nF/b&-Th@#e(/M$F^o]iDr5U"@3S%_4CqAHBWEN>EAbLa_5t!A7[SG=WTb21)rDXnt1C25F$WUcTYA"R6UXTajX$M;6mPa>Omp6rq@^SbB"ulB:gg`[gI^0#_F0)Y!I_FKj078NJ2>P+:*QA#_HG[KNj.7Kj0OjE2t)eJfk>N?r)G[^"KsHd@3a_K=R0GY2nGd^/jgds7q!fTDu+0>k3I?]VFOPI-;e$CTFd'17I)H%;tk:g2b="[6_q1o4L_!2/^A[Rar#`FuWOo/Rb`0)U2V*/b(kb,)E-`23`!H,f*-pgMafq#*@;aMGhm?nDkY_3oE;3UoaTZR_lFY6VA8+e4;qur%3tN0kO@WaJ:2Pk<@=<^_9CY\Edc!&,hsm).bq$7_QA,BIpH$EqHAiSf[MDn*ZAeGQkSaIoaY=F*8W4brIeDRbhumc6E>(+6]E&6$?:J8NA[8]&c2-@Gk5Ymh!3(p0$C>>1WM!OYGXQ_R#d&3MRRo]^N(O#XLF"I'fol#nKbAI-Zg35VmT[Bo_RYi]QWmll0/lPN-i1O3_2mem;kVD>JOah'UK9Ld3GQ&a,qjFTR"Z]b&'FY"+H9Jn5CI#09-"pnR$Z'5ZWR%C&3OF'L4,p&`bHK1*kgM=?F]SI)JUsMHX1..L@Sj!]s6Vo1e40m)Lg1+B;WmTk;r7gY[a)T!(&o1,V5-\Gq@F("V9"J=2Q1%$L$/c)LcA=)M<>eDtCs[%L(1&n5sSYa0?SKD=GOdCogAR5P,N75&8k+An+\S(>!7gg.#XtfU+)n[gKSO\*ATbX$%&4FXb20_QEO$11Q#B[?iu1C-14NpY;[,4u;S9Ys,K"\(Ymt)oc\FMTt-ANC_g&ljasj"lWM@FZ\5g&hIT'j[E3&\QLKeVN>P4TbeBqp+I4Wr^(?&;@Y%be@NCC*T>c/0J)jT5fA#:C(l:oR+TT1><_ns-rP8_2mXJ]CjN,A+;0$u"WPg(*h!3i'mk+A'"5bRGNGghVI@SR);jld-W+A=:CnKEXG%9^0NLjF2If(tg-,GMf(^hQJF>r@$UHZ?&cV2%?hQVD:e`V)"e8_oa6UM(r%.6&mNTQ3Cdg/[-jTYrG33\/s[[sT%)K-ecLQ2uPgLuSqJ^OA5S>k=X<+(J*C$gR6F>90Z[/8um/_[uD[T'jD,Qmqum3\Y,W8jD*#@9u`O?r1+!&@X(_&feN63mKu-!\3TIqHO76jjSc(*pl5=LDMT0RG[8eK+(SsLD9MlLW8O[N)itqfYM&p_SX^Uk,#@VgnBdFp[%%%jFfR0*S_ea-Tal'f]9P=MIE^sAO7@tcZ\M^"S)bV'mD_U4Hnd9'?D3ShN!LVPmu_&Y<-C'Sp>hhI6qODd,"cngf;FZ4=6'$sFak!(ndTd%LA0Vo%fB;\/jZPu*PAADmGK--oS=bVJA0d30cg9Jg\qVj_+M`POmiqf<4+ZOCK/T>P'(iso4bFhsi]o8s"MN\U))2fno=e+7)/W@Xf#5Va6bi8@9\1r,>`E:Le55SeUc_Q4q6f+_YjX"RKiJW$l`L&F;MnpM!J7m`hJW^7"SD#&E&gdQb#>/B.\AX^p;"Eu`*oa!2,O[o(3/ZZ6PcuZPjfG`g-clRLCEL%MZ]k]I#m/k4A"?,#<_O&ld30[Y#7$hlLZT^35n/Tnk5aXaN\,A:f10r(&;2(h3"[o?VJ!4J@MI(4iTB9UGK4YP5Lb6F//,@_*ubmjd$uQ6b%@pCm'P_PiE"o!Gg7Cl-\5g%=\5g&h]1crb1K'-Fq>;e*@`"D@?5da.A/Jls[/:I2&l`HR]"(n_IRkKl"h',b->PeRbnOu,?O3r?E#\Ph&@e[`6A]W$d@:j?6V!WFK->VnU9TQfc.t0u`o:%72ZXllXf1:9e6$np9;86PmK/;l\Jo$Uiq/_.;VCMp\>8/=lXS-t&@Z]+=<8)ibBo]l*5$?<`#6Uips9-`G(+'mcYOf_Wq/+rnM&^TG::eKr5D69UJoId4_4]afiE!SM:UjE7SMX:45a?@;9jagK-jfN(+TMT%J$^cDme!3^K`?:SRQ-:4Gf.?%Psjp^e)%[:pb`_jp#ViEDk@2@@3C@osRTJB$#Q)=a(dcuELC?.nK6Z\4.&6.e&F<40tAjJ8.+<4\llgW2T]86Mm^d1uc5fm/$B(6nXGp\T^iW8Mf;"o1l;M.3W:J/M8l/>A#bWQalS+ps,U6lBY5?q(H&^*Q_Crdh2HH+t5(f5iu9QS3o8jaWqZ0@W2G:OMgV.@`_^>UC-?O9E^1MqF.J:%*E]Lpks3?l3])T\=J+tG#sD5_Is,4$I\B,=#`O;_RN[jlgP45J+k=UlW8j8e&?(I.Z:kerNsWM&!?@8cgH+iLiN!u$YO;jKhLQ3,Hb]/XIEl(=d17P5+8_94E=)"'5<9?7k`F0`Nub1Zl/4ILh17lV#IC'Hr=F,l1\#E+,nCAWR1djEedejAWo*#jZhZjsm`.A]R*@r^PVbKPga_)/go:n%Xhq3WXhq3S(N))>(Cdh\[gKSO[gKU50#F_;8%;R0;Rf`:GP=WO%a=W*eZH0q'NE5(BB`3#Pa;40$&I"#!JnKCaT9&/1;U\jt`++/^uf]*VHVdo9$Z.[]8>m&=/+;$I&SjuC6AM`1K`_Hd_Rg9=T?U^HVaW=%S,!5iSAF3?G!B1+`gglO_;p`L^YtT"=?D\T")?3*b'S-u?FR4)'6KkR"kogp3eGBh_;S+fFN6X16t+W'HW[-&3ME3jk2iUMsHVc!0e$dd*SOHVF(YCJgfm$Xgi798]1*gA&lu*j1^d_*F?t^=N!76%Y':BI/p11?P['_^MH:ILLgnN\:mX:,nN)^;aLro\$Cb$$1scbY885U"V.=)+!3U22Ct`Cq&NQ8]m%4hVA9,n62KZ[V/[%"5#6rM7[o+SiE"ol2V+!RN)_SDA@%h#e/MdH*7^=_QC8`XY*u9E2u>03eppn>D6:TL;S&AUUFm+oJ^'I2>4O\H:LIY*<3U#.]\>XJ*J`$uq=h"Wl)Jhkm1FP<%Uj1tU%g%2;4d1g:hnX_Bp'6LK#qUUP@IQ`NJ6&2*4Q9rs97T7UMRt6q+Zuq]GMj'+5TQbh^7j+3090S/1tI(*qg9Kd15,$g$!Fa,@rP$Y@>5S3%CZ\R$Fb%s9#@^IXU=#fiE!Q%DRC@"FV,#oDA@%(DA@&3iLnukefu7e=WK,Zh":LDU#btZ+"I*-Dgf.VV\r1MM8e#.VrlT(^A$,tao+Gm/%PQ)T9Oa%JO`?Sqr.9BejduNX:CRh7\`m.YE>pJq&S]64+I6GagK-j]GBl.7^"f5[8=D(ZR9;!AEb`Q\gO6t^&ajO/p(X.J`*r@eH-k>2,h>Dl.dfVuX0N52g\lD+WK>C="Vo='B&S.OCFsJR/p7N#WbXu,q&mf5HAh,"4?s_`\@]'-"H_1t;%NYM(85.^C!.>Jo:*TJ"4b44ZGm@c`389NUPgH,]f3),>'5eP&'lMP,iDuH,mRnH\(]a<5e'h(qr]*A;^97urq:%\MurLKb3h:6hmiB1eKQ:6r\tcCEQ9\RrC;iurOn0k'U;-.\=!_].K?*-HQ1A$>(@9a\o"8)RGl>VIfJ&Eg@6Qcf]YJ]L-3o)+H=lV[F5ds7SghQkN0`L[WgPNtek-,B(V,5>"?4#W/`a#f!(]^EuaZZnD@EbWgleA:'Rk0+jPTHX.CD:"&RN!r!!_cSH96ZC;-I]1/WUu-sjR7aPeRgs3&MMVrsO6LnB_0P^)l&H-R"4Ii7kh4g>:C"o!oL'.s'm0e@bg]n[gDq[s[mEGSqKuM=d4)nGYm14=64%8?)O+W0^LC[?DVeJ]8fBika+%eX*I#.!5.eS`Tj`qqm6D!#ZZ@9@%XL%_s6=!i[DfA_pC<8`WWUCB`rV1tcuG>nJ)5`BD'(h"m^B$G@t1b9D2:j3lE1V]:mo_9+hQtf!M+/ti*AUi^N=G%_3g7!iE"ol+6n<&lhmf-n@g=keSRDni^;bJ&UTD5U>=7Z#SIT1@.A#Dr5o\K>+0AQ.uacjae03K/V;psT)_hB,a=C!O>qtukFCR/1eL;A^?#=u<%j)u(jP'2=-Q/LS$lu#`=Dg[-j4o8EH:OKqhr[PPK4-5QQgcApef)Z";:PW!MC9.4TiUef$fgJeWki;+NdikUt^4Dt+3Ihe:"D2*&Z_k0u5J_4)kpq<+X)WaroA\C2iNpXaijAc87*c=nDriFQTc22SSTaboFOr[^W>fIWQZO.'6%PSb;OO@LBA^f"9W&%.oBd\j[r;&hf)B?a4*?>lPaDLI/sT#>@tFsY9`&cZa%W\9iKnT!Drq#6n@K(S_Bn>jI?quBGa3PbOT1?'joRgZ.J,%_[n]+;E5u3a'%^2eJ;*l9Bgdf+dp[O&fiHMNuj!A**>!lVipq8).P0'p])E1k>5pkA:ga_*Z&&PG$7C^mkiDu;+'lN\b\CHjp@c:AHC)hn29b%@:[gKUu's,9S_Q=1(s(#NDk47u:hM_CSR\RrAe43kAG)rI&2T3X;li>9Rqf_eq0-]oq>)pVO0XaJ.!q1di"dV4H^$er^s'B1D`9;,ugj2Q)V,AcR+g`Kk2L6r,`3olGB0ai0$rF]<<)DG26A@N`1@@9+&=QRP>-4V/rka^HG_&S,<^#:5Q4mL\qaW[4CUV&ff9QOCj)EtdZ$[,]=El+(>k(L-M/A).7CgL!jRQKoqFTfs++&W]j3]t_V0mq1\_^q%F1QQ@>8E9g3WT;="Z'+e!b0ju\fH"cqe6&iB6-C^3FQ',.1Z4$2(YPi1L0VAX7dDA@'>#N8_BD6:8>A]."9blVfP9\k_>UeGXghJ@plLG[c,i!,jga_)O#e(/M.X:-2>D6:8>D69U^o`W]X:=;bDSG)=9:gV1q^(jW_ic+fXd2*Am%EEDO3a/?qhK5=GbE0**9$ka%X8B711gMU(1ZFcs2@2Qj&cR7;12$:@d.Oo_FV75f7\kR[&=EI4PE!;TEDN.1L$Z\=Eut.?Nk#nPL(\ugh=$/YP9"=*p.bo[fN)k]lt*K'K0G4A!31(slL6p"61H@`!#Ek0XPdC+f(4l,Pin/^mWk(;2TJK`\BF-O;=Jnj@lT!u5X/(-0.!_;*CG*o:/CR",nB_LK+H!*^Jo1o:5Ip1@KgTaU+r^d,;1u!QfHE\;A^V5.blN/WXltK_Q=1()C4ofF>O;Yp%CZ\Rg(b:j"CDtllF;icF3jQ,**aU_0!Q[J8$fol4R?S)#m_`RGNqjoG9eIV[da[c@"@jT0FnjLUrkX8"7qc<#59-nMLqc9A0\57tZc8'Yu]4Z&0@O;f/c(0a%%\JV)nSfE/PDBjG+$#1A!U&a-du&TNUN$XQ6^iA\$nI(+pjkAIITc1(F@aOP*N4@1^<.#El$tWN&?/$9@"SCM0h1*N,MFhMZ9]JPV\Nu5*KE&/Js2YX"JuUWC#f9^a$.Kfhj^:aX?]!DOQj7s/4O[p1VlI$=tpe:3GHdn"'"@i_qfP^7tcocbVob\(6#7D3#%5$F^AOl@X&Vc#B_&X)P+YX7>-h(N't*F[^3T[gKSO[i,Y53TD=t+-oq"#^Fo>WO8VYl_r#aDKI^#;UY1g\dAbqWS1@_[ba6!7_YFf`@;C4rj=2#%#HKXq.[)U`a6bPa;\*O'*%k"H%FZWu%d0hUP1?dtd>I^81?.??FXVO6"-lTR(u=p>S1&^O:6HKH6+Ja9nFVDEp6V[Ec[>AmES\WfAa1o5(%e+"(uOah)rc"1.Aeduk5;M4:mp&[NAWTlDck5`>-Wfl]8dVI*LalN>R-@&1q#Cl[JQX#hIMOA6AfYq:P[^.Ci$JXH_rrW,ffX4)D@uaAEJ/eKJS=Rqs5>!R>%tm)_:-$)F2iX>)`[j/'^bQTWuaiR_u8ocWnnl\IW$hd(GTa4N&DRJF'=XPjglQ=8AfT)oR_7O+bth5mQ3>Uq,qIo>k\9#W5.jWQa**a$UPVS:c9%MP8h!ha5sO.1*Hj[gKV0K5dl1X)P+YX0$?ABt.idEYJQ^h9P/,ANZO-CVIncpI2Nnd`Wld;1oNo#.n-\#*9bL)B9*'J=`ag!'4/c!d)*[t6!=X[Dnc?(hna[.@n(iBLZ!pAjM"YnIr&j)HBe0/]@-$Vh5:=V<3X;J::`2(C=L062GM)8@mfcN?jq>&)]PrUuj*UJCj(lQf;V#2+HoZ7o%SD]\b&8AnIYIF(A"uOL:ElQ@*\lm)#.FY-RE/tf@4A0LdV]l?8N;lL">0hN#!!Viclj_-lppeln6&>=j8!H;`=Qi0>&j)f4:Y_p3J6=?fT6_h/sT;OrrPQEj"kf`D68r_QC8aXY-dZ_QA,.ga_+EM?pZu[gKS_$fP-M_`eiRFf5ST$F_L<>A]."?![bh>P1Co$'lGlE_Q>/?I;CHPFl_3"-#;h),qkl4Q(/`:PRJA#/m04>FE4*dI<;c*F`='c@rS_aD<\SO=[#h@>+R/\/tFEDK3Jd#GGHHdD]irZ5O!>32BuR(VIs*&Rt'TuRf[dj*9)>Y]d-F0?XHak6$_O=Pt(ta7Z;)(khqoBtfIPj/s;1,m`6X'".ga_)/go:n%XgZ*K_Q>kP>D69%!*Cf-.bsD6;K6F^%*XWGE6KTu2mSZ;*MuNsoa+9&IkK8]iI25aS4bj&3Z-Aj^'-F0/p-D0'cM?]9IILR%i8*J;R"sjdGb$e@5_(pM*G3,CYnf;-Qu_&@,-bi5Qra^#o,^)-p$k.R_Zd,A%f:rb`*M=B]9rUGRO,Ji,l5Ae6^GW6^a;3$*%T'#N8_BImX^eH`\d4USbt"X`HBm(nLOQY6`^7e%n]!#srfDCB4./8`/M%l"/Eg+h*2N<9$4/_'9t6mLK2h>'gWIS,8m7!=]LOmTqPb1eN/QWXinK%me:EA"u-r8Lr]YnD-\)e,)5Z#aG,%q!NplhlIj4A659@(KW+!k:/)6h2b.C7foUZ4R5S`Z!`%`A4lu(*7=uC2E@3:;dVsMpS(S[lrC=ILI%9R3(j]uRZVSdARE3!rY4p\WD-/@c0_Q@,N\%7B7Wrm]\\5g&h0)#a_g'kI%h"eji`qSY8X%C.#iE"o<]+AipDH-tOg'Y=#]Us/DX`1=[Wt*u8iDtS5u)`;Z,^LH%X4Lkn8`>#ZgEdEf]Nd$[-n*R5@@k1U=:U1a*Q7mgpd_k;s2>Tb^uLEY$"du%_23M3/rMo3hHDBH:95ukq9RMdYh*.nkD.&!pUjZ3h/"4If5bGmNB1B3s.b.cE^K1T]ZIEs:mm4b?@o//+^c;8J!dP7@5Dd-NBo9Y;teHt1CaJTX\-o_$/T8ja)?=_0YV&h$F0nfkh#iB^"P9gLBJoJM^j:Tk76bf158>3>+kbAT[.KRIBS0>bO_QC\WqB4QCgo:p'[2j.-Gq1oa[q^O=_QC\Wp2aD0_QC\W$?R,&eOI(!jKKk_>9,31Xhq1IiE"^l>5Shd[9d2DCQMTc]t^;a<_p!hdJd&KcO<$Qn(1Bl;YkY]_gM2^[`ls-s9lF/\.[L/'GqGU#aUV+"S9BUER5Lo6O-UXa#Ni$pes!Ve;Iqctj]Kp,\PeO#&V.8/c*\7TJ?9U)sRc0sdn:N'*Q7473:0c3#s4Xo)MBVDB3"qf"'/MO!oI4Q?#GhWt&>I-$hu:@S+1I6e0L;1c,7kVXpBR'Hh.+0eLfj^7YJl=)SD@Lh*r3sA6#9ut?;l1D4&8@MY*AdG(SJ(KJo4'(RjEI]'`h>1P8#*Le04jC6/.-YKNj.7Kj449\CFWieOB8k#e(/Mg?!H0Tq?;)m;T+F/%'EZE3!rY>mRoS,M[$SKNj]lKj078Kj3pGWeO_pLKfI:Kj078m/rCjDA@%(DA@%H3O]nYc]me8FET&I(U"TElQo>t3*#Opl`VsE>aR*G+3j29Z+/?fSP^M#'Kh_BnM&0O@om@p\@4f6amMYZS@+h@=%X$+KEcf1NjFlli)XI^%Bo@9pjL$0jAqLQE5E`tP!er2N^4]\WEV6gY^sXH**!Nq1EF';%>SkH$NhTgf/bT=AoV/PHA@6'md4son@jFS0a(OR1-X8k>UoWBPZO9RKl6=MR5/pO8F.@ug'A1aZBX!r6s;\,97kJL_dom3FG3qQ>D6;S6+Bq)pH8iD@<]6j.b5"0i$XLHaK.@UA\c5#-bR)Q8OS;2:c>1B]FrH'&N.1Db>,fV8t`^s5W/6\-b+kju;lJj=D>7He?Or+UJTN_B\s31rt\V[dbu-AX$GRJR.I&n[i5ET7$Y5P/(WA?ekl>RPd$qWmjR[gKTZj@J61YCp+c#n.D`'lI#bD"DVHc#B`,r?pCc9)]fJ2(@nN@r\PZ7mC1_Z923/H8o-74TB6>b1^mX/Kb#=,p3&E&![Q(<_?C_9-nAkR?I7%a\HG?`k$)r5+F9/)=5H9c^uYs7^s1[LI[Tuh,J$,S?V?t(60#2q#eTp`?T;KT5dgWZ8%Y`^g\AmDHpAYV-p<`$6epA!G-+7/h1Q,Ggeh:mI[:H\,iCW!X?T+Adh%`!3,PJ)&c_pKBP+2GN-kCop\003%bM7lXHLh,!1e&P3b==/>X4O7OD;OT225opu+]KI_6j[VfmVt$QbhH$3aMXc!%29^:&"!*=CRX-2(sVR79e2/_I_K`:1Dn0<4l]TP(^Dn)dI"&X%BP)e*bGL^id>JGVA'R5=^'2\dO)ZqK=\n/Wkt\2p`O9'd14kf?4"FVo_'B,_J,(kQ=.FRs(YO0YtC_o&UnXhq4:+P\I%W^,ZbX)P+F^)Cn>#"+&JKj3s8B*XiDX&m0?_QCiLkA[In_4]afiE!R"VY^\/]!S)KX)P+Fc,6[#Xhq1Y$YSW5\%3,gFh(.u>@$OQiDsklDKY$md?=`23=o9%9QOl6%kUkE^7pucbE9#hB5qX>1c*9#D0NO.BE(KGl@%%r>nrA[7Y^8sFC/AVL@%bV"i!m4Gs/=#5L_BTYrPp!.FraKu:XC0Ek4WcKa&?SI9R'j2*.T3FgqMq/$*p[L^#fllj8^DW.B_nmhfT#Ga'53:#q5h\--^0(XYp3.H:EPh/5T$mRhip\7[j=7!685G3,k)&T/>$'lMP,iDuH,R?;$pu;+4CS+i$bA%8=IKSq"k^D`'"k-9-?AX^LLlVY#UN$CM%U^@@%^?Nj*'cXW]b8X!0R"$nIV>cCs7'/pW=0f?B::pUU:`#R)m0+FlX>)(,mJ#BgW(`$_qd/Y8,;JeSct`;[f91E[p&,VSAKG-/(V5;BJjJ[aPL451$(ln6"Qdqr>G*uIQq:Jr&93"@8J?Fp5R&q\#\GT%,q(aW*s0oV?^R'cV=tl1g\phdE>lWASh4h4`/:!<#`l&%CP(>[osu3Q\6t,3X)P+Y.k64I2le^O5N%4M&(g=3uk7CNp,/k[TjLkkjS!m!B$'Qpb&%?VL'[P)t#(;4.iP3pt$NN]PCkYJZ>1VG&sl.(G`$MDb&IQ9J\T;o3FH`"'T]e$1G.PN#H7KZ,5fBFJl)T+,]"9mq3j3tgK[SR"P^J^neWc-Z_:`t5s-M5iP;4(M0.!*[4.(rD-1a.e5;<'903PQMLVSiAQ6&c=QgpNBq*oZW_T[kO-459PMs5k?Ab;9X6JBuMj\D>_*aKNj.7Kj449\CH:PX)KT.\o=]hX8ZMLiE"oN&U]7C^n/@*iknE3!rYE3&AFX)P+YX)P+YX)S\gFX^um8\!;o\5g&h38Ef?Z&b.Y#4j-[X0pp.P2YDWP-r\H#tt[UF>.UO]raNrpsB`,ef0`UR:nE*(!R&Mrb$1RZ+/Z$eFpjfJ`0L`:LM.f3=\(YIDsU/ZkBqH,*M@,2i?5e'h(j$#)l&+M^\sYJPoThoP9ng3[ph!(D$UWYEq2\2qJjg,\$&q,`si\(.o/FjVqMpiV_kPD#3(_R2%56/Vq2m40beB<7`fN&*">%=l9$:Np@]pY48!VMAW?boqp^1+r\_3H2D9WF$G^c-S*Z79!^*+cPd*qbMVg`]L\h9Je"bIh!gOWi<%!W3M^:[NauYR@U_EKipW(O.C^VWmI>!N1<:aiYs(>Q]I:R%#IgF?k>C(>I4R8lX?6oI$"DH)]-]FuhrHa[pf7V])a2)2CjG<=U&TMVn9nC[]d!6B$u3;4:Dl6EpOrjKNj#tHObdf`h:,k[HG@oPc2EOA:D69eO]rhhG&tc=0OM+?>hG1TCrpuNCVq0\(8^lM^]&;r/P#f=KWi"oE22O*P4Rk_Q+Xidb4fK"KD``\3kdr">5/?u";$q75@AYH`@$mQ;u4+R"aZBG3D;7+s\n,Z1sJ3dp^GH&,IsqX2A+cRA`J;2!:(nr)=Us+.fYkAI`CE'6c0-jfU.1palmo)_t-QVBQ,K:5&)W$i"9s]&p#S\6hJp#"rNSK7$Ne$@o_E;ikAE&#ZPBo8//&@HP/qu"`H_Fe^tZb7ubYL*U0_>8nEKgHt!?9%Jq!_";Bj0oChneA:GjQ>JAAi6RE8FP+)H$h-NugnTm:%eGK*du'od,Fd*FLZ[B'+q\pA*fdVm2`.Xhq3WXnj0q.bq$8DRC3sFV3S5j+8GkXhq3WXW7:)\5g&h!>'-+3>aU..bq$8DA@%hn,_pO"?"&up)LqZ)<"WVJg&"5_QC\W*;r.4m'A9GCYZI6k%\CG4VrUH%HrRn;!E3"%!_\0K0\T;CVY-n.-J5G00BdY&0Z`0otKQK]%mcNiF:'UP'i=8!k*r06\NXp%A;.D_!HG8:\[ZDgu3pPa%;MMP!Qgng_J1/"\&4#A;ZZ@KouTte`6/T0ZgYi@!8-Ei+^R]T2Jd\pYZ3d$37]AYW$'lFb(2(h]hga_)/ga_)/ghOD+\!e;q_QC8`Xhq1ejAncg/fD?KZftIm*R72f4'CcX3o"JW4B$:ooWVkTk38&^kDkn!=W`s"5.t9CNGpBQ&H?kM2?!7+SrW)aNY3Dr8F(-6Z?`2j5\-B4%2)FkN5+kN5N^"g#jg;Z6',IlJDEf(D`OW2R]3jcI6KTR$nY2DIX!_([81QEL,TMH.C9/+ID=2F.X$#ED4a&j?!s%'Vhst8TR?V7TqZ/LkhX9c[pKi3#`9^e_u6m+4IK6/2rXf"aEOR@]t.PDPDeTlUUT+)uC4.2s/Zc#!3h?u\s:_IX\DY6KX-UQZ5^YJJ6pmihNJtj`H[$Y`BOl`"gr^[,chMl4q<'C2kh29B5$e;,M!<]Uo7Vk!H`,5\V/2M&+1(]FkD"ch*f&\bDL52\;Gu(FGRc$%^5H9?4=YcNCKMT,H!'c?>^s^L5ut^.-"17$F^AO$F^AORP)IZ-3o1;&\6Fnrq2mVNd^7)96dg-S1cn92CNk0r4/!BQWoTKp]rS/ghCLJdQ.dt7N!icN\0\GiM&'jCNeTBq*#I6XRkDo/=b2;aqf&'I9C6R?]DTTnc[1rIMe=6fU*>hKDOAC8YkU+8'@)B@)At:H`=D:lJuI4UXc/X6SsA=WQe[fc"Pfdt$V!B4KaXKg!!t2cd.;qH/VPJms^VmPguFgi,JJIc,Xj&E-[K4aO]!tL9LIU&e35)g-:$+f;S=^9"l]c"lU\Ud5?&%C7$[gKSW_QC\W_Q>.Q\CE+ga0#4%Chn9U/-6^C"HS5nF/b&-QnoKNj.7Kj0OjE2t)eJfk>N?r)G[Kj078NJ2>P+:*QA#_HG[KNj.7?(9VaD6P8.$`?U'Gi=$A\5a(C5nF/bE"+#H.blN/C+P$B"[N\&5nF0G,2=['.bnbiKNeUG&-P91"FD?J.bs;-k>j*cq3(cM^&.Sal>HY%5QAN8]jes4"Uc*3/6P;1#RNp*+VZ(E'G1N)q'I:_&s5S8KV'^5eDs@NUd05m0cg#Vl-4?_4O)pS.A#Z3\GKq:HG?ZRB9$hFh]tIs/j0utR5=fcRIbM[pAL*c=E%3u[c69)iSibSiSf'no?=S,pjWm\=9*Hnq;A:)!OWYVE>W+j>BL%W't;`N1u)+o4?P_g4?P_g$P'W\[hZC&MMBlCLPLY?LPLY?B>NQ8ijO.kgPSg3NBMXhaqnK4Ad\Ng(S'6;LPLY?LPLY?B>Jl)D)F="cj]Q%^hbENcd*VccZ24(s5jZ\TDSh4ZepP0%M(sRH[sk.gZllj[hTDa%hB0]%hI!<_emA0`GN#WiO7b)iSibSiSi`uE4E$[XgkK61u)+o4?P_g4?P_g$dQ*0"oD=qFpgPUcALPLY?LPKNYiO7aSijN%Z:!Z6lOiRGu5OE9D@1tJ.iU?"6)7D#3OfF$D7gf@3o\?1"#G^+IXG^+HK*,[9E.rMC&%C[&_%hB0]%hB2sK#;HED=q_R(PCB0G/hG(N`Q?iSibSiSibS=`CmQ\?2@I[S"J)!rWW&TfC7i4bUrI&X]#7#W"9s_Xo6MN=WkLe,sDa)OEolafEb3hWC>bqu,II3amSTZ);L9Jb2c)?F7MUg(eX0B8hRN-EY3P6s?Q\h6>3Nq1i\_Dd9i'OLqCkZ>Nl(SP6^X74(1q.o2n]RI1D@XtU]Sf",\AP%4):0m3gKX%:@a_4AM[6TJ^'/Rh58g3r<$u\1Q/\7j[X6Z5/VDQ-:``W#L^M$O=MugZW^g.9fjO&jZ[F9^"*685OIngp@h_;f(,X*I&hUTB:a=c33c(3sPPu^hq&-`GP8LiO7aSijN=OB*k%DC]TTDQ=Qe[hZ@e\(0JId3-f,C+BW6*c-V*^'G/>a.P($KM*+F#>]sam+,obZIV9n9ac,;.Yh"/Xu[f72:mJ$AbPJ`2g7:K(:*-53m>I(GIecP58%2.OBe`Ho[5L4cmC@1nHe_mKG@@si5oUT*k\Pq#)BLF_I(i2pg)>U^XTV^mI4nN?`h!j&g(*mLdj]FUcS_L;/o$"-UNB?H!p(%uq55,DP*WAK>.@ZZ>ZtBQAU3a2W[6d'nfh8*Y.hh[d)/u2b/st_pT6RH2,mcOFe8?IO[\0V+90Z%:NGQNY.g?iBbUG6j+Eu2*r&me!^BpC!Csg@)Qbm$S3?7s]59"Et'tO?M]/Rka%E>^@G*D.+SKKOT:=K`o-hm*9sUdkj<):JOg=,mgHrs4:$'(*KP;po#Nq=&[rLa't;^$KA2:m.rHkT.rHkT.rHkTWtuM['t4peeY8ed?sacMpusjWN!,h=)M)aG"qsl/mDnhF@^gls8IllSi,T[NgLs4;,H'CltV,s?n6Qk$f'[GR"aUlb/\nVii8J*C&PQk25[(,U7cBP+c/M43&1a$p64fM$TE)o#"8e_fD/0H@4cC#:XOoeNX+ct]*WK:@5+2%0=-!!cEI-'FPk@`o<]pPe&r9;WPb^68Oc)$Coq0)c?/$E@0,,\'XE3_;'3T\,WdOt=R:(=]OKU,(@XD#AR])D4biMhB*ke>B*lP-]?`:gPXaCgPXaCgPXbN`PcW4D8gA"\4ED'ifR"2mG`C.L]h/\cCL%DLYD$S9,E+:lkY?WHqlhLRZ0T2`L_Ddo.#!U/$PN_o\3CK+G-l+'b)6H/QT@/b$SVs'pJ%7JQ(elf)(nIu8k[=r5d;/[=C,(O^DES*I:T81sO+@`cG3T5`=2d$"F8g752baXqe(iH\](#t_juMndPXah5)3p&/(b4oP7Y?Ho@4gr:tU_?Z,cCQH,T?243+)h,o\K"n8dHqlKE*e9P)07"*jokuJVUceeD=t8#C[=Vq:4k)s--Er('^am`-!IV8[8up]6rLEPotgd>Bp-DUpGks2E@(5aFHPA/4"Q:fgn:Ru">-3K308P.%UQW^qfts3n:j`K/f_OlPru*di0KO1\F!H6XeT-hDC5hoDq;7Zd@^1?3-t^EG?biJjF@C_!Mj":7"HqBa(D#1.c*"$LUD+T1<-]UEm#(o@h"GXb0DiEZi]Z!S;+6"BuFTRY=rmiMJ'*d&S9B1.L3)0eA"m!\*OT]:hb39Vi7*\r]0MP.IJb-npeoa>^QD?*dn32kCj<%?FCEATNNdQs-A@G`ATK27Q*O`Q-LBHX@aFH_YWHV^]Yh):*mg'G:E>/8cfV%uip6uE-/X/s(4NrAIeiEf]F9"&quug?>*=C$$5DC2%[tO,crUs7:,:=`VD)`-_/6Z4a!',ik!f`'*4=^GejG@R1b?Z8DM0pO*SPq%'Q$#q[!NgF]VrHe%6a*M']!V4k\4stHk>LX9bAZ<*pE$0K+HD^_m,/Cn4CV(30Cor:9BjG".g%ssP7FM:DM5?/K[3Dk_l'CfTuFVG_OXmSeq^iFr?V_kmY$NDl*1!Y#2#0(0$O=hSBR2]Yj'AXf[62qgRMKE/[/O7eh1e=q/+c++rds1'/o"pKIs*__+R9._CenQluYd,]#F_d#s?kL%JiR9IbXRl,AaP;$e=WSqGgWK92XL"AWJIJhn8d6#L9Ee87*1m3Wd>2k.Xf`<`l@/F_EFoC,Yt#2#65O_R6ECeY`>8oLSFJCcQ0s.g&"Ut=&H_s@a6a"rD89]9*.E)=]C0C',dl0rPeE*g,?OTF?Vb(Qf71LToFKKC-,Hd\J/NKCV(!t6,)_6u'#%%@AUfpE)79cLpYB,B(cc:VO"],MZ4m=M2ohLPHTmt:61&&IePqng/Od!S)lq;P=dqW9U'IdpcaIf1_*^H;n\Da"EXofp6=lO(")(OW[qs0]VW>Asst%0l$p2*n.b!*p?Rpl.>eP+E0<1,B]P2'X,bAnJhoRlA4Md_7;DPH\2_FUi?I$:hS="GaGoTBt>;LUV,TcZei.DmHgh[n5?4_Tj0@0h]$jG;n=3Rg"$1mY747B#1TN?A=rU$g1K:F9"os(AM#mXbOFP,1sVTUI(i^FVDEp3>;CuHRHIt[6rT[4iP.k45eB>4!FLgf7j2#;B1/_5LSj_.pk:4Z1O/tllc4NoHQ?qaTq=U(T66GpKpO"6/M@n^od(?JEu*B#rQq0#ktJ.GOn'Ee_IhB57F#IppC;odR=fg`U.1#J0-lD<^Q`[WO%UfX=(L%gSn?05lA>=[I",3h4ur!QTD\_s-!ochfKU[sdN1e%SN7oaLWW[<*f\YSg%DA>CV;YR-0sA:jNj-?'s]%'JrVi6:$\p?XBh3%W^g?NS7a]>=19?>-cH5r9L5=>U/o_+oeL>51Xa2ZP1g&JDc?^hq&-`GNS2`GNS2`GNS2`GNS2`GNS2`GNS2`GNS2`GNS2`GNS2`GNS2`GNS2`GNS2`GP;7[T-'\%/#Au/PQ\SQ->[SBo>TIB]LHWko#Ss3*KsqS/k8HG%'QoSZr-RrK$XFrjUgf2tt4H@l]H-IcM@,*^9[tSiI%BI^lbPMr4O?Q[ZFM"aBR3W1[g$q1U9_D=u7P];VV'7VJl=JDOZN_LY[KE!0iG+rZ6NGi,6)$&D)\0JYTr_ZQn%,,L.DE>VcE(jcNu%nC#REXZQW-PeKr3Td0KcTEeCc==I2]s/FfO+fiDW&@5V7pd'@NhP)NfL&.cc%0*'#Sjb8$&0(/>3N@h1jg0d/[k`[?GeES/Vo"Y/%'l%gVA%CPI,W)R+pA^Z*N?_Y#@=Gk![p$X#1q!=bRY3I-?X,b#oWc)<:*JGrmYVZLCWmMLaBn&F[8e()d.Te3t9,j[DdV`csPU4^G[,b_RhW.$:D;e!]1X\.G)Qp#rll<_Q_oB-;K@UtfH>$8X+jnqcWV8CK9lX)Bh1J%EHptE(o5$L2]1Z\@P\M[7/0k.U8*R8Z(3G8*s2'g]rk+VVdLY5BJpV\LTqJ(>na_U3f%.'m]"05eQQ#/V&.1iB'o\rE7M68noe.X=d?pctqc3d*_9d:"LFMgd6P.#^dI&hU*)&C):.Nh$_V*1'F#+o@W6`hq>'bd:!0P%KBH0k"a9%3uI`O/>N](G39Jd=\#fTSph?_Je1^'A:6bPCc>eD"Zal:`VP+BbTNgI.T4Y_Xt2hFd1TCbK8=G8^eMn8?r;tJCe5dM&ek%Mde4n)o,.f,SN9O'6/L!]ZFm,_.f;37\Soe22,t?!.fd0h]I?[fo\5XrN+$NB@pOM+`.>co`@?hb0Uh82]LFHqRK.sW\"&*Ob$radE?m]YJ9^``dp[!L24hHEc+2MW.2GE3PJ^I_23qj=^Si@,,f<<$?[60he.ZELqKpgWPRe*2N(aaV_R.bb-[o`(-#TbWq>HLu-(IN&)/l>4-;Ku?u.D;7K#%^&JU2YA%)E>K\4o?Z*.K)[n#aa/H"'oLCe7GG]8p-Pi@,AC"I';rA.]MQYH\GN)l7^J1mm5^];rB`])VWN-&n_/j:@!BoKn6n+&A!8t!dB==9d+]G%Rfb$_1]]8pUr0J5T97%_NI,*r-;dd>/t(1f`F1&\]UVA^dg=2ECk[EsD4,PXrD&;t^!^JpMK%;H@60Gk=N6!"6f44q*G\?39C\?39C\?39C\?39C\?39C\?39C\?39C\?39C\?39C\?39C\?39C\?39C\?2?t[YdSe@%79r84eCN@i6gN5\ej1u0=MAI](Li6b@n#Di(`XTAXT$%"(`;OndI@Ii6\R7'C]Yq1VdXm`AhfLU+,Dp5'@ZHR8e&i&fdI*U_I8]pLS,G/3d.F=67OFqLlN!=1KBN`7/5hrOE4A\Q6XN<)P(1:PT\*aR@-sji7(q,-5@OmX/4lk2W%0VC10S8TXNoM^MaeLq&IWo:)jn,*uAt'5s740WamVDPXI@.Vl([_0EW"cFLKi77%j;;.uB;_ktRfQGrj3-g+!U$Wr<-HWn=S;I/l1O@NAt;2(2(g1.g:/#tZa*tNf5?-`.s]M`iG^\K+4#M+UU`(H,Fpdu@jb'ioZ_/*Ie,To?,$]@\+3ofmlEQZ/qu*Q)j4i88Q.6#9R&\(SC=Rj8p%et[^7mD\MuY?MVe:3SgoqhP8\[ks>KZQ>W]+bto5$J4Z"+,p9Yln&&TjG1_"68DW;hq*pn-0RZ0t\+g@lMq4u`PVF/QhH?_QSOcmJS7Sq[102^*;;2?`T)a;lFM-Qdqa$Xpp6KgD=a`I3dd7XTed;ZdDt?*u"RU@YM8?qWrn]Tfr0fiHO*]<^@3l)dJ=?MtsaBC1FtG6qUtG[EKS]a%oXG6#@=r]#$=DLQX-DFc_$rXNh9ru1*k/8IfhQqO9='!P!jP%$,2Q9`7SKc[u^7@1b0!\LPDbEljMM6j7IVdaLIVZnV"MC^djMq[G2l#;@qNb,/>::rW^O=OUc8[u<2T_#:g^8-ML>?#"P;M.,*"YQcWWnSc.Z\6`8KrP#;o'@jjiEL%6I7'A_^(1!\2h>1?#!G+uL]gr@P7RA>Z+:L$qEe"a;%25\gfE32gfE32gfE32gfE32gfE32gfE32gfE32gfE32gfE32gfE32gfE32gfE32gfE32c[K)haN90MZl7M)I^\QRuak'6oQ"#fht*iV5,BN)$MXAQql'$Zt[^^e>Xl+$CW0kGe^I+n^+H4YE\1e,i&F*=C7a^MXcs2lX)I'onh#:7RSEJpMea<7`#&u2j-oSQfuiG&pdapn>?%XTTcC9WfFq&eKL%;^h'-:?%?AV&Bq("V/^2r77GofT\mSg4Rl&>44q#8Y=K@(HR/G.m!C$>Q\o)rMC^ecNRjdLf+bA[PZ2a"Q9h>OlD@%M=djQoPsE)t?29d;e5jH1UGK"fG(7D5Qs;;'D9dfk4Zd%`pWG8$HP_WP#nsrE!4C@qnImTtj:mR7S:mm%a+P,(@4(H3E:'NAoeoKKc\%Xdf3g/E#c:iZQuTV^02+=:J[.po;Ut'dMFrblcl#rte(!mWg9km1NGr!o1U)nB=TdQb?OqXghZ-a0YD4Xo2o*(a"@M<@W6<6rdPlb06YMR_R@Bjtmlk^(-?rjF%D7ki250-F&"qtTBkTX[FIs2W:7m,udq<+Ml:m)j\t(#gL%!iO^qBddF1\-\`<1`V@DqIIA6V&NeaVYS.RVj[.D24:-1'>3]aW#kg78E9mLnZieU,`VnC;m&(C,WN:S34XkKh'=oA9U1L6-aE#>Q7#^6m\c3Uk_TF)^B!*uFT5q#QB@'aUf%<$`7q'W-t):t79`b[g>P7$AXZJ7m7\P3@Z&(%>bq')&X(TpHdNN+]rf8"Lbb"JP,U4oUb]8oXa[gT`.YVT&nEEFb3fYO_jM/p%NDroeFZS+37K2!(U#W6a#]*FJZB49HA_6FZ2^a5[#[C?#q&F4K>DOkbP5dP4F"$c"_eRlQrr(96Nku44rGWkYDM4TGD3fVK9$k>^qnhWeF*o+"H5N[8OAthLH2PTY)*_pg#TAogiD^[[MAb@#87(Y08M0>O>7[?dHH'NNbQ?%<&@U$h(22hN;KnJ[K:O9_s)1-@Gu$:cP)]*kmj+DTRRkbsI7d.$[CnRl<[i)m=j55M6FQ2dQUPli2O5%mL3cVe98.o2"aXAM.HiUh@#GPEqslQl:T@;^(7g"FD5Ae_Q_b_g"?I:`@&=hPAZ4N3ktm*Qka\`Lda'SC_4NB[iA^#aD#u;gfTQNN]kT76P01:9W7rQ8hG&Y%\(/j'0`5f,7,JU9V_b%eAZqt\h6`id-Qq^sFQ:%FL)OcUgW&"f^M[&Ik>,X5k"LC?0.5b4LYe\eS'KC8'3`"*IWre64\eWKZOLoenBQ[Ba=!f>)FpJlZ1fSQ0X_FO4GELL=[WKVUl@d&AIE89mB-k21[oq:FSS_,Y`)8in%c!%6_:t=d^4rE@C,cV;a6-:Op`gK"DEs'A3`N`[5\]g!aRfE=^BT1TR&Do(o$Vr0T1[Gs@DbC1E$SMhm81^_N3.'>AA%>PgMDQ/9WgDiP\$[uc3_td=<>ckJ&D7(>,L,L_&42>HI95S(8MM&1r!U)@MJp%j.1h0po)$"T#-Zk]#TVnk/3m6@;/$4S7@4T:"G/;P5Ll`tm?B.>r0*FEa:2jpT?oOC(_b^@d@k"pI-/d5[/Q03HPX;FR%,._=+Ac&H_5\[b<#%`?$a2"05kuGaXgeUu1*KgN`6*dIfc!+@A*B:,RSHWJ(ZtUPR=\$I#+()#Si%).Cg[&(-nhX*X&M6-1Qir.LVoIV?jbKMP7_\"PU57?WRF`RSmhLPs`a]_DrZc"h4u+i%S1Gp&pg@Vl=/tC!gQ1c/h_n7;MD+`#Z_^,=(NQ%IC7Z4SQ/!A;[Qef-.&M;X]?Wd[&t"ZT3+ct'3\];[9FTbuVYpjP:[W\dO\66,`r,0O%pR.k@5eL"S"&$:AH.Wp@"BG<:W@+,mB*G9#.'d31h`nc.^3Y;^n`I_SZrkcL2nsb.Y7#^Y$/'T^7KBSH9lI%!1iX$fPKYWd$K>U="Vr.-HW1u%$b4gI3%J"Ba_a,e^WZ4eQ`/f>s?bPMP7#L!pU4AYj&3^d9$H.h-D`!MF"GH!i*.kY`saZ:]ss3.2_\g@*t9l\N4(OQ9_!A0^;6FC;5uJjiTAAo3r8"?(Z/R'h-lg&IY=T7-%gBT,q?lLZB1e!5Ja?OhBl$"tmcTJPI-Z_[s"qR^.b(P#Li%!=Gh@+LYF4]A[tdL#P4&\YU[N&?l.eQ.5q>:o%h_5s\0@F>K`?+$>"V)))$SM6VR`OoMpM@Hs(RAK"_@]g*/hs.:tpbQja^;esD$>;un=oR8aY#I:WbLYtQj:K$d[%#"*A;4cu5+24DeSk<@c^\)DKER0QX>lC+s?O_,@&$Y7`Z,.BGCY:$L&KqhS6V$0Kp%`Z3Ioc;l=uqK1JN'k#IUJ5I[2'^30E3r?$9a.OjcH4fB6+gmJMp.K7_=]5H(>mZnk!\LD%Q@cBI!3DWP<:[Z:VA&5'ARNn"!UVM(/@2D%Tr2DM(5$o++f1iMF1JT%G-s=WNBg."(J-MP)&R.H^bYe5/jd+.dIDs:hTd]AS\?(YF_*fkP\kSBr4eCrUq[<^S`HFQGc7/W7=EkgQZcQ3/-Qduf:Yd8AI>(1SX-Ae,=4coMQJ_Snce)hY!j/;=L&meJ`:TW]dLXhauuUE8VoS[L$3n*PY>=AT>V-4p\R,h*"Q7JQg0G':;@Hd.pb3Q[ugPRUC?ePfNPka4XdT6.GUg5D984==d5F-N0L#P#cY-_J2XA"'kl\'Q8&pNko=m+d*J?HW)b/jlhdKW?-08Zi#.kg^C"M/pMkq%9jQ\o'fo#pKpd8C&Fg'VfNl+gG?!-a&:Rd7=0>kO/E>ZpVSkYinuJl['Fl_N$7G1LDY8]7V<.gt&#Yk!bd+D_@bQ_ac=i#$a5`=/$Y$/YNeNotZ#'RT^SFoA@g'lnTVu_*@\^4G*1fT"':*\E8i2\Y!F0-%E[:XC0#q^9\BUsQUkI;F)@$dCC(3%kE_/IdiMcoORXl.ZtU!6IChDt`q2ep-Ddm6X/IPJRJ<4#6llYF:;?NmUd$>>a\[`T;U\gh[N&`)-^bu"8c=sGFlDoTXnl58si,5JeAZl;.UL8#=K'()<'J@M^:]p@F?+(+0elRL-Nl\-ik[XCDgS+e2>)=$m%7]j;lCbQ$#i8`*plsj*5\FeVlh029eY]!p6!KT.WWfsAGF^odCOHZel`.a5Wtah%0<)&dlH6n@>:S-h8`_C+%>(dg,)*M/Hni>r/L4\',%"[<]Ap$D_a`aX9&dTt!X62<_m4A,t`)00jug],Pjr`7I&`@d\O_d)pH,iKTcM$pYmP\$ZF'+4&V'lMj:7lK#rc>7J]fBRP"1qJPlJ?96,4/'s=(/\.[CqJ,NNPBJMsGmMmSC3/ld=fRVOeBei4+TSqV!3q,$cJZl="=rOM./%_<@TihJ(LB1QsD:$iVF>R`dVK-W5lbMi982]=C(7_NWBQhok=1o)1[9Dd-e3LY,E7G6bj`Tn'2MmaHQ8t"Nl0*2^jD2%miY1Kn'\XJLP!p!V3Z:\T)@''/5H?<'==$("RDa=Z37'Kf,Bd'b[t,(\T:T0nf7mV1o\Q&eGG6W60JpJQr8%tbps;Xu'6\E/"*NEAOE9\Las%VlELF&@s06$\U`G*8$c-s[2Ae"N[5mtJe*b^38&m!;6PK.O8"$M1tY"Q`jljBH>#L":OAXN+N(_*9/FoPNI=A,t^dB&6HEVsl^Ri([*u*5qh:q2nffT;g`o7S2C\]H)h'Ua106P4G8ThOTP[TLY_p^#Wg5n\@7^)n;>iJOE$GLr#sjgE>?3.)`t6N!(]\X*/afL@AWC8%@+W+67\m\)^Zr??o[(+1YP[-dQ-$^Jb4uV\,HDNSo$G"hP(Em$<,%HDW8(1\_qjTH00DAWb2%(X6HDk%;Hg(-G>*[+Y-1G6gC1e>raJZPM=kX"YJ#Je^Dn>/AT3fEIVb!:FGDGbc+Q*np#3d,NQ*dqqq.K;VkFX!bY8jPsrl[Rh6R]Cb$Lm>*c>9f?[i$XT_G4AH9/B+ORrcr9X!"FlWnF:53F2Xi^0\$HiRliOkc^=b,nB!##A?DeZg$M5)nRN'',CkVLO.s*UOTNu;J''Oml+%=kQjr13;I*ET!4&"#PA-Gc8$'K5'glU__of>f4O1BBklK?O[luU[-^I`*SClmqthdfC-[^[*."aj(e+Xr`(#;*K'-ohH,OrDcsDRCBm:kR#ZbDVc#r6).M6h?)CD#jk3Jka"C'G/upU5RU_&VmHk*hr[ktD-heSp[X3Uc/ihUM7ksD2f?`5NUg">;KlL>p1*)iJ3NGo9r-RncJ+Ng[+h9kFl#tflFqt4,tNqm$d+Ck#c+k"#=Hm^Ldf4SP1/B)KX#20%#4`-([V9A.rHkDRG3VRMVF$CMVF$CMVF$CMVF$CMVF$ClIkWjkAb'N.rHkT.rHkT.rHkT.rHkT.rHkTX/FTN-]T3u88g##[lY]RmZmo@U^KNJG.;8QK'\t53-a0aLMltHE*a>kkI%M/[8gAW?0$,6f=DaL/`_$]Zt)TUkHtWJV7bC"]=%bgo,?TC[hka5=UuRc!U*q>B@ju40<#,h?P[:;Q<<_QQ+_>cp`;lN,BTaEG?TPMC2LCFMpnsK?aJ[_h=&U&ZeM.d8SFULh9GIO"CJJAr(\KDfaZ:\[5nHZm$G+f!P4hI2eWE)91V6"H.;5"eq).E%;ej'q!D6uS_\/.Tp%A3Y'TRuC4QkSg6t^^hIM.j??u&p>3o:'D))KB'@=/NCWedY'LFr6k6OJd-+#m_ClcqDfBb8Fh]]A\KbfFEjrK1*Sjd[Vpl_A,8f+n\^3=X]haA)?;cg:C4;-I3IHu0J"i&kCaZpi67I'Vb+j8nl=4$I<6/Z7HZcY7oT:J`^$-1`1O5X5+<\'i`AJ7N%7?UJ9p5q>n0[b=[)9=%T>&\SImTNgF@95Hi8CFS^F\W%n6;8./D2D&M2:r:;kh;k_c"d8bK`@5_N3S0_/6W:W]E[S33j&sq89-2D02c8:SVHVq;/F?hD2o"O>I.\D;Yg>R=EHn_K]9)UR9YSgCX%d;br=A;K>)@Z)<&_tu&+,gMq]AEmqKAO(MTi,D`=E)^g!S+HkTYM_'mt0\oS)$C&a=mB^BaU^]-/6ZJ64'*nRqn8dI%b-[c4aT[c4aT[c4aT[c4aT[c4aT[c4aT[c4aT[c4aT[c4aT[c4aT[c4aT[c4`A/ob*8>EEia:Rj;^CI%C+bJ\G3sS:gIBMPSHJYq-D?K$GTq#L*(=Pi4HU$E:K4u0&8A$KtB2mTh4dF6Lpj4_@#b+>.@WdPpn+7>0Y4Ih:'0KGA;XL7WO@&GILZ3qqKY_HhK7o\beIQhYdiMh7EuI[sithgODN:Enhgf8q/FFEb2MOq!MKcGl&""\T\qT:()"=#pjf!5j>t_:KGTsPj>FE?EPiVXPbQBh"i&TeL8.Q)%(9\!VC+Xlhu.4X_uU6l49@I7om%Lif/r&ePUdP-SKms5%qoZ"?Kd2F@`0+,SdK+'e$fnVt:3.h%hIJY(NmO!34628G>AJ=U8)X^BAtI+KXodX2WDoqL(;##!6EEdEeEEdEeXTl6Lqn$iP1%l.;[c4aT[c4aT[S"MU`GP:/iO33F2f:.cr^#=?gf?(!>9,eg%C&G/KS*UpNs;DAe,t,]:3\J^!!]/p(lYi=:i@]ioEKkqdplWT.*tEQQk50u90H1^K"-W>[DXZCHPeo-LkHg"0!0#&]!&hm!;b_ALdcY5&J8^W$NaU?E&O/Y\]G2<2SDp;faL2fM1T3uL0>VIf,>pJ!aVUSL=n*&=n6"b"Q^8MHE.gMl4)Zf1r3!q#R1qCTWRsf]O-UP`n9S'2k%ouKu$.gOp@LQqa!DPIK588Xag!r?54/%09(7[8j>l"1>jQBg"4.#u#He5F9c-(UPXXh6tl-@hoi5XkCi6JafiR[+_5Z:M_P[2j$1\=1!+kGBW_*A5n,6/%.m%5*9r,PYS6m1HQaF@5U=b]rY?:Y&,!d6fR4Tb3"30I9T22T\O>9X9P>Ub0(-Cp+<'6qk,SXJ9[k/#5c8&(N%;gLQ(j7&Emj4\eaOkpV?FN-p5"(R,\+d!/q?\""g55)B0\g5q=>#8)>AReBi.VN8,M*^:l!(%*%9*r;g=P(#9&LEZu(r>!e9_TK`X&otc2=d#q`gI1)06#K1r#5e4'kSu/u[m6n_PBV_qblb"J@t#L@*a(!3NSOmr"dc)Z&DHrGR9L\+=!OekX:LSdfek'^P-X6$M$)$US2G!-EA[5qDm>GB.^4VPY\Jp95R7-HBP,H4hPP`aD-%St:UlM/eoORY6OfLG1nU![i&qiVlXTL'M2WnGWFC]6tF^&&hqAmj>LY[hZ@e[hZ@e\()//D8d?%X2&SkD8gA2D8gA2D8gA"+Dr]I/&iE1&T0+:Wu%S6EcR1-,h`Fl\FBB6QQR1V!,Z69BLqDc#XBTf$2!Pkq]ai-Ns^`_%44F"BXGRXS_KgBc3PG-0)5+fGEAE1%d4^1dUu^.(\8]fj#860K%(:XE0o&\rNQ@pL,sjV73pXph&Tgp':h2=h9a^?Kh/EMH38"^LEr1=H\A*,0[s6I:fCX([$QSjH_AJ]"-IgF'!W"TqOI'O^-1Cq2aRG64EtH3b7G,*!<(c!g=su,O,(??2p`'/#Q#WZkB;YO\tD:E%Ilt.9TG)4?0gJ=!/q=3i5&5S%/7eNEaf_rjl(cD+P3*f'o(?24cJ5Wf+CpBTWm83[gF]*T.G_^Y!a`SpPu0#0`b#DW(Bco:Es$%VU8%P3D+G*_0\\?AHLC97+H4^67'rPM[ENR;*nGhN[tZ0)JmC2oTr!e&GrI!kF3G^'0,&.*MG/1f/q7BjrGIZGKRiZYNCCS5nF#\qX]Ig#&<3loOt!2jn!_!Ja$]XJga@Ne91!^KEBkm[4gi5Dlf0Jt]pdkaoV+e*4eP0f"2j5Ue<^LNe"N')=b6c6d*]]n\F.@?PFK@;3/6R::nC:+C`/UAhTRg8t/.B*ke>B*ke>aTg'Fug(D^c#c30)hJODlfQ7[_"f3imc9;C.hq/Iko5;>R3W&O;L!$\fTRVMd)bE.9PSW,.F6?<8_1VXDXk3;6]Jg1[W#lY7G*j1t#ZQWP08K/%r!l*m;>B8$GOXlJ=ci=IFso#cLW2A2W)Y;a)2tKgjJ2J.\"A/'_7iHtiVk6a,XnNY-1q&h+,E7^b7Ec2AV7^o#_it#TWA+_gBF8;O?SpX!>1%r*@MZog-?3eTI8pN&>]E:q!'6gWCcmFpKun@SNGekhg^92++=4CT6p^D^:G,@aIsfIN@SFP*)>X,6Z8n2kXXEj*^:A%?\5B%%j4RVrLrh0q6sb\`XJLf8?W5gL:6QYh*Aa?o@;Zb0_)@QlHM72&akC)E"@ne%)Phj*9cahoF:,;c=YdpR/tnlrrMH:Y(]4JhZl3e.f";C@pu%ZUZcp/^:&4roEMpYY"kSj._@"R-:.Gc4:hPi$5aZI"kn9X#GU_.Y8:U'()U<3e,S]DN%rB*ke>;=,7@k5E5`GNS2`GN"*DC]TTDC`^D@r+TDXgkM4"`5!?dit\b:5'\aF4/Q=FNBf_@3*]J5Gu8Dr==8[l1C:fc^b::XceN3#S+TK*YdD?$+06Om8/9qWE+Oq4haV>-dVI4[@nH+j/0"X[6S/]nUTCg9V$1@r[m)R=XVe8N;iR"I),B^2rs#\9[aCTO[>6B31oN9@*\\*On9QNe4R=hN;kacF7hsaeA@"(nj'c@,\Qj>B*ke>B*ke>;=,7qfgu,ijRjTijN#%[hZ@e[hWD30t&:]KR-h\mlU&S7J^NMd*pqXC*MAXKAD!L,nrNNOJcmAT*V?Ss1qM73rD_!)e]7`>:o=`]]I=0;%r0X!'97Lk]gEM2Z8J-q"+5u@E8)$n=S?B*8LX-416n]euSM3&^!d%HW4YYSWdVa?0,u8pM`R-maV^8_%)XN@`rVQ)1Rhkk\4[>W*])&TpIfm&pKEE71D8d?%loCeV.lrBsWk8VGDqb>8&UcJ3>RoDkm3PkuQ3Oa/'6L\Zi;<+Q_/OlDkhA5Lh#YQW*!Z8E]WS+GP.tg$Bp%[.NbE_5ObPObfTMCgEk[l]>n3\9`E+OKuIoJD=oPqX,*9(3DFO/jNue(VQH31[q]]`_qmPg+OnjMs1i9/re7K!Uk;r7[K6>rgQ#;Fr;#Y)TQA%"WLin\_Y[hWD3Z"K]7Xm#Y?8ufLu"m?c)diZ<7oYYto9<9MNCroL#"6*g=TFAKo+C`$ii'#tGN@%o.l\r17*]1`>8]T>#mU7(4;n.MD)u7&3Hg#Hf;"!?ohmb-q.;c8dnOjP6%gks7$jGs]?aD=tBt[c4aT[c4`)N%t%p^hq&-`GNS2od"N]EEdEe0ub&W;/of[>NI*+`@%61Rj%#j;[/qHWq#T0[3Bj^7?Qn[kuUQLr58P1W<[#9oi=]@-_cY#Q<4"Fs7%)Are_4k,2X9&UJ4d7tMr#RZ2-GVC+lOo>@Q76=o![M"a9:r!b_7#6lRr1gG!%k1LF]uk3HjK!0Y;PC3)&(-\!?@BOn(h1H6btC-OH(a9VP!\?,Fuig.GR`.q=Mm=2no(D5FAAeUNOddT5)E(h8N8Ls]8WC2r"n<&mgi/t\HCjc8)6).GB]UMQ+)LiD*,a2TD\SS1Ab/0r7C#uBtnbdcKmbN@uN.^>cG&Zn#g(gp9B$mhAGCmICk9VT=SphJnoj'^b?$"95MT1D.F4668rd"+VnBER/iT$\bI-H#E]#PO9oZ\J&[3gVJ"S`'dBg2mNR)(+.r>H+K\Zj"Mt7JO7U(k]eaMVOOs_.0IE160ccc4Ic15nsn]AD.mk.0Zb!!%Pm/dlr*oITB4j0RBNe^*fY*(V1t)%mP'MM+II,;G?D8['IK&iJB8>6+^h\$VF/!WW3Y:0W_TZfGWW?,h/QiQ765)\84H*-m$ZX5m1#B?QM#iUUBeYMX[K6GZhInEV"TSO=S@4m=b$;:2qgl.!?5IV!TrD>"23)_j4]9n[l7XT`Q*8jiO:+O8^9+)o)e#Y1RWG;kK/TAWiq^nEg\0P'$uCM)fpKQ?s,Jh5e"&+B8t5HT2e,!IrZZ_OCUmM,V'KG8WUg2aDFta4F1:;!>ips"3ea[#J-b6Zk]eTFrOgAc9KZ-D7-87`iF1B\'dasna]u-l]Q=CA.I,0jeJ").W]jl/M#p'TFZAgF+5BA=ZHFH\$EARNR)(+g%T*SO7c9K[X/F?U#Ze/p@cgm\J80B/q&eW6CKZ97P9#>6lD$:<`D?J,%q$4L-XgAhI%X&e!0$Z]./T!AJNN>7j0],NjJe:eQKK[q=ACbTJ^0d!bl*BKA`?&+iY%9f*JcmB'LX4^#NWEp1e*:'1Ir$`i+QgMVoB?E3^rWr=*IISmHe!!"^,[Ml'G!!%Nu[+.Ph[plbu25S&kB)r!_Kf*H)DnDtXW.hsbC'ne]!!%u) +endstream +endobj +54 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 52 0 R +/Annots 55 0 R +>> +endobj +55 0 obj +[ +56 0 R +] +endobj +56 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 211.822 386.842 277.174 378.842 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://downloads.sourceforge.net/kabeja/kabeja-0.3-src.zip?modtime=1165501366&big_mirror=0) +/S /URI >> +/H /I +>> +endobj +57 0 obj +<< /Length 2310 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat=-=``=U&:W67i:tEcYn5b^14AX(]C%CFa(cumWXk0o8TZ50iSe;;kIVuF@KD=K;IsY=cR<620(5er]+"!&DKjZaL-k7a4=d:rGu;NWm39!YoD?"iVZb<@o$(O'j';YP+`+rL<1afW`"sn<`Y/3'Yp'h<^i8==+^mkYl;$W^R.oS8PB17on-Y=O>r76lhlao)D*8#oMo2eS#]a&>8DUuZY71tY8Wd/3a$4Y[lUY`P8Gn/1n[d?,aGt<"`'Z]e,b.bAI!E9b,1ZQGeVO4^-&Ct;f=>RAto`tAi`lE/D+_Zpmq%PeJcu!I1h9CUqB&<<$s&W]42d`5nkpLn'IXdbqsaDDj^._R2$Gm(it[ar9O@'.C1smXNNG)RA/tg[<0UTeQuAc%;egQ0PZk+<,WL%CW?pI7m(L@CKdQAq^j9034;TahpiO(o7B33Gr6:cJO:WlG-Y]`$=\mLP&Cp99NMDRQBqr)=f:l!,)):-+nT_%5O;0@TN"?RcW?X?2XJ,sa+ZD"$_jjqZsSR)Y"2aMj'[N!J3[@Sn(jOI3NgH>VC%jqKFghZ-LZIP_]Xh@M*u[R3:oetA73$fQ)==\#Tc(GKo]l;DsO^WOYqQ!3^Q9*.mO4[!rAB8#kC[#0H'-9+t^T_Gk#sVj"k1L=Vh9?X_D>j`faoE@2[lV6S+A_%d`Ld#RN)G)VS(@GE4M>Tt:r,kC@A:L[M^XL[PbV+APHU/ZR>k.*,2?/3$/9dAn4?@YUnc=g<219Va0"]c6%dZ9EGJX7r1K+"*h%,F]r"Hm#?.Dtg$Z'mGL$inK%GHOb%Ya;R-(M62A4ZdBkiCXJZjHi5u2,NAKYciVJ=7E6gd)p]e5>9rM/[`(jF(N]F1%cEN.tjSI4,bp4i1BmJ)49V@tb]D>P5>\%U$m/Ot@A3uJ^''S^pf6U8JRE*>.Y(\UV,+Q5VDQ6)i`gFmb3YUJ^.Vc![rK.llWj"@G'Wm$Pqc<1G"1);Pf5(5uQaATX9/H!9G3D4mm?F0E15K2j3o\l?k+q$sU^uFKa@>a\G/b;UY+U\j;Y68FnsSrkC9G;9k.d9Obm-2;4X?Nq*mhP$iEb\0`2i@5'\&,EMTa^5%[X^I1ob2LcakU^"1$8A!SQf5!,E9o6j>@\*kn+YQaP;#A"5e1"!a0DV5Krj+.:g:%8DRP@pu>)g@ihrTWk7k2i0,S?2ro(7%\0-RC!JVNL9O]um=9?'EP4%KZ#nc*[\WSnqE_U`?l\j!f0QMQ);!n>;(2i2a:F/q]c!:*Rk0\a0"&`51c0Qhrr%[5YDr&qf':gibY,7B3;Wp.).pdk"n4sB=C3,!)a@AA&8H"#:.ZuX9W4Pic_%&"<7IHBIJ*Ep\?Tj?3Kb:_Ro`4"IlR[S@uCEKm=>/o^M[E_.:M?m#n/=MOAU8u52X?O%<4NtuELjP*4_l&R!F-\b61rKS4&e;0\VAtt;8P*:2%:fO+DAqHFaXIglHr$`ejOA%;Skh#RlQI=ef\CQPo$9cJ:BU^c]0RCg2Y!67?HT4,5iV3M:;fdl]3,`a0snnXoJWBbm@VZS,#SW+ZeK-E=(J]$<'$bN)V=UC%STmZ[<$ +endstream +endobj +58 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 57 0 R +/Annots 59 0 R +>> +endobj +59 0 obj +[ +60 0 R +61 0 R +] +endobj +60 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 470.239 692.055 489.742 683.055 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xml.apache.org/batik/) +/S /URI >> +/H /I +>> +endobj +61 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 113.533 407.055 152.53 398.055 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (processing.html) +/S /URI >> +/H /I +>> +endobj +62 0 obj +<< /Length 1590 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat%$gMYb*&:O:SkV3*IRabVFlpJ+i1lEtE7GX]RH63un[aiHn8l:G)7K7d+=&Q?f36jlZC3V^!1H[JAomCdATDY3e'KPZh2Vlp^,d\/,+tKlbjC-AT*J-fr=AoHOaL25XSgL'WfCR,NcEfijXnd9p!J"8hreO!^<3IY]Z<^qaGLetp#baoW?YfXRB,7pV(qHd!YAkLGZ;K9.AAqI[0/'H,m:"ZFie>E'29Ml=fj1,P`PiWBicLr5jh)/JqVJ';rGSoOjO@B"jIOg8&r^3o."1b0hj_WYmbj5S^`%NZhOO`9pjmY3BQ*D<41?Ld,*%?3"[-JLCfce[tU*;/6rRG9QOo]=i@)SF']U..qI);E,.1+a)OY$l_Q5.u@F-ZYCQfMt&ZAi\>%\_*SR/jVMRUH`uQ!TkV$=,ELKCT\+i>\M=@'Q3?;N-T0jg^=5'Z>#*M@6:"-kjAVd&+QmIP#L._IUqN2(D:aXNMl'Ic>8Jk=QGnsm?)nE;C8?l8Qt`g]4I]tPm/&0MU"3:k'5$:&+&$OS0Z*s<*7;5O@?#m\DS5<11mDJnf1`q>3?q.R)a+/i08\dq=ZJ1PtmlhMtjtbPuMG0O+qQm#D7+?qq#)(JABRHlEY2;"fmNfrX_16^be`"1C]hO*i!(X[2X''q\-/<4:c%5\K-7ik=ZI"+7cQD8/q-.Cut1Zdh6%UdoMoKd">=emAR.&TO"LprE+9O1.h7VY;9[8$<9^)ag_1JX5>VZ,`_0u-(M+-\s(Kn?7fsT>4q%"+c0-'/(^O=.m_dmIDiT5Ad@$9?Z2<'"GLX(@33j.gW8X/A!_1@e:5g]MIMUQ%W83j/IXI6hFX)$`X2Ja"?h-iF(p5WFsqSSk!@Qe_gl2d*fAfD3T3K-0h,3d^?h7OYoa[^p1je$"r\R3LX>.Ni1SUTZ?$H+Sj4M=2Nr6Ap8L_U'9l#29T;;'k*hC)Bd)Xa4Z;K=KEaT`48Ag[>n,PXY\`bkjM)R*BS4TAJ'/I<\8q5_@rjJHE)m75(Rq13`W/Z+kcB"cYk9N@&IY3GNId!W3,%*m#tWCMk/GmSkrXd@iHtDVTt.&bi8/=QhHUJ9Wi"l$ck\Vg\E:3V_po#LEkf*rlVl-P>E-4t\G"0XMkq*sB:s=I.TA6fN]jZtc3)C[^#pI8SPR'.sk.I2ogfQUoa-l!J.@#_1o&Wtlo6DsHsoolUD +endstream +endobj +63 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 62 0 R +>> +endobj +64 0 obj +<< /Length 1990 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat=,=``=U&:W67i8dJ$`"9bSPNK]dAPZL]EQ?3Z<@7lIOMuqu=;(2P:B#U,Q`r_G\Pr=?`,^nLHXIY;]9peYPJ8G&M-]mZGPe:r8`UH;NNLQaLi<0Vk>FY,coQ>eT/]lnXkUs9PIHIlm+f&o@U"c``!-CpZJgjJ0l=n/9g"J?Mll[LoU;$[09<2Ea1"?D=r?QalEOoK]1]IF01f&^-M\NdZX"p4=3Kk!kk1)2LUHpQ#FdUt6#T\f:J0q;VEioB"Hc4@?=5[,@#],[YkalsKhn.ebA!E[;MNI\T=6Mrg&1d/_r]nDr9EqQft4;C!S!ZT5?+RoZTBe)3k=3aYnG/rS)`*O?]FPem&>0tTKOqP;/[!7T%.S$/i?"KZ0Crk#^_uU@.\&Ij]aE[fci0O%TibtNJUD@fs7KUED)=e;U'/'b;+`XA5??so1G.rV:bbX(K+=glnY])_87nq`_b<)D4\pMVS$*`XuR5B-!;iN1;@#*>C?7Xpi8OtHN!j6bN6@:q<5Qk35F5E+NeWFfL%,I,9'jbV1uMOb(u0.I8S62'4/aZjQ`RRfW9+.e'=&W17j](9QPJ(=n6E,Z@ibNE/2eaP_[!m4Ak8acW(Gnj)KISdpdNjV5V2t7Cp@hO'IV`Cq05d[UZd(C.C6H;TVQk99kmS`s&CV$G;N!&[AK/;J@\+=p,o-d,$Wq;$'$+4*N:A["F1Nmt,s@MS$+`H_-(g7NC!#bOcTobPu*fI4D[ZaJ#Y7Hd08>%kA-@DF^hg]q,di":oq^Ug9h#.nC=&%A$f3S[(l>CL4H_(m3oY_$tfe7A=q1a%l7Co1-5@1/kiFkb,R`B-fL@C^e1gW8r(M&meS4XBl>@c4(lsH@Ob@I(nNaI2]KpI0K`N4O)fO15Im9rE5Hc%53N`Z.PkNbuPg=';kMYC*Rm]^Ge8*eETWl:beYAA1Jq3'd`:<]0*'0!#kYi/DVWT)0(;lOf3KAU@G#em=S:D7$U8u3QNj>[/'RD!XaBfa[f#*<\+,c)SH"HOa)qe4<\=@CFSel)2I%eWBar?ehk@We;iuksmX>ki2lJ4^VAUnR_&OO9,q%%5)@,\nIc"r;$h#lg`!L9IHh8\.L50`Q#_LE$=(XndTIW?U44Zr./ah6H@%[eKl%',Y&IBXOLS`fmF5%10[](l6a8[KZ"SWY@bQ7AC-o(Z9`Bin..nUj^&.cJ[mJDeO_:UeTZIM1MC-F<>!8V;ogugbS=C[WSo#,gnoY6`&QSPa+SMZt6+"sGgt&)lA/_0@I\O8_BGiG>/tCR2,@g/8jE5-aHiuKpB9F(.(u*Fan7=o_]TOt%Wbi#T9[SS!][`0`iM&1fW?:p5E-cQ%98t2&%F@f=T+XPU(lC-C&Hr/CjQSuoPjTK"AA\pg3^dCA8Jm4:Xo$A06^tUYB>\llfenRc/%d]Y%O! +endstream +endobj +65 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 64 0 R +/Annots 66 0 R +>> +endobj +66 0 obj +[ +67 0 R +68 0 R +69 0 R +70 0 R +71 0 R +] +endobj +67 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 179.521 325.755 207.52 316.755 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://cocoon.apache.org) +/S /URI >> +/H /I +>> +endobj +68 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 206.473 276.255 261.967 267.255 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/dxf/DXFDocument.html) +/S /URI >> +/H /I +>> +endobj +69 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 100.285 242.055 122.776 233.055 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/parser/Parser.html) +/S /URI >> +/H /I +>> +endobj +70 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 219.526 192.555 275.02 183.555 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/dxf/DXFDocument.html) +/S /URI >> +/H /I +>> +endobj +71 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 100.285 170.955 150.784 161.955 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/processing/PostProcessor.html) +/S /URI >> +/H /I +>> +endobj +72 0 obj +<< /Length 1685 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gatm<968iG&AII3YWTmg#f;3i:Y^mLa.DpCkZF6mVs],!+:9hl."#-?-U53V3J%l>eW,q1`O/RnE=;mlOJI]4*`W//sgmZ$k?EQ6.1X7Hb3+n-N0FRAYmlB3gD/PV-u;o(_\$a>7WQ+I^S9s1(+J,`5e6q"&@p:c]X#Je6kUm:dOqUITl?#@Pk:F[/Hjb(.3-`!*<`rY8'5H3EmX!AmJuCS;L1=d!GKT&$F^:Ih_,^j,ok[>r\#Q=H%hE4LhRR(eJZg'0\`1V2ZY00"$+=#UP=q]]?@N?73dWPf$j&=UK7T9r5@&EAEHOH,\hJE,Cdis-\HU8Dkl($*$=h%JXmfQ?MKFpgZf?-cKtg[0l0FBSOFg#0A(+<>KfD%[D6JR!#:j0F!QEj`JkFeb'L^/iQQ^>8>/:t6:ZY._p"h2Z+OeP*5i`1L>TQSd#k)Jf1FGsSJb>J]*6;DKk+$dG(&Jk$iMd`5f"7)o=W$XuR=)Wc&LDbS[JE)cLu)M<`Pe=VLahDqIe&bSYG!5Q&B5&.`=OckEh!*)5)0!h,crGa^lYW_#6A_:PX[MPYIad3JsgftTuaqDF]fCgifORPr0l-W=8/%W-W$lN:'FhpD#2n"-(,kugb1m6r+V@-qWoQB=#0QgWLd-7l"^[&[_)1[Vbegl[LMfA7@RMS`D?nnC;`2M!!P*#.Mi5$^qcgpe].;%,lT+C_tlI;=^,#QcNOeme3jjC2F3@k_/Ha9P7pnT@h"5DZsPIYdG5\O`#B>9oW=boQ&3Y=.Gap6YU*1pB4B49??.!9m/f+XTrWo.t_l'YDiI9QJ:^Gc!CFR^3J##W2kFC;+HoW,8(hZHh6S^B]*`S&5f3g$RsER?T4:+1UW0CSKTFGCQ&VhtE+bW7`"1&@NOmX(^WVLI:#Q#MS6iER>af52K&4#L8(K2DM3]C^n9l)Qp-V)@hfb)]_`5n@cAeg\do%Jo,]nr"+@cI>24(SlAb023-lSH.-??bL6+.pgq%Y':^-j`42_f<`g6;l(7r'3\SL02VM6UcnlM/lH$,$faN"I2=3JsY^O^SHcCNbPB@@N'+JRD#P+K2qgJ+@bT$')t&+!9fIe1.!8O=1*_71Ef@2cdturfAFfli';1Q_6NEVmleTt+]@5>'V$O2pq2SqH6Ga+chUPJT`HiL[:L9^_g>N5:-<>81H]E#>D66gQg*L&"@O1npa]A%h/g2M"#b4bYd,8hCFj'?o5Sa@daX_2-ju7tDo2Hb10E0XY>6~> +endstream +endobj +73 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 72 0 R +/Annots 74 0 R +>> +endobj +74 0 obj +[ +75 0 R +76 0 R +77 0 R +78 0 R +79 0 R +80 0 R +] +endobj +75 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 259.747 698.355 315.241 689.355 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/dxf/DXFDocument.html) +/S /URI >> +/H /I +>> +endobj +76 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 100.285 676.755 154.267 667.755 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/xml/SAXGenerator.html) +/S /URI >> +/H /I +>> +endobj +77 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 100.285 605.655 137.788 596.655 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/xml/SAXFilter.html) +/S /URI >> +/H /I +>> +endobj +78 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 100.285 534.555 152.773 525.555 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/xml/SAXSerializer.html) +/S /URI >> +/H /I +>> +endobj +79 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 253.762 485.055 309.256 476.055 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/dxf/DXFDocument.html) +/S /URI >> +/H /I +>> +endobj +80 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 100.285 429.255 161.764 420.255 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (javadoc/org/kabeja/io/StreamGenerator.html) +/S /URI >> +/H /I +>> +endobj +81 0 obj +<< /Length 2565 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gatm>;0/Kl&q9SYT]R\%Q,nK;&6HJFQ"24?ZZil747Vb+e`@j.NGU!Z]RZ3frV@7"67iDrLt^pDDU[nM>5biIm$ku\rF5K@bXE-+J'Oq'qClDCEcL/n5"!77:4PLg7A4ea\NXItR5g86?Y26Tg&-ji%(XYm4`gE#T&]Bkc\XbmmR>2-4D1p?rd41QI%=kl;HA9slho(3r:JgiY(p\7F-Vu(S>H6-\f\EUdtic7E;s/*asSg&l!g("CAU>2E>pbDR_UMmaQh-^3]\P2;bp!]Vk+)2kE)f:bY]B%!keaqqJr0U\(+BQ*B#RuE[+b@^1TofO)"R%d9Ss45#*![Q>!5?)D'Qsrnh>d3-K=Z7PC)L@9C=GJl^Q3;^LE4\WQ(Vq2Bl-F0&7^j,rEL,!=gIp/j#h--kMioub#OnNFeX"iS8Wq&V([=UT49JOp+NXF)->QF)WF0&_(ZB'/ec(6qu)Q0j+njNC$8eAWh_BaX5^pi^"Sgp19JtK2a1JZ79lbd`_c)]1p7>t%3AGH':Va_0EG@ZEWGIsPp,bT4<8miURMt3;$&4gPa@o_gqs&R3V;j?O$LQ`_hE\NK+,%%0d>o(&l4J7[Z(j8Z]iqE5>WE>GU\jiRbk"qP)FD]/5]iL@h^1r!@d)Dk1b=a?b7ZLY_EOkf4mE0DLTm3[*djR[)qHg](_OWp8\dte%OEkg0ae\1o7\SO?O1eJYL?bck6tW-kJO.1Fh!\"E%=]%jVC7s"qb`=9NdedWIEY*Bci[AS+AF':OoE.])QhnHhePjI-PQf]RMj0(aDU;3RC"nj28chRg]GRIT(0%W:OMkrq`60`>4YrIeJeC:/#7(/--g]0q^ZO'T^G!a@D;K;?hrf,cVqhJqHt+l=&Q["YaKctpjPcIP[Bdr2R5,qhMY=-5;I7jVBL>HcTSZ*$KTL<7.a>lM-7O+0?#je/E_?:G;I=01Fr_a%+>hc&KHNoe])("=b.&,#CI]U$8u<8)9uFX]o-P*M'L)*n1o%$.>C!##mc)i.8&;>VJWq1@:F"!ais8L^*r!)449W9KG\Bs>o(1l$ir/iO6Lfo(3^o`=Jl0>`W7ek8\rM&mGl'Z=oDH"cAG_QQ2DAr!86J58U`TS`1P[i$5#1(@CE!+QjUjE;=b.IAX4HGP\lsi0[j7'7qE.lpaEnnU,%'?VZG$E&28\\V2+nL_8Wk/k'(\3A0lkpJG_r5,rN7ZsJ-PcWa`.hWqe0@!:>Dj-fNWZa*H%8X&,["t"tY%gJ0bppbVDit!E1V82D95+4`V'<"VlVP*OU&.o[]B+Y51_nkTjJ4#,T1D-8TE75ea6eIliBG6ONEiaF$i,o)#iPL6h=^141IS\Q4p=AF&Belui+F=_+njN*d%*S#^Ap[B&BeT]i+F%Q8)YLZUqZmsa)]@.7DR5/)NNds0QfOu&.(HLlIsn3d$2X#l?X%2+h)?unbUGr);a)?ScV3C]PXZ&n2$*6#4V5s[/iGpKW9=PA5V8t'Q;%NSj\Pe(_gn*Etn^?2S?H(Oh@M!GqQPcXbD`A9q%%$D+G94j\sV#@e&R?c"ZHH!M=tl:cT(3M_EE_r;_W=C[EMVRr)chJb!o8fi-D3,EbNISL*f>lH+mdJOo?H74_=-h'_)b:=B;j'>Qhe+.]a#Y3B]mN@Ja9h,LW)MI8)2/:[G\P%ATokO`G:&/aA^M8EnmY0/ +endstream +endobj +82 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 81 0 R +/Annots 83 0 R +>> +endobj +83 0 obj +[ +84 0 R +] +endobj +84 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 154.015 442.955 189.763 433.955 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (resources/crash.svg) +/S /URI >> +/H /I +>> +endobj +85 0 obj +<< /Length 3018 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gatn+>uTK;'Sc)P'u"K;:b>>+X\0"82`lC=A@q5FpO]5Ub:FqjUc[%T^G8@&#u.MmStWi2)01,s][7tY_Vt0(B/86;GGeJZpeuUol!%0^^?V.nfs\#)m?I=YWg0aTk1/Xchf`?+>[s$026PQ2f%n5ZD5URdD_KLEX/>?ZRQ.ZRZ?^,ehWUt@FZ''/;\+;V3rINn2lcOFeS1p"gJkLteXnK)VFQj1oBFBebNc9Gp?SS!RP7,X$40eo_[H;NcHhS9Rg5;D_fo)KofE)5q>Fpp@6?0$#6L5Wf\3:p4^X@>4;I>LOdtlA8,>'W^V%1i?!]+#<_)pe5">!Ba8#OXEV[r$Q^clUf!;Sm`H/G%]>rM]206_=C=:I))\.X`&"A`UsZAQU'W>!=[/65-4F:a3@gTSq/&gDdZV;o\jN*nRIKg2S@1I9O4;<%5!n8e?utFU&*_b4IdHg$K<8^&r&O3_5n(0_\AH#Qc2D/,nP@MK4-dgLF4^4>NCNl+c?_?j[gOb>c9!,X1de5K8BucUnPa?T"%LmI+('YS<8!\T&FZQ9OuOZkmK=kk2],Ri@20Iorq5itBjO63mbYAWLWme,=RLRnuu6$ES%^Ydm#mZqp7Uuc'Z7dn"1.CQ<(/kk6$K<>9;RP_BR_HKUdJ[\@C/X--9EGH.1QXF>7_70p<_codbi,9CkCC.p2@E9XE=ZOoc[?e&$H+H0A6=*=#W''QnLmd9Q"ToYU=GOIA#5=Mcl'%<&q?q^:RAm%"op!?c7d7%X!X=GHHVH:uYD(BG)W"JOLS+]'Y!=lDm:<=Ua?O&QLMgMS^Lg!5<1qgS/rB_7CXWTH-V%N):F9h/k%FOMh"GCnuN)6Ehj4A>Sae>%LGK\(X1$c5*368->(;Z:ZU`#4_j[^JZ[2`qD((u5[/=MeNI1U%rRcpg\.3!)9$E6TaM^:Ju]2nSWmS^]e:B!49.6SCITh@B9X9\>PU^pC/8mbO6!gc15M%>@&80=G7Pe2$q$Xl[>ZFaLDT(L_0aCeUqR`B&);Zq_!-:D7Y5W^!YpO*!Q[4?[&c02%3D7X\oJo,AXi<_K)D/CFRBkXcIp]0[0p)UaDO+OD6+0CJ7`+'4E(#me.r,7=\;j[^KMRR#7B*XEcl'G,-g6XCJBX?>abqr--Fq#9:-[kR!c(P'oNDdEE;n%ss?D35u!EG2>)Fm_2;.#RmJk('^.#*DP4Os+LDL@jGm^'7q.ocrB-Lnk:pQ6Uf[R]g]I:]1R-"%/iUlcTYTjC(9.7(q?s8.a8*,NW+`7TSRe18qL@eoC9@:rF,2a)i2!`Pn*9k?sQc1P>6c+r/7C2Q\&+d/(_=+RF0$3/9[BcR*lL@VRI.(8#3c#H?WC]I8,qRrC5.j6HmVo&acWW,T%scm9ZWhLg(kdYB8)V([6H"QG_$jEV8Jj[^Jb]5-'js5nM/HP(9)7CF"+bEG,O]hhG1f7[?AO$2iae>/eW&tZefW&iceSa@/8dNN916([[U;MOgPH:tckk?N[E_N8CmR$AnEGi!JF7:&LrZF""=T(IT0Kkd?h3aA2afY/,!PD0iGGg\KEQt"1kakPgq0HkBA7@s-Z>))ZXMG)XGjs&^rLck(@YT2oF1RE-KIKTj`9+\D>?rW`iiS>KWEJ$IW)t1/eG9%[p)VYZfC?!T<$.&@W;;.m[RSM&<@1]r%,,p0kAOmo?n!(NP3s%$c8@"ms3RW]G4,]Tke2&d(iR+_hl,+4,JqL[Dj.3Uahh>:&*nq,kC=:I<#toO!CXpsTCLe2uWmCC!9-6QQfHhYC(GIO1qXC"^__4%]JP.,k047nBoO0bp`a(XG6eE$)X?7>b-[h)WF0$_2gP5SCMf"7n2/-a/KIT*"qi>$4e5/1Fn__YqU(V3)dX7$A,6(PfOEWQg3U7=Gl.I)dsO=>-UZ +endstream +endobj +86 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 85 0 R +>> +endobj +87 0 obj +<< /Length 2061 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gatn*9lo&I&;KZM'g*fJ,6U8^^sPaPeT!dA.SVsp*\rSBd>VqQZBIu]I6j9OQ3g.LMii(;CbBq(=*U(Ig3UJ<4?M)Y<2-O]=,XZdZB/',rlN;#;/9OH[2%9gC3`bVoAm@kVba?5_YWIp\]s(]Q(%@Cr^^LG%"tOgQm_<&35pH=,2hI=r=G0S.iJ2,@[`l+4^re`qAO&eY,f1O:jV9>@CbEX/JU]n`$8Qi?uKf3>CJta6iijo/M(uOpr^'lm3WGXbCg3f#s4=oB^etdinR[J";R?GNJTr%`DYi?t?di)-ACbo#u/6TfY+!-h%qAS"$YEB,eYam3`g&n\V^UCB-Un/?KGN-]bF>XmgK)#_)=7q!;PJk7DhD7.LR2Q6pmE5,[U/?W9g0A!'^<\`lflAF.K(_Mg&o.h>9J!:ViAH=d'hsM@$$C^0HuY`l$4(h^7.M!>Q6pmE9nB&%RfWXt!g*lpMIf@#?;k6Oo6b`^L=?o&XZX_CC^LmSIXV*-[C:N8oXs'o1JRXM3oOh5q&P9JV=buo^T1DbausKYq>SY)bJ,\`?KH>3#^cqMndDC`-@(uUVu1hh,N'jZaY9AiQK7"mT#JtGeH$MMks;F6ahtG/a!9X<2*MuoXF]_r`:TnF&>"m.bB+YJ+@.SK@%X@oNohcAKjG7j1`\p,9Z2'rjl[&9PD2\j`I;FEM?p_KD#'`[4/?KFK#C*,N6CH7&*[F8_?*Y-BU*b/1*FU&nB7L5lQZ+3?JU1I^LXd.Ekh,tX`*L6A\cSgq-[Bskp]3?eJ2_uTM$>*7[iQLH+Yg7/5(rUu2p)CRqk;$ajiN9h`odVO#t4=h.$c3*Qp.G3\OSm&?,D^$!GZ1;*hLD4fK9rj!$PJbPff1PaJKu9H1YqeA7&ag9d\Em(p/BPeN/dK#0*$km<\YrK!jC(6B.JNMULNH^fg"SGdLP9nB[r+tY^N$[;h!AD8P%Dh#S_t1C2;.PB0LA^%*ZgO&Y.j@3m.Ti41maUZ7u*;TUfqAR,G`4(:eeZhisf#S2EZSq+XRg89C"slPE69D_-4IfP7T!1$!lmpW/@&)iUtlT&=epq`*U:m)\oB>-$`V+G(?/I#sm>m%'eK[>'Z9df5(]MSZTI\lR<%S&HR+I;(Eh[0)OTS9%\[W]NGU]_ITY3Po&'&cI9mSAS_@ZZsC1TsXQH*.\4;T"<+^,kNb*+s///F0.I;<]p(,h(>@Ua&"#g]tsZd\d@n"25Xc81YdLq1g>RO0c8Y4Vp>TLP)CNQ1LZr49FXVtb;9XfT)K?P:X/p/TdoP#m9D-J@+PZ<6q5EPiqsINAnaM&%Fo?SC'`"YiUt!5gc"'Cdo[B/L8`?eN]G&H]n)i$sKIkCIs$utYrrZp^lE1~> +endstream +endobj +88 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 87 0 R +>> +endobj +89 0 obj +<< /Length 2581 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gau0F=``U]&q9SY@&YVUSuONiqq/BGZ(7>"G.d@MWDoAmLkI$IGUNQ+NVD%CK+u9/"XoOs[3*Tpa4K-S?_BVI?/.VLr,L]JOo2JM(J/:%8SZ4N@L$=T\P?\IBkfZ:CN4)@/q1D,\3D@F;`VliCr_OIZ(>H\IU\o.VQT;4a[pOXB\Ot^B\.I2"n/Rk`J#Q2YoNO]Xjjhte?`UCZG"&[SkA>#bK&e$]+:NOhc[]s:I"%Cq@_^8ME"*U09,?QM,2]oO7ptR)e=^_G*9G:n5ZTW>Jc4BS5\K47u"hLm3IN`el@Cs3@qYs]ff,,M'eL$:(d@C&OI:'-/ltG9$ogLk51J1p!b'_+C2u_XXFZq06DOUr0,@h=*!sYb@i3cqeRFN99/a[`U$@DjqI^Da(6oL@65M7C+-W4k\d5*e7q(m8>$T5X!$8pD8\<6Ok;%N++=,?-lMd?%idX7]L2eW%&d=`6Lq@\"=$2#T^[HGD];Kfl!g^p/>8De1gP[PRCMn$N0YYh%-;r$%G=G*@KKDfAE_=&e=61RV)MZlg)f-A!7Cn?1[0#d/t'6P9nX`W"?h<5HO?rqs^dZA;Mruj3=M!0/oMq52UiU"7GS!`gc/3>9q2*mCsb2Dk928)=J#-hL'd"HMIF.=cP50Mo/D1Y)T=,"fk`-C)$A`C>;So'AFP)cF2l'N@Tf".>mZ(UnfaWZD"p!CaKl@E`Q7e%qC!qW"HFA6':r4Y'HSIR@Ng(J3-:lK.)*.9Ji9agI<=s5s+7-/(i21LdmF^RfIT9^q=QOX78J:?IfKH%Qei?B5L5@`af-iZ?Ti1R\+/DXBrY][TkZqeu$;="=kK8Ym-%[g1F?+p>;ia[%KR#FK#p.1b4/a@SJF7!DM%l+PrEU-9XEK8;Z#\F@hSBDED"I;JKDb9N(8:`fWrK^8G;]dVa,s'LY6C8>h8&V\RQ9@lST/M9%`Q)'WVL#DhWZeEmZ3_8,,)5/YGO`_1\2H2YnVg#!O,b;s:O&CM:BL5=uiW/bIi(Tfn:)i"Zc[*(;]bYoWQ>/=IU\HH9hLT/9)"UTK$4UDKr?NVZ!RkI4dY-O'X3Dp]^+Q4F0F[*HEp5DT1hCtQKP?(>'.eTNWOB?QFS3rpH/RZ36@s"bbJlhRl@T"3JSUiWXBAg/0dprLdie;"GT`hVf='&H+]NW\uT/F&`BY1OIW^X&bN'[>;6L9]p>-lW&hCB?Nncfr7oBNoq+($o(eg="fbYigKH=pTSX^388FaAcNltUG#E')\4cs(^;Rb4Q85?R:p+"q`-)6nUAA%U^AWO/DFq*eAsE$!LadIkaPh%YPM>#%."6/P''hjFD`[jBN)>'<83CI"UIrbD%IdrO%Mm(&6^4\=2@:WU$KupnD3/Y>eGoJQFi?Om?cPFJY2=ZDufAeK'k"GXhY=Vn$A&A/)RUATTn:4$]",IOX!AL8`KR82iaXU[Of/"VB;hu=H;*ajF.lS')]IT3B[YiFa`"9![At7pLtZJ=,E9RFrH'8Rb1r2oK-F%D.EBaq9k8Bl`5%&rrK?]Jsc~> +endstream +endobj +90 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 89 0 R +>> +endobj +91 0 obj +<< /Length 2648 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gb!;f?*E:s&UjDW&FS!VYZ<&QZK1'ug[/I.+DHuX"@[5NBSj1NPspImm.fJ)ne]WnUfYeFBQEiUD4)T'B?n_kU%J$$jPA#?QUqlDB'(aKh`e`G'M0.d(."N+@2qM619:,&!7K?tZmkDLT:XsR1SMflp@S4eB@#:3QZJ`Y:3:apTY-.X$fLHIC5lsd3$Vf*lec$k$jRoTiJYJDT6o'@LF/FB'IG=_B0r&3W:!AD`+=80?OA73XodAXui<#r$qBRdqOpsZjP(%'CYpO$khrA[cl!unfL,Z=@$##S]I%R2CKEj;N^r(0SPqoEeNEnr<)s/"aM>8,LYC#VueAfX:O&WMQ2I>ETp"lo3+W>T\]0F@,0mhKVA2fWEd_,/Qs/N--',-FO40BRGZcH6pTe>Qg6]8-R3eCKg!j[,gcJTmV"^l>EQ+KZ8BT^p\Is7QR.g\\'!M-SMGfpCGMU\LKAg5'c`Uk^2=JR&0:;%5Ke`E\B#"_i4>ZGo&purKQ]9[-DPO/fQtK=Q+mVUjJg()flr8gA(qBFu+P?PXH6PPr$VS%`\;:0?8N+g8/DRT-_Qrl2'(4F8Z<[BYKmT+3QE7:'Pi=c(%'XC#qXk5M>T;iF^V,'s?joTt0TBo%8)2%;m>4G!J`PT[3jVDm,S#/Khgm(\"!m1o,pq-uVST]Ibje9ZEb]A)/sP/X\d#WNdF@(')NafBnK;eG''`HLS[R\-nPUoV_12*`i>UNVF-ReT1`eQ"MMh+p2c":4SI.CZj/qNN;pf.D&/R`Mq)hF"*Al'T&F)'/-d/A)[,PmELn)2\=Snb=grCH'C*i.Dn@KBE3eO:dKadJR^T$;n9YlADQ@]'Rm=M7I\n&9a8SFe:!oS_b.4d9S+4+@>1jEBr3NafYjP1Y93c$Tc6H=6G?_m.h.nq3\gT@Qql>iu&IA5eDq?56Vah8:^(aF^[r\>$Pn%IiLqXd(_?o0`\*eNi?B0]CA=`F&GbucbV,&8+I]6k8PQ<()js,/aOfd<^0TFu:bb/V9S!""VQL)XK9iO5Q2YIoI_CpVWmIe"0M4`e0;)['0pr`([B)B)[F+?7/!O:E>cCjiW!1V6MQuK9Sh2[=GH^nh,eo>7>\,JLetI#",e:aen-&JE,5TDfm:K`7c'mZ!`1YAdZ^(Z!8MUufjJo,;4-BeW8.?&Fgic1*Ss50oQQ$SP8Q"D+6A7_q@9iXk.s^R.K2:BRp[[;14*^>CnmAYFM&MSAIY>m]_:BD@8Ig^gb*m=]FHhe&&T>Qdiis6PRL=jF#Sh"&\W7h2>]>^#iRa!8_c6&^k[Y0obchPMqXj,il2dqT8HKDC.p7%D)p8FG6\*_]o"%&5>#Qq9A!9gd8llYgr^^S<=oHe`HXY/<4uc@-5,TI@D^&c*N/4-P3us7I;6\O!@5am\C!RMJln0;8`hu;B^_!s/EMfCEIA%2-S+bVMGV"eCKUF?kJH:XK%^SDr_%W+'$2EUN%.BUf+4,65rL$`4S2@q*]D'X!r*;Le.P_E>TfA,B#A(nlGQA=Gn!lFLo']S4MQc#&<#t7)hkRJQUfkJ-*P><\o8\/*F6HUQ4uC]Hl!h`UO\10^KP='tBa4=WDdEVY +endstream +endobj +92 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 91 0 R +>> +endobj +93 0 obj +<< /Length 3053 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GauHN?$"c3&UjDW@/\Ma-KZU';53oa`,_U'O^21_1in'e+:=8cQQgZ?d^&k#6%'S_.6uMPFQttVPX+YGp[%>$"[>d97am8[/cpOLd=:$DmF0[F,k?T5_!=LI*s](&m=]pJk^-BNddn,JEGp$jc\p,uMdL@20C]-_]!r%<"%"Zfs$CYNhqoIbr2:Q\e$\r9LS(mOkZpVsTU1.1Z`UcGo=;EYbETQ#S(q8EZIgY3>ZKpeZ=4PUo,PKEV!DH)3>W'cZ:`3N"S'#4@+oU1YfNSsSr*MQ:l(/[P+t0;*Ec)MES.W9OF1f-UH-Xq]Kfcg.r`e0gT_AYm>HDO/(q`Oi5*HDXEehB;A&X/[]U':3jQ10<(4M&.c'"mknLWo)31pt:&MXCR&$34R7j\@oSWMC2[o3%F>M,]VP1>I%G?p&iM1De^L.+K8T^RGb(]7:&,8F4eD=,8N7@-f^M#ej;+)6I`WH8^?!hDl![T=%S&nHn_c0DV-UpDbZ.iT<*cF+4`@/_A]hRa9J.T^p8k&LZal[7!Cj$E-.<9S#]IWSQjN*9TnOju^&eeO(=-0-?O[a`6T)_Fj9Hr)DP9^87kWfaHXV=2Qn%]ch%HpNI-NBORN,E\bQ>LkInJub&E`]H"'Fc>GZN//En[>R@:n][,+6,dPnu-6+WI62WnkQlO&)T6RH>hM&BHCh-;KG6ZZuASg6U\es`fDil4G@]Ck04@Z[%b29-V?^$XtrqHCSr9q^\5!jq]qb/"9$&auZ18(Ta6Dql9KaR[rI(DtjP3rG%B-td-lSD?f:kqp-Iu9(:uDk])LQJLPj;92@G,*Y;no=#1:ElA[$n_X243:_-'3WhKeD%,Sal:ti;>FD*6;Ra0'>ArpMlK[\6'`i#4$4'l+C7u_$.qpcQBtg3F^*X^)T>*Mt,i(\bJ:7*'_#D1@,lHrtnPHh*"J@o>??=iFFtj_5$H?5fpX[olrO3S)E`ok4u.812pA:+,C3FpHA!@gGfLe(YI*S_QrB`flmIn`9$"qe.a=T>$@-^3nE'++>9gNi,)^l2#!SSW"W+"#oGEV#=D5SX''1Bmc[!E+7/jp-gJ+?ieJUcs64(nAEf(YeZ6nH'A6M,iO64ZtB2UW9Ef:K-k2mkWb,0Z-&j)9erU:OEPgkqhpQXWBI"65D``]5?'/@-Ag.na5)`oe%XFMXOKq>lgsR3]b;:*\LtAHV3g*^VgG9u0X>ip6U`5L)FEoc9"I.if9ItI\o&l&FM+rD!/?Ko.q.Irc[fbH-rP'q\cRkTE'PkuM1#nMt',N3b/Bc6@m0HnZULDN;BgleQ:43',g>-M8m&`@,R^qu\'UT5j$#7?./CB`ufU=Aun$YK9BK4V8,VTi+a]E&iF]QRg=:([Ff&AN5aK+-37tE-II[\Xf#0]AQHi+M1dhQYKN?Q2])P]Bi"$!@4!OUCg1=V_Ubb"4486"..+iLeSG**lpPhkZ'4dg.oSH1S*D3ei9_[LZ7/`VkM\3f2n?Nc+OFB-,QPk0mU>Zg8:fROY&Fmi9D=scg]l_5^s=>5lfb$j0bb8,5LDW"1n3Ma;G+`>i?h_RPKBe%a2Xd]B;*p>2fnWG0gVB,b+^m'jfK8Z@FH8'&8@>)iaMI?#l>o2XHpCSMa>$KBDXE83%fX[ceGIl.T&"l`0e#"?;Qp%m)Fs@JK"#q5%potI!@+th.C;VY\g?0gFT[#XE$Q@N6\H&hF:T2^,Pbk--aQ@$R'j7*Ki096JF@'8B]nLFbPUU*DZ?$Ds;[<+Kl_;bm"hU=Xf4_;FlWdCAVUUH1+E52)0NFZS:-$eRhf?I)$R+?N&K^l,'IO=k65h9Ph,a]ZXs$I?%$<^0pe>XJ-nDV![PcCT&n*ljJdK=\RESrqW>!'0!9s*CZd0N@KSNN>9GYod1u0!7G*Y?&)+ZrA)C,"fYT$L]bXCQK0j0<4r[i:]<;s*L3j+I]DWnAI*N`W7ss*(`]AnjgT9WeZ#?qVj;P-@Z)>r2$_8^5oing%FlTY`B3=cM398jfE!PBbM#C:CZSO$&@c:6fS='aW9h?%T.+d8,VYn__%dqL6L>SaB;B>BoUiV*8E0SP=M<)M&,KTkMKc8I"b*@p=)N#*=0A`$k3lZCo/hS2d&`%e,jOUnqu'j1ms/[4^$XhSe:+ahY`#Clg!nVW]LB/4V(h926.0nU'RF3KT=hoT-)!Qe`SMa-UL(6mI+=&?2_Y&V#SZh*b)$'V+aE-h~> +endstream +endobj +94 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 93 0 R +>> +endobj +95 0 obj +<< /Length 840 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gasan9iKe#&A@sBBQA\BU.G9JgJ`Vf?"c"4V@6CLE#dQY9O\rDY2S9i-8A[rbhsJ8B5:RehsP5T,@_K,NsNl=\69uL5:HC-c7bmDmJU@LK]a(WC!/PEEN,X8Et,!XS3X`r51+:tEENT=Um49!LUZ\@Hi)4.n^kZ`?/NT%kPAH5g3+E"CQK>tQb)1<^8Nk\`h+[duS2C([?K>rf3-,@_69[%VNZ+kDg2F2Qi+*(&f0+46kYigb"97!C"^E6#SiS5S4O22WT%mb)C^ol1Jj?:OfBaoI#(#7kuij88[5AIB7&X/k-3bRH@tSsKCrmrC(Q%C%8Ng0&=s<7Df:uoCZ6t&^+F4ID0\(R\XCarB"d?;3TM7"dQ#=N@W*$_jrC#c>P3g3q,ONrT"6SrfCR8M6*?MZR]F5C(X_r`dr<2X%Fn[*`>J1V`Cj5H[44`^ei">YTHE<2-#=e9rV>~> +endstream +endobj +96 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595 842 ] +/Resources 3 0 R +/Contents 95 0 R +>> +endobj +97 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F1 +/BaseFont /Helvetica +/Encoding /WinAnsiEncoding >> +endobj +98 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F5 +/BaseFont /Times-Roman +/Encoding /WinAnsiEncoding >> +endobj +99 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F3 +/BaseFont /Helvetica-Bold +/Encoding /WinAnsiEncoding >> +endobj +100 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F7 +/BaseFont /Times-Bold +/Encoding /WinAnsiEncoding >> +endobj +1 0 obj +<< /Type /Pages +/Count 23 +/Kids [6 0 R 8 0 R 10 0 R 12 0 R 14 0 R 19 0 R 22 0 R 30 0 R 36 0 R 45 0 R 49 0 R 54 0 R 58 0 R 63 0 R 65 0 R 73 0 R 82 0 R 86 0 R 88 0 R 90 0 R 92 0 R 94 0 R 96 0 R ] >> +endobj +2 0 obj +<< /Type /Catalog +/Pages 1 0 R + >> +endobj +3 0 obj +<< +/Font << /F1 97 0 R /F5 98 0 R /F3 99 0 R /F7 100 0 R >> +/ProcSet [ /PDF /ImageC /Text ] /XObject <> +>> +endobj +xref +0 101 +0000000000 65535 f +0000648387 00000 n +0000648599 00000 n +0000648649 00000 n +0000000015 00000 n +0000000071 00000 n +0000000274 00000 n +0000000380 00000 n +0000001978 00000 n +0000002084 00000 n +0000003058 00000 n +0000003165 00000 n +0000003424 00000 n +0000003532 00000 n +0000005537 00000 n +0000005660 00000 n +0000005687 00000 n +0000005862 00000 n +0000006847 00000 n +0000121846 00000 n +0000121954 00000 n +0000124245 00000 n +0000218851 00000 n +0000218974 00000 n +0000219022 00000 n +0000219203 00000 n +0000219379 00000 n +0000219555 00000 n +0000219744 00000 n +0000221694 00000 n +0000294242 00000 n +0000294365 00000 n +0000294392 00000 n +0000294529 00000 n +0000294597 00000 n +0000294669 00000 n +0000297217 00000 n +0000297340 00000 n +0000297388 00000 n +0000297569 00000 n +0000297748 00000 n +0000297919 00000 n +0000298100 00000 n +0000299115 00000 n +0000383556 00000 n +0000468482 00000 n +0000468605 00000 n +0000468632 00000 n +0000468819 00000 n +0000470245 00000 n +0000470368 00000 n +0000470395 00000 n +0000470572 00000 n +0000472235 00000 n +0000618123 00000 n +0000618246 00000 n +0000618273 00000 n +0000618517 00000 n +0000620920 00000 n +0000621043 00000 n +0000621077 00000 n +0000621259 00000 n +0000621427 00000 n +0000623110 00000 n +0000623218 00000 n +0000625301 00000 n +0000625424 00000 n +0000625479 00000 n +0000625656 00000 n +0000625849 00000 n +0000626040 00000 n +0000626232 00000 n +0000626434 00000 n +0000628212 00000 n +0000628335 00000 n +0000628397 00000 n +0000628590 00000 n +0000628784 00000 n +0000628975 00000 n +0000629170 00000 n +0000629363 00000 n +0000629559 00000 n +0000632217 00000 n +0000632340 00000 n +0000632367 00000 n +0000632540 00000 n +0000635651 00000 n +0000635759 00000 n +0000637913 00000 n +0000638021 00000 n +0000640695 00000 n +0000640803 00000 n +0000643544 00000 n +0000643652 00000 n +0000646798 00000 n +0000646906 00000 n +0000647838 00000 n +0000647946 00000 n +0000648054 00000 n +0000648164 00000 n +0000648277 00000 n +trailer +<< +/Size 101 +/Root 2 0 R +/Info 4 0 R +>> +startxref +648855 +%%EOF diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/font.xml b/extensions/fablabchemnitz/dxf2papercraft/kabeja/font.xml new file mode 100644 index 00000000..37977be4 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/font.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.exe b/extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.exe new file mode 100644 index 00000000..2508e781 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.exe differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.sh b/extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.sh new file mode 100755 index 00000000..e0e1fdc6 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +JAVA_MEM=256m + + + +java -Xmx$JAVA_MEM -jar launcher.jar $@ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/launcher.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/launcher.jar new file mode 100644 index 00000000..72685e74 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/launcher.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.ant-contib b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.ant-contib new file mode 100644 index 00000000..4d8c2fb7 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.ant-contib @@ -0,0 +1,47 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2003 Ant-Contrib project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Ant-Contrib project (http://sourceforge.net/projects/ant-contrib)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The name Ant-Contrib must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact + * ant-contrib-developers@lists.sourceforge.net. + * + * 5. Products derived from this software may not be called "Ant-Contrib" + * nor may "Ant-Contrib" appear in their names without prior written + * permission of the Ant-Contrib project. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE ANT-CONTRIB PROJECT OR ITS + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + */ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.batik b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.batik new file mode 100644 index 00000000..3e4e3d00 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.batik @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) 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. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. \ No newline at end of file diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.js.txt b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.js.txt new file mode 100644 index 00000000..a5549298 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.js.txt @@ -0,0 +1,584 @@ + +This distribution includes the Mozilla Rhino 1.5 release 4.1 binary +distribution without code modifications. +You can also get that distribution from the following URL: +ftp://ftp.mozilla.org/pub/js/ +Source code for Rhino is available on Mozilla web site: +http://www.mozilla.org/rhino +Rhino is licensed under the NPL (Netscape Public License) which +is duplicated below. + +============================================================================== + +AMENDMENTS + + The Netscape Public License Version 1.1 ("NPL") consists of the + Mozilla Public License Version 1.1 with the following Amendments, + including Exhibit A-Netscape Public License. Files identified with + "Exhibit A-Netscape Public License" are governed by the Netscape + Public License Version 1.1. + + Additional Terms applicable to the Netscape Public License. + I. Effect. + These additional terms described in this Netscape Public + License -- Amendments shall apply to the Mozilla Communicator + client code and to all Covered Code under this License. + + II. "Netscape's Branded Code" means Covered Code that Netscape + distributes and/or permits others to distribute under one or more + trademark(s) which are controlled by Netscape but which are not + licensed for use under this License. + + III. Netscape and logo. + This License does not grant any rights to use the trademarks + "Netscape", the "Netscape N and horizon" logo or the "Netscape + lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", + "Smart Browsing" even if such marks are included in the Original + Code or Modifications. + + IV. Inability to Comply Due to Contractual Obligation. + Prior to licensing the Original Code under this License, Netscape + has licensed third party code for use in Netscape's Branded Code. + To the extent that Netscape is limited contractually from making + such third party code available under this License, Netscape may + choose to reintegrate such code into Covered Code without being + required to distribute such code in Source Code form, even if + such code would otherwise be considered "Modifications" under + this License. + + V. Use of Modifications and Covered Code by Initial Developer. + V.1. In General. + The obligations of Section 3 apply to Netscape, except to + the extent specified in this Amendment, Section V.2 and V.3. + + V.2. Other Products. + Netscape may include Covered Code in products other than the + Netscape's Branded Code which are released by Netscape + during the two (2) years following the release date of the + Original Code, without such additional products becoming + subject to the terms of this License, and may license such + additional products on different terms from those contained + in this License. + + V.3. Alternative Licensing. + Netscape may license the Source Code of Netscape's Branded + Code, including Modifications incorporated therein, without + such Netscape Branded Code becoming subject to the terms of + this License, and may license such Netscape Branded Code on + different terms from those contained in this License. + + VI. Litigation. + Notwithstanding the limitations of Section 11 above, the + provisions regarding litigation in Section 11(a), (b) and (c) of + the License shall apply to all disputes relating to this License. + + EXHIBIT A-Netscape Public License. + + "The contents of this file are subject to the Netscape Public + License Version 1.1 (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.mozilla.org/NPL/ + + Software distributed under the License is distributed on an "AS + IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + implied. See the License for the specific language governing + rights and limitations under the License. + + The Original Code is Mozilla Communicator client code, released + March 31, 1998. + + The Initial Developer of the Original Code is Netscape + Communications Corporation. Portions created by Netscape are + Copyright (C) 1998-1999 Netscape Communications Corporation. All + Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the + terms of the _____ license (the "[___] License"), in which case + the provisions of [______] License are applicable instead of + those above. If you wish to allow use of your version of this + file only under the terms of the [____] License and not to allow + others to use your version of this file under the NPL, indicate + your decision by deleting the provisions above and replace them + with the notice and other provisions required by the [___] + License. If you do not delete the provisions above, a recipient + may use your version of this file under either the NPL or the + [___] License." + + ---------------------------------------------------------------------- + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (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.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + + +============================================================================== + + diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.miethxml-toolkit.txt b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.miethxml-toolkit.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.miethxml-toolkit.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) 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. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.pdf-transcoder.txt b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.pdf-transcoder.txt new file mode 100644 index 00000000..3e4e3d00 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.pdf-transcoder.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) 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. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. \ No newline at end of file diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.txt b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) 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. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/batik-all.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/batik-all.jar new file mode 100644 index 00000000..dd9588be Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/batik-all.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/js.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/js.jar new file mode 100644 index 00000000..2b926505 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/js.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-0.4.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-0.4.jar new file mode 100644 index 00000000..49ce629f Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-0.4.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-svg-0.4.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-svg-0.4.jar new file mode 100644 index 00000000..bc6f4449 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-svg-0.4.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-xslt.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-xslt.jar new file mode 100644 index 00000000..c9ba6556 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-xslt.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-toolkit.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-toolkit.jar new file mode 100644 index 00000000..337ad869 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-toolkit.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-ui.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-ui.jar new file mode 100644 index 00000000..63635306 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-ui.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/nothing b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/nothing new file mode 100644 index 00000000..e69de29b diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/pdf-transcoder.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/pdf-transcoder.jar new file mode 100644 index 00000000..1a8666eb Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/pdf-transcoder.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis-ext.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis-ext.jar new file mode 100644 index 00000000..a7869d68 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis-ext.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis.jar b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis.jar new file mode 100644 index 00000000..d42c0ea6 Binary files /dev/null and b/extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis.jar differ diff --git a/extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/draft1.dxf b/extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/draft1.dxf new file mode 100644 index 00000000..3e16efcf --- /dev/null +++ b/extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/draft1.dxf @@ -0,0 +1,255532 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1009 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMAX + 10 +42050.0 + 20 +29700.0 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +42050.0 + 20 +29700.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$DRAGMODE + 70 + 2 + 9 +$LTSCALE + 40 +1000.0 + 9 +$OSMODE + 70 + 0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +175.0 + 9 +$TRACEWID + 40 +1.0 + 9 +$TEXTSTYLE + 7 +STANDART + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +BYLAYER + 9 +$CECOLOR + 62 + 256 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +1.0 + 9 +$DIMEXO + 40 +1650.0 + 9 +$DIMDLI + 40 +0.0 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +150.0 + 9 +$DIMEXE + 40 +150.0 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +175.0 + 9 +$DIMCEN + 40 +12.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 1 + 9 +$DIMSE2 + 70 + 1 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 +MASSHILFSLINIE + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 0 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 2 + 9 +$DIMALTF + 40 +25.4 + 9 +$DIMLFAC + 40 +0.0001 + 9 +$DIMTOFL + 70 + 0 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +ENTWURFSBEMASSUNG + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 2 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +0.0 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 0 + 9 +$MENU + 1 +acad + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$BLIPMODE + 70 + 1 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2450793.70898 + 9 +$TDUPDATE + 40 +2450818.501965 + 9 +$TDINDWG + 40 +1.433361 + 9 +$TDUSRTIMER + 40 +1.433361 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$COORDS + 70 + 2 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 6 + 9 +$SPLINESEGS + 70 + 8 + 9 +$ATTDIA + 70 + 0 + 9 +$ATTREQ + 70 + 1 + 9 +$HANDLING + 70 + 1 + 9 +$HANDSEED + 5 +3861 + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSNAME + 2 +WELT + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 16 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +1.000000E+020 + 20 +1.000000E+020 + 30 +1.000000E+020 + 9 +$PEXTMAX + 10 +-1.000000E+020 + 20 +-1.000000E+020 + 30 +-1.000000E+020 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 0 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 70 + 3 + 0 +VPORT + 2 +*ACTIVE + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +23706.449376 + 22 +15278.084191 + 13 +0.0 + 23 +0.0 + 14 +5.0 + 24 +5.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +30883.554814 + 41 +1.551664 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 1 + 75 + 1 + 76 + 0 + 77 + 0 + 78 + 2 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 70 + 25 + 0 +LTYPE + 2 +CONTINUOUS + 70 + 0 + 3 +Solid Line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 2 +RAND + 70 + 0 + 3 +__ __ . __ __ . __ __ . __ __ . __ __ . __ __ . + 72 + 65 + 73 + 6 + 40 +1.75 + 49 +0.5 + 49 +-0.25 + 49 +0.5 + 49 +-0.25 + 49 +0.0 + 49 +-0.25 + 0 +LTYPE + 2 +RAND2 + 70 + 0 + 3 +__.__.__.__.__.__.__.__.__.__.__.__.__.__.__.__ + 72 + 65 + 73 + 6 + 40 +0.875 + 49 +0.25 + 49 +-0.125 + 49 +0.25 + 49 +-0.125 + 49 +0.0 + 49 +-0.125 + 0 +LTYPE + 2 +RANDX2 + 70 + 0 + 3 +____ ____ . ____ ____ . ____ ____ . __ + 72 + 65 + 73 + 6 + 40 +3.5 + 49 +1.0 + 49 +-0.5 + 49 +1.0 + 49 +-0.5 + 49 +0.0 + 49 +-0.5 + 0 +LTYPE + 2 +MITTE + 70 + 0 + 3 +____ _ ____ _ ____ _ ____ _ ____ _ ____ _ ____ + 72 + 65 + 73 + 4 + 40 +2.0 + 49 +1.25 + 49 +-0.25 + 49 +0.25 + 49 +-0.25 + 0 +LTYPE + 2 +MITTE2 + 70 + 0 + 3 +___ _ ___ _ ___ _ ___ _ ___ _ ___ _ ___ _ ___ _ + 72 + 65 + 73 + 4 + 40 +1.125 + 49 +0.75 + 49 +-0.125 + 49 +0.125 + 49 +-0.125 + 0 +LTYPE + 2 +MITTEX2 + 70 + 0 + 3 +________ __ ________ __ ________ __ _____ + 72 + 65 + 73 + 4 + 40 +4.0 + 49 +2.5 + 49 +-0.5 + 49 +0.5 + 49 +-0.5 + 0 +LTYPE + 2 +STRICHPUNKT + 70 + 0 + 3 +__ . __ . __ . __ . __ . __ . __ . __ . __ . __ + 72 + 65 + 73 + 4 + 40 +1.0 + 49 +0.5 + 49 +-0.25 + 49 +0.0 + 49 +-0.25 + 0 +LTYPE + 2 +STRICHPUNKT2 + 70 + 0 + 3 +_._._._._._._._._._._._._._._._._._._._._._._._ + 72 + 65 + 73 + 4 + 40 +0.5 + 49 +0.25 + 49 +-0.125 + 49 +0.0 + 49 +-0.125 + 0 +LTYPE + 2 +STRICHPUNKTX2 + 70 + 0 + 3 +____ . ____ . ____ . ____ . ____ . __ + 72 + 65 + 73 + 4 + 40 +2.0 + 49 +1.0 + 49 +-0.5 + 49 +0.0 + 49 +-0.5 + 0 +LTYPE + 2 +GESTRICHELT + 70 + 0 + 3 +__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ + 72 + 65 + 73 + 2 + 40 +0.75 + 49 +0.5 + 49 +-0.25 + 0 +LTYPE + 2 +GESTRICHELT2 + 70 + 0 + 3 +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 72 + 65 + 73 + 2 + 40 +0.375 + 49 +0.25 + 49 +-0.125 + 0 +LTYPE + 2 +GESTRICHELTX2 + 70 + 0 + 3 +____ ____ ____ ____ ____ ____ ____ ____ + 72 + 65 + 73 + 2 + 40 +1.5 + 49 +1.0 + 49 +-0.5 + 0 +LTYPE + 2 +GETRENNT + 70 + 0 + 3 +____ . . ____ . . ____ . . ____ . . ____ . . __ + 72 + 65 + 73 + 6 + 40 +1.25 + 49 +0.5 + 49 +-0.25 + 49 +0.0 + 49 +-0.25 + 49 +0.0 + 49 +-0.25 + 0 +LTYPE + 2 +GETRENNT2 + 70 + 0 + 3 +__..__..__..__..__..__..__..__..__..__..__..__. + 72 + 65 + 73 + 6 + 40 +0.625 + 49 +0.25 + 49 +-0.125 + 49 +0.0 + 49 +-0.125 + 49 +0.0 + 49 +-0.125 + 0 +LTYPE + 2 +GETRENNTX2 + 70 + 0 + 3 +________ . . ________ . . ________ . . + 72 + 65 + 73 + 6 + 40 +2.5 + 49 +1.0 + 49 +-0.5 + 49 +0.0 + 49 +-0.5 + 49 +0.0 + 49 +-0.5 + 0 +LTYPE + 2 +PUNKT + 70 + 0 + 3 +. . . . . . . . . . . . . . . . . . . . . . . . + 72 + 65 + 73 + 2 + 40 +0.25 + 49 +0.0 + 49 +-0.25 + 0 +LTYPE + 2 +PUNKT2 + 70 + 0 + 3 +............................................... + 72 + 65 + 73 + 2 + 40 +0.125 + 49 +0.0 + 49 +-0.125 + 0 +LTYPE + 2 +PUNKTX2 + 70 + 0 + 3 +. . . . . . . . . . . . . . . . + 72 + 65 + 73 + 2 + 40 +0.5 + 49 +0.0 + 49 +-0.5 + 0 +LTYPE + 2 +VERDECKT + 70 + 0 + 3 +__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ + 72 + 65 + 73 + 2 + 40 +0.375 + 49 +0.25 + 49 +-0.125 + 0 +LTYPE + 2 +VERDECKT2 + 70 + 0 + 3 +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 72 + 65 + 73 + 2 + 40 +0.1875 + 49 +0.125 + 49 +-0.0625 + 0 +LTYPE + 2 +VERDECKTX2 + 70 + 0 + 3 +____ ____ ____ ____ ____ ____ ____ ____ ____ __ + 72 + 65 + 73 + 2 + 40 +0.75 + 49 +0.5 + 49 +-0.25 + 0 +LTYPE + 2 +PHANTOM + 70 + 0 + 3 +______ __ __ ______ __ __ ______ __ __ + 72 + 65 + 73 + 6 + 40 +2.5 + 49 +1.25 + 49 +-0.25 + 49 +0.25 + 49 +-0.25 + 49 +0.25 + 49 +-0.25 + 0 +LTYPE + 2 +PHANTOM2 + 70 + 0 + 3 +___ _ _ ___ _ _ ___ _ _ ___ _ _ ___ _ _ ___ _ _ + 72 + 65 + 73 + 6 + 40 +1.25 + 49 +0.625 + 49 +-0.125 + 49 +0.125 + 49 +-0.125 + 49 +0.125 + 49 +-0.125 + 0 +LTYPE + 2 +PHANTOMX2 + 70 + 0 + 3 +____________ ____ ____ ____________ + 72 + 65 + 73 + 6 + 40 +5.0 + 49 +2.5 + 49 +-0.5 + 49 +0.5 + 49 +-0.5 + 49 +0.5 + 49 +-0.5 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 70 + 21 + 0 +LAYER + 2 +0 + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 2 +MAUERWERK + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 2 +TRENNWAENDE + 70 + 0 + 62 + 5 + 6 +CONTINUOUS + 0 +LAYER + 2 +FENSTER + 70 + 0 + 62 + 8 + 6 +CONTINUOUS + 0 +LAYER + 2 +VORSATZSCHALLE + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 2 +DAEMMUNG + 70 + 0 + 62 + 6 + 6 +CONTINUOUS + 0 +LAYER + 2 +BALKONE + 70 + 0 + 62 + 1 + 6 +CONTINUOUS + 0 +LAYER + 2 +SCHORNSTEINE + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 2 +SCHRAFFUR-MAUER + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 2 +SCHRAFFUR-VORMAUER + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 2 +SCHRAFFUR-TRENNWAND + 70 + 0 + 62 + 5 + 6 +CONTINUOUS + 0 +LAYER + 2 +SCHRAFFUR-DAEMMUNG + 70 + 0 + 62 + 6 + 6 +CONTINUOUS + 0 +LAYER + 2 +BEMASSUNG + 70 + 0 + 62 + 3 + 6 +CONTINUOUS + 0 +LAYER + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 2 +TREPPE + 70 + 0 + 62 + 3 + 6 +CONTINUOUS + 0 +LAYER + 2 +SCHNITTLINIEN + 70 + 0 + 62 + 1 + 6 +STRICHPUNKT + 0 +LAYER + 2 +LEGENDE-35 + 70 + 0 + 62 + 2 + 6 +CONTINUOUS + 0 +LAYER + 2 +SPANNRICHTUNG + 70 + 0 + 62 + 2 + 6 +CONTINUOUS + 0 +LAYER + 2 +LEGENDE-70 + 70 + 0 + 62 + 1 + 6 +CONTINUOUS + 0 +LAYER + 2 +DETAILS + 70 + 0 + 62 + 1 + 6 +GESTRICHELT2 + 0 +LAYER + 2 +LEGENDE + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 70 + 2 + 0 +STYLE + 2 +STANDARD + 70 + 0 + 40 +175.0 + 41 +0.75 + 50 +0.0 + 71 + 0 + 42 +175.0 + 3 +C:\ACADWIN\FONTS\TXT.SHX + 4 + + 0 +STYLE + 2 +STANDART + 70 + 0 + 40 +175.0 + 41 +0.75 + 50 +0.0 + 71 + 0 + 42 +175.0 + 3 +C:\ACADWIN\FONTS\TXT.SHX + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 70 + 2 + 0 +UCS + 2 +WELT + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +1.0 + 21 +0.0 + 31 +0.0 + 12 +0.0 + 22 +1.0 + 32 +0.0 + 0 +UCS + 2 +MAUER + 70 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 11 +1.0 + 21 +0.0 + 31 +0.0 + 12 +0.0 + 22 +1.0 + 32 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 70 + 1 + 0 +APPID + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 70 + 2 + 0 +DIMSTYLE + 2 +ENTWURFSBEMASSUNG + 70 + 0 + 3 + + 4 + + 5 +MASSHILFSLINIE + 6 + + 7 + + 40 +1.0 + 41 +1.0 + 42 +1650.0 + 43 +0.0 + 44 +150.0 + 45 +0.0 + 46 +150.0 + 47 +0.0 + 48 +0.0 +140 +175.0 +141 +12.5 +142 +0.0 +143 +25.4 +144 +0.0001 +145 +0.0 +146 +1.0 +147 +0.0 + 71 + 0 + 72 + 0 + 73 + 0 + 74 + 0 + 75 + 1 + 76 + 1 + 77 + 1 + 78 + 8 +170 + 0 +171 + 2 +172 + 0 +173 + 0 +174 + 1 +175 + 0 +176 + 0 +177 + 0 +178 + 0 + 0 +DIMSTYLE + 2 +ENTWURF2 + 70 + 0 + 3 + + 4 + + 5 +MASSHILFSLINIE + 6 + + 7 + + 40 +1.0 + 41 +0.0 + 42 +2150.0 + 43 +0.0 + 44 +150.0 + 45 +0.0 + 46 +150.0 + 47 +0.0 + 48 +0.0 +140 +175.0 +141 +12.5 +142 +75.0 +143 +25.4 +144 +0.0001 +145 +0.0 +146 +1.0 +147 +0.0 + 71 + 0 + 72 + 0 + 73 + 0 + 74 + 0 + 75 + 0 + 76 + 0 + 77 + 1 + 78 + 0 +170 + 0 +171 + 2 +172 + 0 +173 + 0 +174 + 1 +175 + 0 +176 + 0 +177 + 0 +178 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 8 +0 + 2 +$MODEL_SPACE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +$MODEL_SPACE + 1 + + 0 +ENDBLK + 5 +134 + 8 +0 + 0 +BLOCK + 67 + 1 + 8 +0 + 2 +$PAPER_SPACE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +$PAPER_SPACE + 1 + + 0 +ENDBLK + 5 +132 + 67 + 1 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X0 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X0 + 1 + + 0 +LINE + 5 +138 + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +20892.766953 + 30 +0.0 + 11 +15240.0 + 21 +21257.766953 + 31 +0.0 + 0 +LINE + 5 +139 + 8 +0 + 62 + 0 + 10 +15732.233047 + 20 +21750.0 + 30 +0.0 + 11 +15865.0 + 21 +21882.766953 + 31 +0.0 + 0 +LINE + 5 +13A + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +21246.320344 + 30 +0.0 + 11 +15240.0 + 21 +21611.320344 + 31 +0.0 + 0 +LINE + 5 +13B + 8 +0 + 62 + 0 + 10 +15378.679656 + 20 +21750.0 + 30 +0.0 + 11 +15743.679656 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +13C + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +21599.873734 + 30 +0.0 + 11 +15390.126266 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +13D + 8 +0 + 62 + 0 + 10 +14671.572875 + 20 +21750.0 + 30 +0.0 + 11 +15036.572875 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +13E + 8 +0 + 62 + 0 + 10 +14318.019485 + 20 +21750.0 + 30 +0.0 + 11 +14683.019485 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +13F + 8 +0 + 62 + 0 + 10 +13964.466094 + 20 +21750.0 + 30 +0.0 + 11 +14329.466094 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +140 + 8 +0 + 62 + 0 + 10 +13610.912703 + 20 +21750.0 + 30 +0.0 + 11 +13975.912703 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +141 + 8 +0 + 62 + 0 + 10 +13257.359313 + 20 +21750.0 + 30 +0.0 + 11 +13622.359313 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +142 + 8 +0 + 62 + 0 + 10 +12903.805922 + 20 +21750.0 + 30 +0.0 + 11 +13268.805922 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +143 + 8 +0 + 62 + 0 + 10 +12550.252532 + 20 +21750.0 + 30 +0.0 + 11 +12915.252532 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +144 + 8 +0 + 62 + 0 + 10 +12196.699141 + 20 +21750.0 + 30 +0.0 + 11 +12561.699141 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +145 + 8 +0 + 62 + 0 + 10 +11843.145751 + 20 +21750.0 + 30 +0.0 + 11 +12208.145751 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +146 + 8 +0 + 62 + 0 + 10 +11489.59236 + 20 +21750.0 + 30 +0.0 + 11 +11854.59236 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +147 + 8 +0 + 62 + 0 + 10 +11250.0 + 20 +21863.961031 + 30 +0.0 + 11 +11501.038969 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +148 + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +20539.213562 + 30 +0.0 + 11 +15240.0 + 21 +20904.213562 + 31 +0.0 + 0 +LINE + 5 +149 + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +20185.660172 + 30 +0.0 + 11 +15240.0 + 21 +20550.660172 + 31 +0.0 + 0 +LINE + 5 +14A + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +19832.106781 + 30 +0.0 + 11 +15240.0 + 21 +20197.106781 + 31 +0.0 + 0 +LINE + 5 +14B + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +19478.553391 + 30 +0.0 + 11 +15240.0 + 21 +19843.553391 + 31 +0.0 + 0 +LINE + 5 +14C + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +19125.0 + 30 +0.0 + 11 +15240.0 + 21 +19490.0 + 31 +0.0 + 0 +LINE + 5 +14D + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +18771.446609 + 30 +0.0 + 11 +15240.0 + 21 +19136.446609 + 31 +0.0 + 0 +LINE + 5 +14E + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +18417.893219 + 30 +0.0 + 11 +15240.0 + 21 +18782.893219 + 31 +0.0 + 0 +LINE + 5 +14F + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +18064.339828 + 30 +0.0 + 11 +15240.0 + 21 +18429.339828 + 31 +0.0 + 0 +LINE + 5 +150 + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +17710.786438 + 30 +0.0 + 11 +15240.0 + 21 +18075.786438 + 31 +0.0 + 0 +LINE + 5 +151 + 8 +0 + 62 + 0 + 10 +14875.0 + 20 +17357.233047 + 30 +0.0 + 11 +15240.0 + 21 +17722.233047 + 31 +0.0 + 0 +LINE + 5 +152 + 8 +0 + 62 + 0 + 10 +15121.320344 + 20 +17250.0 + 30 +0.0 + 11 +15240.0 + 21 +17368.679656 + 31 +0.0 + 0 +ENDBLK + 5 +153 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X1 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X1 + 1 + + 0 +LINE + 5 +155 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +19856.601718 + 30 +0.0 + 11 +5365.0 + 21 +20221.601718 + 31 +0.0 + 0 +LINE + 5 +156 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +20210.155108 + 30 +0.0 + 11 +5365.0 + 21 +20575.155108 + 31 +0.0 + 0 +LINE + 5 +157 + 8 +0 + 62 + 0 + 10 +6539.844892 + 20 +21750.0 + 30 +0.0 + 11 +6740.0 + 21 +21950.155108 + 31 +0.0 + 0 +LINE + 5 +158 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +20563.708499 + 30 +0.0 + 11 +5365.0 + 21 +20928.708499 + 31 +0.0 + 0 +LINE + 5 +159 + 8 +0 + 62 + 0 + 10 +6186.291501 + 20 +21750.0 + 30 +0.0 + 11 +6551.291501 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +15A + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +20917.26189 + 30 +0.0 + 11 +5365.0 + 21 +21282.26189 + 31 +0.0 + 0 +LINE + 5 +15B + 8 +0 + 62 + 0 + 10 +5832.73811 + 20 +21750.0 + 30 +0.0 + 11 +6197.73811 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +15C + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +21270.81528 + 30 +0.0 + 11 +5365.0 + 21 +21635.81528 + 31 +0.0 + 0 +LINE + 5 +15D + 8 +0 + 62 + 0 + 10 +5479.18472 + 20 +21750.0 + 30 +0.0 + 11 +5844.18472 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +15E + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +21624.368671 + 30 +0.0 + 11 +5490.631329 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +15F + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +21977.922061 + 30 +0.0 + 11 +5137.077939 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +160 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +19503.048327 + 30 +0.0 + 11 +5365.0 + 21 +19868.048327 + 31 +0.0 + 0 +LINE + 5 +161 + 8 +0 + 62 + 0 + 10 +5225.505063 + 20 +19375.0 + 30 +0.0 + 11 +5365.0 + 21 +19514.494937 + 31 +0.0 + 0 +ENDBLK + 5 +162 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X2 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X2 + 1 + + 0 +LINE + 5 +164 + 8 +0 + 62 + 0 + 10 +9721.825407 + 20 +21750.0 + 30 +0.0 + 11 +10086.825407 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +165 + 8 +0 + 62 + 0 + 10 +9368.272016 + 20 +21750.0 + 30 +0.0 + 11 +9733.272016 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +166 + 8 +0 + 62 + 0 + 10 +9014.718626 + 20 +21750.0 + 30 +0.0 + 11 +9379.718626 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +167 + 8 +0 + 62 + 0 + 10 +8661.165235 + 20 +21750.0 + 30 +0.0 + 11 +9026.165235 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +168 + 8 +0 + 62 + 0 + 10 +8500.0 + 20 +21942.388155 + 30 +0.0 + 11 +8672.611845 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +169 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +21424.621202 + 30 +0.0 + 11 +10240.0 + 21 +21914.621202 + 31 +0.0 + 0 +LINE + 5 +16A + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +21071.067812 + 30 +0.0 + 11 +10115.0 + 21 +21436.067812 + 31 +0.0 + 0 +LINE + 5 +16B + 8 +0 + 62 + 0 + 10 +9907.485579 + 20 +20875.0 + 30 +0.0 + 11 +10115.0 + 21 +21082.514421 + 31 +0.0 + 0 +ENDBLK + 5 +16C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X3 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X3 + 1 + + 0 +LINE + 5 +16E + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +20739.59236 + 30 +0.0 + 11 +22865.0 + 21 +21104.59236 + 31 +0.0 + 0 +LINE + 5 +16F + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +21093.145751 + 30 +0.0 + 11 +22865.0 + 21 +21458.145751 + 31 +0.0 + 0 +LINE + 5 +170 + 8 +0 + 62 + 0 + 10 +23156.854249 + 20 +21750.0 + 30 +0.0 + 11 +23365.0 + 21 +21958.145751 + 31 +0.0 + 0 +LINE + 5 +171 + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +21446.699141 + 30 +0.0 + 11 +23168.300859 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +172 + 8 +0 + 62 + 0 + 10 +22449.747468 + 20 +21750.0 + 30 +0.0 + 11 +22814.747468 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +173 + 8 +0 + 62 + 0 + 10 +22096.194078 + 20 +21750.0 + 30 +0.0 + 11 +22461.194078 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +174 + 8 +0 + 62 + 0 + 10 +21742.640687 + 20 +21750.0 + 30 +0.0 + 11 +22107.640687 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +175 + 8 +0 + 62 + 0 + 10 +21389.087297 + 20 +21750.0 + 30 +0.0 + 11 +21754.087297 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +176 + 8 +0 + 62 + 0 + 10 +21035.533906 + 20 +21750.0 + 30 +0.0 + 11 +21400.533906 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +177 + 8 +0 + 62 + 0 + 10 +20681.980515 + 20 +21750.0 + 30 +0.0 + 11 +21046.980515 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +178 + 8 +0 + 62 + 0 + 10 +20328.427125 + 20 +21750.0 + 30 +0.0 + 11 +20693.427125 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +179 + 8 +0 + 62 + 0 + 10 +19974.873734 + 20 +21750.0 + 30 +0.0 + 11 +20339.873734 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +17A + 8 +0 + 62 + 0 + 10 +19750.0 + 20 +21878.679656 + 30 +0.0 + 11 +19986.320344 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +17B + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +20386.038969 + 30 +0.0 + 11 +22865.0 + 21 +20751.038969 + 31 +0.0 + 0 +LINE + 5 +17C + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +20032.485579 + 30 +0.0 + 11 +22865.0 + 21 +20397.485579 + 31 +0.0 + 0 +LINE + 5 +17D + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +19678.932188 + 30 +0.0 + 11 +22865.0 + 21 +20043.932188 + 31 +0.0 + 0 +LINE + 5 +17E + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +19325.378798 + 30 +0.0 + 11 +22865.0 + 21 +19690.378798 + 31 +0.0 + 0 +LINE + 5 +17F + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +18971.825407 + 30 +0.0 + 11 +22865.0 + 21 +19336.825407 + 31 +0.0 + 0 +LINE + 5 +180 + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +18618.272016 + 30 +0.0 + 11 +22865.0 + 21 +18983.272016 + 31 +0.0 + 0 +LINE + 5 +181 + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +18264.718626 + 30 +0.0 + 11 +22865.0 + 21 +18629.718626 + 31 +0.0 + 0 +LINE + 5 +182 + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +17911.165235 + 30 +0.0 + 11 +22865.0 + 21 +18276.165235 + 31 +0.0 + 0 +LINE + 5 +183 + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +17557.611845 + 30 +0.0 + 11 +22865.0 + 21 +17922.611845 + 31 +0.0 + 0 +LINE + 5 +184 + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +17204.058454 + 30 +0.0 + 11 +22865.0 + 21 +17569.058454 + 31 +0.0 + 0 +LINE + 5 +185 + 8 +0 + 62 + 0 + 10 +22774.494937 + 20 +17125.0 + 30 +0.0 + 11 +22865.0 + 21 +17215.505063 + 31 +0.0 + 0 +ENDBLK + 5 +186 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X4 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X4 + 1 + + 0 +LINE + 5 +188 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +20725.505063 + 30 +0.0 + 11 +26740.0 + 21 +21090.505063 + 31 +0.0 + 0 +LINE + 5 +189 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +21079.058454 + 30 +0.0 + 11 +26740.0 + 21 +21444.058454 + 31 +0.0 + 0 +LINE + 5 +18A + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +21432.611845 + 30 +0.0 + 11 +26740.0 + 21 +21797.611845 + 31 +0.0 + 0 +LINE + 5 +18B + 8 +0 + 62 + 0 + 10 +26338.834765 + 20 +21750.0 + 30 +0.0 + 11 +26703.834765 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +18C + 8 +0 + 62 + 0 + 10 +25985.281374 + 20 +21750.0 + 30 +0.0 + 11 +26350.281374 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +18D + 8 +0 + 62 + 0 + 10 +25631.727984 + 20 +21750.0 + 30 +0.0 + 11 +25996.727984 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +18E + 8 +0 + 62 + 0 + 10 +25278.174593 + 20 +21750.0 + 30 +0.0 + 11 +25643.174593 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +18F + 8 +0 + 62 + 0 + 10 +25250.0 + 20 +22075.378798 + 30 +0.0 + 11 +25289.621202 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +190 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +20371.951673 + 30 +0.0 + 11 +26740.0 + 21 +20736.951673 + 31 +0.0 + 0 +LINE + 5 +191 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +20018.398282 + 30 +0.0 + 11 +26740.0 + 21 +20383.398282 + 31 +0.0 + 0 +LINE + 5 +192 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +19664.844892 + 30 +0.0 + 11 +26740.0 + 21 +20029.844892 + 31 +0.0 + 0 +LINE + 5 +193 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +19311.291501 + 30 +0.0 + 11 +26740.0 + 21 +19676.291501 + 31 +0.0 + 0 +LINE + 5 +194 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +18957.73811 + 30 +0.0 + 11 +26740.0 + 21 +19322.73811 + 31 +0.0 + 0 +LINE + 5 +195 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +18604.18472 + 30 +0.0 + 11 +26740.0 + 21 +18969.18472 + 31 +0.0 + 0 +LINE + 5 +196 + 8 +0 + 62 + 0 + 10 +26499.368671 + 20 +18375.0 + 30 +0.0 + 11 +26740.0 + 21 +18615.631329 + 31 +0.0 + 0 +ENDBLK + 5 +197 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X5 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X5 + 1 + + 0 +LINE + 5 +199 + 8 +0 + 62 + 0 + 10 +25163.582233 + 20 +15625.0 + 30 +0.0 + 11 +25528.582233 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +19A + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +16836.417767 + 30 +0.0 + 11 +26740.0 + 21 +17201.417767 + 31 +0.0 + 0 +LINE + 5 +19B + 8 +0 + 62 + 0 + 10 +24810.028843 + 20 +15625.0 + 30 +0.0 + 11 +25175.028843 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +19C + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +17189.971157 + 30 +0.0 + 11 +26740.0 + 21 +17554.971157 + 31 +0.0 + 0 +LINE + 5 +19D + 8 +0 + 62 + 0 + 10 +24456.475452 + 20 +15625.0 + 30 +0.0 + 11 +24821.475452 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +19E + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +17543.524548 + 30 +0.0 + 11 +26571.475452 + 21 +17740.0 + 31 +0.0 + 0 +LINE + 5 +19F + 8 +0 + 62 + 0 + 10 +24102.922061 + 20 +15625.0 + 30 +0.0 + 11 +24467.922061 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1A0 + 8 +0 + 62 + 0 + 10 +23749.368671 + 20 +15625.0 + 30 +0.0 + 11 +24114.368671 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1A1 + 8 +0 + 62 + 0 + 10 +23395.81528 + 20 +15625.0 + 30 +0.0 + 11 +23760.81528 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1A2 + 8 +0 + 62 + 0 + 10 +23042.26189 + 20 +15625.0 + 30 +0.0 + 11 +23407.26189 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1A3 + 8 +0 + 62 + 0 + 10 +22688.708499 + 20 +15625.0 + 30 +0.0 + 11 +23053.708499 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1A4 + 8 +0 + 62 + 0 + 10 +22335.155108 + 20 +15625.0 + 30 +0.0 + 11 +22865.0 + 21 +16154.844892 + 31 +0.0 + 0 +LINE + 5 +1A5 + 8 +0 + 62 + 0 + 10 +22250.0 + 20 +15893.398282 + 30 +0.0 + 11 +22346.601718 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1A6 + 8 +0 + 62 + 0 + 10 +22500.0 + 20 +16143.398282 + 30 +0.0 + 11 +22596.601718 + 21 +16240.0 + 31 +0.0 + 0 +LINE + 5 +1A7 + 8 +0 + 62 + 0 + 10 +25517.135624 + 20 +15625.0 + 30 +0.0 + 11 +25882.135624 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1A8 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +16482.864376 + 30 +0.0 + 11 +26740.0 + 21 +16847.864376 + 31 +0.0 + 0 +LINE + 5 +1A9 + 8 +0 + 62 + 0 + 10 +25870.689014 + 20 +15625.0 + 30 +0.0 + 11 +26235.689014 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +1AA + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +16129.310986 + 30 +0.0 + 11 +26740.0 + 21 +16494.310986 + 31 +0.0 + 0 +LINE + 5 +1AB + 8 +0 + 62 + 0 + 10 +26224.242405 + 20 +15625.0 + 30 +0.0 + 11 +26740.0 + 21 +16140.757595 + 31 +0.0 + 0 +LINE + 5 +1AC + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +15422.204204 + 30 +0.0 + 11 +26740.0 + 21 +15787.204204 + 31 +0.0 + 0 +LINE + 5 +1AD + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +15068.650814 + 30 +0.0 + 11 +26740.0 + 21 +15433.650814 + 31 +0.0 + 0 +LINE + 5 +1AE + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +14715.097423 + 30 +0.0 + 11 +26740.0 + 21 +15080.097423 + 31 +0.0 + 0 +LINE + 5 +1AF + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +14361.544033 + 30 +0.0 + 11 +26740.0 + 21 +14726.544033 + 31 +0.0 + 0 +LINE + 5 +1B0 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +14007.990642 + 30 +0.0 + 11 +26740.0 + 21 +14372.990642 + 31 +0.0 + 0 +LINE + 5 +1B1 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +13654.437252 + 30 +0.0 + 11 +26740.0 + 21 +14019.437252 + 31 +0.0 + 0 +LINE + 5 +1B2 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +13300.883861 + 30 +0.0 + 11 +26740.0 + 21 +13665.883861 + 31 +0.0 + 0 +LINE + 5 +1B3 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +12947.33047 + 30 +0.0 + 11 +26740.0 + 21 +13312.33047 + 31 +0.0 + 0 +LINE + 5 +1B4 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +12593.77708 + 30 +0.0 + 11 +26740.0 + 21 +12958.77708 + 31 +0.0 + 0 +LINE + 5 +1B5 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +12240.223689 + 30 +0.0 + 11 +26740.0 + 21 +12605.223689 + 31 +0.0 + 0 +LINE + 5 +1B6 + 8 +0 + 62 + 0 + 10 +26488.329701 + 20 +12000.0 + 30 +0.0 + 11 +26740.0 + 21 +12251.670299 + 31 +0.0 + 0 +ENDBLK + 5 +1B7 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X6 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X6 + 1 + + 0 +LINE + 5 +1B9 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +18242.640687 + 30 +0.0 + 11 +10115.0 + 21 +18607.640687 + 31 +0.0 + 0 +LINE + 5 +1BA + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +18596.194078 + 30 +0.0 + 11 +10115.0 + 21 +18961.194078 + 31 +0.0 + 0 +LINE + 5 +1BB + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +18949.747468 + 30 +0.0 + 11 +10115.0 + 21 +19314.747468 + 31 +0.0 + 0 +LINE + 5 +1BC + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +19303.300859 + 30 +0.0 + 11 +10115.0 + 21 +19668.300859 + 31 +0.0 + 0 +LINE + 5 +1BD + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +19656.854249 + 30 +0.0 + 11 +10083.145751 + 21 +19990.0 + 31 +0.0 + 0 +LINE + 5 +1BE + 8 +0 + 62 + 0 + 10 +9000.0 + 20 +17139.087297 + 30 +0.0 + 11 +9100.912703 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1BF + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +17889.087297 + 30 +0.0 + 11 +10115.0 + 21 +18254.087297 + 31 +0.0 + 0 +LINE + 5 +1C0 + 8 +0 + 62 + 0 + 10 +9089.466094 + 20 +16875.0 + 30 +0.0 + 11 +9454.466094 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1C1 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +17535.533906 + 30 +0.0 + 11 +10115.0 + 21 +17900.533906 + 31 +0.0 + 0 +LINE + 5 +1C2 + 8 +0 + 62 + 0 + 10 +9443.019485 + 20 +16875.0 + 30 +0.0 + 11 +10115.0 + 21 +17546.980515 + 31 +0.0 + 0 +LINE + 5 +1C3 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +16828.427125 + 30 +0.0 + 11 +10115.0 + 21 +17193.427125 + 31 +0.0 + 0 +LINE + 5 +1C4 + 8 +0 + 62 + 0 + 10 +9900.126266 + 20 +16625.0 + 30 +0.0 + 11 +10115.0 + 21 +16839.873734 + 31 +0.0 + 0 +ENDBLK + 5 +1C5 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X7 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X7 + 1 + + 0 +LINE + 5 +1C7 + 8 +0 + 62 + 0 + 10 +6261.038969 + 20 +16875.0 + 30 +0.0 + 11 +6626.038969 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1C8 + 8 +0 + 62 + 0 + 10 +5157.485579 + 20 +16125.0 + 30 +0.0 + 11 +5365.0 + 21 +16332.514421 + 31 +0.0 + 0 +LINE + 5 +1C9 + 8 +0 + 62 + 0 + 10 +5907.485579 + 20 +16875.0 + 30 +0.0 + 11 +6272.485579 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1CA + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +16321.067812 + 30 +0.0 + 11 +5365.0 + 21 +16686.067812 + 31 +0.0 + 0 +LINE + 5 +1CB + 8 +0 + 62 + 0 + 10 +5553.932188 + 20 +16875.0 + 30 +0.0 + 11 +5918.932188 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1CC + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +16674.621202 + 30 +0.0 + 11 +5565.378798 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1CD + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +17028.174593 + 30 +0.0 + 11 +5365.0 + 21 +17393.174593 + 31 +0.0 + 0 +LINE + 5 +1CE + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +17381.727984 + 30 +0.0 + 11 +5365.0 + 21 +17746.727984 + 31 +0.0 + 0 +LINE + 5 +1CF + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +17735.281374 + 30 +0.0 + 11 +5365.0 + 21 +18100.281374 + 31 +0.0 + 0 +LINE + 5 +1D0 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +18088.834765 + 30 +0.0 + 11 +5151.165235 + 21 +18240.0 + 31 +0.0 + 0 +LINE + 5 +1D1 + 8 +0 + 62 + 0 + 10 +6614.59236 + 20 +16875.0 + 30 +0.0 + 11 +6979.59236 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1D2 + 8 +0 + 62 + 0 + 10 +6968.145751 + 20 +16875.0 + 30 +0.0 + 11 +7333.145751 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1D3 + 8 +0 + 62 + 0 + 10 +7321.699141 + 20 +16875.0 + 30 +0.0 + 11 +7686.699141 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1D4 + 8 +0 + 62 + 0 + 10 +7675.252532 + 20 +16875.0 + 30 +0.0 + 11 +8040.252532 + 21 +17240.0 + 31 +0.0 + 0 +LINE + 5 +1D5 + 8 +0 + 62 + 0 + 10 +8028.805922 + 20 +16875.0 + 30 +0.0 + 11 +8115.0 + 21 +16961.194078 + 31 +0.0 + 0 +ENDBLK + 5 +1D6 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X8 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X8 + 1 + + 0 +LINE + 5 +1D8 + 8 +0 + 62 + 0 + 10 +8750.0 + 20 +9464.466094 + 30 +0.0 + 11 +8900.533906 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +1D9 + 8 +0 + 62 + 0 + 10 +11660.533906 + 20 +12375.0 + 30 +0.0 + 11 +12025.533906 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1DA + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +10089.466094 + 30 +0.0 + 11 +9740.0 + 21 +10454.466094 + 31 +0.0 + 0 +LINE + 5 +1DB + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +10443.019485 + 30 +0.0 + 11 +9740.0 + 21 +10808.019485 + 31 +0.0 + 0 +LINE + 5 +1DC + 8 +0 + 62 + 0 + 10 +11306.980515 + 20 +12375.0 + 30 +0.0 + 11 +11671.980515 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1DD + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +10796.572875 + 30 +0.0 + 11 +9740.0 + 21 +11161.572875 + 31 +0.0 + 0 +LINE + 5 +1DE + 8 +0 + 62 + 0 + 10 +10953.427125 + 20 +12375.0 + 30 +0.0 + 11 +11318.427125 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1DF + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +11150.126266 + 30 +0.0 + 11 +9740.0 + 21 +11515.126266 + 31 +0.0 + 0 +LINE + 5 +1E0 + 8 +0 + 62 + 0 + 10 +10599.873734 + 20 +12375.0 + 30 +0.0 + 11 +10964.873734 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1E1 + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +11503.679656 + 30 +0.0 + 11 +9740.0 + 21 +11868.679656 + 31 +0.0 + 0 +LINE + 5 +1E2 + 8 +0 + 62 + 0 + 10 +10246.320344 + 20 +12375.0 + 30 +0.0 + 11 +10611.320344 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1E3 + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +11857.233047 + 30 +0.0 + 11 +9740.0 + 21 +12222.233047 + 31 +0.0 + 0 +LINE + 5 +1E4 + 8 +0 + 62 + 0 + 10 +9892.766953 + 20 +12375.0 + 30 +0.0 + 11 +10257.766953 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1E5 + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +12210.786438 + 30 +0.0 + 11 +10115.0 + 21 +12950.786438 + 31 +0.0 + 0 +LINE + 5 +1E6 + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +12564.339828 + 30 +0.0 + 11 +9550.660172 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1E7 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +12939.339828 + 30 +0.0 + 11 +9800.660172 + 21 +12990.0 + 31 +0.0 + 0 +LINE + 5 +1E8 + 8 +0 + 62 + 0 + 10 +8889.087297 + 20 +9250.0 + 30 +0.0 + 11 +9254.087297 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +1E9 + 8 +0 + 62 + 0 + 10 +12014.087297 + 20 +12375.0 + 30 +0.0 + 11 +12379.087297 + 21 +12740.0 + 31 +0.0 + 0 +LINE + 5 +1EA + 8 +0 + 62 + 0 + 10 +9375.0 + 20 +9735.912703 + 30 +0.0 + 11 +9740.0 + 21 +10100.912703 + 31 +0.0 + 0 +LINE + 5 +1EB + 8 +0 + 62 + 0 + 10 +9242.640687 + 20 +9250.0 + 30 +0.0 + 11 +9740.0 + 21 +9747.359313 + 31 +0.0 + 0 +LINE + 5 +1EC + 8 +0 + 62 + 0 + 10 +12367.640687 + 20 +12375.0 + 30 +0.0 + 11 +12615.0 + 21 +12622.359313 + 31 +0.0 + 0 +LINE + 5 +1ED + 8 +0 + 62 + 0 + 10 +9596.194078 + 20 +9250.0 + 30 +0.0 + 11 +9865.0 + 21 +9518.805922 + 31 +0.0 + 0 +ENDBLK + 5 +1EE + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X9 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X9 + 1 + + 0 +LINE + 5 +1F0 + 8 +0 + 62 + 0 + 10 +11363.961031 + 20 +9250.0 + 30 +0.0 + 11 +11728.961031 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +1F1 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +12011.038969 + 30 +0.0 + 11 +14490.0 + 21 +12376.038969 + 31 +0.0 + 0 +LINE + 5 +1F2 + 8 +0 + 62 + 0 + 10 +11250.0 + 20 +9489.59236 + 30 +0.0 + 11 +11375.40764 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +1F3 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +12364.59236 + 30 +0.0 + 11 +14490.0 + 21 +12729.59236 + 31 +0.0 + 0 +LINE + 5 +1F4 + 8 +0 + 62 + 0 + 10 +13875.0 + 20 +12468.145751 + 30 +0.0 + 11 +14490.0 + 21 +13083.145751 + 31 +0.0 + 0 +LINE + 5 +1F5 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +13071.699141 + 30 +0.0 + 11 +14490.0 + 21 +13436.699141 + 31 +0.0 + 0 +LINE + 5 +1F6 + 8 +0 + 62 + 0 + 10 +14553.300859 + 20 +13500.0 + 30 +0.0 + 11 +14615.0 + 21 +13561.699141 + 31 +0.0 + 0 +LINE + 5 +1F7 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +13425.252532 + 30 +0.0 + 11 +14564.747468 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +1F8 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +13778.805922 + 30 +0.0 + 11 +14211.194078 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +1F9 + 8 +0 + 62 + 0 + 10 +11717.514421 + 20 +9250.0 + 30 +0.0 + 11 +12082.514421 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +1FA + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +11657.485579 + 30 +0.0 + 11 +14490.0 + 21 +12022.485579 + 31 +0.0 + 0 +LINE + 5 +1FB + 8 +0 + 62 + 0 + 10 +12071.067812 + 20 +9250.0 + 30 +0.0 + 11 +12436.067812 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +1FC + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +11303.932188 + 30 +0.0 + 11 +14490.0 + 21 +11668.932188 + 31 +0.0 + 0 +LINE + 5 +1FD + 8 +0 + 62 + 0 + 10 +12424.621202 + 20 +9250.0 + 30 +0.0 + 11 +12789.621202 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +1FE + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +10950.378798 + 30 +0.0 + 11 +14490.0 + 21 +11315.378798 + 31 +0.0 + 0 +LINE + 5 +1FF + 8 +0 + 62 + 0 + 10 +12778.174593 + 20 +9250.0 + 30 +0.0 + 11 +13143.174593 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +200 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +10596.825407 + 30 +0.0 + 11 +14490.0 + 21 +10961.825407 + 31 +0.0 + 0 +LINE + 5 +201 + 8 +0 + 62 + 0 + 10 +13131.727984 + 20 +9250.0 + 30 +0.0 + 11 +13496.727984 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +202 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +10243.272016 + 30 +0.0 + 11 +14490.0 + 21 +10608.272016 + 31 +0.0 + 0 +LINE + 5 +203 + 8 +0 + 62 + 0 + 10 +13485.281374 + 20 +9250.0 + 30 +0.0 + 11 +13850.281374 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +204 + 8 +0 + 62 + 0 + 10 +14125.0 + 20 +9889.718626 + 30 +0.0 + 11 +14490.0 + 21 +10254.718626 + 31 +0.0 + 0 +LINE + 5 +205 + 8 +0 + 62 + 0 + 10 +13838.834765 + 20 +9250.0 + 30 +0.0 + 11 +14490.0 + 21 +9901.165235 + 31 +0.0 + 0 +LINE + 5 +206 + 8 +0 + 62 + 0 + 10 +14192.388155 + 20 +9250.0 + 30 +0.0 + 11 +14557.388155 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +207 + 8 +0 + 62 + 0 + 10 +14545.941546 + 20 +9250.0 + 30 +0.0 + 11 +14910.941546 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +208 + 8 +0 + 62 + 0 + 10 +14899.494937 + 20 +9250.0 + 30 +0.0 + 11 +15264.494937 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +209 + 8 +0 + 62 + 0 + 10 +15253.048327 + 20 +9250.0 + 30 +0.0 + 11 +15618.048327 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +20A + 8 +0 + 62 + 0 + 10 +15606.601718 + 20 +9250.0 + 30 +0.0 + 11 +15971.601718 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +20B + 8 +0 + 62 + 0 + 10 +15960.155108 + 20 +9250.0 + 30 +0.0 + 11 +16115.0 + 21 +9404.844892 + 31 +0.0 + 0 +ENDBLK + 5 +20C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X10 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X10 + 1 + + 0 +LINE + 5 +20E + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +12329.058454 + 30 +0.0 + 11 +17990.0 + 21 +12694.058454 + 31 +0.0 + 0 +LINE + 5 +20F + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +12682.611845 + 30 +0.0 + 11 +17990.0 + 21 +13047.611845 + 31 +0.0 + 0 +LINE + 5 +210 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +13036.165235 + 30 +0.0 + 11 +17990.0 + 21 +13401.165235 + 31 +0.0 + 0 +LINE + 5 +211 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +13389.718626 + 30 +0.0 + 11 +17990.0 + 21 +13754.718626 + 31 +0.0 + 0 +LINE + 5 +212 + 8 +0 + 62 + 0 + 10 +17381.727984 + 20 +13500.0 + 30 +0.0 + 11 +17746.727984 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +213 + 8 +0 + 62 + 0 + 10 +17028.174593 + 20 +13500.0 + 30 +0.0 + 11 +17393.174593 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +214 + 8 +0 + 62 + 0 + 10 +16674.621202 + 20 +13500.0 + 30 +0.0 + 11 +17039.621202 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +215 + 8 +0 + 62 + 0 + 10 +16321.067812 + 20 +13500.0 + 30 +0.0 + 11 +16686.067812 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +216 + 8 +0 + 62 + 0 + 10 +15967.514421 + 20 +13500.0 + 30 +0.0 + 11 +16332.514421 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +217 + 8 +0 + 62 + 0 + 10 +15613.961031 + 20 +13500.0 + 30 +0.0 + 11 +16103.961031 + 21 +13990.0 + 31 +0.0 + 0 +LINE + 5 +218 + 8 +0 + 62 + 0 + 10 +15500.0 + 20 +13739.59236 + 30 +0.0 + 11 +15625.40764 + 21 +13865.0 + 31 +0.0 + 0 +LINE + 5 +219 + 8 +0 + 62 + 0 + 10 +15750.0 + 20 +13989.59236 + 30 +0.0 + 11 +15750.40764 + 21 +13990.0 + 31 +0.0 + 0 +LINE + 5 +21A + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +11975.505063 + 30 +0.0 + 11 +17990.0 + 21 +12340.505063 + 31 +0.0 + 0 +LINE + 5 +21B + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +11621.951673 + 30 +0.0 + 11 +17990.0 + 21 +11986.951673 + 31 +0.0 + 0 +LINE + 5 +21C + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +11268.398282 + 30 +0.0 + 11 +17990.0 + 21 +11633.398282 + 31 +0.0 + 0 +LINE + 5 +21D + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +10914.844892 + 30 +0.0 + 11 +17990.0 + 21 +11279.844892 + 31 +0.0 + 0 +LINE + 5 +21E + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +10561.291501 + 30 +0.0 + 11 +17990.0 + 21 +10926.291501 + 31 +0.0 + 0 +LINE + 5 +21F + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +10207.73811 + 30 +0.0 + 11 +17990.0 + 21 +10572.73811 + 31 +0.0 + 0 +LINE + 5 +220 + 8 +0 + 62 + 0 + 10 +17375.0 + 20 +9604.18472 + 30 +0.0 + 11 +17385.81528 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +221 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +9854.18472 + 30 +0.0 + 11 +17990.0 + 21 +10219.18472 + 31 +0.0 + 0 +LINE + 5 +222 + 8 +0 + 62 + 0 + 10 +17375.0 + 20 +9250.631329 + 30 +0.0 + 11 +17990.0 + 21 +9865.631329 + 31 +0.0 + 0 +LINE + 5 +223 + 8 +0 + 62 + 0 + 10 +17727.922061 + 20 +9250.0 + 30 +0.0 + 11 +18092.922061 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +224 + 8 +0 + 62 + 0 + 10 +18081.475452 + 20 +9250.0 + 30 +0.0 + 11 +18446.475452 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +225 + 8 +0 + 62 + 0 + 10 +18435.028843 + 20 +9250.0 + 30 +0.0 + 11 +18490.0 + 21 +9304.971157 + 31 +0.0 + 0 +ENDBLK + 5 +226 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X11 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X11 + 1 + + 0 +LINE + 5 +228 + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +12043.524548 + 30 +0.0 + 11 +21240.0 + 21 +12408.524548 + 31 +0.0 + 0 +LINE + 5 +229 + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +12397.077939 + 30 +0.0 + 11 +21240.0 + 21 +12762.077939 + 31 +0.0 + 0 +LINE + 5 +22A + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +12750.631329 + 30 +0.0 + 11 +21240.0 + 21 +13115.631329 + 31 +0.0 + 0 +LINE + 5 +22B + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +13104.18472 + 30 +0.0 + 11 +21240.0 + 21 +13469.18472 + 31 +0.0 + 0 +LINE + 5 +22C + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +13457.73811 + 30 +0.0 + 11 +21240.0 + 21 +13822.73811 + 31 +0.0 + 0 +LINE + 5 +22D + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +13811.291501 + 30 +0.0 + 11 +21240.0 + 21 +14176.291501 + 31 +0.0 + 0 +LINE + 5 +22E + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +14164.844892 + 30 +0.0 + 11 +20950.155108 + 21 +14240.0 + 31 +0.0 + 0 +LINE + 5 +22F + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +11689.971157 + 30 +0.0 + 11 +21240.0 + 21 +12054.971157 + 31 +0.0 + 0 +LINE + 5 +230 + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +11336.417767 + 30 +0.0 + 11 +21240.0 + 21 +11701.417767 + 31 +0.0 + 0 +LINE + 5 +231 + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +10982.864376 + 30 +0.0 + 11 +21240.0 + 21 +11347.864376 + 31 +0.0 + 0 +LINE + 5 +232 + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +10629.310986 + 30 +0.0 + 11 +21240.0 + 21 +10994.310986 + 31 +0.0 + 0 +LINE + 5 +233 + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +10275.757595 + 30 +0.0 + 11 +21240.0 + 21 +10640.757595 + 31 +0.0 + 0 +LINE + 5 +234 + 8 +0 + 62 + 0 + 10 +20375.0 + 20 +9422.204204 + 30 +0.0 + 11 +20567.795796 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +235 + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +9922.204204 + 30 +0.0 + 11 +21240.0 + 21 +10287.204204 + 31 +0.0 + 0 +LINE + 5 +236 + 8 +0 + 62 + 0 + 10 +20556.349186 + 20 +9250.0 + 30 +0.0 + 11 +21240.0 + 21 +9933.650814 + 31 +0.0 + 0 +LINE + 5 +237 + 8 +0 + 62 + 0 + 10 +20909.902577 + 20 +9250.0 + 30 +0.0 + 11 +21274.902577 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +238 + 8 +0 + 62 + 0 + 10 +21263.455967 + 20 +9250.0 + 30 +0.0 + 11 +21365.0 + 21 +9351.544033 + 31 +0.0 + 0 +ENDBLK + 5 +239 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X12 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X12 + 1 + + 0 +LINE + 5 +23B + 8 +0 + 62 + 0 + 10 +22324.116139 + 20 +9250.0 + 30 +0.0 + 11 +22689.116139 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +23C + 8 +0 + 62 + 0 + 10 +21970.562748 + 20 +9250.0 + 30 +0.0 + 11 +22335.562748 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +23D + 8 +0 + 62 + 0 + 10 +21875.0 + 20 +9507.990642 + 30 +0.0 + 11 +21982.009358 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +23E + 8 +0 + 62 + 0 + 10 +22677.66953 + 20 +9250.0 + 30 +0.0 + 11 +23042.66953 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +23F + 8 +0 + 62 + 0 + 10 +23031.22292 + 20 +9250.0 + 30 +0.0 + 11 +23240.0 + 21 +9458.77708 + 31 +0.0 + 0 +ENDBLK + 5 +240 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X13 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X13 + 1 + + 0 +LINE + 5 +242 + 8 +0 + 62 + 0 + 10 +25375.0 + 20 +9472.456736 + 30 +0.0 + 11 +25517.543264 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +243 + 8 +0 + 62 + 0 + 10 +25506.096654 + 20 +9250.0 + 30 +0.0 + 11 +25871.096654 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +244 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +10118.903346 + 30 +0.0 + 11 +26621.096654 + 21 +10365.0 + 31 +0.0 + 0 +LINE + 5 +245 + 8 +0 + 62 + 0 + 10 +25859.650045 + 20 +9250.0 + 30 +0.0 + 11 +26224.650045 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +246 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +9765.349955 + 30 +0.0 + 11 +26740.0 + 21 +10130.349955 + 31 +0.0 + 0 +LINE + 5 +247 + 8 +0 + 62 + 0 + 10 +26213.203436 + 20 +9250.0 + 30 +0.0 + 11 +26740.0 + 21 +9776.796564 + 31 +0.0 + 0 +LINE + 5 +248 + 8 +0 + 62 + 0 + 10 +26566.756826 + 20 +9250.0 + 30 +0.0 + 11 +26740.0 + 21 +9423.243174 + 31 +0.0 + 0 +ENDBLK + 5 +249 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X14 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X14 + 1 + + 0 +LINE + 5 +24B + 8 +0 + 62 + 0 + 10 +7121.320344 + 20 +9250.0 + 30 +0.0 + 11 +7486.320344 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +24C + 8 +0 + 62 + 0 + 10 +12996.320344 + 20 +15125.0 + 30 +0.0 + 11 +13361.320344 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +24D + 8 +0 + 62 + 0 + 10 +6767.766953 + 20 +9250.0 + 30 +0.0 + 11 +7132.766953 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +24E + 8 +0 + 62 + 0 + 10 +12642.766953 + 20 +15125.0 + 30 +0.0 + 11 +13007.766953 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +24F + 8 +0 + 62 + 0 + 10 +6414.213562 + 20 +9250.0 + 30 +0.0 + 11 +6779.213562 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +250 + 8 +0 + 62 + 0 + 10 +12289.213562 + 20 +15125.0 + 30 +0.0 + 11 +12654.213562 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +251 + 8 +0 + 62 + 0 + 10 +6060.660172 + 20 +9250.0 + 30 +0.0 + 11 +6425.660172 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +252 + 8 +0 + 62 + 0 + 10 +11935.660172 + 20 +15125.0 + 30 +0.0 + 11 +12300.660172 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +253 + 8 +0 + 62 + 0 + 10 +5707.106781 + 20 +9250.0 + 30 +0.0 + 11 +6072.106781 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +254 + 8 +0 + 62 + 0 + 10 +11582.106781 + 20 +15125.0 + 30 +0.0 + 11 +11947.106781 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +255 + 8 +0 + 62 + 0 + 10 +5353.553391 + 20 +9250.0 + 30 +0.0 + 11 +5718.553391 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +256 + 8 +0 + 62 + 0 + 10 +11228.553391 + 20 +15125.0 + 30 +0.0 + 11 +11593.553391 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +257 + 8 +0 + 62 + 0 + 10 +9978.553391 + 20 +13875.0 + 30 +0.0 + 11 +10115.0 + 21 +14011.446609 + 31 +0.0 + 0 +LINE + 5 +258 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 11 +5365.0 + 21 +9615.0 + 31 +0.0 + 0 +LINE + 5 +259 + 8 +0 + 62 + 0 + 10 +10875.0 + 20 +15125.0 + 30 +0.0 + 11 +11240.0 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +25A + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +14000.0 + 30 +0.0 + 11 +10115.0 + 21 +14365.0 + 31 +0.0 + 0 +LINE + 5 +25B + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9603.553391 + 30 +0.0 + 11 +5365.0 + 21 +9968.553391 + 31 +0.0 + 0 +LINE + 5 +25C + 8 +0 + 62 + 0 + 10 +10521.446609 + 20 +15125.0 + 30 +0.0 + 11 +10886.446609 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +25D + 8 +0 + 62 + 0 + 10 +9521.446609 + 20 +14125.0 + 30 +0.0 + 11 +10115.0 + 21 +14718.553391 + 31 +0.0 + 0 +LINE + 5 +25E + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9957.106781 + 30 +0.0 + 11 +5365.0 + 21 +10322.106781 + 31 +0.0 + 0 +LINE + 5 +25F + 8 +0 + 62 + 0 + 10 +10167.893219 + 20 +15125.0 + 30 +0.0 + 11 +10532.893219 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +260 + 8 +0 + 62 + 0 + 10 +9167.893219 + 20 +14125.0 + 30 +0.0 + 11 +9532.893219 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +261 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +14707.106781 + 30 +0.0 + 11 +10115.0 + 21 +15072.106781 + 31 +0.0 + 0 +LINE + 5 +262 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +10310.660172 + 30 +0.0 + 11 +5365.0 + 21 +10675.660172 + 31 +0.0 + 0 +LINE + 5 +263 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +15060.660172 + 30 +0.0 + 11 +10179.339828 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +264 + 8 +0 + 62 + 0 + 10 +8814.339828 + 20 +14125.0 + 30 +0.0 + 11 +9179.339828 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +265 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +10664.213562 + 30 +0.0 + 11 +5365.0 + 21 +11029.213562 + 31 +0.0 + 0 +LINE + 5 +266 + 8 +0 + 62 + 0 + 10 +9750.0 + 20 +15414.213562 + 30 +0.0 + 11 +10075.786438 + 21 +15740.0 + 31 +0.0 + 0 +LINE + 5 +267 + 8 +0 + 62 + 0 + 10 +8460.786438 + 20 +14125.0 + 30 +0.0 + 11 +8825.786438 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +268 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +11017.766953 + 30 +0.0 + 11 +5365.0 + 21 +11382.766953 + 31 +0.0 + 0 +LINE + 5 +269 + 8 +0 + 62 + 0 + 10 +8107.233047 + 20 +14125.0 + 30 +0.0 + 11 +8472.233047 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +26A + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +11371.320344 + 30 +0.0 + 11 +5365.0 + 21 +11736.320344 + 31 +0.0 + 0 +LINE + 5 +26B + 8 +0 + 62 + 0 + 10 +7753.679656 + 20 +14125.0 + 30 +0.0 + 11 +8118.679656 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +26C + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +11724.873734 + 30 +0.0 + 11 +5365.0 + 21 +12089.873734 + 31 +0.0 + 0 +LINE + 5 +26D + 8 +0 + 62 + 0 + 10 +7400.126266 + 20 +14125.0 + 30 +0.0 + 11 +7765.126266 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +26E + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +12078.427125 + 30 +0.0 + 11 +5365.0 + 21 +12443.427125 + 31 +0.0 + 0 +LINE + 5 +26F + 8 +0 + 62 + 0 + 10 +7046.572875 + 20 +14125.0 + 30 +0.0 + 11 +7411.572875 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +270 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +12431.980515 + 30 +0.0 + 11 +5365.0 + 21 +12796.980515 + 31 +0.0 + 0 +LINE + 5 +271 + 8 +0 + 62 + 0 + 10 +6693.019485 + 20 +14125.0 + 30 +0.0 + 11 +7058.019485 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +272 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +12785.533906 + 30 +0.0 + 11 +5365.0 + 21 +13150.533906 + 31 +0.0 + 0 +LINE + 5 +273 + 8 +0 + 62 + 0 + 10 +6339.466094 + 20 +14125.0 + 30 +0.0 + 11 +6704.466094 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +274 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +13139.087297 + 30 +0.0 + 11 +5365.0 + 21 +13504.087297 + 31 +0.0 + 0 +LINE + 5 +275 + 8 +0 + 62 + 0 + 10 +5985.912703 + 20 +14125.0 + 30 +0.0 + 11 +6350.912703 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +276 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +13492.640687 + 30 +0.0 + 11 +5365.0 + 21 +13857.640687 + 31 +0.0 + 0 +LINE + 5 +277 + 8 +0 + 62 + 0 + 10 +5632.359313 + 20 +14125.0 + 30 +0.0 + 11 +5997.359313 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +278 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +13846.194078 + 30 +0.0 + 11 +5643.805922 + 21 +14490.0 + 31 +0.0 + 0 +LINE + 5 +279 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +14199.747468 + 30 +0.0 + 11 +5365.0 + 21 +14564.747468 + 31 +0.0 + 0 +LINE + 5 +27A + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +14553.300859 + 30 +0.0 + 11 +5061.699141 + 21 +14615.0 + 31 +0.0 + 0 +LINE + 5 +27B + 8 +0 + 62 + 0 + 10 +7474.873734 + 20 +9250.0 + 30 +0.0 + 11 +7740.0 + 21 +9515.126266 + 31 +0.0 + 0 +LINE + 5 +27C + 8 +0 + 62 + 0 + 10 +13349.873734 + 20 +15125.0 + 30 +0.0 + 11 +13714.873734 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +27D + 8 +0 + 62 + 0 + 10 +13703.427125 + 20 +15125.0 + 30 +0.0 + 11 +14068.427125 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +27E + 8 +0 + 62 + 0 + 10 +14056.980515 + 20 +15125.0 + 30 +0.0 + 11 +14421.980515 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +27F + 8 +0 + 62 + 0 + 10 +14410.533906 + 20 +15125.0 + 30 +0.0 + 11 +14775.533906 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +280 + 8 +0 + 62 + 0 + 10 +14764.087297 + 20 +15125.0 + 30 +0.0 + 11 +15129.087297 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +281 + 8 +0 + 62 + 0 + 10 +15117.640687 + 20 +15125.0 + 30 +0.0 + 11 +15482.640687 + 21 +15490.0 + 31 +0.0 + 0 +LINE + 5 +282 + 8 +0 + 62 + 0 + 10 +15750.0 + 20 +15757.359313 + 30 +0.0 + 11 +15982.640687 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +283 + 8 +0 + 62 + 0 + 10 +15471.194078 + 20 +15125.0 + 30 +0.0 + 11 +16336.194078 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +284 + 8 +0 + 62 + 0 + 10 +15750.0 + 20 +15050.252532 + 30 +0.0 + 11 +16115.0 + 21 +15415.252532 + 31 +0.0 + 0 +LINE + 5 +285 + 8 +0 + 62 + 0 + 10 +16324.747468 + 20 +15625.0 + 30 +0.0 + 11 +16365.0 + 21 +15665.252532 + 31 +0.0 + 0 +LINE + 5 +286 + 8 +0 + 62 + 0 + 10 +16053.300859 + 20 +15000.0 + 30 +0.0 + 11 +16115.0 + 21 +15061.699141 + 31 +0.0 + 0 +ENDBLK + 5 +287 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X15 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X15 + 1 + + 0 +LINE + 5 +289 + 8 +0 + 62 + 0 + 10 +9342.94193 + 20 +22255.0 + 30 +0.0 + 11 +9457.94193 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +28A + 8 +0 + 62 + 0 + 10 +9166.165235 + 20 +22255.0 + 30 +0.0 + 11 +9281.165235 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +28B + 8 +0 + 62 + 0 + 10 +8989.38854 + 20 +22255.0 + 30 +0.0 + 11 +9104.38854 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +28C + 8 +0 + 62 + 0 + 10 +8812.611845 + 20 +22255.0 + 30 +0.0 + 11 +8927.611845 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +28D + 8 +0 + 62 + 0 + 10 +8635.835149 + 20 +22255.0 + 30 +0.0 + 11 +8750.835149 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +28E + 8 +0 + 62 + 0 + 10 +8500.0 + 20 +22295.941546 + 30 +0.0 + 11 +8574.058454 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +28F + 8 +0 + 62 + 0 + 10 +9519.718626 + 20 +22255.0 + 30 +0.0 + 11 +9634.718626 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +290 + 8 +0 + 62 + 0 + 10 +9696.495321 + 20 +22255.0 + 30 +0.0 + 11 +9811.495321 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +291 + 8 +0 + 62 + 0 + 10 +9873.272016 + 20 +22255.0 + 30 +0.0 + 11 +9988.272016 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +292 + 8 +0 + 62 + 0 + 10 +10050.048712 + 20 +22255.0 + 30 +0.0 + 11 +10165.048712 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +293 + 8 +0 + 62 + 0 + 10 +10226.825407 + 20 +22255.0 + 30 +0.0 + 11 +10240.0 + 21 +22268.174593 + 31 +0.0 + 0 +ENDBLK + 5 +294 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X16 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X16 + 1 + + 0 +LINE + 5 +296 + 8 +0 + 62 + 0 + 10 +13585.582618 + 20 +22255.0 + 30 +0.0 + 11 +13700.582618 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +297 + 8 +0 + 62 + 0 + 10 +13408.805922 + 20 +22255.0 + 30 +0.0 + 11 +13523.805922 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +298 + 8 +0 + 62 + 0 + 10 +13232.029227 + 20 +22255.0 + 30 +0.0 + 11 +13347.029227 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +299 + 8 +0 + 62 + 0 + 10 +13055.252532 + 20 +22255.0 + 30 +0.0 + 11 +13170.252532 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +29A + 8 +0 + 62 + 0 + 10 +12878.475836 + 20 +22255.0 + 30 +0.0 + 11 +12993.475836 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +29B + 8 +0 + 62 + 0 + 10 +12701.699141 + 20 +22255.0 + 30 +0.0 + 11 +12816.699141 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +29C + 8 +0 + 62 + 0 + 10 +12524.922446 + 20 +22255.0 + 30 +0.0 + 11 +12639.922446 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +29D + 8 +0 + 62 + 0 + 10 +12348.145751 + 20 +22255.0 + 30 +0.0 + 11 +12463.145751 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +29E + 8 +0 + 62 + 0 + 10 +12171.369055 + 20 +22255.0 + 30 +0.0 + 11 +12286.369055 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +29F + 8 +0 + 62 + 0 + 10 +11994.59236 + 20 +22255.0 + 30 +0.0 + 11 +12109.59236 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A0 + 8 +0 + 62 + 0 + 10 +11817.815665 + 20 +22255.0 + 30 +0.0 + 11 +11932.815665 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A1 + 8 +0 + 62 + 0 + 10 +11641.038969 + 20 +22255.0 + 30 +0.0 + 11 +11756.038969 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A2 + 8 +0 + 62 + 0 + 10 +11464.262274 + 20 +22255.0 + 30 +0.0 + 11 +11579.262274 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A3 + 8 +0 + 62 + 0 + 10 +11287.485579 + 20 +22255.0 + 30 +0.0 + 11 +11402.485579 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A4 + 8 +0 + 62 + 0 + 10 +13762.359313 + 20 +22255.0 + 30 +0.0 + 11 +13877.359313 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A5 + 8 +0 + 62 + 0 + 10 +13939.136008 + 20 +22255.0 + 30 +0.0 + 11 +14054.136008 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A6 + 8 +0 + 62 + 0 + 10 +14115.912703 + 20 +22255.0 + 30 +0.0 + 11 +14230.912703 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A7 + 8 +0 + 62 + 0 + 10 +14292.689399 + 20 +22255.0 + 30 +0.0 + 11 +14407.689399 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A8 + 8 +0 + 62 + 0 + 10 +14469.466094 + 20 +22255.0 + 30 +0.0 + 11 +14584.466094 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2A9 + 8 +0 + 62 + 0 + 10 +14646.242789 + 20 +22255.0 + 30 +0.0 + 11 +14761.242789 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2AA + 8 +0 + 62 + 0 + 10 +14823.019485 + 20 +22255.0 + 30 +0.0 + 11 +14938.019485 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2AB + 8 +0 + 62 + 0 + 10 +14999.79618 + 20 +22255.0 + 30 +0.0 + 11 +15114.79618 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2AC + 8 +0 + 62 + 0 + 10 +15176.572875 + 20 +22255.0 + 30 +0.0 + 11 +15291.572875 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2AD + 8 +0 + 62 + 0 + 10 +15353.349571 + 20 +22255.0 + 30 +0.0 + 11 +15468.349571 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2AE + 8 +0 + 62 + 0 + 10 +15530.126266 + 20 +22255.0 + 30 +0.0 + 11 +15645.126266 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2AF + 8 +0 + 62 + 0 + 10 +15706.902961 + 20 +22255.0 + 30 +0.0 + 11 +15821.902961 + 21 +22370.0 + 31 +0.0 + 0 +ENDBLK + 5 +2B0 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X17 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X17 + 1 + + 0 +LINE + 5 +2B2 + 8 +0 + 62 + 0 + 10 +17828.223305 + 20 +22255.0 + 30 +0.0 + 11 +17943.223305 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2B3 + 8 +0 + 62 + 0 + 10 +17651.446609 + 20 +22255.0 + 30 +0.0 + 11 +17766.446609 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2B4 + 8 +0 + 62 + 0 + 10 +17474.669914 + 20 +22255.0 + 30 +0.0 + 11 +17589.669914 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2B5 + 8 +0 + 62 + 0 + 10 +17297.893219 + 20 +22255.0 + 30 +0.0 + 11 +17412.893219 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2B6 + 8 +0 + 62 + 0 + 10 +17121.116524 + 20 +22255.0 + 30 +0.0 + 11 +17236.116524 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2B7 + 8 +0 + 62 + 0 + 10 +16944.339828 + 20 +22255.0 + 30 +0.0 + 11 +17059.339828 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2B8 + 8 +0 + 62 + 0 + 10 +16875.0 + 20 +22362.436867 + 30 +0.0 + 11 +16882.563133 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2B9 + 8 +0 + 62 + 0 + 10 +18005.0 + 20 +22255.0 + 30 +0.0 + 11 +18120.0 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2BA + 8 +0 + 62 + 0 + 10 +18181.776695 + 20 +22255.0 + 30 +0.0 + 11 +18296.776695 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2BB + 8 +0 + 62 + 0 + 10 +18358.553391 + 20 +22255.0 + 30 +0.0 + 11 +18473.553391 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2BC + 8 +0 + 62 + 0 + 10 +18535.330086 + 20 +22255.0 + 30 +0.0 + 11 +18650.330086 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2BD + 8 +0 + 62 + 0 + 10 +18712.106781 + 20 +22255.0 + 30 +0.0 + 11 +18740.0 + 21 +22282.893219 + 31 +0.0 + 0 +ENDBLK + 5 +2BE + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X18 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X18 + 1 + + 0 +LINE + 5 +2C0 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +19778.378413 + 30 +0.0 + 11 +4860.0 + 21 +19893.378413 + 31 +0.0 + 0 +LINE + 5 +2C1 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +19955.155108 + 30 +0.0 + 11 +4860.0 + 21 +20070.155108 + 31 +0.0 + 0 +LINE + 5 +2C2 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +20131.931804 + 30 +0.0 + 11 +4860.0 + 21 +20246.931804 + 31 +0.0 + 0 +LINE + 5 +2C3 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +20308.708499 + 30 +0.0 + 11 +4860.0 + 21 +20423.708499 + 31 +0.0 + 0 +LINE + 5 +2C4 + 8 +0 + 62 + 0 + 10 +6691.291501 + 20 +22255.0 + 30 +0.0 + 11 +6740.0 + 21 +22303.708499 + 31 +0.0 + 0 +LINE + 5 +2C5 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +20485.485194 + 30 +0.0 + 11 +4860.0 + 21 +20600.485194 + 31 +0.0 + 0 +LINE + 5 +2C6 + 8 +0 + 62 + 0 + 10 +6514.514806 + 20 +22255.0 + 30 +0.0 + 11 +6629.514806 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2C7 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +20662.26189 + 30 +0.0 + 11 +4860.0 + 21 +20777.26189 + 31 +0.0 + 0 +LINE + 5 +2C8 + 8 +0 + 62 + 0 + 10 +6337.73811 + 20 +22255.0 + 30 +0.0 + 11 +6452.73811 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2C9 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +20839.038585 + 30 +0.0 + 11 +4860.0 + 21 +20954.038585 + 31 +0.0 + 0 +LINE + 5 +2CA + 8 +0 + 62 + 0 + 10 +6160.961415 + 20 +22255.0 + 30 +0.0 + 11 +6275.961415 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2CB + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +21015.81528 + 30 +0.0 + 11 +4860.0 + 21 +21130.81528 + 31 +0.0 + 0 +LINE + 5 +2CC + 8 +0 + 62 + 0 + 10 +5984.18472 + 20 +22255.0 + 30 +0.0 + 11 +6099.18472 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2CD + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +21192.591975 + 30 +0.0 + 11 +4860.0 + 21 +21307.591975 + 31 +0.0 + 0 +LINE + 5 +2CE + 8 +0 + 62 + 0 + 10 +5807.408025 + 20 +22255.0 + 30 +0.0 + 11 +5922.408025 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2CF + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +21369.368671 + 30 +0.0 + 11 +4860.0 + 21 +21484.368671 + 31 +0.0 + 0 +LINE + 5 +2D0 + 8 +0 + 62 + 0 + 10 +5630.631329 + 20 +22255.0 + 30 +0.0 + 11 +5745.631329 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2D1 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +21546.145366 + 30 +0.0 + 11 +4860.0 + 21 +21661.145366 + 31 +0.0 + 0 +LINE + 5 +2D2 + 8 +0 + 62 + 0 + 10 +5453.854634 + 20 +22255.0 + 30 +0.0 + 11 +5568.854634 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2D3 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +21722.922061 + 30 +0.0 + 11 +4860.0 + 21 +21837.922061 + 31 +0.0 + 0 +LINE + 5 +2D4 + 8 +0 + 62 + 0 + 10 +5277.077939 + 20 +22255.0 + 30 +0.0 + 11 +5392.077939 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2D5 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +21899.698757 + 30 +0.0 + 11 +4860.0 + 21 +22014.698757 + 31 +0.0 + 0 +LINE + 5 +2D6 + 8 +0 + 62 + 0 + 10 +5100.301243 + 20 +22255.0 + 30 +0.0 + 11 +5215.301243 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2D7 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +22076.475452 + 30 +0.0 + 11 +4860.0 + 21 +22191.475452 + 31 +0.0 + 0 +LINE + 5 +2D8 + 8 +0 + 62 + 0 + 10 +4923.524548 + 20 +22255.0 + 30 +0.0 + 11 +5038.524548 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2D9 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +22253.252147 + 30 +0.0 + 11 +4861.747853 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +2DA + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +19601.601718 + 30 +0.0 + 11 +4860.0 + 21 +19716.601718 + 31 +0.0 + 0 +LINE + 5 +2DB + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +19424.825023 + 30 +0.0 + 11 +4860.0 + 21 +19539.825023 + 31 +0.0 + 0 +ENDBLK + 5 +2DC + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X19 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X19 + 1 + + 0 +LINE + 5 +2DE + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +16949.951288 + 30 +0.0 + 11 +4860.0 + 21 +17064.951288 + 31 +0.0 + 0 +LINE + 5 +2DF + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +17126.727984 + 30 +0.0 + 11 +4860.0 + 21 +17241.727984 + 31 +0.0 + 0 +LINE + 5 +2E0 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +17303.504679 + 30 +0.0 + 11 +4860.0 + 21 +17418.504679 + 31 +0.0 + 0 +LINE + 5 +2E1 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +17480.281374 + 30 +0.0 + 11 +4860.0 + 21 +17595.281374 + 31 +0.0 + 0 +LINE + 5 +2E2 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +17657.05807 + 30 +0.0 + 11 +4860.0 + 21 +17772.05807 + 31 +0.0 + 0 +LINE + 5 +2E3 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +17833.834765 + 30 +0.0 + 11 +4860.0 + 21 +17948.834765 + 31 +0.0 + 0 +LINE + 5 +2E4 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +18010.61146 + 30 +0.0 + 11 +4860.0 + 21 +18125.61146 + 31 +0.0 + 0 +LINE + 5 +2E5 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +18187.388155 + 30 +0.0 + 11 +4797.611845 + 21 +18240.0 + 31 +0.0 + 0 +LINE + 5 +2E6 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +16773.174593 + 30 +0.0 + 11 +4860.0 + 21 +16888.174593 + 31 +0.0 + 0 +LINE + 5 +2E7 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +16596.397898 + 30 +0.0 + 11 +4860.0 + 21 +16711.397898 + 31 +0.0 + 0 +LINE + 5 +2E8 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +16419.621202 + 30 +0.0 + 11 +4860.0 + 21 +16534.621202 + 31 +0.0 + 0 +LINE + 5 +2E9 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +16242.844507 + 30 +0.0 + 11 +4860.0 + 21 +16357.844507 + 31 +0.0 + 0 +LINE + 5 +2EA + 8 +0 + 62 + 0 + 10 +4803.932188 + 20 +16125.0 + 30 +0.0 + 11 +4860.0 + 21 +16181.067812 + 31 +0.0 + 0 +ENDBLK + 5 +2EB + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X20 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X20 + 1 + + 0 +LINE + 5 +2ED + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +10232.436867 + 30 +0.0 + 11 +4860.0 + 21 +10347.436867 + 31 +0.0 + 0 +LINE + 5 +2EE + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +10409.213562 + 30 +0.0 + 11 +4860.0 + 21 +10524.213562 + 31 +0.0 + 0 +LINE + 5 +2EF + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +10585.990258 + 30 +0.0 + 11 +4860.0 + 21 +10700.990258 + 31 +0.0 + 0 +LINE + 5 +2F0 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +10762.766953 + 30 +0.0 + 11 +4860.0 + 21 +10877.766953 + 31 +0.0 + 0 +LINE + 5 +2F1 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +10939.543648 + 30 +0.0 + 11 +4860.0 + 21 +11054.543648 + 31 +0.0 + 0 +LINE + 5 +2F2 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +11116.320344 + 30 +0.0 + 11 +4860.0 + 21 +11231.320344 + 31 +0.0 + 0 +LINE + 5 +2F3 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +11293.097039 + 30 +0.0 + 11 +4860.0 + 21 +11408.097039 + 31 +0.0 + 0 +LINE + 5 +2F4 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +11469.873734 + 30 +0.0 + 11 +4860.0 + 21 +11584.873734 + 31 +0.0 + 0 +LINE + 5 +2F5 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +11646.650429 + 30 +0.0 + 11 +4860.0 + 21 +11761.650429 + 31 +0.0 + 0 +LINE + 5 +2F6 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +11823.427125 + 30 +0.0 + 11 +4860.0 + 21 +11938.427125 + 31 +0.0 + 0 +LINE + 5 +2F7 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +12000.20382 + 30 +0.0 + 11 +4860.0 + 21 +12115.20382 + 31 +0.0 + 0 +LINE + 5 +2F8 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +12176.980515 + 30 +0.0 + 11 +4860.0 + 21 +12291.980515 + 31 +0.0 + 0 +LINE + 5 +2F9 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +12353.757211 + 30 +0.0 + 11 +4860.0 + 21 +12468.757211 + 31 +0.0 + 0 +LINE + 5 +2FA + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +12530.533906 + 30 +0.0 + 11 +4860.0 + 21 +12645.533906 + 31 +0.0 + 0 +LINE + 5 +2FB + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +12707.310601 + 30 +0.0 + 11 +4860.0 + 21 +12822.310601 + 31 +0.0 + 0 +LINE + 5 +2FC + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +12884.087297 + 30 +0.0 + 11 +4860.0 + 21 +12999.087297 + 31 +0.0 + 0 +LINE + 5 +2FD + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +13060.863992 + 30 +0.0 + 11 +4860.0 + 21 +13175.863992 + 31 +0.0 + 0 +LINE + 5 +2FE + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +13237.640687 + 30 +0.0 + 11 +4860.0 + 21 +13352.640687 + 31 +0.0 + 0 +LINE + 5 +2FF + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +13414.417382 + 30 +0.0 + 11 +4860.0 + 21 +13529.417382 + 31 +0.0 + 0 +LINE + 5 +300 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +13591.194078 + 30 +0.0 + 11 +4860.0 + 21 +13706.194078 + 31 +0.0 + 0 +LINE + 5 +301 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +13767.970773 + 30 +0.0 + 11 +4860.0 + 21 +13882.970773 + 31 +0.0 + 0 +LINE + 5 +302 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +13944.747468 + 30 +0.0 + 11 +4860.0 + 21 +14059.747468 + 31 +0.0 + 0 +LINE + 5 +303 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +14121.524164 + 30 +0.0 + 11 +4860.0 + 21 +14236.524164 + 31 +0.0 + 0 +LINE + 5 +304 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +14298.300859 + 30 +0.0 + 11 +4860.0 + 21 +14413.300859 + 31 +0.0 + 0 +LINE + 5 +305 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +14475.077554 + 30 +0.0 + 11 +4860.0 + 21 +14590.077554 + 31 +0.0 + 0 +LINE + 5 +306 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +10055.660172 + 30 +0.0 + 11 +4860.0 + 21 +10170.660172 + 31 +0.0 + 0 +LINE + 5 +307 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +9878.883476 + 30 +0.0 + 11 +4860.0 + 21 +9993.883476 + 31 +0.0 + 0 +LINE + 5 +308 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +9702.106781 + 30 +0.0 + 11 +4860.0 + 21 +9817.106781 + 31 +0.0 + 0 +LINE + 5 +309 + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +9525.330086 + 30 +0.0 + 11 +4860.0 + 21 +9640.330086 + 31 +0.0 + 0 +LINE + 5 +30A + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +9348.553391 + 30 +0.0 + 11 +4860.0 + 21 +9463.553391 + 31 +0.0 + 0 +LINE + 5 +30B + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +9171.776695 + 30 +0.0 + 11 +4860.0 + 21 +9286.776695 + 31 +0.0 + 0 +LINE + 5 +30C + 8 +0 + 62 + 0 + 10 +4745.0 + 20 +8995.0 + 30 +0.0 + 11 +4860.0 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +30D + 8 +0 + 62 + 0 + 10 +4921.776695 + 20 +8995.0 + 30 +0.0 + 11 +5036.776695 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +30E + 8 +0 + 62 + 0 + 10 +5098.553391 + 20 +8995.0 + 30 +0.0 + 11 +5213.553391 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +30F + 8 +0 + 62 + 0 + 10 +5275.330086 + 20 +8995.0 + 30 +0.0 + 11 +5390.330086 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +310 + 8 +0 + 62 + 0 + 10 +5452.106781 + 20 +8995.0 + 30 +0.0 + 11 +5567.106781 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +311 + 8 +0 + 62 + 0 + 10 +5628.883476 + 20 +8995.0 + 30 +0.0 + 11 +5743.883476 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +312 + 8 +0 + 62 + 0 + 10 +5805.660172 + 20 +8995.0 + 30 +0.0 + 11 +5920.660172 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +313 + 8 +0 + 62 + 0 + 10 +5982.436867 + 20 +8995.0 + 30 +0.0 + 11 +6097.436867 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +314 + 8 +0 + 62 + 0 + 10 +6159.213562 + 20 +8995.0 + 30 +0.0 + 11 +6274.213562 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +315 + 8 +0 + 62 + 0 + 10 +6335.990258 + 20 +8995.0 + 30 +0.0 + 11 +6450.990258 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +316 + 8 +0 + 62 + 0 + 10 +6512.766953 + 20 +8995.0 + 30 +0.0 + 11 +6627.766953 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +317 + 8 +0 + 62 + 0 + 10 +6689.543648 + 20 +8995.0 + 30 +0.0 + 11 +6804.543648 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +318 + 8 +0 + 62 + 0 + 10 +6866.320344 + 20 +8995.0 + 30 +0.0 + 11 +6981.320344 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +319 + 8 +0 + 62 + 0 + 10 +7043.097039 + 20 +8995.0 + 30 +0.0 + 11 +7158.097039 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +31A + 8 +0 + 62 + 0 + 10 +7219.873734 + 20 +8995.0 + 30 +0.0 + 11 +7334.873734 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +31B + 8 +0 + 62 + 0 + 10 +7396.650429 + 20 +8995.0 + 30 +0.0 + 11 +7511.650429 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +31C + 8 +0 + 62 + 0 + 10 +7573.427125 + 20 +8995.0 + 30 +0.0 + 11 +7688.427125 + 21 +9110.0 + 31 +0.0 + 0 +ENDBLK + 5 +31D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X21 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X21 + 1 + + 0 +LINE + 5 +31F + 8 +0 + 62 + 0 + 10 +9164.417382 + 20 +8995.0 + 30 +0.0 + 11 +9279.417382 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +320 + 8 +0 + 62 + 0 + 10 +8987.640687 + 20 +8995.0 + 30 +0.0 + 11 +9102.640687 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +321 + 8 +0 + 62 + 0 + 10 +8810.863992 + 20 +8995.0 + 30 +0.0 + 11 +8925.863992 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +322 + 8 +0 + 62 + 0 + 10 +9341.194078 + 20 +8995.0 + 30 +0.0 + 11 +9456.194078 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +323 + 8 +0 + 62 + 0 + 10 +9517.970773 + 20 +8995.0 + 30 +0.0 + 11 +9632.970773 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +324 + 8 +0 + 62 + 0 + 10 +9694.747468 + 20 +8995.0 + 30 +0.0 + 11 +9809.747468 + 21 +9110.0 + 31 +0.0 + 0 +ENDBLK + 5 +325 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X22 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X22 + 1 + + 0 +LINE + 5 +327 + 8 +0 + 62 + 0 + 10 +13583.834765 + 20 +8995.0 + 30 +0.0 + 11 +13698.834765 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +328 + 8 +0 + 62 + 0 + 10 +13407.05807 + 20 +8995.0 + 30 +0.0 + 11 +13522.05807 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +329 + 8 +0 + 62 + 0 + 10 +13230.281374 + 20 +8995.0 + 30 +0.0 + 11 +13345.281374 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +32A + 8 +0 + 62 + 0 + 10 +13053.504679 + 20 +8995.0 + 30 +0.0 + 11 +13168.504679 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +32B + 8 +0 + 62 + 0 + 10 +12876.727984 + 20 +8995.0 + 30 +0.0 + 11 +12991.727984 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +32C + 8 +0 + 62 + 0 + 10 +12699.951288 + 20 +8995.0 + 30 +0.0 + 11 +12814.951288 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +32D + 8 +0 + 62 + 0 + 10 +12523.174593 + 20 +8995.0 + 30 +0.0 + 11 +12638.174593 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +32E + 8 +0 + 62 + 0 + 10 +12346.397898 + 20 +8995.0 + 30 +0.0 + 11 +12461.397898 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +32F + 8 +0 + 62 + 0 + 10 +12169.621202 + 20 +8995.0 + 30 +0.0 + 11 +12284.621202 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +330 + 8 +0 + 62 + 0 + 10 +11992.844507 + 20 +8995.0 + 30 +0.0 + 11 +12107.844507 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +331 + 8 +0 + 62 + 0 + 10 +11816.067812 + 20 +8995.0 + 30 +0.0 + 11 +11931.067812 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +332 + 8 +0 + 62 + 0 + 10 +11639.291117 + 20 +8995.0 + 30 +0.0 + 11 +11754.291117 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +333 + 8 +0 + 62 + 0 + 10 +11462.514421 + 20 +8995.0 + 30 +0.0 + 11 +11577.514421 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +334 + 8 +0 + 62 + 0 + 10 +11285.737726 + 20 +8995.0 + 30 +0.0 + 11 +11400.737726 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +335 + 8 +0 + 62 + 0 + 10 +13760.61146 + 20 +8995.0 + 30 +0.0 + 11 +13875.61146 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +336 + 8 +0 + 62 + 0 + 10 +13937.388155 + 20 +8995.0 + 30 +0.0 + 11 +14052.388155 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +337 + 8 +0 + 62 + 0 + 10 +14114.164851 + 20 +8995.0 + 30 +0.0 + 11 +14229.164851 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +338 + 8 +0 + 62 + 0 + 10 +14290.941546 + 20 +8995.0 + 30 +0.0 + 11 +14405.941546 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +339 + 8 +0 + 62 + 0 + 10 +14467.718241 + 20 +8995.0 + 30 +0.0 + 11 +14582.718241 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +33A + 8 +0 + 62 + 0 + 10 +14644.494937 + 20 +8995.0 + 30 +0.0 + 11 +14759.494937 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +33B + 8 +0 + 62 + 0 + 10 +14821.271632 + 20 +8995.0 + 30 +0.0 + 11 +14936.271632 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +33C + 8 +0 + 62 + 0 + 10 +14998.048327 + 20 +8995.0 + 30 +0.0 + 11 +15113.048327 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +33D + 8 +0 + 62 + 0 + 10 +15174.825023 + 20 +8995.0 + 30 +0.0 + 11 +15289.825023 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +33E + 8 +0 + 62 + 0 + 10 +15351.601718 + 20 +8995.0 + 30 +0.0 + 11 +15466.601718 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +33F + 8 +0 + 62 + 0 + 10 +15528.378413 + 20 +8995.0 + 30 +0.0 + 11 +15643.378413 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +340 + 8 +0 + 62 + 0 + 10 +15705.155108 + 20 +8995.0 + 30 +0.0 + 11 +15820.155108 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +341 + 8 +0 + 62 + 0 + 10 +15881.931804 + 20 +8995.0 + 30 +0.0 + 11 +15996.931804 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +342 + 8 +0 + 62 + 0 + 10 +16058.708499 + 20 +8995.0 + 30 +0.0 + 11 +16115.0 + 21 +9051.291501 + 31 +0.0 + 0 +ENDBLK + 5 +343 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X23 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X23 + 1 + + 0 +LINE + 5 +345 + 8 +0 + 62 + 0 + 10 +17826.475452 + 20 +8995.0 + 30 +0.0 + 11 +17941.475452 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +346 + 8 +0 + 62 + 0 + 10 +17649.698757 + 20 +8995.0 + 30 +0.0 + 11 +17764.698757 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +347 + 8 +0 + 62 + 0 + 10 +17472.922061 + 20 +8995.0 + 30 +0.0 + 11 +17587.922061 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +348 + 8 +0 + 62 + 0 + 10 +17375.0 + 20 +9073.854634 + 30 +0.0 + 11 +17411.145366 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +349 + 8 +0 + 62 + 0 + 10 +18003.252147 + 20 +8995.0 + 30 +0.0 + 11 +18118.252147 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +34A + 8 +0 + 62 + 0 + 10 +18180.028843 + 20 +8995.0 + 30 +0.0 + 11 +18295.028843 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +34B + 8 +0 + 62 + 0 + 10 +18356.805538 + 20 +8995.0 + 30 +0.0 + 11 +18471.805538 + 21 +9110.0 + 31 +0.0 + 0 +ENDBLK + 5 +34C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X24 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X24 + 1 + + 0 +LINE + 5 +34E + 8 +0 + 62 + 0 + 10 +20654.902577 + 20 +8995.0 + 30 +0.0 + 11 +20769.902577 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +34F + 8 +0 + 62 + 0 + 10 +20478.125881 + 20 +8995.0 + 30 +0.0 + 11 +20593.125881 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +350 + 8 +0 + 62 + 0 + 10 +20375.0 + 20 +9068.650814 + 30 +0.0 + 11 +20416.349186 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +351 + 8 +0 + 62 + 0 + 10 +20831.679272 + 20 +8995.0 + 30 +0.0 + 11 +20946.679272 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +352 + 8 +0 + 62 + 0 + 10 +21008.455967 + 20 +8995.0 + 30 +0.0 + 11 +21123.455967 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +353 + 8 +0 + 62 + 0 + 10 +21185.232663 + 20 +8995.0 + 30 +0.0 + 11 +21300.232663 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +354 + 8 +0 + 62 + 0 + 10 +21362.009358 + 20 +8995.0 + 30 +0.0 + 11 +21365.0 + 21 +8997.990642 + 31 +0.0 + 0 +ENDBLK + 5 +355 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X25 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X25 + 1 + + 0 +LINE + 5 +357 + 8 +0 + 62 + 0 + 10 +22422.66953 + 20 +8995.0 + 30 +0.0 + 11 +22537.66953 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +358 + 8 +0 + 62 + 0 + 10 +22245.892834 + 20 +8995.0 + 30 +0.0 + 11 +22360.892834 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +359 + 8 +0 + 62 + 0 + 10 +22069.116139 + 20 +8995.0 + 30 +0.0 + 11 +22184.116139 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +35A + 8 +0 + 62 + 0 + 10 +21892.339444 + 20 +8995.0 + 30 +0.0 + 11 +22007.339444 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +35B + 8 +0 + 62 + 0 + 10 +22599.446225 + 20 +8995.0 + 30 +0.0 + 11 +22714.446225 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +35C + 8 +0 + 62 + 0 + 10 +22776.22292 + 20 +8995.0 + 30 +0.0 + 11 +22891.22292 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +35D + 8 +0 + 62 + 0 + 10 +22952.999616 + 20 +8995.0 + 30 +0.0 + 11 +23067.999616 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +35E + 8 +0 + 62 + 0 + 10 +23129.776311 + 20 +8995.0 + 30 +0.0 + 11 +23240.0 + 21 +9105.223689 + 31 +0.0 + 0 +ENDBLK + 5 +35F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X26 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X26 + 1 + + 0 +LINE + 5 +361 + 8 +0 + 62 + 0 + 10 +21363.757211 + 20 +22255.0 + 30 +0.0 + 11 +21478.757211 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +362 + 8 +0 + 62 + 0 + 10 +21186.980515 + 20 +22255.0 + 30 +0.0 + 11 +21301.980515 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +363 + 8 +0 + 62 + 0 + 10 +21010.20382 + 20 +22255.0 + 30 +0.0 + 11 +21125.20382 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +364 + 8 +0 + 62 + 0 + 10 +20833.427125 + 20 +22255.0 + 30 +0.0 + 11 +20948.427125 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +365 + 8 +0 + 62 + 0 + 10 +20656.650429 + 20 +22255.0 + 30 +0.0 + 11 +20771.650429 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +366 + 8 +0 + 62 + 0 + 10 +20479.873734 + 20 +22255.0 + 30 +0.0 + 11 +20594.873734 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +367 + 8 +0 + 62 + 0 + 10 +20303.097039 + 20 +22255.0 + 30 +0.0 + 11 +20418.097039 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +368 + 8 +0 + 62 + 0 + 10 +20126.320344 + 20 +22255.0 + 30 +0.0 + 11 +20241.320344 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +369 + 8 +0 + 62 + 0 + 10 +19949.543648 + 20 +22255.0 + 30 +0.0 + 11 +20064.543648 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +36A + 8 +0 + 62 + 0 + 10 +19772.766953 + 20 +22255.0 + 30 +0.0 + 11 +19887.766953 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +36B + 8 +0 + 62 + 0 + 10 +21540.533906 + 20 +22255.0 + 30 +0.0 + 11 +21655.533906 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +36C + 8 +0 + 62 + 0 + 10 +21717.310601 + 20 +22255.0 + 30 +0.0 + 11 +21832.310601 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +36D + 8 +0 + 62 + 0 + 10 +21894.087297 + 20 +22255.0 + 30 +0.0 + 11 +22009.087297 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +36E + 8 +0 + 62 + 0 + 10 +22070.863992 + 20 +22255.0 + 30 +0.0 + 11 +22185.863992 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +36F + 8 +0 + 62 + 0 + 10 +22247.640687 + 20 +22255.0 + 30 +0.0 + 11 +22362.640687 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +370 + 8 +0 + 62 + 0 + 10 +22424.417382 + 20 +22255.0 + 30 +0.0 + 11 +22539.417382 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +371 + 8 +0 + 62 + 0 + 10 +22601.194078 + 20 +22255.0 + 30 +0.0 + 11 +22716.194078 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +372 + 8 +0 + 62 + 0 + 10 +22777.970773 + 20 +22255.0 + 30 +0.0 + 11 +22892.970773 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +373 + 8 +0 + 62 + 0 + 10 +22954.747468 + 20 +22255.0 + 30 +0.0 + 11 +23069.747468 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +374 + 8 +0 + 62 + 0 + 10 +23131.524164 + 20 +22255.0 + 30 +0.0 + 11 +23246.524164 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +375 + 8 +0 + 62 + 0 + 10 +23308.300859 + 20 +22255.0 + 30 +0.0 + 11 +23365.0 + 21 +22311.699141 + 31 +0.0 + 0 +ENDBLK + 5 +376 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X27 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X27 + 1 + + 0 +LINE + 5 +378 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +21230.505063 + 30 +0.0 + 11 +26995.0 + 21 +21345.505063 + 31 +0.0 + 0 +LINE + 5 +379 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +21407.281759 + 30 +0.0 + 11 +26995.0 + 21 +21522.281759 + 31 +0.0 + 0 +LINE + 5 +37A + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +21584.058454 + 30 +0.0 + 11 +26995.0 + 21 +21699.058454 + 31 +0.0 + 0 +LINE + 5 +37B + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +21760.835149 + 30 +0.0 + 11 +26995.0 + 21 +21875.835149 + 31 +0.0 + 0 +LINE + 5 +37C + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +21937.611845 + 30 +0.0 + 11 +26995.0 + 21 +22052.611845 + 31 +0.0 + 0 +LINE + 5 +37D + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +22114.38854 + 30 +0.0 + 11 +26995.0 + 21 +22229.38854 + 31 +0.0 + 0 +LINE + 5 +37E + 8 +0 + 62 + 0 + 10 +26843.834765 + 20 +22255.0 + 30 +0.0 + 11 +26958.834765 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +37F + 8 +0 + 62 + 0 + 10 +26667.05807 + 20 +22255.0 + 30 +0.0 + 11 +26782.05807 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +380 + 8 +0 + 62 + 0 + 10 +26490.281374 + 20 +22255.0 + 30 +0.0 + 11 +26605.281374 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +381 + 8 +0 + 62 + 0 + 10 +26313.504679 + 20 +22255.0 + 30 +0.0 + 11 +26428.504679 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +382 + 8 +0 + 62 + 0 + 10 +26136.727984 + 20 +22255.0 + 30 +0.0 + 11 +26251.727984 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +383 + 8 +0 + 62 + 0 + 10 +25959.951288 + 20 +22255.0 + 30 +0.0 + 11 +26074.951288 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +384 + 8 +0 + 62 + 0 + 10 +25783.174593 + 20 +22255.0 + 30 +0.0 + 11 +25898.174593 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +385 + 8 +0 + 62 + 0 + 10 +25606.397898 + 20 +22255.0 + 30 +0.0 + 11 +25721.397898 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +386 + 8 +0 + 62 + 0 + 10 +25429.621202 + 20 +22255.0 + 30 +0.0 + 11 +25544.621202 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +387 + 8 +0 + 62 + 0 + 10 +25252.844507 + 20 +22255.0 + 30 +0.0 + 11 +25367.844507 + 21 +22370.0 + 31 +0.0 + 0 +LINE + 5 +388 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +21053.728368 + 30 +0.0 + 11 +26995.0 + 21 +21168.728368 + 31 +0.0 + 0 +LINE + 5 +389 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +20876.951673 + 30 +0.0 + 11 +26995.0 + 21 +20991.951673 + 31 +0.0 + 0 +LINE + 5 +38A + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +20700.174977 + 30 +0.0 + 11 +26995.0 + 21 +20815.174977 + 31 +0.0 + 0 +LINE + 5 +38B + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +20523.398282 + 30 +0.0 + 11 +26995.0 + 21 +20638.398282 + 31 +0.0 + 0 +LINE + 5 +38C + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +20346.621587 + 30 +0.0 + 11 +26995.0 + 21 +20461.621587 + 31 +0.0 + 0 +LINE + 5 +38D + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +20169.844892 + 30 +0.0 + 11 +26995.0 + 21 +20284.844892 + 31 +0.0 + 0 +LINE + 5 +38E + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +19993.068196 + 30 +0.0 + 11 +26995.0 + 21 +20108.068196 + 31 +0.0 + 0 +LINE + 5 +38F + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +19816.291501 + 30 +0.0 + 11 +26995.0 + 21 +19931.291501 + 31 +0.0 + 0 +LINE + 5 +390 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +19639.514806 + 30 +0.0 + 11 +26995.0 + 21 +19754.514806 + 31 +0.0 + 0 +LINE + 5 +391 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +19462.73811 + 30 +0.0 + 11 +26995.0 + 21 +19577.73811 + 31 +0.0 + 0 +LINE + 5 +392 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +19285.961415 + 30 +0.0 + 11 +26995.0 + 21 +19400.961415 + 31 +0.0 + 0 +LINE + 5 +393 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +19109.18472 + 30 +0.0 + 11 +26995.0 + 21 +19224.18472 + 31 +0.0 + 0 +LINE + 5 +394 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +18932.408025 + 30 +0.0 + 11 +26995.0 + 21 +19047.408025 + 31 +0.0 + 0 +LINE + 5 +395 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +18755.631329 + 30 +0.0 + 11 +26995.0 + 21 +18870.631329 + 31 +0.0 + 0 +LINE + 5 +396 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +18578.854634 + 30 +0.0 + 11 +26995.0 + 21 +18693.854634 + 31 +0.0 + 0 +LINE + 5 +397 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +18402.077939 + 30 +0.0 + 11 +26995.0 + 21 +18517.077939 + 31 +0.0 + 0 +ENDBLK + 5 +398 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X28 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X28 + 1 + + 0 +LINE + 5 +39A + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +14866.544033 + 30 +0.0 + 11 +26995.0 + 21 +14981.544033 + 31 +0.0 + 0 +LINE + 5 +39B + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +15043.320728 + 30 +0.0 + 11 +26995.0 + 21 +15158.320728 + 31 +0.0 + 0 +LINE + 5 +39C + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +15220.097423 + 30 +0.0 + 11 +26995.0 + 21 +15335.097423 + 31 +0.0 + 0 +LINE + 5 +39D + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +15396.874119 + 30 +0.0 + 11 +26995.0 + 21 +15511.874119 + 31 +0.0 + 0 +LINE + 5 +39E + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +15573.650814 + 30 +0.0 + 11 +26995.0 + 21 +15688.650814 + 31 +0.0 + 0 +LINE + 5 +39F + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +15750.427509 + 30 +0.0 + 11 +26995.0 + 21 +15865.427509 + 31 +0.0 + 0 +LINE + 5 +3A0 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +15927.204204 + 30 +0.0 + 11 +26995.0 + 21 +16042.204204 + 31 +0.0 + 0 +LINE + 5 +3A1 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +16103.9809 + 30 +0.0 + 11 +26995.0 + 21 +16218.9809 + 31 +0.0 + 0 +LINE + 5 +3A2 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +16280.757595 + 30 +0.0 + 11 +26995.0 + 21 +16395.757595 + 31 +0.0 + 0 +LINE + 5 +3A3 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +16457.53429 + 30 +0.0 + 11 +26995.0 + 21 +16572.53429 + 31 +0.0 + 0 +LINE + 5 +3A4 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +16634.310986 + 30 +0.0 + 11 +26995.0 + 21 +16749.310986 + 31 +0.0 + 0 +LINE + 5 +3A5 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +16811.087681 + 30 +0.0 + 11 +26995.0 + 21 +16926.087681 + 31 +0.0 + 0 +LINE + 5 +3A6 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +16987.864376 + 30 +0.0 + 11 +26995.0 + 21 +17102.864376 + 31 +0.0 + 0 +LINE + 5 +3A7 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +17164.641072 + 30 +0.0 + 11 +26995.0 + 21 +17279.641072 + 31 +0.0 + 0 +LINE + 5 +3A8 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +17341.417767 + 30 +0.0 + 11 +26995.0 + 21 +17456.417767 + 31 +0.0 + 0 +LINE + 5 +3A9 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +17518.194462 + 30 +0.0 + 11 +26995.0 + 21 +17633.194462 + 31 +0.0 + 0 +LINE + 5 +3AA + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +17694.971157 + 30 +0.0 + 11 +26925.028843 + 21 +17740.0 + 31 +0.0 + 0 +LINE + 5 +3AB + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +14689.767337 + 30 +0.0 + 11 +26995.0 + 21 +14804.767337 + 31 +0.0 + 0 +LINE + 5 +3AC + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +14512.990642 + 30 +0.0 + 11 +26995.0 + 21 +14627.990642 + 31 +0.0 + 0 +LINE + 5 +3AD + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +14336.213947 + 30 +0.0 + 11 +26995.0 + 21 +14451.213947 + 31 +0.0 + 0 +LINE + 5 +3AE + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +14159.437252 + 30 +0.0 + 11 +26995.0 + 21 +14274.437252 + 31 +0.0 + 0 +LINE + 5 +3AF + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +13982.660556 + 30 +0.0 + 11 +26995.0 + 21 +14097.660556 + 31 +0.0 + 0 +LINE + 5 +3B0 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +13805.883861 + 30 +0.0 + 11 +26995.0 + 21 +13920.883861 + 31 +0.0 + 0 +LINE + 5 +3B1 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +13629.107166 + 30 +0.0 + 11 +26995.0 + 21 +13744.107166 + 31 +0.0 + 0 +LINE + 5 +3B2 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +13452.33047 + 30 +0.0 + 11 +26995.0 + 21 +13567.33047 + 31 +0.0 + 0 +LINE + 5 +3B3 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +13275.553775 + 30 +0.0 + 11 +26995.0 + 21 +13390.553775 + 31 +0.0 + 0 +LINE + 5 +3B4 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +13098.77708 + 30 +0.0 + 11 +26995.0 + 21 +13213.77708 + 31 +0.0 + 0 +LINE + 5 +3B5 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +12922.000384 + 30 +0.0 + 11 +26995.0 + 21 +13037.000384 + 31 +0.0 + 0 +LINE + 5 +3B6 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +12745.223689 + 30 +0.0 + 11 +26995.0 + 21 +12860.223689 + 31 +0.0 + 0 +LINE + 5 +3B7 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +12568.446994 + 30 +0.0 + 11 +26995.0 + 21 +12683.446994 + 31 +0.0 + 0 +LINE + 5 +3B8 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +12391.670299 + 30 +0.0 + 11 +26995.0 + 21 +12506.670299 + 31 +0.0 + 0 +LINE + 5 +3B9 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +12214.893603 + 30 +0.0 + 11 +26995.0 + 21 +12329.893603 + 31 +0.0 + 0 +LINE + 5 +3BA + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +12038.116908 + 30 +0.0 + 11 +26995.0 + 21 +12153.116908 + 31 +0.0 + 0 +ENDBLK + 5 +3BB + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X29 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X29 + 1 + + 0 +LINE + 5 +3BD + 8 +0 + 62 + 0 + 10 +25427.87335 + 20 +8995.0 + 30 +0.0 + 11 +25542.87335 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3BE + 8 +0 + 62 + 0 + 10 +25604.650045 + 20 +8995.0 + 30 +0.0 + 11 +25719.650045 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3BF + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +10270.349955 + 30 +0.0 + 11 +26974.650045 + 21 +10365.0 + 31 +0.0 + 0 +LINE + 5 +3C0 + 8 +0 + 62 + 0 + 10 +25781.42674 + 20 +8995.0 + 30 +0.0 + 11 +25896.42674 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3C1 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +10093.57326 + 30 +0.0 + 11 +26995.0 + 21 +10208.57326 + 31 +0.0 + 0 +LINE + 5 +3C2 + 8 +0 + 62 + 0 + 10 +25958.203436 + 20 +8995.0 + 30 +0.0 + 11 +26073.203436 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3C3 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +9916.796564 + 30 +0.0 + 11 +26995.0 + 21 +10031.796564 + 31 +0.0 + 0 +LINE + 5 +3C4 + 8 +0 + 62 + 0 + 10 +26134.980131 + 20 +8995.0 + 30 +0.0 + 11 +26249.980131 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3C5 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +9740.019869 + 30 +0.0 + 11 +26995.0 + 21 +9855.019869 + 31 +0.0 + 0 +LINE + 5 +3C6 + 8 +0 + 62 + 0 + 10 +26311.756826 + 20 +8995.0 + 30 +0.0 + 11 +26426.756826 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3C7 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +9563.243174 + 30 +0.0 + 11 +26995.0 + 21 +9678.243174 + 31 +0.0 + 0 +LINE + 5 +3C8 + 8 +0 + 62 + 0 + 10 +26488.533521 + 20 +8995.0 + 30 +0.0 + 11 +26603.533521 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3C9 + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +9386.466479 + 30 +0.0 + 11 +26995.0 + 21 +9501.466479 + 31 +0.0 + 0 +LINE + 5 +3CA + 8 +0 + 62 + 0 + 10 +26665.310217 + 20 +8995.0 + 30 +0.0 + 11 +26780.310217 + 21 +9110.0 + 31 +0.0 + 0 +LINE + 5 +3CB + 8 +0 + 62 + 0 + 10 +26880.0 + 20 +9209.689783 + 30 +0.0 + 11 +26995.0 + 21 +9324.689783 + 31 +0.0 + 0 +LINE + 5 +3CC + 8 +0 + 62 + 0 + 10 +26842.086912 + 20 +8995.0 + 30 +0.0 + 11 +26995.0 + 21 +9147.913088 + 31 +0.0 + 0 +ENDBLK + 5 +3CD + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X30 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X30 + 1 + + 0 +LINE + 5 +3CF + 8 +0 + 62 + 0 + 10 +21332.26189 + 20 +13915.0 + 30 +0.0 + 11 +21457.26189 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +3D0 + 8 +0 + 62 + 0 + 10 +21240.0 + 20 +13999.514806 + 30 +0.0 + 11 +21280.485194 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +3D1 + 8 +0 + 62 + 0 + 10 +21509.038585 + 20 +13915.0 + 30 +0.0 + 11 +21565.0 + 21 +13970.961415 + 31 +0.0 + 0 +LINE + 5 +3D2 + 8 +0 + 62 + 0 + 10 +21371.42674 + 20 +13915.0 + 30 +0.0 + 11 +21246.42674 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +3D3 + 8 +0 + 62 + 0 + 10 +21548.203436 + 20 +13915.0 + 30 +0.0 + 11 +21423.203436 + 21 +14040.0 + 31 +0.0 + 0 +ENDBLK + 5 +3D4 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X31 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X31 + 1 + + 0 +LINE + 5 +3D6 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +15432.73811 + 30 +0.0 + 11 +22975.0 + 21 +15557.73811 + 31 +0.0 + 0 +LINE + 5 +3D7 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +15609.514806 + 30 +0.0 + 11 +22865.485194 + 21 +15625.0 + 31 +0.0 + 0 +LINE + 5 +3D8 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +15255.961415 + 30 +0.0 + 11 +22975.0 + 21 +15380.961415 + 31 +0.0 + 0 +LINE + 5 +3D9 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +15316.63056 + 30 +0.0 + 11 +22850.0 + 21 +15441.63056 + 31 +0.0 + 0 +LINE + 5 +3DA + 8 +0 + 62 + 0 + 10 +22889.853865 + 20 +15225.0 + 30 +0.0 + 11 +22850.0 + 21 +15264.853865 + 31 +0.0 + 0 +LINE + 5 +3DB + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +15493.407256 + 30 +0.0 + 11 +22850.0 + 21 +15618.407256 + 31 +0.0 + 0 +ENDBLK + 5 +3DC + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X32 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X32 + 1 + + 0 +LINE + 5 +3DE + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +12250.757595 + 30 +0.0 + 11 +22975.0 + 21 +12375.757595 + 31 +0.0 + 0 +LINE + 5 +3DF + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +12427.53429 + 30 +0.0 + 11 +22975.0 + 21 +12552.53429 + 31 +0.0 + 0 +LINE + 5 +3E0 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +12604.310986 + 30 +0.0 + 11 +22975.0 + 21 +12729.310986 + 31 +0.0 + 0 +LINE + 5 +3E1 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +12781.087681 + 30 +0.0 + 11 +22975.0 + 21 +12906.087681 + 31 +0.0 + 0 +LINE + 5 +3E2 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +12957.864376 + 30 +0.0 + 11 +22975.0 + 21 +13082.864376 + 31 +0.0 + 0 +LINE + 5 +3E3 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +13134.641072 + 30 +0.0 + 11 +22975.0 + 21 +13259.641072 + 31 +0.0 + 0 +LINE + 5 +3E4 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +13311.417767 + 30 +0.0 + 11 +22975.0 + 21 +13436.417767 + 31 +0.0 + 0 +LINE + 5 +3E5 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +13488.194462 + 30 +0.0 + 11 +22975.0 + 21 +13613.194462 + 31 +0.0 + 0 +LINE + 5 +3E6 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +13664.971157 + 30 +0.0 + 11 +22975.0 + 21 +13789.971157 + 31 +0.0 + 0 +LINE + 5 +3E7 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +13841.747853 + 30 +0.0 + 11 +22975.0 + 21 +13966.747853 + 31 +0.0 + 0 +LINE + 5 +3E8 + 8 +0 + 62 + 0 + 10 +22746.475452 + 20 +13915.0 + 30 +0.0 + 11 +22975.0 + 21 +14143.524548 + 31 +0.0 + 0 +LINE + 5 +3E9 + 8 +0 + 62 + 0 + 10 +22569.698757 + 20 +13915.0 + 30 +0.0 + 11 +22694.698757 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +3EA + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +14195.301243 + 30 +0.0 + 11 +22975.0 + 21 +14320.301243 + 31 +0.0 + 0 +LINE + 5 +3EB + 8 +0 + 62 + 0 + 10 +22450.0 + 20 +13972.077939 + 30 +0.0 + 11 +22517.922061 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +3EC + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +12073.9809 + 30 +0.0 + 11 +22975.0 + 21 +12198.9809 + 31 +0.0 + 0 +LINE + 5 +3ED + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +11897.204204 + 30 +0.0 + 11 +22975.0 + 21 +12022.204204 + 31 +0.0 + 0 +LINE + 5 +3EE + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +11720.427509 + 30 +0.0 + 11 +22975.0 + 21 +11845.427509 + 31 +0.0 + 0 +LINE + 5 +3EF + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +11543.650814 + 30 +0.0 + 11 +22975.0 + 21 +11668.650814 + 31 +0.0 + 0 +LINE + 5 +3F0 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +11366.874119 + 30 +0.0 + 11 +22975.0 + 21 +11491.874119 + 31 +0.0 + 0 +LINE + 5 +3F1 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +11190.097423 + 30 +0.0 + 11 +22975.0 + 21 +11315.097423 + 31 +0.0 + 0 +LINE + 5 +3F2 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +11013.320728 + 30 +0.0 + 11 +22975.0 + 21 +11138.320728 + 31 +0.0 + 0 +LINE + 5 +3F3 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +10836.544033 + 30 +0.0 + 11 +22975.0 + 21 +10961.544033 + 31 +0.0 + 0 +LINE + 5 +3F4 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +10659.767337 + 30 +0.0 + 11 +22975.0 + 21 +10784.767337 + 31 +0.0 + 0 +LINE + 5 +3F5 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +10482.990642 + 30 +0.0 + 11 +22975.0 + 21 +10607.990642 + 31 +0.0 + 0 +LINE + 5 +3F6 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +10306.213947 + 30 +0.0 + 11 +22975.0 + 21 +10431.213947 + 31 +0.0 + 0 +LINE + 5 +3F7 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +10129.437252 + 30 +0.0 + 11 +22975.0 + 21 +10254.437252 + 31 +0.0 + 0 +LINE + 5 +3F8 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +9952.660556 + 30 +0.0 + 11 +22975.0 + 21 +10077.660556 + 31 +0.0 + 0 +LINE + 5 +3F9 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +9775.883861 + 30 +0.0 + 11 +22975.0 + 21 +9900.883861 + 31 +0.0 + 0 +LINE + 5 +3FA + 8 +0 + 62 + 0 + 10 +22865.892834 + 20 +9615.0 + 30 +0.0 + 11 +22975.0 + 21 +9724.107166 + 31 +0.0 + 0 +LINE + 5 +3FB + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +11604.319959 + 30 +0.0 + 11 +22850.0 + 21 +11729.319959 + 31 +0.0 + 0 +LINE + 5 +3FC + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +11427.543264 + 30 +0.0 + 11 +22850.0 + 21 +11552.543264 + 31 +0.0 + 0 +LINE + 5 +3FD + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +11250.766569 + 30 +0.0 + 11 +22850.0 + 21 +11375.766569 + 31 +0.0 + 0 +LINE + 5 +3FE + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +11073.989873 + 30 +0.0 + 11 +22850.0 + 21 +11198.989873 + 31 +0.0 + 0 +LINE + 5 +3FF + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +10897.213178 + 30 +0.0 + 11 +22850.0 + 21 +11022.213178 + 31 +0.0 + 0 +LINE + 5 +400 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +10720.436483 + 30 +0.0 + 11 +22850.0 + 21 +10845.436483 + 31 +0.0 + 0 +LINE + 5 +401 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +10543.659787 + 30 +0.0 + 11 +22850.0 + 21 +10668.659787 + 31 +0.0 + 0 +LINE + 5 +402 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +10366.883092 + 30 +0.0 + 11 +22850.0 + 21 +10491.883092 + 31 +0.0 + 0 +LINE + 5 +403 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +10190.106397 + 30 +0.0 + 11 +22850.0 + 21 +10315.106397 + 31 +0.0 + 0 +LINE + 5 +404 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +10013.329701 + 30 +0.0 + 11 +22850.0 + 21 +10138.329701 + 31 +0.0 + 0 +LINE + 5 +405 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +9836.553006 + 30 +0.0 + 11 +22850.0 + 21 +9961.553006 + 31 +0.0 + 0 +LINE + 5 +406 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +9659.776311 + 30 +0.0 + 11 +22850.0 + 21 +9784.776311 + 31 +0.0 + 0 +LINE + 5 +407 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +11781.096654 + 30 +0.0 + 11 +22850.0 + 21 +11906.096654 + 31 +0.0 + 0 +LINE + 5 +408 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +11957.87335 + 30 +0.0 + 11 +22850.0 + 21 +12082.87335 + 31 +0.0 + 0 +LINE + 5 +409 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +12134.650045 + 30 +0.0 + 11 +22850.0 + 21 +12259.650045 + 31 +0.0 + 0 +LINE + 5 +40A + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +12311.42674 + 30 +0.0 + 11 +22850.0 + 21 +12436.42674 + 31 +0.0 + 0 +LINE + 5 +40B + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +12488.203436 + 30 +0.0 + 11 +22850.0 + 21 +12613.203436 + 31 +0.0 + 0 +LINE + 5 +40C + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +12664.980131 + 30 +0.0 + 11 +22850.0 + 21 +12789.980131 + 31 +0.0 + 0 +LINE + 5 +40D + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +12841.756826 + 30 +0.0 + 11 +22850.0 + 21 +12966.756826 + 31 +0.0 + 0 +LINE + 5 +40E + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +13018.533521 + 30 +0.0 + 11 +22850.0 + 21 +13143.533521 + 31 +0.0 + 0 +LINE + 5 +40F + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +13195.310217 + 30 +0.0 + 11 +22850.0 + 21 +13320.310217 + 31 +0.0 + 0 +LINE + 5 +410 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +13372.086912 + 30 +0.0 + 11 +22850.0 + 21 +13497.086912 + 31 +0.0 + 0 +LINE + 5 +411 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +13548.863607 + 30 +0.0 + 11 +22850.0 + 21 +13673.863607 + 31 +0.0 + 0 +LINE + 5 +412 + 8 +0 + 62 + 0 + 10 +22608.863607 + 20 +13915.0 + 30 +0.0 + 11 +22483.863607 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +413 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +13725.640303 + 30 +0.0 + 11 +22850.0 + 21 +13850.640303 + 31 +0.0 + 0 +LINE + 5 +414 + 8 +0 + 62 + 0 + 10 +22785.640303 + 20 +13915.0 + 30 +0.0 + 11 +22660.640303 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +415 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +13902.416998 + 30 +0.0 + 11 +22837.416998 + 21 +14040.0 + 31 +0.0 + 0 +LINE + 5 +416 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +14079.193693 + 30 +0.0 + 11 +22850.0 + 21 +14204.193693 + 31 +0.0 + 0 +LINE + 5 +417 + 8 +0 + 62 + 0 + 10 +22975.0 + 20 +14255.970389 + 30 +0.0 + 11 +22890.970389 + 21 +14340.0 + 31 +0.0 + 0 +ENDBLK + 5 +418 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X33 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X33 + 1 + + 0 +LINE + 5 +41A + 8 +0 + 62 + 0 + 10 +7628.805922 + 20 +16475.0 + 30 +0.0 + 11 +7740.0 + 21 +16586.194078 + 31 +0.0 + 0 +LINE + 5 +41B + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +16637.970773 + 30 +0.0 + 11 +7740.0 + 21 +16762.970773 + 31 +0.0 + 0 +LINE + 5 +41C + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +16814.747468 + 30 +0.0 + 11 +7675.252532 + 21 +16875.0 + 31 +0.0 + 0 +LINE + 5 +41D + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +16586.271632 + 30 +0.0 + 11 +7615.0 + 21 +16711.271632 + 31 +0.0 + 0 +LINE + 5 +41E + 8 +0 + 62 + 0 + 10 +7674.494937 + 20 +16475.0 + 30 +0.0 + 11 +7615.0 + 21 +16534.494937 + 31 +0.0 + 0 +LINE + 5 +41F + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +16763.048327 + 30 +0.0 + 11 +7628.048327 + 21 +16875.0 + 31 +0.0 + 0 +ENDBLK + 5 +420 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X34 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X34 + 1 + + 0 +LINE + 5 +422 + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +14870.20382 + 30 +0.0 + 11 +7740.0 + 21 +14995.20382 + 31 +0.0 + 0 +LINE + 5 +423 + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +15046.980515 + 30 +0.0 + 11 +7740.0 + 21 +15171.980515 + 31 +0.0 + 0 +LINE + 5 +424 + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +15223.757211 + 30 +0.0 + 11 +7740.0 + 21 +15348.757211 + 31 +0.0 + 0 +LINE + 5 +425 + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +15400.533906 + 30 +0.0 + 11 +7740.0 + 21 +15525.533906 + 31 +0.0 + 0 +LINE + 5 +426 + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +15577.310601 + 30 +0.0 + 11 +7627.689399 + 21 +15590.0 + 31 +0.0 + 0 +LINE + 5 +427 + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +14693.427125 + 30 +0.0 + 11 +7740.0 + 21 +14818.427125 + 31 +0.0 + 0 +LINE + 5 +428 + 8 +0 + 62 + 0 + 10 +7615.0 + 20 +14516.650429 + 30 +0.0 + 11 +7740.0 + 21 +14641.650429 + 31 +0.0 + 0 +LINE + 5 +429 + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +14818.504679 + 30 +0.0 + 11 +7615.0 + 21 +14943.504679 + 31 +0.0 + 0 +LINE + 5 +42A + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +14641.727984 + 30 +0.0 + 11 +7615.0 + 21 +14766.727984 + 31 +0.0 + 0 +LINE + 5 +42B + 8 +0 + 62 + 0 + 10 +7714.951288 + 20 +14490.0 + 30 +0.0 + 11 +7615.0 + 21 +14589.951288 + 31 +0.0 + 0 +LINE + 5 +42C + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +14995.281374 + 30 +0.0 + 11 +7615.0 + 21 +15120.281374 + 31 +0.0 + 0 +LINE + 5 +42D + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +15172.05807 + 30 +0.0 + 11 +7615.0 + 21 +15297.05807 + 31 +0.0 + 0 +LINE + 5 +42E + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +15348.834765 + 30 +0.0 + 11 +7615.0 + 21 +15473.834765 + 31 +0.0 + 0 +LINE + 5 +42F + 8 +0 + 62 + 0 + 10 +7740.0 + 20 +15525.61146 + 30 +0.0 + 11 +7675.61146 + 21 +15590.0 + 31 +0.0 + 0 +ENDBLK + 5 +430 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X35 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X35 + 1 + + 0 +LINE + 5 +432 + 8 +0 + 62 + 0 + 10 +11762.563133 + 20 +17250.0 + 30 +0.0 + 11 +11887.563133 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +433 + 8 +0 + 62 + 0 + 10 +11585.786438 + 20 +17250.0 + 30 +0.0 + 11 +11710.786438 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +434 + 8 +0 + 62 + 0 + 10 +11409.009742 + 20 +17250.0 + 30 +0.0 + 11 +11534.009742 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +435 + 8 +0 + 62 + 0 + 10 +11232.233047 + 20 +17250.0 + 30 +0.0 + 11 +11357.233047 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +436 + 8 +0 + 62 + 0 + 10 +11055.456352 + 20 +17250.0 + 30 +0.0 + 11 +11180.456352 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +437 + 8 +0 + 62 + 0 + 10 +10878.679656 + 20 +17250.0 + 30 +0.0 + 11 +11003.679656 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +438 + 8 +0 + 62 + 0 + 10 +10701.902961 + 20 +17250.0 + 30 +0.0 + 11 +10826.902961 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +439 + 8 +0 + 62 + 0 + 10 +10525.126266 + 20 +17250.0 + 30 +0.0 + 11 +10650.126266 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +43A + 8 +0 + 62 + 0 + 10 +10348.349571 + 20 +17250.0 + 30 +0.0 + 11 +10473.349571 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +43B + 8 +0 + 62 + 0 + 10 +10171.572875 + 20 +17250.0 + 30 +0.0 + 11 +10296.572875 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +43C + 8 +0 + 62 + 0 + 10 +10115.0 + 20 +17370.20382 + 30 +0.0 + 11 +10119.79618 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +43D + 8 +0 + 62 + 0 + 10 +11939.339828 + 20 +17250.0 + 30 +0.0 + 11 +12064.339828 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +43E + 8 +0 + 62 + 0 + 10 +12116.116524 + 20 +17250.0 + 30 +0.0 + 11 +12241.116524 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +43F + 8 +0 + 62 + 0 + 10 +12292.893219 + 20 +17250.0 + 30 +0.0 + 11 +12417.893219 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +440 + 8 +0 + 62 + 0 + 10 +12469.669914 + 20 +17250.0 + 30 +0.0 + 11 +12594.669914 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +441 + 8 +0 + 62 + 0 + 10 +12646.446609 + 20 +17250.0 + 30 +0.0 + 11 +12771.446609 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +442 + 8 +0 + 62 + 0 + 10 +12823.223305 + 20 +17250.0 + 30 +0.0 + 11 +12948.223305 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +443 + 8 +0 + 62 + 0 + 10 +13000.0 + 20 +17250.0 + 30 +0.0 + 11 +13125.0 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +444 + 8 +0 + 62 + 0 + 10 +13176.776695 + 20 +17250.0 + 30 +0.0 + 11 +13301.776695 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +445 + 8 +0 + 62 + 0 + 10 +13353.553391 + 20 +17250.0 + 30 +0.0 + 11 +13478.553391 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +446 + 8 +0 + 62 + 0 + 10 +11849.242405 + 20 +17250.0 + 30 +0.0 + 11 +11724.242405 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +447 + 8 +0 + 62 + 0 + 10 +11672.46571 + 20 +17250.0 + 30 +0.0 + 11 +11547.46571 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +448 + 8 +0 + 62 + 0 + 10 +11495.689014 + 20 +17250.0 + 30 +0.0 + 11 +11370.689014 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +449 + 8 +0 + 62 + 0 + 10 +11318.912319 + 20 +17250.0 + 30 +0.0 + 11 +11193.912319 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +44A + 8 +0 + 62 + 0 + 10 +11142.135624 + 20 +17250.0 + 30 +0.0 + 11 +11017.135624 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +44B + 8 +0 + 62 + 0 + 10 +10965.358928 + 20 +17250.0 + 30 +0.0 + 11 +10840.358928 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +44C + 8 +0 + 62 + 0 + 10 +10788.582233 + 20 +17250.0 + 30 +0.0 + 11 +10663.582233 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +44D + 8 +0 + 62 + 0 + 10 +10611.805538 + 20 +17250.0 + 30 +0.0 + 11 +10486.805538 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +44E + 8 +0 + 62 + 0 + 10 +10435.028843 + 20 +17250.0 + 30 +0.0 + 11 +10310.028843 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +44F + 8 +0 + 62 + 0 + 10 +10258.252147 + 20 +17250.0 + 30 +0.0 + 11 +10133.252147 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +450 + 8 +0 + 62 + 0 + 10 +12026.0191 + 20 +17250.0 + 30 +0.0 + 11 +11901.0191 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +451 + 8 +0 + 62 + 0 + 10 +12202.795796 + 20 +17250.0 + 30 +0.0 + 11 +12077.795796 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +452 + 8 +0 + 62 + 0 + 10 +12379.572491 + 20 +17250.0 + 30 +0.0 + 11 +12254.572491 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +453 + 8 +0 + 62 + 0 + 10 +12556.349186 + 20 +17250.0 + 30 +0.0 + 11 +12431.349186 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +454 + 8 +0 + 62 + 0 + 10 +12733.125881 + 20 +17250.0 + 30 +0.0 + 11 +12608.125881 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +455 + 8 +0 + 62 + 0 + 10 +12909.902577 + 20 +17250.0 + 30 +0.0 + 11 +12784.902577 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +456 + 8 +0 + 62 + 0 + 10 +13086.679272 + 20 +17250.0 + 30 +0.0 + 11 +12961.679272 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +457 + 8 +0 + 62 + 0 + 10 +13263.455967 + 20 +17250.0 + 30 +0.0 + 11 +13138.455967 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +458 + 8 +0 + 62 + 0 + 10 +13440.232663 + 20 +17250.0 + 30 +0.0 + 11 +13315.232663 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +459 + 8 +0 + 62 + 0 + 10 +13525.0 + 20 +17342.009358 + 30 +0.0 + 11 +13492.009358 + 21 +17375.0 + 31 +0.0 + 0 +ENDBLK + 5 +45A + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X36 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X36 + 1 + + 0 +LINE + 5 +45C + 8 +0 + 62 + 0 + 10 +14590.990258 + 20 +17250.0 + 30 +0.0 + 11 +14715.990258 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +45D + 8 +0 + 62 + 0 + 10 +14767.766953 + 20 +17250.0 + 30 +0.0 + 11 +14875.0 + 21 +17357.233047 + 31 +0.0 + 0 +LINE + 5 +45E + 8 +0 + 62 + 0 + 10 +14677.66953 + 20 +17250.0 + 30 +0.0 + 11 +14555.0 + 21 +17372.66953 + 31 +0.0 + 0 +LINE + 5 +45F + 8 +0 + 62 + 0 + 10 +14854.446225 + 20 +17250.0 + 30 +0.0 + 11 +14729.446225 + 21 +17375.0 + 31 +0.0 + 0 +ENDBLK + 5 +460 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X37 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X37 + 1 + + 0 +LINE + 5 +462 + 8 +0 + 62 + 0 + 10 +15474.873734 + 20 +17250.0 + 30 +0.0 + 11 +15599.873734 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +463 + 8 +0 + 62 + 0 + 10 +15298.097039 + 20 +17250.0 + 30 +0.0 + 11 +15423.097039 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +464 + 8 +0 + 62 + 0 + 10 +15240.0 + 20 +17368.679656 + 30 +0.0 + 11 +15246.320344 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +465 + 8 +0 + 62 + 0 + 10 +15651.650429 + 20 +17250.0 + 30 +0.0 + 11 +15776.650429 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +466 + 8 +0 + 62 + 0 + 10 +15828.427125 + 20 +17250.0 + 30 +0.0 + 11 +15953.427125 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +467 + 8 +0 + 62 + 0 + 10 +15561.553006 + 20 +17250.0 + 30 +0.0 + 11 +15436.553006 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +468 + 8 +0 + 62 + 0 + 10 +15384.776311 + 20 +17250.0 + 30 +0.0 + 11 +15259.776311 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +469 + 8 +0 + 62 + 0 + 10 +15738.329701 + 20 +17250.0 + 30 +0.0 + 11 +15613.329701 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +46A + 8 +0 + 62 + 0 + 10 +15915.106397 + 20 +17250.0 + 30 +0.0 + 11 +15790.106397 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +46B + 8 +0 + 62 + 0 + 10 +15990.0 + 20 +17351.883092 + 30 +0.0 + 11 +15966.883092 + 21 +17375.0 + 31 +0.0 + 0 +ENDBLK + 5 +46C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X38 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X38 + 1 + + 0 +LINE + 5 +46E + 8 +0 + 62 + 0 + 10 +17065.863992 + 20 +17250.0 + 30 +0.0 + 11 +17190.863992 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +46F + 8 +0 + 62 + 0 + 10 +16889.087297 + 20 +17250.0 + 30 +0.0 + 11 +17014.087297 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +470 + 8 +0 + 62 + 0 + 10 +17242.640687 + 20 +17250.0 + 30 +0.0 + 11 +17367.640687 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +471 + 8 +0 + 62 + 0 + 10 +17419.417382 + 20 +17250.0 + 30 +0.0 + 11 +17544.417382 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +472 + 8 +0 + 62 + 0 + 10 +17596.194078 + 20 +17250.0 + 30 +0.0 + 11 +17625.0 + 21 +17278.805922 + 31 +0.0 + 0 +LINE + 5 +473 + 8 +0 + 62 + 0 + 10 +17152.543264 + 20 +17250.0 + 30 +0.0 + 11 +17027.543264 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +474 + 8 +0 + 62 + 0 + 10 +16975.766569 + 20 +17250.0 + 30 +0.0 + 11 +16875.0 + 21 +17350.766569 + 31 +0.0 + 0 +LINE + 5 +475 + 8 +0 + 62 + 0 + 10 +17329.319959 + 20 +17250.0 + 30 +0.0 + 11 +17204.319959 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +476 + 8 +0 + 62 + 0 + 10 +17506.096654 + 20 +17250.0 + 30 +0.0 + 11 +17381.096654 + 21 +17375.0 + 31 +0.0 + 0 +LINE + 5 +477 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +17307.87335 + 30 +0.0 + 11 +17557.87335 + 21 +17375.0 + 31 +0.0 + 0 +ENDBLK + 5 +478 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X39 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X39 + 1 + + 0 +LINE + 5 +47A + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20768.13782 + 30 +0.0 + 11 +4950.0 + 21 +20768.13782 + 31 +0.0 + 0 +LINE + 5 +47B + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20789.788455 + 30 +0.0 + 11 +4987.5 + 21 +20789.788455 + 31 +0.0 + 0 +LINE + 5 +47C + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20811.43909 + 30 +0.0 + 11 +4950.0 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +47D + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20833.089725 + 30 +0.0 + 11 +4987.5 + 21 +20833.089725 + 31 +0.0 + 0 +LINE + 5 +47E + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20854.74036 + 30 +0.0 + 11 +4950.0 + 21 +20854.74036 + 31 +0.0 + 0 +LINE + 5 +47F + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20876.390995 + 30 +0.0 + 11 +4987.5 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +480 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20898.04163 + 30 +0.0 + 11 +4950.0 + 21 +20898.04163 + 31 +0.0 + 0 +LINE + 5 +481 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20919.692265 + 30 +0.0 + 11 +4987.5 + 21 +20919.692265 + 31 +0.0 + 0 +LINE + 5 +482 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20941.3429 + 30 +0.0 + 11 +4950.0 + 21 +20941.3429 + 31 +0.0 + 0 +LINE + 5 +483 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20962.993535 + 30 +0.0 + 11 +4987.5 + 21 +20962.993535 + 31 +0.0 + 0 +LINE + 5 +484 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20984.64417 + 30 +0.0 + 11 +4950.0 + 21 +20984.64417 + 31 +0.0 + 0 +LINE + 5 +485 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21006.294805 + 30 +0.0 + 11 +4987.5 + 21 +21006.294805 + 31 +0.0 + 0 +LINE + 5 +486 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21027.94544 + 30 +0.0 + 11 +4950.0 + 21 +21027.94544 + 31 +0.0 + 0 +LINE + 5 +487 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21049.596075 + 30 +0.0 + 11 +4987.5 + 21 +21049.596075 + 31 +0.0 + 0 +LINE + 5 +488 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21071.24671 + 30 +0.0 + 11 +4950.0 + 21 +21071.24671 + 31 +0.0 + 0 +LINE + 5 +489 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21092.897345 + 30 +0.0 + 11 +4987.5 + 21 +21092.897345 + 31 +0.0 + 0 +LINE + 5 +48A + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21114.54798 + 30 +0.0 + 11 +4950.0 + 21 +21114.54798 + 31 +0.0 + 0 +LINE + 5 +48B + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21136.198615 + 30 +0.0 + 11 +4987.5 + 21 +21136.198615 + 31 +0.0 + 0 +LINE + 5 +48C + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21157.84925 + 30 +0.0 + 11 +4950.0 + 21 +21157.84925 + 31 +0.0 + 0 +LINE + 5 +48D + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21179.499885 + 30 +0.0 + 11 +4987.5 + 21 +21179.499885 + 31 +0.0 + 0 +LINE + 5 +48E + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21201.15052 + 30 +0.0 + 11 +4950.0 + 21 +21201.15052 + 31 +0.0 + 0 +LINE + 5 +48F + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21222.801155 + 30 +0.0 + 11 +4987.5 + 21 +21222.801155 + 31 +0.0 + 0 +LINE + 5 +490 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21244.45179 + 30 +0.0 + 11 +4950.0 + 21 +21244.45179 + 31 +0.0 + 0 +LINE + 5 +491 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21266.102425 + 30 +0.0 + 11 +4987.5 + 21 +21266.102425 + 31 +0.0 + 0 +LINE + 5 +492 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21287.75306 + 30 +0.0 + 11 +4950.0 + 21 +21287.75306 + 31 +0.0 + 0 +LINE + 5 +493 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21309.403695 + 30 +0.0 + 11 +4987.5 + 21 +21309.403695 + 31 +0.0 + 0 +LINE + 5 +494 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21331.05433 + 30 +0.0 + 11 +4950.0 + 21 +21331.05433 + 31 +0.0 + 0 +LINE + 5 +495 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21352.704965 + 30 +0.0 + 11 +4987.5 + 21 +21352.704965 + 31 +0.0 + 0 +LINE + 5 +496 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21374.3556 + 30 +0.0 + 11 +4950.0 + 21 +21374.3556 + 31 +0.0 + 0 +LINE + 5 +497 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21396.006235 + 30 +0.0 + 11 +4987.5 + 21 +21396.006235 + 31 +0.0 + 0 +LINE + 5 +498 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21417.65687 + 30 +0.0 + 11 +4950.0 + 21 +21417.65687 + 31 +0.0 + 0 +LINE + 5 +499 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21439.307505 + 30 +0.0 + 11 +4987.5 + 21 +21439.307505 + 31 +0.0 + 0 +LINE + 5 +49A + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21460.95814 + 30 +0.0 + 11 +4950.0 + 21 +21460.95814 + 31 +0.0 + 0 +LINE + 5 +49B + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21482.608775 + 30 +0.0 + 11 +4987.5 + 21 +21482.608775 + 31 +0.0 + 0 +LINE + 5 +49C + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21504.25941 + 30 +0.0 + 11 +4950.0 + 21 +21504.25941 + 31 +0.0 + 0 +LINE + 5 +49D + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21525.910045 + 30 +0.0 + 11 +4987.5 + 21 +21525.910045 + 31 +0.0 + 0 +LINE + 5 +49E + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21547.56068 + 30 +0.0 + 11 +4950.0 + 21 +21547.56068 + 31 +0.0 + 0 +LINE + 5 +49F + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21569.211315 + 30 +0.0 + 11 +4987.5 + 21 +21569.211315 + 31 +0.0 + 0 +LINE + 5 +4A0 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21590.86195 + 30 +0.0 + 11 +4950.0 + 21 +21590.86195 + 31 +0.0 + 0 +LINE + 5 +4A1 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21612.512585 + 30 +0.0 + 11 +4987.5 + 21 +21612.512585 + 31 +0.0 + 0 +LINE + 5 +4A2 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21634.16322 + 30 +0.0 + 11 +4950.0 + 21 +21634.16322 + 31 +0.0 + 0 +LINE + 5 +4A3 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21655.813855 + 30 +0.0 + 11 +4987.5 + 21 +21655.813855 + 31 +0.0 + 0 +LINE + 5 +4A4 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21677.46449 + 30 +0.0 + 11 +4950.0 + 21 +21677.46449 + 31 +0.0 + 0 +LINE + 5 +4A5 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21699.115125 + 30 +0.0 + 11 +4987.5 + 21 +21699.115125 + 31 +0.0 + 0 +LINE + 5 +4A6 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21720.76576 + 30 +0.0 + 11 +4950.0 + 21 +21720.76576 + 31 +0.0 + 0 +LINE + 5 +4A7 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21742.416395 + 30 +0.0 + 11 +4987.5 + 21 +21742.416395 + 31 +0.0 + 0 +LINE + 5 +4A8 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21764.06703 + 30 +0.0 + 11 +4950.0 + 21 +21764.06703 + 31 +0.0 + 0 +LINE + 5 +4A9 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21785.717665 + 30 +0.0 + 11 +4987.5 + 21 +21785.717665 + 31 +0.0 + 0 +LINE + 5 +4AA + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21807.3683 + 30 +0.0 + 11 +4950.0 + 21 +21807.3683 + 31 +0.0 + 0 +LINE + 5 +4AB + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21829.018935 + 30 +0.0 + 11 +4987.5 + 21 +21829.018935 + 31 +0.0 + 0 +LINE + 5 +4AC + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21850.66957 + 30 +0.0 + 11 +4950.0 + 21 +21850.66957 + 31 +0.0 + 0 +LINE + 5 +4AD + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21872.320205 + 30 +0.0 + 11 +4987.5 + 21 +21872.320205 + 31 +0.0 + 0 +LINE + 5 +4AE + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21893.97084 + 30 +0.0 + 11 +4950.0 + 21 +21893.97084 + 31 +0.0 + 0 +LINE + 5 +4AF + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21915.621475 + 30 +0.0 + 11 +4987.5 + 21 +21915.621475 + 31 +0.0 + 0 +LINE + 5 +4B0 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21937.27211 + 30 +0.0 + 11 +4950.0 + 21 +21937.27211 + 31 +0.0 + 0 +LINE + 5 +4B1 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +21958.922745 + 30 +0.0 + 11 +4987.5 + 21 +21958.922745 + 31 +0.0 + 0 +LINE + 5 +4B2 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +21980.57338 + 30 +0.0 + 11 +4950.0 + 21 +21980.57338 + 31 +0.0 + 0 +LINE + 5 +4B3 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +22002.224015 + 30 +0.0 + 11 +4987.5 + 21 +22002.224015 + 31 +0.0 + 0 +LINE + 5 +4B4 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +22023.87465 + 30 +0.0 + 11 +4950.0 + 21 +22023.87465 + 31 +0.0 + 0 +LINE + 5 +4B5 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +22045.525285 + 30 +0.0 + 11 +4987.5 + 21 +22045.525285 + 31 +0.0 + 0 +LINE + 5 +4B6 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +22067.17592 + 30 +0.0 + 11 +4950.0 + 21 +22067.17592 + 31 +0.0 + 0 +LINE + 5 +4B7 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +22088.826555 + 30 +0.0 + 11 +4987.5 + 21 +22088.826555 + 31 +0.0 + 0 +LINE + 5 +4B8 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +22110.47719 + 30 +0.0 + 11 +4950.0 + 21 +22110.47719 + 31 +0.0 + 0 +LINE + 5 +4B9 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +22132.127825 + 30 +0.0 + 11 +4987.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4BA + 8 +0 + 62 + 0 + 10 +5037.5 + 20 +22132.127825 + 30 +0.0 + 11 +5062.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4BB + 8 +0 + 62 + 0 + 10 +5112.5 + 20 +22132.127825 + 30 +0.0 + 11 +5137.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4BC + 8 +0 + 62 + 0 + 10 +5187.5 + 20 +22132.127825 + 30 +0.0 + 11 +5212.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4BD + 8 +0 + 62 + 0 + 10 +5262.5 + 20 +22132.127825 + 30 +0.0 + 11 +5287.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4BE + 8 +0 + 62 + 0 + 10 +5337.5 + 20 +22132.127825 + 30 +0.0 + 11 +5362.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4BF + 8 +0 + 62 + 0 + 10 +5412.5 + 20 +22132.127825 + 30 +0.0 + 11 +5437.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C0 + 8 +0 + 62 + 0 + 10 +5487.5 + 20 +22132.127825 + 30 +0.0 + 11 +5512.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C1 + 8 +0 + 62 + 0 + 10 +5562.5 + 20 +22132.127825 + 30 +0.0 + 11 +5587.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C2 + 8 +0 + 62 + 0 + 10 +5637.5 + 20 +22132.127825 + 30 +0.0 + 11 +5662.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C3 + 8 +0 + 62 + 0 + 10 +5712.5 + 20 +22132.127825 + 30 +0.0 + 11 +5737.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C4 + 8 +0 + 62 + 0 + 10 +5787.5 + 20 +22132.127825 + 30 +0.0 + 11 +5812.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C5 + 8 +0 + 62 + 0 + 10 +5862.5 + 20 +22132.127825 + 30 +0.0 + 11 +5887.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C6 + 8 +0 + 62 + 0 + 10 +5937.5 + 20 +22132.127825 + 30 +0.0 + 11 +5962.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C7 + 8 +0 + 62 + 0 + 10 +6012.5 + 20 +22132.127825 + 30 +0.0 + 11 +6037.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C8 + 8 +0 + 62 + 0 + 10 +6087.5 + 20 +22132.127825 + 30 +0.0 + 11 +6112.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4C9 + 8 +0 + 62 + 0 + 10 +6162.5 + 20 +22132.127825 + 30 +0.0 + 11 +6187.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4CA + 8 +0 + 62 + 0 + 10 +6237.5 + 20 +22132.127825 + 30 +0.0 + 11 +6262.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4CB + 8 +0 + 62 + 0 + 10 +6312.5 + 20 +22132.127825 + 30 +0.0 + 11 +6337.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4CC + 8 +0 + 62 + 0 + 10 +6387.5 + 20 +22132.127825 + 30 +0.0 + 11 +6412.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4CD + 8 +0 + 62 + 0 + 10 +6462.5 + 20 +22132.127825 + 30 +0.0 + 11 +6487.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4CE + 8 +0 + 62 + 0 + 10 +6537.5 + 20 +22132.127825 + 30 +0.0 + 11 +6562.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4CF + 8 +0 + 62 + 0 + 10 +6612.5 + 20 +22132.127825 + 30 +0.0 + 11 +6637.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4D0 + 8 +0 + 62 + 0 + 10 +6687.5 + 20 +22132.127825 + 30 +0.0 + 11 +6712.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +4D1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +22153.77846 + 30 +0.0 + 11 +4950.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D2 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +22153.77846 + 30 +0.0 + 11 +5025.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D3 + 8 +0 + 62 + 0 + 10 +5075.0 + 20 +22153.77846 + 30 +0.0 + 11 +5100.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D4 + 8 +0 + 62 + 0 + 10 +5150.0 + 20 +22153.77846 + 30 +0.0 + 11 +5175.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D5 + 8 +0 + 62 + 0 + 10 +5225.0 + 20 +22153.77846 + 30 +0.0 + 11 +5250.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D6 + 8 +0 + 62 + 0 + 10 +5300.0 + 20 +22153.77846 + 30 +0.0 + 11 +5325.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D7 + 8 +0 + 62 + 0 + 10 +5375.0 + 20 +22153.77846 + 30 +0.0 + 11 +5400.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D8 + 8 +0 + 62 + 0 + 10 +5450.0 + 20 +22153.77846 + 30 +0.0 + 11 +5475.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4D9 + 8 +0 + 62 + 0 + 10 +5525.0 + 20 +22153.77846 + 30 +0.0 + 11 +5550.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4DA + 8 +0 + 62 + 0 + 10 +5600.0 + 20 +22153.77846 + 30 +0.0 + 11 +5625.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4DB + 8 +0 + 62 + 0 + 10 +5675.0 + 20 +22153.77846 + 30 +0.0 + 11 +5700.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4DC + 8 +0 + 62 + 0 + 10 +5750.0 + 20 +22153.77846 + 30 +0.0 + 11 +5775.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4DD + 8 +0 + 62 + 0 + 10 +5825.0 + 20 +22153.77846 + 30 +0.0 + 11 +5850.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4DE + 8 +0 + 62 + 0 + 10 +5900.0 + 20 +22153.77846 + 30 +0.0 + 11 +5925.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4DF + 8 +0 + 62 + 0 + 10 +5975.0 + 20 +22153.77846 + 30 +0.0 + 11 +6000.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E0 + 8 +0 + 62 + 0 + 10 +6050.0 + 20 +22153.77846 + 30 +0.0 + 11 +6075.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E1 + 8 +0 + 62 + 0 + 10 +6125.0 + 20 +22153.77846 + 30 +0.0 + 11 +6150.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E2 + 8 +0 + 62 + 0 + 10 +6200.0 + 20 +22153.77846 + 30 +0.0 + 11 +6225.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E3 + 8 +0 + 62 + 0 + 10 +6275.0 + 20 +22153.77846 + 30 +0.0 + 11 +6300.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E4 + 8 +0 + 62 + 0 + 10 +6350.0 + 20 +22153.77846 + 30 +0.0 + 11 +6375.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E5 + 8 +0 + 62 + 0 + 10 +6425.0 + 20 +22153.77846 + 30 +0.0 + 11 +6450.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E6 + 8 +0 + 62 + 0 + 10 +6500.0 + 20 +22153.77846 + 30 +0.0 + 11 +6525.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E7 + 8 +0 + 62 + 0 + 10 +6575.0 + 20 +22153.77846 + 30 +0.0 + 11 +6600.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E8 + 8 +0 + 62 + 0 + 10 +6650.0 + 20 +22153.77846 + 30 +0.0 + 11 +6675.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4E9 + 8 +0 + 62 + 0 + 10 +6725.0 + 20 +22153.77846 + 30 +0.0 + 11 +6750.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +4EA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +22175.429095 + 30 +0.0 + 11 +4987.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4EB + 8 +0 + 62 + 0 + 10 +5037.5 + 20 +22175.429095 + 30 +0.0 + 11 +5062.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4EC + 8 +0 + 62 + 0 + 10 +5112.5 + 20 +22175.429095 + 30 +0.0 + 11 +5137.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4ED + 8 +0 + 62 + 0 + 10 +5187.5 + 20 +22175.429095 + 30 +0.0 + 11 +5212.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4EE + 8 +0 + 62 + 0 + 10 +5262.5 + 20 +22175.429095 + 30 +0.0 + 11 +5287.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4EF + 8 +0 + 62 + 0 + 10 +5337.5 + 20 +22175.429095 + 30 +0.0 + 11 +5362.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F0 + 8 +0 + 62 + 0 + 10 +5412.5 + 20 +22175.429095 + 30 +0.0 + 11 +5437.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F1 + 8 +0 + 62 + 0 + 10 +5487.5 + 20 +22175.429095 + 30 +0.0 + 11 +5512.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F2 + 8 +0 + 62 + 0 + 10 +5562.5 + 20 +22175.429095 + 30 +0.0 + 11 +5587.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F3 + 8 +0 + 62 + 0 + 10 +5637.5 + 20 +22175.429095 + 30 +0.0 + 11 +5662.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F4 + 8 +0 + 62 + 0 + 10 +5712.5 + 20 +22175.429095 + 30 +0.0 + 11 +5737.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F5 + 8 +0 + 62 + 0 + 10 +5787.5 + 20 +22175.429095 + 30 +0.0 + 11 +5812.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F6 + 8 +0 + 62 + 0 + 10 +5862.5 + 20 +22175.429095 + 30 +0.0 + 11 +5887.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F7 + 8 +0 + 62 + 0 + 10 +5937.5 + 20 +22175.429095 + 30 +0.0 + 11 +5962.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F8 + 8 +0 + 62 + 0 + 10 +6012.5 + 20 +22175.429095 + 30 +0.0 + 11 +6037.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4F9 + 8 +0 + 62 + 0 + 10 +6087.5 + 20 +22175.429095 + 30 +0.0 + 11 +6112.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4FA + 8 +0 + 62 + 0 + 10 +6162.5 + 20 +22175.429095 + 30 +0.0 + 11 +6187.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4FB + 8 +0 + 62 + 0 + 10 +6237.5 + 20 +22175.429095 + 30 +0.0 + 11 +6262.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4FC + 8 +0 + 62 + 0 + 10 +6312.5 + 20 +22175.429095 + 30 +0.0 + 11 +6337.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4FD + 8 +0 + 62 + 0 + 10 +6387.5 + 20 +22175.429095 + 30 +0.0 + 11 +6412.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4FE + 8 +0 + 62 + 0 + 10 +6462.5 + 20 +22175.429095 + 30 +0.0 + 11 +6487.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +4FF + 8 +0 + 62 + 0 + 10 +6537.5 + 20 +22175.429095 + 30 +0.0 + 11 +6562.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +500 + 8 +0 + 62 + 0 + 10 +6612.5 + 20 +22175.429095 + 30 +0.0 + 11 +6637.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +501 + 8 +0 + 62 + 0 + 10 +6687.5 + 20 +22175.429095 + 30 +0.0 + 11 +6712.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +502 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20746.487185 + 30 +0.0 + 11 +4987.5 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +503 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20724.83655 + 30 +0.0 + 11 +4950.0 + 21 +20724.83655 + 31 +0.0 + 0 +LINE + 5 +504 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20703.185915 + 30 +0.0 + 11 +4987.5 + 21 +20703.185915 + 31 +0.0 + 0 +LINE + 5 +505 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20681.53528 + 30 +0.0 + 11 +4950.0 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +506 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20659.884645 + 30 +0.0 + 11 +4987.5 + 21 +20659.884645 + 31 +0.0 + 0 +LINE + 5 +507 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20638.23401 + 30 +0.0 + 11 +4950.0 + 21 +20638.23401 + 31 +0.0 + 0 +LINE + 5 +508 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20616.583375 + 30 +0.0 + 11 +4987.5 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +509 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20594.93274 + 30 +0.0 + 11 +4950.0 + 21 +20594.93274 + 31 +0.0 + 0 +LINE + 5 +50A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20573.282105 + 30 +0.0 + 11 +4987.5 + 21 +20573.282105 + 31 +0.0 + 0 +LINE + 5 +50B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20551.63147 + 30 +0.0 + 11 +4950.0 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +50C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20529.980835 + 30 +0.0 + 11 +4987.5 + 21 +20529.980835 + 31 +0.0 + 0 +LINE + 5 +50D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20508.3302 + 30 +0.0 + 11 +4950.0 + 21 +20508.3302 + 31 +0.0 + 0 +LINE + 5 +50E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20486.679565 + 30 +0.0 + 11 +4987.5 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +50F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20465.02893 + 30 +0.0 + 11 +4950.0 + 21 +20465.02893 + 31 +0.0 + 0 +LINE + 5 +510 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20443.378295 + 30 +0.0 + 11 +4987.5 + 21 +20443.378295 + 31 +0.0 + 0 +LINE + 5 +511 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20421.72766 + 30 +0.0 + 11 +4950.0 + 21 +20421.72766 + 31 +0.0 + 0 +LINE + 5 +512 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20400.077025 + 30 +0.0 + 11 +4987.5 + 21 +20400.077025 + 31 +0.0 + 0 +LINE + 5 +513 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20378.42639 + 30 +0.0 + 11 +4950.0 + 21 +20378.42639 + 31 +0.0 + 0 +LINE + 5 +514 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20356.775755 + 30 +0.0 + 11 +4987.5 + 21 +20356.775755 + 31 +0.0 + 0 +LINE + 5 +515 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20335.12512 + 30 +0.0 + 11 +4950.0 + 21 +20335.12512 + 31 +0.0 + 0 +LINE + 5 +516 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20313.474485 + 30 +0.0 + 11 +4987.5 + 21 +20313.474485 + 31 +0.0 + 0 +LINE + 5 +517 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20291.82385 + 30 +0.0 + 11 +4950.0 + 21 +20291.82385 + 31 +0.0 + 0 +LINE + 5 +518 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20270.173215 + 30 +0.0 + 11 +4987.5 + 21 +20270.173215 + 31 +0.0 + 0 +LINE + 5 +519 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20248.52258 + 30 +0.0 + 11 +4950.0 + 21 +20248.52258 + 31 +0.0 + 0 +LINE + 5 +51A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20226.871945 + 30 +0.0 + 11 +4987.5 + 21 +20226.871945 + 31 +0.0 + 0 +LINE + 5 +51B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20205.22131 + 30 +0.0 + 11 +4950.0 + 21 +20205.22131 + 31 +0.0 + 0 +LINE + 5 +51C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20183.570675 + 30 +0.0 + 11 +4987.5 + 21 +20183.570675 + 31 +0.0 + 0 +LINE + 5 +51D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20161.92004 + 30 +0.0 + 11 +4950.0 + 21 +20161.92004 + 31 +0.0 + 0 +LINE + 5 +51E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20140.269405 + 30 +0.0 + 11 +4987.5 + 21 +20140.269405 + 31 +0.0 + 0 +LINE + 5 +51F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20118.61877 + 30 +0.0 + 11 +4950.0 + 21 +20118.61877 + 31 +0.0 + 0 +LINE + 5 +520 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20096.968135 + 30 +0.0 + 11 +4987.5 + 21 +20096.968135 + 31 +0.0 + 0 +LINE + 5 +521 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20075.3175 + 30 +0.0 + 11 +4950.0 + 21 +20075.3175 + 31 +0.0 + 0 +LINE + 5 +522 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20053.666865 + 30 +0.0 + 11 +4987.5 + 21 +20053.666865 + 31 +0.0 + 0 +LINE + 5 +523 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +20032.01623 + 30 +0.0 + 11 +4950.0 + 21 +20032.01623 + 31 +0.0 + 0 +LINE + 5 +524 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +20010.365595 + 30 +0.0 + 11 +4987.5 + 21 +20010.365595 + 31 +0.0 + 0 +LINE + 5 +525 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19988.71496 + 30 +0.0 + 11 +4950.0 + 21 +19988.71496 + 31 +0.0 + 0 +LINE + 5 +526 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19967.064325 + 30 +0.0 + 11 +4987.5 + 21 +19967.064325 + 31 +0.0 + 0 +LINE + 5 +527 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19945.41369 + 30 +0.0 + 11 +4950.0 + 21 +19945.41369 + 31 +0.0 + 0 +LINE + 5 +528 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19923.763055 + 30 +0.0 + 11 +4987.5 + 21 +19923.763055 + 31 +0.0 + 0 +LINE + 5 +529 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19902.11242 + 30 +0.0 + 11 +4950.0 + 21 +19902.11242 + 31 +0.0 + 0 +LINE + 5 +52A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19880.461785 + 30 +0.0 + 11 +4987.5 + 21 +19880.461785 + 31 +0.0 + 0 +LINE + 5 +52B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19858.81115 + 30 +0.0 + 11 +4950.0 + 21 +19858.81115 + 31 +0.0 + 0 +LINE + 5 +52C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19837.160515 + 30 +0.0 + 11 +4987.5 + 21 +19837.160515 + 31 +0.0 + 0 +LINE + 5 +52D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19815.50988 + 30 +0.0 + 11 +4950.0 + 21 +19815.50988 + 31 +0.0 + 0 +LINE + 5 +52E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19793.859245 + 30 +0.0 + 11 +4987.5 + 21 +19793.859245 + 31 +0.0 + 0 +LINE + 5 +52F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19772.20861 + 30 +0.0 + 11 +4950.0 + 21 +19772.20861 + 31 +0.0 + 0 +LINE + 5 +530 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19750.557975 + 30 +0.0 + 11 +4987.5 + 21 +19750.557975 + 31 +0.0 + 0 +LINE + 5 +531 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19728.90734 + 30 +0.0 + 11 +4950.0 + 21 +19728.90734 + 31 +0.0 + 0 +LINE + 5 +532 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19707.256705 + 30 +0.0 + 11 +4987.5 + 21 +19707.256705 + 31 +0.0 + 0 +LINE + 5 +533 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19685.60607 + 30 +0.0 + 11 +4950.0 + 21 +19685.60607 + 31 +0.0 + 0 +LINE + 5 +534 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19663.955435 + 30 +0.0 + 11 +4987.5 + 21 +19663.955435 + 31 +0.0 + 0 +LINE + 5 +535 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19642.3048 + 30 +0.0 + 11 +4950.0 + 21 +19642.3048 + 31 +0.0 + 0 +LINE + 5 +536 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19620.654165 + 30 +0.0 + 11 +4987.5 + 21 +19620.654165 + 31 +0.0 + 0 +LINE + 5 +537 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19599.00353 + 30 +0.0 + 11 +4950.0 + 21 +19599.00353 + 31 +0.0 + 0 +LINE + 5 +538 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19577.352895 + 30 +0.0 + 11 +4987.5 + 21 +19577.352895 + 31 +0.0 + 0 +LINE + 5 +539 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19555.70226 + 30 +0.0 + 11 +4950.0 + 21 +19555.70226 + 31 +0.0 + 0 +LINE + 5 +53A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19534.051625 + 30 +0.0 + 11 +4987.5 + 21 +19534.051625 + 31 +0.0 + 0 +LINE + 5 +53B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19512.40099 + 30 +0.0 + 11 +4950.0 + 21 +19512.40099 + 31 +0.0 + 0 +LINE + 5 +53C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19490.750355 + 30 +0.0 + 11 +4987.5 + 21 +19490.750355 + 31 +0.0 + 0 +LINE + 5 +53D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19469.09972 + 30 +0.0 + 11 +4950.0 + 21 +19469.09972 + 31 +0.0 + 0 +LINE + 5 +53E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19447.449085 + 30 +0.0 + 11 +4987.5 + 21 +19447.449085 + 31 +0.0 + 0 +LINE + 5 +53F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19425.79845 + 30 +0.0 + 11 +4950.0 + 21 +19425.79845 + 31 +0.0 + 0 +LINE + 5 +540 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +19404.147815 + 30 +0.0 + 11 +4987.5 + 21 +19404.147815 + 31 +0.0 + 0 +LINE + 5 +541 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +19382.49718 + 30 +0.0 + 11 +4950.0 + 21 +19382.49718 + 31 +0.0 + 0 +LINE + 5 +542 + 8 +0 + 62 + 0 + 10 +5037.499976 + 20 +22132.127867 + 30 +0.0 + 11 +5024.999976 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +543 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +22153.778502 + 30 +0.0 + 11 +4987.499976 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +544 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +22110.477232 + 30 +0.0 + 11 +4987.499976 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +545 + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +22175.429137 + 30 +0.0 + 11 +4951.200733 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +546 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +22067.175962 + 30 +0.0 + 11 +4987.499976 + 21 +22088.826597 + 31 +0.0 + 0 +LINE + 5 +547 + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +22132.127867 + 30 +0.0 + 11 +4949.999976 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +548 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +22023.874692 + 30 +0.0 + 11 +4987.499976 + 21 +22045.525327 + 31 +0.0 + 0 +LINE + 5 +549 + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +22088.826597 + 30 +0.0 + 11 +4949.999976 + 21 +22110.477232 + 31 +0.0 + 0 +LINE + 5 +54A + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +22153.778502 + 30 +0.0 + 11 +4920.0 + 21 +22162.438715 + 31 +0.0 + 0 +LINE + 5 +54B + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21980.573422 + 30 +0.0 + 11 +4987.499976 + 21 +22002.224057 + 31 +0.0 + 0 +LINE + 5 +54C + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +22045.525327 + 30 +0.0 + 11 +4949.999976 + 21 +22067.175962 + 31 +0.0 + 0 +LINE + 5 +54D + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +22110.477232 + 30 +0.0 + 11 +4920.0 + 21 +22119.137445 + 31 +0.0 + 0 +LINE + 5 +54E + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21937.272152 + 30 +0.0 + 11 +4987.499976 + 21 +21958.922787 + 31 +0.0 + 0 +LINE + 5 +54F + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +22002.224057 + 30 +0.0 + 11 +4949.999976 + 21 +22023.874692 + 31 +0.0 + 0 +LINE + 5 +550 + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +22067.175962 + 30 +0.0 + 11 +4920.0 + 21 +22075.836175 + 31 +0.0 + 0 +LINE + 5 +551 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21893.970881 + 30 +0.0 + 11 +4987.499976 + 21 +21915.621517 + 31 +0.0 + 0 +LINE + 5 +552 + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +21958.922787 + 30 +0.0 + 11 +4949.999976 + 21 +21980.573422 + 31 +0.0 + 0 +LINE + 5 +553 + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +22023.874692 + 30 +0.0 + 11 +4920.0 + 21 +22032.534905 + 31 +0.0 + 0 +LINE + 5 +554 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21850.669611 + 30 +0.0 + 11 +4987.499976 + 21 +21872.320246 + 31 +0.0 + 0 +LINE + 5 +555 + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +21915.621517 + 30 +0.0 + 11 +4949.999976 + 21 +21937.272152 + 31 +0.0 + 0 +LINE + 5 +556 + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +21980.573422 + 30 +0.0 + 11 +4920.0 + 21 +21989.233635 + 31 +0.0 + 0 +LINE + 5 +557 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21807.368341 + 30 +0.0 + 11 +4987.499976 + 21 +21829.018976 + 31 +0.0 + 0 +LINE + 5 +558 + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +21872.320246 + 30 +0.0 + 11 +4949.999976 + 21 +21893.970882 + 31 +0.0 + 0 +LINE + 5 +559 + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +21937.272152 + 30 +0.0 + 11 +4920.0 + 21 +21945.932365 + 31 +0.0 + 0 +LINE + 5 +55A + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21764.067071 + 30 +0.0 + 11 +4987.499976 + 21 +21785.717706 + 31 +0.0 + 0 +LINE + 5 +55B + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +21829.018976 + 30 +0.0 + 11 +4949.999976 + 21 +21850.669611 + 31 +0.0 + 0 +LINE + 5 +55C + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +21893.970882 + 30 +0.0 + 11 +4920.0 + 21 +21902.631095 + 31 +0.0 + 0 +LINE + 5 +55D + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21720.765801 + 30 +0.0 + 11 +4987.499976 + 21 +21742.416436 + 31 +0.0 + 0 +LINE + 5 +55E + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +21785.717706 + 30 +0.0 + 11 +4949.999976 + 21 +21807.368341 + 31 +0.0 + 0 +LINE + 5 +55F + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +21850.669611 + 30 +0.0 + 11 +4920.0 + 21 +21859.329825 + 31 +0.0 + 0 +LINE + 5 +560 + 8 +0 + 62 + 0 + 10 +4999.999976 + 20 +21677.464531 + 30 +0.0 + 11 +4987.499976 + 21 +21699.115166 + 31 +0.0 + 0 +LINE + 5 +561 + 8 +0 + 62 + 0 + 10 +4962.499976 + 20 +21742.416436 + 30 +0.0 + 11 +4949.999976 + 21 +21764.067071 + 31 +0.0 + 0 +LINE + 5 +562 + 8 +0 + 62 + 0 + 10 +4924.999976 + 20 +21807.368341 + 30 +0.0 + 11 +4920.0 + 21 +21816.028555 + 31 +0.0 + 0 +LINE + 5 +563 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21634.163261 + 30 +0.0 + 11 +4987.499977 + 21 +21655.813896 + 31 +0.0 + 0 +LINE + 5 +564 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21699.115166 + 30 +0.0 + 11 +4949.999977 + 21 +21720.765801 + 31 +0.0 + 0 +LINE + 5 +565 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21764.067071 + 30 +0.0 + 11 +4920.0 + 21 +21772.727285 + 31 +0.0 + 0 +LINE + 5 +566 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21590.86199 + 30 +0.0 + 11 +4987.499977 + 21 +21612.512626 + 31 +0.0 + 0 +LINE + 5 +567 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21655.813896 + 30 +0.0 + 11 +4949.999977 + 21 +21677.464531 + 31 +0.0 + 0 +LINE + 5 +568 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21720.765801 + 30 +0.0 + 11 +4920.0 + 21 +21729.426015 + 31 +0.0 + 0 +LINE + 5 +569 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21547.56072 + 30 +0.0 + 11 +4987.499977 + 21 +21569.211355 + 31 +0.0 + 0 +LINE + 5 +56A + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21612.512626 + 30 +0.0 + 11 +4949.999977 + 21 +21634.163261 + 31 +0.0 + 0 +LINE + 5 +56B + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21677.464531 + 30 +0.0 + 11 +4920.0 + 21 +21686.124745 + 31 +0.0 + 0 +LINE + 5 +56C + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21504.25945 + 30 +0.0 + 11 +4987.499977 + 21 +21525.910085 + 31 +0.0 + 0 +LINE + 5 +56D + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21569.211355 + 30 +0.0 + 11 +4949.999977 + 21 +21590.861991 + 31 +0.0 + 0 +LINE + 5 +56E + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21634.163261 + 30 +0.0 + 11 +4920.0 + 21 +21642.823475 + 31 +0.0 + 0 +LINE + 5 +56F + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21460.95818 + 30 +0.0 + 11 +4987.499977 + 21 +21482.608815 + 31 +0.0 + 0 +LINE + 5 +570 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21525.910085 + 30 +0.0 + 11 +4949.999977 + 21 +21547.56072 + 31 +0.0 + 0 +LINE + 5 +571 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21590.861991 + 30 +0.0 + 11 +4920.0 + 21 +21599.522205 + 31 +0.0 + 0 +LINE + 5 +572 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21417.65691 + 30 +0.0 + 11 +4987.499977 + 21 +21439.307545 + 31 +0.0 + 0 +LINE + 5 +573 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21482.608815 + 30 +0.0 + 11 +4949.999977 + 21 +21504.25945 + 31 +0.0 + 0 +LINE + 5 +574 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21547.56072 + 30 +0.0 + 11 +4920.0 + 21 +21556.220935 + 31 +0.0 + 0 +LINE + 5 +575 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21374.35564 + 30 +0.0 + 11 +4987.499977 + 21 +21396.006275 + 31 +0.0 + 0 +LINE + 5 +576 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21439.307545 + 30 +0.0 + 11 +4949.999977 + 21 +21460.95818 + 31 +0.0 + 0 +LINE + 5 +577 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21504.25945 + 30 +0.0 + 11 +4920.0 + 21 +21512.919665 + 31 +0.0 + 0 +LINE + 5 +578 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21331.05437 + 30 +0.0 + 11 +4987.499977 + 21 +21352.705005 + 31 +0.0 + 0 +LINE + 5 +579 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21396.006275 + 30 +0.0 + 11 +4949.999977 + 21 +21417.65691 + 31 +0.0 + 0 +LINE + 5 +57A + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21460.95818 + 30 +0.0 + 11 +4920.0 + 21 +21469.618395 + 31 +0.0 + 0 +LINE + 5 +57B + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21287.753099 + 30 +0.0 + 11 +4987.499977 + 21 +21309.403735 + 31 +0.0 + 0 +LINE + 5 +57C + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21352.705005 + 30 +0.0 + 11 +4949.999977 + 21 +21374.35564 + 31 +0.0 + 0 +LINE + 5 +57D + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21417.65691 + 30 +0.0 + 11 +4920.0 + 21 +21426.317125 + 31 +0.0 + 0 +LINE + 5 +57E + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21244.451829 + 30 +0.0 + 11 +4987.499977 + 21 +21266.102464 + 31 +0.0 + 0 +LINE + 5 +57F + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21309.403735 + 30 +0.0 + 11 +4949.999977 + 21 +21331.05437 + 31 +0.0 + 0 +LINE + 5 +580 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21374.35564 + 30 +0.0 + 11 +4920.0 + 21 +21383.015855 + 31 +0.0 + 0 +LINE + 5 +581 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21201.150559 + 30 +0.0 + 11 +4987.499977 + 21 +21222.801194 + 31 +0.0 + 0 +LINE + 5 +582 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21266.102464 + 30 +0.0 + 11 +4949.999977 + 21 +21287.7531 + 31 +0.0 + 0 +LINE + 5 +583 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21331.05437 + 30 +0.0 + 11 +4920.0 + 21 +21339.714585 + 31 +0.0 + 0 +LINE + 5 +584 + 8 +0 + 62 + 0 + 10 +4999.999977 + 20 +21157.849289 + 30 +0.0 + 11 +4987.499977 + 21 +21179.499924 + 31 +0.0 + 0 +LINE + 5 +585 + 8 +0 + 62 + 0 + 10 +4962.499977 + 20 +21222.801194 + 30 +0.0 + 11 +4949.999977 + 21 +21244.451829 + 31 +0.0 + 0 +LINE + 5 +586 + 8 +0 + 62 + 0 + 10 +4924.999977 + 20 +21287.7531 + 30 +0.0 + 11 +4920.0 + 21 +21296.413315 + 31 +0.0 + 0 +LINE + 5 +587 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +21114.548019 + 30 +0.0 + 11 +4987.499978 + 21 +21136.198654 + 31 +0.0 + 0 +LINE + 5 +588 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +21179.499924 + 30 +0.0 + 11 +4949.999978 + 21 +21201.150559 + 31 +0.0 + 0 +LINE + 5 +589 + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +21244.451829 + 30 +0.0 + 11 +4920.0 + 21 +21253.112045 + 31 +0.0 + 0 +LINE + 5 +58A + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +21071.246749 + 30 +0.0 + 11 +4987.499978 + 21 +21092.897384 + 31 +0.0 + 0 +LINE + 5 +58B + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +21136.198654 + 30 +0.0 + 11 +4949.999978 + 21 +21157.849289 + 31 +0.0 + 0 +LINE + 5 +58C + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +21201.150559 + 30 +0.0 + 11 +4920.0 + 21 +21209.810775 + 31 +0.0 + 0 +LINE + 5 +58D + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +21027.945479 + 30 +0.0 + 11 +4987.499978 + 21 +21049.596114 + 31 +0.0 + 0 +LINE + 5 +58E + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +21092.897384 + 30 +0.0 + 11 +4949.999978 + 21 +21114.548019 + 31 +0.0 + 0 +LINE + 5 +58F + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +21157.849289 + 30 +0.0 + 11 +4920.0 + 21 +21166.509505 + 31 +0.0 + 0 +LINE + 5 +590 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20984.644208 + 30 +0.0 + 11 +4987.499978 + 21 +21006.294844 + 31 +0.0 + 0 +LINE + 5 +591 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +21049.596114 + 30 +0.0 + 11 +4949.999978 + 21 +21071.246749 + 31 +0.0 + 0 +LINE + 5 +592 + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +21114.548019 + 30 +0.0 + 11 +4920.0 + 21 +21123.208235 + 31 +0.0 + 0 +LINE + 5 +593 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20941.342938 + 30 +0.0 + 11 +4987.499978 + 21 +20962.993573 + 31 +0.0 + 0 +LINE + 5 +594 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +21006.294844 + 30 +0.0 + 11 +4949.999978 + 21 +21027.945479 + 31 +0.0 + 0 +LINE + 5 +595 + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +21071.246749 + 30 +0.0 + 11 +4920.0 + 21 +21079.906965 + 31 +0.0 + 0 +LINE + 5 +596 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20898.041668 + 30 +0.0 + 11 +4987.499978 + 21 +20919.692303 + 31 +0.0 + 0 +LINE + 5 +597 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +20962.993573 + 30 +0.0 + 11 +4949.999978 + 21 +20984.644209 + 31 +0.0 + 0 +LINE + 5 +598 + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +21027.945479 + 30 +0.0 + 11 +4920.0 + 21 +21036.605695 + 31 +0.0 + 0 +LINE + 5 +599 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20854.740398 + 30 +0.0 + 11 +4987.499978 + 21 +20876.391033 + 31 +0.0 + 0 +LINE + 5 +59A + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +20919.692303 + 30 +0.0 + 11 +4949.999978 + 21 +20941.342938 + 31 +0.0 + 0 +LINE + 5 +59B + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +20984.644209 + 30 +0.0 + 11 +4920.0 + 21 +20993.304425 + 31 +0.0 + 0 +LINE + 5 +59C + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20811.439128 + 30 +0.0 + 11 +4987.499978 + 21 +20833.089763 + 31 +0.0 + 0 +LINE + 5 +59D + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +20876.391033 + 30 +0.0 + 11 +4949.999978 + 21 +20898.041668 + 31 +0.0 + 0 +LINE + 5 +59E + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +20941.342938 + 30 +0.0 + 11 +4920.0 + 21 +20950.003155 + 31 +0.0 + 0 +LINE + 5 +59F + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20768.137858 + 30 +0.0 + 11 +4987.499978 + 21 +20789.788493 + 31 +0.0 + 0 +LINE + 5 +5A0 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +20833.089763 + 30 +0.0 + 11 +4949.999978 + 21 +20854.740398 + 31 +0.0 + 0 +LINE + 5 +5A1 + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +20898.041668 + 30 +0.0 + 11 +4920.0 + 21 +20906.701885 + 31 +0.0 + 0 +LINE + 5 +5A2 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20724.836588 + 30 +0.0 + 11 +4987.499978 + 21 +20746.487223 + 31 +0.0 + 0 +LINE + 5 +5A3 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +20789.788493 + 30 +0.0 + 11 +4949.999978 + 21 +20811.439128 + 31 +0.0 + 0 +LINE + 5 +5A4 + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +20854.740398 + 30 +0.0 + 11 +4920.0 + 21 +20863.400615 + 31 +0.0 + 0 +LINE + 5 +5A5 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20681.535317 + 30 +0.0 + 11 +4987.499978 + 21 +20703.185953 + 31 +0.0 + 0 +LINE + 5 +5A6 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +20746.487223 + 30 +0.0 + 11 +4949.999978 + 21 +20768.137858 + 31 +0.0 + 0 +LINE + 5 +5A7 + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +20811.439128 + 30 +0.0 + 11 +4920.0 + 21 +20820.099345 + 31 +0.0 + 0 +LINE + 5 +5A8 + 8 +0 + 62 + 0 + 10 +4999.999978 + 20 +20638.234047 + 30 +0.0 + 11 +4987.499978 + 21 +20659.884682 + 31 +0.0 + 0 +LINE + 5 +5A9 + 8 +0 + 62 + 0 + 10 +4962.499978 + 20 +20703.185953 + 30 +0.0 + 11 +4949.999978 + 21 +20724.836588 + 31 +0.0 + 0 +LINE + 5 +5AA + 8 +0 + 62 + 0 + 10 +4924.999978 + 20 +20768.137858 + 30 +0.0 + 11 +4920.0 + 21 +20776.798075 + 31 +0.0 + 0 +LINE + 5 +5AB + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20594.932777 + 30 +0.0 + 11 +4987.499979 + 21 +20616.583412 + 31 +0.0 + 0 +LINE + 5 +5AC + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20659.884682 + 30 +0.0 + 11 +4949.999979 + 21 +20681.535318 + 31 +0.0 + 0 +LINE + 5 +5AD + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20724.836588 + 30 +0.0 + 11 +4920.0 + 21 +20733.496805 + 31 +0.0 + 0 +LINE + 5 +5AE + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20551.631507 + 30 +0.0 + 11 +4987.499979 + 21 +20573.282142 + 31 +0.0 + 0 +LINE + 5 +5AF + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20616.583412 + 30 +0.0 + 11 +4949.999979 + 21 +20638.234047 + 31 +0.0 + 0 +LINE + 5 +5B0 + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20681.535318 + 30 +0.0 + 11 +4920.0 + 21 +20690.195535 + 31 +0.0 + 0 +LINE + 5 +5B1 + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20508.330237 + 30 +0.0 + 11 +4987.499979 + 21 +20529.980872 + 31 +0.0 + 0 +LINE + 5 +5B2 + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20573.282142 + 30 +0.0 + 11 +4949.999979 + 21 +20594.932777 + 31 +0.0 + 0 +LINE + 5 +5B3 + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20638.234047 + 30 +0.0 + 11 +4920.0 + 21 +20646.894265 + 31 +0.0 + 0 +LINE + 5 +5B4 + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20465.028967 + 30 +0.0 + 11 +4987.499979 + 21 +20486.679602 + 31 +0.0 + 0 +LINE + 5 +5B5 + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20529.980872 + 30 +0.0 + 11 +4949.999979 + 21 +20551.631507 + 31 +0.0 + 0 +LINE + 5 +5B6 + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20594.932777 + 30 +0.0 + 11 +4920.0 + 21 +20603.592995 + 31 +0.0 + 0 +LINE + 5 +5B7 + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20421.727697 + 30 +0.0 + 11 +4987.499979 + 21 +20443.378332 + 31 +0.0 + 0 +LINE + 5 +5B8 + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20486.679602 + 30 +0.0 + 11 +4949.999979 + 21 +20508.330237 + 31 +0.0 + 0 +LINE + 5 +5B9 + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20551.631507 + 30 +0.0 + 11 +4920.0 + 21 +20560.291725 + 31 +0.0 + 0 +LINE + 5 +5BA + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20378.426426 + 30 +0.0 + 11 +4987.499979 + 21 +20400.077062 + 31 +0.0 + 0 +LINE + 5 +5BB + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20443.378332 + 30 +0.0 + 11 +4949.999979 + 21 +20465.028967 + 31 +0.0 + 0 +LINE + 5 +5BC + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20508.330237 + 30 +0.0 + 11 +4920.0 + 21 +20516.990455 + 31 +0.0 + 0 +LINE + 5 +5BD + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20335.125156 + 30 +0.0 + 11 +4987.499979 + 21 +20356.775791 + 31 +0.0 + 0 +LINE + 5 +5BE + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20400.077062 + 30 +0.0 + 11 +4949.999979 + 21 +20421.727697 + 31 +0.0 + 0 +LINE + 5 +5BF + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20465.028967 + 30 +0.0 + 11 +4920.0 + 21 +20473.689185 + 31 +0.0 + 0 +LINE + 5 +5C0 + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20291.823886 + 30 +0.0 + 11 +4987.499979 + 21 +20313.474521 + 31 +0.0 + 0 +LINE + 5 +5C1 + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20356.775791 + 30 +0.0 + 11 +4949.999979 + 21 +20378.426427 + 31 +0.0 + 0 +LINE + 5 +5C2 + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20421.727697 + 30 +0.0 + 11 +4920.0 + 21 +20430.387915 + 31 +0.0 + 0 +LINE + 5 +5C3 + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20248.522616 + 30 +0.0 + 11 +4987.499979 + 21 +20270.173251 + 31 +0.0 + 0 +LINE + 5 +5C4 + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20313.474521 + 30 +0.0 + 11 +4949.999979 + 21 +20335.125156 + 31 +0.0 + 0 +LINE + 5 +5C5 + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20378.426427 + 30 +0.0 + 11 +4920.0 + 21 +20387.086645 + 31 +0.0 + 0 +LINE + 5 +5C6 + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20205.221346 + 30 +0.0 + 11 +4987.499979 + 21 +20226.871981 + 31 +0.0 + 0 +LINE + 5 +5C7 + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20270.173251 + 30 +0.0 + 11 +4949.999979 + 21 +20291.823886 + 31 +0.0 + 0 +LINE + 5 +5C8 + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20335.125156 + 30 +0.0 + 11 +4920.0 + 21 +20343.785375 + 31 +0.0 + 0 +LINE + 5 +5C9 + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20161.920076 + 30 +0.0 + 11 +4987.499979 + 21 +20183.570711 + 31 +0.0 + 0 +LINE + 5 +5CA + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20226.871981 + 30 +0.0 + 11 +4949.999979 + 21 +20248.522616 + 31 +0.0 + 0 +LINE + 5 +5CB + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20291.823886 + 30 +0.0 + 11 +4920.0 + 21 +20300.484105 + 31 +0.0 + 0 +LINE + 5 +5CC + 8 +0 + 62 + 0 + 10 +4999.999979 + 20 +20118.618806 + 30 +0.0 + 11 +4987.499979 + 21 +20140.269441 + 31 +0.0 + 0 +LINE + 5 +5CD + 8 +0 + 62 + 0 + 10 +4962.499979 + 20 +20183.570711 + 30 +0.0 + 11 +4949.999979 + 21 +20205.221346 + 31 +0.0 + 0 +LINE + 5 +5CE + 8 +0 + 62 + 0 + 10 +4924.999979 + 20 +20248.522616 + 30 +0.0 + 11 +4920.0 + 21 +20257.182835 + 31 +0.0 + 0 +LINE + 5 +5CF + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +20075.317535 + 30 +0.0 + 11 +4987.49998 + 21 +20096.968171 + 31 +0.0 + 0 +LINE + 5 +5D0 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +20140.269441 + 30 +0.0 + 11 +4949.99998 + 21 +20161.920076 + 31 +0.0 + 0 +LINE + 5 +5D1 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +20205.221346 + 30 +0.0 + 11 +4920.0 + 21 +20213.881565 + 31 +0.0 + 0 +LINE + 5 +5D2 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +20032.016265 + 30 +0.0 + 11 +4987.49998 + 21 +20053.6669 + 31 +0.0 + 0 +LINE + 5 +5D3 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +20096.968171 + 30 +0.0 + 11 +4949.99998 + 21 +20118.618806 + 31 +0.0 + 0 +LINE + 5 +5D4 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +20161.920076 + 30 +0.0 + 11 +4920.0 + 21 +20170.580295 + 31 +0.0 + 0 +LINE + 5 +5D5 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19988.714995 + 30 +0.0 + 11 +4987.49998 + 21 +20010.36563 + 31 +0.0 + 0 +LINE + 5 +5D6 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +20053.6669 + 30 +0.0 + 11 +4949.99998 + 21 +20075.317536 + 31 +0.0 + 0 +LINE + 5 +5D7 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +20118.618806 + 30 +0.0 + 11 +4920.0 + 21 +20127.279025 + 31 +0.0 + 0 +LINE + 5 +5D8 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19945.413725 + 30 +0.0 + 11 +4987.49998 + 21 +19967.06436 + 31 +0.0 + 0 +LINE + 5 +5D9 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +20010.36563 + 30 +0.0 + 11 +4949.99998 + 21 +20032.016265 + 31 +0.0 + 0 +LINE + 5 +5DA + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +20075.317536 + 30 +0.0 + 11 +4920.0 + 21 +20083.977755 + 31 +0.0 + 0 +LINE + 5 +5DB + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19902.112455 + 30 +0.0 + 11 +4987.49998 + 21 +19923.76309 + 31 +0.0 + 0 +LINE + 5 +5DC + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19967.06436 + 30 +0.0 + 11 +4949.99998 + 21 +19988.714995 + 31 +0.0 + 0 +LINE + 5 +5DD + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +20032.016265 + 30 +0.0 + 11 +4920.0 + 21 +20040.676485 + 31 +0.0 + 0 +LINE + 5 +5DE + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19858.811185 + 30 +0.0 + 11 +4987.49998 + 21 +19880.46182 + 31 +0.0 + 0 +LINE + 5 +5DF + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19923.76309 + 30 +0.0 + 11 +4949.99998 + 21 +19945.413725 + 31 +0.0 + 0 +LINE + 5 +5E0 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19988.714995 + 30 +0.0 + 11 +4920.0 + 21 +19997.375215 + 31 +0.0 + 0 +LINE + 5 +5E1 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19815.509915 + 30 +0.0 + 11 +4987.49998 + 21 +19837.16055 + 31 +0.0 + 0 +LINE + 5 +5E2 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19880.46182 + 30 +0.0 + 11 +4949.99998 + 21 +19902.112455 + 31 +0.0 + 0 +LINE + 5 +5E3 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19945.413725 + 30 +0.0 + 11 +4920.0 + 21 +19954.073945 + 31 +0.0 + 0 +LINE + 5 +5E4 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19772.208644 + 30 +0.0 + 11 +4987.49998 + 21 +19793.85928 + 31 +0.0 + 0 +LINE + 5 +5E5 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19837.16055 + 30 +0.0 + 11 +4949.99998 + 21 +19858.811185 + 31 +0.0 + 0 +LINE + 5 +5E6 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19902.112455 + 30 +0.0 + 11 +4920.0 + 21 +19910.772675 + 31 +0.0 + 0 +LINE + 5 +5E7 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19728.907374 + 30 +0.0 + 11 +4987.49998 + 21 +19750.558009 + 31 +0.0 + 0 +LINE + 5 +5E8 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19793.85928 + 30 +0.0 + 11 +4949.99998 + 21 +19815.509915 + 31 +0.0 + 0 +LINE + 5 +5E9 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19858.811185 + 30 +0.0 + 11 +4920.0 + 21 +19867.471405 + 31 +0.0 + 0 +LINE + 5 +5EA + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19685.606104 + 30 +0.0 + 11 +4987.49998 + 21 +19707.256739 + 31 +0.0 + 0 +LINE + 5 +5EB + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19750.558009 + 30 +0.0 + 11 +4949.99998 + 21 +19772.208645 + 31 +0.0 + 0 +LINE + 5 +5EC + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19815.509915 + 30 +0.0 + 11 +4920.0 + 21 +19824.170135 + 31 +0.0 + 0 +LINE + 5 +5ED + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19642.304834 + 30 +0.0 + 11 +4987.49998 + 21 +19663.955469 + 31 +0.0 + 0 +LINE + 5 +5EE + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19707.256739 + 30 +0.0 + 11 +4949.99998 + 21 +19728.907374 + 31 +0.0 + 0 +LINE + 5 +5EF + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19772.208645 + 30 +0.0 + 11 +4920.0 + 21 +19780.868865 + 31 +0.0 + 0 +LINE + 5 +5F0 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19599.003564 + 30 +0.0 + 11 +4987.49998 + 21 +19620.654199 + 31 +0.0 + 0 +LINE + 5 +5F1 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19663.955469 + 30 +0.0 + 11 +4949.99998 + 21 +19685.606104 + 31 +0.0 + 0 +LINE + 5 +5F2 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19728.907374 + 30 +0.0 + 11 +4920.0 + 21 +19737.567595 + 31 +0.0 + 0 +LINE + 5 +5F3 + 8 +0 + 62 + 0 + 10 +4999.99998 + 20 +19555.702294 + 30 +0.0 + 11 +4987.49998 + 21 +19577.352929 + 31 +0.0 + 0 +LINE + 5 +5F4 + 8 +0 + 62 + 0 + 10 +4962.49998 + 20 +19620.654199 + 30 +0.0 + 11 +4949.99998 + 21 +19642.304834 + 31 +0.0 + 0 +LINE + 5 +5F5 + 8 +0 + 62 + 0 + 10 +4924.99998 + 20 +19685.606104 + 30 +0.0 + 11 +4920.0 + 21 +19694.266325 + 31 +0.0 + 0 +LINE + 5 +5F6 + 8 +0 + 62 + 0 + 10 +4999.999981 + 20 +19512.401024 + 30 +0.0 + 11 +4987.499981 + 21 +19534.051659 + 31 +0.0 + 0 +LINE + 5 +5F7 + 8 +0 + 62 + 0 + 10 +4962.499981 + 20 +19577.352929 + 30 +0.0 + 11 +4949.999981 + 21 +19599.003564 + 31 +0.0 + 0 +LINE + 5 +5F8 + 8 +0 + 62 + 0 + 10 +4924.999981 + 20 +19642.304834 + 30 +0.0 + 11 +4920.0 + 21 +19650.965055 + 31 +0.0 + 0 +LINE + 5 +5F9 + 8 +0 + 62 + 0 + 10 +4999.999981 + 20 +19469.099753 + 30 +0.0 + 11 +4987.499981 + 21 +19490.750389 + 31 +0.0 + 0 +LINE + 5 +5FA + 8 +0 + 62 + 0 + 10 +4962.499981 + 20 +19534.051659 + 30 +0.0 + 11 +4949.999981 + 21 +19555.702294 + 31 +0.0 + 0 +LINE + 5 +5FB + 8 +0 + 62 + 0 + 10 +4924.999981 + 20 +19599.003564 + 30 +0.0 + 11 +4920.0 + 21 +19607.663785 + 31 +0.0 + 0 +LINE + 5 +5FC + 8 +0 + 62 + 0 + 10 +4999.999981 + 20 +19425.798483 + 30 +0.0 + 11 +4987.499981 + 21 +19447.449118 + 31 +0.0 + 0 +LINE + 5 +5FD + 8 +0 + 62 + 0 + 10 +4962.499981 + 20 +19490.750389 + 30 +0.0 + 11 +4949.999981 + 21 +19512.401024 + 31 +0.0 + 0 +LINE + 5 +5FE + 8 +0 + 62 + 0 + 10 +4924.999981 + 20 +19555.702294 + 30 +0.0 + 11 +4920.0 + 21 +19564.362515 + 31 +0.0 + 0 +LINE + 5 +5FF + 8 +0 + 62 + 0 + 10 +4999.999981 + 20 +19382.497213 + 30 +0.0 + 11 +4987.499981 + 21 +19404.147848 + 31 +0.0 + 0 +LINE + 5 +600 + 8 +0 + 62 + 0 + 10 +4962.499981 + 20 +19447.449118 + 30 +0.0 + 11 +4949.999981 + 21 +19469.099754 + 31 +0.0 + 0 +LINE + 5 +601 + 8 +0 + 62 + 0 + 10 +4924.999981 + 20 +19512.401024 + 30 +0.0 + 11 +4920.0 + 21 +19521.061245 + 31 +0.0 + 0 +LINE + 5 +602 + 8 +0 + 62 + 0 + 10 +4962.499981 + 20 +19404.147848 + 30 +0.0 + 11 +4949.999981 + 21 +19425.798483 + 31 +0.0 + 0 +LINE + 5 +603 + 8 +0 + 62 + 0 + 10 +4924.999981 + 20 +19469.099754 + 30 +0.0 + 11 +4920.0 + 21 +19477.759975 + 31 +0.0 + 0 +LINE + 5 +604 + 8 +0 + 62 + 0 + 10 +4960.82369 + 20 +19363.75 + 30 +0.0 + 11 +4949.999981 + 21 +19382.497213 + 31 +0.0 + 0 +LINE + 5 +605 + 8 +0 + 62 + 0 + 10 +4924.999981 + 20 +19425.798483 + 30 +0.0 + 11 +4920.0 + 21 +19434.458705 + 31 +0.0 + 0 +LINE + 5 +606 + 8 +0 + 62 + 0 + 10 +4924.999981 + 20 +19382.497213 + 30 +0.0 + 11 +4920.0 + 21 +19391.157435 + 31 +0.0 + 0 +LINE + 5 +607 + 8 +0 + 62 + 0 + 10 +5072.388754 + 20 +22115.0 + 30 +0.0 + 11 +5062.499975 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +608 + 8 +0 + 62 + 0 + 10 +5037.499975 + 20 +22175.429137 + 30 +0.0 + 11 +5026.200733 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +609 + 8 +0 + 62 + 0 + 10 +5074.999975 + 20 +22153.778502 + 30 +0.0 + 11 +5062.499975 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +60A + 8 +0 + 62 + 0 + 10 +5112.499975 + 20 +22132.127867 + 30 +0.0 + 11 +5099.999975 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +60B + 8 +0 + 62 + 0 + 10 +5147.388754 + 20 +22115.0 + 30 +0.0 + 11 +5137.499975 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +60C + 8 +0 + 62 + 0 + 10 +5112.499975 + 20 +22175.429137 + 30 +0.0 + 11 +5101.200732 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +60D + 8 +0 + 62 + 0 + 10 +5149.999975 + 20 +22153.778502 + 30 +0.0 + 11 +5137.499975 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +60E + 8 +0 + 62 + 0 + 10 +5187.499975 + 20 +22132.127867 + 30 +0.0 + 11 +5174.999975 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +60F + 8 +0 + 62 + 0 + 10 +5222.388753 + 20 +22115.0 + 30 +0.0 + 11 +5212.499975 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +610 + 8 +0 + 62 + 0 + 10 +5187.499975 + 20 +22175.429137 + 30 +0.0 + 11 +5176.200732 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +611 + 8 +0 + 62 + 0 + 10 +5224.999975 + 20 +22153.778502 + 30 +0.0 + 11 +5212.499975 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +612 + 8 +0 + 62 + 0 + 10 +5262.499975 + 20 +22132.127867 + 30 +0.0 + 11 +5249.999975 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +613 + 8 +0 + 62 + 0 + 10 +5297.388753 + 20 +22115.0 + 30 +0.0 + 11 +5287.499975 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +614 + 8 +0 + 62 + 0 + 10 +5262.499975 + 20 +22175.429137 + 30 +0.0 + 11 +5251.200732 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +615 + 8 +0 + 62 + 0 + 10 +5299.999975 + 20 +22153.778502 + 30 +0.0 + 11 +5287.499975 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +616 + 8 +0 + 62 + 0 + 10 +5337.499975 + 20 +22132.127867 + 30 +0.0 + 11 +5324.999975 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +617 + 8 +0 + 62 + 0 + 10 +5372.388753 + 20 +22115.0 + 30 +0.0 + 11 +5362.499974 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +618 + 8 +0 + 62 + 0 + 10 +5337.499974 + 20 +22175.429137 + 30 +0.0 + 11 +5326.200731 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +619 + 8 +0 + 62 + 0 + 10 +5374.999974 + 20 +22153.778502 + 30 +0.0 + 11 +5362.499974 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +61A + 8 +0 + 62 + 0 + 10 +5412.499974 + 20 +22132.127866 + 30 +0.0 + 11 +5399.999974 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +61B + 8 +0 + 62 + 0 + 10 +5447.388752 + 20 +22115.0 + 30 +0.0 + 11 +5437.499974 + 21 +22132.127866 + 31 +0.0 + 0 +LINE + 5 +61C + 8 +0 + 62 + 0 + 10 +5412.499974 + 20 +22175.429137 + 30 +0.0 + 11 +5401.200731 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +61D + 8 +0 + 62 + 0 + 10 +5449.999974 + 20 +22153.778501 + 30 +0.0 + 11 +5437.499974 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +61E + 8 +0 + 62 + 0 + 10 +5487.499974 + 20 +22132.127866 + 30 +0.0 + 11 +5474.999974 + 21 +22153.778501 + 31 +0.0 + 0 +LINE + 5 +61F + 8 +0 + 62 + 0 + 10 +5522.388752 + 20 +22115.0 + 30 +0.0 + 11 +5512.499974 + 21 +22132.127866 + 31 +0.0 + 0 +LINE + 5 +620 + 8 +0 + 62 + 0 + 10 +5487.499974 + 20 +22175.429136 + 30 +0.0 + 11 +5476.200731 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +621 + 8 +0 + 62 + 0 + 10 +5524.999974 + 20 +22153.778501 + 30 +0.0 + 11 +5512.499974 + 21 +22175.429136 + 31 +0.0 + 0 +LINE + 5 +622 + 8 +0 + 62 + 0 + 10 +5562.499974 + 20 +22132.127866 + 30 +0.0 + 11 +5549.999974 + 21 +22153.778501 + 31 +0.0 + 0 +LINE + 5 +623 + 8 +0 + 62 + 0 + 10 +5597.388752 + 20 +22115.0 + 30 +0.0 + 11 +5587.499974 + 21 +22132.127866 + 31 +0.0 + 0 +LINE + 5 +624 + 8 +0 + 62 + 0 + 10 +5562.499974 + 20 +22175.429136 + 30 +0.0 + 11 +5551.20073 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +625 + 8 +0 + 62 + 0 + 10 +5599.999974 + 20 +22153.778501 + 30 +0.0 + 11 +5587.499974 + 21 +22175.429136 + 31 +0.0 + 0 +LINE + 5 +626 + 8 +0 + 62 + 0 + 10 +5637.499974 + 20 +22132.127866 + 30 +0.0 + 11 +5624.999974 + 21 +22153.778501 + 31 +0.0 + 0 +LINE + 5 +627 + 8 +0 + 62 + 0 + 10 +5672.388751 + 20 +22115.0 + 30 +0.0 + 11 +5662.499973 + 21 +22132.127866 + 31 +0.0 + 0 +LINE + 5 +628 + 8 +0 + 62 + 0 + 10 +5637.499973 + 20 +22175.429136 + 30 +0.0 + 11 +5626.20073 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +629 + 8 +0 + 62 + 0 + 10 +5674.999973 + 20 +22153.778501 + 30 +0.0 + 11 +5662.499973 + 21 +22175.429136 + 31 +0.0 + 0 +LINE + 5 +62A + 8 +0 + 62 + 0 + 10 +5712.499973 + 20 +22132.127866 + 30 +0.0 + 11 +5699.999973 + 21 +22153.778501 + 31 +0.0 + 0 +LINE + 5 +62B + 8 +0 + 62 + 0 + 10 +5747.388751 + 20 +22115.0 + 30 +0.0 + 11 +5737.499973 + 21 +22132.127866 + 31 +0.0 + 0 +LINE + 5 +62C + 8 +0 + 62 + 0 + 10 +5712.499973 + 20 +22175.429136 + 30 +0.0 + 11 +5701.20073 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +62D + 8 +0 + 62 + 0 + 10 +5749.999973 + 20 +22153.778501 + 30 +0.0 + 11 +5737.499973 + 21 +22175.429136 + 31 +0.0 + 0 +LINE + 5 +62E + 8 +0 + 62 + 0 + 10 +5787.499973 + 20 +22132.127866 + 30 +0.0 + 11 +5774.999973 + 21 +22153.778501 + 31 +0.0 + 0 +LINE + 5 +62F + 8 +0 + 62 + 0 + 10 +5822.388751 + 20 +22115.0 + 30 +0.0 + 11 +5812.499973 + 21 +22132.127866 + 31 +0.0 + 0 +LINE + 5 +630 + 8 +0 + 62 + 0 + 10 +5787.499973 + 20 +22175.429136 + 30 +0.0 + 11 +5776.200729 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +631 + 8 +0 + 62 + 0 + 10 +5824.999973 + 20 +22153.778501 + 30 +0.0 + 11 +5812.499973 + 21 +22175.429136 + 31 +0.0 + 0 +LINE + 5 +632 + 8 +0 + 62 + 0 + 10 +5862.499973 + 20 +22132.127866 + 30 +0.0 + 11 +5849.999973 + 21 +22153.778501 + 31 +0.0 + 0 +LINE + 5 +633 + 8 +0 + 62 + 0 + 10 +5897.38875 + 20 +22115.0 + 30 +0.0 + 11 +5887.499973 + 21 +22132.127866 + 31 +0.0 + 0 +LINE + 5 +634 + 8 +0 + 62 + 0 + 10 +5862.499973 + 20 +22175.429136 + 30 +0.0 + 11 +5851.200729 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +635 + 8 +0 + 62 + 0 + 10 +5899.999973 + 20 +22153.778501 + 30 +0.0 + 11 +5887.499973 + 21 +22175.429136 + 31 +0.0 + 0 +LINE + 5 +636 + 8 +0 + 62 + 0 + 10 +5937.499973 + 20 +22132.127865 + 30 +0.0 + 11 +5924.999973 + 21 +22153.778501 + 31 +0.0 + 0 +LINE + 5 +637 + 8 +0 + 62 + 0 + 10 +5972.38875 + 20 +22115.0 + 30 +0.0 + 11 +5962.499972 + 21 +22132.127865 + 31 +0.0 + 0 +LINE + 5 +638 + 8 +0 + 62 + 0 + 10 +5937.499972 + 20 +22175.429136 + 30 +0.0 + 11 +5926.200729 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +639 + 8 +0 + 62 + 0 + 10 +5974.999972 + 20 +22153.7785 + 30 +0.0 + 11 +5962.499972 + 21 +22175.429136 + 31 +0.0 + 0 +LINE + 5 +63A + 8 +0 + 62 + 0 + 10 +6012.499972 + 20 +22132.127865 + 30 +0.0 + 11 +5999.999972 + 21 +22153.7785 + 31 +0.0 + 0 +LINE + 5 +63B + 8 +0 + 62 + 0 + 10 +6047.38875 + 20 +22115.0 + 30 +0.0 + 11 +6037.499972 + 21 +22132.127865 + 31 +0.0 + 0 +LINE + 5 +63C + 8 +0 + 62 + 0 + 10 +6012.499972 + 20 +22175.429135 + 30 +0.0 + 11 +6001.200728 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +63D + 8 +0 + 62 + 0 + 10 +6049.999972 + 20 +22153.7785 + 30 +0.0 + 11 +6037.499972 + 21 +22175.429135 + 31 +0.0 + 0 +LINE + 5 +63E + 8 +0 + 62 + 0 + 10 +6087.499972 + 20 +22132.127865 + 30 +0.0 + 11 +6074.999972 + 21 +22153.7785 + 31 +0.0 + 0 +LINE + 5 +63F + 8 +0 + 62 + 0 + 10 +6122.38875 + 20 +22115.0 + 30 +0.0 + 11 +6112.499972 + 21 +22132.127865 + 31 +0.0 + 0 +LINE + 5 +640 + 8 +0 + 62 + 0 + 10 +6087.499972 + 20 +22175.429135 + 30 +0.0 + 11 +6076.200728 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +641 + 8 +0 + 62 + 0 + 10 +6124.999972 + 20 +22153.7785 + 30 +0.0 + 11 +6112.499972 + 21 +22175.429135 + 31 +0.0 + 0 +LINE + 5 +642 + 8 +0 + 62 + 0 + 10 +6162.499972 + 20 +22132.127865 + 30 +0.0 + 11 +6149.999972 + 21 +22153.7785 + 31 +0.0 + 0 +LINE + 5 +643 + 8 +0 + 62 + 0 + 10 +6197.388749 + 20 +22115.0 + 30 +0.0 + 11 +6187.499972 + 21 +22132.127865 + 31 +0.0 + 0 +LINE + 5 +644 + 8 +0 + 62 + 0 + 10 +6162.499972 + 20 +22175.429135 + 30 +0.0 + 11 +6151.200728 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +645 + 8 +0 + 62 + 0 + 10 +6199.999972 + 20 +22153.7785 + 30 +0.0 + 11 +6187.499972 + 21 +22175.429135 + 31 +0.0 + 0 +LINE + 5 +646 + 8 +0 + 62 + 0 + 10 +6237.499972 + 20 +22132.127865 + 30 +0.0 + 11 +6224.999972 + 21 +22153.7785 + 31 +0.0 + 0 +LINE + 5 +647 + 8 +0 + 62 + 0 + 10 +6272.388749 + 20 +22115.0 + 30 +0.0 + 11 +6262.499971 + 21 +22132.127865 + 31 +0.0 + 0 +LINE + 5 +648 + 8 +0 + 62 + 0 + 10 +6237.499971 + 20 +22175.429135 + 30 +0.0 + 11 +6226.200727 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +649 + 8 +0 + 62 + 0 + 10 +6274.999971 + 20 +22153.7785 + 30 +0.0 + 11 +6262.499971 + 21 +22175.429135 + 31 +0.0 + 0 +LINE + 5 +64A + 8 +0 + 62 + 0 + 10 +6312.499971 + 20 +22132.127865 + 30 +0.0 + 11 +6299.999971 + 21 +22153.7785 + 31 +0.0 + 0 +LINE + 5 +64B + 8 +0 + 62 + 0 + 10 +6347.388749 + 20 +22115.0 + 30 +0.0 + 11 +6337.499971 + 21 +22132.127865 + 31 +0.0 + 0 +LINE + 5 +64C + 8 +0 + 62 + 0 + 10 +6312.499971 + 20 +22175.429135 + 30 +0.0 + 11 +6301.200727 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +64D + 8 +0 + 62 + 0 + 10 +6349.999971 + 20 +22153.7785 + 30 +0.0 + 11 +6337.499971 + 21 +22175.429135 + 31 +0.0 + 0 +LINE + 5 +64E + 8 +0 + 62 + 0 + 10 +6387.499971 + 20 +22132.127865 + 30 +0.0 + 11 +6374.999971 + 21 +22153.7785 + 31 +0.0 + 0 +LINE + 5 +64F + 8 +0 + 62 + 0 + 10 +6422.388748 + 20 +22115.0 + 30 +0.0 + 11 +6412.499971 + 21 +22132.127865 + 31 +0.0 + 0 +LINE + 5 +650 + 8 +0 + 62 + 0 + 10 +6387.499971 + 20 +22175.429135 + 30 +0.0 + 11 +6376.200727 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +651 + 8 +0 + 62 + 0 + 10 +6424.999971 + 20 +22153.7785 + 30 +0.0 + 11 +6412.499971 + 21 +22175.429135 + 31 +0.0 + 0 +LINE + 5 +652 + 8 +0 + 62 + 0 + 10 +6462.499971 + 20 +22132.127864 + 30 +0.0 + 11 +6449.999971 + 21 +22153.7785 + 31 +0.0 + 0 +LINE + 5 +653 + 8 +0 + 62 + 0 + 10 +6497.388748 + 20 +22115.0 + 30 +0.0 + 11 +6487.499971 + 21 +22132.127864 + 31 +0.0 + 0 +LINE + 5 +654 + 8 +0 + 62 + 0 + 10 +6462.499971 + 20 +22175.429135 + 30 +0.0 + 11 +6451.200726 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +655 + 8 +0 + 62 + 0 + 10 +6499.999971 + 20 +22153.778499 + 30 +0.0 + 11 +6487.499971 + 21 +22175.429135 + 31 +0.0 + 0 +LINE + 5 +656 + 8 +0 + 62 + 0 + 10 +6537.499971 + 20 +22132.127864 + 30 +0.0 + 11 +6524.999971 + 21 +22153.778499 + 31 +0.0 + 0 +LINE + 5 +657 + 8 +0 + 62 + 0 + 10 +6572.388748 + 20 +22115.0 + 30 +0.0 + 11 +6562.499971 + 21 +22132.127864 + 31 +0.0 + 0 +LINE + 5 +658 + 8 +0 + 62 + 0 + 10 +6537.499971 + 20 +22175.429134 + 30 +0.0 + 11 +6526.200726 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +659 + 8 +0 + 62 + 0 + 10 +6574.99997 + 20 +22153.778499 + 30 +0.0 + 11 +6562.49997 + 21 +22175.429134 + 31 +0.0 + 0 +LINE + 5 +65A + 8 +0 + 62 + 0 + 10 +6612.49997 + 20 +22132.127864 + 30 +0.0 + 11 +6599.99997 + 21 +22153.778499 + 31 +0.0 + 0 +LINE + 5 +65B + 8 +0 + 62 + 0 + 10 +6647.388747 + 20 +22115.0 + 30 +0.0 + 11 +6637.49997 + 21 +22132.127864 + 31 +0.0 + 0 +LINE + 5 +65C + 8 +0 + 62 + 0 + 10 +6612.49997 + 20 +22175.429134 + 30 +0.0 + 11 +6601.200726 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +65D + 8 +0 + 62 + 0 + 10 +6649.99997 + 20 +22153.778499 + 30 +0.0 + 11 +6637.49997 + 21 +22175.429134 + 31 +0.0 + 0 +LINE + 5 +65E + 8 +0 + 62 + 0 + 10 +6687.49997 + 20 +22132.127864 + 30 +0.0 + 11 +6674.99997 + 21 +22153.778499 + 31 +0.0 + 0 +LINE + 5 +65F + 8 +0 + 62 + 0 + 10 +6722.388747 + 20 +22115.0 + 30 +0.0 + 11 +6712.49997 + 21 +22132.127864 + 31 +0.0 + 0 +LINE + 5 +660 + 8 +0 + 62 + 0 + 10 +6687.49997 + 20 +22175.429134 + 30 +0.0 + 11 +6676.200725 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +661 + 8 +0 + 62 + 0 + 10 +6724.99997 + 20 +22153.778499 + 30 +0.0 + 11 +6712.49997 + 21 +22175.429134 + 31 +0.0 + 0 +LINE + 5 +662 + 8 +0 + 62 + 0 + 10 +6751.25 + 20 +22151.613383 + 30 +0.0 + 11 +6749.99997 + 21 +22153.778499 + 31 +0.0 + 0 +LINE + 5 +663 + 8 +0 + 62 + 0 + 10 +6751.25 + 20 +22194.914653 + 30 +0.0 + 11 +6751.200725 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +664 + 8 +0 + 62 + 0 + 10 +6637.500019 + 20 +22132.12787 + 30 +0.0 + 11 +6650.000019 + 21 +22153.778505 + 31 +0.0 + 0 +LINE + 5 +665 + 8 +0 + 62 + 0 + 10 +6602.611239 + 20 +22115.0 + 30 +0.0 + 11 +6612.500019 + 21 +22132.12787 + 31 +0.0 + 0 +LINE + 5 +666 + 8 +0 + 62 + 0 + 10 +6637.500019 + 20 +22175.42914 + 30 +0.0 + 11 +6648.79926 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +667 + 8 +0 + 62 + 0 + 10 +4989.176311 + 20 +19363.75 + 30 +0.0 + 11 +5000.0 + 21 +19382.49718 + 31 +0.0 + 0 +LINE + 5 +668 + 8 +0 + 62 + 0 + 10 +6600.000019 + 20 +22153.778505 + 30 +0.0 + 11 +6612.500019 + 21 +22175.42914 + 31 +0.0 + 0 +LINE + 5 +669 + 8 +0 + 62 + 0 + 10 +4987.500019 + 20 +19404.147848 + 30 +0.0 + 11 +5000.0 + 21 +19425.79845 + 31 +0.0 + 0 +LINE + 5 +66A + 8 +0 + 62 + 0 + 10 +6562.500019 + 20 +22132.12787 + 30 +0.0 + 11 +6575.000019 + 21 +22153.778505 + 31 +0.0 + 0 +LINE + 5 +66B + 8 +0 + 62 + 0 + 10 +4950.000019 + 20 +19382.497213 + 30 +0.0 + 11 +4962.500019 + 21 +19404.147848 + 31 +0.0 + 0 +LINE + 5 +66C + 8 +0 + 62 + 0 + 10 +4987.500019 + 20 +19447.449118 + 30 +0.0 + 11 +5000.0 + 21 +19469.09972 + 31 +0.0 + 0 +LINE + 5 +66D + 8 +0 + 62 + 0 + 10 +6527.611239 + 20 +22115.0 + 30 +0.0 + 11 +6537.500019 + 21 +22132.12787 + 31 +0.0 + 0 +LINE + 5 +66E + 8 +0 + 62 + 0 + 10 +6562.500019 + 20 +22175.42914 + 30 +0.0 + 11 +6573.79926 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +66F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19373.836925 + 30 +0.0 + 11 +4925.000019 + 21 +19382.497213 + 31 +0.0 + 0 +LINE + 5 +670 + 8 +0 + 62 + 0 + 10 +4950.000019 + 20 +19425.798483 + 30 +0.0 + 11 +4962.500019 + 21 +19447.449118 + 31 +0.0 + 0 +LINE + 5 +671 + 8 +0 + 62 + 0 + 10 +4987.500019 + 20 +19490.750389 + 30 +0.0 + 11 +5000.0 + 21 +19512.40099 + 31 +0.0 + 0 +LINE + 5 +672 + 8 +0 + 62 + 0 + 10 +6525.000019 + 20 +22153.778505 + 30 +0.0 + 11 +6537.500019 + 21 +22175.42914 + 31 +0.0 + 0 +LINE + 5 +673 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19417.138195 + 30 +0.0 + 11 +4925.00002 + 21 +19425.798483 + 31 +0.0 + 0 +LINE + 5 +674 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19469.099753 + 30 +0.0 + 11 +4962.50002 + 21 +19490.750388 + 31 +0.0 + 0 +LINE + 5 +675 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19534.051659 + 30 +0.0 + 11 +5000.0 + 21 +19555.70226 + 31 +0.0 + 0 +LINE + 5 +676 + 8 +0 + 62 + 0 + 10 +6487.50002 + 20 +22132.12787 + 30 +0.0 + 11 +6500.00002 + 21 +22153.778505 + 31 +0.0 + 0 +LINE + 5 +677 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19460.439465 + 30 +0.0 + 11 +4925.00002 + 21 +19469.099753 + 31 +0.0 + 0 +LINE + 5 +678 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19512.401024 + 30 +0.0 + 11 +4962.50002 + 21 +19534.051659 + 31 +0.0 + 0 +LINE + 5 +679 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19577.352929 + 30 +0.0 + 11 +5000.0 + 21 +19599.00353 + 31 +0.0 + 0 +LINE + 5 +67A + 8 +0 + 62 + 0 + 10 +6452.611239 + 20 +22115.0 + 30 +0.0 + 11 +6462.50002 + 21 +22132.12787 + 31 +0.0 + 0 +LINE + 5 +67B + 8 +0 + 62 + 0 + 10 +6487.50002 + 20 +22175.42914 + 30 +0.0 + 11 +6498.799261 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +67C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19503.740735 + 30 +0.0 + 11 +4925.00002 + 21 +19512.401023 + 31 +0.0 + 0 +LINE + 5 +67D + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19555.702294 + 30 +0.0 + 11 +4962.50002 + 21 +19577.352929 + 31 +0.0 + 0 +LINE + 5 +67E + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19620.654199 + 30 +0.0 + 11 +5000.0 + 21 +19642.3048 + 31 +0.0 + 0 +LINE + 5 +67F + 8 +0 + 62 + 0 + 10 +6450.00002 + 20 +22153.778505 + 30 +0.0 + 11 +6462.50002 + 21 +22175.42914 + 31 +0.0 + 0 +LINE + 5 +680 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19547.042005 + 30 +0.0 + 11 +4925.00002 + 21 +19555.702294 + 31 +0.0 + 0 +LINE + 5 +681 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19599.003564 + 30 +0.0 + 11 +4962.50002 + 21 +19620.654199 + 31 +0.0 + 0 +LINE + 5 +682 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19663.955469 + 30 +0.0 + 11 +5000.0 + 21 +19685.60607 + 31 +0.0 + 0 +LINE + 5 +683 + 8 +0 + 62 + 0 + 10 +6412.50002 + 20 +22132.12787 + 30 +0.0 + 11 +6425.00002 + 21 +22153.778505 + 31 +0.0 + 0 +LINE + 5 +684 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19590.343275 + 30 +0.0 + 11 +4925.00002 + 21 +19599.003564 + 31 +0.0 + 0 +LINE + 5 +685 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19642.304834 + 30 +0.0 + 11 +4962.50002 + 21 +19663.955469 + 31 +0.0 + 0 +LINE + 5 +686 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19707.256739 + 30 +0.0 + 11 +5000.0 + 21 +19728.90734 + 31 +0.0 + 0 +LINE + 5 +687 + 8 +0 + 62 + 0 + 10 +6377.61124 + 20 +22115.0 + 30 +0.0 + 11 +6387.50002 + 21 +22132.12787 + 31 +0.0 + 0 +LINE + 5 +688 + 8 +0 + 62 + 0 + 10 +6412.50002 + 20 +22175.42914 + 30 +0.0 + 11 +6423.799261 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +689 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19633.644545 + 30 +0.0 + 11 +4925.00002 + 21 +19642.304834 + 31 +0.0 + 0 +LINE + 5 +68A + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19685.606104 + 30 +0.0 + 11 +4962.50002 + 21 +19707.256739 + 31 +0.0 + 0 +LINE + 5 +68B + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19750.558009 + 30 +0.0 + 11 +5000.0 + 21 +19772.20861 + 31 +0.0 + 0 +LINE + 5 +68C + 8 +0 + 62 + 0 + 10 +6375.00002 + 20 +22153.778505 + 30 +0.0 + 11 +6387.50002 + 21 +22175.42914 + 31 +0.0 + 0 +LINE + 5 +68D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19676.945815 + 30 +0.0 + 11 +4925.00002 + 21 +19685.606104 + 31 +0.0 + 0 +LINE + 5 +68E + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19728.907374 + 30 +0.0 + 11 +4962.50002 + 21 +19750.558009 + 31 +0.0 + 0 +LINE + 5 +68F + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19793.85928 + 30 +0.0 + 11 +5000.0 + 21 +19815.50988 + 31 +0.0 + 0 +LINE + 5 +690 + 8 +0 + 62 + 0 + 10 +6337.50002 + 20 +22132.12787 + 30 +0.0 + 11 +6350.00002 + 21 +22153.778505 + 31 +0.0 + 0 +LINE + 5 +691 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19720.247085 + 30 +0.0 + 11 +4925.00002 + 21 +19728.907374 + 31 +0.0 + 0 +LINE + 5 +692 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19772.208644 + 30 +0.0 + 11 +4962.50002 + 21 +19793.859279 + 31 +0.0 + 0 +LINE + 5 +693 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19837.16055 + 30 +0.0 + 11 +5000.0 + 21 +19858.81115 + 31 +0.0 + 0 +LINE + 5 +694 + 8 +0 + 62 + 0 + 10 +6302.61124 + 20 +22115.0 + 30 +0.0 + 11 +6312.50002 + 21 +22132.12787 + 31 +0.0 + 0 +LINE + 5 +695 + 8 +0 + 62 + 0 + 10 +6337.50002 + 20 +22175.42914 + 30 +0.0 + 11 +6348.799261 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +696 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19763.548355 + 30 +0.0 + 11 +4925.00002 + 21 +19772.208644 + 31 +0.0 + 0 +LINE + 5 +697 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19815.509915 + 30 +0.0 + 11 +4962.50002 + 21 +19837.16055 + 31 +0.0 + 0 +LINE + 5 +698 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19880.46182 + 30 +0.0 + 11 +5000.0 + 21 +19902.11242 + 31 +0.0 + 0 +LINE + 5 +699 + 8 +0 + 62 + 0 + 10 +6300.00002 + 20 +22153.778505 + 30 +0.0 + 11 +6312.50002 + 21 +22175.42914 + 31 +0.0 + 0 +LINE + 5 +69A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19806.849625 + 30 +0.0 + 11 +4925.00002 + 21 +19815.509914 + 31 +0.0 + 0 +LINE + 5 +69B + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19858.811185 + 30 +0.0 + 11 +4962.50002 + 21 +19880.46182 + 31 +0.0 + 0 +LINE + 5 +69C + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19923.76309 + 30 +0.0 + 11 +5000.0 + 21 +19945.41369 + 31 +0.0 + 0 +LINE + 5 +69D + 8 +0 + 62 + 0 + 10 +6262.50002 + 20 +22132.12787 + 30 +0.0 + 11 +6275.00002 + 21 +22153.778505 + 31 +0.0 + 0 +LINE + 5 +69E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19850.150895 + 30 +0.0 + 11 +4925.00002 + 21 +19858.811185 + 31 +0.0 + 0 +LINE + 5 +69F + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19902.112455 + 30 +0.0 + 11 +4962.50002 + 21 +19923.76309 + 31 +0.0 + 0 +LINE + 5 +6A0 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +19967.06436 + 30 +0.0 + 11 +5000.0 + 21 +19988.71496 + 31 +0.0 + 0 +LINE + 5 +6A1 + 8 +0 + 62 + 0 + 10 +6227.61124 + 20 +22115.0 + 30 +0.0 + 11 +6237.50002 + 21 +22132.12787 + 31 +0.0 + 0 +LINE + 5 +6A2 + 8 +0 + 62 + 0 + 10 +6262.50002 + 20 +22175.42914 + 30 +0.0 + 11 +6273.799262 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6A3 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19893.452165 + 30 +0.0 + 11 +4925.00002 + 21 +19902.112455 + 31 +0.0 + 0 +LINE + 5 +6A4 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19945.413725 + 30 +0.0 + 11 +4962.50002 + 21 +19967.06436 + 31 +0.0 + 0 +LINE + 5 +6A5 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +20010.36563 + 30 +0.0 + 11 +5000.0 + 21 +20032.01623 + 31 +0.0 + 0 +LINE + 5 +6A6 + 8 +0 + 62 + 0 + 10 +6225.00002 + 20 +22153.778505 + 30 +0.0 + 11 +6237.50002 + 21 +22175.42914 + 31 +0.0 + 0 +LINE + 5 +6A7 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19936.753435 + 30 +0.0 + 11 +4925.00002 + 21 +19945.413725 + 31 +0.0 + 0 +LINE + 5 +6A8 + 8 +0 + 62 + 0 + 10 +4950.00002 + 20 +19988.714995 + 30 +0.0 + 11 +4962.50002 + 21 +20010.36563 + 31 +0.0 + 0 +LINE + 5 +6A9 + 8 +0 + 62 + 0 + 10 +4987.50002 + 20 +20053.6669 + 30 +0.0 + 11 +5000.0 + 21 +20075.3175 + 31 +0.0 + 0 +LINE + 5 +6AA + 8 +0 + 62 + 0 + 10 +6187.50002 + 20 +22132.127869 + 30 +0.0 + 11 +6200.00002 + 21 +22153.778505 + 31 +0.0 + 0 +LINE + 5 +6AB + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +19980.054705 + 30 +0.0 + 11 +4925.000021 + 21 +19988.714995 + 31 +0.0 + 0 +LINE + 5 +6AC + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20032.016265 + 30 +0.0 + 11 +4962.500021 + 21 +20053.6669 + 31 +0.0 + 0 +LINE + 5 +6AD + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20096.968171 + 30 +0.0 + 11 +5000.0 + 21 +20118.61877 + 31 +0.0 + 0 +LINE + 5 +6AE + 8 +0 + 62 + 0 + 10 +6152.611241 + 20 +22115.0 + 30 +0.0 + 11 +6162.500021 + 21 +22132.127869 + 31 +0.0 + 0 +LINE + 5 +6AF + 8 +0 + 62 + 0 + 10 +6187.500021 + 20 +22175.42914 + 30 +0.0 + 11 +6198.799262 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6B0 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20023.355975 + 30 +0.0 + 11 +4925.000021 + 21 +20032.016265 + 31 +0.0 + 0 +LINE + 5 +6B1 + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20075.317535 + 30 +0.0 + 11 +4962.500021 + 21 +20096.96817 + 31 +0.0 + 0 +LINE + 5 +6B2 + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20140.269441 + 30 +0.0 + 11 +5000.0 + 21 +20161.92004 + 31 +0.0 + 0 +LINE + 5 +6B3 + 8 +0 + 62 + 0 + 10 +6150.000021 + 20 +22153.778504 + 30 +0.0 + 11 +6162.500021 + 21 +22175.42914 + 31 +0.0 + 0 +LINE + 5 +6B4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20066.657245 + 30 +0.0 + 11 +4925.000021 + 21 +20075.317535 + 31 +0.0 + 0 +LINE + 5 +6B5 + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20118.618806 + 30 +0.0 + 11 +4962.500021 + 21 +20140.269441 + 31 +0.0 + 0 +LINE + 5 +6B6 + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20183.570711 + 30 +0.0 + 11 +5000.0 + 21 +20205.22131 + 31 +0.0 + 0 +LINE + 5 +6B7 + 8 +0 + 62 + 0 + 10 +6112.500021 + 20 +22132.127869 + 30 +0.0 + 11 +6125.000021 + 21 +22153.778504 + 31 +0.0 + 0 +LINE + 5 +6B8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20109.958515 + 30 +0.0 + 11 +4925.000021 + 21 +20118.618805 + 31 +0.0 + 0 +LINE + 5 +6B9 + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20161.920076 + 30 +0.0 + 11 +4962.500021 + 21 +20183.570711 + 31 +0.0 + 0 +LINE + 5 +6BA + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20226.871981 + 30 +0.0 + 11 +5000.0 + 21 +20248.52258 + 31 +0.0 + 0 +LINE + 5 +6BB + 8 +0 + 62 + 0 + 10 +6077.611241 + 20 +22115.0 + 30 +0.0 + 11 +6087.500021 + 21 +22132.127869 + 31 +0.0 + 0 +LINE + 5 +6BC + 8 +0 + 62 + 0 + 10 +6112.500021 + 20 +22175.429139 + 30 +0.0 + 11 +6123.799262 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6BD + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20153.259785 + 30 +0.0 + 11 +4925.000021 + 21 +20161.920076 + 31 +0.0 + 0 +LINE + 5 +6BE + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20205.221346 + 30 +0.0 + 11 +4962.500021 + 21 +20226.871981 + 31 +0.0 + 0 +LINE + 5 +6BF + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20270.173251 + 30 +0.0 + 11 +5000.0 + 21 +20291.82385 + 31 +0.0 + 0 +LINE + 5 +6C0 + 8 +0 + 62 + 0 + 10 +6075.000021 + 20 +22153.778504 + 30 +0.0 + 11 +6087.500021 + 21 +22175.429139 + 31 +0.0 + 0 +LINE + 5 +6C1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20196.561055 + 30 +0.0 + 11 +4925.000021 + 21 +20205.221346 + 31 +0.0 + 0 +LINE + 5 +6C2 + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20248.522616 + 30 +0.0 + 11 +4962.500021 + 21 +20270.173251 + 31 +0.0 + 0 +LINE + 5 +6C3 + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20313.474521 + 30 +0.0 + 11 +5000.0 + 21 +20335.12512 + 31 +0.0 + 0 +LINE + 5 +6C4 + 8 +0 + 62 + 0 + 10 +6037.500021 + 20 +22132.127869 + 30 +0.0 + 11 +6050.000021 + 21 +22153.778504 + 31 +0.0 + 0 +LINE + 5 +6C5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20239.862325 + 30 +0.0 + 11 +4925.000021 + 21 +20248.522616 + 31 +0.0 + 0 +LINE + 5 +6C6 + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20291.823886 + 30 +0.0 + 11 +4962.500021 + 21 +20313.474521 + 31 +0.0 + 0 +LINE + 5 +6C7 + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20356.775791 + 30 +0.0 + 11 +5000.0 + 21 +20378.42639 + 31 +0.0 + 0 +LINE + 5 +6C8 + 8 +0 + 62 + 0 + 10 +6002.611241 + 20 +22115.0 + 30 +0.0 + 11 +6012.500021 + 21 +22132.127869 + 31 +0.0 + 0 +LINE + 5 +6C9 + 8 +0 + 62 + 0 + 10 +6037.500021 + 20 +22175.429139 + 30 +0.0 + 11 +6048.799263 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6CA + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20283.163595 + 30 +0.0 + 11 +4925.000021 + 21 +20291.823886 + 31 +0.0 + 0 +LINE + 5 +6CB + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20335.125156 + 30 +0.0 + 11 +4962.500021 + 21 +20356.775791 + 31 +0.0 + 0 +LINE + 5 +6CC + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20400.077062 + 30 +0.0 + 11 +5000.0 + 21 +20421.72766 + 31 +0.0 + 0 +LINE + 5 +6CD + 8 +0 + 62 + 0 + 10 +6000.000021 + 20 +22153.778504 + 30 +0.0 + 11 +6012.500021 + 21 +22175.429139 + 31 +0.0 + 0 +LINE + 5 +6CE + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20326.464865 + 30 +0.0 + 11 +4925.000021 + 21 +20335.125156 + 31 +0.0 + 0 +LINE + 5 +6CF + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20378.426426 + 30 +0.0 + 11 +4962.500021 + 21 +20400.077061 + 31 +0.0 + 0 +LINE + 5 +6D0 + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20443.378332 + 30 +0.0 + 11 +5000.0 + 21 +20465.02893 + 31 +0.0 + 0 +LINE + 5 +6D1 + 8 +0 + 62 + 0 + 10 +5962.500021 + 20 +22132.127869 + 30 +0.0 + 11 +5975.000021 + 21 +22153.778504 + 31 +0.0 + 0 +LINE + 5 +6D2 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20369.766135 + 30 +0.0 + 11 +4925.000021 + 21 +20378.426426 + 31 +0.0 + 0 +LINE + 5 +6D3 + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20421.727697 + 30 +0.0 + 11 +4962.500021 + 21 +20443.378332 + 31 +0.0 + 0 +LINE + 5 +6D4 + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20486.679602 + 30 +0.0 + 11 +5000.0 + 21 +20508.3302 + 31 +0.0 + 0 +LINE + 5 +6D5 + 8 +0 + 62 + 0 + 10 +5927.611242 + 20 +22115.0 + 30 +0.0 + 11 +5937.500021 + 21 +22132.127869 + 31 +0.0 + 0 +LINE + 5 +6D6 + 8 +0 + 62 + 0 + 10 +5962.500021 + 20 +22175.429139 + 30 +0.0 + 11 +5973.799263 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6D7 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20413.067405 + 30 +0.0 + 11 +4925.000021 + 21 +20421.727696 + 31 +0.0 + 0 +LINE + 5 +6D8 + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20465.028967 + 30 +0.0 + 11 +4962.500021 + 21 +20486.679602 + 31 +0.0 + 0 +LINE + 5 +6D9 + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20529.980872 + 30 +0.0 + 11 +5000.0 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +6DA + 8 +0 + 62 + 0 + 10 +5925.000021 + 20 +22153.778504 + 30 +0.0 + 11 +5937.500021 + 21 +22175.429139 + 31 +0.0 + 0 +LINE + 5 +6DB + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20456.368675 + 30 +0.0 + 11 +4925.000021 + 21 +20465.028967 + 31 +0.0 + 0 +LINE + 5 +6DC + 8 +0 + 62 + 0 + 10 +4950.000021 + 20 +20508.330237 + 30 +0.0 + 11 +4962.500021 + 21 +20529.980872 + 31 +0.0 + 0 +LINE + 5 +6DD + 8 +0 + 62 + 0 + 10 +4987.500021 + 20 +20573.282142 + 30 +0.0 + 11 +5000.0 + 21 +20594.93274 + 31 +0.0 + 0 +LINE + 5 +6DE + 8 +0 + 62 + 0 + 10 +5887.500021 + 20 +22132.127869 + 30 +0.0 + 11 +5900.000021 + 21 +22153.778504 + 31 +0.0 + 0 +LINE + 5 +6DF + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20499.669945 + 30 +0.0 + 11 +4925.000022 + 21 +20508.330237 + 31 +0.0 + 0 +LINE + 5 +6E0 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20551.631507 + 30 +0.0 + 11 +4962.500022 + 21 +20573.282142 + 31 +0.0 + 0 +LINE + 5 +6E1 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20616.583412 + 30 +0.0 + 11 +5000.0 + 21 +20638.23401 + 31 +0.0 + 0 +LINE + 5 +6E2 + 8 +0 + 62 + 0 + 10 +5852.611242 + 20 +22115.0 + 30 +0.0 + 11 +5862.500022 + 21 +22132.127869 + 31 +0.0 + 0 +LINE + 5 +6E3 + 8 +0 + 62 + 0 + 10 +5887.500022 + 20 +22175.429139 + 30 +0.0 + 11 +5898.799263 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6E4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20542.971215 + 30 +0.0 + 11 +4925.000022 + 21 +20551.631507 + 31 +0.0 + 0 +LINE + 5 +6E5 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20594.932777 + 30 +0.0 + 11 +4962.500022 + 21 +20616.583412 + 31 +0.0 + 0 +LINE + 5 +6E6 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20659.884682 + 30 +0.0 + 11 +5000.0 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +6E7 + 8 +0 + 62 + 0 + 10 +5850.000022 + 20 +22153.778504 + 30 +0.0 + 11 +5862.500022 + 21 +22175.429139 + 31 +0.0 + 0 +LINE + 5 +6E8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20586.272485 + 30 +0.0 + 11 +4925.000022 + 21 +20594.932777 + 31 +0.0 + 0 +LINE + 5 +6E9 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20638.234047 + 30 +0.0 + 11 +4962.500022 + 21 +20659.884682 + 31 +0.0 + 0 +LINE + 5 +6EA + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20703.185953 + 30 +0.0 + 11 +5000.0 + 21 +20724.83655 + 31 +0.0 + 0 +LINE + 5 +6EB + 8 +0 + 62 + 0 + 10 +5812.500022 + 20 +22132.127869 + 30 +0.0 + 11 +5825.000022 + 21 +22153.778504 + 31 +0.0 + 0 +LINE + 5 +6EC + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20629.573755 + 30 +0.0 + 11 +4925.000022 + 21 +20638.234047 + 31 +0.0 + 0 +LINE + 5 +6ED + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20681.535317 + 30 +0.0 + 11 +4962.500022 + 21 +20703.185952 + 31 +0.0 + 0 +LINE + 5 +6EE + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20746.487223 + 30 +0.0 + 11 +5000.0 + 21 +20768.13782 + 31 +0.0 + 0 +LINE + 5 +6EF + 8 +0 + 62 + 0 + 10 +5777.611242 + 20 +22115.0 + 30 +0.0 + 11 +5787.500022 + 21 +22132.127869 + 31 +0.0 + 0 +LINE + 5 +6F0 + 8 +0 + 62 + 0 + 10 +5812.500022 + 20 +22175.429139 + 30 +0.0 + 11 +5823.799264 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6F1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20672.875025 + 30 +0.0 + 11 +4925.000022 + 21 +20681.535317 + 31 +0.0 + 0 +LINE + 5 +6F2 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20724.836588 + 30 +0.0 + 11 +4962.500022 + 21 +20746.487223 + 31 +0.0 + 0 +LINE + 5 +6F3 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20789.788493 + 30 +0.0 + 11 +5000.0 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +6F4 + 8 +0 + 62 + 0 + 10 +5775.000022 + 20 +22153.778504 + 30 +0.0 + 11 +5787.500022 + 21 +22175.429139 + 31 +0.0 + 0 +LINE + 5 +6F5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20716.176295 + 30 +0.0 + 11 +4925.000022 + 21 +20724.836587 + 31 +0.0 + 0 +LINE + 5 +6F6 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20768.137858 + 30 +0.0 + 11 +4962.500022 + 21 +20789.788493 + 31 +0.0 + 0 +LINE + 5 +6F7 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20833.089763 + 30 +0.0 + 11 +5000.0 + 21 +20854.74036 + 31 +0.0 + 0 +LINE + 5 +6F8 + 8 +0 + 62 + 0 + 10 +5737.500022 + 20 +22132.127869 + 30 +0.0 + 11 +5750.000022 + 21 +22153.778504 + 31 +0.0 + 0 +LINE + 5 +6F9 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20759.477565 + 30 +0.0 + 11 +4925.000022 + 21 +20768.137858 + 31 +0.0 + 0 +LINE + 5 +6FA + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20811.439128 + 30 +0.0 + 11 +4962.500022 + 21 +20833.089763 + 31 +0.0 + 0 +LINE + 5 +6FB + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20876.391033 + 30 +0.0 + 11 +5000.0 + 21 +20898.04163 + 31 +0.0 + 0 +LINE + 5 +6FC + 8 +0 + 62 + 0 + 10 +5702.611243 + 20 +22115.0 + 30 +0.0 + 11 +5712.500022 + 21 +22132.127869 + 31 +0.0 + 0 +LINE + 5 +6FD + 8 +0 + 62 + 0 + 10 +5737.500022 + 20 +22175.429139 + 30 +0.0 + 11 +5748.799264 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +6FE + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20802.778835 + 30 +0.0 + 11 +4925.000022 + 21 +20811.439128 + 31 +0.0 + 0 +LINE + 5 +6FF + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20854.740398 + 30 +0.0 + 11 +4962.500022 + 21 +20876.391033 + 31 +0.0 + 0 +LINE + 5 +700 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20919.692303 + 30 +0.0 + 11 +5000.0 + 21 +20941.3429 + 31 +0.0 + 0 +LINE + 5 +701 + 8 +0 + 62 + 0 + 10 +5700.000022 + 20 +22153.778504 + 30 +0.0 + 11 +5712.500022 + 21 +22175.429139 + 31 +0.0 + 0 +LINE + 5 +702 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20846.080105 + 30 +0.0 + 11 +4925.000022 + 21 +20854.740398 + 31 +0.0 + 0 +LINE + 5 +703 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20898.041668 + 30 +0.0 + 11 +4962.500022 + 21 +20919.692303 + 31 +0.0 + 0 +LINE + 5 +704 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +20962.993573 + 30 +0.0 + 11 +5000.0 + 21 +20984.64417 + 31 +0.0 + 0 +LINE + 5 +705 + 8 +0 + 62 + 0 + 10 +5662.500022 + 20 +22132.127868 + 30 +0.0 + 11 +5675.000022 + 21 +22153.778504 + 31 +0.0 + 0 +LINE + 5 +706 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20889.381375 + 30 +0.0 + 11 +4925.000022 + 21 +20898.041668 + 31 +0.0 + 0 +LINE + 5 +707 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20941.342938 + 30 +0.0 + 11 +4962.500022 + 21 +20962.993573 + 31 +0.0 + 0 +LINE + 5 +708 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +21006.294844 + 30 +0.0 + 11 +5000.0 + 21 +21027.94544 + 31 +0.0 + 0 +LINE + 5 +709 + 8 +0 + 62 + 0 + 10 +5627.611243 + 20 +22115.0 + 30 +0.0 + 11 +5637.500022 + 21 +22132.127868 + 31 +0.0 + 0 +LINE + 5 +70A + 8 +0 + 62 + 0 + 10 +5662.500022 + 20 +22175.429139 + 30 +0.0 + 11 +5673.799264 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +70B + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20932.682645 + 30 +0.0 + 11 +4925.000022 + 21 +20941.342938 + 31 +0.0 + 0 +LINE + 5 +70C + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +20984.644208 + 30 +0.0 + 11 +4962.500022 + 21 +21006.294843 + 31 +0.0 + 0 +LINE + 5 +70D + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +21049.596114 + 30 +0.0 + 11 +5000.0 + 21 +21071.24671 + 31 +0.0 + 0 +LINE + 5 +70E + 8 +0 + 62 + 0 + 10 +5625.000022 + 20 +22153.778503 + 30 +0.0 + 11 +5637.500022 + 21 +22175.429139 + 31 +0.0 + 0 +LINE + 5 +70F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +20975.983915 + 30 +0.0 + 11 +4925.000022 + 21 +20984.644208 + 31 +0.0 + 0 +LINE + 5 +710 + 8 +0 + 62 + 0 + 10 +4950.000022 + 20 +21027.945479 + 30 +0.0 + 11 +4962.500022 + 21 +21049.596114 + 31 +0.0 + 0 +LINE + 5 +711 + 8 +0 + 62 + 0 + 10 +4987.500022 + 20 +21092.897384 + 30 +0.0 + 11 +5000.0 + 21 +21114.54798 + 31 +0.0 + 0 +LINE + 5 +712 + 8 +0 + 62 + 0 + 10 +5587.500022 + 20 +22132.127868 + 30 +0.0 + 11 +5600.000022 + 21 +22153.778503 + 31 +0.0 + 0 +LINE + 5 +713 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21019.285185 + 30 +0.0 + 11 +4925.000023 + 21 +21027.945478 + 31 +0.0 + 0 +LINE + 5 +714 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21071.246749 + 30 +0.0 + 11 +4962.500023 + 21 +21092.897384 + 31 +0.0 + 0 +LINE + 5 +715 + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21136.198654 + 30 +0.0 + 11 +5000.0 + 21 +21157.84925 + 31 +0.0 + 0 +LINE + 5 +716 + 8 +0 + 62 + 0 + 10 +5552.611243 + 20 +22115.0 + 30 +0.0 + 11 +5562.500023 + 21 +22132.127868 + 31 +0.0 + 0 +LINE + 5 +717 + 8 +0 + 62 + 0 + 10 +5587.500023 + 20 +22175.429138 + 30 +0.0 + 11 +5598.799265 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +718 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21062.586455 + 30 +0.0 + 11 +4925.000023 + 21 +21071.246749 + 31 +0.0 + 0 +LINE + 5 +719 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21114.548019 + 30 +0.0 + 11 +4962.500023 + 21 +21136.198654 + 31 +0.0 + 0 +LINE + 5 +71A + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21179.499924 + 30 +0.0 + 11 +5000.0 + 21 +21201.15052 + 31 +0.0 + 0 +LINE + 5 +71B + 8 +0 + 62 + 0 + 10 +5550.000023 + 20 +22153.778503 + 30 +0.0 + 11 +5562.500023 + 21 +22175.429138 + 31 +0.0 + 0 +LINE + 5 +71C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21105.887725 + 30 +0.0 + 11 +4925.000023 + 21 +21114.548019 + 31 +0.0 + 0 +LINE + 5 +71D + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21157.849289 + 30 +0.0 + 11 +4962.500023 + 21 +21179.499924 + 31 +0.0 + 0 +LINE + 5 +71E + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21222.801194 + 30 +0.0 + 11 +5000.0 + 21 +21244.45179 + 31 +0.0 + 0 +LINE + 5 +71F + 8 +0 + 62 + 0 + 10 +5512.500023 + 20 +22132.127868 + 30 +0.0 + 11 +5525.000023 + 21 +22153.778503 + 31 +0.0 + 0 +LINE + 5 +720 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21149.188995 + 30 +0.0 + 11 +4925.000023 + 21 +21157.849289 + 31 +0.0 + 0 +LINE + 5 +721 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21201.150559 + 30 +0.0 + 11 +4962.500023 + 21 +21222.801194 + 31 +0.0 + 0 +LINE + 5 +722 + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21266.102464 + 30 +0.0 + 11 +5000.0 + 21 +21287.75306 + 31 +0.0 + 0 +LINE + 5 +723 + 8 +0 + 62 + 0 + 10 +5477.611243 + 20 +22115.0 + 30 +0.0 + 11 +5487.500023 + 21 +22132.127868 + 31 +0.0 + 0 +LINE + 5 +724 + 8 +0 + 62 + 0 + 10 +5512.500023 + 20 +22175.429138 + 30 +0.0 + 11 +5523.799265 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +725 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21192.490265 + 30 +0.0 + 11 +4925.000023 + 21 +21201.150559 + 31 +0.0 + 0 +LINE + 5 +726 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21244.451829 + 30 +0.0 + 11 +4962.500023 + 21 +21266.102464 + 31 +0.0 + 0 +LINE + 5 +727 + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21309.403735 + 30 +0.0 + 11 +5000.0 + 21 +21331.05433 + 31 +0.0 + 0 +LINE + 5 +728 + 8 +0 + 62 + 0 + 10 +5475.000023 + 20 +22153.778503 + 30 +0.0 + 11 +5487.500023 + 21 +22175.429138 + 31 +0.0 + 0 +LINE + 5 +729 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21235.791535 + 30 +0.0 + 11 +4925.000023 + 21 +21244.451829 + 31 +0.0 + 0 +LINE + 5 +72A + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21287.753099 + 30 +0.0 + 11 +4962.500023 + 21 +21309.403734 + 31 +0.0 + 0 +LINE + 5 +72B + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21352.705005 + 30 +0.0 + 11 +5000.0 + 21 +21374.3556 + 31 +0.0 + 0 +LINE + 5 +72C + 8 +0 + 62 + 0 + 10 +5437.500023 + 20 +22132.127868 + 30 +0.0 + 11 +5450.000023 + 21 +22153.778503 + 31 +0.0 + 0 +LINE + 5 +72D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21279.092805 + 30 +0.0 + 11 +4925.000023 + 21 +21287.753099 + 31 +0.0 + 0 +LINE + 5 +72E + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21331.05437 + 30 +0.0 + 11 +4962.500023 + 21 +21352.705005 + 31 +0.0 + 0 +LINE + 5 +72F + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21396.006275 + 30 +0.0 + 11 +5000.0 + 21 +21417.65687 + 31 +0.0 + 0 +LINE + 5 +730 + 8 +0 + 62 + 0 + 10 +5402.611244 + 20 +22115.0 + 30 +0.0 + 11 +5412.500023 + 21 +22132.127868 + 31 +0.0 + 0 +LINE + 5 +731 + 8 +0 + 62 + 0 + 10 +5437.500023 + 20 +22175.429138 + 30 +0.0 + 11 +5448.799265 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +732 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21322.394075 + 30 +0.0 + 11 +4925.000023 + 21 +21331.054369 + 31 +0.0 + 0 +LINE + 5 +733 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21374.35564 + 30 +0.0 + 11 +4962.500023 + 21 +21396.006275 + 31 +0.0 + 0 +LINE + 5 +734 + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21439.307545 + 30 +0.0 + 11 +5000.0 + 21 +21460.95814 + 31 +0.0 + 0 +LINE + 5 +735 + 8 +0 + 62 + 0 + 10 +5400.000023 + 20 +22153.778503 + 30 +0.0 + 11 +5412.500023 + 21 +22175.429138 + 31 +0.0 + 0 +LINE + 5 +736 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21365.695345 + 30 +0.0 + 11 +4925.000023 + 21 +21374.35564 + 31 +0.0 + 0 +LINE + 5 +737 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21417.65691 + 30 +0.0 + 11 +4962.500023 + 21 +21439.307545 + 31 +0.0 + 0 +LINE + 5 +738 + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21482.608815 + 30 +0.0 + 11 +5000.0 + 21 +21504.25941 + 31 +0.0 + 0 +LINE + 5 +739 + 8 +0 + 62 + 0 + 10 +5362.500023 + 20 +22132.127868 + 30 +0.0 + 11 +5375.000023 + 21 +22153.778503 + 31 +0.0 + 0 +LINE + 5 +73A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21408.996615 + 30 +0.0 + 11 +4925.000023 + 21 +21417.65691 + 31 +0.0 + 0 +LINE + 5 +73B + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21460.95818 + 30 +0.0 + 11 +4962.500023 + 21 +21482.608815 + 31 +0.0 + 0 +LINE + 5 +73C + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21525.910085 + 30 +0.0 + 11 +5000.0 + 21 +21547.56068 + 31 +0.0 + 0 +LINE + 5 +73D + 8 +0 + 62 + 0 + 10 +5327.611244 + 20 +22115.0 + 30 +0.0 + 11 +5337.500023 + 21 +22132.127868 + 31 +0.0 + 0 +LINE + 5 +73E + 8 +0 + 62 + 0 + 10 +5362.500023 + 20 +22175.429138 + 30 +0.0 + 11 +5373.799266 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +73F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21452.297885 + 30 +0.0 + 11 +4925.000023 + 21 +21460.95818 + 31 +0.0 + 0 +LINE + 5 +740 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21504.25945 + 30 +0.0 + 11 +4962.500023 + 21 +21525.910085 + 31 +0.0 + 0 +LINE + 5 +741 + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21569.211355 + 30 +0.0 + 11 +5000.0 + 21 +21590.86195 + 31 +0.0 + 0 +LINE + 5 +742 + 8 +0 + 62 + 0 + 10 +5325.000023 + 20 +22153.778503 + 30 +0.0 + 11 +5337.500023 + 21 +22175.429138 + 31 +0.0 + 0 +LINE + 5 +743 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21495.599155 + 30 +0.0 + 11 +4925.000023 + 21 +21504.25945 + 31 +0.0 + 0 +LINE + 5 +744 + 8 +0 + 62 + 0 + 10 +4950.000023 + 20 +21547.56072 + 30 +0.0 + 11 +4962.500023 + 21 +21569.211355 + 31 +0.0 + 0 +LINE + 5 +745 + 8 +0 + 62 + 0 + 10 +4987.500023 + 20 +21612.512625 + 30 +0.0 + 11 +5000.0 + 21 +21634.16322 + 31 +0.0 + 0 +LINE + 5 +746 + 8 +0 + 62 + 0 + 10 +5287.500023 + 20 +22132.127868 + 30 +0.0 + 11 +5300.000023 + 21 +22153.778503 + 31 +0.0 + 0 +LINE + 5 +747 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21538.900425 + 30 +0.0 + 11 +4925.000024 + 21 +21547.56072 + 31 +0.0 + 0 +LINE + 5 +748 + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21590.86199 + 30 +0.0 + 11 +4962.500024 + 21 +21612.512625 + 31 +0.0 + 0 +LINE + 5 +749 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21655.813896 + 30 +0.0 + 11 +5000.0 + 21 +21677.46449 + 31 +0.0 + 0 +LINE + 5 +74A + 8 +0 + 62 + 0 + 10 +5252.611244 + 20 +22115.0 + 30 +0.0 + 11 +5262.500024 + 21 +22132.127868 + 31 +0.0 + 0 +LINE + 5 +74B + 8 +0 + 62 + 0 + 10 +5287.500024 + 20 +22175.429138 + 30 +0.0 + 11 +5298.799266 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +74C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21582.201695 + 30 +0.0 + 11 +4925.000024 + 21 +21590.86199 + 31 +0.0 + 0 +LINE + 5 +74D + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21634.16326 + 30 +0.0 + 11 +4962.500024 + 21 +21655.813896 + 31 +0.0 + 0 +LINE + 5 +74E + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21699.115166 + 30 +0.0 + 11 +5000.0 + 21 +21720.76576 + 31 +0.0 + 0 +LINE + 5 +74F + 8 +0 + 62 + 0 + 10 +5250.000024 + 20 +22153.778503 + 30 +0.0 + 11 +5262.500024 + 21 +22175.429138 + 31 +0.0 + 0 +LINE + 5 +750 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21625.502965 + 30 +0.0 + 11 +4925.000024 + 21 +21634.16326 + 31 +0.0 + 0 +LINE + 5 +751 + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21677.464531 + 30 +0.0 + 11 +4962.500024 + 21 +21699.115166 + 31 +0.0 + 0 +LINE + 5 +752 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21742.416436 + 30 +0.0 + 11 +5000.0 + 21 +21764.06703 + 31 +0.0 + 0 +LINE + 5 +753 + 8 +0 + 62 + 0 + 10 +5212.500024 + 20 +22132.127868 + 30 +0.0 + 11 +5225.000024 + 21 +22153.778503 + 31 +0.0 + 0 +LINE + 5 +754 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21668.804235 + 30 +0.0 + 11 +4925.000024 + 21 +21677.464531 + 31 +0.0 + 0 +LINE + 5 +755 + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21720.765801 + 30 +0.0 + 11 +4962.500024 + 21 +21742.416436 + 31 +0.0 + 0 +LINE + 5 +756 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21785.717706 + 30 +0.0 + 11 +5000.0 + 21 +21807.3683 + 31 +0.0 + 0 +LINE + 5 +757 + 8 +0 + 62 + 0 + 10 +5177.611245 + 20 +22115.0 + 30 +0.0 + 11 +5187.500024 + 21 +22132.127868 + 31 +0.0 + 0 +LINE + 5 +758 + 8 +0 + 62 + 0 + 10 +5212.500024 + 20 +22175.429138 + 30 +0.0 + 11 +5223.799266 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +759 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21712.105505 + 30 +0.0 + 11 +4925.000024 + 21 +21720.765801 + 31 +0.0 + 0 +LINE + 5 +75A + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21764.067071 + 30 +0.0 + 11 +4962.500024 + 21 +21785.717706 + 31 +0.0 + 0 +LINE + 5 +75B + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21829.018976 + 30 +0.0 + 11 +5000.0 + 21 +21850.66957 + 31 +0.0 + 0 +LINE + 5 +75C + 8 +0 + 62 + 0 + 10 +5175.000024 + 20 +22153.778503 + 30 +0.0 + 11 +5187.500024 + 21 +22175.429138 + 31 +0.0 + 0 +LINE + 5 +75D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21755.406775 + 30 +0.0 + 11 +4925.000024 + 21 +21764.067071 + 31 +0.0 + 0 +LINE + 5 +75E + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21807.368341 + 30 +0.0 + 11 +4962.500024 + 21 +21829.018976 + 31 +0.0 + 0 +LINE + 5 +75F + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21872.320246 + 30 +0.0 + 11 +5000.0 + 21 +21893.97084 + 31 +0.0 + 0 +LINE + 5 +760 + 8 +0 + 62 + 0 + 10 +5137.500024 + 20 +22132.127867 + 30 +0.0 + 11 +5150.000024 + 21 +22153.778503 + 31 +0.0 + 0 +LINE + 5 +761 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21798.708045 + 30 +0.0 + 11 +4925.000024 + 21 +21807.368341 + 31 +0.0 + 0 +LINE + 5 +762 + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21850.669611 + 30 +0.0 + 11 +4962.500024 + 21 +21872.320246 + 31 +0.0 + 0 +LINE + 5 +763 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21915.621516 + 30 +0.0 + 11 +5000.0 + 21 +21937.27211 + 31 +0.0 + 0 +LINE + 5 +764 + 8 +0 + 62 + 0 + 10 +5102.611245 + 20 +22115.0 + 30 +0.0 + 11 +5112.500024 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +765 + 8 +0 + 62 + 0 + 10 +5137.500024 + 20 +22175.429138 + 30 +0.0 + 11 +5148.799267 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +766 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21842.009315 + 30 +0.0 + 11 +4925.000024 + 21 +21850.669611 + 31 +0.0 + 0 +LINE + 5 +767 + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21893.970881 + 30 +0.0 + 11 +4962.500024 + 21 +21915.621516 + 31 +0.0 + 0 +LINE + 5 +768 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +21958.922787 + 30 +0.0 + 11 +5000.0 + 21 +21980.57338 + 31 +0.0 + 0 +LINE + 5 +769 + 8 +0 + 62 + 0 + 10 +5100.000024 + 20 +22153.778502 + 30 +0.0 + 11 +5112.500024 + 21 +22175.429138 + 31 +0.0 + 0 +LINE + 5 +76A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21885.310585 + 30 +0.0 + 11 +4925.000024 + 21 +21893.970881 + 31 +0.0 + 0 +LINE + 5 +76B + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21937.272151 + 30 +0.0 + 11 +4962.500024 + 21 +21958.922787 + 31 +0.0 + 0 +LINE + 5 +76C + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +22002.224057 + 30 +0.0 + 11 +5000.0 + 21 +22023.87465 + 31 +0.0 + 0 +LINE + 5 +76D + 8 +0 + 62 + 0 + 10 +5062.500024 + 20 +22132.127867 + 30 +0.0 + 11 +5075.000024 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +76E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21928.611855 + 30 +0.0 + 11 +4925.000024 + 21 +21937.272151 + 31 +0.0 + 0 +LINE + 5 +76F + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +21980.573422 + 30 +0.0 + 11 +4962.500024 + 21 +22002.224057 + 31 +0.0 + 0 +LINE + 5 +770 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +22045.525327 + 30 +0.0 + 11 +5000.0 + 21 +22067.17592 + 31 +0.0 + 0 +LINE + 5 +771 + 8 +0 + 62 + 0 + 10 +5027.611245 + 20 +22115.0 + 30 +0.0 + 11 +5037.500024 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +772 + 8 +0 + 62 + 0 + 10 +5062.500024 + 20 +22175.429137 + 30 +0.0 + 11 +5073.799267 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +773 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +21971.913125 + 30 +0.0 + 11 +4925.000024 + 21 +21980.573422 + 31 +0.0 + 0 +LINE + 5 +774 + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +22023.874692 + 30 +0.0 + 11 +4962.500024 + 21 +22045.525327 + 31 +0.0 + 0 +LINE + 5 +775 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +22088.826597 + 30 +0.0 + 11 +5000.0 + 21 +22110.47719 + 31 +0.0 + 0 +LINE + 5 +776 + 8 +0 + 62 + 0 + 10 +5025.000024 + 20 +22153.778502 + 30 +0.0 + 11 +5037.500024 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +777 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +22015.214395 + 30 +0.0 + 11 +4925.000024 + 21 +22023.874692 + 31 +0.0 + 0 +LINE + 5 +778 + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +22067.175962 + 30 +0.0 + 11 +4962.500024 + 21 +22088.826597 + 31 +0.0 + 0 +LINE + 5 +779 + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +22132.127867 + 30 +0.0 + 11 +5000.000024 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +77A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +22058.515665 + 30 +0.0 + 11 +4925.000024 + 21 +22067.175962 + 31 +0.0 + 0 +LINE + 5 +77B + 8 +0 + 62 + 0 + 10 +4950.000024 + 20 +22110.477232 + 30 +0.0 + 11 +4962.500024 + 21 +22132.127867 + 31 +0.0 + 0 +LINE + 5 +77C + 8 +0 + 62 + 0 + 10 +4987.500024 + 20 +22175.429137 + 30 +0.0 + 11 +4998.799267 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +77D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +22101.816935 + 30 +0.0 + 11 +4925.000025 + 21 +22110.477232 + 31 +0.0 + 0 +LINE + 5 +77E + 8 +0 + 62 + 0 + 10 +4950.000025 + 20 +22153.778502 + 30 +0.0 + 11 +4962.500025 + 21 +22175.429137 + 31 +0.0 + 0 +LINE + 5 +77F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +22145.118205 + 30 +0.0 + 11 +4925.000025 + 21 +22153.778502 + 31 +0.0 + 0 +LINE + 5 +780 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +22188.419475 + 30 +0.0 + 11 +4923.799268 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +781 + 8 +0 + 62 + 0 + 10 +6675.000019 + 20 +22153.778505 + 30 +0.0 + 11 +6687.500019 + 21 +22175.429141 + 31 +0.0 + 0 +LINE + 5 +782 + 8 +0 + 62 + 0 + 10 +6677.611238 + 20 +22115.0 + 30 +0.0 + 11 +6687.500019 + 21 +22132.12787 + 31 +0.0 + 0 +LINE + 5 +783 + 8 +0 + 62 + 0 + 10 +6712.500019 + 20 +22175.429141 + 30 +0.0 + 11 +6723.79926 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +784 + 8 +0 + 62 + 0 + 10 +6712.500019 + 20 +22132.12787 + 30 +0.0 + 11 +6725.000019 + 21 +22153.778506 + 31 +0.0 + 0 +LINE + 5 +785 + 8 +0 + 62 + 0 + 10 +6750.000019 + 20 +22153.778506 + 30 +0.0 + 11 +6751.25 + 21 +22155.943537 + 31 +0.0 + 0 +ENDBLK + 5 +786 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X40 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X40 + 1 + + 0 +LINE + 5 +788 + 8 +0 + 62 + 0 + 10 +8525.0 + 20 +22153.77846 + 30 +0.0 + 11 +8550.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +789 + 8 +0 + 62 + 0 + 10 +8600.0 + 20 +22153.77846 + 30 +0.0 + 11 +8625.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +78A + 8 +0 + 62 + 0 + 10 +8675.0 + 20 +22153.77846 + 30 +0.0 + 11 +8700.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +78B + 8 +0 + 62 + 0 + 10 +8750.0 + 20 +22153.77846 + 30 +0.0 + 11 +8775.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +78C + 8 +0 + 62 + 0 + 10 +8825.0 + 20 +22153.77846 + 30 +0.0 + 11 +8850.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +78D + 8 +0 + 62 + 0 + 10 +8900.0 + 20 +22153.77846 + 30 +0.0 + 11 +8925.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +78E + 8 +0 + 62 + 0 + 10 +8975.0 + 20 +22153.77846 + 30 +0.0 + 11 +9000.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +78F + 8 +0 + 62 + 0 + 10 +9050.0 + 20 +22153.77846 + 30 +0.0 + 11 +9075.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +790 + 8 +0 + 62 + 0 + 10 +9125.0 + 20 +22153.77846 + 30 +0.0 + 11 +9150.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +791 + 8 +0 + 62 + 0 + 10 +9200.0 + 20 +22153.77846 + 30 +0.0 + 11 +9225.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +792 + 8 +0 + 62 + 0 + 10 +9275.0 + 20 +22153.77846 + 30 +0.0 + 11 +9300.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +793 + 8 +0 + 62 + 0 + 10 +9350.0 + 20 +22153.77846 + 30 +0.0 + 11 +9375.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +794 + 8 +0 + 62 + 0 + 10 +9425.0 + 20 +22153.77846 + 30 +0.0 + 11 +9450.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +795 + 8 +0 + 62 + 0 + 10 +9500.0 + 20 +22153.77846 + 30 +0.0 + 11 +9525.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +796 + 8 +0 + 62 + 0 + 10 +9575.0 + 20 +22153.77846 + 30 +0.0 + 11 +9600.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +797 + 8 +0 + 62 + 0 + 10 +9650.0 + 20 +22153.77846 + 30 +0.0 + 11 +9675.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +798 + 8 +0 + 62 + 0 + 10 +9725.0 + 20 +22153.77846 + 30 +0.0 + 11 +9750.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +799 + 8 +0 + 62 + 0 + 10 +9800.0 + 20 +22153.77846 + 30 +0.0 + 11 +9825.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +79A + 8 +0 + 62 + 0 + 10 +9875.0 + 20 +22153.77846 + 30 +0.0 + 11 +9900.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +79B + 8 +0 + 62 + 0 + 10 +9950.0 + 20 +22153.77846 + 30 +0.0 + 11 +9975.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +79C + 8 +0 + 62 + 0 + 10 +10025.0 + 20 +22153.77846 + 30 +0.0 + 11 +10050.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +79D + 8 +0 + 62 + 0 + 10 +10100.0 + 20 +22153.77846 + 30 +0.0 + 11 +10125.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +79E + 8 +0 + 62 + 0 + 10 +10175.0 + 20 +22153.77846 + 30 +0.0 + 11 +10200.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +79F + 8 +0 + 62 + 0 + 10 +10250.0 + 20 +22153.77846 + 30 +0.0 + 11 +10251.25 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +7A0 + 8 +0 + 62 + 0 + 10 +8488.75 + 20 +22175.429095 + 30 +0.0 + 11 +8512.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A1 + 8 +0 + 62 + 0 + 10 +8562.5 + 20 +22175.429095 + 30 +0.0 + 11 +8587.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A2 + 8 +0 + 62 + 0 + 10 +8637.5 + 20 +22175.429095 + 30 +0.0 + 11 +8662.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A3 + 8 +0 + 62 + 0 + 10 +8712.5 + 20 +22175.429095 + 30 +0.0 + 11 +8737.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A4 + 8 +0 + 62 + 0 + 10 +8787.5 + 20 +22175.429095 + 30 +0.0 + 11 +8812.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A5 + 8 +0 + 62 + 0 + 10 +8862.5 + 20 +22175.429095 + 30 +0.0 + 11 +8887.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A6 + 8 +0 + 62 + 0 + 10 +8937.5 + 20 +22175.429095 + 30 +0.0 + 11 +8962.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A7 + 8 +0 + 62 + 0 + 10 +9012.5 + 20 +22175.429095 + 30 +0.0 + 11 +9037.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A8 + 8 +0 + 62 + 0 + 10 +9087.5 + 20 +22175.429095 + 30 +0.0 + 11 +9112.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7A9 + 8 +0 + 62 + 0 + 10 +9162.5 + 20 +22175.429095 + 30 +0.0 + 11 +9187.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7AA + 8 +0 + 62 + 0 + 10 +9237.5 + 20 +22175.429095 + 30 +0.0 + 11 +9262.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7AB + 8 +0 + 62 + 0 + 10 +9312.5 + 20 +22175.429095 + 30 +0.0 + 11 +9337.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7AC + 8 +0 + 62 + 0 + 10 +9387.5 + 20 +22175.429095 + 30 +0.0 + 11 +9412.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7AD + 8 +0 + 62 + 0 + 10 +9462.5 + 20 +22175.429095 + 30 +0.0 + 11 +9487.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7AE + 8 +0 + 62 + 0 + 10 +9537.5 + 20 +22175.429095 + 30 +0.0 + 11 +9562.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7AF + 8 +0 + 62 + 0 + 10 +9612.5 + 20 +22175.429095 + 30 +0.0 + 11 +9637.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B0 + 8 +0 + 62 + 0 + 10 +9687.5 + 20 +22175.429095 + 30 +0.0 + 11 +9712.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B1 + 8 +0 + 62 + 0 + 10 +9762.5 + 20 +22175.429095 + 30 +0.0 + 11 +9787.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B2 + 8 +0 + 62 + 0 + 10 +9837.5 + 20 +22175.429095 + 30 +0.0 + 11 +9862.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B3 + 8 +0 + 62 + 0 + 10 +9912.5 + 20 +22175.429095 + 30 +0.0 + 11 +9937.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B4 + 8 +0 + 62 + 0 + 10 +9987.5 + 20 +22175.429095 + 30 +0.0 + 11 +10012.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B5 + 8 +0 + 62 + 0 + 10 +10062.5 + 20 +22175.429095 + 30 +0.0 + 11 +10087.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B6 + 8 +0 + 62 + 0 + 10 +10137.5 + 20 +22175.429095 + 30 +0.0 + 11 +10162.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B7 + 8 +0 + 62 + 0 + 10 +10212.5 + 20 +22175.429095 + 30 +0.0 + 11 +10237.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +7B8 + 8 +0 + 62 + 0 + 10 +8488.75 + 20 +22132.127825 + 30 +0.0 + 11 +8512.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7B9 + 8 +0 + 62 + 0 + 10 +8562.5 + 20 +22132.127825 + 30 +0.0 + 11 +8587.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7BA + 8 +0 + 62 + 0 + 10 +8637.5 + 20 +22132.127825 + 30 +0.0 + 11 +8662.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7BB + 8 +0 + 62 + 0 + 10 +8712.5 + 20 +22132.127825 + 30 +0.0 + 11 +8737.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7BC + 8 +0 + 62 + 0 + 10 +8787.5 + 20 +22132.127825 + 30 +0.0 + 11 +8812.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7BD + 8 +0 + 62 + 0 + 10 +8862.5 + 20 +22132.127825 + 30 +0.0 + 11 +8887.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7BE + 8 +0 + 62 + 0 + 10 +8937.5 + 20 +22132.127825 + 30 +0.0 + 11 +8962.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7BF + 8 +0 + 62 + 0 + 10 +9012.5 + 20 +22132.127825 + 30 +0.0 + 11 +9037.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C0 + 8 +0 + 62 + 0 + 10 +9087.5 + 20 +22132.127825 + 30 +0.0 + 11 +9112.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C1 + 8 +0 + 62 + 0 + 10 +9162.5 + 20 +22132.127825 + 30 +0.0 + 11 +9187.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C2 + 8 +0 + 62 + 0 + 10 +9237.5 + 20 +22132.127825 + 30 +0.0 + 11 +9262.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C3 + 8 +0 + 62 + 0 + 10 +9312.5 + 20 +22132.127825 + 30 +0.0 + 11 +9337.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C4 + 8 +0 + 62 + 0 + 10 +9387.5 + 20 +22132.127825 + 30 +0.0 + 11 +9412.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C5 + 8 +0 + 62 + 0 + 10 +9462.5 + 20 +22132.127825 + 30 +0.0 + 11 +9487.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C6 + 8 +0 + 62 + 0 + 10 +9537.5 + 20 +22132.127825 + 30 +0.0 + 11 +9562.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C7 + 8 +0 + 62 + 0 + 10 +9612.5 + 20 +22132.127825 + 30 +0.0 + 11 +9637.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C8 + 8 +0 + 62 + 0 + 10 +9687.5 + 20 +22132.127825 + 30 +0.0 + 11 +9712.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7C9 + 8 +0 + 62 + 0 + 10 +9762.5 + 20 +22132.127825 + 30 +0.0 + 11 +9787.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7CA + 8 +0 + 62 + 0 + 10 +9837.5 + 20 +22132.127825 + 30 +0.0 + 11 +9862.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7CB + 8 +0 + 62 + 0 + 10 +9912.5 + 20 +22132.127825 + 30 +0.0 + 11 +9937.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7CC + 8 +0 + 62 + 0 + 10 +9987.5 + 20 +22132.127825 + 30 +0.0 + 11 +10012.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7CD + 8 +0 + 62 + 0 + 10 +10062.5 + 20 +22132.127825 + 30 +0.0 + 11 +10087.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7CE + 8 +0 + 62 + 0 + 10 +10137.5 + 20 +22132.127825 + 30 +0.0 + 11 +10162.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7CF + 8 +0 + 62 + 0 + 10 +10212.5 + 20 +22132.127825 + 30 +0.0 + 11 +10237.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +7D0 + 8 +0 + 62 + 0 + 10 +9349.999961 + 20 +22153.778494 + 30 +0.0 + 11 +9337.499961 + 21 +22175.429129 + 31 +0.0 + 0 +LINE + 5 +7D1 + 8 +0 + 62 + 0 + 10 +9347.388735 + 20 +22115.0 + 30 +0.0 + 11 +9337.499961 + 21 +22132.127859 + 31 +0.0 + 0 +LINE + 5 +7D2 + 8 +0 + 62 + 0 + 10 +9312.499961 + 20 +22175.429129 + 30 +0.0 + 11 +9301.200714 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7D3 + 8 +0 + 62 + 0 + 10 +9312.499961 + 20 +22132.127859 + 30 +0.0 + 11 +9299.999961 + 21 +22153.778494 + 31 +0.0 + 0 +LINE + 5 +7D4 + 8 +0 + 62 + 0 + 10 +9274.999962 + 20 +22153.778494 + 30 +0.0 + 11 +9262.499962 + 21 +22175.429129 + 31 +0.0 + 0 +LINE + 5 +7D5 + 8 +0 + 62 + 0 + 10 +9272.388736 + 20 +22115.0 + 30 +0.0 + 11 +9262.499962 + 21 +22132.127859 + 31 +0.0 + 0 +LINE + 5 +7D6 + 8 +0 + 62 + 0 + 10 +9237.499962 + 20 +22175.429129 + 30 +0.0 + 11 +9226.200714 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7D7 + 8 +0 + 62 + 0 + 10 +9237.499962 + 20 +22132.127859 + 30 +0.0 + 11 +9224.999962 + 21 +22153.778494 + 31 +0.0 + 0 +LINE + 5 +7D8 + 8 +0 + 62 + 0 + 10 +9199.999962 + 20 +22153.778494 + 30 +0.0 + 11 +9187.499962 + 21 +22175.429129 + 31 +0.0 + 0 +LINE + 5 +7D9 + 8 +0 + 62 + 0 + 10 +9197.388736 + 20 +22115.0 + 30 +0.0 + 11 +9187.499962 + 21 +22132.127859 + 31 +0.0 + 0 +LINE + 5 +7DA + 8 +0 + 62 + 0 + 10 +9162.499962 + 20 +22175.429129 + 30 +0.0 + 11 +9151.200715 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7DB + 8 +0 + 62 + 0 + 10 +9162.499962 + 20 +22132.127859 + 30 +0.0 + 11 +9149.999962 + 21 +22153.778494 + 31 +0.0 + 0 +LINE + 5 +7DC + 8 +0 + 62 + 0 + 10 +9124.999962 + 20 +22153.778494 + 30 +0.0 + 11 +9112.499962 + 21 +22175.42913 + 31 +0.0 + 0 +LINE + 5 +7DD + 8 +0 + 62 + 0 + 10 +9122.388736 + 20 +22115.0 + 30 +0.0 + 11 +9112.499962 + 21 +22132.127859 + 31 +0.0 + 0 +LINE + 5 +7DE + 8 +0 + 62 + 0 + 10 +9087.499962 + 20 +22175.42913 + 30 +0.0 + 11 +9076.200715 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7DF + 8 +0 + 62 + 0 + 10 +9087.499962 + 20 +22132.127859 + 30 +0.0 + 11 +9074.999962 + 21 +22153.778495 + 31 +0.0 + 0 +LINE + 5 +7E0 + 8 +0 + 62 + 0 + 10 +9049.999962 + 20 +22153.778495 + 30 +0.0 + 11 +9037.499962 + 21 +22175.42913 + 31 +0.0 + 0 +LINE + 5 +7E1 + 8 +0 + 62 + 0 + 10 +9047.388737 + 20 +22115.0 + 30 +0.0 + 11 +9037.499962 + 21 +22132.12786 + 31 +0.0 + 0 +LINE + 5 +7E2 + 8 +0 + 62 + 0 + 10 +9012.499962 + 20 +22175.42913 + 30 +0.0 + 11 +9001.200715 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7E3 + 8 +0 + 62 + 0 + 10 +9012.499962 + 20 +22132.12786 + 30 +0.0 + 11 +8999.999962 + 21 +22153.778495 + 31 +0.0 + 0 +LINE + 5 +7E4 + 8 +0 + 62 + 0 + 10 +8974.999963 + 20 +22153.778495 + 30 +0.0 + 11 +8962.499963 + 21 +22175.42913 + 31 +0.0 + 0 +LINE + 5 +7E5 + 8 +0 + 62 + 0 + 10 +8972.388737 + 20 +22115.0 + 30 +0.0 + 11 +8962.499963 + 21 +22132.12786 + 31 +0.0 + 0 +LINE + 5 +7E6 + 8 +0 + 62 + 0 + 10 +8937.499963 + 20 +22175.42913 + 30 +0.0 + 11 +8926.200716 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7E7 + 8 +0 + 62 + 0 + 10 +8937.499963 + 20 +22132.12786 + 30 +0.0 + 11 +8924.999963 + 21 +22153.778495 + 31 +0.0 + 0 +LINE + 5 +7E8 + 8 +0 + 62 + 0 + 10 +8899.999963 + 20 +22153.778495 + 30 +0.0 + 11 +8887.499963 + 21 +22175.42913 + 31 +0.0 + 0 +LINE + 5 +7E9 + 8 +0 + 62 + 0 + 10 +8897.388737 + 20 +22115.0 + 30 +0.0 + 11 +8887.499963 + 21 +22132.12786 + 31 +0.0 + 0 +LINE + 5 +7EA + 8 +0 + 62 + 0 + 10 +8862.499963 + 20 +22175.42913 + 30 +0.0 + 11 +8851.200716 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7EB + 8 +0 + 62 + 0 + 10 +8862.499963 + 20 +22132.12786 + 30 +0.0 + 11 +8849.999963 + 21 +22153.778495 + 31 +0.0 + 0 +LINE + 5 +7EC + 8 +0 + 62 + 0 + 10 +8824.999963 + 20 +22153.778495 + 30 +0.0 + 11 +8812.499963 + 21 +22175.42913 + 31 +0.0 + 0 +LINE + 5 +7ED + 8 +0 + 62 + 0 + 10 +8822.388738 + 20 +22115.0 + 30 +0.0 + 11 +8812.499963 + 21 +22132.12786 + 31 +0.0 + 0 +LINE + 5 +7EE + 8 +0 + 62 + 0 + 10 +8787.499963 + 20 +22175.42913 + 30 +0.0 + 11 +8776.200716 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7EF + 8 +0 + 62 + 0 + 10 +8787.499963 + 20 +22132.12786 + 30 +0.0 + 11 +8774.999963 + 21 +22153.778495 + 31 +0.0 + 0 +LINE + 5 +7F0 + 8 +0 + 62 + 0 + 10 +8749.999963 + 20 +22153.778495 + 30 +0.0 + 11 +8737.499963 + 21 +22175.42913 + 31 +0.0 + 0 +LINE + 5 +7F1 + 8 +0 + 62 + 0 + 10 +8747.388738 + 20 +22115.0 + 30 +0.0 + 11 +8737.499963 + 21 +22132.12786 + 31 +0.0 + 0 +LINE + 5 +7F2 + 8 +0 + 62 + 0 + 10 +8712.499963 + 20 +22175.42913 + 30 +0.0 + 11 +8701.200717 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7F3 + 8 +0 + 62 + 0 + 10 +8712.499963 + 20 +22132.12786 + 30 +0.0 + 11 +8699.999963 + 21 +22153.778495 + 31 +0.0 + 0 +LINE + 5 +7F4 + 8 +0 + 62 + 0 + 10 +8674.999964 + 20 +22153.778495 + 30 +0.0 + 11 +8662.499964 + 21 +22175.42913 + 31 +0.0 + 0 +LINE + 5 +7F5 + 8 +0 + 62 + 0 + 10 +8672.388738 + 20 +22115.0 + 30 +0.0 + 11 +8662.499964 + 21 +22132.12786 + 31 +0.0 + 0 +LINE + 5 +7F6 + 8 +0 + 62 + 0 + 10 +8637.499964 + 20 +22175.42913 + 30 +0.0 + 11 +8626.200717 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7F7 + 8 +0 + 62 + 0 + 10 +8637.499964 + 20 +22132.12786 + 30 +0.0 + 11 +8624.999964 + 21 +22153.778495 + 31 +0.0 + 0 +LINE + 5 +7F8 + 8 +0 + 62 + 0 + 10 +8599.999964 + 20 +22153.778495 + 30 +0.0 + 11 +8587.499964 + 21 +22175.429131 + 31 +0.0 + 0 +LINE + 5 +7F9 + 8 +0 + 62 + 0 + 10 +8597.388739 + 20 +22115.0 + 30 +0.0 + 11 +8587.499964 + 21 +22132.12786 + 31 +0.0 + 0 +LINE + 5 +7FA + 8 +0 + 62 + 0 + 10 +8562.499964 + 20 +22175.429131 + 30 +0.0 + 11 +8551.200717 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +7FB + 8 +0 + 62 + 0 + 10 +8562.499964 + 20 +22132.12786 + 30 +0.0 + 11 +8549.999964 + 21 +22153.778496 + 31 +0.0 + 0 +LINE + 5 +7FC + 8 +0 + 62 + 0 + 10 +8524.999964 + 20 +22153.778496 + 30 +0.0 + 11 +8512.499964 + 21 +22175.429131 + 31 +0.0 + 0 +LINE + 5 +7FD + 8 +0 + 62 + 0 + 10 +8522.388739 + 20 +22115.0 + 30 +0.0 + 11 +8512.499964 + 21 +22132.127861 + 31 +0.0 + 0 +LINE + 5 +7FE + 8 +0 + 62 + 0 + 10 +9387.499961 + 20 +22132.127859 + 30 +0.0 + 11 +9374.999961 + 21 +22153.778494 + 31 +0.0 + 0 +LINE + 5 +7FF + 8 +0 + 62 + 0 + 10 +9422.388735 + 20 +22115.0 + 30 +0.0 + 11 +9412.499961 + 21 +22132.127859 + 31 +0.0 + 0 +LINE + 5 +800 + 8 +0 + 62 + 0 + 10 +9387.499961 + 20 +22175.429129 + 30 +0.0 + 11 +9376.200714 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +801 + 8 +0 + 62 + 0 + 10 +9424.999961 + 20 +22153.778494 + 30 +0.0 + 11 +9412.499961 + 21 +22175.429129 + 31 +0.0 + 0 +LINE + 5 +802 + 8 +0 + 62 + 0 + 10 +9462.499961 + 20 +22132.127859 + 30 +0.0 + 11 +9449.999961 + 21 +22153.778494 + 31 +0.0 + 0 +LINE + 5 +803 + 8 +0 + 62 + 0 + 10 +9497.388735 + 20 +22115.0 + 30 +0.0 + 11 +9487.499961 + 21 +22132.127859 + 31 +0.0 + 0 +LINE + 5 +804 + 8 +0 + 62 + 0 + 10 +9462.499961 + 20 +22175.429129 + 30 +0.0 + 11 +9451.200713 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +805 + 8 +0 + 62 + 0 + 10 +9499.999961 + 20 +22153.778494 + 30 +0.0 + 11 +9487.499961 + 21 +22175.429129 + 31 +0.0 + 0 +LINE + 5 +806 + 8 +0 + 62 + 0 + 10 +9537.499961 + 20 +22132.127859 + 30 +0.0 + 11 +9524.999961 + 21 +22153.778494 + 31 +0.0 + 0 +LINE + 5 +807 + 8 +0 + 62 + 0 + 10 +9572.388734 + 20 +22115.0 + 30 +0.0 + 11 +9562.499961 + 21 +22132.127859 + 31 +0.0 + 0 +LINE + 5 +808 + 8 +0 + 62 + 0 + 10 +9537.499961 + 20 +22175.429129 + 30 +0.0 + 11 +9526.200713 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +809 + 8 +0 + 62 + 0 + 10 +9574.999961 + 20 +22153.778494 + 30 +0.0 + 11 +9562.499961 + 21 +22175.429129 + 31 +0.0 + 0 +LINE + 5 +80A + 8 +0 + 62 + 0 + 10 +9612.499961 + 20 +22132.127858 + 30 +0.0 + 11 +9599.999961 + 21 +22153.778494 + 31 +0.0 + 0 +LINE + 5 +80B + 8 +0 + 62 + 0 + 10 +9647.388734 + 20 +22115.0 + 30 +0.0 + 11 +9637.49996 + 21 +22132.127858 + 31 +0.0 + 0 +LINE + 5 +80C + 8 +0 + 62 + 0 + 10 +9612.49996 + 20 +22175.429129 + 30 +0.0 + 11 +9601.200713 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +80D + 8 +0 + 62 + 0 + 10 +9649.99996 + 20 +22153.778493 + 30 +0.0 + 11 +9637.49996 + 21 +22175.429129 + 31 +0.0 + 0 +LINE + 5 +80E + 8 +0 + 62 + 0 + 10 +9687.49996 + 20 +22132.127858 + 30 +0.0 + 11 +9674.99996 + 21 +22153.778493 + 31 +0.0 + 0 +LINE + 5 +80F + 8 +0 + 62 + 0 + 10 +9722.388734 + 20 +22115.0 + 30 +0.0 + 11 +9712.49996 + 21 +22132.127858 + 31 +0.0 + 0 +LINE + 5 +810 + 8 +0 + 62 + 0 + 10 +9687.49996 + 20 +22175.429128 + 30 +0.0 + 11 +9676.200712 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +811 + 8 +0 + 62 + 0 + 10 +9724.99996 + 20 +22153.778493 + 30 +0.0 + 11 +9712.49996 + 21 +22175.429128 + 31 +0.0 + 0 +LINE + 5 +812 + 8 +0 + 62 + 0 + 10 +9762.49996 + 20 +22132.127858 + 30 +0.0 + 11 +9749.99996 + 21 +22153.778493 + 31 +0.0 + 0 +LINE + 5 +813 + 8 +0 + 62 + 0 + 10 +9797.388733 + 20 +22115.0 + 30 +0.0 + 11 +9787.49996 + 21 +22132.127858 + 31 +0.0 + 0 +LINE + 5 +814 + 8 +0 + 62 + 0 + 10 +9762.49996 + 20 +22175.429128 + 30 +0.0 + 11 +9751.200712 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +815 + 8 +0 + 62 + 0 + 10 +9799.99996 + 20 +22153.778493 + 30 +0.0 + 11 +9787.49996 + 21 +22175.429128 + 31 +0.0 + 0 +LINE + 5 +816 + 8 +0 + 62 + 0 + 10 +9837.49996 + 20 +22132.127858 + 30 +0.0 + 11 +9824.99996 + 21 +22153.778493 + 31 +0.0 + 0 +LINE + 5 +817 + 8 +0 + 62 + 0 + 10 +9872.388733 + 20 +22115.0 + 30 +0.0 + 11 +9862.49996 + 21 +22132.127858 + 31 +0.0 + 0 +LINE + 5 +818 + 8 +0 + 62 + 0 + 10 +9837.49996 + 20 +22175.429128 + 30 +0.0 + 11 +9826.200712 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +819 + 8 +0 + 62 + 0 + 10 +9874.99996 + 20 +22153.778493 + 30 +0.0 + 11 +9862.49996 + 21 +22175.429128 + 31 +0.0 + 0 +LINE + 5 +81A + 8 +0 + 62 + 0 + 10 +9912.49996 + 20 +22132.127858 + 30 +0.0 + 11 +9899.99996 + 21 +22153.778493 + 31 +0.0 + 0 +LINE + 5 +81B + 8 +0 + 62 + 0 + 10 +9947.388733 + 20 +22115.0 + 30 +0.0 + 11 +9937.499959 + 21 +22132.127858 + 31 +0.0 + 0 +LINE + 5 +81C + 8 +0 + 62 + 0 + 10 +9912.499959 + 20 +22175.429128 + 30 +0.0 + 11 +9901.200711 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +81D + 8 +0 + 62 + 0 + 10 +9949.999959 + 20 +22153.778493 + 30 +0.0 + 11 +9937.499959 + 21 +22175.429128 + 31 +0.0 + 0 +LINE + 5 +81E + 8 +0 + 62 + 0 + 10 +9987.499959 + 20 +22132.127858 + 30 +0.0 + 11 +9974.999959 + 21 +22153.778493 + 31 +0.0 + 0 +LINE + 5 +81F + 8 +0 + 62 + 0 + 10 +10022.388732 + 20 +22115.0 + 30 +0.0 + 11 +10012.499959 + 21 +22132.127858 + 31 +0.0 + 0 +LINE + 5 +820 + 8 +0 + 62 + 0 + 10 +9987.499959 + 20 +22175.429128 + 30 +0.0 + 11 +9976.200711 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +821 + 8 +0 + 62 + 0 + 10 +10024.999959 + 20 +22153.778493 + 30 +0.0 + 11 +10012.499959 + 21 +22175.429128 + 31 +0.0 + 0 +LINE + 5 +822 + 8 +0 + 62 + 0 + 10 +10062.499959 + 20 +22132.127858 + 30 +0.0 + 11 +10049.999959 + 21 +22153.778493 + 31 +0.0 + 0 +LINE + 5 +823 + 8 +0 + 62 + 0 + 10 +10097.388732 + 20 +22115.0 + 30 +0.0 + 11 +10087.499959 + 21 +22132.127858 + 31 +0.0 + 0 +LINE + 5 +824 + 8 +0 + 62 + 0 + 10 +10062.499959 + 20 +22175.429128 + 30 +0.0 + 11 +10051.200711 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +825 + 8 +0 + 62 + 0 + 10 +10099.999959 + 20 +22153.778493 + 30 +0.0 + 11 +10087.499959 + 21 +22175.429128 + 31 +0.0 + 0 +LINE + 5 +826 + 8 +0 + 62 + 0 + 10 +10137.499959 + 20 +22132.127857 + 30 +0.0 + 11 +10124.999959 + 21 +22153.778493 + 31 +0.0 + 0 +LINE + 5 +827 + 8 +0 + 62 + 0 + 10 +10172.388732 + 20 +22115.0 + 30 +0.0 + 11 +10162.499959 + 21 +22132.127857 + 31 +0.0 + 0 +LINE + 5 +828 + 8 +0 + 62 + 0 + 10 +10137.499959 + 20 +22175.429128 + 30 +0.0 + 11 +10126.20071 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +829 + 8 +0 + 62 + 0 + 10 +10174.999959 + 20 +22153.778492 + 30 +0.0 + 11 +10162.499959 + 21 +22175.429128 + 31 +0.0 + 0 +LINE + 5 +82A + 8 +0 + 62 + 0 + 10 +10212.499959 + 20 +22132.127857 + 30 +0.0 + 11 +10199.999959 + 21 +22153.778492 + 31 +0.0 + 0 +LINE + 5 +82B + 8 +0 + 62 + 0 + 10 +10247.388731 + 20 +22115.0 + 30 +0.0 + 11 +10237.499958 + 21 +22132.127857 + 31 +0.0 + 0 +LINE + 5 +82C + 8 +0 + 62 + 0 + 10 +10212.499958 + 20 +22175.429127 + 30 +0.0 + 11 +10201.20071 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +82D + 8 +0 + 62 + 0 + 10 +10249.999958 + 20 +22153.778492 + 30 +0.0 + 11 +10237.499958 + 21 +22175.429127 + 31 +0.0 + 0 +LINE + 5 +82E + 8 +0 + 62 + 0 + 10 +9375.00001 + 20 +22153.778511 + 30 +0.0 + 11 +9387.50001 + 21 +22175.429146 + 31 +0.0 + 0 +LINE + 5 +82F + 8 +0 + 62 + 0 + 10 +9337.50001 + 20 +22132.127875 + 30 +0.0 + 11 +9350.00001 + 21 +22153.778511 + 31 +0.0 + 0 +LINE + 5 +830 + 8 +0 + 62 + 0 + 10 +9302.611227 + 20 +22115.0 + 30 +0.0 + 11 +9312.50001 + 21 +22132.127875 + 31 +0.0 + 0 +LINE + 5 +831 + 8 +0 + 62 + 0 + 10 +9337.50001 + 20 +22175.429146 + 30 +0.0 + 11 +9348.799248 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +832 + 8 +0 + 62 + 0 + 10 +9300.00001 + 20 +22153.77851 + 30 +0.0 + 11 +9312.50001 + 21 +22175.429146 + 31 +0.0 + 0 +LINE + 5 +833 + 8 +0 + 62 + 0 + 10 +9262.50001 + 20 +22132.127875 + 30 +0.0 + 11 +9275.00001 + 21 +22153.77851 + 31 +0.0 + 0 +LINE + 5 +834 + 8 +0 + 62 + 0 + 10 +9227.611227 + 20 +22115.0 + 30 +0.0 + 11 +9237.50001 + 21 +22132.127875 + 31 +0.0 + 0 +LINE + 5 +835 + 8 +0 + 62 + 0 + 10 +9262.50001 + 20 +22175.429145 + 30 +0.0 + 11 +9273.799249 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +836 + 8 +0 + 62 + 0 + 10 +9225.000011 + 20 +22153.77851 + 30 +0.0 + 11 +9237.500011 + 21 +22175.429145 + 31 +0.0 + 0 +LINE + 5 +837 + 8 +0 + 62 + 0 + 10 +9187.500011 + 20 +22132.127875 + 30 +0.0 + 11 +9200.000011 + 21 +22153.77851 + 31 +0.0 + 0 +LINE + 5 +838 + 8 +0 + 62 + 0 + 10 +9152.611227 + 20 +22115.0 + 30 +0.0 + 11 +9162.500011 + 21 +22132.127875 + 31 +0.0 + 0 +LINE + 5 +839 + 8 +0 + 62 + 0 + 10 +9187.500011 + 20 +22175.429145 + 30 +0.0 + 11 +9198.799249 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +83A + 8 +0 + 62 + 0 + 10 +9150.000011 + 20 +22153.77851 + 30 +0.0 + 11 +9162.500011 + 21 +22175.429145 + 31 +0.0 + 0 +LINE + 5 +83B + 8 +0 + 62 + 0 + 10 +9112.500011 + 20 +22132.127875 + 30 +0.0 + 11 +9125.000011 + 21 +22153.77851 + 31 +0.0 + 0 +LINE + 5 +83C + 8 +0 + 62 + 0 + 10 +9077.611228 + 20 +22115.0 + 30 +0.0 + 11 +9087.500011 + 21 +22132.127875 + 31 +0.0 + 0 +LINE + 5 +83D + 8 +0 + 62 + 0 + 10 +9112.500011 + 20 +22175.429145 + 30 +0.0 + 11 +9123.799249 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +83E + 8 +0 + 62 + 0 + 10 +9075.000011 + 20 +22153.77851 + 30 +0.0 + 11 +9087.500011 + 21 +22175.429145 + 31 +0.0 + 0 +LINE + 5 +83F + 8 +0 + 62 + 0 + 10 +9037.500011 + 20 +22132.127875 + 30 +0.0 + 11 +9050.000011 + 21 +22153.77851 + 31 +0.0 + 0 +LINE + 5 +840 + 8 +0 + 62 + 0 + 10 +9002.611228 + 20 +22115.0 + 30 +0.0 + 11 +9012.500011 + 21 +22132.127875 + 31 +0.0 + 0 +LINE + 5 +841 + 8 +0 + 62 + 0 + 10 +9037.500011 + 20 +22175.429145 + 30 +0.0 + 11 +9048.79925 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +842 + 8 +0 + 62 + 0 + 10 +9000.000011 + 20 +22153.77851 + 30 +0.0 + 11 +9012.500011 + 21 +22175.429145 + 31 +0.0 + 0 +LINE + 5 +843 + 8 +0 + 62 + 0 + 10 +8962.500011 + 20 +22132.127875 + 30 +0.0 + 11 +8975.000011 + 21 +22153.77851 + 31 +0.0 + 0 +LINE + 5 +844 + 8 +0 + 62 + 0 + 10 +8927.611228 + 20 +22115.0 + 30 +0.0 + 11 +8937.500011 + 21 +22132.127875 + 31 +0.0 + 0 +LINE + 5 +845 + 8 +0 + 62 + 0 + 10 +8962.500011 + 20 +22175.429145 + 30 +0.0 + 11 +8973.79925 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +846 + 8 +0 + 62 + 0 + 10 +8925.000012 + 20 +22153.77851 + 30 +0.0 + 11 +8937.500012 + 21 +22175.429145 + 31 +0.0 + 0 +LINE + 5 +847 + 8 +0 + 62 + 0 + 10 +8887.500012 + 20 +22132.127875 + 30 +0.0 + 11 +8900.000012 + 21 +22153.77851 + 31 +0.0 + 0 +LINE + 5 +848 + 8 +0 + 62 + 0 + 10 +8852.611229 + 20 +22115.0 + 30 +0.0 + 11 +8862.500012 + 21 +22132.127875 + 31 +0.0 + 0 +LINE + 5 +849 + 8 +0 + 62 + 0 + 10 +8887.500012 + 20 +22175.429145 + 30 +0.0 + 11 +8898.79925 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +84A + 8 +0 + 62 + 0 + 10 +8850.000012 + 20 +22153.77851 + 30 +0.0 + 11 +8862.500012 + 21 +22175.429145 + 31 +0.0 + 0 +LINE + 5 +84B + 8 +0 + 62 + 0 + 10 +8812.500012 + 20 +22132.127874 + 30 +0.0 + 11 +8825.000012 + 21 +22153.77851 + 31 +0.0 + 0 +LINE + 5 +84C + 8 +0 + 62 + 0 + 10 +8777.611229 + 20 +22115.0 + 30 +0.0 + 11 +8787.500012 + 21 +22132.127874 + 31 +0.0 + 0 +LINE + 5 +84D + 8 +0 + 62 + 0 + 10 +8812.500012 + 20 +22175.429145 + 30 +0.0 + 11 +8823.799251 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +84E + 8 +0 + 62 + 0 + 10 +8775.000012 + 20 +22153.778509 + 30 +0.0 + 11 +8787.500012 + 21 +22175.429145 + 31 +0.0 + 0 +LINE + 5 +84F + 8 +0 + 62 + 0 + 10 +8737.500012 + 20 +22132.127874 + 30 +0.0 + 11 +8750.000012 + 21 +22153.778509 + 31 +0.0 + 0 +LINE + 5 +850 + 8 +0 + 62 + 0 + 10 +8702.611229 + 20 +22115.0 + 30 +0.0 + 11 +8712.500012 + 21 +22132.127874 + 31 +0.0 + 0 +LINE + 5 +851 + 8 +0 + 62 + 0 + 10 +8737.500012 + 20 +22175.429144 + 30 +0.0 + 11 +8748.799251 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +852 + 8 +0 + 62 + 0 + 10 +8700.000012 + 20 +22153.778509 + 30 +0.0 + 11 +8712.500012 + 21 +22175.429144 + 31 +0.0 + 0 +LINE + 5 +853 + 8 +0 + 62 + 0 + 10 +8662.500012 + 20 +22132.127874 + 30 +0.0 + 11 +8675.000012 + 21 +22153.778509 + 31 +0.0 + 0 +LINE + 5 +854 + 8 +0 + 62 + 0 + 10 +8627.61123 + 20 +22115.0 + 30 +0.0 + 11 +8637.500012 + 21 +22132.127874 + 31 +0.0 + 0 +LINE + 5 +855 + 8 +0 + 62 + 0 + 10 +8662.500012 + 20 +22175.429144 + 30 +0.0 + 11 +8673.799251 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +856 + 8 +0 + 62 + 0 + 10 +8625.000013 + 20 +22153.778509 + 30 +0.0 + 11 +8637.500013 + 21 +22175.429144 + 31 +0.0 + 0 +LINE + 5 +857 + 8 +0 + 62 + 0 + 10 +8587.500013 + 20 +22132.127874 + 30 +0.0 + 11 +8600.000013 + 21 +22153.778509 + 31 +0.0 + 0 +LINE + 5 +858 + 8 +0 + 62 + 0 + 10 +8552.61123 + 20 +22115.0 + 30 +0.0 + 11 +8562.500013 + 21 +22132.127874 + 31 +0.0 + 0 +LINE + 5 +859 + 8 +0 + 62 + 0 + 10 +8587.500013 + 20 +22175.429144 + 30 +0.0 + 11 +8598.799252 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +85A + 8 +0 + 62 + 0 + 10 +8550.000013 + 20 +22153.778509 + 30 +0.0 + 11 +8562.500013 + 21 +22175.429144 + 31 +0.0 + 0 +LINE + 5 +85B + 8 +0 + 62 + 0 + 10 +8512.500013 + 20 +22132.127874 + 30 +0.0 + 11 +8525.000013 + 21 +22153.778509 + 31 +0.0 + 0 +LINE + 5 +85C + 8 +0 + 62 + 0 + 10 +8512.500013 + 20 +22175.429144 + 30 +0.0 + 11 +8523.799252 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +85D + 8 +0 + 62 + 0 + 10 +9377.611226 + 20 +22115.0 + 30 +0.0 + 11 +9387.50001 + 21 +22132.127876 + 31 +0.0 + 0 +LINE + 5 +85E + 8 +0 + 62 + 0 + 10 +9412.50001 + 20 +22175.429146 + 30 +0.0 + 11 +9423.799248 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +85F + 8 +0 + 62 + 0 + 10 +9412.50001 + 20 +22132.127876 + 30 +0.0 + 11 +9425.00001 + 21 +22153.778511 + 31 +0.0 + 0 +LINE + 5 +860 + 8 +0 + 62 + 0 + 10 +9450.00001 + 20 +22153.778511 + 30 +0.0 + 11 +9462.50001 + 21 +22175.429146 + 31 +0.0 + 0 +LINE + 5 +861 + 8 +0 + 62 + 0 + 10 +9452.611226 + 20 +22115.0 + 30 +0.0 + 11 +9462.50001 + 21 +22132.127876 + 31 +0.0 + 0 +LINE + 5 +862 + 8 +0 + 62 + 0 + 10 +9487.50001 + 20 +22175.429146 + 30 +0.0 + 11 +9498.799248 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +863 + 8 +0 + 62 + 0 + 10 +9487.50001 + 20 +22132.127876 + 30 +0.0 + 11 +9500.00001 + 21 +22153.778511 + 31 +0.0 + 0 +LINE + 5 +864 + 8 +0 + 62 + 0 + 10 +9525.00001 + 20 +22153.778511 + 30 +0.0 + 11 +9537.50001 + 21 +22175.429146 + 31 +0.0 + 0 +LINE + 5 +865 + 8 +0 + 62 + 0 + 10 +9527.611226 + 20 +22115.0 + 30 +0.0 + 11 +9537.50001 + 21 +22132.127876 + 31 +0.0 + 0 +LINE + 5 +866 + 8 +0 + 62 + 0 + 10 +9562.50001 + 20 +22175.429146 + 30 +0.0 + 11 +9573.799247 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +867 + 8 +0 + 62 + 0 + 10 +9562.500009 + 20 +22132.127876 + 30 +0.0 + 11 +9575.000009 + 21 +22153.778511 + 31 +0.0 + 0 +LINE + 5 +868 + 8 +0 + 62 + 0 + 10 +9600.000009 + 20 +22153.778511 + 30 +0.0 + 11 +9612.500009 + 21 +22175.429146 + 31 +0.0 + 0 +LINE + 5 +869 + 8 +0 + 62 + 0 + 10 +9602.611225 + 20 +22115.0 + 30 +0.0 + 11 +9612.500009 + 21 +22132.127876 + 31 +0.0 + 0 +LINE + 5 +86A + 8 +0 + 62 + 0 + 10 +9637.500009 + 20 +22175.429146 + 30 +0.0 + 11 +9648.799247 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +86B + 8 +0 + 62 + 0 + 10 +9637.500009 + 20 +22132.127876 + 30 +0.0 + 11 +9650.000009 + 21 +22153.778511 + 31 +0.0 + 0 +LINE + 5 +86C + 8 +0 + 62 + 0 + 10 +9675.000009 + 20 +22153.778511 + 30 +0.0 + 11 +9687.500009 + 21 +22175.429146 + 31 +0.0 + 0 +LINE + 5 +86D + 8 +0 + 62 + 0 + 10 +9677.611225 + 20 +22115.0 + 30 +0.0 + 11 +9687.500009 + 21 +22132.127876 + 31 +0.0 + 0 +LINE + 5 +86E + 8 +0 + 62 + 0 + 10 +9712.500009 + 20 +22175.429146 + 30 +0.0 + 11 +9723.799247 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +86F + 8 +0 + 62 + 0 + 10 +9712.500009 + 20 +22132.127876 + 30 +0.0 + 11 +9725.000009 + 21 +22153.778511 + 31 +0.0 + 0 +LINE + 5 +870 + 8 +0 + 62 + 0 + 10 +9750.000009 + 20 +22153.778511 + 30 +0.0 + 11 +9762.500009 + 21 +22175.429146 + 31 +0.0 + 0 +LINE + 5 +871 + 8 +0 + 62 + 0 + 10 +9752.611225 + 20 +22115.0 + 30 +0.0 + 11 +9762.500009 + 21 +22132.127876 + 31 +0.0 + 0 +LINE + 5 +872 + 8 +0 + 62 + 0 + 10 +9787.500009 + 20 +22175.429146 + 30 +0.0 + 11 +9798.799246 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +873 + 8 +0 + 62 + 0 + 10 +9787.500009 + 20 +22132.127876 + 30 +0.0 + 11 +9800.000009 + 21 +22153.778511 + 31 +0.0 + 0 +LINE + 5 +874 + 8 +0 + 62 + 0 + 10 +9825.000009 + 20 +22153.778511 + 30 +0.0 + 11 +9837.500009 + 21 +22175.429147 + 31 +0.0 + 0 +LINE + 5 +875 + 8 +0 + 62 + 0 + 10 +9827.611224 + 20 +22115.0 + 30 +0.0 + 11 +9837.500009 + 21 +22132.127876 + 31 +0.0 + 0 +LINE + 5 +876 + 8 +0 + 62 + 0 + 10 +9862.500009 + 20 +22175.429147 + 30 +0.0 + 11 +9873.799246 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +877 + 8 +0 + 62 + 0 + 10 +9862.500008 + 20 +22132.127876 + 30 +0.0 + 11 +9875.000008 + 21 +22153.778512 + 31 +0.0 + 0 +LINE + 5 +878 + 8 +0 + 62 + 0 + 10 +9900.000008 + 20 +22153.778512 + 30 +0.0 + 11 +9912.500008 + 21 +22175.429147 + 31 +0.0 + 0 +LINE + 5 +879 + 8 +0 + 62 + 0 + 10 +9902.611224 + 20 +22115.0 + 30 +0.0 + 11 +9912.500008 + 21 +22132.127877 + 31 +0.0 + 0 +LINE + 5 +87A + 8 +0 + 62 + 0 + 10 +9937.500008 + 20 +22175.429147 + 30 +0.0 + 11 +9948.799246 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +87B + 8 +0 + 62 + 0 + 10 +9937.500008 + 20 +22132.127877 + 30 +0.0 + 11 +9950.000008 + 21 +22153.778512 + 31 +0.0 + 0 +LINE + 5 +87C + 8 +0 + 62 + 0 + 10 +9975.000008 + 20 +22153.778512 + 30 +0.0 + 11 +9987.500008 + 21 +22175.429147 + 31 +0.0 + 0 +LINE + 5 +87D + 8 +0 + 62 + 0 + 10 +9977.611224 + 20 +22115.0 + 30 +0.0 + 11 +9987.500008 + 21 +22132.127877 + 31 +0.0 + 0 +LINE + 5 +87E + 8 +0 + 62 + 0 + 10 +10012.500008 + 20 +22175.429147 + 30 +0.0 + 11 +10023.799245 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +87F + 8 +0 + 62 + 0 + 10 +10012.500008 + 20 +22132.127877 + 30 +0.0 + 11 +10025.000008 + 21 +22153.778512 + 31 +0.0 + 0 +LINE + 5 +880 + 8 +0 + 62 + 0 + 10 +10050.000008 + 20 +22153.778512 + 30 +0.0 + 11 +10062.500008 + 21 +22175.429147 + 31 +0.0 + 0 +LINE + 5 +881 + 8 +0 + 62 + 0 + 10 +10052.611224 + 20 +22115.0 + 30 +0.0 + 11 +10062.500008 + 21 +22132.127877 + 31 +0.0 + 0 +LINE + 5 +882 + 8 +0 + 62 + 0 + 10 +10087.500008 + 20 +22175.429147 + 30 +0.0 + 11 +10098.799245 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +883 + 8 +0 + 62 + 0 + 10 +10087.500008 + 20 +22132.127877 + 30 +0.0 + 11 +10100.000008 + 21 +22153.778512 + 31 +0.0 + 0 +LINE + 5 +884 + 8 +0 + 62 + 0 + 10 +10125.000008 + 20 +22153.778512 + 30 +0.0 + 11 +10137.500008 + 21 +22175.429147 + 31 +0.0 + 0 +LINE + 5 +885 + 8 +0 + 62 + 0 + 10 +10127.611223 + 20 +22115.0 + 30 +0.0 + 11 +10137.500008 + 21 +22132.127877 + 31 +0.0 + 0 +LINE + 5 +886 + 8 +0 + 62 + 0 + 10 +10162.500008 + 20 +22175.429147 + 30 +0.0 + 11 +10173.799245 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +887 + 8 +0 + 62 + 0 + 10 +10162.500007 + 20 +22132.127877 + 30 +0.0 + 11 +10175.000007 + 21 +22153.778512 + 31 +0.0 + 0 +LINE + 5 +888 + 8 +0 + 62 + 0 + 10 +10200.000007 + 20 +22153.778512 + 30 +0.0 + 11 +10212.500007 + 21 +22175.429147 + 31 +0.0 + 0 +LINE + 5 +889 + 8 +0 + 62 + 0 + 10 +10202.611223 + 20 +22115.0 + 30 +0.0 + 11 +10212.500007 + 21 +22132.127877 + 31 +0.0 + 0 +LINE + 5 +88A + 8 +0 + 62 + 0 + 10 +10237.500007 + 20 +22175.429147 + 30 +0.0 + 11 +10248.799244 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +88B + 8 +0 + 62 + 0 + 10 +10237.500007 + 20 +22132.127877 + 30 +0.0 + 11 +10250.000007 + 21 +22153.778512 + 31 +0.0 + 0 +ENDBLK + 5 +88C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X41 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X41 + 1 + + 0 +LINE + 5 +88E + 8 +0 + 62 + 0 + 10 +11238.75 + 20 +22153.77846 + 30 +0.0 + 11 +11250.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +88F + 8 +0 + 62 + 0 + 10 +11300.0 + 20 +22153.77846 + 30 +0.0 + 11 +11325.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +890 + 8 +0 + 62 + 0 + 10 +11375.0 + 20 +22153.77846 + 30 +0.0 + 11 +11400.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +891 + 8 +0 + 62 + 0 + 10 +11450.0 + 20 +22153.77846 + 30 +0.0 + 11 +11475.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +892 + 8 +0 + 62 + 0 + 10 +11525.0 + 20 +22153.77846 + 30 +0.0 + 11 +11550.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +893 + 8 +0 + 62 + 0 + 10 +11600.0 + 20 +22153.77846 + 30 +0.0 + 11 +11625.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +894 + 8 +0 + 62 + 0 + 10 +11675.0 + 20 +22153.77846 + 30 +0.0 + 11 +11700.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +895 + 8 +0 + 62 + 0 + 10 +11750.0 + 20 +22153.77846 + 30 +0.0 + 11 +11775.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +896 + 8 +0 + 62 + 0 + 10 +11825.0 + 20 +22153.77846 + 30 +0.0 + 11 +11850.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +897 + 8 +0 + 62 + 0 + 10 +11900.0 + 20 +22153.77846 + 30 +0.0 + 11 +11925.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +898 + 8 +0 + 62 + 0 + 10 +11975.0 + 20 +22153.77846 + 30 +0.0 + 11 +12000.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +899 + 8 +0 + 62 + 0 + 10 +12050.0 + 20 +22153.77846 + 30 +0.0 + 11 +12075.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +89A + 8 +0 + 62 + 0 + 10 +12125.0 + 20 +22153.77846 + 30 +0.0 + 11 +12150.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +89B + 8 +0 + 62 + 0 + 10 +12200.0 + 20 +22153.77846 + 30 +0.0 + 11 +12225.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +89C + 8 +0 + 62 + 0 + 10 +12275.0 + 20 +22153.77846 + 30 +0.0 + 11 +12300.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +89D + 8 +0 + 62 + 0 + 10 +12350.0 + 20 +22153.77846 + 30 +0.0 + 11 +12375.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +89E + 8 +0 + 62 + 0 + 10 +12425.0 + 20 +22153.77846 + 30 +0.0 + 11 +12450.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +89F + 8 +0 + 62 + 0 + 10 +12500.0 + 20 +22153.77846 + 30 +0.0 + 11 +12525.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A0 + 8 +0 + 62 + 0 + 10 +12575.0 + 20 +22153.77846 + 30 +0.0 + 11 +12600.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A1 + 8 +0 + 62 + 0 + 10 +12650.0 + 20 +22153.77846 + 30 +0.0 + 11 +12675.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A2 + 8 +0 + 62 + 0 + 10 +12725.0 + 20 +22153.77846 + 30 +0.0 + 11 +12750.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A3 + 8 +0 + 62 + 0 + 10 +12800.0 + 20 +22153.77846 + 30 +0.0 + 11 +12825.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A4 + 8 +0 + 62 + 0 + 10 +12875.0 + 20 +22153.77846 + 30 +0.0 + 11 +12900.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A5 + 8 +0 + 62 + 0 + 10 +12950.0 + 20 +22153.77846 + 30 +0.0 + 11 +12975.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A6 + 8 +0 + 62 + 0 + 10 +13025.0 + 20 +22153.77846 + 30 +0.0 + 11 +13050.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A7 + 8 +0 + 62 + 0 + 10 +13100.0 + 20 +22153.77846 + 30 +0.0 + 11 +13125.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A8 + 8 +0 + 62 + 0 + 10 +13175.0 + 20 +22153.77846 + 30 +0.0 + 11 +13200.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8A9 + 8 +0 + 62 + 0 + 10 +13250.0 + 20 +22153.77846 + 30 +0.0 + 11 +13275.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8AA + 8 +0 + 62 + 0 + 10 +13325.0 + 20 +22153.77846 + 30 +0.0 + 11 +13350.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8AB + 8 +0 + 62 + 0 + 10 +13400.0 + 20 +22153.77846 + 30 +0.0 + 11 +13425.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8AC + 8 +0 + 62 + 0 + 10 +13475.0 + 20 +22153.77846 + 30 +0.0 + 11 +13500.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8AD + 8 +0 + 62 + 0 + 10 +13550.0 + 20 +22153.77846 + 30 +0.0 + 11 +13575.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8AE + 8 +0 + 62 + 0 + 10 +13625.0 + 20 +22153.77846 + 30 +0.0 + 11 +13650.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8AF + 8 +0 + 62 + 0 + 10 +13700.0 + 20 +22153.77846 + 30 +0.0 + 11 +13725.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B0 + 8 +0 + 62 + 0 + 10 +13775.0 + 20 +22153.77846 + 30 +0.0 + 11 +13800.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B1 + 8 +0 + 62 + 0 + 10 +13850.0 + 20 +22153.77846 + 30 +0.0 + 11 +13875.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B2 + 8 +0 + 62 + 0 + 10 +13925.0 + 20 +22153.77846 + 30 +0.0 + 11 +13950.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B3 + 8 +0 + 62 + 0 + 10 +14000.0 + 20 +22153.77846 + 30 +0.0 + 11 +14025.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B4 + 8 +0 + 62 + 0 + 10 +14075.0 + 20 +22153.77846 + 30 +0.0 + 11 +14100.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B5 + 8 +0 + 62 + 0 + 10 +14150.0 + 20 +22153.77846 + 30 +0.0 + 11 +14175.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B6 + 8 +0 + 62 + 0 + 10 +14225.0 + 20 +22153.77846 + 30 +0.0 + 11 +14250.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B7 + 8 +0 + 62 + 0 + 10 +14300.0 + 20 +22153.77846 + 30 +0.0 + 11 +14325.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B8 + 8 +0 + 62 + 0 + 10 +14375.0 + 20 +22153.77846 + 30 +0.0 + 11 +14400.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8B9 + 8 +0 + 62 + 0 + 10 +14450.0 + 20 +22153.77846 + 30 +0.0 + 11 +14475.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8BA + 8 +0 + 62 + 0 + 10 +14525.0 + 20 +22153.77846 + 30 +0.0 + 11 +14550.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8BB + 8 +0 + 62 + 0 + 10 +14600.0 + 20 +22153.77846 + 30 +0.0 + 11 +14625.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8BC + 8 +0 + 62 + 0 + 10 +14675.0 + 20 +22153.77846 + 30 +0.0 + 11 +14700.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8BD + 8 +0 + 62 + 0 + 10 +14750.0 + 20 +22153.77846 + 30 +0.0 + 11 +14775.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8BE + 8 +0 + 62 + 0 + 10 +14825.0 + 20 +22153.77846 + 30 +0.0 + 11 +14850.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8BF + 8 +0 + 62 + 0 + 10 +14900.0 + 20 +22153.77846 + 30 +0.0 + 11 +14925.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C0 + 8 +0 + 62 + 0 + 10 +14975.0 + 20 +22153.77846 + 30 +0.0 + 11 +15000.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C1 + 8 +0 + 62 + 0 + 10 +15050.0 + 20 +22153.77846 + 30 +0.0 + 11 +15075.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C2 + 8 +0 + 62 + 0 + 10 +15125.0 + 20 +22153.77846 + 30 +0.0 + 11 +15150.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C3 + 8 +0 + 62 + 0 + 10 +15200.0 + 20 +22153.77846 + 30 +0.0 + 11 +15225.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C4 + 8 +0 + 62 + 0 + 10 +15275.0 + 20 +22153.77846 + 30 +0.0 + 11 +15300.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C5 + 8 +0 + 62 + 0 + 10 +15350.0 + 20 +22153.77846 + 30 +0.0 + 11 +15375.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C6 + 8 +0 + 62 + 0 + 10 +15425.0 + 20 +22153.77846 + 30 +0.0 + 11 +15450.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C7 + 8 +0 + 62 + 0 + 10 +15500.0 + 20 +22153.77846 + 30 +0.0 + 11 +15525.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C8 + 8 +0 + 62 + 0 + 10 +15575.0 + 20 +22153.77846 + 30 +0.0 + 11 +15600.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8C9 + 8 +0 + 62 + 0 + 10 +15650.0 + 20 +22153.77846 + 30 +0.0 + 11 +15675.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8CA + 8 +0 + 62 + 0 + 10 +15725.0 + 20 +22153.77846 + 30 +0.0 + 11 +15750.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8CB + 8 +0 + 62 + 0 + 10 +15800.0 + 20 +22153.77846 + 30 +0.0 + 11 +15825.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8CC + 8 +0 + 62 + 0 + 10 +15875.0 + 20 +22153.77846 + 30 +0.0 + 11 +15876.25 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +8CD + 8 +0 + 62 + 0 + 10 +11262.5 + 20 +22175.429095 + 30 +0.0 + 11 +11287.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8CE + 8 +0 + 62 + 0 + 10 +11337.5 + 20 +22175.429095 + 30 +0.0 + 11 +11362.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8CF + 8 +0 + 62 + 0 + 10 +11412.5 + 20 +22175.429095 + 30 +0.0 + 11 +11437.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D0 + 8 +0 + 62 + 0 + 10 +11487.5 + 20 +22175.429095 + 30 +0.0 + 11 +11512.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D1 + 8 +0 + 62 + 0 + 10 +11562.5 + 20 +22175.429095 + 30 +0.0 + 11 +11587.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D2 + 8 +0 + 62 + 0 + 10 +11637.5 + 20 +22175.429095 + 30 +0.0 + 11 +11662.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D3 + 8 +0 + 62 + 0 + 10 +11712.5 + 20 +22175.429095 + 30 +0.0 + 11 +11737.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D4 + 8 +0 + 62 + 0 + 10 +11787.5 + 20 +22175.429095 + 30 +0.0 + 11 +11812.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D5 + 8 +0 + 62 + 0 + 10 +11862.5 + 20 +22175.429095 + 30 +0.0 + 11 +11887.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D6 + 8 +0 + 62 + 0 + 10 +11937.5 + 20 +22175.429095 + 30 +0.0 + 11 +11962.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D7 + 8 +0 + 62 + 0 + 10 +12012.5 + 20 +22175.429095 + 30 +0.0 + 11 +12037.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D8 + 8 +0 + 62 + 0 + 10 +12087.5 + 20 +22175.429095 + 30 +0.0 + 11 +12112.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8D9 + 8 +0 + 62 + 0 + 10 +12162.5 + 20 +22175.429095 + 30 +0.0 + 11 +12187.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8DA + 8 +0 + 62 + 0 + 10 +12237.5 + 20 +22175.429095 + 30 +0.0 + 11 +12262.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8DB + 8 +0 + 62 + 0 + 10 +12312.5 + 20 +22175.429095 + 30 +0.0 + 11 +12337.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8DC + 8 +0 + 62 + 0 + 10 +12387.5 + 20 +22175.429095 + 30 +0.0 + 11 +12412.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8DD + 8 +0 + 62 + 0 + 10 +12462.5 + 20 +22175.429095 + 30 +0.0 + 11 +12487.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8DE + 8 +0 + 62 + 0 + 10 +12537.5 + 20 +22175.429095 + 30 +0.0 + 11 +12562.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8DF + 8 +0 + 62 + 0 + 10 +12612.5 + 20 +22175.429095 + 30 +0.0 + 11 +12637.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E0 + 8 +0 + 62 + 0 + 10 +12687.5 + 20 +22175.429095 + 30 +0.0 + 11 +12712.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E1 + 8 +0 + 62 + 0 + 10 +12762.5 + 20 +22175.429095 + 30 +0.0 + 11 +12787.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E2 + 8 +0 + 62 + 0 + 10 +12837.5 + 20 +22175.429095 + 30 +0.0 + 11 +12862.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E3 + 8 +0 + 62 + 0 + 10 +12912.5 + 20 +22175.429095 + 30 +0.0 + 11 +12937.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E4 + 8 +0 + 62 + 0 + 10 +12987.5 + 20 +22175.429095 + 30 +0.0 + 11 +13012.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E5 + 8 +0 + 62 + 0 + 10 +13062.5 + 20 +22175.429095 + 30 +0.0 + 11 +13087.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E6 + 8 +0 + 62 + 0 + 10 +13137.5 + 20 +22175.429095 + 30 +0.0 + 11 +13162.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E7 + 8 +0 + 62 + 0 + 10 +13212.5 + 20 +22175.429095 + 30 +0.0 + 11 +13237.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E8 + 8 +0 + 62 + 0 + 10 +13287.5 + 20 +22175.429095 + 30 +0.0 + 11 +13312.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8E9 + 8 +0 + 62 + 0 + 10 +13362.5 + 20 +22175.429095 + 30 +0.0 + 11 +13387.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8EA + 8 +0 + 62 + 0 + 10 +13437.5 + 20 +22175.429095 + 30 +0.0 + 11 +13462.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8EB + 8 +0 + 62 + 0 + 10 +13512.5 + 20 +22175.429095 + 30 +0.0 + 11 +13537.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8EC + 8 +0 + 62 + 0 + 10 +13587.5 + 20 +22175.429095 + 30 +0.0 + 11 +13612.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8ED + 8 +0 + 62 + 0 + 10 +13662.5 + 20 +22175.429095 + 30 +0.0 + 11 +13687.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8EE + 8 +0 + 62 + 0 + 10 +13737.5 + 20 +22175.429095 + 30 +0.0 + 11 +13762.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8EF + 8 +0 + 62 + 0 + 10 +13812.5 + 20 +22175.429095 + 30 +0.0 + 11 +13837.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F0 + 8 +0 + 62 + 0 + 10 +13887.5 + 20 +22175.429095 + 30 +0.0 + 11 +13912.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F1 + 8 +0 + 62 + 0 + 10 +13962.5 + 20 +22175.429095 + 30 +0.0 + 11 +13987.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F2 + 8 +0 + 62 + 0 + 10 +14037.5 + 20 +22175.429095 + 30 +0.0 + 11 +14062.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F3 + 8 +0 + 62 + 0 + 10 +14112.5 + 20 +22175.429095 + 30 +0.0 + 11 +14137.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F4 + 8 +0 + 62 + 0 + 10 +14187.5 + 20 +22175.429095 + 30 +0.0 + 11 +14212.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F5 + 8 +0 + 62 + 0 + 10 +14262.5 + 20 +22175.429095 + 30 +0.0 + 11 +14287.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F6 + 8 +0 + 62 + 0 + 10 +14337.5 + 20 +22175.429095 + 30 +0.0 + 11 +14362.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F7 + 8 +0 + 62 + 0 + 10 +14412.5 + 20 +22175.429095 + 30 +0.0 + 11 +14437.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F8 + 8 +0 + 62 + 0 + 10 +14487.5 + 20 +22175.429095 + 30 +0.0 + 11 +14512.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8F9 + 8 +0 + 62 + 0 + 10 +14562.5 + 20 +22175.429095 + 30 +0.0 + 11 +14587.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8FA + 8 +0 + 62 + 0 + 10 +14637.5 + 20 +22175.429095 + 30 +0.0 + 11 +14662.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8FB + 8 +0 + 62 + 0 + 10 +14712.5 + 20 +22175.429095 + 30 +0.0 + 11 +14737.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8FC + 8 +0 + 62 + 0 + 10 +14787.5 + 20 +22175.429095 + 30 +0.0 + 11 +14812.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8FD + 8 +0 + 62 + 0 + 10 +14862.5 + 20 +22175.429095 + 30 +0.0 + 11 +14887.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8FE + 8 +0 + 62 + 0 + 10 +14937.5 + 20 +22175.429095 + 30 +0.0 + 11 +14962.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +8FF + 8 +0 + 62 + 0 + 10 +15012.5 + 20 +22175.429095 + 30 +0.0 + 11 +15037.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +900 + 8 +0 + 62 + 0 + 10 +15087.5 + 20 +22175.429095 + 30 +0.0 + 11 +15112.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +901 + 8 +0 + 62 + 0 + 10 +15162.5 + 20 +22175.429095 + 30 +0.0 + 11 +15187.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +902 + 8 +0 + 62 + 0 + 10 +15237.5 + 20 +22175.429095 + 30 +0.0 + 11 +15262.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +903 + 8 +0 + 62 + 0 + 10 +15312.5 + 20 +22175.429095 + 30 +0.0 + 11 +15337.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +904 + 8 +0 + 62 + 0 + 10 +15387.5 + 20 +22175.429095 + 30 +0.0 + 11 +15412.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +905 + 8 +0 + 62 + 0 + 10 +15462.5 + 20 +22175.429095 + 30 +0.0 + 11 +15487.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +906 + 8 +0 + 62 + 0 + 10 +15537.5 + 20 +22175.429095 + 30 +0.0 + 11 +15562.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +907 + 8 +0 + 62 + 0 + 10 +15612.5 + 20 +22175.429095 + 30 +0.0 + 11 +15637.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +908 + 8 +0 + 62 + 0 + 10 +15687.5 + 20 +22175.429095 + 30 +0.0 + 11 +15712.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +909 + 8 +0 + 62 + 0 + 10 +15762.5 + 20 +22175.429095 + 30 +0.0 + 11 +15787.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +90A + 8 +0 + 62 + 0 + 10 +15837.5 + 20 +22175.429095 + 30 +0.0 + 11 +15862.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +90B + 8 +0 + 62 + 0 + 10 +11262.5 + 20 +22132.127825 + 30 +0.0 + 11 +11287.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +90C + 8 +0 + 62 + 0 + 10 +11337.5 + 20 +22132.127825 + 30 +0.0 + 11 +11362.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +90D + 8 +0 + 62 + 0 + 10 +11412.5 + 20 +22132.127825 + 30 +0.0 + 11 +11437.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +90E + 8 +0 + 62 + 0 + 10 +11487.5 + 20 +22132.127825 + 30 +0.0 + 11 +11512.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +90F + 8 +0 + 62 + 0 + 10 +11562.5 + 20 +22132.127825 + 30 +0.0 + 11 +11587.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +910 + 8 +0 + 62 + 0 + 10 +11637.5 + 20 +22132.127825 + 30 +0.0 + 11 +11662.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +911 + 8 +0 + 62 + 0 + 10 +11712.5 + 20 +22132.127825 + 30 +0.0 + 11 +11737.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +912 + 8 +0 + 62 + 0 + 10 +11787.5 + 20 +22132.127825 + 30 +0.0 + 11 +11812.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +913 + 8 +0 + 62 + 0 + 10 +11862.5 + 20 +22132.127825 + 30 +0.0 + 11 +11887.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +914 + 8 +0 + 62 + 0 + 10 +11937.5 + 20 +22132.127825 + 30 +0.0 + 11 +11962.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +915 + 8 +0 + 62 + 0 + 10 +12012.5 + 20 +22132.127825 + 30 +0.0 + 11 +12037.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +916 + 8 +0 + 62 + 0 + 10 +12087.5 + 20 +22132.127825 + 30 +0.0 + 11 +12112.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +917 + 8 +0 + 62 + 0 + 10 +12162.5 + 20 +22132.127825 + 30 +0.0 + 11 +12187.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +918 + 8 +0 + 62 + 0 + 10 +12237.5 + 20 +22132.127825 + 30 +0.0 + 11 +12262.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +919 + 8 +0 + 62 + 0 + 10 +12312.5 + 20 +22132.127825 + 30 +0.0 + 11 +12337.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +91A + 8 +0 + 62 + 0 + 10 +12387.5 + 20 +22132.127825 + 30 +0.0 + 11 +12412.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +91B + 8 +0 + 62 + 0 + 10 +12462.5 + 20 +22132.127825 + 30 +0.0 + 11 +12487.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +91C + 8 +0 + 62 + 0 + 10 +12537.5 + 20 +22132.127825 + 30 +0.0 + 11 +12562.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +91D + 8 +0 + 62 + 0 + 10 +12612.5 + 20 +22132.127825 + 30 +0.0 + 11 +12637.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +91E + 8 +0 + 62 + 0 + 10 +12687.5 + 20 +22132.127825 + 30 +0.0 + 11 +12712.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +91F + 8 +0 + 62 + 0 + 10 +12762.5 + 20 +22132.127825 + 30 +0.0 + 11 +12787.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +920 + 8 +0 + 62 + 0 + 10 +12837.5 + 20 +22132.127825 + 30 +0.0 + 11 +12862.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +921 + 8 +0 + 62 + 0 + 10 +12912.5 + 20 +22132.127825 + 30 +0.0 + 11 +12937.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +922 + 8 +0 + 62 + 0 + 10 +12987.5 + 20 +22132.127825 + 30 +0.0 + 11 +13012.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +923 + 8 +0 + 62 + 0 + 10 +13062.5 + 20 +22132.127825 + 30 +0.0 + 11 +13087.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +924 + 8 +0 + 62 + 0 + 10 +13137.5 + 20 +22132.127825 + 30 +0.0 + 11 +13162.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +925 + 8 +0 + 62 + 0 + 10 +13212.5 + 20 +22132.127825 + 30 +0.0 + 11 +13237.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +926 + 8 +0 + 62 + 0 + 10 +13287.5 + 20 +22132.127825 + 30 +0.0 + 11 +13312.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +927 + 8 +0 + 62 + 0 + 10 +13362.5 + 20 +22132.127825 + 30 +0.0 + 11 +13387.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +928 + 8 +0 + 62 + 0 + 10 +13437.5 + 20 +22132.127825 + 30 +0.0 + 11 +13462.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +929 + 8 +0 + 62 + 0 + 10 +13512.5 + 20 +22132.127825 + 30 +0.0 + 11 +13537.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +92A + 8 +0 + 62 + 0 + 10 +13587.5 + 20 +22132.127825 + 30 +0.0 + 11 +13612.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +92B + 8 +0 + 62 + 0 + 10 +13662.5 + 20 +22132.127825 + 30 +0.0 + 11 +13687.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +92C + 8 +0 + 62 + 0 + 10 +13737.5 + 20 +22132.127825 + 30 +0.0 + 11 +13762.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +92D + 8 +0 + 62 + 0 + 10 +13812.5 + 20 +22132.127825 + 30 +0.0 + 11 +13837.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +92E + 8 +0 + 62 + 0 + 10 +13887.5 + 20 +22132.127825 + 30 +0.0 + 11 +13912.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +92F + 8 +0 + 62 + 0 + 10 +13962.5 + 20 +22132.127825 + 30 +0.0 + 11 +13987.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +930 + 8 +0 + 62 + 0 + 10 +14037.5 + 20 +22132.127825 + 30 +0.0 + 11 +14062.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +931 + 8 +0 + 62 + 0 + 10 +14112.5 + 20 +22132.127825 + 30 +0.0 + 11 +14137.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +932 + 8 +0 + 62 + 0 + 10 +14187.5 + 20 +22132.127825 + 30 +0.0 + 11 +14212.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +933 + 8 +0 + 62 + 0 + 10 +14262.5 + 20 +22132.127825 + 30 +0.0 + 11 +14287.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +934 + 8 +0 + 62 + 0 + 10 +14337.5 + 20 +22132.127825 + 30 +0.0 + 11 +14362.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +935 + 8 +0 + 62 + 0 + 10 +14412.5 + 20 +22132.127825 + 30 +0.0 + 11 +14437.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +936 + 8 +0 + 62 + 0 + 10 +14487.5 + 20 +22132.127825 + 30 +0.0 + 11 +14512.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +937 + 8 +0 + 62 + 0 + 10 +14562.5 + 20 +22132.127825 + 30 +0.0 + 11 +14587.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +938 + 8 +0 + 62 + 0 + 10 +14637.5 + 20 +22132.127825 + 30 +0.0 + 11 +14662.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +939 + 8 +0 + 62 + 0 + 10 +14712.5 + 20 +22132.127825 + 30 +0.0 + 11 +14737.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +93A + 8 +0 + 62 + 0 + 10 +14787.5 + 20 +22132.127825 + 30 +0.0 + 11 +14812.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +93B + 8 +0 + 62 + 0 + 10 +14862.5 + 20 +22132.127825 + 30 +0.0 + 11 +14887.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +93C + 8 +0 + 62 + 0 + 10 +14937.5 + 20 +22132.127825 + 30 +0.0 + 11 +14962.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +93D + 8 +0 + 62 + 0 + 10 +15012.5 + 20 +22132.127825 + 30 +0.0 + 11 +15037.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +93E + 8 +0 + 62 + 0 + 10 +15087.5 + 20 +22132.127825 + 30 +0.0 + 11 +15112.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +93F + 8 +0 + 62 + 0 + 10 +15162.5 + 20 +22132.127825 + 30 +0.0 + 11 +15187.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +940 + 8 +0 + 62 + 0 + 10 +15237.5 + 20 +22132.127825 + 30 +0.0 + 11 +15262.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +941 + 8 +0 + 62 + 0 + 10 +15312.5 + 20 +22132.127825 + 30 +0.0 + 11 +15337.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +942 + 8 +0 + 62 + 0 + 10 +15387.5 + 20 +22132.127825 + 30 +0.0 + 11 +15412.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +943 + 8 +0 + 62 + 0 + 10 +15462.5 + 20 +22132.127825 + 30 +0.0 + 11 +15487.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +944 + 8 +0 + 62 + 0 + 10 +15537.5 + 20 +22132.127825 + 30 +0.0 + 11 +15562.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +945 + 8 +0 + 62 + 0 + 10 +15612.5 + 20 +22132.127825 + 30 +0.0 + 11 +15637.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +946 + 8 +0 + 62 + 0 + 10 +15687.5 + 20 +22132.127825 + 30 +0.0 + 11 +15712.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +947 + 8 +0 + 62 + 0 + 10 +15762.5 + 20 +22132.127825 + 30 +0.0 + 11 +15787.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +948 + 8 +0 + 62 + 0 + 10 +15837.5 + 20 +22132.127825 + 30 +0.0 + 11 +15862.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +949 + 8 +0 + 62 + 0 + 10 +13549.999948 + 20 +22153.778486 + 30 +0.0 + 11 +13537.499948 + 21 +22175.429121 + 31 +0.0 + 0 +LINE + 5 +94A + 8 +0 + 62 + 0 + 10 +13547.388717 + 20 +22115.0 + 30 +0.0 + 11 +13537.499948 + 21 +22132.127851 + 31 +0.0 + 0 +LINE + 5 +94B + 8 +0 + 62 + 0 + 10 +13512.499948 + 20 +22175.429121 + 30 +0.0 + 11 +13501.200696 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +94C + 8 +0 + 62 + 0 + 10 +13512.499948 + 20 +22132.127851 + 30 +0.0 + 11 +13499.999948 + 21 +22153.778486 + 31 +0.0 + 0 +LINE + 5 +94D + 8 +0 + 62 + 0 + 10 +13474.999948 + 20 +22153.778486 + 30 +0.0 + 11 +13462.499948 + 21 +22175.429121 + 31 +0.0 + 0 +LINE + 5 +94E + 8 +0 + 62 + 0 + 10 +13472.388717 + 20 +22115.0 + 30 +0.0 + 11 +13462.499948 + 21 +22132.127851 + 31 +0.0 + 0 +LINE + 5 +94F + 8 +0 + 62 + 0 + 10 +13437.499948 + 20 +22175.429121 + 30 +0.0 + 11 +13426.200696 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +950 + 8 +0 + 62 + 0 + 10 +13437.499948 + 20 +22132.127851 + 30 +0.0 + 11 +13424.999948 + 21 +22153.778486 + 31 +0.0 + 0 +LINE + 5 +951 + 8 +0 + 62 + 0 + 10 +13399.999948 + 20 +22153.778486 + 30 +0.0 + 11 +13387.499948 + 21 +22175.429121 + 31 +0.0 + 0 +LINE + 5 +952 + 8 +0 + 62 + 0 + 10 +13397.388718 + 20 +22115.0 + 30 +0.0 + 11 +13387.499948 + 21 +22132.127851 + 31 +0.0 + 0 +LINE + 5 +953 + 8 +0 + 62 + 0 + 10 +13362.499948 + 20 +22175.429122 + 30 +0.0 + 11 +13351.200696 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +954 + 8 +0 + 62 + 0 + 10 +13362.499948 + 20 +22132.127851 + 30 +0.0 + 11 +13349.999948 + 21 +22153.778486 + 31 +0.0 + 0 +LINE + 5 +955 + 8 +0 + 62 + 0 + 10 +13324.999948 + 20 +22153.778487 + 30 +0.0 + 11 +13312.499948 + 21 +22175.429122 + 31 +0.0 + 0 +LINE + 5 +956 + 8 +0 + 62 + 0 + 10 +13322.388718 + 20 +22115.0 + 30 +0.0 + 11 +13312.499948 + 21 +22132.127851 + 31 +0.0 + 0 +LINE + 5 +957 + 8 +0 + 62 + 0 + 10 +13287.499948 + 20 +22175.429122 + 30 +0.0 + 11 +13276.200697 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +958 + 8 +0 + 62 + 0 + 10 +13287.499948 + 20 +22132.127852 + 30 +0.0 + 11 +13274.999948 + 21 +22153.778487 + 31 +0.0 + 0 +LINE + 5 +959 + 8 +0 + 62 + 0 + 10 +13249.999949 + 20 +22153.778487 + 30 +0.0 + 11 +13237.499949 + 21 +22175.429122 + 31 +0.0 + 0 +LINE + 5 +95A + 8 +0 + 62 + 0 + 10 +13247.388718 + 20 +22115.0 + 30 +0.0 + 11 +13237.499949 + 21 +22132.127852 + 31 +0.0 + 0 +LINE + 5 +95B + 8 +0 + 62 + 0 + 10 +13212.499949 + 20 +22175.429122 + 30 +0.0 + 11 +13201.200697 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +95C + 8 +0 + 62 + 0 + 10 +13212.499949 + 20 +22132.127852 + 30 +0.0 + 11 +13199.999949 + 21 +22153.778487 + 31 +0.0 + 0 +LINE + 5 +95D + 8 +0 + 62 + 0 + 10 +13174.999949 + 20 +22153.778487 + 30 +0.0 + 11 +13162.499949 + 21 +22175.429122 + 31 +0.0 + 0 +LINE + 5 +95E + 8 +0 + 62 + 0 + 10 +13172.388719 + 20 +22115.0 + 30 +0.0 + 11 +13162.499949 + 21 +22132.127852 + 31 +0.0 + 0 +LINE + 5 +95F + 8 +0 + 62 + 0 + 10 +13137.499949 + 20 +22175.429122 + 30 +0.0 + 11 +13126.200697 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +960 + 8 +0 + 62 + 0 + 10 +13137.499949 + 20 +22132.127852 + 30 +0.0 + 11 +13124.999949 + 21 +22153.778487 + 31 +0.0 + 0 +LINE + 5 +961 + 8 +0 + 62 + 0 + 10 +13099.999949 + 20 +22153.778487 + 30 +0.0 + 11 +13087.499949 + 21 +22175.429122 + 31 +0.0 + 0 +LINE + 5 +962 + 8 +0 + 62 + 0 + 10 +13097.388719 + 20 +22115.0 + 30 +0.0 + 11 +13087.499949 + 21 +22132.127852 + 31 +0.0 + 0 +LINE + 5 +963 + 8 +0 + 62 + 0 + 10 +13062.499949 + 20 +22175.429122 + 30 +0.0 + 11 +13051.200697 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +964 + 8 +0 + 62 + 0 + 10 +13062.499949 + 20 +22132.127852 + 30 +0.0 + 11 +13049.999949 + 21 +22153.778487 + 31 +0.0 + 0 +LINE + 5 +965 + 8 +0 + 62 + 0 + 10 +13024.999949 + 20 +22153.778487 + 30 +0.0 + 11 +13012.499949 + 21 +22175.429122 + 31 +0.0 + 0 +LINE + 5 +966 + 8 +0 + 62 + 0 + 10 +13022.388719 + 20 +22115.0 + 30 +0.0 + 11 +13012.499949 + 21 +22132.127852 + 31 +0.0 + 0 +LINE + 5 +967 + 8 +0 + 62 + 0 + 10 +12987.499949 + 20 +22175.429122 + 30 +0.0 + 11 +12976.200698 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +968 + 8 +0 + 62 + 0 + 10 +12987.499949 + 20 +22132.127852 + 30 +0.0 + 11 +12974.999949 + 21 +22153.778487 + 31 +0.0 + 0 +LINE + 5 +969 + 8 +0 + 62 + 0 + 10 +12949.99995 + 20 +22153.778487 + 30 +0.0 + 11 +12937.49995 + 21 +22175.429122 + 31 +0.0 + 0 +LINE + 5 +96A + 8 +0 + 62 + 0 + 10 +12947.38872 + 20 +22115.0 + 30 +0.0 + 11 +12937.49995 + 21 +22132.127852 + 31 +0.0 + 0 +LINE + 5 +96B + 8 +0 + 62 + 0 + 10 +12912.49995 + 20 +22175.429122 + 30 +0.0 + 11 +12901.200698 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +96C + 8 +0 + 62 + 0 + 10 +12912.49995 + 20 +22132.127852 + 30 +0.0 + 11 +12899.99995 + 21 +22153.778487 + 31 +0.0 + 0 +LINE + 5 +96D + 8 +0 + 62 + 0 + 10 +12874.99995 + 20 +22153.778487 + 30 +0.0 + 11 +12862.49995 + 21 +22175.429122 + 31 +0.0 + 0 +LINE + 5 +96E + 8 +0 + 62 + 0 + 10 +12872.38872 + 20 +22115.0 + 30 +0.0 + 11 +12862.49995 + 21 +22132.127852 + 31 +0.0 + 0 +LINE + 5 +96F + 8 +0 + 62 + 0 + 10 +12837.49995 + 20 +22175.429123 + 30 +0.0 + 11 +12826.200698 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +970 + 8 +0 + 62 + 0 + 10 +12837.49995 + 20 +22132.127852 + 30 +0.0 + 11 +12824.99995 + 21 +22153.778487 + 31 +0.0 + 0 +LINE + 5 +971 + 8 +0 + 62 + 0 + 10 +12799.99995 + 20 +22153.778488 + 30 +0.0 + 11 +12787.49995 + 21 +22175.429123 + 31 +0.0 + 0 +LINE + 5 +972 + 8 +0 + 62 + 0 + 10 +12797.38872 + 20 +22115.0 + 30 +0.0 + 11 +12787.49995 + 21 +22132.127852 + 31 +0.0 + 0 +LINE + 5 +973 + 8 +0 + 62 + 0 + 10 +12762.49995 + 20 +22175.429123 + 30 +0.0 + 11 +12751.200699 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +974 + 8 +0 + 62 + 0 + 10 +12762.49995 + 20 +22132.127853 + 30 +0.0 + 11 +12749.99995 + 21 +22153.778488 + 31 +0.0 + 0 +LINE + 5 +975 + 8 +0 + 62 + 0 + 10 +12724.99995 + 20 +22153.778488 + 30 +0.0 + 11 +12712.49995 + 21 +22175.429123 + 31 +0.0 + 0 +LINE + 5 +976 + 8 +0 + 62 + 0 + 10 +12722.388721 + 20 +22115.0 + 30 +0.0 + 11 +12712.49995 + 21 +22132.127853 + 31 +0.0 + 0 +LINE + 5 +977 + 8 +0 + 62 + 0 + 10 +12687.49995 + 20 +22175.429123 + 30 +0.0 + 11 +12676.200699 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +978 + 8 +0 + 62 + 0 + 10 +12687.49995 + 20 +22132.127853 + 30 +0.0 + 11 +12674.99995 + 21 +22153.778488 + 31 +0.0 + 0 +LINE + 5 +979 + 8 +0 + 62 + 0 + 10 +12649.999951 + 20 +22153.778488 + 30 +0.0 + 11 +12637.499951 + 21 +22175.429123 + 31 +0.0 + 0 +LINE + 5 +97A + 8 +0 + 62 + 0 + 10 +12647.388721 + 20 +22115.0 + 30 +0.0 + 11 +12637.499951 + 21 +22132.127853 + 31 +0.0 + 0 +LINE + 5 +97B + 8 +0 + 62 + 0 + 10 +12612.499951 + 20 +22175.429123 + 30 +0.0 + 11 +12601.200699 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +97C + 8 +0 + 62 + 0 + 10 +12612.499951 + 20 +22132.127853 + 30 +0.0 + 11 +12599.999951 + 21 +22153.778488 + 31 +0.0 + 0 +LINE + 5 +97D + 8 +0 + 62 + 0 + 10 +12574.999951 + 20 +22153.778488 + 30 +0.0 + 11 +12562.499951 + 21 +22175.429123 + 31 +0.0 + 0 +LINE + 5 +97E + 8 +0 + 62 + 0 + 10 +12572.388721 + 20 +22115.0 + 30 +0.0 + 11 +12562.499951 + 21 +22132.127853 + 31 +0.0 + 0 +LINE + 5 +97F + 8 +0 + 62 + 0 + 10 +12537.499951 + 20 +22175.429123 + 30 +0.0 + 11 +12526.2007 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +980 + 8 +0 + 62 + 0 + 10 +12537.499951 + 20 +22132.127853 + 30 +0.0 + 11 +12524.999951 + 21 +22153.778488 + 31 +0.0 + 0 +LINE + 5 +981 + 8 +0 + 62 + 0 + 10 +12499.999951 + 20 +22153.778488 + 30 +0.0 + 11 +12487.499951 + 21 +22175.429123 + 31 +0.0 + 0 +LINE + 5 +982 + 8 +0 + 62 + 0 + 10 +12497.388722 + 20 +22115.0 + 30 +0.0 + 11 +12487.499951 + 21 +22132.127853 + 31 +0.0 + 0 +LINE + 5 +983 + 8 +0 + 62 + 0 + 10 +12462.499951 + 20 +22175.429123 + 30 +0.0 + 11 +12451.2007 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +984 + 8 +0 + 62 + 0 + 10 +12462.499951 + 20 +22132.127853 + 30 +0.0 + 11 +12449.999951 + 21 +22153.778488 + 31 +0.0 + 0 +LINE + 5 +985 + 8 +0 + 62 + 0 + 10 +12424.999951 + 20 +22153.778488 + 30 +0.0 + 11 +12412.499951 + 21 +22175.429123 + 31 +0.0 + 0 +LINE + 5 +986 + 8 +0 + 62 + 0 + 10 +12422.388722 + 20 +22115.0 + 30 +0.0 + 11 +12412.499951 + 21 +22132.127853 + 31 +0.0 + 0 +LINE + 5 +987 + 8 +0 + 62 + 0 + 10 +12387.499951 + 20 +22175.429123 + 30 +0.0 + 11 +12376.2007 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +988 + 8 +0 + 62 + 0 + 10 +12387.499951 + 20 +22132.127853 + 30 +0.0 + 11 +12374.999951 + 21 +22153.778488 + 31 +0.0 + 0 +LINE + 5 +989 + 8 +0 + 62 + 0 + 10 +12349.999951 + 20 +22153.778488 + 30 +0.0 + 11 +12337.499951 + 21 +22175.429123 + 31 +0.0 + 0 +LINE + 5 +98A + 8 +0 + 62 + 0 + 10 +12347.388722 + 20 +22115.0 + 30 +0.0 + 11 +12337.499952 + 21 +22132.127853 + 31 +0.0 + 0 +LINE + 5 +98B + 8 +0 + 62 + 0 + 10 +12312.499952 + 20 +22175.429124 + 30 +0.0 + 11 +12301.200701 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +98C + 8 +0 + 62 + 0 + 10 +12312.499952 + 20 +22132.127853 + 30 +0.0 + 11 +12299.999952 + 21 +22153.778488 + 31 +0.0 + 0 +LINE + 5 +98D + 8 +0 + 62 + 0 + 10 +12274.999952 + 20 +22153.778489 + 30 +0.0 + 11 +12262.499952 + 21 +22175.429124 + 31 +0.0 + 0 +LINE + 5 +98E + 8 +0 + 62 + 0 + 10 +12272.388723 + 20 +22115.0 + 30 +0.0 + 11 +12262.499952 + 21 +22132.127853 + 31 +0.0 + 0 +LINE + 5 +98F + 8 +0 + 62 + 0 + 10 +12237.499952 + 20 +22175.429124 + 30 +0.0 + 11 +12226.200701 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +990 + 8 +0 + 62 + 0 + 10 +12237.499952 + 20 +22132.127854 + 30 +0.0 + 11 +12224.999952 + 21 +22153.778489 + 31 +0.0 + 0 +LINE + 5 +991 + 8 +0 + 62 + 0 + 10 +12199.999952 + 20 +22153.778489 + 30 +0.0 + 11 +12187.499952 + 21 +22175.429124 + 31 +0.0 + 0 +LINE + 5 +992 + 8 +0 + 62 + 0 + 10 +12197.388723 + 20 +22115.0 + 30 +0.0 + 11 +12187.499952 + 21 +22132.127854 + 31 +0.0 + 0 +LINE + 5 +993 + 8 +0 + 62 + 0 + 10 +12162.499952 + 20 +22175.429124 + 30 +0.0 + 11 +12151.200701 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +994 + 8 +0 + 62 + 0 + 10 +12162.499952 + 20 +22132.127854 + 30 +0.0 + 11 +12149.999952 + 21 +22153.778489 + 31 +0.0 + 0 +LINE + 5 +995 + 8 +0 + 62 + 0 + 10 +12124.999952 + 20 +22153.778489 + 30 +0.0 + 11 +12112.499952 + 21 +22175.429124 + 31 +0.0 + 0 +LINE + 5 +996 + 8 +0 + 62 + 0 + 10 +12122.388723 + 20 +22115.0 + 30 +0.0 + 11 +12112.499952 + 21 +22132.127854 + 31 +0.0 + 0 +LINE + 5 +997 + 8 +0 + 62 + 0 + 10 +12087.499952 + 20 +22175.429124 + 30 +0.0 + 11 +12076.200702 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +998 + 8 +0 + 62 + 0 + 10 +12087.499952 + 20 +22132.127854 + 30 +0.0 + 11 +12074.999952 + 21 +22153.778489 + 31 +0.0 + 0 +LINE + 5 +999 + 8 +0 + 62 + 0 + 10 +12049.999952 + 20 +22153.778489 + 30 +0.0 + 11 +12037.499952 + 21 +22175.429124 + 31 +0.0 + 0 +LINE + 5 +99A + 8 +0 + 62 + 0 + 10 +12047.388724 + 20 +22115.0 + 30 +0.0 + 11 +12037.499953 + 21 +22132.127854 + 31 +0.0 + 0 +LINE + 5 +99B + 8 +0 + 62 + 0 + 10 +12012.499953 + 20 +22175.429124 + 30 +0.0 + 11 +12001.200702 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +99C + 8 +0 + 62 + 0 + 10 +12012.499953 + 20 +22132.127854 + 30 +0.0 + 11 +11999.999953 + 21 +22153.778489 + 31 +0.0 + 0 +LINE + 5 +99D + 8 +0 + 62 + 0 + 10 +11974.999953 + 20 +22153.778489 + 30 +0.0 + 11 +11962.499953 + 21 +22175.429124 + 31 +0.0 + 0 +LINE + 5 +99E + 8 +0 + 62 + 0 + 10 +11972.388724 + 20 +22115.0 + 30 +0.0 + 11 +11962.499953 + 21 +22132.127854 + 31 +0.0 + 0 +LINE + 5 +99F + 8 +0 + 62 + 0 + 10 +11937.499953 + 20 +22175.429124 + 30 +0.0 + 11 +11926.200702 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9A0 + 8 +0 + 62 + 0 + 10 +11937.499953 + 20 +22132.127854 + 30 +0.0 + 11 +11924.999953 + 21 +22153.778489 + 31 +0.0 + 0 +LINE + 5 +9A1 + 8 +0 + 62 + 0 + 10 +11899.999953 + 20 +22153.778489 + 30 +0.0 + 11 +11887.499953 + 21 +22175.429124 + 31 +0.0 + 0 +LINE + 5 +9A2 + 8 +0 + 62 + 0 + 10 +11897.388724 + 20 +22115.0 + 30 +0.0 + 11 +11887.499953 + 21 +22132.127854 + 31 +0.0 + 0 +LINE + 5 +9A3 + 8 +0 + 62 + 0 + 10 +11862.499953 + 20 +22175.429124 + 30 +0.0 + 11 +11851.200703 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9A4 + 8 +0 + 62 + 0 + 10 +11862.499953 + 20 +22132.127854 + 30 +0.0 + 11 +11849.999953 + 21 +22153.778489 + 31 +0.0 + 0 +LINE + 5 +9A5 + 8 +0 + 62 + 0 + 10 +11824.999953 + 20 +22153.778489 + 30 +0.0 + 11 +11812.499953 + 21 +22175.429124 + 31 +0.0 + 0 +LINE + 5 +9A6 + 8 +0 + 62 + 0 + 10 +11822.388725 + 20 +22115.0 + 30 +0.0 + 11 +11812.499953 + 21 +22132.127854 + 31 +0.0 + 0 +LINE + 5 +9A7 + 8 +0 + 62 + 0 + 10 +11787.499953 + 20 +22175.429125 + 30 +0.0 + 11 +11776.200703 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9A8 + 8 +0 + 62 + 0 + 10 +11787.499953 + 20 +22132.127854 + 30 +0.0 + 11 +11774.999953 + 21 +22153.778489 + 31 +0.0 + 0 +LINE + 5 +9A9 + 8 +0 + 62 + 0 + 10 +11749.999953 + 20 +22153.77849 + 30 +0.0 + 11 +11737.499953 + 21 +22175.429125 + 31 +0.0 + 0 +LINE + 5 +9AA + 8 +0 + 62 + 0 + 10 +11747.388725 + 20 +22115.0 + 30 +0.0 + 11 +11737.499954 + 21 +22132.127854 + 31 +0.0 + 0 +LINE + 5 +9AB + 8 +0 + 62 + 0 + 10 +11712.499954 + 20 +22175.429125 + 30 +0.0 + 11 +11701.200703 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9AC + 8 +0 + 62 + 0 + 10 +11712.499954 + 20 +22132.127855 + 30 +0.0 + 11 +11699.999954 + 21 +22153.77849 + 31 +0.0 + 0 +LINE + 5 +9AD + 8 +0 + 62 + 0 + 10 +11674.999954 + 20 +22153.77849 + 30 +0.0 + 11 +11662.499954 + 21 +22175.429125 + 31 +0.0 + 0 +LINE + 5 +9AE + 8 +0 + 62 + 0 + 10 +11672.388725 + 20 +22115.0 + 30 +0.0 + 11 +11662.499954 + 21 +22132.127855 + 31 +0.0 + 0 +LINE + 5 +9AF + 8 +0 + 62 + 0 + 10 +11637.499954 + 20 +22175.429125 + 30 +0.0 + 11 +11626.200704 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9B0 + 8 +0 + 62 + 0 + 10 +11637.499954 + 20 +22132.127855 + 30 +0.0 + 11 +11624.999954 + 21 +22153.77849 + 31 +0.0 + 0 +LINE + 5 +9B1 + 8 +0 + 62 + 0 + 10 +11599.999954 + 20 +22153.77849 + 30 +0.0 + 11 +11587.499954 + 21 +22175.429125 + 31 +0.0 + 0 +LINE + 5 +9B2 + 8 +0 + 62 + 0 + 10 +11597.388726 + 20 +22115.0 + 30 +0.0 + 11 +11587.499954 + 21 +22132.127855 + 31 +0.0 + 0 +LINE + 5 +9B3 + 8 +0 + 62 + 0 + 10 +11562.499954 + 20 +22175.429125 + 30 +0.0 + 11 +11551.200704 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9B4 + 8 +0 + 62 + 0 + 10 +11562.499954 + 20 +22132.127855 + 30 +0.0 + 11 +11549.999954 + 21 +22153.77849 + 31 +0.0 + 0 +LINE + 5 +9B5 + 8 +0 + 62 + 0 + 10 +11524.999954 + 20 +22153.77849 + 30 +0.0 + 11 +11512.499954 + 21 +22175.429125 + 31 +0.0 + 0 +LINE + 5 +9B6 + 8 +0 + 62 + 0 + 10 +11522.388726 + 20 +22115.0 + 30 +0.0 + 11 +11512.499954 + 21 +22132.127855 + 31 +0.0 + 0 +LINE + 5 +9B7 + 8 +0 + 62 + 0 + 10 +11487.499954 + 20 +22175.429125 + 30 +0.0 + 11 +11476.200704 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9B8 + 8 +0 + 62 + 0 + 10 +11487.499954 + 20 +22132.127855 + 30 +0.0 + 11 +11474.999954 + 21 +22153.77849 + 31 +0.0 + 0 +LINE + 5 +9B9 + 8 +0 + 62 + 0 + 10 +11449.999954 + 20 +22153.77849 + 30 +0.0 + 11 +11437.499954 + 21 +22175.429125 + 31 +0.0 + 0 +LINE + 5 +9BA + 8 +0 + 62 + 0 + 10 +11447.388726 + 20 +22115.0 + 30 +0.0 + 11 +11437.499955 + 21 +22132.127855 + 31 +0.0 + 0 +LINE + 5 +9BB + 8 +0 + 62 + 0 + 10 +11412.499955 + 20 +22175.429125 + 30 +0.0 + 11 +11401.200705 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9BC + 8 +0 + 62 + 0 + 10 +11412.499955 + 20 +22132.127855 + 30 +0.0 + 11 +11399.999955 + 21 +22153.77849 + 31 +0.0 + 0 +LINE + 5 +9BD + 8 +0 + 62 + 0 + 10 +11374.999955 + 20 +22153.77849 + 30 +0.0 + 11 +11362.499955 + 21 +22175.429125 + 31 +0.0 + 0 +LINE + 5 +9BE + 8 +0 + 62 + 0 + 10 +11372.388727 + 20 +22115.0 + 30 +0.0 + 11 +11362.499955 + 21 +22132.127855 + 31 +0.0 + 0 +LINE + 5 +9BF + 8 +0 + 62 + 0 + 10 +11337.499955 + 20 +22175.429125 + 30 +0.0 + 11 +11326.200705 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9C0 + 8 +0 + 62 + 0 + 10 +11337.499955 + 20 +22132.127855 + 30 +0.0 + 11 +11324.999955 + 21 +22153.77849 + 31 +0.0 + 0 +LINE + 5 +9C1 + 8 +0 + 62 + 0 + 10 +11299.999955 + 20 +22153.77849 + 30 +0.0 + 11 +11287.499955 + 21 +22175.429125 + 31 +0.0 + 0 +LINE + 5 +9C2 + 8 +0 + 62 + 0 + 10 +11297.388727 + 20 +22115.0 + 30 +0.0 + 11 +11287.499955 + 21 +22132.127855 + 31 +0.0 + 0 +LINE + 5 +9C3 + 8 +0 + 62 + 0 + 10 +11262.499955 + 20 +22175.429126 + 30 +0.0 + 11 +11251.200705 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9C4 + 8 +0 + 62 + 0 + 10 +11262.499955 + 20 +22132.127855 + 30 +0.0 + 11 +11249.999955 + 21 +22153.77849 + 31 +0.0 + 0 +LINE + 5 +9C5 + 8 +0 + 62 + 0 + 10 +13587.499947 + 20 +22132.127851 + 30 +0.0 + 11 +13574.999947 + 21 +22153.778486 + 31 +0.0 + 0 +LINE + 5 +9C6 + 8 +0 + 62 + 0 + 10 +13622.388717 + 20 +22115.0 + 30 +0.0 + 11 +13612.499947 + 21 +22132.127851 + 31 +0.0 + 0 +LINE + 5 +9C7 + 8 +0 + 62 + 0 + 10 +13587.499947 + 20 +22175.429121 + 30 +0.0 + 11 +13576.200695 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9C8 + 8 +0 + 62 + 0 + 10 +13624.999947 + 20 +22153.778486 + 30 +0.0 + 11 +13612.499947 + 21 +22175.429121 + 31 +0.0 + 0 +LINE + 5 +9C9 + 8 +0 + 62 + 0 + 10 +13662.499947 + 20 +22132.127851 + 30 +0.0 + 11 +13649.999947 + 21 +22153.778486 + 31 +0.0 + 0 +LINE + 5 +9CA + 8 +0 + 62 + 0 + 10 +13697.388716 + 20 +22115.0 + 30 +0.0 + 11 +13687.499947 + 21 +22132.127851 + 31 +0.0 + 0 +LINE + 5 +9CB + 8 +0 + 62 + 0 + 10 +13662.499947 + 20 +22175.429121 + 30 +0.0 + 11 +13651.200695 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9CC + 8 +0 + 62 + 0 + 10 +13699.999947 + 20 +22153.778486 + 30 +0.0 + 11 +13687.499947 + 21 +22175.429121 + 31 +0.0 + 0 +LINE + 5 +9CD + 8 +0 + 62 + 0 + 10 +13737.499947 + 20 +22132.127851 + 30 +0.0 + 11 +13724.999947 + 21 +22153.778486 + 31 +0.0 + 0 +LINE + 5 +9CE + 8 +0 + 62 + 0 + 10 +13772.388716 + 20 +22115.0 + 30 +0.0 + 11 +13762.499947 + 21 +22132.127851 + 31 +0.0 + 0 +LINE + 5 +9CF + 8 +0 + 62 + 0 + 10 +13737.499947 + 20 +22175.429121 + 30 +0.0 + 11 +13726.200695 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9D0 + 8 +0 + 62 + 0 + 10 +13774.999947 + 20 +22153.778486 + 30 +0.0 + 11 +13762.499947 + 21 +22175.429121 + 31 +0.0 + 0 +LINE + 5 +9D1 + 8 +0 + 62 + 0 + 10 +13812.499947 + 20 +22132.127851 + 30 +0.0 + 11 +13799.999947 + 21 +22153.778486 + 31 +0.0 + 0 +LINE + 5 +9D2 + 8 +0 + 62 + 0 + 10 +13847.388716 + 20 +22115.0 + 30 +0.0 + 11 +13837.499947 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9D3 + 8 +0 + 62 + 0 + 10 +13812.499947 + 20 +22175.429121 + 30 +0.0 + 11 +13801.200694 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9D4 + 8 +0 + 62 + 0 + 10 +13849.999947 + 20 +22153.778486 + 30 +0.0 + 11 +13837.499947 + 21 +22175.429121 + 31 +0.0 + 0 +LINE + 5 +9D5 + 8 +0 + 62 + 0 + 10 +13887.499946 + 20 +22132.12785 + 30 +0.0 + 11 +13874.999946 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9D6 + 8 +0 + 62 + 0 + 10 +13922.388715 + 20 +22115.0 + 30 +0.0 + 11 +13912.499946 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9D7 + 8 +0 + 62 + 0 + 10 +13887.499946 + 20 +22175.429121 + 30 +0.0 + 11 +13876.200694 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9D8 + 8 +0 + 62 + 0 + 10 +13924.999946 + 20 +22153.778485 + 30 +0.0 + 11 +13912.499946 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9D9 + 8 +0 + 62 + 0 + 10 +13962.499946 + 20 +22132.12785 + 30 +0.0 + 11 +13949.999946 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9DA + 8 +0 + 62 + 0 + 10 +13997.388715 + 20 +22115.0 + 30 +0.0 + 11 +13987.499946 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9DB + 8 +0 + 62 + 0 + 10 +13962.499946 + 20 +22175.42912 + 30 +0.0 + 11 +13951.200694 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9DC + 8 +0 + 62 + 0 + 10 +13999.999946 + 20 +22153.778485 + 30 +0.0 + 11 +13987.499946 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9DD + 8 +0 + 62 + 0 + 10 +14037.499946 + 20 +22132.12785 + 30 +0.0 + 11 +14024.999946 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9DE + 8 +0 + 62 + 0 + 10 +14072.388715 + 20 +22115.0 + 30 +0.0 + 11 +14062.499946 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9DF + 8 +0 + 62 + 0 + 10 +14037.499946 + 20 +22175.42912 + 30 +0.0 + 11 +14026.200693 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9E0 + 8 +0 + 62 + 0 + 10 +14074.999946 + 20 +22153.778485 + 30 +0.0 + 11 +14062.499946 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9E1 + 8 +0 + 62 + 0 + 10 +14112.499946 + 20 +22132.12785 + 30 +0.0 + 11 +14099.999946 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9E2 + 8 +0 + 62 + 0 + 10 +14147.388714 + 20 +22115.0 + 30 +0.0 + 11 +14137.499946 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9E3 + 8 +0 + 62 + 0 + 10 +14112.499946 + 20 +22175.42912 + 30 +0.0 + 11 +14101.200693 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9E4 + 8 +0 + 62 + 0 + 10 +14149.999946 + 20 +22153.778485 + 30 +0.0 + 11 +14137.499946 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9E5 + 8 +0 + 62 + 0 + 10 +14187.499946 + 20 +22132.12785 + 30 +0.0 + 11 +14174.999946 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9E6 + 8 +0 + 62 + 0 + 10 +14222.388714 + 20 +22115.0 + 30 +0.0 + 11 +14212.499945 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9E7 + 8 +0 + 62 + 0 + 10 +14187.499945 + 20 +22175.42912 + 30 +0.0 + 11 +14176.200693 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9E8 + 8 +0 + 62 + 0 + 10 +14224.999945 + 20 +22153.778485 + 30 +0.0 + 11 +14212.499945 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9E9 + 8 +0 + 62 + 0 + 10 +14262.499945 + 20 +22132.12785 + 30 +0.0 + 11 +14249.999945 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9EA + 8 +0 + 62 + 0 + 10 +14297.388714 + 20 +22115.0 + 30 +0.0 + 11 +14287.499945 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9EB + 8 +0 + 62 + 0 + 10 +14262.499945 + 20 +22175.42912 + 30 +0.0 + 11 +14251.200692 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9EC + 8 +0 + 62 + 0 + 10 +14299.999945 + 20 +22153.778485 + 30 +0.0 + 11 +14287.499945 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9ED + 8 +0 + 62 + 0 + 10 +14337.499945 + 20 +22132.12785 + 30 +0.0 + 11 +14324.999945 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9EE + 8 +0 + 62 + 0 + 10 +14372.388713 + 20 +22115.0 + 30 +0.0 + 11 +14362.499945 + 21 +22132.12785 + 31 +0.0 + 0 +LINE + 5 +9EF + 8 +0 + 62 + 0 + 10 +14337.499945 + 20 +22175.42912 + 30 +0.0 + 11 +14326.200692 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9F0 + 8 +0 + 62 + 0 + 10 +14374.999945 + 20 +22153.778485 + 30 +0.0 + 11 +14362.499945 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9F1 + 8 +0 + 62 + 0 + 10 +14412.499945 + 20 +22132.127849 + 30 +0.0 + 11 +14399.999945 + 21 +22153.778485 + 31 +0.0 + 0 +LINE + 5 +9F2 + 8 +0 + 62 + 0 + 10 +14447.388713 + 20 +22115.0 + 30 +0.0 + 11 +14437.499945 + 21 +22132.127849 + 31 +0.0 + 0 +LINE + 5 +9F3 + 8 +0 + 62 + 0 + 10 +14412.499945 + 20 +22175.42912 + 30 +0.0 + 11 +14401.200692 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9F4 + 8 +0 + 62 + 0 + 10 +14449.999945 + 20 +22153.778484 + 30 +0.0 + 11 +14437.499945 + 21 +22175.42912 + 31 +0.0 + 0 +LINE + 5 +9F5 + 8 +0 + 62 + 0 + 10 +14487.499945 + 20 +22132.127849 + 30 +0.0 + 11 +14474.999945 + 21 +22153.778484 + 31 +0.0 + 0 +LINE + 5 +9F6 + 8 +0 + 62 + 0 + 10 +14522.388713 + 20 +22115.0 + 30 +0.0 + 11 +14512.499944 + 21 +22132.127849 + 31 +0.0 + 0 +LINE + 5 +9F7 + 8 +0 + 62 + 0 + 10 +14487.499944 + 20 +22175.429119 + 30 +0.0 + 11 +14476.200691 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9F8 + 8 +0 + 62 + 0 + 10 +14524.999944 + 20 +22153.778484 + 30 +0.0 + 11 +14512.499944 + 21 +22175.429119 + 31 +0.0 + 0 +LINE + 5 +9F9 + 8 +0 + 62 + 0 + 10 +14562.499944 + 20 +22132.127849 + 30 +0.0 + 11 +14549.999944 + 21 +22153.778484 + 31 +0.0 + 0 +LINE + 5 +9FA + 8 +0 + 62 + 0 + 10 +14597.388712 + 20 +22115.0 + 30 +0.0 + 11 +14587.499944 + 21 +22132.127849 + 31 +0.0 + 0 +LINE + 5 +9FB + 8 +0 + 62 + 0 + 10 +14562.499944 + 20 +22175.429119 + 30 +0.0 + 11 +14551.200691 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +9FC + 8 +0 + 62 + 0 + 10 +14599.999944 + 20 +22153.778484 + 30 +0.0 + 11 +14587.499944 + 21 +22175.429119 + 31 +0.0 + 0 +LINE + 5 +9FD + 8 +0 + 62 + 0 + 10 +14637.499944 + 20 +22132.127849 + 30 +0.0 + 11 +14624.999944 + 21 +22153.778484 + 31 +0.0 + 0 +LINE + 5 +9FE + 8 +0 + 62 + 0 + 10 +14672.388712 + 20 +22115.0 + 30 +0.0 + 11 +14662.499944 + 21 +22132.127849 + 31 +0.0 + 0 +LINE + 5 +9FF + 8 +0 + 62 + 0 + 10 +14637.499944 + 20 +22175.429119 + 30 +0.0 + 11 +14626.200691 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A00 + 8 +0 + 62 + 0 + 10 +14674.999944 + 20 +22153.778484 + 30 +0.0 + 11 +14662.499944 + 21 +22175.429119 + 31 +0.0 + 0 +LINE + 5 +A01 + 8 +0 + 62 + 0 + 10 +14712.499944 + 20 +22132.127849 + 30 +0.0 + 11 +14699.999944 + 21 +22153.778484 + 31 +0.0 + 0 +LINE + 5 +A02 + 8 +0 + 62 + 0 + 10 +14747.388712 + 20 +22115.0 + 30 +0.0 + 11 +14737.499944 + 21 +22132.127849 + 31 +0.0 + 0 +LINE + 5 +A03 + 8 +0 + 62 + 0 + 10 +14712.499944 + 20 +22175.429119 + 30 +0.0 + 11 +14701.20069 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A04 + 8 +0 + 62 + 0 + 10 +14749.999944 + 20 +22153.778484 + 30 +0.0 + 11 +14737.499944 + 21 +22175.429119 + 31 +0.0 + 0 +LINE + 5 +A05 + 8 +0 + 62 + 0 + 10 +14787.499944 + 20 +22132.127849 + 30 +0.0 + 11 +14774.999944 + 21 +22153.778484 + 31 +0.0 + 0 +LINE + 5 +A06 + 8 +0 + 62 + 0 + 10 +14822.388711 + 20 +22115.0 + 30 +0.0 + 11 +14812.499943 + 21 +22132.127849 + 31 +0.0 + 0 +LINE + 5 +A07 + 8 +0 + 62 + 0 + 10 +14787.499943 + 20 +22175.429119 + 30 +0.0 + 11 +14776.20069 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A08 + 8 +0 + 62 + 0 + 10 +14824.999943 + 20 +22153.778484 + 30 +0.0 + 11 +14812.499943 + 21 +22175.429119 + 31 +0.0 + 0 +LINE + 5 +A09 + 8 +0 + 62 + 0 + 10 +14862.499943 + 20 +22132.127849 + 30 +0.0 + 11 +14849.999943 + 21 +22153.778484 + 31 +0.0 + 0 +LINE + 5 +A0A + 8 +0 + 62 + 0 + 10 +14897.388711 + 20 +22115.0 + 30 +0.0 + 11 +14887.499943 + 21 +22132.127849 + 31 +0.0 + 0 +LINE + 5 +A0B + 8 +0 + 62 + 0 + 10 +14862.499943 + 20 +22175.429119 + 30 +0.0 + 11 +14851.20069 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A0C + 8 +0 + 62 + 0 + 10 +14899.999943 + 20 +22153.778484 + 30 +0.0 + 11 +14887.499943 + 21 +22175.429119 + 31 +0.0 + 0 +LINE + 5 +A0D + 8 +0 + 62 + 0 + 10 +14937.499943 + 20 +22132.127848 + 30 +0.0 + 11 +14924.999943 + 21 +22153.778484 + 31 +0.0 + 0 +LINE + 5 +A0E + 8 +0 + 62 + 0 + 10 +14972.388711 + 20 +22115.0 + 30 +0.0 + 11 +14962.499943 + 21 +22132.127848 + 31 +0.0 + 0 +LINE + 5 +A0F + 8 +0 + 62 + 0 + 10 +14937.499943 + 20 +22175.429119 + 30 +0.0 + 11 +14926.200689 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A10 + 8 +0 + 62 + 0 + 10 +14974.999943 + 20 +22153.778483 + 30 +0.0 + 11 +14962.499943 + 21 +22175.429119 + 31 +0.0 + 0 +LINE + 5 +A11 + 8 +0 + 62 + 0 + 10 +15012.499943 + 20 +22132.127848 + 30 +0.0 + 11 +14999.999943 + 21 +22153.778483 + 31 +0.0 + 0 +LINE + 5 +A12 + 8 +0 + 62 + 0 + 10 +15047.388711 + 20 +22115.0 + 30 +0.0 + 11 +15037.499943 + 21 +22132.127848 + 31 +0.0 + 0 +LINE + 5 +A13 + 8 +0 + 62 + 0 + 10 +15012.499943 + 20 +22175.429118 + 30 +0.0 + 11 +15001.200689 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A14 + 8 +0 + 62 + 0 + 10 +15049.999943 + 20 +22153.778483 + 30 +0.0 + 11 +15037.499943 + 21 +22175.429118 + 31 +0.0 + 0 +LINE + 5 +A15 + 8 +0 + 62 + 0 + 10 +15087.499943 + 20 +22132.127848 + 30 +0.0 + 11 +15074.999943 + 21 +22153.778483 + 31 +0.0 + 0 +LINE + 5 +A16 + 8 +0 + 62 + 0 + 10 +15122.38871 + 20 +22115.0 + 30 +0.0 + 11 +15112.499942 + 21 +22132.127848 + 31 +0.0 + 0 +LINE + 5 +A17 + 8 +0 + 62 + 0 + 10 +15087.499942 + 20 +22175.429118 + 30 +0.0 + 11 +15076.200689 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A18 + 8 +0 + 62 + 0 + 10 +15124.999942 + 20 +22153.778483 + 30 +0.0 + 11 +15112.499942 + 21 +22175.429118 + 31 +0.0 + 0 +LINE + 5 +A19 + 8 +0 + 62 + 0 + 10 +15162.499942 + 20 +22132.127848 + 30 +0.0 + 11 +15149.999942 + 21 +22153.778483 + 31 +0.0 + 0 +LINE + 5 +A1A + 8 +0 + 62 + 0 + 10 +15197.38871 + 20 +22115.0 + 30 +0.0 + 11 +15187.499942 + 21 +22132.127848 + 31 +0.0 + 0 +LINE + 5 +A1B + 8 +0 + 62 + 0 + 10 +15162.499942 + 20 +22175.429118 + 30 +0.0 + 11 +15151.200688 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A1C + 8 +0 + 62 + 0 + 10 +15199.999942 + 20 +22153.778483 + 30 +0.0 + 11 +15187.499942 + 21 +22175.429118 + 31 +0.0 + 0 +LINE + 5 +A1D + 8 +0 + 62 + 0 + 10 +15237.499942 + 20 +22132.127848 + 30 +0.0 + 11 +15224.999942 + 21 +22153.778483 + 31 +0.0 + 0 +LINE + 5 +A1E + 8 +0 + 62 + 0 + 10 +15272.38871 + 20 +22115.0 + 30 +0.0 + 11 +15262.499942 + 21 +22132.127848 + 31 +0.0 + 0 +LINE + 5 +A1F + 8 +0 + 62 + 0 + 10 +15237.499942 + 20 +22175.429118 + 30 +0.0 + 11 +15226.200688 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A20 + 8 +0 + 62 + 0 + 10 +15274.999942 + 20 +22153.778483 + 30 +0.0 + 11 +15262.499942 + 21 +22175.429118 + 31 +0.0 + 0 +LINE + 5 +A21 + 8 +0 + 62 + 0 + 10 +15312.499942 + 20 +22132.127848 + 30 +0.0 + 11 +15299.999942 + 21 +22153.778483 + 31 +0.0 + 0 +LINE + 5 +A22 + 8 +0 + 62 + 0 + 10 +15347.388709 + 20 +22115.0 + 30 +0.0 + 11 +15337.499942 + 21 +22132.127848 + 31 +0.0 + 0 +LINE + 5 +A23 + 8 +0 + 62 + 0 + 10 +15312.499942 + 20 +22175.429118 + 30 +0.0 + 11 +15301.200688 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A24 + 8 +0 + 62 + 0 + 10 +15349.999942 + 20 +22153.778483 + 30 +0.0 + 11 +15337.499942 + 21 +22175.429118 + 31 +0.0 + 0 +LINE + 5 +A25 + 8 +0 + 62 + 0 + 10 +15387.499942 + 20 +22132.127848 + 30 +0.0 + 11 +15374.999942 + 21 +22153.778483 + 31 +0.0 + 0 +LINE + 5 +A26 + 8 +0 + 62 + 0 + 10 +15422.388709 + 20 +22115.0 + 30 +0.0 + 11 +15412.499941 + 21 +22132.127848 + 31 +0.0 + 0 +LINE + 5 +A27 + 8 +0 + 62 + 0 + 10 +15387.499941 + 20 +22175.429118 + 30 +0.0 + 11 +15376.200687 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A28 + 8 +0 + 62 + 0 + 10 +15424.999941 + 20 +22153.778483 + 30 +0.0 + 11 +15412.499941 + 21 +22175.429118 + 31 +0.0 + 0 +LINE + 5 +A29 + 8 +0 + 62 + 0 + 10 +15462.499941 + 20 +22132.127847 + 30 +0.0 + 11 +15449.999941 + 21 +22153.778483 + 31 +0.0 + 0 +LINE + 5 +A2A + 8 +0 + 62 + 0 + 10 +15497.388709 + 20 +22115.0 + 30 +0.0 + 11 +15487.499941 + 21 +22132.127847 + 31 +0.0 + 0 +LINE + 5 +A2B + 8 +0 + 62 + 0 + 10 +15462.499941 + 20 +22175.429118 + 30 +0.0 + 11 +15451.200687 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A2C + 8 +0 + 62 + 0 + 10 +15499.999941 + 20 +22153.778482 + 30 +0.0 + 11 +15487.499941 + 21 +22175.429118 + 31 +0.0 + 0 +LINE + 5 +A2D + 8 +0 + 62 + 0 + 10 +15537.499941 + 20 +22132.127847 + 30 +0.0 + 11 +15524.999941 + 21 +22153.778482 + 31 +0.0 + 0 +LINE + 5 +A2E + 8 +0 + 62 + 0 + 10 +15572.388708 + 20 +22115.0 + 30 +0.0 + 11 +15562.499941 + 21 +22132.127847 + 31 +0.0 + 0 +LINE + 5 +A2F + 8 +0 + 62 + 0 + 10 +15537.499941 + 20 +22175.429117 + 30 +0.0 + 11 +15526.200687 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A30 + 8 +0 + 62 + 0 + 10 +15574.999941 + 20 +22153.778482 + 30 +0.0 + 11 +15562.499941 + 21 +22175.429117 + 31 +0.0 + 0 +LINE + 5 +A31 + 8 +0 + 62 + 0 + 10 +15612.499941 + 20 +22132.127847 + 30 +0.0 + 11 +15599.999941 + 21 +22153.778482 + 31 +0.0 + 0 +LINE + 5 +A32 + 8 +0 + 62 + 0 + 10 +15647.388708 + 20 +22115.0 + 30 +0.0 + 11 +15637.499941 + 21 +22132.127847 + 31 +0.0 + 0 +LINE + 5 +A33 + 8 +0 + 62 + 0 + 10 +15612.499941 + 20 +22175.429117 + 30 +0.0 + 11 +15601.200686 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A34 + 8 +0 + 62 + 0 + 10 +15649.999941 + 20 +22153.778482 + 30 +0.0 + 11 +15637.499941 + 21 +22175.429117 + 31 +0.0 + 0 +LINE + 5 +A35 + 8 +0 + 62 + 0 + 10 +15687.499941 + 20 +22132.127847 + 30 +0.0 + 11 +15674.999941 + 21 +22153.778482 + 31 +0.0 + 0 +LINE + 5 +A36 + 8 +0 + 62 + 0 + 10 +15722.388708 + 20 +22115.0 + 30 +0.0 + 11 +15712.499941 + 21 +22132.127847 + 31 +0.0 + 0 +LINE + 5 +A37 + 8 +0 + 62 + 0 + 10 +15687.499941 + 20 +22175.429117 + 30 +0.0 + 11 +15676.200686 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A38 + 8 +0 + 62 + 0 + 10 +15724.99994 + 20 +22153.778482 + 30 +0.0 + 11 +15712.49994 + 21 +22175.429117 + 31 +0.0 + 0 +LINE + 5 +A39 + 8 +0 + 62 + 0 + 10 +15762.49994 + 20 +22132.127847 + 30 +0.0 + 11 +15749.99994 + 21 +22153.778482 + 31 +0.0 + 0 +LINE + 5 +A3A + 8 +0 + 62 + 0 + 10 +15797.388707 + 20 +22115.0 + 30 +0.0 + 11 +15787.49994 + 21 +22132.127847 + 31 +0.0 + 0 +LINE + 5 +A3B + 8 +0 + 62 + 0 + 10 +15762.49994 + 20 +22175.429117 + 30 +0.0 + 11 +15751.200686 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A3C + 8 +0 + 62 + 0 + 10 +15799.99994 + 20 +22153.778482 + 30 +0.0 + 11 +15787.49994 + 21 +22175.429117 + 31 +0.0 + 0 +LINE + 5 +A3D + 8 +0 + 62 + 0 + 10 +15837.49994 + 20 +22132.127847 + 30 +0.0 + 11 +15824.99994 + 21 +22153.778482 + 31 +0.0 + 0 +LINE + 5 +A3E + 8 +0 + 62 + 0 + 10 +15872.388707 + 20 +22115.0 + 30 +0.0 + 11 +15862.49994 + 21 +22132.127847 + 31 +0.0 + 0 +LINE + 5 +A3F + 8 +0 + 62 + 0 + 10 +15837.49994 + 20 +22175.429117 + 30 +0.0 + 11 +15826.200685 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A40 + 8 +0 + 62 + 0 + 10 +15874.99994 + 20 +22153.778482 + 30 +0.0 + 11 +15862.49994 + 21 +22175.429117 + 31 +0.0 + 0 +LINE + 5 +A41 + 8 +0 + 62 + 0 + 10 +13537.499996 + 20 +22132.127883 + 30 +0.0 + 11 +13549.999996 + 21 +22153.778518 + 31 +0.0 + 0 +LINE + 5 +A42 + 8 +0 + 62 + 0 + 10 +13502.611208 + 20 +22115.0 + 30 +0.0 + 11 +13512.499996 + 21 +22132.127883 + 31 +0.0 + 0 +LINE + 5 +A43 + 8 +0 + 62 + 0 + 10 +13537.499996 + 20 +22175.429154 + 30 +0.0 + 11 +13548.79923 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A44 + 8 +0 + 62 + 0 + 10 +13499.999997 + 20 +22153.778518 + 30 +0.0 + 11 +13512.499997 + 21 +22175.429153 + 31 +0.0 + 0 +LINE + 5 +A45 + 8 +0 + 62 + 0 + 10 +13462.499997 + 20 +22132.127883 + 30 +0.0 + 11 +13474.999997 + 21 +22153.778518 + 31 +0.0 + 0 +LINE + 5 +A46 + 8 +0 + 62 + 0 + 10 +13427.611209 + 20 +22115.0 + 30 +0.0 + 11 +13437.499997 + 21 +22132.127883 + 31 +0.0 + 0 +LINE + 5 +A47 + 8 +0 + 62 + 0 + 10 +13462.499997 + 20 +22175.429153 + 30 +0.0 + 11 +13473.79923 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A48 + 8 +0 + 62 + 0 + 10 +13424.999997 + 20 +22153.778518 + 30 +0.0 + 11 +13437.499997 + 21 +22175.429153 + 31 +0.0 + 0 +LINE + 5 +A49 + 8 +0 + 62 + 0 + 10 +13387.499997 + 20 +22132.127883 + 30 +0.0 + 11 +13399.999997 + 21 +22153.778518 + 31 +0.0 + 0 +LINE + 5 +A4A + 8 +0 + 62 + 0 + 10 +13352.611209 + 20 +22115.0 + 30 +0.0 + 11 +13362.499997 + 21 +22132.127883 + 31 +0.0 + 0 +LINE + 5 +A4B + 8 +0 + 62 + 0 + 10 +13387.499997 + 20 +22175.429153 + 30 +0.0 + 11 +13398.799231 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A4C + 8 +0 + 62 + 0 + 10 +13349.999997 + 20 +22153.778518 + 30 +0.0 + 11 +13362.499997 + 21 +22175.429153 + 31 +0.0 + 0 +LINE + 5 +A4D + 8 +0 + 62 + 0 + 10 +13312.499997 + 20 +22132.127883 + 30 +0.0 + 11 +13324.999997 + 21 +22153.778518 + 31 +0.0 + 0 +LINE + 5 +A4E + 8 +0 + 62 + 0 + 10 +13277.611209 + 20 +22115.0 + 30 +0.0 + 11 +13287.499997 + 21 +22132.127883 + 31 +0.0 + 0 +LINE + 5 +A4F + 8 +0 + 62 + 0 + 10 +13312.499997 + 20 +22175.429153 + 30 +0.0 + 11 +13323.799231 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A50 + 8 +0 + 62 + 0 + 10 +13274.999997 + 20 +22153.778518 + 30 +0.0 + 11 +13287.499997 + 21 +22175.429153 + 31 +0.0 + 0 +LINE + 5 +A51 + 8 +0 + 62 + 0 + 10 +13237.499997 + 20 +22132.127883 + 30 +0.0 + 11 +13249.999997 + 21 +22153.778518 + 31 +0.0 + 0 +LINE + 5 +A52 + 8 +0 + 62 + 0 + 10 +13202.61121 + 20 +22115.0 + 30 +0.0 + 11 +13212.499997 + 21 +22132.127883 + 31 +0.0 + 0 +LINE + 5 +A53 + 8 +0 + 62 + 0 + 10 +13237.499997 + 20 +22175.429153 + 30 +0.0 + 11 +13248.799231 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A54 + 8 +0 + 62 + 0 + 10 +13199.999998 + 20 +22153.778518 + 30 +0.0 + 11 +13212.499998 + 21 +22175.429153 + 31 +0.0 + 0 +LINE + 5 +A55 + 8 +0 + 62 + 0 + 10 +13162.499998 + 20 +22132.127883 + 30 +0.0 + 11 +13174.999998 + 21 +22153.778518 + 31 +0.0 + 0 +LINE + 5 +A56 + 8 +0 + 62 + 0 + 10 +13127.61121 + 20 +22115.0 + 30 +0.0 + 11 +13137.499998 + 21 +22132.127883 + 31 +0.0 + 0 +LINE + 5 +A57 + 8 +0 + 62 + 0 + 10 +13162.499998 + 20 +22175.429153 + 30 +0.0 + 11 +13173.799232 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A58 + 8 +0 + 62 + 0 + 10 +13124.999998 + 20 +22153.778518 + 30 +0.0 + 11 +13137.499998 + 21 +22175.429153 + 31 +0.0 + 0 +LINE + 5 +A59 + 8 +0 + 62 + 0 + 10 +13087.499998 + 20 +22132.127883 + 30 +0.0 + 11 +13099.999998 + 21 +22153.778518 + 31 +0.0 + 0 +LINE + 5 +A5A + 8 +0 + 62 + 0 + 10 +13052.61121 + 20 +22115.0 + 30 +0.0 + 11 +13062.499998 + 21 +22132.127882 + 31 +0.0 + 0 +LINE + 5 +A5B + 8 +0 + 62 + 0 + 10 +13087.499998 + 20 +22175.429153 + 30 +0.0 + 11 +13098.799232 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A5C + 8 +0 + 62 + 0 + 10 +13049.999998 + 20 +22153.778518 + 30 +0.0 + 11 +13062.499998 + 21 +22175.429153 + 31 +0.0 + 0 +LINE + 5 +A5D + 8 +0 + 62 + 0 + 10 +13012.499998 + 20 +22132.127882 + 30 +0.0 + 11 +13024.999998 + 21 +22153.778517 + 31 +0.0 + 0 +LINE + 5 +A5E + 8 +0 + 62 + 0 + 10 +12977.611211 + 20 +22115.0 + 30 +0.0 + 11 +12987.499998 + 21 +22132.127882 + 31 +0.0 + 0 +LINE + 5 +A5F + 8 +0 + 62 + 0 + 10 +13012.499998 + 20 +22175.429153 + 30 +0.0 + 11 +13023.799232 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A60 + 8 +0 + 62 + 0 + 10 +12974.999998 + 20 +22153.778517 + 30 +0.0 + 11 +12987.499998 + 21 +22175.429152 + 31 +0.0 + 0 +LINE + 5 +A61 + 8 +0 + 62 + 0 + 10 +12937.499998 + 20 +22132.127882 + 30 +0.0 + 11 +12949.999998 + 21 +22153.778517 + 31 +0.0 + 0 +LINE + 5 +A62 + 8 +0 + 62 + 0 + 10 +12902.611211 + 20 +22115.0 + 30 +0.0 + 11 +12912.499998 + 21 +22132.127882 + 31 +0.0 + 0 +LINE + 5 +A63 + 8 +0 + 62 + 0 + 10 +12937.499998 + 20 +22175.429152 + 30 +0.0 + 11 +12948.799233 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A64 + 8 +0 + 62 + 0 + 10 +12899.999999 + 20 +22153.778517 + 30 +0.0 + 11 +12912.499999 + 21 +22175.429152 + 31 +0.0 + 0 +LINE + 5 +A65 + 8 +0 + 62 + 0 + 10 +12862.499999 + 20 +22132.127882 + 30 +0.0 + 11 +12874.999999 + 21 +22153.778517 + 31 +0.0 + 0 +LINE + 5 +A66 + 8 +0 + 62 + 0 + 10 +12827.611211 + 20 +22115.0 + 30 +0.0 + 11 +12837.499999 + 21 +22132.127882 + 31 +0.0 + 0 +LINE + 5 +A67 + 8 +0 + 62 + 0 + 10 +12862.499999 + 20 +22175.429152 + 30 +0.0 + 11 +12873.799233 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A68 + 8 +0 + 62 + 0 + 10 +12824.999999 + 20 +22153.778517 + 30 +0.0 + 11 +12837.499999 + 21 +22175.429152 + 31 +0.0 + 0 +LINE + 5 +A69 + 8 +0 + 62 + 0 + 10 +12787.499999 + 20 +22132.127882 + 30 +0.0 + 11 +12799.999999 + 21 +22153.778517 + 31 +0.0 + 0 +LINE + 5 +A6A + 8 +0 + 62 + 0 + 10 +12752.611212 + 20 +22115.0 + 30 +0.0 + 11 +12762.499999 + 21 +22132.127882 + 31 +0.0 + 0 +LINE + 5 +A6B + 8 +0 + 62 + 0 + 10 +12787.499999 + 20 +22175.429152 + 30 +0.0 + 11 +12798.799233 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A6C + 8 +0 + 62 + 0 + 10 +12749.999999 + 20 +22153.778517 + 30 +0.0 + 11 +12762.499999 + 21 +22175.429152 + 31 +0.0 + 0 +LINE + 5 +A6D + 8 +0 + 62 + 0 + 10 +12712.499999 + 20 +22132.127882 + 30 +0.0 + 11 +12724.999999 + 21 +22153.778517 + 31 +0.0 + 0 +LINE + 5 +A6E + 8 +0 + 62 + 0 + 10 +12677.611212 + 20 +22115.0 + 30 +0.0 + 11 +12687.499999 + 21 +22132.127882 + 31 +0.0 + 0 +LINE + 5 +A6F + 8 +0 + 62 + 0 + 10 +12712.499999 + 20 +22175.429152 + 30 +0.0 + 11 +12723.799234 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A70 + 8 +0 + 62 + 0 + 10 +12674.999999 + 20 +22153.778517 + 30 +0.0 + 11 +12687.499999 + 21 +22175.429152 + 31 +0.0 + 0 +LINE + 5 +A71 + 8 +0 + 62 + 0 + 10 +12637.499999 + 20 +22132.127882 + 30 +0.0 + 11 +12649.999999 + 21 +22153.778517 + 31 +0.0 + 0 +LINE + 5 +A72 + 8 +0 + 62 + 0 + 10 +12602.611212 + 20 +22115.0 + 30 +0.0 + 11 +12612.499999 + 21 +22132.127882 + 31 +0.0 + 0 +LINE + 5 +A73 + 8 +0 + 62 + 0 + 10 +12637.499999 + 20 +22175.429152 + 30 +0.0 + 11 +12648.799234 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A74 + 8 +0 + 62 + 0 + 10 +12600.0 + 20 +22153.778517 + 30 +0.0 + 11 +12612.5 + 21 +22175.429152 + 31 +0.0 + 0 +LINE + 5 +A75 + 8 +0 + 62 + 0 + 10 +12562.5 + 20 +22132.127882 + 30 +0.0 + 11 +12575.0 + 21 +22153.778517 + 31 +0.0 + 0 +LINE + 5 +A76 + 8 +0 + 62 + 0 + 10 +12527.611213 + 20 +22115.0 + 30 +0.0 + 11 +12537.5 + 21 +22132.127881 + 31 +0.0 + 0 +LINE + 5 +A77 + 8 +0 + 62 + 0 + 10 +12562.5 + 20 +22175.429152 + 30 +0.0 + 11 +12573.799234 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A78 + 8 +0 + 62 + 0 + 10 +12525.0 + 20 +22153.778517 + 30 +0.0 + 11 +12537.5 + 21 +22175.429152 + 31 +0.0 + 0 +LINE + 5 +A79 + 8 +0 + 62 + 0 + 10 +12487.5 + 20 +22132.127881 + 30 +0.0 + 11 +12500.0 + 21 +22153.778516 + 31 +0.0 + 0 +LINE + 5 +A7A + 8 +0 + 62 + 0 + 10 +12452.611213 + 20 +22115.0 + 30 +0.0 + 11 +12462.5 + 21 +22132.127881 + 31 +0.0 + 0 +LINE + 5 +A7B + 8 +0 + 62 + 0 + 10 +12487.5 + 20 +22175.429152 + 30 +0.0 + 11 +12498.799235 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A7C + 8 +0 + 62 + 0 + 10 +12450.0 + 20 +22153.778516 + 30 +0.0 + 11 +12462.5 + 21 +22175.429151 + 31 +0.0 + 0 +LINE + 5 +A7D + 8 +0 + 62 + 0 + 10 +12412.5 + 20 +22132.127881 + 30 +0.0 + 11 +12425.0 + 21 +22153.778516 + 31 +0.0 + 0 +LINE + 5 +A7E + 8 +0 + 62 + 0 + 10 +12377.611213 + 20 +22115.0 + 30 +0.0 + 11 +12387.5 + 21 +22132.127881 + 31 +0.0 + 0 +LINE + 5 +A7F + 8 +0 + 62 + 0 + 10 +12412.5 + 20 +22175.429151 + 30 +0.0 + 11 +12423.799235 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A80 + 8 +0 + 62 + 0 + 10 +12375.0 + 20 +22153.778516 + 30 +0.0 + 11 +12387.5 + 21 +22175.429151 + 31 +0.0 + 0 +LINE + 5 +A81 + 8 +0 + 62 + 0 + 10 +12337.5 + 20 +22132.127881 + 30 +0.0 + 11 +12350.0 + 21 +22153.778516 + 31 +0.0 + 0 +LINE + 5 +A82 + 8 +0 + 62 + 0 + 10 +12302.611214 + 20 +22115.0 + 30 +0.0 + 11 +12312.5 + 21 +22132.127881 + 31 +0.0 + 0 +LINE + 5 +A83 + 8 +0 + 62 + 0 + 10 +12337.5 + 20 +22175.429151 + 30 +0.0 + 11 +12348.799235 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A84 + 8 +0 + 62 + 0 + 10 +12300.0 + 20 +22153.778516 + 30 +0.0 + 11 +12312.5 + 21 +22175.429151 + 31 +0.0 + 0 +LINE + 5 +A85 + 8 +0 + 62 + 0 + 10 +12262.500001 + 20 +22132.127881 + 30 +0.0 + 11 +12275.000001 + 21 +22153.778516 + 31 +0.0 + 0 +LINE + 5 +A86 + 8 +0 + 62 + 0 + 10 +12227.611214 + 20 +22115.0 + 30 +0.0 + 11 +12237.500001 + 21 +22132.127881 + 31 +0.0 + 0 +LINE + 5 +A87 + 8 +0 + 62 + 0 + 10 +12262.500001 + 20 +22175.429151 + 30 +0.0 + 11 +12273.799236 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A88 + 8 +0 + 62 + 0 + 10 +12225.000001 + 20 +22153.778516 + 30 +0.0 + 11 +12237.500001 + 21 +22175.429151 + 31 +0.0 + 0 +LINE + 5 +A89 + 8 +0 + 62 + 0 + 10 +12187.500001 + 20 +22132.127881 + 30 +0.0 + 11 +12200.000001 + 21 +22153.778516 + 31 +0.0 + 0 +LINE + 5 +A8A + 8 +0 + 62 + 0 + 10 +12152.611214 + 20 +22115.0 + 30 +0.0 + 11 +12162.500001 + 21 +22132.127881 + 31 +0.0 + 0 +LINE + 5 +A8B + 8 +0 + 62 + 0 + 10 +12187.500001 + 20 +22175.429151 + 30 +0.0 + 11 +12198.799236 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A8C + 8 +0 + 62 + 0 + 10 +12150.000001 + 20 +22153.778516 + 30 +0.0 + 11 +12162.500001 + 21 +22175.429151 + 31 +0.0 + 0 +LINE + 5 +A8D + 8 +0 + 62 + 0 + 10 +12112.500001 + 20 +22132.127881 + 30 +0.0 + 11 +12125.000001 + 21 +22153.778516 + 31 +0.0 + 0 +LINE + 5 +A8E + 8 +0 + 62 + 0 + 10 +12077.611215 + 20 +22115.0 + 30 +0.0 + 11 +12087.500001 + 21 +22132.127881 + 31 +0.0 + 0 +LINE + 5 +A8F + 8 +0 + 62 + 0 + 10 +12112.500001 + 20 +22175.429151 + 30 +0.0 + 11 +12123.799236 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A90 + 8 +0 + 62 + 0 + 10 +12075.000001 + 20 +22153.778516 + 30 +0.0 + 11 +12087.500001 + 21 +22175.429151 + 31 +0.0 + 0 +LINE + 5 +A91 + 8 +0 + 62 + 0 + 10 +12037.500001 + 20 +22132.127881 + 30 +0.0 + 11 +12050.000001 + 21 +22153.778516 + 31 +0.0 + 0 +LINE + 5 +A92 + 8 +0 + 62 + 0 + 10 +12002.611215 + 20 +22115.0 + 30 +0.0 + 11 +12012.500001 + 21 +22132.12788 + 31 +0.0 + 0 +LINE + 5 +A93 + 8 +0 + 62 + 0 + 10 +12037.500001 + 20 +22175.429151 + 30 +0.0 + 11 +12048.799237 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A94 + 8 +0 + 62 + 0 + 10 +12000.000001 + 20 +22153.778516 + 30 +0.0 + 11 +12012.500001 + 21 +22175.429151 + 31 +0.0 + 0 +LINE + 5 +A95 + 8 +0 + 62 + 0 + 10 +11962.500002 + 20 +22132.12788 + 30 +0.0 + 11 +11975.000002 + 21 +22153.778515 + 31 +0.0 + 0 +LINE + 5 +A96 + 8 +0 + 62 + 0 + 10 +11927.611215 + 20 +22115.0 + 30 +0.0 + 11 +11937.500002 + 21 +22132.12788 + 31 +0.0 + 0 +LINE + 5 +A97 + 8 +0 + 62 + 0 + 10 +11962.500002 + 20 +22175.429151 + 30 +0.0 + 11 +11973.799237 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A98 + 8 +0 + 62 + 0 + 10 +11925.000002 + 20 +22153.778515 + 30 +0.0 + 11 +11937.500002 + 21 +22175.42915 + 31 +0.0 + 0 +LINE + 5 +A99 + 8 +0 + 62 + 0 + 10 +11887.500002 + 20 +22132.12788 + 30 +0.0 + 11 +11900.000002 + 21 +22153.778515 + 31 +0.0 + 0 +LINE + 5 +A9A + 8 +0 + 62 + 0 + 10 +11852.611216 + 20 +22115.0 + 30 +0.0 + 11 +11862.500002 + 21 +22132.12788 + 31 +0.0 + 0 +LINE + 5 +A9B + 8 +0 + 62 + 0 + 10 +11887.500002 + 20 +22175.42915 + 30 +0.0 + 11 +11898.799237 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +A9C + 8 +0 + 62 + 0 + 10 +11850.000002 + 20 +22153.778515 + 30 +0.0 + 11 +11862.500002 + 21 +22175.42915 + 31 +0.0 + 0 +LINE + 5 +A9D + 8 +0 + 62 + 0 + 10 +11812.500002 + 20 +22132.12788 + 30 +0.0 + 11 +11825.000002 + 21 +22153.778515 + 31 +0.0 + 0 +LINE + 5 +A9E + 8 +0 + 62 + 0 + 10 +11777.611216 + 20 +22115.0 + 30 +0.0 + 11 +11787.500002 + 21 +22132.12788 + 31 +0.0 + 0 +LINE + 5 +A9F + 8 +0 + 62 + 0 + 10 +11812.500002 + 20 +22175.42915 + 30 +0.0 + 11 +11823.799238 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AA0 + 8 +0 + 62 + 0 + 10 +11775.000002 + 20 +22153.778515 + 30 +0.0 + 11 +11787.500002 + 21 +22175.42915 + 31 +0.0 + 0 +LINE + 5 +AA1 + 8 +0 + 62 + 0 + 10 +11737.500002 + 20 +22132.12788 + 30 +0.0 + 11 +11750.000002 + 21 +22153.778515 + 31 +0.0 + 0 +LINE + 5 +AA2 + 8 +0 + 62 + 0 + 10 +11702.611216 + 20 +22115.0 + 30 +0.0 + 11 +11712.500002 + 21 +22132.12788 + 31 +0.0 + 0 +LINE + 5 +AA3 + 8 +0 + 62 + 0 + 10 +11737.500002 + 20 +22175.42915 + 30 +0.0 + 11 +11748.799238 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AA4 + 8 +0 + 62 + 0 + 10 +11700.000002 + 20 +22153.778515 + 30 +0.0 + 11 +11712.500002 + 21 +22175.42915 + 31 +0.0 + 0 +LINE + 5 +AA5 + 8 +0 + 62 + 0 + 10 +11662.500003 + 20 +22132.12788 + 30 +0.0 + 11 +11675.000003 + 21 +22153.778515 + 31 +0.0 + 0 +LINE + 5 +AA6 + 8 +0 + 62 + 0 + 10 +11627.611217 + 20 +22115.0 + 30 +0.0 + 11 +11637.500003 + 21 +22132.12788 + 31 +0.0 + 0 +LINE + 5 +AA7 + 8 +0 + 62 + 0 + 10 +11662.500003 + 20 +22175.42915 + 30 +0.0 + 11 +11673.799238 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AA8 + 8 +0 + 62 + 0 + 10 +11625.000003 + 20 +22153.778515 + 30 +0.0 + 11 +11637.500003 + 21 +22175.42915 + 31 +0.0 + 0 +LINE + 5 +AA9 + 8 +0 + 62 + 0 + 10 +11587.500003 + 20 +22132.12788 + 30 +0.0 + 11 +11600.000003 + 21 +22153.778515 + 31 +0.0 + 0 +LINE + 5 +AAA + 8 +0 + 62 + 0 + 10 +11552.611217 + 20 +22115.0 + 30 +0.0 + 11 +11562.500003 + 21 +22132.12788 + 31 +0.0 + 0 +LINE + 5 +AAB + 8 +0 + 62 + 0 + 10 +11587.500003 + 20 +22175.42915 + 30 +0.0 + 11 +11598.799238 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AAC + 8 +0 + 62 + 0 + 10 +11550.000003 + 20 +22153.778515 + 30 +0.0 + 11 +11562.500003 + 21 +22175.42915 + 31 +0.0 + 0 +LINE + 5 +AAD + 8 +0 + 62 + 0 + 10 +11512.500003 + 20 +22132.12788 + 30 +0.0 + 11 +11525.000003 + 21 +22153.778515 + 31 +0.0 + 0 +LINE + 5 +AAE + 8 +0 + 62 + 0 + 10 +11477.611217 + 20 +22115.0 + 30 +0.0 + 11 +11487.500003 + 21 +22132.127879 + 31 +0.0 + 0 +LINE + 5 +AAF + 8 +0 + 62 + 0 + 10 +11512.500003 + 20 +22175.42915 + 30 +0.0 + 11 +11523.799239 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AB0 + 8 +0 + 62 + 0 + 10 +11475.000003 + 20 +22153.778515 + 30 +0.0 + 11 +11487.500003 + 21 +22175.42915 + 31 +0.0 + 0 +LINE + 5 +AB1 + 8 +0 + 62 + 0 + 10 +11437.500003 + 20 +22132.127879 + 30 +0.0 + 11 +11450.000003 + 21 +22153.778514 + 31 +0.0 + 0 +LINE + 5 +AB2 + 8 +0 + 62 + 0 + 10 +11402.611218 + 20 +22115.0 + 30 +0.0 + 11 +11412.500003 + 21 +22132.127879 + 31 +0.0 + 0 +LINE + 5 +AB3 + 8 +0 + 62 + 0 + 10 +11437.500003 + 20 +22175.42915 + 30 +0.0 + 11 +11448.799239 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AB4 + 8 +0 + 62 + 0 + 10 +11400.000003 + 20 +22153.778514 + 30 +0.0 + 11 +11412.500003 + 21 +22175.429149 + 31 +0.0 + 0 +LINE + 5 +AB5 + 8 +0 + 62 + 0 + 10 +11362.500004 + 20 +22132.127879 + 30 +0.0 + 11 +11375.000004 + 21 +22153.778514 + 31 +0.0 + 0 +LINE + 5 +AB6 + 8 +0 + 62 + 0 + 10 +11327.611218 + 20 +22115.0 + 30 +0.0 + 11 +11337.500004 + 21 +22132.127879 + 31 +0.0 + 0 +LINE + 5 +AB7 + 8 +0 + 62 + 0 + 10 +11362.500004 + 20 +22175.429149 + 30 +0.0 + 11 +11373.799239 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AB8 + 8 +0 + 62 + 0 + 10 +11325.000004 + 20 +22153.778514 + 30 +0.0 + 11 +11337.500004 + 21 +22175.429149 + 31 +0.0 + 0 +LINE + 5 +AB9 + 8 +0 + 62 + 0 + 10 +11287.500004 + 20 +22132.127879 + 30 +0.0 + 11 +11300.000004 + 21 +22153.778514 + 31 +0.0 + 0 +LINE + 5 +ABA + 8 +0 + 62 + 0 + 10 +11252.611218 + 20 +22115.0 + 30 +0.0 + 11 +11262.500004 + 21 +22132.127879 + 31 +0.0 + 0 +LINE + 5 +ABB + 8 +0 + 62 + 0 + 10 +11287.500004 + 20 +22175.429149 + 30 +0.0 + 11 +11298.79924 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +ABC + 8 +0 + 62 + 0 + 10 +11250.000004 + 20 +22153.778514 + 30 +0.0 + 11 +11262.500004 + 21 +22175.429149 + 31 +0.0 + 0 +LINE + 5 +ABD + 8 +0 + 62 + 0 + 10 +13574.999996 + 20 +22153.778519 + 30 +0.0 + 11 +13587.499996 + 21 +22175.429154 + 31 +0.0 + 0 +LINE + 5 +ABE + 8 +0 + 62 + 0 + 10 +13577.611208 + 20 +22115.0 + 30 +0.0 + 11 +13587.499996 + 21 +22132.127883 + 31 +0.0 + 0 +LINE + 5 +ABF + 8 +0 + 62 + 0 + 10 +13612.499996 + 20 +22175.429154 + 30 +0.0 + 11 +13623.79923 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AC0 + 8 +0 + 62 + 0 + 10 +13612.499996 + 20 +22132.127884 + 30 +0.0 + 11 +13624.999996 + 21 +22153.778519 + 31 +0.0 + 0 +LINE + 5 +AC1 + 8 +0 + 62 + 0 + 10 +13649.999996 + 20 +22153.778519 + 30 +0.0 + 11 +13662.499996 + 21 +22175.429154 + 31 +0.0 + 0 +LINE + 5 +AC2 + 8 +0 + 62 + 0 + 10 +13652.611208 + 20 +22115.0 + 30 +0.0 + 11 +13662.499996 + 21 +22132.127884 + 31 +0.0 + 0 +LINE + 5 +AC3 + 8 +0 + 62 + 0 + 10 +13687.499996 + 20 +22175.429154 + 30 +0.0 + 11 +13698.799229 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AC4 + 8 +0 + 62 + 0 + 10 +13687.499996 + 20 +22132.127884 + 30 +0.0 + 11 +13699.999996 + 21 +22153.778519 + 31 +0.0 + 0 +LINE + 5 +AC5 + 8 +0 + 62 + 0 + 10 +13724.999996 + 20 +22153.778519 + 30 +0.0 + 11 +13737.499996 + 21 +22175.429154 + 31 +0.0 + 0 +LINE + 5 +AC6 + 8 +0 + 62 + 0 + 10 +13727.611207 + 20 +22115.0 + 30 +0.0 + 11 +13737.499996 + 21 +22132.127884 + 31 +0.0 + 0 +LINE + 5 +AC7 + 8 +0 + 62 + 0 + 10 +13762.499996 + 20 +22175.429154 + 30 +0.0 + 11 +13773.799229 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AC8 + 8 +0 + 62 + 0 + 10 +13762.499996 + 20 +22132.127884 + 30 +0.0 + 11 +13774.999996 + 21 +22153.778519 + 31 +0.0 + 0 +LINE + 5 +AC9 + 8 +0 + 62 + 0 + 10 +13799.999996 + 20 +22153.778519 + 30 +0.0 + 11 +13812.499996 + 21 +22175.429154 + 31 +0.0 + 0 +LINE + 5 +ACA + 8 +0 + 62 + 0 + 10 +13802.611207 + 20 +22115.0 + 30 +0.0 + 11 +13812.499995 + 21 +22132.127884 + 31 +0.0 + 0 +LINE + 5 +ACB + 8 +0 + 62 + 0 + 10 +13837.499995 + 20 +22175.429154 + 30 +0.0 + 11 +13848.799229 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +ACC + 8 +0 + 62 + 0 + 10 +13837.499995 + 20 +22132.127884 + 30 +0.0 + 11 +13849.999995 + 21 +22153.778519 + 31 +0.0 + 0 +LINE + 5 +ACD + 8 +0 + 62 + 0 + 10 +13874.999995 + 20 +22153.778519 + 30 +0.0 + 11 +13887.499995 + 21 +22175.429154 + 31 +0.0 + 0 +LINE + 5 +ACE + 8 +0 + 62 + 0 + 10 +13877.611207 + 20 +22115.0 + 30 +0.0 + 11 +13887.499995 + 21 +22132.127884 + 31 +0.0 + 0 +LINE + 5 +ACF + 8 +0 + 62 + 0 + 10 +13912.499995 + 20 +22175.429154 + 30 +0.0 + 11 +13923.799228 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AD0 + 8 +0 + 62 + 0 + 10 +13912.499995 + 20 +22132.127884 + 30 +0.0 + 11 +13924.999995 + 21 +22153.778519 + 31 +0.0 + 0 +LINE + 5 +AD1 + 8 +0 + 62 + 0 + 10 +13949.999995 + 20 +22153.778519 + 30 +0.0 + 11 +13962.499995 + 21 +22175.429154 + 31 +0.0 + 0 +LINE + 5 +AD2 + 8 +0 + 62 + 0 + 10 +13952.611206 + 20 +22115.0 + 30 +0.0 + 11 +13962.499995 + 21 +22132.127884 + 31 +0.0 + 0 +LINE + 5 +AD3 + 8 +0 + 62 + 0 + 10 +13987.499995 + 20 +22175.429154 + 30 +0.0 + 11 +13998.799228 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AD4 + 8 +0 + 62 + 0 + 10 +13987.499995 + 20 +22132.127884 + 30 +0.0 + 11 +13999.999995 + 21 +22153.778519 + 31 +0.0 + 0 +LINE + 5 +AD5 + 8 +0 + 62 + 0 + 10 +14024.999995 + 20 +22153.778519 + 30 +0.0 + 11 +14037.499995 + 21 +22175.429154 + 31 +0.0 + 0 +LINE + 5 +AD6 + 8 +0 + 62 + 0 + 10 +14027.611206 + 20 +22115.0 + 30 +0.0 + 11 +14037.499995 + 21 +22132.127884 + 31 +0.0 + 0 +LINE + 5 +AD7 + 8 +0 + 62 + 0 + 10 +14062.499995 + 20 +22175.429155 + 30 +0.0 + 11 +14073.799228 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AD8 + 8 +0 + 62 + 0 + 10 +14062.499995 + 20 +22132.127884 + 30 +0.0 + 11 +14074.999995 + 21 +22153.778519 + 31 +0.0 + 0 +LINE + 5 +AD9 + 8 +0 + 62 + 0 + 10 +14099.999995 + 20 +22153.77852 + 30 +0.0 + 11 +14112.499995 + 21 +22175.429155 + 31 +0.0 + 0 +LINE + 5 +ADA + 8 +0 + 62 + 0 + 10 +14102.611206 + 20 +22115.0 + 30 +0.0 + 11 +14112.499995 + 21 +22132.127884 + 31 +0.0 + 0 +LINE + 5 +ADB + 8 +0 + 62 + 0 + 10 +14137.499995 + 20 +22175.429155 + 30 +0.0 + 11 +14148.799227 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +ADC + 8 +0 + 62 + 0 + 10 +14137.499994 + 20 +22132.127885 + 30 +0.0 + 11 +14149.999994 + 21 +22153.77852 + 31 +0.0 + 0 +LINE + 5 +ADD + 8 +0 + 62 + 0 + 10 +14174.999994 + 20 +22153.77852 + 30 +0.0 + 11 +14187.499994 + 21 +22175.429155 + 31 +0.0 + 0 +LINE + 5 +ADE + 8 +0 + 62 + 0 + 10 +14177.611205 + 20 +22115.0 + 30 +0.0 + 11 +14187.499994 + 21 +22132.127885 + 31 +0.0 + 0 +LINE + 5 +ADF + 8 +0 + 62 + 0 + 10 +14212.499994 + 20 +22175.429155 + 30 +0.0 + 11 +14223.799227 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AE0 + 8 +0 + 62 + 0 + 10 +14212.499994 + 20 +22132.127885 + 30 +0.0 + 11 +14224.999994 + 21 +22153.77852 + 31 +0.0 + 0 +LINE + 5 +AE1 + 8 +0 + 62 + 0 + 10 +14249.999994 + 20 +22153.77852 + 30 +0.0 + 11 +14262.499994 + 21 +22175.429155 + 31 +0.0 + 0 +LINE + 5 +AE2 + 8 +0 + 62 + 0 + 10 +14252.611205 + 20 +22115.0 + 30 +0.0 + 11 +14262.499994 + 21 +22132.127885 + 31 +0.0 + 0 +LINE + 5 +AE3 + 8 +0 + 62 + 0 + 10 +14287.499994 + 20 +22175.429155 + 30 +0.0 + 11 +14298.799227 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AE4 + 8 +0 + 62 + 0 + 10 +14287.499994 + 20 +22132.127885 + 30 +0.0 + 11 +14299.999994 + 21 +22153.77852 + 31 +0.0 + 0 +LINE + 5 +AE5 + 8 +0 + 62 + 0 + 10 +14324.999994 + 20 +22153.77852 + 30 +0.0 + 11 +14337.499994 + 21 +22175.429155 + 31 +0.0 + 0 +LINE + 5 +AE6 + 8 +0 + 62 + 0 + 10 +14327.611205 + 20 +22115.0 + 30 +0.0 + 11 +14337.499994 + 21 +22132.127885 + 31 +0.0 + 0 +LINE + 5 +AE7 + 8 +0 + 62 + 0 + 10 +14362.499994 + 20 +22175.429155 + 30 +0.0 + 11 +14373.799226 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AE8 + 8 +0 + 62 + 0 + 10 +14362.499994 + 20 +22132.127885 + 30 +0.0 + 11 +14374.999994 + 21 +22153.77852 + 31 +0.0 + 0 +LINE + 5 +AE9 + 8 +0 + 62 + 0 + 10 +14399.999994 + 20 +22153.77852 + 30 +0.0 + 11 +14412.499994 + 21 +22175.429155 + 31 +0.0 + 0 +LINE + 5 +AEA + 8 +0 + 62 + 0 + 10 +14402.611204 + 20 +22115.0 + 30 +0.0 + 11 +14412.499994 + 21 +22132.127885 + 31 +0.0 + 0 +LINE + 5 +AEB + 8 +0 + 62 + 0 + 10 +14437.499994 + 20 +22175.429155 + 30 +0.0 + 11 +14448.799226 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AEC + 8 +0 + 62 + 0 + 10 +14437.499993 + 20 +22132.127885 + 30 +0.0 + 11 +14449.999993 + 21 +22153.77852 + 31 +0.0 + 0 +LINE + 5 +AED + 8 +0 + 62 + 0 + 10 +14474.999993 + 20 +22153.77852 + 30 +0.0 + 11 +14487.499993 + 21 +22175.429155 + 31 +0.0 + 0 +LINE + 5 +AEE + 8 +0 + 62 + 0 + 10 +14477.611204 + 20 +22115.0 + 30 +0.0 + 11 +14487.499993 + 21 +22132.127885 + 31 +0.0 + 0 +LINE + 5 +AEF + 8 +0 + 62 + 0 + 10 +14512.499993 + 20 +22175.429155 + 30 +0.0 + 11 +14523.799226 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AF0 + 8 +0 + 62 + 0 + 10 +14512.499993 + 20 +22132.127885 + 30 +0.0 + 11 +14524.999993 + 21 +22153.77852 + 31 +0.0 + 0 +LINE + 5 +AF1 + 8 +0 + 62 + 0 + 10 +14549.999993 + 20 +22153.77852 + 30 +0.0 + 11 +14562.499993 + 21 +22175.429155 + 31 +0.0 + 0 +LINE + 5 +AF2 + 8 +0 + 62 + 0 + 10 +14552.611204 + 20 +22115.0 + 30 +0.0 + 11 +14562.499993 + 21 +22132.127885 + 31 +0.0 + 0 +LINE + 5 +AF3 + 8 +0 + 62 + 0 + 10 +14587.499993 + 20 +22175.429156 + 30 +0.0 + 11 +14598.799225 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AF4 + 8 +0 + 62 + 0 + 10 +14587.499993 + 20 +22132.127885 + 30 +0.0 + 11 +14599.999993 + 21 +22153.77852 + 31 +0.0 + 0 +LINE + 5 +AF5 + 8 +0 + 62 + 0 + 10 +14624.999993 + 20 +22153.778521 + 30 +0.0 + 11 +14637.499993 + 21 +22175.429156 + 31 +0.0 + 0 +LINE + 5 +AF6 + 8 +0 + 62 + 0 + 10 +14627.611204 + 20 +22115.0 + 30 +0.0 + 11 +14637.499993 + 21 +22132.127885 + 31 +0.0 + 0 +LINE + 5 +AF7 + 8 +0 + 62 + 0 + 10 +14662.499993 + 20 +22175.429156 + 30 +0.0 + 11 +14673.799225 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AF8 + 8 +0 + 62 + 0 + 10 +14662.499993 + 20 +22132.127886 + 30 +0.0 + 11 +14674.999993 + 21 +22153.778521 + 31 +0.0 + 0 +LINE + 5 +AF9 + 8 +0 + 62 + 0 + 10 +14699.999993 + 20 +22153.778521 + 30 +0.0 + 11 +14712.499993 + 21 +22175.429156 + 31 +0.0 + 0 +LINE + 5 +AFA + 8 +0 + 62 + 0 + 10 +14702.611203 + 20 +22115.0 + 30 +0.0 + 11 +14712.499993 + 21 +22132.127886 + 31 +0.0 + 0 +LINE + 5 +AFB + 8 +0 + 62 + 0 + 10 +14737.499993 + 20 +22175.429156 + 30 +0.0 + 11 +14748.799225 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +AFC + 8 +0 + 62 + 0 + 10 +14737.499992 + 20 +22132.127886 + 30 +0.0 + 11 +14749.999992 + 21 +22153.778521 + 31 +0.0 + 0 +LINE + 5 +AFD + 8 +0 + 62 + 0 + 10 +14774.999992 + 20 +22153.778521 + 30 +0.0 + 11 +14787.499992 + 21 +22175.429156 + 31 +0.0 + 0 +LINE + 5 +AFE + 8 +0 + 62 + 0 + 10 +14777.611203 + 20 +22115.0 + 30 +0.0 + 11 +14787.499992 + 21 +22132.127886 + 31 +0.0 + 0 +LINE + 5 +AFF + 8 +0 + 62 + 0 + 10 +14812.499992 + 20 +22175.429156 + 30 +0.0 + 11 +14823.799224 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B00 + 8 +0 + 62 + 0 + 10 +14812.499992 + 20 +22132.127886 + 30 +0.0 + 11 +14824.999992 + 21 +22153.778521 + 31 +0.0 + 0 +LINE + 5 +B01 + 8 +0 + 62 + 0 + 10 +14849.999992 + 20 +22153.778521 + 30 +0.0 + 11 +14862.499992 + 21 +22175.429156 + 31 +0.0 + 0 +LINE + 5 +B02 + 8 +0 + 62 + 0 + 10 +14852.611203 + 20 +22115.0 + 30 +0.0 + 11 +14862.499992 + 21 +22132.127886 + 31 +0.0 + 0 +LINE + 5 +B03 + 8 +0 + 62 + 0 + 10 +14887.499992 + 20 +22175.429156 + 30 +0.0 + 11 +14898.799224 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B04 + 8 +0 + 62 + 0 + 10 +14887.499992 + 20 +22132.127886 + 30 +0.0 + 11 +14899.999992 + 21 +22153.778521 + 31 +0.0 + 0 +LINE + 5 +B05 + 8 +0 + 62 + 0 + 10 +14924.999992 + 20 +22153.778521 + 30 +0.0 + 11 +14937.499992 + 21 +22175.429156 + 31 +0.0 + 0 +LINE + 5 +B06 + 8 +0 + 62 + 0 + 10 +14927.611202 + 20 +22115.0 + 30 +0.0 + 11 +14937.499992 + 21 +22132.127886 + 31 +0.0 + 0 +LINE + 5 +B07 + 8 +0 + 62 + 0 + 10 +14962.499992 + 20 +22175.429156 + 30 +0.0 + 11 +14973.799224 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B08 + 8 +0 + 62 + 0 + 10 +14962.499992 + 20 +22132.127886 + 30 +0.0 + 11 +14974.999992 + 21 +22153.778521 + 31 +0.0 + 0 +LINE + 5 +B09 + 8 +0 + 62 + 0 + 10 +14999.999992 + 20 +22153.778521 + 30 +0.0 + 11 +15012.499992 + 21 +22175.429156 + 31 +0.0 + 0 +LINE + 5 +B0A + 8 +0 + 62 + 0 + 10 +15002.611202 + 20 +22115.0 + 30 +0.0 + 11 +15012.499992 + 21 +22132.127886 + 31 +0.0 + 0 +LINE + 5 +B0B + 8 +0 + 62 + 0 + 10 +15037.499992 + 20 +22175.429156 + 30 +0.0 + 11 +15048.799223 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B0C + 8 +0 + 62 + 0 + 10 +15037.499991 + 20 +22132.127886 + 30 +0.0 + 11 +15049.999991 + 21 +22153.778521 + 31 +0.0 + 0 +LINE + 5 +B0D + 8 +0 + 62 + 0 + 10 +15074.999991 + 20 +22153.778521 + 30 +0.0 + 11 +15087.499991 + 21 +22175.429156 + 31 +0.0 + 0 +LINE + 5 +B0E + 8 +0 + 62 + 0 + 10 +15077.611202 + 20 +22115.0 + 30 +0.0 + 11 +15087.499991 + 21 +22132.127886 + 31 +0.0 + 0 +LINE + 5 +B0F + 8 +0 + 62 + 0 + 10 +15112.499991 + 20 +22175.429156 + 30 +0.0 + 11 +15123.799223 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B10 + 8 +0 + 62 + 0 + 10 +15112.499991 + 20 +22132.127886 + 30 +0.0 + 11 +15124.999991 + 21 +22153.778521 + 31 +0.0 + 0 +LINE + 5 +B11 + 8 +0 + 62 + 0 + 10 +15149.999991 + 20 +22153.778521 + 30 +0.0 + 11 +15162.499991 + 21 +22175.429157 + 31 +0.0 + 0 +LINE + 5 +B12 + 8 +0 + 62 + 0 + 10 +15152.611201 + 20 +22115.0 + 30 +0.0 + 11 +15162.499991 + 21 +22132.127886 + 31 +0.0 + 0 +LINE + 5 +B13 + 8 +0 + 62 + 0 + 10 +15187.499991 + 20 +22175.429157 + 30 +0.0 + 11 +15198.799223 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B14 + 8 +0 + 62 + 0 + 10 +15187.499991 + 20 +22132.127886 + 30 +0.0 + 11 +15199.999991 + 21 +22153.778522 + 31 +0.0 + 0 +LINE + 5 +B15 + 8 +0 + 62 + 0 + 10 +15224.999991 + 20 +22153.778522 + 30 +0.0 + 11 +15237.499991 + 21 +22175.429157 + 31 +0.0 + 0 +LINE + 5 +B16 + 8 +0 + 62 + 0 + 10 +15227.611201 + 20 +22115.0 + 30 +0.0 + 11 +15237.499991 + 21 +22132.127887 + 31 +0.0 + 0 +LINE + 5 +B17 + 8 +0 + 62 + 0 + 10 +15262.499991 + 20 +22175.429157 + 30 +0.0 + 11 +15273.799222 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B18 + 8 +0 + 62 + 0 + 10 +15262.499991 + 20 +22132.127887 + 30 +0.0 + 11 +15274.999991 + 21 +22153.778522 + 31 +0.0 + 0 +LINE + 5 +B19 + 8 +0 + 62 + 0 + 10 +15299.999991 + 20 +22153.778522 + 30 +0.0 + 11 +15312.499991 + 21 +22175.429157 + 31 +0.0 + 0 +LINE + 5 +B1A + 8 +0 + 62 + 0 + 10 +15302.611201 + 20 +22115.0 + 30 +0.0 + 11 +15312.499991 + 21 +22132.127887 + 31 +0.0 + 0 +LINE + 5 +B1B + 8 +0 + 62 + 0 + 10 +15337.499991 + 20 +22175.429157 + 30 +0.0 + 11 +15348.799222 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B1C + 8 +0 + 62 + 0 + 10 +15337.49999 + 20 +22132.127887 + 30 +0.0 + 11 +15349.99999 + 21 +22153.778522 + 31 +0.0 + 0 +LINE + 5 +B1D + 8 +0 + 62 + 0 + 10 +15374.99999 + 20 +22153.778522 + 30 +0.0 + 11 +15387.49999 + 21 +22175.429157 + 31 +0.0 + 0 +LINE + 5 +B1E + 8 +0 + 62 + 0 + 10 +15377.6112 + 20 +22115.0 + 30 +0.0 + 11 +15387.49999 + 21 +22132.127887 + 31 +0.0 + 0 +LINE + 5 +B1F + 8 +0 + 62 + 0 + 10 +15412.49999 + 20 +22175.429157 + 30 +0.0 + 11 +15423.799222 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B20 + 8 +0 + 62 + 0 + 10 +15412.49999 + 20 +22132.127887 + 30 +0.0 + 11 +15424.99999 + 21 +22153.778522 + 31 +0.0 + 0 +LINE + 5 +B21 + 8 +0 + 62 + 0 + 10 +15449.99999 + 20 +22153.778522 + 30 +0.0 + 11 +15462.49999 + 21 +22175.429157 + 31 +0.0 + 0 +LINE + 5 +B22 + 8 +0 + 62 + 0 + 10 +15452.6112 + 20 +22115.0 + 30 +0.0 + 11 +15462.49999 + 21 +22132.127887 + 31 +0.0 + 0 +LINE + 5 +B23 + 8 +0 + 62 + 0 + 10 +15487.49999 + 20 +22175.429157 + 30 +0.0 + 11 +15498.799221 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B24 + 8 +0 + 62 + 0 + 10 +15487.49999 + 20 +22132.127887 + 30 +0.0 + 11 +15499.99999 + 21 +22153.778522 + 31 +0.0 + 0 +LINE + 5 +B25 + 8 +0 + 62 + 0 + 10 +15524.99999 + 20 +22153.778522 + 30 +0.0 + 11 +15537.49999 + 21 +22175.429157 + 31 +0.0 + 0 +LINE + 5 +B26 + 8 +0 + 62 + 0 + 10 +15527.6112 + 20 +22115.0 + 30 +0.0 + 11 +15537.49999 + 21 +22132.127887 + 31 +0.0 + 0 +LINE + 5 +B27 + 8 +0 + 62 + 0 + 10 +15562.49999 + 20 +22175.429157 + 30 +0.0 + 11 +15573.799221 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B28 + 8 +0 + 62 + 0 + 10 +15562.49999 + 20 +22132.127887 + 30 +0.0 + 11 +15574.99999 + 21 +22153.778522 + 31 +0.0 + 0 +LINE + 5 +B29 + 8 +0 + 62 + 0 + 10 +15599.99999 + 20 +22153.778522 + 30 +0.0 + 11 +15612.49999 + 21 +22175.429157 + 31 +0.0 + 0 +LINE + 5 +B2A + 8 +0 + 62 + 0 + 10 +15602.611199 + 20 +22115.0 + 30 +0.0 + 11 +15612.49999 + 21 +22132.127887 + 31 +0.0 + 0 +LINE + 5 +B2B + 8 +0 + 62 + 0 + 10 +15637.49999 + 20 +22175.429157 + 30 +0.0 + 11 +15648.799221 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B2C + 8 +0 + 62 + 0 + 10 +15637.49999 + 20 +22132.127887 + 30 +0.0 + 11 +15649.99999 + 21 +22153.778522 + 31 +0.0 + 0 +LINE + 5 +B2D + 8 +0 + 62 + 0 + 10 +15674.999989 + 20 +22153.778522 + 30 +0.0 + 11 +15687.499989 + 21 +22175.429158 + 31 +0.0 + 0 +LINE + 5 +B2E + 8 +0 + 62 + 0 + 10 +15677.611199 + 20 +22115.0 + 30 +0.0 + 11 +15687.499989 + 21 +22132.127887 + 31 +0.0 + 0 +LINE + 5 +B2F + 8 +0 + 62 + 0 + 10 +15712.499989 + 20 +22175.429158 + 30 +0.0 + 11 +15723.79922 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B30 + 8 +0 + 62 + 0 + 10 +15712.499989 + 20 +22132.127887 + 30 +0.0 + 11 +15724.999989 + 21 +22153.778523 + 31 +0.0 + 0 +LINE + 5 +B31 + 8 +0 + 62 + 0 + 10 +15749.999989 + 20 +22153.778523 + 30 +0.0 + 11 +15762.499989 + 21 +22175.429158 + 31 +0.0 + 0 +LINE + 5 +B32 + 8 +0 + 62 + 0 + 10 +15752.611199 + 20 +22115.0 + 30 +0.0 + 11 +15762.499989 + 21 +22132.127888 + 31 +0.0 + 0 +LINE + 5 +B33 + 8 +0 + 62 + 0 + 10 +15787.499989 + 20 +22175.429158 + 30 +0.0 + 11 +15798.79922 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B34 + 8 +0 + 62 + 0 + 10 +15787.499989 + 20 +22132.127888 + 30 +0.0 + 11 +15799.999989 + 21 +22153.778523 + 31 +0.0 + 0 +LINE + 5 +B35 + 8 +0 + 62 + 0 + 10 +15824.999989 + 20 +22153.778523 + 30 +0.0 + 11 +15837.499989 + 21 +22175.429158 + 31 +0.0 + 0 +LINE + 5 +B36 + 8 +0 + 62 + 0 + 10 +15827.611198 + 20 +22115.0 + 30 +0.0 + 11 +15837.499989 + 21 +22132.127888 + 31 +0.0 + 0 +LINE + 5 +B37 + 8 +0 + 62 + 0 + 10 +15862.499989 + 20 +22175.429158 + 30 +0.0 + 11 +15873.79922 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B38 + 8 +0 + 62 + 0 + 10 +15862.499989 + 20 +22132.127888 + 30 +0.0 + 11 +15874.999989 + 21 +22153.778523 + 31 +0.0 + 0 +ENDBLK + 5 +B39 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X42 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X42 + 1 + + 0 +LINE + 5 +B3B + 8 +0 + 62 + 0 + 10 +16863.75 + 20 +22153.77846 + 30 +0.0 + 11 +16875.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B3C + 8 +0 + 62 + 0 + 10 +16925.0 + 20 +22153.77846 + 30 +0.0 + 11 +16950.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B3D + 8 +0 + 62 + 0 + 10 +17000.0 + 20 +22153.77846 + 30 +0.0 + 11 +17025.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B3E + 8 +0 + 62 + 0 + 10 +17075.0 + 20 +22153.77846 + 30 +0.0 + 11 +17100.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B3F + 8 +0 + 62 + 0 + 10 +17150.0 + 20 +22153.77846 + 30 +0.0 + 11 +17175.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B40 + 8 +0 + 62 + 0 + 10 +17225.0 + 20 +22153.77846 + 30 +0.0 + 11 +17250.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B41 + 8 +0 + 62 + 0 + 10 +17300.0 + 20 +22153.77846 + 30 +0.0 + 11 +17325.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B42 + 8 +0 + 62 + 0 + 10 +17375.0 + 20 +22153.77846 + 30 +0.0 + 11 +17400.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B43 + 8 +0 + 62 + 0 + 10 +17450.0 + 20 +22153.77846 + 30 +0.0 + 11 +17475.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B44 + 8 +0 + 62 + 0 + 10 +17525.0 + 20 +22153.77846 + 30 +0.0 + 11 +17550.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B45 + 8 +0 + 62 + 0 + 10 +17600.0 + 20 +22153.77846 + 30 +0.0 + 11 +17625.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B46 + 8 +0 + 62 + 0 + 10 +17675.0 + 20 +22153.77846 + 30 +0.0 + 11 +17700.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B47 + 8 +0 + 62 + 0 + 10 +17750.0 + 20 +22153.77846 + 30 +0.0 + 11 +17775.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B48 + 8 +0 + 62 + 0 + 10 +17825.0 + 20 +22153.77846 + 30 +0.0 + 11 +17850.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B49 + 8 +0 + 62 + 0 + 10 +17900.0 + 20 +22153.77846 + 30 +0.0 + 11 +17925.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B4A + 8 +0 + 62 + 0 + 10 +17975.0 + 20 +22153.77846 + 30 +0.0 + 11 +18000.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B4B + 8 +0 + 62 + 0 + 10 +18050.0 + 20 +22153.77846 + 30 +0.0 + 11 +18075.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B4C + 8 +0 + 62 + 0 + 10 +18125.0 + 20 +22153.77846 + 30 +0.0 + 11 +18150.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B4D + 8 +0 + 62 + 0 + 10 +18200.0 + 20 +22153.77846 + 30 +0.0 + 11 +18225.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B4E + 8 +0 + 62 + 0 + 10 +18275.0 + 20 +22153.77846 + 30 +0.0 + 11 +18300.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B4F + 8 +0 + 62 + 0 + 10 +18350.0 + 20 +22153.77846 + 30 +0.0 + 11 +18375.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B50 + 8 +0 + 62 + 0 + 10 +18425.0 + 20 +22153.77846 + 30 +0.0 + 11 +18450.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B51 + 8 +0 + 62 + 0 + 10 +18500.0 + 20 +22153.77846 + 30 +0.0 + 11 +18525.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B52 + 8 +0 + 62 + 0 + 10 +18575.0 + 20 +22153.77846 + 30 +0.0 + 11 +18600.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B53 + 8 +0 + 62 + 0 + 10 +18650.0 + 20 +22153.77846 + 30 +0.0 + 11 +18675.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B54 + 8 +0 + 62 + 0 + 10 +18725.0 + 20 +22153.77846 + 30 +0.0 + 11 +18750.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +B55 + 8 +0 + 62 + 0 + 10 +16887.5 + 20 +22175.429095 + 30 +0.0 + 11 +16912.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B56 + 8 +0 + 62 + 0 + 10 +16962.5 + 20 +22175.429095 + 30 +0.0 + 11 +16987.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B57 + 8 +0 + 62 + 0 + 10 +17037.5 + 20 +22175.429095 + 30 +0.0 + 11 +17062.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B58 + 8 +0 + 62 + 0 + 10 +17112.5 + 20 +22175.429095 + 30 +0.0 + 11 +17137.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B59 + 8 +0 + 62 + 0 + 10 +17187.5 + 20 +22175.429095 + 30 +0.0 + 11 +17212.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B5A + 8 +0 + 62 + 0 + 10 +17262.5 + 20 +22175.429095 + 30 +0.0 + 11 +17287.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B5B + 8 +0 + 62 + 0 + 10 +17337.5 + 20 +22175.429095 + 30 +0.0 + 11 +17362.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B5C + 8 +0 + 62 + 0 + 10 +17412.5 + 20 +22175.429095 + 30 +0.0 + 11 +17437.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B5D + 8 +0 + 62 + 0 + 10 +17487.5 + 20 +22175.429095 + 30 +0.0 + 11 +17512.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B5E + 8 +0 + 62 + 0 + 10 +17562.5 + 20 +22175.429095 + 30 +0.0 + 11 +17587.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B5F + 8 +0 + 62 + 0 + 10 +17637.5 + 20 +22175.429095 + 30 +0.0 + 11 +17662.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B60 + 8 +0 + 62 + 0 + 10 +17712.5 + 20 +22175.429095 + 30 +0.0 + 11 +17737.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B61 + 8 +0 + 62 + 0 + 10 +17787.5 + 20 +22175.429095 + 30 +0.0 + 11 +17812.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B62 + 8 +0 + 62 + 0 + 10 +17862.5 + 20 +22175.429095 + 30 +0.0 + 11 +17887.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B63 + 8 +0 + 62 + 0 + 10 +17937.5 + 20 +22175.429095 + 30 +0.0 + 11 +17962.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B64 + 8 +0 + 62 + 0 + 10 +18012.5 + 20 +22175.429095 + 30 +0.0 + 11 +18037.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B65 + 8 +0 + 62 + 0 + 10 +18087.5 + 20 +22175.429095 + 30 +0.0 + 11 +18112.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B66 + 8 +0 + 62 + 0 + 10 +18162.5 + 20 +22175.429095 + 30 +0.0 + 11 +18187.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B67 + 8 +0 + 62 + 0 + 10 +18237.5 + 20 +22175.429095 + 30 +0.0 + 11 +18262.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B68 + 8 +0 + 62 + 0 + 10 +18312.5 + 20 +22175.429095 + 30 +0.0 + 11 +18337.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B69 + 8 +0 + 62 + 0 + 10 +18387.5 + 20 +22175.429095 + 30 +0.0 + 11 +18412.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B6A + 8 +0 + 62 + 0 + 10 +18462.5 + 20 +22175.429095 + 30 +0.0 + 11 +18487.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B6B + 8 +0 + 62 + 0 + 10 +18537.5 + 20 +22175.429095 + 30 +0.0 + 11 +18562.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B6C + 8 +0 + 62 + 0 + 10 +18612.5 + 20 +22175.429095 + 30 +0.0 + 11 +18637.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B6D + 8 +0 + 62 + 0 + 10 +18687.5 + 20 +22175.429095 + 30 +0.0 + 11 +18712.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +B6E + 8 +0 + 62 + 0 + 10 +16887.5 + 20 +22132.127825 + 30 +0.0 + 11 +16912.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B6F + 8 +0 + 62 + 0 + 10 +16962.5 + 20 +22132.127825 + 30 +0.0 + 11 +16987.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B70 + 8 +0 + 62 + 0 + 10 +17037.5 + 20 +22132.127825 + 30 +0.0 + 11 +17062.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B71 + 8 +0 + 62 + 0 + 10 +17112.5 + 20 +22132.127825 + 30 +0.0 + 11 +17137.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B72 + 8 +0 + 62 + 0 + 10 +17187.5 + 20 +22132.127825 + 30 +0.0 + 11 +17212.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B73 + 8 +0 + 62 + 0 + 10 +17262.5 + 20 +22132.127825 + 30 +0.0 + 11 +17287.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B74 + 8 +0 + 62 + 0 + 10 +17337.5 + 20 +22132.127825 + 30 +0.0 + 11 +17362.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B75 + 8 +0 + 62 + 0 + 10 +17412.5 + 20 +22132.127825 + 30 +0.0 + 11 +17437.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B76 + 8 +0 + 62 + 0 + 10 +17487.5 + 20 +22132.127825 + 30 +0.0 + 11 +17512.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B77 + 8 +0 + 62 + 0 + 10 +17562.5 + 20 +22132.127825 + 30 +0.0 + 11 +17587.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B78 + 8 +0 + 62 + 0 + 10 +17637.5 + 20 +22132.127825 + 30 +0.0 + 11 +17662.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B79 + 8 +0 + 62 + 0 + 10 +17712.5 + 20 +22132.127825 + 30 +0.0 + 11 +17737.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B7A + 8 +0 + 62 + 0 + 10 +17787.5 + 20 +22132.127825 + 30 +0.0 + 11 +17812.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B7B + 8 +0 + 62 + 0 + 10 +17862.5 + 20 +22132.127825 + 30 +0.0 + 11 +17887.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B7C + 8 +0 + 62 + 0 + 10 +17937.5 + 20 +22132.127825 + 30 +0.0 + 11 +17962.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B7D + 8 +0 + 62 + 0 + 10 +18012.5 + 20 +22132.127825 + 30 +0.0 + 11 +18037.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B7E + 8 +0 + 62 + 0 + 10 +18087.5 + 20 +22132.127825 + 30 +0.0 + 11 +18112.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B7F + 8 +0 + 62 + 0 + 10 +18162.5 + 20 +22132.127825 + 30 +0.0 + 11 +18187.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B80 + 8 +0 + 62 + 0 + 10 +18237.5 + 20 +22132.127825 + 30 +0.0 + 11 +18262.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B81 + 8 +0 + 62 + 0 + 10 +18312.5 + 20 +22132.127825 + 30 +0.0 + 11 +18337.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B82 + 8 +0 + 62 + 0 + 10 +18387.5 + 20 +22132.127825 + 30 +0.0 + 11 +18412.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B83 + 8 +0 + 62 + 0 + 10 +18462.5 + 20 +22132.127825 + 30 +0.0 + 11 +18487.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B84 + 8 +0 + 62 + 0 + 10 +18537.5 + 20 +22132.127825 + 30 +0.0 + 11 +18562.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B85 + 8 +0 + 62 + 0 + 10 +18612.5 + 20 +22132.127825 + 30 +0.0 + 11 +18637.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B86 + 8 +0 + 62 + 0 + 10 +18687.5 + 20 +22132.127825 + 30 +0.0 + 11 +18712.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +B87 + 8 +0 + 62 + 0 + 10 +17822.388698 + 20 +22115.0 + 30 +0.0 + 11 +17812.499934 + 21 +22132.127843 + 31 +0.0 + 0 +LINE + 5 +B88 + 8 +0 + 62 + 0 + 10 +17787.499934 + 20 +22175.429113 + 30 +0.0 + 11 +17776.200677 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B89 + 8 +0 + 62 + 0 + 10 +17787.499934 + 20 +22132.127843 + 30 +0.0 + 11 +17774.999934 + 21 +22153.778478 + 31 +0.0 + 0 +LINE + 5 +B8A + 8 +0 + 62 + 0 + 10 +17749.999934 + 20 +22153.778478 + 30 +0.0 + 11 +17737.499934 + 21 +22175.429113 + 31 +0.0 + 0 +LINE + 5 +B8B + 8 +0 + 62 + 0 + 10 +17747.388699 + 20 +22115.0 + 30 +0.0 + 11 +17737.499934 + 21 +22132.127843 + 31 +0.0 + 0 +LINE + 5 +B8C + 8 +0 + 62 + 0 + 10 +17712.499934 + 20 +22175.429113 + 30 +0.0 + 11 +17701.200677 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B8D + 8 +0 + 62 + 0 + 10 +17712.499934 + 20 +22132.127843 + 30 +0.0 + 11 +17699.999934 + 21 +22153.778478 + 31 +0.0 + 0 +LINE + 5 +B8E + 8 +0 + 62 + 0 + 10 +17674.999934 + 20 +22153.778478 + 30 +0.0 + 11 +17662.499934 + 21 +22175.429113 + 31 +0.0 + 0 +LINE + 5 +B8F + 8 +0 + 62 + 0 + 10 +17672.388699 + 20 +22115.0 + 30 +0.0 + 11 +17662.499934 + 21 +22132.127843 + 31 +0.0 + 0 +LINE + 5 +B90 + 8 +0 + 62 + 0 + 10 +17637.499934 + 20 +22175.429113 + 30 +0.0 + 11 +17626.200678 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B91 + 8 +0 + 62 + 0 + 10 +17637.499934 + 20 +22132.127843 + 30 +0.0 + 11 +17624.999934 + 21 +22153.778478 + 31 +0.0 + 0 +LINE + 5 +B92 + 8 +0 + 62 + 0 + 10 +17599.999934 + 20 +22153.778478 + 30 +0.0 + 11 +17587.499934 + 21 +22175.429114 + 31 +0.0 + 0 +LINE + 5 +B93 + 8 +0 + 62 + 0 + 10 +17597.388699 + 20 +22115.0 + 30 +0.0 + 11 +17587.499934 + 21 +22132.127843 + 31 +0.0 + 0 +LINE + 5 +B94 + 8 +0 + 62 + 0 + 10 +17562.499934 + 20 +22175.429114 + 30 +0.0 + 11 +17551.200678 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B95 + 8 +0 + 62 + 0 + 10 +17562.499934 + 20 +22132.127843 + 30 +0.0 + 11 +17549.999934 + 21 +22153.778479 + 31 +0.0 + 0 +LINE + 5 +B96 + 8 +0 + 62 + 0 + 10 +17524.999935 + 20 +22153.778479 + 30 +0.0 + 11 +17512.499935 + 21 +22175.429114 + 31 +0.0 + 0 +LINE + 5 +B97 + 8 +0 + 62 + 0 + 10 +17522.3887 + 20 +22115.0 + 30 +0.0 + 11 +17512.499935 + 21 +22132.127844 + 31 +0.0 + 0 +LINE + 5 +B98 + 8 +0 + 62 + 0 + 10 +17487.499935 + 20 +22175.429114 + 30 +0.0 + 11 +17476.200678 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B99 + 8 +0 + 62 + 0 + 10 +17487.499935 + 20 +22132.127844 + 30 +0.0 + 11 +17474.999935 + 21 +22153.778479 + 31 +0.0 + 0 +LINE + 5 +B9A + 8 +0 + 62 + 0 + 10 +17449.999935 + 20 +22153.778479 + 30 +0.0 + 11 +17437.499935 + 21 +22175.429114 + 31 +0.0 + 0 +LINE + 5 +B9B + 8 +0 + 62 + 0 + 10 +17447.3887 + 20 +22115.0 + 30 +0.0 + 11 +17437.499935 + 21 +22132.127844 + 31 +0.0 + 0 +LINE + 5 +B9C + 8 +0 + 62 + 0 + 10 +17412.499935 + 20 +22175.429114 + 30 +0.0 + 11 +17401.200678 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +B9D + 8 +0 + 62 + 0 + 10 +17412.499935 + 20 +22132.127844 + 30 +0.0 + 11 +17399.999935 + 21 +22153.778479 + 31 +0.0 + 0 +LINE + 5 +B9E + 8 +0 + 62 + 0 + 10 +17374.999935 + 20 +22153.778479 + 30 +0.0 + 11 +17362.499935 + 21 +22175.429114 + 31 +0.0 + 0 +LINE + 5 +B9F + 8 +0 + 62 + 0 + 10 +17372.3887 + 20 +22115.0 + 30 +0.0 + 11 +17362.499935 + 21 +22132.127844 + 31 +0.0 + 0 +LINE + 5 +BA0 + 8 +0 + 62 + 0 + 10 +17337.499935 + 20 +22175.429114 + 30 +0.0 + 11 +17326.200679 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BA1 + 8 +0 + 62 + 0 + 10 +17337.499935 + 20 +22132.127844 + 30 +0.0 + 11 +17324.999935 + 21 +22153.778479 + 31 +0.0 + 0 +LINE + 5 +BA2 + 8 +0 + 62 + 0 + 10 +17299.999935 + 20 +22153.778479 + 30 +0.0 + 11 +17287.499935 + 21 +22175.429114 + 31 +0.0 + 0 +LINE + 5 +BA3 + 8 +0 + 62 + 0 + 10 +17297.388701 + 20 +22115.0 + 30 +0.0 + 11 +17287.499935 + 21 +22132.127844 + 31 +0.0 + 0 +LINE + 5 +BA4 + 8 +0 + 62 + 0 + 10 +17262.499935 + 20 +22175.429114 + 30 +0.0 + 11 +17251.200679 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BA5 + 8 +0 + 62 + 0 + 10 +17262.499935 + 20 +22132.127844 + 30 +0.0 + 11 +17249.999935 + 21 +22153.778479 + 31 +0.0 + 0 +LINE + 5 +BA6 + 8 +0 + 62 + 0 + 10 +17224.999936 + 20 +22153.778479 + 30 +0.0 + 11 +17212.499936 + 21 +22175.429114 + 31 +0.0 + 0 +LINE + 5 +BA7 + 8 +0 + 62 + 0 + 10 +17222.388701 + 20 +22115.0 + 30 +0.0 + 11 +17212.499936 + 21 +22132.127844 + 31 +0.0 + 0 +LINE + 5 +BA8 + 8 +0 + 62 + 0 + 10 +17187.499936 + 20 +22175.429114 + 30 +0.0 + 11 +17176.200679 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BA9 + 8 +0 + 62 + 0 + 10 +17187.499936 + 20 +22132.127844 + 30 +0.0 + 11 +17174.999936 + 21 +22153.778479 + 31 +0.0 + 0 +LINE + 5 +BAA + 8 +0 + 62 + 0 + 10 +17149.999936 + 20 +22153.778479 + 30 +0.0 + 11 +17137.499936 + 21 +22175.429114 + 31 +0.0 + 0 +LINE + 5 +BAB + 8 +0 + 62 + 0 + 10 +17147.388701 + 20 +22115.0 + 30 +0.0 + 11 +17137.499936 + 21 +22132.127844 + 31 +0.0 + 0 +LINE + 5 +BAC + 8 +0 + 62 + 0 + 10 +17112.499936 + 20 +22175.429114 + 30 +0.0 + 11 +17101.20068 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BAD + 8 +0 + 62 + 0 + 10 +17112.499936 + 20 +22132.127844 + 30 +0.0 + 11 +17099.999936 + 21 +22153.778479 + 31 +0.0 + 0 +LINE + 5 +BAE + 8 +0 + 62 + 0 + 10 +17074.999936 + 20 +22153.778479 + 30 +0.0 + 11 +17062.499936 + 21 +22175.429115 + 31 +0.0 + 0 +LINE + 5 +BAF + 8 +0 + 62 + 0 + 10 +17072.388702 + 20 +22115.0 + 30 +0.0 + 11 +17062.499936 + 21 +22132.127844 + 31 +0.0 + 0 +LINE + 5 +BB0 + 8 +0 + 62 + 0 + 10 +17037.499936 + 20 +22175.429115 + 30 +0.0 + 11 +17026.20068 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BB1 + 8 +0 + 62 + 0 + 10 +17037.499936 + 20 +22132.127844 + 30 +0.0 + 11 +17024.999936 + 21 +22153.77848 + 31 +0.0 + 0 +LINE + 5 +BB2 + 8 +0 + 62 + 0 + 10 +16999.999936 + 20 +22153.77848 + 30 +0.0 + 11 +16987.499936 + 21 +22175.429115 + 31 +0.0 + 0 +LINE + 5 +BB3 + 8 +0 + 62 + 0 + 10 +16997.388702 + 20 +22115.0 + 30 +0.0 + 11 +16987.499936 + 21 +22132.127845 + 31 +0.0 + 0 +LINE + 5 +BB4 + 8 +0 + 62 + 0 + 10 +16962.499936 + 20 +22175.429115 + 30 +0.0 + 11 +16951.20068 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BB5 + 8 +0 + 62 + 0 + 10 +16962.499936 + 20 +22132.127845 + 30 +0.0 + 11 +16949.999936 + 21 +22153.77848 + 31 +0.0 + 0 +LINE + 5 +BB6 + 8 +0 + 62 + 0 + 10 +16924.999937 + 20 +22153.77848 + 30 +0.0 + 11 +16912.499937 + 21 +22175.429115 + 31 +0.0 + 0 +LINE + 5 +BB7 + 8 +0 + 62 + 0 + 10 +16922.388702 + 20 +22115.0 + 30 +0.0 + 11 +16912.499937 + 21 +22132.127845 + 31 +0.0 + 0 +LINE + 5 +BB8 + 8 +0 + 62 + 0 + 10 +16887.499937 + 20 +22175.429115 + 30 +0.0 + 11 +16876.200681 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BB9 + 8 +0 + 62 + 0 + 10 +16887.499937 + 20 +22132.127845 + 30 +0.0 + 11 +16874.999937 + 21 +22153.77848 + 31 +0.0 + 0 +LINE + 5 +BBA + 8 +0 + 62 + 0 + 10 +17824.999934 + 20 +22153.778478 + 30 +0.0 + 11 +17812.499934 + 21 +22175.429113 + 31 +0.0 + 0 +LINE + 5 +BBB + 8 +0 + 62 + 0 + 10 +17862.499933 + 20 +22132.127843 + 30 +0.0 + 11 +17849.999933 + 21 +22153.778478 + 31 +0.0 + 0 +LINE + 5 +BBC + 8 +0 + 62 + 0 + 10 +17897.388698 + 20 +22115.0 + 30 +0.0 + 11 +17887.499933 + 21 +22132.127843 + 31 +0.0 + 0 +LINE + 5 +BBD + 8 +0 + 62 + 0 + 10 +17862.499933 + 20 +22175.429113 + 30 +0.0 + 11 +17851.200677 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BBE + 8 +0 + 62 + 0 + 10 +17899.999933 + 20 +22153.778478 + 30 +0.0 + 11 +17887.499933 + 21 +22175.429113 + 31 +0.0 + 0 +LINE + 5 +BBF + 8 +0 + 62 + 0 + 10 +17937.499933 + 20 +22132.127843 + 30 +0.0 + 11 +17924.999933 + 21 +22153.778478 + 31 +0.0 + 0 +LINE + 5 +BC0 + 8 +0 + 62 + 0 + 10 +17972.388698 + 20 +22115.0 + 30 +0.0 + 11 +17962.499933 + 21 +22132.127843 + 31 +0.0 + 0 +LINE + 5 +BC1 + 8 +0 + 62 + 0 + 10 +17937.499933 + 20 +22175.429113 + 30 +0.0 + 11 +17926.200676 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BC2 + 8 +0 + 62 + 0 + 10 +17974.999933 + 20 +22153.778478 + 30 +0.0 + 11 +17962.499933 + 21 +22175.429113 + 31 +0.0 + 0 +LINE + 5 +BC3 + 8 +0 + 62 + 0 + 10 +18012.499933 + 20 +22132.127843 + 30 +0.0 + 11 +17999.999933 + 21 +22153.778478 + 31 +0.0 + 0 +LINE + 5 +BC4 + 8 +0 + 62 + 0 + 10 +18047.388697 + 20 +22115.0 + 30 +0.0 + 11 +18037.499933 + 21 +22132.127843 + 31 +0.0 + 0 +LINE + 5 +BC5 + 8 +0 + 62 + 0 + 10 +18012.499933 + 20 +22175.429113 + 30 +0.0 + 11 +18001.200676 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BC6 + 8 +0 + 62 + 0 + 10 +18049.999933 + 20 +22153.778478 + 30 +0.0 + 11 +18037.499933 + 21 +22175.429113 + 31 +0.0 + 0 +LINE + 5 +BC7 + 8 +0 + 62 + 0 + 10 +18087.499933 + 20 +22132.127842 + 30 +0.0 + 11 +18074.999933 + 21 +22153.778478 + 31 +0.0 + 0 +LINE + 5 +BC8 + 8 +0 + 62 + 0 + 10 +18122.388697 + 20 +22115.0 + 30 +0.0 + 11 +18112.499933 + 21 +22132.127842 + 31 +0.0 + 0 +LINE + 5 +BC9 + 8 +0 + 62 + 0 + 10 +18087.499933 + 20 +22175.429113 + 30 +0.0 + 11 +18076.200676 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BCA + 8 +0 + 62 + 0 + 10 +18124.999933 + 20 +22153.778477 + 30 +0.0 + 11 +18112.499933 + 21 +22175.429113 + 31 +0.0 + 0 +LINE + 5 +BCB + 8 +0 + 62 + 0 + 10 +18162.499932 + 20 +22132.127842 + 30 +0.0 + 11 +18149.999932 + 21 +22153.778477 + 31 +0.0 + 0 +LINE + 5 +BCC + 8 +0 + 62 + 0 + 10 +18197.388697 + 20 +22115.0 + 30 +0.0 + 11 +18187.499932 + 21 +22132.127842 + 31 +0.0 + 0 +LINE + 5 +BCD + 8 +0 + 62 + 0 + 10 +18162.499932 + 20 +22175.429112 + 30 +0.0 + 11 +18151.200675 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BCE + 8 +0 + 62 + 0 + 10 +18199.999932 + 20 +22153.778477 + 30 +0.0 + 11 +18187.499932 + 21 +22175.429112 + 31 +0.0 + 0 +LINE + 5 +BCF + 8 +0 + 62 + 0 + 10 +18237.499932 + 20 +22132.127842 + 30 +0.0 + 11 +18224.999932 + 21 +22153.778477 + 31 +0.0 + 0 +LINE + 5 +BD0 + 8 +0 + 62 + 0 + 10 +18272.388696 + 20 +22115.0 + 30 +0.0 + 11 +18262.499932 + 21 +22132.127842 + 31 +0.0 + 0 +LINE + 5 +BD1 + 8 +0 + 62 + 0 + 10 +18237.499932 + 20 +22175.429112 + 30 +0.0 + 11 +18226.200675 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BD2 + 8 +0 + 62 + 0 + 10 +18274.999932 + 20 +22153.778477 + 30 +0.0 + 11 +18262.499932 + 21 +22175.429112 + 31 +0.0 + 0 +LINE + 5 +BD3 + 8 +0 + 62 + 0 + 10 +18312.499932 + 20 +22132.127842 + 30 +0.0 + 11 +18299.999932 + 21 +22153.778477 + 31 +0.0 + 0 +LINE + 5 +BD4 + 8 +0 + 62 + 0 + 10 +18347.388696 + 20 +22115.0 + 30 +0.0 + 11 +18337.499932 + 21 +22132.127842 + 31 +0.0 + 0 +LINE + 5 +BD5 + 8 +0 + 62 + 0 + 10 +18312.499932 + 20 +22175.429112 + 30 +0.0 + 11 +18301.200675 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BD6 + 8 +0 + 62 + 0 + 10 +18349.999932 + 20 +22153.778477 + 30 +0.0 + 11 +18337.499932 + 21 +22175.429112 + 31 +0.0 + 0 +LINE + 5 +BD7 + 8 +0 + 62 + 0 + 10 +18387.499932 + 20 +22132.127842 + 30 +0.0 + 11 +18374.999932 + 21 +22153.778477 + 31 +0.0 + 0 +LINE + 5 +BD8 + 8 +0 + 62 + 0 + 10 +18422.388696 + 20 +22115.0 + 30 +0.0 + 11 +18412.499932 + 21 +22132.127842 + 31 +0.0 + 0 +LINE + 5 +BD9 + 8 +0 + 62 + 0 + 10 +18387.499932 + 20 +22175.429112 + 30 +0.0 + 11 +18376.200674 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BDA + 8 +0 + 62 + 0 + 10 +18424.999932 + 20 +22153.778477 + 30 +0.0 + 11 +18412.499932 + 21 +22175.429112 + 31 +0.0 + 0 +LINE + 5 +BDB + 8 +0 + 62 + 0 + 10 +18462.499932 + 20 +22132.127842 + 30 +0.0 + 11 +18449.999932 + 21 +22153.778477 + 31 +0.0 + 0 +LINE + 5 +BDC + 8 +0 + 62 + 0 + 10 +18497.388695 + 20 +22115.0 + 30 +0.0 + 11 +18487.499931 + 21 +22132.127842 + 31 +0.0 + 0 +LINE + 5 +BDD + 8 +0 + 62 + 0 + 10 +18462.499931 + 20 +22175.429112 + 30 +0.0 + 11 +18451.200674 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BDE + 8 +0 + 62 + 0 + 10 +18499.999931 + 20 +22153.778477 + 30 +0.0 + 11 +18487.499931 + 21 +22175.429112 + 31 +0.0 + 0 +LINE + 5 +BDF + 8 +0 + 62 + 0 + 10 +18537.499931 + 20 +22132.127842 + 30 +0.0 + 11 +18524.999931 + 21 +22153.778477 + 31 +0.0 + 0 +LINE + 5 +BE0 + 8 +0 + 62 + 0 + 10 +18572.388695 + 20 +22115.0 + 30 +0.0 + 11 +18562.499931 + 21 +22132.127842 + 31 +0.0 + 0 +LINE + 5 +BE1 + 8 +0 + 62 + 0 + 10 +18537.499931 + 20 +22175.429112 + 30 +0.0 + 11 +18526.200674 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BE2 + 8 +0 + 62 + 0 + 10 +18574.999931 + 20 +22153.778477 + 30 +0.0 + 11 +18562.499931 + 21 +22175.429112 + 31 +0.0 + 0 +LINE + 5 +BE3 + 8 +0 + 62 + 0 + 10 +18612.499931 + 20 +22132.127841 + 30 +0.0 + 11 +18599.999931 + 21 +22153.778477 + 31 +0.0 + 0 +LINE + 5 +BE4 + 8 +0 + 62 + 0 + 10 +18647.388695 + 20 +22115.0 + 30 +0.0 + 11 +18637.499931 + 21 +22132.127841 + 31 +0.0 + 0 +LINE + 5 +BE5 + 8 +0 + 62 + 0 + 10 +18612.499931 + 20 +22175.429112 + 30 +0.0 + 11 +18601.200673 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BE6 + 8 +0 + 62 + 0 + 10 +18649.999931 + 20 +22153.778476 + 30 +0.0 + 11 +18637.499931 + 21 +22175.429112 + 31 +0.0 + 0 +LINE + 5 +BE7 + 8 +0 + 62 + 0 + 10 +18687.499931 + 20 +22132.127841 + 30 +0.0 + 11 +18674.999931 + 21 +22153.778476 + 31 +0.0 + 0 +LINE + 5 +BE8 + 8 +0 + 62 + 0 + 10 +18722.388694 + 20 +22115.0 + 30 +0.0 + 11 +18712.499931 + 21 +22132.127841 + 31 +0.0 + 0 +LINE + 5 +BE9 + 8 +0 + 62 + 0 + 10 +18687.499931 + 20 +22175.429111 + 30 +0.0 + 11 +18676.200673 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BEA + 8 +0 + 62 + 0 + 10 +18724.999931 + 20 +22153.778476 + 30 +0.0 + 11 +18712.499931 + 21 +22175.429111 + 31 +0.0 + 0 +LINE + 5 +BEB + 8 +0 + 62 + 0 + 10 +18751.25 + 20 +22151.613292 + 30 +0.0 + 11 +18749.999931 + 21 +22153.778476 + 31 +0.0 + 0 +LINE + 5 +BEC + 8 +0 + 62 + 0 + 10 +18751.25 + 20 +22194.914562 + 30 +0.0 + 11 +18751.200673 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BED + 8 +0 + 62 + 0 + 10 +17777.61119 + 20 +22115.0 + 30 +0.0 + 11 +17787.499982 + 21 +22132.127891 + 31 +0.0 + 0 +LINE + 5 +BEE + 8 +0 + 62 + 0 + 10 +17812.499982 + 20 +22175.429162 + 30 +0.0 + 11 +17823.799211 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BEF + 8 +0 + 62 + 0 + 10 +17774.999983 + 20 +22153.778526 + 30 +0.0 + 11 +17787.499983 + 21 +22175.429162 + 31 +0.0 + 0 +LINE + 5 +BF0 + 8 +0 + 62 + 0 + 10 +17737.499983 + 20 +22132.127891 + 30 +0.0 + 11 +17749.999983 + 21 +22153.778526 + 31 +0.0 + 0 +LINE + 5 +BF1 + 8 +0 + 62 + 0 + 10 +17702.61119 + 20 +22115.0 + 30 +0.0 + 11 +17712.499983 + 21 +22132.127891 + 31 +0.0 + 0 +LINE + 5 +BF2 + 8 +0 + 62 + 0 + 10 +17737.499983 + 20 +22175.429161 + 30 +0.0 + 11 +17748.799212 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BF3 + 8 +0 + 62 + 0 + 10 +17699.999983 + 20 +22153.778526 + 30 +0.0 + 11 +17712.499983 + 21 +22175.429161 + 31 +0.0 + 0 +LINE + 5 +BF4 + 8 +0 + 62 + 0 + 10 +17662.499983 + 20 +22132.127891 + 30 +0.0 + 11 +17674.999983 + 21 +22153.778526 + 31 +0.0 + 0 +LINE + 5 +BF5 + 8 +0 + 62 + 0 + 10 +17627.61119 + 20 +22115.0 + 30 +0.0 + 11 +17637.499983 + 21 +22132.127891 + 31 +0.0 + 0 +LINE + 5 +BF6 + 8 +0 + 62 + 0 + 10 +17662.499983 + 20 +22175.429161 + 30 +0.0 + 11 +17673.799212 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BF7 + 8 +0 + 62 + 0 + 10 +17624.999983 + 20 +22153.778526 + 30 +0.0 + 11 +17637.499983 + 21 +22175.429161 + 31 +0.0 + 0 +LINE + 5 +BF8 + 8 +0 + 62 + 0 + 10 +17587.499983 + 20 +22132.127891 + 30 +0.0 + 11 +17599.999983 + 21 +22153.778526 + 31 +0.0 + 0 +LINE + 5 +BF9 + 8 +0 + 62 + 0 + 10 +17552.611191 + 20 +22115.0 + 30 +0.0 + 11 +17562.499983 + 21 +22132.127891 + 31 +0.0 + 0 +LINE + 5 +BFA + 8 +0 + 62 + 0 + 10 +17587.499983 + 20 +22175.429161 + 30 +0.0 + 11 +17598.799212 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BFB + 8 +0 + 62 + 0 + 10 +17549.999983 + 20 +22153.778526 + 30 +0.0 + 11 +17562.499983 + 21 +22175.429161 + 31 +0.0 + 0 +LINE + 5 +BFC + 8 +0 + 62 + 0 + 10 +17512.499983 + 20 +22132.127891 + 30 +0.0 + 11 +17524.999983 + 21 +22153.778526 + 31 +0.0 + 0 +LINE + 5 +BFD + 8 +0 + 62 + 0 + 10 +17477.611191 + 20 +22115.0 + 30 +0.0 + 11 +17487.499983 + 21 +22132.127891 + 31 +0.0 + 0 +LINE + 5 +BFE + 8 +0 + 62 + 0 + 10 +17512.499983 + 20 +22175.429161 + 30 +0.0 + 11 +17523.799213 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +BFF + 8 +0 + 62 + 0 + 10 +17474.999984 + 20 +22153.778526 + 30 +0.0 + 11 +17487.499984 + 21 +22175.429161 + 31 +0.0 + 0 +LINE + 5 +C00 + 8 +0 + 62 + 0 + 10 +17437.499984 + 20 +22132.127891 + 30 +0.0 + 11 +17449.999984 + 21 +22153.778526 + 31 +0.0 + 0 +LINE + 5 +C01 + 8 +0 + 62 + 0 + 10 +17402.611191 + 20 +22115.0 + 30 +0.0 + 11 +17412.499984 + 21 +22132.127891 + 31 +0.0 + 0 +LINE + 5 +C02 + 8 +0 + 62 + 0 + 10 +17437.499984 + 20 +22175.429161 + 30 +0.0 + 11 +17448.799213 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C03 + 8 +0 + 62 + 0 + 10 +17399.999984 + 20 +22153.778526 + 30 +0.0 + 11 +17412.499984 + 21 +22175.429161 + 31 +0.0 + 0 +LINE + 5 +C04 + 8 +0 + 62 + 0 + 10 +17362.499984 + 20 +22132.127891 + 30 +0.0 + 11 +17374.999984 + 21 +22153.778526 + 31 +0.0 + 0 +LINE + 5 +C05 + 8 +0 + 62 + 0 + 10 +17327.611192 + 20 +22115.0 + 30 +0.0 + 11 +17337.499984 + 21 +22132.127891 + 31 +0.0 + 0 +LINE + 5 +C06 + 8 +0 + 62 + 0 + 10 +17362.499984 + 20 +22175.429161 + 30 +0.0 + 11 +17373.799213 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C07 + 8 +0 + 62 + 0 + 10 +17324.999984 + 20 +22153.778526 + 30 +0.0 + 11 +17337.499984 + 21 +22175.429161 + 31 +0.0 + 0 +LINE + 5 +C08 + 8 +0 + 62 + 0 + 10 +17287.499984 + 20 +22132.12789 + 30 +0.0 + 11 +17299.999984 + 21 +22153.778526 + 31 +0.0 + 0 +LINE + 5 +C09 + 8 +0 + 62 + 0 + 10 +17252.611192 + 20 +22115.0 + 30 +0.0 + 11 +17262.499984 + 21 +22132.12789 + 31 +0.0 + 0 +LINE + 5 +C0A + 8 +0 + 62 + 0 + 10 +17287.499984 + 20 +22175.429161 + 30 +0.0 + 11 +17298.799214 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C0B + 8 +0 + 62 + 0 + 10 +17249.999984 + 20 +22153.778525 + 30 +0.0 + 11 +17262.499984 + 21 +22175.429161 + 31 +0.0 + 0 +LINE + 5 +C0C + 8 +0 + 62 + 0 + 10 +17212.499984 + 20 +22132.12789 + 30 +0.0 + 11 +17224.999984 + 21 +22153.778525 + 31 +0.0 + 0 +LINE + 5 +C0D + 8 +0 + 62 + 0 + 10 +17177.611192 + 20 +22115.0 + 30 +0.0 + 11 +17187.499984 + 21 +22132.12789 + 31 +0.0 + 0 +LINE + 5 +C0E + 8 +0 + 62 + 0 + 10 +17212.499984 + 20 +22175.42916 + 30 +0.0 + 11 +17223.799214 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C0F + 8 +0 + 62 + 0 + 10 +17174.999985 + 20 +22153.778525 + 30 +0.0 + 11 +17187.499985 + 21 +22175.42916 + 31 +0.0 + 0 +LINE + 5 +C10 + 8 +0 + 62 + 0 + 10 +17137.499985 + 20 +22132.12789 + 30 +0.0 + 11 +17149.999985 + 21 +22153.778525 + 31 +0.0 + 0 +LINE + 5 +C11 + 8 +0 + 62 + 0 + 10 +17102.611193 + 20 +22115.0 + 30 +0.0 + 11 +17112.499985 + 21 +22132.12789 + 31 +0.0 + 0 +LINE + 5 +C12 + 8 +0 + 62 + 0 + 10 +17137.499985 + 20 +22175.42916 + 30 +0.0 + 11 +17148.799214 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C13 + 8 +0 + 62 + 0 + 10 +17099.999985 + 20 +22153.778525 + 30 +0.0 + 11 +17112.499985 + 21 +22175.42916 + 31 +0.0 + 0 +LINE + 5 +C14 + 8 +0 + 62 + 0 + 10 +17062.499985 + 20 +22132.12789 + 30 +0.0 + 11 +17074.999985 + 21 +22153.778525 + 31 +0.0 + 0 +LINE + 5 +C15 + 8 +0 + 62 + 0 + 10 +17027.611193 + 20 +22115.0 + 30 +0.0 + 11 +17037.499985 + 21 +22132.12789 + 31 +0.0 + 0 +LINE + 5 +C16 + 8 +0 + 62 + 0 + 10 +17062.499985 + 20 +22175.42916 + 30 +0.0 + 11 +17073.799215 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C17 + 8 +0 + 62 + 0 + 10 +17024.999985 + 20 +22153.778525 + 30 +0.0 + 11 +17037.499985 + 21 +22175.42916 + 31 +0.0 + 0 +LINE + 5 +C18 + 8 +0 + 62 + 0 + 10 +16987.499985 + 20 +22132.12789 + 30 +0.0 + 11 +16999.999985 + 21 +22153.778525 + 31 +0.0 + 0 +LINE + 5 +C19 + 8 +0 + 62 + 0 + 10 +16952.611193 + 20 +22115.0 + 30 +0.0 + 11 +16962.499985 + 21 +22132.12789 + 31 +0.0 + 0 +LINE + 5 +C1A + 8 +0 + 62 + 0 + 10 +16987.499985 + 20 +22175.42916 + 30 +0.0 + 11 +16998.799215 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C1B + 8 +0 + 62 + 0 + 10 +16949.999985 + 20 +22153.778525 + 30 +0.0 + 11 +16962.499985 + 21 +22175.42916 + 31 +0.0 + 0 +LINE + 5 +C1C + 8 +0 + 62 + 0 + 10 +16912.499985 + 20 +22132.12789 + 30 +0.0 + 11 +16924.999985 + 21 +22153.778525 + 31 +0.0 + 0 +LINE + 5 +C1D + 8 +0 + 62 + 0 + 10 +16877.611194 + 20 +22115.0 + 30 +0.0 + 11 +16887.499985 + 21 +22132.12789 + 31 +0.0 + 0 +LINE + 5 +C1E + 8 +0 + 62 + 0 + 10 +16912.499985 + 20 +22175.42916 + 30 +0.0 + 11 +16923.799215 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C1F + 8 +0 + 62 + 0 + 10 +16874.999985 + 20 +22153.778525 + 30 +0.0 + 11 +16887.499985 + 21 +22175.42916 + 31 +0.0 + 0 +LINE + 5 +C20 + 8 +0 + 62 + 0 + 10 +17812.499982 + 20 +22132.127891 + 30 +0.0 + 11 +17824.999982 + 21 +22153.778527 + 31 +0.0 + 0 +LINE + 5 +C21 + 8 +0 + 62 + 0 + 10 +17849.999982 + 20 +22153.778527 + 30 +0.0 + 11 +17862.499982 + 21 +22175.429162 + 31 +0.0 + 0 +LINE + 5 +C22 + 8 +0 + 62 + 0 + 10 +17852.611189 + 20 +22115.0 + 30 +0.0 + 11 +17862.499982 + 21 +22132.127892 + 31 +0.0 + 0 +LINE + 5 +C23 + 8 +0 + 62 + 0 + 10 +17887.499982 + 20 +22175.429162 + 30 +0.0 + 11 +17898.799211 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C24 + 8 +0 + 62 + 0 + 10 +17887.499982 + 20 +22132.127892 + 30 +0.0 + 11 +17899.999982 + 21 +22153.778527 + 31 +0.0 + 0 +LINE + 5 +C25 + 8 +0 + 62 + 0 + 10 +17924.999982 + 20 +22153.778527 + 30 +0.0 + 11 +17937.499982 + 21 +22175.429162 + 31 +0.0 + 0 +LINE + 5 +C26 + 8 +0 + 62 + 0 + 10 +17927.611189 + 20 +22115.0 + 30 +0.0 + 11 +17937.499982 + 21 +22132.127892 + 31 +0.0 + 0 +LINE + 5 +C27 + 8 +0 + 62 + 0 + 10 +17962.499982 + 20 +22175.429162 + 30 +0.0 + 11 +17973.799211 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C28 + 8 +0 + 62 + 0 + 10 +17962.499982 + 20 +22132.127892 + 30 +0.0 + 11 +17974.999982 + 21 +22153.778527 + 31 +0.0 + 0 +LINE + 5 +C29 + 8 +0 + 62 + 0 + 10 +17999.999982 + 20 +22153.778527 + 30 +0.0 + 11 +18012.499982 + 21 +22175.429162 + 31 +0.0 + 0 +LINE + 5 +C2A + 8 +0 + 62 + 0 + 10 +18002.611189 + 20 +22115.0 + 30 +0.0 + 11 +18012.499982 + 21 +22132.127892 + 31 +0.0 + 0 +LINE + 5 +C2B + 8 +0 + 62 + 0 + 10 +18037.499982 + 20 +22175.429162 + 30 +0.0 + 11 +18048.79921 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C2C + 8 +0 + 62 + 0 + 10 +18037.499982 + 20 +22132.127892 + 30 +0.0 + 11 +18049.999982 + 21 +22153.778527 + 31 +0.0 + 0 +LINE + 5 +C2D + 8 +0 + 62 + 0 + 10 +18074.999982 + 20 +22153.778527 + 30 +0.0 + 11 +18087.499982 + 21 +22175.429162 + 31 +0.0 + 0 +LINE + 5 +C2E + 8 +0 + 62 + 0 + 10 +18077.611188 + 20 +22115.0 + 30 +0.0 + 11 +18087.499981 + 21 +22132.127892 + 31 +0.0 + 0 +LINE + 5 +C2F + 8 +0 + 62 + 0 + 10 +18112.499981 + 20 +22175.429162 + 30 +0.0 + 11 +18123.79921 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C30 + 8 +0 + 62 + 0 + 10 +18112.499981 + 20 +22132.127892 + 30 +0.0 + 11 +18124.999981 + 21 +22153.778527 + 31 +0.0 + 0 +LINE + 5 +C31 + 8 +0 + 62 + 0 + 10 +18149.999981 + 20 +22153.778527 + 30 +0.0 + 11 +18162.499981 + 21 +22175.429162 + 31 +0.0 + 0 +LINE + 5 +C32 + 8 +0 + 62 + 0 + 10 +18152.611188 + 20 +22115.0 + 30 +0.0 + 11 +18162.499981 + 21 +22132.127892 + 31 +0.0 + 0 +LINE + 5 +C33 + 8 +0 + 62 + 0 + 10 +18187.499981 + 20 +22175.429162 + 30 +0.0 + 11 +18198.79921 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C34 + 8 +0 + 62 + 0 + 10 +18187.499981 + 20 +22132.127892 + 30 +0.0 + 11 +18199.999981 + 21 +22153.778527 + 31 +0.0 + 0 +LINE + 5 +C35 + 8 +0 + 62 + 0 + 10 +18224.999981 + 20 +22153.778527 + 30 +0.0 + 11 +18237.499981 + 21 +22175.429162 + 31 +0.0 + 0 +LINE + 5 +C36 + 8 +0 + 62 + 0 + 10 +18227.611188 + 20 +22115.0 + 30 +0.0 + 11 +18237.499981 + 21 +22132.127892 + 31 +0.0 + 0 +LINE + 5 +C37 + 8 +0 + 62 + 0 + 10 +18262.499981 + 20 +22175.429162 + 30 +0.0 + 11 +18273.799209 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C38 + 8 +0 + 62 + 0 + 10 +18262.499981 + 20 +22132.127892 + 30 +0.0 + 11 +18274.999981 + 21 +22153.778527 + 31 +0.0 + 0 +LINE + 5 +C39 + 8 +0 + 62 + 0 + 10 +18299.999981 + 20 +22153.778527 + 30 +0.0 + 11 +18312.499981 + 21 +22175.429163 + 31 +0.0 + 0 +LINE + 5 +C3A + 8 +0 + 62 + 0 + 10 +18302.611187 + 20 +22115.0 + 30 +0.0 + 11 +18312.499981 + 21 +22132.127892 + 31 +0.0 + 0 +LINE + 5 +C3B + 8 +0 + 62 + 0 + 10 +18337.499981 + 20 +22175.429163 + 30 +0.0 + 11 +18348.799209 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C3C + 8 +0 + 62 + 0 + 10 +18337.499981 + 20 +22132.127892 + 30 +0.0 + 11 +18349.999981 + 21 +22153.778528 + 31 +0.0 + 0 +LINE + 5 +C3D + 8 +0 + 62 + 0 + 10 +18374.999981 + 20 +22153.778528 + 30 +0.0 + 11 +18387.499981 + 21 +22175.429163 + 31 +0.0 + 0 +LINE + 5 +C3E + 8 +0 + 62 + 0 + 10 +18377.611187 + 20 +22115.0 + 30 +0.0 + 11 +18387.49998 + 21 +22132.127893 + 31 +0.0 + 0 +LINE + 5 +C3F + 8 +0 + 62 + 0 + 10 +18412.49998 + 20 +22175.429163 + 30 +0.0 + 11 +18423.799209 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C40 + 8 +0 + 62 + 0 + 10 +18412.49998 + 20 +22132.127893 + 30 +0.0 + 11 +18424.99998 + 21 +22153.778528 + 31 +0.0 + 0 +LINE + 5 +C41 + 8 +0 + 62 + 0 + 10 +18449.99998 + 20 +22153.778528 + 30 +0.0 + 11 +18462.49998 + 21 +22175.429163 + 31 +0.0 + 0 +LINE + 5 +C42 + 8 +0 + 62 + 0 + 10 +18452.611187 + 20 +22115.0 + 30 +0.0 + 11 +18462.49998 + 21 +22132.127893 + 31 +0.0 + 0 +LINE + 5 +C43 + 8 +0 + 62 + 0 + 10 +18487.49998 + 20 +22175.429163 + 30 +0.0 + 11 +18498.799208 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C44 + 8 +0 + 62 + 0 + 10 +18487.49998 + 20 +22132.127893 + 30 +0.0 + 11 +18499.99998 + 21 +22153.778528 + 31 +0.0 + 0 +LINE + 5 +C45 + 8 +0 + 62 + 0 + 10 +18524.99998 + 20 +22153.778528 + 30 +0.0 + 11 +18537.49998 + 21 +22175.429163 + 31 +0.0 + 0 +LINE + 5 +C46 + 8 +0 + 62 + 0 + 10 +18527.611186 + 20 +22115.0 + 30 +0.0 + 11 +18537.49998 + 21 +22132.127893 + 31 +0.0 + 0 +LINE + 5 +C47 + 8 +0 + 62 + 0 + 10 +18562.49998 + 20 +22175.429163 + 30 +0.0 + 11 +18573.799208 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C48 + 8 +0 + 62 + 0 + 10 +18562.49998 + 20 +22132.127893 + 30 +0.0 + 11 +18574.99998 + 21 +22153.778528 + 31 +0.0 + 0 +LINE + 5 +C49 + 8 +0 + 62 + 0 + 10 +18599.99998 + 20 +22153.778528 + 30 +0.0 + 11 +18612.49998 + 21 +22175.429163 + 31 +0.0 + 0 +LINE + 5 +C4A + 8 +0 + 62 + 0 + 10 +18602.611186 + 20 +22115.0 + 30 +0.0 + 11 +18612.49998 + 21 +22132.127893 + 31 +0.0 + 0 +LINE + 5 +C4B + 8 +0 + 62 + 0 + 10 +18637.49998 + 20 +22175.429163 + 30 +0.0 + 11 +18648.799208 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C4C + 8 +0 + 62 + 0 + 10 +18637.49998 + 20 +22132.127893 + 30 +0.0 + 11 +18649.99998 + 21 +22153.778528 + 31 +0.0 + 0 +LINE + 5 +C4D + 8 +0 + 62 + 0 + 10 +18674.99998 + 20 +22153.778528 + 30 +0.0 + 11 +18687.49998 + 21 +22175.429163 + 31 +0.0 + 0 +LINE + 5 +C4E + 8 +0 + 62 + 0 + 10 +18677.611186 + 20 +22115.0 + 30 +0.0 + 11 +18687.49998 + 21 +22132.127893 + 31 +0.0 + 0 +LINE + 5 +C4F + 8 +0 + 62 + 0 + 10 +18712.49998 + 20 +22175.429163 + 30 +0.0 + 11 +18723.799207 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +C50 + 8 +0 + 62 + 0 + 10 +18712.499979 + 20 +22132.127893 + 30 +0.0 + 11 +18724.999979 + 21 +22153.778528 + 31 +0.0 + 0 +LINE + 5 +C51 + 8 +0 + 62 + 0 + 10 +18749.999979 + 20 +22153.778528 + 30 +0.0 + 11 +18751.25 + 21 +22155.943628 + 31 +0.0 + 0 +ENDBLK + 5 +C52 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X43 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X43 + 1 + + 0 +LINE + 5 +C54 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17174.13241 + 30 +0.0 + 11 +4950.0 + 21 +17174.13241 + 31 +0.0 + 0 +LINE + 5 +C55 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17195.783045 + 30 +0.0 + 11 +4987.5 + 21 +17195.783045 + 31 +0.0 + 0 +LINE + 5 +C56 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17217.43368 + 30 +0.0 + 11 +4950.0 + 21 +17217.43368 + 31 +0.0 + 0 +LINE + 5 +C57 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17239.084315 + 30 +0.0 + 11 +4987.5 + 21 +17239.084315 + 31 +0.0 + 0 +LINE + 5 +C58 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17260.73495 + 30 +0.0 + 11 +4950.0 + 21 +17260.73495 + 31 +0.0 + 0 +LINE + 5 +C59 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17282.385585 + 30 +0.0 + 11 +4987.5 + 21 +17282.385585 + 31 +0.0 + 0 +LINE + 5 +C5A + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17304.03622 + 30 +0.0 + 11 +4950.0 + 21 +17304.03622 + 31 +0.0 + 0 +LINE + 5 +C5B + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17325.686855 + 30 +0.0 + 11 +4987.5 + 21 +17325.686855 + 31 +0.0 + 0 +LINE + 5 +C5C + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17347.33749 + 30 +0.0 + 11 +4950.0 + 21 +17347.33749 + 31 +0.0 + 0 +LINE + 5 +C5D + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17368.988125 + 30 +0.0 + 11 +4987.5 + 21 +17368.988125 + 31 +0.0 + 0 +LINE + 5 +C5E + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17390.63876 + 30 +0.0 + 11 +4950.0 + 21 +17390.63876 + 31 +0.0 + 0 +LINE + 5 +C5F + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17412.289395 + 30 +0.0 + 11 +4987.5 + 21 +17412.289395 + 31 +0.0 + 0 +LINE + 5 +C60 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17433.94003 + 30 +0.0 + 11 +4950.0 + 21 +17433.94003 + 31 +0.0 + 0 +LINE + 5 +C61 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17455.590665 + 30 +0.0 + 11 +4987.5 + 21 +17455.590665 + 31 +0.0 + 0 +LINE + 5 +C62 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17477.2413 + 30 +0.0 + 11 +4950.0 + 21 +17477.2413 + 31 +0.0 + 0 +LINE + 5 +C63 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17498.891935 + 30 +0.0 + 11 +4987.5 + 21 +17498.891935 + 31 +0.0 + 0 +LINE + 5 +C64 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17520.54257 + 30 +0.0 + 11 +4950.0 + 21 +17520.54257 + 31 +0.0 + 0 +LINE + 5 +C65 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17542.193205 + 30 +0.0 + 11 +4987.5 + 21 +17542.193205 + 31 +0.0 + 0 +LINE + 5 +C66 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17563.84384 + 30 +0.0 + 11 +4950.0 + 21 +17563.84384 + 31 +0.0 + 0 +LINE + 5 +C67 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17585.494475 + 30 +0.0 + 11 +4987.5 + 21 +17585.494475 + 31 +0.0 + 0 +LINE + 5 +C68 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17607.14511 + 30 +0.0 + 11 +4950.0 + 21 +17607.14511 + 31 +0.0 + 0 +LINE + 5 +C69 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17628.795745 + 30 +0.0 + 11 +4987.5 + 21 +17628.795745 + 31 +0.0 + 0 +LINE + 5 +C6A + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17650.44638 + 30 +0.0 + 11 +4950.0 + 21 +17650.44638 + 31 +0.0 + 0 +LINE + 5 +C6B + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17672.097015 + 30 +0.0 + 11 +4987.5 + 21 +17672.097015 + 31 +0.0 + 0 +LINE + 5 +C6C + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17693.74765 + 30 +0.0 + 11 +4950.0 + 21 +17693.74765 + 31 +0.0 + 0 +LINE + 5 +C6D + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17715.398285 + 30 +0.0 + 11 +4987.5 + 21 +17715.398285 + 31 +0.0 + 0 +LINE + 5 +C6E + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17737.04892 + 30 +0.0 + 11 +4950.0 + 21 +17737.04892 + 31 +0.0 + 0 +LINE + 5 +C6F + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17758.699555 + 30 +0.0 + 11 +4987.5 + 21 +17758.699555 + 31 +0.0 + 0 +LINE + 5 +C70 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17780.35019 + 30 +0.0 + 11 +4950.0 + 21 +17780.35019 + 31 +0.0 + 0 +LINE + 5 +C71 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17802.000825 + 30 +0.0 + 11 +4987.5 + 21 +17802.000825 + 31 +0.0 + 0 +LINE + 5 +C72 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17823.65146 + 30 +0.0 + 11 +4950.0 + 21 +17823.65146 + 31 +0.0 + 0 +LINE + 5 +C73 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17845.302095 + 30 +0.0 + 11 +4987.5 + 21 +17845.302095 + 31 +0.0 + 0 +LINE + 5 +C74 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17866.95273 + 30 +0.0 + 11 +4950.0 + 21 +17866.95273 + 31 +0.0 + 0 +LINE + 5 +C75 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17888.603365 + 30 +0.0 + 11 +4987.5 + 21 +17888.603365 + 31 +0.0 + 0 +LINE + 5 +C76 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17910.254 + 30 +0.0 + 11 +4950.0 + 21 +17910.254 + 31 +0.0 + 0 +LINE + 5 +C77 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17931.904635 + 30 +0.0 + 11 +4987.5 + 21 +17931.904635 + 31 +0.0 + 0 +LINE + 5 +C78 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17953.55527 + 30 +0.0 + 11 +4950.0 + 21 +17953.55527 + 31 +0.0 + 0 +LINE + 5 +C79 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17975.205905 + 30 +0.0 + 11 +4987.5 + 21 +17975.205905 + 31 +0.0 + 0 +LINE + 5 +C7A + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17996.85654 + 30 +0.0 + 11 +4950.0 + 21 +17996.85654 + 31 +0.0 + 0 +LINE + 5 +C7B + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +18018.507175 + 30 +0.0 + 11 +4987.5 + 21 +18018.507175 + 31 +0.0 + 0 +LINE + 5 +C7C + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +18040.15781 + 30 +0.0 + 11 +4950.0 + 21 +18040.15781 + 31 +0.0 + 0 +LINE + 5 +C7D + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +18061.808445 + 30 +0.0 + 11 +4987.5 + 21 +18061.808445 + 31 +0.0 + 0 +LINE + 5 +C7E + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +18083.45908 + 30 +0.0 + 11 +4950.0 + 21 +18083.45908 + 31 +0.0 + 0 +LINE + 5 +C7F + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +18105.109715 + 30 +0.0 + 11 +4987.5 + 21 +18105.109715 + 31 +0.0 + 0 +LINE + 5 +C80 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +18126.76035 + 30 +0.0 + 11 +4950.0 + 21 +18126.76035 + 31 +0.0 + 0 +LINE + 5 +C81 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +18148.410985 + 30 +0.0 + 11 +4987.5 + 21 +18148.410985 + 31 +0.0 + 0 +LINE + 5 +C82 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +18170.06162 + 30 +0.0 + 11 +4950.0 + 21 +18170.06162 + 31 +0.0 + 0 +LINE + 5 +C83 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +18191.712255 + 30 +0.0 + 11 +4987.5 + 21 +18191.712255 + 31 +0.0 + 0 +LINE + 5 +C84 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +18213.36289 + 30 +0.0 + 11 +4950.0 + 21 +18213.36289 + 31 +0.0 + 0 +LINE + 5 +C85 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +18235.013525 + 30 +0.0 + 11 +4987.5 + 21 +18235.013525 + 31 +0.0 + 0 +LINE + 5 +C86 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17152.481775 + 30 +0.0 + 11 +4987.5 + 21 +17152.481775 + 31 +0.0 + 0 +LINE + 5 +C87 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17130.83114 + 30 +0.0 + 11 +4950.0 + 21 +17130.83114 + 31 +0.0 + 0 +LINE + 5 +C88 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17109.180505 + 30 +0.0 + 11 +4987.5 + 21 +17109.180505 + 31 +0.0 + 0 +LINE + 5 +C89 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17087.52987 + 30 +0.0 + 11 +4950.0 + 21 +17087.52987 + 31 +0.0 + 0 +LINE + 5 +C8A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17065.879235 + 30 +0.0 + 11 +4987.5 + 21 +17065.879235 + 31 +0.0 + 0 +LINE + 5 +C8B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17044.2286 + 30 +0.0 + 11 +4950.0 + 21 +17044.2286 + 31 +0.0 + 0 +LINE + 5 +C8C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +17022.577965 + 30 +0.0 + 11 +4987.5 + 21 +17022.577965 + 31 +0.0 + 0 +LINE + 5 +C8D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +17000.92733 + 30 +0.0 + 11 +4950.0 + 21 +17000.92733 + 31 +0.0 + 0 +LINE + 5 +C8E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16979.276695 + 30 +0.0 + 11 +4987.5 + 21 +16979.276695 + 31 +0.0 + 0 +LINE + 5 +C8F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16957.62606 + 30 +0.0 + 11 +4950.0 + 21 +16957.62606 + 31 +0.0 + 0 +LINE + 5 +C90 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16935.975425 + 30 +0.0 + 11 +4987.5 + 21 +16935.975425 + 31 +0.0 + 0 +LINE + 5 +C91 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16914.32479 + 30 +0.0 + 11 +4950.0 + 21 +16914.32479 + 31 +0.0 + 0 +LINE + 5 +C92 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16892.674155 + 30 +0.0 + 11 +4987.5 + 21 +16892.674155 + 31 +0.0 + 0 +LINE + 5 +C93 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16871.02352 + 30 +0.0 + 11 +4950.0 + 21 +16871.02352 + 31 +0.0 + 0 +LINE + 5 +C94 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16849.372885 + 30 +0.0 + 11 +4987.5 + 21 +16849.372885 + 31 +0.0 + 0 +LINE + 5 +C95 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16827.72225 + 30 +0.0 + 11 +4950.0 + 21 +16827.72225 + 31 +0.0 + 0 +LINE + 5 +C96 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16806.071615 + 30 +0.0 + 11 +4987.5 + 21 +16806.071615 + 31 +0.0 + 0 +LINE + 5 +C97 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16784.42098 + 30 +0.0 + 11 +4950.0 + 21 +16784.42098 + 31 +0.0 + 0 +LINE + 5 +C98 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16762.770345 + 30 +0.0 + 11 +4987.5 + 21 +16762.770345 + 31 +0.0 + 0 +LINE + 5 +C99 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16741.11971 + 30 +0.0 + 11 +4950.0 + 21 +16741.11971 + 31 +0.0 + 0 +LINE + 5 +C9A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16719.469075 + 30 +0.0 + 11 +4987.5 + 21 +16719.469075 + 31 +0.0 + 0 +LINE + 5 +C9B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16697.81844 + 30 +0.0 + 11 +4950.0 + 21 +16697.81844 + 31 +0.0 + 0 +LINE + 5 +C9C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16676.167805 + 30 +0.0 + 11 +4987.5 + 21 +16676.167805 + 31 +0.0 + 0 +LINE + 5 +C9D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16654.51717 + 30 +0.0 + 11 +4950.0 + 21 +16654.51717 + 31 +0.0 + 0 +LINE + 5 +C9E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16632.866535 + 30 +0.0 + 11 +4987.5 + 21 +16632.866535 + 31 +0.0 + 0 +LINE + 5 +C9F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16611.2159 + 30 +0.0 + 11 +4950.0 + 21 +16611.2159 + 31 +0.0 + 0 +LINE + 5 +CA0 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16589.565265 + 30 +0.0 + 11 +4987.5 + 21 +16589.565265 + 31 +0.0 + 0 +LINE + 5 +CA1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16567.91463 + 30 +0.0 + 11 +4950.0 + 21 +16567.91463 + 31 +0.0 + 0 +LINE + 5 +CA2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16546.263995 + 30 +0.0 + 11 +4987.5 + 21 +16546.263995 + 31 +0.0 + 0 +LINE + 5 +CA3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16524.61336 + 30 +0.0 + 11 +4950.0 + 21 +16524.61336 + 31 +0.0 + 0 +LINE + 5 +CA4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16502.962725 + 30 +0.0 + 11 +4987.5 + 21 +16502.962725 + 31 +0.0 + 0 +LINE + 5 +CA5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16481.31209 + 30 +0.0 + 11 +4950.0 + 21 +16481.31209 + 31 +0.0 + 0 +LINE + 5 +CA6 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16459.661455 + 30 +0.0 + 11 +4987.5 + 21 +16459.661455 + 31 +0.0 + 0 +LINE + 5 +CA7 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16438.01082 + 30 +0.0 + 11 +4950.0 + 21 +16438.01082 + 31 +0.0 + 0 +LINE + 5 +CA8 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16416.360185 + 30 +0.0 + 11 +4987.5 + 21 +16416.360185 + 31 +0.0 + 0 +LINE + 5 +CA9 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16394.70955 + 30 +0.0 + 11 +4950.0 + 21 +16394.70955 + 31 +0.0 + 0 +LINE + 5 +CAA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16373.058915 + 30 +0.0 + 11 +4987.5 + 21 +16373.058915 + 31 +0.0 + 0 +LINE + 5 +CAB + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16351.40828 + 30 +0.0 + 11 +4950.0 + 21 +16351.40828 + 31 +0.0 + 0 +LINE + 5 +CAC + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16329.757645 + 30 +0.0 + 11 +4987.5 + 21 +16329.757645 + 31 +0.0 + 0 +LINE + 5 +CAD + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16308.10701 + 30 +0.0 + 11 +4950.0 + 21 +16308.10701 + 31 +0.0 + 0 +LINE + 5 +CAE + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16286.456375 + 30 +0.0 + 11 +4987.5 + 21 +16286.456375 + 31 +0.0 + 0 +LINE + 5 +CAF + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16264.80574 + 30 +0.0 + 11 +4950.0 + 21 +16264.80574 + 31 +0.0 + 0 +LINE + 5 +CB0 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16243.155105 + 30 +0.0 + 11 +4987.5 + 21 +16243.155105 + 31 +0.0 + 0 +LINE + 5 +CB1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16221.50447 + 30 +0.0 + 11 +4950.0 + 21 +16221.50447 + 31 +0.0 + 0 +LINE + 5 +CB2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16199.853835 + 30 +0.0 + 11 +4987.5 + 21 +16199.853835 + 31 +0.0 + 0 +LINE + 5 +CB3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16178.2032 + 30 +0.0 + 11 +4950.0 + 21 +16178.2032 + 31 +0.0 + 0 +LINE + 5 +CB4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +16156.552565 + 30 +0.0 + 11 +4987.5 + 21 +16156.552565 + 31 +0.0 + 0 +LINE + 5 +CB5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +16134.90193 + 30 +0.0 + 11 +4950.0 + 21 +16134.90193 + 31 +0.0 + 0 +LINE + 5 +CB6 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17087.529896 + 30 +0.0 + 11 +4987.499985 + 21 +17109.180531 + 31 +0.0 + 0 +LINE + 5 +CB7 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17152.481801 + 30 +0.0 + 11 +4949.999985 + 21 +17174.132436 + 31 +0.0 + 0 +LINE + 5 +CB8 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17217.433706 + 30 +0.0 + 11 +4920.0 + 21 +17226.093935 + 31 +0.0 + 0 +LINE + 5 +CB9 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17044.228626 + 30 +0.0 + 11 +4987.499985 + 21 +17065.879261 + 31 +0.0 + 0 +LINE + 5 +CBA + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17109.180531 + 30 +0.0 + 11 +4949.999985 + 21 +17130.831166 + 31 +0.0 + 0 +LINE + 5 +CBB + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17174.132436 + 30 +0.0 + 11 +4920.0 + 21 +17182.792665 + 31 +0.0 + 0 +LINE + 5 +CBC + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17000.927355 + 30 +0.0 + 11 +4987.499985 + 21 +17022.57799 + 31 +0.0 + 0 +LINE + 5 +CBD + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17065.879261 + 30 +0.0 + 11 +4949.999985 + 21 +17087.529896 + 31 +0.0 + 0 +LINE + 5 +CBE + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17130.831166 + 30 +0.0 + 11 +4920.0 + 21 +17139.491395 + 31 +0.0 + 0 +LINE + 5 +CBF + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +16957.626085 + 30 +0.0 + 11 +4987.499985 + 21 +16979.27672 + 31 +0.0 + 0 +LINE + 5 +CC0 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17022.577991 + 30 +0.0 + 11 +4949.999985 + 21 +17044.228626 + 31 +0.0 + 0 +LINE + 5 +CC1 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17087.529896 + 30 +0.0 + 11 +4920.0 + 21 +17096.190125 + 31 +0.0 + 0 +LINE + 5 +CC2 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +16914.324815 + 30 +0.0 + 11 +4987.499985 + 21 +16935.97545 + 31 +0.0 + 0 +LINE + 5 +CC3 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +16979.27672 + 30 +0.0 + 11 +4949.999985 + 21 +17000.927355 + 31 +0.0 + 0 +LINE + 5 +CC4 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17044.228626 + 30 +0.0 + 11 +4920.0 + 21 +17052.888855 + 31 +0.0 + 0 +LINE + 5 +CC5 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16871.023545 + 30 +0.0 + 11 +4987.499986 + 21 +16892.67418 + 31 +0.0 + 0 +LINE + 5 +CC6 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16935.97545 + 30 +0.0 + 11 +4949.999986 + 21 +16957.626085 + 31 +0.0 + 0 +LINE + 5 +CC7 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +17000.927356 + 30 +0.0 + 11 +4920.0 + 21 +17009.587585 + 31 +0.0 + 0 +LINE + 5 +CC8 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16827.722275 + 30 +0.0 + 11 +4987.499986 + 21 +16849.37291 + 31 +0.0 + 0 +LINE + 5 +CC9 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16892.67418 + 30 +0.0 + 11 +4949.999986 + 21 +16914.324815 + 31 +0.0 + 0 +LINE + 5 +CCA + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16957.626085 + 30 +0.0 + 11 +4920.0 + 21 +16966.286315 + 31 +0.0 + 0 +LINE + 5 +CCB + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16784.421005 + 30 +0.0 + 11 +4987.499986 + 21 +16806.07164 + 31 +0.0 + 0 +LINE + 5 +CCC + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16849.37291 + 30 +0.0 + 11 +4949.999986 + 21 +16871.023545 + 31 +0.0 + 0 +LINE + 5 +CCD + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16914.324815 + 30 +0.0 + 11 +4920.0 + 21 +16922.985045 + 31 +0.0 + 0 +LINE + 5 +CCE + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16741.119735 + 30 +0.0 + 11 +4987.499986 + 21 +16762.77037 + 31 +0.0 + 0 +LINE + 5 +CCF + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16806.07164 + 30 +0.0 + 11 +4949.999986 + 21 +16827.722275 + 31 +0.0 + 0 +LINE + 5 +CD0 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16871.023545 + 30 +0.0 + 11 +4920.0 + 21 +16879.683775 + 31 +0.0 + 0 +LINE + 5 +CD1 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16697.818464 + 30 +0.0 + 11 +4987.499986 + 21 +16719.4691 + 31 +0.0 + 0 +LINE + 5 +CD2 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16762.77037 + 30 +0.0 + 11 +4949.999986 + 21 +16784.421005 + 31 +0.0 + 0 +LINE + 5 +CD3 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16827.722275 + 30 +0.0 + 11 +4920.0 + 21 +16836.382505 + 31 +0.0 + 0 +LINE + 5 +CD4 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16654.517194 + 30 +0.0 + 11 +4987.499986 + 21 +16676.167829 + 31 +0.0 + 0 +LINE + 5 +CD5 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16719.4691 + 30 +0.0 + 11 +4949.999986 + 21 +16741.119735 + 31 +0.0 + 0 +LINE + 5 +CD6 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16784.421005 + 30 +0.0 + 11 +4920.0 + 21 +16793.081235 + 31 +0.0 + 0 +LINE + 5 +CD7 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16611.215924 + 30 +0.0 + 11 +4987.499986 + 21 +16632.866559 + 31 +0.0 + 0 +LINE + 5 +CD8 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16676.167829 + 30 +0.0 + 11 +4949.999986 + 21 +16697.818465 + 31 +0.0 + 0 +LINE + 5 +CD9 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16741.119735 + 30 +0.0 + 11 +4920.0 + 21 +16749.779965 + 31 +0.0 + 0 +LINE + 5 +CDA + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16567.914654 + 30 +0.0 + 11 +4987.499986 + 21 +16589.565289 + 31 +0.0 + 0 +LINE + 5 +CDB + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16632.866559 + 30 +0.0 + 11 +4949.999986 + 21 +16654.517194 + 31 +0.0 + 0 +LINE + 5 +CDC + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16697.818465 + 30 +0.0 + 11 +4920.0 + 21 +16706.478695 + 31 +0.0 + 0 +LINE + 5 +CDD + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16524.613384 + 30 +0.0 + 11 +4987.499986 + 21 +16546.264019 + 31 +0.0 + 0 +LINE + 5 +CDE + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16589.565289 + 30 +0.0 + 11 +4949.999986 + 21 +16611.215924 + 31 +0.0 + 0 +LINE + 5 +CDF + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16654.517194 + 30 +0.0 + 11 +4920.0 + 21 +16663.177425 + 31 +0.0 + 0 +LINE + 5 +CE0 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16481.312114 + 30 +0.0 + 11 +4987.499986 + 21 +16502.962749 + 31 +0.0 + 0 +LINE + 5 +CE1 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16546.264019 + 30 +0.0 + 11 +4949.999986 + 21 +16567.914654 + 31 +0.0 + 0 +LINE + 5 +CE2 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16611.215924 + 30 +0.0 + 11 +4920.0 + 21 +16619.876155 + 31 +0.0 + 0 +LINE + 5 +CE3 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16438.010844 + 30 +0.0 + 11 +4987.499986 + 21 +16459.661479 + 31 +0.0 + 0 +LINE + 5 +CE4 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16502.962749 + 30 +0.0 + 11 +4949.999986 + 21 +16524.613384 + 31 +0.0 + 0 +LINE + 5 +CE5 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16567.914654 + 30 +0.0 + 11 +4920.0 + 21 +16576.574885 + 31 +0.0 + 0 +LINE + 5 +CE6 + 8 +0 + 62 + 0 + 10 +4999.999986 + 20 +16394.709573 + 30 +0.0 + 11 +4987.499986 + 21 +16416.360209 + 31 +0.0 + 0 +LINE + 5 +CE7 + 8 +0 + 62 + 0 + 10 +4962.499986 + 20 +16459.661479 + 30 +0.0 + 11 +4949.999986 + 21 +16481.312114 + 31 +0.0 + 0 +LINE + 5 +CE8 + 8 +0 + 62 + 0 + 10 +4924.999986 + 20 +16524.613384 + 30 +0.0 + 11 +4920.0 + 21 +16533.273615 + 31 +0.0 + 0 +LINE + 5 +CE9 + 8 +0 + 62 + 0 + 10 +4999.999987 + 20 +16351.408303 + 30 +0.0 + 11 +4987.499987 + 21 +16373.058938 + 31 +0.0 + 0 +LINE + 5 +CEA + 8 +0 + 62 + 0 + 10 +4962.499987 + 20 +16416.360209 + 30 +0.0 + 11 +4949.999987 + 21 +16438.010844 + 31 +0.0 + 0 +LINE + 5 +CEB + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16481.312114 + 30 +0.0 + 11 +4920.0 + 21 +16489.972345 + 31 +0.0 + 0 +LINE + 5 +CEC + 8 +0 + 62 + 0 + 10 +4999.999987 + 20 +16308.107033 + 30 +0.0 + 11 +4987.499987 + 21 +16329.757668 + 31 +0.0 + 0 +LINE + 5 +CED + 8 +0 + 62 + 0 + 10 +4962.499987 + 20 +16373.058938 + 30 +0.0 + 11 +4949.999987 + 21 +16394.709574 + 31 +0.0 + 0 +LINE + 5 +CEE + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16438.010844 + 30 +0.0 + 11 +4920.0 + 21 +16446.671075 + 31 +0.0 + 0 +LINE + 5 +CEF + 8 +0 + 62 + 0 + 10 +4999.999987 + 20 +16264.805763 + 30 +0.0 + 11 +4987.499987 + 21 +16286.456398 + 31 +0.0 + 0 +LINE + 5 +CF0 + 8 +0 + 62 + 0 + 10 +4962.499987 + 20 +16329.757668 + 30 +0.0 + 11 +4949.999987 + 21 +16351.408303 + 31 +0.0 + 0 +LINE + 5 +CF1 + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16394.709574 + 30 +0.0 + 11 +4920.0 + 21 +16403.369805 + 31 +0.0 + 0 +LINE + 5 +CF2 + 8 +0 + 62 + 0 + 10 +4999.999987 + 20 +16221.504493 + 30 +0.0 + 11 +4987.499987 + 21 +16243.155128 + 31 +0.0 + 0 +LINE + 5 +CF3 + 8 +0 + 62 + 0 + 10 +4962.499987 + 20 +16286.456398 + 30 +0.0 + 11 +4949.999987 + 21 +16308.107033 + 31 +0.0 + 0 +LINE + 5 +CF4 + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16351.408303 + 30 +0.0 + 11 +4920.0 + 21 +16360.068535 + 31 +0.0 + 0 +LINE + 5 +CF5 + 8 +0 + 62 + 0 + 10 +4999.999987 + 20 +16178.203223 + 30 +0.0 + 11 +4987.499987 + 21 +16199.853858 + 31 +0.0 + 0 +LINE + 5 +CF6 + 8 +0 + 62 + 0 + 10 +4962.499987 + 20 +16243.155128 + 30 +0.0 + 11 +4949.999987 + 21 +16264.805763 + 31 +0.0 + 0 +LINE + 5 +CF7 + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16308.107033 + 30 +0.0 + 11 +4920.0 + 21 +16316.767265 + 31 +0.0 + 0 +LINE + 5 +CF8 + 8 +0 + 62 + 0 + 10 +4999.999987 + 20 +16134.901953 + 30 +0.0 + 11 +4987.499987 + 21 +16156.552588 + 31 +0.0 + 0 +LINE + 5 +CF9 + 8 +0 + 62 + 0 + 10 +4962.499987 + 20 +16199.853858 + 30 +0.0 + 11 +4949.999987 + 21 +16221.504493 + 31 +0.0 + 0 +LINE + 5 +CFA + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16264.805763 + 30 +0.0 + 11 +4920.0 + 21 +16273.465995 + 31 +0.0 + 0 +LINE + 5 +CFB + 8 +0 + 62 + 0 + 10 +4962.499987 + 20 +16156.552588 + 30 +0.0 + 11 +4949.999987 + 21 +16178.203223 + 31 +0.0 + 0 +LINE + 5 +CFC + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16221.504493 + 30 +0.0 + 11 +4920.0 + 21 +16230.164725 + 31 +0.0 + 0 +LINE + 5 +CFD + 8 +0 + 62 + 0 + 10 +4962.212073 + 20 +16113.75 + 30 +0.0 + 11 +4949.999987 + 21 +16134.901953 + 31 +0.0 + 0 +LINE + 5 +CFE + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16178.203223 + 30 +0.0 + 11 +4920.0 + 21 +16186.863455 + 31 +0.0 + 0 +LINE + 5 +CFF + 8 +0 + 62 + 0 + 10 +4924.999987 + 20 +16134.901953 + 30 +0.0 + 11 +4920.0 + 21 +16143.562185 + 31 +0.0 + 0 +LINE + 5 +D00 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17130.831166 + 30 +0.0 + 11 +4987.499985 + 21 +17152.481801 + 31 +0.0 + 0 +LINE + 5 +D01 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17195.783071 + 30 +0.0 + 11 +4949.999985 + 21 +17217.433706 + 31 +0.0 + 0 +LINE + 5 +D02 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17260.734976 + 30 +0.0 + 11 +4920.0 + 21 +17269.395205 + 31 +0.0 + 0 +LINE + 5 +D03 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17174.132436 + 30 +0.0 + 11 +4987.499985 + 21 +17195.783071 + 31 +0.0 + 0 +LINE + 5 +D04 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17239.084341 + 30 +0.0 + 11 +4949.999985 + 21 +17260.734976 + 31 +0.0 + 0 +LINE + 5 +D05 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17304.036247 + 30 +0.0 + 11 +4920.0 + 21 +17312.696475 + 31 +0.0 + 0 +LINE + 5 +D06 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17217.433706 + 30 +0.0 + 11 +4987.499985 + 21 +17239.084341 + 31 +0.0 + 0 +LINE + 5 +D07 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17282.385611 + 30 +0.0 + 11 +4949.999985 + 21 +17304.036246 + 31 +0.0 + 0 +LINE + 5 +D08 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17347.337517 + 30 +0.0 + 11 +4920.0 + 21 +17355.997745 + 31 +0.0 + 0 +LINE + 5 +D09 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17260.734976 + 30 +0.0 + 11 +4987.499985 + 21 +17282.385611 + 31 +0.0 + 0 +LINE + 5 +D0A + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17325.686882 + 30 +0.0 + 11 +4949.999985 + 21 +17347.337517 + 31 +0.0 + 0 +LINE + 5 +D0B + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17390.638787 + 30 +0.0 + 11 +4920.0 + 21 +17399.299015 + 31 +0.0 + 0 +LINE + 5 +D0C + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17304.036246 + 30 +0.0 + 11 +4987.499985 + 21 +17325.686881 + 31 +0.0 + 0 +LINE + 5 +D0D + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17368.988152 + 30 +0.0 + 11 +4949.999985 + 21 +17390.638787 + 31 +0.0 + 0 +LINE + 5 +D0E + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17433.940057 + 30 +0.0 + 11 +4920.0 + 21 +17442.600285 + 31 +0.0 + 0 +LINE + 5 +D0F + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17347.337517 + 30 +0.0 + 11 +4987.499985 + 21 +17368.988152 + 31 +0.0 + 0 +LINE + 5 +D10 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17412.289422 + 30 +0.0 + 11 +4949.999985 + 21 +17433.940057 + 31 +0.0 + 0 +LINE + 5 +D11 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17477.241327 + 30 +0.0 + 11 +4920.0 + 21 +17485.901555 + 31 +0.0 + 0 +LINE + 5 +D12 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17390.638787 + 30 +0.0 + 11 +4987.499985 + 21 +17412.289422 + 31 +0.0 + 0 +LINE + 5 +D13 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17455.590692 + 30 +0.0 + 11 +4949.999985 + 21 +17477.241327 + 31 +0.0 + 0 +LINE + 5 +D14 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17520.542597 + 30 +0.0 + 11 +4920.0 + 21 +17529.202825 + 31 +0.0 + 0 +LINE + 5 +D15 + 8 +0 + 62 + 0 + 10 +4999.999985 + 20 +17433.940057 + 30 +0.0 + 11 +4987.499985 + 21 +17455.590692 + 31 +0.0 + 0 +LINE + 5 +D16 + 8 +0 + 62 + 0 + 10 +4962.499985 + 20 +17498.891962 + 30 +0.0 + 11 +4949.999985 + 21 +17520.542597 + 31 +0.0 + 0 +LINE + 5 +D17 + 8 +0 + 62 + 0 + 10 +4924.999985 + 20 +17563.843867 + 30 +0.0 + 11 +4920.0 + 21 +17572.504095 + 31 +0.0 + 0 +LINE + 5 +D18 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17477.241327 + 30 +0.0 + 11 +4987.499984 + 21 +17498.891962 + 31 +0.0 + 0 +LINE + 5 +D19 + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17542.193232 + 30 +0.0 + 11 +4949.999984 + 21 +17563.843867 + 31 +0.0 + 0 +LINE + 5 +D1A + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17607.145138 + 30 +0.0 + 11 +4920.0 + 21 +17615.805365 + 31 +0.0 + 0 +LINE + 5 +D1B + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17520.542597 + 30 +0.0 + 11 +4987.499984 + 21 +17542.193232 + 31 +0.0 + 0 +LINE + 5 +D1C + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17585.494502 + 30 +0.0 + 11 +4949.999984 + 21 +17607.145137 + 31 +0.0 + 0 +LINE + 5 +D1D + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17650.446408 + 30 +0.0 + 11 +4920.0 + 21 +17659.106635 + 31 +0.0 + 0 +LINE + 5 +D1E + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17563.843867 + 30 +0.0 + 11 +4987.499984 + 21 +17585.494502 + 31 +0.0 + 0 +LINE + 5 +D1F + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17628.795773 + 30 +0.0 + 11 +4949.999984 + 21 +17650.446408 + 31 +0.0 + 0 +LINE + 5 +D20 + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17693.747678 + 30 +0.0 + 11 +4920.0 + 21 +17702.407905 + 31 +0.0 + 0 +LINE + 5 +D21 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17607.145137 + 30 +0.0 + 11 +4987.499984 + 21 +17628.795772 + 31 +0.0 + 0 +LINE + 5 +D22 + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17672.097043 + 30 +0.0 + 11 +4949.999984 + 21 +17693.747678 + 31 +0.0 + 0 +LINE + 5 +D23 + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17737.048948 + 30 +0.0 + 11 +4920.0 + 21 +17745.709175 + 31 +0.0 + 0 +LINE + 5 +D24 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17650.446408 + 30 +0.0 + 11 +4987.499984 + 21 +17672.097043 + 31 +0.0 + 0 +LINE + 5 +D25 + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17715.398313 + 30 +0.0 + 11 +4949.999984 + 21 +17737.048948 + 31 +0.0 + 0 +LINE + 5 +D26 + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17780.350218 + 30 +0.0 + 11 +4920.0 + 21 +17789.010445 + 31 +0.0 + 0 +LINE + 5 +D27 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17693.747678 + 30 +0.0 + 11 +4987.499984 + 21 +17715.398313 + 31 +0.0 + 0 +LINE + 5 +D28 + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17758.699583 + 30 +0.0 + 11 +4949.999984 + 21 +17780.350218 + 31 +0.0 + 0 +LINE + 5 +D29 + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17823.651488 + 30 +0.0 + 11 +4920.0 + 21 +17832.311715 + 31 +0.0 + 0 +LINE + 5 +D2A + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17737.048948 + 30 +0.0 + 11 +4987.499984 + 21 +17758.699583 + 31 +0.0 + 0 +LINE + 5 +D2B + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17802.000853 + 30 +0.0 + 11 +4949.999984 + 21 +17823.651488 + 31 +0.0 + 0 +LINE + 5 +D2C + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17866.952758 + 30 +0.0 + 11 +4920.0 + 21 +17875.612985 + 31 +0.0 + 0 +LINE + 5 +D2D + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17780.350218 + 30 +0.0 + 11 +4987.499984 + 21 +17802.000853 + 31 +0.0 + 0 +LINE + 5 +D2E + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17845.302123 + 30 +0.0 + 11 +4949.999984 + 21 +17866.952758 + 31 +0.0 + 0 +LINE + 5 +D2F + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17910.254029 + 30 +0.0 + 11 +4920.0 + 21 +17918.914255 + 31 +0.0 + 0 +LINE + 5 +D30 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17823.651488 + 30 +0.0 + 11 +4987.499984 + 21 +17845.302123 + 31 +0.0 + 0 +LINE + 5 +D31 + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17888.603393 + 30 +0.0 + 11 +4949.999984 + 21 +17910.254028 + 31 +0.0 + 0 +LINE + 5 +D32 + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17953.555299 + 30 +0.0 + 11 +4920.0 + 21 +17962.215525 + 31 +0.0 + 0 +LINE + 5 +D33 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17866.952758 + 30 +0.0 + 11 +4987.499984 + 21 +17888.603393 + 31 +0.0 + 0 +LINE + 5 +D34 + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17931.904664 + 30 +0.0 + 11 +4949.999984 + 21 +17953.555299 + 31 +0.0 + 0 +LINE + 5 +D35 + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +17996.856569 + 30 +0.0 + 11 +4920.0 + 21 +18005.516795 + 31 +0.0 + 0 +LINE + 5 +D36 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17910.254028 + 30 +0.0 + 11 +4987.499984 + 21 +17931.904663 + 31 +0.0 + 0 +LINE + 5 +D37 + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +17975.205934 + 30 +0.0 + 11 +4949.999984 + 21 +17996.856569 + 31 +0.0 + 0 +LINE + 5 +D38 + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +18040.157839 + 30 +0.0 + 11 +4920.0 + 21 +18048.818065 + 31 +0.0 + 0 +LINE + 5 +D39 + 8 +0 + 62 + 0 + 10 +4999.999984 + 20 +17953.555299 + 30 +0.0 + 11 +4987.499984 + 21 +17975.205934 + 31 +0.0 + 0 +LINE + 5 +D3A + 8 +0 + 62 + 0 + 10 +4962.499984 + 20 +18018.507204 + 30 +0.0 + 11 +4949.999984 + 21 +18040.157839 + 31 +0.0 + 0 +LINE + 5 +D3B + 8 +0 + 62 + 0 + 10 +4924.999984 + 20 +18083.459109 + 30 +0.0 + 11 +4920.0 + 21 +18092.119335 + 31 +0.0 + 0 +LINE + 5 +D3C + 8 +0 + 62 + 0 + 10 +4999.999983 + 20 +17996.856569 + 30 +0.0 + 11 +4987.499983 + 21 +18018.507204 + 31 +0.0 + 0 +LINE + 5 +D3D + 8 +0 + 62 + 0 + 10 +4962.499983 + 20 +18061.808474 + 30 +0.0 + 11 +4949.999983 + 21 +18083.459109 + 31 +0.0 + 0 +LINE + 5 +D3E + 8 +0 + 62 + 0 + 10 +4924.999983 + 20 +18126.760379 + 30 +0.0 + 11 +4920.0 + 21 +18135.420605 + 31 +0.0 + 0 +LINE + 5 +D3F + 8 +0 + 62 + 0 + 10 +4999.999983 + 20 +18040.157839 + 30 +0.0 + 11 +4987.499983 + 21 +18061.808474 + 31 +0.0 + 0 +LINE + 5 +D40 + 8 +0 + 62 + 0 + 10 +4962.499983 + 20 +18105.109744 + 30 +0.0 + 11 +4949.999983 + 21 +18126.760379 + 31 +0.0 + 0 +LINE + 5 +D41 + 8 +0 + 62 + 0 + 10 +4924.999983 + 20 +18170.061649 + 30 +0.0 + 11 +4920.0 + 21 +18178.721875 + 31 +0.0 + 0 +LINE + 5 +D42 + 8 +0 + 62 + 0 + 10 +4999.999983 + 20 +18083.459109 + 30 +0.0 + 11 +4987.499983 + 21 +18105.109744 + 31 +0.0 + 0 +LINE + 5 +D43 + 8 +0 + 62 + 0 + 10 +4962.499983 + 20 +18148.411014 + 30 +0.0 + 11 +4949.999983 + 21 +18170.061649 + 31 +0.0 + 0 +LINE + 5 +D44 + 8 +0 + 62 + 0 + 10 +4924.999983 + 20 +18213.36292 + 30 +0.0 + 11 +4920.0 + 21 +18222.023145 + 31 +0.0 + 0 +LINE + 5 +D45 + 8 +0 + 62 + 0 + 10 +4999.999983 + 20 +18126.760379 + 30 +0.0 + 11 +4987.499983 + 21 +18148.411014 + 31 +0.0 + 0 +LINE + 5 +D46 + 8 +0 + 62 + 0 + 10 +4962.499983 + 20 +18191.712284 + 30 +0.0 + 11 +4949.999983 + 21 +18213.362919 + 31 +0.0 + 0 +LINE + 5 +D47 + 8 +0 + 62 + 0 + 10 +4999.999983 + 20 +18170.061649 + 30 +0.0 + 11 +4987.499983 + 21 +18191.712284 + 31 +0.0 + 0 +LINE + 5 +D48 + 8 +0 + 62 + 0 + 10 +4962.499983 + 20 +18235.013555 + 30 +0.0 + 11 +4953.125867 + 21 +18251.25 + 31 +0.0 + 0 +LINE + 5 +D49 + 8 +0 + 62 + 0 + 10 +4999.999983 + 20 +18213.362919 + 30 +0.0 + 11 +4987.499983 + 21 +18235.013554 + 31 +0.0 + 0 +LINE + 5 +D4A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17078.869615 + 30 +0.0 + 11 +4925.000015 + 21 +17087.529896 + 31 +0.0 + 0 +LINE + 5 +D4B + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17130.831166 + 30 +0.0 + 11 +4962.500015 + 21 +17152.481801 + 31 +0.0 + 0 +LINE + 5 +D4C + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17195.783071 + 30 +0.0 + 11 +5000.0 + 21 +17217.43368 + 31 +0.0 + 0 +LINE + 5 +D4D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17122.170885 + 30 +0.0 + 11 +4925.000015 + 21 +17130.831166 + 31 +0.0 + 0 +LINE + 5 +D4E + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17174.132436 + 30 +0.0 + 11 +4962.500015 + 21 +17195.783071 + 31 +0.0 + 0 +LINE + 5 +D4F + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17239.084341 + 30 +0.0 + 11 +5000.0 + 21 +17260.73495 + 31 +0.0 + 0 +LINE + 5 +D50 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17165.472155 + 30 +0.0 + 11 +4925.000015 + 21 +17174.132436 + 31 +0.0 + 0 +LINE + 5 +D51 + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17217.433706 + 30 +0.0 + 11 +4962.500015 + 21 +17239.084341 + 31 +0.0 + 0 +LINE + 5 +D52 + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17282.385611 + 30 +0.0 + 11 +5000.0 + 21 +17304.03622 + 31 +0.0 + 0 +LINE + 5 +D53 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17208.773425 + 30 +0.0 + 11 +4925.000015 + 21 +17217.433706 + 31 +0.0 + 0 +LINE + 5 +D54 + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17260.734976 + 30 +0.0 + 11 +4962.500015 + 21 +17282.385611 + 31 +0.0 + 0 +LINE + 5 +D55 + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17325.686881 + 30 +0.0 + 11 +5000.0 + 21 +17347.33749 + 31 +0.0 + 0 +LINE + 5 +D56 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17252.074695 + 30 +0.0 + 11 +4925.000015 + 21 +17260.734976 + 31 +0.0 + 0 +LINE + 5 +D57 + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17304.036246 + 30 +0.0 + 11 +4962.500015 + 21 +17325.686881 + 31 +0.0 + 0 +LINE + 5 +D58 + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17368.988152 + 30 +0.0 + 11 +5000.0 + 21 +17390.63876 + 31 +0.0 + 0 +LINE + 5 +D59 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17295.375965 + 30 +0.0 + 11 +4925.000015 + 21 +17304.036246 + 31 +0.0 + 0 +LINE + 5 +D5A + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17347.337516 + 30 +0.0 + 11 +4962.500015 + 21 +17368.988152 + 31 +0.0 + 0 +LINE + 5 +D5B + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17412.289422 + 30 +0.0 + 11 +5000.0 + 21 +17433.94003 + 31 +0.0 + 0 +LINE + 5 +D5C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17338.677235 + 30 +0.0 + 11 +4925.000016 + 21 +17347.337516 + 31 +0.0 + 0 +LINE + 5 +D5D + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17390.638787 + 30 +0.0 + 11 +4962.500016 + 21 +17412.289422 + 31 +0.0 + 0 +LINE + 5 +D5E + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17455.590692 + 30 +0.0 + 11 +5000.0 + 21 +17477.2413 + 31 +0.0 + 0 +LINE + 5 +D5F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17381.978505 + 30 +0.0 + 11 +4925.000016 + 21 +17390.638787 + 31 +0.0 + 0 +LINE + 5 +D60 + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17433.940057 + 30 +0.0 + 11 +4962.500016 + 21 +17455.590692 + 31 +0.0 + 0 +LINE + 5 +D61 + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17498.891962 + 30 +0.0 + 11 +5000.0 + 21 +17520.54257 + 31 +0.0 + 0 +LINE + 5 +D62 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17425.279775 + 30 +0.0 + 11 +4925.000016 + 21 +17433.940057 + 31 +0.0 + 0 +LINE + 5 +D63 + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17477.241327 + 30 +0.0 + 11 +4962.500016 + 21 +17498.891962 + 31 +0.0 + 0 +LINE + 5 +D64 + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17542.193232 + 30 +0.0 + 11 +5000.0 + 21 +17563.84384 + 31 +0.0 + 0 +LINE + 5 +D65 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17468.581045 + 30 +0.0 + 11 +4925.000016 + 21 +17477.241327 + 31 +0.0 + 0 +LINE + 5 +D66 + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17520.542597 + 30 +0.0 + 11 +4962.500016 + 21 +17542.193232 + 31 +0.0 + 0 +LINE + 5 +D67 + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17585.494502 + 30 +0.0 + 11 +5000.0 + 21 +17607.14511 + 31 +0.0 + 0 +LINE + 5 +D68 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17511.882315 + 30 +0.0 + 11 +4925.000016 + 21 +17520.542597 + 31 +0.0 + 0 +LINE + 5 +D69 + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17563.843867 + 30 +0.0 + 11 +4962.500016 + 21 +17585.494502 + 31 +0.0 + 0 +LINE + 5 +D6A + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17628.795772 + 30 +0.0 + 11 +5000.0 + 21 +17650.44638 + 31 +0.0 + 0 +LINE + 5 +D6B + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17555.183585 + 30 +0.0 + 11 +4925.000016 + 21 +17563.843867 + 31 +0.0 + 0 +LINE + 5 +D6C + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17607.145137 + 30 +0.0 + 11 +4962.500016 + 21 +17628.795772 + 31 +0.0 + 0 +LINE + 5 +D6D + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17672.097043 + 30 +0.0 + 11 +5000.0 + 21 +17693.74765 + 31 +0.0 + 0 +LINE + 5 +D6E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17598.484855 + 30 +0.0 + 11 +4925.000016 + 21 +17607.145137 + 31 +0.0 + 0 +LINE + 5 +D6F + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17650.446407 + 30 +0.0 + 11 +4962.500016 + 21 +17672.097043 + 31 +0.0 + 0 +LINE + 5 +D70 + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17715.398313 + 30 +0.0 + 11 +5000.0 + 21 +17737.04892 + 31 +0.0 + 0 +LINE + 5 +D71 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17641.786125 + 30 +0.0 + 11 +4925.000016 + 21 +17650.446407 + 31 +0.0 + 0 +LINE + 5 +D72 + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17693.747678 + 30 +0.0 + 11 +4962.500016 + 21 +17715.398313 + 31 +0.0 + 0 +LINE + 5 +D73 + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17758.699583 + 30 +0.0 + 11 +5000.0 + 21 +17780.35019 + 31 +0.0 + 0 +LINE + 5 +D74 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17685.087395 + 30 +0.0 + 11 +4925.000016 + 21 +17693.747678 + 31 +0.0 + 0 +LINE + 5 +D75 + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17737.048948 + 30 +0.0 + 11 +4962.500016 + 21 +17758.699583 + 31 +0.0 + 0 +LINE + 5 +D76 + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17802.000853 + 30 +0.0 + 11 +5000.0 + 21 +17823.65146 + 31 +0.0 + 0 +LINE + 5 +D77 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17728.388665 + 30 +0.0 + 11 +4925.000016 + 21 +17737.048948 + 31 +0.0 + 0 +LINE + 5 +D78 + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17780.350218 + 30 +0.0 + 11 +4962.500016 + 21 +17802.000853 + 31 +0.0 + 0 +LINE + 5 +D79 + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17845.302123 + 30 +0.0 + 11 +5000.0 + 21 +17866.95273 + 31 +0.0 + 0 +LINE + 5 +D7A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17771.689935 + 30 +0.0 + 11 +4925.000016 + 21 +17780.350218 + 31 +0.0 + 0 +LINE + 5 +D7B + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17823.651488 + 30 +0.0 + 11 +4962.500016 + 21 +17845.302123 + 31 +0.0 + 0 +LINE + 5 +D7C + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17888.603393 + 30 +0.0 + 11 +5000.0 + 21 +17910.254 + 31 +0.0 + 0 +LINE + 5 +D7D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17814.991205 + 30 +0.0 + 11 +4925.000016 + 21 +17823.651488 + 31 +0.0 + 0 +LINE + 5 +D7E + 8 +0 + 62 + 0 + 10 +4950.000016 + 20 +17866.952758 + 30 +0.0 + 11 +4962.500016 + 21 +17888.603393 + 31 +0.0 + 0 +LINE + 5 +D7F + 8 +0 + 62 + 0 + 10 +4987.500016 + 20 +17931.904663 + 30 +0.0 + 11 +5000.0 + 21 +17953.55527 + 31 +0.0 + 0 +LINE + 5 +D80 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17858.292475 + 30 +0.0 + 11 +4925.000017 + 21 +17866.952758 + 31 +0.0 + 0 +LINE + 5 +D81 + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +17910.254028 + 30 +0.0 + 11 +4962.500017 + 21 +17931.904663 + 31 +0.0 + 0 +LINE + 5 +D82 + 8 +0 + 62 + 0 + 10 +4987.500017 + 20 +17975.205934 + 30 +0.0 + 11 +5000.0 + 21 +17996.85654 + 31 +0.0 + 0 +LINE + 5 +D83 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17901.593745 + 30 +0.0 + 11 +4925.000017 + 21 +17910.254028 + 31 +0.0 + 0 +LINE + 5 +D84 + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +17953.555298 + 30 +0.0 + 11 +4962.500017 + 21 +17975.205934 + 31 +0.0 + 0 +LINE + 5 +D85 + 8 +0 + 62 + 0 + 10 +4987.500017 + 20 +18018.507204 + 30 +0.0 + 11 +5000.0 + 21 +18040.15781 + 31 +0.0 + 0 +LINE + 5 +D86 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17944.895015 + 30 +0.0 + 11 +4925.000017 + 21 +17953.555298 + 31 +0.0 + 0 +LINE + 5 +D87 + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +17996.856569 + 30 +0.0 + 11 +4962.500017 + 21 +18018.507204 + 31 +0.0 + 0 +LINE + 5 +D88 + 8 +0 + 62 + 0 + 10 +4987.500017 + 20 +18061.808474 + 30 +0.0 + 11 +5000.0 + 21 +18083.45908 + 31 +0.0 + 0 +LINE + 5 +D89 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17988.196285 + 30 +0.0 + 11 +4925.000017 + 21 +17996.856569 + 31 +0.0 + 0 +LINE + 5 +D8A + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +18040.157839 + 30 +0.0 + 11 +4962.500017 + 21 +18061.808474 + 31 +0.0 + 0 +LINE + 5 +D8B + 8 +0 + 62 + 0 + 10 +4987.500017 + 20 +18105.109744 + 30 +0.0 + 11 +5000.0 + 21 +18126.76035 + 31 +0.0 + 0 +LINE + 5 +D8C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +18031.497555 + 30 +0.0 + 11 +4925.000017 + 21 +18040.157839 + 31 +0.0 + 0 +LINE + 5 +D8D + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +18083.459109 + 30 +0.0 + 11 +4962.500017 + 21 +18105.109744 + 31 +0.0 + 0 +LINE + 5 +D8E + 8 +0 + 62 + 0 + 10 +4987.500017 + 20 +18148.411014 + 30 +0.0 + 11 +5000.0 + 21 +18170.06162 + 31 +0.0 + 0 +LINE + 5 +D8F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +18074.798825 + 30 +0.0 + 11 +4925.000017 + 21 +18083.459109 + 31 +0.0 + 0 +LINE + 5 +D90 + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +18126.760379 + 30 +0.0 + 11 +4962.500017 + 21 +18148.411014 + 31 +0.0 + 0 +LINE + 5 +D91 + 8 +0 + 62 + 0 + 10 +4987.500017 + 20 +18191.712284 + 30 +0.0 + 11 +5000.0 + 21 +18213.36289 + 31 +0.0 + 0 +LINE + 5 +D92 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +18118.100095 + 30 +0.0 + 11 +4925.000017 + 21 +18126.760379 + 31 +0.0 + 0 +LINE + 5 +D93 + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +18170.061649 + 30 +0.0 + 11 +4962.500017 + 21 +18191.712284 + 31 +0.0 + 0 +LINE + 5 +D94 + 8 +0 + 62 + 0 + 10 +4987.500017 + 20 +18235.013554 + 30 +0.0 + 11 +4996.874133 + 21 +18251.25 + 31 +0.0 + 0 +LINE + 5 +D95 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +18161.401365 + 30 +0.0 + 11 +4925.000017 + 21 +18170.061649 + 31 +0.0 + 0 +LINE + 5 +D96 + 8 +0 + 62 + 0 + 10 +4950.000017 + 20 +18213.362919 + 30 +0.0 + 11 +4962.500017 + 21 +18235.013554 + 31 +0.0 + 0 +LINE + 5 +D97 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +18204.702635 + 30 +0.0 + 11 +4925.000017 + 21 +18213.362919 + 31 +0.0 + 0 +LINE + 5 +D98 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +18248.003905 + 30 +0.0 + 11 +4921.874134 + 21 +18251.25 + 31 +0.0 + 0 +LINE + 5 +D99 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +17035.568345 + 30 +0.0 + 11 +4925.000015 + 21 +17044.228625 + 31 +0.0 + 0 +LINE + 5 +D9A + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17087.529896 + 30 +0.0 + 11 +4962.500015 + 21 +17109.180531 + 31 +0.0 + 0 +LINE + 5 +D9B + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17152.481801 + 30 +0.0 + 11 +5000.0 + 21 +17174.13241 + 31 +0.0 + 0 +LINE + 5 +D9C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16992.267075 + 30 +0.0 + 11 +4925.000015 + 21 +17000.927355 + 31 +0.0 + 0 +LINE + 5 +D9D + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17044.228625 + 30 +0.0 + 11 +4962.500015 + 21 +17065.879261 + 31 +0.0 + 0 +LINE + 5 +D9E + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17109.180531 + 30 +0.0 + 11 +5000.0 + 21 +17130.83114 + 31 +0.0 + 0 +LINE + 5 +D9F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16948.965805 + 30 +0.0 + 11 +4925.000015 + 21 +16957.626085 + 31 +0.0 + 0 +LINE + 5 +DA0 + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +17000.927355 + 30 +0.0 + 11 +4962.500015 + 21 +17022.57799 + 31 +0.0 + 0 +LINE + 5 +DA1 + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17065.879261 + 30 +0.0 + 11 +5000.0 + 21 +17087.52987 + 31 +0.0 + 0 +LINE + 5 +DA2 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16905.664535 + 30 +0.0 + 11 +4925.000015 + 21 +16914.324815 + 31 +0.0 + 0 +LINE + 5 +DA3 + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +16957.626085 + 30 +0.0 + 11 +4962.500015 + 21 +16979.27672 + 31 +0.0 + 0 +LINE + 5 +DA4 + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +17022.57799 + 30 +0.0 + 11 +5000.0 + 21 +17044.2286 + 31 +0.0 + 0 +LINE + 5 +DA5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16862.363265 + 30 +0.0 + 11 +4925.000015 + 21 +16871.023545 + 31 +0.0 + 0 +LINE + 5 +DA6 + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +16914.324815 + 30 +0.0 + 11 +4962.500015 + 21 +16935.97545 + 31 +0.0 + 0 +LINE + 5 +DA7 + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +16979.27672 + 30 +0.0 + 11 +5000.0 + 21 +17000.92733 + 31 +0.0 + 0 +LINE + 5 +DA8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16819.061995 + 30 +0.0 + 11 +4925.000015 + 21 +16827.722275 + 31 +0.0 + 0 +LINE + 5 +DA9 + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +16871.023545 + 30 +0.0 + 11 +4962.500015 + 21 +16892.67418 + 31 +0.0 + 0 +LINE + 5 +DAA + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +16935.97545 + 30 +0.0 + 11 +5000.0 + 21 +16957.62606 + 31 +0.0 + 0 +LINE + 5 +DAB + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16775.760725 + 30 +0.0 + 11 +4925.000015 + 21 +16784.421005 + 31 +0.0 + 0 +LINE + 5 +DAC + 8 +0 + 62 + 0 + 10 +4950.000015 + 20 +16827.722275 + 30 +0.0 + 11 +4962.500015 + 21 +16849.37291 + 31 +0.0 + 0 +LINE + 5 +DAD + 8 +0 + 62 + 0 + 10 +4987.500015 + 20 +16892.67418 + 30 +0.0 + 11 +5000.0 + 21 +16914.32479 + 31 +0.0 + 0 +LINE + 5 +DAE + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16732.459455 + 30 +0.0 + 11 +4925.000014 + 21 +16741.119734 + 31 +0.0 + 0 +LINE + 5 +DAF + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16784.421005 + 30 +0.0 + 11 +4962.500014 + 21 +16806.07164 + 31 +0.0 + 0 +LINE + 5 +DB0 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16849.37291 + 30 +0.0 + 11 +5000.0 + 21 +16871.02352 + 31 +0.0 + 0 +LINE + 5 +DB1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16689.158185 + 30 +0.0 + 11 +4925.000014 + 21 +16697.818464 + 31 +0.0 + 0 +LINE + 5 +DB2 + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16741.119734 + 30 +0.0 + 11 +4962.500014 + 21 +16762.77037 + 31 +0.0 + 0 +LINE + 5 +DB3 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16806.07164 + 30 +0.0 + 11 +5000.0 + 21 +16827.72225 + 31 +0.0 + 0 +LINE + 5 +DB4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16645.856915 + 30 +0.0 + 11 +4925.000014 + 21 +16654.517194 + 31 +0.0 + 0 +LINE + 5 +DB5 + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16697.818464 + 30 +0.0 + 11 +4962.500014 + 21 +16719.469099 + 31 +0.0 + 0 +LINE + 5 +DB6 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16762.77037 + 30 +0.0 + 11 +5000.0 + 21 +16784.42098 + 31 +0.0 + 0 +LINE + 5 +DB7 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16602.555645 + 30 +0.0 + 11 +4925.000014 + 21 +16611.215924 + 31 +0.0 + 0 +LINE + 5 +DB8 + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16654.517194 + 30 +0.0 + 11 +4962.500014 + 21 +16676.167829 + 31 +0.0 + 0 +LINE + 5 +DB9 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16719.469099 + 30 +0.0 + 11 +5000.0 + 21 +16741.11971 + 31 +0.0 + 0 +LINE + 5 +DBA + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16559.254375 + 30 +0.0 + 11 +4925.000014 + 21 +16567.914654 + 31 +0.0 + 0 +LINE + 5 +DBB + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16611.215924 + 30 +0.0 + 11 +4962.500014 + 21 +16632.866559 + 31 +0.0 + 0 +LINE + 5 +DBC + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16676.167829 + 30 +0.0 + 11 +5000.0 + 21 +16697.81844 + 31 +0.0 + 0 +LINE + 5 +DBD + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16515.953105 + 30 +0.0 + 11 +4925.000014 + 21 +16524.613384 + 31 +0.0 + 0 +LINE + 5 +DBE + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16567.914654 + 30 +0.0 + 11 +4962.500014 + 21 +16589.565289 + 31 +0.0 + 0 +LINE + 5 +DBF + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16632.866559 + 30 +0.0 + 11 +5000.0 + 21 +16654.51717 + 31 +0.0 + 0 +LINE + 5 +DC0 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16472.651835 + 30 +0.0 + 11 +4925.000014 + 21 +16481.312114 + 31 +0.0 + 0 +LINE + 5 +DC1 + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16524.613384 + 30 +0.0 + 11 +4962.500014 + 21 +16546.264019 + 31 +0.0 + 0 +LINE + 5 +DC2 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16589.565289 + 30 +0.0 + 11 +5000.0 + 21 +16611.2159 + 31 +0.0 + 0 +LINE + 5 +DC3 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16429.350565 + 30 +0.0 + 11 +4925.000014 + 21 +16438.010843 + 31 +0.0 + 0 +LINE + 5 +DC4 + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16481.312114 + 30 +0.0 + 11 +4962.500014 + 21 +16502.962749 + 31 +0.0 + 0 +LINE + 5 +DC5 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16546.264019 + 30 +0.0 + 11 +5000.0 + 21 +16567.91463 + 31 +0.0 + 0 +LINE + 5 +DC6 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16386.049295 + 30 +0.0 + 11 +4925.000014 + 21 +16394.709573 + 31 +0.0 + 0 +LINE + 5 +DC7 + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16438.010843 + 30 +0.0 + 11 +4962.500014 + 21 +16459.661479 + 31 +0.0 + 0 +LINE + 5 +DC8 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16502.962749 + 30 +0.0 + 11 +5000.0 + 21 +16524.61336 + 31 +0.0 + 0 +LINE + 5 +DC9 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16342.748025 + 30 +0.0 + 11 +4925.000014 + 21 +16351.408303 + 31 +0.0 + 0 +LINE + 5 +DCA + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16394.709573 + 30 +0.0 + 11 +4962.500014 + 21 +16416.360208 + 31 +0.0 + 0 +LINE + 5 +DCB + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16459.661479 + 30 +0.0 + 11 +5000.0 + 21 +16481.31209 + 31 +0.0 + 0 +LINE + 5 +DCC + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16299.446755 + 30 +0.0 + 11 +4925.000014 + 21 +16308.107033 + 31 +0.0 + 0 +LINE + 5 +DCD + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16351.408303 + 30 +0.0 + 11 +4962.500014 + 21 +16373.058938 + 31 +0.0 + 0 +LINE + 5 +DCE + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16416.360208 + 30 +0.0 + 11 +5000.0 + 21 +16438.01082 + 31 +0.0 + 0 +LINE + 5 +DCF + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16256.145485 + 30 +0.0 + 11 +4925.000014 + 21 +16264.805763 + 31 +0.0 + 0 +LINE + 5 +DD0 + 8 +0 + 62 + 0 + 10 +4950.000014 + 20 +16308.107033 + 30 +0.0 + 11 +4962.500014 + 21 +16329.757668 + 31 +0.0 + 0 +LINE + 5 +DD1 + 8 +0 + 62 + 0 + 10 +4987.500014 + 20 +16373.058938 + 30 +0.0 + 11 +5000.0 + 21 +16394.70955 + 31 +0.0 + 0 +LINE + 5 +DD2 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16212.844215 + 30 +0.0 + 11 +4925.000013 + 21 +16221.504493 + 31 +0.0 + 0 +LINE + 5 +DD3 + 8 +0 + 62 + 0 + 10 +4950.000013 + 20 +16264.805763 + 30 +0.0 + 11 +4962.500013 + 21 +16286.456398 + 31 +0.0 + 0 +LINE + 5 +DD4 + 8 +0 + 62 + 0 + 10 +4987.500013 + 20 +16329.757668 + 30 +0.0 + 11 +5000.0 + 21 +16351.40828 + 31 +0.0 + 0 +LINE + 5 +DD5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16169.542945 + 30 +0.0 + 11 +4925.000013 + 21 +16178.203223 + 31 +0.0 + 0 +LINE + 5 +DD6 + 8 +0 + 62 + 0 + 10 +4950.000013 + 20 +16221.504493 + 30 +0.0 + 11 +4962.500013 + 21 +16243.155128 + 31 +0.0 + 0 +LINE + 5 +DD7 + 8 +0 + 62 + 0 + 10 +4987.500013 + 20 +16286.456398 + 30 +0.0 + 11 +5000.0 + 21 +16308.10701 + 31 +0.0 + 0 +LINE + 5 +DD8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +16126.241675 + 30 +0.0 + 11 +4925.000013 + 21 +16134.901952 + 31 +0.0 + 0 +LINE + 5 +DD9 + 8 +0 + 62 + 0 + 10 +4950.000013 + 20 +16178.203223 + 30 +0.0 + 11 +4962.500013 + 21 +16199.853858 + 31 +0.0 + 0 +LINE + 5 +DDA + 8 +0 + 62 + 0 + 10 +4987.500013 + 20 +16243.155128 + 30 +0.0 + 11 +5000.0 + 21 +16264.80574 + 31 +0.0 + 0 +LINE + 5 +DDB + 8 +0 + 62 + 0 + 10 +4950.000013 + 20 +16134.901952 + 30 +0.0 + 11 +4962.500013 + 21 +16156.552588 + 31 +0.0 + 0 +LINE + 5 +DDC + 8 +0 + 62 + 0 + 10 +4987.500013 + 20 +16199.853858 + 30 +0.0 + 11 +5000.0 + 21 +16221.50447 + 31 +0.0 + 0 +LINE + 5 +DDD + 8 +0 + 62 + 0 + 10 +4987.500013 + 20 +16156.552588 + 30 +0.0 + 11 +5000.0 + 21 +16178.2032 + 31 +0.0 + 0 +LINE + 5 +DDE + 8 +0 + 62 + 0 + 10 +4987.787928 + 20 +16113.75 + 30 +0.0 + 11 +5000.0 + 21 +16134.90193 + 31 +0.0 + 0 +ENDBLK + 5 +DDF + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X44 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X44 + 1 + + 0 +LINE + 5 +DE1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11891.37747 + 30 +0.0 + 11 +4950.0 + 21 +11891.37747 + 31 +0.0 + 0 +LINE + 5 +DE2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11913.028105 + 30 +0.0 + 11 +4987.5 + 21 +11913.028105 + 31 +0.0 + 0 +LINE + 5 +DE3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11934.67874 + 30 +0.0 + 11 +4950.0 + 21 +11934.67874 + 31 +0.0 + 0 +LINE + 5 +DE4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11956.329375 + 30 +0.0 + 11 +4987.5 + 21 +11956.329375 + 31 +0.0 + 0 +LINE + 5 +DE5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11977.98001 + 30 +0.0 + 11 +4950.0 + 21 +11977.98001 + 31 +0.0 + 0 +LINE + 5 +DE6 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11999.630645 + 30 +0.0 + 11 +4987.5 + 21 +11999.630645 + 31 +0.0 + 0 +LINE + 5 +DE7 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12021.28128 + 30 +0.0 + 11 +4950.0 + 21 +12021.28128 + 31 +0.0 + 0 +LINE + 5 +DE8 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12042.931915 + 30 +0.0 + 11 +4987.5 + 21 +12042.931915 + 31 +0.0 + 0 +LINE + 5 +DE9 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12064.58255 + 30 +0.0 + 11 +4950.0 + 21 +12064.58255 + 31 +0.0 + 0 +LINE + 5 +DEA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12086.233185 + 30 +0.0 + 11 +4987.5 + 21 +12086.233185 + 31 +0.0 + 0 +LINE + 5 +DEB + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12107.88382 + 30 +0.0 + 11 +4950.0 + 21 +12107.88382 + 31 +0.0 + 0 +LINE + 5 +DEC + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12129.534455 + 30 +0.0 + 11 +4987.5 + 21 +12129.534455 + 31 +0.0 + 0 +LINE + 5 +DED + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12151.18509 + 30 +0.0 + 11 +4950.0 + 21 +12151.18509 + 31 +0.0 + 0 +LINE + 5 +DEE + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12172.835725 + 30 +0.0 + 11 +4987.5 + 21 +12172.835725 + 31 +0.0 + 0 +LINE + 5 +DEF + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12194.48636 + 30 +0.0 + 11 +4950.0 + 21 +12194.48636 + 31 +0.0 + 0 +LINE + 5 +DF0 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12216.136995 + 30 +0.0 + 11 +4987.5 + 21 +12216.136995 + 31 +0.0 + 0 +LINE + 5 +DF1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12237.78763 + 30 +0.0 + 11 +4950.0 + 21 +12237.78763 + 31 +0.0 + 0 +LINE + 5 +DF2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12259.438265 + 30 +0.0 + 11 +4987.5 + 21 +12259.438265 + 31 +0.0 + 0 +LINE + 5 +DF3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12281.0889 + 30 +0.0 + 11 +4950.0 + 21 +12281.0889 + 31 +0.0 + 0 +LINE + 5 +DF4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12302.739535 + 30 +0.0 + 11 +4987.5 + 21 +12302.739535 + 31 +0.0 + 0 +LINE + 5 +DF5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12324.39017 + 30 +0.0 + 11 +4950.0 + 21 +12324.39017 + 31 +0.0 + 0 +LINE + 5 +DF6 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12346.040805 + 30 +0.0 + 11 +4987.5 + 21 +12346.040805 + 31 +0.0 + 0 +LINE + 5 +DF7 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12367.69144 + 30 +0.0 + 11 +4950.0 + 21 +12367.69144 + 31 +0.0 + 0 +LINE + 5 +DF8 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12389.342075 + 30 +0.0 + 11 +4987.5 + 21 +12389.342075 + 31 +0.0 + 0 +LINE + 5 +DF9 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12410.99271 + 30 +0.0 + 11 +4950.0 + 21 +12410.99271 + 31 +0.0 + 0 +LINE + 5 +DFA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12432.643345 + 30 +0.0 + 11 +4987.5 + 21 +12432.643345 + 31 +0.0 + 0 +LINE + 5 +DFB + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12454.29398 + 30 +0.0 + 11 +4950.0 + 21 +12454.29398 + 31 +0.0 + 0 +LINE + 5 +DFC + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12475.944615 + 30 +0.0 + 11 +4987.5 + 21 +12475.944615 + 31 +0.0 + 0 +LINE + 5 +DFD + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12497.59525 + 30 +0.0 + 11 +4950.0 + 21 +12497.59525 + 31 +0.0 + 0 +LINE + 5 +DFE + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12519.245885 + 30 +0.0 + 11 +4987.5 + 21 +12519.245885 + 31 +0.0 + 0 +LINE + 5 +DFF + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12540.89652 + 30 +0.0 + 11 +4950.0 + 21 +12540.89652 + 31 +0.0 + 0 +LINE + 5 +E00 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12562.547155 + 30 +0.0 + 11 +4987.5 + 21 +12562.547155 + 31 +0.0 + 0 +LINE + 5 +E01 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12584.19779 + 30 +0.0 + 11 +4950.0 + 21 +12584.19779 + 31 +0.0 + 0 +LINE + 5 +E02 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12605.848425 + 30 +0.0 + 11 +4987.5 + 21 +12605.848425 + 31 +0.0 + 0 +LINE + 5 +E03 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12627.49906 + 30 +0.0 + 11 +4950.0 + 21 +12627.49906 + 31 +0.0 + 0 +LINE + 5 +E04 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12649.149695 + 30 +0.0 + 11 +4987.5 + 21 +12649.149695 + 31 +0.0 + 0 +LINE + 5 +E05 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12670.80033 + 30 +0.0 + 11 +4950.0 + 21 +12670.80033 + 31 +0.0 + 0 +LINE + 5 +E06 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12692.450965 + 30 +0.0 + 11 +4987.5 + 21 +12692.450965 + 31 +0.0 + 0 +LINE + 5 +E07 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12714.1016 + 30 +0.0 + 11 +4950.0 + 21 +12714.1016 + 31 +0.0 + 0 +LINE + 5 +E08 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12735.752235 + 30 +0.0 + 11 +4987.5 + 21 +12735.752235 + 31 +0.0 + 0 +LINE + 5 +E09 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12757.40287 + 30 +0.0 + 11 +4950.0 + 21 +12757.40287 + 31 +0.0 + 0 +LINE + 5 +E0A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12779.053505 + 30 +0.0 + 11 +4987.5 + 21 +12779.053505 + 31 +0.0 + 0 +LINE + 5 +E0B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12800.70414 + 30 +0.0 + 11 +4950.0 + 21 +12800.70414 + 31 +0.0 + 0 +LINE + 5 +E0C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12822.354775 + 30 +0.0 + 11 +4987.5 + 21 +12822.354775 + 31 +0.0 + 0 +LINE + 5 +E0D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12844.00541 + 30 +0.0 + 11 +4950.0 + 21 +12844.00541 + 31 +0.0 + 0 +LINE + 5 +E0E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12865.656045 + 30 +0.0 + 11 +4987.5 + 21 +12865.656045 + 31 +0.0 + 0 +LINE + 5 +E0F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12887.30668 + 30 +0.0 + 11 +4950.0 + 21 +12887.30668 + 31 +0.0 + 0 +LINE + 5 +E10 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12908.957315 + 30 +0.0 + 11 +4987.5 + 21 +12908.957315 + 31 +0.0 + 0 +LINE + 5 +E11 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12930.60795 + 30 +0.0 + 11 +4950.0 + 21 +12930.60795 + 31 +0.0 + 0 +LINE + 5 +E12 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12952.258585 + 30 +0.0 + 11 +4987.5 + 21 +12952.258585 + 31 +0.0 + 0 +LINE + 5 +E13 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +12973.90922 + 30 +0.0 + 11 +4950.0 + 21 +12973.90922 + 31 +0.0 + 0 +LINE + 5 +E14 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +12995.559855 + 30 +0.0 + 11 +4987.5 + 21 +12995.559855 + 31 +0.0 + 0 +LINE + 5 +E15 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13017.21049 + 30 +0.0 + 11 +4950.0 + 21 +13017.21049 + 31 +0.0 + 0 +LINE + 5 +E16 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13038.861125 + 30 +0.0 + 11 +4987.5 + 21 +13038.861125 + 31 +0.0 + 0 +LINE + 5 +E17 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13060.51176 + 30 +0.0 + 11 +4950.0 + 21 +13060.51176 + 31 +0.0 + 0 +LINE + 5 +E18 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13082.162395 + 30 +0.0 + 11 +4987.5 + 21 +13082.162395 + 31 +0.0 + 0 +LINE + 5 +E19 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13103.81303 + 30 +0.0 + 11 +4950.0 + 21 +13103.81303 + 31 +0.0 + 0 +LINE + 5 +E1A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13125.463665 + 30 +0.0 + 11 +4987.5 + 21 +13125.463665 + 31 +0.0 + 0 +LINE + 5 +E1B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13147.1143 + 30 +0.0 + 11 +4950.0 + 21 +13147.1143 + 31 +0.0 + 0 +LINE + 5 +E1C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13168.764935 + 30 +0.0 + 11 +4987.5 + 21 +13168.764935 + 31 +0.0 + 0 +LINE + 5 +E1D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13190.41557 + 30 +0.0 + 11 +4950.0 + 21 +13190.41557 + 31 +0.0 + 0 +LINE + 5 +E1E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13212.066205 + 30 +0.0 + 11 +4987.5 + 21 +13212.066205 + 31 +0.0 + 0 +LINE + 5 +E1F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13233.71684 + 30 +0.0 + 11 +4950.0 + 21 +13233.71684 + 31 +0.0 + 0 +LINE + 5 +E20 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13255.367475 + 30 +0.0 + 11 +4987.5 + 21 +13255.367475 + 31 +0.0 + 0 +LINE + 5 +E21 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13277.01811 + 30 +0.0 + 11 +4950.0 + 21 +13277.01811 + 31 +0.0 + 0 +LINE + 5 +E22 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13298.668745 + 30 +0.0 + 11 +4987.5 + 21 +13298.668745 + 31 +0.0 + 0 +LINE + 5 +E23 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13320.31938 + 30 +0.0 + 11 +4950.0 + 21 +13320.31938 + 31 +0.0 + 0 +LINE + 5 +E24 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13341.970015 + 30 +0.0 + 11 +4987.5 + 21 +13341.970015 + 31 +0.0 + 0 +LINE + 5 +E25 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13363.62065 + 30 +0.0 + 11 +4950.0 + 21 +13363.62065 + 31 +0.0 + 0 +LINE + 5 +E26 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13385.271285 + 30 +0.0 + 11 +4987.5 + 21 +13385.271285 + 31 +0.0 + 0 +LINE + 5 +E27 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13406.92192 + 30 +0.0 + 11 +4950.0 + 21 +13406.92192 + 31 +0.0 + 0 +LINE + 5 +E28 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13428.572555 + 30 +0.0 + 11 +4987.5 + 21 +13428.572555 + 31 +0.0 + 0 +LINE + 5 +E29 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13450.22319 + 30 +0.0 + 11 +4950.0 + 21 +13450.22319 + 31 +0.0 + 0 +LINE + 5 +E2A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13471.873825 + 30 +0.0 + 11 +4987.5 + 21 +13471.873825 + 31 +0.0 + 0 +LINE + 5 +E2B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13493.52446 + 30 +0.0 + 11 +4950.0 + 21 +13493.52446 + 31 +0.0 + 0 +LINE + 5 +E2C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13515.175095 + 30 +0.0 + 11 +4987.5 + 21 +13515.175095 + 31 +0.0 + 0 +LINE + 5 +E2D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13536.82573 + 30 +0.0 + 11 +4950.0 + 21 +13536.82573 + 31 +0.0 + 0 +LINE + 5 +E2E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13558.476365 + 30 +0.0 + 11 +4987.5 + 21 +13558.476365 + 31 +0.0 + 0 +LINE + 5 +E2F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13580.127 + 30 +0.0 + 11 +4950.0 + 21 +13580.127 + 31 +0.0 + 0 +LINE + 5 +E30 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13601.777635 + 30 +0.0 + 11 +4987.5 + 21 +13601.777635 + 31 +0.0 + 0 +LINE + 5 +E31 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13623.42827 + 30 +0.0 + 11 +4950.0 + 21 +13623.42827 + 31 +0.0 + 0 +LINE + 5 +E32 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13645.078905 + 30 +0.0 + 11 +4987.5 + 21 +13645.078905 + 31 +0.0 + 0 +LINE + 5 +E33 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13666.72954 + 30 +0.0 + 11 +4950.0 + 21 +13666.72954 + 31 +0.0 + 0 +LINE + 5 +E34 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13688.380175 + 30 +0.0 + 11 +4987.5 + 21 +13688.380175 + 31 +0.0 + 0 +LINE + 5 +E35 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13710.03081 + 30 +0.0 + 11 +4950.0 + 21 +13710.03081 + 31 +0.0 + 0 +LINE + 5 +E36 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13731.681445 + 30 +0.0 + 11 +4987.5 + 21 +13731.681445 + 31 +0.0 + 0 +LINE + 5 +E37 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13753.33208 + 30 +0.0 + 11 +4950.0 + 21 +13753.33208 + 31 +0.0 + 0 +LINE + 5 +E38 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13774.982715 + 30 +0.0 + 11 +4987.5 + 21 +13774.982715 + 31 +0.0 + 0 +LINE + 5 +E39 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13796.63335 + 30 +0.0 + 11 +4950.0 + 21 +13796.63335 + 31 +0.0 + 0 +LINE + 5 +E3A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13818.283985 + 30 +0.0 + 11 +4987.5 + 21 +13818.283985 + 31 +0.0 + 0 +LINE + 5 +E3B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13839.93462 + 30 +0.0 + 11 +4950.0 + 21 +13839.93462 + 31 +0.0 + 0 +LINE + 5 +E3C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13861.585255 + 30 +0.0 + 11 +4987.5 + 21 +13861.585255 + 31 +0.0 + 0 +LINE + 5 +E3D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13883.23589 + 30 +0.0 + 11 +4950.0 + 21 +13883.23589 + 31 +0.0 + 0 +LINE + 5 +E3E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13904.886525 + 30 +0.0 + 11 +4987.5 + 21 +13904.886525 + 31 +0.0 + 0 +LINE + 5 +E3F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13926.53716 + 30 +0.0 + 11 +4950.0 + 21 +13926.53716 + 31 +0.0 + 0 +LINE + 5 +E40 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13948.187795 + 30 +0.0 + 11 +4987.5 + 21 +13948.187795 + 31 +0.0 + 0 +LINE + 5 +E41 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +13969.83843 + 30 +0.0 + 11 +4950.0 + 21 +13969.83843 + 31 +0.0 + 0 +LINE + 5 +E42 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +13991.489065 + 30 +0.0 + 11 +4987.5 + 21 +13991.489065 + 31 +0.0 + 0 +LINE + 5 +E43 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14013.1397 + 30 +0.0 + 11 +4950.0 + 21 +14013.1397 + 31 +0.0 + 0 +LINE + 5 +E44 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14034.790335 + 30 +0.0 + 11 +4987.5 + 21 +14034.790335 + 31 +0.0 + 0 +LINE + 5 +E45 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14056.44097 + 30 +0.0 + 11 +4950.0 + 21 +14056.44097 + 31 +0.0 + 0 +LINE + 5 +E46 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14078.091605 + 30 +0.0 + 11 +4987.5 + 21 +14078.091605 + 31 +0.0 + 0 +LINE + 5 +E47 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14099.74224 + 30 +0.0 + 11 +4950.0 + 21 +14099.74224 + 31 +0.0 + 0 +LINE + 5 +E48 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14121.392875 + 30 +0.0 + 11 +4987.5 + 21 +14121.392875 + 31 +0.0 + 0 +LINE + 5 +E49 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14143.04351 + 30 +0.0 + 11 +4950.0 + 21 +14143.04351 + 31 +0.0 + 0 +LINE + 5 +E4A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14164.694145 + 30 +0.0 + 11 +4987.5 + 21 +14164.694145 + 31 +0.0 + 0 +LINE + 5 +E4B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14186.34478 + 30 +0.0 + 11 +4950.0 + 21 +14186.34478 + 31 +0.0 + 0 +LINE + 5 +E4C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14207.995415 + 30 +0.0 + 11 +4987.5 + 21 +14207.995415 + 31 +0.0 + 0 +LINE + 5 +E4D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14229.64605 + 30 +0.0 + 11 +4950.0 + 21 +14229.64605 + 31 +0.0 + 0 +LINE + 5 +E4E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14251.296685 + 30 +0.0 + 11 +4987.5 + 21 +14251.296685 + 31 +0.0 + 0 +LINE + 5 +E4F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14272.94732 + 30 +0.0 + 11 +4950.0 + 21 +14272.94732 + 31 +0.0 + 0 +LINE + 5 +E50 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14294.597955 + 30 +0.0 + 11 +4987.5 + 21 +14294.597955 + 31 +0.0 + 0 +LINE + 5 +E51 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14316.24859 + 30 +0.0 + 11 +4950.0 + 21 +14316.24859 + 31 +0.0 + 0 +LINE + 5 +E52 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14337.899225 + 30 +0.0 + 11 +4987.5 + 21 +14337.899225 + 31 +0.0 + 0 +LINE + 5 +E53 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14359.54986 + 30 +0.0 + 11 +4950.0 + 21 +14359.54986 + 31 +0.0 + 0 +LINE + 5 +E54 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14381.200495 + 30 +0.0 + 11 +4987.5 + 21 +14381.200495 + 31 +0.0 + 0 +LINE + 5 +E55 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14402.85113 + 30 +0.0 + 11 +4950.0 + 21 +14402.85113 + 31 +0.0 + 0 +LINE + 5 +E56 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14424.501765 + 30 +0.0 + 11 +4987.5 + 21 +14424.501765 + 31 +0.0 + 0 +LINE + 5 +E57 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14446.1524 + 30 +0.0 + 11 +4950.0 + 21 +14446.1524 + 31 +0.0 + 0 +LINE + 5 +E58 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14467.803035 + 30 +0.0 + 11 +4987.5 + 21 +14467.803035 + 31 +0.0 + 0 +LINE + 5 +E59 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14489.45367 + 30 +0.0 + 11 +4950.0 + 21 +14489.45367 + 31 +0.0 + 0 +LINE + 5 +E5A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14511.104305 + 30 +0.0 + 11 +4987.5 + 21 +14511.104305 + 31 +0.0 + 0 +LINE + 5 +E5B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14532.75494 + 30 +0.0 + 11 +4950.0 + 21 +14532.75494 + 31 +0.0 + 0 +LINE + 5 +E5C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14554.405575 + 30 +0.0 + 11 +4987.5 + 21 +14554.405575 + 31 +0.0 + 0 +LINE + 5 +E5D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14576.05621 + 30 +0.0 + 11 +4950.0 + 21 +14576.05621 + 31 +0.0 + 0 +LINE + 5 +E5E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +14597.706845 + 30 +0.0 + 11 +4987.5 + 21 +14597.706845 + 31 +0.0 + 0 +LINE + 5 +E5F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +14619.35748 + 30 +0.0 + 11 +4950.0 + 21 +14619.35748 + 31 +0.0 + 0 +LINE + 5 +E60 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11869.726835 + 30 +0.0 + 11 +4987.5 + 21 +11869.726835 + 31 +0.0 + 0 +LINE + 5 +E61 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11848.0762 + 30 +0.0 + 11 +4950.0 + 21 +11848.0762 + 31 +0.0 + 0 +LINE + 5 +E62 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11826.425565 + 30 +0.0 + 11 +4987.5 + 21 +11826.425565 + 31 +0.0 + 0 +LINE + 5 +E63 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11804.77493 + 30 +0.0 + 11 +4950.0 + 21 +11804.77493 + 31 +0.0 + 0 +LINE + 5 +E64 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11783.124295 + 30 +0.0 + 11 +4987.5 + 21 +11783.124295 + 31 +0.0 + 0 +LINE + 5 +E65 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11761.47366 + 30 +0.0 + 11 +4950.0 + 21 +11761.47366 + 31 +0.0 + 0 +LINE + 5 +E66 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11739.823025 + 30 +0.0 + 11 +4987.5 + 21 +11739.823025 + 31 +0.0 + 0 +LINE + 5 +E67 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11718.17239 + 30 +0.0 + 11 +4950.0 + 21 +11718.17239 + 31 +0.0 + 0 +LINE + 5 +E68 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11696.521755 + 30 +0.0 + 11 +4987.5 + 21 +11696.521755 + 31 +0.0 + 0 +LINE + 5 +E69 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11674.87112 + 30 +0.0 + 11 +4950.0 + 21 +11674.87112 + 31 +0.0 + 0 +LINE + 5 +E6A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11653.220485 + 30 +0.0 + 11 +4987.5 + 21 +11653.220485 + 31 +0.0 + 0 +LINE + 5 +E6B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11631.56985 + 30 +0.0 + 11 +4950.0 + 21 +11631.56985 + 31 +0.0 + 0 +LINE + 5 +E6C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11609.919215 + 30 +0.0 + 11 +4987.5 + 21 +11609.919215 + 31 +0.0 + 0 +LINE + 5 +E6D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11588.26858 + 30 +0.0 + 11 +4950.0 + 21 +11588.26858 + 31 +0.0 + 0 +LINE + 5 +E6E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11566.617945 + 30 +0.0 + 11 +4987.5 + 21 +11566.617945 + 31 +0.0 + 0 +LINE + 5 +E6F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11544.96731 + 30 +0.0 + 11 +4950.0 + 21 +11544.96731 + 31 +0.0 + 0 +LINE + 5 +E70 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11523.316675 + 30 +0.0 + 11 +4987.5 + 21 +11523.316675 + 31 +0.0 + 0 +LINE + 5 +E71 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11501.66604 + 30 +0.0 + 11 +4950.0 + 21 +11501.66604 + 31 +0.0 + 0 +LINE + 5 +E72 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11480.015405 + 30 +0.0 + 11 +4987.5 + 21 +11480.015405 + 31 +0.0 + 0 +LINE + 5 +E73 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11458.36477 + 30 +0.0 + 11 +4950.0 + 21 +11458.36477 + 31 +0.0 + 0 +LINE + 5 +E74 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11436.714135 + 30 +0.0 + 11 +4987.5 + 21 +11436.714135 + 31 +0.0 + 0 +LINE + 5 +E75 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11415.0635 + 30 +0.0 + 11 +4950.0 + 21 +11415.0635 + 31 +0.0 + 0 +LINE + 5 +E76 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11393.412865 + 30 +0.0 + 11 +4987.5 + 21 +11393.412865 + 31 +0.0 + 0 +LINE + 5 +E77 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11371.76223 + 30 +0.0 + 11 +4950.0 + 21 +11371.76223 + 31 +0.0 + 0 +LINE + 5 +E78 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11350.111595 + 30 +0.0 + 11 +4987.5 + 21 +11350.111595 + 31 +0.0 + 0 +LINE + 5 +E79 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11328.46096 + 30 +0.0 + 11 +4950.0 + 21 +11328.46096 + 31 +0.0 + 0 +LINE + 5 +E7A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11306.810325 + 30 +0.0 + 11 +4987.5 + 21 +11306.810325 + 31 +0.0 + 0 +LINE + 5 +E7B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11285.15969 + 30 +0.0 + 11 +4950.0 + 21 +11285.15969 + 31 +0.0 + 0 +LINE + 5 +E7C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11263.509055 + 30 +0.0 + 11 +4987.5 + 21 +11263.509055 + 31 +0.0 + 0 +LINE + 5 +E7D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11241.85842 + 30 +0.0 + 11 +4950.0 + 21 +11241.85842 + 31 +0.0 + 0 +LINE + 5 +E7E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11220.207785 + 30 +0.0 + 11 +4987.5 + 21 +11220.207785 + 31 +0.0 + 0 +LINE + 5 +E7F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11198.55715 + 30 +0.0 + 11 +4950.0 + 21 +11198.55715 + 31 +0.0 + 0 +LINE + 5 +E80 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11176.906515 + 30 +0.0 + 11 +4987.5 + 21 +11176.906515 + 31 +0.0 + 0 +LINE + 5 +E81 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11155.25588 + 30 +0.0 + 11 +4950.0 + 21 +11155.25588 + 31 +0.0 + 0 +LINE + 5 +E82 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11133.605245 + 30 +0.0 + 11 +4987.5 + 21 +11133.605245 + 31 +0.0 + 0 +LINE + 5 +E83 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11111.95461 + 30 +0.0 + 11 +4950.0 + 21 +11111.95461 + 31 +0.0 + 0 +LINE + 5 +E84 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11090.303975 + 30 +0.0 + 11 +4987.5 + 21 +11090.303975 + 31 +0.0 + 0 +LINE + 5 +E85 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11068.65334 + 30 +0.0 + 11 +4950.0 + 21 +11068.65334 + 31 +0.0 + 0 +LINE + 5 +E86 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11047.002705 + 30 +0.0 + 11 +4987.5 + 21 +11047.002705 + 31 +0.0 + 0 +LINE + 5 +E87 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +11025.35207 + 30 +0.0 + 11 +4950.0 + 21 +11025.35207 + 31 +0.0 + 0 +LINE + 5 +E88 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +11003.701435 + 30 +0.0 + 11 +4987.5 + 21 +11003.701435 + 31 +0.0 + 0 +LINE + 5 +E89 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10982.0508 + 30 +0.0 + 11 +4950.0 + 21 +10982.0508 + 31 +0.0 + 0 +LINE + 5 +E8A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10960.400165 + 30 +0.0 + 11 +4987.5 + 21 +10960.400165 + 31 +0.0 + 0 +LINE + 5 +E8B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10938.74953 + 30 +0.0 + 11 +4950.0 + 21 +10938.74953 + 31 +0.0 + 0 +LINE + 5 +E8C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10917.098895 + 30 +0.0 + 11 +4987.5 + 21 +10917.098895 + 31 +0.0 + 0 +LINE + 5 +E8D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10895.44826 + 30 +0.0 + 11 +4950.0 + 21 +10895.44826 + 31 +0.0 + 0 +LINE + 5 +E8E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10873.797625 + 30 +0.0 + 11 +4987.5 + 21 +10873.797625 + 31 +0.0 + 0 +LINE + 5 +E8F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10852.14699 + 30 +0.0 + 11 +4950.0 + 21 +10852.14699 + 31 +0.0 + 0 +LINE + 5 +E90 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10830.496355 + 30 +0.0 + 11 +4987.5 + 21 +10830.496355 + 31 +0.0 + 0 +LINE + 5 +E91 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10808.84572 + 30 +0.0 + 11 +4950.0 + 21 +10808.84572 + 31 +0.0 + 0 +LINE + 5 +E92 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10787.195085 + 30 +0.0 + 11 +4987.5 + 21 +10787.195085 + 31 +0.0 + 0 +LINE + 5 +E93 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10765.54445 + 30 +0.0 + 11 +4950.0 + 21 +10765.54445 + 31 +0.0 + 0 +LINE + 5 +E94 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10743.893815 + 30 +0.0 + 11 +4987.5 + 21 +10743.893815 + 31 +0.0 + 0 +LINE + 5 +E95 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10722.24318 + 30 +0.0 + 11 +4950.0 + 21 +10722.24318 + 31 +0.0 + 0 +LINE + 5 +E96 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10700.592545 + 30 +0.0 + 11 +4987.5 + 21 +10700.592545 + 31 +0.0 + 0 +LINE + 5 +E97 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10678.94191 + 30 +0.0 + 11 +4950.0 + 21 +10678.94191 + 31 +0.0 + 0 +LINE + 5 +E98 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10657.291275 + 30 +0.0 + 11 +4987.5 + 21 +10657.291275 + 31 +0.0 + 0 +LINE + 5 +E99 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10635.64064 + 30 +0.0 + 11 +4950.0 + 21 +10635.64064 + 31 +0.0 + 0 +LINE + 5 +E9A + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10613.990005 + 30 +0.0 + 11 +4987.5 + 21 +10613.990005 + 31 +0.0 + 0 +LINE + 5 +E9B + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10592.33937 + 30 +0.0 + 11 +4950.0 + 21 +10592.33937 + 31 +0.0 + 0 +LINE + 5 +E9C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10570.688735 + 30 +0.0 + 11 +4987.5 + 21 +10570.688735 + 31 +0.0 + 0 +LINE + 5 +E9D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10549.0381 + 30 +0.0 + 11 +4950.0 + 21 +10549.0381 + 31 +0.0 + 0 +LINE + 5 +E9E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10527.387465 + 30 +0.0 + 11 +4987.5 + 21 +10527.387465 + 31 +0.0 + 0 +LINE + 5 +E9F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10505.73683 + 30 +0.0 + 11 +4950.0 + 21 +10505.73683 + 31 +0.0 + 0 +LINE + 5 +EA0 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10484.086195 + 30 +0.0 + 11 +4987.5 + 21 +10484.086195 + 31 +0.0 + 0 +LINE + 5 +EA1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10462.43556 + 30 +0.0 + 11 +4950.0 + 21 +10462.43556 + 31 +0.0 + 0 +LINE + 5 +EA2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10440.784925 + 30 +0.0 + 11 +4987.5 + 21 +10440.784925 + 31 +0.0 + 0 +LINE + 5 +EA3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10419.13429 + 30 +0.0 + 11 +4950.0 + 21 +10419.13429 + 31 +0.0 + 0 +LINE + 5 +EA4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10397.483655 + 30 +0.0 + 11 +4987.5 + 21 +10397.483655 + 31 +0.0 + 0 +LINE + 5 +EA5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10375.83302 + 30 +0.0 + 11 +4950.0 + 21 +10375.83302 + 31 +0.0 + 0 +LINE + 5 +EA6 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10354.182385 + 30 +0.0 + 11 +4987.5 + 21 +10354.182385 + 31 +0.0 + 0 +LINE + 5 +EA7 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10332.53175 + 30 +0.0 + 11 +4950.0 + 21 +10332.53175 + 31 +0.0 + 0 +LINE + 5 +EA8 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10310.881115 + 30 +0.0 + 11 +4987.5 + 21 +10310.881115 + 31 +0.0 + 0 +LINE + 5 +EA9 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10289.23048 + 30 +0.0 + 11 +4950.0 + 21 +10289.23048 + 31 +0.0 + 0 +LINE + 5 +EAA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10267.579845 + 30 +0.0 + 11 +4987.5 + 21 +10267.579845 + 31 +0.0 + 0 +LINE + 5 +EAB + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10245.92921 + 30 +0.0 + 11 +4950.0 + 21 +10245.92921 + 31 +0.0 + 0 +LINE + 5 +EAC + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10224.278575 + 30 +0.0 + 11 +4987.5 + 21 +10224.278575 + 31 +0.0 + 0 +LINE + 5 +EAD + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10202.62794 + 30 +0.0 + 11 +4950.0 + 21 +10202.62794 + 31 +0.0 + 0 +LINE + 5 +EAE + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10180.977305 + 30 +0.0 + 11 +4987.5 + 21 +10180.977305 + 31 +0.0 + 0 +LINE + 5 +EAF + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10159.32667 + 30 +0.0 + 11 +4950.0 + 21 +10159.32667 + 31 +0.0 + 0 +LINE + 5 +EB0 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10137.676035 + 30 +0.0 + 11 +4987.5 + 21 +10137.676035 + 31 +0.0 + 0 +LINE + 5 +EB1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10116.0254 + 30 +0.0 + 11 +4950.0 + 21 +10116.0254 + 31 +0.0 + 0 +LINE + 5 +EB2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10094.374765 + 30 +0.0 + 11 +4987.5 + 21 +10094.374765 + 31 +0.0 + 0 +LINE + 5 +EB3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10072.72413 + 30 +0.0 + 11 +4950.0 + 21 +10072.72413 + 31 +0.0 + 0 +LINE + 5 +EB4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10051.073495 + 30 +0.0 + 11 +4987.5 + 21 +10051.073495 + 31 +0.0 + 0 +LINE + 5 +EB5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +10029.42286 + 30 +0.0 + 11 +4950.0 + 21 +10029.42286 + 31 +0.0 + 0 +LINE + 5 +EB6 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +10007.772225 + 30 +0.0 + 11 +4987.5 + 21 +10007.772225 + 31 +0.0 + 0 +LINE + 5 +EB7 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9986.12159 + 30 +0.0 + 11 +4950.0 + 21 +9986.12159 + 31 +0.0 + 0 +LINE + 5 +EB8 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9964.470955 + 30 +0.0 + 11 +4987.5 + 21 +9964.470955 + 31 +0.0 + 0 +LINE + 5 +EB9 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9942.82032 + 30 +0.0 + 11 +4950.0 + 21 +9942.82032 + 31 +0.0 + 0 +LINE + 5 +EBA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9921.169685 + 30 +0.0 + 11 +4987.5 + 21 +9921.169685 + 31 +0.0 + 0 +LINE + 5 +EBB + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9899.51905 + 30 +0.0 + 11 +4950.0 + 21 +9899.51905 + 31 +0.0 + 0 +LINE + 5 +EBC + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9877.868415 + 30 +0.0 + 11 +4987.5 + 21 +9877.868415 + 31 +0.0 + 0 +LINE + 5 +EBD + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9856.21778 + 30 +0.0 + 11 +4950.0 + 21 +9856.21778 + 31 +0.0 + 0 +LINE + 5 +EBE + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9834.567145 + 30 +0.0 + 11 +4987.5 + 21 +9834.567145 + 31 +0.0 + 0 +LINE + 5 +EBF + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9812.91651 + 30 +0.0 + 11 +4950.0 + 21 +9812.91651 + 31 +0.0 + 0 +LINE + 5 +EC0 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9791.265875 + 30 +0.0 + 11 +4987.5 + 21 +9791.265875 + 31 +0.0 + 0 +LINE + 5 +EC1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9769.61524 + 30 +0.0 + 11 +4950.0 + 21 +9769.61524 + 31 +0.0 + 0 +LINE + 5 +EC2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9747.964605 + 30 +0.0 + 11 +4987.5 + 21 +9747.964605 + 31 +0.0 + 0 +LINE + 5 +EC3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9726.31397 + 30 +0.0 + 11 +4950.0 + 21 +9726.31397 + 31 +0.0 + 0 +LINE + 5 +EC4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9704.663335 + 30 +0.0 + 11 +4987.5 + 21 +9704.663335 + 31 +0.0 + 0 +LINE + 5 +EC5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9683.0127 + 30 +0.0 + 11 +4950.0 + 21 +9683.0127 + 31 +0.0 + 0 +LINE + 5 +EC6 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9661.362065 + 30 +0.0 + 11 +4987.5 + 21 +9661.362065 + 31 +0.0 + 0 +LINE + 5 +EC7 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9639.71143 + 30 +0.0 + 11 +4950.0 + 21 +9639.71143 + 31 +0.0 + 0 +LINE + 5 +EC8 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9618.060795 + 30 +0.0 + 11 +4987.5 + 21 +9618.060795 + 31 +0.0 + 0 +LINE + 5 +EC9 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9596.41016 + 30 +0.0 + 11 +4950.0 + 21 +9596.41016 + 31 +0.0 + 0 +LINE + 5 +ECA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9574.759525 + 30 +0.0 + 11 +4987.5 + 21 +9574.759525 + 31 +0.0 + 0 +LINE + 5 +ECB + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9553.10889 + 30 +0.0 + 11 +4950.0 + 21 +9553.10889 + 31 +0.0 + 0 +LINE + 5 +ECC + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9531.458255 + 30 +0.0 + 11 +4987.5 + 21 +9531.458255 + 31 +0.0 + 0 +LINE + 5 +ECD + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9509.80762 + 30 +0.0 + 11 +4950.0 + 21 +9509.80762 + 31 +0.0 + 0 +LINE + 5 +ECE + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9488.156985 + 30 +0.0 + 11 +4987.5 + 21 +9488.156985 + 31 +0.0 + 0 +LINE + 5 +ECF + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9466.50635 + 30 +0.0 + 11 +4950.0 + 21 +9466.50635 + 31 +0.0 + 0 +LINE + 5 +ED0 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9444.855715 + 30 +0.0 + 11 +4987.5 + 21 +9444.855715 + 31 +0.0 + 0 +LINE + 5 +ED1 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9423.20508 + 30 +0.0 + 11 +4950.0 + 21 +9423.20508 + 31 +0.0 + 0 +LINE + 5 +ED2 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9401.554445 + 30 +0.0 + 11 +4987.5 + 21 +9401.554445 + 31 +0.0 + 0 +LINE + 5 +ED3 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9379.90381 + 30 +0.0 + 11 +4950.0 + 21 +9379.90381 + 31 +0.0 + 0 +LINE + 5 +ED4 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9358.253175 + 30 +0.0 + 11 +4987.5 + 21 +9358.253175 + 31 +0.0 + 0 +LINE + 5 +ED5 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9336.60254 + 30 +0.0 + 11 +4950.0 + 21 +9336.60254 + 31 +0.0 + 0 +LINE + 5 +ED6 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9314.951905 + 30 +0.0 + 11 +4987.5 + 21 +9314.951905 + 31 +0.0 + 0 +LINE + 5 +ED7 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9293.30127 + 30 +0.0 + 11 +4950.0 + 21 +9293.30127 + 31 +0.0 + 0 +LINE + 5 +ED8 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9271.650635 + 30 +0.0 + 11 +4987.5 + 21 +9271.650635 + 31 +0.0 + 0 +LINE + 5 +ED9 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9250.0 + 30 +0.0 + 11 +4950.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +EDA + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9228.349365 + 30 +0.0 + 11 +4987.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EDB + 8 +0 + 62 + 0 + 10 +5037.5 + 20 +9228.349365 + 30 +0.0 + 11 +5062.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EDC + 8 +0 + 62 + 0 + 10 +5112.5 + 20 +9228.349365 + 30 +0.0 + 11 +5137.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EDD + 8 +0 + 62 + 0 + 10 +5187.5 + 20 +9228.349365 + 30 +0.0 + 11 +5212.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EDE + 8 +0 + 62 + 0 + 10 +5262.5 + 20 +9228.349365 + 30 +0.0 + 11 +5287.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EDF + 8 +0 + 62 + 0 + 10 +5337.5 + 20 +9228.349365 + 30 +0.0 + 11 +5362.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE0 + 8 +0 + 62 + 0 + 10 +5412.5 + 20 +9228.349365 + 30 +0.0 + 11 +5437.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE1 + 8 +0 + 62 + 0 + 10 +5487.5 + 20 +9228.349365 + 30 +0.0 + 11 +5512.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE2 + 8 +0 + 62 + 0 + 10 +5562.5 + 20 +9228.349365 + 30 +0.0 + 11 +5587.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE3 + 8 +0 + 62 + 0 + 10 +5637.5 + 20 +9228.349365 + 30 +0.0 + 11 +5662.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE4 + 8 +0 + 62 + 0 + 10 +5712.5 + 20 +9228.349365 + 30 +0.0 + 11 +5737.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE5 + 8 +0 + 62 + 0 + 10 +5787.5 + 20 +9228.349365 + 30 +0.0 + 11 +5812.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE6 + 8 +0 + 62 + 0 + 10 +5862.5 + 20 +9228.349365 + 30 +0.0 + 11 +5887.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE7 + 8 +0 + 62 + 0 + 10 +5937.5 + 20 +9228.349365 + 30 +0.0 + 11 +5962.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE8 + 8 +0 + 62 + 0 + 10 +6012.5 + 20 +9228.349365 + 30 +0.0 + 11 +6037.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EE9 + 8 +0 + 62 + 0 + 10 +6087.5 + 20 +9228.349365 + 30 +0.0 + 11 +6112.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EEA + 8 +0 + 62 + 0 + 10 +6162.5 + 20 +9228.349365 + 30 +0.0 + 11 +6187.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EEB + 8 +0 + 62 + 0 + 10 +6237.5 + 20 +9228.349365 + 30 +0.0 + 11 +6262.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EEC + 8 +0 + 62 + 0 + 10 +6312.5 + 20 +9228.349365 + 30 +0.0 + 11 +6337.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EED + 8 +0 + 62 + 0 + 10 +6387.5 + 20 +9228.349365 + 30 +0.0 + 11 +6412.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EEE + 8 +0 + 62 + 0 + 10 +6462.5 + 20 +9228.349365 + 30 +0.0 + 11 +6487.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EEF + 8 +0 + 62 + 0 + 10 +6537.5 + 20 +9228.349365 + 30 +0.0 + 11 +6562.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF0 + 8 +0 + 62 + 0 + 10 +6612.5 + 20 +9228.349365 + 30 +0.0 + 11 +6637.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF1 + 8 +0 + 62 + 0 + 10 +6687.5 + 20 +9228.349365 + 30 +0.0 + 11 +6712.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF2 + 8 +0 + 62 + 0 + 10 +6762.5 + 20 +9228.349365 + 30 +0.0 + 11 +6787.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF3 + 8 +0 + 62 + 0 + 10 +6837.5 + 20 +9228.349365 + 30 +0.0 + 11 +6862.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF4 + 8 +0 + 62 + 0 + 10 +6912.5 + 20 +9228.349365 + 30 +0.0 + 11 +6937.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF5 + 8 +0 + 62 + 0 + 10 +6987.5 + 20 +9228.349365 + 30 +0.0 + 11 +7012.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF6 + 8 +0 + 62 + 0 + 10 +7062.5 + 20 +9228.349365 + 30 +0.0 + 11 +7087.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF7 + 8 +0 + 62 + 0 + 10 +7137.5 + 20 +9228.349365 + 30 +0.0 + 11 +7162.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF8 + 8 +0 + 62 + 0 + 10 +7212.5 + 20 +9228.349365 + 30 +0.0 + 11 +7237.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EF9 + 8 +0 + 62 + 0 + 10 +7287.5 + 20 +9228.349365 + 30 +0.0 + 11 +7312.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EFA + 8 +0 + 62 + 0 + 10 +7362.5 + 20 +9228.349365 + 30 +0.0 + 11 +7387.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EFB + 8 +0 + 62 + 0 + 10 +7437.5 + 20 +9228.349365 + 30 +0.0 + 11 +7462.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EFC + 8 +0 + 62 + 0 + 10 +7512.5 + 20 +9228.349365 + 30 +0.0 + 11 +7537.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EFD + 8 +0 + 62 + 0 + 10 +7587.5 + 20 +9228.349365 + 30 +0.0 + 11 +7612.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EFE + 8 +0 + 62 + 0 + 10 +7662.5 + 20 +9228.349365 + 30 +0.0 + 11 +7687.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +EFF + 8 +0 + 62 + 0 + 10 +7737.5 + 20 +9228.349365 + 30 +0.0 + 11 +7751.25 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +F00 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9206.69873 + 30 +0.0 + 11 +4950.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F01 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9206.69873 + 30 +0.0 + 11 +5025.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F02 + 8 +0 + 62 + 0 + 10 +5075.0 + 20 +9206.69873 + 30 +0.0 + 11 +5100.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F03 + 8 +0 + 62 + 0 + 10 +5150.0 + 20 +9206.69873 + 30 +0.0 + 11 +5175.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F04 + 8 +0 + 62 + 0 + 10 +5225.0 + 20 +9206.69873 + 30 +0.0 + 11 +5250.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F05 + 8 +0 + 62 + 0 + 10 +5300.0 + 20 +9206.69873 + 30 +0.0 + 11 +5325.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F06 + 8 +0 + 62 + 0 + 10 +5375.0 + 20 +9206.69873 + 30 +0.0 + 11 +5400.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F07 + 8 +0 + 62 + 0 + 10 +5450.0 + 20 +9206.69873 + 30 +0.0 + 11 +5475.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F08 + 8 +0 + 62 + 0 + 10 +5525.0 + 20 +9206.69873 + 30 +0.0 + 11 +5550.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F09 + 8 +0 + 62 + 0 + 10 +5600.0 + 20 +9206.69873 + 30 +0.0 + 11 +5625.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F0A + 8 +0 + 62 + 0 + 10 +5675.0 + 20 +9206.69873 + 30 +0.0 + 11 +5700.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F0B + 8 +0 + 62 + 0 + 10 +5750.0 + 20 +9206.69873 + 30 +0.0 + 11 +5775.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F0C + 8 +0 + 62 + 0 + 10 +5825.0 + 20 +9206.69873 + 30 +0.0 + 11 +5850.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F0D + 8 +0 + 62 + 0 + 10 +5900.0 + 20 +9206.69873 + 30 +0.0 + 11 +5925.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F0E + 8 +0 + 62 + 0 + 10 +5975.0 + 20 +9206.69873 + 30 +0.0 + 11 +6000.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F0F + 8 +0 + 62 + 0 + 10 +6050.0 + 20 +9206.69873 + 30 +0.0 + 11 +6075.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F10 + 8 +0 + 62 + 0 + 10 +6125.0 + 20 +9206.69873 + 30 +0.0 + 11 +6150.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F11 + 8 +0 + 62 + 0 + 10 +6200.0 + 20 +9206.69873 + 30 +0.0 + 11 +6225.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F12 + 8 +0 + 62 + 0 + 10 +6275.0 + 20 +9206.69873 + 30 +0.0 + 11 +6300.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F13 + 8 +0 + 62 + 0 + 10 +6350.0 + 20 +9206.69873 + 30 +0.0 + 11 +6375.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F14 + 8 +0 + 62 + 0 + 10 +6425.0 + 20 +9206.69873 + 30 +0.0 + 11 +6450.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F15 + 8 +0 + 62 + 0 + 10 +6500.0 + 20 +9206.69873 + 30 +0.0 + 11 +6525.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F16 + 8 +0 + 62 + 0 + 10 +6575.0 + 20 +9206.69873 + 30 +0.0 + 11 +6600.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F17 + 8 +0 + 62 + 0 + 10 +6650.0 + 20 +9206.69873 + 30 +0.0 + 11 +6675.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F18 + 8 +0 + 62 + 0 + 10 +6725.0 + 20 +9206.69873 + 30 +0.0 + 11 +6750.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F19 + 8 +0 + 62 + 0 + 10 +6800.0 + 20 +9206.69873 + 30 +0.0 + 11 +6825.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F1A + 8 +0 + 62 + 0 + 10 +6875.0 + 20 +9206.69873 + 30 +0.0 + 11 +6900.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F1B + 8 +0 + 62 + 0 + 10 +6950.0 + 20 +9206.69873 + 30 +0.0 + 11 +6975.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F1C + 8 +0 + 62 + 0 + 10 +7025.0 + 20 +9206.69873 + 30 +0.0 + 11 +7050.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F1D + 8 +0 + 62 + 0 + 10 +7100.0 + 20 +9206.69873 + 30 +0.0 + 11 +7125.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F1E + 8 +0 + 62 + 0 + 10 +7175.0 + 20 +9206.69873 + 30 +0.0 + 11 +7200.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F1F + 8 +0 + 62 + 0 + 10 +7250.0 + 20 +9206.69873 + 30 +0.0 + 11 +7275.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F20 + 8 +0 + 62 + 0 + 10 +7325.0 + 20 +9206.69873 + 30 +0.0 + 11 +7350.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F21 + 8 +0 + 62 + 0 + 10 +7400.0 + 20 +9206.69873 + 30 +0.0 + 11 +7425.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F22 + 8 +0 + 62 + 0 + 10 +7475.0 + 20 +9206.69873 + 30 +0.0 + 11 +7500.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F23 + 8 +0 + 62 + 0 + 10 +7550.0 + 20 +9206.69873 + 30 +0.0 + 11 +7575.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F24 + 8 +0 + 62 + 0 + 10 +7625.0 + 20 +9206.69873 + 30 +0.0 + 11 +7650.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F25 + 8 +0 + 62 + 0 + 10 +7700.0 + 20 +9206.69873 + 30 +0.0 + 11 +7725.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +F26 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9185.048095 + 30 +0.0 + 11 +4987.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F27 + 8 +0 + 62 + 0 + 10 +5037.5 + 20 +9185.048095 + 30 +0.0 + 11 +5062.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F28 + 8 +0 + 62 + 0 + 10 +5112.5 + 20 +9185.048095 + 30 +0.0 + 11 +5137.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F29 + 8 +0 + 62 + 0 + 10 +5187.5 + 20 +9185.048095 + 30 +0.0 + 11 +5212.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F2A + 8 +0 + 62 + 0 + 10 +5262.5 + 20 +9185.048095 + 30 +0.0 + 11 +5287.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F2B + 8 +0 + 62 + 0 + 10 +5337.5 + 20 +9185.048095 + 30 +0.0 + 11 +5362.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F2C + 8 +0 + 62 + 0 + 10 +5412.5 + 20 +9185.048095 + 30 +0.0 + 11 +5437.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F2D + 8 +0 + 62 + 0 + 10 +5487.5 + 20 +9185.048095 + 30 +0.0 + 11 +5512.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F2E + 8 +0 + 62 + 0 + 10 +5562.5 + 20 +9185.048095 + 30 +0.0 + 11 +5587.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F2F + 8 +0 + 62 + 0 + 10 +5637.5 + 20 +9185.048095 + 30 +0.0 + 11 +5662.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F30 + 8 +0 + 62 + 0 + 10 +5712.5 + 20 +9185.048095 + 30 +0.0 + 11 +5737.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F31 + 8 +0 + 62 + 0 + 10 +5787.5 + 20 +9185.048095 + 30 +0.0 + 11 +5812.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F32 + 8 +0 + 62 + 0 + 10 +5862.5 + 20 +9185.048095 + 30 +0.0 + 11 +5887.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F33 + 8 +0 + 62 + 0 + 10 +5937.5 + 20 +9185.048095 + 30 +0.0 + 11 +5962.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F34 + 8 +0 + 62 + 0 + 10 +6012.5 + 20 +9185.048095 + 30 +0.0 + 11 +6037.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F35 + 8 +0 + 62 + 0 + 10 +6087.5 + 20 +9185.048095 + 30 +0.0 + 11 +6112.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F36 + 8 +0 + 62 + 0 + 10 +6162.5 + 20 +9185.048095 + 30 +0.0 + 11 +6187.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F37 + 8 +0 + 62 + 0 + 10 +6237.5 + 20 +9185.048095 + 30 +0.0 + 11 +6262.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F38 + 8 +0 + 62 + 0 + 10 +6312.5 + 20 +9185.048095 + 30 +0.0 + 11 +6337.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F39 + 8 +0 + 62 + 0 + 10 +6387.5 + 20 +9185.048095 + 30 +0.0 + 11 +6412.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F3A + 8 +0 + 62 + 0 + 10 +6462.5 + 20 +9185.048095 + 30 +0.0 + 11 +6487.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F3B + 8 +0 + 62 + 0 + 10 +6537.5 + 20 +9185.048095 + 30 +0.0 + 11 +6562.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F3C + 8 +0 + 62 + 0 + 10 +6612.5 + 20 +9185.048095 + 30 +0.0 + 11 +6637.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F3D + 8 +0 + 62 + 0 + 10 +6687.5 + 20 +9185.048095 + 30 +0.0 + 11 +6712.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F3E + 8 +0 + 62 + 0 + 10 +6762.5 + 20 +9185.048095 + 30 +0.0 + 11 +6787.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F3F + 8 +0 + 62 + 0 + 10 +6837.5 + 20 +9185.048095 + 30 +0.0 + 11 +6862.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F40 + 8 +0 + 62 + 0 + 10 +6912.5 + 20 +9185.048095 + 30 +0.0 + 11 +6937.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F41 + 8 +0 + 62 + 0 + 10 +6987.5 + 20 +9185.048095 + 30 +0.0 + 11 +7012.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F42 + 8 +0 + 62 + 0 + 10 +7062.5 + 20 +9185.048095 + 30 +0.0 + 11 +7087.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F43 + 8 +0 + 62 + 0 + 10 +7137.5 + 20 +9185.048095 + 30 +0.0 + 11 +7162.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F44 + 8 +0 + 62 + 0 + 10 +7212.5 + 20 +9185.048095 + 30 +0.0 + 11 +7237.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F45 + 8 +0 + 62 + 0 + 10 +7287.5 + 20 +9185.048095 + 30 +0.0 + 11 +7312.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F46 + 8 +0 + 62 + 0 + 10 +7362.5 + 20 +9185.048095 + 30 +0.0 + 11 +7387.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F47 + 8 +0 + 62 + 0 + 10 +7437.5 + 20 +9185.048095 + 30 +0.0 + 11 +7462.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F48 + 8 +0 + 62 + 0 + 10 +7512.5 + 20 +9185.048095 + 30 +0.0 + 11 +7537.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F49 + 8 +0 + 62 + 0 + 10 +7587.5 + 20 +9185.048095 + 30 +0.0 + 11 +7612.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F4A + 8 +0 + 62 + 0 + 10 +7662.5 + 20 +9185.048095 + 30 +0.0 + 11 +7687.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F4B + 8 +0 + 62 + 0 + 10 +7737.5 + 20 +9185.048095 + 30 +0.0 + 11 +7751.25 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +F4C + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +14186.344796 + 30 +0.0 + 11 +4987.499991 + 21 +14207.995431 + 31 +0.0 + 0 +LINE + 5 +F4D + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +14251.296701 + 30 +0.0 + 11 +4949.999991 + 21 +14272.947337 + 31 +0.0 + 0 +LINE + 5 +F4E + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14316.248607 + 30 +0.0 + 11 +4920.0 + 21 +14324.908845 + 31 +0.0 + 0 +LINE + 5 +F4F + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +14143.043526 + 30 +0.0 + 11 +4987.499991 + 21 +14164.694161 + 31 +0.0 + 0 +LINE + 5 +F50 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +14207.995431 + 30 +0.0 + 11 +4949.999991 + 21 +14229.646066 + 31 +0.0 + 0 +LINE + 5 +F51 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14272.947337 + 30 +0.0 + 11 +4920.0 + 21 +14281.607575 + 31 +0.0 + 0 +LINE + 5 +F52 + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +14099.742256 + 30 +0.0 + 11 +4987.499991 + 21 +14121.392891 + 31 +0.0 + 0 +LINE + 5 +F53 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +14164.694161 + 30 +0.0 + 11 +4949.999991 + 21 +14186.344796 + 31 +0.0 + 0 +LINE + 5 +F54 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14229.646066 + 30 +0.0 + 11 +4920.0 + 21 +14238.306305 + 31 +0.0 + 0 +LINE + 5 +F55 + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +14056.440986 + 30 +0.0 + 11 +4987.499991 + 21 +14078.091621 + 31 +0.0 + 0 +LINE + 5 +F56 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +14121.392891 + 30 +0.0 + 11 +4949.999991 + 21 +14143.043526 + 31 +0.0 + 0 +LINE + 5 +F57 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14186.344796 + 30 +0.0 + 11 +4920.0 + 21 +14195.005035 + 31 +0.0 + 0 +LINE + 5 +F58 + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +14013.139716 + 30 +0.0 + 11 +4987.499991 + 21 +14034.790351 + 31 +0.0 + 0 +LINE + 5 +F59 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +14078.091621 + 30 +0.0 + 11 +4949.999991 + 21 +14099.742256 + 31 +0.0 + 0 +LINE + 5 +F5A + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14143.043526 + 30 +0.0 + 11 +4920.0 + 21 +14151.703765 + 31 +0.0 + 0 +LINE + 5 +F5B + 8 +0 + 62 + 0 + 10 +7737.499991 + 20 +9228.34936 + 30 +0.0 + 11 +7724.999991 + 21 +9249.999995 + 31 +0.0 + 0 +LINE + 5 +F5C + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +13969.838445 + 30 +0.0 + 11 +4987.499991 + 21 +13991.489081 + 31 +0.0 + 0 +LINE + 5 +F5D + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +14034.790351 + 30 +0.0 + 11 +4949.999991 + 21 +14056.440986 + 31 +0.0 + 0 +LINE + 5 +F5E + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14099.742256 + 30 +0.0 + 11 +4920.0 + 21 +14108.402495 + 31 +0.0 + 0 +LINE + 5 +F5F + 8 +0 + 62 + 0 + 10 +7737.499991 + 20 +9185.04809 + 30 +0.0 + 11 +7724.999991 + 21 +9206.698725 + 31 +0.0 + 0 +LINE + 5 +F60 + 8 +0 + 62 + 0 + 10 +7699.999991 + 20 +9249.999995 + 30 +0.0 + 11 +7699.999988 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +F61 + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +13926.537175 + 30 +0.0 + 11 +4987.499991 + 21 +13948.18781 + 31 +0.0 + 0 +LINE + 5 +F62 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +13991.489081 + 30 +0.0 + 11 +4949.999991 + 21 +14013.139716 + 31 +0.0 + 0 +LINE + 5 +F63 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14056.440986 + 30 +0.0 + 11 +4920.0 + 21 +14065.101225 + 31 +0.0 + 0 +LINE + 5 +F64 + 8 +0 + 62 + 0 + 10 +7699.999991 + 20 +9206.698725 + 30 +0.0 + 11 +7687.499991 + 21 +9228.34936 + 31 +0.0 + 0 +LINE + 5 +F65 + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +13883.235905 + 30 +0.0 + 11 +4987.499991 + 21 +13904.88654 + 31 +0.0 + 0 +LINE + 5 +F66 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +13948.18781 + 30 +0.0 + 11 +4949.999991 + 21 +13969.838446 + 31 +0.0 + 0 +LINE + 5 +F67 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14013.139716 + 30 +0.0 + 11 +4920.0 + 21 +14021.799955 + 31 +0.0 + 0 +LINE + 5 +F68 + 8 +0 + 62 + 0 + 10 +7696.18801 + 20 +9170.0 + 30 +0.0 + 11 +7687.499991 + 21 +9185.04809 + 31 +0.0 + 0 +LINE + 5 +F69 + 8 +0 + 62 + 0 + 10 +7662.499991 + 20 +9228.34936 + 30 +0.0 + 11 +7649.999991 + 21 +9249.999995 + 31 +0.0 + 0 +LINE + 5 +F6A + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +13839.934635 + 30 +0.0 + 11 +4987.499991 + 21 +13861.58527 + 31 +0.0 + 0 +LINE + 5 +F6B + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +13904.88654 + 30 +0.0 + 11 +4949.999991 + 21 +13926.537175 + 31 +0.0 + 0 +LINE + 5 +F6C + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +13969.838446 + 30 +0.0 + 11 +4920.0 + 21 +13978.498685 + 31 +0.0 + 0 +LINE + 5 +F6D + 8 +0 + 62 + 0 + 10 +7662.499991 + 20 +9185.04809 + 30 +0.0 + 11 +7649.999991 + 21 +9206.698725 + 31 +0.0 + 0 +LINE + 5 +F6E + 8 +0 + 62 + 0 + 10 +7624.999991 + 20 +9249.999995 + 30 +0.0 + 11 +7624.999989 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +F6F + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +13796.633365 + 30 +0.0 + 11 +4987.499991 + 21 +13818.284 + 31 +0.0 + 0 +LINE + 5 +F70 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +13861.58527 + 30 +0.0 + 11 +4949.999991 + 21 +13883.235905 + 31 +0.0 + 0 +LINE + 5 +F71 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +13926.537175 + 30 +0.0 + 11 +4920.0 + 21 +13935.197415 + 31 +0.0 + 0 +LINE + 5 +F72 + 8 +0 + 62 + 0 + 10 +7624.999991 + 20 +9206.698725 + 30 +0.0 + 11 +7612.499991 + 21 +9228.34936 + 31 +0.0 + 0 +LINE + 5 +F73 + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +13753.332095 + 30 +0.0 + 11 +4987.499991 + 21 +13774.98273 + 31 +0.0 + 0 +LINE + 5 +F74 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +13818.284 + 30 +0.0 + 11 +4949.999991 + 21 +13839.934635 + 31 +0.0 + 0 +LINE + 5 +F75 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +13883.235905 + 30 +0.0 + 11 +4920.0 + 21 +13891.896145 + 31 +0.0 + 0 +LINE + 5 +F76 + 8 +0 + 62 + 0 + 10 +7621.18801 + 20 +9170.0 + 30 +0.0 + 11 +7612.499992 + 21 +9185.04809 + 31 +0.0 + 0 +LINE + 5 +F77 + 8 +0 + 62 + 0 + 10 +7587.499992 + 20 +9228.34936 + 30 +0.0 + 11 +7574.999992 + 21 +9249.999995 + 31 +0.0 + 0 +LINE + 5 +F78 + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13710.030825 + 30 +0.0 + 11 +4987.499992 + 21 +13731.68146 + 31 +0.0 + 0 +LINE + 5 +F79 + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13774.98273 + 30 +0.0 + 11 +4949.999992 + 21 +13796.633365 + 31 +0.0 + 0 +LINE + 5 +F7A + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13839.934635 + 30 +0.0 + 11 +4920.0 + 21 +13848.594875 + 31 +0.0 + 0 +LINE + 5 +F7B + 8 +0 + 62 + 0 + 10 +7587.499992 + 20 +9185.04809 + 30 +0.0 + 11 +7574.999992 + 21 +9206.698725 + 31 +0.0 + 0 +LINE + 5 +F7C + 8 +0 + 62 + 0 + 10 +7549.999992 + 20 +9249.999995 + 30 +0.0 + 11 +7549.999989 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +F7D + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13666.729554 + 30 +0.0 + 11 +4987.499992 + 21 +13688.38019 + 31 +0.0 + 0 +LINE + 5 +F7E + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13731.68146 + 30 +0.0 + 11 +4949.999992 + 21 +13753.332095 + 31 +0.0 + 0 +LINE + 5 +F7F + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13796.633365 + 30 +0.0 + 11 +4920.0 + 21 +13805.293605 + 31 +0.0 + 0 +LINE + 5 +F80 + 8 +0 + 62 + 0 + 10 +7549.999992 + 20 +9206.698725 + 30 +0.0 + 11 +7537.499992 + 21 +9228.34936 + 31 +0.0 + 0 +LINE + 5 +F81 + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13623.428284 + 30 +0.0 + 11 +4987.499992 + 21 +13645.078919 + 31 +0.0 + 0 +LINE + 5 +F82 + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13688.38019 + 30 +0.0 + 11 +4949.999992 + 21 +13710.030825 + 31 +0.0 + 0 +LINE + 5 +F83 + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13753.332095 + 30 +0.0 + 11 +4920.0 + 21 +13761.992335 + 31 +0.0 + 0 +LINE + 5 +F84 + 8 +0 + 62 + 0 + 10 +7546.188011 + 20 +9170.0 + 30 +0.0 + 11 +7537.499992 + 21 +9185.04809 + 31 +0.0 + 0 +LINE + 5 +F85 + 8 +0 + 62 + 0 + 10 +7512.499992 + 20 +9228.34936 + 30 +0.0 + 11 +7499.999992 + 21 +9249.999995 + 31 +0.0 + 0 +LINE + 5 +F86 + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13580.127014 + 30 +0.0 + 11 +4987.499992 + 21 +13601.777649 + 31 +0.0 + 0 +LINE + 5 +F87 + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13645.078919 + 30 +0.0 + 11 +4949.999992 + 21 +13666.729555 + 31 +0.0 + 0 +LINE + 5 +F88 + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13710.030825 + 30 +0.0 + 11 +4920.0 + 21 +13718.691065 + 31 +0.0 + 0 +LINE + 5 +F89 + 8 +0 + 62 + 0 + 10 +7512.499992 + 20 +9185.04809 + 30 +0.0 + 11 +7499.999992 + 21 +9206.698725 + 31 +0.0 + 0 +LINE + 5 +F8A + 8 +0 + 62 + 0 + 10 +7474.999992 + 20 +9249.999995 + 30 +0.0 + 11 +7474.999989 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +F8B + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13536.825744 + 30 +0.0 + 11 +4987.499992 + 21 +13558.476379 + 31 +0.0 + 0 +LINE + 5 +F8C + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13601.777649 + 30 +0.0 + 11 +4949.999992 + 21 +13623.428284 + 31 +0.0 + 0 +LINE + 5 +F8D + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13666.729555 + 30 +0.0 + 11 +4920.0 + 21 +13675.389795 + 31 +0.0 + 0 +LINE + 5 +F8E + 8 +0 + 62 + 0 + 10 +7474.999992 + 20 +9206.698725 + 30 +0.0 + 11 +7462.499992 + 21 +9228.34936 + 31 +0.0 + 0 +LINE + 5 +F8F + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13493.524474 + 30 +0.0 + 11 +4987.499992 + 21 +13515.175109 + 31 +0.0 + 0 +LINE + 5 +F90 + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13558.476379 + 30 +0.0 + 11 +4949.999992 + 21 +13580.127014 + 31 +0.0 + 0 +LINE + 5 +F91 + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13623.428284 + 30 +0.0 + 11 +4920.0 + 21 +13632.088525 + 31 +0.0 + 0 +LINE + 5 +F92 + 8 +0 + 62 + 0 + 10 +7471.188011 + 20 +9170.0 + 30 +0.0 + 11 +7462.499992 + 21 +9185.04809 + 31 +0.0 + 0 +LINE + 5 +F93 + 8 +0 + 62 + 0 + 10 +7437.499992 + 20 +9228.34936 + 30 +0.0 + 11 +7424.999992 + 21 +9249.999995 + 31 +0.0 + 0 +LINE + 5 +F94 + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13450.223204 + 30 +0.0 + 11 +4987.499992 + 21 +13471.873839 + 31 +0.0 + 0 +LINE + 5 +F95 + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13515.175109 + 30 +0.0 + 11 +4949.999992 + 21 +13536.825744 + 31 +0.0 + 0 +LINE + 5 +F96 + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13580.127014 + 30 +0.0 + 11 +4920.0 + 21 +13588.787255 + 31 +0.0 + 0 +LINE + 5 +F97 + 8 +0 + 62 + 0 + 10 +7437.499992 + 20 +9185.04809 + 30 +0.0 + 11 +7424.999992 + 21 +9206.698725 + 31 +0.0 + 0 +LINE + 5 +F98 + 8 +0 + 62 + 0 + 10 +7399.999992 + 20 +9249.999995 + 30 +0.0 + 11 +7399.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +F99 + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13406.921934 + 30 +0.0 + 11 +4987.499992 + 21 +13428.572569 + 31 +0.0 + 0 +LINE + 5 +F9A + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13471.873839 + 30 +0.0 + 11 +4949.999992 + 21 +13493.524474 + 31 +0.0 + 0 +LINE + 5 +F9B + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13536.825744 + 30 +0.0 + 11 +4920.0 + 21 +13545.485985 + 31 +0.0 + 0 +LINE + 5 +F9C + 8 +0 + 62 + 0 + 10 +7399.999992 + 20 +9206.698725 + 30 +0.0 + 11 +7387.499992 + 21 +9228.34936 + 31 +0.0 + 0 +LINE + 5 +F9D + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13363.620663 + 30 +0.0 + 11 +4987.499992 + 21 +13385.271299 + 31 +0.0 + 0 +LINE + 5 +F9E + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13428.572569 + 30 +0.0 + 11 +4949.999992 + 21 +13450.223204 + 31 +0.0 + 0 +LINE + 5 +F9F + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13493.524474 + 30 +0.0 + 11 +4920.0 + 21 +13502.184715 + 31 +0.0 + 0 +LINE + 5 +FA0 + 8 +0 + 62 + 0 + 10 +7396.188011 + 20 +9170.0 + 30 +0.0 + 11 +7387.499992 + 21 +9185.04809 + 31 +0.0 + 0 +LINE + 5 +FA1 + 8 +0 + 62 + 0 + 10 +7362.499992 + 20 +9228.34936 + 30 +0.0 + 11 +7349.999992 + 21 +9249.999996 + 31 +0.0 + 0 +LINE + 5 +FA2 + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13320.319393 + 30 +0.0 + 11 +4987.499992 + 21 +13341.970028 + 31 +0.0 + 0 +LINE + 5 +FA3 + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13385.271299 + 30 +0.0 + 11 +4949.999992 + 21 +13406.921934 + 31 +0.0 + 0 +LINE + 5 +FA4 + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13450.223204 + 30 +0.0 + 11 +4920.0 + 21 +13458.883445 + 31 +0.0 + 0 +LINE + 5 +FA5 + 8 +0 + 62 + 0 + 10 +7362.499992 + 20 +9185.04809 + 30 +0.0 + 11 +7349.999992 + 21 +9206.698725 + 31 +0.0 + 0 +LINE + 5 +FA6 + 8 +0 + 62 + 0 + 10 +7324.999992 + 20 +9249.999996 + 30 +0.0 + 11 +7324.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +FA7 + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13277.018123 + 30 +0.0 + 11 +4987.499992 + 21 +13298.668758 + 31 +0.0 + 0 +LINE + 5 +FA8 + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13341.970028 + 30 +0.0 + 11 +4949.999992 + 21 +13363.620664 + 31 +0.0 + 0 +LINE + 5 +FA9 + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13406.921934 + 30 +0.0 + 11 +4920.0 + 21 +13415.582175 + 31 +0.0 + 0 +LINE + 5 +FAA + 8 +0 + 62 + 0 + 10 +7324.999992 + 20 +9206.698725 + 30 +0.0 + 11 +7312.499992 + 21 +9228.349361 + 31 +0.0 + 0 +LINE + 5 +FAB + 8 +0 + 62 + 0 + 10 +4999.999992 + 20 +13233.716853 + 30 +0.0 + 11 +4987.499992 + 21 +13255.367488 + 31 +0.0 + 0 +LINE + 5 +FAC + 8 +0 + 62 + 0 + 10 +4962.499992 + 20 +13298.668758 + 30 +0.0 + 11 +4949.999992 + 21 +13320.319393 + 31 +0.0 + 0 +LINE + 5 +FAD + 8 +0 + 62 + 0 + 10 +4924.999992 + 20 +13363.620664 + 30 +0.0 + 11 +4920.0 + 21 +13372.280905 + 31 +0.0 + 0 +LINE + 5 +FAE + 8 +0 + 62 + 0 + 10 +7321.188012 + 20 +9170.0 + 30 +0.0 + 11 +7312.499993 + 21 +9185.04809 + 31 +0.0 + 0 +LINE + 5 +FAF + 8 +0 + 62 + 0 + 10 +7287.499993 + 20 +9228.349361 + 30 +0.0 + 11 +7274.999993 + 21 +9249.999996 + 31 +0.0 + 0 +LINE + 5 +FB0 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +13190.415583 + 30 +0.0 + 11 +4987.499993 + 21 +13212.066218 + 31 +0.0 + 0 +LINE + 5 +FB1 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +13255.367488 + 30 +0.0 + 11 +4949.999993 + 21 +13277.018123 + 31 +0.0 + 0 +LINE + 5 +FB2 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13320.319393 + 30 +0.0 + 11 +4920.0 + 21 +13328.979635 + 31 +0.0 + 0 +LINE + 5 +FB3 + 8 +0 + 62 + 0 + 10 +7287.499993 + 20 +9185.04809 + 30 +0.0 + 11 +7274.999993 + 21 +9206.698726 + 31 +0.0 + 0 +LINE + 5 +FB4 + 8 +0 + 62 + 0 + 10 +7249.999993 + 20 +9249.999996 + 30 +0.0 + 11 +7249.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +FB5 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +13147.114313 + 30 +0.0 + 11 +4987.499993 + 21 +13168.764948 + 31 +0.0 + 0 +LINE + 5 +FB6 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +13212.066218 + 30 +0.0 + 11 +4949.999993 + 21 +13233.716853 + 31 +0.0 + 0 +LINE + 5 +FB7 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13277.018123 + 30 +0.0 + 11 +4920.0 + 21 +13285.678365 + 31 +0.0 + 0 +LINE + 5 +FB8 + 8 +0 + 62 + 0 + 10 +7249.999993 + 20 +9206.698726 + 30 +0.0 + 11 +7237.499993 + 21 +9228.349361 + 31 +0.0 + 0 +LINE + 5 +FB9 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +13103.813043 + 30 +0.0 + 11 +4987.499993 + 21 +13125.463678 + 31 +0.0 + 0 +LINE + 5 +FBA + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +13168.764948 + 30 +0.0 + 11 +4949.999993 + 21 +13190.415583 + 31 +0.0 + 0 +LINE + 5 +FBB + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13233.716853 + 30 +0.0 + 11 +4920.0 + 21 +13242.377095 + 31 +0.0 + 0 +LINE + 5 +FBC + 8 +0 + 62 + 0 + 10 +7246.188012 + 20 +9170.0 + 30 +0.0 + 11 +7237.499993 + 21 +9185.048091 + 31 +0.0 + 0 +LINE + 5 +FBD + 8 +0 + 62 + 0 + 10 +7212.499993 + 20 +9228.349361 + 30 +0.0 + 11 +7199.999993 + 21 +9249.999996 + 31 +0.0 + 0 +LINE + 5 +FBE + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +13060.511772 + 30 +0.0 + 11 +4987.499993 + 21 +13082.162408 + 31 +0.0 + 0 +LINE + 5 +FBF + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +13125.463678 + 30 +0.0 + 11 +4949.999993 + 21 +13147.114313 + 31 +0.0 + 0 +LINE + 5 +FC0 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13190.415583 + 30 +0.0 + 11 +4920.0 + 21 +13199.075825 + 31 +0.0 + 0 +LINE + 5 +FC1 + 8 +0 + 62 + 0 + 10 +7212.499993 + 20 +9185.048091 + 30 +0.0 + 11 +7199.999993 + 21 +9206.698726 + 31 +0.0 + 0 +LINE + 5 +FC2 + 8 +0 + 62 + 0 + 10 +7174.999993 + 20 +9249.999996 + 30 +0.0 + 11 +7174.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +FC3 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +13017.210502 + 30 +0.0 + 11 +4987.499993 + 21 +13038.861137 + 31 +0.0 + 0 +LINE + 5 +FC4 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +13082.162408 + 30 +0.0 + 11 +4949.999993 + 21 +13103.813043 + 31 +0.0 + 0 +LINE + 5 +FC5 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13147.114313 + 30 +0.0 + 11 +4920.0 + 21 +13155.774555 + 31 +0.0 + 0 +LINE + 5 +FC6 + 8 +0 + 62 + 0 + 10 +7174.999993 + 20 +9206.698726 + 30 +0.0 + 11 +7162.499993 + 21 +9228.349361 + 31 +0.0 + 0 +LINE + 5 +FC7 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +12973.909232 + 30 +0.0 + 11 +4987.499993 + 21 +12995.559867 + 31 +0.0 + 0 +LINE + 5 +FC8 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +13038.861137 + 30 +0.0 + 11 +4949.999993 + 21 +13060.511773 + 31 +0.0 + 0 +LINE + 5 +FC9 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13103.813043 + 30 +0.0 + 11 +4920.0 + 21 +13112.473285 + 31 +0.0 + 0 +LINE + 5 +FCA + 8 +0 + 62 + 0 + 10 +7171.188012 + 20 +9170.0 + 30 +0.0 + 11 +7162.499993 + 21 +9185.048091 + 31 +0.0 + 0 +LINE + 5 +FCB + 8 +0 + 62 + 0 + 10 +7137.499993 + 20 +9228.349361 + 30 +0.0 + 11 +7124.999993 + 21 +9249.999996 + 31 +0.0 + 0 +LINE + 5 +FCC + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +12930.607962 + 30 +0.0 + 11 +4987.499993 + 21 +12952.258597 + 31 +0.0 + 0 +LINE + 5 +FCD + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +12995.559867 + 30 +0.0 + 11 +4949.999993 + 21 +13017.210502 + 31 +0.0 + 0 +LINE + 5 +FCE + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13060.511773 + 30 +0.0 + 11 +4920.0 + 21 +13069.172015 + 31 +0.0 + 0 +LINE + 5 +FCF + 8 +0 + 62 + 0 + 10 +7137.499993 + 20 +9185.048091 + 30 +0.0 + 11 +7124.999993 + 21 +9206.698726 + 31 +0.0 + 0 +LINE + 5 +FD0 + 8 +0 + 62 + 0 + 10 +7099.999993 + 20 +9249.999996 + 30 +0.0 + 11 +7099.999991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +FD1 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +12887.306692 + 30 +0.0 + 11 +4987.499993 + 21 +12908.957327 + 31 +0.0 + 0 +LINE + 5 +FD2 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +12952.258597 + 30 +0.0 + 11 +4949.999993 + 21 +12973.909232 + 31 +0.0 + 0 +LINE + 5 +FD3 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +13017.210502 + 30 +0.0 + 11 +4920.0 + 21 +13025.870745 + 31 +0.0 + 0 +LINE + 5 +FD4 + 8 +0 + 62 + 0 + 10 +7099.999993 + 20 +9206.698726 + 30 +0.0 + 11 +7087.499993 + 21 +9228.349361 + 31 +0.0 + 0 +LINE + 5 +FD5 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +12844.005422 + 30 +0.0 + 11 +4987.499993 + 21 +12865.656057 + 31 +0.0 + 0 +LINE + 5 +FD6 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +12908.957327 + 30 +0.0 + 11 +4949.999993 + 21 +12930.607962 + 31 +0.0 + 0 +LINE + 5 +FD7 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +12973.909232 + 30 +0.0 + 11 +4920.0 + 21 +12982.569475 + 31 +0.0 + 0 +LINE + 5 +FD8 + 8 +0 + 62 + 0 + 10 +7096.188013 + 20 +9170.0 + 30 +0.0 + 11 +7087.499993 + 21 +9185.048091 + 31 +0.0 + 0 +LINE + 5 +FD9 + 8 +0 + 62 + 0 + 10 +7062.499993 + 20 +9228.349361 + 30 +0.0 + 11 +7049.999993 + 21 +9249.999996 + 31 +0.0 + 0 +LINE + 5 +FDA + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +12800.704152 + 30 +0.0 + 11 +4987.499993 + 21 +12822.354787 + 31 +0.0 + 0 +LINE + 5 +FDB + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +12865.656057 + 30 +0.0 + 11 +4949.999993 + 21 +12887.306692 + 31 +0.0 + 0 +LINE + 5 +FDC + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +12930.607962 + 30 +0.0 + 11 +4920.0 + 21 +12939.268205 + 31 +0.0 + 0 +LINE + 5 +FDD + 8 +0 + 62 + 0 + 10 +7062.499993 + 20 +9185.048091 + 30 +0.0 + 11 +7049.999993 + 21 +9206.698726 + 31 +0.0 + 0 +LINE + 5 +FDE + 8 +0 + 62 + 0 + 10 +7024.999993 + 20 +9249.999996 + 30 +0.0 + 11 +7024.999991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +FDF + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +12757.402881 + 30 +0.0 + 11 +4987.499993 + 21 +12779.053517 + 31 +0.0 + 0 +LINE + 5 +FE0 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +12822.354787 + 30 +0.0 + 11 +4949.999993 + 21 +12844.005422 + 31 +0.0 + 0 +LINE + 5 +FE1 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +12887.306692 + 30 +0.0 + 11 +4920.0 + 21 +12895.966935 + 31 +0.0 + 0 +LINE + 5 +FE2 + 8 +0 + 62 + 0 + 10 +7024.999993 + 20 +9206.698726 + 30 +0.0 + 11 +7012.499993 + 21 +9228.349361 + 31 +0.0 + 0 +LINE + 5 +FE3 + 8 +0 + 62 + 0 + 10 +4999.999993 + 20 +12714.101611 + 30 +0.0 + 11 +4987.499993 + 21 +12735.752246 + 31 +0.0 + 0 +LINE + 5 +FE4 + 8 +0 + 62 + 0 + 10 +4962.499993 + 20 +12779.053517 + 30 +0.0 + 11 +4949.999993 + 21 +12800.704152 + 31 +0.0 + 0 +LINE + 5 +FE5 + 8 +0 + 62 + 0 + 10 +4924.999993 + 20 +12844.005422 + 30 +0.0 + 11 +4920.0 + 21 +12852.665665 + 31 +0.0 + 0 +LINE + 5 +FE6 + 8 +0 + 62 + 0 + 10 +7021.188013 + 20 +9170.0 + 30 +0.0 + 11 +7012.499994 + 21 +9185.048091 + 31 +0.0 + 0 +LINE + 5 +FE7 + 8 +0 + 62 + 0 + 10 +6987.499994 + 20 +9228.349361 + 30 +0.0 + 11 +6974.999994 + 21 +9249.999996 + 31 +0.0 + 0 +LINE + 5 +FE8 + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12670.800341 + 30 +0.0 + 11 +4987.499994 + 21 +12692.450976 + 31 +0.0 + 0 +LINE + 5 +FE9 + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12735.752246 + 30 +0.0 + 11 +4949.999994 + 21 +12757.402882 + 31 +0.0 + 0 +LINE + 5 +FEA + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12800.704152 + 30 +0.0 + 11 +4920.0 + 21 +12809.364395 + 31 +0.0 + 0 +LINE + 5 +FEB + 8 +0 + 62 + 0 + 10 +6987.499994 + 20 +9185.048091 + 30 +0.0 + 11 +6974.999994 + 21 +9206.698726 + 31 +0.0 + 0 +LINE + 5 +FEC + 8 +0 + 62 + 0 + 10 +6949.999994 + 20 +9249.999996 + 30 +0.0 + 11 +6949.999991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +FED + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12627.499071 + 30 +0.0 + 11 +4987.499994 + 21 +12649.149706 + 31 +0.0 + 0 +LINE + 5 +FEE + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12692.450976 + 30 +0.0 + 11 +4949.999994 + 21 +12714.101611 + 31 +0.0 + 0 +LINE + 5 +FEF + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12757.402882 + 30 +0.0 + 11 +4920.0 + 21 +12766.063125 + 31 +0.0 + 0 +LINE + 5 +FF0 + 8 +0 + 62 + 0 + 10 +6949.999994 + 20 +9206.698726 + 30 +0.0 + 11 +6937.499994 + 21 +9228.349361 + 31 +0.0 + 0 +LINE + 5 +FF1 + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12584.197801 + 30 +0.0 + 11 +4987.499994 + 21 +12605.848436 + 31 +0.0 + 0 +LINE + 5 +FF2 + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12649.149706 + 30 +0.0 + 11 +4949.999994 + 21 +12670.800341 + 31 +0.0 + 0 +LINE + 5 +FF3 + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12714.101611 + 30 +0.0 + 11 +4920.0 + 21 +12722.761855 + 31 +0.0 + 0 +LINE + 5 +FF4 + 8 +0 + 62 + 0 + 10 +6946.188013 + 20 +9170.0 + 30 +0.0 + 11 +6937.499994 + 21 +9185.048091 + 31 +0.0 + 0 +LINE + 5 +FF5 + 8 +0 + 62 + 0 + 10 +6912.499994 + 20 +9228.349361 + 30 +0.0 + 11 +6899.999994 + 21 +9249.999996 + 31 +0.0 + 0 +LINE + 5 +FF6 + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12540.896531 + 30 +0.0 + 11 +4987.499994 + 21 +12562.547166 + 31 +0.0 + 0 +LINE + 5 +FF7 + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12605.848436 + 30 +0.0 + 11 +4949.999994 + 21 +12627.499071 + 31 +0.0 + 0 +LINE + 5 +FF8 + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12670.800341 + 30 +0.0 + 11 +4920.0 + 21 +12679.460585 + 31 +0.0 + 0 +LINE + 5 +FF9 + 8 +0 + 62 + 0 + 10 +6912.499994 + 20 +9185.048091 + 30 +0.0 + 11 +6899.999994 + 21 +9206.698726 + 31 +0.0 + 0 +LINE + 5 +FFA + 8 +0 + 62 + 0 + 10 +6874.999994 + 20 +9249.999996 + 30 +0.0 + 11 +6874.999992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +FFB + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12497.595261 + 30 +0.0 + 11 +4987.499994 + 21 +12519.245896 + 31 +0.0 + 0 +LINE + 5 +FFC + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12562.547166 + 30 +0.0 + 11 +4949.999994 + 21 +12584.197801 + 31 +0.0 + 0 +LINE + 5 +FFD + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12627.499071 + 30 +0.0 + 11 +4920.0 + 21 +12636.159315 + 31 +0.0 + 0 +LINE + 5 +FFE + 8 +0 + 62 + 0 + 10 +6874.999994 + 20 +9206.698726 + 30 +0.0 + 11 +6862.499994 + 21 +9228.349361 + 31 +0.0 + 0 +LINE + 5 +FFF + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12454.293991 + 30 +0.0 + 11 +4987.499994 + 21 +12475.944626 + 31 +0.0 + 0 +LINE + 5 +1000 + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12519.245896 + 30 +0.0 + 11 +4949.999994 + 21 +12540.896531 + 31 +0.0 + 0 +LINE + 5 +1001 + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12584.197801 + 30 +0.0 + 11 +4920.0 + 21 +12592.858045 + 31 +0.0 + 0 +LINE + 5 +1002 + 8 +0 + 62 + 0 + 10 +6871.188014 + 20 +9170.0 + 30 +0.0 + 11 +6862.499994 + 21 +9185.048091 + 31 +0.0 + 0 +LINE + 5 +1003 + 8 +0 + 62 + 0 + 10 +6837.499994 + 20 +9228.349361 + 30 +0.0 + 11 +6824.999994 + 21 +9249.999997 + 31 +0.0 + 0 +LINE + 5 +1004 + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12410.99272 + 30 +0.0 + 11 +4987.499994 + 21 +12432.643355 + 31 +0.0 + 0 +LINE + 5 +1005 + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12475.944626 + 30 +0.0 + 11 +4949.999994 + 21 +12497.595261 + 31 +0.0 + 0 +LINE + 5 +1006 + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12540.896531 + 30 +0.0 + 11 +4920.0 + 21 +12549.556775 + 31 +0.0 + 0 +LINE + 5 +1007 + 8 +0 + 62 + 0 + 10 +6837.499994 + 20 +9185.048091 + 30 +0.0 + 11 +6824.999994 + 21 +9206.698726 + 31 +0.0 + 0 +LINE + 5 +1008 + 8 +0 + 62 + 0 + 10 +6799.999994 + 20 +9249.999997 + 30 +0.0 + 11 +6799.999992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1009 + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12367.69145 + 30 +0.0 + 11 +4987.499994 + 21 +12389.342085 + 31 +0.0 + 0 +LINE + 5 +100A + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12432.643356 + 30 +0.0 + 11 +4949.999994 + 21 +12454.293991 + 31 +0.0 + 0 +LINE + 5 +100B + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12497.595261 + 30 +0.0 + 11 +4920.0 + 21 +12506.255505 + 31 +0.0 + 0 +LINE + 5 +100C + 8 +0 + 62 + 0 + 10 +6799.999994 + 20 +9206.698726 + 30 +0.0 + 11 +6787.499994 + 21 +9228.349362 + 31 +0.0 + 0 +LINE + 5 +100D + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12324.39018 + 30 +0.0 + 11 +4987.499994 + 21 +12346.040815 + 31 +0.0 + 0 +LINE + 5 +100E + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12389.342085 + 30 +0.0 + 11 +4949.999994 + 21 +12410.99272 + 31 +0.0 + 0 +LINE + 5 +100F + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12454.293991 + 30 +0.0 + 11 +4920.0 + 21 +12462.954235 + 31 +0.0 + 0 +LINE + 5 +1010 + 8 +0 + 62 + 0 + 10 +6796.188014 + 20 +9170.0 + 30 +0.0 + 11 +6787.499994 + 21 +9185.048091 + 31 +0.0 + 0 +LINE + 5 +1011 + 8 +0 + 62 + 0 + 10 +6762.499994 + 20 +9228.349362 + 30 +0.0 + 11 +6749.999994 + 21 +9249.999997 + 31 +0.0 + 0 +LINE + 5 +1012 + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12281.08891 + 30 +0.0 + 11 +4987.499994 + 21 +12302.739545 + 31 +0.0 + 0 +LINE + 5 +1013 + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12346.040815 + 30 +0.0 + 11 +4949.999994 + 21 +12367.69145 + 31 +0.0 + 0 +LINE + 5 +1014 + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12410.992721 + 30 +0.0 + 11 +4920.0 + 21 +12419.652965 + 31 +0.0 + 0 +LINE + 5 +1015 + 8 +0 + 62 + 0 + 10 +6762.499994 + 20 +9185.048091 + 30 +0.0 + 11 +6749.999994 + 21 +9206.698727 + 31 +0.0 + 0 +LINE + 5 +1016 + 8 +0 + 62 + 0 + 10 +6724.999994 + 20 +9249.999997 + 30 +0.0 + 11 +6724.999992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1017 + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12237.78764 + 30 +0.0 + 11 +4987.499994 + 21 +12259.438275 + 31 +0.0 + 0 +LINE + 5 +1018 + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12302.739545 + 30 +0.0 + 11 +4949.999994 + 21 +12324.39018 + 31 +0.0 + 0 +LINE + 5 +1019 + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12367.69145 + 30 +0.0 + 11 +4920.0 + 21 +12376.351695 + 31 +0.0 + 0 +LINE + 5 +101A + 8 +0 + 62 + 0 + 10 +6724.999994 + 20 +9206.698727 + 30 +0.0 + 11 +6712.499994 + 21 +9228.349362 + 31 +0.0 + 0 +LINE + 5 +101B + 8 +0 + 62 + 0 + 10 +4999.999994 + 20 +12194.48637 + 30 +0.0 + 11 +4987.499994 + 21 +12216.137005 + 31 +0.0 + 0 +LINE + 5 +101C + 8 +0 + 62 + 0 + 10 +4962.499994 + 20 +12259.438275 + 30 +0.0 + 11 +4949.999994 + 21 +12281.08891 + 31 +0.0 + 0 +LINE + 5 +101D + 8 +0 + 62 + 0 + 10 +4924.999994 + 20 +12324.39018 + 30 +0.0 + 11 +4920.0 + 21 +12333.050425 + 31 +0.0 + 0 +LINE + 5 +101E + 8 +0 + 62 + 0 + 10 +6721.188014 + 20 +9170.0 + 30 +0.0 + 11 +6712.499995 + 21 +9185.048092 + 31 +0.0 + 0 +LINE + 5 +101F + 8 +0 + 62 + 0 + 10 +6687.499995 + 20 +9228.349362 + 30 +0.0 + 11 +6674.999995 + 21 +9249.999997 + 31 +0.0 + 0 +LINE + 5 +1020 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +12151.1851 + 30 +0.0 + 11 +4987.499995 + 21 +12172.835735 + 31 +0.0 + 0 +LINE + 5 +1021 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +12216.137005 + 30 +0.0 + 11 +4949.999995 + 21 +12237.78764 + 31 +0.0 + 0 +LINE + 5 +1022 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +12281.08891 + 30 +0.0 + 11 +4920.0 + 21 +12289.749155 + 31 +0.0 + 0 +LINE + 5 +1023 + 8 +0 + 62 + 0 + 10 +6687.499995 + 20 +9185.048092 + 30 +0.0 + 11 +6674.999995 + 21 +9206.698727 + 31 +0.0 + 0 +LINE + 5 +1024 + 8 +0 + 62 + 0 + 10 +6649.999995 + 20 +9249.999997 + 30 +0.0 + 11 +6649.999993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1025 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +12107.883829 + 30 +0.0 + 11 +4987.499995 + 21 +12129.534464 + 31 +0.0 + 0 +LINE + 5 +1026 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +12172.835735 + 30 +0.0 + 11 +4949.999995 + 21 +12194.48637 + 31 +0.0 + 0 +LINE + 5 +1027 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +12237.78764 + 30 +0.0 + 11 +4920.0 + 21 +12246.447885 + 31 +0.0 + 0 +LINE + 5 +1028 + 8 +0 + 62 + 0 + 10 +6649.999995 + 20 +9206.698727 + 30 +0.0 + 11 +6637.499995 + 21 +9228.349362 + 31 +0.0 + 0 +LINE + 5 +1029 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +12064.582559 + 30 +0.0 + 11 +4987.499995 + 21 +12086.233194 + 31 +0.0 + 0 +LINE + 5 +102A + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +12129.534465 + 30 +0.0 + 11 +4949.999995 + 21 +12151.1851 + 31 +0.0 + 0 +LINE + 5 +102B + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +12194.48637 + 30 +0.0 + 11 +4920.0 + 21 +12203.146615 + 31 +0.0 + 0 +LINE + 5 +102C + 8 +0 + 62 + 0 + 10 +6646.188015 + 20 +9170.0 + 30 +0.0 + 11 +6637.499995 + 21 +9185.048092 + 31 +0.0 + 0 +LINE + 5 +102D + 8 +0 + 62 + 0 + 10 +6612.499995 + 20 +9228.349362 + 30 +0.0 + 11 +6599.999995 + 21 +9249.999997 + 31 +0.0 + 0 +LINE + 5 +102E + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +12021.281289 + 30 +0.0 + 11 +4987.499995 + 21 +12042.931924 + 31 +0.0 + 0 +LINE + 5 +102F + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +12086.233194 + 30 +0.0 + 11 +4949.999995 + 21 +12107.883829 + 31 +0.0 + 0 +LINE + 5 +1030 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +12151.1851 + 30 +0.0 + 11 +4920.0 + 21 +12159.845345 + 31 +0.0 + 0 +LINE + 5 +1031 + 8 +0 + 62 + 0 + 10 +6612.499995 + 20 +9185.048092 + 30 +0.0 + 11 +6599.999995 + 21 +9206.698727 + 31 +0.0 + 0 +LINE + 5 +1032 + 8 +0 + 62 + 0 + 10 +6574.999995 + 20 +9249.999997 + 30 +0.0 + 11 +6574.999993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1033 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11977.980019 + 30 +0.0 + 11 +4987.499995 + 21 +11999.630654 + 31 +0.0 + 0 +LINE + 5 +1034 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +12042.931924 + 30 +0.0 + 11 +4949.999995 + 21 +12064.582559 + 31 +0.0 + 0 +LINE + 5 +1035 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +12107.88383 + 30 +0.0 + 11 +4920.0 + 21 +12116.544075 + 31 +0.0 + 0 +LINE + 5 +1036 + 8 +0 + 62 + 0 + 10 +6574.999995 + 20 +9206.698727 + 30 +0.0 + 11 +6562.499995 + 21 +9228.349362 + 31 +0.0 + 0 +LINE + 5 +1037 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11934.678749 + 30 +0.0 + 11 +4987.499995 + 21 +11956.329384 + 31 +0.0 + 0 +LINE + 5 +1038 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11999.630654 + 30 +0.0 + 11 +4949.999995 + 21 +12021.281289 + 31 +0.0 + 0 +LINE + 5 +1039 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +12064.582559 + 30 +0.0 + 11 +4920.0 + 21 +12073.242805 + 31 +0.0 + 0 +LINE + 5 +103A + 8 +0 + 62 + 0 + 10 +6571.188015 + 20 +9170.0 + 30 +0.0 + 11 +6562.499995 + 21 +9185.048092 + 31 +0.0 + 0 +LINE + 5 +103B + 8 +0 + 62 + 0 + 10 +6537.499995 + 20 +9228.349362 + 30 +0.0 + 11 +6524.999995 + 21 +9249.999997 + 31 +0.0 + 0 +LINE + 5 +103C + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11891.377479 + 30 +0.0 + 11 +4987.499995 + 21 +11913.028114 + 31 +0.0 + 0 +LINE + 5 +103D + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11956.329384 + 30 +0.0 + 11 +4949.999995 + 21 +11977.980019 + 31 +0.0 + 0 +LINE + 5 +103E + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +12021.281289 + 30 +0.0 + 11 +4920.0 + 21 +12029.941535 + 31 +0.0 + 0 +LINE + 5 +103F + 8 +0 + 62 + 0 + 10 +6537.499995 + 20 +9185.048092 + 30 +0.0 + 11 +6524.999995 + 21 +9206.698727 + 31 +0.0 + 0 +LINE + 5 +1040 + 8 +0 + 62 + 0 + 10 +6499.999995 + 20 +9249.999997 + 30 +0.0 + 11 +6499.999993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1041 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11848.076209 + 30 +0.0 + 11 +4987.499995 + 21 +11869.726844 + 31 +0.0 + 0 +LINE + 5 +1042 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11913.028114 + 30 +0.0 + 11 +4949.999995 + 21 +11934.678749 + 31 +0.0 + 0 +LINE + 5 +1043 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +11977.980019 + 30 +0.0 + 11 +4920.0 + 21 +11986.640265 + 31 +0.0 + 0 +LINE + 5 +1044 + 8 +0 + 62 + 0 + 10 +6499.999995 + 20 +9206.698727 + 30 +0.0 + 11 +6487.499995 + 21 +9228.349362 + 31 +0.0 + 0 +LINE + 5 +1045 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11804.774938 + 30 +0.0 + 11 +4987.499995 + 21 +11826.425573 + 31 +0.0 + 0 +LINE + 5 +1046 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11869.726844 + 30 +0.0 + 11 +4949.999995 + 21 +11891.377479 + 31 +0.0 + 0 +LINE + 5 +1047 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +11934.678749 + 30 +0.0 + 11 +4920.0 + 21 +11943.338995 + 31 +0.0 + 0 +LINE + 5 +1048 + 8 +0 + 62 + 0 + 10 +6496.188015 + 20 +9170.0 + 30 +0.0 + 11 +6487.499995 + 21 +9185.048092 + 31 +0.0 + 0 +LINE + 5 +1049 + 8 +0 + 62 + 0 + 10 +6462.499995 + 20 +9228.349362 + 30 +0.0 + 11 +6449.999995 + 21 +9249.999997 + 31 +0.0 + 0 +LINE + 5 +104A + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11761.473668 + 30 +0.0 + 11 +4987.499995 + 21 +11783.124303 + 31 +0.0 + 0 +LINE + 5 +104B + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11826.425574 + 30 +0.0 + 11 +4949.999995 + 21 +11848.076209 + 31 +0.0 + 0 +LINE + 5 +104C + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +11891.377479 + 30 +0.0 + 11 +4920.0 + 21 +11900.037725 + 31 +0.0 + 0 +LINE + 5 +104D + 8 +0 + 62 + 0 + 10 +6462.499995 + 20 +9185.048092 + 30 +0.0 + 11 +6449.999995 + 21 +9206.698727 + 31 +0.0 + 0 +LINE + 5 +104E + 8 +0 + 62 + 0 + 10 +6424.999995 + 20 +9249.999997 + 30 +0.0 + 11 +6424.999994 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +104F + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11718.172398 + 30 +0.0 + 11 +4987.499995 + 21 +11739.823033 + 31 +0.0 + 0 +LINE + 5 +1050 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11783.124303 + 30 +0.0 + 11 +4949.999995 + 21 +11804.774938 + 31 +0.0 + 0 +LINE + 5 +1051 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +11848.076209 + 30 +0.0 + 11 +4920.0 + 21 +11856.736455 + 31 +0.0 + 0 +LINE + 5 +1052 + 8 +0 + 62 + 0 + 10 +6424.999995 + 20 +9206.698727 + 30 +0.0 + 11 +6412.499995 + 21 +9228.349362 + 31 +0.0 + 0 +LINE + 5 +1053 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11674.871128 + 30 +0.0 + 11 +4987.499995 + 21 +11696.521763 + 31 +0.0 + 0 +LINE + 5 +1054 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11739.823033 + 30 +0.0 + 11 +4949.999995 + 21 +11761.473668 + 31 +0.0 + 0 +LINE + 5 +1055 + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +11804.774939 + 30 +0.0 + 11 +4920.0 + 21 +11813.435185 + 31 +0.0 + 0 +LINE + 5 +1056 + 8 +0 + 62 + 0 + 10 +6421.188016 + 20 +9170.0 + 30 +0.0 + 11 +6412.499995 + 21 +9185.048092 + 31 +0.0 + 0 +LINE + 5 +1057 + 8 +0 + 62 + 0 + 10 +6387.499995 + 20 +9228.349362 + 30 +0.0 + 11 +6374.999995 + 21 +9249.999997 + 31 +0.0 + 0 +LINE + 5 +1058 + 8 +0 + 62 + 0 + 10 +4999.999995 + 20 +11631.569858 + 30 +0.0 + 11 +4987.499995 + 21 +11653.220493 + 31 +0.0 + 0 +LINE + 5 +1059 + 8 +0 + 62 + 0 + 10 +4962.499995 + 20 +11696.521763 + 30 +0.0 + 11 +4949.999995 + 21 +11718.172398 + 31 +0.0 + 0 +LINE + 5 +105A + 8 +0 + 62 + 0 + 10 +4924.999995 + 20 +11761.473668 + 30 +0.0 + 11 +4920.0 + 21 +11770.133915 + 31 +0.0 + 0 +LINE + 5 +105B + 8 +0 + 62 + 0 + 10 +6387.499996 + 20 +9185.048092 + 30 +0.0 + 11 +6374.999996 + 21 +9206.698727 + 31 +0.0 + 0 +LINE + 5 +105C + 8 +0 + 62 + 0 + 10 +6349.999996 + 20 +9249.999997 + 30 +0.0 + 11 +6349.999994 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +105D + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11588.268588 + 30 +0.0 + 11 +4987.499996 + 21 +11609.919223 + 31 +0.0 + 0 +LINE + 5 +105E + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11653.220493 + 30 +0.0 + 11 +4949.999996 + 21 +11674.871128 + 31 +0.0 + 0 +LINE + 5 +105F + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11718.172398 + 30 +0.0 + 11 +4920.0 + 21 +11726.832645 + 31 +0.0 + 0 +LINE + 5 +1060 + 8 +0 + 62 + 0 + 10 +6349.999996 + 20 +9206.698727 + 30 +0.0 + 11 +6337.499996 + 21 +9228.349362 + 31 +0.0 + 0 +LINE + 5 +1061 + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11544.967318 + 30 +0.0 + 11 +4987.499996 + 21 +11566.617953 + 31 +0.0 + 0 +LINE + 5 +1062 + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11609.919223 + 30 +0.0 + 11 +4949.999996 + 21 +11631.569858 + 31 +0.0 + 0 +LINE + 5 +1063 + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11674.871128 + 30 +0.0 + 11 +4920.0 + 21 +11683.531375 + 31 +0.0 + 0 +LINE + 5 +1064 + 8 +0 + 62 + 0 + 10 +6346.188016 + 20 +9170.0 + 30 +0.0 + 11 +6337.499996 + 21 +9185.048092 + 31 +0.0 + 0 +LINE + 5 +1065 + 8 +0 + 62 + 0 + 10 +6312.499996 + 20 +9228.349362 + 30 +0.0 + 11 +6299.999996 + 21 +9249.999998 + 31 +0.0 + 0 +LINE + 5 +1066 + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11501.666047 + 30 +0.0 + 11 +4987.499996 + 21 +11523.316682 + 31 +0.0 + 0 +LINE + 5 +1067 + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11566.617953 + 30 +0.0 + 11 +4949.999996 + 21 +11588.268588 + 31 +0.0 + 0 +LINE + 5 +1068 + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11631.569858 + 30 +0.0 + 11 +4920.0 + 21 +11640.230105 + 31 +0.0 + 0 +LINE + 5 +1069 + 8 +0 + 62 + 0 + 10 +6312.499996 + 20 +9185.048092 + 30 +0.0 + 11 +6299.999996 + 21 +9206.698727 + 31 +0.0 + 0 +LINE + 5 +106A + 8 +0 + 62 + 0 + 10 +6274.999996 + 20 +9249.999998 + 30 +0.0 + 11 +6274.999994 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +106B + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11458.364777 + 30 +0.0 + 11 +4987.499996 + 21 +11480.015412 + 31 +0.0 + 0 +LINE + 5 +106C + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11523.316683 + 30 +0.0 + 11 +4949.999996 + 21 +11544.967318 + 31 +0.0 + 0 +LINE + 5 +106D + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11588.268588 + 30 +0.0 + 11 +4920.0 + 21 +11596.928835 + 31 +0.0 + 0 +LINE + 5 +106E + 8 +0 + 62 + 0 + 10 +6274.999996 + 20 +9206.698727 + 30 +0.0 + 11 +6262.499996 + 21 +9228.349363 + 31 +0.0 + 0 +LINE + 5 +106F + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11415.063507 + 30 +0.0 + 11 +4987.499996 + 21 +11436.714142 + 31 +0.0 + 0 +LINE + 5 +1070 + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11480.015412 + 30 +0.0 + 11 +4949.999996 + 21 +11501.666047 + 31 +0.0 + 0 +LINE + 5 +1071 + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11544.967318 + 30 +0.0 + 11 +4920.0 + 21 +11553.627565 + 31 +0.0 + 0 +LINE + 5 +1072 + 8 +0 + 62 + 0 + 10 +6271.188016 + 20 +9170.0 + 30 +0.0 + 11 +6262.499996 + 21 +9185.048092 + 31 +0.0 + 0 +LINE + 5 +1073 + 8 +0 + 62 + 0 + 10 +6237.499996 + 20 +9228.349363 + 30 +0.0 + 11 +6224.999996 + 21 +9249.999998 + 31 +0.0 + 0 +LINE + 5 +1074 + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11371.762237 + 30 +0.0 + 11 +4987.499996 + 21 +11393.412872 + 31 +0.0 + 0 +LINE + 5 +1075 + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11436.714142 + 30 +0.0 + 11 +4949.999996 + 21 +11458.364777 + 31 +0.0 + 0 +LINE + 5 +1076 + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11501.666048 + 30 +0.0 + 11 +4920.0 + 21 +11510.326295 + 31 +0.0 + 0 +LINE + 5 +1077 + 8 +0 + 62 + 0 + 10 +6237.499996 + 20 +9185.048092 + 30 +0.0 + 11 +6224.999996 + 21 +9206.698728 + 31 +0.0 + 0 +LINE + 5 +1078 + 8 +0 + 62 + 0 + 10 +6199.999996 + 20 +9249.999998 + 30 +0.0 + 11 +6199.999995 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1079 + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11328.460967 + 30 +0.0 + 11 +4987.499996 + 21 +11350.111602 + 31 +0.0 + 0 +LINE + 5 +107A + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11393.412872 + 30 +0.0 + 11 +4949.999996 + 21 +11415.063507 + 31 +0.0 + 0 +LINE + 5 +107B + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11458.364777 + 30 +0.0 + 11 +4920.0 + 21 +11467.025025 + 31 +0.0 + 0 +LINE + 5 +107C + 8 +0 + 62 + 0 + 10 +6199.999996 + 20 +9206.698728 + 30 +0.0 + 11 +6187.499996 + 21 +9228.349363 + 31 +0.0 + 0 +LINE + 5 +107D + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11285.159697 + 30 +0.0 + 11 +4987.499996 + 21 +11306.810332 + 31 +0.0 + 0 +LINE + 5 +107E + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11350.111602 + 30 +0.0 + 11 +4949.999996 + 21 +11371.762237 + 31 +0.0 + 0 +LINE + 5 +107F + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11415.063507 + 30 +0.0 + 11 +4920.0 + 21 +11423.723755 + 31 +0.0 + 0 +LINE + 5 +1080 + 8 +0 + 62 + 0 + 10 +6196.188017 + 20 +9170.0 + 30 +0.0 + 11 +6187.499996 + 21 +9185.048093 + 31 +0.0 + 0 +LINE + 5 +1081 + 8 +0 + 62 + 0 + 10 +6162.499996 + 20 +9228.349363 + 30 +0.0 + 11 +6149.999996 + 21 +9249.999998 + 31 +0.0 + 0 +LINE + 5 +1082 + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11241.858427 + 30 +0.0 + 11 +4987.499996 + 21 +11263.509062 + 31 +0.0 + 0 +LINE + 5 +1083 + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11306.810332 + 30 +0.0 + 11 +4949.999996 + 21 +11328.460967 + 31 +0.0 + 0 +LINE + 5 +1084 + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11371.762237 + 30 +0.0 + 11 +4920.0 + 21 +11380.422485 + 31 +0.0 + 0 +LINE + 5 +1085 + 8 +0 + 62 + 0 + 10 +6162.499996 + 20 +9185.048093 + 30 +0.0 + 11 +6149.999996 + 21 +9206.698728 + 31 +0.0 + 0 +LINE + 5 +1086 + 8 +0 + 62 + 0 + 10 +6124.999996 + 20 +9249.999998 + 30 +0.0 + 11 +6124.999995 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1087 + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11198.557156 + 30 +0.0 + 11 +4987.499996 + 21 +11220.207791 + 31 +0.0 + 0 +LINE + 5 +1088 + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11263.509062 + 30 +0.0 + 11 +4949.999996 + 21 +11285.159697 + 31 +0.0 + 0 +LINE + 5 +1089 + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11328.460967 + 30 +0.0 + 11 +4920.0 + 21 +11337.121215 + 31 +0.0 + 0 +LINE + 5 +108A + 8 +0 + 62 + 0 + 10 +6124.999996 + 20 +9206.698728 + 30 +0.0 + 11 +6112.499996 + 21 +9228.349363 + 31 +0.0 + 0 +LINE + 5 +108B + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11155.255886 + 30 +0.0 + 11 +4987.499996 + 21 +11176.906521 + 31 +0.0 + 0 +LINE + 5 +108C + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11220.207792 + 30 +0.0 + 11 +4949.999996 + 21 +11241.858427 + 31 +0.0 + 0 +LINE + 5 +108D + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11285.159697 + 30 +0.0 + 11 +4920.0 + 21 +11293.819945 + 31 +0.0 + 0 +LINE + 5 +108E + 8 +0 + 62 + 0 + 10 +6121.188017 + 20 +9170.0 + 30 +0.0 + 11 +6112.499996 + 21 +9185.048093 + 31 +0.0 + 0 +LINE + 5 +108F + 8 +0 + 62 + 0 + 10 +6087.499996 + 20 +9228.349363 + 30 +0.0 + 11 +6074.999996 + 21 +9249.999998 + 31 +0.0 + 0 +LINE + 5 +1090 + 8 +0 + 62 + 0 + 10 +4999.999996 + 20 +11111.954616 + 30 +0.0 + 11 +4987.499996 + 21 +11133.605251 + 31 +0.0 + 0 +LINE + 5 +1091 + 8 +0 + 62 + 0 + 10 +4962.499996 + 20 +11176.906521 + 30 +0.0 + 11 +4949.999996 + 21 +11198.557156 + 31 +0.0 + 0 +LINE + 5 +1092 + 8 +0 + 62 + 0 + 10 +4924.999996 + 20 +11241.858427 + 30 +0.0 + 11 +4920.0 + 21 +11250.518675 + 31 +0.0 + 0 +LINE + 5 +1093 + 8 +0 + 62 + 0 + 10 +6087.499997 + 20 +9185.048093 + 30 +0.0 + 11 +6074.999997 + 21 +9206.698728 + 31 +0.0 + 0 +LINE + 5 +1094 + 8 +0 + 62 + 0 + 10 +6049.999997 + 20 +9249.999998 + 30 +0.0 + 11 +6049.999995 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1095 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +11068.653346 + 30 +0.0 + 11 +4987.499997 + 21 +11090.303981 + 31 +0.0 + 0 +LINE + 5 +1096 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +11133.605251 + 30 +0.0 + 11 +4949.999997 + 21 +11155.255886 + 31 +0.0 + 0 +LINE + 5 +1097 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +11198.557157 + 30 +0.0 + 11 +4920.0 + 21 +11207.217405 + 31 +0.0 + 0 +LINE + 5 +1098 + 8 +0 + 62 + 0 + 10 +6049.999997 + 20 +9206.698728 + 30 +0.0 + 11 +6037.499997 + 21 +9228.349363 + 31 +0.0 + 0 +LINE + 5 +1099 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +11025.352076 + 30 +0.0 + 11 +4987.499997 + 21 +11047.002711 + 31 +0.0 + 0 +LINE + 5 +109A + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +11090.303981 + 30 +0.0 + 11 +4949.999997 + 21 +11111.954616 + 31 +0.0 + 0 +LINE + 5 +109B + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +11155.255886 + 30 +0.0 + 11 +4920.0 + 21 +11163.916135 + 31 +0.0 + 0 +LINE + 5 +109C + 8 +0 + 62 + 0 + 10 +6046.188017 + 20 +9170.0 + 30 +0.0 + 11 +6037.499997 + 21 +9185.048093 + 31 +0.0 + 0 +LINE + 5 +109D + 8 +0 + 62 + 0 + 10 +6012.499997 + 20 +9228.349363 + 30 +0.0 + 11 +5999.999997 + 21 +9249.999998 + 31 +0.0 + 0 +LINE + 5 +109E + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10982.050806 + 30 +0.0 + 11 +4987.499997 + 21 +11003.701441 + 31 +0.0 + 0 +LINE + 5 +109F + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +11047.002711 + 30 +0.0 + 11 +4949.999997 + 21 +11068.653346 + 31 +0.0 + 0 +LINE + 5 +10A0 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +11111.954616 + 30 +0.0 + 11 +4920.0 + 21 +11120.614865 + 31 +0.0 + 0 +LINE + 5 +10A1 + 8 +0 + 62 + 0 + 10 +6012.499997 + 20 +9185.048093 + 30 +0.0 + 11 +5999.999997 + 21 +9206.698728 + 31 +0.0 + 0 +LINE + 5 +10A2 + 8 +0 + 62 + 0 + 10 +5974.999997 + 20 +9249.999998 + 30 +0.0 + 11 +5974.999996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +10A3 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10938.749536 + 30 +0.0 + 11 +4987.499997 + 21 +10960.400171 + 31 +0.0 + 0 +LINE + 5 +10A4 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +11003.701441 + 30 +0.0 + 11 +4949.999997 + 21 +11025.352076 + 31 +0.0 + 0 +LINE + 5 +10A5 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +11068.653346 + 30 +0.0 + 11 +4920.0 + 21 +11077.313595 + 31 +0.0 + 0 +LINE + 5 +10A6 + 8 +0 + 62 + 0 + 10 +5974.999997 + 20 +9206.698728 + 30 +0.0 + 11 +5962.499997 + 21 +9228.349363 + 31 +0.0 + 0 +LINE + 5 +10A7 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10895.448265 + 30 +0.0 + 11 +4987.499997 + 21 +10917.0989 + 31 +0.0 + 0 +LINE + 5 +10A8 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10960.400171 + 30 +0.0 + 11 +4949.999997 + 21 +10982.050806 + 31 +0.0 + 0 +LINE + 5 +10A9 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +11025.352076 + 30 +0.0 + 11 +4920.0 + 21 +11034.012325 + 31 +0.0 + 0 +LINE + 5 +10AA + 8 +0 + 62 + 0 + 10 +5971.188017 + 20 +9170.0 + 30 +0.0 + 11 +5962.499997 + 21 +9185.048093 + 31 +0.0 + 0 +LINE + 5 +10AB + 8 +0 + 62 + 0 + 10 +5937.499997 + 20 +9228.349363 + 30 +0.0 + 11 +5924.999997 + 21 +9249.999998 + 31 +0.0 + 0 +LINE + 5 +10AC + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10852.146995 + 30 +0.0 + 11 +4987.499997 + 21 +10873.79763 + 31 +0.0 + 0 +LINE + 5 +10AD + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10917.098901 + 30 +0.0 + 11 +4949.999997 + 21 +10938.749536 + 31 +0.0 + 0 +LINE + 5 +10AE + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +10982.050806 + 30 +0.0 + 11 +4920.0 + 21 +10990.711055 + 31 +0.0 + 0 +LINE + 5 +10AF + 8 +0 + 62 + 0 + 10 +5937.499997 + 20 +9185.048093 + 30 +0.0 + 11 +5924.999997 + 21 +9206.698728 + 31 +0.0 + 0 +LINE + 5 +10B0 + 8 +0 + 62 + 0 + 10 +5899.999997 + 20 +9249.999998 + 30 +0.0 + 11 +5899.999996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +10B1 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10808.845725 + 30 +0.0 + 11 +4987.499997 + 21 +10830.49636 + 31 +0.0 + 0 +LINE + 5 +10B2 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10873.79763 + 30 +0.0 + 11 +4949.999997 + 21 +10895.448265 + 31 +0.0 + 0 +LINE + 5 +10B3 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +10938.749536 + 30 +0.0 + 11 +4920.0 + 21 +10947.409785 + 31 +0.0 + 0 +LINE + 5 +10B4 + 8 +0 + 62 + 0 + 10 +5899.999997 + 20 +9206.698728 + 30 +0.0 + 11 +5887.499997 + 21 +9228.349363 + 31 +0.0 + 0 +LINE + 5 +10B5 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10765.544455 + 30 +0.0 + 11 +4987.499997 + 21 +10787.19509 + 31 +0.0 + 0 +LINE + 5 +10B6 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10830.49636 + 30 +0.0 + 11 +4949.999997 + 21 +10852.146995 + 31 +0.0 + 0 +LINE + 5 +10B7 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +10895.448266 + 30 +0.0 + 11 +4920.0 + 21 +10904.108515 + 31 +0.0 + 0 +LINE + 5 +10B8 + 8 +0 + 62 + 0 + 10 +5896.188018 + 20 +9170.0 + 30 +0.0 + 11 +5887.499997 + 21 +9185.048093 + 31 +0.0 + 0 +LINE + 5 +10B9 + 8 +0 + 62 + 0 + 10 +5862.499997 + 20 +9228.349363 + 30 +0.0 + 11 +5849.999997 + 21 +9249.999998 + 31 +0.0 + 0 +LINE + 5 +10BA + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10722.243185 + 30 +0.0 + 11 +4987.499997 + 21 +10743.89382 + 31 +0.0 + 0 +LINE + 5 +10BB + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10787.19509 + 30 +0.0 + 11 +4949.999997 + 21 +10808.845725 + 31 +0.0 + 0 +LINE + 5 +10BC + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +10852.146995 + 30 +0.0 + 11 +4920.0 + 21 +10860.807245 + 31 +0.0 + 0 +LINE + 5 +10BD + 8 +0 + 62 + 0 + 10 +5862.499997 + 20 +9185.048093 + 30 +0.0 + 11 +5849.999997 + 21 +9206.698728 + 31 +0.0 + 0 +LINE + 5 +10BE + 8 +0 + 62 + 0 + 10 +5824.999997 + 20 +9249.999998 + 30 +0.0 + 11 +5824.999996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +10BF + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10678.941915 + 30 +0.0 + 11 +4987.499997 + 21 +10700.59255 + 31 +0.0 + 0 +LINE + 5 +10C0 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10743.89382 + 30 +0.0 + 11 +4949.999997 + 21 +10765.544455 + 31 +0.0 + 0 +LINE + 5 +10C1 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +10808.845725 + 30 +0.0 + 11 +4920.0 + 21 +10817.505975 + 31 +0.0 + 0 +LINE + 5 +10C2 + 8 +0 + 62 + 0 + 10 +5824.999997 + 20 +9206.698728 + 30 +0.0 + 11 +5812.499997 + 21 +9228.349363 + 31 +0.0 + 0 +LINE + 5 +10C3 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10635.640645 + 30 +0.0 + 11 +4987.499997 + 21 +10657.29128 + 31 +0.0 + 0 +LINE + 5 +10C4 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10700.59255 + 30 +0.0 + 11 +4949.999997 + 21 +10722.243185 + 31 +0.0 + 0 +LINE + 5 +10C5 + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +10765.544455 + 30 +0.0 + 11 +4920.0 + 21 +10774.204705 + 31 +0.0 + 0 +LINE + 5 +10C6 + 8 +0 + 62 + 0 + 10 +5821.188018 + 20 +9170.0 + 30 +0.0 + 11 +5812.499997 + 21 +9185.048093 + 31 +0.0 + 0 +LINE + 5 +10C7 + 8 +0 + 62 + 0 + 10 +5787.499997 + 20 +9228.349363 + 30 +0.0 + 11 +5774.999997 + 21 +9249.999999 + 31 +0.0 + 0 +LINE + 5 +10C8 + 8 +0 + 62 + 0 + 10 +4999.999997 + 20 +10592.339374 + 30 +0.0 + 11 +4987.499997 + 21 +10613.990009 + 31 +0.0 + 0 +LINE + 5 +10C9 + 8 +0 + 62 + 0 + 10 +4962.499997 + 20 +10657.29128 + 30 +0.0 + 11 +4949.999997 + 21 +10678.941915 + 31 +0.0 + 0 +LINE + 5 +10CA + 8 +0 + 62 + 0 + 10 +4924.999997 + 20 +10722.243185 + 30 +0.0 + 11 +4920.0 + 21 +10730.903435 + 31 +0.0 + 0 +LINE + 5 +10CB + 8 +0 + 62 + 0 + 10 +5787.499998 + 20 +9185.048093 + 30 +0.0 + 11 +5774.999998 + 21 +9206.698728 + 31 +0.0 + 0 +LINE + 5 +10CC + 8 +0 + 62 + 0 + 10 +5749.999998 + 20 +9249.999999 + 30 +0.0 + 11 +5749.999997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +10CD + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10549.038104 + 30 +0.0 + 11 +4987.499998 + 21 +10570.688739 + 31 +0.0 + 0 +LINE + 5 +10CE + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10613.99001 + 30 +0.0 + 11 +4949.999998 + 21 +10635.640645 + 31 +0.0 + 0 +LINE + 5 +10CF + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10678.941915 + 30 +0.0 + 11 +4920.0 + 21 +10687.602165 + 31 +0.0 + 0 +LINE + 5 +10D0 + 8 +0 + 62 + 0 + 10 +5749.999998 + 20 +9206.698728 + 30 +0.0 + 11 +5737.499998 + 21 +9228.349364 + 31 +0.0 + 0 +LINE + 5 +10D1 + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10505.736834 + 30 +0.0 + 11 +4987.499998 + 21 +10527.387469 + 31 +0.0 + 0 +LINE + 5 +10D2 + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10570.688739 + 30 +0.0 + 11 +4949.999998 + 21 +10592.339374 + 31 +0.0 + 0 +LINE + 5 +10D3 + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10635.640645 + 30 +0.0 + 11 +4920.0 + 21 +10644.300895 + 31 +0.0 + 0 +LINE + 5 +10D4 + 8 +0 + 62 + 0 + 10 +5746.188018 + 20 +9170.0 + 30 +0.0 + 11 +5737.499998 + 21 +9185.048093 + 31 +0.0 + 0 +LINE + 5 +10D5 + 8 +0 + 62 + 0 + 10 +5712.499998 + 20 +9228.349364 + 30 +0.0 + 11 +5699.999998 + 21 +9249.999999 + 31 +0.0 + 0 +LINE + 5 +10D6 + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10462.435564 + 30 +0.0 + 11 +4987.499998 + 21 +10484.086199 + 31 +0.0 + 0 +LINE + 5 +10D7 + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10527.387469 + 30 +0.0 + 11 +4949.999998 + 21 +10549.038104 + 31 +0.0 + 0 +LINE + 5 +10D8 + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10592.339375 + 30 +0.0 + 11 +4920.0 + 21 +10600.999625 + 31 +0.0 + 0 +LINE + 5 +10D9 + 8 +0 + 62 + 0 + 10 +5712.499998 + 20 +9185.048093 + 30 +0.0 + 11 +5699.999998 + 21 +9206.698729 + 31 +0.0 + 0 +LINE + 5 +10DA + 8 +0 + 62 + 0 + 10 +5674.999998 + 20 +9249.999999 + 30 +0.0 + 11 +5674.999997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +10DB + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10419.134294 + 30 +0.0 + 11 +4987.499998 + 21 +10440.784929 + 31 +0.0 + 0 +LINE + 5 +10DC + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10484.086199 + 30 +0.0 + 11 +4949.999998 + 21 +10505.736834 + 31 +0.0 + 0 +LINE + 5 +10DD + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10549.038104 + 30 +0.0 + 11 +4920.0 + 21 +10557.698355 + 31 +0.0 + 0 +LINE + 5 +10DE + 8 +0 + 62 + 0 + 10 +5674.999998 + 20 +9206.698729 + 30 +0.0 + 11 +5662.499998 + 21 +9228.349364 + 31 +0.0 + 0 +LINE + 5 +10DF + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10375.833024 + 30 +0.0 + 11 +4987.499998 + 21 +10397.483659 + 31 +0.0 + 0 +LINE + 5 +10E0 + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10440.784929 + 30 +0.0 + 11 +4949.999998 + 21 +10462.435564 + 31 +0.0 + 0 +LINE + 5 +10E1 + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10505.736834 + 30 +0.0 + 11 +4920.0 + 21 +10514.397085 + 31 +0.0 + 0 +LINE + 5 +10E2 + 8 +0 + 62 + 0 + 10 +5671.188019 + 20 +9170.0 + 30 +0.0 + 11 +5662.499998 + 21 +9185.048094 + 31 +0.0 + 0 +LINE + 5 +10E3 + 8 +0 + 62 + 0 + 10 +5637.499998 + 20 +9228.349364 + 30 +0.0 + 11 +5624.999998 + 21 +9249.999999 + 31 +0.0 + 0 +LINE + 5 +10E4 + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10332.531754 + 30 +0.0 + 11 +4987.499998 + 21 +10354.182389 + 31 +0.0 + 0 +LINE + 5 +10E5 + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10397.483659 + 30 +0.0 + 11 +4949.999998 + 21 +10419.134294 + 31 +0.0 + 0 +LINE + 5 +10E6 + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10462.435564 + 30 +0.0 + 11 +4920.0 + 21 +10471.095815 + 31 +0.0 + 0 +LINE + 5 +10E7 + 8 +0 + 62 + 0 + 10 +5637.499998 + 20 +9185.048094 + 30 +0.0 + 11 +5624.999998 + 21 +9206.698729 + 31 +0.0 + 0 +LINE + 5 +10E8 + 8 +0 + 62 + 0 + 10 +5599.999998 + 20 +9249.999999 + 30 +0.0 + 11 +5599.999997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +10E9 + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10289.230483 + 30 +0.0 + 11 +4987.499998 + 21 +10310.881119 + 31 +0.0 + 0 +LINE + 5 +10EA + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10354.182389 + 30 +0.0 + 11 +4949.999998 + 21 +10375.833024 + 31 +0.0 + 0 +LINE + 5 +10EB + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10419.134294 + 30 +0.0 + 11 +4920.0 + 21 +10427.794545 + 31 +0.0 + 0 +LINE + 5 +10EC + 8 +0 + 62 + 0 + 10 +5599.999998 + 20 +9206.698729 + 30 +0.0 + 11 +5587.499998 + 21 +9228.349364 + 31 +0.0 + 0 +LINE + 5 +10ED + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10245.929213 + 30 +0.0 + 11 +4987.499998 + 21 +10267.579848 + 31 +0.0 + 0 +LINE + 5 +10EE + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10310.881119 + 30 +0.0 + 11 +4949.999998 + 21 +10332.531754 + 31 +0.0 + 0 +LINE + 5 +10EF + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10375.833024 + 30 +0.0 + 11 +4920.0 + 21 +10384.493275 + 31 +0.0 + 0 +LINE + 5 +10F0 + 8 +0 + 62 + 0 + 10 +5596.188019 + 20 +9170.0 + 30 +0.0 + 11 +5587.499998 + 21 +9185.048094 + 31 +0.0 + 0 +LINE + 5 +10F1 + 8 +0 + 62 + 0 + 10 +5562.499998 + 20 +9228.349364 + 30 +0.0 + 11 +5549.999998 + 21 +9249.999999 + 31 +0.0 + 0 +LINE + 5 +10F2 + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10202.627943 + 30 +0.0 + 11 +4987.499998 + 21 +10224.278578 + 31 +0.0 + 0 +LINE + 5 +10F3 + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10267.579848 + 30 +0.0 + 11 +4949.999998 + 21 +10289.230484 + 31 +0.0 + 0 +LINE + 5 +10F4 + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10332.531754 + 30 +0.0 + 11 +4920.0 + 21 +10341.192005 + 31 +0.0 + 0 +LINE + 5 +10F5 + 8 +0 + 62 + 0 + 10 +5562.499998 + 20 +9185.048094 + 30 +0.0 + 11 +5549.999998 + 21 +9206.698729 + 31 +0.0 + 0 +LINE + 5 +10F6 + 8 +0 + 62 + 0 + 10 +5524.999998 + 20 +9249.999999 + 30 +0.0 + 11 +5524.999998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +10F7 + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10159.326673 + 30 +0.0 + 11 +4987.499998 + 21 +10180.977308 + 31 +0.0 + 0 +LINE + 5 +10F8 + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10224.278578 + 30 +0.0 + 11 +4949.999998 + 21 +10245.929213 + 31 +0.0 + 0 +LINE + 5 +10F9 + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10289.230484 + 30 +0.0 + 11 +4920.0 + 21 +10297.890735 + 31 +0.0 + 0 +LINE + 5 +10FA + 8 +0 + 62 + 0 + 10 +5524.999998 + 20 +9206.698729 + 30 +0.0 + 11 +5512.499998 + 21 +9228.349364 + 31 +0.0 + 0 +LINE + 5 +10FB + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10116.025403 + 30 +0.0 + 11 +4987.499998 + 21 +10137.676038 + 31 +0.0 + 0 +LINE + 5 +10FC + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10180.977308 + 30 +0.0 + 11 +4949.999998 + 21 +10202.627943 + 31 +0.0 + 0 +LINE + 5 +10FD + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10245.929213 + 30 +0.0 + 11 +4920.0 + 21 +10254.589465 + 31 +0.0 + 0 +LINE + 5 +10FE + 8 +0 + 62 + 0 + 10 +5521.188019 + 20 +9170.0 + 30 +0.0 + 11 +5512.499998 + 21 +9185.048094 + 31 +0.0 + 0 +LINE + 5 +10FF + 8 +0 + 62 + 0 + 10 +5487.499998 + 20 +9228.349364 + 30 +0.0 + 11 +5474.999998 + 21 +9249.999999 + 31 +0.0 + 0 +LINE + 5 +1100 + 8 +0 + 62 + 0 + 10 +4999.999998 + 20 +10072.724133 + 30 +0.0 + 11 +4987.499998 + 21 +10094.374768 + 31 +0.0 + 0 +LINE + 5 +1101 + 8 +0 + 62 + 0 + 10 +4962.499998 + 20 +10137.676038 + 30 +0.0 + 11 +4949.999998 + 21 +10159.326673 + 31 +0.0 + 0 +LINE + 5 +1102 + 8 +0 + 62 + 0 + 10 +4924.999998 + 20 +10202.627943 + 30 +0.0 + 11 +4920.0 + 21 +10211.288195 + 31 +0.0 + 0 +LINE + 5 +1103 + 8 +0 + 62 + 0 + 10 +5487.499999 + 20 +9185.048094 + 30 +0.0 + 11 +5474.999999 + 21 +9206.698729 + 31 +0.0 + 0 +LINE + 5 +1104 + 8 +0 + 62 + 0 + 10 +5449.999999 + 20 +9249.999999 + 30 +0.0 + 11 +5449.999998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1105 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +10029.422863 + 30 +0.0 + 11 +4987.499999 + 21 +10051.073498 + 31 +0.0 + 0 +LINE + 5 +1106 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +10094.374768 + 30 +0.0 + 11 +4949.999999 + 21 +10116.025403 + 31 +0.0 + 0 +LINE + 5 +1107 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +10159.326673 + 30 +0.0 + 11 +4920.0 + 21 +10167.986925 + 31 +0.0 + 0 +LINE + 5 +1108 + 8 +0 + 62 + 0 + 10 +5449.999999 + 20 +9206.698729 + 30 +0.0 + 11 +5437.499999 + 21 +9228.349364 + 31 +0.0 + 0 +LINE + 5 +1109 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9986.121592 + 30 +0.0 + 11 +4987.499999 + 21 +10007.772228 + 31 +0.0 + 0 +LINE + 5 +110A + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +10051.073498 + 30 +0.0 + 11 +4949.999999 + 21 +10072.724133 + 31 +0.0 + 0 +LINE + 5 +110B + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +10116.025403 + 30 +0.0 + 11 +4920.0 + 21 +10124.685655 + 31 +0.0 + 0 +LINE + 5 +110C + 8 +0 + 62 + 0 + 10 +5446.18802 + 20 +9170.0 + 30 +0.0 + 11 +5437.499999 + 21 +9185.048094 + 31 +0.0 + 0 +LINE + 5 +110D + 8 +0 + 62 + 0 + 10 +5412.499999 + 20 +9228.349364 + 30 +0.0 + 11 +5399.999999 + 21 +9249.999999 + 31 +0.0 + 0 +LINE + 5 +110E + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9942.820322 + 30 +0.0 + 11 +4987.499999 + 21 +9964.470957 + 31 +0.0 + 0 +LINE + 5 +110F + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +10007.772228 + 30 +0.0 + 11 +4949.999999 + 21 +10029.422863 + 31 +0.0 + 0 +LINE + 5 +1110 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +10072.724133 + 30 +0.0 + 11 +4920.0 + 21 +10081.384385 + 31 +0.0 + 0 +LINE + 5 +1111 + 8 +0 + 62 + 0 + 10 +5412.499999 + 20 +9185.048094 + 30 +0.0 + 11 +5399.999999 + 21 +9206.698729 + 31 +0.0 + 0 +LINE + 5 +1112 + 8 +0 + 62 + 0 + 10 +5374.999999 + 20 +9249.999999 + 30 +0.0 + 11 +5374.999998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1113 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9899.519052 + 30 +0.0 + 11 +4987.499999 + 21 +9921.169687 + 31 +0.0 + 0 +LINE + 5 +1114 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9964.470957 + 30 +0.0 + 11 +4949.999999 + 21 +9986.121593 + 31 +0.0 + 0 +LINE + 5 +1115 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +10029.422863 + 30 +0.0 + 11 +4920.0 + 21 +10038.083115 + 31 +0.0 + 0 +LINE + 5 +1116 + 8 +0 + 62 + 0 + 10 +5374.999999 + 20 +9206.698729 + 30 +0.0 + 11 +5362.499999 + 21 +9228.349364 + 31 +0.0 + 0 +LINE + 5 +1117 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9856.217782 + 30 +0.0 + 11 +4987.499999 + 21 +9877.868417 + 31 +0.0 + 0 +LINE + 5 +1118 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9921.169687 + 30 +0.0 + 11 +4949.999999 + 21 +9942.820322 + 31 +0.0 + 0 +LINE + 5 +1119 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9986.121593 + 30 +0.0 + 11 +4920.0 + 21 +9994.781845 + 31 +0.0 + 0 +LINE + 5 +111A + 8 +0 + 62 + 0 + 10 +5371.18802 + 20 +9170.0 + 30 +0.0 + 11 +5362.499999 + 21 +9185.048094 + 31 +0.0 + 0 +LINE + 5 +111B + 8 +0 + 62 + 0 + 10 +5337.499999 + 20 +9228.349364 + 30 +0.0 + 11 +5324.999999 + 21 +9249.999999 + 31 +0.0 + 0 +LINE + 5 +111C + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9812.916512 + 30 +0.0 + 11 +4987.499999 + 21 +9834.567147 + 31 +0.0 + 0 +LINE + 5 +111D + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9877.868417 + 30 +0.0 + 11 +4949.999999 + 21 +9899.519052 + 31 +0.0 + 0 +LINE + 5 +111E + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9942.820322 + 30 +0.0 + 11 +4920.0 + 21 +9951.480575 + 31 +0.0 + 0 +LINE + 5 +111F + 8 +0 + 62 + 0 + 10 +5337.499999 + 20 +9185.048094 + 30 +0.0 + 11 +5324.999999 + 21 +9206.698729 + 31 +0.0 + 0 +LINE + 5 +1120 + 8 +0 + 62 + 0 + 10 +5299.999999 + 20 +9249.999999 + 30 +0.0 + 11 +5299.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1121 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9769.615242 + 30 +0.0 + 11 +4987.499999 + 21 +9791.265877 + 31 +0.0 + 0 +LINE + 5 +1122 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9834.567147 + 30 +0.0 + 11 +4949.999999 + 21 +9856.217782 + 31 +0.0 + 0 +LINE + 5 +1123 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9899.519052 + 30 +0.0 + 11 +4920.0 + 21 +9908.179305 + 31 +0.0 + 0 +LINE + 5 +1124 + 8 +0 + 62 + 0 + 10 +5299.999999 + 20 +9206.698729 + 30 +0.0 + 11 +5287.499999 + 21 +9228.349364 + 31 +0.0 + 0 +LINE + 5 +1125 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9726.313972 + 30 +0.0 + 11 +4987.499999 + 21 +9747.964607 + 31 +0.0 + 0 +LINE + 5 +1126 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9791.265877 + 30 +0.0 + 11 +4949.999999 + 21 +9812.916512 + 31 +0.0 + 0 +LINE + 5 +1127 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9856.217782 + 30 +0.0 + 11 +4920.0 + 21 +9864.878035 + 31 +0.0 + 0 +LINE + 5 +1128 + 8 +0 + 62 + 0 + 10 +5296.18802 + 20 +9170.0 + 30 +0.0 + 11 +5287.499999 + 21 +9185.048094 + 31 +0.0 + 0 +LINE + 5 +1129 + 8 +0 + 62 + 0 + 10 +5262.499999 + 20 +9228.349364 + 30 +0.0 + 11 +5249.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +112A + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9683.012701 + 30 +0.0 + 11 +4987.499999 + 21 +9704.663337 + 31 +0.0 + 0 +LINE + 5 +112B + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9747.964607 + 30 +0.0 + 11 +4949.999999 + 21 +9769.615242 + 31 +0.0 + 0 +LINE + 5 +112C + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9812.916512 + 30 +0.0 + 11 +4920.0 + 21 +9821.576765 + 31 +0.0 + 0 +LINE + 5 +112D + 8 +0 + 62 + 0 + 10 +5262.499999 + 20 +9185.048094 + 30 +0.0 + 11 +5249.999999 + 21 +9206.698729 + 31 +0.0 + 0 +LINE + 5 +112E + 8 +0 + 62 + 0 + 10 +5224.999999 + 20 +9250.0 + 30 +0.0 + 11 +5224.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +112F + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9639.711431 + 30 +0.0 + 11 +4987.499999 + 21 +9661.362066 + 31 +0.0 + 0 +LINE + 5 +1130 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9704.663337 + 30 +0.0 + 11 +4949.999999 + 21 +9726.313972 + 31 +0.0 + 0 +LINE + 5 +1131 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9769.615242 + 30 +0.0 + 11 +4920.0 + 21 +9778.275495 + 31 +0.0 + 0 +LINE + 5 +1132 + 8 +0 + 62 + 0 + 10 +5224.999999 + 20 +9206.698729 + 30 +0.0 + 11 +5212.499999 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1133 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9596.410161 + 30 +0.0 + 11 +4987.499999 + 21 +9618.060796 + 31 +0.0 + 0 +LINE + 5 +1134 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9661.362066 + 30 +0.0 + 11 +4949.999999 + 21 +9683.012702 + 31 +0.0 + 0 +LINE + 5 +1135 + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9726.313972 + 30 +0.0 + 11 +4920.0 + 21 +9734.974225 + 31 +0.0 + 0 +LINE + 5 +1136 + 8 +0 + 62 + 0 + 10 +5221.188021 + 20 +9170.0 + 30 +0.0 + 11 +5212.499999 + 21 +9185.048094 + 31 +0.0 + 0 +LINE + 5 +1137 + 8 +0 + 62 + 0 + 10 +5187.499999 + 20 +9228.349365 + 30 +0.0 + 11 +5174.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1138 + 8 +0 + 62 + 0 + 10 +4999.999999 + 20 +9553.108891 + 30 +0.0 + 11 +4987.499999 + 21 +9574.759526 + 31 +0.0 + 0 +LINE + 5 +1139 + 8 +0 + 62 + 0 + 10 +4962.499999 + 20 +9618.060796 + 30 +0.0 + 11 +4949.999999 + 21 +9639.711431 + 31 +0.0 + 0 +LINE + 5 +113A + 8 +0 + 62 + 0 + 10 +4924.999999 + 20 +9683.012702 + 30 +0.0 + 11 +4920.0 + 21 +9691.672955 + 31 +0.0 + 0 +LINE + 5 +113B + 8 +0 + 62 + 0 + 10 +5187.5 + 20 +9185.048094 + 30 +0.0 + 11 +5175.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +113C + 8 +0 + 62 + 0 + 10 +5150.0 + 20 +9250.0 + 30 +0.0 + 11 +5149.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +113D + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9509.807621 + 30 +0.0 + 11 +4987.5 + 21 +9531.458256 + 31 +0.0 + 0 +LINE + 5 +113E + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9574.759526 + 30 +0.0 + 11 +4950.0 + 21 +9596.410161 + 31 +0.0 + 0 +LINE + 5 +113F + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9639.711431 + 30 +0.0 + 11 +4920.0 + 21 +9648.371685 + 31 +0.0 + 0 +LINE + 5 +1140 + 8 +0 + 62 + 0 + 10 +5150.0 + 20 +9206.69873 + 30 +0.0 + 11 +5137.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1141 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9466.506351 + 30 +0.0 + 11 +4987.5 + 21 +9488.156986 + 31 +0.0 + 0 +LINE + 5 +1142 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9531.458256 + 30 +0.0 + 11 +4950.0 + 21 +9553.108891 + 31 +0.0 + 0 +LINE + 5 +1143 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9596.410161 + 30 +0.0 + 11 +4920.0 + 21 +9605.070415 + 31 +0.0 + 0 +LINE + 5 +1144 + 8 +0 + 62 + 0 + 10 +5146.188021 + 20 +9170.0 + 30 +0.0 + 11 +5137.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1145 + 8 +0 + 62 + 0 + 10 +5112.5 + 20 +9228.349365 + 30 +0.0 + 11 +5100.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1146 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9423.205081 + 30 +0.0 + 11 +4987.5 + 21 +9444.855716 + 31 +0.0 + 0 +LINE + 5 +1147 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9488.156986 + 30 +0.0 + 11 +4950.0 + 21 +9509.807621 + 31 +0.0 + 0 +LINE + 5 +1148 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9553.108891 + 30 +0.0 + 11 +4920.0 + 21 +9561.769145 + 31 +0.0 + 0 +LINE + 5 +1149 + 8 +0 + 62 + 0 + 10 +5112.5 + 20 +9185.048095 + 30 +0.0 + 11 +5100.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +114A + 8 +0 + 62 + 0 + 10 +5075.0 + 20 +9250.0 + 30 +0.0 + 11 +5075.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +114B + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9379.90381 + 30 +0.0 + 11 +4987.5 + 21 +9401.554446 + 31 +0.0 + 0 +LINE + 5 +114C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9444.855716 + 30 +0.0 + 11 +4950.0 + 21 +9466.506351 + 31 +0.0 + 0 +LINE + 5 +114D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9509.807621 + 30 +0.0 + 11 +4920.0 + 21 +9518.467875 + 31 +0.0 + 0 +LINE + 5 +114E + 8 +0 + 62 + 0 + 10 +5075.0 + 20 +9206.69873 + 30 +0.0 + 11 +5062.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +114F + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9336.60254 + 30 +0.0 + 11 +4987.5 + 21 +9358.253175 + 31 +0.0 + 0 +LINE + 5 +1150 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9401.554446 + 30 +0.0 + 11 +4950.0 + 21 +9423.205081 + 31 +0.0 + 0 +LINE + 5 +1151 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9466.506351 + 30 +0.0 + 11 +4920.0 + 21 +9475.166605 + 31 +0.0 + 0 +LINE + 5 +1152 + 8 +0 + 62 + 0 + 10 +5071.188021 + 20 +9170.0 + 30 +0.0 + 11 +5062.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1153 + 8 +0 + 62 + 0 + 10 +5037.5 + 20 +9228.349365 + 30 +0.0 + 11 +5025.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1154 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9293.30127 + 30 +0.0 + 11 +4987.5 + 21 +9314.951905 + 31 +0.0 + 0 +LINE + 5 +1155 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9358.253175 + 30 +0.0 + 11 +4950.0 + 21 +9379.903811 + 31 +0.0 + 0 +LINE + 5 +1156 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9423.205081 + 30 +0.0 + 11 +4920.0 + 21 +9431.865335 + 31 +0.0 + 0 +LINE + 5 +1157 + 8 +0 + 62 + 0 + 10 +5037.5 + 20 +9185.048095 + 30 +0.0 + 11 +5025.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1158 + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 11 +4987.5 + 21 +9271.650635 + 31 +0.0 + 0 +LINE + 5 +1159 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9314.951905 + 30 +0.0 + 11 +4950.0 + 21 +9336.60254 + 31 +0.0 + 0 +LINE + 5 +115A + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9379.903811 + 30 +0.0 + 11 +4920.0 + 21 +9388.564065 + 31 +0.0 + 0 +LINE + 5 +115B + 8 +0 + 62 + 0 + 10 +5000.0 + 20 +9206.69873 + 30 +0.0 + 11 +4987.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +115C + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9271.650635 + 30 +0.0 + 11 +4950.0 + 21 +9293.30127 + 31 +0.0 + 0 +LINE + 5 +115D + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9336.60254 + 30 +0.0 + 11 +4920.0 + 21 +9345.262795 + 31 +0.0 + 0 +LINE + 5 +115E + 8 +0 + 62 + 0 + 10 +4996.188022 + 20 +9170.0 + 30 +0.0 + 11 +4987.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +115F + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9228.349365 + 30 +0.0 + 11 +4950.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1160 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9293.30127 + 30 +0.0 + 11 +4920.0 + 21 +9301.961525 + 31 +0.0 + 0 +LINE + 5 +1161 + 8 +0 + 62 + 0 + 10 +4962.5 + 20 +9185.048095 + 30 +0.0 + 11 +4950.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1162 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9250.0 + 30 +0.0 + 11 +4920.0 + 21 +9258.660255 + 31 +0.0 + 0 +LINE + 5 +1163 + 8 +0 + 62 + 0 + 10 +4925.0 + 20 +9206.69873 + 30 +0.0 + 11 +4920.0 + 21 +9215.358985 + 31 +0.0 + 0 +LINE + 5 +1164 + 8 +0 + 62 + 0 + 10 +4921.188022 + 20 +9170.0 + 30 +0.0 + 11 +4920.0 + 21 +9172.057715 + 31 +0.0 + 0 +LINE + 5 +1165 + 8 +0 + 62 + 0 + 10 +4999.999991 + 20 +14229.646066 + 30 +0.0 + 11 +4987.499991 + 21 +14251.296701 + 31 +0.0 + 0 +LINE + 5 +1166 + 8 +0 + 62 + 0 + 10 +4962.499991 + 20 +14294.597972 + 30 +0.0 + 11 +4949.999991 + 21 +14316.248607 + 31 +0.0 + 0 +LINE + 5 +1167 + 8 +0 + 62 + 0 + 10 +4924.999991 + 20 +14359.549877 + 30 +0.0 + 11 +4920.0 + 21 +14368.210115 + 31 +0.0 + 0 +LINE + 5 +1168 + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14272.947336 + 30 +0.0 + 11 +4987.49999 + 21 +14294.597972 + 31 +0.0 + 0 +LINE + 5 +1169 + 8 +0 + 62 + 0 + 10 +4962.49999 + 20 +14337.899242 + 30 +0.0 + 11 +4949.99999 + 21 +14359.549877 + 31 +0.0 + 0 +LINE + 5 +116A + 8 +0 + 62 + 0 + 10 +4924.99999 + 20 +14402.851147 + 30 +0.0 + 11 +4920.0 + 21 +14411.511385 + 31 +0.0 + 0 +LINE + 5 +116B + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14316.248607 + 30 +0.0 + 11 +4987.49999 + 21 +14337.899242 + 31 +0.0 + 0 +LINE + 5 +116C + 8 +0 + 62 + 0 + 10 +4962.49999 + 20 +14381.200512 + 30 +0.0 + 11 +4949.99999 + 21 +14402.851147 + 31 +0.0 + 0 +LINE + 5 +116D + 8 +0 + 62 + 0 + 10 +4924.99999 + 20 +14446.152417 + 30 +0.0 + 11 +4920.0 + 21 +14454.812655 + 31 +0.0 + 0 +LINE + 5 +116E + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14359.549877 + 30 +0.0 + 11 +4987.49999 + 21 +14381.200512 + 31 +0.0 + 0 +LINE + 5 +116F + 8 +0 + 62 + 0 + 10 +4962.49999 + 20 +14424.501782 + 30 +0.0 + 11 +4949.99999 + 21 +14446.152417 + 31 +0.0 + 0 +LINE + 5 +1170 + 8 +0 + 62 + 0 + 10 +4924.99999 + 20 +14489.453687 + 30 +0.0 + 11 +4920.0 + 21 +14498.113925 + 31 +0.0 + 0 +LINE + 5 +1171 + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14402.851147 + 30 +0.0 + 11 +4987.49999 + 21 +14424.501782 + 31 +0.0 + 0 +LINE + 5 +1172 + 8 +0 + 62 + 0 + 10 +4962.49999 + 20 +14467.803052 + 30 +0.0 + 11 +4949.99999 + 21 +14489.453687 + 31 +0.0 + 0 +LINE + 5 +1173 + 8 +0 + 62 + 0 + 10 +4924.99999 + 20 +14532.754957 + 30 +0.0 + 11 +4920.0 + 21 +14541.415195 + 31 +0.0 + 0 +LINE + 5 +1174 + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14446.152417 + 30 +0.0 + 11 +4987.49999 + 21 +14467.803052 + 31 +0.0 + 0 +LINE + 5 +1175 + 8 +0 + 62 + 0 + 10 +4962.49999 + 20 +14511.104322 + 30 +0.0 + 11 +4949.99999 + 21 +14532.754957 + 31 +0.0 + 0 +LINE + 5 +1176 + 8 +0 + 62 + 0 + 10 +4924.99999 + 20 +14576.056228 + 30 +0.0 + 11 +4920.0 + 21 +14584.716465 + 31 +0.0 + 0 +LINE + 5 +1177 + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14489.453687 + 30 +0.0 + 11 +4987.49999 + 21 +14511.104322 + 31 +0.0 + 0 +LINE + 5 +1178 + 8 +0 + 62 + 0 + 10 +4962.49999 + 20 +14554.405592 + 30 +0.0 + 11 +4949.99999 + 21 +14576.056228 + 31 +0.0 + 0 +LINE + 5 +1179 + 8 +0 + 62 + 0 + 10 +4924.99999 + 20 +14619.357498 + 30 +0.0 + 11 +4921.020602 + 21 +14626.25 + 31 +0.0 + 0 +LINE + 5 +117A + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14532.754957 + 30 +0.0 + 11 +4987.49999 + 21 +14554.405592 + 31 +0.0 + 0 +LINE + 5 +117B + 8 +0 + 62 + 0 + 10 +4962.49999 + 20 +14597.706863 + 30 +0.0 + 11 +4949.99999 + 21 +14619.357498 + 31 +0.0 + 0 +LINE + 5 +117C + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14576.056227 + 30 +0.0 + 11 +4987.49999 + 21 +14597.706863 + 31 +0.0 + 0 +LINE + 5 +117D + 8 +0 + 62 + 0 + 10 +4999.99999 + 20 +14619.357498 + 30 +0.0 + 11 +4996.020602 + 21 +14626.25 + 31 +0.0 + 0 +LINE + 5 +117E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9414.544825 + 30 +0.0 + 11 +4925.000001 + 21 +9423.20508 + 31 +0.0 + 0 +LINE + 5 +117F + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9466.506351 + 30 +0.0 + 11 +4962.500001 + 21 +9488.156986 + 31 +0.0 + 0 +LINE + 5 +1180 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9531.458256 + 30 +0.0 + 11 +5000.0 + 21 +9553.10889 + 31 +0.0 + 0 +LINE + 5 +1181 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9457.846095 + 30 +0.0 + 11 +4925.000001 + 21 +9466.506351 + 31 +0.0 + 0 +LINE + 5 +1182 + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9509.807621 + 30 +0.0 + 11 +4962.500001 + 21 +9531.458256 + 31 +0.0 + 0 +LINE + 5 +1183 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9574.759526 + 30 +0.0 + 11 +5000.0 + 21 +9596.41016 + 31 +0.0 + 0 +LINE + 5 +1184 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9501.147365 + 30 +0.0 + 11 +4925.000001 + 21 +9509.807621 + 31 +0.0 + 0 +LINE + 5 +1185 + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9553.108891 + 30 +0.0 + 11 +4962.500001 + 21 +9574.759526 + 31 +0.0 + 0 +LINE + 5 +1186 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9618.060796 + 30 +0.0 + 11 +5000.0 + 21 +9639.71143 + 31 +0.0 + 0 +LINE + 5 +1187 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9544.448635 + 30 +0.0 + 11 +4925.000001 + 21 +9553.108891 + 31 +0.0 + 0 +LINE + 5 +1188 + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9596.410161 + 30 +0.0 + 11 +4962.500001 + 21 +9618.060796 + 31 +0.0 + 0 +LINE + 5 +1189 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9661.362066 + 30 +0.0 + 11 +5000.0 + 21 +9683.0127 + 31 +0.0 + 0 +LINE + 5 +118A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9587.749905 + 30 +0.0 + 11 +4925.000001 + 21 +9596.410161 + 31 +0.0 + 0 +LINE + 5 +118B + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9639.711431 + 30 +0.0 + 11 +4962.500001 + 21 +9661.362066 + 31 +0.0 + 0 +LINE + 5 +118C + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9704.663336 + 30 +0.0 + 11 +5000.0 + 21 +9726.31397 + 31 +0.0 + 0 +LINE + 5 +118D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9631.051175 + 30 +0.0 + 11 +4925.000001 + 21 +9639.711431 + 31 +0.0 + 0 +LINE + 5 +118E + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9683.012701 + 30 +0.0 + 11 +4962.500001 + 21 +9704.663336 + 31 +0.0 + 0 +LINE + 5 +118F + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9747.964607 + 30 +0.0 + 11 +5000.0 + 21 +9769.61524 + 31 +0.0 + 0 +LINE + 5 +1190 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9674.352445 + 30 +0.0 + 11 +4925.000001 + 21 +9683.012701 + 31 +0.0 + 0 +LINE + 5 +1191 + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9726.313971 + 30 +0.0 + 11 +4962.500001 + 21 +9747.964607 + 31 +0.0 + 0 +LINE + 5 +1192 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9791.265877 + 30 +0.0 + 11 +5000.0 + 21 +9812.91651 + 31 +0.0 + 0 +LINE + 5 +1193 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9717.653715 + 30 +0.0 + 11 +4925.000001 + 21 +9726.313971 + 31 +0.0 + 0 +LINE + 5 +1194 + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9769.615242 + 30 +0.0 + 11 +4962.500001 + 21 +9791.265877 + 31 +0.0 + 0 +LINE + 5 +1195 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9834.567147 + 30 +0.0 + 11 +5000.0 + 21 +9856.21778 + 31 +0.0 + 0 +LINE + 5 +1196 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9760.954985 + 30 +0.0 + 11 +4925.000001 + 21 +9769.615242 + 31 +0.0 + 0 +LINE + 5 +1197 + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9812.916512 + 30 +0.0 + 11 +4962.500001 + 21 +9834.567147 + 31 +0.0 + 0 +LINE + 5 +1198 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9877.868417 + 30 +0.0 + 11 +5000.0 + 21 +9899.51905 + 31 +0.0 + 0 +LINE + 5 +1199 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9804.256255 + 30 +0.0 + 11 +4925.000001 + 21 +9812.916512 + 31 +0.0 + 0 +LINE + 5 +119A + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9856.217782 + 30 +0.0 + 11 +4962.500001 + 21 +9877.868417 + 31 +0.0 + 0 +LINE + 5 +119B + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9921.169687 + 30 +0.0 + 11 +5000.0 + 21 +9942.82032 + 31 +0.0 + 0 +LINE + 5 +119C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9847.557525 + 30 +0.0 + 11 +4925.000001 + 21 +9856.217782 + 31 +0.0 + 0 +LINE + 5 +119D + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9899.519052 + 30 +0.0 + 11 +4962.500001 + 21 +9921.169687 + 31 +0.0 + 0 +LINE + 5 +119E + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +9964.470957 + 30 +0.0 + 11 +5000.0 + 21 +9986.12159 + 31 +0.0 + 0 +LINE + 5 +119F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9890.858795 + 30 +0.0 + 11 +4925.000001 + 21 +9899.519052 + 31 +0.0 + 0 +LINE + 5 +11A0 + 8 +0 + 62 + 0 + 10 +4950.000001 + 20 +9942.820322 + 30 +0.0 + 11 +4962.500001 + 21 +9964.470957 + 31 +0.0 + 0 +LINE + 5 +11A1 + 8 +0 + 62 + 0 + 10 +4987.500001 + 20 +10007.772227 + 30 +0.0 + 11 +5000.0 + 21 +10029.42286 + 31 +0.0 + 0 +LINE + 5 +11A2 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9934.160065 + 30 +0.0 + 11 +4925.000002 + 21 +9942.820322 + 31 +0.0 + 0 +LINE + 5 +11A3 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +9986.121592 + 30 +0.0 + 11 +4962.500002 + 21 +10007.772227 + 31 +0.0 + 0 +LINE + 5 +11A4 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10051.073498 + 30 +0.0 + 11 +5000.0 + 21 +10072.72413 + 31 +0.0 + 0 +LINE + 5 +11A5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9977.461335 + 30 +0.0 + 11 +4925.000002 + 21 +9986.121592 + 31 +0.0 + 0 +LINE + 5 +11A6 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10029.422862 + 30 +0.0 + 11 +4962.500002 + 21 +10051.073498 + 31 +0.0 + 0 +LINE + 5 +11A7 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10094.374768 + 30 +0.0 + 11 +5000.0 + 21 +10116.0254 + 31 +0.0 + 0 +LINE + 5 +11A8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10020.762605 + 30 +0.0 + 11 +4925.000002 + 21 +10029.422862 + 31 +0.0 + 0 +LINE + 5 +11A9 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10072.724133 + 30 +0.0 + 11 +4962.500002 + 21 +10094.374768 + 31 +0.0 + 0 +LINE + 5 +11AA + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10137.676038 + 30 +0.0 + 11 +5000.0 + 21 +10159.32667 + 31 +0.0 + 0 +LINE + 5 +11AB + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10064.063875 + 30 +0.0 + 11 +4925.000002 + 21 +10072.724133 + 31 +0.0 + 0 +LINE + 5 +11AC + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10116.025403 + 30 +0.0 + 11 +4962.500002 + 21 +10137.676038 + 31 +0.0 + 0 +LINE + 5 +11AD + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10180.977308 + 30 +0.0 + 11 +5000.0 + 21 +10202.62794 + 31 +0.0 + 0 +LINE + 5 +11AE + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10107.365145 + 30 +0.0 + 11 +4925.000002 + 21 +10116.025403 + 31 +0.0 + 0 +LINE + 5 +11AF + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10159.326673 + 30 +0.0 + 11 +4962.500002 + 21 +10180.977308 + 31 +0.0 + 0 +LINE + 5 +11B0 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10224.278578 + 30 +0.0 + 11 +5000.0 + 21 +10245.92921 + 31 +0.0 + 0 +LINE + 5 +11B1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10150.666415 + 30 +0.0 + 11 +4925.000002 + 21 +10159.326673 + 31 +0.0 + 0 +LINE + 5 +11B2 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10202.627943 + 30 +0.0 + 11 +4962.500002 + 21 +10224.278578 + 31 +0.0 + 0 +LINE + 5 +11B3 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10267.579848 + 30 +0.0 + 11 +5000.0 + 21 +10289.23048 + 31 +0.0 + 0 +LINE + 5 +11B4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10193.967685 + 30 +0.0 + 11 +4925.000002 + 21 +10202.627943 + 31 +0.0 + 0 +LINE + 5 +11B5 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10245.929213 + 30 +0.0 + 11 +4962.500002 + 21 +10267.579848 + 31 +0.0 + 0 +LINE + 5 +11B6 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10310.881118 + 30 +0.0 + 11 +5000.0 + 21 +10332.53175 + 31 +0.0 + 0 +LINE + 5 +11B7 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10237.268955 + 30 +0.0 + 11 +4925.000002 + 21 +10245.929213 + 31 +0.0 + 0 +LINE + 5 +11B8 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10289.230483 + 30 +0.0 + 11 +4962.500002 + 21 +10310.881118 + 31 +0.0 + 0 +LINE + 5 +11B9 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10354.182389 + 30 +0.0 + 11 +5000.0 + 21 +10375.83302 + 31 +0.0 + 0 +LINE + 5 +11BA + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10280.570225 + 30 +0.0 + 11 +4925.000002 + 21 +10289.230483 + 31 +0.0 + 0 +LINE + 5 +11BB + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10332.531753 + 30 +0.0 + 11 +4962.500002 + 21 +10354.182389 + 31 +0.0 + 0 +LINE + 5 +11BC + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10397.483659 + 30 +0.0 + 11 +5000.0 + 21 +10419.13429 + 31 +0.0 + 0 +LINE + 5 +11BD + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10323.871495 + 30 +0.0 + 11 +4925.000002 + 21 +10332.531753 + 31 +0.0 + 0 +LINE + 5 +11BE + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10375.833024 + 30 +0.0 + 11 +4962.500002 + 21 +10397.483659 + 31 +0.0 + 0 +LINE + 5 +11BF + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10440.784929 + 30 +0.0 + 11 +5000.0 + 21 +10462.43556 + 31 +0.0 + 0 +LINE + 5 +11C0 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10367.172765 + 30 +0.0 + 11 +4925.000002 + 21 +10375.833024 + 31 +0.0 + 0 +LINE + 5 +11C1 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10419.134294 + 30 +0.0 + 11 +4962.500002 + 21 +10440.784929 + 31 +0.0 + 0 +LINE + 5 +11C2 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10484.086199 + 30 +0.0 + 11 +5000.0 + 21 +10505.73683 + 31 +0.0 + 0 +LINE + 5 +11C3 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10410.474035 + 30 +0.0 + 11 +4925.000002 + 21 +10419.134294 + 31 +0.0 + 0 +LINE + 5 +11C4 + 8 +0 + 62 + 0 + 10 +4950.000002 + 20 +10462.435564 + 30 +0.0 + 11 +4962.500002 + 21 +10484.086199 + 31 +0.0 + 0 +LINE + 5 +11C5 + 8 +0 + 62 + 0 + 10 +4987.500002 + 20 +10527.387469 + 30 +0.0 + 11 +5000.0 + 21 +10549.0381 + 31 +0.0 + 0 +LINE + 5 +11C6 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10453.775305 + 30 +0.0 + 11 +4925.000003 + 21 +10462.435564 + 31 +0.0 + 0 +LINE + 5 +11C7 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10505.736834 + 30 +0.0 + 11 +4962.500003 + 21 +10527.387469 + 31 +0.0 + 0 +LINE + 5 +11C8 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10570.688739 + 30 +0.0 + 11 +5000.0 + 21 +10592.33937 + 31 +0.0 + 0 +LINE + 5 +11C9 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10497.076575 + 30 +0.0 + 11 +4925.000003 + 21 +10505.736834 + 31 +0.0 + 0 +LINE + 5 +11CA + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10549.038104 + 30 +0.0 + 11 +4962.500003 + 21 +10570.688739 + 31 +0.0 + 0 +LINE + 5 +11CB + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10613.990009 + 30 +0.0 + 11 +5000.0 + 21 +10635.64064 + 31 +0.0 + 0 +LINE + 5 +11CC + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10540.377845 + 30 +0.0 + 11 +4925.000003 + 21 +10549.038104 + 31 +0.0 + 0 +LINE + 5 +11CD + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10592.339374 + 30 +0.0 + 11 +4962.500003 + 21 +10613.990009 + 31 +0.0 + 0 +LINE + 5 +11CE + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10657.29128 + 30 +0.0 + 11 +5000.0 + 21 +10678.94191 + 31 +0.0 + 0 +LINE + 5 +11CF + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10583.679115 + 30 +0.0 + 11 +4925.000003 + 21 +10592.339374 + 31 +0.0 + 0 +LINE + 5 +11D0 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10635.640644 + 30 +0.0 + 11 +4962.500003 + 21 +10657.29128 + 31 +0.0 + 0 +LINE + 5 +11D1 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10700.59255 + 30 +0.0 + 11 +5000.0 + 21 +10722.24318 + 31 +0.0 + 0 +LINE + 5 +11D2 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10626.980385 + 30 +0.0 + 11 +4925.000003 + 21 +10635.640644 + 31 +0.0 + 0 +LINE + 5 +11D3 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10678.941915 + 30 +0.0 + 11 +4962.500003 + 21 +10700.59255 + 31 +0.0 + 0 +LINE + 5 +11D4 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10743.89382 + 30 +0.0 + 11 +5000.0 + 21 +10765.54445 + 31 +0.0 + 0 +LINE + 5 +11D5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10670.281655 + 30 +0.0 + 11 +4925.000003 + 21 +10678.941915 + 31 +0.0 + 0 +LINE + 5 +11D6 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10722.243185 + 30 +0.0 + 11 +4962.500003 + 21 +10743.89382 + 31 +0.0 + 0 +LINE + 5 +11D7 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10787.19509 + 30 +0.0 + 11 +5000.0 + 21 +10808.84572 + 31 +0.0 + 0 +LINE + 5 +11D8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10713.582925 + 30 +0.0 + 11 +4925.000003 + 21 +10722.243185 + 31 +0.0 + 0 +LINE + 5 +11D9 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10765.544455 + 30 +0.0 + 11 +4962.500003 + 21 +10787.19509 + 31 +0.0 + 0 +LINE + 5 +11DA + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10830.49636 + 30 +0.0 + 11 +5000.0 + 21 +10852.14699 + 31 +0.0 + 0 +LINE + 5 +11DB + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10756.884195 + 30 +0.0 + 11 +4925.000003 + 21 +10765.544455 + 31 +0.0 + 0 +LINE + 5 +11DC + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10808.845725 + 30 +0.0 + 11 +4962.500003 + 21 +10830.49636 + 31 +0.0 + 0 +LINE + 5 +11DD + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10873.79763 + 30 +0.0 + 11 +5000.0 + 21 +10895.44826 + 31 +0.0 + 0 +LINE + 5 +11DE + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10800.185465 + 30 +0.0 + 11 +4925.000003 + 21 +10808.845725 + 31 +0.0 + 0 +LINE + 5 +11DF + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10852.146995 + 30 +0.0 + 11 +4962.500003 + 21 +10873.79763 + 31 +0.0 + 0 +LINE + 5 +11E0 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10917.0989 + 30 +0.0 + 11 +5000.0 + 21 +10938.74953 + 31 +0.0 + 0 +LINE + 5 +11E1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10843.486735 + 30 +0.0 + 11 +4925.000003 + 21 +10852.146995 + 31 +0.0 + 0 +LINE + 5 +11E2 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10895.448265 + 30 +0.0 + 11 +4962.500003 + 21 +10917.0989 + 31 +0.0 + 0 +LINE + 5 +11E3 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +10960.400171 + 30 +0.0 + 11 +5000.0 + 21 +10982.0508 + 31 +0.0 + 0 +LINE + 5 +11E4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10886.788005 + 30 +0.0 + 11 +4925.000003 + 21 +10895.448265 + 31 +0.0 + 0 +LINE + 5 +11E5 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10938.749535 + 30 +0.0 + 11 +4962.500003 + 21 +10960.400171 + 31 +0.0 + 0 +LINE + 5 +11E6 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +11003.701441 + 30 +0.0 + 11 +5000.0 + 21 +11025.35207 + 31 +0.0 + 0 +LINE + 5 +11E7 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10930.089275 + 30 +0.0 + 11 +4925.000003 + 21 +10938.749535 + 31 +0.0 + 0 +LINE + 5 +11E8 + 8 +0 + 62 + 0 + 10 +4950.000003 + 20 +10982.050806 + 30 +0.0 + 11 +4962.500003 + 21 +11003.701441 + 31 +0.0 + 0 +LINE + 5 +11E9 + 8 +0 + 62 + 0 + 10 +4987.500003 + 20 +11047.002711 + 30 +0.0 + 11 +5000.0 + 21 +11068.65334 + 31 +0.0 + 0 +LINE + 5 +11EA + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +10973.390545 + 30 +0.0 + 11 +4925.000004 + 21 +10982.050806 + 31 +0.0 + 0 +LINE + 5 +11EB + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11025.352076 + 30 +0.0 + 11 +4962.500004 + 21 +11047.002711 + 31 +0.0 + 0 +LINE + 5 +11EC + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11090.303981 + 30 +0.0 + 11 +5000.0 + 21 +11111.95461 + 31 +0.0 + 0 +LINE + 5 +11ED + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11016.691815 + 30 +0.0 + 11 +4925.000004 + 21 +11025.352076 + 31 +0.0 + 0 +LINE + 5 +11EE + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11068.653346 + 30 +0.0 + 11 +4962.500004 + 21 +11090.303981 + 31 +0.0 + 0 +LINE + 5 +11EF + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11133.605251 + 30 +0.0 + 11 +5000.0 + 21 +11155.25588 + 31 +0.0 + 0 +LINE + 5 +11F0 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11059.993085 + 30 +0.0 + 11 +4925.000004 + 21 +11068.653346 + 31 +0.0 + 0 +LINE + 5 +11F1 + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11111.954616 + 30 +0.0 + 11 +4962.500004 + 21 +11133.605251 + 31 +0.0 + 0 +LINE + 5 +11F2 + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11176.906521 + 30 +0.0 + 11 +5000.0 + 21 +11198.55715 + 31 +0.0 + 0 +LINE + 5 +11F3 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11103.294355 + 30 +0.0 + 11 +4925.000004 + 21 +11111.954616 + 31 +0.0 + 0 +LINE + 5 +11F4 + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11155.255886 + 30 +0.0 + 11 +4962.500004 + 21 +11176.906521 + 31 +0.0 + 0 +LINE + 5 +11F5 + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11220.207791 + 30 +0.0 + 11 +5000.0 + 21 +11241.85842 + 31 +0.0 + 0 +LINE + 5 +11F6 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11146.595625 + 30 +0.0 + 11 +4925.000004 + 21 +11155.255886 + 31 +0.0 + 0 +LINE + 5 +11F7 + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11198.557156 + 30 +0.0 + 11 +4962.500004 + 21 +11220.207791 + 31 +0.0 + 0 +LINE + 5 +11F8 + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11263.509062 + 30 +0.0 + 11 +5000.0 + 21 +11285.15969 + 31 +0.0 + 0 +LINE + 5 +11F9 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11189.896895 + 30 +0.0 + 11 +4925.000004 + 21 +11198.557156 + 31 +0.0 + 0 +LINE + 5 +11FA + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11241.858426 + 30 +0.0 + 11 +4962.500004 + 21 +11263.509062 + 31 +0.0 + 0 +LINE + 5 +11FB + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11306.810332 + 30 +0.0 + 11 +5000.0 + 21 +11328.46096 + 31 +0.0 + 0 +LINE + 5 +11FC + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11233.198165 + 30 +0.0 + 11 +4925.000004 + 21 +11241.858426 + 31 +0.0 + 0 +LINE + 5 +11FD + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11285.159697 + 30 +0.0 + 11 +4962.500004 + 21 +11306.810332 + 31 +0.0 + 0 +LINE + 5 +11FE + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11350.111602 + 30 +0.0 + 11 +5000.0 + 21 +11371.76223 + 31 +0.0 + 0 +LINE + 5 +11FF + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11276.499435 + 30 +0.0 + 11 +4925.000004 + 21 +11285.159697 + 31 +0.0 + 0 +LINE + 5 +1200 + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11328.460967 + 30 +0.0 + 11 +4962.500004 + 21 +11350.111602 + 31 +0.0 + 0 +LINE + 5 +1201 + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11393.412872 + 30 +0.0 + 11 +5000.0 + 21 +11415.0635 + 31 +0.0 + 0 +LINE + 5 +1202 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11319.800705 + 30 +0.0 + 11 +4925.000004 + 21 +11328.460967 + 31 +0.0 + 0 +LINE + 5 +1203 + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11371.762237 + 30 +0.0 + 11 +4962.500004 + 21 +11393.412872 + 31 +0.0 + 0 +LINE + 5 +1204 + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11436.714142 + 30 +0.0 + 11 +5000.0 + 21 +11458.36477 + 31 +0.0 + 0 +LINE + 5 +1205 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11363.101975 + 30 +0.0 + 11 +4925.000004 + 21 +11371.762237 + 31 +0.0 + 0 +LINE + 5 +1206 + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11415.063507 + 30 +0.0 + 11 +4962.500004 + 21 +11436.714142 + 31 +0.0 + 0 +LINE + 5 +1207 + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11480.015412 + 30 +0.0 + 11 +5000.0 + 21 +11501.66604 + 31 +0.0 + 0 +LINE + 5 +1208 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11406.403245 + 30 +0.0 + 11 +4925.000004 + 21 +11415.063507 + 31 +0.0 + 0 +LINE + 5 +1209 + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11458.364777 + 30 +0.0 + 11 +4962.500004 + 21 +11480.015412 + 31 +0.0 + 0 +LINE + 5 +120A + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11523.316682 + 30 +0.0 + 11 +5000.0 + 21 +11544.96731 + 31 +0.0 + 0 +LINE + 5 +120B + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11449.704515 + 30 +0.0 + 11 +4925.000004 + 21 +11458.364777 + 31 +0.0 + 0 +LINE + 5 +120C + 8 +0 + 62 + 0 + 10 +4950.000004 + 20 +11501.666047 + 30 +0.0 + 11 +4962.500004 + 21 +11523.316682 + 31 +0.0 + 0 +LINE + 5 +120D + 8 +0 + 62 + 0 + 10 +4987.500004 + 20 +11566.617953 + 30 +0.0 + 11 +5000.0 + 21 +11588.26858 + 31 +0.0 + 0 +LINE + 5 +120E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11493.005785 + 30 +0.0 + 11 +4925.000005 + 21 +11501.666047 + 31 +0.0 + 0 +LINE + 5 +120F + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11544.967317 + 30 +0.0 + 11 +4962.500005 + 21 +11566.617953 + 31 +0.0 + 0 +LINE + 5 +1210 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11609.919223 + 30 +0.0 + 11 +5000.0 + 21 +11631.56985 + 31 +0.0 + 0 +LINE + 5 +1211 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11536.307055 + 30 +0.0 + 11 +4925.000005 + 21 +11544.967317 + 31 +0.0 + 0 +LINE + 5 +1212 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11588.268588 + 30 +0.0 + 11 +4962.500005 + 21 +11609.919223 + 31 +0.0 + 0 +LINE + 5 +1213 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11653.220493 + 30 +0.0 + 11 +5000.0 + 21 +11674.87112 + 31 +0.0 + 0 +LINE + 5 +1214 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11579.608325 + 30 +0.0 + 11 +4925.000005 + 21 +11588.268588 + 31 +0.0 + 0 +LINE + 5 +1215 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11631.569858 + 30 +0.0 + 11 +4962.500005 + 21 +11653.220493 + 31 +0.0 + 0 +LINE + 5 +1216 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11696.521763 + 30 +0.0 + 11 +5000.0 + 21 +11718.17239 + 31 +0.0 + 0 +LINE + 5 +1217 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11622.909595 + 30 +0.0 + 11 +4925.000005 + 21 +11631.569858 + 31 +0.0 + 0 +LINE + 5 +1218 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11674.871128 + 30 +0.0 + 11 +4962.500005 + 21 +11696.521763 + 31 +0.0 + 0 +LINE + 5 +1219 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11739.823033 + 30 +0.0 + 11 +5000.0 + 21 +11761.47366 + 31 +0.0 + 0 +LINE + 5 +121A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11666.210865 + 30 +0.0 + 11 +4925.000005 + 21 +11674.871128 + 31 +0.0 + 0 +LINE + 5 +121B + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11718.172398 + 30 +0.0 + 11 +4962.500005 + 21 +11739.823033 + 31 +0.0 + 0 +LINE + 5 +121C + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11783.124303 + 30 +0.0 + 11 +5000.0 + 21 +11804.77493 + 31 +0.0 + 0 +LINE + 5 +121D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11709.512135 + 30 +0.0 + 11 +4925.000005 + 21 +11718.172398 + 31 +0.0 + 0 +LINE + 5 +121E + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11761.473668 + 30 +0.0 + 11 +4962.500005 + 21 +11783.124303 + 31 +0.0 + 0 +LINE + 5 +121F + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11826.425573 + 30 +0.0 + 11 +5000.0 + 21 +11848.0762 + 31 +0.0 + 0 +LINE + 5 +1220 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11752.813405 + 30 +0.0 + 11 +4925.000005 + 21 +11761.473668 + 31 +0.0 + 0 +LINE + 5 +1221 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11804.774938 + 30 +0.0 + 11 +4962.500005 + 21 +11826.425573 + 31 +0.0 + 0 +LINE + 5 +1222 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11869.726844 + 30 +0.0 + 11 +5000.0 + 21 +11891.37747 + 31 +0.0 + 0 +LINE + 5 +1223 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11796.114675 + 30 +0.0 + 11 +4925.000005 + 21 +11804.774938 + 31 +0.0 + 0 +LINE + 5 +1224 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11848.076208 + 30 +0.0 + 11 +4962.500005 + 21 +11869.726844 + 31 +0.0 + 0 +LINE + 5 +1225 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11913.028114 + 30 +0.0 + 11 +5000.0 + 21 +11934.67874 + 31 +0.0 + 0 +LINE + 5 +1226 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11839.415945 + 30 +0.0 + 11 +4925.000005 + 21 +11848.076208 + 31 +0.0 + 0 +LINE + 5 +1227 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11891.377479 + 30 +0.0 + 11 +4962.500005 + 21 +11913.028114 + 31 +0.0 + 0 +LINE + 5 +1228 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11956.329384 + 30 +0.0 + 11 +5000.0 + 21 +11977.98001 + 31 +0.0 + 0 +LINE + 5 +1229 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11882.717215 + 30 +0.0 + 11 +4925.000005 + 21 +11891.377479 + 31 +0.0 + 0 +LINE + 5 +122A + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11934.678749 + 30 +0.0 + 11 +4962.500005 + 21 +11956.329384 + 31 +0.0 + 0 +LINE + 5 +122B + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +11999.630654 + 30 +0.0 + 11 +5000.0 + 21 +12021.28128 + 31 +0.0 + 0 +LINE + 5 +122C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11926.018485 + 30 +0.0 + 11 +4925.000005 + 21 +11934.678749 + 31 +0.0 + 0 +LINE + 5 +122D + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +11977.980019 + 30 +0.0 + 11 +4962.500005 + 21 +11999.630654 + 31 +0.0 + 0 +LINE + 5 +122E + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +12042.931924 + 30 +0.0 + 11 +5000.0 + 21 +12064.58255 + 31 +0.0 + 0 +LINE + 5 +122F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +11969.319755 + 30 +0.0 + 11 +4925.000005 + 21 +11977.980019 + 31 +0.0 + 0 +LINE + 5 +1230 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +12021.281289 + 30 +0.0 + 11 +4962.500005 + 21 +12042.931924 + 31 +0.0 + 0 +LINE + 5 +1231 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +12086.233194 + 30 +0.0 + 11 +5000.0 + 21 +12107.88382 + 31 +0.0 + 0 +LINE + 5 +1232 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12012.621025 + 30 +0.0 + 11 +4925.000005 + 21 +12021.281289 + 31 +0.0 + 0 +LINE + 5 +1233 + 8 +0 + 62 + 0 + 10 +4950.000005 + 20 +12064.582559 + 30 +0.0 + 11 +4962.500005 + 21 +12086.233194 + 31 +0.0 + 0 +LINE + 5 +1234 + 8 +0 + 62 + 0 + 10 +4987.500005 + 20 +12129.534464 + 30 +0.0 + 11 +5000.0 + 21 +12151.18509 + 31 +0.0 + 0 +LINE + 5 +1235 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12055.922295 + 30 +0.0 + 11 +4925.000006 + 21 +12064.582559 + 31 +0.0 + 0 +LINE + 5 +1236 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12107.883829 + 30 +0.0 + 11 +4962.500006 + 21 +12129.534464 + 31 +0.0 + 0 +LINE + 5 +1237 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12172.835735 + 30 +0.0 + 11 +5000.0 + 21 +12194.48636 + 31 +0.0 + 0 +LINE + 5 +1238 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12099.223565 + 30 +0.0 + 11 +4925.000006 + 21 +12107.883829 + 31 +0.0 + 0 +LINE + 5 +1239 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12151.185099 + 30 +0.0 + 11 +4962.500006 + 21 +12172.835735 + 31 +0.0 + 0 +LINE + 5 +123A + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12216.137005 + 30 +0.0 + 11 +5000.0 + 21 +12237.78763 + 31 +0.0 + 0 +LINE + 5 +123B + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12142.524835 + 30 +0.0 + 11 +4925.000006 + 21 +12151.185099 + 31 +0.0 + 0 +LINE + 5 +123C + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12194.48637 + 30 +0.0 + 11 +4962.500006 + 21 +12216.137005 + 31 +0.0 + 0 +LINE + 5 +123D + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12259.438275 + 30 +0.0 + 11 +5000.0 + 21 +12281.0889 + 31 +0.0 + 0 +LINE + 5 +123E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12185.826105 + 30 +0.0 + 11 +4925.000006 + 21 +12194.48637 + 31 +0.0 + 0 +LINE + 5 +123F + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12237.78764 + 30 +0.0 + 11 +4962.500006 + 21 +12259.438275 + 31 +0.0 + 0 +LINE + 5 +1240 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12302.739545 + 30 +0.0 + 11 +5000.0 + 21 +12324.39017 + 31 +0.0 + 0 +LINE + 5 +1241 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12229.127375 + 30 +0.0 + 11 +4925.000006 + 21 +12237.78764 + 31 +0.0 + 0 +LINE + 5 +1242 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12281.08891 + 30 +0.0 + 11 +4962.500006 + 21 +12302.739545 + 31 +0.0 + 0 +LINE + 5 +1243 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12346.040815 + 30 +0.0 + 11 +5000.0 + 21 +12367.69144 + 31 +0.0 + 0 +LINE + 5 +1244 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12272.428645 + 30 +0.0 + 11 +4925.000006 + 21 +12281.08891 + 31 +0.0 + 0 +LINE + 5 +1245 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12324.39018 + 30 +0.0 + 11 +4962.500006 + 21 +12346.040815 + 31 +0.0 + 0 +LINE + 5 +1246 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12389.342085 + 30 +0.0 + 11 +5000.0 + 21 +12410.99271 + 31 +0.0 + 0 +LINE + 5 +1247 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12315.729915 + 30 +0.0 + 11 +4925.000006 + 21 +12324.39018 + 31 +0.0 + 0 +LINE + 5 +1248 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12367.69145 + 30 +0.0 + 11 +4962.500006 + 21 +12389.342085 + 31 +0.0 + 0 +LINE + 5 +1249 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12432.643355 + 30 +0.0 + 11 +5000.0 + 21 +12454.29398 + 31 +0.0 + 0 +LINE + 5 +124A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12359.031185 + 30 +0.0 + 11 +4925.000006 + 21 +12367.69145 + 31 +0.0 + 0 +LINE + 5 +124B + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12410.99272 + 30 +0.0 + 11 +4962.500006 + 21 +12432.643355 + 31 +0.0 + 0 +LINE + 5 +124C + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12475.944626 + 30 +0.0 + 11 +5000.0 + 21 +12497.59525 + 31 +0.0 + 0 +LINE + 5 +124D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12402.332455 + 30 +0.0 + 11 +4925.000006 + 21 +12410.99272 + 31 +0.0 + 0 +LINE + 5 +124E + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12454.29399 + 30 +0.0 + 11 +4962.500006 + 21 +12475.944626 + 31 +0.0 + 0 +LINE + 5 +124F + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12519.245896 + 30 +0.0 + 11 +5000.0 + 21 +12540.89652 + 31 +0.0 + 0 +LINE + 5 +1250 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12445.633725 + 30 +0.0 + 11 +4925.000006 + 21 +12454.29399 + 31 +0.0 + 0 +LINE + 5 +1251 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12497.595261 + 30 +0.0 + 11 +4962.500006 + 21 +12519.245896 + 31 +0.0 + 0 +LINE + 5 +1252 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12562.547166 + 30 +0.0 + 11 +5000.0 + 21 +12584.19779 + 31 +0.0 + 0 +LINE + 5 +1253 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12488.934995 + 30 +0.0 + 11 +4925.000006 + 21 +12497.595261 + 31 +0.0 + 0 +LINE + 5 +1254 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12540.896531 + 30 +0.0 + 11 +4962.500006 + 21 +12562.547166 + 31 +0.0 + 0 +LINE + 5 +1255 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12605.848436 + 30 +0.0 + 11 +5000.0 + 21 +12627.49906 + 31 +0.0 + 0 +LINE + 5 +1256 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12532.236265 + 30 +0.0 + 11 +4925.000006 + 21 +12540.896531 + 31 +0.0 + 0 +LINE + 5 +1257 + 8 +0 + 62 + 0 + 10 +4950.000006 + 20 +12584.197801 + 30 +0.0 + 11 +4962.500006 + 21 +12605.848436 + 31 +0.0 + 0 +LINE + 5 +1258 + 8 +0 + 62 + 0 + 10 +4987.500006 + 20 +12649.149706 + 30 +0.0 + 11 +5000.0 + 21 +12670.80033 + 31 +0.0 + 0 +LINE + 5 +1259 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12575.537535 + 30 +0.0 + 11 +4925.000007 + 21 +12584.197801 + 31 +0.0 + 0 +LINE + 5 +125A + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12627.499071 + 30 +0.0 + 11 +4962.500007 + 21 +12649.149706 + 31 +0.0 + 0 +LINE + 5 +125B + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12692.450976 + 30 +0.0 + 11 +5000.0 + 21 +12714.1016 + 31 +0.0 + 0 +LINE + 5 +125C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12618.838805 + 30 +0.0 + 11 +4925.000007 + 21 +12627.499071 + 31 +0.0 + 0 +LINE + 5 +125D + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12670.800341 + 30 +0.0 + 11 +4962.500007 + 21 +12692.450976 + 31 +0.0 + 0 +LINE + 5 +125E + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12735.752246 + 30 +0.0 + 11 +5000.0 + 21 +12757.40287 + 31 +0.0 + 0 +LINE + 5 +125F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12662.140075 + 30 +0.0 + 11 +4925.000007 + 21 +12670.800341 + 31 +0.0 + 0 +LINE + 5 +1260 + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12714.101611 + 30 +0.0 + 11 +4962.500007 + 21 +12735.752246 + 31 +0.0 + 0 +LINE + 5 +1261 + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12779.053517 + 30 +0.0 + 11 +5000.0 + 21 +12800.70414 + 31 +0.0 + 0 +LINE + 5 +1262 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12705.441345 + 30 +0.0 + 11 +4925.000007 + 21 +12714.101611 + 31 +0.0 + 0 +LINE + 5 +1263 + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12757.402881 + 30 +0.0 + 11 +4962.500007 + 21 +12779.053516 + 31 +0.0 + 0 +LINE + 5 +1264 + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12822.354787 + 30 +0.0 + 11 +5000.0 + 21 +12844.00541 + 31 +0.0 + 0 +LINE + 5 +1265 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12748.742615 + 30 +0.0 + 11 +4925.000007 + 21 +12757.402881 + 31 +0.0 + 0 +LINE + 5 +1266 + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12800.704152 + 30 +0.0 + 11 +4962.500007 + 21 +12822.354787 + 31 +0.0 + 0 +LINE + 5 +1267 + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12865.656057 + 30 +0.0 + 11 +5000.0 + 21 +12887.30668 + 31 +0.0 + 0 +LINE + 5 +1268 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12792.043885 + 30 +0.0 + 11 +4925.000007 + 21 +12800.704151 + 31 +0.0 + 0 +LINE + 5 +1269 + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12844.005422 + 30 +0.0 + 11 +4962.500007 + 21 +12865.656057 + 31 +0.0 + 0 +LINE + 5 +126A + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12908.957327 + 30 +0.0 + 11 +5000.0 + 21 +12930.60795 + 31 +0.0 + 0 +LINE + 5 +126B + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12835.345155 + 30 +0.0 + 11 +4925.000007 + 21 +12844.005422 + 31 +0.0 + 0 +LINE + 5 +126C + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12887.306692 + 30 +0.0 + 11 +4962.500007 + 21 +12908.957327 + 31 +0.0 + 0 +LINE + 5 +126D + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12952.258597 + 30 +0.0 + 11 +5000.0 + 21 +12973.90922 + 31 +0.0 + 0 +LINE + 5 +126E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12878.646425 + 30 +0.0 + 11 +4925.000007 + 21 +12887.306692 + 31 +0.0 + 0 +LINE + 5 +126F + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12930.607962 + 30 +0.0 + 11 +4962.500007 + 21 +12952.258597 + 31 +0.0 + 0 +LINE + 5 +1270 + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +12995.559867 + 30 +0.0 + 11 +5000.0 + 21 +13017.21049 + 31 +0.0 + 0 +LINE + 5 +1271 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12921.947695 + 30 +0.0 + 11 +4925.000007 + 21 +12930.607962 + 31 +0.0 + 0 +LINE + 5 +1272 + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +12973.909232 + 30 +0.0 + 11 +4962.500007 + 21 +12995.559867 + 31 +0.0 + 0 +LINE + 5 +1273 + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +13038.861137 + 30 +0.0 + 11 +5000.0 + 21 +13060.51176 + 31 +0.0 + 0 +LINE + 5 +1274 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +12965.248965 + 30 +0.0 + 11 +4925.000007 + 21 +12973.909232 + 31 +0.0 + 0 +LINE + 5 +1275 + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +13017.210502 + 30 +0.0 + 11 +4962.500007 + 21 +13038.861137 + 31 +0.0 + 0 +LINE + 5 +1276 + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +13082.162408 + 30 +0.0 + 11 +5000.0 + 21 +13103.81303 + 31 +0.0 + 0 +LINE + 5 +1277 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13008.550235 + 30 +0.0 + 11 +4925.000007 + 21 +13017.210502 + 31 +0.0 + 0 +LINE + 5 +1278 + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +13060.511772 + 30 +0.0 + 11 +4962.500007 + 21 +13082.162407 + 31 +0.0 + 0 +LINE + 5 +1279 + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +13125.463678 + 30 +0.0 + 11 +5000.0 + 21 +13147.1143 + 31 +0.0 + 0 +LINE + 5 +127A + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13051.851505 + 30 +0.0 + 11 +4925.000007 + 21 +13060.511772 + 31 +0.0 + 0 +LINE + 5 +127B + 8 +0 + 62 + 0 + 10 +4950.000007 + 20 +13103.813043 + 30 +0.0 + 11 +4962.500007 + 21 +13125.463678 + 31 +0.0 + 0 +LINE + 5 +127C + 8 +0 + 62 + 0 + 10 +4987.500007 + 20 +13168.764948 + 30 +0.0 + 11 +5000.0 + 21 +13190.41557 + 31 +0.0 + 0 +LINE + 5 +127D + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13095.152775 + 30 +0.0 + 11 +4925.000008 + 21 +13103.813042 + 31 +0.0 + 0 +LINE + 5 +127E + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13147.114313 + 30 +0.0 + 11 +4962.500008 + 21 +13168.764948 + 31 +0.0 + 0 +LINE + 5 +127F + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13212.066218 + 30 +0.0 + 11 +5000.0 + 21 +13233.71684 + 31 +0.0 + 0 +LINE + 5 +1280 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13138.454045 + 30 +0.0 + 11 +4925.000008 + 21 +13147.114313 + 31 +0.0 + 0 +LINE + 5 +1281 + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13190.415583 + 30 +0.0 + 11 +4962.500008 + 21 +13212.066218 + 31 +0.0 + 0 +LINE + 5 +1282 + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13255.367488 + 30 +0.0 + 11 +5000.0 + 21 +13277.01811 + 31 +0.0 + 0 +LINE + 5 +1283 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13181.755315 + 30 +0.0 + 11 +4925.000008 + 21 +13190.415583 + 31 +0.0 + 0 +LINE + 5 +1284 + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13233.716853 + 30 +0.0 + 11 +4962.500008 + 21 +13255.367488 + 31 +0.0 + 0 +LINE + 5 +1285 + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13298.668758 + 30 +0.0 + 11 +5000.0 + 21 +13320.31938 + 31 +0.0 + 0 +LINE + 5 +1286 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13225.056585 + 30 +0.0 + 11 +4925.000008 + 21 +13233.716853 + 31 +0.0 + 0 +LINE + 5 +1287 + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13277.018123 + 30 +0.0 + 11 +4962.500008 + 21 +13298.668758 + 31 +0.0 + 0 +LINE + 5 +1288 + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13341.970028 + 30 +0.0 + 11 +5000.0 + 21 +13363.62065 + 31 +0.0 + 0 +LINE + 5 +1289 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13268.357855 + 30 +0.0 + 11 +4925.000008 + 21 +13277.018123 + 31 +0.0 + 0 +LINE + 5 +128A + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13320.319393 + 30 +0.0 + 11 +4962.500008 + 21 +13341.970028 + 31 +0.0 + 0 +LINE + 5 +128B + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13385.271299 + 30 +0.0 + 11 +5000.0 + 21 +13406.92192 + 31 +0.0 + 0 +LINE + 5 +128C + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13311.659125 + 30 +0.0 + 11 +4925.000008 + 21 +13320.319393 + 31 +0.0 + 0 +LINE + 5 +128D + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13363.620663 + 30 +0.0 + 11 +4962.500008 + 21 +13385.271298 + 31 +0.0 + 0 +LINE + 5 +128E + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13428.572569 + 30 +0.0 + 11 +5000.0 + 21 +13450.22319 + 31 +0.0 + 0 +LINE + 5 +128F + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13354.960395 + 30 +0.0 + 11 +4925.000008 + 21 +13363.620663 + 31 +0.0 + 0 +LINE + 5 +1290 + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13406.921934 + 30 +0.0 + 11 +4962.500008 + 21 +13428.572569 + 31 +0.0 + 0 +LINE + 5 +1291 + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13471.873839 + 30 +0.0 + 11 +5000.0 + 21 +13493.52446 + 31 +0.0 + 0 +LINE + 5 +1292 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13398.261665 + 30 +0.0 + 11 +4925.000008 + 21 +13406.921933 + 31 +0.0 + 0 +LINE + 5 +1293 + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13450.223204 + 30 +0.0 + 11 +4962.500008 + 21 +13471.873839 + 31 +0.0 + 0 +LINE + 5 +1294 + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13515.175109 + 30 +0.0 + 11 +5000.0 + 21 +13536.82573 + 31 +0.0 + 0 +LINE + 5 +1295 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13441.562935 + 30 +0.0 + 11 +4925.000008 + 21 +13450.223204 + 31 +0.0 + 0 +LINE + 5 +1296 + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13493.524474 + 30 +0.0 + 11 +4962.500008 + 21 +13515.175109 + 31 +0.0 + 0 +LINE + 5 +1297 + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13558.476379 + 30 +0.0 + 11 +5000.0 + 21 +13580.127 + 31 +0.0 + 0 +LINE + 5 +1298 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13484.864205 + 30 +0.0 + 11 +4925.000008 + 21 +13493.524474 + 31 +0.0 + 0 +LINE + 5 +1299 + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13536.825744 + 30 +0.0 + 11 +4962.500008 + 21 +13558.476379 + 31 +0.0 + 0 +LINE + 5 +129A + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13601.777649 + 30 +0.0 + 11 +5000.0 + 21 +13623.42827 + 31 +0.0 + 0 +LINE + 5 +129B + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13528.165475 + 30 +0.0 + 11 +4925.000008 + 21 +13536.825744 + 31 +0.0 + 0 +LINE + 5 +129C + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13580.127014 + 30 +0.0 + 11 +4962.500008 + 21 +13601.777649 + 31 +0.0 + 0 +LINE + 5 +129D + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13645.078919 + 30 +0.0 + 11 +5000.0 + 21 +13666.72954 + 31 +0.0 + 0 +LINE + 5 +129E + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13571.466745 + 30 +0.0 + 11 +4925.000008 + 21 +13580.127014 + 31 +0.0 + 0 +LINE + 5 +129F + 8 +0 + 62 + 0 + 10 +4950.000008 + 20 +13623.428284 + 30 +0.0 + 11 +4962.500008 + 21 +13645.078919 + 31 +0.0 + 0 +LINE + 5 +12A0 + 8 +0 + 62 + 0 + 10 +4987.500008 + 20 +13688.38019 + 30 +0.0 + 11 +5000.0 + 21 +13710.03081 + 31 +0.0 + 0 +LINE + 5 +12A1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13614.768015 + 30 +0.0 + 11 +4925.000009 + 21 +13623.428284 + 31 +0.0 + 0 +LINE + 5 +12A2 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13666.729554 + 30 +0.0 + 11 +4962.500009 + 21 +13688.380189 + 31 +0.0 + 0 +LINE + 5 +12A3 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +13731.68146 + 30 +0.0 + 11 +5000.0 + 21 +13753.33208 + 31 +0.0 + 0 +LINE + 5 +12A4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13658.069285 + 30 +0.0 + 11 +4925.000009 + 21 +13666.729554 + 31 +0.0 + 0 +LINE + 5 +12A5 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13710.030825 + 30 +0.0 + 11 +4962.500009 + 21 +13731.68146 + 31 +0.0 + 0 +LINE + 5 +12A6 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +13774.98273 + 30 +0.0 + 11 +5000.0 + 21 +13796.63335 + 31 +0.0 + 0 +LINE + 5 +12A7 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13701.370555 + 30 +0.0 + 11 +4925.000009 + 21 +13710.030824 + 31 +0.0 + 0 +LINE + 5 +12A8 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13753.332095 + 30 +0.0 + 11 +4962.500009 + 21 +13774.98273 + 31 +0.0 + 0 +LINE + 5 +12A9 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +13818.284 + 30 +0.0 + 11 +5000.0 + 21 +13839.93462 + 31 +0.0 + 0 +LINE + 5 +12AA + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13744.671825 + 30 +0.0 + 11 +4925.000009 + 21 +13753.332095 + 31 +0.0 + 0 +LINE + 5 +12AB + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13796.633365 + 30 +0.0 + 11 +4962.500009 + 21 +13818.284 + 31 +0.0 + 0 +LINE + 5 +12AC + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +13861.58527 + 30 +0.0 + 11 +5000.0 + 21 +13883.23589 + 31 +0.0 + 0 +LINE + 5 +12AD + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13787.973095 + 30 +0.0 + 11 +4925.000009 + 21 +13796.633365 + 31 +0.0 + 0 +LINE + 5 +12AE + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13839.934635 + 30 +0.0 + 11 +4962.500009 + 21 +13861.58527 + 31 +0.0 + 0 +LINE + 5 +12AF + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +13904.88654 + 30 +0.0 + 11 +5000.0 + 21 +13926.53716 + 31 +0.0 + 0 +LINE + 5 +12B0 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13831.274365 + 30 +0.0 + 11 +4925.000009 + 21 +13839.934635 + 31 +0.0 + 0 +LINE + 5 +12B1 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13883.235905 + 30 +0.0 + 11 +4962.500009 + 21 +13904.88654 + 31 +0.0 + 0 +LINE + 5 +12B2 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +13948.18781 + 30 +0.0 + 11 +5000.0 + 21 +13969.83843 + 31 +0.0 + 0 +LINE + 5 +12B3 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13874.575635 + 30 +0.0 + 11 +4925.000009 + 21 +13883.235905 + 31 +0.0 + 0 +LINE + 5 +12B4 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13926.537175 + 30 +0.0 + 11 +4962.500009 + 21 +13948.18781 + 31 +0.0 + 0 +LINE + 5 +12B5 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +13991.489081 + 30 +0.0 + 11 +5000.0 + 21 +14013.1397 + 31 +0.0 + 0 +LINE + 5 +12B6 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13917.876905 + 30 +0.0 + 11 +4925.000009 + 21 +13926.537175 + 31 +0.0 + 0 +LINE + 5 +12B7 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +13969.838445 + 30 +0.0 + 11 +4962.500009 + 21 +13991.48908 + 31 +0.0 + 0 +LINE + 5 +12B8 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +14034.790351 + 30 +0.0 + 11 +5000.0 + 21 +14056.44097 + 31 +0.0 + 0 +LINE + 5 +12B9 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +13961.178175 + 30 +0.0 + 11 +4925.000009 + 21 +13969.838445 + 31 +0.0 + 0 +LINE + 5 +12BA + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +14013.139716 + 30 +0.0 + 11 +4962.500009 + 21 +14034.790351 + 31 +0.0 + 0 +LINE + 5 +12BB + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +14078.091621 + 30 +0.0 + 11 +5000.0 + 21 +14099.74224 + 31 +0.0 + 0 +LINE + 5 +12BC + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14004.479445 + 30 +0.0 + 11 +4925.000009 + 21 +14013.139715 + 31 +0.0 + 0 +LINE + 5 +12BD + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +14056.440986 + 30 +0.0 + 11 +4962.500009 + 21 +14078.091621 + 31 +0.0 + 0 +LINE + 5 +12BE + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +14121.392891 + 30 +0.0 + 11 +5000.0 + 21 +14143.04351 + 31 +0.0 + 0 +LINE + 5 +12BF + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14047.780715 + 30 +0.0 + 11 +4925.000009 + 21 +14056.440986 + 31 +0.0 + 0 +LINE + 5 +12C0 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +14099.742256 + 30 +0.0 + 11 +4962.500009 + 21 +14121.392891 + 31 +0.0 + 0 +LINE + 5 +12C1 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +14164.694161 + 30 +0.0 + 11 +5000.0 + 21 +14186.34478 + 31 +0.0 + 0 +LINE + 5 +12C2 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14091.081985 + 30 +0.0 + 11 +4925.000009 + 21 +14099.742256 + 31 +0.0 + 0 +LINE + 5 +12C3 + 8 +0 + 62 + 0 + 10 +4950.000009 + 20 +14143.043526 + 30 +0.0 + 11 +4962.500009 + 21 +14164.694161 + 31 +0.0 + 0 +LINE + 5 +12C4 + 8 +0 + 62 + 0 + 10 +4987.500009 + 20 +14207.995431 + 30 +0.0 + 11 +5000.0 + 21 +14229.64605 + 31 +0.0 + 0 +LINE + 5 +12C5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14134.383255 + 30 +0.0 + 11 +4925.00001 + 21 +14143.043526 + 31 +0.0 + 0 +LINE + 5 +12C6 + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14186.344796 + 30 +0.0 + 11 +4962.50001 + 21 +14207.995431 + 31 +0.0 + 0 +LINE + 5 +12C7 + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14251.296701 + 30 +0.0 + 11 +5000.0 + 21 +14272.94732 + 31 +0.0 + 0 +LINE + 5 +12C8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14177.684525 + 30 +0.0 + 11 +4925.00001 + 21 +14186.344796 + 31 +0.0 + 0 +LINE + 5 +12C9 + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14229.646066 + 30 +0.0 + 11 +4962.50001 + 21 +14251.296701 + 31 +0.0 + 0 +LINE + 5 +12CA + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14294.597972 + 30 +0.0 + 11 +5000.0 + 21 +14316.24859 + 31 +0.0 + 0 +LINE + 5 +12CB + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14220.985795 + 30 +0.0 + 11 +4925.00001 + 21 +14229.646066 + 31 +0.0 + 0 +LINE + 5 +12CC + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14272.947336 + 30 +0.0 + 11 +4962.50001 + 21 +14294.597971 + 31 +0.0 + 0 +LINE + 5 +12CD + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14337.899242 + 30 +0.0 + 11 +5000.0 + 21 +14359.54986 + 31 +0.0 + 0 +LINE + 5 +12CE + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14264.287065 + 30 +0.0 + 11 +4925.00001 + 21 +14272.947336 + 31 +0.0 + 0 +LINE + 5 +12CF + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14316.248607 + 30 +0.0 + 11 +4962.50001 + 21 +14337.899242 + 31 +0.0 + 0 +LINE + 5 +12D0 + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14381.200512 + 30 +0.0 + 11 +5000.0 + 21 +14402.85113 + 31 +0.0 + 0 +LINE + 5 +12D1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14307.588335 + 30 +0.0 + 11 +4925.00001 + 21 +14316.248606 + 31 +0.0 + 0 +LINE + 5 +12D2 + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14359.549877 + 30 +0.0 + 11 +4962.50001 + 21 +14381.200512 + 31 +0.0 + 0 +LINE + 5 +12D3 + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14424.501782 + 30 +0.0 + 11 +5000.0 + 21 +14446.1524 + 31 +0.0 + 0 +LINE + 5 +12D4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14350.889605 + 30 +0.0 + 11 +4925.00001 + 21 +14359.549877 + 31 +0.0 + 0 +LINE + 5 +12D5 + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14402.851147 + 30 +0.0 + 11 +4962.50001 + 21 +14424.501782 + 31 +0.0 + 0 +LINE + 5 +12D6 + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14467.803052 + 30 +0.0 + 11 +5000.0 + 21 +14489.45367 + 31 +0.0 + 0 +LINE + 5 +12D7 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14394.190875 + 30 +0.0 + 11 +4925.00001 + 21 +14402.851147 + 31 +0.0 + 0 +LINE + 5 +12D8 + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14446.152417 + 30 +0.0 + 11 +4962.50001 + 21 +14467.803052 + 31 +0.0 + 0 +LINE + 5 +12D9 + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14511.104322 + 30 +0.0 + 11 +5000.0 + 21 +14532.75494 + 31 +0.0 + 0 +LINE + 5 +12DA + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14437.492145 + 30 +0.0 + 11 +4925.00001 + 21 +14446.152417 + 31 +0.0 + 0 +LINE + 5 +12DB + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14489.453687 + 30 +0.0 + 11 +4962.50001 + 21 +14511.104322 + 31 +0.0 + 0 +LINE + 5 +12DC + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14554.405592 + 30 +0.0 + 11 +5000.0 + 21 +14576.05621 + 31 +0.0 + 0 +LINE + 5 +12DD + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14480.793415 + 30 +0.0 + 11 +4925.00001 + 21 +14489.453687 + 31 +0.0 + 0 +LINE + 5 +12DE + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14532.754957 + 30 +0.0 + 11 +4962.50001 + 21 +14554.405592 + 31 +0.0 + 0 +LINE + 5 +12DF + 8 +0 + 62 + 0 + 10 +4987.50001 + 20 +14597.706863 + 30 +0.0 + 11 +5000.0 + 21 +14619.35748 + 31 +0.0 + 0 +LINE + 5 +12E0 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14524.094685 + 30 +0.0 + 11 +4925.00001 + 21 +14532.754957 + 31 +0.0 + 0 +LINE + 5 +12E1 + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14576.056227 + 30 +0.0 + 11 +4962.50001 + 21 +14597.706862 + 31 +0.0 + 0 +LINE + 5 +12E2 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14567.395955 + 30 +0.0 + 11 +4925.00001 + 21 +14576.056227 + 31 +0.0 + 0 +LINE + 5 +12E3 + 8 +0 + 62 + 0 + 10 +4950.00001 + 20 +14619.357498 + 30 +0.0 + 11 +4953.979398 + 21 +14626.25 + 31 +0.0 + 0 +LINE + 5 +12E4 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +14610.697225 + 30 +0.0 + 11 +4925.00001 + 21 +14619.357497 + 31 +0.0 + 0 +LINE + 5 +12E5 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9371.243555 + 30 +0.0 + 11 +4925.0 + 21 +9379.90381 + 31 +0.0 + 0 +LINE + 5 +12E6 + 8 +0 + 62 + 0 + 10 +4950.0 + 20 +9423.20508 + 30 +0.0 + 11 +4962.5 + 21 +9444.855716 + 31 +0.0 + 0 +LINE + 5 +12E7 + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9488.156986 + 30 +0.0 + 11 +5000.0 + 21 +9509.80762 + 31 +0.0 + 0 +LINE + 5 +12E8 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9327.942285 + 30 +0.0 + 11 +4925.0 + 21 +9336.60254 + 31 +0.0 + 0 +LINE + 5 +12E9 + 8 +0 + 62 + 0 + 10 +4950.0 + 20 +9379.90381 + 30 +0.0 + 11 +4962.5 + 21 +9401.554445 + 31 +0.0 + 0 +LINE + 5 +12EA + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9444.855716 + 30 +0.0 + 11 +5000.0 + 21 +9466.50635 + 31 +0.0 + 0 +LINE + 5 +12EB + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9284.641015 + 30 +0.0 + 11 +4925.0 + 21 +9293.30127 + 31 +0.0 + 0 +LINE + 5 +12EC + 8 +0 + 62 + 0 + 10 +4950.0 + 20 +9336.60254 + 30 +0.0 + 11 +4962.5 + 21 +9358.253175 + 31 +0.0 + 0 +LINE + 5 +12ED + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9401.554445 + 30 +0.0 + 11 +5000.0 + 21 +9423.20508 + 31 +0.0 + 0 +LINE + 5 +12EE + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9241.339745 + 30 +0.0 + 11 +4925.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +12EF + 8 +0 + 62 + 0 + 10 +4950.0 + 20 +9293.30127 + 30 +0.0 + 11 +4962.5 + 21 +9314.951905 + 31 +0.0 + 0 +LINE + 5 +12F0 + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9358.253175 + 30 +0.0 + 11 +5000.0 + 21 +9379.90381 + 31 +0.0 + 0 +LINE + 5 +12F1 + 8 +0 + 62 + 0 + 10 +4920.0 + 20 +9198.038475 + 30 +0.0 + 11 +4925.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +12F2 + 8 +0 + 62 + 0 + 10 +4950.0 + 20 +9250.0 + 30 +0.0 + 11 +4962.5 + 21 +9271.650635 + 31 +0.0 + 0 +LINE + 5 +12F3 + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9314.951905 + 30 +0.0 + 11 +5000.0 + 21 +9336.60254 + 31 +0.0 + 0 +LINE + 5 +12F4 + 8 +0 + 62 + 0 + 10 +4950.0 + 20 +9206.69873 + 30 +0.0 + 11 +4962.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +12F5 + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9271.650635 + 30 +0.0 + 11 +5000.0 + 21 +9293.30127 + 31 +0.0 + 0 +LINE + 5 +12F6 + 8 +0 + 62 + 0 + 10 +4953.811978 + 20 +9170.0 + 30 +0.0 + 11 +4962.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +12F7 + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9228.349365 + 30 +0.0 + 11 +5000.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +12F8 + 8 +0 + 62 + 0 + 10 +4987.5 + 20 +9185.048095 + 30 +0.0 + 11 +5000.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +12F9 + 8 +0 + 62 + 0 + 10 +5025.0 + 20 +9206.69873 + 30 +0.0 + 11 +5037.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +12FA + 8 +0 + 62 + 0 + 10 +5028.811978 + 20 +9170.0 + 30 +0.0 + 11 +5037.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +12FB + 8 +0 + 62 + 0 + 10 +5062.5 + 20 +9228.349365 + 30 +0.0 + 11 +5075.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +12FC + 8 +0 + 62 + 0 + 10 +5062.5 + 20 +9185.048095 + 30 +0.0 + 11 +5075.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +12FD + 8 +0 + 62 + 0 + 10 +5100.0 + 20 +9206.69873 + 30 +0.0 + 11 +5112.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +12FE + 8 +0 + 62 + 0 + 10 +5103.811978 + 20 +9170.0 + 30 +0.0 + 11 +5112.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +12FF + 8 +0 + 62 + 0 + 10 +5137.5 + 20 +9228.349365 + 30 +0.0 + 11 +5149.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1300 + 8 +0 + 62 + 0 + 10 +5137.499999 + 20 +9185.048095 + 30 +0.0 + 11 +5149.999999 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1301 + 8 +0 + 62 + 0 + 10 +5174.999999 + 20 +9206.69873 + 30 +0.0 + 11 +5187.499999 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1302 + 8 +0 + 62 + 0 + 10 +5178.811977 + 20 +9170.0 + 30 +0.0 + 11 +5187.499999 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1303 + 8 +0 + 62 + 0 + 10 +5212.499999 + 20 +9228.349365 + 30 +0.0 + 11 +5224.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1304 + 8 +0 + 62 + 0 + 10 +5212.499999 + 20 +9185.048095 + 30 +0.0 + 11 +5224.999999 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1305 + 8 +0 + 62 + 0 + 10 +5249.999999 + 20 +9206.69873 + 30 +0.0 + 11 +5262.499999 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1306 + 8 +0 + 62 + 0 + 10 +5253.811977 + 20 +9170.0 + 30 +0.0 + 11 +5262.499999 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1307 + 8 +0 + 62 + 0 + 10 +5287.499999 + 20 +9228.349365 + 30 +0.0 + 11 +5299.999999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1308 + 8 +0 + 62 + 0 + 10 +5287.499999 + 20 +9185.048095 + 30 +0.0 + 11 +5299.999999 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1309 + 8 +0 + 62 + 0 + 10 +5324.999999 + 20 +9206.69873 + 30 +0.0 + 11 +5337.499999 + 21 +9228.349366 + 31 +0.0 + 0 +LINE + 5 +130A + 8 +0 + 62 + 0 + 10 +5328.811977 + 20 +9170.0 + 30 +0.0 + 11 +5337.499999 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +130B + 8 +0 + 62 + 0 + 10 +5362.499999 + 20 +9228.349366 + 30 +0.0 + 11 +5374.999998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +130C + 8 +0 + 62 + 0 + 10 +5362.499999 + 20 +9185.048095 + 30 +0.0 + 11 +5374.999999 + 21 +9206.698731 + 31 +0.0 + 0 +LINE + 5 +130D + 8 +0 + 62 + 0 + 10 +5399.999999 + 20 +9206.698731 + 30 +0.0 + 11 +5412.499999 + 21 +9228.349366 + 31 +0.0 + 0 +LINE + 5 +130E + 8 +0 + 62 + 0 + 10 +5403.811976 + 20 +9170.0 + 30 +0.0 + 11 +5412.499999 + 21 +9185.048096 + 31 +0.0 + 0 +LINE + 5 +130F + 8 +0 + 62 + 0 + 10 +5437.499999 + 20 +9228.349366 + 30 +0.0 + 11 +5449.999998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1310 + 8 +0 + 62 + 0 + 10 +5437.499998 + 20 +9185.048096 + 30 +0.0 + 11 +5449.999998 + 21 +9206.698731 + 31 +0.0 + 0 +LINE + 5 +1311 + 8 +0 + 62 + 0 + 10 +5474.999998 + 20 +9206.698731 + 30 +0.0 + 11 +5487.499998 + 21 +9228.349366 + 31 +0.0 + 0 +LINE + 5 +1312 + 8 +0 + 62 + 0 + 10 +5478.811976 + 20 +9170.0 + 30 +0.0 + 11 +5487.499998 + 21 +9185.048096 + 31 +0.0 + 0 +LINE + 5 +1313 + 8 +0 + 62 + 0 + 10 +5512.499998 + 20 +9228.349366 + 30 +0.0 + 11 +5524.999998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1314 + 8 +0 + 62 + 0 + 10 +5512.499998 + 20 +9185.048096 + 30 +0.0 + 11 +5524.999998 + 21 +9206.698731 + 31 +0.0 + 0 +LINE + 5 +1315 + 8 +0 + 62 + 0 + 10 +5549.999998 + 20 +9206.698731 + 30 +0.0 + 11 +5562.499998 + 21 +9228.349366 + 31 +0.0 + 0 +LINE + 5 +1316 + 8 +0 + 62 + 0 + 10 +5553.811976 + 20 +9170.0 + 30 +0.0 + 11 +5562.499998 + 21 +9185.048096 + 31 +0.0 + 0 +LINE + 5 +1317 + 8 +0 + 62 + 0 + 10 +5587.499998 + 20 +9228.349366 + 30 +0.0 + 11 +5599.999997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1318 + 8 +0 + 62 + 0 + 10 +5587.499998 + 20 +9185.048096 + 30 +0.0 + 11 +5599.999998 + 21 +9206.698731 + 31 +0.0 + 0 +LINE + 5 +1319 + 8 +0 + 62 + 0 + 10 +5624.999998 + 20 +9206.698731 + 30 +0.0 + 11 +5637.499998 + 21 +9228.349366 + 31 +0.0 + 0 +LINE + 5 +131A + 8 +0 + 62 + 0 + 10 +5628.811976 + 20 +9170.0 + 30 +0.0 + 11 +5637.499998 + 21 +9185.048096 + 31 +0.0 + 0 +LINE + 5 +131B + 8 +0 + 62 + 0 + 10 +5662.499998 + 20 +9228.349366 + 30 +0.0 + 11 +5674.999997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +131C + 8 +0 + 62 + 0 + 10 +5662.499998 + 20 +9185.048096 + 30 +0.0 + 11 +5674.999998 + 21 +9206.698731 + 31 +0.0 + 0 +LINE + 5 +131D + 8 +0 + 62 + 0 + 10 +5699.999998 + 20 +9206.698731 + 30 +0.0 + 11 +5712.499998 + 21 +9228.349366 + 31 +0.0 + 0 +LINE + 5 +131E + 8 +0 + 62 + 0 + 10 +5703.811975 + 20 +9170.0 + 30 +0.0 + 11 +5712.499998 + 21 +9185.048096 + 31 +0.0 + 0 +LINE + 5 +131F + 8 +0 + 62 + 0 + 10 +5737.499998 + 20 +9228.349366 + 30 +0.0 + 11 +5749.999997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1320 + 8 +0 + 62 + 0 + 10 +5737.499997 + 20 +9185.048096 + 30 +0.0 + 11 +5749.999997 + 21 +9206.698731 + 31 +0.0 + 0 +LINE + 5 +1321 + 8 +0 + 62 + 0 + 10 +5774.999997 + 20 +9206.698731 + 30 +0.0 + 11 +5787.499997 + 21 +9228.349366 + 31 +0.0 + 0 +LINE + 5 +1322 + 8 +0 + 62 + 0 + 10 +5778.811975 + 20 +9170.0 + 30 +0.0 + 11 +5787.499997 + 21 +9185.048096 + 31 +0.0 + 0 +LINE + 5 +1323 + 8 +0 + 62 + 0 + 10 +5812.499997 + 20 +9228.349366 + 30 +0.0 + 11 +5824.999996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1324 + 8 +0 + 62 + 0 + 10 +5812.499997 + 20 +9185.048096 + 30 +0.0 + 11 +5824.999997 + 21 +9206.698731 + 31 +0.0 + 0 +LINE + 5 +1325 + 8 +0 + 62 + 0 + 10 +5849.999997 + 20 +9206.698731 + 30 +0.0 + 11 +5862.499997 + 21 +9228.349367 + 31 +0.0 + 0 +LINE + 5 +1326 + 8 +0 + 62 + 0 + 10 +5853.811975 + 20 +9170.0 + 30 +0.0 + 11 +5862.499997 + 21 +9185.048096 + 31 +0.0 + 0 +LINE + 5 +1327 + 8 +0 + 62 + 0 + 10 +5887.499997 + 20 +9228.349367 + 30 +0.0 + 11 +5899.999996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1328 + 8 +0 + 62 + 0 + 10 +5887.499997 + 20 +9185.048096 + 30 +0.0 + 11 +5899.999997 + 21 +9206.698732 + 31 +0.0 + 0 +LINE + 5 +1329 + 8 +0 + 62 + 0 + 10 +5924.999997 + 20 +9206.698732 + 30 +0.0 + 11 +5937.499997 + 21 +9228.349367 + 31 +0.0 + 0 +LINE + 5 +132A + 8 +0 + 62 + 0 + 10 +5928.811974 + 20 +9170.0 + 30 +0.0 + 11 +5937.499997 + 21 +9185.048097 + 31 +0.0 + 0 +LINE + 5 +132B + 8 +0 + 62 + 0 + 10 +5962.499997 + 20 +9228.349367 + 30 +0.0 + 11 +5974.999996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +132C + 8 +0 + 62 + 0 + 10 +5962.499997 + 20 +9185.048097 + 30 +0.0 + 11 +5974.999997 + 21 +9206.698732 + 31 +0.0 + 0 +LINE + 5 +132D + 8 +0 + 62 + 0 + 10 +5999.999997 + 20 +9206.698732 + 30 +0.0 + 11 +6012.499997 + 21 +9228.349367 + 31 +0.0 + 0 +LINE + 5 +132E + 8 +0 + 62 + 0 + 10 +6003.811974 + 20 +9170.0 + 30 +0.0 + 11 +6012.499997 + 21 +9185.048097 + 31 +0.0 + 0 +LINE + 5 +132F + 8 +0 + 62 + 0 + 10 +6037.499997 + 20 +9228.349367 + 30 +0.0 + 11 +6049.999995 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1330 + 8 +0 + 62 + 0 + 10 +6037.499996 + 20 +9185.048097 + 30 +0.0 + 11 +6049.999996 + 21 +9206.698732 + 31 +0.0 + 0 +LINE + 5 +1331 + 8 +0 + 62 + 0 + 10 +6074.999996 + 20 +9206.698732 + 30 +0.0 + 11 +6087.499996 + 21 +9228.349367 + 31 +0.0 + 0 +LINE + 5 +1332 + 8 +0 + 62 + 0 + 10 +6078.811974 + 20 +9170.0 + 30 +0.0 + 11 +6087.499996 + 21 +9185.048097 + 31 +0.0 + 0 +LINE + 5 +1333 + 8 +0 + 62 + 0 + 10 +6112.499996 + 20 +9228.349367 + 30 +0.0 + 11 +6124.999995 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1334 + 8 +0 + 62 + 0 + 10 +6112.499996 + 20 +9185.048097 + 30 +0.0 + 11 +6124.999996 + 21 +9206.698732 + 31 +0.0 + 0 +LINE + 5 +1335 + 8 +0 + 62 + 0 + 10 +6149.999996 + 20 +9206.698732 + 30 +0.0 + 11 +6162.499996 + 21 +9228.349367 + 31 +0.0 + 0 +LINE + 5 +1336 + 8 +0 + 62 + 0 + 10 +6153.811973 + 20 +9170.0 + 30 +0.0 + 11 +6162.499996 + 21 +9185.048097 + 31 +0.0 + 0 +LINE + 5 +1337 + 8 +0 + 62 + 0 + 10 +6187.499996 + 20 +9228.349367 + 30 +0.0 + 11 +6199.999995 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1338 + 8 +0 + 62 + 0 + 10 +6187.499996 + 20 +9185.048097 + 30 +0.0 + 11 +6199.999996 + 21 +9206.698732 + 31 +0.0 + 0 +LINE + 5 +1339 + 8 +0 + 62 + 0 + 10 +6224.999996 + 20 +9206.698732 + 30 +0.0 + 11 +6237.499996 + 21 +9228.349367 + 31 +0.0 + 0 +LINE + 5 +133A + 8 +0 + 62 + 0 + 10 +6228.811973 + 20 +9170.0 + 30 +0.0 + 11 +6237.499996 + 21 +9185.048097 + 31 +0.0 + 0 +LINE + 5 +133B + 8 +0 + 62 + 0 + 10 +6262.499996 + 20 +9228.349367 + 30 +0.0 + 11 +6274.999994 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +133C + 8 +0 + 62 + 0 + 10 +6262.499996 + 20 +9185.048097 + 30 +0.0 + 11 +6274.999996 + 21 +9206.698732 + 31 +0.0 + 0 +LINE + 5 +133D + 8 +0 + 62 + 0 + 10 +6299.999996 + 20 +9206.698732 + 30 +0.0 + 11 +6312.499996 + 21 +9228.349367 + 31 +0.0 + 0 +LINE + 5 +133E + 8 +0 + 62 + 0 + 10 +6303.811973 + 20 +9170.0 + 30 +0.0 + 11 +6312.499996 + 21 +9185.048097 + 31 +0.0 + 0 +LINE + 5 +133F + 8 +0 + 62 + 0 + 10 +6337.499996 + 20 +9228.349367 + 30 +0.0 + 11 +6349.999994 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1340 + 8 +0 + 62 + 0 + 10 +6337.499995 + 20 +9185.048097 + 30 +0.0 + 11 +6349.999995 + 21 +9206.698732 + 31 +0.0 + 0 +LINE + 5 +1341 + 8 +0 + 62 + 0 + 10 +6374.999995 + 20 +9206.698732 + 30 +0.0 + 11 +6387.499995 + 21 +9228.349368 + 31 +0.0 + 0 +LINE + 5 +1342 + 8 +0 + 62 + 0 + 10 +6378.811972 + 20 +9170.0 + 30 +0.0 + 11 +6387.499995 + 21 +9185.048097 + 31 +0.0 + 0 +LINE + 5 +1343 + 8 +0 + 62 + 0 + 10 +6412.499995 + 20 +9228.349368 + 30 +0.0 + 11 +6424.999994 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1344 + 8 +0 + 62 + 0 + 10 +6412.499995 + 20 +9185.048097 + 30 +0.0 + 11 +6424.999995 + 21 +9206.698733 + 31 +0.0 + 0 +LINE + 5 +1345 + 8 +0 + 62 + 0 + 10 +6449.999995 + 20 +9206.698733 + 30 +0.0 + 11 +6462.499995 + 21 +9228.349368 + 31 +0.0 + 0 +LINE + 5 +1346 + 8 +0 + 62 + 0 + 10 +6453.811972 + 20 +9170.0 + 30 +0.0 + 11 +6462.499995 + 21 +9185.048098 + 31 +0.0 + 0 +LINE + 5 +1347 + 8 +0 + 62 + 0 + 10 +6487.499995 + 20 +9228.349368 + 30 +0.0 + 11 +6499.999993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1348 + 8 +0 + 62 + 0 + 10 +6487.499995 + 20 +9185.048098 + 30 +0.0 + 11 +6499.999995 + 21 +9206.698733 + 31 +0.0 + 0 +LINE + 5 +1349 + 8 +0 + 62 + 0 + 10 +6524.999995 + 20 +9206.698733 + 30 +0.0 + 11 +6537.499995 + 21 +9228.349368 + 31 +0.0 + 0 +LINE + 5 +134A + 8 +0 + 62 + 0 + 10 +6528.811972 + 20 +9170.0 + 30 +0.0 + 11 +6537.499995 + 21 +9185.048098 + 31 +0.0 + 0 +LINE + 5 +134B + 8 +0 + 62 + 0 + 10 +6562.499995 + 20 +9228.349368 + 30 +0.0 + 11 +6574.999993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +134C + 8 +0 + 62 + 0 + 10 +6562.499995 + 20 +9185.048098 + 30 +0.0 + 11 +6574.999995 + 21 +9206.698733 + 31 +0.0 + 0 +LINE + 5 +134D + 8 +0 + 62 + 0 + 10 +6599.999995 + 20 +9206.698733 + 30 +0.0 + 11 +6612.499995 + 21 +9228.349368 + 31 +0.0 + 0 +LINE + 5 +134E + 8 +0 + 62 + 0 + 10 +6603.811971 + 20 +9170.0 + 30 +0.0 + 11 +6612.499995 + 21 +9185.048098 + 31 +0.0 + 0 +LINE + 5 +134F + 8 +0 + 62 + 0 + 10 +6637.499995 + 20 +9228.349368 + 30 +0.0 + 11 +6649.999993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1350 + 8 +0 + 62 + 0 + 10 +6637.499995 + 20 +9185.048098 + 30 +0.0 + 11 +6649.999995 + 21 +9206.698733 + 31 +0.0 + 0 +LINE + 5 +1351 + 8 +0 + 62 + 0 + 10 +6674.999994 + 20 +9206.698733 + 30 +0.0 + 11 +6687.499994 + 21 +9228.349368 + 31 +0.0 + 0 +LINE + 5 +1352 + 8 +0 + 62 + 0 + 10 +6678.811971 + 20 +9170.0 + 30 +0.0 + 11 +6687.499994 + 21 +9185.048098 + 31 +0.0 + 0 +LINE + 5 +1353 + 8 +0 + 62 + 0 + 10 +6712.499994 + 20 +9228.349368 + 30 +0.0 + 11 +6724.999992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1354 + 8 +0 + 62 + 0 + 10 +6712.499994 + 20 +9185.048098 + 30 +0.0 + 11 +6724.999994 + 21 +9206.698733 + 31 +0.0 + 0 +LINE + 5 +1355 + 8 +0 + 62 + 0 + 10 +6749.999994 + 20 +9206.698733 + 30 +0.0 + 11 +6762.499994 + 21 +9228.349368 + 31 +0.0 + 0 +LINE + 5 +1356 + 8 +0 + 62 + 0 + 10 +6753.811971 + 20 +9170.0 + 30 +0.0 + 11 +6762.499994 + 21 +9185.048098 + 31 +0.0 + 0 +LINE + 5 +1357 + 8 +0 + 62 + 0 + 10 +6787.499994 + 20 +9228.349368 + 30 +0.0 + 11 +6799.999992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1358 + 8 +0 + 62 + 0 + 10 +6787.499994 + 20 +9185.048098 + 30 +0.0 + 11 +6799.999994 + 21 +9206.698733 + 31 +0.0 + 0 +LINE + 5 +1359 + 8 +0 + 62 + 0 + 10 +6824.999994 + 20 +9206.698733 + 30 +0.0 + 11 +6837.499994 + 21 +9228.349368 + 31 +0.0 + 0 +LINE + 5 +135A + 8 +0 + 62 + 0 + 10 +6828.81197 + 20 +9170.0 + 30 +0.0 + 11 +6837.499994 + 21 +9185.048098 + 31 +0.0 + 0 +LINE + 5 +135B + 8 +0 + 62 + 0 + 10 +6862.499994 + 20 +9228.349368 + 30 +0.0 + 11 +6874.999992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +135C + 8 +0 + 62 + 0 + 10 +6862.499994 + 20 +9185.048098 + 30 +0.0 + 11 +6874.999994 + 21 +9206.698733 + 31 +0.0 + 0 +LINE + 5 +135D + 8 +0 + 62 + 0 + 10 +6899.999994 + 20 +9206.698733 + 30 +0.0 + 11 +6912.499994 + 21 +9228.349369 + 31 +0.0 + 0 +LINE + 5 +135E + 8 +0 + 62 + 0 + 10 +6903.81197 + 20 +9170.0 + 30 +0.0 + 11 +6912.499994 + 21 +9185.048098 + 31 +0.0 + 0 +LINE + 5 +135F + 8 +0 + 62 + 0 + 10 +6937.499994 + 20 +9228.349369 + 30 +0.0 + 11 +6949.999991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1360 + 8 +0 + 62 + 0 + 10 +6937.499994 + 20 +9185.048098 + 30 +0.0 + 11 +6949.999994 + 21 +9206.698734 + 31 +0.0 + 0 +LINE + 5 +1361 + 8 +0 + 62 + 0 + 10 +6974.999993 + 20 +9206.698734 + 30 +0.0 + 11 +6987.499993 + 21 +9228.349369 + 31 +0.0 + 0 +LINE + 5 +1362 + 8 +0 + 62 + 0 + 10 +6978.81197 + 20 +9170.0 + 30 +0.0 + 11 +6987.499993 + 21 +9185.048099 + 31 +0.0 + 0 +LINE + 5 +1363 + 8 +0 + 62 + 0 + 10 +7012.499993 + 20 +9228.349369 + 30 +0.0 + 11 +7024.999991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1364 + 8 +0 + 62 + 0 + 10 +7012.499993 + 20 +9185.048099 + 30 +0.0 + 11 +7024.999993 + 21 +9206.698734 + 31 +0.0 + 0 +LINE + 5 +1365 + 8 +0 + 62 + 0 + 10 +7049.999993 + 20 +9206.698734 + 30 +0.0 + 11 +7062.499993 + 21 +9228.349369 + 31 +0.0 + 0 +LINE + 5 +1366 + 8 +0 + 62 + 0 + 10 +7053.811969 + 20 +9170.0 + 30 +0.0 + 11 +7062.499993 + 21 +9185.048099 + 31 +0.0 + 0 +LINE + 5 +1367 + 8 +0 + 62 + 0 + 10 +7087.499993 + 20 +9228.349369 + 30 +0.0 + 11 +7099.999991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1368 + 8 +0 + 62 + 0 + 10 +7087.499993 + 20 +9185.048099 + 30 +0.0 + 11 +7099.999993 + 21 +9206.698734 + 31 +0.0 + 0 +LINE + 5 +1369 + 8 +0 + 62 + 0 + 10 +7124.999993 + 20 +9206.698734 + 30 +0.0 + 11 +7137.499993 + 21 +9228.349369 + 31 +0.0 + 0 +LINE + 5 +136A + 8 +0 + 62 + 0 + 10 +7128.811969 + 20 +9170.0 + 30 +0.0 + 11 +7137.499993 + 21 +9185.048099 + 31 +0.0 + 0 +LINE + 5 +136B + 8 +0 + 62 + 0 + 10 +7162.499993 + 20 +9228.349369 + 30 +0.0 + 11 +7174.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +136C + 8 +0 + 62 + 0 + 10 +7162.499993 + 20 +9185.048099 + 30 +0.0 + 11 +7174.999993 + 21 +9206.698734 + 31 +0.0 + 0 +LINE + 5 +136D + 8 +0 + 62 + 0 + 10 +7199.999993 + 20 +9206.698734 + 30 +0.0 + 11 +7212.499993 + 21 +9228.349369 + 31 +0.0 + 0 +LINE + 5 +136E + 8 +0 + 62 + 0 + 10 +7203.811969 + 20 +9170.0 + 30 +0.0 + 11 +7212.499993 + 21 +9185.048099 + 31 +0.0 + 0 +LINE + 5 +136F + 8 +0 + 62 + 0 + 10 +7237.499993 + 20 +9228.349369 + 30 +0.0 + 11 +7249.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1370 + 8 +0 + 62 + 0 + 10 +7237.499993 + 20 +9185.048099 + 30 +0.0 + 11 +7249.999993 + 21 +9206.698734 + 31 +0.0 + 0 +LINE + 5 +1371 + 8 +0 + 62 + 0 + 10 +7274.999992 + 20 +9206.698734 + 30 +0.0 + 11 +7287.499992 + 21 +9228.349369 + 31 +0.0 + 0 +LINE + 5 +1372 + 8 +0 + 62 + 0 + 10 +7278.811968 + 20 +9170.0 + 30 +0.0 + 11 +7287.499992 + 21 +9185.048099 + 31 +0.0 + 0 +LINE + 5 +1373 + 8 +0 + 62 + 0 + 10 +7312.499992 + 20 +9228.349369 + 30 +0.0 + 11 +7324.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1374 + 8 +0 + 62 + 0 + 10 +7312.499992 + 20 +9185.048099 + 30 +0.0 + 11 +7324.999992 + 21 +9206.698734 + 31 +0.0 + 0 +LINE + 5 +1375 + 8 +0 + 62 + 0 + 10 +7349.999992 + 20 +9206.698734 + 30 +0.0 + 11 +7362.499992 + 21 +9228.349369 + 31 +0.0 + 0 +LINE + 5 +1376 + 8 +0 + 62 + 0 + 10 +7353.811968 + 20 +9170.0 + 30 +0.0 + 11 +7362.499992 + 21 +9185.048099 + 31 +0.0 + 0 +LINE + 5 +1377 + 8 +0 + 62 + 0 + 10 +7387.499992 + 20 +9228.349369 + 30 +0.0 + 11 +7399.99999 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1378 + 8 +0 + 62 + 0 + 10 +7387.499992 + 20 +9185.048099 + 30 +0.0 + 11 +7399.999992 + 21 +9206.698734 + 31 +0.0 + 0 +LINE + 5 +1379 + 8 +0 + 62 + 0 + 10 +7424.999992 + 20 +9206.698734 + 30 +0.0 + 11 +7437.499992 + 21 +9228.34937 + 31 +0.0 + 0 +LINE + 5 +137A + 8 +0 + 62 + 0 + 10 +7428.811968 + 20 +9170.0 + 30 +0.0 + 11 +7437.499992 + 21 +9185.048099 + 31 +0.0 + 0 +LINE + 5 +137B + 8 +0 + 62 + 0 + 10 +7462.499992 + 20 +9228.34937 + 30 +0.0 + 11 +7474.999989 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +137C + 8 +0 + 62 + 0 + 10 +7462.499992 + 20 +9185.048099 + 30 +0.0 + 11 +7474.999992 + 21 +9206.698735 + 31 +0.0 + 0 +LINE + 5 +137D + 8 +0 + 62 + 0 + 10 +7499.999992 + 20 +9206.698735 + 30 +0.0 + 11 +7512.499992 + 21 +9228.34937 + 31 +0.0 + 0 +LINE + 5 +137E + 8 +0 + 62 + 0 + 10 +7503.811967 + 20 +9170.0 + 30 +0.0 + 11 +7512.499992 + 21 +9185.0481 + 31 +0.0 + 0 +LINE + 5 +137F + 8 +0 + 62 + 0 + 10 +7537.499992 + 20 +9228.34937 + 30 +0.0 + 11 +7549.999989 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1380 + 8 +0 + 62 + 0 + 10 +7537.499992 + 20 +9185.0481 + 30 +0.0 + 11 +7549.999992 + 21 +9206.698735 + 31 +0.0 + 0 +LINE + 5 +1381 + 8 +0 + 62 + 0 + 10 +7574.999991 + 20 +9206.698735 + 30 +0.0 + 11 +7587.499991 + 21 +9228.34937 + 31 +0.0 + 0 +LINE + 5 +1382 + 8 +0 + 62 + 0 + 10 +7578.811967 + 20 +9170.0 + 30 +0.0 + 11 +7587.499991 + 21 +9185.0481 + 31 +0.0 + 0 +LINE + 5 +1383 + 8 +0 + 62 + 0 + 10 +7612.499991 + 20 +9228.34937 + 30 +0.0 + 11 +7624.999989 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1384 + 8 +0 + 62 + 0 + 10 +7612.499991 + 20 +9185.0481 + 30 +0.0 + 11 +7624.999991 + 21 +9206.698735 + 31 +0.0 + 0 +LINE + 5 +1385 + 8 +0 + 62 + 0 + 10 +7649.999991 + 20 +9206.698735 + 30 +0.0 + 11 +7662.499991 + 21 +9228.34937 + 31 +0.0 + 0 +LINE + 5 +1386 + 8 +0 + 62 + 0 + 10 +7653.811967 + 20 +9170.0 + 30 +0.0 + 11 +7662.499991 + 21 +9185.0481 + 31 +0.0 + 0 +LINE + 5 +1387 + 8 +0 + 62 + 0 + 10 +7687.499991 + 20 +9228.34937 + 30 +0.0 + 11 +7699.999988 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1388 + 8 +0 + 62 + 0 + 10 +7687.499991 + 20 +9185.0481 + 30 +0.0 + 11 +7699.999991 + 21 +9206.698735 + 31 +0.0 + 0 +LINE + 5 +1389 + 8 +0 + 62 + 0 + 10 +7724.999991 + 20 +9206.698735 + 30 +0.0 + 11 +7737.499991 + 21 +9228.34937 + 31 +0.0 + 0 +LINE + 5 +138A + 8 +0 + 62 + 0 + 10 +7728.811966 + 20 +9170.0 + 30 +0.0 + 11 +7737.499991 + 21 +9185.0481 + 31 +0.0 + 0 +ENDBLK + 5 +138B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X45 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X45 + 1 + + 0 +LINE + 5 +138D + 8 +0 + 62 + 0 + 10 +8787.5 + 20 +9228.349365 + 30 +0.0 + 11 +8812.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +138E + 8 +0 + 62 + 0 + 10 +8862.5 + 20 +9228.349365 + 30 +0.0 + 11 +8887.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +138F + 8 +0 + 62 + 0 + 10 +8937.5 + 20 +9228.349365 + 30 +0.0 + 11 +8962.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1390 + 8 +0 + 62 + 0 + 10 +9012.5 + 20 +9228.349365 + 30 +0.0 + 11 +9037.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1391 + 8 +0 + 62 + 0 + 10 +9087.5 + 20 +9228.349365 + 30 +0.0 + 11 +9112.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1392 + 8 +0 + 62 + 0 + 10 +9162.5 + 20 +9228.349365 + 30 +0.0 + 11 +9187.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1393 + 8 +0 + 62 + 0 + 10 +9237.5 + 20 +9228.349365 + 30 +0.0 + 11 +9262.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1394 + 8 +0 + 62 + 0 + 10 +9312.5 + 20 +9228.349365 + 30 +0.0 + 11 +9337.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1395 + 8 +0 + 62 + 0 + 10 +9387.5 + 20 +9228.349365 + 30 +0.0 + 11 +9412.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1396 + 8 +0 + 62 + 0 + 10 +9462.5 + 20 +9228.349365 + 30 +0.0 + 11 +9487.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1397 + 8 +0 + 62 + 0 + 10 +9537.5 + 20 +9228.349365 + 30 +0.0 + 11 +9562.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1398 + 8 +0 + 62 + 0 + 10 +9612.5 + 20 +9228.349365 + 30 +0.0 + 11 +9637.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1399 + 8 +0 + 62 + 0 + 10 +9687.5 + 20 +9228.349365 + 30 +0.0 + 11 +9712.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +139A + 8 +0 + 62 + 0 + 10 +9762.5 + 20 +9228.349365 + 30 +0.0 + 11 +9787.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +139B + 8 +0 + 62 + 0 + 10 +9837.5 + 20 +9228.349365 + 30 +0.0 + 11 +9862.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +139C + 8 +0 + 62 + 0 + 10 +8750.0 + 20 +9206.69873 + 30 +0.0 + 11 +8775.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +139D + 8 +0 + 62 + 0 + 10 +8825.0 + 20 +9206.69873 + 30 +0.0 + 11 +8850.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +139E + 8 +0 + 62 + 0 + 10 +8900.0 + 20 +9206.69873 + 30 +0.0 + 11 +8925.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +139F + 8 +0 + 62 + 0 + 10 +8975.0 + 20 +9206.69873 + 30 +0.0 + 11 +9000.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A0 + 8 +0 + 62 + 0 + 10 +9050.0 + 20 +9206.69873 + 30 +0.0 + 11 +9075.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A1 + 8 +0 + 62 + 0 + 10 +9125.0 + 20 +9206.69873 + 30 +0.0 + 11 +9150.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A2 + 8 +0 + 62 + 0 + 10 +9200.0 + 20 +9206.69873 + 30 +0.0 + 11 +9225.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A3 + 8 +0 + 62 + 0 + 10 +9275.0 + 20 +9206.69873 + 30 +0.0 + 11 +9300.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A4 + 8 +0 + 62 + 0 + 10 +9350.0 + 20 +9206.69873 + 30 +0.0 + 11 +9375.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A5 + 8 +0 + 62 + 0 + 10 +9425.0 + 20 +9206.69873 + 30 +0.0 + 11 +9450.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A6 + 8 +0 + 62 + 0 + 10 +9500.0 + 20 +9206.69873 + 30 +0.0 + 11 +9525.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A7 + 8 +0 + 62 + 0 + 10 +9575.0 + 20 +9206.69873 + 30 +0.0 + 11 +9600.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A8 + 8 +0 + 62 + 0 + 10 +9650.0 + 20 +9206.69873 + 30 +0.0 + 11 +9675.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13A9 + 8 +0 + 62 + 0 + 10 +9725.0 + 20 +9206.69873 + 30 +0.0 + 11 +9750.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13AA + 8 +0 + 62 + 0 + 10 +9800.0 + 20 +9206.69873 + 30 +0.0 + 11 +9825.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13AB + 8 +0 + 62 + 0 + 10 +9875.0 + 20 +9206.69873 + 30 +0.0 + 11 +9876.25 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +13AC + 8 +0 + 62 + 0 + 10 +8787.5 + 20 +9185.048095 + 30 +0.0 + 11 +8812.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13AD + 8 +0 + 62 + 0 + 10 +8862.5 + 20 +9185.048095 + 30 +0.0 + 11 +8887.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13AE + 8 +0 + 62 + 0 + 10 +8937.5 + 20 +9185.048095 + 30 +0.0 + 11 +8962.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13AF + 8 +0 + 62 + 0 + 10 +9012.5 + 20 +9185.048095 + 30 +0.0 + 11 +9037.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B0 + 8 +0 + 62 + 0 + 10 +9087.5 + 20 +9185.048095 + 30 +0.0 + 11 +9112.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B1 + 8 +0 + 62 + 0 + 10 +9162.5 + 20 +9185.048095 + 30 +0.0 + 11 +9187.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B2 + 8 +0 + 62 + 0 + 10 +9237.5 + 20 +9185.048095 + 30 +0.0 + 11 +9262.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B3 + 8 +0 + 62 + 0 + 10 +9312.5 + 20 +9185.048095 + 30 +0.0 + 11 +9337.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B4 + 8 +0 + 62 + 0 + 10 +9387.5 + 20 +9185.048095 + 30 +0.0 + 11 +9412.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B5 + 8 +0 + 62 + 0 + 10 +9462.5 + 20 +9185.048095 + 30 +0.0 + 11 +9487.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B6 + 8 +0 + 62 + 0 + 10 +9537.5 + 20 +9185.048095 + 30 +0.0 + 11 +9562.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B7 + 8 +0 + 62 + 0 + 10 +9612.5 + 20 +9185.048095 + 30 +0.0 + 11 +9637.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B8 + 8 +0 + 62 + 0 + 10 +9687.5 + 20 +9185.048095 + 30 +0.0 + 11 +9712.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13B9 + 8 +0 + 62 + 0 + 10 +9762.5 + 20 +9185.048095 + 30 +0.0 + 11 +9787.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13BA + 8 +0 + 62 + 0 + 10 +9837.5 + 20 +9185.048095 + 30 +0.0 + 11 +9862.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +13BB + 8 +0 + 62 + 0 + 10 +9312.499986 + 20 +9185.048087 + 30 +0.0 + 11 +9299.999986 + 21 +9206.698722 + 31 +0.0 + 0 +LINE + 5 +13BC + 8 +0 + 62 + 0 + 10 +9274.999986 + 20 +9249.999992 + 30 +0.0 + 11 +9274.999981 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13BD + 8 +0 + 62 + 0 + 10 +9274.999986 + 20 +9206.698722 + 30 +0.0 + 11 +9262.499986 + 21 +9228.349357 + 31 +0.0 + 0 +LINE + 5 +13BE + 8 +0 + 62 + 0 + 10 +9271.188003 + 20 +9170.0 + 30 +0.0 + 11 +9262.499986 + 21 +9185.048087 + 31 +0.0 + 0 +LINE + 5 +13BF + 8 +0 + 62 + 0 + 10 +9237.499986 + 20 +9228.349357 + 30 +0.0 + 11 +9224.999986 + 21 +9249.999992 + 31 +0.0 + 0 +LINE + 5 +13C0 + 8 +0 + 62 + 0 + 10 +9237.499986 + 20 +9185.048087 + 30 +0.0 + 11 +9224.999986 + 21 +9206.698722 + 31 +0.0 + 0 +LINE + 5 +13C1 + 8 +0 + 62 + 0 + 10 +9199.999986 + 20 +9249.999992 + 30 +0.0 + 11 +9199.999982 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13C2 + 8 +0 + 62 + 0 + 10 +9199.999986 + 20 +9206.698722 + 30 +0.0 + 11 +9187.499986 + 21 +9228.349357 + 31 +0.0 + 0 +LINE + 5 +13C3 + 8 +0 + 62 + 0 + 10 +9196.188003 + 20 +9170.0 + 30 +0.0 + 11 +9187.499986 + 21 +9185.048087 + 31 +0.0 + 0 +LINE + 5 +13C4 + 8 +0 + 62 + 0 + 10 +9162.499986 + 20 +9228.349357 + 30 +0.0 + 11 +9149.999986 + 21 +9249.999992 + 31 +0.0 + 0 +LINE + 5 +13C5 + 8 +0 + 62 + 0 + 10 +9162.499986 + 20 +9185.048087 + 30 +0.0 + 11 +9149.999986 + 21 +9206.698722 + 31 +0.0 + 0 +LINE + 5 +13C6 + 8 +0 + 62 + 0 + 10 +9124.999986 + 20 +9249.999992 + 30 +0.0 + 11 +9124.999982 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13C7 + 8 +0 + 62 + 0 + 10 +9124.999987 + 20 +9206.698722 + 30 +0.0 + 11 +9112.499987 + 21 +9228.349357 + 31 +0.0 + 0 +LINE + 5 +13C8 + 8 +0 + 62 + 0 + 10 +9121.188004 + 20 +9170.0 + 30 +0.0 + 11 +9112.499987 + 21 +9185.048087 + 31 +0.0 + 0 +LINE + 5 +13C9 + 8 +0 + 62 + 0 + 10 +9087.499987 + 20 +9228.349357 + 30 +0.0 + 11 +9074.999987 + 21 +9249.999992 + 31 +0.0 + 0 +LINE + 5 +13CA + 8 +0 + 62 + 0 + 10 +9087.499987 + 20 +9185.048087 + 30 +0.0 + 11 +9074.999987 + 21 +9206.698722 + 31 +0.0 + 0 +LINE + 5 +13CB + 8 +0 + 62 + 0 + 10 +9049.999987 + 20 +9249.999992 + 30 +0.0 + 11 +9049.999982 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13CC + 8 +0 + 62 + 0 + 10 +9049.999987 + 20 +9206.698722 + 30 +0.0 + 11 +9037.499987 + 21 +9228.349357 + 31 +0.0 + 0 +LINE + 5 +13CD + 8 +0 + 62 + 0 + 10 +9046.188004 + 20 +9170.0 + 30 +0.0 + 11 +9037.499987 + 21 +9185.048087 + 31 +0.0 + 0 +LINE + 5 +13CE + 8 +0 + 62 + 0 + 10 +9012.499987 + 20 +9228.349357 + 30 +0.0 + 11 +8999.999987 + 21 +9249.999992 + 31 +0.0 + 0 +LINE + 5 +13CF + 8 +0 + 62 + 0 + 10 +9012.499987 + 20 +9185.048087 + 30 +0.0 + 11 +8999.999987 + 21 +9206.698722 + 31 +0.0 + 0 +LINE + 5 +13D0 + 8 +0 + 62 + 0 + 10 +8974.999987 + 20 +9249.999992 + 30 +0.0 + 11 +8974.999983 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13D1 + 8 +0 + 62 + 0 + 10 +8974.999987 + 20 +9206.698722 + 30 +0.0 + 11 +8962.499987 + 21 +9228.349357 + 31 +0.0 + 0 +LINE + 5 +13D2 + 8 +0 + 62 + 0 + 10 +8971.188004 + 20 +9170.0 + 30 +0.0 + 11 +8962.499987 + 21 +9185.048087 + 31 +0.0 + 0 +LINE + 5 +13D3 + 8 +0 + 62 + 0 + 10 +8937.499987 + 20 +9228.349357 + 30 +0.0 + 11 +8924.999987 + 21 +9249.999993 + 31 +0.0 + 0 +LINE + 5 +13D4 + 8 +0 + 62 + 0 + 10 +8937.499987 + 20 +9185.048087 + 30 +0.0 + 11 +8924.999987 + 21 +9206.698722 + 31 +0.0 + 0 +LINE + 5 +13D5 + 8 +0 + 62 + 0 + 10 +8899.999987 + 20 +9249.999993 + 30 +0.0 + 11 +8899.999983 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13D6 + 8 +0 + 62 + 0 + 10 +8899.999987 + 20 +9206.698722 + 30 +0.0 + 11 +8887.499987 + 21 +9228.349358 + 31 +0.0 + 0 +LINE + 5 +13D7 + 8 +0 + 62 + 0 + 10 +8896.188005 + 20 +9170.0 + 30 +0.0 + 11 +8887.499987 + 21 +9185.048087 + 31 +0.0 + 0 +LINE + 5 +13D8 + 8 +0 + 62 + 0 + 10 +8862.499987 + 20 +9228.349358 + 30 +0.0 + 11 +8849.999987 + 21 +9249.999993 + 31 +0.0 + 0 +LINE + 5 +13D9 + 8 +0 + 62 + 0 + 10 +8862.499987 + 20 +9185.048087 + 30 +0.0 + 11 +8849.999987 + 21 +9206.698723 + 31 +0.0 + 0 +LINE + 5 +13DA + 8 +0 + 62 + 0 + 10 +8824.999987 + 20 +9249.999993 + 30 +0.0 + 11 +8824.999983 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13DB + 8 +0 + 62 + 0 + 10 +8824.999988 + 20 +9206.698723 + 30 +0.0 + 11 +8812.499988 + 21 +9228.349358 + 31 +0.0 + 0 +LINE + 5 +13DC + 8 +0 + 62 + 0 + 10 +8821.188005 + 20 +9170.0 + 30 +0.0 + 11 +8812.499988 + 21 +9185.048088 + 31 +0.0 + 0 +LINE + 5 +13DD + 8 +0 + 62 + 0 + 10 +8787.499988 + 20 +9228.349358 + 30 +0.0 + 11 +8774.999988 + 21 +9249.999993 + 31 +0.0 + 0 +LINE + 5 +13DE + 8 +0 + 62 + 0 + 10 +8787.499988 + 20 +9185.048088 + 30 +0.0 + 11 +8774.999988 + 21 +9206.698723 + 31 +0.0 + 0 +LINE + 5 +13DF + 8 +0 + 62 + 0 + 10 +8749.999988 + 20 +9249.999993 + 30 +0.0 + 11 +8749.999984 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13E0 + 8 +0 + 62 + 0 + 10 +8749.999988 + 20 +9206.698723 + 30 +0.0 + 11 +8738.75 + 21 +9226.184273 + 31 +0.0 + 0 +LINE + 5 +13E1 + 8 +0 + 62 + 0 + 10 +8746.188005 + 20 +9170.0 + 30 +0.0 + 11 +8738.75 + 21 +9182.883003 + 31 +0.0 + 0 +LINE + 5 +13E2 + 8 +0 + 62 + 0 + 10 +9346.188003 + 20 +9170.0 + 30 +0.0 + 11 +9337.499986 + 21 +9185.048087 + 31 +0.0 + 0 +LINE + 5 +13E3 + 8 +0 + 62 + 0 + 10 +9312.499986 + 20 +9228.349357 + 30 +0.0 + 11 +9299.999986 + 21 +9249.999992 + 31 +0.0 + 0 +LINE + 5 +13E4 + 8 +0 + 62 + 0 + 10 +9349.999986 + 20 +9206.698722 + 30 +0.0 + 11 +9337.499986 + 21 +9228.349357 + 31 +0.0 + 0 +LINE + 5 +13E5 + 8 +0 + 62 + 0 + 10 +9387.499986 + 20 +9185.048086 + 30 +0.0 + 11 +9374.999986 + 21 +9206.698722 + 31 +0.0 + 0 +LINE + 5 +13E6 + 8 +0 + 62 + 0 + 10 +9349.999986 + 20 +9249.999992 + 30 +0.0 + 11 +9349.999981 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13E7 + 8 +0 + 62 + 0 + 10 +9421.188002 + 20 +9170.0 + 30 +0.0 + 11 +9412.499986 + 21 +9185.048086 + 31 +0.0 + 0 +LINE + 5 +13E8 + 8 +0 + 62 + 0 + 10 +9387.499986 + 20 +9228.349357 + 30 +0.0 + 11 +9374.999986 + 21 +9249.999992 + 31 +0.0 + 0 +LINE + 5 +13E9 + 8 +0 + 62 + 0 + 10 +9424.999986 + 20 +9206.698721 + 30 +0.0 + 11 +9412.499986 + 21 +9228.349357 + 31 +0.0 + 0 +LINE + 5 +13EA + 8 +0 + 62 + 0 + 10 +9462.499985 + 20 +9185.048086 + 30 +0.0 + 11 +9449.999985 + 21 +9206.698721 + 31 +0.0 + 0 +LINE + 5 +13EB + 8 +0 + 62 + 0 + 10 +9424.999985 + 20 +9249.999992 + 30 +0.0 + 11 +9424.999981 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13EC + 8 +0 + 62 + 0 + 10 +9496.188002 + 20 +9170.0 + 30 +0.0 + 11 +9487.499985 + 21 +9185.048086 + 31 +0.0 + 0 +LINE + 5 +13ED + 8 +0 + 62 + 0 + 10 +9462.499985 + 20 +9228.349356 + 30 +0.0 + 11 +9449.999985 + 21 +9249.999992 + 31 +0.0 + 0 +LINE + 5 +13EE + 8 +0 + 62 + 0 + 10 +9499.999985 + 20 +9206.698721 + 30 +0.0 + 11 +9487.499985 + 21 +9228.349356 + 31 +0.0 + 0 +LINE + 5 +13EF + 8 +0 + 62 + 0 + 10 +9537.499985 + 20 +9185.048086 + 30 +0.0 + 11 +9524.999985 + 21 +9206.698721 + 31 +0.0 + 0 +LINE + 5 +13F0 + 8 +0 + 62 + 0 + 10 +9499.999985 + 20 +9249.999991 + 30 +0.0 + 11 +9499.99998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13F1 + 8 +0 + 62 + 0 + 10 +9571.188002 + 20 +9170.0 + 30 +0.0 + 11 +9562.499985 + 21 +9185.048086 + 31 +0.0 + 0 +LINE + 5 +13F2 + 8 +0 + 62 + 0 + 10 +9537.499985 + 20 +9228.349356 + 30 +0.0 + 11 +9524.999985 + 21 +9249.999991 + 31 +0.0 + 0 +LINE + 5 +13F3 + 8 +0 + 62 + 0 + 10 +9574.999985 + 20 +9206.698721 + 30 +0.0 + 11 +9562.499985 + 21 +9228.349356 + 31 +0.0 + 0 +LINE + 5 +13F4 + 8 +0 + 62 + 0 + 10 +9612.499985 + 20 +9185.048086 + 30 +0.0 + 11 +9599.999985 + 21 +9206.698721 + 31 +0.0 + 0 +LINE + 5 +13F5 + 8 +0 + 62 + 0 + 10 +9574.999985 + 20 +9249.999991 + 30 +0.0 + 11 +9574.99998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13F6 + 8 +0 + 62 + 0 + 10 +9646.188001 + 20 +9170.0 + 30 +0.0 + 11 +9637.499985 + 21 +9185.048086 + 31 +0.0 + 0 +LINE + 5 +13F7 + 8 +0 + 62 + 0 + 10 +9612.499985 + 20 +9228.349356 + 30 +0.0 + 11 +9599.999985 + 21 +9249.999991 + 31 +0.0 + 0 +LINE + 5 +13F8 + 8 +0 + 62 + 0 + 10 +9649.999985 + 20 +9206.698721 + 30 +0.0 + 11 +9637.499985 + 21 +9228.349356 + 31 +0.0 + 0 +LINE + 5 +13F9 + 8 +0 + 62 + 0 + 10 +9687.499985 + 20 +9185.048086 + 30 +0.0 + 11 +9674.999985 + 21 +9206.698721 + 31 +0.0 + 0 +LINE + 5 +13FA + 8 +0 + 62 + 0 + 10 +9649.999985 + 20 +9249.999991 + 30 +0.0 + 11 +9649.99998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +13FB + 8 +0 + 62 + 0 + 10 +9721.188001 + 20 +9170.0 + 30 +0.0 + 11 +9712.499985 + 21 +9185.048086 + 31 +0.0 + 0 +LINE + 5 +13FC + 8 +0 + 62 + 0 + 10 +9687.499985 + 20 +9228.349356 + 30 +0.0 + 11 +9674.999985 + 21 +9249.999991 + 31 +0.0 + 0 +LINE + 5 +13FD + 8 +0 + 62 + 0 + 10 +9724.999985 + 20 +9206.698721 + 30 +0.0 + 11 +9712.499985 + 21 +9228.349356 + 31 +0.0 + 0 +LINE + 5 +13FE + 8 +0 + 62 + 0 + 10 +9762.499985 + 20 +9185.048086 + 30 +0.0 + 11 +9749.999985 + 21 +9206.698721 + 31 +0.0 + 0 +LINE + 5 +13FF + 8 +0 + 62 + 0 + 10 +9724.999985 + 20 +9249.999991 + 30 +0.0 + 11 +9724.999979 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1400 + 8 +0 + 62 + 0 + 10 +9796.188001 + 20 +9170.0 + 30 +0.0 + 11 +9787.499984 + 21 +9185.048086 + 31 +0.0 + 0 +LINE + 5 +1401 + 8 +0 + 62 + 0 + 10 +9762.499984 + 20 +9228.349356 + 30 +0.0 + 11 +9749.999984 + 21 +9249.999991 + 31 +0.0 + 0 +LINE + 5 +1402 + 8 +0 + 62 + 0 + 10 +9799.999984 + 20 +9206.698721 + 30 +0.0 + 11 +9787.499984 + 21 +9228.349356 + 31 +0.0 + 0 +LINE + 5 +1403 + 8 +0 + 62 + 0 + 10 +9837.499984 + 20 +9185.048086 + 30 +0.0 + 11 +9824.999984 + 21 +9206.698721 + 31 +0.0 + 0 +LINE + 5 +1404 + 8 +0 + 62 + 0 + 10 +9799.999984 + 20 +9249.999991 + 30 +0.0 + 11 +9799.999979 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1405 + 8 +0 + 62 + 0 + 10 +9871.188 + 20 +9170.0 + 30 +0.0 + 11 +9862.499984 + 21 +9185.048086 + 31 +0.0 + 0 +LINE + 5 +1406 + 8 +0 + 62 + 0 + 10 +9837.499984 + 20 +9228.349356 + 30 +0.0 + 11 +9824.999984 + 21 +9249.999991 + 31 +0.0 + 0 +LINE + 5 +1407 + 8 +0 + 62 + 0 + 10 +9874.999984 + 20 +9206.698721 + 30 +0.0 + 11 +9862.499984 + 21 +9228.349356 + 31 +0.0 + 0 +LINE + 5 +1408 + 8 +0 + 62 + 0 + 10 +9874.999984 + 20 +9249.999991 + 30 +0.0 + 11 +9874.999979 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1409 + 8 +0 + 62 + 0 + 10 +9299.999986 + 20 +9206.698738 + 30 +0.0 + 11 +9312.499986 + 21 +9228.349373 + 31 +0.0 + 0 +LINE + 5 +140A + 8 +0 + 62 + 0 + 10 +9262.499986 + 20 +9185.048103 + 30 +0.0 + 11 +9274.999986 + 21 +9206.698738 + 31 +0.0 + 0 +LINE + 5 +140B + 8 +0 + 62 + 0 + 10 +9228.81196 + 20 +9170.0 + 30 +0.0 + 11 +9237.499986 + 21 +9185.048103 + 31 +0.0 + 0 +LINE + 5 +140C + 8 +0 + 62 + 0 + 10 +9262.499986 + 20 +9228.349373 + 30 +0.0 + 11 +9274.999981 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +140D + 8 +0 + 62 + 0 + 10 +9224.999986 + 20 +9206.698738 + 30 +0.0 + 11 +9237.499986 + 21 +9228.349373 + 31 +0.0 + 0 +LINE + 5 +140E + 8 +0 + 62 + 0 + 10 +9187.499986 + 20 +9185.048103 + 30 +0.0 + 11 +9199.999986 + 21 +9206.698738 + 31 +0.0 + 0 +LINE + 5 +140F + 8 +0 + 62 + 0 + 10 +9153.81196 + 20 +9170.0 + 30 +0.0 + 11 +9162.499986 + 21 +9185.048103 + 31 +0.0 + 0 +LINE + 5 +1410 + 8 +0 + 62 + 0 + 10 +9187.499986 + 20 +9228.349373 + 30 +0.0 + 11 +9199.999982 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1411 + 8 +0 + 62 + 0 + 10 +9149.999986 + 20 +9206.698738 + 30 +0.0 + 11 +9162.499986 + 21 +9228.349373 + 31 +0.0 + 0 +LINE + 5 +1412 + 8 +0 + 62 + 0 + 10 +9112.499986 + 20 +9185.048103 + 30 +0.0 + 11 +9124.999986 + 21 +9206.698738 + 31 +0.0 + 0 +LINE + 5 +1413 + 8 +0 + 62 + 0 + 10 +9078.81196 + 20 +9170.0 + 30 +0.0 + 11 +9087.499986 + 21 +9185.048103 + 31 +0.0 + 0 +LINE + 5 +1414 + 8 +0 + 62 + 0 + 10 +9112.499986 + 20 +9228.349373 + 30 +0.0 + 11 +9124.999982 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1415 + 8 +0 + 62 + 0 + 10 +9074.999987 + 20 +9206.698738 + 30 +0.0 + 11 +9087.499987 + 21 +9228.349373 + 31 +0.0 + 0 +LINE + 5 +1416 + 8 +0 + 62 + 0 + 10 +9037.499987 + 20 +9185.048102 + 30 +0.0 + 11 +9049.999987 + 21 +9206.698738 + 31 +0.0 + 0 +LINE + 5 +1417 + 8 +0 + 62 + 0 + 10 +9003.811961 + 20 +9170.0 + 30 +0.0 + 11 +9012.499987 + 21 +9185.048102 + 31 +0.0 + 0 +LINE + 5 +1418 + 8 +0 + 62 + 0 + 10 +9037.499987 + 20 +9228.349373 + 30 +0.0 + 11 +9049.999982 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1419 + 8 +0 + 62 + 0 + 10 +8999.999987 + 20 +9206.698737 + 30 +0.0 + 11 +9012.499987 + 21 +9228.349373 + 31 +0.0 + 0 +LINE + 5 +141A + 8 +0 + 62 + 0 + 10 +8962.499987 + 20 +9185.048102 + 30 +0.0 + 11 +8974.999987 + 21 +9206.698737 + 31 +0.0 + 0 +LINE + 5 +141B + 8 +0 + 62 + 0 + 10 +8928.811961 + 20 +9170.0 + 30 +0.0 + 11 +8937.499987 + 21 +9185.048102 + 31 +0.0 + 0 +LINE + 5 +141C + 8 +0 + 62 + 0 + 10 +8962.499987 + 20 +9228.349372 + 30 +0.0 + 11 +8974.999983 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +141D + 8 +0 + 62 + 0 + 10 +8924.999987 + 20 +9206.698737 + 30 +0.0 + 11 +8937.499987 + 21 +9228.349372 + 31 +0.0 + 0 +LINE + 5 +141E + 8 +0 + 62 + 0 + 10 +8887.499987 + 20 +9185.048102 + 30 +0.0 + 11 +8899.999987 + 21 +9206.698737 + 31 +0.0 + 0 +LINE + 5 +141F + 8 +0 + 62 + 0 + 10 +8853.811961 + 20 +9170.0 + 30 +0.0 + 11 +8862.499987 + 21 +9185.048102 + 31 +0.0 + 0 +LINE + 5 +1420 + 8 +0 + 62 + 0 + 10 +8887.499987 + 20 +9228.349372 + 30 +0.0 + 11 +8899.999983 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1421 + 8 +0 + 62 + 0 + 10 +8849.999987 + 20 +9206.698737 + 30 +0.0 + 11 +8862.499987 + 21 +9228.349372 + 31 +0.0 + 0 +LINE + 5 +1422 + 8 +0 + 62 + 0 + 10 +8812.499987 + 20 +9185.048102 + 30 +0.0 + 11 +8824.999987 + 21 +9206.698737 + 31 +0.0 + 0 +LINE + 5 +1423 + 8 +0 + 62 + 0 + 10 +8778.811962 + 20 +9170.0 + 30 +0.0 + 11 +8787.499987 + 21 +9185.048102 + 31 +0.0 + 0 +LINE + 5 +1424 + 8 +0 + 62 + 0 + 10 +8812.499987 + 20 +9228.349372 + 30 +0.0 + 11 +8824.999983 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1425 + 8 +0 + 62 + 0 + 10 +8774.999988 + 20 +9206.698737 + 30 +0.0 + 11 +8787.499988 + 21 +9228.349372 + 31 +0.0 + 0 +LINE + 5 +1426 + 8 +0 + 62 + 0 + 10 +8738.75 + 20 +9187.213187 + 30 +0.0 + 11 +8749.999988 + 21 +9206.698737 + 31 +0.0 + 0 +LINE + 5 +1427 + 8 +0 + 62 + 0 + 10 +8738.75 + 20 +9230.514457 + 30 +0.0 + 11 +8749.999984 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1428 + 8 +0 + 62 + 0 + 10 +9303.811959 + 20 +9170.0 + 30 +0.0 + 11 +9312.499986 + 21 +9185.048103 + 31 +0.0 + 0 +LINE + 5 +1429 + 8 +0 + 62 + 0 + 10 +9337.499986 + 20 +9228.349373 + 30 +0.0 + 11 +9349.999981 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +142A + 8 +0 + 62 + 0 + 10 +9337.499986 + 20 +9185.048103 + 30 +0.0 + 11 +9349.999986 + 21 +9206.698738 + 31 +0.0 + 0 +LINE + 5 +142B + 8 +0 + 62 + 0 + 10 +9374.999986 + 20 +9206.698738 + 30 +0.0 + 11 +9387.499986 + 21 +9228.349373 + 31 +0.0 + 0 +LINE + 5 +142C + 8 +0 + 62 + 0 + 10 +9378.811959 + 20 +9170.0 + 30 +0.0 + 11 +9387.499985 + 21 +9185.048103 + 31 +0.0 + 0 +LINE + 5 +142D + 8 +0 + 62 + 0 + 10 +9412.499985 + 20 +9228.349373 + 30 +0.0 + 11 +9424.999981 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +142E + 8 +0 + 62 + 0 + 10 +9412.499985 + 20 +9185.048103 + 30 +0.0 + 11 +9424.999985 + 21 +9206.698738 + 31 +0.0 + 0 +LINE + 5 +142F + 8 +0 + 62 + 0 + 10 +9449.999985 + 20 +9206.698738 + 30 +0.0 + 11 +9462.499985 + 21 +9228.349373 + 31 +0.0 + 0 +LINE + 5 +1430 + 8 +0 + 62 + 0 + 10 +9453.811959 + 20 +9170.0 + 30 +0.0 + 11 +9462.499985 + 21 +9185.048103 + 31 +0.0 + 0 +LINE + 5 +1431 + 8 +0 + 62 + 0 + 10 +9487.499985 + 20 +9228.349373 + 30 +0.0 + 11 +9499.99998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1432 + 8 +0 + 62 + 0 + 10 +9487.499985 + 20 +9185.048103 + 30 +0.0 + 11 +9499.999985 + 21 +9206.698738 + 31 +0.0 + 0 +LINE + 5 +1433 + 8 +0 + 62 + 0 + 10 +9524.999985 + 20 +9206.698738 + 30 +0.0 + 11 +9537.499985 + 21 +9228.349374 + 31 +0.0 + 0 +LINE + 5 +1434 + 8 +0 + 62 + 0 + 10 +9528.811958 + 20 +9170.0 + 30 +0.0 + 11 +9537.499985 + 21 +9185.048103 + 31 +0.0 + 0 +LINE + 5 +1435 + 8 +0 + 62 + 0 + 10 +9562.499985 + 20 +9228.349374 + 30 +0.0 + 11 +9574.99998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1436 + 8 +0 + 62 + 0 + 10 +9562.499985 + 20 +9185.048103 + 30 +0.0 + 11 +9574.999985 + 21 +9206.698739 + 31 +0.0 + 0 +LINE + 5 +1437 + 8 +0 + 62 + 0 + 10 +9599.999985 + 20 +9206.698739 + 30 +0.0 + 11 +9612.499985 + 21 +9228.349374 + 31 +0.0 + 0 +LINE + 5 +1438 + 8 +0 + 62 + 0 + 10 +9603.811958 + 20 +9170.0 + 30 +0.0 + 11 +9612.499985 + 21 +9185.048104 + 31 +0.0 + 0 +LINE + 5 +1439 + 8 +0 + 62 + 0 + 10 +9637.499985 + 20 +9228.349374 + 30 +0.0 + 11 +9649.99998 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +143A + 8 +0 + 62 + 0 + 10 +9637.499985 + 20 +9185.048104 + 30 +0.0 + 11 +9649.999985 + 21 +9206.698739 + 31 +0.0 + 0 +LINE + 5 +143B + 8 +0 + 62 + 0 + 10 +9674.999985 + 20 +9206.698739 + 30 +0.0 + 11 +9687.499985 + 21 +9228.349374 + 31 +0.0 + 0 +LINE + 5 +143C + 8 +0 + 62 + 0 + 10 +9678.811958 + 20 +9170.0 + 30 +0.0 + 11 +9687.499985 + 21 +9185.048104 + 31 +0.0 + 0 +LINE + 5 +143D + 8 +0 + 62 + 0 + 10 +9712.499985 + 20 +9228.349374 + 30 +0.0 + 11 +9724.999979 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +143E + 8 +0 + 62 + 0 + 10 +9712.499984 + 20 +9185.048104 + 30 +0.0 + 11 +9724.999984 + 21 +9206.698739 + 31 +0.0 + 0 +LINE + 5 +143F + 8 +0 + 62 + 0 + 10 +9749.999984 + 20 +9206.698739 + 30 +0.0 + 11 +9762.499984 + 21 +9228.349374 + 31 +0.0 + 0 +LINE + 5 +1440 + 8 +0 + 62 + 0 + 10 +9753.811957 + 20 +9170.0 + 30 +0.0 + 11 +9762.499984 + 21 +9185.048104 + 31 +0.0 + 0 +LINE + 5 +1441 + 8 +0 + 62 + 0 + 10 +9787.499984 + 20 +9228.349374 + 30 +0.0 + 11 +9799.999979 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1442 + 8 +0 + 62 + 0 + 10 +9787.499984 + 20 +9185.048104 + 30 +0.0 + 11 +9799.999984 + 21 +9206.698739 + 31 +0.0 + 0 +LINE + 5 +1443 + 8 +0 + 62 + 0 + 10 +9824.999984 + 20 +9206.698739 + 30 +0.0 + 11 +9837.499984 + 21 +9228.349374 + 31 +0.0 + 0 +LINE + 5 +1444 + 8 +0 + 62 + 0 + 10 +9828.811957 + 20 +9170.0 + 30 +0.0 + 11 +9837.499984 + 21 +9185.048104 + 31 +0.0 + 0 +LINE + 5 +1445 + 8 +0 + 62 + 0 + 10 +9862.499984 + 20 +9228.349374 + 30 +0.0 + 11 +9874.999979 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1446 + 8 +0 + 62 + 0 + 10 +9862.499984 + 20 +9185.048104 + 30 +0.0 + 11 +9874.999984 + 21 +9206.698739 + 31 +0.0 + 0 +ENDBLK + 5 +1447 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X46 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X46 + 1 + + 0 +LINE + 5 +1449 + 8 +0 + 62 + 0 + 10 +11262.5 + 20 +9228.349365 + 30 +0.0 + 11 +11287.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +144A + 8 +0 + 62 + 0 + 10 +11337.5 + 20 +9228.349365 + 30 +0.0 + 11 +11362.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +144B + 8 +0 + 62 + 0 + 10 +11412.5 + 20 +9228.349365 + 30 +0.0 + 11 +11437.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +144C + 8 +0 + 62 + 0 + 10 +11487.5 + 20 +9228.349365 + 30 +0.0 + 11 +11512.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +144D + 8 +0 + 62 + 0 + 10 +11562.5 + 20 +9228.349365 + 30 +0.0 + 11 +11587.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +144E + 8 +0 + 62 + 0 + 10 +11637.5 + 20 +9228.349365 + 30 +0.0 + 11 +11662.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +144F + 8 +0 + 62 + 0 + 10 +11712.5 + 20 +9228.349365 + 30 +0.0 + 11 +11737.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1450 + 8 +0 + 62 + 0 + 10 +11787.5 + 20 +9228.349365 + 30 +0.0 + 11 +11812.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1451 + 8 +0 + 62 + 0 + 10 +11862.5 + 20 +9228.349365 + 30 +0.0 + 11 +11887.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1452 + 8 +0 + 62 + 0 + 10 +11937.5 + 20 +9228.349365 + 30 +0.0 + 11 +11962.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1453 + 8 +0 + 62 + 0 + 10 +12012.5 + 20 +9228.349365 + 30 +0.0 + 11 +12037.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1454 + 8 +0 + 62 + 0 + 10 +12087.5 + 20 +9228.349365 + 30 +0.0 + 11 +12112.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1455 + 8 +0 + 62 + 0 + 10 +12162.5 + 20 +9228.349365 + 30 +0.0 + 11 +12187.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1456 + 8 +0 + 62 + 0 + 10 +12237.5 + 20 +9228.349365 + 30 +0.0 + 11 +12262.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1457 + 8 +0 + 62 + 0 + 10 +12312.5 + 20 +9228.349365 + 30 +0.0 + 11 +12337.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1458 + 8 +0 + 62 + 0 + 10 +12387.5 + 20 +9228.349365 + 30 +0.0 + 11 +12412.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1459 + 8 +0 + 62 + 0 + 10 +12462.5 + 20 +9228.349365 + 30 +0.0 + 11 +12487.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +145A + 8 +0 + 62 + 0 + 10 +12537.5 + 20 +9228.349365 + 30 +0.0 + 11 +12562.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +145B + 8 +0 + 62 + 0 + 10 +12612.5 + 20 +9228.349365 + 30 +0.0 + 11 +12637.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +145C + 8 +0 + 62 + 0 + 10 +12687.5 + 20 +9228.349365 + 30 +0.0 + 11 +12712.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +145D + 8 +0 + 62 + 0 + 10 +12762.5 + 20 +9228.349365 + 30 +0.0 + 11 +12787.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +145E + 8 +0 + 62 + 0 + 10 +12837.5 + 20 +9228.349365 + 30 +0.0 + 11 +12862.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +145F + 8 +0 + 62 + 0 + 10 +12912.5 + 20 +9228.349365 + 30 +0.0 + 11 +12937.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1460 + 8 +0 + 62 + 0 + 10 +12987.5 + 20 +9228.349365 + 30 +0.0 + 11 +13012.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1461 + 8 +0 + 62 + 0 + 10 +13062.5 + 20 +9228.349365 + 30 +0.0 + 11 +13087.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1462 + 8 +0 + 62 + 0 + 10 +13137.5 + 20 +9228.349365 + 30 +0.0 + 11 +13162.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1463 + 8 +0 + 62 + 0 + 10 +13212.5 + 20 +9228.349365 + 30 +0.0 + 11 +13237.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1464 + 8 +0 + 62 + 0 + 10 +13287.5 + 20 +9228.349365 + 30 +0.0 + 11 +13312.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1465 + 8 +0 + 62 + 0 + 10 +13362.5 + 20 +9228.349365 + 30 +0.0 + 11 +13387.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1466 + 8 +0 + 62 + 0 + 10 +13437.5 + 20 +9228.349365 + 30 +0.0 + 11 +13462.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1467 + 8 +0 + 62 + 0 + 10 +13512.5 + 20 +9228.349365 + 30 +0.0 + 11 +13537.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1468 + 8 +0 + 62 + 0 + 10 +13587.5 + 20 +9228.349365 + 30 +0.0 + 11 +13612.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1469 + 8 +0 + 62 + 0 + 10 +13662.5 + 20 +9228.349365 + 30 +0.0 + 11 +13687.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +146A + 8 +0 + 62 + 0 + 10 +13737.5 + 20 +9228.349365 + 30 +0.0 + 11 +13762.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +146B + 8 +0 + 62 + 0 + 10 +13812.5 + 20 +9228.349365 + 30 +0.0 + 11 +13837.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +146C + 8 +0 + 62 + 0 + 10 +13887.5 + 20 +9228.349365 + 30 +0.0 + 11 +13912.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +146D + 8 +0 + 62 + 0 + 10 +13962.5 + 20 +9228.349365 + 30 +0.0 + 11 +13987.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +146E + 8 +0 + 62 + 0 + 10 +14037.5 + 20 +9228.349365 + 30 +0.0 + 11 +14062.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +146F + 8 +0 + 62 + 0 + 10 +14112.5 + 20 +9228.349365 + 30 +0.0 + 11 +14137.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1470 + 8 +0 + 62 + 0 + 10 +14187.5 + 20 +9228.349365 + 30 +0.0 + 11 +14212.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1471 + 8 +0 + 62 + 0 + 10 +14262.5 + 20 +9228.349365 + 30 +0.0 + 11 +14287.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1472 + 8 +0 + 62 + 0 + 10 +14337.5 + 20 +9228.349365 + 30 +0.0 + 11 +14362.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1473 + 8 +0 + 62 + 0 + 10 +14412.5 + 20 +9228.349365 + 30 +0.0 + 11 +14437.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1474 + 8 +0 + 62 + 0 + 10 +14487.5 + 20 +9228.349365 + 30 +0.0 + 11 +14512.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1475 + 8 +0 + 62 + 0 + 10 +14562.5 + 20 +9228.349365 + 30 +0.0 + 11 +14587.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1476 + 8 +0 + 62 + 0 + 10 +14637.5 + 20 +9228.349365 + 30 +0.0 + 11 +14662.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1477 + 8 +0 + 62 + 0 + 10 +14712.5 + 20 +9228.349365 + 30 +0.0 + 11 +14737.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1478 + 8 +0 + 62 + 0 + 10 +14787.5 + 20 +9228.349365 + 30 +0.0 + 11 +14812.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1479 + 8 +0 + 62 + 0 + 10 +14862.5 + 20 +9228.349365 + 30 +0.0 + 11 +14887.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +147A + 8 +0 + 62 + 0 + 10 +14937.5 + 20 +9228.349365 + 30 +0.0 + 11 +14962.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +147B + 8 +0 + 62 + 0 + 10 +15012.5 + 20 +9228.349365 + 30 +0.0 + 11 +15037.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +147C + 8 +0 + 62 + 0 + 10 +15087.5 + 20 +9228.349365 + 30 +0.0 + 11 +15112.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +147D + 8 +0 + 62 + 0 + 10 +15162.5 + 20 +9228.349365 + 30 +0.0 + 11 +15187.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +147E + 8 +0 + 62 + 0 + 10 +15237.5 + 20 +9228.349365 + 30 +0.0 + 11 +15262.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +147F + 8 +0 + 62 + 0 + 10 +15312.5 + 20 +9228.349365 + 30 +0.0 + 11 +15337.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1480 + 8 +0 + 62 + 0 + 10 +15387.5 + 20 +9228.349365 + 30 +0.0 + 11 +15412.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1481 + 8 +0 + 62 + 0 + 10 +15462.5 + 20 +9228.349365 + 30 +0.0 + 11 +15487.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1482 + 8 +0 + 62 + 0 + 10 +15537.5 + 20 +9228.349365 + 30 +0.0 + 11 +15562.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1483 + 8 +0 + 62 + 0 + 10 +15612.5 + 20 +9228.349365 + 30 +0.0 + 11 +15637.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1484 + 8 +0 + 62 + 0 + 10 +15687.5 + 20 +9228.349365 + 30 +0.0 + 11 +15712.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1485 + 8 +0 + 62 + 0 + 10 +15762.5 + 20 +9228.349365 + 30 +0.0 + 11 +15787.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1486 + 8 +0 + 62 + 0 + 10 +15837.5 + 20 +9228.349365 + 30 +0.0 + 11 +15862.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1487 + 8 +0 + 62 + 0 + 10 +15912.5 + 20 +9228.349365 + 30 +0.0 + 11 +15937.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1488 + 8 +0 + 62 + 0 + 10 +15987.5 + 20 +9228.349365 + 30 +0.0 + 11 +16012.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1489 + 8 +0 + 62 + 0 + 10 +16062.5 + 20 +9228.349365 + 30 +0.0 + 11 +16087.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +148A + 8 +0 + 62 + 0 + 10 +11238.75 + 20 +9206.69873 + 30 +0.0 + 11 +11250.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +148B + 8 +0 + 62 + 0 + 10 +11300.0 + 20 +9206.69873 + 30 +0.0 + 11 +11325.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +148C + 8 +0 + 62 + 0 + 10 +11375.0 + 20 +9206.69873 + 30 +0.0 + 11 +11400.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +148D + 8 +0 + 62 + 0 + 10 +11450.0 + 20 +9206.69873 + 30 +0.0 + 11 +11475.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +148E + 8 +0 + 62 + 0 + 10 +11525.0 + 20 +9206.69873 + 30 +0.0 + 11 +11550.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +148F + 8 +0 + 62 + 0 + 10 +11600.0 + 20 +9206.69873 + 30 +0.0 + 11 +11625.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1490 + 8 +0 + 62 + 0 + 10 +11675.0 + 20 +9206.69873 + 30 +0.0 + 11 +11700.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1491 + 8 +0 + 62 + 0 + 10 +11750.0 + 20 +9206.69873 + 30 +0.0 + 11 +11775.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1492 + 8 +0 + 62 + 0 + 10 +11825.0 + 20 +9206.69873 + 30 +0.0 + 11 +11850.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1493 + 8 +0 + 62 + 0 + 10 +11900.0 + 20 +9206.69873 + 30 +0.0 + 11 +11925.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1494 + 8 +0 + 62 + 0 + 10 +11975.0 + 20 +9206.69873 + 30 +0.0 + 11 +12000.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1495 + 8 +0 + 62 + 0 + 10 +12050.0 + 20 +9206.69873 + 30 +0.0 + 11 +12075.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1496 + 8 +0 + 62 + 0 + 10 +12125.0 + 20 +9206.69873 + 30 +0.0 + 11 +12150.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1497 + 8 +0 + 62 + 0 + 10 +12200.0 + 20 +9206.69873 + 30 +0.0 + 11 +12225.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1498 + 8 +0 + 62 + 0 + 10 +12275.0 + 20 +9206.69873 + 30 +0.0 + 11 +12300.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1499 + 8 +0 + 62 + 0 + 10 +12350.0 + 20 +9206.69873 + 30 +0.0 + 11 +12375.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +149A + 8 +0 + 62 + 0 + 10 +12425.0 + 20 +9206.69873 + 30 +0.0 + 11 +12450.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +149B + 8 +0 + 62 + 0 + 10 +12500.0 + 20 +9206.69873 + 30 +0.0 + 11 +12525.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +149C + 8 +0 + 62 + 0 + 10 +12575.0 + 20 +9206.69873 + 30 +0.0 + 11 +12600.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +149D + 8 +0 + 62 + 0 + 10 +12650.0 + 20 +9206.69873 + 30 +0.0 + 11 +12675.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +149E + 8 +0 + 62 + 0 + 10 +12725.0 + 20 +9206.69873 + 30 +0.0 + 11 +12750.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +149F + 8 +0 + 62 + 0 + 10 +12800.0 + 20 +9206.69873 + 30 +0.0 + 11 +12825.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A0 + 8 +0 + 62 + 0 + 10 +12875.0 + 20 +9206.69873 + 30 +0.0 + 11 +12900.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A1 + 8 +0 + 62 + 0 + 10 +12950.0 + 20 +9206.69873 + 30 +0.0 + 11 +12975.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A2 + 8 +0 + 62 + 0 + 10 +13025.0 + 20 +9206.69873 + 30 +0.0 + 11 +13050.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A3 + 8 +0 + 62 + 0 + 10 +13100.0 + 20 +9206.69873 + 30 +0.0 + 11 +13125.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A4 + 8 +0 + 62 + 0 + 10 +13175.0 + 20 +9206.69873 + 30 +0.0 + 11 +13200.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A5 + 8 +0 + 62 + 0 + 10 +13250.0 + 20 +9206.69873 + 30 +0.0 + 11 +13275.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A6 + 8 +0 + 62 + 0 + 10 +13325.0 + 20 +9206.69873 + 30 +0.0 + 11 +13350.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A7 + 8 +0 + 62 + 0 + 10 +13400.0 + 20 +9206.69873 + 30 +0.0 + 11 +13425.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A8 + 8 +0 + 62 + 0 + 10 +13475.0 + 20 +9206.69873 + 30 +0.0 + 11 +13500.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14A9 + 8 +0 + 62 + 0 + 10 +13550.0 + 20 +9206.69873 + 30 +0.0 + 11 +13575.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14AA + 8 +0 + 62 + 0 + 10 +13625.0 + 20 +9206.69873 + 30 +0.0 + 11 +13650.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14AB + 8 +0 + 62 + 0 + 10 +13700.0 + 20 +9206.69873 + 30 +0.0 + 11 +13725.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14AC + 8 +0 + 62 + 0 + 10 +13775.0 + 20 +9206.69873 + 30 +0.0 + 11 +13800.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14AD + 8 +0 + 62 + 0 + 10 +13850.0 + 20 +9206.69873 + 30 +0.0 + 11 +13875.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14AE + 8 +0 + 62 + 0 + 10 +13925.0 + 20 +9206.69873 + 30 +0.0 + 11 +13950.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14AF + 8 +0 + 62 + 0 + 10 +14000.0 + 20 +9206.69873 + 30 +0.0 + 11 +14025.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B0 + 8 +0 + 62 + 0 + 10 +14075.0 + 20 +9206.69873 + 30 +0.0 + 11 +14100.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B1 + 8 +0 + 62 + 0 + 10 +14150.0 + 20 +9206.69873 + 30 +0.0 + 11 +14175.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B2 + 8 +0 + 62 + 0 + 10 +14225.0 + 20 +9206.69873 + 30 +0.0 + 11 +14250.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B3 + 8 +0 + 62 + 0 + 10 +14300.0 + 20 +9206.69873 + 30 +0.0 + 11 +14325.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B4 + 8 +0 + 62 + 0 + 10 +14375.0 + 20 +9206.69873 + 30 +0.0 + 11 +14400.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B5 + 8 +0 + 62 + 0 + 10 +14450.0 + 20 +9206.69873 + 30 +0.0 + 11 +14475.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B6 + 8 +0 + 62 + 0 + 10 +14525.0 + 20 +9206.69873 + 30 +0.0 + 11 +14550.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B7 + 8 +0 + 62 + 0 + 10 +14600.0 + 20 +9206.69873 + 30 +0.0 + 11 +14625.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B8 + 8 +0 + 62 + 0 + 10 +14675.0 + 20 +9206.69873 + 30 +0.0 + 11 +14700.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14B9 + 8 +0 + 62 + 0 + 10 +14750.0 + 20 +9206.69873 + 30 +0.0 + 11 +14775.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14BA + 8 +0 + 62 + 0 + 10 +14825.0 + 20 +9206.69873 + 30 +0.0 + 11 +14850.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14BB + 8 +0 + 62 + 0 + 10 +14900.0 + 20 +9206.69873 + 30 +0.0 + 11 +14925.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14BC + 8 +0 + 62 + 0 + 10 +14975.0 + 20 +9206.69873 + 30 +0.0 + 11 +15000.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14BD + 8 +0 + 62 + 0 + 10 +15050.0 + 20 +9206.69873 + 30 +0.0 + 11 +15075.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14BE + 8 +0 + 62 + 0 + 10 +15125.0 + 20 +9206.69873 + 30 +0.0 + 11 +15150.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14BF + 8 +0 + 62 + 0 + 10 +15200.0 + 20 +9206.69873 + 30 +0.0 + 11 +15225.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C0 + 8 +0 + 62 + 0 + 10 +15275.0 + 20 +9206.69873 + 30 +0.0 + 11 +15300.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C1 + 8 +0 + 62 + 0 + 10 +15350.0 + 20 +9206.69873 + 30 +0.0 + 11 +15375.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C2 + 8 +0 + 62 + 0 + 10 +15425.0 + 20 +9206.69873 + 30 +0.0 + 11 +15450.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C3 + 8 +0 + 62 + 0 + 10 +15500.0 + 20 +9206.69873 + 30 +0.0 + 11 +15525.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C4 + 8 +0 + 62 + 0 + 10 +15575.0 + 20 +9206.69873 + 30 +0.0 + 11 +15600.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C5 + 8 +0 + 62 + 0 + 10 +15650.0 + 20 +9206.69873 + 30 +0.0 + 11 +15675.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C6 + 8 +0 + 62 + 0 + 10 +15725.0 + 20 +9206.69873 + 30 +0.0 + 11 +15750.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C7 + 8 +0 + 62 + 0 + 10 +15800.0 + 20 +9206.69873 + 30 +0.0 + 11 +15825.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C8 + 8 +0 + 62 + 0 + 10 +15875.0 + 20 +9206.69873 + 30 +0.0 + 11 +15900.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14C9 + 8 +0 + 62 + 0 + 10 +15950.0 + 20 +9206.69873 + 30 +0.0 + 11 +15975.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14CA + 8 +0 + 62 + 0 + 10 +16025.0 + 20 +9206.69873 + 30 +0.0 + 11 +16050.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14CB + 8 +0 + 62 + 0 + 10 +16100.0 + 20 +9206.69873 + 30 +0.0 + 11 +16125.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +14CC + 8 +0 + 62 + 0 + 10 +11262.5 + 20 +9185.048095 + 30 +0.0 + 11 +11287.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14CD + 8 +0 + 62 + 0 + 10 +11337.5 + 20 +9185.048095 + 30 +0.0 + 11 +11362.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14CE + 8 +0 + 62 + 0 + 10 +11412.5 + 20 +9185.048095 + 30 +0.0 + 11 +11437.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14CF + 8 +0 + 62 + 0 + 10 +11487.5 + 20 +9185.048095 + 30 +0.0 + 11 +11512.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D0 + 8 +0 + 62 + 0 + 10 +11562.5 + 20 +9185.048095 + 30 +0.0 + 11 +11587.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D1 + 8 +0 + 62 + 0 + 10 +11637.5 + 20 +9185.048095 + 30 +0.0 + 11 +11662.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D2 + 8 +0 + 62 + 0 + 10 +11712.5 + 20 +9185.048095 + 30 +0.0 + 11 +11737.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D3 + 8 +0 + 62 + 0 + 10 +11787.5 + 20 +9185.048095 + 30 +0.0 + 11 +11812.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D4 + 8 +0 + 62 + 0 + 10 +11862.5 + 20 +9185.048095 + 30 +0.0 + 11 +11887.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D5 + 8 +0 + 62 + 0 + 10 +11937.5 + 20 +9185.048095 + 30 +0.0 + 11 +11962.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D6 + 8 +0 + 62 + 0 + 10 +12012.5 + 20 +9185.048095 + 30 +0.0 + 11 +12037.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D7 + 8 +0 + 62 + 0 + 10 +12087.5 + 20 +9185.048095 + 30 +0.0 + 11 +12112.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D8 + 8 +0 + 62 + 0 + 10 +12162.5 + 20 +9185.048095 + 30 +0.0 + 11 +12187.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14D9 + 8 +0 + 62 + 0 + 10 +12237.5 + 20 +9185.048095 + 30 +0.0 + 11 +12262.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14DA + 8 +0 + 62 + 0 + 10 +12312.5 + 20 +9185.048095 + 30 +0.0 + 11 +12337.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14DB + 8 +0 + 62 + 0 + 10 +12387.5 + 20 +9185.048095 + 30 +0.0 + 11 +12412.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14DC + 8 +0 + 62 + 0 + 10 +12462.5 + 20 +9185.048095 + 30 +0.0 + 11 +12487.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14DD + 8 +0 + 62 + 0 + 10 +12537.5 + 20 +9185.048095 + 30 +0.0 + 11 +12562.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14DE + 8 +0 + 62 + 0 + 10 +12612.5 + 20 +9185.048095 + 30 +0.0 + 11 +12637.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14DF + 8 +0 + 62 + 0 + 10 +12687.5 + 20 +9185.048095 + 30 +0.0 + 11 +12712.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E0 + 8 +0 + 62 + 0 + 10 +12762.5 + 20 +9185.048095 + 30 +0.0 + 11 +12787.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E1 + 8 +0 + 62 + 0 + 10 +12837.5 + 20 +9185.048095 + 30 +0.0 + 11 +12862.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E2 + 8 +0 + 62 + 0 + 10 +12912.5 + 20 +9185.048095 + 30 +0.0 + 11 +12937.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E3 + 8 +0 + 62 + 0 + 10 +12987.5 + 20 +9185.048095 + 30 +0.0 + 11 +13012.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E4 + 8 +0 + 62 + 0 + 10 +13062.5 + 20 +9185.048095 + 30 +0.0 + 11 +13087.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E5 + 8 +0 + 62 + 0 + 10 +13137.5 + 20 +9185.048095 + 30 +0.0 + 11 +13162.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E6 + 8 +0 + 62 + 0 + 10 +13212.5 + 20 +9185.048095 + 30 +0.0 + 11 +13237.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E7 + 8 +0 + 62 + 0 + 10 +13287.5 + 20 +9185.048095 + 30 +0.0 + 11 +13312.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E8 + 8 +0 + 62 + 0 + 10 +13362.5 + 20 +9185.048095 + 30 +0.0 + 11 +13387.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14E9 + 8 +0 + 62 + 0 + 10 +13437.5 + 20 +9185.048095 + 30 +0.0 + 11 +13462.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14EA + 8 +0 + 62 + 0 + 10 +13512.5 + 20 +9185.048095 + 30 +0.0 + 11 +13537.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14EB + 8 +0 + 62 + 0 + 10 +13587.5 + 20 +9185.048095 + 30 +0.0 + 11 +13612.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14EC + 8 +0 + 62 + 0 + 10 +13662.5 + 20 +9185.048095 + 30 +0.0 + 11 +13687.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14ED + 8 +0 + 62 + 0 + 10 +13737.5 + 20 +9185.048095 + 30 +0.0 + 11 +13762.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14EE + 8 +0 + 62 + 0 + 10 +13812.5 + 20 +9185.048095 + 30 +0.0 + 11 +13837.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14EF + 8 +0 + 62 + 0 + 10 +13887.5 + 20 +9185.048095 + 30 +0.0 + 11 +13912.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F0 + 8 +0 + 62 + 0 + 10 +13962.5 + 20 +9185.048095 + 30 +0.0 + 11 +13987.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F1 + 8 +0 + 62 + 0 + 10 +14037.5 + 20 +9185.048095 + 30 +0.0 + 11 +14062.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F2 + 8 +0 + 62 + 0 + 10 +14112.5 + 20 +9185.048095 + 30 +0.0 + 11 +14137.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F3 + 8 +0 + 62 + 0 + 10 +14187.5 + 20 +9185.048095 + 30 +0.0 + 11 +14212.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F4 + 8 +0 + 62 + 0 + 10 +14262.5 + 20 +9185.048095 + 30 +0.0 + 11 +14287.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F5 + 8 +0 + 62 + 0 + 10 +14337.5 + 20 +9185.048095 + 30 +0.0 + 11 +14362.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F6 + 8 +0 + 62 + 0 + 10 +14412.5 + 20 +9185.048095 + 30 +0.0 + 11 +14437.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F7 + 8 +0 + 62 + 0 + 10 +14487.5 + 20 +9185.048095 + 30 +0.0 + 11 +14512.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F8 + 8 +0 + 62 + 0 + 10 +14562.5 + 20 +9185.048095 + 30 +0.0 + 11 +14587.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14F9 + 8 +0 + 62 + 0 + 10 +14637.5 + 20 +9185.048095 + 30 +0.0 + 11 +14662.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14FA + 8 +0 + 62 + 0 + 10 +14712.5 + 20 +9185.048095 + 30 +0.0 + 11 +14737.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14FB + 8 +0 + 62 + 0 + 10 +14787.5 + 20 +9185.048095 + 30 +0.0 + 11 +14812.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14FC + 8 +0 + 62 + 0 + 10 +14862.5 + 20 +9185.048095 + 30 +0.0 + 11 +14887.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14FD + 8 +0 + 62 + 0 + 10 +14937.5 + 20 +9185.048095 + 30 +0.0 + 11 +14962.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14FE + 8 +0 + 62 + 0 + 10 +15012.5 + 20 +9185.048095 + 30 +0.0 + 11 +15037.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +14FF + 8 +0 + 62 + 0 + 10 +15087.5 + 20 +9185.048095 + 30 +0.0 + 11 +15112.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1500 + 8 +0 + 62 + 0 + 10 +15162.5 + 20 +9185.048095 + 30 +0.0 + 11 +15187.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1501 + 8 +0 + 62 + 0 + 10 +15237.5 + 20 +9185.048095 + 30 +0.0 + 11 +15262.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1502 + 8 +0 + 62 + 0 + 10 +15312.5 + 20 +9185.048095 + 30 +0.0 + 11 +15337.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1503 + 8 +0 + 62 + 0 + 10 +15387.5 + 20 +9185.048095 + 30 +0.0 + 11 +15412.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1504 + 8 +0 + 62 + 0 + 10 +15462.5 + 20 +9185.048095 + 30 +0.0 + 11 +15487.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1505 + 8 +0 + 62 + 0 + 10 +15537.5 + 20 +9185.048095 + 30 +0.0 + 11 +15562.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1506 + 8 +0 + 62 + 0 + 10 +15612.5 + 20 +9185.048095 + 30 +0.0 + 11 +15637.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1507 + 8 +0 + 62 + 0 + 10 +15687.5 + 20 +9185.048095 + 30 +0.0 + 11 +15712.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1508 + 8 +0 + 62 + 0 + 10 +15762.5 + 20 +9185.048095 + 30 +0.0 + 11 +15787.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1509 + 8 +0 + 62 + 0 + 10 +15837.5 + 20 +9185.048095 + 30 +0.0 + 11 +15862.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +150A + 8 +0 + 62 + 0 + 10 +15912.5 + 20 +9185.048095 + 30 +0.0 + 11 +15937.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +150B + 8 +0 + 62 + 0 + 10 +15987.5 + 20 +9185.048095 + 30 +0.0 + 11 +16012.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +150C + 8 +0 + 62 + 0 + 10 +16062.5 + 20 +9185.048095 + 30 +0.0 + 11 +16087.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +150D + 8 +0 + 62 + 0 + 10 +13696.187984 + 20 +9170.0 + 30 +0.0 + 11 +13687.499972 + 21 +9185.048078 + 31 +0.0 + 0 +LINE + 5 +150E + 8 +0 + 62 + 0 + 10 +13662.499972 + 20 +9228.349349 + 30 +0.0 + 11 +13649.999972 + 21 +9249.999984 + 31 +0.0 + 0 +LINE + 5 +150F + 8 +0 + 62 + 0 + 10 +13662.499972 + 20 +9185.048078 + 30 +0.0 + 11 +13649.999972 + 21 +9206.698713 + 31 +0.0 + 0 +LINE + 5 +1510 + 8 +0 + 62 + 0 + 10 +13624.999972 + 20 +9249.999984 + 30 +0.0 + 11 +13624.999962 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1511 + 8 +0 + 62 + 0 + 10 +13624.999972 + 20 +9206.698714 + 30 +0.0 + 11 +13612.499972 + 21 +9228.349349 + 31 +0.0 + 0 +LINE + 5 +1512 + 8 +0 + 62 + 0 + 10 +13621.187984 + 20 +9170.0 + 30 +0.0 + 11 +13612.499972 + 21 +9185.048078 + 31 +0.0 + 0 +LINE + 5 +1513 + 8 +0 + 62 + 0 + 10 +13587.499972 + 20 +9228.349349 + 30 +0.0 + 11 +13574.999972 + 21 +9249.999984 + 31 +0.0 + 0 +LINE + 5 +1514 + 8 +0 + 62 + 0 + 10 +13587.499972 + 20 +9185.048079 + 30 +0.0 + 11 +13574.999972 + 21 +9206.698714 + 31 +0.0 + 0 +LINE + 5 +1515 + 8 +0 + 62 + 0 + 10 +13549.999972 + 20 +9249.999984 + 30 +0.0 + 11 +13549.999963 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1516 + 8 +0 + 62 + 0 + 10 +13549.999972 + 20 +9206.698714 + 30 +0.0 + 11 +13537.499972 + 21 +9228.349349 + 31 +0.0 + 0 +LINE + 5 +1517 + 8 +0 + 62 + 0 + 10 +13546.187984 + 20 +9170.0 + 30 +0.0 + 11 +13537.499972 + 21 +9185.048079 + 31 +0.0 + 0 +LINE + 5 +1518 + 8 +0 + 62 + 0 + 10 +13512.499972 + 20 +9228.349349 + 30 +0.0 + 11 +13499.999972 + 21 +9249.999984 + 31 +0.0 + 0 +LINE + 5 +1519 + 8 +0 + 62 + 0 + 10 +13512.499972 + 20 +9185.048079 + 30 +0.0 + 11 +13499.999972 + 21 +9206.698714 + 31 +0.0 + 0 +LINE + 5 +151A + 8 +0 + 62 + 0 + 10 +13474.999972 + 20 +9249.999984 + 30 +0.0 + 11 +13474.999963 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +151B + 8 +0 + 62 + 0 + 10 +13474.999972 + 20 +9206.698714 + 30 +0.0 + 11 +13462.499972 + 21 +9228.349349 + 31 +0.0 + 0 +LINE + 5 +151C + 8 +0 + 62 + 0 + 10 +13471.187985 + 20 +9170.0 + 30 +0.0 + 11 +13462.499972 + 21 +9185.048079 + 31 +0.0 + 0 +LINE + 5 +151D + 8 +0 + 62 + 0 + 10 +13437.499972 + 20 +9228.349349 + 30 +0.0 + 11 +13424.999972 + 21 +9249.999984 + 31 +0.0 + 0 +LINE + 5 +151E + 8 +0 + 62 + 0 + 10 +13437.499972 + 20 +9185.048079 + 30 +0.0 + 11 +13424.999972 + 21 +9206.698714 + 31 +0.0 + 0 +LINE + 5 +151F + 8 +0 + 62 + 0 + 10 +13399.999972 + 20 +9249.999984 + 30 +0.0 + 11 +13399.999963 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1520 + 8 +0 + 62 + 0 + 10 +13399.999973 + 20 +9206.698714 + 30 +0.0 + 11 +13387.499973 + 21 +9228.349349 + 31 +0.0 + 0 +LINE + 5 +1521 + 8 +0 + 62 + 0 + 10 +13396.187985 + 20 +9170.0 + 30 +0.0 + 11 +13387.499973 + 21 +9185.048079 + 31 +0.0 + 0 +LINE + 5 +1522 + 8 +0 + 62 + 0 + 10 +13362.499973 + 20 +9228.349349 + 30 +0.0 + 11 +13349.999973 + 21 +9249.999984 + 31 +0.0 + 0 +LINE + 5 +1523 + 8 +0 + 62 + 0 + 10 +13362.499973 + 20 +9185.048079 + 30 +0.0 + 11 +13349.999973 + 21 +9206.698714 + 31 +0.0 + 0 +LINE + 5 +1524 + 8 +0 + 62 + 0 + 10 +13324.999973 + 20 +9249.999984 + 30 +0.0 + 11 +13324.999964 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1525 + 8 +0 + 62 + 0 + 10 +13324.999973 + 20 +9206.698714 + 30 +0.0 + 11 +13312.499973 + 21 +9228.349349 + 31 +0.0 + 0 +LINE + 5 +1526 + 8 +0 + 62 + 0 + 10 +13321.187985 + 20 +9170.0 + 30 +0.0 + 11 +13312.499973 + 21 +9185.048079 + 31 +0.0 + 0 +LINE + 5 +1527 + 8 +0 + 62 + 0 + 10 +13287.499973 + 20 +9228.349349 + 30 +0.0 + 11 +13274.999973 + 21 +9249.999984 + 31 +0.0 + 0 +LINE + 5 +1528 + 8 +0 + 62 + 0 + 10 +13287.499973 + 20 +9185.048079 + 30 +0.0 + 11 +13274.999973 + 21 +9206.698714 + 31 +0.0 + 0 +LINE + 5 +1529 + 8 +0 + 62 + 0 + 10 +13249.999973 + 20 +9249.999984 + 30 +0.0 + 11 +13249.999964 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +152A + 8 +0 + 62 + 0 + 10 +13249.999973 + 20 +9206.698714 + 30 +0.0 + 11 +13237.499973 + 21 +9228.349349 + 31 +0.0 + 0 +LINE + 5 +152B + 8 +0 + 62 + 0 + 10 +13246.187986 + 20 +9170.0 + 30 +0.0 + 11 +13237.499973 + 21 +9185.048079 + 31 +0.0 + 0 +LINE + 5 +152C + 8 +0 + 62 + 0 + 10 +13212.499973 + 20 +9228.349349 + 30 +0.0 + 11 +13199.999973 + 21 +9249.999984 + 31 +0.0 + 0 +LINE + 5 +152D + 8 +0 + 62 + 0 + 10 +13212.499973 + 20 +9185.048079 + 30 +0.0 + 11 +13199.999973 + 21 +9206.698714 + 31 +0.0 + 0 +LINE + 5 +152E + 8 +0 + 62 + 0 + 10 +13174.999973 + 20 +9249.999985 + 30 +0.0 + 11 +13174.999964 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +152F + 8 +0 + 62 + 0 + 10 +13174.999973 + 20 +9206.698714 + 30 +0.0 + 11 +13162.499973 + 21 +9228.349349 + 31 +0.0 + 0 +LINE + 5 +1530 + 8 +0 + 62 + 0 + 10 +13171.187986 + 20 +9170.0 + 30 +0.0 + 11 +13162.499973 + 21 +9185.048079 + 31 +0.0 + 0 +LINE + 5 +1531 + 8 +0 + 62 + 0 + 10 +13137.499973 + 20 +9228.34935 + 30 +0.0 + 11 +13124.999973 + 21 +9249.999985 + 31 +0.0 + 0 +LINE + 5 +1532 + 8 +0 + 62 + 0 + 10 +13137.499973 + 20 +9185.048079 + 30 +0.0 + 11 +13124.999973 + 21 +9206.698714 + 31 +0.0 + 0 +LINE + 5 +1533 + 8 +0 + 62 + 0 + 10 +13099.999973 + 20 +9249.999985 + 30 +0.0 + 11 +13099.999965 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1534 + 8 +0 + 62 + 0 + 10 +13099.999974 + 20 +9206.698715 + 30 +0.0 + 11 +13087.499974 + 21 +9228.34935 + 31 +0.0 + 0 +LINE + 5 +1535 + 8 +0 + 62 + 0 + 10 +13096.187986 + 20 +9170.0 + 30 +0.0 + 11 +13087.499974 + 21 +9185.048079 + 31 +0.0 + 0 +LINE + 5 +1536 + 8 +0 + 62 + 0 + 10 +13062.499974 + 20 +9228.34935 + 30 +0.0 + 11 +13049.999974 + 21 +9249.999985 + 31 +0.0 + 0 +LINE + 5 +1537 + 8 +0 + 62 + 0 + 10 +13062.499974 + 20 +9185.04808 + 30 +0.0 + 11 +13049.999974 + 21 +9206.698715 + 31 +0.0 + 0 +LINE + 5 +1538 + 8 +0 + 62 + 0 + 10 +13024.999974 + 20 +9249.999985 + 30 +0.0 + 11 +13024.999965 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1539 + 8 +0 + 62 + 0 + 10 +13024.999974 + 20 +9206.698715 + 30 +0.0 + 11 +13012.499974 + 21 +9228.34935 + 31 +0.0 + 0 +LINE + 5 +153A + 8 +0 + 62 + 0 + 10 +13021.187987 + 20 +9170.0 + 30 +0.0 + 11 +13012.499974 + 21 +9185.04808 + 31 +0.0 + 0 +LINE + 5 +153B + 8 +0 + 62 + 0 + 10 +12987.499974 + 20 +9228.34935 + 30 +0.0 + 11 +12974.999974 + 21 +9249.999985 + 31 +0.0 + 0 +LINE + 5 +153C + 8 +0 + 62 + 0 + 10 +12987.499974 + 20 +9185.04808 + 30 +0.0 + 11 +12974.999974 + 21 +9206.698715 + 31 +0.0 + 0 +LINE + 5 +153D + 8 +0 + 62 + 0 + 10 +12949.999974 + 20 +9249.999985 + 30 +0.0 + 11 +12949.999965 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +153E + 8 +0 + 62 + 0 + 10 +12949.999974 + 20 +9206.698715 + 30 +0.0 + 11 +12937.499974 + 21 +9228.34935 + 31 +0.0 + 0 +LINE + 5 +153F + 8 +0 + 62 + 0 + 10 +12946.187987 + 20 +9170.0 + 30 +0.0 + 11 +12937.499974 + 21 +9185.04808 + 31 +0.0 + 0 +LINE + 5 +1540 + 8 +0 + 62 + 0 + 10 +12912.499974 + 20 +9228.34935 + 30 +0.0 + 11 +12899.999974 + 21 +9249.999985 + 31 +0.0 + 0 +LINE + 5 +1541 + 8 +0 + 62 + 0 + 10 +12912.499974 + 20 +9185.04808 + 30 +0.0 + 11 +12899.999974 + 21 +9206.698715 + 31 +0.0 + 0 +LINE + 5 +1542 + 8 +0 + 62 + 0 + 10 +12874.999974 + 20 +9249.999985 + 30 +0.0 + 11 +12874.999966 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1543 + 8 +0 + 62 + 0 + 10 +12874.999974 + 20 +9206.698715 + 30 +0.0 + 11 +12862.499974 + 21 +9228.34935 + 31 +0.0 + 0 +LINE + 5 +1544 + 8 +0 + 62 + 0 + 10 +12871.187987 + 20 +9170.0 + 30 +0.0 + 11 +12862.499974 + 21 +9185.04808 + 31 +0.0 + 0 +LINE + 5 +1545 + 8 +0 + 62 + 0 + 10 +12837.499974 + 20 +9228.34935 + 30 +0.0 + 11 +12824.999974 + 21 +9249.999985 + 31 +0.0 + 0 +LINE + 5 +1546 + 8 +0 + 62 + 0 + 10 +12837.499974 + 20 +9185.04808 + 30 +0.0 + 11 +12824.999974 + 21 +9206.698715 + 31 +0.0 + 0 +LINE + 5 +1547 + 8 +0 + 62 + 0 + 10 +12799.999974 + 20 +9249.999985 + 30 +0.0 + 11 +12799.999966 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1548 + 8 +0 + 62 + 0 + 10 +12799.999975 + 20 +9206.698715 + 30 +0.0 + 11 +12787.499975 + 21 +9228.34935 + 31 +0.0 + 0 +LINE + 5 +1549 + 8 +0 + 62 + 0 + 10 +12796.187988 + 20 +9170.0 + 30 +0.0 + 11 +12787.499975 + 21 +9185.04808 + 31 +0.0 + 0 +LINE + 5 +154A + 8 +0 + 62 + 0 + 10 +12762.499975 + 20 +9228.34935 + 30 +0.0 + 11 +12749.999975 + 21 +9249.999985 + 31 +0.0 + 0 +LINE + 5 +154B + 8 +0 + 62 + 0 + 10 +12762.499975 + 20 +9185.04808 + 30 +0.0 + 11 +12749.999975 + 21 +9206.698715 + 31 +0.0 + 0 +LINE + 5 +154C + 8 +0 + 62 + 0 + 10 +12724.999975 + 20 +9249.999985 + 30 +0.0 + 11 +12724.999966 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +154D + 8 +0 + 62 + 0 + 10 +12724.999975 + 20 +9206.698715 + 30 +0.0 + 11 +12712.499975 + 21 +9228.34935 + 31 +0.0 + 0 +LINE + 5 +154E + 8 +0 + 62 + 0 + 10 +12721.187988 + 20 +9170.0 + 30 +0.0 + 11 +12712.499975 + 21 +9185.04808 + 31 +0.0 + 0 +LINE + 5 +154F + 8 +0 + 62 + 0 + 10 +12687.499975 + 20 +9228.34935 + 30 +0.0 + 11 +12674.999975 + 21 +9249.999985 + 31 +0.0 + 0 +LINE + 5 +1550 + 8 +0 + 62 + 0 + 10 +12687.499975 + 20 +9185.04808 + 30 +0.0 + 11 +12674.999975 + 21 +9206.698715 + 31 +0.0 + 0 +LINE + 5 +1551 + 8 +0 + 62 + 0 + 10 +12649.999975 + 20 +9249.999986 + 30 +0.0 + 11 +12649.999967 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1552 + 8 +0 + 62 + 0 + 10 +12649.999975 + 20 +9206.698715 + 30 +0.0 + 11 +12637.499975 + 21 +9228.34935 + 31 +0.0 + 0 +LINE + 5 +1553 + 8 +0 + 62 + 0 + 10 +12646.187988 + 20 +9170.0 + 30 +0.0 + 11 +12637.499975 + 21 +9185.04808 + 31 +0.0 + 0 +LINE + 5 +1554 + 8 +0 + 62 + 0 + 10 +12612.499975 + 20 +9228.349351 + 30 +0.0 + 11 +12599.999975 + 21 +9249.999986 + 31 +0.0 + 0 +LINE + 5 +1555 + 8 +0 + 62 + 0 + 10 +12612.499975 + 20 +9185.04808 + 30 +0.0 + 11 +12599.999975 + 21 +9206.698715 + 31 +0.0 + 0 +LINE + 5 +1556 + 8 +0 + 62 + 0 + 10 +12574.999975 + 20 +9249.999986 + 30 +0.0 + 11 +12574.999967 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1557 + 8 +0 + 62 + 0 + 10 +12574.999975 + 20 +9206.698716 + 30 +0.0 + 11 +12562.499975 + 21 +9228.349351 + 31 +0.0 + 0 +LINE + 5 +1558 + 8 +0 + 62 + 0 + 10 +12571.187989 + 20 +9170.0 + 30 +0.0 + 11 +12562.499975 + 21 +9185.04808 + 31 +0.0 + 0 +LINE + 5 +1559 + 8 +0 + 62 + 0 + 10 +12537.499975 + 20 +9228.349351 + 30 +0.0 + 11 +12524.999975 + 21 +9249.999986 + 31 +0.0 + 0 +LINE + 5 +155A + 8 +0 + 62 + 0 + 10 +12537.499975 + 20 +9185.048081 + 30 +0.0 + 11 +12524.999975 + 21 +9206.698716 + 31 +0.0 + 0 +LINE + 5 +155B + 8 +0 + 62 + 0 + 10 +12499.999975 + 20 +9249.999986 + 30 +0.0 + 11 +12499.999967 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +155C + 8 +0 + 62 + 0 + 10 +12499.999976 + 20 +9206.698716 + 30 +0.0 + 11 +12487.499976 + 21 +9228.349351 + 31 +0.0 + 0 +LINE + 5 +155D + 8 +0 + 62 + 0 + 10 +12496.187989 + 20 +9170.0 + 30 +0.0 + 11 +12487.499976 + 21 +9185.048081 + 31 +0.0 + 0 +LINE + 5 +155E + 8 +0 + 62 + 0 + 10 +12462.499976 + 20 +9228.349351 + 30 +0.0 + 11 +12449.999976 + 21 +9249.999986 + 31 +0.0 + 0 +LINE + 5 +155F + 8 +0 + 62 + 0 + 10 +12462.499976 + 20 +9185.048081 + 30 +0.0 + 11 +12449.999976 + 21 +9206.698716 + 31 +0.0 + 0 +LINE + 5 +1560 + 8 +0 + 62 + 0 + 10 +12424.999976 + 20 +9249.999986 + 30 +0.0 + 11 +12424.999968 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1561 + 8 +0 + 62 + 0 + 10 +12424.999976 + 20 +9206.698716 + 30 +0.0 + 11 +12412.499976 + 21 +9228.349351 + 31 +0.0 + 0 +LINE + 5 +1562 + 8 +0 + 62 + 0 + 10 +12421.187989 + 20 +9170.0 + 30 +0.0 + 11 +12412.499976 + 21 +9185.048081 + 31 +0.0 + 0 +LINE + 5 +1563 + 8 +0 + 62 + 0 + 10 +12387.499976 + 20 +9228.349351 + 30 +0.0 + 11 +12374.999976 + 21 +9249.999986 + 31 +0.0 + 0 +LINE + 5 +1564 + 8 +0 + 62 + 0 + 10 +12387.499976 + 20 +9185.048081 + 30 +0.0 + 11 +12374.999976 + 21 +9206.698716 + 31 +0.0 + 0 +LINE + 5 +1565 + 8 +0 + 62 + 0 + 10 +12349.999976 + 20 +9249.999986 + 30 +0.0 + 11 +12349.999968 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1566 + 8 +0 + 62 + 0 + 10 +12349.999976 + 20 +9206.698716 + 30 +0.0 + 11 +12337.499976 + 21 +9228.349351 + 31 +0.0 + 0 +LINE + 5 +1567 + 8 +0 + 62 + 0 + 10 +12346.18799 + 20 +9170.0 + 30 +0.0 + 11 +12337.499976 + 21 +9185.048081 + 31 +0.0 + 0 +LINE + 5 +1568 + 8 +0 + 62 + 0 + 10 +12312.499976 + 20 +9228.349351 + 30 +0.0 + 11 +12299.999976 + 21 +9249.999986 + 31 +0.0 + 0 +LINE + 5 +1569 + 8 +0 + 62 + 0 + 10 +12312.499976 + 20 +9185.048081 + 30 +0.0 + 11 +12299.999976 + 21 +9206.698716 + 31 +0.0 + 0 +LINE + 5 +156A + 8 +0 + 62 + 0 + 10 +12274.999976 + 20 +9249.999986 + 30 +0.0 + 11 +12274.999968 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +156B + 8 +0 + 62 + 0 + 10 +12274.999976 + 20 +9206.698716 + 30 +0.0 + 11 +12262.499976 + 21 +9228.349351 + 31 +0.0 + 0 +LINE + 5 +156C + 8 +0 + 62 + 0 + 10 +12271.18799 + 20 +9170.0 + 30 +0.0 + 11 +12262.499976 + 21 +9185.048081 + 31 +0.0 + 0 +LINE + 5 +156D + 8 +0 + 62 + 0 + 10 +12237.499976 + 20 +9228.349351 + 30 +0.0 + 11 +12224.999976 + 21 +9249.999986 + 31 +0.0 + 0 +LINE + 5 +156E + 8 +0 + 62 + 0 + 10 +12237.499976 + 20 +9185.048081 + 30 +0.0 + 11 +12224.999976 + 21 +9206.698716 + 31 +0.0 + 0 +LINE + 5 +156F + 8 +0 + 62 + 0 + 10 +12199.999976 + 20 +9249.999986 + 30 +0.0 + 11 +12199.999969 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1570 + 8 +0 + 62 + 0 + 10 +12199.999976 + 20 +9206.698716 + 30 +0.0 + 11 +12187.499976 + 21 +9228.349351 + 31 +0.0 + 0 +LINE + 5 +1571 + 8 +0 + 62 + 0 + 10 +12196.18799 + 20 +9170.0 + 30 +0.0 + 11 +12187.499977 + 21 +9185.048081 + 31 +0.0 + 0 +LINE + 5 +1572 + 8 +0 + 62 + 0 + 10 +12162.499977 + 20 +9228.349351 + 30 +0.0 + 11 +12149.999977 + 21 +9249.999986 + 31 +0.0 + 0 +LINE + 5 +1573 + 8 +0 + 62 + 0 + 10 +12162.499977 + 20 +9185.048081 + 30 +0.0 + 11 +12149.999977 + 21 +9206.698716 + 31 +0.0 + 0 +LINE + 5 +1574 + 8 +0 + 62 + 0 + 10 +12124.999977 + 20 +9249.999987 + 30 +0.0 + 11 +12124.999969 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1575 + 8 +0 + 62 + 0 + 10 +12124.999977 + 20 +9206.698716 + 30 +0.0 + 11 +12112.499977 + 21 +9228.349351 + 31 +0.0 + 0 +LINE + 5 +1576 + 8 +0 + 62 + 0 + 10 +12121.187991 + 20 +9170.0 + 30 +0.0 + 11 +12112.499977 + 21 +9185.048081 + 31 +0.0 + 0 +LINE + 5 +1577 + 8 +0 + 62 + 0 + 10 +12087.499977 + 20 +9228.349352 + 30 +0.0 + 11 +12074.999977 + 21 +9249.999987 + 31 +0.0 + 0 +LINE + 5 +1578 + 8 +0 + 62 + 0 + 10 +12087.499977 + 20 +9185.048081 + 30 +0.0 + 11 +12074.999977 + 21 +9206.698716 + 31 +0.0 + 0 +LINE + 5 +1579 + 8 +0 + 62 + 0 + 10 +12049.999977 + 20 +9249.999987 + 30 +0.0 + 11 +12049.999969 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +157A + 8 +0 + 62 + 0 + 10 +12049.999977 + 20 +9206.698717 + 30 +0.0 + 11 +12037.499977 + 21 +9228.349352 + 31 +0.0 + 0 +LINE + 5 +157B + 8 +0 + 62 + 0 + 10 +12046.187991 + 20 +9170.0 + 30 +0.0 + 11 +12037.499977 + 21 +9185.048081 + 31 +0.0 + 0 +LINE + 5 +157C + 8 +0 + 62 + 0 + 10 +12012.499977 + 20 +9228.349352 + 30 +0.0 + 11 +11999.999977 + 21 +9249.999987 + 31 +0.0 + 0 +LINE + 5 +157D + 8 +0 + 62 + 0 + 10 +12012.499977 + 20 +9185.048082 + 30 +0.0 + 11 +11999.999977 + 21 +9206.698717 + 31 +0.0 + 0 +LINE + 5 +157E + 8 +0 + 62 + 0 + 10 +11974.999977 + 20 +9249.999987 + 30 +0.0 + 11 +11974.99997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +157F + 8 +0 + 62 + 0 + 10 +11974.999977 + 20 +9206.698717 + 30 +0.0 + 11 +11962.499977 + 21 +9228.349352 + 31 +0.0 + 0 +LINE + 5 +1580 + 8 +0 + 62 + 0 + 10 +11971.187991 + 20 +9170.0 + 30 +0.0 + 11 +11962.499977 + 21 +9185.048082 + 31 +0.0 + 0 +LINE + 5 +1581 + 8 +0 + 62 + 0 + 10 +11937.499977 + 20 +9228.349352 + 30 +0.0 + 11 +11924.999977 + 21 +9249.999987 + 31 +0.0 + 0 +LINE + 5 +1582 + 8 +0 + 62 + 0 + 10 +11937.499977 + 20 +9185.048082 + 30 +0.0 + 11 +11924.999977 + 21 +9206.698717 + 31 +0.0 + 0 +LINE + 5 +1583 + 8 +0 + 62 + 0 + 10 +11899.999977 + 20 +9249.999987 + 30 +0.0 + 11 +11899.99997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1584 + 8 +0 + 62 + 0 + 10 +11899.999977 + 20 +9206.698717 + 30 +0.0 + 11 +11887.499977 + 21 +9228.349352 + 31 +0.0 + 0 +LINE + 5 +1585 + 8 +0 + 62 + 0 + 10 +11896.187992 + 20 +9170.0 + 30 +0.0 + 11 +11887.499978 + 21 +9185.048082 + 31 +0.0 + 0 +LINE + 5 +1586 + 8 +0 + 62 + 0 + 10 +11862.499978 + 20 +9228.349352 + 30 +0.0 + 11 +11849.999978 + 21 +9249.999987 + 31 +0.0 + 0 +LINE + 5 +1587 + 8 +0 + 62 + 0 + 10 +11862.499978 + 20 +9185.048082 + 30 +0.0 + 11 +11849.999978 + 21 +9206.698717 + 31 +0.0 + 0 +LINE + 5 +1588 + 8 +0 + 62 + 0 + 10 +11824.999978 + 20 +9249.999987 + 30 +0.0 + 11 +11824.99997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1589 + 8 +0 + 62 + 0 + 10 +11824.999978 + 20 +9206.698717 + 30 +0.0 + 11 +11812.499978 + 21 +9228.349352 + 31 +0.0 + 0 +LINE + 5 +158A + 8 +0 + 62 + 0 + 10 +11821.187992 + 20 +9170.0 + 30 +0.0 + 11 +11812.499978 + 21 +9185.048082 + 31 +0.0 + 0 +LINE + 5 +158B + 8 +0 + 62 + 0 + 10 +11787.499978 + 20 +9228.349352 + 30 +0.0 + 11 +11774.999978 + 21 +9249.999987 + 31 +0.0 + 0 +LINE + 5 +158C + 8 +0 + 62 + 0 + 10 +11787.499978 + 20 +9185.048082 + 30 +0.0 + 11 +11774.999978 + 21 +9206.698717 + 31 +0.0 + 0 +LINE + 5 +158D + 8 +0 + 62 + 0 + 10 +11749.999978 + 20 +9249.999987 + 30 +0.0 + 11 +11749.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +158E + 8 +0 + 62 + 0 + 10 +11749.999978 + 20 +9206.698717 + 30 +0.0 + 11 +11737.499978 + 21 +9228.349352 + 31 +0.0 + 0 +LINE + 5 +158F + 8 +0 + 62 + 0 + 10 +11746.187992 + 20 +9170.0 + 30 +0.0 + 11 +11737.499978 + 21 +9185.048082 + 31 +0.0 + 0 +LINE + 5 +1590 + 8 +0 + 62 + 0 + 10 +11712.499978 + 20 +9228.349352 + 30 +0.0 + 11 +11699.999978 + 21 +9249.999987 + 31 +0.0 + 0 +LINE + 5 +1591 + 8 +0 + 62 + 0 + 10 +11712.499978 + 20 +9185.048082 + 30 +0.0 + 11 +11699.999978 + 21 +9206.698717 + 31 +0.0 + 0 +LINE + 5 +1592 + 8 +0 + 62 + 0 + 10 +11674.999978 + 20 +9249.999987 + 30 +0.0 + 11 +11674.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1593 + 8 +0 + 62 + 0 + 10 +11674.999978 + 20 +9206.698717 + 30 +0.0 + 11 +11662.499978 + 21 +9228.349352 + 31 +0.0 + 0 +LINE + 5 +1594 + 8 +0 + 62 + 0 + 10 +11671.187993 + 20 +9170.0 + 30 +0.0 + 11 +11662.499978 + 21 +9185.048082 + 31 +0.0 + 0 +LINE + 5 +1595 + 8 +0 + 62 + 0 + 10 +11637.499978 + 20 +9228.349352 + 30 +0.0 + 11 +11624.999978 + 21 +9249.999987 + 31 +0.0 + 0 +LINE + 5 +1596 + 8 +0 + 62 + 0 + 10 +11637.499978 + 20 +9185.048082 + 30 +0.0 + 11 +11624.999978 + 21 +9206.698717 + 31 +0.0 + 0 +LINE + 5 +1597 + 8 +0 + 62 + 0 + 10 +11599.999978 + 20 +9249.999988 + 30 +0.0 + 11 +11599.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1598 + 8 +0 + 62 + 0 + 10 +11599.999978 + 20 +9206.698717 + 30 +0.0 + 11 +11587.499978 + 21 +9228.349352 + 31 +0.0 + 0 +LINE + 5 +1599 + 8 +0 + 62 + 0 + 10 +11596.187993 + 20 +9170.0 + 30 +0.0 + 11 +11587.499979 + 21 +9185.048082 + 31 +0.0 + 0 +LINE + 5 +159A + 8 +0 + 62 + 0 + 10 +11562.499979 + 20 +9228.349353 + 30 +0.0 + 11 +11549.999979 + 21 +9249.999988 + 31 +0.0 + 0 +LINE + 5 +159B + 8 +0 + 62 + 0 + 10 +11562.499979 + 20 +9185.048082 + 30 +0.0 + 11 +11549.999979 + 21 +9206.698717 + 31 +0.0 + 0 +LINE + 5 +159C + 8 +0 + 62 + 0 + 10 +11524.999979 + 20 +9249.999988 + 30 +0.0 + 11 +11524.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +159D + 8 +0 + 62 + 0 + 10 +11524.999979 + 20 +9206.698718 + 30 +0.0 + 11 +11512.499979 + 21 +9228.349353 + 31 +0.0 + 0 +LINE + 5 +159E + 8 +0 + 62 + 0 + 10 +11521.187993 + 20 +9170.0 + 30 +0.0 + 11 +11512.499979 + 21 +9185.048082 + 31 +0.0 + 0 +LINE + 5 +159F + 8 +0 + 62 + 0 + 10 +11487.499979 + 20 +9228.349353 + 30 +0.0 + 11 +11474.999979 + 21 +9249.999988 + 31 +0.0 + 0 +LINE + 5 +15A0 + 8 +0 + 62 + 0 + 10 +11487.499979 + 20 +9185.048083 + 30 +0.0 + 11 +11474.999979 + 21 +9206.698718 + 31 +0.0 + 0 +LINE + 5 +15A1 + 8 +0 + 62 + 0 + 10 +11449.999979 + 20 +9249.999988 + 30 +0.0 + 11 +11449.999972 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15A2 + 8 +0 + 62 + 0 + 10 +11449.999979 + 20 +9206.698718 + 30 +0.0 + 11 +11437.499979 + 21 +9228.349353 + 31 +0.0 + 0 +LINE + 5 +15A3 + 8 +0 + 62 + 0 + 10 +11446.187994 + 20 +9170.0 + 30 +0.0 + 11 +11437.499979 + 21 +9185.048083 + 31 +0.0 + 0 +LINE + 5 +15A4 + 8 +0 + 62 + 0 + 10 +11412.499979 + 20 +9228.349353 + 30 +0.0 + 11 +11399.999979 + 21 +9249.999988 + 31 +0.0 + 0 +LINE + 5 +15A5 + 8 +0 + 62 + 0 + 10 +11412.499979 + 20 +9185.048083 + 30 +0.0 + 11 +11399.999979 + 21 +9206.698718 + 31 +0.0 + 0 +LINE + 5 +15A6 + 8 +0 + 62 + 0 + 10 +11374.999979 + 20 +9249.999988 + 30 +0.0 + 11 +11374.999972 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15A7 + 8 +0 + 62 + 0 + 10 +11374.999979 + 20 +9206.698718 + 30 +0.0 + 11 +11362.499979 + 21 +9228.349353 + 31 +0.0 + 0 +LINE + 5 +15A8 + 8 +0 + 62 + 0 + 10 +11371.187994 + 20 +9170.0 + 30 +0.0 + 11 +11362.499979 + 21 +9185.048083 + 31 +0.0 + 0 +LINE + 5 +15A9 + 8 +0 + 62 + 0 + 10 +11337.499979 + 20 +9228.349353 + 30 +0.0 + 11 +11324.999979 + 21 +9249.999988 + 31 +0.0 + 0 +LINE + 5 +15AA + 8 +0 + 62 + 0 + 10 +11337.499979 + 20 +9185.048083 + 30 +0.0 + 11 +11324.999979 + 21 +9206.698718 + 31 +0.0 + 0 +LINE + 5 +15AB + 8 +0 + 62 + 0 + 10 +11299.999979 + 20 +9249.999988 + 30 +0.0 + 11 +11299.999972 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15AC + 8 +0 + 62 + 0 + 10 +11299.999979 + 20 +9206.698718 + 30 +0.0 + 11 +11287.499979 + 21 +9228.349353 + 31 +0.0 + 0 +LINE + 5 +15AD + 8 +0 + 62 + 0 + 10 +11296.187994 + 20 +9170.0 + 30 +0.0 + 11 +11287.49998 + 21 +9185.048083 + 31 +0.0 + 0 +LINE + 5 +15AE + 8 +0 + 62 + 0 + 10 +11262.49998 + 20 +9228.349353 + 30 +0.0 + 11 +11249.99998 + 21 +9249.999988 + 31 +0.0 + 0 +LINE + 5 +15AF + 8 +0 + 62 + 0 + 10 +11262.49998 + 20 +9185.048083 + 30 +0.0 + 11 +11249.99998 + 21 +9206.698718 + 31 +0.0 + 0 +LINE + 5 +15B0 + 8 +0 + 62 + 0 + 10 +13699.999972 + 20 +9206.698713 + 30 +0.0 + 11 +13687.499972 + 21 +9228.349348 + 31 +0.0 + 0 +LINE + 5 +15B1 + 8 +0 + 62 + 0 + 10 +13737.499971 + 20 +9185.048078 + 30 +0.0 + 11 +13724.999971 + 21 +9206.698713 + 31 +0.0 + 0 +LINE + 5 +15B2 + 8 +0 + 62 + 0 + 10 +13699.999971 + 20 +9249.999984 + 30 +0.0 + 11 +13699.999962 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15B3 + 8 +0 + 62 + 0 + 10 +13771.187983 + 20 +9170.0 + 30 +0.0 + 11 +13762.499971 + 21 +9185.048078 + 31 +0.0 + 0 +LINE + 5 +15B4 + 8 +0 + 62 + 0 + 10 +13737.499971 + 20 +9228.349348 + 30 +0.0 + 11 +13724.999971 + 21 +9249.999983 + 31 +0.0 + 0 +LINE + 5 +15B5 + 8 +0 + 62 + 0 + 10 +13774.999971 + 20 +9206.698713 + 30 +0.0 + 11 +13762.499971 + 21 +9228.349348 + 31 +0.0 + 0 +LINE + 5 +15B6 + 8 +0 + 62 + 0 + 10 +13812.499971 + 20 +9185.048078 + 30 +0.0 + 11 +13799.999971 + 21 +9206.698713 + 31 +0.0 + 0 +LINE + 5 +15B7 + 8 +0 + 62 + 0 + 10 +13774.999971 + 20 +9249.999983 + 30 +0.0 + 11 +13774.999962 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15B8 + 8 +0 + 62 + 0 + 10 +13846.187983 + 20 +9170.0 + 30 +0.0 + 11 +13837.499971 + 21 +9185.048078 + 31 +0.0 + 0 +LINE + 5 +15B9 + 8 +0 + 62 + 0 + 10 +13812.499971 + 20 +9228.349348 + 30 +0.0 + 11 +13799.999971 + 21 +9249.999983 + 31 +0.0 + 0 +LINE + 5 +15BA + 8 +0 + 62 + 0 + 10 +13849.999971 + 20 +9206.698713 + 30 +0.0 + 11 +13837.499971 + 21 +9228.349348 + 31 +0.0 + 0 +LINE + 5 +15BB + 8 +0 + 62 + 0 + 10 +13887.499971 + 20 +9185.048078 + 30 +0.0 + 11 +13874.999971 + 21 +9206.698713 + 31 +0.0 + 0 +LINE + 5 +15BC + 8 +0 + 62 + 0 + 10 +13849.999971 + 20 +9249.999983 + 30 +0.0 + 11 +13849.999961 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15BD + 8 +0 + 62 + 0 + 10 +13921.187983 + 20 +9170.0 + 30 +0.0 + 11 +13912.499971 + 21 +9185.048078 + 31 +0.0 + 0 +LINE + 5 +15BE + 8 +0 + 62 + 0 + 10 +13887.499971 + 20 +9228.349348 + 30 +0.0 + 11 +13874.999971 + 21 +9249.999983 + 31 +0.0 + 0 +LINE + 5 +15BF + 8 +0 + 62 + 0 + 10 +13924.999971 + 20 +9206.698713 + 30 +0.0 + 11 +13912.499971 + 21 +9228.349348 + 31 +0.0 + 0 +LINE + 5 +15C0 + 8 +0 + 62 + 0 + 10 +13962.499971 + 20 +9185.048078 + 30 +0.0 + 11 +13949.999971 + 21 +9206.698713 + 31 +0.0 + 0 +LINE + 5 +15C1 + 8 +0 + 62 + 0 + 10 +13924.999971 + 20 +9249.999983 + 30 +0.0 + 11 +13924.999961 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15C2 + 8 +0 + 62 + 0 + 10 +13996.187982 + 20 +9170.0 + 30 +0.0 + 11 +13987.499971 + 21 +9185.048078 + 31 +0.0 + 0 +LINE + 5 +15C3 + 8 +0 + 62 + 0 + 10 +13962.499971 + 20 +9228.349348 + 30 +0.0 + 11 +13949.999971 + 21 +9249.999983 + 31 +0.0 + 0 +LINE + 5 +15C4 + 8 +0 + 62 + 0 + 10 +13999.999971 + 20 +9206.698713 + 30 +0.0 + 11 +13987.499971 + 21 +9228.349348 + 31 +0.0 + 0 +LINE + 5 +15C5 + 8 +0 + 62 + 0 + 10 +14037.499971 + 20 +9185.048078 + 30 +0.0 + 11 +14024.999971 + 21 +9206.698713 + 31 +0.0 + 0 +LINE + 5 +15C6 + 8 +0 + 62 + 0 + 10 +13999.999971 + 20 +9249.999983 + 30 +0.0 + 11 +13999.999961 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15C7 + 8 +0 + 62 + 0 + 10 +14071.187982 + 20 +9170.0 + 30 +0.0 + 11 +14062.49997 + 21 +9185.048078 + 31 +0.0 + 0 +LINE + 5 +15C8 + 8 +0 + 62 + 0 + 10 +14037.49997 + 20 +9228.349348 + 30 +0.0 + 11 +14024.99997 + 21 +9249.999983 + 31 +0.0 + 0 +LINE + 5 +15C9 + 8 +0 + 62 + 0 + 10 +14074.99997 + 20 +9206.698713 + 30 +0.0 + 11 +14062.49997 + 21 +9228.349348 + 31 +0.0 + 0 +LINE + 5 +15CA + 8 +0 + 62 + 0 + 10 +14112.49997 + 20 +9185.048078 + 30 +0.0 + 11 +14099.99997 + 21 +9206.698713 + 31 +0.0 + 0 +LINE + 5 +15CB + 8 +0 + 62 + 0 + 10 +14074.99997 + 20 +9249.999983 + 30 +0.0 + 11 +14074.99996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15CC + 8 +0 + 62 + 0 + 10 +14146.187982 + 20 +9170.0 + 30 +0.0 + 11 +14137.49997 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15CD + 8 +0 + 62 + 0 + 10 +14112.49997 + 20 +9228.349348 + 30 +0.0 + 11 +14099.99997 + 21 +9249.999983 + 31 +0.0 + 0 +LINE + 5 +15CE + 8 +0 + 62 + 0 + 10 +14149.99997 + 20 +9206.698713 + 30 +0.0 + 11 +14137.49997 + 21 +9228.349348 + 31 +0.0 + 0 +LINE + 5 +15CF + 8 +0 + 62 + 0 + 10 +14187.49997 + 20 +9185.048077 + 30 +0.0 + 11 +14174.99997 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15D0 + 8 +0 + 62 + 0 + 10 +14149.99997 + 20 +9249.999983 + 30 +0.0 + 11 +14149.99996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15D1 + 8 +0 + 62 + 0 + 10 +14221.187981 + 20 +9170.0 + 30 +0.0 + 11 +14212.49997 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15D2 + 8 +0 + 62 + 0 + 10 +14187.49997 + 20 +9228.349348 + 30 +0.0 + 11 +14174.99997 + 21 +9249.999983 + 31 +0.0 + 0 +LINE + 5 +15D3 + 8 +0 + 62 + 0 + 10 +14224.99997 + 20 +9206.698712 + 30 +0.0 + 11 +14212.49997 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15D4 + 8 +0 + 62 + 0 + 10 +14262.49997 + 20 +9185.048077 + 30 +0.0 + 11 +14249.99997 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15D5 + 8 +0 + 62 + 0 + 10 +14224.99997 + 20 +9249.999983 + 30 +0.0 + 11 +14224.99996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15D6 + 8 +0 + 62 + 0 + 10 +14296.187981 + 20 +9170.0 + 30 +0.0 + 11 +14287.49997 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15D7 + 8 +0 + 62 + 0 + 10 +14262.49997 + 20 +9228.349347 + 30 +0.0 + 11 +14249.99997 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15D8 + 8 +0 + 62 + 0 + 10 +14299.99997 + 20 +9206.698712 + 30 +0.0 + 11 +14287.49997 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15D9 + 8 +0 + 62 + 0 + 10 +14337.49997 + 20 +9185.048077 + 30 +0.0 + 11 +14324.99997 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15DA + 8 +0 + 62 + 0 + 10 +14299.99997 + 20 +9249.999982 + 30 +0.0 + 11 +14299.999959 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15DB + 8 +0 + 62 + 0 + 10 +14371.187981 + 20 +9170.0 + 30 +0.0 + 11 +14362.499969 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15DC + 8 +0 + 62 + 0 + 10 +14337.499969 + 20 +9228.349347 + 30 +0.0 + 11 +14324.999969 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15DD + 8 +0 + 62 + 0 + 10 +14374.999969 + 20 +9206.698712 + 30 +0.0 + 11 +14362.499969 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15DE + 8 +0 + 62 + 0 + 10 +14412.499969 + 20 +9185.048077 + 30 +0.0 + 11 +14399.999969 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15DF + 8 +0 + 62 + 0 + 10 +14374.999969 + 20 +9249.999982 + 30 +0.0 + 11 +14374.999959 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15E0 + 8 +0 + 62 + 0 + 10 +14446.18798 + 20 +9170.0 + 30 +0.0 + 11 +14437.499969 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15E1 + 8 +0 + 62 + 0 + 10 +14412.499969 + 20 +9228.349347 + 30 +0.0 + 11 +14399.999969 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15E2 + 8 +0 + 62 + 0 + 10 +14449.999969 + 20 +9206.698712 + 30 +0.0 + 11 +14437.499969 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15E3 + 8 +0 + 62 + 0 + 10 +14487.499969 + 20 +9185.048077 + 30 +0.0 + 11 +14474.999969 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15E4 + 8 +0 + 62 + 0 + 10 +14449.999969 + 20 +9249.999982 + 30 +0.0 + 11 +14449.999959 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15E5 + 8 +0 + 62 + 0 + 10 +14521.18798 + 20 +9170.0 + 30 +0.0 + 11 +14512.499969 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15E6 + 8 +0 + 62 + 0 + 10 +14487.499969 + 20 +9228.349347 + 30 +0.0 + 11 +14474.999969 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15E7 + 8 +0 + 62 + 0 + 10 +14524.999969 + 20 +9206.698712 + 30 +0.0 + 11 +14512.499969 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15E8 + 8 +0 + 62 + 0 + 10 +14562.499969 + 20 +9185.048077 + 30 +0.0 + 11 +14549.999969 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15E9 + 8 +0 + 62 + 0 + 10 +14524.999969 + 20 +9249.999982 + 30 +0.0 + 11 +14524.999958 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15EA + 8 +0 + 62 + 0 + 10 +14596.18798 + 20 +9170.0 + 30 +0.0 + 11 +14587.499969 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15EB + 8 +0 + 62 + 0 + 10 +14562.499969 + 20 +9228.349347 + 30 +0.0 + 11 +14549.999969 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15EC + 8 +0 + 62 + 0 + 10 +14599.999969 + 20 +9206.698712 + 30 +0.0 + 11 +14587.499969 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15ED + 8 +0 + 62 + 0 + 10 +14637.499969 + 20 +9185.048077 + 30 +0.0 + 11 +14624.999969 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15EE + 8 +0 + 62 + 0 + 10 +14599.999969 + 20 +9249.999982 + 30 +0.0 + 11 +14599.999958 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15EF + 8 +0 + 62 + 0 + 10 +14671.187979 + 20 +9170.0 + 30 +0.0 + 11 +14662.499968 + 21 +9185.048077 + 31 +0.0 + 0 +LINE + 5 +15F0 + 8 +0 + 62 + 0 + 10 +14637.499968 + 20 +9228.349347 + 30 +0.0 + 11 +14624.999968 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15F1 + 8 +0 + 62 + 0 + 10 +14674.999968 + 20 +9206.698712 + 30 +0.0 + 11 +14662.499968 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15F2 + 8 +0 + 62 + 0 + 10 +14712.499968 + 20 +9185.048076 + 30 +0.0 + 11 +14699.999968 + 21 +9206.698712 + 31 +0.0 + 0 +LINE + 5 +15F3 + 8 +0 + 62 + 0 + 10 +14674.999968 + 20 +9249.999982 + 30 +0.0 + 11 +14674.999958 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15F4 + 8 +0 + 62 + 0 + 10 +14746.187979 + 20 +9170.0 + 30 +0.0 + 11 +14737.499968 + 21 +9185.048076 + 31 +0.0 + 0 +LINE + 5 +15F5 + 8 +0 + 62 + 0 + 10 +14712.499968 + 20 +9228.349347 + 30 +0.0 + 11 +14699.999968 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15F6 + 8 +0 + 62 + 0 + 10 +14749.999968 + 20 +9206.698711 + 30 +0.0 + 11 +14737.499968 + 21 +9228.349347 + 31 +0.0 + 0 +LINE + 5 +15F7 + 8 +0 + 62 + 0 + 10 +14787.499968 + 20 +9185.048076 + 30 +0.0 + 11 +14774.999968 + 21 +9206.698711 + 31 +0.0 + 0 +LINE + 5 +15F8 + 8 +0 + 62 + 0 + 10 +14749.999968 + 20 +9249.999982 + 30 +0.0 + 11 +14749.999957 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15F9 + 8 +0 + 62 + 0 + 10 +14821.187979 + 20 +9170.0 + 30 +0.0 + 11 +14812.499968 + 21 +9185.048076 + 31 +0.0 + 0 +LINE + 5 +15FA + 8 +0 + 62 + 0 + 10 +14787.499968 + 20 +9228.349346 + 30 +0.0 + 11 +14774.999968 + 21 +9249.999982 + 31 +0.0 + 0 +LINE + 5 +15FB + 8 +0 + 62 + 0 + 10 +14824.999968 + 20 +9206.698711 + 30 +0.0 + 11 +14812.499968 + 21 +9228.349346 + 31 +0.0 + 0 +LINE + 5 +15FC + 8 +0 + 62 + 0 + 10 +14862.499968 + 20 +9185.048076 + 30 +0.0 + 11 +14849.999968 + 21 +9206.698711 + 31 +0.0 + 0 +LINE + 5 +15FD + 8 +0 + 62 + 0 + 10 +14824.999968 + 20 +9249.999981 + 30 +0.0 + 11 +14824.999957 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +15FE + 8 +0 + 62 + 0 + 10 +14896.187978 + 20 +9170.0 + 30 +0.0 + 11 +14887.499968 + 21 +9185.048076 + 31 +0.0 + 0 +LINE + 5 +15FF + 8 +0 + 62 + 0 + 10 +14862.499968 + 20 +9228.349346 + 30 +0.0 + 11 +14849.999968 + 21 +9249.999981 + 31 +0.0 + 0 +LINE + 5 +1600 + 8 +0 + 62 + 0 + 10 +14899.999968 + 20 +9206.698711 + 30 +0.0 + 11 +14887.499968 + 21 +9228.349346 + 31 +0.0 + 0 +LINE + 5 +1601 + 8 +0 + 62 + 0 + 10 +14937.499968 + 20 +9185.048076 + 30 +0.0 + 11 +14924.999968 + 21 +9206.698711 + 31 +0.0 + 0 +LINE + 5 +1602 + 8 +0 + 62 + 0 + 10 +14899.999968 + 20 +9249.999981 + 30 +0.0 + 11 +14899.999957 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1603 + 8 +0 + 62 + 0 + 10 +14971.187978 + 20 +9170.0 + 30 +0.0 + 11 +14962.499967 + 21 +9185.048076 + 31 +0.0 + 0 +LINE + 5 +1604 + 8 +0 + 62 + 0 + 10 +14937.499967 + 20 +9228.349346 + 30 +0.0 + 11 +14924.999967 + 21 +9249.999981 + 31 +0.0 + 0 +LINE + 5 +1605 + 8 +0 + 62 + 0 + 10 +14974.999967 + 20 +9206.698711 + 30 +0.0 + 11 +14962.499967 + 21 +9228.349346 + 31 +0.0 + 0 +LINE + 5 +1606 + 8 +0 + 62 + 0 + 10 +15012.499967 + 20 +9185.048076 + 30 +0.0 + 11 +14999.999967 + 21 +9206.698711 + 31 +0.0 + 0 +LINE + 5 +1607 + 8 +0 + 62 + 0 + 10 +14974.999967 + 20 +9249.999981 + 30 +0.0 + 11 +14974.999956 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1608 + 8 +0 + 62 + 0 + 10 +15046.187978 + 20 +9170.0 + 30 +0.0 + 11 +15037.499967 + 21 +9185.048076 + 31 +0.0 + 0 +LINE + 5 +1609 + 8 +0 + 62 + 0 + 10 +15012.499967 + 20 +9228.349346 + 30 +0.0 + 11 +14999.999967 + 21 +9249.999981 + 31 +0.0 + 0 +LINE + 5 +160A + 8 +0 + 62 + 0 + 10 +15049.999967 + 20 +9206.698711 + 30 +0.0 + 11 +15037.499967 + 21 +9228.349346 + 31 +0.0 + 0 +LINE + 5 +160B + 8 +0 + 62 + 0 + 10 +15087.499967 + 20 +9185.048076 + 30 +0.0 + 11 +15074.999967 + 21 +9206.698711 + 31 +0.0 + 0 +LINE + 5 +160C + 8 +0 + 62 + 0 + 10 +15049.999967 + 20 +9249.999981 + 30 +0.0 + 11 +15049.999956 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +160D + 8 +0 + 62 + 0 + 10 +15121.187978 + 20 +9170.0 + 30 +0.0 + 11 +15112.499967 + 21 +9185.048076 + 31 +0.0 + 0 +LINE + 5 +160E + 8 +0 + 62 + 0 + 10 +15087.499967 + 20 +9228.349346 + 30 +0.0 + 11 +15074.999967 + 21 +9249.999981 + 31 +0.0 + 0 +LINE + 5 +160F + 8 +0 + 62 + 0 + 10 +15124.999967 + 20 +9206.698711 + 30 +0.0 + 11 +15112.499967 + 21 +9228.349346 + 31 +0.0 + 0 +LINE + 5 +1610 + 8 +0 + 62 + 0 + 10 +15162.499967 + 20 +9185.048076 + 30 +0.0 + 11 +15149.999967 + 21 +9206.698711 + 31 +0.0 + 0 +LINE + 5 +1611 + 8 +0 + 62 + 0 + 10 +15124.999967 + 20 +9249.999981 + 30 +0.0 + 11 +15124.999956 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1612 + 8 +0 + 62 + 0 + 10 +15196.187977 + 20 +9170.0 + 30 +0.0 + 11 +15187.499967 + 21 +9185.048076 + 31 +0.0 + 0 +LINE + 5 +1613 + 8 +0 + 62 + 0 + 10 +15162.499967 + 20 +9228.349346 + 30 +0.0 + 11 +15149.999967 + 21 +9249.999981 + 31 +0.0 + 0 +LINE + 5 +1614 + 8 +0 + 62 + 0 + 10 +15199.999967 + 20 +9206.698711 + 30 +0.0 + 11 +15187.499967 + 21 +9228.349346 + 31 +0.0 + 0 +LINE + 5 +1615 + 8 +0 + 62 + 0 + 10 +15237.499967 + 20 +9185.048075 + 30 +0.0 + 11 +15224.999967 + 21 +9206.698711 + 31 +0.0 + 0 +LINE + 5 +1616 + 8 +0 + 62 + 0 + 10 +15199.999967 + 20 +9249.999981 + 30 +0.0 + 11 +15199.999955 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1617 + 8 +0 + 62 + 0 + 10 +15271.187977 + 20 +9170.0 + 30 +0.0 + 11 +15262.499966 + 21 +9185.048075 + 31 +0.0 + 0 +LINE + 5 +1618 + 8 +0 + 62 + 0 + 10 +15237.499966 + 20 +9228.349346 + 30 +0.0 + 11 +15224.999966 + 21 +9249.999981 + 31 +0.0 + 0 +LINE + 5 +1619 + 8 +0 + 62 + 0 + 10 +15274.999966 + 20 +9206.69871 + 30 +0.0 + 11 +15262.499966 + 21 +9228.349346 + 31 +0.0 + 0 +LINE + 5 +161A + 8 +0 + 62 + 0 + 10 +15312.499966 + 20 +9185.048075 + 30 +0.0 + 11 +15299.999966 + 21 +9206.69871 + 31 +0.0 + 0 +LINE + 5 +161B + 8 +0 + 62 + 0 + 10 +15274.999966 + 20 +9249.999981 + 30 +0.0 + 11 +15274.999955 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +161C + 8 +0 + 62 + 0 + 10 +15346.187977 + 20 +9170.0 + 30 +0.0 + 11 +15337.499966 + 21 +9185.048075 + 31 +0.0 + 0 +LINE + 5 +161D + 8 +0 + 62 + 0 + 10 +15312.499966 + 20 +9228.349345 + 30 +0.0 + 11 +15299.999966 + 21 +9249.999981 + 31 +0.0 + 0 +LINE + 5 +161E + 8 +0 + 62 + 0 + 10 +15349.999966 + 20 +9206.69871 + 30 +0.0 + 11 +15337.499966 + 21 +9228.349345 + 31 +0.0 + 0 +LINE + 5 +161F + 8 +0 + 62 + 0 + 10 +15387.499966 + 20 +9185.048075 + 30 +0.0 + 11 +15374.999966 + 21 +9206.69871 + 31 +0.0 + 0 +LINE + 5 +1620 + 8 +0 + 62 + 0 + 10 +15349.999966 + 20 +9249.99998 + 30 +0.0 + 11 +15349.999955 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1621 + 8 +0 + 62 + 0 + 10 +15421.187976 + 20 +9170.0 + 30 +0.0 + 11 +15412.499966 + 21 +9185.048075 + 31 +0.0 + 0 +LINE + 5 +1622 + 8 +0 + 62 + 0 + 10 +15387.499966 + 20 +9228.349345 + 30 +0.0 + 11 +15374.999966 + 21 +9249.99998 + 31 +0.0 + 0 +LINE + 5 +1623 + 8 +0 + 62 + 0 + 10 +15424.999966 + 20 +9206.69871 + 30 +0.0 + 11 +15412.499966 + 21 +9228.349345 + 31 +0.0 + 0 +LINE + 5 +1624 + 8 +0 + 62 + 0 + 10 +15462.499966 + 20 +9185.048075 + 30 +0.0 + 11 +15449.999966 + 21 +9206.69871 + 31 +0.0 + 0 +LINE + 5 +1625 + 8 +0 + 62 + 0 + 10 +15424.999966 + 20 +9249.99998 + 30 +0.0 + 11 +15424.999954 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1626 + 8 +0 + 62 + 0 + 10 +15496.187976 + 20 +9170.0 + 30 +0.0 + 11 +15487.499966 + 21 +9185.048075 + 31 +0.0 + 0 +LINE + 5 +1627 + 8 +0 + 62 + 0 + 10 +15462.499966 + 20 +9228.349345 + 30 +0.0 + 11 +15449.999966 + 21 +9249.99998 + 31 +0.0 + 0 +LINE + 5 +1628 + 8 +0 + 62 + 0 + 10 +15499.999966 + 20 +9206.69871 + 30 +0.0 + 11 +15487.499966 + 21 +9228.349345 + 31 +0.0 + 0 +LINE + 5 +1629 + 8 +0 + 62 + 0 + 10 +15537.499966 + 20 +9185.048075 + 30 +0.0 + 11 +15524.999966 + 21 +9206.69871 + 31 +0.0 + 0 +LINE + 5 +162A + 8 +0 + 62 + 0 + 10 +15499.999966 + 20 +9249.99998 + 30 +0.0 + 11 +15499.999954 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +162B + 8 +0 + 62 + 0 + 10 +15571.187976 + 20 +9170.0 + 30 +0.0 + 11 +15562.499966 + 21 +9185.048075 + 31 +0.0 + 0 +LINE + 5 +162C + 8 +0 + 62 + 0 + 10 +15537.499966 + 20 +9228.349345 + 30 +0.0 + 11 +15524.999966 + 21 +9249.99998 + 31 +0.0 + 0 +LINE + 5 +162D + 8 +0 + 62 + 0 + 10 +15574.999965 + 20 +9206.69871 + 30 +0.0 + 11 +15562.499965 + 21 +9228.349345 + 31 +0.0 + 0 +LINE + 5 +162E + 8 +0 + 62 + 0 + 10 +15612.499965 + 20 +9185.048075 + 30 +0.0 + 11 +15599.999965 + 21 +9206.69871 + 31 +0.0 + 0 +LINE + 5 +162F + 8 +0 + 62 + 0 + 10 +15574.999965 + 20 +9249.99998 + 30 +0.0 + 11 +15574.999954 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1630 + 8 +0 + 62 + 0 + 10 +15646.187975 + 20 +9170.0 + 30 +0.0 + 11 +15637.499965 + 21 +9185.048075 + 31 +0.0 + 0 +LINE + 5 +1631 + 8 +0 + 62 + 0 + 10 +15612.499965 + 20 +9228.349345 + 30 +0.0 + 11 +15599.999965 + 21 +9249.99998 + 31 +0.0 + 0 +LINE + 5 +1632 + 8 +0 + 62 + 0 + 10 +15649.999965 + 20 +9206.69871 + 30 +0.0 + 11 +15637.499965 + 21 +9228.349345 + 31 +0.0 + 0 +LINE + 5 +1633 + 8 +0 + 62 + 0 + 10 +15687.499965 + 20 +9185.048075 + 30 +0.0 + 11 +15674.999965 + 21 +9206.69871 + 31 +0.0 + 0 +LINE + 5 +1634 + 8 +0 + 62 + 0 + 10 +15649.999965 + 20 +9249.99998 + 30 +0.0 + 11 +15649.999953 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1635 + 8 +0 + 62 + 0 + 10 +15721.187975 + 20 +9170.0 + 30 +0.0 + 11 +15712.499965 + 21 +9185.048075 + 31 +0.0 + 0 +LINE + 5 +1636 + 8 +0 + 62 + 0 + 10 +15687.499965 + 20 +9228.349345 + 30 +0.0 + 11 +15674.999965 + 21 +9249.99998 + 31 +0.0 + 0 +LINE + 5 +1637 + 8 +0 + 62 + 0 + 10 +15724.999965 + 20 +9206.69871 + 30 +0.0 + 11 +15712.499965 + 21 +9228.349345 + 31 +0.0 + 0 +LINE + 5 +1638 + 8 +0 + 62 + 0 + 10 +15762.499965 + 20 +9185.048074 + 30 +0.0 + 11 +15749.999965 + 21 +9206.69871 + 31 +0.0 + 0 +LINE + 5 +1639 + 8 +0 + 62 + 0 + 10 +15724.999965 + 20 +9249.99998 + 30 +0.0 + 11 +15724.999953 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +163A + 8 +0 + 62 + 0 + 10 +15796.187975 + 20 +9170.0 + 30 +0.0 + 11 +15787.499965 + 21 +9185.048074 + 31 +0.0 + 0 +LINE + 5 +163B + 8 +0 + 62 + 0 + 10 +15762.499965 + 20 +9228.349345 + 30 +0.0 + 11 +15749.999965 + 21 +9249.99998 + 31 +0.0 + 0 +LINE + 5 +163C + 8 +0 + 62 + 0 + 10 +15799.999965 + 20 +9206.698709 + 30 +0.0 + 11 +15787.499965 + 21 +9228.349345 + 31 +0.0 + 0 +LINE + 5 +163D + 8 +0 + 62 + 0 + 10 +15837.499965 + 20 +9185.048074 + 30 +0.0 + 11 +15824.999965 + 21 +9206.698709 + 31 +0.0 + 0 +LINE + 5 +163E + 8 +0 + 62 + 0 + 10 +15799.999965 + 20 +9249.99998 + 30 +0.0 + 11 +15799.999953 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +163F + 8 +0 + 62 + 0 + 10 +15871.187974 + 20 +9170.0 + 30 +0.0 + 11 +15862.499965 + 21 +9185.048074 + 31 +0.0 + 0 +LINE + 5 +1640 + 8 +0 + 62 + 0 + 10 +15837.499965 + 20 +9228.349344 + 30 +0.0 + 11 +15824.999965 + 21 +9249.99998 + 31 +0.0 + 0 +LINE + 5 +1641 + 8 +0 + 62 + 0 + 10 +15874.999964 + 20 +9206.698709 + 30 +0.0 + 11 +15862.499964 + 21 +9228.349344 + 31 +0.0 + 0 +LINE + 5 +1642 + 8 +0 + 62 + 0 + 10 +15912.499964 + 20 +9185.048074 + 30 +0.0 + 11 +15899.999964 + 21 +9206.698709 + 31 +0.0 + 0 +LINE + 5 +1643 + 8 +0 + 62 + 0 + 10 +15874.999964 + 20 +9249.999979 + 30 +0.0 + 11 +15874.999952 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1644 + 8 +0 + 62 + 0 + 10 +15946.187974 + 20 +9170.0 + 30 +0.0 + 11 +15937.499964 + 21 +9185.048074 + 31 +0.0 + 0 +LINE + 5 +1645 + 8 +0 + 62 + 0 + 10 +15912.499964 + 20 +9228.349344 + 30 +0.0 + 11 +15899.999964 + 21 +9249.999979 + 31 +0.0 + 0 +LINE + 5 +1646 + 8 +0 + 62 + 0 + 10 +15949.999964 + 20 +9206.698709 + 30 +0.0 + 11 +15937.499964 + 21 +9228.349344 + 31 +0.0 + 0 +LINE + 5 +1647 + 8 +0 + 62 + 0 + 10 +15987.499964 + 20 +9185.048074 + 30 +0.0 + 11 +15974.999964 + 21 +9206.698709 + 31 +0.0 + 0 +LINE + 5 +1648 + 8 +0 + 62 + 0 + 10 +15949.999964 + 20 +9249.999979 + 30 +0.0 + 11 +15949.999952 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1649 + 8 +0 + 62 + 0 + 10 +16021.187974 + 20 +9170.0 + 30 +0.0 + 11 +16012.499964 + 21 +9185.048074 + 31 +0.0 + 0 +LINE + 5 +164A + 8 +0 + 62 + 0 + 10 +15987.499964 + 20 +9228.349344 + 30 +0.0 + 11 +15974.999964 + 21 +9249.999979 + 31 +0.0 + 0 +LINE + 5 +164B + 8 +0 + 62 + 0 + 10 +16024.999964 + 20 +9206.698709 + 30 +0.0 + 11 +16012.499964 + 21 +9228.349344 + 31 +0.0 + 0 +LINE + 5 +164C + 8 +0 + 62 + 0 + 10 +16062.499964 + 20 +9185.048074 + 30 +0.0 + 11 +16049.999964 + 21 +9206.698709 + 31 +0.0 + 0 +LINE + 5 +164D + 8 +0 + 62 + 0 + 10 +16024.999964 + 20 +9249.999979 + 30 +0.0 + 11 +16024.999952 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +164E + 8 +0 + 62 + 0 + 10 +16096.187973 + 20 +9170.0 + 30 +0.0 + 11 +16087.499964 + 21 +9185.048074 + 31 +0.0 + 0 +LINE + 5 +164F + 8 +0 + 62 + 0 + 10 +16062.499964 + 20 +9228.349344 + 30 +0.0 + 11 +16049.999964 + 21 +9249.999979 + 31 +0.0 + 0 +LINE + 5 +1650 + 8 +0 + 62 + 0 + 10 +16099.999964 + 20 +9206.698709 + 30 +0.0 + 11 +16087.499964 + 21 +9228.349344 + 31 +0.0 + 0 +LINE + 5 +1651 + 8 +0 + 62 + 0 + 10 +16126.25 + 20 +9204.533582 + 30 +0.0 + 11 +16124.999964 + 21 +9206.698709 + 31 +0.0 + 0 +LINE + 5 +1652 + 8 +0 + 62 + 0 + 10 +16099.999964 + 20 +9249.999979 + 30 +0.0 + 11 +16099.999951 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1653 + 8 +0 + 62 + 0 + 10 +16126.25 + 20 +9247.834852 + 30 +0.0 + 11 +16124.999964 + 21 +9249.999979 + 31 +0.0 + 0 +LINE + 5 +1654 + 8 +0 + 62 + 0 + 10 +13653.81194 + 20 +9170.0 + 30 +0.0 + 11 +13662.499971 + 21 +9185.048111 + 31 +0.0 + 0 +LINE + 5 +1655 + 8 +0 + 62 + 0 + 10 +13687.499971 + 20 +9228.349381 + 30 +0.0 + 11 +13699.999962 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1656 + 8 +0 + 62 + 0 + 10 +13649.999972 + 20 +9206.698746 + 30 +0.0 + 11 +13662.499972 + 21 +9228.349381 + 31 +0.0 + 0 +LINE + 5 +1657 + 8 +0 + 62 + 0 + 10 +13612.499972 + 20 +9185.048111 + 30 +0.0 + 11 +13624.999972 + 21 +9206.698746 + 31 +0.0 + 0 +LINE + 5 +1658 + 8 +0 + 62 + 0 + 10 +13578.811941 + 20 +9170.0 + 30 +0.0 + 11 +13587.499972 + 21 +9185.048111 + 31 +0.0 + 0 +LINE + 5 +1659 + 8 +0 + 62 + 0 + 10 +13612.499972 + 20 +9228.349381 + 30 +0.0 + 11 +13624.999962 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +165A + 8 +0 + 62 + 0 + 10 +13574.999972 + 20 +9206.698746 + 30 +0.0 + 11 +13587.499972 + 21 +9228.349381 + 31 +0.0 + 0 +LINE + 5 +165B + 8 +0 + 62 + 0 + 10 +13537.499972 + 20 +9185.048111 + 30 +0.0 + 11 +13549.999972 + 21 +9206.698746 + 31 +0.0 + 0 +LINE + 5 +165C + 8 +0 + 62 + 0 + 10 +13503.811941 + 20 +9170.0 + 30 +0.0 + 11 +13512.499972 + 21 +9185.048111 + 31 +0.0 + 0 +LINE + 5 +165D + 8 +0 + 62 + 0 + 10 +13537.499972 + 20 +9228.349381 + 30 +0.0 + 11 +13549.999963 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +165E + 8 +0 + 62 + 0 + 10 +13499.999972 + 20 +9206.698746 + 30 +0.0 + 11 +13512.499972 + 21 +9228.349381 + 31 +0.0 + 0 +LINE + 5 +165F + 8 +0 + 62 + 0 + 10 +13462.499972 + 20 +9185.048111 + 30 +0.0 + 11 +13474.999972 + 21 +9206.698746 + 31 +0.0 + 0 +LINE + 5 +1660 + 8 +0 + 62 + 0 + 10 +13428.811941 + 20 +9170.0 + 30 +0.0 + 11 +13437.499972 + 21 +9185.048111 + 31 +0.0 + 0 +LINE + 5 +1661 + 8 +0 + 62 + 0 + 10 +13462.499972 + 20 +9228.349381 + 30 +0.0 + 11 +13474.999963 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1662 + 8 +0 + 62 + 0 + 10 +13424.999972 + 20 +9206.698746 + 30 +0.0 + 11 +13437.499972 + 21 +9228.349381 + 31 +0.0 + 0 +LINE + 5 +1663 + 8 +0 + 62 + 0 + 10 +13387.499972 + 20 +9185.048111 + 30 +0.0 + 11 +13399.999972 + 21 +9206.698746 + 31 +0.0 + 0 +LINE + 5 +1664 + 8 +0 + 62 + 0 + 10 +13353.811942 + 20 +9170.0 + 30 +0.0 + 11 +13362.499972 + 21 +9185.048111 + 31 +0.0 + 0 +LINE + 5 +1665 + 8 +0 + 62 + 0 + 10 +13387.499972 + 20 +9228.349381 + 30 +0.0 + 11 +13399.999963 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1666 + 8 +0 + 62 + 0 + 10 +13349.999973 + 20 +9206.698746 + 30 +0.0 + 11 +13362.499973 + 21 +9228.349381 + 31 +0.0 + 0 +LINE + 5 +1667 + 8 +0 + 62 + 0 + 10 +13312.499973 + 20 +9185.048111 + 30 +0.0 + 11 +13324.999973 + 21 +9206.698746 + 31 +0.0 + 0 +LINE + 5 +1668 + 8 +0 + 62 + 0 + 10 +13278.811942 + 20 +9170.0 + 30 +0.0 + 11 +13287.499973 + 21 +9185.04811 + 31 +0.0 + 0 +LINE + 5 +1669 + 8 +0 + 62 + 0 + 10 +13312.499973 + 20 +9228.349381 + 30 +0.0 + 11 +13324.999964 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +166A + 8 +0 + 62 + 0 + 10 +13274.999973 + 20 +9206.698746 + 30 +0.0 + 11 +13287.499973 + 21 +9228.349381 + 31 +0.0 + 0 +LINE + 5 +166B + 8 +0 + 62 + 0 + 10 +13237.499973 + 20 +9185.04811 + 30 +0.0 + 11 +13249.999973 + 21 +9206.698745 + 31 +0.0 + 0 +LINE + 5 +166C + 8 +0 + 62 + 0 + 10 +13203.811942 + 20 +9170.0 + 30 +0.0 + 11 +13212.499973 + 21 +9185.04811 + 31 +0.0 + 0 +LINE + 5 +166D + 8 +0 + 62 + 0 + 10 +13237.499973 + 20 +9228.349381 + 30 +0.0 + 11 +13249.999964 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +166E + 8 +0 + 62 + 0 + 10 +13199.999973 + 20 +9206.698745 + 30 +0.0 + 11 +13212.499973 + 21 +9228.34938 + 31 +0.0 + 0 +LINE + 5 +166F + 8 +0 + 62 + 0 + 10 +13162.499973 + 20 +9185.04811 + 30 +0.0 + 11 +13174.999973 + 21 +9206.698745 + 31 +0.0 + 0 +LINE + 5 +1670 + 8 +0 + 62 + 0 + 10 +13128.811943 + 20 +9170.0 + 30 +0.0 + 11 +13137.499973 + 21 +9185.04811 + 31 +0.0 + 0 +LINE + 5 +1671 + 8 +0 + 62 + 0 + 10 +13162.499973 + 20 +9228.34938 + 30 +0.0 + 11 +13174.999964 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1672 + 8 +0 + 62 + 0 + 10 +13124.999973 + 20 +9206.698745 + 30 +0.0 + 11 +13137.499973 + 21 +9228.34938 + 31 +0.0 + 0 +LINE + 5 +1673 + 8 +0 + 62 + 0 + 10 +13087.499973 + 20 +9185.04811 + 30 +0.0 + 11 +13099.999973 + 21 +9206.698745 + 31 +0.0 + 0 +LINE + 5 +1674 + 8 +0 + 62 + 0 + 10 +13053.811943 + 20 +9170.0 + 30 +0.0 + 11 +13062.499973 + 21 +9185.04811 + 31 +0.0 + 0 +LINE + 5 +1675 + 8 +0 + 62 + 0 + 10 +13087.499973 + 20 +9228.34938 + 30 +0.0 + 11 +13099.999965 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1676 + 8 +0 + 62 + 0 + 10 +13049.999974 + 20 +9206.698745 + 30 +0.0 + 11 +13062.499974 + 21 +9228.34938 + 31 +0.0 + 0 +LINE + 5 +1677 + 8 +0 + 62 + 0 + 10 +13012.499974 + 20 +9185.04811 + 30 +0.0 + 11 +13024.999974 + 21 +9206.698745 + 31 +0.0 + 0 +LINE + 5 +1678 + 8 +0 + 62 + 0 + 10 +12978.811943 + 20 +9170.0 + 30 +0.0 + 11 +12987.499974 + 21 +9185.04811 + 31 +0.0 + 0 +LINE + 5 +1679 + 8 +0 + 62 + 0 + 10 +13012.499974 + 20 +9228.34938 + 30 +0.0 + 11 +13024.999965 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +167A + 8 +0 + 62 + 0 + 10 +12974.999974 + 20 +9206.698745 + 30 +0.0 + 11 +12987.499974 + 21 +9228.34938 + 31 +0.0 + 0 +LINE + 5 +167B + 8 +0 + 62 + 0 + 10 +12937.499974 + 20 +9185.04811 + 30 +0.0 + 11 +12949.999974 + 21 +9206.698745 + 31 +0.0 + 0 +LINE + 5 +167C + 8 +0 + 62 + 0 + 10 +12903.811944 + 20 +9170.0 + 30 +0.0 + 11 +12912.499974 + 21 +9185.04811 + 31 +0.0 + 0 +LINE + 5 +167D + 8 +0 + 62 + 0 + 10 +12937.499974 + 20 +9228.34938 + 30 +0.0 + 11 +12949.999965 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +167E + 8 +0 + 62 + 0 + 10 +12899.999974 + 20 +9206.698745 + 30 +0.0 + 11 +12912.499974 + 21 +9228.34938 + 31 +0.0 + 0 +LINE + 5 +167F + 8 +0 + 62 + 0 + 10 +12862.499974 + 20 +9185.04811 + 30 +0.0 + 11 +12874.999974 + 21 +9206.698745 + 31 +0.0 + 0 +LINE + 5 +1680 + 8 +0 + 62 + 0 + 10 +12828.811944 + 20 +9170.0 + 30 +0.0 + 11 +12837.499974 + 21 +9185.04811 + 31 +0.0 + 0 +LINE + 5 +1681 + 8 +0 + 62 + 0 + 10 +12862.499974 + 20 +9228.34938 + 30 +0.0 + 11 +12874.999966 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1682 + 8 +0 + 62 + 0 + 10 +12824.999974 + 20 +9206.698745 + 30 +0.0 + 11 +12837.499974 + 21 +9228.34938 + 31 +0.0 + 0 +LINE + 5 +1683 + 8 +0 + 62 + 0 + 10 +12787.499974 + 20 +9185.04811 + 30 +0.0 + 11 +12799.999974 + 21 +9206.698745 + 31 +0.0 + 0 +LINE + 5 +1684 + 8 +0 + 62 + 0 + 10 +12753.811944 + 20 +9170.0 + 30 +0.0 + 11 +12762.499974 + 21 +9185.048109 + 31 +0.0 + 0 +LINE + 5 +1685 + 8 +0 + 62 + 0 + 10 +12787.499974 + 20 +9228.34938 + 30 +0.0 + 11 +12799.999966 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1686 + 8 +0 + 62 + 0 + 10 +12749.999975 + 20 +9206.698745 + 30 +0.0 + 11 +12762.499975 + 21 +9228.34938 + 31 +0.0 + 0 +LINE + 5 +1687 + 8 +0 + 62 + 0 + 10 +12712.499975 + 20 +9185.048109 + 30 +0.0 + 11 +12724.999975 + 21 +9206.698744 + 31 +0.0 + 0 +LINE + 5 +1688 + 8 +0 + 62 + 0 + 10 +12678.811945 + 20 +9170.0 + 30 +0.0 + 11 +12687.499975 + 21 +9185.048109 + 31 +0.0 + 0 +LINE + 5 +1689 + 8 +0 + 62 + 0 + 10 +12712.499975 + 20 +9228.34938 + 30 +0.0 + 11 +12724.999966 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +168A + 8 +0 + 62 + 0 + 10 +12674.999975 + 20 +9206.698744 + 30 +0.0 + 11 +12687.499975 + 21 +9228.349379 + 31 +0.0 + 0 +LINE + 5 +168B + 8 +0 + 62 + 0 + 10 +12637.499975 + 20 +9185.048109 + 30 +0.0 + 11 +12649.999975 + 21 +9206.698744 + 31 +0.0 + 0 +LINE + 5 +168C + 8 +0 + 62 + 0 + 10 +12603.811945 + 20 +9170.0 + 30 +0.0 + 11 +12612.499975 + 21 +9185.048109 + 31 +0.0 + 0 +LINE + 5 +168D + 8 +0 + 62 + 0 + 10 +12637.499975 + 20 +9228.349379 + 30 +0.0 + 11 +12649.999967 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +168E + 8 +0 + 62 + 0 + 10 +12599.999975 + 20 +9206.698744 + 30 +0.0 + 11 +12612.499975 + 21 +9228.349379 + 31 +0.0 + 0 +LINE + 5 +168F + 8 +0 + 62 + 0 + 10 +12562.499975 + 20 +9185.048109 + 30 +0.0 + 11 +12574.999975 + 21 +9206.698744 + 31 +0.0 + 0 +LINE + 5 +1690 + 8 +0 + 62 + 0 + 10 +12528.811945 + 20 +9170.0 + 30 +0.0 + 11 +12537.499975 + 21 +9185.048109 + 31 +0.0 + 0 +LINE + 5 +1691 + 8 +0 + 62 + 0 + 10 +12562.499975 + 20 +9228.349379 + 30 +0.0 + 11 +12574.999967 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1692 + 8 +0 + 62 + 0 + 10 +12524.999975 + 20 +9206.698744 + 30 +0.0 + 11 +12537.499975 + 21 +9228.349379 + 31 +0.0 + 0 +LINE + 5 +1693 + 8 +0 + 62 + 0 + 10 +12487.499975 + 20 +9185.048109 + 30 +0.0 + 11 +12499.999975 + 21 +9206.698744 + 31 +0.0 + 0 +LINE + 5 +1694 + 8 +0 + 62 + 0 + 10 +12453.811946 + 20 +9170.0 + 30 +0.0 + 11 +12462.499975 + 21 +9185.048109 + 31 +0.0 + 0 +LINE + 5 +1695 + 8 +0 + 62 + 0 + 10 +12487.499975 + 20 +9228.349379 + 30 +0.0 + 11 +12499.999967 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1696 + 8 +0 + 62 + 0 + 10 +12449.999976 + 20 +9206.698744 + 30 +0.0 + 11 +12462.499976 + 21 +9228.349379 + 31 +0.0 + 0 +LINE + 5 +1697 + 8 +0 + 62 + 0 + 10 +12412.499976 + 20 +9185.048109 + 30 +0.0 + 11 +12424.999976 + 21 +9206.698744 + 31 +0.0 + 0 +LINE + 5 +1698 + 8 +0 + 62 + 0 + 10 +12378.811946 + 20 +9170.0 + 30 +0.0 + 11 +12387.499976 + 21 +9185.048109 + 31 +0.0 + 0 +LINE + 5 +1699 + 8 +0 + 62 + 0 + 10 +12412.499976 + 20 +9228.349379 + 30 +0.0 + 11 +12424.999968 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +169A + 8 +0 + 62 + 0 + 10 +12374.999976 + 20 +9206.698744 + 30 +0.0 + 11 +12387.499976 + 21 +9228.349379 + 31 +0.0 + 0 +LINE + 5 +169B + 8 +0 + 62 + 0 + 10 +12337.499976 + 20 +9185.048109 + 30 +0.0 + 11 +12349.999976 + 21 +9206.698744 + 31 +0.0 + 0 +LINE + 5 +169C + 8 +0 + 62 + 0 + 10 +12303.811946 + 20 +9170.0 + 30 +0.0 + 11 +12312.499976 + 21 +9185.048109 + 31 +0.0 + 0 +LINE + 5 +169D + 8 +0 + 62 + 0 + 10 +12337.499976 + 20 +9228.349379 + 30 +0.0 + 11 +12349.999968 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +169E + 8 +0 + 62 + 0 + 10 +12299.999976 + 20 +9206.698744 + 30 +0.0 + 11 +12312.499976 + 21 +9228.349379 + 31 +0.0 + 0 +LINE + 5 +169F + 8 +0 + 62 + 0 + 10 +12262.499976 + 20 +9185.048109 + 30 +0.0 + 11 +12274.999976 + 21 +9206.698744 + 31 +0.0 + 0 +LINE + 5 +16A0 + 8 +0 + 62 + 0 + 10 +12228.811947 + 20 +9170.0 + 30 +0.0 + 11 +12237.499976 + 21 +9185.048108 + 31 +0.0 + 0 +LINE + 5 +16A1 + 8 +0 + 62 + 0 + 10 +12262.499976 + 20 +9228.349379 + 30 +0.0 + 11 +12274.999968 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16A2 + 8 +0 + 62 + 0 + 10 +12224.999976 + 20 +9206.698744 + 30 +0.0 + 11 +12237.499976 + 21 +9228.349379 + 31 +0.0 + 0 +LINE + 5 +16A3 + 8 +0 + 62 + 0 + 10 +12187.499976 + 20 +9185.048108 + 30 +0.0 + 11 +12199.999976 + 21 +9206.698743 + 31 +0.0 + 0 +LINE + 5 +16A4 + 8 +0 + 62 + 0 + 10 +12153.811947 + 20 +9170.0 + 30 +0.0 + 11 +12162.499976 + 21 +9185.048108 + 31 +0.0 + 0 +LINE + 5 +16A5 + 8 +0 + 62 + 0 + 10 +12187.499976 + 20 +9228.349379 + 30 +0.0 + 11 +12199.999969 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16A6 + 8 +0 + 62 + 0 + 10 +12149.999976 + 20 +9206.698743 + 30 +0.0 + 11 +12162.499976 + 21 +9228.349378 + 31 +0.0 + 0 +LINE + 5 +16A7 + 8 +0 + 62 + 0 + 10 +12112.499977 + 20 +9185.048108 + 30 +0.0 + 11 +12124.999977 + 21 +9206.698743 + 31 +0.0 + 0 +LINE + 5 +16A8 + 8 +0 + 62 + 0 + 10 +12078.811947 + 20 +9170.0 + 30 +0.0 + 11 +12087.499977 + 21 +9185.048108 + 31 +0.0 + 0 +LINE + 5 +16A9 + 8 +0 + 62 + 0 + 10 +12112.499977 + 20 +9228.349378 + 30 +0.0 + 11 +12124.999969 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16AA + 8 +0 + 62 + 0 + 10 +12074.999977 + 20 +9206.698743 + 30 +0.0 + 11 +12087.499977 + 21 +9228.349378 + 31 +0.0 + 0 +LINE + 5 +16AB + 8 +0 + 62 + 0 + 10 +12037.499977 + 20 +9185.048108 + 30 +0.0 + 11 +12049.999977 + 21 +9206.698743 + 31 +0.0 + 0 +LINE + 5 +16AC + 8 +0 + 62 + 0 + 10 +12003.811948 + 20 +9170.0 + 30 +0.0 + 11 +12012.499977 + 21 +9185.048108 + 31 +0.0 + 0 +LINE + 5 +16AD + 8 +0 + 62 + 0 + 10 +12037.499977 + 20 +9228.349378 + 30 +0.0 + 11 +12049.999969 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16AE + 8 +0 + 62 + 0 + 10 +11999.999977 + 20 +9206.698743 + 30 +0.0 + 11 +12012.499977 + 21 +9228.349378 + 31 +0.0 + 0 +LINE + 5 +16AF + 8 +0 + 62 + 0 + 10 +11962.499977 + 20 +9185.048108 + 30 +0.0 + 11 +11974.999977 + 21 +9206.698743 + 31 +0.0 + 0 +LINE + 5 +16B0 + 8 +0 + 62 + 0 + 10 +11928.811948 + 20 +9170.0 + 30 +0.0 + 11 +11937.499977 + 21 +9185.048108 + 31 +0.0 + 0 +LINE + 5 +16B1 + 8 +0 + 62 + 0 + 10 +11962.499977 + 20 +9228.349378 + 30 +0.0 + 11 +11974.99997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16B2 + 8 +0 + 62 + 0 + 10 +11924.999977 + 20 +9206.698743 + 30 +0.0 + 11 +11937.499977 + 21 +9228.349378 + 31 +0.0 + 0 +LINE + 5 +16B3 + 8 +0 + 62 + 0 + 10 +11887.499977 + 20 +9185.048108 + 30 +0.0 + 11 +11899.999977 + 21 +9206.698743 + 31 +0.0 + 0 +LINE + 5 +16B4 + 8 +0 + 62 + 0 + 10 +11853.811948 + 20 +9170.0 + 30 +0.0 + 11 +11862.499977 + 21 +9185.048108 + 31 +0.0 + 0 +LINE + 5 +16B5 + 8 +0 + 62 + 0 + 10 +11887.499977 + 20 +9228.349378 + 30 +0.0 + 11 +11899.99997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16B6 + 8 +0 + 62 + 0 + 10 +11849.999977 + 20 +9206.698743 + 30 +0.0 + 11 +11862.499977 + 21 +9228.349378 + 31 +0.0 + 0 +LINE + 5 +16B7 + 8 +0 + 62 + 0 + 10 +11812.499978 + 20 +9185.048108 + 30 +0.0 + 11 +11824.999978 + 21 +9206.698743 + 31 +0.0 + 0 +LINE + 5 +16B8 + 8 +0 + 62 + 0 + 10 +11778.811949 + 20 +9170.0 + 30 +0.0 + 11 +11787.499978 + 21 +9185.048108 + 31 +0.0 + 0 +LINE + 5 +16B9 + 8 +0 + 62 + 0 + 10 +11812.499978 + 20 +9228.349378 + 30 +0.0 + 11 +11824.99997 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16BA + 8 +0 + 62 + 0 + 10 +11774.999978 + 20 +9206.698743 + 30 +0.0 + 11 +11787.499978 + 21 +9228.349378 + 31 +0.0 + 0 +LINE + 5 +16BB + 8 +0 + 62 + 0 + 10 +11737.499978 + 20 +9185.048108 + 30 +0.0 + 11 +11749.999978 + 21 +9206.698743 + 31 +0.0 + 0 +LINE + 5 +16BC + 8 +0 + 62 + 0 + 10 +11703.811949 + 20 +9170.0 + 30 +0.0 + 11 +11712.499978 + 21 +9185.048107 + 31 +0.0 + 0 +LINE + 5 +16BD + 8 +0 + 62 + 0 + 10 +11737.499978 + 20 +9228.349378 + 30 +0.0 + 11 +11749.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16BE + 8 +0 + 62 + 0 + 10 +11699.999978 + 20 +9206.698743 + 30 +0.0 + 11 +11712.499978 + 21 +9228.349378 + 31 +0.0 + 0 +LINE + 5 +16BF + 8 +0 + 62 + 0 + 10 +11662.499978 + 20 +9185.048107 + 30 +0.0 + 11 +11674.999978 + 21 +9206.698742 + 31 +0.0 + 0 +LINE + 5 +16C0 + 8 +0 + 62 + 0 + 10 +11628.811949 + 20 +9170.0 + 30 +0.0 + 11 +11637.499978 + 21 +9185.048107 + 31 +0.0 + 0 +LINE + 5 +16C1 + 8 +0 + 62 + 0 + 10 +11662.499978 + 20 +9228.349378 + 30 +0.0 + 11 +11674.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16C2 + 8 +0 + 62 + 0 + 10 +11624.999978 + 20 +9206.698742 + 30 +0.0 + 11 +11637.499978 + 21 +9228.349377 + 31 +0.0 + 0 +LINE + 5 +16C3 + 8 +0 + 62 + 0 + 10 +11587.499978 + 20 +9185.048107 + 30 +0.0 + 11 +11599.999978 + 21 +9206.698742 + 31 +0.0 + 0 +LINE + 5 +16C4 + 8 +0 + 62 + 0 + 10 +11553.81195 + 20 +9170.0 + 30 +0.0 + 11 +11562.499978 + 21 +9185.048107 + 31 +0.0 + 0 +LINE + 5 +16C5 + 8 +0 + 62 + 0 + 10 +11587.499978 + 20 +9228.349377 + 30 +0.0 + 11 +11599.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16C6 + 8 +0 + 62 + 0 + 10 +11549.999978 + 20 +9206.698742 + 30 +0.0 + 11 +11562.499978 + 21 +9228.349377 + 31 +0.0 + 0 +LINE + 5 +16C7 + 8 +0 + 62 + 0 + 10 +11512.499979 + 20 +9185.048107 + 30 +0.0 + 11 +11524.999979 + 21 +9206.698742 + 31 +0.0 + 0 +LINE + 5 +16C8 + 8 +0 + 62 + 0 + 10 +11478.81195 + 20 +9170.0 + 30 +0.0 + 11 +11487.499979 + 21 +9185.048107 + 31 +0.0 + 0 +LINE + 5 +16C9 + 8 +0 + 62 + 0 + 10 +11512.499979 + 20 +9228.349377 + 30 +0.0 + 11 +11524.999971 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16CA + 8 +0 + 62 + 0 + 10 +11474.999979 + 20 +9206.698742 + 30 +0.0 + 11 +11487.499979 + 21 +9228.349377 + 31 +0.0 + 0 +LINE + 5 +16CB + 8 +0 + 62 + 0 + 10 +11437.499979 + 20 +9185.048107 + 30 +0.0 + 11 +11449.999979 + 21 +9206.698742 + 31 +0.0 + 0 +LINE + 5 +16CC + 8 +0 + 62 + 0 + 10 +11403.81195 + 20 +9170.0 + 30 +0.0 + 11 +11412.499979 + 21 +9185.048107 + 31 +0.0 + 0 +LINE + 5 +16CD + 8 +0 + 62 + 0 + 10 +11437.499979 + 20 +9228.349377 + 30 +0.0 + 11 +11449.999972 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16CE + 8 +0 + 62 + 0 + 10 +11399.999979 + 20 +9206.698742 + 30 +0.0 + 11 +11412.499979 + 21 +9228.349377 + 31 +0.0 + 0 +LINE + 5 +16CF + 8 +0 + 62 + 0 + 10 +11362.499979 + 20 +9185.048107 + 30 +0.0 + 11 +11374.999979 + 21 +9206.698742 + 31 +0.0 + 0 +LINE + 5 +16D0 + 8 +0 + 62 + 0 + 10 +11328.811951 + 20 +9170.0 + 30 +0.0 + 11 +11337.499979 + 21 +9185.048107 + 31 +0.0 + 0 +LINE + 5 +16D1 + 8 +0 + 62 + 0 + 10 +11362.499979 + 20 +9228.349377 + 30 +0.0 + 11 +11374.999972 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16D2 + 8 +0 + 62 + 0 + 10 +11324.999979 + 20 +9206.698742 + 30 +0.0 + 11 +11337.499979 + 21 +9228.349377 + 31 +0.0 + 0 +LINE + 5 +16D3 + 8 +0 + 62 + 0 + 10 +11287.499979 + 20 +9185.048107 + 30 +0.0 + 11 +11299.999979 + 21 +9206.698742 + 31 +0.0 + 0 +LINE + 5 +16D4 + 8 +0 + 62 + 0 + 10 +11253.811951 + 20 +9170.0 + 30 +0.0 + 11 +11262.499979 + 21 +9185.048107 + 31 +0.0 + 0 +LINE + 5 +16D5 + 8 +0 + 62 + 0 + 10 +11287.499979 + 20 +9228.349377 + 30 +0.0 + 11 +11299.999972 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16D6 + 8 +0 + 62 + 0 + 10 +11249.999979 + 20 +9206.698742 + 30 +0.0 + 11 +11262.499979 + 21 +9228.349377 + 31 +0.0 + 0 +LINE + 5 +16D7 + 8 +0 + 62 + 0 + 10 +13687.499971 + 20 +9185.048111 + 30 +0.0 + 11 +13699.999971 + 21 +9206.698746 + 31 +0.0 + 0 +LINE + 5 +16D8 + 8 +0 + 62 + 0 + 10 +13724.999971 + 20 +9206.698746 + 30 +0.0 + 11 +13737.499971 + 21 +9228.349381 + 31 +0.0 + 0 +LINE + 5 +16D9 + 8 +0 + 62 + 0 + 10 +13728.81194 + 20 +9170.0 + 30 +0.0 + 11 +13737.499971 + 21 +9185.048111 + 31 +0.0 + 0 +LINE + 5 +16DA + 8 +0 + 62 + 0 + 10 +13762.499971 + 20 +9228.349382 + 30 +0.0 + 11 +13774.999962 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16DB + 8 +0 + 62 + 0 + 10 +13762.499971 + 20 +9185.048111 + 30 +0.0 + 11 +13774.999971 + 21 +9206.698746 + 31 +0.0 + 0 +LINE + 5 +16DC + 8 +0 + 62 + 0 + 10 +13799.999971 + 20 +9206.698747 + 30 +0.0 + 11 +13812.499971 + 21 +9228.349382 + 31 +0.0 + 0 +LINE + 5 +16DD + 8 +0 + 62 + 0 + 10 +13803.81194 + 20 +9170.0 + 30 +0.0 + 11 +13812.499971 + 21 +9185.048111 + 31 +0.0 + 0 +LINE + 5 +16DE + 8 +0 + 62 + 0 + 10 +13837.499971 + 20 +9228.349382 + 30 +0.0 + 11 +13849.999961 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16DF + 8 +0 + 62 + 0 + 10 +13837.499971 + 20 +9185.048112 + 30 +0.0 + 11 +13849.999971 + 21 +9206.698747 + 31 +0.0 + 0 +LINE + 5 +16E0 + 8 +0 + 62 + 0 + 10 +13874.999971 + 20 +9206.698747 + 30 +0.0 + 11 +13887.499971 + 21 +9228.349382 + 31 +0.0 + 0 +LINE + 5 +16E1 + 8 +0 + 62 + 0 + 10 +13878.811939 + 20 +9170.0 + 30 +0.0 + 11 +13887.499971 + 21 +9185.048112 + 31 +0.0 + 0 +LINE + 5 +16E2 + 8 +0 + 62 + 0 + 10 +13912.499971 + 20 +9228.349382 + 30 +0.0 + 11 +13924.999961 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16E3 + 8 +0 + 62 + 0 + 10 +13912.499971 + 20 +9185.048112 + 30 +0.0 + 11 +13924.999971 + 21 +9206.698747 + 31 +0.0 + 0 +LINE + 5 +16E4 + 8 +0 + 62 + 0 + 10 +13949.999971 + 20 +9206.698747 + 30 +0.0 + 11 +13962.499971 + 21 +9228.349382 + 31 +0.0 + 0 +LINE + 5 +16E5 + 8 +0 + 62 + 0 + 10 +13953.811939 + 20 +9170.0 + 30 +0.0 + 11 +13962.499971 + 21 +9185.048112 + 31 +0.0 + 0 +LINE + 5 +16E6 + 8 +0 + 62 + 0 + 10 +13987.499971 + 20 +9228.349382 + 30 +0.0 + 11 +13999.999961 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16E7 + 8 +0 + 62 + 0 + 10 +13987.49997 + 20 +9185.048112 + 30 +0.0 + 11 +13999.99997 + 21 +9206.698747 + 31 +0.0 + 0 +LINE + 5 +16E8 + 8 +0 + 62 + 0 + 10 +14024.99997 + 20 +9206.698747 + 30 +0.0 + 11 +14037.49997 + 21 +9228.349382 + 31 +0.0 + 0 +LINE + 5 +16E9 + 8 +0 + 62 + 0 + 10 +14028.811939 + 20 +9170.0 + 30 +0.0 + 11 +14037.49997 + 21 +9185.048112 + 31 +0.0 + 0 +LINE + 5 +16EA + 8 +0 + 62 + 0 + 10 +14062.49997 + 20 +9228.349382 + 30 +0.0 + 11 +14074.99996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16EB + 8 +0 + 62 + 0 + 10 +14062.49997 + 20 +9185.048112 + 30 +0.0 + 11 +14074.99997 + 21 +9206.698747 + 31 +0.0 + 0 +LINE + 5 +16EC + 8 +0 + 62 + 0 + 10 +14099.99997 + 20 +9206.698747 + 30 +0.0 + 11 +14112.49997 + 21 +9228.349382 + 31 +0.0 + 0 +LINE + 5 +16ED + 8 +0 + 62 + 0 + 10 +14103.811938 + 20 +9170.0 + 30 +0.0 + 11 +14112.49997 + 21 +9185.048112 + 31 +0.0 + 0 +LINE + 5 +16EE + 8 +0 + 62 + 0 + 10 +14137.49997 + 20 +9228.349382 + 30 +0.0 + 11 +14149.99996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16EF + 8 +0 + 62 + 0 + 10 +14137.49997 + 20 +9185.048112 + 30 +0.0 + 11 +14149.99997 + 21 +9206.698747 + 31 +0.0 + 0 +LINE + 5 +16F0 + 8 +0 + 62 + 0 + 10 +14174.99997 + 20 +9206.698747 + 30 +0.0 + 11 +14187.49997 + 21 +9228.349382 + 31 +0.0 + 0 +LINE + 5 +16F1 + 8 +0 + 62 + 0 + 10 +14178.811938 + 20 +9170.0 + 30 +0.0 + 11 +14187.49997 + 21 +9185.048112 + 31 +0.0 + 0 +LINE + 5 +16F2 + 8 +0 + 62 + 0 + 10 +14212.49997 + 20 +9228.349382 + 30 +0.0 + 11 +14224.99996 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16F3 + 8 +0 + 62 + 0 + 10 +14212.49997 + 20 +9185.048112 + 30 +0.0 + 11 +14224.99997 + 21 +9206.698747 + 31 +0.0 + 0 +LINE + 5 +16F4 + 8 +0 + 62 + 0 + 10 +14249.99997 + 20 +9206.698747 + 30 +0.0 + 11 +14262.49997 + 21 +9228.349382 + 31 +0.0 + 0 +LINE + 5 +16F5 + 8 +0 + 62 + 0 + 10 +14253.811938 + 20 +9170.0 + 30 +0.0 + 11 +14262.49997 + 21 +9185.048112 + 31 +0.0 + 0 +LINE + 5 +16F6 + 8 +0 + 62 + 0 + 10 +14287.49997 + 20 +9228.349383 + 30 +0.0 + 11 +14299.999959 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16F7 + 8 +0 + 62 + 0 + 10 +14287.499969 + 20 +9185.048112 + 30 +0.0 + 11 +14299.999969 + 21 +9206.698747 + 31 +0.0 + 0 +LINE + 5 +16F8 + 8 +0 + 62 + 0 + 10 +14324.999969 + 20 +9206.698748 + 30 +0.0 + 11 +14337.499969 + 21 +9228.349383 + 31 +0.0 + 0 +LINE + 5 +16F9 + 8 +0 + 62 + 0 + 10 +14328.811937 + 20 +9170.0 + 30 +0.0 + 11 +14337.499969 + 21 +9185.048112 + 31 +0.0 + 0 +LINE + 5 +16FA + 8 +0 + 62 + 0 + 10 +14362.499969 + 20 +9228.349383 + 30 +0.0 + 11 +14374.999959 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16FB + 8 +0 + 62 + 0 + 10 +14362.499969 + 20 +9185.048113 + 30 +0.0 + 11 +14374.999969 + 21 +9206.698748 + 31 +0.0 + 0 +LINE + 5 +16FC + 8 +0 + 62 + 0 + 10 +14399.999969 + 20 +9206.698748 + 30 +0.0 + 11 +14412.499969 + 21 +9228.349383 + 31 +0.0 + 0 +LINE + 5 +16FD + 8 +0 + 62 + 0 + 10 +14403.811937 + 20 +9170.0 + 30 +0.0 + 11 +14412.499969 + 21 +9185.048113 + 31 +0.0 + 0 +LINE + 5 +16FE + 8 +0 + 62 + 0 + 10 +14437.499969 + 20 +9228.349383 + 30 +0.0 + 11 +14449.999959 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +16FF + 8 +0 + 62 + 0 + 10 +14437.499969 + 20 +9185.048113 + 30 +0.0 + 11 +14449.999969 + 21 +9206.698748 + 31 +0.0 + 0 +LINE + 5 +1700 + 8 +0 + 62 + 0 + 10 +14474.999969 + 20 +9206.698748 + 30 +0.0 + 11 +14487.499969 + 21 +9228.349383 + 31 +0.0 + 0 +LINE + 5 +1701 + 8 +0 + 62 + 0 + 10 +14478.811937 + 20 +9170.0 + 30 +0.0 + 11 +14487.499969 + 21 +9185.048113 + 31 +0.0 + 0 +LINE + 5 +1702 + 8 +0 + 62 + 0 + 10 +14512.499969 + 20 +9228.349383 + 30 +0.0 + 11 +14524.999958 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1703 + 8 +0 + 62 + 0 + 10 +14512.499969 + 20 +9185.048113 + 30 +0.0 + 11 +14524.999969 + 21 +9206.698748 + 31 +0.0 + 0 +LINE + 5 +1704 + 8 +0 + 62 + 0 + 10 +14549.999969 + 20 +9206.698748 + 30 +0.0 + 11 +14562.499969 + 21 +9228.349383 + 31 +0.0 + 0 +LINE + 5 +1705 + 8 +0 + 62 + 0 + 10 +14553.811937 + 20 +9170.0 + 30 +0.0 + 11 +14562.499969 + 21 +9185.048113 + 31 +0.0 + 0 +LINE + 5 +1706 + 8 +0 + 62 + 0 + 10 +14587.499969 + 20 +9228.349383 + 30 +0.0 + 11 +14599.999958 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1707 + 8 +0 + 62 + 0 + 10 +14587.499968 + 20 +9185.048113 + 30 +0.0 + 11 +14599.999968 + 21 +9206.698748 + 31 +0.0 + 0 +LINE + 5 +1708 + 8 +0 + 62 + 0 + 10 +14624.999968 + 20 +9206.698748 + 30 +0.0 + 11 +14637.499968 + 21 +9228.349383 + 31 +0.0 + 0 +LINE + 5 +1709 + 8 +0 + 62 + 0 + 10 +14628.811936 + 20 +9170.0 + 30 +0.0 + 11 +14637.499968 + 21 +9185.048113 + 31 +0.0 + 0 +LINE + 5 +170A + 8 +0 + 62 + 0 + 10 +14662.499968 + 20 +9228.349383 + 30 +0.0 + 11 +14674.999958 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +170B + 8 +0 + 62 + 0 + 10 +14662.499968 + 20 +9185.048113 + 30 +0.0 + 11 +14674.999968 + 21 +9206.698748 + 31 +0.0 + 0 +LINE + 5 +170C + 8 +0 + 62 + 0 + 10 +14699.999968 + 20 +9206.698748 + 30 +0.0 + 11 +14712.499968 + 21 +9228.349383 + 31 +0.0 + 0 +LINE + 5 +170D + 8 +0 + 62 + 0 + 10 +14703.811936 + 20 +9170.0 + 30 +0.0 + 11 +14712.499968 + 21 +9185.048113 + 31 +0.0 + 0 +LINE + 5 +170E + 8 +0 + 62 + 0 + 10 +14737.499968 + 20 +9228.349383 + 30 +0.0 + 11 +14749.999957 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +170F + 8 +0 + 62 + 0 + 10 +14737.499968 + 20 +9185.048113 + 30 +0.0 + 11 +14749.999968 + 21 +9206.698748 + 31 +0.0 + 0 +LINE + 5 +1710 + 8 +0 + 62 + 0 + 10 +14774.999968 + 20 +9206.698748 + 30 +0.0 + 11 +14787.499968 + 21 +9228.349383 + 31 +0.0 + 0 +LINE + 5 +1711 + 8 +0 + 62 + 0 + 10 +14778.811936 + 20 +9170.0 + 30 +0.0 + 11 +14787.499968 + 21 +9185.048113 + 31 +0.0 + 0 +LINE + 5 +1712 + 8 +0 + 62 + 0 + 10 +14812.499968 + 20 +9228.349383 + 30 +0.0 + 11 +14824.999957 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1713 + 8 +0 + 62 + 0 + 10 +14812.499968 + 20 +9185.048113 + 30 +0.0 + 11 +14824.999968 + 21 +9206.698748 + 31 +0.0 + 0 +LINE + 5 +1714 + 8 +0 + 62 + 0 + 10 +14849.999968 + 20 +9206.698748 + 30 +0.0 + 11 +14862.499968 + 21 +9228.349384 + 31 +0.0 + 0 +LINE + 5 +1715 + 8 +0 + 62 + 0 + 10 +14853.811935 + 20 +9170.0 + 30 +0.0 + 11 +14862.499968 + 21 +9185.048113 + 31 +0.0 + 0 +LINE + 5 +1716 + 8 +0 + 62 + 0 + 10 +14887.499968 + 20 +9228.349384 + 30 +0.0 + 11 +14899.999957 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1717 + 8 +0 + 62 + 0 + 10 +14887.499967 + 20 +9185.048113 + 30 +0.0 + 11 +14899.999967 + 21 +9206.698749 + 31 +0.0 + 0 +LINE + 5 +1718 + 8 +0 + 62 + 0 + 10 +14924.999967 + 20 +9206.698749 + 30 +0.0 + 11 +14937.499967 + 21 +9228.349384 + 31 +0.0 + 0 +LINE + 5 +1719 + 8 +0 + 62 + 0 + 10 +14928.811935 + 20 +9170.0 + 30 +0.0 + 11 +14937.499967 + 21 +9185.048114 + 31 +0.0 + 0 +LINE + 5 +171A + 8 +0 + 62 + 0 + 10 +14962.499967 + 20 +9228.349384 + 30 +0.0 + 11 +14974.999956 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +171B + 8 +0 + 62 + 0 + 10 +14962.499967 + 20 +9185.048114 + 30 +0.0 + 11 +14974.999967 + 21 +9206.698749 + 31 +0.0 + 0 +LINE + 5 +171C + 8 +0 + 62 + 0 + 10 +14999.999967 + 20 +9206.698749 + 30 +0.0 + 11 +15012.499967 + 21 +9228.349384 + 31 +0.0 + 0 +LINE + 5 +171D + 8 +0 + 62 + 0 + 10 +15003.811935 + 20 +9170.0 + 30 +0.0 + 11 +15012.499967 + 21 +9185.048114 + 31 +0.0 + 0 +LINE + 5 +171E + 8 +0 + 62 + 0 + 10 +15037.499967 + 20 +9228.349384 + 30 +0.0 + 11 +15049.999956 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +171F + 8 +0 + 62 + 0 + 10 +15037.499967 + 20 +9185.048114 + 30 +0.0 + 11 +15049.999967 + 21 +9206.698749 + 31 +0.0 + 0 +LINE + 5 +1720 + 8 +0 + 62 + 0 + 10 +15074.999967 + 20 +9206.698749 + 30 +0.0 + 11 +15087.499967 + 21 +9228.349384 + 31 +0.0 + 0 +LINE + 5 +1721 + 8 +0 + 62 + 0 + 10 +15078.811934 + 20 +9170.0 + 30 +0.0 + 11 +15087.499967 + 21 +9185.048114 + 31 +0.0 + 0 +LINE + 5 +1722 + 8 +0 + 62 + 0 + 10 +15112.499967 + 20 +9228.349384 + 30 +0.0 + 11 +15124.999956 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1723 + 8 +0 + 62 + 0 + 10 +15112.499967 + 20 +9185.048114 + 30 +0.0 + 11 +15124.999967 + 21 +9206.698749 + 31 +0.0 + 0 +LINE + 5 +1724 + 8 +0 + 62 + 0 + 10 +15149.999967 + 20 +9206.698749 + 30 +0.0 + 11 +15162.499967 + 21 +9228.349384 + 31 +0.0 + 0 +LINE + 5 +1725 + 8 +0 + 62 + 0 + 10 +15153.811934 + 20 +9170.0 + 30 +0.0 + 11 +15162.499967 + 21 +9185.048114 + 31 +0.0 + 0 +LINE + 5 +1726 + 8 +0 + 62 + 0 + 10 +15187.499967 + 20 +9228.349384 + 30 +0.0 + 11 +15199.999955 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1727 + 8 +0 + 62 + 0 + 10 +15187.499966 + 20 +9185.048114 + 30 +0.0 + 11 +15199.999966 + 21 +9206.698749 + 31 +0.0 + 0 +LINE + 5 +1728 + 8 +0 + 62 + 0 + 10 +15224.999966 + 20 +9206.698749 + 30 +0.0 + 11 +15237.499966 + 21 +9228.349384 + 31 +0.0 + 0 +LINE + 5 +1729 + 8 +0 + 62 + 0 + 10 +15228.811934 + 20 +9170.0 + 30 +0.0 + 11 +15237.499966 + 21 +9185.048114 + 31 +0.0 + 0 +LINE + 5 +172A + 8 +0 + 62 + 0 + 10 +15262.499966 + 20 +9228.349384 + 30 +0.0 + 11 +15274.999955 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +172B + 8 +0 + 62 + 0 + 10 +15262.499966 + 20 +9185.048114 + 30 +0.0 + 11 +15274.999966 + 21 +9206.698749 + 31 +0.0 + 0 +LINE + 5 +172C + 8 +0 + 62 + 0 + 10 +15299.999966 + 20 +9206.698749 + 30 +0.0 + 11 +15312.499966 + 21 +9228.349384 + 31 +0.0 + 0 +LINE + 5 +172D + 8 +0 + 62 + 0 + 10 +15303.811933 + 20 +9170.0 + 30 +0.0 + 11 +15312.499966 + 21 +9185.048114 + 31 +0.0 + 0 +LINE + 5 +172E + 8 +0 + 62 + 0 + 10 +15337.499966 + 20 +9228.349384 + 30 +0.0 + 11 +15349.999955 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +172F + 8 +0 + 62 + 0 + 10 +15337.499966 + 20 +9185.048114 + 30 +0.0 + 11 +15349.999966 + 21 +9206.698749 + 31 +0.0 + 0 +LINE + 5 +1730 + 8 +0 + 62 + 0 + 10 +15374.999966 + 20 +9206.698749 + 30 +0.0 + 11 +15387.499966 + 21 +9228.349385 + 31 +0.0 + 0 +LINE + 5 +1731 + 8 +0 + 62 + 0 + 10 +15378.811933 + 20 +9170.0 + 30 +0.0 + 11 +15387.499966 + 21 +9185.048114 + 31 +0.0 + 0 +LINE + 5 +1732 + 8 +0 + 62 + 0 + 10 +15412.499966 + 20 +9228.349385 + 30 +0.0 + 11 +15424.999954 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1733 + 8 +0 + 62 + 0 + 10 +15412.499966 + 20 +9185.048114 + 30 +0.0 + 11 +15424.999966 + 21 +9206.69875 + 31 +0.0 + 0 +LINE + 5 +1734 + 8 +0 + 62 + 0 + 10 +15449.999966 + 20 +9206.69875 + 30 +0.0 + 11 +15462.499966 + 21 +9228.349385 + 31 +0.0 + 0 +LINE + 5 +1735 + 8 +0 + 62 + 0 + 10 +15453.811933 + 20 +9170.0 + 30 +0.0 + 11 +15462.499966 + 21 +9185.048115 + 31 +0.0 + 0 +LINE + 5 +1736 + 8 +0 + 62 + 0 + 10 +15487.499966 + 20 +9228.349385 + 30 +0.0 + 11 +15499.999954 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1737 + 8 +0 + 62 + 0 + 10 +15487.499966 + 20 +9185.048115 + 30 +0.0 + 11 +15499.999966 + 21 +9206.69875 + 31 +0.0 + 0 +LINE + 5 +1738 + 8 +0 + 62 + 0 + 10 +15524.999965 + 20 +9206.69875 + 30 +0.0 + 11 +15537.499965 + 21 +9228.349385 + 31 +0.0 + 0 +LINE + 5 +1739 + 8 +0 + 62 + 0 + 10 +15528.811932 + 20 +9170.0 + 30 +0.0 + 11 +15537.499965 + 21 +9185.048115 + 31 +0.0 + 0 +LINE + 5 +173A + 8 +0 + 62 + 0 + 10 +15562.499965 + 20 +9228.349385 + 30 +0.0 + 11 +15574.999954 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +173B + 8 +0 + 62 + 0 + 10 +15562.499965 + 20 +9185.048115 + 30 +0.0 + 11 +15574.999965 + 21 +9206.69875 + 31 +0.0 + 0 +LINE + 5 +173C + 8 +0 + 62 + 0 + 10 +15599.999965 + 20 +9206.69875 + 30 +0.0 + 11 +15612.499965 + 21 +9228.349385 + 31 +0.0 + 0 +LINE + 5 +173D + 8 +0 + 62 + 0 + 10 +15603.811932 + 20 +9170.0 + 30 +0.0 + 11 +15612.499965 + 21 +9185.048115 + 31 +0.0 + 0 +LINE + 5 +173E + 8 +0 + 62 + 0 + 10 +15637.499965 + 20 +9228.349385 + 30 +0.0 + 11 +15649.999953 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +173F + 8 +0 + 62 + 0 + 10 +15637.499965 + 20 +9185.048115 + 30 +0.0 + 11 +15649.999965 + 21 +9206.69875 + 31 +0.0 + 0 +LINE + 5 +1740 + 8 +0 + 62 + 0 + 10 +15674.999965 + 20 +9206.69875 + 30 +0.0 + 11 +15687.499965 + 21 +9228.349385 + 31 +0.0 + 0 +LINE + 5 +1741 + 8 +0 + 62 + 0 + 10 +15678.811932 + 20 +9170.0 + 30 +0.0 + 11 +15687.499965 + 21 +9185.048115 + 31 +0.0 + 0 +LINE + 5 +1742 + 8 +0 + 62 + 0 + 10 +15712.499965 + 20 +9228.349385 + 30 +0.0 + 11 +15724.999953 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1743 + 8 +0 + 62 + 0 + 10 +15712.499965 + 20 +9185.048115 + 30 +0.0 + 11 +15724.999965 + 21 +9206.69875 + 31 +0.0 + 0 +LINE + 5 +1744 + 8 +0 + 62 + 0 + 10 +15749.999965 + 20 +9206.69875 + 30 +0.0 + 11 +15762.499965 + 21 +9228.349385 + 31 +0.0 + 0 +LINE + 5 +1745 + 8 +0 + 62 + 0 + 10 +15753.811931 + 20 +9170.0 + 30 +0.0 + 11 +15762.499965 + 21 +9185.048115 + 31 +0.0 + 0 +LINE + 5 +1746 + 8 +0 + 62 + 0 + 10 +15787.499965 + 20 +9228.349385 + 30 +0.0 + 11 +15799.999953 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1747 + 8 +0 + 62 + 0 + 10 +15787.499965 + 20 +9185.048115 + 30 +0.0 + 11 +15799.999965 + 21 +9206.69875 + 31 +0.0 + 0 +LINE + 5 +1748 + 8 +0 + 62 + 0 + 10 +15824.999964 + 20 +9206.69875 + 30 +0.0 + 11 +15837.499964 + 21 +9228.349385 + 31 +0.0 + 0 +LINE + 5 +1749 + 8 +0 + 62 + 0 + 10 +15828.811931 + 20 +9170.0 + 30 +0.0 + 11 +15837.499964 + 21 +9185.048115 + 31 +0.0 + 0 +LINE + 5 +174A + 8 +0 + 62 + 0 + 10 +15862.499964 + 20 +9228.349385 + 30 +0.0 + 11 +15874.999952 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +174B + 8 +0 + 62 + 0 + 10 +15862.499964 + 20 +9185.048115 + 30 +0.0 + 11 +15874.999964 + 21 +9206.69875 + 31 +0.0 + 0 +LINE + 5 +174C + 8 +0 + 62 + 0 + 10 +15899.999964 + 20 +9206.69875 + 30 +0.0 + 11 +15912.499964 + 21 +9228.349386 + 31 +0.0 + 0 +LINE + 5 +174D + 8 +0 + 62 + 0 + 10 +15903.811931 + 20 +9170.0 + 30 +0.0 + 11 +15912.499964 + 21 +9185.048115 + 31 +0.0 + 0 +LINE + 5 +174E + 8 +0 + 62 + 0 + 10 +15937.499964 + 20 +9228.349386 + 30 +0.0 + 11 +15949.999952 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +174F + 8 +0 + 62 + 0 + 10 +15937.499964 + 20 +9185.048115 + 30 +0.0 + 11 +15949.999964 + 21 +9206.698751 + 31 +0.0 + 0 +LINE + 5 +1750 + 8 +0 + 62 + 0 + 10 +15974.999964 + 20 +9206.698751 + 30 +0.0 + 11 +15987.499964 + 21 +9228.349386 + 31 +0.0 + 0 +LINE + 5 +1751 + 8 +0 + 62 + 0 + 10 +15978.81193 + 20 +9170.0 + 30 +0.0 + 11 +15987.499964 + 21 +9185.048116 + 31 +0.0 + 0 +LINE + 5 +1752 + 8 +0 + 62 + 0 + 10 +16012.499964 + 20 +9228.349386 + 30 +0.0 + 11 +16024.999952 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1753 + 8 +0 + 62 + 0 + 10 +16012.499964 + 20 +9185.048116 + 30 +0.0 + 11 +16024.999964 + 21 +9206.698751 + 31 +0.0 + 0 +LINE + 5 +1754 + 8 +0 + 62 + 0 + 10 +16049.999964 + 20 +9206.698751 + 30 +0.0 + 11 +16062.499964 + 21 +9228.349386 + 31 +0.0 + 0 +LINE + 5 +1755 + 8 +0 + 62 + 0 + 10 +16053.81193 + 20 +9170.0 + 30 +0.0 + 11 +16062.499964 + 21 +9185.048116 + 31 +0.0 + 0 +LINE + 5 +1756 + 8 +0 + 62 + 0 + 10 +16087.499964 + 20 +9228.349386 + 30 +0.0 + 11 +16099.999951 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1757 + 8 +0 + 62 + 0 + 10 +16087.499964 + 20 +9185.048116 + 30 +0.0 + 11 +16099.999964 + 21 +9206.698751 + 31 +0.0 + 0 +LINE + 5 +1758 + 8 +0 + 62 + 0 + 10 +16124.999963 + 20 +9206.698751 + 30 +0.0 + 11 +16126.25 + 21 +9208.863878 + 31 +0.0 + 0 +ENDBLK + 5 +1759 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X47 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X47 + 1 + + 0 +LINE + 5 +175B + 8 +0 + 62 + 0 + 10 +17412.5 + 20 +9228.349365 + 30 +0.0 + 11 +17437.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +175C + 8 +0 + 62 + 0 + 10 +17487.5 + 20 +9228.349365 + 30 +0.0 + 11 +17512.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +175D + 8 +0 + 62 + 0 + 10 +17562.5 + 20 +9228.349365 + 30 +0.0 + 11 +17587.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +175E + 8 +0 + 62 + 0 + 10 +17637.5 + 20 +9228.349365 + 30 +0.0 + 11 +17662.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +175F + 8 +0 + 62 + 0 + 10 +17712.5 + 20 +9228.349365 + 30 +0.0 + 11 +17737.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1760 + 8 +0 + 62 + 0 + 10 +17787.5 + 20 +9228.349365 + 30 +0.0 + 11 +17812.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1761 + 8 +0 + 62 + 0 + 10 +17862.5 + 20 +9228.349365 + 30 +0.0 + 11 +17887.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1762 + 8 +0 + 62 + 0 + 10 +17937.5 + 20 +9228.349365 + 30 +0.0 + 11 +17962.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1763 + 8 +0 + 62 + 0 + 10 +18012.5 + 20 +9228.349365 + 30 +0.0 + 11 +18037.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1764 + 8 +0 + 62 + 0 + 10 +18087.5 + 20 +9228.349365 + 30 +0.0 + 11 +18112.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1765 + 8 +0 + 62 + 0 + 10 +18162.5 + 20 +9228.349365 + 30 +0.0 + 11 +18187.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1766 + 8 +0 + 62 + 0 + 10 +18237.5 + 20 +9228.349365 + 30 +0.0 + 11 +18262.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1767 + 8 +0 + 62 + 0 + 10 +18312.5 + 20 +9228.349365 + 30 +0.0 + 11 +18337.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1768 + 8 +0 + 62 + 0 + 10 +18387.5 + 20 +9228.349365 + 30 +0.0 + 11 +18412.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +1769 + 8 +0 + 62 + 0 + 10 +18462.5 + 20 +9228.349365 + 30 +0.0 + 11 +18487.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +176A + 8 +0 + 62 + 0 + 10 +17375.0 + 20 +9206.69873 + 30 +0.0 + 11 +17400.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +176B + 8 +0 + 62 + 0 + 10 +17450.0 + 20 +9206.69873 + 30 +0.0 + 11 +17475.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +176C + 8 +0 + 62 + 0 + 10 +17525.0 + 20 +9206.69873 + 30 +0.0 + 11 +17550.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +176D + 8 +0 + 62 + 0 + 10 +17600.0 + 20 +9206.69873 + 30 +0.0 + 11 +17625.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +176E + 8 +0 + 62 + 0 + 10 +17675.0 + 20 +9206.69873 + 30 +0.0 + 11 +17700.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +176F + 8 +0 + 62 + 0 + 10 +17750.0 + 20 +9206.69873 + 30 +0.0 + 11 +17775.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1770 + 8 +0 + 62 + 0 + 10 +17825.0 + 20 +9206.69873 + 30 +0.0 + 11 +17850.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1771 + 8 +0 + 62 + 0 + 10 +17900.0 + 20 +9206.69873 + 30 +0.0 + 11 +17925.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1772 + 8 +0 + 62 + 0 + 10 +17975.0 + 20 +9206.69873 + 30 +0.0 + 11 +18000.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1773 + 8 +0 + 62 + 0 + 10 +18050.0 + 20 +9206.69873 + 30 +0.0 + 11 +18075.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1774 + 8 +0 + 62 + 0 + 10 +18125.0 + 20 +9206.69873 + 30 +0.0 + 11 +18150.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1775 + 8 +0 + 62 + 0 + 10 +18200.0 + 20 +9206.69873 + 30 +0.0 + 11 +18225.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1776 + 8 +0 + 62 + 0 + 10 +18275.0 + 20 +9206.69873 + 30 +0.0 + 11 +18300.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1777 + 8 +0 + 62 + 0 + 10 +18350.0 + 20 +9206.69873 + 30 +0.0 + 11 +18375.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1778 + 8 +0 + 62 + 0 + 10 +18425.0 + 20 +9206.69873 + 30 +0.0 + 11 +18450.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +1779 + 8 +0 + 62 + 0 + 10 +18500.0 + 20 +9206.69873 + 30 +0.0 + 11 +18501.25 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +177A + 8 +0 + 62 + 0 + 10 +17412.5 + 20 +9185.048095 + 30 +0.0 + 11 +17437.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +177B + 8 +0 + 62 + 0 + 10 +17487.5 + 20 +9185.048095 + 30 +0.0 + 11 +17512.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +177C + 8 +0 + 62 + 0 + 10 +17562.5 + 20 +9185.048095 + 30 +0.0 + 11 +17587.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +177D + 8 +0 + 62 + 0 + 10 +17637.5 + 20 +9185.048095 + 30 +0.0 + 11 +17662.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +177E + 8 +0 + 62 + 0 + 10 +17712.5 + 20 +9185.048095 + 30 +0.0 + 11 +17737.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +177F + 8 +0 + 62 + 0 + 10 +17787.5 + 20 +9185.048095 + 30 +0.0 + 11 +17812.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1780 + 8 +0 + 62 + 0 + 10 +17862.5 + 20 +9185.048095 + 30 +0.0 + 11 +17887.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1781 + 8 +0 + 62 + 0 + 10 +17937.5 + 20 +9185.048095 + 30 +0.0 + 11 +17962.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1782 + 8 +0 + 62 + 0 + 10 +18012.5 + 20 +9185.048095 + 30 +0.0 + 11 +18037.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1783 + 8 +0 + 62 + 0 + 10 +18087.5 + 20 +9185.048095 + 30 +0.0 + 11 +18112.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1784 + 8 +0 + 62 + 0 + 10 +18162.5 + 20 +9185.048095 + 30 +0.0 + 11 +18187.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1785 + 8 +0 + 62 + 0 + 10 +18237.5 + 20 +9185.048095 + 30 +0.0 + 11 +18262.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1786 + 8 +0 + 62 + 0 + 10 +18312.5 + 20 +9185.048095 + 30 +0.0 + 11 +18337.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1787 + 8 +0 + 62 + 0 + 10 +18387.5 + 20 +9185.048095 + 30 +0.0 + 11 +18412.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1788 + 8 +0 + 62 + 0 + 10 +18462.5 + 20 +9185.048095 + 30 +0.0 + 11 +18487.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +1789 + 8 +0 + 62 + 0 + 10 +17937.499958 + 20 +9185.04807 + 30 +0.0 + 11 +17924.999958 + 21 +9206.698705 + 31 +0.0 + 0 +LINE + 5 +178A + 8 +0 + 62 + 0 + 10 +17899.999958 + 20 +9249.999976 + 30 +0.0 + 11 +17899.999944 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +178B + 8 +0 + 62 + 0 + 10 +17899.999958 + 20 +9206.698705 + 30 +0.0 + 11 +17887.499958 + 21 +9228.349341 + 31 +0.0 + 0 +LINE + 5 +178C + 8 +0 + 62 + 0 + 10 +17896.187965 + 20 +9170.0 + 30 +0.0 + 11 +17887.499958 + 21 +9185.04807 + 31 +0.0 + 0 +LINE + 5 +178D + 8 +0 + 62 + 0 + 10 +17862.499958 + 20 +9228.349341 + 30 +0.0 + 11 +17849.999958 + 21 +9249.999976 + 31 +0.0 + 0 +LINE + 5 +178E + 8 +0 + 62 + 0 + 10 +17862.499958 + 20 +9185.04807 + 30 +0.0 + 11 +17849.999958 + 21 +9206.698706 + 31 +0.0 + 0 +LINE + 5 +178F + 8 +0 + 62 + 0 + 10 +17824.999958 + 20 +9249.999976 + 30 +0.0 + 11 +17824.999944 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1790 + 8 +0 + 62 + 0 + 10 +17824.999958 + 20 +9206.698706 + 30 +0.0 + 11 +17812.499958 + 21 +9228.349341 + 31 +0.0 + 0 +LINE + 5 +1791 + 8 +0 + 62 + 0 + 10 +17821.187966 + 20 +9170.0 + 30 +0.0 + 11 +17812.499958 + 21 +9185.048071 + 31 +0.0 + 0 +LINE + 5 +1792 + 8 +0 + 62 + 0 + 10 +17787.499958 + 20 +9228.349341 + 30 +0.0 + 11 +17774.999958 + 21 +9249.999976 + 31 +0.0 + 0 +LINE + 5 +1793 + 8 +0 + 62 + 0 + 10 +17787.499958 + 20 +9185.048071 + 30 +0.0 + 11 +17774.999958 + 21 +9206.698706 + 31 +0.0 + 0 +LINE + 5 +1794 + 8 +0 + 62 + 0 + 10 +17749.999958 + 20 +9249.999976 + 30 +0.0 + 11 +17749.999944 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1795 + 8 +0 + 62 + 0 + 10 +17749.999958 + 20 +9206.698706 + 30 +0.0 + 11 +17737.499958 + 21 +9228.349341 + 31 +0.0 + 0 +LINE + 5 +1796 + 8 +0 + 62 + 0 + 10 +17746.187966 + 20 +9170.0 + 30 +0.0 + 11 +17737.499958 + 21 +9185.048071 + 31 +0.0 + 0 +LINE + 5 +1797 + 8 +0 + 62 + 0 + 10 +17712.499958 + 20 +9228.349341 + 30 +0.0 + 11 +17699.999958 + 21 +9249.999976 + 31 +0.0 + 0 +LINE + 5 +1798 + 8 +0 + 62 + 0 + 10 +17712.499958 + 20 +9185.048071 + 30 +0.0 + 11 +17699.999958 + 21 +9206.698706 + 31 +0.0 + 0 +LINE + 5 +1799 + 8 +0 + 62 + 0 + 10 +17674.999958 + 20 +9249.999976 + 30 +0.0 + 11 +17674.999945 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +179A + 8 +0 + 62 + 0 + 10 +17674.999959 + 20 +9206.698706 + 30 +0.0 + 11 +17662.499959 + 21 +9228.349341 + 31 +0.0 + 0 +LINE + 5 +179B + 8 +0 + 62 + 0 + 10 +17671.187966 + 20 +9170.0 + 30 +0.0 + 11 +17662.499959 + 21 +9185.048071 + 31 +0.0 + 0 +LINE + 5 +179C + 8 +0 + 62 + 0 + 10 +17637.499959 + 20 +9228.349341 + 30 +0.0 + 11 +17624.999959 + 21 +9249.999976 + 31 +0.0 + 0 +LINE + 5 +179D + 8 +0 + 62 + 0 + 10 +17637.499959 + 20 +9185.048071 + 30 +0.0 + 11 +17624.999959 + 21 +9206.698706 + 31 +0.0 + 0 +LINE + 5 +179E + 8 +0 + 62 + 0 + 10 +17599.999959 + 20 +9249.999976 + 30 +0.0 + 11 +17599.999945 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +179F + 8 +0 + 62 + 0 + 10 +17599.999959 + 20 +9206.698706 + 30 +0.0 + 11 +17587.499959 + 21 +9228.349341 + 31 +0.0 + 0 +LINE + 5 +17A0 + 8 +0 + 62 + 0 + 10 +17596.187967 + 20 +9170.0 + 30 +0.0 + 11 +17587.499959 + 21 +9185.048071 + 31 +0.0 + 0 +LINE + 5 +17A1 + 8 +0 + 62 + 0 + 10 +17562.499959 + 20 +9228.349341 + 30 +0.0 + 11 +17549.999959 + 21 +9249.999976 + 31 +0.0 + 0 +LINE + 5 +17A2 + 8 +0 + 62 + 0 + 10 +17562.499959 + 20 +9185.048071 + 30 +0.0 + 11 +17549.999959 + 21 +9206.698706 + 31 +0.0 + 0 +LINE + 5 +17A3 + 8 +0 + 62 + 0 + 10 +17524.999959 + 20 +9249.999976 + 30 +0.0 + 11 +17524.999945 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17A4 + 8 +0 + 62 + 0 + 10 +17524.999959 + 20 +9206.698706 + 30 +0.0 + 11 +17512.499959 + 21 +9228.349341 + 31 +0.0 + 0 +LINE + 5 +17A5 + 8 +0 + 62 + 0 + 10 +17521.187967 + 20 +9170.0 + 30 +0.0 + 11 +17512.499959 + 21 +9185.048071 + 31 +0.0 + 0 +LINE + 5 +17A6 + 8 +0 + 62 + 0 + 10 +17487.499959 + 20 +9228.349341 + 30 +0.0 + 11 +17474.999959 + 21 +9249.999976 + 31 +0.0 + 0 +LINE + 5 +17A7 + 8 +0 + 62 + 0 + 10 +17487.499959 + 20 +9185.048071 + 30 +0.0 + 11 +17474.999959 + 21 +9206.698706 + 31 +0.0 + 0 +LINE + 5 +17A8 + 8 +0 + 62 + 0 + 10 +17449.999959 + 20 +9249.999976 + 30 +0.0 + 11 +17449.999946 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17A9 + 8 +0 + 62 + 0 + 10 +17449.999959 + 20 +9206.698706 + 30 +0.0 + 11 +17437.499959 + 21 +9228.349341 + 31 +0.0 + 0 +LINE + 5 +17AA + 8 +0 + 62 + 0 + 10 +17446.187967 + 20 +9170.0 + 30 +0.0 + 11 +17437.499959 + 21 +9185.048071 + 31 +0.0 + 0 +LINE + 5 +17AB + 8 +0 + 62 + 0 + 10 +17412.499959 + 20 +9228.349341 + 30 +0.0 + 11 +17399.999959 + 21 +9249.999977 + 31 +0.0 + 0 +LINE + 5 +17AC + 8 +0 + 62 + 0 + 10 +17412.499959 + 20 +9185.048071 + 30 +0.0 + 11 +17399.999959 + 21 +9206.698706 + 31 +0.0 + 0 +LINE + 5 +17AD + 8 +0 + 62 + 0 + 10 +17374.999959 + 20 +9249.999977 + 30 +0.0 + 11 +17374.999946 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17AE + 8 +0 + 62 + 0 + 10 +17374.99996 + 20 +9206.698706 + 30 +0.0 + 11 +17363.75 + 21 +9226.184208 + 31 +0.0 + 0 +LINE + 5 +17AF + 8 +0 + 62 + 0 + 10 +17371.187968 + 20 +9170.0 + 30 +0.0 + 11 +17363.75 + 21 +9182.882938 + 31 +0.0 + 0 +LINE + 5 +17B0 + 8 +0 + 62 + 0 + 10 +17971.187965 + 20 +9170.0 + 30 +0.0 + 11 +17962.499958 + 21 +9185.04807 + 31 +0.0 + 0 +LINE + 5 +17B1 + 8 +0 + 62 + 0 + 10 +17937.499958 + 20 +9228.34934 + 30 +0.0 + 11 +17924.999958 + 21 +9249.999976 + 31 +0.0 + 0 +LINE + 5 +17B2 + 8 +0 + 62 + 0 + 10 +17974.999958 + 20 +9206.698705 + 30 +0.0 + 11 +17962.499958 + 21 +9228.34934 + 31 +0.0 + 0 +LINE + 5 +17B3 + 8 +0 + 62 + 0 + 10 +18012.499957 + 20 +9185.04807 + 30 +0.0 + 11 +17999.999957 + 21 +9206.698705 + 31 +0.0 + 0 +LINE + 5 +17B4 + 8 +0 + 62 + 0 + 10 +17974.999957 + 20 +9249.999975 + 30 +0.0 + 11 +17974.999943 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17B5 + 8 +0 + 62 + 0 + 10 +18046.187965 + 20 +9170.0 + 30 +0.0 + 11 +18037.499957 + 21 +9185.04807 + 31 +0.0 + 0 +LINE + 5 +17B6 + 8 +0 + 62 + 0 + 10 +18012.499957 + 20 +9228.34934 + 30 +0.0 + 11 +17999.999957 + 21 +9249.999975 + 31 +0.0 + 0 +LINE + 5 +17B7 + 8 +0 + 62 + 0 + 10 +18049.999957 + 20 +9206.698705 + 30 +0.0 + 11 +18037.499957 + 21 +9228.34934 + 31 +0.0 + 0 +LINE + 5 +17B8 + 8 +0 + 62 + 0 + 10 +18087.499957 + 20 +9185.04807 + 30 +0.0 + 11 +18074.999957 + 21 +9206.698705 + 31 +0.0 + 0 +LINE + 5 +17B9 + 8 +0 + 62 + 0 + 10 +18049.999957 + 20 +9249.999975 + 30 +0.0 + 11 +18049.999943 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17BA + 8 +0 + 62 + 0 + 10 +18121.187964 + 20 +9170.0 + 30 +0.0 + 11 +18112.499957 + 21 +9185.04807 + 31 +0.0 + 0 +LINE + 5 +17BB + 8 +0 + 62 + 0 + 10 +18087.499957 + 20 +9228.34934 + 30 +0.0 + 11 +18074.999957 + 21 +9249.999975 + 31 +0.0 + 0 +LINE + 5 +17BC + 8 +0 + 62 + 0 + 10 +18124.999957 + 20 +9206.698705 + 30 +0.0 + 11 +18112.499957 + 21 +9228.34934 + 31 +0.0 + 0 +LINE + 5 +17BD + 8 +0 + 62 + 0 + 10 +18162.499957 + 20 +9185.04807 + 30 +0.0 + 11 +18149.999957 + 21 +9206.698705 + 31 +0.0 + 0 +LINE + 5 +17BE + 8 +0 + 62 + 0 + 10 +18124.999957 + 20 +9249.999975 + 30 +0.0 + 11 +18124.999943 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17BF + 8 +0 + 62 + 0 + 10 +18196.187964 + 20 +9170.0 + 30 +0.0 + 11 +18187.499957 + 21 +9185.04807 + 31 +0.0 + 0 +LINE + 5 +17C0 + 8 +0 + 62 + 0 + 10 +18162.499957 + 20 +9228.34934 + 30 +0.0 + 11 +18149.999957 + 21 +9249.999975 + 31 +0.0 + 0 +LINE + 5 +17C1 + 8 +0 + 62 + 0 + 10 +18199.999957 + 20 +9206.698705 + 30 +0.0 + 11 +18187.499957 + 21 +9228.34934 + 31 +0.0 + 0 +LINE + 5 +17C2 + 8 +0 + 62 + 0 + 10 +18237.499957 + 20 +9185.04807 + 30 +0.0 + 11 +18224.999957 + 21 +9206.698705 + 31 +0.0 + 0 +LINE + 5 +17C3 + 8 +0 + 62 + 0 + 10 +18199.999957 + 20 +9249.999975 + 30 +0.0 + 11 +18199.999942 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17C4 + 8 +0 + 62 + 0 + 10 +18271.187964 + 20 +9170.0 + 30 +0.0 + 11 +18262.499957 + 21 +9185.04807 + 31 +0.0 + 0 +LINE + 5 +17C5 + 8 +0 + 62 + 0 + 10 +18237.499957 + 20 +9228.34934 + 30 +0.0 + 11 +18224.999957 + 21 +9249.999975 + 31 +0.0 + 0 +LINE + 5 +17C6 + 8 +0 + 62 + 0 + 10 +18274.999957 + 20 +9206.698705 + 30 +0.0 + 11 +18262.499957 + 21 +9228.34934 + 31 +0.0 + 0 +LINE + 5 +17C7 + 8 +0 + 62 + 0 + 10 +18312.499956 + 20 +9185.04807 + 30 +0.0 + 11 +18299.999956 + 21 +9206.698705 + 31 +0.0 + 0 +LINE + 5 +17C8 + 8 +0 + 62 + 0 + 10 +18274.999956 + 20 +9249.999975 + 30 +0.0 + 11 +18274.999942 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17C9 + 8 +0 + 62 + 0 + 10 +18346.187963 + 20 +9170.0 + 30 +0.0 + 11 +18337.499956 + 21 +9185.04807 + 31 +0.0 + 0 +LINE + 5 +17CA + 8 +0 + 62 + 0 + 10 +18312.499956 + 20 +9228.34934 + 30 +0.0 + 11 +18299.999956 + 21 +9249.999975 + 31 +0.0 + 0 +LINE + 5 +17CB + 8 +0 + 62 + 0 + 10 +18349.999956 + 20 +9206.698705 + 30 +0.0 + 11 +18337.499956 + 21 +9228.34934 + 31 +0.0 + 0 +LINE + 5 +17CC + 8 +0 + 62 + 0 + 10 +18387.499956 + 20 +9185.048069 + 30 +0.0 + 11 +18374.999956 + 21 +9206.698705 + 31 +0.0 + 0 +LINE + 5 +17CD + 8 +0 + 62 + 0 + 10 +18349.999956 + 20 +9249.999975 + 30 +0.0 + 11 +18349.999942 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17CE + 8 +0 + 62 + 0 + 10 +18421.187963 + 20 +9170.0 + 30 +0.0 + 11 +18412.499956 + 21 +9185.048069 + 31 +0.0 + 0 +LINE + 5 +17CF + 8 +0 + 62 + 0 + 10 +18387.499956 + 20 +9228.34934 + 30 +0.0 + 11 +18374.999956 + 21 +9249.999975 + 31 +0.0 + 0 +LINE + 5 +17D0 + 8 +0 + 62 + 0 + 10 +18424.999956 + 20 +9206.698704 + 30 +0.0 + 11 +18412.499956 + 21 +9228.34934 + 31 +0.0 + 0 +LINE + 5 +17D1 + 8 +0 + 62 + 0 + 10 +18462.499956 + 20 +9185.048069 + 30 +0.0 + 11 +18449.999956 + 21 +9206.698704 + 31 +0.0 + 0 +LINE + 5 +17D2 + 8 +0 + 62 + 0 + 10 +18424.999956 + 20 +9249.999975 + 30 +0.0 + 11 +18424.999941 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17D3 + 8 +0 + 62 + 0 + 10 +18496.187963 + 20 +9170.0 + 30 +0.0 + 11 +18487.499956 + 21 +9185.048069 + 31 +0.0 + 0 +LINE + 5 +17D4 + 8 +0 + 62 + 0 + 10 +18462.499956 + 20 +9228.349339 + 30 +0.0 + 11 +18449.999956 + 21 +9249.999975 + 31 +0.0 + 0 +LINE + 5 +17D5 + 8 +0 + 62 + 0 + 10 +18499.999956 + 20 +9206.698704 + 30 +0.0 + 11 +18487.499956 + 21 +9228.349339 + 31 +0.0 + 0 +LINE + 5 +17D6 + 8 +0 + 62 + 0 + 10 +18499.999956 + 20 +9249.999974 + 30 +0.0 + 11 +18499.999941 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17D7 + 8 +0 + 62 + 0 + 10 +17924.999958 + 20 +9206.698754 + 30 +0.0 + 11 +17937.499958 + 21 +9228.349389 + 31 +0.0 + 0 +LINE + 5 +17D8 + 8 +0 + 62 + 0 + 10 +17887.499958 + 20 +9185.048119 + 30 +0.0 + 11 +17899.999958 + 21 +9206.698754 + 31 +0.0 + 0 +LINE + 5 +17D9 + 8 +0 + 62 + 0 + 10 +17853.811922 + 20 +9170.0 + 30 +0.0 + 11 +17862.499958 + 21 +9185.048119 + 31 +0.0 + 0 +LINE + 5 +17DA + 8 +0 + 62 + 0 + 10 +17887.499958 + 20 +9228.349389 + 30 +0.0 + 11 +17899.999944 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17DB + 8 +0 + 62 + 0 + 10 +17849.999958 + 20 +9206.698754 + 30 +0.0 + 11 +17862.499958 + 21 +9228.349389 + 31 +0.0 + 0 +LINE + 5 +17DC + 8 +0 + 62 + 0 + 10 +17812.499958 + 20 +9185.048119 + 30 +0.0 + 11 +17824.999958 + 21 +9206.698754 + 31 +0.0 + 0 +LINE + 5 +17DD + 8 +0 + 62 + 0 + 10 +17778.811922 + 20 +9170.0 + 30 +0.0 + 11 +17787.499958 + 21 +9185.048119 + 31 +0.0 + 0 +LINE + 5 +17DE + 8 +0 + 62 + 0 + 10 +17812.499958 + 20 +9228.349389 + 30 +0.0 + 11 +17824.999944 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17DF + 8 +0 + 62 + 0 + 10 +17774.999958 + 20 +9206.698754 + 30 +0.0 + 11 +17787.499958 + 21 +9228.349389 + 31 +0.0 + 0 +LINE + 5 +17E0 + 8 +0 + 62 + 0 + 10 +17737.499958 + 20 +9185.048119 + 30 +0.0 + 11 +17749.999958 + 21 +9206.698754 + 31 +0.0 + 0 +LINE + 5 +17E1 + 8 +0 + 62 + 0 + 10 +17703.811923 + 20 +9170.0 + 30 +0.0 + 11 +17712.499958 + 21 +9185.048119 + 31 +0.0 + 0 +LINE + 5 +17E2 + 8 +0 + 62 + 0 + 10 +17737.499958 + 20 +9228.349389 + 30 +0.0 + 11 +17749.999944 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17E3 + 8 +0 + 62 + 0 + 10 +17699.999958 + 20 +9206.698754 + 30 +0.0 + 11 +17712.499958 + 21 +9228.349389 + 31 +0.0 + 0 +LINE + 5 +17E4 + 8 +0 + 62 + 0 + 10 +17662.499958 + 20 +9185.048119 + 30 +0.0 + 11 +17674.999958 + 21 +9206.698754 + 31 +0.0 + 0 +LINE + 5 +17E5 + 8 +0 + 62 + 0 + 10 +17628.811923 + 20 +9170.0 + 30 +0.0 + 11 +17637.499958 + 21 +9185.048119 + 31 +0.0 + 0 +LINE + 5 +17E6 + 8 +0 + 62 + 0 + 10 +17662.499958 + 20 +9228.349389 + 30 +0.0 + 11 +17674.999945 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17E7 + 8 +0 + 62 + 0 + 10 +17624.999959 + 20 +9206.698754 + 30 +0.0 + 11 +17637.499959 + 21 +9228.349389 + 31 +0.0 + 0 +LINE + 5 +17E8 + 8 +0 + 62 + 0 + 10 +17587.499959 + 20 +9185.048119 + 30 +0.0 + 11 +17599.999959 + 21 +9206.698754 + 31 +0.0 + 0 +LINE + 5 +17E9 + 8 +0 + 62 + 0 + 10 +17553.811923 + 20 +9170.0 + 30 +0.0 + 11 +17562.499959 + 21 +9185.048119 + 31 +0.0 + 0 +LINE + 5 +17EA + 8 +0 + 62 + 0 + 10 +17587.499959 + 20 +9228.349389 + 30 +0.0 + 11 +17599.999945 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17EB + 8 +0 + 62 + 0 + 10 +17549.999959 + 20 +9206.698754 + 30 +0.0 + 11 +17562.499959 + 21 +9228.349389 + 31 +0.0 + 0 +LINE + 5 +17EC + 8 +0 + 62 + 0 + 10 +17512.499959 + 20 +9185.048118 + 30 +0.0 + 11 +17524.999959 + 21 +9206.698754 + 31 +0.0 + 0 +LINE + 5 +17ED + 8 +0 + 62 + 0 + 10 +17478.811924 + 20 +9170.0 + 30 +0.0 + 11 +17487.499959 + 21 +9185.048118 + 31 +0.0 + 0 +LINE + 5 +17EE + 8 +0 + 62 + 0 + 10 +17512.499959 + 20 +9228.349389 + 30 +0.0 + 11 +17524.999945 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17EF + 8 +0 + 62 + 0 + 10 +17474.999959 + 20 +9206.698753 + 30 +0.0 + 11 +17487.499959 + 21 +9228.349389 + 31 +0.0 + 0 +LINE + 5 +17F0 + 8 +0 + 62 + 0 + 10 +17437.499959 + 20 +9185.048118 + 30 +0.0 + 11 +17449.999959 + 21 +9206.698753 + 31 +0.0 + 0 +LINE + 5 +17F1 + 8 +0 + 62 + 0 + 10 +17403.811924 + 20 +9170.0 + 30 +0.0 + 11 +17412.499959 + 21 +9185.048118 + 31 +0.0 + 0 +LINE + 5 +17F2 + 8 +0 + 62 + 0 + 10 +17437.499959 + 20 +9228.349388 + 30 +0.0 + 11 +17449.999946 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17F3 + 8 +0 + 62 + 0 + 10 +17399.999959 + 20 +9206.698753 + 30 +0.0 + 11 +17412.499959 + 21 +9228.349388 + 31 +0.0 + 0 +LINE + 5 +17F4 + 8 +0 + 62 + 0 + 10 +17363.75 + 20 +9187.213252 + 30 +0.0 + 11 +17374.999959 + 21 +9206.698753 + 31 +0.0 + 0 +LINE + 5 +17F5 + 8 +0 + 62 + 0 + 10 +17363.75 + 20 +9230.514522 + 30 +0.0 + 11 +17374.999946 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17F6 + 8 +0 + 62 + 0 + 10 +17928.811922 + 20 +9170.0 + 30 +0.0 + 11 +17937.499957 + 21 +9185.048119 + 31 +0.0 + 0 +LINE + 5 +17F7 + 8 +0 + 62 + 0 + 10 +17962.499957 + 20 +9228.349389 + 30 +0.0 + 11 +17974.999943 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17F8 + 8 +0 + 62 + 0 + 10 +17962.499957 + 20 +9185.048119 + 30 +0.0 + 11 +17974.999957 + 21 +9206.698754 + 31 +0.0 + 0 +LINE + 5 +17F9 + 8 +0 + 62 + 0 + 10 +17999.999957 + 20 +9206.698754 + 30 +0.0 + 11 +18012.499957 + 21 +9228.34939 + 31 +0.0 + 0 +LINE + 5 +17FA + 8 +0 + 62 + 0 + 10 +18003.811921 + 20 +9170.0 + 30 +0.0 + 11 +18012.499957 + 21 +9185.048119 + 31 +0.0 + 0 +LINE + 5 +17FB + 8 +0 + 62 + 0 + 10 +18037.499957 + 20 +9228.34939 + 30 +0.0 + 11 +18049.999943 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +17FC + 8 +0 + 62 + 0 + 10 +18037.499957 + 20 +9185.048119 + 30 +0.0 + 11 +18049.999957 + 21 +9206.698755 + 31 +0.0 + 0 +LINE + 5 +17FD + 8 +0 + 62 + 0 + 10 +18074.999957 + 20 +9206.698755 + 30 +0.0 + 11 +18087.499957 + 21 +9228.34939 + 31 +0.0 + 0 +LINE + 5 +17FE + 8 +0 + 62 + 0 + 10 +18078.811921 + 20 +9170.0 + 30 +0.0 + 11 +18087.499957 + 21 +9185.04812 + 31 +0.0 + 0 +LINE + 5 +17FF + 8 +0 + 62 + 0 + 10 +18112.499957 + 20 +9228.34939 + 30 +0.0 + 11 +18124.999943 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1800 + 8 +0 + 62 + 0 + 10 +18112.499957 + 20 +9185.04812 + 30 +0.0 + 11 +18124.999957 + 21 +9206.698755 + 31 +0.0 + 0 +LINE + 5 +1801 + 8 +0 + 62 + 0 + 10 +18149.999957 + 20 +9206.698755 + 30 +0.0 + 11 +18162.499957 + 21 +9228.34939 + 31 +0.0 + 0 +LINE + 5 +1802 + 8 +0 + 62 + 0 + 10 +18153.811921 + 20 +9170.0 + 30 +0.0 + 11 +18162.499957 + 21 +9185.04812 + 31 +0.0 + 0 +LINE + 5 +1803 + 8 +0 + 62 + 0 + 10 +18187.499957 + 20 +9228.34939 + 30 +0.0 + 11 +18199.999942 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1804 + 8 +0 + 62 + 0 + 10 +18187.499957 + 20 +9185.04812 + 30 +0.0 + 11 +18199.999957 + 21 +9206.698755 + 31 +0.0 + 0 +LINE + 5 +1805 + 8 +0 + 62 + 0 + 10 +18224.999957 + 20 +9206.698755 + 30 +0.0 + 11 +18237.499957 + 21 +9228.34939 + 31 +0.0 + 0 +LINE + 5 +1806 + 8 +0 + 62 + 0 + 10 +18228.81192 + 20 +9170.0 + 30 +0.0 + 11 +18237.499956 + 21 +9185.04812 + 31 +0.0 + 0 +LINE + 5 +1807 + 8 +0 + 62 + 0 + 10 +18262.499956 + 20 +9228.34939 + 30 +0.0 + 11 +18274.999942 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1808 + 8 +0 + 62 + 0 + 10 +18262.499956 + 20 +9185.04812 + 30 +0.0 + 11 +18274.999956 + 21 +9206.698755 + 31 +0.0 + 0 +LINE + 5 +1809 + 8 +0 + 62 + 0 + 10 +18299.999956 + 20 +9206.698755 + 30 +0.0 + 11 +18312.499956 + 21 +9228.34939 + 31 +0.0 + 0 +LINE + 5 +180A + 8 +0 + 62 + 0 + 10 +18303.81192 + 20 +9170.0 + 30 +0.0 + 11 +18312.499956 + 21 +9185.04812 + 31 +0.0 + 0 +LINE + 5 +180B + 8 +0 + 62 + 0 + 10 +18337.499956 + 20 +9228.34939 + 30 +0.0 + 11 +18349.999942 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +180C + 8 +0 + 62 + 0 + 10 +18337.499956 + 20 +9185.04812 + 30 +0.0 + 11 +18349.999956 + 21 +9206.698755 + 31 +0.0 + 0 +LINE + 5 +180D + 8 +0 + 62 + 0 + 10 +18374.999956 + 20 +9206.698755 + 30 +0.0 + 11 +18387.499956 + 21 +9228.34939 + 31 +0.0 + 0 +LINE + 5 +180E + 8 +0 + 62 + 0 + 10 +18378.81192 + 20 +9170.0 + 30 +0.0 + 11 +18387.499956 + 21 +9185.04812 + 31 +0.0 + 0 +LINE + 5 +180F + 8 +0 + 62 + 0 + 10 +18412.499956 + 20 +9228.34939 + 30 +0.0 + 11 +18424.999941 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1810 + 8 +0 + 62 + 0 + 10 +18412.499956 + 20 +9185.04812 + 30 +0.0 + 11 +18424.999956 + 21 +9206.698755 + 31 +0.0 + 0 +LINE + 5 +1811 + 8 +0 + 62 + 0 + 10 +18449.999956 + 20 +9206.698755 + 30 +0.0 + 11 +18462.499956 + 21 +9228.34939 + 31 +0.0 + 0 +LINE + 5 +1812 + 8 +0 + 62 + 0 + 10 +18453.811919 + 20 +9170.0 + 30 +0.0 + 11 +18462.499956 + 21 +9185.04812 + 31 +0.0 + 0 +LINE + 5 +1813 + 8 +0 + 62 + 0 + 10 +18487.499956 + 20 +9228.34939 + 30 +0.0 + 11 +18499.999941 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +1814 + 8 +0 + 62 + 0 + 10 +18487.499956 + 20 +9185.04812 + 30 +0.0 + 11 +18499.999956 + 21 +9206.698755 + 31 +0.0 + 0 +ENDBLK + 5 +1815 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X48 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X48 + 1 + + 0 +LINE + 5 +1817 + 8 +0 + 62 + 0 + 10 +19775.0 + 20 +22153.77846 + 30 +0.0 + 11 +19800.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1818 + 8 +0 + 62 + 0 + 10 +19850.0 + 20 +22153.77846 + 30 +0.0 + 11 +19875.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1819 + 8 +0 + 62 + 0 + 10 +19925.0 + 20 +22153.77846 + 30 +0.0 + 11 +19950.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +181A + 8 +0 + 62 + 0 + 10 +20000.0 + 20 +22153.77846 + 30 +0.0 + 11 +20025.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +181B + 8 +0 + 62 + 0 + 10 +20075.0 + 20 +22153.77846 + 30 +0.0 + 11 +20100.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +181C + 8 +0 + 62 + 0 + 10 +20150.0 + 20 +22153.77846 + 30 +0.0 + 11 +20175.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +181D + 8 +0 + 62 + 0 + 10 +20225.0 + 20 +22153.77846 + 30 +0.0 + 11 +20250.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +181E + 8 +0 + 62 + 0 + 10 +20300.0 + 20 +22153.77846 + 30 +0.0 + 11 +20325.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +181F + 8 +0 + 62 + 0 + 10 +20375.0 + 20 +22153.77846 + 30 +0.0 + 11 +20400.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1820 + 8 +0 + 62 + 0 + 10 +20450.0 + 20 +22153.77846 + 30 +0.0 + 11 +20475.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1821 + 8 +0 + 62 + 0 + 10 +20525.0 + 20 +22153.77846 + 30 +0.0 + 11 +20550.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1822 + 8 +0 + 62 + 0 + 10 +20600.0 + 20 +22153.77846 + 30 +0.0 + 11 +20625.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1823 + 8 +0 + 62 + 0 + 10 +20675.0 + 20 +22153.77846 + 30 +0.0 + 11 +20700.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1824 + 8 +0 + 62 + 0 + 10 +20750.0 + 20 +22153.77846 + 30 +0.0 + 11 +20775.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1825 + 8 +0 + 62 + 0 + 10 +20825.0 + 20 +22153.77846 + 30 +0.0 + 11 +20850.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1826 + 8 +0 + 62 + 0 + 10 +20900.0 + 20 +22153.77846 + 30 +0.0 + 11 +20925.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1827 + 8 +0 + 62 + 0 + 10 +20975.0 + 20 +22153.77846 + 30 +0.0 + 11 +21000.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1828 + 8 +0 + 62 + 0 + 10 +21050.0 + 20 +22153.77846 + 30 +0.0 + 11 +21075.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1829 + 8 +0 + 62 + 0 + 10 +21125.0 + 20 +22153.77846 + 30 +0.0 + 11 +21150.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +182A + 8 +0 + 62 + 0 + 10 +21200.0 + 20 +22153.77846 + 30 +0.0 + 11 +21225.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +182B + 8 +0 + 62 + 0 + 10 +21275.0 + 20 +22153.77846 + 30 +0.0 + 11 +21300.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +182C + 8 +0 + 62 + 0 + 10 +21350.0 + 20 +22153.77846 + 30 +0.0 + 11 +21375.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +182D + 8 +0 + 62 + 0 + 10 +21425.0 + 20 +22153.77846 + 30 +0.0 + 11 +21450.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +182E + 8 +0 + 62 + 0 + 10 +21500.0 + 20 +22153.77846 + 30 +0.0 + 11 +21525.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +182F + 8 +0 + 62 + 0 + 10 +21575.0 + 20 +22153.77846 + 30 +0.0 + 11 +21600.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1830 + 8 +0 + 62 + 0 + 10 +21650.0 + 20 +22153.77846 + 30 +0.0 + 11 +21675.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1831 + 8 +0 + 62 + 0 + 10 +21725.0 + 20 +22153.77846 + 30 +0.0 + 11 +21750.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1832 + 8 +0 + 62 + 0 + 10 +21800.0 + 20 +22153.77846 + 30 +0.0 + 11 +21825.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1833 + 8 +0 + 62 + 0 + 10 +21875.0 + 20 +22153.77846 + 30 +0.0 + 11 +21900.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1834 + 8 +0 + 62 + 0 + 10 +21950.0 + 20 +22153.77846 + 30 +0.0 + 11 +21975.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1835 + 8 +0 + 62 + 0 + 10 +22025.0 + 20 +22153.77846 + 30 +0.0 + 11 +22050.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1836 + 8 +0 + 62 + 0 + 10 +22100.0 + 20 +22153.77846 + 30 +0.0 + 11 +22125.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1837 + 8 +0 + 62 + 0 + 10 +22175.0 + 20 +22153.77846 + 30 +0.0 + 11 +22200.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1838 + 8 +0 + 62 + 0 + 10 +22250.0 + 20 +22153.77846 + 30 +0.0 + 11 +22275.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1839 + 8 +0 + 62 + 0 + 10 +22325.0 + 20 +22153.77846 + 30 +0.0 + 11 +22350.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +183A + 8 +0 + 62 + 0 + 10 +22400.0 + 20 +22153.77846 + 30 +0.0 + 11 +22425.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +183B + 8 +0 + 62 + 0 + 10 +22475.0 + 20 +22153.77846 + 30 +0.0 + 11 +22500.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +183C + 8 +0 + 62 + 0 + 10 +22550.0 + 20 +22153.77846 + 30 +0.0 + 11 +22575.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +183D + 8 +0 + 62 + 0 + 10 +22625.0 + 20 +22153.77846 + 30 +0.0 + 11 +22650.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +183E + 8 +0 + 62 + 0 + 10 +22700.0 + 20 +22153.77846 + 30 +0.0 + 11 +22725.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +183F + 8 +0 + 62 + 0 + 10 +22775.0 + 20 +22153.77846 + 30 +0.0 + 11 +22800.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1840 + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +22153.77846 + 30 +0.0 + 11 +22875.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1841 + 8 +0 + 62 + 0 + 10 +22925.0 + 20 +22153.77846 + 30 +0.0 + 11 +22950.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1842 + 8 +0 + 62 + 0 + 10 +23000.0 + 20 +22153.77846 + 30 +0.0 + 11 +23025.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1843 + 8 +0 + 62 + 0 + 10 +23075.0 + 20 +22153.77846 + 30 +0.0 + 11 +23100.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1844 + 8 +0 + 62 + 0 + 10 +23150.0 + 20 +22153.77846 + 30 +0.0 + 11 +23175.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1845 + 8 +0 + 62 + 0 + 10 +23225.0 + 20 +22153.77846 + 30 +0.0 + 11 +23250.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1846 + 8 +0 + 62 + 0 + 10 +23300.0 + 20 +22153.77846 + 30 +0.0 + 11 +23325.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1847 + 8 +0 + 62 + 0 + 10 +23375.0 + 20 +22153.77846 + 30 +0.0 + 11 +23375.75 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1848 + 8 +0 + 62 + 0 + 10 +19738.25 + 20 +22175.429095 + 30 +0.0 + 11 +19762.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1849 + 8 +0 + 62 + 0 + 10 +19812.5 + 20 +22175.429095 + 30 +0.0 + 11 +19837.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +184A + 8 +0 + 62 + 0 + 10 +19887.5 + 20 +22175.429095 + 30 +0.0 + 11 +19912.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +184B + 8 +0 + 62 + 0 + 10 +19962.5 + 20 +22175.429095 + 30 +0.0 + 11 +19987.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +184C + 8 +0 + 62 + 0 + 10 +20037.5 + 20 +22175.429095 + 30 +0.0 + 11 +20062.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +184D + 8 +0 + 62 + 0 + 10 +20112.5 + 20 +22175.429095 + 30 +0.0 + 11 +20137.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +184E + 8 +0 + 62 + 0 + 10 +20187.5 + 20 +22175.429095 + 30 +0.0 + 11 +20212.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +184F + 8 +0 + 62 + 0 + 10 +20262.5 + 20 +22175.429095 + 30 +0.0 + 11 +20287.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1850 + 8 +0 + 62 + 0 + 10 +20337.5 + 20 +22175.429095 + 30 +0.0 + 11 +20362.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1851 + 8 +0 + 62 + 0 + 10 +20412.5 + 20 +22175.429095 + 30 +0.0 + 11 +20437.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1852 + 8 +0 + 62 + 0 + 10 +20487.5 + 20 +22175.429095 + 30 +0.0 + 11 +20512.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1853 + 8 +0 + 62 + 0 + 10 +20562.5 + 20 +22175.429095 + 30 +0.0 + 11 +20587.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1854 + 8 +0 + 62 + 0 + 10 +20637.5 + 20 +22175.429095 + 30 +0.0 + 11 +20662.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1855 + 8 +0 + 62 + 0 + 10 +20712.5 + 20 +22175.429095 + 30 +0.0 + 11 +20737.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1856 + 8 +0 + 62 + 0 + 10 +20787.5 + 20 +22175.429095 + 30 +0.0 + 11 +20812.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1857 + 8 +0 + 62 + 0 + 10 +20862.5 + 20 +22175.429095 + 30 +0.0 + 11 +20887.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1858 + 8 +0 + 62 + 0 + 10 +20937.5 + 20 +22175.429095 + 30 +0.0 + 11 +20962.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1859 + 8 +0 + 62 + 0 + 10 +21012.5 + 20 +22175.429095 + 30 +0.0 + 11 +21037.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +185A + 8 +0 + 62 + 0 + 10 +21087.5 + 20 +22175.429095 + 30 +0.0 + 11 +21112.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +185B + 8 +0 + 62 + 0 + 10 +21162.5 + 20 +22175.429095 + 30 +0.0 + 11 +21187.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +185C + 8 +0 + 62 + 0 + 10 +21237.5 + 20 +22175.429095 + 30 +0.0 + 11 +21262.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +185D + 8 +0 + 62 + 0 + 10 +21312.5 + 20 +22175.429095 + 30 +0.0 + 11 +21337.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +185E + 8 +0 + 62 + 0 + 10 +21387.5 + 20 +22175.429095 + 30 +0.0 + 11 +21412.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +185F + 8 +0 + 62 + 0 + 10 +21462.5 + 20 +22175.429095 + 30 +0.0 + 11 +21487.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1860 + 8 +0 + 62 + 0 + 10 +21537.5 + 20 +22175.429095 + 30 +0.0 + 11 +21562.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1861 + 8 +0 + 62 + 0 + 10 +21612.5 + 20 +22175.429095 + 30 +0.0 + 11 +21637.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1862 + 8 +0 + 62 + 0 + 10 +21687.5 + 20 +22175.429095 + 30 +0.0 + 11 +21712.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1863 + 8 +0 + 62 + 0 + 10 +21762.5 + 20 +22175.429095 + 30 +0.0 + 11 +21787.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1864 + 8 +0 + 62 + 0 + 10 +21837.5 + 20 +22175.429095 + 30 +0.0 + 11 +21862.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1865 + 8 +0 + 62 + 0 + 10 +21912.5 + 20 +22175.429095 + 30 +0.0 + 11 +21937.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1866 + 8 +0 + 62 + 0 + 10 +21987.5 + 20 +22175.429095 + 30 +0.0 + 11 +22012.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1867 + 8 +0 + 62 + 0 + 10 +22062.5 + 20 +22175.429095 + 30 +0.0 + 11 +22087.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1868 + 8 +0 + 62 + 0 + 10 +22137.5 + 20 +22175.429095 + 30 +0.0 + 11 +22162.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1869 + 8 +0 + 62 + 0 + 10 +22212.5 + 20 +22175.429095 + 30 +0.0 + 11 +22237.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +186A + 8 +0 + 62 + 0 + 10 +22287.5 + 20 +22175.429095 + 30 +0.0 + 11 +22312.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +186B + 8 +0 + 62 + 0 + 10 +22362.5 + 20 +22175.429095 + 30 +0.0 + 11 +22387.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +186C + 8 +0 + 62 + 0 + 10 +22437.5 + 20 +22175.429095 + 30 +0.0 + 11 +22462.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +186D + 8 +0 + 62 + 0 + 10 +22512.5 + 20 +22175.429095 + 30 +0.0 + 11 +22537.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +186E + 8 +0 + 62 + 0 + 10 +22587.5 + 20 +22175.429095 + 30 +0.0 + 11 +22612.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +186F + 8 +0 + 62 + 0 + 10 +22662.5 + 20 +22175.429095 + 30 +0.0 + 11 +22687.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1870 + 8 +0 + 62 + 0 + 10 +22737.5 + 20 +22175.429095 + 30 +0.0 + 11 +22762.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1871 + 8 +0 + 62 + 0 + 10 +22812.5 + 20 +22175.429095 + 30 +0.0 + 11 +22837.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1872 + 8 +0 + 62 + 0 + 10 +22887.5 + 20 +22175.429095 + 30 +0.0 + 11 +22912.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1873 + 8 +0 + 62 + 0 + 10 +22962.5 + 20 +22175.429095 + 30 +0.0 + 11 +22987.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1874 + 8 +0 + 62 + 0 + 10 +23037.5 + 20 +22175.429095 + 30 +0.0 + 11 +23062.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1875 + 8 +0 + 62 + 0 + 10 +23112.5 + 20 +22175.429095 + 30 +0.0 + 11 +23137.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1876 + 8 +0 + 62 + 0 + 10 +23187.5 + 20 +22175.429095 + 30 +0.0 + 11 +23212.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1877 + 8 +0 + 62 + 0 + 10 +23262.5 + 20 +22175.429095 + 30 +0.0 + 11 +23287.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1878 + 8 +0 + 62 + 0 + 10 +23337.5 + 20 +22175.429095 + 30 +0.0 + 11 +23362.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1879 + 8 +0 + 62 + 0 + 10 +19738.25 + 20 +22132.127825 + 30 +0.0 + 11 +19762.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +187A + 8 +0 + 62 + 0 + 10 +19812.5 + 20 +22132.127825 + 30 +0.0 + 11 +19837.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +187B + 8 +0 + 62 + 0 + 10 +19887.5 + 20 +22132.127825 + 30 +0.0 + 11 +19912.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +187C + 8 +0 + 62 + 0 + 10 +19962.5 + 20 +22132.127825 + 30 +0.0 + 11 +19987.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +187D + 8 +0 + 62 + 0 + 10 +20037.5 + 20 +22132.127825 + 30 +0.0 + 11 +20062.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +187E + 8 +0 + 62 + 0 + 10 +20112.5 + 20 +22132.127825 + 30 +0.0 + 11 +20137.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +187F + 8 +0 + 62 + 0 + 10 +20187.5 + 20 +22132.127825 + 30 +0.0 + 11 +20212.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1880 + 8 +0 + 62 + 0 + 10 +20262.5 + 20 +22132.127825 + 30 +0.0 + 11 +20287.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1881 + 8 +0 + 62 + 0 + 10 +20337.5 + 20 +22132.127825 + 30 +0.0 + 11 +20362.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1882 + 8 +0 + 62 + 0 + 10 +20412.5 + 20 +22132.127825 + 30 +0.0 + 11 +20437.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1883 + 8 +0 + 62 + 0 + 10 +20487.5 + 20 +22132.127825 + 30 +0.0 + 11 +20512.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1884 + 8 +0 + 62 + 0 + 10 +20562.5 + 20 +22132.127825 + 30 +0.0 + 11 +20587.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1885 + 8 +0 + 62 + 0 + 10 +20637.5 + 20 +22132.127825 + 30 +0.0 + 11 +20662.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1886 + 8 +0 + 62 + 0 + 10 +20712.5 + 20 +22132.127825 + 30 +0.0 + 11 +20737.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1887 + 8 +0 + 62 + 0 + 10 +20787.5 + 20 +22132.127825 + 30 +0.0 + 11 +20812.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1888 + 8 +0 + 62 + 0 + 10 +20862.5 + 20 +22132.127825 + 30 +0.0 + 11 +20887.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1889 + 8 +0 + 62 + 0 + 10 +20937.5 + 20 +22132.127825 + 30 +0.0 + 11 +20962.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +188A + 8 +0 + 62 + 0 + 10 +21012.5 + 20 +22132.127825 + 30 +0.0 + 11 +21037.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +188B + 8 +0 + 62 + 0 + 10 +21087.5 + 20 +22132.127825 + 30 +0.0 + 11 +21112.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +188C + 8 +0 + 62 + 0 + 10 +21162.5 + 20 +22132.127825 + 30 +0.0 + 11 +21187.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +188D + 8 +0 + 62 + 0 + 10 +21237.5 + 20 +22132.127825 + 30 +0.0 + 11 +21262.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +188E + 8 +0 + 62 + 0 + 10 +21312.5 + 20 +22132.127825 + 30 +0.0 + 11 +21337.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +188F + 8 +0 + 62 + 0 + 10 +21387.5 + 20 +22132.127825 + 30 +0.0 + 11 +21412.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1890 + 8 +0 + 62 + 0 + 10 +21462.5 + 20 +22132.127825 + 30 +0.0 + 11 +21487.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1891 + 8 +0 + 62 + 0 + 10 +21537.5 + 20 +22132.127825 + 30 +0.0 + 11 +21562.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1892 + 8 +0 + 62 + 0 + 10 +21612.5 + 20 +22132.127825 + 30 +0.0 + 11 +21637.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1893 + 8 +0 + 62 + 0 + 10 +21687.5 + 20 +22132.127825 + 30 +0.0 + 11 +21712.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1894 + 8 +0 + 62 + 0 + 10 +21762.5 + 20 +22132.127825 + 30 +0.0 + 11 +21787.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1895 + 8 +0 + 62 + 0 + 10 +21837.5 + 20 +22132.127825 + 30 +0.0 + 11 +21862.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1896 + 8 +0 + 62 + 0 + 10 +21912.5 + 20 +22132.127825 + 30 +0.0 + 11 +21937.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1897 + 8 +0 + 62 + 0 + 10 +21987.5 + 20 +22132.127825 + 30 +0.0 + 11 +22012.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1898 + 8 +0 + 62 + 0 + 10 +22062.5 + 20 +22132.127825 + 30 +0.0 + 11 +22087.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1899 + 8 +0 + 62 + 0 + 10 +22137.5 + 20 +22132.127825 + 30 +0.0 + 11 +22162.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +189A + 8 +0 + 62 + 0 + 10 +22212.5 + 20 +22132.127825 + 30 +0.0 + 11 +22237.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +189B + 8 +0 + 62 + 0 + 10 +22287.5 + 20 +22132.127825 + 30 +0.0 + 11 +22312.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +189C + 8 +0 + 62 + 0 + 10 +22362.5 + 20 +22132.127825 + 30 +0.0 + 11 +22387.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +189D + 8 +0 + 62 + 0 + 10 +22437.5 + 20 +22132.127825 + 30 +0.0 + 11 +22462.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +189E + 8 +0 + 62 + 0 + 10 +22512.5 + 20 +22132.127825 + 30 +0.0 + 11 +22537.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +189F + 8 +0 + 62 + 0 + 10 +22587.5 + 20 +22132.127825 + 30 +0.0 + 11 +22612.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A0 + 8 +0 + 62 + 0 + 10 +22662.5 + 20 +22132.127825 + 30 +0.0 + 11 +22687.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A1 + 8 +0 + 62 + 0 + 10 +22737.5 + 20 +22132.127825 + 30 +0.0 + 11 +22762.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A2 + 8 +0 + 62 + 0 + 10 +22812.5 + 20 +22132.127825 + 30 +0.0 + 11 +22837.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A3 + 8 +0 + 62 + 0 + 10 +22887.5 + 20 +22132.127825 + 30 +0.0 + 11 +22912.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A4 + 8 +0 + 62 + 0 + 10 +22962.5 + 20 +22132.127825 + 30 +0.0 + 11 +22987.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A5 + 8 +0 + 62 + 0 + 10 +23037.5 + 20 +22132.127825 + 30 +0.0 + 11 +23062.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A6 + 8 +0 + 62 + 0 + 10 +23112.5 + 20 +22132.127825 + 30 +0.0 + 11 +23137.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A7 + 8 +0 + 62 + 0 + 10 +23187.5 + 20 +22132.127825 + 30 +0.0 + 11 +23212.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A8 + 8 +0 + 62 + 0 + 10 +23262.5 + 20 +22132.127825 + 30 +0.0 + 11 +23287.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18A9 + 8 +0 + 62 + 0 + 10 +23337.5 + 20 +22132.127825 + 30 +0.0 + 11 +23362.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +18AA + 8 +0 + 62 + 0 + 10 +21572.388682 + 20 +22115.0 + 30 +0.0 + 11 +21562.499921 + 21 +22132.127836 + 31 +0.0 + 0 +LINE + 5 +18AB + 8 +0 + 62 + 0 + 10 +21537.499921 + 20 +22175.429106 + 30 +0.0 + 11 +21526.20066 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18AC + 8 +0 + 62 + 0 + 10 +21537.499921 + 20 +22132.127836 + 30 +0.0 + 11 +21524.999921 + 21 +22153.778471 + 31 +0.0 + 0 +LINE + 5 +18AD + 8 +0 + 62 + 0 + 10 +21499.999922 + 20 +22153.778471 + 30 +0.0 + 11 +21487.499922 + 21 +22175.429106 + 31 +0.0 + 0 +LINE + 5 +18AE + 8 +0 + 62 + 0 + 10 +21497.388682 + 20 +22115.0 + 30 +0.0 + 11 +21487.499922 + 21 +22132.127836 + 31 +0.0 + 0 +LINE + 5 +18AF + 8 +0 + 62 + 0 + 10 +21462.499922 + 20 +22175.429106 + 30 +0.0 + 11 +21451.200661 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18B0 + 8 +0 + 62 + 0 + 10 +21462.499922 + 20 +22132.127836 + 30 +0.0 + 11 +21449.999922 + 21 +22153.778471 + 31 +0.0 + 0 +LINE + 5 +18B1 + 8 +0 + 62 + 0 + 10 +21424.999922 + 20 +22153.778471 + 30 +0.0 + 11 +21412.499922 + 21 +22175.429106 + 31 +0.0 + 0 +LINE + 5 +18B2 + 8 +0 + 62 + 0 + 10 +21422.388683 + 20 +22115.0 + 30 +0.0 + 11 +21412.499922 + 21 +22132.127836 + 31 +0.0 + 0 +LINE + 5 +18B3 + 8 +0 + 62 + 0 + 10 +21387.499922 + 20 +22175.429106 + 30 +0.0 + 11 +21376.200661 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18B4 + 8 +0 + 62 + 0 + 10 +21387.499922 + 20 +22132.127836 + 30 +0.0 + 11 +21374.999922 + 21 +22153.778471 + 31 +0.0 + 0 +LINE + 5 +18B5 + 8 +0 + 62 + 0 + 10 +21349.999922 + 20 +22153.778471 + 30 +0.0 + 11 +21337.499922 + 21 +22175.429106 + 31 +0.0 + 0 +LINE + 5 +18B6 + 8 +0 + 62 + 0 + 10 +21347.388683 + 20 +22115.0 + 30 +0.0 + 11 +21337.499922 + 21 +22132.127836 + 31 +0.0 + 0 +LINE + 5 +18B7 + 8 +0 + 62 + 0 + 10 +21312.499922 + 20 +22175.429106 + 30 +0.0 + 11 +21301.200661 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18B8 + 8 +0 + 62 + 0 + 10 +21312.499922 + 20 +22132.127836 + 30 +0.0 + 11 +21299.999922 + 21 +22153.778471 + 31 +0.0 + 0 +LINE + 5 +18B9 + 8 +0 + 62 + 0 + 10 +21274.999922 + 20 +22153.778471 + 30 +0.0 + 11 +21262.499922 + 21 +22175.429107 + 31 +0.0 + 0 +LINE + 5 +18BA + 8 +0 + 62 + 0 + 10 +21272.388683 + 20 +22115.0 + 30 +0.0 + 11 +21262.499922 + 21 +22132.127836 + 31 +0.0 + 0 +LINE + 5 +18BB + 8 +0 + 62 + 0 + 10 +21237.499922 + 20 +22175.429107 + 30 +0.0 + 11 +21226.200662 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18BC + 8 +0 + 62 + 0 + 10 +21237.499922 + 20 +22132.127836 + 30 +0.0 + 11 +21224.999922 + 21 +22153.778472 + 31 +0.0 + 0 +LINE + 5 +18BD + 8 +0 + 62 + 0 + 10 +21199.999922 + 20 +22153.778472 + 30 +0.0 + 11 +21187.499922 + 21 +22175.429107 + 31 +0.0 + 0 +LINE + 5 +18BE + 8 +0 + 62 + 0 + 10 +21197.388684 + 20 +22115.0 + 30 +0.0 + 11 +21187.499923 + 21 +22132.127837 + 31 +0.0 + 0 +LINE + 5 +18BF + 8 +0 + 62 + 0 + 10 +21162.499923 + 20 +22175.429107 + 30 +0.0 + 11 +21151.200662 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18C0 + 8 +0 + 62 + 0 + 10 +21162.499923 + 20 +22132.127837 + 30 +0.0 + 11 +21149.999923 + 21 +22153.778472 + 31 +0.0 + 0 +LINE + 5 +18C1 + 8 +0 + 62 + 0 + 10 +21124.999923 + 20 +22153.778472 + 30 +0.0 + 11 +21112.499923 + 21 +22175.429107 + 31 +0.0 + 0 +LINE + 5 +18C2 + 8 +0 + 62 + 0 + 10 +21122.388684 + 20 +22115.0 + 30 +0.0 + 11 +21112.499923 + 21 +22132.127837 + 31 +0.0 + 0 +LINE + 5 +18C3 + 8 +0 + 62 + 0 + 10 +21087.499923 + 20 +22175.429107 + 30 +0.0 + 11 +21076.200662 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18C4 + 8 +0 + 62 + 0 + 10 +21087.499923 + 20 +22132.127837 + 30 +0.0 + 11 +21074.999923 + 21 +22153.778472 + 31 +0.0 + 0 +LINE + 5 +18C5 + 8 +0 + 62 + 0 + 10 +21049.999923 + 20 +22153.778472 + 30 +0.0 + 11 +21037.499923 + 21 +22175.429107 + 31 +0.0 + 0 +LINE + 5 +18C6 + 8 +0 + 62 + 0 + 10 +21047.388684 + 20 +22115.0 + 30 +0.0 + 11 +21037.499923 + 21 +22132.127837 + 31 +0.0 + 0 +LINE + 5 +18C7 + 8 +0 + 62 + 0 + 10 +21012.499923 + 20 +22175.429107 + 30 +0.0 + 11 +21001.200663 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18C8 + 8 +0 + 62 + 0 + 10 +21012.499923 + 20 +22132.127837 + 30 +0.0 + 11 +20999.999923 + 21 +22153.778472 + 31 +0.0 + 0 +LINE + 5 +18C9 + 8 +0 + 62 + 0 + 10 +20974.999923 + 20 +22153.778472 + 30 +0.0 + 11 +20962.499923 + 21 +22175.429107 + 31 +0.0 + 0 +LINE + 5 +18CA + 8 +0 + 62 + 0 + 10 +20972.388685 + 20 +22115.0 + 30 +0.0 + 11 +20962.499923 + 21 +22132.127837 + 31 +0.0 + 0 +LINE + 5 +18CB + 8 +0 + 62 + 0 + 10 +20937.499923 + 20 +22175.429107 + 30 +0.0 + 11 +20926.200663 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18CC + 8 +0 + 62 + 0 + 10 +20937.499923 + 20 +22132.127837 + 30 +0.0 + 11 +20924.999923 + 21 +22153.778472 + 31 +0.0 + 0 +LINE + 5 +18CD + 8 +0 + 62 + 0 + 10 +20899.999923 + 20 +22153.778472 + 30 +0.0 + 11 +20887.499923 + 21 +22175.429107 + 31 +0.0 + 0 +LINE + 5 +18CE + 8 +0 + 62 + 0 + 10 +20897.388685 + 20 +22115.0 + 30 +0.0 + 11 +20887.499924 + 21 +22132.127837 + 31 +0.0 + 0 +LINE + 5 +18CF + 8 +0 + 62 + 0 + 10 +20862.499924 + 20 +22175.429107 + 30 +0.0 + 11 +20851.200663 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18D0 + 8 +0 + 62 + 0 + 10 +20862.499924 + 20 +22132.127837 + 30 +0.0 + 11 +20849.999924 + 21 +22153.778472 + 31 +0.0 + 0 +LINE + 5 +18D1 + 8 +0 + 62 + 0 + 10 +20824.999924 + 20 +22153.778472 + 30 +0.0 + 11 +20812.499924 + 21 +22175.429107 + 31 +0.0 + 0 +LINE + 5 +18D2 + 8 +0 + 62 + 0 + 10 +20822.388685 + 20 +22115.0 + 30 +0.0 + 11 +20812.499924 + 21 +22132.127837 + 31 +0.0 + 0 +LINE + 5 +18D3 + 8 +0 + 62 + 0 + 10 +20787.499924 + 20 +22175.429107 + 30 +0.0 + 11 +20776.200664 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18D4 + 8 +0 + 62 + 0 + 10 +20787.499924 + 20 +22132.127837 + 30 +0.0 + 11 +20774.999924 + 21 +22153.778472 + 31 +0.0 + 0 +LINE + 5 +18D5 + 8 +0 + 62 + 0 + 10 +20749.999924 + 20 +22153.778472 + 30 +0.0 + 11 +20737.499924 + 21 +22175.429108 + 31 +0.0 + 0 +LINE + 5 +18D6 + 8 +0 + 62 + 0 + 10 +20747.388686 + 20 +22115.0 + 30 +0.0 + 11 +20737.499924 + 21 +22132.127837 + 31 +0.0 + 0 +LINE + 5 +18D7 + 8 +0 + 62 + 0 + 10 +20712.499924 + 20 +22175.429108 + 30 +0.0 + 11 +20701.200664 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18D8 + 8 +0 + 62 + 0 + 10 +20712.499924 + 20 +22132.127837 + 30 +0.0 + 11 +20699.999924 + 21 +22153.778473 + 31 +0.0 + 0 +LINE + 5 +18D9 + 8 +0 + 62 + 0 + 10 +20674.999924 + 20 +22153.778473 + 30 +0.0 + 11 +20662.499924 + 21 +22175.429108 + 31 +0.0 + 0 +LINE + 5 +18DA + 8 +0 + 62 + 0 + 10 +20672.388686 + 20 +22115.0 + 30 +0.0 + 11 +20662.499924 + 21 +22132.127838 + 31 +0.0 + 0 +LINE + 5 +18DB + 8 +0 + 62 + 0 + 10 +20637.499924 + 20 +22175.429108 + 30 +0.0 + 11 +20626.200664 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18DC + 8 +0 + 62 + 0 + 10 +20637.499924 + 20 +22132.127838 + 30 +0.0 + 11 +20624.999924 + 21 +22153.778473 + 31 +0.0 + 0 +LINE + 5 +18DD + 8 +0 + 62 + 0 + 10 +20599.999924 + 20 +22153.778473 + 30 +0.0 + 11 +20587.499924 + 21 +22175.429108 + 31 +0.0 + 0 +LINE + 5 +18DE + 8 +0 + 62 + 0 + 10 +20597.388686 + 20 +22115.0 + 30 +0.0 + 11 +20587.499925 + 21 +22132.127838 + 31 +0.0 + 0 +LINE + 5 +18DF + 8 +0 + 62 + 0 + 10 +20562.499925 + 20 +22175.429108 + 30 +0.0 + 11 +20551.200665 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18E0 + 8 +0 + 62 + 0 + 10 +20562.499925 + 20 +22132.127838 + 30 +0.0 + 11 +20549.999925 + 21 +22153.778473 + 31 +0.0 + 0 +LINE + 5 +18E1 + 8 +0 + 62 + 0 + 10 +20524.999925 + 20 +22153.778473 + 30 +0.0 + 11 +20512.499925 + 21 +22175.429108 + 31 +0.0 + 0 +LINE + 5 +18E2 + 8 +0 + 62 + 0 + 10 +20522.388687 + 20 +22115.0 + 30 +0.0 + 11 +20512.499925 + 21 +22132.127838 + 31 +0.0 + 0 +LINE + 5 +18E3 + 8 +0 + 62 + 0 + 10 +20487.499925 + 20 +22175.429108 + 30 +0.0 + 11 +20476.200665 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18E4 + 8 +0 + 62 + 0 + 10 +20487.499925 + 20 +22132.127838 + 30 +0.0 + 11 +20474.999925 + 21 +22153.778473 + 31 +0.0 + 0 +LINE + 5 +18E5 + 8 +0 + 62 + 0 + 10 +20449.999925 + 20 +22153.778473 + 30 +0.0 + 11 +20437.499925 + 21 +22175.429108 + 31 +0.0 + 0 +LINE + 5 +18E6 + 8 +0 + 62 + 0 + 10 +20447.388687 + 20 +22115.0 + 30 +0.0 + 11 +20437.499925 + 21 +22132.127838 + 31 +0.0 + 0 +LINE + 5 +18E7 + 8 +0 + 62 + 0 + 10 +20412.499925 + 20 +22175.429108 + 30 +0.0 + 11 +20401.200665 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18E8 + 8 +0 + 62 + 0 + 10 +20412.499925 + 20 +22132.127838 + 30 +0.0 + 11 +20399.999925 + 21 +22153.778473 + 31 +0.0 + 0 +LINE + 5 +18E9 + 8 +0 + 62 + 0 + 10 +20374.999925 + 20 +22153.778473 + 30 +0.0 + 11 +20362.499925 + 21 +22175.429108 + 31 +0.0 + 0 +LINE + 5 +18EA + 8 +0 + 62 + 0 + 10 +20372.388687 + 20 +22115.0 + 30 +0.0 + 11 +20362.499925 + 21 +22132.127838 + 31 +0.0 + 0 +LINE + 5 +18EB + 8 +0 + 62 + 0 + 10 +20337.499925 + 20 +22175.429108 + 30 +0.0 + 11 +20326.200666 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18EC + 8 +0 + 62 + 0 + 10 +20337.499925 + 20 +22132.127838 + 30 +0.0 + 11 +20324.999925 + 21 +22153.778473 + 31 +0.0 + 0 +LINE + 5 +18ED + 8 +0 + 62 + 0 + 10 +20299.999925 + 20 +22153.778473 + 30 +0.0 + 11 +20287.499925 + 21 +22175.429108 + 31 +0.0 + 0 +LINE + 5 +18EE + 8 +0 + 62 + 0 + 10 +20297.388688 + 20 +22115.0 + 30 +0.0 + 11 +20287.499926 + 21 +22132.127838 + 31 +0.0 + 0 +LINE + 5 +18EF + 8 +0 + 62 + 0 + 10 +20262.499926 + 20 +22175.429108 + 30 +0.0 + 11 +20251.200666 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18F0 + 8 +0 + 62 + 0 + 10 +20262.499926 + 20 +22132.127838 + 30 +0.0 + 11 +20249.999926 + 21 +22153.778473 + 31 +0.0 + 0 +LINE + 5 +18F1 + 8 +0 + 62 + 0 + 10 +20224.999926 + 20 +22153.778473 + 30 +0.0 + 11 +20212.499926 + 21 +22175.429109 + 31 +0.0 + 0 +LINE + 5 +18F2 + 8 +0 + 62 + 0 + 10 +20222.388688 + 20 +22115.0 + 30 +0.0 + 11 +20212.499926 + 21 +22132.127838 + 31 +0.0 + 0 +LINE + 5 +18F3 + 8 +0 + 62 + 0 + 10 +20187.499926 + 20 +22175.429109 + 30 +0.0 + 11 +20176.200666 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18F4 + 8 +0 + 62 + 0 + 10 +20187.499926 + 20 +22132.127838 + 30 +0.0 + 11 +20174.999926 + 21 +22153.778474 + 31 +0.0 + 0 +LINE + 5 +18F5 + 8 +0 + 62 + 0 + 10 +20149.999926 + 20 +22153.778474 + 30 +0.0 + 11 +20137.499926 + 21 +22175.429109 + 31 +0.0 + 0 +LINE + 5 +18F6 + 8 +0 + 62 + 0 + 10 +20147.388688 + 20 +22115.0 + 30 +0.0 + 11 +20137.499926 + 21 +22132.127839 + 31 +0.0 + 0 +LINE + 5 +18F7 + 8 +0 + 62 + 0 + 10 +20112.499926 + 20 +22175.429109 + 30 +0.0 + 11 +20101.200667 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18F8 + 8 +0 + 62 + 0 + 10 +20112.499926 + 20 +22132.127839 + 30 +0.0 + 11 +20099.999926 + 21 +22153.778474 + 31 +0.0 + 0 +LINE + 5 +18F9 + 8 +0 + 62 + 0 + 10 +20074.999926 + 20 +22153.778474 + 30 +0.0 + 11 +20062.499926 + 21 +22175.429109 + 31 +0.0 + 0 +LINE + 5 +18FA + 8 +0 + 62 + 0 + 10 +20072.388689 + 20 +22115.0 + 30 +0.0 + 11 +20062.499926 + 21 +22132.127839 + 31 +0.0 + 0 +LINE + 5 +18FB + 8 +0 + 62 + 0 + 10 +20037.499926 + 20 +22175.429109 + 30 +0.0 + 11 +20026.200667 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +18FC + 8 +0 + 62 + 0 + 10 +20037.499926 + 20 +22132.127839 + 30 +0.0 + 11 +20024.999926 + 21 +22153.778474 + 31 +0.0 + 0 +LINE + 5 +18FD + 8 +0 + 62 + 0 + 10 +19999.999926 + 20 +22153.778474 + 30 +0.0 + 11 +19987.499926 + 21 +22175.429109 + 31 +0.0 + 0 +LINE + 5 +18FE + 8 +0 + 62 + 0 + 10 +19997.388689 + 20 +22115.0 + 30 +0.0 + 11 +19987.499927 + 21 +22132.127839 + 31 +0.0 + 0 +LINE + 5 +18FF + 8 +0 + 62 + 0 + 10 +19962.499927 + 20 +22175.429109 + 30 +0.0 + 11 +19951.200667 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1900 + 8 +0 + 62 + 0 + 10 +19962.499927 + 20 +22132.127839 + 30 +0.0 + 11 +19949.999927 + 21 +22153.778474 + 31 +0.0 + 0 +LINE + 5 +1901 + 8 +0 + 62 + 0 + 10 +19924.999927 + 20 +22153.778474 + 30 +0.0 + 11 +19912.499927 + 21 +22175.429109 + 31 +0.0 + 0 +LINE + 5 +1902 + 8 +0 + 62 + 0 + 10 +19922.388689 + 20 +22115.0 + 30 +0.0 + 11 +19912.499927 + 21 +22132.127839 + 31 +0.0 + 0 +LINE + 5 +1903 + 8 +0 + 62 + 0 + 10 +19887.499927 + 20 +22175.429109 + 30 +0.0 + 11 +19876.200668 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1904 + 8 +0 + 62 + 0 + 10 +19887.499927 + 20 +22132.127839 + 30 +0.0 + 11 +19874.999927 + 21 +22153.778474 + 31 +0.0 + 0 +LINE + 5 +1905 + 8 +0 + 62 + 0 + 10 +19849.999927 + 20 +22153.778474 + 30 +0.0 + 11 +19837.499927 + 21 +22175.429109 + 31 +0.0 + 0 +LINE + 5 +1906 + 8 +0 + 62 + 0 + 10 +19847.38869 + 20 +22115.0 + 30 +0.0 + 11 +19837.499927 + 21 +22132.127839 + 31 +0.0 + 0 +LINE + 5 +1907 + 8 +0 + 62 + 0 + 10 +19812.499927 + 20 +22175.429109 + 30 +0.0 + 11 +19801.200668 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1908 + 8 +0 + 62 + 0 + 10 +19812.499927 + 20 +22132.127839 + 30 +0.0 + 11 +19799.999927 + 21 +22153.778474 + 31 +0.0 + 0 +LINE + 5 +1909 + 8 +0 + 62 + 0 + 10 +19774.999927 + 20 +22153.778474 + 30 +0.0 + 11 +19762.499927 + 21 +22175.429109 + 31 +0.0 + 0 +LINE + 5 +190A + 8 +0 + 62 + 0 + 10 +19772.38869 + 20 +22115.0 + 30 +0.0 + 11 +19762.499927 + 21 +22132.127839 + 31 +0.0 + 0 +LINE + 5 +190B + 8 +0 + 62 + 0 + 10 +21574.999921 + 20 +22153.778471 + 30 +0.0 + 11 +21562.499921 + 21 +22175.429106 + 31 +0.0 + 0 +LINE + 5 +190C + 8 +0 + 62 + 0 + 10 +21612.499921 + 20 +22132.127836 + 30 +0.0 + 11 +21599.999921 + 21 +22153.778471 + 31 +0.0 + 0 +LINE + 5 +190D + 8 +0 + 62 + 0 + 10 +21647.388682 + 20 +22115.0 + 30 +0.0 + 11 +21637.499921 + 21 +22132.127836 + 31 +0.0 + 0 +LINE + 5 +190E + 8 +0 + 62 + 0 + 10 +21612.499921 + 20 +22175.429106 + 30 +0.0 + 11 +21601.20066 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +190F + 8 +0 + 62 + 0 + 10 +21649.999921 + 20 +22153.778471 + 30 +0.0 + 11 +21637.499921 + 21 +22175.429106 + 31 +0.0 + 0 +LINE + 5 +1910 + 8 +0 + 62 + 0 + 10 +21687.499921 + 20 +22132.127836 + 30 +0.0 + 11 +21674.999921 + 21 +22153.778471 + 31 +0.0 + 0 +LINE + 5 +1911 + 8 +0 + 62 + 0 + 10 +21722.388681 + 20 +22115.0 + 30 +0.0 + 11 +21712.499921 + 21 +22132.127836 + 31 +0.0 + 0 +LINE + 5 +1912 + 8 +0 + 62 + 0 + 10 +21687.499921 + 20 +22175.429106 + 30 +0.0 + 11 +21676.20066 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1913 + 8 +0 + 62 + 0 + 10 +21724.999921 + 20 +22153.778471 + 30 +0.0 + 11 +21712.499921 + 21 +22175.429106 + 31 +0.0 + 0 +LINE + 5 +1914 + 8 +0 + 62 + 0 + 10 +21762.499921 + 20 +22132.127836 + 30 +0.0 + 11 +21749.999921 + 21 +22153.778471 + 31 +0.0 + 0 +LINE + 5 +1915 + 8 +0 + 62 + 0 + 10 +21797.388681 + 20 +22115.0 + 30 +0.0 + 11 +21787.499921 + 21 +22132.127835 + 31 +0.0 + 0 +LINE + 5 +1916 + 8 +0 + 62 + 0 + 10 +21762.499921 + 20 +22175.429106 + 30 +0.0 + 11 +21751.200659 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1917 + 8 +0 + 62 + 0 + 10 +21799.999921 + 20 +22153.778471 + 30 +0.0 + 11 +21787.499921 + 21 +22175.429106 + 31 +0.0 + 0 +LINE + 5 +1918 + 8 +0 + 62 + 0 + 10 +21837.49992 + 20 +22132.127835 + 30 +0.0 + 11 +21824.99992 + 21 +22153.77847 + 31 +0.0 + 0 +LINE + 5 +1919 + 8 +0 + 62 + 0 + 10 +21872.388681 + 20 +22115.0 + 30 +0.0 + 11 +21862.49992 + 21 +22132.127835 + 31 +0.0 + 0 +LINE + 5 +191A + 8 +0 + 62 + 0 + 10 +21837.49992 + 20 +22175.429106 + 30 +0.0 + 11 +21826.200659 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +191B + 8 +0 + 62 + 0 + 10 +21874.99992 + 20 +22153.77847 + 30 +0.0 + 11 +21862.49992 + 21 +22175.429105 + 31 +0.0 + 0 +LINE + 5 +191C + 8 +0 + 62 + 0 + 10 +21912.49992 + 20 +22132.127835 + 30 +0.0 + 11 +21899.99992 + 21 +22153.77847 + 31 +0.0 + 0 +LINE + 5 +191D + 8 +0 + 62 + 0 + 10 +21947.38868 + 20 +22115.0 + 30 +0.0 + 11 +21937.49992 + 21 +22132.127835 + 31 +0.0 + 0 +LINE + 5 +191E + 8 +0 + 62 + 0 + 10 +21912.49992 + 20 +22175.429105 + 30 +0.0 + 11 +21901.200659 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +191F + 8 +0 + 62 + 0 + 10 +21949.99992 + 20 +22153.77847 + 30 +0.0 + 11 +21937.49992 + 21 +22175.429105 + 31 +0.0 + 0 +LINE + 5 +1920 + 8 +0 + 62 + 0 + 10 +21987.49992 + 20 +22132.127835 + 30 +0.0 + 11 +21974.99992 + 21 +22153.77847 + 31 +0.0 + 0 +LINE + 5 +1921 + 8 +0 + 62 + 0 + 10 +22022.38868 + 20 +22115.0 + 30 +0.0 + 11 +22012.49992 + 21 +22132.127835 + 31 +0.0 + 0 +LINE + 5 +1922 + 8 +0 + 62 + 0 + 10 +21987.49992 + 20 +22175.429105 + 30 +0.0 + 11 +21976.200658 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1923 + 8 +0 + 62 + 0 + 10 +22024.99992 + 20 +22153.77847 + 30 +0.0 + 11 +22012.49992 + 21 +22175.429105 + 31 +0.0 + 0 +LINE + 5 +1924 + 8 +0 + 62 + 0 + 10 +22062.49992 + 20 +22132.127835 + 30 +0.0 + 11 +22049.99992 + 21 +22153.77847 + 31 +0.0 + 0 +LINE + 5 +1925 + 8 +0 + 62 + 0 + 10 +22097.38868 + 20 +22115.0 + 30 +0.0 + 11 +22087.49992 + 21 +22132.127835 + 31 +0.0 + 0 +LINE + 5 +1926 + 8 +0 + 62 + 0 + 10 +22062.49992 + 20 +22175.429105 + 30 +0.0 + 11 +22051.200658 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1927 + 8 +0 + 62 + 0 + 10 +22099.99992 + 20 +22153.77847 + 30 +0.0 + 11 +22087.49992 + 21 +22175.429105 + 31 +0.0 + 0 +LINE + 5 +1928 + 8 +0 + 62 + 0 + 10 +22137.499919 + 20 +22132.127835 + 30 +0.0 + 11 +22124.999919 + 21 +22153.77847 + 31 +0.0 + 0 +LINE + 5 +1929 + 8 +0 + 62 + 0 + 10 +22172.388679 + 20 +22115.0 + 30 +0.0 + 11 +22162.499919 + 21 +22132.127835 + 31 +0.0 + 0 +LINE + 5 +192A + 8 +0 + 62 + 0 + 10 +22137.499919 + 20 +22175.429105 + 30 +0.0 + 11 +22126.200658 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +192B + 8 +0 + 62 + 0 + 10 +22174.999919 + 20 +22153.77847 + 30 +0.0 + 11 +22162.499919 + 21 +22175.429105 + 31 +0.0 + 0 +LINE + 5 +192C + 8 +0 + 62 + 0 + 10 +22212.499919 + 20 +22132.127835 + 30 +0.0 + 11 +22199.999919 + 21 +22153.77847 + 31 +0.0 + 0 +LINE + 5 +192D + 8 +0 + 62 + 0 + 10 +22247.388679 + 20 +22115.0 + 30 +0.0 + 11 +22237.499919 + 21 +22132.127835 + 31 +0.0 + 0 +LINE + 5 +192E + 8 +0 + 62 + 0 + 10 +22212.499919 + 20 +22175.429105 + 30 +0.0 + 11 +22201.200658 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +192F + 8 +0 + 62 + 0 + 10 +22249.999919 + 20 +22153.77847 + 30 +0.0 + 11 +22237.499919 + 21 +22175.429105 + 31 +0.0 + 0 +LINE + 5 +1930 + 8 +0 + 62 + 0 + 10 +22287.499919 + 20 +22132.127835 + 30 +0.0 + 11 +22274.999919 + 21 +22153.77847 + 31 +0.0 + 0 +LINE + 5 +1931 + 8 +0 + 62 + 0 + 10 +22322.388679 + 20 +22115.0 + 30 +0.0 + 11 +22312.499919 + 21 +22132.127834 + 31 +0.0 + 0 +LINE + 5 +1932 + 8 +0 + 62 + 0 + 10 +22287.499919 + 20 +22175.429105 + 30 +0.0 + 11 +22276.200657 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1933 + 8 +0 + 62 + 0 + 10 +22324.999919 + 20 +22153.77847 + 30 +0.0 + 11 +22312.499919 + 21 +22175.429105 + 31 +0.0 + 0 +LINE + 5 +1934 + 8 +0 + 62 + 0 + 10 +22362.499919 + 20 +22132.127834 + 30 +0.0 + 11 +22349.999919 + 21 +22153.778469 + 31 +0.0 + 0 +LINE + 5 +1935 + 8 +0 + 62 + 0 + 10 +22397.388678 + 20 +22115.0 + 30 +0.0 + 11 +22387.499919 + 21 +22132.127834 + 31 +0.0 + 0 +LINE + 5 +1936 + 8 +0 + 62 + 0 + 10 +22362.499919 + 20 +22175.429105 + 30 +0.0 + 11 +22351.200657 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1937 + 8 +0 + 62 + 0 + 10 +22399.999919 + 20 +22153.778469 + 30 +0.0 + 11 +22387.499919 + 21 +22175.429104 + 31 +0.0 + 0 +LINE + 5 +1938 + 8 +0 + 62 + 0 + 10 +22437.499918 + 20 +22132.127834 + 30 +0.0 + 11 +22424.999918 + 21 +22153.778469 + 31 +0.0 + 0 +LINE + 5 +1939 + 8 +0 + 62 + 0 + 10 +22472.388678 + 20 +22115.0 + 30 +0.0 + 11 +22462.499918 + 21 +22132.127834 + 31 +0.0 + 0 +LINE + 5 +193A + 8 +0 + 62 + 0 + 10 +22437.499918 + 20 +22175.429104 + 30 +0.0 + 11 +22426.200657 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +193B + 8 +0 + 62 + 0 + 10 +22474.999918 + 20 +22153.778469 + 30 +0.0 + 11 +22462.499918 + 21 +22175.429104 + 31 +0.0 + 0 +LINE + 5 +193C + 8 +0 + 62 + 0 + 10 +22512.499918 + 20 +22132.127834 + 30 +0.0 + 11 +22499.999918 + 21 +22153.778469 + 31 +0.0 + 0 +LINE + 5 +193D + 8 +0 + 62 + 0 + 10 +22547.388678 + 20 +22115.0 + 30 +0.0 + 11 +22537.499918 + 21 +22132.127834 + 31 +0.0 + 0 +LINE + 5 +193E + 8 +0 + 62 + 0 + 10 +22512.499918 + 20 +22175.429104 + 30 +0.0 + 11 +22501.200656 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +193F + 8 +0 + 62 + 0 + 10 +22549.999918 + 20 +22153.778469 + 30 +0.0 + 11 +22537.499918 + 21 +22175.429104 + 31 +0.0 + 0 +LINE + 5 +1940 + 8 +0 + 62 + 0 + 10 +22587.499918 + 20 +22132.127834 + 30 +0.0 + 11 +22574.999918 + 21 +22153.778469 + 31 +0.0 + 0 +LINE + 5 +1941 + 8 +0 + 62 + 0 + 10 +22622.388677 + 20 +22115.0 + 30 +0.0 + 11 +22612.499918 + 21 +22132.127834 + 31 +0.0 + 0 +LINE + 5 +1942 + 8 +0 + 62 + 0 + 10 +22587.499918 + 20 +22175.429104 + 30 +0.0 + 11 +22576.200656 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1943 + 8 +0 + 62 + 0 + 10 +22624.999918 + 20 +22153.778469 + 30 +0.0 + 11 +22612.499918 + 21 +22175.429104 + 31 +0.0 + 0 +LINE + 5 +1944 + 8 +0 + 62 + 0 + 10 +22662.499918 + 20 +22132.127834 + 30 +0.0 + 11 +22649.999918 + 21 +22153.778469 + 31 +0.0 + 0 +LINE + 5 +1945 + 8 +0 + 62 + 0 + 10 +22697.388677 + 20 +22115.0 + 30 +0.0 + 11 +22687.499918 + 21 +22132.127834 + 31 +0.0 + 0 +LINE + 5 +1946 + 8 +0 + 62 + 0 + 10 +22662.499918 + 20 +22175.429104 + 30 +0.0 + 11 +22651.200656 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1947 + 8 +0 + 62 + 0 + 10 +22699.999918 + 20 +22153.778469 + 30 +0.0 + 11 +22687.499918 + 21 +22175.429104 + 31 +0.0 + 0 +LINE + 5 +1948 + 8 +0 + 62 + 0 + 10 +22737.499917 + 20 +22132.127834 + 30 +0.0 + 11 +22724.999917 + 21 +22153.778469 + 31 +0.0 + 0 +LINE + 5 +1949 + 8 +0 + 62 + 0 + 10 +22772.388677 + 20 +22115.0 + 30 +0.0 + 11 +22762.499917 + 21 +22132.127834 + 31 +0.0 + 0 +LINE + 5 +194A + 8 +0 + 62 + 0 + 10 +22737.499917 + 20 +22175.429104 + 30 +0.0 + 11 +22726.200655 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +194B + 8 +0 + 62 + 0 + 10 +22774.999917 + 20 +22153.778469 + 30 +0.0 + 11 +22762.499917 + 21 +22175.429104 + 31 +0.0 + 0 +LINE + 5 +194C + 8 +0 + 62 + 0 + 10 +22812.499917 + 20 +22132.127834 + 30 +0.0 + 11 +22799.999917 + 21 +22153.778469 + 31 +0.0 + 0 +LINE + 5 +194D + 8 +0 + 62 + 0 + 10 +22847.388676 + 20 +22115.0 + 30 +0.0 + 11 +22837.499917 + 21 +22132.127833 + 31 +0.0 + 0 +LINE + 5 +194E + 8 +0 + 62 + 0 + 10 +22812.499917 + 20 +22175.429104 + 30 +0.0 + 11 +22801.200655 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +194F + 8 +0 + 62 + 0 + 10 +22849.999917 + 20 +22153.778469 + 30 +0.0 + 11 +22837.499917 + 21 +22175.429104 + 31 +0.0 + 0 +LINE + 5 +1950 + 8 +0 + 62 + 0 + 10 +22887.499917 + 20 +22132.127833 + 30 +0.0 + 11 +22874.999917 + 21 +22153.778468 + 31 +0.0 + 0 +LINE + 5 +1951 + 8 +0 + 62 + 0 + 10 +22922.388676 + 20 +22115.0 + 30 +0.0 + 11 +22912.499917 + 21 +22132.127833 + 31 +0.0 + 0 +LINE + 5 +1952 + 8 +0 + 62 + 0 + 10 +22887.499917 + 20 +22175.429104 + 30 +0.0 + 11 +22876.200655 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1953 + 8 +0 + 62 + 0 + 10 +22924.999917 + 20 +22153.778468 + 30 +0.0 + 11 +22912.499917 + 21 +22175.429103 + 31 +0.0 + 0 +LINE + 5 +1954 + 8 +0 + 62 + 0 + 10 +22962.499917 + 20 +22132.127833 + 30 +0.0 + 11 +22949.999917 + 21 +22153.778468 + 31 +0.0 + 0 +LINE + 5 +1955 + 8 +0 + 62 + 0 + 10 +22997.388676 + 20 +22115.0 + 30 +0.0 + 11 +22987.499917 + 21 +22132.127833 + 31 +0.0 + 0 +LINE + 5 +1956 + 8 +0 + 62 + 0 + 10 +22962.499917 + 20 +22175.429103 + 30 +0.0 + 11 +22951.200654 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1957 + 8 +0 + 62 + 0 + 10 +22999.999917 + 20 +22153.778468 + 30 +0.0 + 11 +22987.499917 + 21 +22175.429103 + 31 +0.0 + 0 +LINE + 5 +1958 + 8 +0 + 62 + 0 + 10 +23037.499917 + 20 +22132.127833 + 30 +0.0 + 11 +23024.999917 + 21 +22153.778468 + 31 +0.0 + 0 +LINE + 5 +1959 + 8 +0 + 62 + 0 + 10 +23072.388675 + 20 +22115.0 + 30 +0.0 + 11 +23062.499916 + 21 +22132.127833 + 31 +0.0 + 0 +LINE + 5 +195A + 8 +0 + 62 + 0 + 10 +23037.499916 + 20 +22175.429103 + 30 +0.0 + 11 +23026.200654 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +195B + 8 +0 + 62 + 0 + 10 +23074.999916 + 20 +22153.778468 + 30 +0.0 + 11 +23062.499916 + 21 +22175.429103 + 31 +0.0 + 0 +LINE + 5 +195C + 8 +0 + 62 + 0 + 10 +23112.499916 + 20 +22132.127833 + 30 +0.0 + 11 +23099.999916 + 21 +22153.778468 + 31 +0.0 + 0 +LINE + 5 +195D + 8 +0 + 62 + 0 + 10 +23147.388675 + 20 +22115.0 + 30 +0.0 + 11 +23137.499916 + 21 +22132.127833 + 31 +0.0 + 0 +LINE + 5 +195E + 8 +0 + 62 + 0 + 10 +23112.499916 + 20 +22175.429103 + 30 +0.0 + 11 +23101.200654 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +195F + 8 +0 + 62 + 0 + 10 +23149.999916 + 20 +22153.778468 + 30 +0.0 + 11 +23137.499916 + 21 +22175.429103 + 31 +0.0 + 0 +LINE + 5 +1960 + 8 +0 + 62 + 0 + 10 +23187.499916 + 20 +22132.127833 + 30 +0.0 + 11 +23174.999916 + 21 +22153.778468 + 31 +0.0 + 0 +LINE + 5 +1961 + 8 +0 + 62 + 0 + 10 +23222.388675 + 20 +22115.0 + 30 +0.0 + 11 +23212.499916 + 21 +22132.127833 + 31 +0.0 + 0 +LINE + 5 +1962 + 8 +0 + 62 + 0 + 10 +23187.499916 + 20 +22175.429103 + 30 +0.0 + 11 +23176.200653 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1963 + 8 +0 + 62 + 0 + 10 +23224.999916 + 20 +22153.778468 + 30 +0.0 + 11 +23212.499916 + 21 +22175.429103 + 31 +0.0 + 0 +LINE + 5 +1964 + 8 +0 + 62 + 0 + 10 +23262.499916 + 20 +22132.127833 + 30 +0.0 + 11 +23249.999916 + 21 +22153.778468 + 31 +0.0 + 0 +LINE + 5 +1965 + 8 +0 + 62 + 0 + 10 +23297.388674 + 20 +22115.0 + 30 +0.0 + 11 +23287.499916 + 21 +22132.127833 + 31 +0.0 + 0 +LINE + 5 +1966 + 8 +0 + 62 + 0 + 10 +23262.499916 + 20 +22175.429103 + 30 +0.0 + 11 +23251.200653 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1967 + 8 +0 + 62 + 0 + 10 +23299.999916 + 20 +22153.778468 + 30 +0.0 + 11 +23287.499916 + 21 +22175.429103 + 31 +0.0 + 0 +LINE + 5 +1968 + 8 +0 + 62 + 0 + 10 +23337.499916 + 20 +22132.127833 + 30 +0.0 + 11 +23324.999916 + 21 +22153.778468 + 31 +0.0 + 0 +LINE + 5 +1969 + 8 +0 + 62 + 0 + 10 +23372.388674 + 20 +22115.0 + 30 +0.0 + 11 +23362.499915 + 21 +22132.127832 + 31 +0.0 + 0 +LINE + 5 +196A + 8 +0 + 62 + 0 + 10 +23337.499915 + 20 +22175.429103 + 30 +0.0 + 11 +23326.200653 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +196B + 8 +0 + 62 + 0 + 10 +23374.999915 + 20 +22153.778468 + 30 +0.0 + 11 +23362.499915 + 21 +22175.429103 + 31 +0.0 + 0 +LINE + 5 +196C + 8 +0 + 62 + 0 + 10 +21527.611173 + 20 +22115.0 + 30 +0.0 + 11 +21537.49997 + 21 +22132.127899 + 31 +0.0 + 0 +LINE + 5 +196D + 8 +0 + 62 + 0 + 10 +21562.49997 + 20 +22175.429169 + 30 +0.0 + 11 +21573.799195 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +196E + 8 +0 + 62 + 0 + 10 +21524.99997 + 20 +22153.778534 + 30 +0.0 + 11 +21537.49997 + 21 +22175.429169 + 31 +0.0 + 0 +LINE + 5 +196F + 8 +0 + 62 + 0 + 10 +21487.49997 + 20 +22132.127898 + 30 +0.0 + 11 +21499.99997 + 21 +22153.778534 + 31 +0.0 + 0 +LINE + 5 +1970 + 8 +0 + 62 + 0 + 10 +21452.611174 + 20 +22115.0 + 30 +0.0 + 11 +21462.49997 + 21 +22132.127898 + 31 +0.0 + 0 +LINE + 5 +1971 + 8 +0 + 62 + 0 + 10 +21487.49997 + 20 +22175.429169 + 30 +0.0 + 11 +21498.799195 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1972 + 8 +0 + 62 + 0 + 10 +21449.999971 + 20 +22153.778533 + 30 +0.0 + 11 +21462.499971 + 21 +22175.429169 + 31 +0.0 + 0 +LINE + 5 +1973 + 8 +0 + 62 + 0 + 10 +21412.499971 + 20 +22132.127898 + 30 +0.0 + 11 +21424.999971 + 21 +22153.778533 + 31 +0.0 + 0 +LINE + 5 +1974 + 8 +0 + 62 + 0 + 10 +21377.611174 + 20 +22115.0 + 30 +0.0 + 11 +21387.499971 + 21 +22132.127898 + 31 +0.0 + 0 +LINE + 5 +1975 + 8 +0 + 62 + 0 + 10 +21412.499971 + 20 +22175.429168 + 30 +0.0 + 11 +21423.799196 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1976 + 8 +0 + 62 + 0 + 10 +21374.999971 + 20 +22153.778533 + 30 +0.0 + 11 +21387.499971 + 21 +22175.429168 + 31 +0.0 + 0 +LINE + 5 +1977 + 8 +0 + 62 + 0 + 10 +21337.499971 + 20 +22132.127898 + 30 +0.0 + 11 +21349.999971 + 21 +22153.778533 + 31 +0.0 + 0 +LINE + 5 +1978 + 8 +0 + 62 + 0 + 10 +21302.611174 + 20 +22115.0 + 30 +0.0 + 11 +21312.499971 + 21 +22132.127898 + 31 +0.0 + 0 +LINE + 5 +1979 + 8 +0 + 62 + 0 + 10 +21337.499971 + 20 +22175.429168 + 30 +0.0 + 11 +21348.799196 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +197A + 8 +0 + 62 + 0 + 10 +21299.999971 + 20 +22153.778533 + 30 +0.0 + 11 +21312.499971 + 21 +22175.429168 + 31 +0.0 + 0 +LINE + 5 +197B + 8 +0 + 62 + 0 + 10 +21262.499971 + 20 +22132.127898 + 30 +0.0 + 11 +21274.999971 + 21 +22153.778533 + 31 +0.0 + 0 +LINE + 5 +197C + 8 +0 + 62 + 0 + 10 +21227.611175 + 20 +22115.0 + 30 +0.0 + 11 +21237.499971 + 21 +22132.127898 + 31 +0.0 + 0 +LINE + 5 +197D + 8 +0 + 62 + 0 + 10 +21262.499971 + 20 +22175.429168 + 30 +0.0 + 11 +21273.799196 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +197E + 8 +0 + 62 + 0 + 10 +21224.999971 + 20 +22153.778533 + 30 +0.0 + 11 +21237.499971 + 21 +22175.429168 + 31 +0.0 + 0 +LINE + 5 +197F + 8 +0 + 62 + 0 + 10 +21187.499971 + 20 +22132.127898 + 30 +0.0 + 11 +21199.999971 + 21 +22153.778533 + 31 +0.0 + 0 +LINE + 5 +1980 + 8 +0 + 62 + 0 + 10 +21152.611175 + 20 +22115.0 + 30 +0.0 + 11 +21162.499971 + 21 +22132.127898 + 31 +0.0 + 0 +LINE + 5 +1981 + 8 +0 + 62 + 0 + 10 +21187.499971 + 20 +22175.429168 + 30 +0.0 + 11 +21198.799197 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1982 + 8 +0 + 62 + 0 + 10 +21149.999971 + 20 +22153.778533 + 30 +0.0 + 11 +21162.499971 + 21 +22175.429168 + 31 +0.0 + 0 +LINE + 5 +1983 + 8 +0 + 62 + 0 + 10 +21112.499972 + 20 +22132.127898 + 30 +0.0 + 11 +21124.999972 + 21 +22153.778533 + 31 +0.0 + 0 +LINE + 5 +1984 + 8 +0 + 62 + 0 + 10 +21077.611175 + 20 +22115.0 + 30 +0.0 + 11 +21087.499972 + 21 +22132.127898 + 31 +0.0 + 0 +LINE + 5 +1985 + 8 +0 + 62 + 0 + 10 +21112.499972 + 20 +22175.429168 + 30 +0.0 + 11 +21123.799197 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1986 + 8 +0 + 62 + 0 + 10 +21074.999972 + 20 +22153.778533 + 30 +0.0 + 11 +21087.499972 + 21 +22175.429168 + 31 +0.0 + 0 +LINE + 5 +1987 + 8 +0 + 62 + 0 + 10 +21037.499972 + 20 +22132.127898 + 30 +0.0 + 11 +21049.999972 + 21 +22153.778533 + 31 +0.0 + 0 +LINE + 5 +1988 + 8 +0 + 62 + 0 + 10 +21002.611176 + 20 +22115.0 + 30 +0.0 + 11 +21012.499972 + 21 +22132.127898 + 31 +0.0 + 0 +LINE + 5 +1989 + 8 +0 + 62 + 0 + 10 +21037.499972 + 20 +22175.429168 + 30 +0.0 + 11 +21048.799197 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +198A + 8 +0 + 62 + 0 + 10 +20999.999972 + 20 +22153.778533 + 30 +0.0 + 11 +21012.499972 + 21 +22175.429168 + 31 +0.0 + 0 +LINE + 5 +198B + 8 +0 + 62 + 0 + 10 +20962.499972 + 20 +22132.127897 + 30 +0.0 + 11 +20974.999972 + 21 +22153.778533 + 31 +0.0 + 0 +LINE + 5 +198C + 8 +0 + 62 + 0 + 10 +20927.611176 + 20 +22115.0 + 30 +0.0 + 11 +20937.499972 + 21 +22132.127897 + 31 +0.0 + 0 +LINE + 5 +198D + 8 +0 + 62 + 0 + 10 +20962.499972 + 20 +22175.429168 + 30 +0.0 + 11 +20973.799198 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +198E + 8 +0 + 62 + 0 + 10 +20924.999972 + 20 +22153.778532 + 30 +0.0 + 11 +20937.499972 + 21 +22175.429168 + 31 +0.0 + 0 +LINE + 5 +198F + 8 +0 + 62 + 0 + 10 +20887.499972 + 20 +22132.127897 + 30 +0.0 + 11 +20899.999972 + 21 +22153.778532 + 31 +0.0 + 0 +LINE + 5 +1990 + 8 +0 + 62 + 0 + 10 +20852.611176 + 20 +22115.0 + 30 +0.0 + 11 +20862.499972 + 21 +22132.127897 + 31 +0.0 + 0 +LINE + 5 +1991 + 8 +0 + 62 + 0 + 10 +20887.499972 + 20 +22175.429167 + 30 +0.0 + 11 +20898.799198 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1992 + 8 +0 + 62 + 0 + 10 +20849.999972 + 20 +22153.778532 + 30 +0.0 + 11 +20862.499972 + 21 +22175.429167 + 31 +0.0 + 0 +LINE + 5 +1993 + 8 +0 + 62 + 0 + 10 +20812.499973 + 20 +22132.127897 + 30 +0.0 + 11 +20824.999973 + 21 +22153.778532 + 31 +0.0 + 0 +LINE + 5 +1994 + 8 +0 + 62 + 0 + 10 +20777.611177 + 20 +22115.0 + 30 +0.0 + 11 +20787.499973 + 21 +22132.127897 + 31 +0.0 + 0 +LINE + 5 +1995 + 8 +0 + 62 + 0 + 10 +20812.499973 + 20 +22175.429167 + 30 +0.0 + 11 +20823.799198 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1996 + 8 +0 + 62 + 0 + 10 +20774.999973 + 20 +22153.778532 + 30 +0.0 + 11 +20787.499973 + 21 +22175.429167 + 31 +0.0 + 0 +LINE + 5 +1997 + 8 +0 + 62 + 0 + 10 +20737.499973 + 20 +22132.127897 + 30 +0.0 + 11 +20749.999973 + 21 +22153.778532 + 31 +0.0 + 0 +LINE + 5 +1998 + 8 +0 + 62 + 0 + 10 +20702.611177 + 20 +22115.0 + 30 +0.0 + 11 +20712.499973 + 21 +22132.127897 + 31 +0.0 + 0 +LINE + 5 +1999 + 8 +0 + 62 + 0 + 10 +20737.499973 + 20 +22175.429167 + 30 +0.0 + 11 +20748.799198 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +199A + 8 +0 + 62 + 0 + 10 +20699.999973 + 20 +22153.778532 + 30 +0.0 + 11 +20712.499973 + 21 +22175.429167 + 31 +0.0 + 0 +LINE + 5 +199B + 8 +0 + 62 + 0 + 10 +20662.499973 + 20 +22132.127897 + 30 +0.0 + 11 +20674.999973 + 21 +22153.778532 + 31 +0.0 + 0 +LINE + 5 +199C + 8 +0 + 62 + 0 + 10 +20627.611177 + 20 +22115.0 + 30 +0.0 + 11 +20637.499973 + 21 +22132.127897 + 31 +0.0 + 0 +LINE + 5 +199D + 8 +0 + 62 + 0 + 10 +20662.499973 + 20 +22175.429167 + 30 +0.0 + 11 +20673.799199 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +199E + 8 +0 + 62 + 0 + 10 +20624.999973 + 20 +22153.778532 + 30 +0.0 + 11 +20637.499973 + 21 +22175.429167 + 31 +0.0 + 0 +LINE + 5 +199F + 8 +0 + 62 + 0 + 10 +20587.499973 + 20 +22132.127897 + 30 +0.0 + 11 +20599.999973 + 21 +22153.778532 + 31 +0.0 + 0 +LINE + 5 +19A0 + 8 +0 + 62 + 0 + 10 +20552.611178 + 20 +22115.0 + 30 +0.0 + 11 +20562.499973 + 21 +22132.127897 + 31 +0.0 + 0 +LINE + 5 +19A1 + 8 +0 + 62 + 0 + 10 +20587.499973 + 20 +22175.429167 + 30 +0.0 + 11 +20598.799199 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19A2 + 8 +0 + 62 + 0 + 10 +20549.999973 + 20 +22153.778532 + 30 +0.0 + 11 +20562.499973 + 21 +22175.429167 + 31 +0.0 + 0 +LINE + 5 +19A3 + 8 +0 + 62 + 0 + 10 +20512.499974 + 20 +22132.127897 + 30 +0.0 + 11 +20524.999974 + 21 +22153.778532 + 31 +0.0 + 0 +LINE + 5 +19A4 + 8 +0 + 62 + 0 + 10 +20477.611178 + 20 +22115.0 + 30 +0.0 + 11 +20487.499974 + 21 +22132.127897 + 31 +0.0 + 0 +LINE + 5 +19A5 + 8 +0 + 62 + 0 + 10 +20512.499974 + 20 +22175.429167 + 30 +0.0 + 11 +20523.799199 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19A6 + 8 +0 + 62 + 0 + 10 +20474.999974 + 20 +22153.778532 + 30 +0.0 + 11 +20487.499974 + 21 +22175.429167 + 31 +0.0 + 0 +LINE + 5 +19A7 + 8 +0 + 62 + 0 + 10 +20437.499974 + 20 +22132.127896 + 30 +0.0 + 11 +20449.999974 + 21 +22153.778532 + 31 +0.0 + 0 +LINE + 5 +19A8 + 8 +0 + 62 + 0 + 10 +20402.611178 + 20 +22115.0 + 30 +0.0 + 11 +20412.499974 + 21 +22132.127896 + 31 +0.0 + 0 +LINE + 5 +19A9 + 8 +0 + 62 + 0 + 10 +20437.499974 + 20 +22175.429167 + 30 +0.0 + 11 +20448.7992 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19AA + 8 +0 + 62 + 0 + 10 +20399.999974 + 20 +22153.778531 + 30 +0.0 + 11 +20412.499974 + 21 +22175.429167 + 31 +0.0 + 0 +LINE + 5 +19AB + 8 +0 + 62 + 0 + 10 +20362.499974 + 20 +22132.127896 + 30 +0.0 + 11 +20374.999974 + 21 +22153.778531 + 31 +0.0 + 0 +LINE + 5 +19AC + 8 +0 + 62 + 0 + 10 +20327.611179 + 20 +22115.0 + 30 +0.0 + 11 +20337.499974 + 21 +22132.127896 + 31 +0.0 + 0 +LINE + 5 +19AD + 8 +0 + 62 + 0 + 10 +20362.499974 + 20 +22175.429166 + 30 +0.0 + 11 +20373.7992 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19AE + 8 +0 + 62 + 0 + 10 +20324.999974 + 20 +22153.778531 + 30 +0.0 + 11 +20337.499974 + 21 +22175.429166 + 31 +0.0 + 0 +LINE + 5 +19AF + 8 +0 + 62 + 0 + 10 +20287.499974 + 20 +22132.127896 + 30 +0.0 + 11 +20299.999974 + 21 +22153.778531 + 31 +0.0 + 0 +LINE + 5 +19B0 + 8 +0 + 62 + 0 + 10 +20252.611179 + 20 +22115.0 + 30 +0.0 + 11 +20262.499974 + 21 +22132.127896 + 31 +0.0 + 0 +LINE + 5 +19B1 + 8 +0 + 62 + 0 + 10 +20287.499974 + 20 +22175.429166 + 30 +0.0 + 11 +20298.7992 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19B2 + 8 +0 + 62 + 0 + 10 +20249.999974 + 20 +22153.778531 + 30 +0.0 + 11 +20262.499974 + 21 +22175.429166 + 31 +0.0 + 0 +LINE + 5 +19B3 + 8 +0 + 62 + 0 + 10 +20212.499975 + 20 +22132.127896 + 30 +0.0 + 11 +20224.999975 + 21 +22153.778531 + 31 +0.0 + 0 +LINE + 5 +19B4 + 8 +0 + 62 + 0 + 10 +20177.611179 + 20 +22115.0 + 30 +0.0 + 11 +20187.499975 + 21 +22132.127896 + 31 +0.0 + 0 +LINE + 5 +19B5 + 8 +0 + 62 + 0 + 10 +20212.499975 + 20 +22175.429166 + 30 +0.0 + 11 +20223.799201 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19B6 + 8 +0 + 62 + 0 + 10 +20174.999975 + 20 +22153.778531 + 30 +0.0 + 11 +20187.499975 + 21 +22175.429166 + 31 +0.0 + 0 +LINE + 5 +19B7 + 8 +0 + 62 + 0 + 10 +20137.499975 + 20 +22132.127896 + 30 +0.0 + 11 +20149.999975 + 21 +22153.778531 + 31 +0.0 + 0 +LINE + 5 +19B8 + 8 +0 + 62 + 0 + 10 +20102.61118 + 20 +22115.0 + 30 +0.0 + 11 +20112.499975 + 21 +22132.127896 + 31 +0.0 + 0 +LINE + 5 +19B9 + 8 +0 + 62 + 0 + 10 +20137.499975 + 20 +22175.429166 + 30 +0.0 + 11 +20148.799201 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19BA + 8 +0 + 62 + 0 + 10 +20099.999975 + 20 +22153.778531 + 30 +0.0 + 11 +20112.499975 + 21 +22175.429166 + 31 +0.0 + 0 +LINE + 5 +19BB + 8 +0 + 62 + 0 + 10 +20062.499975 + 20 +22132.127896 + 30 +0.0 + 11 +20074.999975 + 21 +22153.778531 + 31 +0.0 + 0 +LINE + 5 +19BC + 8 +0 + 62 + 0 + 10 +20027.61118 + 20 +22115.0 + 30 +0.0 + 11 +20037.499975 + 21 +22132.127896 + 31 +0.0 + 0 +LINE + 5 +19BD + 8 +0 + 62 + 0 + 10 +20062.499975 + 20 +22175.429166 + 30 +0.0 + 11 +20073.799201 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19BE + 8 +0 + 62 + 0 + 10 +20024.999975 + 20 +22153.778531 + 30 +0.0 + 11 +20037.499975 + 21 +22175.429166 + 31 +0.0 + 0 +LINE + 5 +19BF + 8 +0 + 62 + 0 + 10 +19987.499975 + 20 +22132.127896 + 30 +0.0 + 11 +19999.999975 + 21 +22153.778531 + 31 +0.0 + 0 +LINE + 5 +19C0 + 8 +0 + 62 + 0 + 10 +19952.61118 + 20 +22115.0 + 30 +0.0 + 11 +19962.499975 + 21 +22132.127896 + 31 +0.0 + 0 +LINE + 5 +19C1 + 8 +0 + 62 + 0 + 10 +19987.499975 + 20 +22175.429166 + 30 +0.0 + 11 +19998.799202 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19C2 + 8 +0 + 62 + 0 + 10 +19949.999975 + 20 +22153.778531 + 30 +0.0 + 11 +19962.499975 + 21 +22175.429166 + 31 +0.0 + 0 +LINE + 5 +19C3 + 8 +0 + 62 + 0 + 10 +19912.499976 + 20 +22132.127895 + 30 +0.0 + 11 +19924.999976 + 21 +22153.778531 + 31 +0.0 + 0 +LINE + 5 +19C4 + 8 +0 + 62 + 0 + 10 +19877.611181 + 20 +22115.0 + 30 +0.0 + 11 +19887.499976 + 21 +22132.127895 + 31 +0.0 + 0 +LINE + 5 +19C5 + 8 +0 + 62 + 0 + 10 +19912.499976 + 20 +22175.429166 + 30 +0.0 + 11 +19923.799202 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19C6 + 8 +0 + 62 + 0 + 10 +19874.999976 + 20 +22153.77853 + 30 +0.0 + 11 +19887.499976 + 21 +22175.429166 + 31 +0.0 + 0 +LINE + 5 +19C7 + 8 +0 + 62 + 0 + 10 +19837.499976 + 20 +22132.127895 + 30 +0.0 + 11 +19849.999976 + 21 +22153.77853 + 31 +0.0 + 0 +LINE + 5 +19C8 + 8 +0 + 62 + 0 + 10 +19802.611181 + 20 +22115.0 + 30 +0.0 + 11 +19812.499976 + 21 +22132.127895 + 31 +0.0 + 0 +LINE + 5 +19C9 + 8 +0 + 62 + 0 + 10 +19837.499976 + 20 +22175.429165 + 30 +0.0 + 11 +19848.799202 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19CA + 8 +0 + 62 + 0 + 10 +19799.999976 + 20 +22153.77853 + 30 +0.0 + 11 +19812.499976 + 21 +22175.429165 + 31 +0.0 + 0 +LINE + 5 +19CB + 8 +0 + 62 + 0 + 10 +19762.499976 + 20 +22132.127895 + 30 +0.0 + 11 +19774.999976 + 21 +22153.77853 + 31 +0.0 + 0 +LINE + 5 +19CC + 8 +0 + 62 + 0 + 10 +19762.499976 + 20 +22175.429165 + 30 +0.0 + 11 +19773.799203 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19CD + 8 +0 + 62 + 0 + 10 +21562.49997 + 20 +22132.127899 + 30 +0.0 + 11 +21574.99997 + 21 +22153.778534 + 31 +0.0 + 0 +LINE + 5 +19CE + 8 +0 + 62 + 0 + 10 +21599.99997 + 20 +22153.778534 + 30 +0.0 + 11 +21612.49997 + 21 +22175.429169 + 31 +0.0 + 0 +LINE + 5 +19CF + 8 +0 + 62 + 0 + 10 +21602.611173 + 20 +22115.0 + 30 +0.0 + 11 +21612.49997 + 21 +22132.127899 + 31 +0.0 + 0 +LINE + 5 +19D0 + 8 +0 + 62 + 0 + 10 +21637.49997 + 20 +22175.429169 + 30 +0.0 + 11 +21648.799195 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19D1 + 8 +0 + 62 + 0 + 10 +21637.49997 + 20 +22132.127899 + 30 +0.0 + 11 +21649.99997 + 21 +22153.778534 + 31 +0.0 + 0 +LINE + 5 +19D2 + 8 +0 + 62 + 0 + 10 +21674.99997 + 20 +22153.778534 + 30 +0.0 + 11 +21687.49997 + 21 +22175.429169 + 31 +0.0 + 0 +LINE + 5 +19D3 + 8 +0 + 62 + 0 + 10 +21677.611173 + 20 +22115.0 + 30 +0.0 + 11 +21687.49997 + 21 +22132.127899 + 31 +0.0 + 0 +LINE + 5 +19D4 + 8 +0 + 62 + 0 + 10 +21712.49997 + 20 +22175.429169 + 30 +0.0 + 11 +21723.799194 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19D5 + 8 +0 + 62 + 0 + 10 +21712.49997 + 20 +22132.127899 + 30 +0.0 + 11 +21724.99997 + 21 +22153.778534 + 31 +0.0 + 0 +LINE + 5 +19D6 + 8 +0 + 62 + 0 + 10 +21749.99997 + 20 +22153.778534 + 30 +0.0 + 11 +21762.49997 + 21 +22175.429169 + 31 +0.0 + 0 +LINE + 5 +19D7 + 8 +0 + 62 + 0 + 10 +21752.611172 + 20 +22115.0 + 30 +0.0 + 11 +21762.499969 + 21 +22132.127899 + 31 +0.0 + 0 +LINE + 5 +19D8 + 8 +0 + 62 + 0 + 10 +21787.499969 + 20 +22175.429169 + 30 +0.0 + 11 +21798.799194 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19D9 + 8 +0 + 62 + 0 + 10 +21787.499969 + 20 +22132.127899 + 30 +0.0 + 11 +21799.999969 + 21 +22153.778534 + 31 +0.0 + 0 +LINE + 5 +19DA + 8 +0 + 62 + 0 + 10 +21824.999969 + 20 +22153.778534 + 30 +0.0 + 11 +21837.499969 + 21 +22175.429169 + 31 +0.0 + 0 +LINE + 5 +19DB + 8 +0 + 62 + 0 + 10 +21827.611172 + 20 +22115.0 + 30 +0.0 + 11 +21837.499969 + 21 +22132.127899 + 31 +0.0 + 0 +LINE + 5 +19DC + 8 +0 + 62 + 0 + 10 +21862.499969 + 20 +22175.429169 + 30 +0.0 + 11 +21873.799194 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19DD + 8 +0 + 62 + 0 + 10 +21862.499969 + 20 +22132.127899 + 30 +0.0 + 11 +21874.999969 + 21 +22153.778534 + 31 +0.0 + 0 +LINE + 5 +19DE + 8 +0 + 62 + 0 + 10 +21899.999969 + 20 +22153.778534 + 30 +0.0 + 11 +21912.499969 + 21 +22175.429169 + 31 +0.0 + 0 +LINE + 5 +19DF + 8 +0 + 62 + 0 + 10 +21902.611172 + 20 +22115.0 + 30 +0.0 + 11 +21912.499969 + 21 +22132.127899 + 31 +0.0 + 0 +LINE + 5 +19E0 + 8 +0 + 62 + 0 + 10 +21937.499969 + 20 +22175.429169 + 30 +0.0 + 11 +21948.799193 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19E1 + 8 +0 + 62 + 0 + 10 +21937.499969 + 20 +22132.127899 + 30 +0.0 + 11 +21949.999969 + 21 +22153.778534 + 31 +0.0 + 0 +LINE + 5 +19E2 + 8 +0 + 62 + 0 + 10 +21974.999969 + 20 +22153.778534 + 30 +0.0 + 11 +21987.499969 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19E3 + 8 +0 + 62 + 0 + 10 +21977.611171 + 20 +22115.0 + 30 +0.0 + 11 +21987.499969 + 21 +22132.127899 + 31 +0.0 + 0 +LINE + 5 +19E4 + 8 +0 + 62 + 0 + 10 +22012.499969 + 20 +22175.42917 + 30 +0.0 + 11 +22023.799193 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19E5 + 8 +0 + 62 + 0 + 10 +22012.499969 + 20 +22132.127899 + 30 +0.0 + 11 +22024.999969 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +19E6 + 8 +0 + 62 + 0 + 10 +22049.999969 + 20 +22153.778535 + 30 +0.0 + 11 +22062.499969 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19E7 + 8 +0 + 62 + 0 + 10 +22052.611171 + 20 +22115.0 + 30 +0.0 + 11 +22062.499968 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +19E8 + 8 +0 + 62 + 0 + 10 +22087.499968 + 20 +22175.42917 + 30 +0.0 + 11 +22098.799193 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19E9 + 8 +0 + 62 + 0 + 10 +22087.499968 + 20 +22132.1279 + 30 +0.0 + 11 +22099.999968 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +19EA + 8 +0 + 62 + 0 + 10 +22124.999968 + 20 +22153.778535 + 30 +0.0 + 11 +22137.499968 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19EB + 8 +0 + 62 + 0 + 10 +22127.611171 + 20 +22115.0 + 30 +0.0 + 11 +22137.499968 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +19EC + 8 +0 + 62 + 0 + 10 +22162.499968 + 20 +22175.42917 + 30 +0.0 + 11 +22173.799192 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19ED + 8 +0 + 62 + 0 + 10 +22162.499968 + 20 +22132.1279 + 30 +0.0 + 11 +22174.999968 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +19EE + 8 +0 + 62 + 0 + 10 +22199.999968 + 20 +22153.778535 + 30 +0.0 + 11 +22212.499968 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19EF + 8 +0 + 62 + 0 + 10 +22202.61117 + 20 +22115.0 + 30 +0.0 + 11 +22212.499968 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +19F0 + 8 +0 + 62 + 0 + 10 +22237.499968 + 20 +22175.42917 + 30 +0.0 + 11 +22248.799192 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19F1 + 8 +0 + 62 + 0 + 10 +22237.499968 + 20 +22132.1279 + 30 +0.0 + 11 +22249.999968 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +19F2 + 8 +0 + 62 + 0 + 10 +22274.999968 + 20 +22153.778535 + 30 +0.0 + 11 +22287.499968 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19F3 + 8 +0 + 62 + 0 + 10 +22277.61117 + 20 +22115.0 + 30 +0.0 + 11 +22287.499968 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +19F4 + 8 +0 + 62 + 0 + 10 +22312.499968 + 20 +22175.42917 + 30 +0.0 + 11 +22323.799192 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19F5 + 8 +0 + 62 + 0 + 10 +22312.499968 + 20 +22132.1279 + 30 +0.0 + 11 +22324.999968 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +19F6 + 8 +0 + 62 + 0 + 10 +22349.999968 + 20 +22153.778535 + 30 +0.0 + 11 +22362.499968 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19F7 + 8 +0 + 62 + 0 + 10 +22352.61117 + 20 +22115.0 + 30 +0.0 + 11 +22362.499967 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +19F8 + 8 +0 + 62 + 0 + 10 +22387.499967 + 20 +22175.42917 + 30 +0.0 + 11 +22398.799191 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19F9 + 8 +0 + 62 + 0 + 10 +22387.499967 + 20 +22132.1279 + 30 +0.0 + 11 +22399.999967 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +19FA + 8 +0 + 62 + 0 + 10 +22424.999967 + 20 +22153.778535 + 30 +0.0 + 11 +22437.499967 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19FB + 8 +0 + 62 + 0 + 10 +22427.611169 + 20 +22115.0 + 30 +0.0 + 11 +22437.499967 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +19FC + 8 +0 + 62 + 0 + 10 +22462.499967 + 20 +22175.42917 + 30 +0.0 + 11 +22473.799191 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +19FD + 8 +0 + 62 + 0 + 10 +22462.499967 + 20 +22132.1279 + 30 +0.0 + 11 +22474.999967 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +19FE + 8 +0 + 62 + 0 + 10 +22499.999967 + 20 +22153.778535 + 30 +0.0 + 11 +22512.499967 + 21 +22175.42917 + 31 +0.0 + 0 +LINE + 5 +19FF + 8 +0 + 62 + 0 + 10 +22502.611169 + 20 +22115.0 + 30 +0.0 + 11 +22512.499967 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +1A00 + 8 +0 + 62 + 0 + 10 +22537.499967 + 20 +22175.429171 + 30 +0.0 + 11 +22548.799191 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A01 + 8 +0 + 62 + 0 + 10 +22537.499967 + 20 +22132.1279 + 30 +0.0 + 11 +22549.999967 + 21 +22153.778535 + 31 +0.0 + 0 +LINE + 5 +1A02 + 8 +0 + 62 + 0 + 10 +22574.999967 + 20 +22153.778536 + 30 +0.0 + 11 +22587.499967 + 21 +22175.429171 + 31 +0.0 + 0 +LINE + 5 +1A03 + 8 +0 + 62 + 0 + 10 +22577.611169 + 20 +22115.0 + 30 +0.0 + 11 +22587.499967 + 21 +22132.1279 + 31 +0.0 + 0 +LINE + 5 +1A04 + 8 +0 + 62 + 0 + 10 +22612.499967 + 20 +22175.429171 + 30 +0.0 + 11 +22623.79919 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A05 + 8 +0 + 62 + 0 + 10 +22612.499967 + 20 +22132.127901 + 30 +0.0 + 11 +22624.999967 + 21 +22153.778536 + 31 +0.0 + 0 +LINE + 5 +1A06 + 8 +0 + 62 + 0 + 10 +22649.999967 + 20 +22153.778536 + 30 +0.0 + 11 +22662.499967 + 21 +22175.429171 + 31 +0.0 + 0 +LINE + 5 +1A07 + 8 +0 + 62 + 0 + 10 +22652.611168 + 20 +22115.0 + 30 +0.0 + 11 +22662.499966 + 21 +22132.127901 + 31 +0.0 + 0 +LINE + 5 +1A08 + 8 +0 + 62 + 0 + 10 +22687.499966 + 20 +22175.429171 + 30 +0.0 + 11 +22698.79919 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A09 + 8 +0 + 62 + 0 + 10 +22687.499966 + 20 +22132.127901 + 30 +0.0 + 11 +22699.999966 + 21 +22153.778536 + 31 +0.0 + 0 +LINE + 5 +1A0A + 8 +0 + 62 + 0 + 10 +22724.999966 + 20 +22153.778536 + 30 +0.0 + 11 +22737.499966 + 21 +22175.429171 + 31 +0.0 + 0 +LINE + 5 +1A0B + 8 +0 + 62 + 0 + 10 +22727.611168 + 20 +22115.0 + 30 +0.0 + 11 +22737.499966 + 21 +22132.127901 + 31 +0.0 + 0 +LINE + 5 +1A0C + 8 +0 + 62 + 0 + 10 +22762.499966 + 20 +22175.429171 + 30 +0.0 + 11 +22773.79919 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A0D + 8 +0 + 62 + 0 + 10 +22762.499966 + 20 +22132.127901 + 30 +0.0 + 11 +22774.999966 + 21 +22153.778536 + 31 +0.0 + 0 +LINE + 5 +1A0E + 8 +0 + 62 + 0 + 10 +22799.999966 + 20 +22153.778536 + 30 +0.0 + 11 +22812.499966 + 21 +22175.429171 + 31 +0.0 + 0 +LINE + 5 +1A0F + 8 +0 + 62 + 0 + 10 +22802.611168 + 20 +22115.0 + 30 +0.0 + 11 +22812.499966 + 21 +22132.127901 + 31 +0.0 + 0 +LINE + 5 +1A10 + 8 +0 + 62 + 0 + 10 +22837.499966 + 20 +22175.429171 + 30 +0.0 + 11 +22848.799189 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A11 + 8 +0 + 62 + 0 + 10 +22837.499966 + 20 +22132.127901 + 30 +0.0 + 11 +22849.999966 + 21 +22153.778536 + 31 +0.0 + 0 +LINE + 5 +1A12 + 8 +0 + 62 + 0 + 10 +22874.999966 + 20 +22153.778536 + 30 +0.0 + 11 +22887.499966 + 21 +22175.429171 + 31 +0.0 + 0 +LINE + 5 +1A13 + 8 +0 + 62 + 0 + 10 +22877.611167 + 20 +22115.0 + 30 +0.0 + 11 +22887.499966 + 21 +22132.127901 + 31 +0.0 + 0 +LINE + 5 +1A14 + 8 +0 + 62 + 0 + 10 +22912.499966 + 20 +22175.429171 + 30 +0.0 + 11 +22923.799189 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A15 + 8 +0 + 62 + 0 + 10 +22912.499966 + 20 +22132.127901 + 30 +0.0 + 11 +22924.999966 + 21 +22153.778536 + 31 +0.0 + 0 +LINE + 5 +1A16 + 8 +0 + 62 + 0 + 10 +22949.999966 + 20 +22153.778536 + 30 +0.0 + 11 +22962.499966 + 21 +22175.429171 + 31 +0.0 + 0 +LINE + 5 +1A17 + 8 +0 + 62 + 0 + 10 +22952.611167 + 20 +22115.0 + 30 +0.0 + 11 +22962.499966 + 21 +22132.127901 + 31 +0.0 + 0 +LINE + 5 +1A18 + 8 +0 + 62 + 0 + 10 +22987.499966 + 20 +22175.429171 + 30 +0.0 + 11 +22998.799189 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A19 + 8 +0 + 62 + 0 + 10 +22987.499965 + 20 +22132.127901 + 30 +0.0 + 11 +22999.999965 + 21 +22153.778536 + 31 +0.0 + 0 +LINE + 5 +1A1A + 8 +0 + 62 + 0 + 10 +23024.999965 + 20 +22153.778536 + 30 +0.0 + 11 +23037.499965 + 21 +22175.429171 + 31 +0.0 + 0 +LINE + 5 +1A1B + 8 +0 + 62 + 0 + 10 +23027.611167 + 20 +22115.0 + 30 +0.0 + 11 +23037.499965 + 21 +22132.127901 + 31 +0.0 + 0 +LINE + 5 +1A1C + 8 +0 + 62 + 0 + 10 +23062.499965 + 20 +22175.429172 + 30 +0.0 + 11 +23073.799188 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A1D + 8 +0 + 62 + 0 + 10 +23062.499965 + 20 +22132.127901 + 30 +0.0 + 11 +23074.999965 + 21 +22153.778536 + 31 +0.0 + 0 +LINE + 5 +1A1E + 8 +0 + 62 + 0 + 10 +23099.999965 + 20 +22153.778537 + 30 +0.0 + 11 +23112.499965 + 21 +22175.429172 + 31 +0.0 + 0 +LINE + 5 +1A1F + 8 +0 + 62 + 0 + 10 +23102.611166 + 20 +22115.0 + 30 +0.0 + 11 +23112.499965 + 21 +22132.127901 + 31 +0.0 + 0 +LINE + 5 +1A20 + 8 +0 + 62 + 0 + 10 +23137.499965 + 20 +22175.429172 + 30 +0.0 + 11 +23148.799188 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A21 + 8 +0 + 62 + 0 + 10 +23137.499965 + 20 +22132.127902 + 30 +0.0 + 11 +23149.999965 + 21 +22153.778537 + 31 +0.0 + 0 +LINE + 5 +1A22 + 8 +0 + 62 + 0 + 10 +23174.999965 + 20 +22153.778537 + 30 +0.0 + 11 +23187.499965 + 21 +22175.429172 + 31 +0.0 + 0 +LINE + 5 +1A23 + 8 +0 + 62 + 0 + 10 +23177.611166 + 20 +22115.0 + 30 +0.0 + 11 +23187.499965 + 21 +22132.127902 + 31 +0.0 + 0 +LINE + 5 +1A24 + 8 +0 + 62 + 0 + 10 +23212.499965 + 20 +22175.429172 + 30 +0.0 + 11 +23223.799188 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A25 + 8 +0 + 62 + 0 + 10 +23212.499965 + 20 +22132.127902 + 30 +0.0 + 11 +23224.999965 + 21 +22153.778537 + 31 +0.0 + 0 +LINE + 5 +1A26 + 8 +0 + 62 + 0 + 10 +23249.999965 + 20 +22153.778537 + 30 +0.0 + 11 +23262.499965 + 21 +22175.429172 + 31 +0.0 + 0 +LINE + 5 +1A27 + 8 +0 + 62 + 0 + 10 +23252.611166 + 20 +22115.0 + 30 +0.0 + 11 +23262.499965 + 21 +22132.127902 + 31 +0.0 + 0 +LINE + 5 +1A28 + 8 +0 + 62 + 0 + 10 +23287.499965 + 20 +22175.429172 + 30 +0.0 + 11 +23298.799187 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A29 + 8 +0 + 62 + 0 + 10 +23287.499964 + 20 +22132.127902 + 30 +0.0 + 11 +23299.999964 + 21 +22153.778537 + 31 +0.0 + 0 +LINE + 5 +1A2A + 8 +0 + 62 + 0 + 10 +23324.999964 + 20 +22153.778537 + 30 +0.0 + 11 +23337.499964 + 21 +22175.429172 + 31 +0.0 + 0 +LINE + 5 +1A2B + 8 +0 + 62 + 0 + 10 +23327.611165 + 20 +22115.0 + 30 +0.0 + 11 +23337.499964 + 21 +22132.127902 + 31 +0.0 + 0 +LINE + 5 +1A2C + 8 +0 + 62 + 0 + 10 +23362.499964 + 20 +22175.429172 + 30 +0.0 + 11 +23373.799187 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1A2D + 8 +0 + 62 + 0 + 10 +23362.499964 + 20 +22132.127902 + 30 +0.0 + 11 +23374.999964 + 21 +22153.778537 + 31 +0.0 + 0 +ENDBLK + 5 +1A2E + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X49 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X49 + 1 + + 0 +LINE + 5 +1A30 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20270.173215 + 30 +0.0 + 11 +26812.5 + 21 +20270.173215 + 31 +0.0 + 0 +LINE + 5 +1A31 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20291.82385 + 30 +0.0 + 11 +26775.0 + 21 +20291.82385 + 31 +0.0 + 0 +LINE + 5 +1A32 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20313.474485 + 30 +0.0 + 11 +26812.5 + 21 +20313.474485 + 31 +0.0 + 0 +LINE + 5 +1A33 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20335.12512 + 30 +0.0 + 11 +26775.0 + 21 +20335.12512 + 31 +0.0 + 0 +LINE + 5 +1A34 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20356.775755 + 30 +0.0 + 11 +26812.5 + 21 +20356.775755 + 31 +0.0 + 0 +LINE + 5 +1A35 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20378.42639 + 30 +0.0 + 11 +26775.0 + 21 +20378.42639 + 31 +0.0 + 0 +LINE + 5 +1A36 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20400.077025 + 30 +0.0 + 11 +26812.5 + 21 +20400.077025 + 31 +0.0 + 0 +LINE + 5 +1A37 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20421.72766 + 30 +0.0 + 11 +26775.0 + 21 +20421.72766 + 31 +0.0 + 0 +LINE + 5 +1A38 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20443.378295 + 30 +0.0 + 11 +26812.5 + 21 +20443.378295 + 31 +0.0 + 0 +LINE + 5 +1A39 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20465.02893 + 30 +0.0 + 11 +26775.0 + 21 +20465.02893 + 31 +0.0 + 0 +LINE + 5 +1A3A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20486.679565 + 30 +0.0 + 11 +26812.5 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +1A3B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20508.3302 + 30 +0.0 + 11 +26775.0 + 21 +20508.3302 + 31 +0.0 + 0 +LINE + 5 +1A3C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20529.980835 + 30 +0.0 + 11 +26812.5 + 21 +20529.980835 + 31 +0.0 + 0 +LINE + 5 +1A3D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20551.63147 + 30 +0.0 + 11 +26775.0 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +1A3E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20573.282105 + 30 +0.0 + 11 +26812.5 + 21 +20573.282105 + 31 +0.0 + 0 +LINE + 5 +1A3F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20594.93274 + 30 +0.0 + 11 +26775.0 + 21 +20594.93274 + 31 +0.0 + 0 +LINE + 5 +1A40 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20616.583375 + 30 +0.0 + 11 +26812.5 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +1A41 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20638.23401 + 30 +0.0 + 11 +26775.0 + 21 +20638.23401 + 31 +0.0 + 0 +LINE + 5 +1A42 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20659.884645 + 30 +0.0 + 11 +26812.5 + 21 +20659.884645 + 31 +0.0 + 0 +LINE + 5 +1A43 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20681.53528 + 30 +0.0 + 11 +26775.0 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +1A44 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20703.185915 + 30 +0.0 + 11 +26812.5 + 21 +20703.185915 + 31 +0.0 + 0 +LINE + 5 +1A45 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20724.83655 + 30 +0.0 + 11 +26775.0 + 21 +20724.83655 + 31 +0.0 + 0 +LINE + 5 +1A46 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20746.487185 + 30 +0.0 + 11 +26812.5 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +1A47 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20768.13782 + 30 +0.0 + 11 +26775.0 + 21 +20768.13782 + 31 +0.0 + 0 +LINE + 5 +1A48 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20789.788455 + 30 +0.0 + 11 +26812.5 + 21 +20789.788455 + 31 +0.0 + 0 +LINE + 5 +1A49 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20811.43909 + 30 +0.0 + 11 +26775.0 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +1A4A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20833.089725 + 30 +0.0 + 11 +26812.5 + 21 +20833.089725 + 31 +0.0 + 0 +LINE + 5 +1A4B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20854.74036 + 30 +0.0 + 11 +26775.0 + 21 +20854.74036 + 31 +0.0 + 0 +LINE + 5 +1A4C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20876.390995 + 30 +0.0 + 11 +26812.5 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +1A4D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20898.04163 + 30 +0.0 + 11 +26775.0 + 21 +20898.04163 + 31 +0.0 + 0 +LINE + 5 +1A4E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20919.692265 + 30 +0.0 + 11 +26812.5 + 21 +20919.692265 + 31 +0.0 + 0 +LINE + 5 +1A4F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20941.3429 + 30 +0.0 + 11 +26775.0 + 21 +20941.3429 + 31 +0.0 + 0 +LINE + 5 +1A50 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20962.993535 + 30 +0.0 + 11 +26812.5 + 21 +20962.993535 + 31 +0.0 + 0 +LINE + 5 +1A51 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20984.64417 + 30 +0.0 + 11 +26775.0 + 21 +20984.64417 + 31 +0.0 + 0 +LINE + 5 +1A52 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21006.294805 + 30 +0.0 + 11 +26812.5 + 21 +21006.294805 + 31 +0.0 + 0 +LINE + 5 +1A53 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21027.94544 + 30 +0.0 + 11 +26775.0 + 21 +21027.94544 + 31 +0.0 + 0 +LINE + 5 +1A54 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21049.596075 + 30 +0.0 + 11 +26812.5 + 21 +21049.596075 + 31 +0.0 + 0 +LINE + 5 +1A55 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21071.24671 + 30 +0.0 + 11 +26775.0 + 21 +21071.24671 + 31 +0.0 + 0 +LINE + 5 +1A56 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21092.897345 + 30 +0.0 + 11 +26812.5 + 21 +21092.897345 + 31 +0.0 + 0 +LINE + 5 +1A57 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21114.54798 + 30 +0.0 + 11 +26775.0 + 21 +21114.54798 + 31 +0.0 + 0 +LINE + 5 +1A58 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21136.198615 + 30 +0.0 + 11 +26812.5 + 21 +21136.198615 + 31 +0.0 + 0 +LINE + 5 +1A59 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21157.84925 + 30 +0.0 + 11 +26775.0 + 21 +21157.84925 + 31 +0.0 + 0 +LINE + 5 +1A5A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21179.499885 + 30 +0.0 + 11 +26812.5 + 21 +21179.499885 + 31 +0.0 + 0 +LINE + 5 +1A5B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21201.15052 + 30 +0.0 + 11 +26775.0 + 21 +21201.15052 + 31 +0.0 + 0 +LINE + 5 +1A5C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21222.801155 + 30 +0.0 + 11 +26812.5 + 21 +21222.801155 + 31 +0.0 + 0 +LINE + 5 +1A5D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21244.45179 + 30 +0.0 + 11 +26775.0 + 21 +21244.45179 + 31 +0.0 + 0 +LINE + 5 +1A5E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21266.102425 + 30 +0.0 + 11 +26812.5 + 21 +21266.102425 + 31 +0.0 + 0 +LINE + 5 +1A5F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21287.75306 + 30 +0.0 + 11 +26775.0 + 21 +21287.75306 + 31 +0.0 + 0 +LINE + 5 +1A60 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21309.403695 + 30 +0.0 + 11 +26812.5 + 21 +21309.403695 + 31 +0.0 + 0 +LINE + 5 +1A61 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21331.05433 + 30 +0.0 + 11 +26775.0 + 21 +21331.05433 + 31 +0.0 + 0 +LINE + 5 +1A62 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21352.704965 + 30 +0.0 + 11 +26812.5 + 21 +21352.704965 + 31 +0.0 + 0 +LINE + 5 +1A63 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21374.3556 + 30 +0.0 + 11 +26775.0 + 21 +21374.3556 + 31 +0.0 + 0 +LINE + 5 +1A64 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21396.006235 + 30 +0.0 + 11 +26812.5 + 21 +21396.006235 + 31 +0.0 + 0 +LINE + 5 +1A65 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21417.65687 + 30 +0.0 + 11 +26775.0 + 21 +21417.65687 + 31 +0.0 + 0 +LINE + 5 +1A66 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21439.307505 + 30 +0.0 + 11 +26812.5 + 21 +21439.307505 + 31 +0.0 + 0 +LINE + 5 +1A67 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21460.95814 + 30 +0.0 + 11 +26775.0 + 21 +21460.95814 + 31 +0.0 + 0 +LINE + 5 +1A68 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21482.608775 + 30 +0.0 + 11 +26812.5 + 21 +21482.608775 + 31 +0.0 + 0 +LINE + 5 +1A69 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21504.25941 + 30 +0.0 + 11 +26775.0 + 21 +21504.25941 + 31 +0.0 + 0 +LINE + 5 +1A6A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21525.910045 + 30 +0.0 + 11 +26812.5 + 21 +21525.910045 + 31 +0.0 + 0 +LINE + 5 +1A6B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21547.56068 + 30 +0.0 + 11 +26775.0 + 21 +21547.56068 + 31 +0.0 + 0 +LINE + 5 +1A6C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21569.211315 + 30 +0.0 + 11 +26812.5 + 21 +21569.211315 + 31 +0.0 + 0 +LINE + 5 +1A6D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21590.86195 + 30 +0.0 + 11 +26775.0 + 21 +21590.86195 + 31 +0.0 + 0 +LINE + 5 +1A6E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21612.512585 + 30 +0.0 + 11 +26812.5 + 21 +21612.512585 + 31 +0.0 + 0 +LINE + 5 +1A6F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21634.16322 + 30 +0.0 + 11 +26775.0 + 21 +21634.16322 + 31 +0.0 + 0 +LINE + 5 +1A70 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21655.813855 + 30 +0.0 + 11 +26812.5 + 21 +21655.813855 + 31 +0.0 + 0 +LINE + 5 +1A71 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21677.46449 + 30 +0.0 + 11 +26775.0 + 21 +21677.46449 + 31 +0.0 + 0 +LINE + 5 +1A72 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21699.115125 + 30 +0.0 + 11 +26812.5 + 21 +21699.115125 + 31 +0.0 + 0 +LINE + 5 +1A73 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21720.76576 + 30 +0.0 + 11 +26775.0 + 21 +21720.76576 + 31 +0.0 + 0 +LINE + 5 +1A74 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21742.416395 + 30 +0.0 + 11 +26812.5 + 21 +21742.416395 + 31 +0.0 + 0 +LINE + 5 +1A75 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21764.06703 + 30 +0.0 + 11 +26775.0 + 21 +21764.06703 + 31 +0.0 + 0 +LINE + 5 +1A76 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21785.717665 + 30 +0.0 + 11 +26812.5 + 21 +21785.717665 + 31 +0.0 + 0 +LINE + 5 +1A77 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21807.3683 + 30 +0.0 + 11 +26775.0 + 21 +21807.3683 + 31 +0.0 + 0 +LINE + 5 +1A78 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21829.018935 + 30 +0.0 + 11 +26812.5 + 21 +21829.018935 + 31 +0.0 + 0 +LINE + 5 +1A79 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21850.66957 + 30 +0.0 + 11 +26775.0 + 21 +21850.66957 + 31 +0.0 + 0 +LINE + 5 +1A7A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21872.320205 + 30 +0.0 + 11 +26812.5 + 21 +21872.320205 + 31 +0.0 + 0 +LINE + 5 +1A7B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21893.97084 + 30 +0.0 + 11 +26775.0 + 21 +21893.97084 + 31 +0.0 + 0 +LINE + 5 +1A7C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21915.621475 + 30 +0.0 + 11 +26812.5 + 21 +21915.621475 + 31 +0.0 + 0 +LINE + 5 +1A7D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21937.27211 + 30 +0.0 + 11 +26775.0 + 21 +21937.27211 + 31 +0.0 + 0 +LINE + 5 +1A7E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +21958.922745 + 30 +0.0 + 11 +26812.5 + 21 +21958.922745 + 31 +0.0 + 0 +LINE + 5 +1A7F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +21980.57338 + 30 +0.0 + 11 +26775.0 + 21 +21980.57338 + 31 +0.0 + 0 +LINE + 5 +1A80 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +22002.224015 + 30 +0.0 + 11 +26812.5 + 21 +22002.224015 + 31 +0.0 + 0 +LINE + 5 +1A81 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +22023.87465 + 30 +0.0 + 11 +26775.0 + 21 +22023.87465 + 31 +0.0 + 0 +LINE + 5 +1A82 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +22045.525285 + 30 +0.0 + 11 +26812.5 + 21 +22045.525285 + 31 +0.0 + 0 +LINE + 5 +1A83 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +22067.17592 + 30 +0.0 + 11 +26775.0 + 21 +22067.17592 + 31 +0.0 + 0 +LINE + 5 +1A84 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +22088.826555 + 30 +0.0 + 11 +26812.5 + 21 +22088.826555 + 31 +0.0 + 0 +LINE + 5 +1A85 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +22110.47719 + 30 +0.0 + 11 +26775.0 + 21 +22110.47719 + 31 +0.0 + 0 +LINE + 5 +1A86 + 8 +0 + 62 + 0 + 10 +25287.5 + 20 +22132.127825 + 30 +0.0 + 11 +25312.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A87 + 8 +0 + 62 + 0 + 10 +25362.5 + 20 +22132.127825 + 30 +0.0 + 11 +25387.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A88 + 8 +0 + 62 + 0 + 10 +25437.5 + 20 +22132.127825 + 30 +0.0 + 11 +25462.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A89 + 8 +0 + 62 + 0 + 10 +25512.5 + 20 +22132.127825 + 30 +0.0 + 11 +25537.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A8A + 8 +0 + 62 + 0 + 10 +25587.5 + 20 +22132.127825 + 30 +0.0 + 11 +25612.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A8B + 8 +0 + 62 + 0 + 10 +25662.5 + 20 +22132.127825 + 30 +0.0 + 11 +25687.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A8C + 8 +0 + 62 + 0 + 10 +25737.5 + 20 +22132.127825 + 30 +0.0 + 11 +25762.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A8D + 8 +0 + 62 + 0 + 10 +25812.5 + 20 +22132.127825 + 30 +0.0 + 11 +25837.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A8E + 8 +0 + 62 + 0 + 10 +25887.5 + 20 +22132.127825 + 30 +0.0 + 11 +25912.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A8F + 8 +0 + 62 + 0 + 10 +25962.5 + 20 +22132.127825 + 30 +0.0 + 11 +25987.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A90 + 8 +0 + 62 + 0 + 10 +26037.5 + 20 +22132.127825 + 30 +0.0 + 11 +26062.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A91 + 8 +0 + 62 + 0 + 10 +26112.5 + 20 +22132.127825 + 30 +0.0 + 11 +26137.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A92 + 8 +0 + 62 + 0 + 10 +26187.5 + 20 +22132.127825 + 30 +0.0 + 11 +26212.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A93 + 8 +0 + 62 + 0 + 10 +26262.5 + 20 +22132.127825 + 30 +0.0 + 11 +26287.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A94 + 8 +0 + 62 + 0 + 10 +26337.5 + 20 +22132.127825 + 30 +0.0 + 11 +26362.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A95 + 8 +0 + 62 + 0 + 10 +26412.5 + 20 +22132.127825 + 30 +0.0 + 11 +26437.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A96 + 8 +0 + 62 + 0 + 10 +26487.5 + 20 +22132.127825 + 30 +0.0 + 11 +26512.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A97 + 8 +0 + 62 + 0 + 10 +26562.5 + 20 +22132.127825 + 30 +0.0 + 11 +26587.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A98 + 8 +0 + 62 + 0 + 10 +26637.5 + 20 +22132.127825 + 30 +0.0 + 11 +26662.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A99 + 8 +0 + 62 + 0 + 10 +26712.5 + 20 +22132.127825 + 30 +0.0 + 11 +26737.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A9A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +22132.127825 + 30 +0.0 + 11 +26812.5 + 21 +22132.127825 + 31 +0.0 + 0 +LINE + 5 +1A9B + 8 +0 + 62 + 0 + 10 +25250.0 + 20 +22153.77846 + 30 +0.0 + 11 +25275.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1A9C + 8 +0 + 62 + 0 + 10 +25325.0 + 20 +22153.77846 + 30 +0.0 + 11 +25350.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1A9D + 8 +0 + 62 + 0 + 10 +25400.0 + 20 +22153.77846 + 30 +0.0 + 11 +25425.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1A9E + 8 +0 + 62 + 0 + 10 +25475.0 + 20 +22153.77846 + 30 +0.0 + 11 +25500.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1A9F + 8 +0 + 62 + 0 + 10 +25550.0 + 20 +22153.77846 + 30 +0.0 + 11 +25575.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA0 + 8 +0 + 62 + 0 + 10 +25625.0 + 20 +22153.77846 + 30 +0.0 + 11 +25650.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA1 + 8 +0 + 62 + 0 + 10 +25700.0 + 20 +22153.77846 + 30 +0.0 + 11 +25725.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA2 + 8 +0 + 62 + 0 + 10 +25775.0 + 20 +22153.77846 + 30 +0.0 + 11 +25800.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA3 + 8 +0 + 62 + 0 + 10 +25850.0 + 20 +22153.77846 + 30 +0.0 + 11 +25875.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA4 + 8 +0 + 62 + 0 + 10 +25925.0 + 20 +22153.77846 + 30 +0.0 + 11 +25950.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA5 + 8 +0 + 62 + 0 + 10 +26000.0 + 20 +22153.77846 + 30 +0.0 + 11 +26025.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA6 + 8 +0 + 62 + 0 + 10 +26075.0 + 20 +22153.77846 + 30 +0.0 + 11 +26100.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA7 + 8 +0 + 62 + 0 + 10 +26150.0 + 20 +22153.77846 + 30 +0.0 + 11 +26175.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA8 + 8 +0 + 62 + 0 + 10 +26225.0 + 20 +22153.77846 + 30 +0.0 + 11 +26250.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AA9 + 8 +0 + 62 + 0 + 10 +26300.0 + 20 +22153.77846 + 30 +0.0 + 11 +26325.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AAA + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +22153.77846 + 30 +0.0 + 11 +26400.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AAB + 8 +0 + 62 + 0 + 10 +26450.0 + 20 +22153.77846 + 30 +0.0 + 11 +26475.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AAC + 8 +0 + 62 + 0 + 10 +26525.0 + 20 +22153.77846 + 30 +0.0 + 11 +26550.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AAD + 8 +0 + 62 + 0 + 10 +26600.0 + 20 +22153.77846 + 30 +0.0 + 11 +26625.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AAE + 8 +0 + 62 + 0 + 10 +26675.0 + 20 +22153.77846 + 30 +0.0 + 11 +26700.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AAF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +22153.77846 + 30 +0.0 + 11 +26775.0 + 21 +22153.77846 + 31 +0.0 + 0 +LINE + 5 +1AB0 + 8 +0 + 62 + 0 + 10 +25287.5 + 20 +22175.429095 + 30 +0.0 + 11 +25312.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB1 + 8 +0 + 62 + 0 + 10 +25362.5 + 20 +22175.429095 + 30 +0.0 + 11 +25387.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB2 + 8 +0 + 62 + 0 + 10 +25437.5 + 20 +22175.429095 + 30 +0.0 + 11 +25462.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB3 + 8 +0 + 62 + 0 + 10 +25512.5 + 20 +22175.429095 + 30 +0.0 + 11 +25537.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB4 + 8 +0 + 62 + 0 + 10 +25587.5 + 20 +22175.429095 + 30 +0.0 + 11 +25612.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB5 + 8 +0 + 62 + 0 + 10 +25662.5 + 20 +22175.429095 + 30 +0.0 + 11 +25687.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB6 + 8 +0 + 62 + 0 + 10 +25737.5 + 20 +22175.429095 + 30 +0.0 + 11 +25762.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB7 + 8 +0 + 62 + 0 + 10 +25812.5 + 20 +22175.429095 + 30 +0.0 + 11 +25837.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB8 + 8 +0 + 62 + 0 + 10 +25887.5 + 20 +22175.429095 + 30 +0.0 + 11 +25912.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AB9 + 8 +0 + 62 + 0 + 10 +25962.5 + 20 +22175.429095 + 30 +0.0 + 11 +25987.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1ABA + 8 +0 + 62 + 0 + 10 +26037.5 + 20 +22175.429095 + 30 +0.0 + 11 +26062.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1ABB + 8 +0 + 62 + 0 + 10 +26112.5 + 20 +22175.429095 + 30 +0.0 + 11 +26137.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1ABC + 8 +0 + 62 + 0 + 10 +26187.5 + 20 +22175.429095 + 30 +0.0 + 11 +26212.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1ABD + 8 +0 + 62 + 0 + 10 +26262.5 + 20 +22175.429095 + 30 +0.0 + 11 +26287.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1ABE + 8 +0 + 62 + 0 + 10 +26337.5 + 20 +22175.429095 + 30 +0.0 + 11 +26362.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1ABF + 8 +0 + 62 + 0 + 10 +26412.5 + 20 +22175.429095 + 30 +0.0 + 11 +26437.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AC0 + 8 +0 + 62 + 0 + 10 +26487.5 + 20 +22175.429095 + 30 +0.0 + 11 +26512.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AC1 + 8 +0 + 62 + 0 + 10 +26562.5 + 20 +22175.429095 + 30 +0.0 + 11 +26587.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AC2 + 8 +0 + 62 + 0 + 10 +26637.5 + 20 +22175.429095 + 30 +0.0 + 11 +26662.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AC3 + 8 +0 + 62 + 0 + 10 +26712.5 + 20 +22175.429095 + 30 +0.0 + 11 +26737.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AC4 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +22175.429095 + 30 +0.0 + 11 +26812.5 + 21 +22175.429095 + 31 +0.0 + 0 +LINE + 5 +1AC5 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20248.52258 + 30 +0.0 + 11 +26775.0 + 21 +20248.52258 + 31 +0.0 + 0 +LINE + 5 +1AC6 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20226.871945 + 30 +0.0 + 11 +26812.5 + 21 +20226.871945 + 31 +0.0 + 0 +LINE + 5 +1AC7 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20205.22131 + 30 +0.0 + 11 +26775.0 + 21 +20205.22131 + 31 +0.0 + 0 +LINE + 5 +1AC8 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20183.570675 + 30 +0.0 + 11 +26812.5 + 21 +20183.570675 + 31 +0.0 + 0 +LINE + 5 +1AC9 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20161.92004 + 30 +0.0 + 11 +26775.0 + 21 +20161.92004 + 31 +0.0 + 0 +LINE + 5 +1ACA + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20140.269405 + 30 +0.0 + 11 +26812.5 + 21 +20140.269405 + 31 +0.0 + 0 +LINE + 5 +1ACB + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20118.61877 + 30 +0.0 + 11 +26775.0 + 21 +20118.61877 + 31 +0.0 + 0 +LINE + 5 +1ACC + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20096.968135 + 30 +0.0 + 11 +26812.5 + 21 +20096.968135 + 31 +0.0 + 0 +LINE + 5 +1ACD + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20075.3175 + 30 +0.0 + 11 +26775.0 + 21 +20075.3175 + 31 +0.0 + 0 +LINE + 5 +1ACE + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20053.666865 + 30 +0.0 + 11 +26812.5 + 21 +20053.666865 + 31 +0.0 + 0 +LINE + 5 +1ACF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +20032.01623 + 30 +0.0 + 11 +26775.0 + 21 +20032.01623 + 31 +0.0 + 0 +LINE + 5 +1AD0 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +20010.365595 + 30 +0.0 + 11 +26812.5 + 21 +20010.365595 + 31 +0.0 + 0 +LINE + 5 +1AD1 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19988.71496 + 30 +0.0 + 11 +26775.0 + 21 +19988.71496 + 31 +0.0 + 0 +LINE + 5 +1AD2 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19967.064325 + 30 +0.0 + 11 +26812.5 + 21 +19967.064325 + 31 +0.0 + 0 +LINE + 5 +1AD3 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19945.41369 + 30 +0.0 + 11 +26775.0 + 21 +19945.41369 + 31 +0.0 + 0 +LINE + 5 +1AD4 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19923.763055 + 30 +0.0 + 11 +26812.5 + 21 +19923.763055 + 31 +0.0 + 0 +LINE + 5 +1AD5 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19902.11242 + 30 +0.0 + 11 +26775.0 + 21 +19902.11242 + 31 +0.0 + 0 +LINE + 5 +1AD6 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19880.461785 + 30 +0.0 + 11 +26812.5 + 21 +19880.461785 + 31 +0.0 + 0 +LINE + 5 +1AD7 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19858.81115 + 30 +0.0 + 11 +26775.0 + 21 +19858.81115 + 31 +0.0 + 0 +LINE + 5 +1AD8 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19837.160515 + 30 +0.0 + 11 +26812.5 + 21 +19837.160515 + 31 +0.0 + 0 +LINE + 5 +1AD9 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19815.50988 + 30 +0.0 + 11 +26775.0 + 21 +19815.50988 + 31 +0.0 + 0 +LINE + 5 +1ADA + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19793.859245 + 30 +0.0 + 11 +26812.5 + 21 +19793.859245 + 31 +0.0 + 0 +LINE + 5 +1ADB + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19772.20861 + 30 +0.0 + 11 +26775.0 + 21 +19772.20861 + 31 +0.0 + 0 +LINE + 5 +1ADC + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19750.557975 + 30 +0.0 + 11 +26812.5 + 21 +19750.557975 + 31 +0.0 + 0 +LINE + 5 +1ADD + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19728.90734 + 30 +0.0 + 11 +26775.0 + 21 +19728.90734 + 31 +0.0 + 0 +LINE + 5 +1ADE + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19707.256705 + 30 +0.0 + 11 +26812.5 + 21 +19707.256705 + 31 +0.0 + 0 +LINE + 5 +1ADF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19685.60607 + 30 +0.0 + 11 +26775.0 + 21 +19685.60607 + 31 +0.0 + 0 +LINE + 5 +1AE0 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19663.955435 + 30 +0.0 + 11 +26812.5 + 21 +19663.955435 + 31 +0.0 + 0 +LINE + 5 +1AE1 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19642.3048 + 30 +0.0 + 11 +26775.0 + 21 +19642.3048 + 31 +0.0 + 0 +LINE + 5 +1AE2 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19620.654165 + 30 +0.0 + 11 +26812.5 + 21 +19620.654165 + 31 +0.0 + 0 +LINE + 5 +1AE3 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19599.00353 + 30 +0.0 + 11 +26775.0 + 21 +19599.00353 + 31 +0.0 + 0 +LINE + 5 +1AE4 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19577.352895 + 30 +0.0 + 11 +26812.5 + 21 +19577.352895 + 31 +0.0 + 0 +LINE + 5 +1AE5 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19555.70226 + 30 +0.0 + 11 +26775.0 + 21 +19555.70226 + 31 +0.0 + 0 +LINE + 5 +1AE6 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19534.051625 + 30 +0.0 + 11 +26812.5 + 21 +19534.051625 + 31 +0.0 + 0 +LINE + 5 +1AE7 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19512.40099 + 30 +0.0 + 11 +26775.0 + 21 +19512.40099 + 31 +0.0 + 0 +LINE + 5 +1AE8 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19490.750355 + 30 +0.0 + 11 +26812.5 + 21 +19490.750355 + 31 +0.0 + 0 +LINE + 5 +1AE9 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19469.09972 + 30 +0.0 + 11 +26775.0 + 21 +19469.09972 + 31 +0.0 + 0 +LINE + 5 +1AEA + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19447.449085 + 30 +0.0 + 11 +26812.5 + 21 +19447.449085 + 31 +0.0 + 0 +LINE + 5 +1AEB + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19425.79845 + 30 +0.0 + 11 +26775.0 + 21 +19425.79845 + 31 +0.0 + 0 +LINE + 5 +1AEC + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19404.147815 + 30 +0.0 + 11 +26812.5 + 21 +19404.147815 + 31 +0.0 + 0 +LINE + 5 +1AED + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19382.49718 + 30 +0.0 + 11 +26775.0 + 21 +19382.49718 + 31 +0.0 + 0 +LINE + 5 +1AEE + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19360.846545 + 30 +0.0 + 11 +26812.5 + 21 +19360.846545 + 31 +0.0 + 0 +LINE + 5 +1AEF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19339.19591 + 30 +0.0 + 11 +26775.0 + 21 +19339.19591 + 31 +0.0 + 0 +LINE + 5 +1AF0 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19317.545275 + 30 +0.0 + 11 +26812.5 + 21 +19317.545275 + 31 +0.0 + 0 +LINE + 5 +1AF1 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19295.89464 + 30 +0.0 + 11 +26775.0 + 21 +19295.89464 + 31 +0.0 + 0 +LINE + 5 +1AF2 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19274.244005 + 30 +0.0 + 11 +26812.5 + 21 +19274.244005 + 31 +0.0 + 0 +LINE + 5 +1AF3 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19252.59337 + 30 +0.0 + 11 +26775.0 + 21 +19252.59337 + 31 +0.0 + 0 +LINE + 5 +1AF4 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19230.942735 + 30 +0.0 + 11 +26812.5 + 21 +19230.942735 + 31 +0.0 + 0 +LINE + 5 +1AF5 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19209.2921 + 30 +0.0 + 11 +26775.0 + 21 +19209.2921 + 31 +0.0 + 0 +LINE + 5 +1AF6 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19187.641465 + 30 +0.0 + 11 +26812.5 + 21 +19187.641465 + 31 +0.0 + 0 +LINE + 5 +1AF7 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19165.99083 + 30 +0.0 + 11 +26775.0 + 21 +19165.99083 + 31 +0.0 + 0 +LINE + 5 +1AF8 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19144.340195 + 30 +0.0 + 11 +26812.5 + 21 +19144.340195 + 31 +0.0 + 0 +LINE + 5 +1AF9 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19122.68956 + 30 +0.0 + 11 +26775.0 + 21 +19122.68956 + 31 +0.0 + 0 +LINE + 5 +1AFA + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19101.038925 + 30 +0.0 + 11 +26812.5 + 21 +19101.038925 + 31 +0.0 + 0 +LINE + 5 +1AFB + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19079.38829 + 30 +0.0 + 11 +26775.0 + 21 +19079.38829 + 31 +0.0 + 0 +LINE + 5 +1AFC + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19057.737655 + 30 +0.0 + 11 +26812.5 + 21 +19057.737655 + 31 +0.0 + 0 +LINE + 5 +1AFD + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +19036.08702 + 30 +0.0 + 11 +26775.0 + 21 +19036.08702 + 31 +0.0 + 0 +LINE + 5 +1AFE + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +19014.436385 + 30 +0.0 + 11 +26812.5 + 21 +19014.436385 + 31 +0.0 + 0 +LINE + 5 +1AFF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18992.78575 + 30 +0.0 + 11 +26775.0 + 21 +18992.78575 + 31 +0.0 + 0 +LINE + 5 +1B00 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18971.135115 + 30 +0.0 + 11 +26812.5 + 21 +18971.135115 + 31 +0.0 + 0 +LINE + 5 +1B01 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18949.48448 + 30 +0.0 + 11 +26775.0 + 21 +18949.48448 + 31 +0.0 + 0 +LINE + 5 +1B02 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18927.833845 + 30 +0.0 + 11 +26812.5 + 21 +18927.833845 + 31 +0.0 + 0 +LINE + 5 +1B03 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18906.18321 + 30 +0.0 + 11 +26775.0 + 21 +18906.18321 + 31 +0.0 + 0 +LINE + 5 +1B04 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18884.532575 + 30 +0.0 + 11 +26812.5 + 21 +18884.532575 + 31 +0.0 + 0 +LINE + 5 +1B05 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18862.88194 + 30 +0.0 + 11 +26775.0 + 21 +18862.88194 + 31 +0.0 + 0 +LINE + 5 +1B06 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18841.231305 + 30 +0.0 + 11 +26812.5 + 21 +18841.231305 + 31 +0.0 + 0 +LINE + 5 +1B07 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18819.58067 + 30 +0.0 + 11 +26775.0 + 21 +18819.58067 + 31 +0.0 + 0 +LINE + 5 +1B08 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18797.930035 + 30 +0.0 + 11 +26812.5 + 21 +18797.930035 + 31 +0.0 + 0 +LINE + 5 +1B09 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18776.2794 + 30 +0.0 + 11 +26775.0 + 21 +18776.2794 + 31 +0.0 + 0 +LINE + 5 +1B0A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18754.628765 + 30 +0.0 + 11 +26812.5 + 21 +18754.628765 + 31 +0.0 + 0 +LINE + 5 +1B0B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18732.97813 + 30 +0.0 + 11 +26775.0 + 21 +18732.97813 + 31 +0.0 + 0 +LINE + 5 +1B0C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18711.327495 + 30 +0.0 + 11 +26812.5 + 21 +18711.327495 + 31 +0.0 + 0 +LINE + 5 +1B0D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18689.67686 + 30 +0.0 + 11 +26775.0 + 21 +18689.67686 + 31 +0.0 + 0 +LINE + 5 +1B0E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18668.026225 + 30 +0.0 + 11 +26812.5 + 21 +18668.026225 + 31 +0.0 + 0 +LINE + 5 +1B0F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18646.37559 + 30 +0.0 + 11 +26775.0 + 21 +18646.37559 + 31 +0.0 + 0 +LINE + 5 +1B10 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18624.724955 + 30 +0.0 + 11 +26812.5 + 21 +18624.724955 + 31 +0.0 + 0 +LINE + 5 +1B11 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18603.07432 + 30 +0.0 + 11 +26775.0 + 21 +18603.07432 + 31 +0.0 + 0 +LINE + 5 +1B12 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18581.423685 + 30 +0.0 + 11 +26812.5 + 21 +18581.423685 + 31 +0.0 + 0 +LINE + 5 +1B13 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18559.77305 + 30 +0.0 + 11 +26775.0 + 21 +18559.77305 + 31 +0.0 + 0 +LINE + 5 +1B14 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18538.122415 + 30 +0.0 + 11 +26812.5 + 21 +18538.122415 + 31 +0.0 + 0 +LINE + 5 +1B15 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18516.47178 + 30 +0.0 + 11 +26775.0 + 21 +18516.47178 + 31 +0.0 + 0 +LINE + 5 +1B16 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18494.821145 + 30 +0.0 + 11 +26812.5 + 21 +18494.821145 + 31 +0.0 + 0 +LINE + 5 +1B17 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18473.17051 + 30 +0.0 + 11 +26775.0 + 21 +18473.17051 + 31 +0.0 + 0 +LINE + 5 +1B18 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18451.519875 + 30 +0.0 + 11 +26812.5 + 21 +18451.519875 + 31 +0.0 + 0 +LINE + 5 +1B19 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18429.86924 + 30 +0.0 + 11 +26775.0 + 21 +18429.86924 + 31 +0.0 + 0 +LINE + 5 +1B1A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18408.218605 + 30 +0.0 + 11 +26812.5 + 21 +18408.218605 + 31 +0.0 + 0 +LINE + 5 +1B1B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +18386.56797 + 30 +0.0 + 11 +26775.0 + 21 +18386.56797 + 31 +0.0 + 0 +LINE + 5 +1B1C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +18364.917335 + 30 +0.0 + 11 +26812.5 + 21 +18364.917335 + 31 +0.0 + 0 +LINE + 5 +1B1D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18871.542029 + 30 +0.0 + 11 +26812.49991 + 21 +18884.532565 + 31 +0.0 + 0 +LINE + 5 +1B1E + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +18927.833835 + 30 +0.0 + 11 +26774.99991 + 21 +18949.484471 + 31 +0.0 + 0 +LINE + 5 +1B1F + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +18992.785741 + 30 +0.0 + 11 +26740.0 + 21 +19010.106093 + 31 +0.0 + 0 +LINE + 5 +1B20 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18828.240759 + 30 +0.0 + 11 +26812.49991 + 21 +18841.231295 + 31 +0.0 + 0 +LINE + 5 +1B21 + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +18884.532565 + 30 +0.0 + 11 +26774.99991 + 21 +18906.1832 + 31 +0.0 + 0 +LINE + 5 +1B22 + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +18949.484471 + 30 +0.0 + 11 +26740.0 + 21 +18966.804823 + 31 +0.0 + 0 +LINE + 5 +1B23 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18784.939489 + 30 +0.0 + 11 +26812.49991 + 21 +18797.930025 + 31 +0.0 + 0 +LINE + 5 +1B24 + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +18841.231295 + 30 +0.0 + 11 +26774.99991 + 21 +18862.88193 + 31 +0.0 + 0 +LINE + 5 +1B25 + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +18906.1832 + 30 +0.0 + 11 +26740.0 + 21 +18923.503553 + 31 +0.0 + 0 +LINE + 5 +1B26 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18741.638219 + 30 +0.0 + 11 +26812.499911 + 21 +18754.628755 + 31 +0.0 + 0 +LINE + 5 +1B27 + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18797.930025 + 30 +0.0 + 11 +26774.999911 + 21 +18819.58066 + 31 +0.0 + 0 +LINE + 5 +1B28 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18862.88193 + 30 +0.0 + 11 +26740.0 + 21 +18880.202283 + 31 +0.0 + 0 +LINE + 5 +1B29 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18698.336949 + 30 +0.0 + 11 +26812.499911 + 21 +18711.327485 + 31 +0.0 + 0 +LINE + 5 +1B2A + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18754.628755 + 30 +0.0 + 11 +26774.999911 + 21 +18776.27939 + 31 +0.0 + 0 +LINE + 5 +1B2B + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18819.58066 + 30 +0.0 + 11 +26740.0 + 21 +18836.901013 + 31 +0.0 + 0 +LINE + 5 +1B2C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18655.035679 + 30 +0.0 + 11 +26812.499911 + 21 +18668.026215 + 31 +0.0 + 0 +LINE + 5 +1B2D + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18711.327485 + 30 +0.0 + 11 +26774.999911 + 21 +18732.97812 + 31 +0.0 + 0 +LINE + 5 +1B2E + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18776.27939 + 30 +0.0 + 11 +26740.0 + 21 +18793.599743 + 31 +0.0 + 0 +LINE + 5 +1B2F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18611.734409 + 30 +0.0 + 11 +26812.499911 + 21 +18624.724944 + 31 +0.0 + 0 +LINE + 5 +1B30 + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18668.026215 + 30 +0.0 + 11 +26774.999911 + 21 +18689.67685 + 31 +0.0 + 0 +LINE + 5 +1B31 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18732.97812 + 30 +0.0 + 11 +26740.0 + 21 +18750.298473 + 31 +0.0 + 0 +LINE + 5 +1B32 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18568.433139 + 30 +0.0 + 11 +26812.499911 + 21 +18581.423674 + 31 +0.0 + 0 +LINE + 5 +1B33 + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18624.724944 + 30 +0.0 + 11 +26774.999911 + 21 +18646.37558 + 31 +0.0 + 0 +LINE + 5 +1B34 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18689.67685 + 30 +0.0 + 11 +26740.0 + 21 +18706.997203 + 31 +0.0 + 0 +LINE + 5 +1B35 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18525.131869 + 30 +0.0 + 11 +26812.499911 + 21 +18538.122404 + 31 +0.0 + 0 +LINE + 5 +1B36 + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18581.423674 + 30 +0.0 + 11 +26774.999911 + 21 +18603.074309 + 31 +0.0 + 0 +LINE + 5 +1B37 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18646.37558 + 30 +0.0 + 11 +26740.0 + 21 +18663.695933 + 31 +0.0 + 0 +LINE + 5 +1B38 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18481.830599 + 30 +0.0 + 11 +26812.499911 + 21 +18494.821134 + 31 +0.0 + 0 +LINE + 5 +1B39 + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18538.122404 + 30 +0.0 + 11 +26774.999911 + 21 +18559.773039 + 31 +0.0 + 0 +LINE + 5 +1B3A + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18603.074309 + 30 +0.0 + 11 +26740.0 + 21 +18620.394663 + 31 +0.0 + 0 +LINE + 5 +1B3B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18438.529329 + 30 +0.0 + 11 +26812.499911 + 21 +18451.519864 + 31 +0.0 + 0 +LINE + 5 +1B3C + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18494.821134 + 30 +0.0 + 11 +26774.999911 + 21 +18516.471769 + 31 +0.0 + 0 +LINE + 5 +1B3D + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18559.773039 + 30 +0.0 + 11 +26740.0 + 21 +18577.093393 + 31 +0.0 + 0 +LINE + 5 +1B3E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18395.228059 + 30 +0.0 + 11 +26812.499911 + 21 +18408.218594 + 31 +0.0 + 0 +LINE + 5 +1B3F + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18451.519864 + 30 +0.0 + 11 +26774.999911 + 21 +18473.170499 + 31 +0.0 + 0 +LINE + 5 +1B40 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18516.471769 + 30 +0.0 + 11 +26740.0 + 21 +18533.792123 + 31 +0.0 + 0 +LINE + 5 +1B41 + 8 +0 + 62 + 0 + 10 +26813.173866 + 20 +18363.75 + 30 +0.0 + 11 +26812.499911 + 21 +18364.917324 + 31 +0.0 + 0 +LINE + 5 +1B42 + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18408.218594 + 30 +0.0 + 11 +26774.999911 + 21 +18429.869229 + 31 +0.0 + 0 +LINE + 5 +1B43 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18473.170499 + 30 +0.0 + 11 +26740.0 + 21 +18490.490853 + 31 +0.0 + 0 +LINE + 5 +1B44 + 8 +0 + 62 + 0 + 10 +26787.499911 + 20 +18364.917324 + 30 +0.0 + 11 +26774.999911 + 21 +18386.567959 + 31 +0.0 + 0 +LINE + 5 +1B45 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18429.869229 + 30 +0.0 + 11 +26740.0 + 21 +18447.189583 + 31 +0.0 + 0 +LINE + 5 +1B46 + 8 +0 + 62 + 0 + 10 +26749.999911 + 20 +18386.567959 + 30 +0.0 + 11 +26740.0 + 21 +18403.888313 + 31 +0.0 + 0 +LINE + 5 +1B47 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18914.843299 + 30 +0.0 + 11 +26812.49991 + 21 +18927.833835 + 31 +0.0 + 0 +LINE + 5 +1B48 + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +18971.135106 + 30 +0.0 + 11 +26774.99991 + 21 +18992.785741 + 31 +0.0 + 0 +LINE + 5 +1B49 + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19036.087011 + 30 +0.0 + 11 +26740.0 + 21 +19053.407363 + 31 +0.0 + 0 +LINE + 5 +1B4A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +18958.144569 + 30 +0.0 + 11 +26812.49991 + 21 +18971.135106 + 31 +0.0 + 0 +LINE + 5 +1B4B + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19014.436376 + 30 +0.0 + 11 +26774.99991 + 21 +19036.087011 + 31 +0.0 + 0 +LINE + 5 +1B4C + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19079.388281 + 30 +0.0 + 11 +26740.0 + 21 +19096.708633 + 31 +0.0 + 0 +LINE + 5 +1B4D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19001.445839 + 30 +0.0 + 11 +26812.49991 + 21 +19014.436376 + 31 +0.0 + 0 +LINE + 5 +1B4E + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19057.737646 + 30 +0.0 + 11 +26774.99991 + 21 +19079.388281 + 31 +0.0 + 0 +LINE + 5 +1B4F + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19122.689551 + 30 +0.0 + 11 +26740.0 + 21 +19140.009903 + 31 +0.0 + 0 +LINE + 5 +1B50 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19044.747109 + 30 +0.0 + 11 +26812.49991 + 21 +19057.737646 + 31 +0.0 + 0 +LINE + 5 +1B51 + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19101.038916 + 30 +0.0 + 11 +26774.99991 + 21 +19122.689551 + 31 +0.0 + 0 +LINE + 5 +1B52 + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19165.990821 + 30 +0.0 + 11 +26740.0 + 21 +19183.311173 + 31 +0.0 + 0 +LINE + 5 +1B53 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19088.048379 + 30 +0.0 + 11 +26812.49991 + 21 +19101.038916 + 31 +0.0 + 0 +LINE + 5 +1B54 + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19144.340186 + 30 +0.0 + 11 +26774.99991 + 21 +19165.990821 + 31 +0.0 + 0 +LINE + 5 +1B55 + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19209.292091 + 30 +0.0 + 11 +26740.0 + 21 +19226.612443 + 31 +0.0 + 0 +LINE + 5 +1B56 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19131.349649 + 30 +0.0 + 11 +26812.49991 + 21 +19144.340186 + 31 +0.0 + 0 +LINE + 5 +1B57 + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19187.641456 + 30 +0.0 + 11 +26774.99991 + 21 +19209.292091 + 31 +0.0 + 0 +LINE + 5 +1B58 + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19252.593362 + 30 +0.0 + 11 +26740.0 + 21 +19269.913713 + 31 +0.0 + 0 +LINE + 5 +1B59 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19174.650919 + 30 +0.0 + 11 +26812.49991 + 21 +19187.641456 + 31 +0.0 + 0 +LINE + 5 +1B5A + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19230.942726 + 30 +0.0 + 11 +26774.99991 + 21 +19252.593362 + 31 +0.0 + 0 +LINE + 5 +1B5B + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19295.894632 + 30 +0.0 + 11 +26740.0 + 21 +19313.214983 + 31 +0.0 + 0 +LINE + 5 +1B5C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19217.952189 + 30 +0.0 + 11 +26812.49991 + 21 +19230.942726 + 31 +0.0 + 0 +LINE + 5 +1B5D + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19274.243997 + 30 +0.0 + 11 +26774.99991 + 21 +19295.894632 + 31 +0.0 + 0 +LINE + 5 +1B5E + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19339.195902 + 30 +0.0 + 11 +26740.0 + 21 +19356.516253 + 31 +0.0 + 0 +LINE + 5 +1B5F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19261.253459 + 30 +0.0 + 11 +26812.49991 + 21 +19274.243997 + 31 +0.0 + 0 +LINE + 5 +1B60 + 8 +0 + 62 + 0 + 10 +26787.49991 + 20 +19317.545267 + 30 +0.0 + 11 +26774.99991 + 21 +19339.195902 + 31 +0.0 + 0 +LINE + 5 +1B61 + 8 +0 + 62 + 0 + 10 +26749.99991 + 20 +19382.497172 + 30 +0.0 + 11 +26740.0 + 21 +19399.817523 + 31 +0.0 + 0 +LINE + 5 +1B62 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19304.554729 + 30 +0.0 + 11 +26812.499909 + 21 +19317.545267 + 31 +0.0 + 0 +LINE + 5 +1B63 + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19360.846537 + 30 +0.0 + 11 +26774.999909 + 21 +19382.497172 + 31 +0.0 + 0 +LINE + 5 +1B64 + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19425.798442 + 30 +0.0 + 11 +26740.0 + 21 +19443.118793 + 31 +0.0 + 0 +LINE + 5 +1B65 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19347.855999 + 30 +0.0 + 11 +26812.499909 + 21 +19360.846537 + 31 +0.0 + 0 +LINE + 5 +1B66 + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19404.147807 + 30 +0.0 + 11 +26774.999909 + 21 +19425.798442 + 31 +0.0 + 0 +LINE + 5 +1B67 + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19469.099712 + 30 +0.0 + 11 +26740.0 + 21 +19486.420063 + 31 +0.0 + 0 +LINE + 5 +1B68 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19391.157269 + 30 +0.0 + 11 +26812.499909 + 21 +19404.147807 + 31 +0.0 + 0 +LINE + 5 +1B69 + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19447.449077 + 30 +0.0 + 11 +26774.999909 + 21 +19469.099712 + 31 +0.0 + 0 +LINE + 5 +1B6A + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19512.400982 + 30 +0.0 + 11 +26740.0 + 21 +19529.721333 + 31 +0.0 + 0 +LINE + 5 +1B6B + 8 +0 + 62 + 0 + 10 +25247.388666 + 20 +22115.0 + 30 +0.0 + 11 +25238.75 + 21 +22129.962608 + 31 +0.0 + 0 +LINE + 5 +1B6C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19434.458539 + 30 +0.0 + 11 +26812.499909 + 21 +19447.449077 + 31 +0.0 + 0 +LINE + 5 +1B6D + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19490.750347 + 30 +0.0 + 11 +26774.999909 + 21 +19512.400982 + 31 +0.0 + 0 +LINE + 5 +1B6E + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19555.702253 + 30 +0.0 + 11 +26740.0 + 21 +19573.022603 + 31 +0.0 + 0 +LINE + 5 +1B6F + 8 +0 + 62 + 0 + 10 +25249.999909 + 20 +22153.778464 + 30 +0.0 + 11 +25238.75 + 21 +22173.263878 + 31 +0.0 + 0 +LINE + 5 +1B70 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19477.759809 + 30 +0.0 + 11 +26812.499909 + 21 +19490.750347 + 31 +0.0 + 0 +LINE + 5 +1B71 + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19534.051617 + 30 +0.0 + 11 +26774.999909 + 21 +19555.702253 + 31 +0.0 + 0 +LINE + 5 +1B72 + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19599.003523 + 30 +0.0 + 11 +26740.0 + 21 +19616.323873 + 31 +0.0 + 0 +LINE + 5 +1B73 + 8 +0 + 62 + 0 + 10 +25287.499909 + 20 +22132.127829 + 30 +0.0 + 11 +25274.999909 + 21 +22153.778464 + 31 +0.0 + 0 +LINE + 5 +1B74 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19521.061079 + 30 +0.0 + 11 +26812.499909 + 21 +19534.051617 + 31 +0.0 + 0 +LINE + 5 +1B75 + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19577.352888 + 30 +0.0 + 11 +26774.999909 + 21 +19599.003523 + 31 +0.0 + 0 +LINE + 5 +1B76 + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19642.304793 + 30 +0.0 + 11 +26740.0 + 21 +19659.625143 + 31 +0.0 + 0 +LINE + 5 +1B77 + 8 +0 + 62 + 0 + 10 +25322.388666 + 20 +22115.0 + 30 +0.0 + 11 +25312.499909 + 21 +22132.127829 + 31 +0.0 + 0 +LINE + 5 +1B78 + 8 +0 + 62 + 0 + 10 +25287.499909 + 20 +22175.429099 + 30 +0.0 + 11 +25276.200644 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1B79 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19564.362349 + 30 +0.0 + 11 +26812.499909 + 21 +19577.352888 + 31 +0.0 + 0 +LINE + 5 +1B7A + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19620.654158 + 30 +0.0 + 11 +26774.999909 + 21 +19642.304793 + 31 +0.0 + 0 +LINE + 5 +1B7B + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19685.606063 + 30 +0.0 + 11 +26740.0 + 21 +19702.926413 + 31 +0.0 + 0 +LINE + 5 +1B7C + 8 +0 + 62 + 0 + 10 +25324.999909 + 20 +22153.778464 + 30 +0.0 + 11 +25312.499909 + 21 +22175.429099 + 31 +0.0 + 0 +LINE + 5 +1B7D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19607.663619 + 30 +0.0 + 11 +26812.499909 + 21 +19620.654158 + 31 +0.0 + 0 +LINE + 5 +1B7E + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19663.955428 + 30 +0.0 + 11 +26774.999909 + 21 +19685.606063 + 31 +0.0 + 0 +LINE + 5 +1B7F + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19728.907333 + 30 +0.0 + 11 +26740.0 + 21 +19746.227683 + 31 +0.0 + 0 +LINE + 5 +1B80 + 8 +0 + 62 + 0 + 10 +25362.499909 + 20 +22132.127829 + 30 +0.0 + 11 +25349.999909 + 21 +22153.778464 + 31 +0.0 + 0 +LINE + 5 +1B81 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19650.964889 + 30 +0.0 + 11 +26812.499909 + 21 +19663.955428 + 31 +0.0 + 0 +LINE + 5 +1B82 + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19707.256698 + 30 +0.0 + 11 +26774.999909 + 21 +19728.907333 + 31 +0.0 + 0 +LINE + 5 +1B83 + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19772.208603 + 30 +0.0 + 11 +26740.0 + 21 +19789.528953 + 31 +0.0 + 0 +LINE + 5 +1B84 + 8 +0 + 62 + 0 + 10 +25397.388665 + 20 +22115.0 + 30 +0.0 + 11 +25387.499909 + 21 +22132.127829 + 31 +0.0 + 0 +LINE + 5 +1B85 + 8 +0 + 62 + 0 + 10 +25362.499909 + 20 +22175.429099 + 30 +0.0 + 11 +25351.200644 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1B86 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19694.266159 + 30 +0.0 + 11 +26812.499909 + 21 +19707.256698 + 31 +0.0 + 0 +LINE + 5 +1B87 + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19750.557968 + 30 +0.0 + 11 +26774.999909 + 21 +19772.208603 + 31 +0.0 + 0 +LINE + 5 +1B88 + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19815.509873 + 30 +0.0 + 11 +26740.0 + 21 +19832.830223 + 31 +0.0 + 0 +LINE + 5 +1B89 + 8 +0 + 62 + 0 + 10 +25399.999909 + 20 +22153.778464 + 30 +0.0 + 11 +25387.499909 + 21 +22175.429099 + 31 +0.0 + 0 +LINE + 5 +1B8A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19737.567429 + 30 +0.0 + 11 +26812.499909 + 21 +19750.557968 + 31 +0.0 + 0 +LINE + 5 +1B8B + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19793.859238 + 30 +0.0 + 11 +26774.999909 + 21 +19815.509873 + 31 +0.0 + 0 +LINE + 5 +1B8C + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19858.811144 + 30 +0.0 + 11 +26740.0 + 21 +19876.131493 + 31 +0.0 + 0 +LINE + 5 +1B8D + 8 +0 + 62 + 0 + 10 +25437.499909 + 20 +22132.127829 + 30 +0.0 + 11 +25424.999909 + 21 +22153.778464 + 31 +0.0 + 0 +LINE + 5 +1B8E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19780.868699 + 30 +0.0 + 11 +26812.499909 + 21 +19793.859238 + 31 +0.0 + 0 +LINE + 5 +1B8F + 8 +0 + 62 + 0 + 10 +26787.499909 + 20 +19837.160508 + 30 +0.0 + 11 +26774.999909 + 21 +19858.811144 + 31 +0.0 + 0 +LINE + 5 +1B90 + 8 +0 + 62 + 0 + 10 +26749.999909 + 20 +19902.112414 + 30 +0.0 + 11 +26740.0 + 21 +19919.432763 + 31 +0.0 + 0 +LINE + 5 +1B91 + 8 +0 + 62 + 0 + 10 +25472.388665 + 20 +22115.0 + 30 +0.0 + 11 +25462.499909 + 21 +22132.127829 + 31 +0.0 + 0 +LINE + 5 +1B92 + 8 +0 + 62 + 0 + 10 +25437.499909 + 20 +22175.429099 + 30 +0.0 + 11 +25426.200643 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1B93 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19824.169969 + 30 +0.0 + 11 +26812.499908 + 21 +19837.160508 + 31 +0.0 + 0 +LINE + 5 +1B94 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +19880.461779 + 30 +0.0 + 11 +26774.999908 + 21 +19902.112414 + 31 +0.0 + 0 +LINE + 5 +1B95 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +19945.413684 + 30 +0.0 + 11 +26740.0 + 21 +19962.734033 + 31 +0.0 + 0 +LINE + 5 +1B96 + 8 +0 + 62 + 0 + 10 +25474.999908 + 20 +22153.778464 + 30 +0.0 + 11 +25462.499908 + 21 +22175.429099 + 31 +0.0 + 0 +LINE + 5 +1B97 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19867.471239 + 30 +0.0 + 11 +26812.499908 + 21 +19880.461779 + 31 +0.0 + 0 +LINE + 5 +1B98 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +19923.763049 + 30 +0.0 + 11 +26774.999908 + 21 +19945.413684 + 31 +0.0 + 0 +LINE + 5 +1B99 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +19988.714954 + 30 +0.0 + 11 +26740.0 + 21 +20006.035303 + 31 +0.0 + 0 +LINE + 5 +1B9A + 8 +0 + 62 + 0 + 10 +25512.499908 + 20 +22132.127828 + 30 +0.0 + 11 +25499.999908 + 21 +22153.778464 + 31 +0.0 + 0 +LINE + 5 +1B9B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19910.772509 + 30 +0.0 + 11 +26812.499908 + 21 +19923.763049 + 31 +0.0 + 0 +LINE + 5 +1B9C + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +19967.064319 + 30 +0.0 + 11 +26774.999908 + 21 +19988.714954 + 31 +0.0 + 0 +LINE + 5 +1B9D + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20032.016224 + 30 +0.0 + 11 +26740.0 + 21 +20049.336573 + 31 +0.0 + 0 +LINE + 5 +1B9E + 8 +0 + 62 + 0 + 10 +25547.388665 + 20 +22115.0 + 30 +0.0 + 11 +25537.499908 + 21 +22132.127828 + 31 +0.0 + 0 +LINE + 5 +1B9F + 8 +0 + 62 + 0 + 10 +25512.499908 + 20 +22175.429099 + 30 +0.0 + 11 +25501.200643 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BA0 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19954.073779 + 30 +0.0 + 11 +26812.499908 + 21 +19967.064319 + 31 +0.0 + 0 +LINE + 5 +1BA1 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20010.365589 + 30 +0.0 + 11 +26774.999908 + 21 +20032.016224 + 31 +0.0 + 0 +LINE + 5 +1BA2 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20075.317494 + 30 +0.0 + 11 +26740.0 + 21 +20092.637843 + 31 +0.0 + 0 +LINE + 5 +1BA3 + 8 +0 + 62 + 0 + 10 +25549.999908 + 20 +22153.778463 + 30 +0.0 + 11 +25537.499908 + 21 +22175.429099 + 31 +0.0 + 0 +LINE + 5 +1BA4 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +19997.375049 + 30 +0.0 + 11 +26812.499908 + 21 +20010.365589 + 31 +0.0 + 0 +LINE + 5 +1BA5 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20053.666859 + 30 +0.0 + 11 +26774.999908 + 21 +20075.317494 + 31 +0.0 + 0 +LINE + 5 +1BA6 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20118.618764 + 30 +0.0 + 11 +26740.0 + 21 +20135.939113 + 31 +0.0 + 0 +LINE + 5 +1BA7 + 8 +0 + 62 + 0 + 10 +25587.499908 + 20 +22132.127828 + 30 +0.0 + 11 +25574.999908 + 21 +22153.778463 + 31 +0.0 + 0 +LINE + 5 +1BA8 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20040.676319 + 30 +0.0 + 11 +26812.499908 + 21 +20053.666859 + 31 +0.0 + 0 +LINE + 5 +1BA9 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20096.968129 + 30 +0.0 + 11 +26774.999908 + 21 +20118.618764 + 31 +0.0 + 0 +LINE + 5 +1BAA + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20161.920035 + 30 +0.0 + 11 +26740.0 + 21 +20179.240383 + 31 +0.0 + 0 +LINE + 5 +1BAB + 8 +0 + 62 + 0 + 10 +25622.388664 + 20 +22115.0 + 30 +0.0 + 11 +25612.499908 + 21 +22132.127828 + 31 +0.0 + 0 +LINE + 5 +1BAC + 8 +0 + 62 + 0 + 10 +25587.499908 + 20 +22175.429098 + 30 +0.0 + 11 +25576.200643 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BAD + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20083.977589 + 30 +0.0 + 11 +26812.499908 + 21 +20096.968129 + 31 +0.0 + 0 +LINE + 5 +1BAE + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20140.269399 + 30 +0.0 + 11 +26774.999908 + 21 +20161.920035 + 31 +0.0 + 0 +LINE + 5 +1BAF + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20205.221305 + 30 +0.0 + 11 +26740.0 + 21 +20222.541653 + 31 +0.0 + 0 +LINE + 5 +1BB0 + 8 +0 + 62 + 0 + 10 +25624.999908 + 20 +22153.778463 + 30 +0.0 + 11 +25612.499908 + 21 +22175.429098 + 31 +0.0 + 0 +LINE + 5 +1BB1 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20127.278859 + 30 +0.0 + 11 +26812.499908 + 21 +20140.269399 + 31 +0.0 + 0 +LINE + 5 +1BB2 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20183.57067 + 30 +0.0 + 11 +26774.999908 + 21 +20205.221305 + 31 +0.0 + 0 +LINE + 5 +1BB3 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20248.522575 + 30 +0.0 + 11 +26740.0 + 21 +20265.842923 + 31 +0.0 + 0 +LINE + 5 +1BB4 + 8 +0 + 62 + 0 + 10 +25662.499908 + 20 +22132.127828 + 30 +0.0 + 11 +25649.999908 + 21 +22153.778463 + 31 +0.0 + 0 +LINE + 5 +1BB5 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20170.580129 + 30 +0.0 + 11 +26812.499908 + 21 +20183.57067 + 31 +0.0 + 0 +LINE + 5 +1BB6 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20226.87194 + 30 +0.0 + 11 +26774.999908 + 21 +20248.522575 + 31 +0.0 + 0 +LINE + 5 +1BB7 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20291.823845 + 30 +0.0 + 11 +26740.0 + 21 +20309.144193 + 31 +0.0 + 0 +LINE + 5 +1BB8 + 8 +0 + 62 + 0 + 10 +25697.388664 + 20 +22115.0 + 30 +0.0 + 11 +25687.499908 + 21 +22132.127828 + 31 +0.0 + 0 +LINE + 5 +1BB9 + 8 +0 + 62 + 0 + 10 +25662.499908 + 20 +22175.429098 + 30 +0.0 + 11 +25651.200642 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BBA + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20213.881399 + 30 +0.0 + 11 +26812.499908 + 21 +20226.87194 + 31 +0.0 + 0 +LINE + 5 +1BBB + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20270.17321 + 30 +0.0 + 11 +26774.999908 + 21 +20291.823845 + 31 +0.0 + 0 +LINE + 5 +1BBC + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20335.125115 + 30 +0.0 + 11 +26740.0 + 21 +20352.445463 + 31 +0.0 + 0 +LINE + 5 +1BBD + 8 +0 + 62 + 0 + 10 +25699.999908 + 20 +22153.778463 + 30 +0.0 + 11 +25687.499908 + 21 +22175.429098 + 31 +0.0 + 0 +LINE + 5 +1BBE + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20257.182669 + 30 +0.0 + 11 +26812.499908 + 21 +20270.17321 + 31 +0.0 + 0 +LINE + 5 +1BBF + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20313.47448 + 30 +0.0 + 11 +26774.999908 + 21 +20335.125115 + 31 +0.0 + 0 +LINE + 5 +1BC0 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20378.426385 + 30 +0.0 + 11 +26740.0 + 21 +20395.746733 + 31 +0.0 + 0 +LINE + 5 +1BC1 + 8 +0 + 62 + 0 + 10 +25737.499908 + 20 +22132.127828 + 30 +0.0 + 11 +25724.999908 + 21 +22153.778463 + 31 +0.0 + 0 +LINE + 5 +1BC2 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20300.483939 + 30 +0.0 + 11 +26812.499908 + 21 +20313.47448 + 31 +0.0 + 0 +LINE + 5 +1BC3 + 8 +0 + 62 + 0 + 10 +26787.499908 + 20 +20356.77575 + 30 +0.0 + 11 +26774.999908 + 21 +20378.426385 + 31 +0.0 + 0 +LINE + 5 +1BC4 + 8 +0 + 62 + 0 + 10 +26749.999908 + 20 +20421.727655 + 30 +0.0 + 11 +26740.0 + 21 +20439.048003 + 31 +0.0 + 0 +LINE + 5 +1BC5 + 8 +0 + 62 + 0 + 10 +25772.388664 + 20 +22115.0 + 30 +0.0 + 11 +25762.499908 + 21 +22132.127828 + 31 +0.0 + 0 +LINE + 5 +1BC6 + 8 +0 + 62 + 0 + 10 +25737.499908 + 20 +22175.429098 + 30 +0.0 + 11 +25726.200642 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BC7 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20343.785209 + 30 +0.0 + 11 +26812.499907 + 21 +20356.77575 + 31 +0.0 + 0 +LINE + 5 +1BC8 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20400.07702 + 30 +0.0 + 11 +26774.999907 + 21 +20421.727655 + 31 +0.0 + 0 +LINE + 5 +1BC9 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20465.028926 + 30 +0.0 + 11 +26740.0 + 21 +20482.349273 + 31 +0.0 + 0 +LINE + 5 +1BCA + 8 +0 + 62 + 0 + 10 +25774.999907 + 20 +22153.778463 + 30 +0.0 + 11 +25762.499907 + 21 +22175.429098 + 31 +0.0 + 0 +LINE + 5 +1BCB + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20387.086479 + 30 +0.0 + 11 +26812.499907 + 21 +20400.07702 + 31 +0.0 + 0 +LINE + 5 +1BCC + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20443.37829 + 30 +0.0 + 11 +26774.999907 + 21 +20465.028926 + 31 +0.0 + 0 +LINE + 5 +1BCD + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20508.330196 + 30 +0.0 + 11 +26740.0 + 21 +20525.650543 + 31 +0.0 + 0 +LINE + 5 +1BCE + 8 +0 + 62 + 0 + 10 +25812.499907 + 20 +22132.127828 + 30 +0.0 + 11 +25799.999907 + 21 +22153.778463 + 31 +0.0 + 0 +LINE + 5 +1BCF + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20430.387749 + 30 +0.0 + 11 +26812.499907 + 21 +20443.37829 + 31 +0.0 + 0 +LINE + 5 +1BD0 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20486.679561 + 30 +0.0 + 11 +26774.999907 + 21 +20508.330196 + 31 +0.0 + 0 +LINE + 5 +1BD1 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20551.631466 + 30 +0.0 + 11 +26740.0 + 21 +20568.951813 + 31 +0.0 + 0 +LINE + 5 +1BD2 + 8 +0 + 62 + 0 + 10 +25847.388663 + 20 +22115.0 + 30 +0.0 + 11 +25837.499907 + 21 +22132.127828 + 31 +0.0 + 0 +LINE + 5 +1BD3 + 8 +0 + 62 + 0 + 10 +25812.499907 + 20 +22175.429098 + 30 +0.0 + 11 +25801.200642 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BD4 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20473.689019 + 30 +0.0 + 11 +26812.499907 + 21 +20486.679561 + 31 +0.0 + 0 +LINE + 5 +1BD5 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20529.980831 + 30 +0.0 + 11 +26774.999907 + 21 +20551.631466 + 31 +0.0 + 0 +LINE + 5 +1BD6 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20594.932736 + 30 +0.0 + 11 +26740.0 + 21 +20612.253083 + 31 +0.0 + 0 +LINE + 5 +1BD7 + 8 +0 + 62 + 0 + 10 +25849.999907 + 20 +22153.778463 + 30 +0.0 + 11 +25837.499907 + 21 +22175.429098 + 31 +0.0 + 0 +LINE + 5 +1BD8 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20516.990289 + 30 +0.0 + 11 +26812.499907 + 21 +20529.980831 + 31 +0.0 + 0 +LINE + 5 +1BD9 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20573.282101 + 30 +0.0 + 11 +26774.999907 + 21 +20594.932736 + 31 +0.0 + 0 +LINE + 5 +1BDA + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20638.234006 + 30 +0.0 + 11 +26740.0 + 21 +20655.554353 + 31 +0.0 + 0 +LINE + 5 +1BDB + 8 +0 + 62 + 0 + 10 +25887.499907 + 20 +22132.127828 + 30 +0.0 + 11 +25874.999907 + 21 +22153.778463 + 31 +0.0 + 0 +LINE + 5 +1BDC + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20560.291559 + 30 +0.0 + 11 +26812.499907 + 21 +20573.282101 + 31 +0.0 + 0 +LINE + 5 +1BDD + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20616.583371 + 30 +0.0 + 11 +26774.999907 + 21 +20638.234006 + 31 +0.0 + 0 +LINE + 5 +1BDE + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20681.535276 + 30 +0.0 + 11 +26740.0 + 21 +20698.855623 + 31 +0.0 + 0 +LINE + 5 +1BDF + 8 +0 + 62 + 0 + 10 +25922.388663 + 20 +22115.0 + 30 +0.0 + 11 +25912.499907 + 21 +22132.127828 + 31 +0.0 + 0 +LINE + 5 +1BE0 + 8 +0 + 62 + 0 + 10 +25887.499907 + 20 +22175.429098 + 30 +0.0 + 11 +25876.200641 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BE1 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20603.592829 + 30 +0.0 + 11 +26812.499907 + 21 +20616.583371 + 31 +0.0 + 0 +LINE + 5 +1BE2 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20659.884641 + 30 +0.0 + 11 +26774.999907 + 21 +20681.535276 + 31 +0.0 + 0 +LINE + 5 +1BE3 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20724.836546 + 30 +0.0 + 11 +26740.0 + 21 +20742.156893 + 31 +0.0 + 0 +LINE + 5 +1BE4 + 8 +0 + 62 + 0 + 10 +25924.999907 + 20 +22153.778463 + 30 +0.0 + 11 +25912.499907 + 21 +22175.429098 + 31 +0.0 + 0 +LINE + 5 +1BE5 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20646.894099 + 30 +0.0 + 11 +26812.499907 + 21 +20659.884641 + 31 +0.0 + 0 +LINE + 5 +1BE6 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20703.185911 + 30 +0.0 + 11 +26774.999907 + 21 +20724.836546 + 31 +0.0 + 0 +LINE + 5 +1BE7 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20768.137817 + 30 +0.0 + 11 +26740.0 + 21 +20785.458163 + 31 +0.0 + 0 +LINE + 5 +1BE8 + 8 +0 + 62 + 0 + 10 +25962.499907 + 20 +22132.127828 + 30 +0.0 + 11 +25949.999907 + 21 +22153.778463 + 31 +0.0 + 0 +LINE + 5 +1BE9 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20690.195369 + 30 +0.0 + 11 +26812.499907 + 21 +20703.185911 + 31 +0.0 + 0 +LINE + 5 +1BEA + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20746.487181 + 30 +0.0 + 11 +26774.999907 + 21 +20768.137817 + 31 +0.0 + 0 +LINE + 5 +1BEB + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20811.439087 + 30 +0.0 + 11 +26740.0 + 21 +20828.759433 + 31 +0.0 + 0 +LINE + 5 +1BEC + 8 +0 + 62 + 0 + 10 +25997.388663 + 20 +22115.0 + 30 +0.0 + 11 +25987.499907 + 21 +22132.127828 + 31 +0.0 + 0 +LINE + 5 +1BED + 8 +0 + 62 + 0 + 10 +25962.499907 + 20 +22175.429098 + 30 +0.0 + 11 +25951.200641 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BEE + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20733.496639 + 30 +0.0 + 11 +26812.499907 + 21 +20746.487181 + 31 +0.0 + 0 +LINE + 5 +1BEF + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20789.788452 + 30 +0.0 + 11 +26774.999907 + 21 +20811.439087 + 31 +0.0 + 0 +LINE + 5 +1BF0 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20854.740357 + 30 +0.0 + 11 +26740.0 + 21 +20872.060703 + 31 +0.0 + 0 +LINE + 5 +1BF1 + 8 +0 + 62 + 0 + 10 +25999.999907 + 20 +22153.778463 + 30 +0.0 + 11 +25987.499907 + 21 +22175.429098 + 31 +0.0 + 0 +LINE + 5 +1BF2 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20776.797909 + 30 +0.0 + 11 +26812.499907 + 21 +20789.788452 + 31 +0.0 + 0 +LINE + 5 +1BF3 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20833.089722 + 30 +0.0 + 11 +26774.999907 + 21 +20854.740357 + 31 +0.0 + 0 +LINE + 5 +1BF4 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20898.041627 + 30 +0.0 + 11 +26740.0 + 21 +20915.361973 + 31 +0.0 + 0 +LINE + 5 +1BF5 + 8 +0 + 62 + 0 + 10 +26037.499907 + 20 +22132.127827 + 30 +0.0 + 11 +26024.999907 + 21 +22153.778463 + 31 +0.0 + 0 +LINE + 5 +1BF6 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20820.099179 + 30 +0.0 + 11 +26812.499907 + 21 +20833.089722 + 31 +0.0 + 0 +LINE + 5 +1BF7 + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20876.390992 + 30 +0.0 + 11 +26774.999907 + 21 +20898.041627 + 31 +0.0 + 0 +LINE + 5 +1BF8 + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20941.342897 + 30 +0.0 + 11 +26740.0 + 21 +20958.663243 + 31 +0.0 + 0 +LINE + 5 +1BF9 + 8 +0 + 62 + 0 + 10 +26072.388662 + 20 +22115.0 + 30 +0.0 + 11 +26062.499907 + 21 +22132.127827 + 31 +0.0 + 0 +LINE + 5 +1BFA + 8 +0 + 62 + 0 + 10 +26037.499907 + 20 +22175.429098 + 30 +0.0 + 11 +26026.200641 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1BFB + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20863.400449 + 30 +0.0 + 11 +26812.499907 + 21 +20876.390992 + 31 +0.0 + 0 +LINE + 5 +1BFC + 8 +0 + 62 + 0 + 10 +26787.499907 + 20 +20919.692262 + 30 +0.0 + 11 +26774.999907 + 21 +20941.342897 + 31 +0.0 + 0 +LINE + 5 +1BFD + 8 +0 + 62 + 0 + 10 +26749.999907 + 20 +20984.644167 + 30 +0.0 + 11 +26740.0 + 21 +21001.964513 + 31 +0.0 + 0 +LINE + 5 +1BFE + 8 +0 + 62 + 0 + 10 +26074.999907 + 20 +22153.778462 + 30 +0.0 + 11 +26062.499907 + 21 +22175.429098 + 31 +0.0 + 0 +LINE + 5 +1BFF + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20906.701719 + 30 +0.0 + 11 +26812.499906 + 21 +20919.692262 + 31 +0.0 + 0 +LINE + 5 +1C00 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +20962.993532 + 30 +0.0 + 11 +26774.999906 + 21 +20984.644167 + 31 +0.0 + 0 +LINE + 5 +1C01 + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21027.945437 + 30 +0.0 + 11 +26740.0 + 21 +21045.265783 + 31 +0.0 + 0 +LINE + 5 +1C02 + 8 +0 + 62 + 0 + 10 +26112.499906 + 20 +22132.127827 + 30 +0.0 + 11 +26099.999906 + 21 +22153.778462 + 31 +0.0 + 0 +LINE + 5 +1C03 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20950.002989 + 30 +0.0 + 11 +26812.499906 + 21 +20962.993532 + 31 +0.0 + 0 +LINE + 5 +1C04 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21006.294802 + 30 +0.0 + 11 +26774.999906 + 21 +21027.945437 + 31 +0.0 + 0 +LINE + 5 +1C05 + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21071.246708 + 30 +0.0 + 11 +26740.0 + 21 +21088.567053 + 31 +0.0 + 0 +LINE + 5 +1C06 + 8 +0 + 62 + 0 + 10 +26147.388662 + 20 +22115.0 + 30 +0.0 + 11 +26137.499906 + 21 +22132.127827 + 31 +0.0 + 0 +LINE + 5 +1C07 + 8 +0 + 62 + 0 + 10 +26112.499906 + 20 +22175.429097 + 30 +0.0 + 11 +26101.20064 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C08 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +20993.304259 + 30 +0.0 + 11 +26812.499906 + 21 +21006.294802 + 31 +0.0 + 0 +LINE + 5 +1C09 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21049.596072 + 30 +0.0 + 11 +26774.999906 + 21 +21071.246708 + 31 +0.0 + 0 +LINE + 5 +1C0A + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21114.547978 + 30 +0.0 + 11 +26740.0 + 21 +21131.868323 + 31 +0.0 + 0 +LINE + 5 +1C0B + 8 +0 + 62 + 0 + 10 +26149.999906 + 20 +22153.778462 + 30 +0.0 + 11 +26137.499906 + 21 +22175.429097 + 31 +0.0 + 0 +LINE + 5 +1C0C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21036.605529 + 30 +0.0 + 11 +26812.499906 + 21 +21049.596072 + 31 +0.0 + 0 +LINE + 5 +1C0D + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21092.897343 + 30 +0.0 + 11 +26774.999906 + 21 +21114.547978 + 31 +0.0 + 0 +LINE + 5 +1C0E + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21157.849248 + 30 +0.0 + 11 +26740.0 + 21 +21175.169593 + 31 +0.0 + 0 +LINE + 5 +1C0F + 8 +0 + 62 + 0 + 10 +26187.499906 + 20 +22132.127827 + 30 +0.0 + 11 +26174.999906 + 21 +22153.778462 + 31 +0.0 + 0 +LINE + 5 +1C10 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21079.906799 + 30 +0.0 + 11 +26812.499906 + 21 +21092.897343 + 31 +0.0 + 0 +LINE + 5 +1C11 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21136.198613 + 30 +0.0 + 11 +26774.999906 + 21 +21157.849248 + 31 +0.0 + 0 +LINE + 5 +1C12 + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21201.150518 + 30 +0.0 + 11 +26740.0 + 21 +21218.470863 + 31 +0.0 + 0 +LINE + 5 +1C13 + 8 +0 + 62 + 0 + 10 +26222.388662 + 20 +22115.0 + 30 +0.0 + 11 +26212.499906 + 21 +22132.127827 + 31 +0.0 + 0 +LINE + 5 +1C14 + 8 +0 + 62 + 0 + 10 +26187.499906 + 20 +22175.429097 + 30 +0.0 + 11 +26176.20064 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C15 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21123.208069 + 30 +0.0 + 11 +26812.499906 + 21 +21136.198613 + 31 +0.0 + 0 +LINE + 5 +1C16 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21179.499883 + 30 +0.0 + 11 +26774.999906 + 21 +21201.150518 + 31 +0.0 + 0 +LINE + 5 +1C17 + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21244.451788 + 30 +0.0 + 11 +26740.0 + 21 +21261.772133 + 31 +0.0 + 0 +LINE + 5 +1C18 + 8 +0 + 62 + 0 + 10 +26224.999906 + 20 +22153.778462 + 30 +0.0 + 11 +26212.499906 + 21 +22175.429097 + 31 +0.0 + 0 +LINE + 5 +1C19 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21166.509339 + 30 +0.0 + 11 +26812.499906 + 21 +21179.499883 + 31 +0.0 + 0 +LINE + 5 +1C1A + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21222.801153 + 30 +0.0 + 11 +26774.999906 + 21 +21244.451788 + 31 +0.0 + 0 +LINE + 5 +1C1B + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21287.753058 + 30 +0.0 + 11 +26740.0 + 21 +21305.073403 + 31 +0.0 + 0 +LINE + 5 +1C1C + 8 +0 + 62 + 0 + 10 +26262.499906 + 20 +22132.127827 + 30 +0.0 + 11 +26249.999906 + 21 +22153.778462 + 31 +0.0 + 0 +LINE + 5 +1C1D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21209.810609 + 30 +0.0 + 11 +26812.499906 + 21 +21222.801153 + 31 +0.0 + 0 +LINE + 5 +1C1E + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21266.102423 + 30 +0.0 + 11 +26774.999906 + 21 +21287.753058 + 31 +0.0 + 0 +LINE + 5 +1C1F + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21331.054328 + 30 +0.0 + 11 +26740.0 + 21 +21348.374673 + 31 +0.0 + 0 +LINE + 5 +1C20 + 8 +0 + 62 + 0 + 10 +26297.388661 + 20 +22115.0 + 30 +0.0 + 11 +26287.499906 + 21 +22132.127827 + 31 +0.0 + 0 +LINE + 5 +1C21 + 8 +0 + 62 + 0 + 10 +26262.499906 + 20 +22175.429097 + 30 +0.0 + 11 +26251.20064 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C22 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21253.111879 + 30 +0.0 + 11 +26812.499906 + 21 +21266.102423 + 31 +0.0 + 0 +LINE + 5 +1C23 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21309.403693 + 30 +0.0 + 11 +26774.999906 + 21 +21331.054328 + 31 +0.0 + 0 +LINE + 5 +1C24 + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21374.355599 + 30 +0.0 + 11 +26740.0 + 21 +21391.675943 + 31 +0.0 + 0 +LINE + 5 +1C25 + 8 +0 + 62 + 0 + 10 +26299.999906 + 20 +22153.778462 + 30 +0.0 + 11 +26287.499906 + 21 +22175.429097 + 31 +0.0 + 0 +LINE + 5 +1C26 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21296.413149 + 30 +0.0 + 11 +26812.499906 + 21 +21309.403693 + 31 +0.0 + 0 +LINE + 5 +1C27 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21352.704963 + 30 +0.0 + 11 +26774.999906 + 21 +21374.355599 + 31 +0.0 + 0 +LINE + 5 +1C28 + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21417.656869 + 30 +0.0 + 11 +26740.0 + 21 +21434.977213 + 31 +0.0 + 0 +LINE + 5 +1C29 + 8 +0 + 62 + 0 + 10 +26337.499906 + 20 +22132.127827 + 30 +0.0 + 11 +26324.999906 + 21 +22153.778462 + 31 +0.0 + 0 +LINE + 5 +1C2A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21339.714419 + 30 +0.0 + 11 +26812.499906 + 21 +21352.704963 + 31 +0.0 + 0 +LINE + 5 +1C2B + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21396.006234 + 30 +0.0 + 11 +26774.999906 + 21 +21417.656869 + 31 +0.0 + 0 +LINE + 5 +1C2C + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21460.958139 + 30 +0.0 + 11 +26740.0 + 21 +21478.278483 + 31 +0.0 + 0 +LINE + 5 +1C2D + 8 +0 + 62 + 0 + 10 +26372.388661 + 20 +22115.0 + 30 +0.0 + 11 +26362.499906 + 21 +22132.127827 + 31 +0.0 + 0 +LINE + 5 +1C2E + 8 +0 + 62 + 0 + 10 +26337.499906 + 20 +22175.429097 + 30 +0.0 + 11 +26326.200639 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C2F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21383.015689 + 30 +0.0 + 11 +26812.499906 + 21 +21396.006234 + 31 +0.0 + 0 +LINE + 5 +1C30 + 8 +0 + 62 + 0 + 10 +26787.499906 + 20 +21439.307504 + 30 +0.0 + 11 +26774.999906 + 21 +21460.958139 + 31 +0.0 + 0 +LINE + 5 +1C31 + 8 +0 + 62 + 0 + 10 +26749.999906 + 20 +21504.259409 + 30 +0.0 + 11 +26740.0 + 21 +21521.579753 + 31 +0.0 + 0 +LINE + 5 +1C32 + 8 +0 + 62 + 0 + 10 +26374.999906 + 20 +22153.778462 + 30 +0.0 + 11 +26362.499906 + 21 +22175.429097 + 31 +0.0 + 0 +LINE + 5 +1C33 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21426.316959 + 30 +0.0 + 11 +26812.499905 + 21 +21439.307504 + 31 +0.0 + 0 +LINE + 5 +1C34 + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21482.608774 + 30 +0.0 + 11 +26774.999905 + 21 +21504.259409 + 31 +0.0 + 0 +LINE + 5 +1C35 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21547.560679 + 30 +0.0 + 11 +26740.0 + 21 +21564.881023 + 31 +0.0 + 0 +LINE + 5 +1C36 + 8 +0 + 62 + 0 + 10 +26412.499905 + 20 +22132.127827 + 30 +0.0 + 11 +26399.999905 + 21 +22153.778462 + 31 +0.0 + 0 +LINE + 5 +1C37 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21469.618229 + 30 +0.0 + 11 +26812.499905 + 21 +21482.608774 + 31 +0.0 + 0 +LINE + 5 +1C38 + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21525.910044 + 30 +0.0 + 11 +26774.999905 + 21 +21547.560679 + 31 +0.0 + 0 +LINE + 5 +1C39 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21590.861949 + 30 +0.0 + 11 +26740.0 + 21 +21608.182293 + 31 +0.0 + 0 +LINE + 5 +1C3A + 8 +0 + 62 + 0 + 10 +26447.388661 + 20 +22115.0 + 30 +0.0 + 11 +26437.499905 + 21 +22132.127827 + 31 +0.0 + 0 +LINE + 5 +1C3B + 8 +0 + 62 + 0 + 10 +26412.499905 + 20 +22175.429097 + 30 +0.0 + 11 +26401.200639 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C3C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21512.919499 + 30 +0.0 + 11 +26812.499905 + 21 +21525.910044 + 31 +0.0 + 0 +LINE + 5 +1C3D + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21569.211314 + 30 +0.0 + 11 +26774.999905 + 21 +21590.861949 + 31 +0.0 + 0 +LINE + 5 +1C3E + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21634.163219 + 30 +0.0 + 11 +26740.0 + 21 +21651.483563 + 31 +0.0 + 0 +LINE + 5 +1C3F + 8 +0 + 62 + 0 + 10 +26449.999905 + 20 +22153.778462 + 30 +0.0 + 11 +26437.499905 + 21 +22175.429097 + 31 +0.0 + 0 +LINE + 5 +1C40 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21556.220769 + 30 +0.0 + 11 +26812.499905 + 21 +21569.211314 + 31 +0.0 + 0 +LINE + 5 +1C41 + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21612.512584 + 30 +0.0 + 11 +26774.999905 + 21 +21634.163219 + 31 +0.0 + 0 +LINE + 5 +1C42 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21677.46449 + 30 +0.0 + 11 +26740.0 + 21 +21694.784833 + 31 +0.0 + 0 +LINE + 5 +1C43 + 8 +0 + 62 + 0 + 10 +26487.499905 + 20 +22132.127827 + 30 +0.0 + 11 +26474.999905 + 21 +22153.778462 + 31 +0.0 + 0 +LINE + 5 +1C44 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21599.522039 + 30 +0.0 + 11 +26812.499905 + 21 +21612.512584 + 31 +0.0 + 0 +LINE + 5 +1C45 + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21655.813854 + 30 +0.0 + 11 +26774.999905 + 21 +21677.46449 + 31 +0.0 + 0 +LINE + 5 +1C46 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21720.76576 + 30 +0.0 + 11 +26740.0 + 21 +21738.086103 + 31 +0.0 + 0 +LINE + 5 +1C47 + 8 +0 + 62 + 0 + 10 +26522.38866 + 20 +22115.0 + 30 +0.0 + 11 +26512.499905 + 21 +22132.127827 + 31 +0.0 + 0 +LINE + 5 +1C48 + 8 +0 + 62 + 0 + 10 +26487.499905 + 20 +22175.429097 + 30 +0.0 + 11 +26476.200639 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C49 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21642.823309 + 30 +0.0 + 11 +26812.499905 + 21 +21655.813854 + 31 +0.0 + 0 +LINE + 5 +1C4A + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21699.115125 + 30 +0.0 + 11 +26774.999905 + 21 +21720.76576 + 31 +0.0 + 0 +LINE + 5 +1C4B + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21764.06703 + 30 +0.0 + 11 +26740.0 + 21 +21781.387373 + 31 +0.0 + 0 +LINE + 5 +1C4C + 8 +0 + 62 + 0 + 10 +26524.999905 + 20 +22153.778462 + 30 +0.0 + 11 +26512.499905 + 21 +22175.429097 + 31 +0.0 + 0 +LINE + 5 +1C4D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21686.124579 + 30 +0.0 + 11 +26812.499905 + 21 +21699.115125 + 31 +0.0 + 0 +LINE + 5 +1C4E + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21742.416395 + 30 +0.0 + 11 +26774.999905 + 21 +21764.06703 + 31 +0.0 + 0 +LINE + 5 +1C4F + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21807.3683 + 30 +0.0 + 11 +26740.0 + 21 +21824.688643 + 31 +0.0 + 0 +LINE + 5 +1C50 + 8 +0 + 62 + 0 + 10 +26562.499905 + 20 +22132.127826 + 30 +0.0 + 11 +26549.999905 + 21 +22153.778462 + 31 +0.0 + 0 +LINE + 5 +1C51 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21729.425849 + 30 +0.0 + 11 +26812.499905 + 21 +21742.416395 + 31 +0.0 + 0 +LINE + 5 +1C52 + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21785.717665 + 30 +0.0 + 11 +26774.999905 + 21 +21807.3683 + 31 +0.0 + 0 +LINE + 5 +1C53 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21850.66957 + 30 +0.0 + 11 +26740.0 + 21 +21867.989913 + 31 +0.0 + 0 +LINE + 5 +1C54 + 8 +0 + 62 + 0 + 10 +26597.38866 + 20 +22115.0 + 30 +0.0 + 11 +26587.499905 + 21 +22132.127826 + 31 +0.0 + 0 +LINE + 5 +1C55 + 8 +0 + 62 + 0 + 10 +26562.499905 + 20 +22175.429097 + 30 +0.0 + 11 +26551.200639 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C56 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21772.727119 + 30 +0.0 + 11 +26812.499905 + 21 +21785.717665 + 31 +0.0 + 0 +LINE + 5 +1C57 + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21829.018935 + 30 +0.0 + 11 +26774.999905 + 21 +21850.66957 + 31 +0.0 + 0 +LINE + 5 +1C58 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21893.97084 + 30 +0.0 + 11 +26740.0 + 21 +21911.291183 + 31 +0.0 + 0 +LINE + 5 +1C59 + 8 +0 + 62 + 0 + 10 +26599.999905 + 20 +22153.778461 + 30 +0.0 + 11 +26587.499905 + 21 +22175.429097 + 31 +0.0 + 0 +LINE + 5 +1C5A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21816.028389 + 30 +0.0 + 11 +26812.499905 + 21 +21829.018935 + 31 +0.0 + 0 +LINE + 5 +1C5B + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21872.320205 + 30 +0.0 + 11 +26774.999905 + 21 +21893.97084 + 31 +0.0 + 0 +LINE + 5 +1C5C + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21937.27211 + 30 +0.0 + 11 +26740.0 + 21 +21954.592453 + 31 +0.0 + 0 +LINE + 5 +1C5D + 8 +0 + 62 + 0 + 10 +26637.499905 + 20 +22132.127826 + 30 +0.0 + 11 +26624.999905 + 21 +22153.778461 + 31 +0.0 + 0 +LINE + 5 +1C5E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21859.329659 + 30 +0.0 + 11 +26812.499905 + 21 +21872.320205 + 31 +0.0 + 0 +LINE + 5 +1C5F + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21915.621475 + 30 +0.0 + 11 +26774.999905 + 21 +21937.27211 + 31 +0.0 + 0 +LINE + 5 +1C60 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +21980.573381 + 30 +0.0 + 11 +26740.0 + 21 +21997.893723 + 31 +0.0 + 0 +LINE + 5 +1C61 + 8 +0 + 62 + 0 + 10 +26672.38866 + 20 +22115.0 + 30 +0.0 + 11 +26662.499905 + 21 +22132.127826 + 31 +0.0 + 0 +LINE + 5 +1C62 + 8 +0 + 62 + 0 + 10 +26637.499905 + 20 +22175.429096 + 30 +0.0 + 11 +26626.200638 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C63 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21902.630929 + 30 +0.0 + 11 +26812.499905 + 21 +21915.621475 + 31 +0.0 + 0 +LINE + 5 +1C64 + 8 +0 + 62 + 0 + 10 +26787.499905 + 20 +21958.922745 + 30 +0.0 + 11 +26774.999905 + 21 +21980.573381 + 31 +0.0 + 0 +LINE + 5 +1C65 + 8 +0 + 62 + 0 + 10 +26749.999905 + 20 +22023.874651 + 30 +0.0 + 11 +26740.0 + 21 +22041.194993 + 31 +0.0 + 0 +LINE + 5 +1C66 + 8 +0 + 62 + 0 + 10 +26674.999905 + 20 +22153.778461 + 30 +0.0 + 11 +26662.499905 + 21 +22175.429096 + 31 +0.0 + 0 +LINE + 5 +1C67 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21945.932199 + 30 +0.0 + 11 +26812.499904 + 21 +21958.922745 + 31 +0.0 + 0 +LINE + 5 +1C68 + 8 +0 + 62 + 0 + 10 +26787.499904 + 20 +22002.224016 + 30 +0.0 + 11 +26774.999904 + 21 +22023.874651 + 31 +0.0 + 0 +LINE + 5 +1C69 + 8 +0 + 62 + 0 + 10 +26749.999904 + 20 +22067.175921 + 30 +0.0 + 11 +26740.0 + 21 +22084.496263 + 31 +0.0 + 0 +LINE + 5 +1C6A + 8 +0 + 62 + 0 + 10 +26712.499904 + 20 +22132.127826 + 30 +0.0 + 11 +26699.999904 + 21 +22153.778461 + 31 +0.0 + 0 +LINE + 5 +1C6B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +21989.233469 + 30 +0.0 + 11 +26812.499904 + 21 +22002.224016 + 31 +0.0 + 0 +LINE + 5 +1C6C + 8 +0 + 62 + 0 + 10 +26787.499904 + 20 +22045.525286 + 30 +0.0 + 11 +26774.999904 + 21 +22067.175921 + 31 +0.0 + 0 +LINE + 5 +1C6D + 8 +0 + 62 + 0 + 10 +26749.999904 + 20 +22110.477191 + 30 +0.0 + 11 +26737.499904 + 21 +22132.127826 + 31 +0.0 + 0 +LINE + 5 +1C6E + 8 +0 + 62 + 0 + 10 +26712.499904 + 20 +22175.429096 + 30 +0.0 + 11 +26701.200638 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C6F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +22032.534739 + 30 +0.0 + 11 +26812.499904 + 21 +22045.525286 + 31 +0.0 + 0 +LINE + 5 +1C70 + 8 +0 + 62 + 0 + 10 +26787.499904 + 20 +22088.826556 + 30 +0.0 + 11 +26774.999904 + 21 +22110.477191 + 31 +0.0 + 0 +LINE + 5 +1C71 + 8 +0 + 62 + 0 + 10 +26749.999904 + 20 +22153.778461 + 30 +0.0 + 11 +26737.499904 + 21 +22175.429096 + 31 +0.0 + 0 +LINE + 5 +1C72 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +22075.836009 + 30 +0.0 + 11 +26812.499904 + 21 +22088.826556 + 31 +0.0 + 0 +LINE + 5 +1C73 + 8 +0 + 62 + 0 + 10 +26787.499904 + 20 +22132.127826 + 30 +0.0 + 11 +26774.999904 + 21 +22153.778461 + 31 +0.0 + 0 +LINE + 5 +1C74 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +22119.137279 + 30 +0.0 + 11 +26812.499904 + 21 +22132.127826 + 31 +0.0 + 0 +LINE + 5 +1C75 + 8 +0 + 62 + 0 + 10 +26787.499904 + 20 +22175.429096 + 30 +0.0 + 11 +26776.200638 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1C76 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +22162.438549 + 30 +0.0 + 11 +26812.499904 + 21 +22175.429096 + 31 +0.0 + 0 +LINE + 5 +1C77 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21530.240337 + 30 +0.0 + 11 +26749.999952 + 21 +21547.560761 + 31 +0.0 + 0 +LINE + 5 +1C78 + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21590.862032 + 30 +0.0 + 11 +26787.499952 + 21 +21612.512667 + 31 +0.0 + 0 +LINE + 5 +1C79 + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21655.813937 + 30 +0.0 + 11 +26820.0 + 21 +21668.804401 + 31 +0.0 + 0 +LINE + 5 +1C7A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21573.541607 + 30 +0.0 + 11 +26749.999952 + 21 +21590.862032 + 31 +0.0 + 0 +LINE + 5 +1C7B + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21634.163302 + 30 +0.0 + 11 +26787.499952 + 21 +21655.813937 + 31 +0.0 + 0 +LINE + 5 +1C7C + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21699.115207 + 30 +0.0 + 11 +26820.0 + 21 +21712.105671 + 31 +0.0 + 0 +LINE + 5 +1C7D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21616.842877 + 30 +0.0 + 11 +26749.999952 + 21 +21634.163302 + 31 +0.0 + 0 +LINE + 5 +1C7E + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21677.464572 + 30 +0.0 + 11 +26787.499952 + 21 +21699.115207 + 31 +0.0 + 0 +LINE + 5 +1C7F + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21742.416477 + 30 +0.0 + 11 +26820.0 + 21 +21755.406941 + 31 +0.0 + 0 +LINE + 5 +1C80 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21660.144147 + 30 +0.0 + 11 +26749.999952 + 21 +21677.464572 + 31 +0.0 + 0 +LINE + 5 +1C81 + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21720.765842 + 30 +0.0 + 11 +26787.499952 + 21 +21742.416477 + 31 +0.0 + 0 +LINE + 5 +1C82 + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21785.717747 + 30 +0.0 + 11 +26820.0 + 21 +21798.708211 + 31 +0.0 + 0 +LINE + 5 +1C83 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21703.445417 + 30 +0.0 + 11 +26749.999952 + 21 +21720.765842 + 31 +0.0 + 0 +LINE + 5 +1C84 + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21764.067112 + 30 +0.0 + 11 +26787.499952 + 21 +21785.717747 + 31 +0.0 + 0 +LINE + 5 +1C85 + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21829.019018 + 30 +0.0 + 11 +26820.0 + 21 +21842.009481 + 31 +0.0 + 0 +LINE + 5 +1C86 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21746.746687 + 30 +0.0 + 11 +26749.999952 + 21 +21764.067112 + 31 +0.0 + 0 +LINE + 5 +1C87 + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21807.368382 + 30 +0.0 + 11 +26787.499952 + 21 +21829.019017 + 31 +0.0 + 0 +LINE + 5 +1C88 + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21872.320288 + 30 +0.0 + 11 +26820.0 + 21 +21885.310751 + 31 +0.0 + 0 +LINE + 5 +1C89 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21790.047957 + 30 +0.0 + 11 +26749.999952 + 21 +21807.368382 + 31 +0.0 + 0 +LINE + 5 +1C8A + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21850.669653 + 30 +0.0 + 11 +26787.499952 + 21 +21872.320288 + 31 +0.0 + 0 +LINE + 5 +1C8B + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21915.621558 + 30 +0.0 + 11 +26820.0 + 21 +21928.612021 + 31 +0.0 + 0 +LINE + 5 +1C8C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21833.349227 + 30 +0.0 + 11 +26749.999953 + 21 +21850.669652 + 31 +0.0 + 0 +LINE + 5 +1C8D + 8 +0 + 62 + 0 + 10 +26774.999953 + 20 +21893.970923 + 30 +0.0 + 11 +26787.499953 + 21 +21915.621558 + 31 +0.0 + 0 +LINE + 5 +1C8E + 8 +0 + 62 + 0 + 10 +26812.499953 + 20 +21958.922828 + 30 +0.0 + 11 +26820.0 + 21 +21971.913291 + 31 +0.0 + 0 +LINE + 5 +1C8F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21876.650497 + 30 +0.0 + 11 +26749.999953 + 21 +21893.970923 + 31 +0.0 + 0 +LINE + 5 +1C90 + 8 +0 + 62 + 0 + 10 +26774.999953 + 20 +21937.272193 + 30 +0.0 + 11 +26787.499953 + 21 +21958.922828 + 31 +0.0 + 0 +LINE + 5 +1C91 + 8 +0 + 62 + 0 + 10 +26812.499953 + 20 +22002.224098 + 30 +0.0 + 11 +26820.0 + 21 +22015.214561 + 31 +0.0 + 0 +LINE + 5 +1C92 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21919.951767 + 30 +0.0 + 11 +26749.999953 + 21 +21937.272193 + 31 +0.0 + 0 +LINE + 5 +1C93 + 8 +0 + 62 + 0 + 10 +26774.999953 + 20 +21980.573463 + 30 +0.0 + 11 +26787.499953 + 21 +22002.224098 + 31 +0.0 + 0 +LINE + 5 +1C94 + 8 +0 + 62 + 0 + 10 +26812.499953 + 20 +22045.525368 + 30 +0.0 + 11 +26820.0 + 21 +22058.515831 + 31 +0.0 + 0 +LINE + 5 +1C95 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21963.253037 + 30 +0.0 + 11 +26749.999953 + 21 +21980.573463 + 31 +0.0 + 0 +LINE + 5 +1C96 + 8 +0 + 62 + 0 + 10 +26774.999953 + 20 +22023.874733 + 30 +0.0 + 11 +26787.499953 + 21 +22045.525368 + 31 +0.0 + 0 +LINE + 5 +1C97 + 8 +0 + 62 + 0 + 10 +26812.499953 + 20 +22088.826638 + 30 +0.0 + 11 +26820.0 + 21 +22101.817101 + 31 +0.0 + 0 +LINE + 5 +1C98 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +22006.554307 + 30 +0.0 + 11 +26749.999953 + 21 +22023.874733 + 31 +0.0 + 0 +LINE + 5 +1C99 + 8 +0 + 62 + 0 + 10 +26774.999953 + 20 +22067.176003 + 30 +0.0 + 11 +26787.499953 + 21 +22088.826638 + 31 +0.0 + 0 +LINE + 5 +1C9A + 8 +0 + 62 + 0 + 10 +26812.499953 + 20 +22132.127908 + 30 +0.0 + 11 +26820.0 + 21 +22145.118371 + 31 +0.0 + 0 +LINE + 5 +1C9B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +22049.855577 + 30 +0.0 + 11 +26749.999953 + 21 +22067.176003 + 31 +0.0 + 0 +LINE + 5 +1C9C + 8 +0 + 62 + 0 + 10 +26774.999953 + 20 +22110.477273 + 30 +0.0 + 11 +26787.499953 + 21 +22132.127908 + 31 +0.0 + 0 +LINE + 5 +1C9D + 8 +0 + 62 + 0 + 10 +26812.499953 + 20 +22175.429179 + 30 +0.0 + 11 +26820.0 + 21 +22188.419641 + 31 +0.0 + 0 +LINE + 5 +1C9E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +22093.156847 + 30 +0.0 + 11 +26749.999953 + 21 +22110.477273 + 31 +0.0 + 0 +LINE + 5 +1C9F + 8 +0 + 62 + 0 + 10 +26774.999953 + 20 +22153.778543 + 30 +0.0 + 11 +26787.499953 + 21 +22175.429179 + 31 +0.0 + 0 +LINE + 5 +1CA0 + 8 +0 + 62 + 0 + 10 +26737.499953 + 20 +22132.127908 + 30 +0.0 + 11 +26749.999953 + 21 +22153.778543 + 31 +0.0 + 0 +LINE + 5 +1CA1 + 8 +0 + 62 + 0 + 10 +26702.611151 + 20 +22115.0 + 30 +0.0 + 11 +26712.499953 + 21 +22132.127908 + 31 +0.0 + 0 +LINE + 5 +1CA2 + 8 +0 + 62 + 0 + 10 +26737.499953 + 20 +22175.429178 + 30 +0.0 + 11 +26748.799172 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CA3 + 8 +0 + 62 + 0 + 10 +26699.999953 + 20 +22153.778543 + 30 +0.0 + 11 +26712.499953 + 21 +22175.429178 + 31 +0.0 + 0 +LINE + 5 +1CA4 + 8 +0 + 62 + 0 + 10 +26662.499953 + 20 +22132.127908 + 30 +0.0 + 11 +26674.999953 + 21 +22153.778543 + 31 +0.0 + 0 +LINE + 5 +1CA5 + 8 +0 + 62 + 0 + 10 +26627.611151 + 20 +22115.0 + 30 +0.0 + 11 +26637.499953 + 21 +22132.127908 + 31 +0.0 + 0 +LINE + 5 +1CA6 + 8 +0 + 62 + 0 + 10 +26662.499953 + 20 +22175.429178 + 30 +0.0 + 11 +26673.799173 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CA7 + 8 +0 + 62 + 0 + 10 +26624.999954 + 20 +22153.778543 + 30 +0.0 + 11 +26637.499954 + 21 +22175.429178 + 31 +0.0 + 0 +LINE + 5 +1CA8 + 8 +0 + 62 + 0 + 10 +26587.499954 + 20 +22132.127908 + 30 +0.0 + 11 +26599.999954 + 21 +22153.778543 + 31 +0.0 + 0 +LINE + 5 +1CA9 + 8 +0 + 62 + 0 + 10 +26552.611151 + 20 +22115.0 + 30 +0.0 + 11 +26562.499954 + 21 +22132.127908 + 31 +0.0 + 0 +LINE + 5 +1CAA + 8 +0 + 62 + 0 + 10 +26587.499954 + 20 +22175.429178 + 30 +0.0 + 11 +26598.799173 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CAB + 8 +0 + 62 + 0 + 10 +26549.999954 + 20 +22153.778543 + 30 +0.0 + 11 +26562.499954 + 21 +22175.429178 + 31 +0.0 + 0 +LINE + 5 +1CAC + 8 +0 + 62 + 0 + 10 +26512.499954 + 20 +22132.127908 + 30 +0.0 + 11 +26524.999954 + 21 +22153.778543 + 31 +0.0 + 0 +LINE + 5 +1CAD + 8 +0 + 62 + 0 + 10 +26477.611152 + 20 +22115.0 + 30 +0.0 + 11 +26487.499954 + 21 +22132.127908 + 31 +0.0 + 0 +LINE + 5 +1CAE + 8 +0 + 62 + 0 + 10 +26512.499954 + 20 +22175.429178 + 30 +0.0 + 11 +26523.799173 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CAF + 8 +0 + 62 + 0 + 10 +26474.999954 + 20 +22153.778543 + 30 +0.0 + 11 +26487.499954 + 21 +22175.429178 + 31 +0.0 + 0 +LINE + 5 +1CB0 + 8 +0 + 62 + 0 + 10 +26437.499954 + 20 +22132.127908 + 30 +0.0 + 11 +26449.999954 + 21 +22153.778543 + 31 +0.0 + 0 +LINE + 5 +1CB1 + 8 +0 + 62 + 0 + 10 +26402.611152 + 20 +22115.0 + 30 +0.0 + 11 +26412.499954 + 21 +22132.127908 + 31 +0.0 + 0 +LINE + 5 +1CB2 + 8 +0 + 62 + 0 + 10 +26437.499954 + 20 +22175.429178 + 30 +0.0 + 11 +26448.799174 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CB3 + 8 +0 + 62 + 0 + 10 +26399.999954 + 20 +22153.778543 + 30 +0.0 + 11 +26412.499954 + 21 +22175.429178 + 31 +0.0 + 0 +LINE + 5 +1CB4 + 8 +0 + 62 + 0 + 10 +26362.499954 + 20 +22132.127908 + 30 +0.0 + 11 +26374.999954 + 21 +22153.778543 + 31 +0.0 + 0 +LINE + 5 +1CB5 + 8 +0 + 62 + 0 + 10 +26327.611152 + 20 +22115.0 + 30 +0.0 + 11 +26337.499954 + 21 +22132.127908 + 31 +0.0 + 0 +LINE + 5 +1CB6 + 8 +0 + 62 + 0 + 10 +26362.499954 + 20 +22175.429178 + 30 +0.0 + 11 +26373.799174 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CB7 + 8 +0 + 62 + 0 + 10 +26324.999955 + 20 +22153.778543 + 30 +0.0 + 11 +26337.499955 + 21 +22175.429178 + 31 +0.0 + 0 +LINE + 5 +1CB8 + 8 +0 + 62 + 0 + 10 +26287.499955 + 20 +22132.127908 + 30 +0.0 + 11 +26299.999955 + 21 +22153.778543 + 31 +0.0 + 0 +LINE + 5 +1CB9 + 8 +0 + 62 + 0 + 10 +26252.611153 + 20 +22115.0 + 30 +0.0 + 11 +26262.499955 + 21 +22132.127907 + 31 +0.0 + 0 +LINE + 5 +1CBA + 8 +0 + 62 + 0 + 10 +26287.499955 + 20 +22175.429178 + 30 +0.0 + 11 +26298.799174 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CBB + 8 +0 + 62 + 0 + 10 +26249.999955 + 20 +22153.778543 + 30 +0.0 + 11 +26262.499955 + 21 +22175.429178 + 31 +0.0 + 0 +LINE + 5 +1CBC + 8 +0 + 62 + 0 + 10 +26212.499955 + 20 +22132.127907 + 30 +0.0 + 11 +26224.999955 + 21 +22153.778542 + 31 +0.0 + 0 +LINE + 5 +1CBD + 8 +0 + 62 + 0 + 10 +26177.611153 + 20 +22115.0 + 30 +0.0 + 11 +26187.499955 + 21 +22132.127907 + 31 +0.0 + 0 +LINE + 5 +1CBE + 8 +0 + 62 + 0 + 10 +26212.499955 + 20 +22175.429178 + 30 +0.0 + 11 +26223.799175 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CBF + 8 +0 + 62 + 0 + 10 +26174.999955 + 20 +22153.778542 + 30 +0.0 + 11 +26187.499955 + 21 +22175.429177 + 31 +0.0 + 0 +LINE + 5 +1CC0 + 8 +0 + 62 + 0 + 10 +26137.499955 + 20 +22132.127907 + 30 +0.0 + 11 +26149.999955 + 21 +22153.778542 + 31 +0.0 + 0 +LINE + 5 +1CC1 + 8 +0 + 62 + 0 + 10 +26102.611153 + 20 +22115.0 + 30 +0.0 + 11 +26112.499955 + 21 +22132.127907 + 31 +0.0 + 0 +LINE + 5 +1CC2 + 8 +0 + 62 + 0 + 10 +26137.499955 + 20 +22175.429177 + 30 +0.0 + 11 +26148.799175 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CC3 + 8 +0 + 62 + 0 + 10 +26099.999955 + 20 +22153.778542 + 30 +0.0 + 11 +26112.499955 + 21 +22175.429177 + 31 +0.0 + 0 +LINE + 5 +1CC4 + 8 +0 + 62 + 0 + 10 +26062.499955 + 20 +22132.127907 + 30 +0.0 + 11 +26074.999955 + 21 +22153.778542 + 31 +0.0 + 0 +LINE + 5 +1CC5 + 8 +0 + 62 + 0 + 10 +26027.611154 + 20 +22115.0 + 30 +0.0 + 11 +26037.499955 + 21 +22132.127907 + 31 +0.0 + 0 +LINE + 5 +1CC6 + 8 +0 + 62 + 0 + 10 +26062.499955 + 20 +22175.429177 + 30 +0.0 + 11 +26073.799175 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CC7 + 8 +0 + 62 + 0 + 10 +26024.999956 + 20 +22153.778542 + 30 +0.0 + 11 +26037.499956 + 21 +22175.429177 + 31 +0.0 + 0 +LINE + 5 +1CC8 + 8 +0 + 62 + 0 + 10 +25987.499956 + 20 +22132.127907 + 30 +0.0 + 11 +25999.999956 + 21 +22153.778542 + 31 +0.0 + 0 +LINE + 5 +1CC9 + 8 +0 + 62 + 0 + 10 +25952.611154 + 20 +22115.0 + 30 +0.0 + 11 +25962.499956 + 21 +22132.127907 + 31 +0.0 + 0 +LINE + 5 +1CCA + 8 +0 + 62 + 0 + 10 +25987.499956 + 20 +22175.429177 + 30 +0.0 + 11 +25998.799176 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CCB + 8 +0 + 62 + 0 + 10 +25949.999956 + 20 +22153.778542 + 30 +0.0 + 11 +25962.499956 + 21 +22175.429177 + 31 +0.0 + 0 +LINE + 5 +1CCC + 8 +0 + 62 + 0 + 10 +25912.499956 + 20 +22132.127907 + 30 +0.0 + 11 +25924.999956 + 21 +22153.778542 + 31 +0.0 + 0 +LINE + 5 +1CCD + 8 +0 + 62 + 0 + 10 +25877.611154 + 20 +22115.0 + 30 +0.0 + 11 +25887.499956 + 21 +22132.127907 + 31 +0.0 + 0 +LINE + 5 +1CCE + 8 +0 + 62 + 0 + 10 +25912.499956 + 20 +22175.429177 + 30 +0.0 + 11 +25923.799176 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CCF + 8 +0 + 62 + 0 + 10 +25874.999956 + 20 +22153.778542 + 30 +0.0 + 11 +25887.499956 + 21 +22175.429177 + 31 +0.0 + 0 +LINE + 5 +1CD0 + 8 +0 + 62 + 0 + 10 +25837.499956 + 20 +22132.127907 + 30 +0.0 + 11 +25849.999956 + 21 +22153.778542 + 31 +0.0 + 0 +LINE + 5 +1CD1 + 8 +0 + 62 + 0 + 10 +25802.611155 + 20 +22115.0 + 30 +0.0 + 11 +25812.499956 + 21 +22132.127907 + 31 +0.0 + 0 +LINE + 5 +1CD2 + 8 +0 + 62 + 0 + 10 +25837.499956 + 20 +22175.429177 + 30 +0.0 + 11 +25848.799176 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CD3 + 8 +0 + 62 + 0 + 10 +25799.999956 + 20 +22153.778542 + 30 +0.0 + 11 +25812.499956 + 21 +22175.429177 + 31 +0.0 + 0 +LINE + 5 +1CD4 + 8 +0 + 62 + 0 + 10 +25762.499956 + 20 +22132.127907 + 30 +0.0 + 11 +25774.999956 + 21 +22153.778542 + 31 +0.0 + 0 +LINE + 5 +1CD5 + 8 +0 + 62 + 0 + 10 +25727.611155 + 20 +22115.0 + 30 +0.0 + 11 +25737.499956 + 21 +22132.127906 + 31 +0.0 + 0 +LINE + 5 +1CD6 + 8 +0 + 62 + 0 + 10 +25762.499956 + 20 +22175.429177 + 30 +0.0 + 11 +25773.799177 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CD7 + 8 +0 + 62 + 0 + 10 +25724.999956 + 20 +22153.778542 + 30 +0.0 + 11 +25737.499956 + 21 +22175.429177 + 31 +0.0 + 0 +LINE + 5 +1CD8 + 8 +0 + 62 + 0 + 10 +25687.499957 + 20 +22132.127906 + 30 +0.0 + 11 +25699.999957 + 21 +22153.778541 + 31 +0.0 + 0 +LINE + 5 +1CD9 + 8 +0 + 62 + 0 + 10 +25652.611155 + 20 +22115.0 + 30 +0.0 + 11 +25662.499957 + 21 +22132.127906 + 31 +0.0 + 0 +LINE + 5 +1CDA + 8 +0 + 62 + 0 + 10 +25687.499957 + 20 +22175.429177 + 30 +0.0 + 11 +25698.799177 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CDB + 8 +0 + 62 + 0 + 10 +25649.999957 + 20 +22153.778541 + 30 +0.0 + 11 +25662.499957 + 21 +22175.429176 + 31 +0.0 + 0 +LINE + 5 +1CDC + 8 +0 + 62 + 0 + 10 +25612.499957 + 20 +22132.127906 + 30 +0.0 + 11 +25624.999957 + 21 +22153.778541 + 31 +0.0 + 0 +LINE + 5 +1CDD + 8 +0 + 62 + 0 + 10 +25577.611156 + 20 +22115.0 + 30 +0.0 + 11 +25587.499957 + 21 +22132.127906 + 31 +0.0 + 0 +LINE + 5 +1CDE + 8 +0 + 62 + 0 + 10 +25612.499957 + 20 +22175.429176 + 30 +0.0 + 11 +25623.799177 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CDF + 8 +0 + 62 + 0 + 10 +25574.999957 + 20 +22153.778541 + 30 +0.0 + 11 +25587.499957 + 21 +22175.429176 + 31 +0.0 + 0 +LINE + 5 +1CE0 + 8 +0 + 62 + 0 + 10 +25537.499957 + 20 +22132.127906 + 30 +0.0 + 11 +25549.999957 + 21 +22153.778541 + 31 +0.0 + 0 +LINE + 5 +1CE1 + 8 +0 + 62 + 0 + 10 +25502.611156 + 20 +22115.0 + 30 +0.0 + 11 +25512.499957 + 21 +22132.127906 + 31 +0.0 + 0 +LINE + 5 +1CE2 + 8 +0 + 62 + 0 + 10 +25537.499957 + 20 +22175.429176 + 30 +0.0 + 11 +25548.799178 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CE3 + 8 +0 + 62 + 0 + 10 +25499.999957 + 20 +22153.778541 + 30 +0.0 + 11 +25512.499957 + 21 +22175.429176 + 31 +0.0 + 0 +LINE + 5 +1CE4 + 8 +0 + 62 + 0 + 10 +25462.499957 + 20 +22132.127906 + 30 +0.0 + 11 +25474.999957 + 21 +22153.778541 + 31 +0.0 + 0 +LINE + 5 +1CE5 + 8 +0 + 62 + 0 + 10 +25427.611156 + 20 +22115.0 + 30 +0.0 + 11 +25437.499957 + 21 +22132.127906 + 31 +0.0 + 0 +LINE + 5 +1CE6 + 8 +0 + 62 + 0 + 10 +25462.499957 + 20 +22175.429176 + 30 +0.0 + 11 +25473.799178 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CE7 + 8 +0 + 62 + 0 + 10 +25424.999957 + 20 +22153.778541 + 30 +0.0 + 11 +25437.499957 + 21 +22175.429176 + 31 +0.0 + 0 +LINE + 5 +1CE8 + 8 +0 + 62 + 0 + 10 +25387.499958 + 20 +22132.127906 + 30 +0.0 + 11 +25399.999958 + 21 +22153.778541 + 31 +0.0 + 0 +LINE + 5 +1CE9 + 8 +0 + 62 + 0 + 10 +25352.611157 + 20 +22115.0 + 30 +0.0 + 11 +25362.499958 + 21 +22132.127906 + 31 +0.0 + 0 +LINE + 5 +1CEA + 8 +0 + 62 + 0 + 10 +25387.499958 + 20 +22175.429176 + 30 +0.0 + 11 +25398.799178 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CEB + 8 +0 + 62 + 0 + 10 +25349.999958 + 20 +22153.778541 + 30 +0.0 + 11 +25362.499958 + 21 +22175.429176 + 31 +0.0 + 0 +LINE + 5 +1CEC + 8 +0 + 62 + 0 + 10 +25312.499958 + 20 +22132.127906 + 30 +0.0 + 11 +25324.999958 + 21 +22153.778541 + 31 +0.0 + 0 +LINE + 5 +1CED + 8 +0 + 62 + 0 + 10 +25277.611157 + 20 +22115.0 + 30 +0.0 + 11 +25287.499958 + 21 +22132.127906 + 31 +0.0 + 0 +LINE + 5 +1CEE + 8 +0 + 62 + 0 + 10 +25312.499958 + 20 +22175.429176 + 30 +0.0 + 11 +25323.799179 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CEF + 8 +0 + 62 + 0 + 10 +25274.999958 + 20 +22153.778541 + 30 +0.0 + 11 +25287.499958 + 21 +22175.429176 + 31 +0.0 + 0 +LINE + 5 +1CF0 + 8 +0 + 62 + 0 + 10 +25238.75 + 20 +22134.293042 + 30 +0.0 + 11 +25249.999958 + 21 +22153.778541 + 31 +0.0 + 0 +LINE + 5 +1CF1 + 8 +0 + 62 + 0 + 10 +25238.75 + 20 +22177.594312 + 30 +0.0 + 11 +25248.799179 + 21 +22195.0 + 31 +0.0 + 0 +LINE + 5 +1CF2 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21486.939067 + 30 +0.0 + 11 +26749.999952 + 21 +21504.259491 + 31 +0.0 + 0 +LINE + 5 +1CF3 + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21547.560762 + 30 +0.0 + 11 +26787.499952 + 21 +21569.211397 + 31 +0.0 + 0 +LINE + 5 +1CF4 + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21612.512667 + 30 +0.0 + 11 +26820.0 + 21 +21625.503131 + 31 +0.0 + 0 +LINE + 5 +1CF5 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21443.637797 + 30 +0.0 + 11 +26749.999952 + 21 +21460.958221 + 31 +0.0 + 0 +LINE + 5 +1CF6 + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21504.259491 + 30 +0.0 + 11 +26787.499952 + 21 +21525.910126 + 31 +0.0 + 0 +LINE + 5 +1CF7 + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21569.211397 + 30 +0.0 + 11 +26820.0 + 21 +21582.201861 + 31 +0.0 + 0 +LINE + 5 +1CF8 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21400.336527 + 30 +0.0 + 11 +26749.999952 + 21 +21417.656951 + 31 +0.0 + 0 +LINE + 5 +1CF9 + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21460.958221 + 30 +0.0 + 11 +26787.499952 + 21 +21482.608856 + 31 +0.0 + 0 +LINE + 5 +1CFA + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21525.910127 + 30 +0.0 + 11 +26820.0 + 21 +21538.900591 + 31 +0.0 + 0 +LINE + 5 +1CFB + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21357.035257 + 30 +0.0 + 11 +26749.999952 + 21 +21374.355681 + 31 +0.0 + 0 +LINE + 5 +1CFC + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21417.656951 + 30 +0.0 + 11 +26787.499952 + 21 +21439.307586 + 31 +0.0 + 0 +LINE + 5 +1CFD + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21482.608856 + 30 +0.0 + 11 +26820.0 + 21 +21495.599321 + 31 +0.0 + 0 +LINE + 5 +1CFE + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21313.733987 + 30 +0.0 + 11 +26749.999952 + 21 +21331.054411 + 31 +0.0 + 0 +LINE + 5 +1CFF + 8 +0 + 62 + 0 + 10 +26774.999952 + 20 +21374.355681 + 30 +0.0 + 11 +26787.499952 + 21 +21396.006316 + 31 +0.0 + 0 +LINE + 5 +1D00 + 8 +0 + 62 + 0 + 10 +26812.499952 + 20 +21439.307586 + 30 +0.0 + 11 +26820.0 + 21 +21452.298051 + 31 +0.0 + 0 +LINE + 5 +1D01 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21270.432717 + 30 +0.0 + 11 +26749.999951 + 21 +21287.753141 + 31 +0.0 + 0 +LINE + 5 +1D02 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21331.054411 + 30 +0.0 + 11 +26787.499951 + 21 +21352.705046 + 31 +0.0 + 0 +LINE + 5 +1D03 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21396.006316 + 30 +0.0 + 11 +26820.0 + 21 +21408.996781 + 31 +0.0 + 0 +LINE + 5 +1D04 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21227.131447 + 30 +0.0 + 11 +26749.999951 + 21 +21244.45187 + 31 +0.0 + 0 +LINE + 5 +1D05 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21287.753141 + 30 +0.0 + 11 +26787.499951 + 21 +21309.403776 + 31 +0.0 + 0 +LINE + 5 +1D06 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21352.705046 + 30 +0.0 + 11 +26820.0 + 21 +21365.695511 + 31 +0.0 + 0 +LINE + 5 +1D07 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21183.830177 + 30 +0.0 + 11 +26749.999951 + 21 +21201.1506 + 31 +0.0 + 0 +LINE + 5 +1D08 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21244.451871 + 30 +0.0 + 11 +26787.499951 + 21 +21266.102506 + 31 +0.0 + 0 +LINE + 5 +1D09 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21309.403776 + 30 +0.0 + 11 +26820.0 + 21 +21322.394241 + 31 +0.0 + 0 +LINE + 5 +1D0A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21140.528907 + 30 +0.0 + 11 +26749.999951 + 21 +21157.84933 + 31 +0.0 + 0 +LINE + 5 +1D0B + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21201.1506 + 30 +0.0 + 11 +26787.499951 + 21 +21222.801235 + 31 +0.0 + 0 +LINE + 5 +1D0C + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21266.102506 + 30 +0.0 + 11 +26820.0 + 21 +21279.092971 + 31 +0.0 + 0 +LINE + 5 +1D0D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21097.227637 + 30 +0.0 + 11 +26749.999951 + 21 +21114.54806 + 31 +0.0 + 0 +LINE + 5 +1D0E + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21157.84933 + 30 +0.0 + 11 +26787.499951 + 21 +21179.499965 + 31 +0.0 + 0 +LINE + 5 +1D0F + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21222.801236 + 30 +0.0 + 11 +26820.0 + 21 +21235.791701 + 31 +0.0 + 0 +LINE + 5 +1D10 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21053.926367 + 30 +0.0 + 11 +26749.999951 + 21 +21071.24679 + 31 +0.0 + 0 +LINE + 5 +1D11 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21114.54806 + 30 +0.0 + 11 +26787.499951 + 21 +21136.198695 + 31 +0.0 + 0 +LINE + 5 +1D12 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21179.499965 + 30 +0.0 + 11 +26820.0 + 21 +21192.490431 + 31 +0.0 + 0 +LINE + 5 +1D13 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +21010.625097 + 30 +0.0 + 11 +26749.999951 + 21 +21027.94552 + 31 +0.0 + 0 +LINE + 5 +1D14 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21071.24679 + 30 +0.0 + 11 +26787.499951 + 21 +21092.897425 + 31 +0.0 + 0 +LINE + 5 +1D15 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21136.198695 + 30 +0.0 + 11 +26820.0 + 21 +21149.189161 + 31 +0.0 + 0 +LINE + 5 +1D16 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20967.323827 + 30 +0.0 + 11 +26749.999951 + 21 +20984.64425 + 31 +0.0 + 0 +LINE + 5 +1D17 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +21027.94552 + 30 +0.0 + 11 +26787.499951 + 21 +21049.596155 + 31 +0.0 + 0 +LINE + 5 +1D18 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21092.897425 + 30 +0.0 + 11 +26820.0 + 21 +21105.887891 + 31 +0.0 + 0 +LINE + 5 +1D19 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20924.022557 + 30 +0.0 + 11 +26749.999951 + 21 +20941.342979 + 31 +0.0 + 0 +LINE + 5 +1D1A + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +20984.64425 + 30 +0.0 + 11 +26787.499951 + 21 +21006.294885 + 31 +0.0 + 0 +LINE + 5 +1D1B + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21049.596155 + 30 +0.0 + 11 +26820.0 + 21 +21062.586621 + 31 +0.0 + 0 +LINE + 5 +1D1C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20880.721287 + 30 +0.0 + 11 +26749.999951 + 21 +20898.041709 + 31 +0.0 + 0 +LINE + 5 +1D1D + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +20941.34298 + 30 +0.0 + 11 +26787.499951 + 21 +20962.993615 + 31 +0.0 + 0 +LINE + 5 +1D1E + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +21006.294885 + 30 +0.0 + 11 +26820.0 + 21 +21019.285351 + 31 +0.0 + 0 +LINE + 5 +1D1F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20837.420017 + 30 +0.0 + 11 +26749.999951 + 21 +20854.740439 + 31 +0.0 + 0 +LINE + 5 +1D20 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +20898.041709 + 30 +0.0 + 11 +26787.499951 + 21 +20919.692344 + 31 +0.0 + 0 +LINE + 5 +1D21 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +20962.993615 + 30 +0.0 + 11 +26820.0 + 21 +20975.984081 + 31 +0.0 + 0 +LINE + 5 +1D22 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20794.118747 + 30 +0.0 + 11 +26749.999951 + 21 +20811.439169 + 31 +0.0 + 0 +LINE + 5 +1D23 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +20854.740439 + 30 +0.0 + 11 +26787.499951 + 21 +20876.391074 + 31 +0.0 + 0 +LINE + 5 +1D24 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +20919.692345 + 30 +0.0 + 11 +26820.0 + 21 +20932.682811 + 31 +0.0 + 0 +LINE + 5 +1D25 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20750.817477 + 30 +0.0 + 11 +26749.999951 + 21 +20768.137899 + 31 +0.0 + 0 +LINE + 5 +1D26 + 8 +0 + 62 + 0 + 10 +26774.999951 + 20 +20811.439169 + 30 +0.0 + 11 +26787.499951 + 21 +20833.089804 + 31 +0.0 + 0 +LINE + 5 +1D27 + 8 +0 + 62 + 0 + 10 +26812.499951 + 20 +20876.391074 + 30 +0.0 + 11 +26820.0 + 21 +20889.381541 + 31 +0.0 + 0 +LINE + 5 +1D28 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20707.516207 + 30 +0.0 + 11 +26749.99995 + 21 +20724.836629 + 31 +0.0 + 0 +LINE + 5 +1D29 + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20768.137899 + 30 +0.0 + 11 +26787.49995 + 21 +20789.788534 + 31 +0.0 + 0 +LINE + 5 +1D2A + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20833.089804 + 30 +0.0 + 11 +26820.0 + 21 +20846.080271 + 31 +0.0 + 0 +LINE + 5 +1D2B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20664.214937 + 30 +0.0 + 11 +26749.99995 + 21 +20681.535359 + 31 +0.0 + 0 +LINE + 5 +1D2C + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20724.836629 + 30 +0.0 + 11 +26787.49995 + 21 +20746.487264 + 31 +0.0 + 0 +LINE + 5 +1D2D + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20789.788534 + 30 +0.0 + 11 +26820.0 + 21 +20802.779001 + 31 +0.0 + 0 +LINE + 5 +1D2E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20620.913667 + 30 +0.0 + 11 +26749.99995 + 21 +20638.234088 + 31 +0.0 + 0 +LINE + 5 +1D2F + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20681.535359 + 30 +0.0 + 11 +26787.49995 + 21 +20703.185994 + 31 +0.0 + 0 +LINE + 5 +1D30 + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20746.487264 + 30 +0.0 + 11 +26820.0 + 21 +20759.477731 + 31 +0.0 + 0 +LINE + 5 +1D31 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20577.612397 + 30 +0.0 + 11 +26749.99995 + 21 +20594.932818 + 31 +0.0 + 0 +LINE + 5 +1D32 + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20638.234089 + 30 +0.0 + 11 +26787.49995 + 21 +20659.884724 + 31 +0.0 + 0 +LINE + 5 +1D33 + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20703.185994 + 30 +0.0 + 11 +26820.0 + 21 +20716.176461 + 31 +0.0 + 0 +LINE + 5 +1D34 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20534.311127 + 30 +0.0 + 11 +26749.99995 + 21 +20551.631548 + 31 +0.0 + 0 +LINE + 5 +1D35 + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20594.932818 + 30 +0.0 + 11 +26787.49995 + 21 +20616.583453 + 31 +0.0 + 0 +LINE + 5 +1D36 + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20659.884724 + 30 +0.0 + 11 +26820.0 + 21 +20672.875191 + 31 +0.0 + 0 +LINE + 5 +1D37 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20491.009857 + 30 +0.0 + 11 +26749.99995 + 21 +20508.330278 + 31 +0.0 + 0 +LINE + 5 +1D38 + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20551.631548 + 30 +0.0 + 11 +26787.49995 + 21 +20573.282183 + 31 +0.0 + 0 +LINE + 5 +1D39 + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20616.583454 + 30 +0.0 + 11 +26820.0 + 21 +20629.573921 + 31 +0.0 + 0 +LINE + 5 +1D3A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20447.708587 + 30 +0.0 + 11 +26749.99995 + 21 +20465.029008 + 31 +0.0 + 0 +LINE + 5 +1D3B + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20508.330278 + 30 +0.0 + 11 +26787.49995 + 21 +20529.980913 + 31 +0.0 + 0 +LINE + 5 +1D3C + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20573.282183 + 30 +0.0 + 11 +26820.0 + 21 +20586.272651 + 31 +0.0 + 0 +LINE + 5 +1D3D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20404.407317 + 30 +0.0 + 11 +26749.99995 + 21 +20421.727738 + 31 +0.0 + 0 +LINE + 5 +1D3E + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20465.029008 + 30 +0.0 + 11 +26787.49995 + 21 +20486.679643 + 31 +0.0 + 0 +LINE + 5 +1D3F + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20529.980913 + 30 +0.0 + 11 +26820.0 + 21 +20542.971381 + 31 +0.0 + 0 +LINE + 5 +1D40 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20361.106047 + 30 +0.0 + 11 +26749.99995 + 21 +20378.426468 + 31 +0.0 + 0 +LINE + 5 +1D41 + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20421.727738 + 30 +0.0 + 11 +26787.49995 + 21 +20443.378373 + 31 +0.0 + 0 +LINE + 5 +1D42 + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20486.679643 + 30 +0.0 + 11 +26820.0 + 21 +20499.670111 + 31 +0.0 + 0 +LINE + 5 +1D43 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20317.804777 + 30 +0.0 + 11 +26749.99995 + 21 +20335.125197 + 31 +0.0 + 0 +LINE + 5 +1D44 + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20378.426468 + 30 +0.0 + 11 +26787.49995 + 21 +20400.077103 + 31 +0.0 + 0 +LINE + 5 +1D45 + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20443.378373 + 30 +0.0 + 11 +26820.0 + 21 +20456.368841 + 31 +0.0 + 0 +LINE + 5 +1D46 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20274.503507 + 30 +0.0 + 11 +26749.99995 + 21 +20291.823927 + 31 +0.0 + 0 +LINE + 5 +1D47 + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20335.125198 + 30 +0.0 + 11 +26787.49995 + 21 +20356.775833 + 31 +0.0 + 0 +LINE + 5 +1D48 + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20400.077103 + 30 +0.0 + 11 +26820.0 + 21 +20413.067571 + 31 +0.0 + 0 +LINE + 5 +1D49 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20231.202237 + 30 +0.0 + 11 +26749.99995 + 21 +20248.522657 + 31 +0.0 + 0 +LINE + 5 +1D4A + 8 +0 + 62 + 0 + 10 +26774.99995 + 20 +20291.823927 + 30 +0.0 + 11 +26787.49995 + 21 +20313.474562 + 31 +0.0 + 0 +LINE + 5 +1D4B + 8 +0 + 62 + 0 + 10 +26812.49995 + 20 +20356.775833 + 30 +0.0 + 11 +26820.0 + 21 +20369.766301 + 31 +0.0 + 0 +LINE + 5 +1D4C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20187.900967 + 30 +0.0 + 11 +26749.999949 + 21 +20205.221387 + 31 +0.0 + 0 +LINE + 5 +1D4D + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +20248.522657 + 30 +0.0 + 11 +26787.499949 + 21 +20270.173292 + 31 +0.0 + 0 +LINE + 5 +1D4E + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20313.474563 + 30 +0.0 + 11 +26820.0 + 21 +20326.465031 + 31 +0.0 + 0 +LINE + 5 +1D4F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20144.599697 + 30 +0.0 + 11 +26749.999949 + 21 +20161.920117 + 31 +0.0 + 0 +LINE + 5 +1D50 + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +20205.221387 + 30 +0.0 + 11 +26787.499949 + 21 +20226.872022 + 31 +0.0 + 0 +LINE + 5 +1D51 + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20270.173292 + 30 +0.0 + 11 +26820.0 + 21 +20283.163761 + 31 +0.0 + 0 +LINE + 5 +1D52 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20101.298427 + 30 +0.0 + 11 +26749.999949 + 21 +20118.618847 + 31 +0.0 + 0 +LINE + 5 +1D53 + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +20161.920117 + 30 +0.0 + 11 +26787.499949 + 21 +20183.570752 + 31 +0.0 + 0 +LINE + 5 +1D54 + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20226.872022 + 30 +0.0 + 11 +26820.0 + 21 +20239.862491 + 31 +0.0 + 0 +LINE + 5 +1D55 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20057.997157 + 30 +0.0 + 11 +26749.999949 + 21 +20075.317577 + 31 +0.0 + 0 +LINE + 5 +1D56 + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +20118.618847 + 30 +0.0 + 11 +26787.499949 + 21 +20140.269482 + 31 +0.0 + 0 +LINE + 5 +1D57 + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20183.570752 + 30 +0.0 + 11 +26820.0 + 21 +20196.561221 + 31 +0.0 + 0 +LINE + 5 +1D58 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +20014.695887 + 30 +0.0 + 11 +26749.999949 + 21 +20032.016306 + 31 +0.0 + 0 +LINE + 5 +1D59 + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +20075.317577 + 30 +0.0 + 11 +26787.499949 + 21 +20096.968212 + 31 +0.0 + 0 +LINE + 5 +1D5A + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20140.269482 + 30 +0.0 + 11 +26820.0 + 21 +20153.259951 + 31 +0.0 + 0 +LINE + 5 +1D5B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19971.394617 + 30 +0.0 + 11 +26749.999949 + 21 +19988.715036 + 31 +0.0 + 0 +LINE + 5 +1D5C + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +20032.016307 + 30 +0.0 + 11 +26787.499949 + 21 +20053.666942 + 31 +0.0 + 0 +LINE + 5 +1D5D + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20096.968212 + 30 +0.0 + 11 +26820.0 + 21 +20109.958681 + 31 +0.0 + 0 +LINE + 5 +1D5E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19928.093347 + 30 +0.0 + 11 +26749.999949 + 21 +19945.413766 + 31 +0.0 + 0 +LINE + 5 +1D5F + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +19988.715036 + 30 +0.0 + 11 +26787.499949 + 21 +20010.365671 + 31 +0.0 + 0 +LINE + 5 +1D60 + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20053.666942 + 30 +0.0 + 11 +26820.0 + 21 +20066.657411 + 31 +0.0 + 0 +LINE + 5 +1D61 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19884.792077 + 30 +0.0 + 11 +26749.999949 + 21 +19902.112496 + 31 +0.0 + 0 +LINE + 5 +1D62 + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +19945.413766 + 30 +0.0 + 11 +26787.499949 + 21 +19967.064401 + 31 +0.0 + 0 +LINE + 5 +1D63 + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +20010.365672 + 30 +0.0 + 11 +26820.0 + 21 +20023.356141 + 31 +0.0 + 0 +LINE + 5 +1D64 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19841.490807 + 30 +0.0 + 11 +26749.999949 + 21 +19858.811226 + 31 +0.0 + 0 +LINE + 5 +1D65 + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +19902.112496 + 30 +0.0 + 11 +26787.499949 + 21 +19923.763131 + 31 +0.0 + 0 +LINE + 5 +1D66 + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +19967.064401 + 30 +0.0 + 11 +26820.0 + 21 +19980.054871 + 31 +0.0 + 0 +LINE + 5 +1D67 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19798.189537 + 30 +0.0 + 11 +26749.999949 + 21 +19815.509956 + 31 +0.0 + 0 +LINE + 5 +1D68 + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +19858.811226 + 30 +0.0 + 11 +26787.499949 + 21 +19880.461861 + 31 +0.0 + 0 +LINE + 5 +1D69 + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +19923.763131 + 30 +0.0 + 11 +26820.0 + 21 +19936.753601 + 31 +0.0 + 0 +LINE + 5 +1D6A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19754.888267 + 30 +0.0 + 11 +26749.999949 + 21 +19772.208686 + 31 +0.0 + 0 +LINE + 5 +1D6B + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +19815.509956 + 30 +0.0 + 11 +26787.499949 + 21 +19837.160591 + 31 +0.0 + 0 +LINE + 5 +1D6C + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +19880.461861 + 30 +0.0 + 11 +26820.0 + 21 +19893.452331 + 31 +0.0 + 0 +LINE + 5 +1D6D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19711.586997 + 30 +0.0 + 11 +26749.999949 + 21 +19728.907415 + 31 +0.0 + 0 +LINE + 5 +1D6E + 8 +0 + 62 + 0 + 10 +26774.999949 + 20 +19772.208686 + 30 +0.0 + 11 +26787.499949 + 21 +19793.859321 + 31 +0.0 + 0 +LINE + 5 +1D6F + 8 +0 + 62 + 0 + 10 +26812.499949 + 20 +19837.160591 + 30 +0.0 + 11 +26820.0 + 21 +19850.151061 + 31 +0.0 + 0 +LINE + 5 +1D70 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19668.285727 + 30 +0.0 + 11 +26749.999948 + 21 +19685.606145 + 31 +0.0 + 0 +LINE + 5 +1D71 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19728.907416 + 30 +0.0 + 11 +26787.499948 + 21 +19750.558051 + 31 +0.0 + 0 +LINE + 5 +1D72 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19793.859321 + 30 +0.0 + 11 +26820.0 + 21 +19806.849791 + 31 +0.0 + 0 +LINE + 5 +1D73 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19624.984457 + 30 +0.0 + 11 +26749.999948 + 21 +19642.304875 + 31 +0.0 + 0 +LINE + 5 +1D74 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19685.606145 + 30 +0.0 + 11 +26787.499948 + 21 +19707.25678 + 31 +0.0 + 0 +LINE + 5 +1D75 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19750.558051 + 30 +0.0 + 11 +26820.0 + 21 +19763.548521 + 31 +0.0 + 0 +LINE + 5 +1D76 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19581.683187 + 30 +0.0 + 11 +26749.999948 + 21 +19599.003605 + 31 +0.0 + 0 +LINE + 5 +1D77 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19642.304875 + 30 +0.0 + 11 +26787.499948 + 21 +19663.95551 + 31 +0.0 + 0 +LINE + 5 +1D78 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19707.256781 + 30 +0.0 + 11 +26820.0 + 21 +19720.247251 + 31 +0.0 + 0 +LINE + 5 +1D79 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19538.381917 + 30 +0.0 + 11 +26749.999948 + 21 +19555.702335 + 31 +0.0 + 0 +LINE + 5 +1D7A + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19599.003605 + 30 +0.0 + 11 +26787.499948 + 21 +19620.65424 + 31 +0.0 + 0 +LINE + 5 +1D7B + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19663.95551 + 30 +0.0 + 11 +26820.0 + 21 +19676.945981 + 31 +0.0 + 0 +LINE + 5 +1D7C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19495.080647 + 30 +0.0 + 11 +26749.999948 + 21 +19512.401065 + 31 +0.0 + 0 +LINE + 5 +1D7D + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19555.702335 + 30 +0.0 + 11 +26787.499948 + 21 +19577.35297 + 31 +0.0 + 0 +LINE + 5 +1D7E + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19620.65424 + 30 +0.0 + 11 +26820.0 + 21 +19633.644711 + 31 +0.0 + 0 +LINE + 5 +1D7F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19451.779377 + 30 +0.0 + 11 +26749.999948 + 21 +19469.099795 + 31 +0.0 + 0 +LINE + 5 +1D80 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19512.401065 + 30 +0.0 + 11 +26787.499948 + 21 +19534.0517 + 31 +0.0 + 0 +LINE + 5 +1D81 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19577.35297 + 30 +0.0 + 11 +26820.0 + 21 +19590.343441 + 31 +0.0 + 0 +LINE + 5 +1D82 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19408.478107 + 30 +0.0 + 11 +26749.999948 + 21 +19425.798525 + 31 +0.0 + 0 +LINE + 5 +1D83 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19469.099795 + 30 +0.0 + 11 +26787.499948 + 21 +19490.75043 + 31 +0.0 + 0 +LINE + 5 +1D84 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19534.0517 + 30 +0.0 + 11 +26820.0 + 21 +19547.042171 + 31 +0.0 + 0 +LINE + 5 +1D85 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19365.176837 + 30 +0.0 + 11 +26749.999948 + 21 +19382.497254 + 31 +0.0 + 0 +LINE + 5 +1D86 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19425.798525 + 30 +0.0 + 11 +26787.499948 + 21 +19447.44916 + 31 +0.0 + 0 +LINE + 5 +1D87 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19490.75043 + 30 +0.0 + 11 +26820.0 + 21 +19503.740901 + 31 +0.0 + 0 +LINE + 5 +1D88 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19321.875567 + 30 +0.0 + 11 +26749.999948 + 21 +19339.195984 + 31 +0.0 + 0 +LINE + 5 +1D89 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19382.497254 + 30 +0.0 + 11 +26787.499948 + 21 +19404.14789 + 31 +0.0 + 0 +LINE + 5 +1D8A + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19447.44916 + 30 +0.0 + 11 +26820.0 + 21 +19460.439631 + 31 +0.0 + 0 +LINE + 5 +1D8B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19278.574297 + 30 +0.0 + 11 +26749.999948 + 21 +19295.894714 + 31 +0.0 + 0 +LINE + 5 +1D8C + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19339.195984 + 30 +0.0 + 11 +26787.499948 + 21 +19360.846619 + 31 +0.0 + 0 +LINE + 5 +1D8D + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19404.14789 + 30 +0.0 + 11 +26820.0 + 21 +19417.138361 + 31 +0.0 + 0 +LINE + 5 +1D8E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19235.273027 + 30 +0.0 + 11 +26749.999948 + 21 +19252.593444 + 31 +0.0 + 0 +LINE + 5 +1D8F + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19295.894714 + 30 +0.0 + 11 +26787.499948 + 21 +19317.545349 + 31 +0.0 + 0 +LINE + 5 +1D90 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19360.846619 + 30 +0.0 + 11 +26820.0 + 21 +19373.837091 + 31 +0.0 + 0 +LINE + 5 +1D91 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19191.971757 + 30 +0.0 + 11 +26749.999948 + 21 +19209.292174 + 31 +0.0 + 0 +LINE + 5 +1D92 + 8 +0 + 62 + 0 + 10 +26774.999948 + 20 +19252.593444 + 30 +0.0 + 11 +26787.499948 + 21 +19274.244079 + 31 +0.0 + 0 +LINE + 5 +1D93 + 8 +0 + 62 + 0 + 10 +26812.499948 + 20 +19317.545349 + 30 +0.0 + 11 +26820.0 + 21 +19330.535821 + 31 +0.0 + 0 +LINE + 5 +1D94 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19148.670487 + 30 +0.0 + 11 +26749.999947 + 21 +19165.990904 + 31 +0.0 + 0 +LINE + 5 +1D95 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +19209.292174 + 30 +0.0 + 11 +26787.499947 + 21 +19230.942809 + 31 +0.0 + 0 +LINE + 5 +1D96 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +19274.244079 + 30 +0.0 + 11 +26820.0 + 21 +19287.234551 + 31 +0.0 + 0 +LINE + 5 +1D97 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19105.369217 + 30 +0.0 + 11 +26749.999947 + 21 +19122.689634 + 31 +0.0 + 0 +LINE + 5 +1D98 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +19165.990904 + 30 +0.0 + 11 +26787.499947 + 21 +19187.641539 + 31 +0.0 + 0 +LINE + 5 +1D99 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +19230.942809 + 30 +0.0 + 11 +26820.0 + 21 +19243.933281 + 31 +0.0 + 0 +LINE + 5 +1D9A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19062.067947 + 30 +0.0 + 11 +26749.999947 + 21 +19079.388363 + 31 +0.0 + 0 +LINE + 5 +1D9B + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +19122.689634 + 30 +0.0 + 11 +26787.499947 + 21 +19144.340269 + 31 +0.0 + 0 +LINE + 5 +1D9C + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +19187.641539 + 30 +0.0 + 11 +26820.0 + 21 +19200.632011 + 31 +0.0 + 0 +LINE + 5 +1D9D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +19018.766677 + 30 +0.0 + 11 +26749.999947 + 21 +19036.087093 + 31 +0.0 + 0 +LINE + 5 +1D9E + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +19079.388363 + 30 +0.0 + 11 +26787.499947 + 21 +19101.038999 + 31 +0.0 + 0 +LINE + 5 +1D9F + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +19144.340269 + 30 +0.0 + 11 +26820.0 + 21 +19157.330741 + 31 +0.0 + 0 +LINE + 5 +1DA0 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18975.465407 + 30 +0.0 + 11 +26749.999947 + 21 +18992.785823 + 31 +0.0 + 0 +LINE + 5 +1DA1 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +19036.087093 + 30 +0.0 + 11 +26787.499947 + 21 +19057.737728 + 31 +0.0 + 0 +LINE + 5 +1DA2 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +19101.038999 + 30 +0.0 + 11 +26820.0 + 21 +19114.029471 + 31 +0.0 + 0 +LINE + 5 +1DA3 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18932.164137 + 30 +0.0 + 11 +26749.999947 + 21 +18949.484553 + 31 +0.0 + 0 +LINE + 5 +1DA4 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +18992.785823 + 30 +0.0 + 11 +26787.499947 + 21 +19014.436458 + 31 +0.0 + 0 +LINE + 5 +1DA5 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +19057.737728 + 30 +0.0 + 11 +26820.0 + 21 +19070.728201 + 31 +0.0 + 0 +LINE + 5 +1DA6 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18888.862867 + 30 +0.0 + 11 +26749.999947 + 21 +18906.183283 + 31 +0.0 + 0 +LINE + 5 +1DA7 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +18949.484553 + 30 +0.0 + 11 +26787.499947 + 21 +18971.135188 + 31 +0.0 + 0 +LINE + 5 +1DA8 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +19014.436458 + 30 +0.0 + 11 +26820.0 + 21 +19027.426931 + 31 +0.0 + 0 +LINE + 5 +1DA9 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18845.561597 + 30 +0.0 + 11 +26749.999947 + 21 +18862.882013 + 31 +0.0 + 0 +LINE + 5 +1DAA + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +18906.183283 + 30 +0.0 + 11 +26787.499947 + 21 +18927.833918 + 31 +0.0 + 0 +LINE + 5 +1DAB + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +18971.135188 + 30 +0.0 + 11 +26820.0 + 21 +18984.125661 + 31 +0.0 + 0 +LINE + 5 +1DAC + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18802.260327 + 30 +0.0 + 11 +26749.999947 + 21 +18819.580743 + 31 +0.0 + 0 +LINE + 5 +1DAD + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +18862.882013 + 30 +0.0 + 11 +26787.499947 + 21 +18884.532648 + 31 +0.0 + 0 +LINE + 5 +1DAE + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +18927.833918 + 30 +0.0 + 11 +26820.0 + 21 +18940.824391 + 31 +0.0 + 0 +LINE + 5 +1DAF + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18758.959057 + 30 +0.0 + 11 +26749.999947 + 21 +18776.279472 + 31 +0.0 + 0 +LINE + 5 +1DB0 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +18819.580743 + 30 +0.0 + 11 +26787.499947 + 21 +18841.231378 + 31 +0.0 + 0 +LINE + 5 +1DB1 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +18884.532648 + 30 +0.0 + 11 +26820.0 + 21 +18897.523121 + 31 +0.0 + 0 +LINE + 5 +1DB2 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18715.657787 + 30 +0.0 + 11 +26749.999947 + 21 +18732.978202 + 31 +0.0 + 0 +LINE + 5 +1DB3 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +18776.279472 + 30 +0.0 + 11 +26787.499947 + 21 +18797.930108 + 31 +0.0 + 0 +LINE + 5 +1DB4 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +18841.231378 + 30 +0.0 + 11 +26820.0 + 21 +18854.221851 + 31 +0.0 + 0 +LINE + 5 +1DB5 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18672.356517 + 30 +0.0 + 11 +26749.999947 + 21 +18689.676932 + 31 +0.0 + 0 +LINE + 5 +1DB6 + 8 +0 + 62 + 0 + 10 +26774.999947 + 20 +18732.978202 + 30 +0.0 + 11 +26787.499947 + 21 +18754.628837 + 31 +0.0 + 0 +LINE + 5 +1DB7 + 8 +0 + 62 + 0 + 10 +26812.499947 + 20 +18797.930108 + 30 +0.0 + 11 +26820.0 + 21 +18810.920581 + 31 +0.0 + 0 +LINE + 5 +1DB8 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18629.055247 + 30 +0.0 + 11 +26749.999946 + 21 +18646.375662 + 31 +0.0 + 0 +LINE + 5 +1DB9 + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18689.676932 + 30 +0.0 + 11 +26787.499946 + 21 +18711.327567 + 31 +0.0 + 0 +LINE + 5 +1DBA + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18754.628837 + 30 +0.0 + 11 +26820.0 + 21 +18767.619311 + 31 +0.0 + 0 +LINE + 5 +1DBB + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18585.753977 + 30 +0.0 + 11 +26749.999946 + 21 +18603.074392 + 31 +0.0 + 0 +LINE + 5 +1DBC + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18646.375662 + 30 +0.0 + 11 +26787.499946 + 21 +18668.026297 + 31 +0.0 + 0 +LINE + 5 +1DBD + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18711.327567 + 30 +0.0 + 11 +26820.0 + 21 +18724.318041 + 31 +0.0 + 0 +LINE + 5 +1DBE + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18542.452707 + 30 +0.0 + 11 +26749.999946 + 21 +18559.773122 + 31 +0.0 + 0 +LINE + 5 +1DBF + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18603.074392 + 30 +0.0 + 11 +26787.499946 + 21 +18624.725027 + 31 +0.0 + 0 +LINE + 5 +1DC0 + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18668.026297 + 30 +0.0 + 11 +26820.0 + 21 +18681.016771 + 31 +0.0 + 0 +LINE + 5 +1DC1 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18499.151437 + 30 +0.0 + 11 +26749.999946 + 21 +18516.471852 + 31 +0.0 + 0 +LINE + 5 +1DC2 + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18559.773122 + 30 +0.0 + 11 +26787.499946 + 21 +18581.423757 + 31 +0.0 + 0 +LINE + 5 +1DC3 + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18624.725027 + 30 +0.0 + 11 +26820.0 + 21 +18637.715501 + 31 +0.0 + 0 +LINE + 5 +1DC4 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18455.850167 + 30 +0.0 + 11 +26749.999946 + 21 +18473.170581 + 31 +0.0 + 0 +LINE + 5 +1DC5 + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18516.471852 + 30 +0.0 + 11 +26787.499946 + 21 +18538.122487 + 31 +0.0 + 0 +LINE + 5 +1DC6 + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18581.423757 + 30 +0.0 + 11 +26820.0 + 21 +18594.414231 + 31 +0.0 + 0 +LINE + 5 +1DC7 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18412.548897 + 30 +0.0 + 11 +26749.999946 + 21 +18429.869311 + 31 +0.0 + 0 +LINE + 5 +1DC8 + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18473.170581 + 30 +0.0 + 11 +26787.499946 + 21 +18494.821217 + 31 +0.0 + 0 +LINE + 5 +1DC9 + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18538.122487 + 30 +0.0 + 11 +26820.0 + 21 +18551.112961 + 31 +0.0 + 0 +LINE + 5 +1DCA + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +18369.247627 + 30 +0.0 + 11 +26749.999946 + 21 +18386.568041 + 31 +0.0 + 0 +LINE + 5 +1DCB + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18429.869311 + 30 +0.0 + 11 +26787.499946 + 21 +18451.519946 + 31 +0.0 + 0 +LINE + 5 +1DCC + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18494.821217 + 30 +0.0 + 11 +26820.0 + 21 +18507.811691 + 31 +0.0 + 0 +LINE + 5 +1DCD + 8 +0 + 62 + 0 + 10 +26774.999946 + 20 +18386.568041 + 30 +0.0 + 11 +26787.499946 + 21 +18408.218676 + 31 +0.0 + 0 +LINE + 5 +1DCE + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18451.519946 + 30 +0.0 + 11 +26820.0 + 21 +18464.510421 + 31 +0.0 + 0 +LINE + 5 +1DCF + 8 +0 + 62 + 0 + 10 +26786.825944 + 20 +18363.75 + 30 +0.0 + 11 +26787.499946 + 21 +18364.917406 + 31 +0.0 + 0 +LINE + 5 +1DD0 + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18408.218676 + 30 +0.0 + 11 +26820.0 + 21 +18421.209151 + 31 +0.0 + 0 +LINE + 5 +1DD1 + 8 +0 + 62 + 0 + 10 +26812.499946 + 20 +18364.917406 + 30 +0.0 + 11 +26820.0 + 21 +18377.907881 + 31 +0.0 + 0 +ENDBLK + 5 +1DD2 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X50 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X50 + 1 + + 0 +LINE + 5 +1DD4 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14857.514465 + 30 +0.0 + 11 +26812.5 + 21 +14857.514465 + 31 +0.0 + 0 +LINE + 5 +1DD5 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14879.1651 + 30 +0.0 + 11 +26775.0 + 21 +14879.1651 + 31 +0.0 + 0 +LINE + 5 +1DD6 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14900.815735 + 30 +0.0 + 11 +26812.5 + 21 +14900.815735 + 31 +0.0 + 0 +LINE + 5 +1DD7 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14922.46637 + 30 +0.0 + 11 +26775.0 + 21 +14922.46637 + 31 +0.0 + 0 +LINE + 5 +1DD8 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14944.117005 + 30 +0.0 + 11 +26812.5 + 21 +14944.117005 + 31 +0.0 + 0 +LINE + 5 +1DD9 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14965.76764 + 30 +0.0 + 11 +26775.0 + 21 +14965.76764 + 31 +0.0 + 0 +LINE + 5 +1DDA + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14987.418275 + 30 +0.0 + 11 +26812.5 + 21 +14987.418275 + 31 +0.0 + 0 +LINE + 5 +1DDB + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15009.06891 + 30 +0.0 + 11 +26775.0 + 21 +15009.06891 + 31 +0.0 + 0 +LINE + 5 +1DDC + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15030.719545 + 30 +0.0 + 11 +26812.5 + 21 +15030.719545 + 31 +0.0 + 0 +LINE + 5 +1DDD + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15052.37018 + 30 +0.0 + 11 +26775.0 + 21 +15052.37018 + 31 +0.0 + 0 +LINE + 5 +1DDE + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15074.020815 + 30 +0.0 + 11 +26812.5 + 21 +15074.020815 + 31 +0.0 + 0 +LINE + 5 +1DDF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15095.67145 + 30 +0.0 + 11 +26775.0 + 21 +15095.67145 + 31 +0.0 + 0 +LINE + 5 +1DE0 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15117.322085 + 30 +0.0 + 11 +26812.5 + 21 +15117.322085 + 31 +0.0 + 0 +LINE + 5 +1DE1 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15138.97272 + 30 +0.0 + 11 +26775.0 + 21 +15138.97272 + 31 +0.0 + 0 +LINE + 5 +1DE2 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15160.623355 + 30 +0.0 + 11 +26812.5 + 21 +15160.623355 + 31 +0.0 + 0 +LINE + 5 +1DE3 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15182.27399 + 30 +0.0 + 11 +26775.0 + 21 +15182.27399 + 31 +0.0 + 0 +LINE + 5 +1DE4 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15203.924625 + 30 +0.0 + 11 +26812.5 + 21 +15203.924625 + 31 +0.0 + 0 +LINE + 5 +1DE5 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15225.57526 + 30 +0.0 + 11 +26775.0 + 21 +15225.57526 + 31 +0.0 + 0 +LINE + 5 +1DE6 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15247.225895 + 30 +0.0 + 11 +26812.5 + 21 +15247.225895 + 31 +0.0 + 0 +LINE + 5 +1DE7 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15268.87653 + 30 +0.0 + 11 +26775.0 + 21 +15268.87653 + 31 +0.0 + 0 +LINE + 5 +1DE8 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15290.527165 + 30 +0.0 + 11 +26812.5 + 21 +15290.527165 + 31 +0.0 + 0 +LINE + 5 +1DE9 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15312.1778 + 30 +0.0 + 11 +26775.0 + 21 +15312.1778 + 31 +0.0 + 0 +LINE + 5 +1DEA + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15333.828435 + 30 +0.0 + 11 +26812.5 + 21 +15333.828435 + 31 +0.0 + 0 +LINE + 5 +1DEB + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15355.47907 + 30 +0.0 + 11 +26775.0 + 21 +15355.47907 + 31 +0.0 + 0 +LINE + 5 +1DEC + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15377.129705 + 30 +0.0 + 11 +26812.5 + 21 +15377.129705 + 31 +0.0 + 0 +LINE + 5 +1DED + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15398.78034 + 30 +0.0 + 11 +26775.0 + 21 +15398.78034 + 31 +0.0 + 0 +LINE + 5 +1DEE + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15420.430975 + 30 +0.0 + 11 +26812.5 + 21 +15420.430975 + 31 +0.0 + 0 +LINE + 5 +1DEF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15442.08161 + 30 +0.0 + 11 +26775.0 + 21 +15442.08161 + 31 +0.0 + 0 +LINE + 5 +1DF0 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15463.732245 + 30 +0.0 + 11 +26812.5 + 21 +15463.732245 + 31 +0.0 + 0 +LINE + 5 +1DF1 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15485.38288 + 30 +0.0 + 11 +26775.0 + 21 +15485.38288 + 31 +0.0 + 0 +LINE + 5 +1DF2 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15507.033515 + 30 +0.0 + 11 +26812.5 + 21 +15507.033515 + 31 +0.0 + 0 +LINE + 5 +1DF3 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15528.68415 + 30 +0.0 + 11 +26775.0 + 21 +15528.68415 + 31 +0.0 + 0 +LINE + 5 +1DF4 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15550.334785 + 30 +0.0 + 11 +26812.5 + 21 +15550.334785 + 31 +0.0 + 0 +LINE + 5 +1DF5 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15571.98542 + 30 +0.0 + 11 +26775.0 + 21 +15571.98542 + 31 +0.0 + 0 +LINE + 5 +1DF6 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15593.636055 + 30 +0.0 + 11 +26812.5 + 21 +15593.636055 + 31 +0.0 + 0 +LINE + 5 +1DF7 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15615.28669 + 30 +0.0 + 11 +26775.0 + 21 +15615.28669 + 31 +0.0 + 0 +LINE + 5 +1DF8 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15636.937325 + 30 +0.0 + 11 +26812.5 + 21 +15636.937325 + 31 +0.0 + 0 +LINE + 5 +1DF9 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15658.58796 + 30 +0.0 + 11 +26775.0 + 21 +15658.58796 + 31 +0.0 + 0 +LINE + 5 +1DFA + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15680.238595 + 30 +0.0 + 11 +26812.5 + 21 +15680.238595 + 31 +0.0 + 0 +LINE + 5 +1DFB + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15701.88923 + 30 +0.0 + 11 +26775.0 + 21 +15701.88923 + 31 +0.0 + 0 +LINE + 5 +1DFC + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15723.539865 + 30 +0.0 + 11 +26812.5 + 21 +15723.539865 + 31 +0.0 + 0 +LINE + 5 +1DFD + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15745.1905 + 30 +0.0 + 11 +26775.0 + 21 +15745.1905 + 31 +0.0 + 0 +LINE + 5 +1DFE + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15766.841135 + 30 +0.0 + 11 +26812.5 + 21 +15766.841135 + 31 +0.0 + 0 +LINE + 5 +1DFF + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15788.49177 + 30 +0.0 + 11 +26775.0 + 21 +15788.49177 + 31 +0.0 + 0 +LINE + 5 +1E00 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15810.142405 + 30 +0.0 + 11 +26812.5 + 21 +15810.142405 + 31 +0.0 + 0 +LINE + 5 +1E01 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15831.79304 + 30 +0.0 + 11 +26775.0 + 21 +15831.79304 + 31 +0.0 + 0 +LINE + 5 +1E02 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15853.443675 + 30 +0.0 + 11 +26812.5 + 21 +15853.443675 + 31 +0.0 + 0 +LINE + 5 +1E03 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15875.09431 + 30 +0.0 + 11 +26775.0 + 21 +15875.09431 + 31 +0.0 + 0 +LINE + 5 +1E04 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15896.744945 + 30 +0.0 + 11 +26812.5 + 21 +15896.744945 + 31 +0.0 + 0 +LINE + 5 +1E05 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15918.39558 + 30 +0.0 + 11 +26775.0 + 21 +15918.39558 + 31 +0.0 + 0 +LINE + 5 +1E06 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15940.046215 + 30 +0.0 + 11 +26812.5 + 21 +15940.046215 + 31 +0.0 + 0 +LINE + 5 +1E07 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +15961.69685 + 30 +0.0 + 11 +26775.0 + 21 +15961.69685 + 31 +0.0 + 0 +LINE + 5 +1E08 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +15983.347485 + 30 +0.0 + 11 +26812.5 + 21 +15983.347485 + 31 +0.0 + 0 +LINE + 5 +1E09 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16004.99812 + 30 +0.0 + 11 +26775.0 + 21 +16004.99812 + 31 +0.0 + 0 +LINE + 5 +1E0A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16026.648755 + 30 +0.0 + 11 +26812.5 + 21 +16026.648755 + 31 +0.0 + 0 +LINE + 5 +1E0B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16048.29939 + 30 +0.0 + 11 +26775.0 + 21 +16048.29939 + 31 +0.0 + 0 +LINE + 5 +1E0C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16069.950025 + 30 +0.0 + 11 +26812.5 + 21 +16069.950025 + 31 +0.0 + 0 +LINE + 5 +1E0D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16091.60066 + 30 +0.0 + 11 +26775.0 + 21 +16091.60066 + 31 +0.0 + 0 +LINE + 5 +1E0E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16113.251295 + 30 +0.0 + 11 +26812.5 + 21 +16113.251295 + 31 +0.0 + 0 +LINE + 5 +1E0F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16134.90193 + 30 +0.0 + 11 +26775.0 + 21 +16134.90193 + 31 +0.0 + 0 +LINE + 5 +1E10 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16156.552565 + 30 +0.0 + 11 +26812.5 + 21 +16156.552565 + 31 +0.0 + 0 +LINE + 5 +1E11 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16178.2032 + 30 +0.0 + 11 +26775.0 + 21 +16178.2032 + 31 +0.0 + 0 +LINE + 5 +1E12 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16199.853835 + 30 +0.0 + 11 +26812.5 + 21 +16199.853835 + 31 +0.0 + 0 +LINE + 5 +1E13 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16221.50447 + 30 +0.0 + 11 +26775.0 + 21 +16221.50447 + 31 +0.0 + 0 +LINE + 5 +1E14 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16243.155105 + 30 +0.0 + 11 +26812.5 + 21 +16243.155105 + 31 +0.0 + 0 +LINE + 5 +1E15 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16264.80574 + 30 +0.0 + 11 +26775.0 + 21 +16264.80574 + 31 +0.0 + 0 +LINE + 5 +1E16 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16286.456375 + 30 +0.0 + 11 +26812.5 + 21 +16286.456375 + 31 +0.0 + 0 +LINE + 5 +1E17 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16308.10701 + 30 +0.0 + 11 +26775.0 + 21 +16308.10701 + 31 +0.0 + 0 +LINE + 5 +1E18 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16329.757645 + 30 +0.0 + 11 +26812.5 + 21 +16329.757645 + 31 +0.0 + 0 +LINE + 5 +1E19 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16351.40828 + 30 +0.0 + 11 +26775.0 + 21 +16351.40828 + 31 +0.0 + 0 +LINE + 5 +1E1A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16373.058915 + 30 +0.0 + 11 +26812.5 + 21 +16373.058915 + 31 +0.0 + 0 +LINE + 5 +1E1B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16394.70955 + 30 +0.0 + 11 +26775.0 + 21 +16394.70955 + 31 +0.0 + 0 +LINE + 5 +1E1C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16416.360185 + 30 +0.0 + 11 +26812.5 + 21 +16416.360185 + 31 +0.0 + 0 +LINE + 5 +1E1D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16438.01082 + 30 +0.0 + 11 +26775.0 + 21 +16438.01082 + 31 +0.0 + 0 +LINE + 5 +1E1E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16459.661455 + 30 +0.0 + 11 +26812.5 + 21 +16459.661455 + 31 +0.0 + 0 +LINE + 5 +1E1F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16481.31209 + 30 +0.0 + 11 +26775.0 + 21 +16481.31209 + 31 +0.0 + 0 +LINE + 5 +1E20 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16502.962725 + 30 +0.0 + 11 +26812.5 + 21 +16502.962725 + 31 +0.0 + 0 +LINE + 5 +1E21 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16524.61336 + 30 +0.0 + 11 +26775.0 + 21 +16524.61336 + 31 +0.0 + 0 +LINE + 5 +1E22 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16546.263995 + 30 +0.0 + 11 +26812.5 + 21 +16546.263995 + 31 +0.0 + 0 +LINE + 5 +1E23 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16567.91463 + 30 +0.0 + 11 +26775.0 + 21 +16567.91463 + 31 +0.0 + 0 +LINE + 5 +1E24 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16589.565265 + 30 +0.0 + 11 +26812.5 + 21 +16589.565265 + 31 +0.0 + 0 +LINE + 5 +1E25 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16611.2159 + 30 +0.0 + 11 +26775.0 + 21 +16611.2159 + 31 +0.0 + 0 +LINE + 5 +1E26 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16632.866535 + 30 +0.0 + 11 +26812.5 + 21 +16632.866535 + 31 +0.0 + 0 +LINE + 5 +1E27 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16654.51717 + 30 +0.0 + 11 +26775.0 + 21 +16654.51717 + 31 +0.0 + 0 +LINE + 5 +1E28 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16676.167805 + 30 +0.0 + 11 +26812.5 + 21 +16676.167805 + 31 +0.0 + 0 +LINE + 5 +1E29 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16697.81844 + 30 +0.0 + 11 +26775.0 + 21 +16697.81844 + 31 +0.0 + 0 +LINE + 5 +1E2A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16719.469075 + 30 +0.0 + 11 +26812.5 + 21 +16719.469075 + 31 +0.0 + 0 +LINE + 5 +1E2B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16741.11971 + 30 +0.0 + 11 +26775.0 + 21 +16741.11971 + 31 +0.0 + 0 +LINE + 5 +1E2C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16762.770345 + 30 +0.0 + 11 +26812.5 + 21 +16762.770345 + 31 +0.0 + 0 +LINE + 5 +1E2D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16784.42098 + 30 +0.0 + 11 +26775.0 + 21 +16784.42098 + 31 +0.0 + 0 +LINE + 5 +1E2E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16806.071615 + 30 +0.0 + 11 +26812.5 + 21 +16806.071615 + 31 +0.0 + 0 +LINE + 5 +1E2F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16827.72225 + 30 +0.0 + 11 +26775.0 + 21 +16827.72225 + 31 +0.0 + 0 +LINE + 5 +1E30 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16849.372885 + 30 +0.0 + 11 +26812.5 + 21 +16849.372885 + 31 +0.0 + 0 +LINE + 5 +1E31 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16871.02352 + 30 +0.0 + 11 +26775.0 + 21 +16871.02352 + 31 +0.0 + 0 +LINE + 5 +1E32 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16892.674155 + 30 +0.0 + 11 +26812.5 + 21 +16892.674155 + 31 +0.0 + 0 +LINE + 5 +1E33 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16914.32479 + 30 +0.0 + 11 +26775.0 + 21 +16914.32479 + 31 +0.0 + 0 +LINE + 5 +1E34 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16935.975425 + 30 +0.0 + 11 +26812.5 + 21 +16935.975425 + 31 +0.0 + 0 +LINE + 5 +1E35 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +16957.62606 + 30 +0.0 + 11 +26775.0 + 21 +16957.62606 + 31 +0.0 + 0 +LINE + 5 +1E36 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +16979.276695 + 30 +0.0 + 11 +26812.5 + 21 +16979.276695 + 31 +0.0 + 0 +LINE + 5 +1E37 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17000.92733 + 30 +0.0 + 11 +26775.0 + 21 +17000.92733 + 31 +0.0 + 0 +LINE + 5 +1E38 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17022.577965 + 30 +0.0 + 11 +26812.5 + 21 +17022.577965 + 31 +0.0 + 0 +LINE + 5 +1E39 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17044.2286 + 30 +0.0 + 11 +26775.0 + 21 +17044.2286 + 31 +0.0 + 0 +LINE + 5 +1E3A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17065.879235 + 30 +0.0 + 11 +26812.5 + 21 +17065.879235 + 31 +0.0 + 0 +LINE + 5 +1E3B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17087.52987 + 30 +0.0 + 11 +26775.0 + 21 +17087.52987 + 31 +0.0 + 0 +LINE + 5 +1E3C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17109.180505 + 30 +0.0 + 11 +26812.5 + 21 +17109.180505 + 31 +0.0 + 0 +LINE + 5 +1E3D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17130.83114 + 30 +0.0 + 11 +26775.0 + 21 +17130.83114 + 31 +0.0 + 0 +LINE + 5 +1E3E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17152.481775 + 30 +0.0 + 11 +26812.5 + 21 +17152.481775 + 31 +0.0 + 0 +LINE + 5 +1E3F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17174.13241 + 30 +0.0 + 11 +26775.0 + 21 +17174.13241 + 31 +0.0 + 0 +LINE + 5 +1E40 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17195.783045 + 30 +0.0 + 11 +26812.5 + 21 +17195.783045 + 31 +0.0 + 0 +LINE + 5 +1E41 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17217.43368 + 30 +0.0 + 11 +26775.0 + 21 +17217.43368 + 31 +0.0 + 0 +LINE + 5 +1E42 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17239.084315 + 30 +0.0 + 11 +26812.5 + 21 +17239.084315 + 31 +0.0 + 0 +LINE + 5 +1E43 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17260.73495 + 30 +0.0 + 11 +26775.0 + 21 +17260.73495 + 31 +0.0 + 0 +LINE + 5 +1E44 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17282.385585 + 30 +0.0 + 11 +26812.5 + 21 +17282.385585 + 31 +0.0 + 0 +LINE + 5 +1E45 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17304.03622 + 30 +0.0 + 11 +26775.0 + 21 +17304.03622 + 31 +0.0 + 0 +LINE + 5 +1E46 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17325.686855 + 30 +0.0 + 11 +26812.5 + 21 +17325.686855 + 31 +0.0 + 0 +LINE + 5 +1E47 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17347.33749 + 30 +0.0 + 11 +26775.0 + 21 +17347.33749 + 31 +0.0 + 0 +LINE + 5 +1E48 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17368.988125 + 30 +0.0 + 11 +26812.5 + 21 +17368.988125 + 31 +0.0 + 0 +LINE + 5 +1E49 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17390.63876 + 30 +0.0 + 11 +26775.0 + 21 +17390.63876 + 31 +0.0 + 0 +LINE + 5 +1E4A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17412.289395 + 30 +0.0 + 11 +26812.5 + 21 +17412.289395 + 31 +0.0 + 0 +LINE + 5 +1E4B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17433.94003 + 30 +0.0 + 11 +26775.0 + 21 +17433.94003 + 31 +0.0 + 0 +LINE + 5 +1E4C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17455.590665 + 30 +0.0 + 11 +26812.5 + 21 +17455.590665 + 31 +0.0 + 0 +LINE + 5 +1E4D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17477.2413 + 30 +0.0 + 11 +26775.0 + 21 +17477.2413 + 31 +0.0 + 0 +LINE + 5 +1E4E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17498.891935 + 30 +0.0 + 11 +26812.5 + 21 +17498.891935 + 31 +0.0 + 0 +LINE + 5 +1E4F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17520.54257 + 30 +0.0 + 11 +26775.0 + 21 +17520.54257 + 31 +0.0 + 0 +LINE + 5 +1E50 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17542.193205 + 30 +0.0 + 11 +26812.5 + 21 +17542.193205 + 31 +0.0 + 0 +LINE + 5 +1E51 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17563.84384 + 30 +0.0 + 11 +26775.0 + 21 +17563.84384 + 31 +0.0 + 0 +LINE + 5 +1E52 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17585.494475 + 30 +0.0 + 11 +26812.5 + 21 +17585.494475 + 31 +0.0 + 0 +LINE + 5 +1E53 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17607.14511 + 30 +0.0 + 11 +26775.0 + 21 +17607.14511 + 31 +0.0 + 0 +LINE + 5 +1E54 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17628.795745 + 30 +0.0 + 11 +26812.5 + 21 +17628.795745 + 31 +0.0 + 0 +LINE + 5 +1E55 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17650.44638 + 30 +0.0 + 11 +26775.0 + 21 +17650.44638 + 31 +0.0 + 0 +LINE + 5 +1E56 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17672.097015 + 30 +0.0 + 11 +26812.5 + 21 +17672.097015 + 31 +0.0 + 0 +LINE + 5 +1E57 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17693.74765 + 30 +0.0 + 11 +26775.0 + 21 +17693.74765 + 31 +0.0 + 0 +LINE + 5 +1E58 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +17715.398285 + 30 +0.0 + 11 +26812.5 + 21 +17715.398285 + 31 +0.0 + 0 +LINE + 5 +1E59 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +17737.04892 + 30 +0.0 + 11 +26775.0 + 21 +17737.04892 + 31 +0.0 + 0 +LINE + 5 +1E5A + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14835.86383 + 30 +0.0 + 11 +26775.0 + 21 +14835.86383 + 31 +0.0 + 0 +LINE + 5 +1E5B + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14814.213195 + 30 +0.0 + 11 +26812.5 + 21 +14814.213195 + 31 +0.0 + 0 +LINE + 5 +1E5C + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14792.56256 + 30 +0.0 + 11 +26775.0 + 21 +14792.56256 + 31 +0.0 + 0 +LINE + 5 +1E5D + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14770.911925 + 30 +0.0 + 11 +26812.5 + 21 +14770.911925 + 31 +0.0 + 0 +LINE + 5 +1E5E + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14749.26129 + 30 +0.0 + 11 +26775.0 + 21 +14749.26129 + 31 +0.0 + 0 +LINE + 5 +1E5F + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14727.610655 + 30 +0.0 + 11 +26812.5 + 21 +14727.610655 + 31 +0.0 + 0 +LINE + 5 +1E60 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14705.96002 + 30 +0.0 + 11 +26775.0 + 21 +14705.96002 + 31 +0.0 + 0 +LINE + 5 +1E61 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14684.309385 + 30 +0.0 + 11 +26812.5 + 21 +14684.309385 + 31 +0.0 + 0 +LINE + 5 +1E62 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14662.65875 + 30 +0.0 + 11 +26775.0 + 21 +14662.65875 + 31 +0.0 + 0 +LINE + 5 +1E63 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14641.008115 + 30 +0.0 + 11 +26812.5 + 21 +14641.008115 + 31 +0.0 + 0 +LINE + 5 +1E64 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14619.35748 + 30 +0.0 + 11 +26775.0 + 21 +14619.35748 + 31 +0.0 + 0 +LINE + 5 +1E65 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14597.706845 + 30 +0.0 + 11 +26812.5 + 21 +14597.706845 + 31 +0.0 + 0 +LINE + 5 +1E66 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14576.05621 + 30 +0.0 + 11 +26775.0 + 21 +14576.05621 + 31 +0.0 + 0 +LINE + 5 +1E67 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14554.405575 + 30 +0.0 + 11 +26812.5 + 21 +14554.405575 + 31 +0.0 + 0 +LINE + 5 +1E68 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14532.75494 + 30 +0.0 + 11 +26775.0 + 21 +14532.75494 + 31 +0.0 + 0 +LINE + 5 +1E69 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14511.104305 + 30 +0.0 + 11 +26812.5 + 21 +14511.104305 + 31 +0.0 + 0 +LINE + 5 +1E6A + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14489.45367 + 30 +0.0 + 11 +26775.0 + 21 +14489.45367 + 31 +0.0 + 0 +LINE + 5 +1E6B + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14467.803035 + 30 +0.0 + 11 +26812.5 + 21 +14467.803035 + 31 +0.0 + 0 +LINE + 5 +1E6C + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14446.1524 + 30 +0.0 + 11 +26775.0 + 21 +14446.1524 + 31 +0.0 + 0 +LINE + 5 +1E6D + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14424.501765 + 30 +0.0 + 11 +26812.5 + 21 +14424.501765 + 31 +0.0 + 0 +LINE + 5 +1E6E + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14402.85113 + 30 +0.0 + 11 +26775.0 + 21 +14402.85113 + 31 +0.0 + 0 +LINE + 5 +1E6F + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14381.200495 + 30 +0.0 + 11 +26812.5 + 21 +14381.200495 + 31 +0.0 + 0 +LINE + 5 +1E70 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14359.54986 + 30 +0.0 + 11 +26775.0 + 21 +14359.54986 + 31 +0.0 + 0 +LINE + 5 +1E71 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14337.899225 + 30 +0.0 + 11 +26812.5 + 21 +14337.899225 + 31 +0.0 + 0 +LINE + 5 +1E72 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14316.24859 + 30 +0.0 + 11 +26775.0 + 21 +14316.24859 + 31 +0.0 + 0 +LINE + 5 +1E73 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14294.597955 + 30 +0.0 + 11 +26812.5 + 21 +14294.597955 + 31 +0.0 + 0 +LINE + 5 +1E74 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14272.94732 + 30 +0.0 + 11 +26775.0 + 21 +14272.94732 + 31 +0.0 + 0 +LINE + 5 +1E75 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14251.296685 + 30 +0.0 + 11 +26812.5 + 21 +14251.296685 + 31 +0.0 + 0 +LINE + 5 +1E76 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14229.64605 + 30 +0.0 + 11 +26775.0 + 21 +14229.64605 + 31 +0.0 + 0 +LINE + 5 +1E77 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14207.995415 + 30 +0.0 + 11 +26812.5 + 21 +14207.995415 + 31 +0.0 + 0 +LINE + 5 +1E78 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14186.34478 + 30 +0.0 + 11 +26775.0 + 21 +14186.34478 + 31 +0.0 + 0 +LINE + 5 +1E79 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14164.694145 + 30 +0.0 + 11 +26812.5 + 21 +14164.694145 + 31 +0.0 + 0 +LINE + 5 +1E7A + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14143.04351 + 30 +0.0 + 11 +26775.0 + 21 +14143.04351 + 31 +0.0 + 0 +LINE + 5 +1E7B + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14121.392875 + 30 +0.0 + 11 +26812.5 + 21 +14121.392875 + 31 +0.0 + 0 +LINE + 5 +1E7C + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14099.74224 + 30 +0.0 + 11 +26775.0 + 21 +14099.74224 + 31 +0.0 + 0 +LINE + 5 +1E7D + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14078.091605 + 30 +0.0 + 11 +26812.5 + 21 +14078.091605 + 31 +0.0 + 0 +LINE + 5 +1E7E + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14056.44097 + 30 +0.0 + 11 +26775.0 + 21 +14056.44097 + 31 +0.0 + 0 +LINE + 5 +1E7F + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +14034.790335 + 30 +0.0 + 11 +26812.5 + 21 +14034.790335 + 31 +0.0 + 0 +LINE + 5 +1E80 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +14013.1397 + 30 +0.0 + 11 +26775.0 + 21 +14013.1397 + 31 +0.0 + 0 +LINE + 5 +1E81 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13991.489065 + 30 +0.0 + 11 +26812.5 + 21 +13991.489065 + 31 +0.0 + 0 +LINE + 5 +1E82 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13969.83843 + 30 +0.0 + 11 +26775.0 + 21 +13969.83843 + 31 +0.0 + 0 +LINE + 5 +1E83 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13948.187795 + 30 +0.0 + 11 +26812.5 + 21 +13948.187795 + 31 +0.0 + 0 +LINE + 5 +1E84 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13926.53716 + 30 +0.0 + 11 +26775.0 + 21 +13926.53716 + 31 +0.0 + 0 +LINE + 5 +1E85 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13904.886525 + 30 +0.0 + 11 +26812.5 + 21 +13904.886525 + 31 +0.0 + 0 +LINE + 5 +1E86 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13883.23589 + 30 +0.0 + 11 +26775.0 + 21 +13883.23589 + 31 +0.0 + 0 +LINE + 5 +1E87 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13861.585255 + 30 +0.0 + 11 +26812.5 + 21 +13861.585255 + 31 +0.0 + 0 +LINE + 5 +1E88 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13839.93462 + 30 +0.0 + 11 +26775.0 + 21 +13839.93462 + 31 +0.0 + 0 +LINE + 5 +1E89 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13818.283985 + 30 +0.0 + 11 +26812.5 + 21 +13818.283985 + 31 +0.0 + 0 +LINE + 5 +1E8A + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13796.63335 + 30 +0.0 + 11 +26775.0 + 21 +13796.63335 + 31 +0.0 + 0 +LINE + 5 +1E8B + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13774.982715 + 30 +0.0 + 11 +26812.5 + 21 +13774.982715 + 31 +0.0 + 0 +LINE + 5 +1E8C + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13753.33208 + 30 +0.0 + 11 +26775.0 + 21 +13753.33208 + 31 +0.0 + 0 +LINE + 5 +1E8D + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13731.681445 + 30 +0.0 + 11 +26812.5 + 21 +13731.681445 + 31 +0.0 + 0 +LINE + 5 +1E8E + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13710.03081 + 30 +0.0 + 11 +26775.0 + 21 +13710.03081 + 31 +0.0 + 0 +LINE + 5 +1E8F + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13688.380175 + 30 +0.0 + 11 +26812.5 + 21 +13688.380175 + 31 +0.0 + 0 +LINE + 5 +1E90 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13666.72954 + 30 +0.0 + 11 +26775.0 + 21 +13666.72954 + 31 +0.0 + 0 +LINE + 5 +1E91 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13645.078905 + 30 +0.0 + 11 +26812.5 + 21 +13645.078905 + 31 +0.0 + 0 +LINE + 5 +1E92 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13623.42827 + 30 +0.0 + 11 +26775.0 + 21 +13623.42827 + 31 +0.0 + 0 +LINE + 5 +1E93 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13601.777635 + 30 +0.0 + 11 +26812.5 + 21 +13601.777635 + 31 +0.0 + 0 +LINE + 5 +1E94 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13580.127 + 30 +0.0 + 11 +26775.0 + 21 +13580.127 + 31 +0.0 + 0 +LINE + 5 +1E95 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13558.476365 + 30 +0.0 + 11 +26812.5 + 21 +13558.476365 + 31 +0.0 + 0 +LINE + 5 +1E96 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13536.82573 + 30 +0.0 + 11 +26775.0 + 21 +13536.82573 + 31 +0.0 + 0 +LINE + 5 +1E97 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13515.175095 + 30 +0.0 + 11 +26812.5 + 21 +13515.175095 + 31 +0.0 + 0 +LINE + 5 +1E98 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13493.52446 + 30 +0.0 + 11 +26775.0 + 21 +13493.52446 + 31 +0.0 + 0 +LINE + 5 +1E99 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13471.873825 + 30 +0.0 + 11 +26812.5 + 21 +13471.873825 + 31 +0.0 + 0 +LINE + 5 +1E9A + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13450.22319 + 30 +0.0 + 11 +26775.0 + 21 +13450.22319 + 31 +0.0 + 0 +LINE + 5 +1E9B + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13428.572555 + 30 +0.0 + 11 +26812.5 + 21 +13428.572555 + 31 +0.0 + 0 +LINE + 5 +1E9C + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13406.92192 + 30 +0.0 + 11 +26775.0 + 21 +13406.92192 + 31 +0.0 + 0 +LINE + 5 +1E9D + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13385.271285 + 30 +0.0 + 11 +26812.5 + 21 +13385.271285 + 31 +0.0 + 0 +LINE + 5 +1E9E + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13363.62065 + 30 +0.0 + 11 +26775.0 + 21 +13363.62065 + 31 +0.0 + 0 +LINE + 5 +1E9F + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13341.970015 + 30 +0.0 + 11 +26812.5 + 21 +13341.970015 + 31 +0.0 + 0 +LINE + 5 +1EA0 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13320.31938 + 30 +0.0 + 11 +26775.0 + 21 +13320.31938 + 31 +0.0 + 0 +LINE + 5 +1EA1 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13298.668745 + 30 +0.0 + 11 +26812.5 + 21 +13298.668745 + 31 +0.0 + 0 +LINE + 5 +1EA2 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13277.01811 + 30 +0.0 + 11 +26775.0 + 21 +13277.01811 + 31 +0.0 + 0 +LINE + 5 +1EA3 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13255.367475 + 30 +0.0 + 11 +26812.5 + 21 +13255.367475 + 31 +0.0 + 0 +LINE + 5 +1EA4 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13233.71684 + 30 +0.0 + 11 +26775.0 + 21 +13233.71684 + 31 +0.0 + 0 +LINE + 5 +1EA5 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13212.066205 + 30 +0.0 + 11 +26812.5 + 21 +13212.066205 + 31 +0.0 + 0 +LINE + 5 +1EA6 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13190.41557 + 30 +0.0 + 11 +26775.0 + 21 +13190.41557 + 31 +0.0 + 0 +LINE + 5 +1EA7 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13168.764935 + 30 +0.0 + 11 +26812.5 + 21 +13168.764935 + 31 +0.0 + 0 +LINE + 5 +1EA8 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13147.1143 + 30 +0.0 + 11 +26775.0 + 21 +13147.1143 + 31 +0.0 + 0 +LINE + 5 +1EA9 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13125.463665 + 30 +0.0 + 11 +26812.5 + 21 +13125.463665 + 31 +0.0 + 0 +LINE + 5 +1EAA + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13103.81303 + 30 +0.0 + 11 +26775.0 + 21 +13103.81303 + 31 +0.0 + 0 +LINE + 5 +1EAB + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13082.162395 + 30 +0.0 + 11 +26812.5 + 21 +13082.162395 + 31 +0.0 + 0 +LINE + 5 +1EAC + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13060.51176 + 30 +0.0 + 11 +26775.0 + 21 +13060.51176 + 31 +0.0 + 0 +LINE + 5 +1EAD + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +13038.861125 + 30 +0.0 + 11 +26812.5 + 21 +13038.861125 + 31 +0.0 + 0 +LINE + 5 +1EAE + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +13017.21049 + 30 +0.0 + 11 +26775.0 + 21 +13017.21049 + 31 +0.0 + 0 +LINE + 5 +1EAF + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12995.559855 + 30 +0.0 + 11 +26812.5 + 21 +12995.559855 + 31 +0.0 + 0 +LINE + 5 +1EB0 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12973.90922 + 30 +0.0 + 11 +26775.0 + 21 +12973.90922 + 31 +0.0 + 0 +LINE + 5 +1EB1 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12952.258585 + 30 +0.0 + 11 +26812.5 + 21 +12952.258585 + 31 +0.0 + 0 +LINE + 5 +1EB2 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12930.60795 + 30 +0.0 + 11 +26775.0 + 21 +12930.60795 + 31 +0.0 + 0 +LINE + 5 +1EB3 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12908.957315 + 30 +0.0 + 11 +26812.5 + 21 +12908.957315 + 31 +0.0 + 0 +LINE + 5 +1EB4 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12887.30668 + 30 +0.0 + 11 +26775.0 + 21 +12887.30668 + 31 +0.0 + 0 +LINE + 5 +1EB5 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12865.656045 + 30 +0.0 + 11 +26812.5 + 21 +12865.656045 + 31 +0.0 + 0 +LINE + 5 +1EB6 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12844.00541 + 30 +0.0 + 11 +26775.0 + 21 +12844.00541 + 31 +0.0 + 0 +LINE + 5 +1EB7 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12822.354775 + 30 +0.0 + 11 +26812.5 + 21 +12822.354775 + 31 +0.0 + 0 +LINE + 5 +1EB8 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12800.70414 + 30 +0.0 + 11 +26775.0 + 21 +12800.70414 + 31 +0.0 + 0 +LINE + 5 +1EB9 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12779.053505 + 30 +0.0 + 11 +26812.5 + 21 +12779.053505 + 31 +0.0 + 0 +LINE + 5 +1EBA + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12757.40287 + 30 +0.0 + 11 +26775.0 + 21 +12757.40287 + 31 +0.0 + 0 +LINE + 5 +1EBB + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12735.752235 + 30 +0.0 + 11 +26812.5 + 21 +12735.752235 + 31 +0.0 + 0 +LINE + 5 +1EBC + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12714.1016 + 30 +0.0 + 11 +26775.0 + 21 +12714.1016 + 31 +0.0 + 0 +LINE + 5 +1EBD + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12692.450965 + 30 +0.0 + 11 +26812.5 + 21 +12692.450965 + 31 +0.0 + 0 +LINE + 5 +1EBE + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12670.80033 + 30 +0.0 + 11 +26775.0 + 21 +12670.80033 + 31 +0.0 + 0 +LINE + 5 +1EBF + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12649.149695 + 30 +0.0 + 11 +26812.5 + 21 +12649.149695 + 31 +0.0 + 0 +LINE + 5 +1EC0 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12627.49906 + 30 +0.0 + 11 +26775.0 + 21 +12627.49906 + 31 +0.0 + 0 +LINE + 5 +1EC1 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12605.848425 + 30 +0.0 + 11 +26812.5 + 21 +12605.848425 + 31 +0.0 + 0 +LINE + 5 +1EC2 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12584.19779 + 30 +0.0 + 11 +26775.0 + 21 +12584.19779 + 31 +0.0 + 0 +LINE + 5 +1EC3 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12562.547155 + 30 +0.0 + 11 +26812.5 + 21 +12562.547155 + 31 +0.0 + 0 +LINE + 5 +1EC4 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12540.89652 + 30 +0.0 + 11 +26775.0 + 21 +12540.89652 + 31 +0.0 + 0 +LINE + 5 +1EC5 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12519.245885 + 30 +0.0 + 11 +26812.5 + 21 +12519.245885 + 31 +0.0 + 0 +LINE + 5 +1EC6 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12497.59525 + 30 +0.0 + 11 +26775.0 + 21 +12497.59525 + 31 +0.0 + 0 +LINE + 5 +1EC7 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12475.944615 + 30 +0.0 + 11 +26812.5 + 21 +12475.944615 + 31 +0.0 + 0 +LINE + 5 +1EC8 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12454.29398 + 30 +0.0 + 11 +26775.0 + 21 +12454.29398 + 31 +0.0 + 0 +LINE + 5 +1EC9 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12432.643345 + 30 +0.0 + 11 +26812.5 + 21 +12432.643345 + 31 +0.0 + 0 +LINE + 5 +1ECA + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12410.99271 + 30 +0.0 + 11 +26775.0 + 21 +12410.99271 + 31 +0.0 + 0 +LINE + 5 +1ECB + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12389.342075 + 30 +0.0 + 11 +26812.5 + 21 +12389.342075 + 31 +0.0 + 0 +LINE + 5 +1ECC + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12367.69144 + 30 +0.0 + 11 +26775.0 + 21 +12367.69144 + 31 +0.0 + 0 +LINE + 5 +1ECD + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12346.040805 + 30 +0.0 + 11 +26812.5 + 21 +12346.040805 + 31 +0.0 + 0 +LINE + 5 +1ECE + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12324.39017 + 30 +0.0 + 11 +26775.0 + 21 +12324.39017 + 31 +0.0 + 0 +LINE + 5 +1ECF + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12302.739535 + 30 +0.0 + 11 +26812.5 + 21 +12302.739535 + 31 +0.0 + 0 +LINE + 5 +1ED0 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12281.0889 + 30 +0.0 + 11 +26775.0 + 21 +12281.0889 + 31 +0.0 + 0 +LINE + 5 +1ED1 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12259.438265 + 30 +0.0 + 11 +26812.5 + 21 +12259.438265 + 31 +0.0 + 0 +LINE + 5 +1ED2 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12237.78763 + 30 +0.0 + 11 +26775.0 + 21 +12237.78763 + 31 +0.0 + 0 +LINE + 5 +1ED3 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12216.136995 + 30 +0.0 + 11 +26812.5 + 21 +12216.136995 + 31 +0.0 + 0 +LINE + 5 +1ED4 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12194.48636 + 30 +0.0 + 11 +26775.0 + 21 +12194.48636 + 31 +0.0 + 0 +LINE + 5 +1ED5 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12172.835725 + 30 +0.0 + 11 +26812.5 + 21 +12172.835725 + 31 +0.0 + 0 +LINE + 5 +1ED6 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12151.18509 + 30 +0.0 + 11 +26775.0 + 21 +12151.18509 + 31 +0.0 + 0 +LINE + 5 +1ED7 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12129.534455 + 30 +0.0 + 11 +26812.5 + 21 +12129.534455 + 31 +0.0 + 0 +LINE + 5 +1ED8 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12107.88382 + 30 +0.0 + 11 +26775.0 + 21 +12107.88382 + 31 +0.0 + 0 +LINE + 5 +1ED9 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12086.233185 + 30 +0.0 + 11 +26812.5 + 21 +12086.233185 + 31 +0.0 + 0 +LINE + 5 +1EDA + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12064.58255 + 30 +0.0 + 11 +26775.0 + 21 +12064.58255 + 31 +0.0 + 0 +LINE + 5 +1EDB + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +12042.931915 + 30 +0.0 + 11 +26812.5 + 21 +12042.931915 + 31 +0.0 + 0 +LINE + 5 +1EDC + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +12021.28128 + 30 +0.0 + 11 +26775.0 + 21 +12021.28128 + 31 +0.0 + 0 +LINE + 5 +1EDD + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +11999.630645 + 30 +0.0 + 11 +26812.5 + 21 +11999.630645 + 31 +0.0 + 0 +LINE + 5 +1EDE + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14757.921379 + 30 +0.0 + 11 +26812.499918 + 21 +14770.911902 + 31 +0.0 + 0 +LINE + 5 +1EDF + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14814.213172 + 30 +0.0 + 11 +26774.999918 + 21 +14835.863807 + 31 +0.0 + 0 +LINE + 5 +1EE0 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14879.165077 + 30 +0.0 + 11 +26740.0 + 21 +14896.485443 + 31 +0.0 + 0 +LINE + 5 +1EE1 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14714.620109 + 30 +0.0 + 11 +26812.499918 + 21 +14727.610632 + 31 +0.0 + 0 +LINE + 5 +1EE2 + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14770.911902 + 30 +0.0 + 11 +26774.999918 + 21 +14792.562537 + 31 +0.0 + 0 +LINE + 5 +1EE3 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14835.863807 + 30 +0.0 + 11 +26740.0 + 21 +14853.184173 + 31 +0.0 + 0 +LINE + 5 +1EE4 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14671.318839 + 30 +0.0 + 11 +26812.499918 + 21 +14684.309362 + 31 +0.0 + 0 +LINE + 5 +1EE5 + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14727.610632 + 30 +0.0 + 11 +26774.999918 + 21 +14749.261267 + 31 +0.0 + 0 +LINE + 5 +1EE6 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14792.562537 + 30 +0.0 + 11 +26740.0 + 21 +14809.882903 + 31 +0.0 + 0 +LINE + 5 +1EE7 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14628.017569 + 30 +0.0 + 11 +26812.499918 + 21 +14641.008091 + 31 +0.0 + 0 +LINE + 5 +1EE8 + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14684.309362 + 30 +0.0 + 11 +26774.999918 + 21 +14705.959997 + 31 +0.0 + 0 +LINE + 5 +1EE9 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14749.261267 + 30 +0.0 + 11 +26740.0 + 21 +14766.581633 + 31 +0.0 + 0 +LINE + 5 +1EEA + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14584.716299 + 30 +0.0 + 11 +26812.499918 + 21 +14597.706821 + 31 +0.0 + 0 +LINE + 5 +1EEB + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14641.008091 + 30 +0.0 + 11 +26774.999918 + 21 +14662.658727 + 31 +0.0 + 0 +LINE + 5 +1EEC + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14705.959997 + 30 +0.0 + 11 +26740.0 + 21 +14723.280363 + 31 +0.0 + 0 +LINE + 5 +1EED + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14541.415029 + 30 +0.0 + 11 +26812.499918 + 21 +14554.405551 + 31 +0.0 + 0 +LINE + 5 +1EEE + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14597.706821 + 30 +0.0 + 11 +26774.999918 + 21 +14619.357456 + 31 +0.0 + 0 +LINE + 5 +1EEF + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14662.658727 + 30 +0.0 + 11 +26740.0 + 21 +14679.979093 + 31 +0.0 + 0 +LINE + 5 +1EF0 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14498.113759 + 30 +0.0 + 11 +26812.499919 + 21 +14511.104281 + 31 +0.0 + 0 +LINE + 5 +1EF1 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14554.405551 + 30 +0.0 + 11 +26774.999919 + 21 +14576.056186 + 31 +0.0 + 0 +LINE + 5 +1EF2 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14619.357456 + 30 +0.0 + 11 +26740.0 + 21 +14636.677823 + 31 +0.0 + 0 +LINE + 5 +1EF3 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14454.812489 + 30 +0.0 + 11 +26812.499919 + 21 +14467.803011 + 31 +0.0 + 0 +LINE + 5 +1EF4 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14511.104281 + 30 +0.0 + 11 +26774.999919 + 21 +14532.754916 + 31 +0.0 + 0 +LINE + 5 +1EF5 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14576.056186 + 30 +0.0 + 11 +26740.0 + 21 +14593.376553 + 31 +0.0 + 0 +LINE + 5 +1EF6 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14411.511219 + 30 +0.0 + 11 +26812.499919 + 21 +14424.501741 + 31 +0.0 + 0 +LINE + 5 +1EF7 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14467.803011 + 30 +0.0 + 11 +26774.999919 + 21 +14489.453646 + 31 +0.0 + 0 +LINE + 5 +1EF8 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14532.754916 + 30 +0.0 + 11 +26740.0 + 21 +14550.075283 + 31 +0.0 + 0 +LINE + 5 +1EF9 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14368.209949 + 30 +0.0 + 11 +26812.499919 + 21 +14381.200471 + 31 +0.0 + 0 +LINE + 5 +1EFA + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14424.501741 + 30 +0.0 + 11 +26774.999919 + 21 +14446.152376 + 31 +0.0 + 0 +LINE + 5 +1EFB + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14489.453646 + 30 +0.0 + 11 +26740.0 + 21 +14506.774013 + 31 +0.0 + 0 +LINE + 5 +1EFC + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14324.908679 + 30 +0.0 + 11 +26812.499919 + 21 +14337.8992 + 31 +0.0 + 0 +LINE + 5 +1EFD + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14381.200471 + 30 +0.0 + 11 +26774.999919 + 21 +14402.851106 + 31 +0.0 + 0 +LINE + 5 +1EFE + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14446.152376 + 30 +0.0 + 11 +26740.0 + 21 +14463.472743 + 31 +0.0 + 0 +LINE + 5 +1EFF + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14281.607409 + 30 +0.0 + 11 +26812.499919 + 21 +14294.59793 + 31 +0.0 + 0 +LINE + 5 +1F00 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14337.8992 + 30 +0.0 + 11 +26774.999919 + 21 +14359.549836 + 31 +0.0 + 0 +LINE + 5 +1F01 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14402.851106 + 30 +0.0 + 11 +26740.0 + 21 +14420.171473 + 31 +0.0 + 0 +LINE + 5 +1F02 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14238.306139 + 30 +0.0 + 11 +26812.499919 + 21 +14251.29666 + 31 +0.0 + 0 +LINE + 5 +1F03 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14294.59793 + 30 +0.0 + 11 +26774.999919 + 21 +14316.248565 + 31 +0.0 + 0 +LINE + 5 +1F04 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14359.549836 + 30 +0.0 + 11 +26740.0 + 21 +14376.870203 + 31 +0.0 + 0 +LINE + 5 +1F05 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14195.004869 + 30 +0.0 + 11 +26812.499919 + 21 +14207.99539 + 31 +0.0 + 0 +LINE + 5 +1F06 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14251.29666 + 30 +0.0 + 11 +26774.999919 + 21 +14272.947295 + 31 +0.0 + 0 +LINE + 5 +1F07 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14316.248565 + 30 +0.0 + 11 +26740.0 + 21 +14333.568933 + 31 +0.0 + 0 +LINE + 5 +1F08 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14151.703599 + 30 +0.0 + 11 +26812.499919 + 21 +14164.69412 + 31 +0.0 + 0 +LINE + 5 +1F09 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14207.99539 + 30 +0.0 + 11 +26774.999919 + 21 +14229.646025 + 31 +0.0 + 0 +LINE + 5 +1F0A + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14272.947295 + 30 +0.0 + 11 +26740.0 + 21 +14290.267663 + 31 +0.0 + 0 +LINE + 5 +1F0B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14108.402329 + 30 +0.0 + 11 +26812.499919 + 21 +14121.39285 + 31 +0.0 + 0 +LINE + 5 +1F0C + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14164.69412 + 30 +0.0 + 11 +26774.999919 + 21 +14186.344755 + 31 +0.0 + 0 +LINE + 5 +1F0D + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14229.646025 + 30 +0.0 + 11 +26740.0 + 21 +14246.966393 + 31 +0.0 + 0 +LINE + 5 +1F0E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14065.101059 + 30 +0.0 + 11 +26812.499919 + 21 +14078.09158 + 31 +0.0 + 0 +LINE + 5 +1F0F + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14121.39285 + 30 +0.0 + 11 +26774.999919 + 21 +14143.043485 + 31 +0.0 + 0 +LINE + 5 +1F10 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14186.344755 + 30 +0.0 + 11 +26740.0 + 21 +14203.665123 + 31 +0.0 + 0 +LINE + 5 +1F11 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14021.799789 + 30 +0.0 + 11 +26812.499919 + 21 +14034.790309 + 31 +0.0 + 0 +LINE + 5 +1F12 + 8 +0 + 62 + 0 + 10 +26787.499919 + 20 +14078.09158 + 30 +0.0 + 11 +26774.999919 + 21 +14099.742215 + 31 +0.0 + 0 +LINE + 5 +1F13 + 8 +0 + 62 + 0 + 10 +26749.999919 + 20 +14143.043485 + 30 +0.0 + 11 +26740.0 + 21 +14160.363853 + 31 +0.0 + 0 +LINE + 5 +1F14 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13978.498519 + 30 +0.0 + 11 +26812.49992 + 21 +13991.489039 + 31 +0.0 + 0 +LINE + 5 +1F15 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +14034.790309 + 30 +0.0 + 11 +26774.99992 + 21 +14056.440945 + 31 +0.0 + 0 +LINE + 5 +1F16 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +14099.742215 + 30 +0.0 + 11 +26740.0 + 21 +14117.062583 + 31 +0.0 + 0 +LINE + 5 +1F17 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13935.197249 + 30 +0.0 + 11 +26812.49992 + 21 +13948.187769 + 31 +0.0 + 0 +LINE + 5 +1F18 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13991.489039 + 30 +0.0 + 11 +26774.99992 + 21 +14013.139674 + 31 +0.0 + 0 +LINE + 5 +1F19 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +14056.440945 + 30 +0.0 + 11 +26740.0 + 21 +14073.761313 + 31 +0.0 + 0 +LINE + 5 +1F1A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13891.895979 + 30 +0.0 + 11 +26812.49992 + 21 +13904.886499 + 31 +0.0 + 0 +LINE + 5 +1F1B + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13948.187769 + 30 +0.0 + 11 +26774.99992 + 21 +13969.838404 + 31 +0.0 + 0 +LINE + 5 +1F1C + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +14013.139674 + 30 +0.0 + 11 +26740.0 + 21 +14030.460043 + 31 +0.0 + 0 +LINE + 5 +1F1D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13848.594709 + 30 +0.0 + 11 +26812.49992 + 21 +13861.585229 + 31 +0.0 + 0 +LINE + 5 +1F1E + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13904.886499 + 30 +0.0 + 11 +26774.99992 + 21 +13926.537134 + 31 +0.0 + 0 +LINE + 5 +1F1F + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13969.838404 + 30 +0.0 + 11 +26740.0 + 21 +13987.158773 + 31 +0.0 + 0 +LINE + 5 +1F20 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13805.293439 + 30 +0.0 + 11 +26812.49992 + 21 +13818.283959 + 31 +0.0 + 0 +LINE + 5 +1F21 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13861.585229 + 30 +0.0 + 11 +26774.99992 + 21 +13883.235864 + 31 +0.0 + 0 +LINE + 5 +1F22 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13926.537134 + 30 +0.0 + 11 +26740.0 + 21 +13943.857503 + 31 +0.0 + 0 +LINE + 5 +1F23 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13761.992169 + 30 +0.0 + 11 +26812.49992 + 21 +13774.982689 + 31 +0.0 + 0 +LINE + 5 +1F24 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13818.283959 + 30 +0.0 + 11 +26774.99992 + 21 +13839.934594 + 31 +0.0 + 0 +LINE + 5 +1F25 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13883.235864 + 30 +0.0 + 11 +26740.0 + 21 +13900.556233 + 31 +0.0 + 0 +LINE + 5 +1F26 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13718.690899 + 30 +0.0 + 11 +26812.49992 + 21 +13731.681418 + 31 +0.0 + 0 +LINE + 5 +1F27 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13774.982689 + 30 +0.0 + 11 +26774.99992 + 21 +13796.633324 + 31 +0.0 + 0 +LINE + 5 +1F28 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13839.934594 + 30 +0.0 + 11 +26740.0 + 21 +13857.254963 + 31 +0.0 + 0 +LINE + 5 +1F29 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13675.389629 + 30 +0.0 + 11 +26812.49992 + 21 +13688.380148 + 31 +0.0 + 0 +LINE + 5 +1F2A + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13731.681418 + 30 +0.0 + 11 +26774.99992 + 21 +13753.332054 + 31 +0.0 + 0 +LINE + 5 +1F2B + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13796.633324 + 30 +0.0 + 11 +26740.0 + 21 +13813.953693 + 31 +0.0 + 0 +LINE + 5 +1F2C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13632.088359 + 30 +0.0 + 11 +26812.49992 + 21 +13645.078878 + 31 +0.0 + 0 +LINE + 5 +1F2D + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13688.380148 + 30 +0.0 + 11 +26774.99992 + 21 +13710.030783 + 31 +0.0 + 0 +LINE + 5 +1F2E + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13753.332054 + 30 +0.0 + 11 +26740.0 + 21 +13770.652423 + 31 +0.0 + 0 +LINE + 5 +1F2F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13588.787089 + 30 +0.0 + 11 +26812.49992 + 21 +13601.777608 + 31 +0.0 + 0 +LINE + 5 +1F30 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13645.078878 + 30 +0.0 + 11 +26774.99992 + 21 +13666.729513 + 31 +0.0 + 0 +LINE + 5 +1F31 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13710.030783 + 30 +0.0 + 11 +26740.0 + 21 +13727.351153 + 31 +0.0 + 0 +LINE + 5 +1F32 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13545.485819 + 30 +0.0 + 11 +26812.49992 + 21 +13558.476338 + 31 +0.0 + 0 +LINE + 5 +1F33 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13601.777608 + 30 +0.0 + 11 +26774.99992 + 21 +13623.428243 + 31 +0.0 + 0 +LINE + 5 +1F34 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13666.729513 + 30 +0.0 + 11 +26740.0 + 21 +13684.049883 + 31 +0.0 + 0 +LINE + 5 +1F35 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13502.184549 + 30 +0.0 + 11 +26812.49992 + 21 +13515.175068 + 31 +0.0 + 0 +LINE + 5 +1F36 + 8 +0 + 62 + 0 + 10 +26787.49992 + 20 +13558.476338 + 30 +0.0 + 11 +26774.99992 + 21 +13580.126973 + 31 +0.0 + 0 +LINE + 5 +1F37 + 8 +0 + 62 + 0 + 10 +26749.99992 + 20 +13623.428243 + 30 +0.0 + 11 +26740.0 + 21 +13640.748613 + 31 +0.0 + 0 +LINE + 5 +1F38 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13458.883279 + 30 +0.0 + 11 +26812.499921 + 21 +13471.873798 + 31 +0.0 + 0 +LINE + 5 +1F39 + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13515.175068 + 30 +0.0 + 11 +26774.999921 + 21 +13536.825703 + 31 +0.0 + 0 +LINE + 5 +1F3A + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13580.126973 + 30 +0.0 + 11 +26740.0 + 21 +13597.447343 + 31 +0.0 + 0 +LINE + 5 +1F3B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13415.582009 + 30 +0.0 + 11 +26812.499921 + 21 +13428.572527 + 31 +0.0 + 0 +LINE + 5 +1F3C + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13471.873798 + 30 +0.0 + 11 +26774.999921 + 21 +13493.524433 + 31 +0.0 + 0 +LINE + 5 +1F3D + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13536.825703 + 30 +0.0 + 11 +26740.0 + 21 +13554.146073 + 31 +0.0 + 0 +LINE + 5 +1F3E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13372.280739 + 30 +0.0 + 11 +26812.499921 + 21 +13385.271257 + 31 +0.0 + 0 +LINE + 5 +1F3F + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13428.572527 + 30 +0.0 + 11 +26774.999921 + 21 +13450.223163 + 31 +0.0 + 0 +LINE + 5 +1F40 + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13493.524433 + 30 +0.0 + 11 +26740.0 + 21 +13510.844803 + 31 +0.0 + 0 +LINE + 5 +1F41 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13328.979469 + 30 +0.0 + 11 +26812.499921 + 21 +13341.969987 + 31 +0.0 + 0 +LINE + 5 +1F42 + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13385.271257 + 30 +0.0 + 11 +26774.999921 + 21 +13406.921892 + 31 +0.0 + 0 +LINE + 5 +1F43 + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13450.223163 + 30 +0.0 + 11 +26740.0 + 21 +13467.543533 + 31 +0.0 + 0 +LINE + 5 +1F44 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13285.678199 + 30 +0.0 + 11 +26812.499921 + 21 +13298.668717 + 31 +0.0 + 0 +LINE + 5 +1F45 + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13341.969987 + 30 +0.0 + 11 +26774.999921 + 21 +13363.620622 + 31 +0.0 + 0 +LINE + 5 +1F46 + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13406.921892 + 30 +0.0 + 11 +26740.0 + 21 +13424.242263 + 31 +0.0 + 0 +LINE + 5 +1F47 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13242.376929 + 30 +0.0 + 11 +26812.499921 + 21 +13255.367447 + 31 +0.0 + 0 +LINE + 5 +1F48 + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13298.668717 + 30 +0.0 + 11 +26774.999921 + 21 +13320.319352 + 31 +0.0 + 0 +LINE + 5 +1F49 + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13363.620622 + 30 +0.0 + 11 +26740.0 + 21 +13380.940993 + 31 +0.0 + 0 +LINE + 5 +1F4A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13199.075659 + 30 +0.0 + 11 +26812.499921 + 21 +13212.066177 + 31 +0.0 + 0 +LINE + 5 +1F4B + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13255.367447 + 30 +0.0 + 11 +26774.999921 + 21 +13277.018082 + 31 +0.0 + 0 +LINE + 5 +1F4C + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13320.319352 + 30 +0.0 + 11 +26740.0 + 21 +13337.639723 + 31 +0.0 + 0 +LINE + 5 +1F4D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13155.774389 + 30 +0.0 + 11 +26812.499921 + 21 +13168.764907 + 31 +0.0 + 0 +LINE + 5 +1F4E + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13212.066177 + 30 +0.0 + 11 +26774.999921 + 21 +13233.716812 + 31 +0.0 + 0 +LINE + 5 +1F4F + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13277.018082 + 30 +0.0 + 11 +26740.0 + 21 +13294.338453 + 31 +0.0 + 0 +LINE + 5 +1F50 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13112.473119 + 30 +0.0 + 11 +26812.499921 + 21 +13125.463636 + 31 +0.0 + 0 +LINE + 5 +1F51 + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13168.764907 + 30 +0.0 + 11 +26774.999921 + 21 +13190.415542 + 31 +0.0 + 0 +LINE + 5 +1F52 + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13233.716812 + 30 +0.0 + 11 +26740.0 + 21 +13251.037183 + 31 +0.0 + 0 +LINE + 5 +1F53 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13069.171849 + 30 +0.0 + 11 +26812.499921 + 21 +13082.162366 + 31 +0.0 + 0 +LINE + 5 +1F54 + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13125.463636 + 30 +0.0 + 11 +26774.999921 + 21 +13147.114272 + 31 +0.0 + 0 +LINE + 5 +1F55 + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13190.415542 + 30 +0.0 + 11 +26740.0 + 21 +13207.735913 + 31 +0.0 + 0 +LINE + 5 +1F56 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +13025.870579 + 30 +0.0 + 11 +26812.499921 + 21 +13038.861096 + 31 +0.0 + 0 +LINE + 5 +1F57 + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13082.162366 + 30 +0.0 + 11 +26774.999921 + 21 +13103.813001 + 31 +0.0 + 0 +LINE + 5 +1F58 + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13147.114272 + 30 +0.0 + 11 +26740.0 + 21 +13164.434643 + 31 +0.0 + 0 +LINE + 5 +1F59 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12982.569309 + 30 +0.0 + 11 +26812.499921 + 21 +12995.559826 + 31 +0.0 + 0 +LINE + 5 +1F5A + 8 +0 + 62 + 0 + 10 +26787.499921 + 20 +13038.861096 + 30 +0.0 + 11 +26774.999921 + 21 +13060.511731 + 31 +0.0 + 0 +LINE + 5 +1F5B + 8 +0 + 62 + 0 + 10 +26749.999921 + 20 +13103.813001 + 30 +0.0 + 11 +26740.0 + 21 +13121.133373 + 31 +0.0 + 0 +LINE + 5 +1F5C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12939.268039 + 30 +0.0 + 11 +26812.499922 + 21 +12952.258556 + 31 +0.0 + 0 +LINE + 5 +1F5D + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12995.559826 + 30 +0.0 + 11 +26774.999922 + 21 +13017.210461 + 31 +0.0 + 0 +LINE + 5 +1F5E + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +13060.511731 + 30 +0.0 + 11 +26740.0 + 21 +13077.832103 + 31 +0.0 + 0 +LINE + 5 +1F5F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12895.966769 + 30 +0.0 + 11 +26812.499922 + 21 +12908.957286 + 31 +0.0 + 0 +LINE + 5 +1F60 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12952.258556 + 30 +0.0 + 11 +26774.999922 + 21 +12973.909191 + 31 +0.0 + 0 +LINE + 5 +1F61 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +13017.210461 + 30 +0.0 + 11 +26740.0 + 21 +13034.530833 + 31 +0.0 + 0 +LINE + 5 +1F62 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12852.665499 + 30 +0.0 + 11 +26812.499922 + 21 +12865.656016 + 31 +0.0 + 0 +LINE + 5 +1F63 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12908.957286 + 30 +0.0 + 11 +26774.999922 + 21 +12930.607921 + 31 +0.0 + 0 +LINE + 5 +1F64 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12973.909191 + 30 +0.0 + 11 +26740.0 + 21 +12991.229563 + 31 +0.0 + 0 +LINE + 5 +1F65 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12809.364229 + 30 +0.0 + 11 +26812.499922 + 21 +12822.354745 + 31 +0.0 + 0 +LINE + 5 +1F66 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12865.656016 + 30 +0.0 + 11 +26774.999922 + 21 +12887.306651 + 31 +0.0 + 0 +LINE + 5 +1F67 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12930.607921 + 30 +0.0 + 11 +26740.0 + 21 +12947.928293 + 31 +0.0 + 0 +LINE + 5 +1F68 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12766.062959 + 30 +0.0 + 11 +26812.499922 + 21 +12779.053475 + 31 +0.0 + 0 +LINE + 5 +1F69 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12822.354745 + 30 +0.0 + 11 +26774.999922 + 21 +12844.005381 + 31 +0.0 + 0 +LINE + 5 +1F6A + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12887.306651 + 30 +0.0 + 11 +26740.0 + 21 +12904.627023 + 31 +0.0 + 0 +LINE + 5 +1F6B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12722.761689 + 30 +0.0 + 11 +26812.499922 + 21 +12735.752205 + 31 +0.0 + 0 +LINE + 5 +1F6C + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12779.053475 + 30 +0.0 + 11 +26774.999922 + 21 +12800.70411 + 31 +0.0 + 0 +LINE + 5 +1F6D + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12844.005381 + 30 +0.0 + 11 +26740.0 + 21 +12861.325753 + 31 +0.0 + 0 +LINE + 5 +1F6E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12679.460419 + 30 +0.0 + 11 +26812.499922 + 21 +12692.450935 + 31 +0.0 + 0 +LINE + 5 +1F6F + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12735.752205 + 30 +0.0 + 11 +26774.999922 + 21 +12757.40284 + 31 +0.0 + 0 +LINE + 5 +1F70 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12800.70411 + 30 +0.0 + 11 +26740.0 + 21 +12818.024483 + 31 +0.0 + 0 +LINE + 5 +1F71 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12636.159149 + 30 +0.0 + 11 +26812.499922 + 21 +12649.149665 + 31 +0.0 + 0 +LINE + 5 +1F72 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12692.450935 + 30 +0.0 + 11 +26774.999922 + 21 +12714.10157 + 31 +0.0 + 0 +LINE + 5 +1F73 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12757.40284 + 30 +0.0 + 11 +26740.0 + 21 +12774.723213 + 31 +0.0 + 0 +LINE + 5 +1F74 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12592.857879 + 30 +0.0 + 11 +26812.499922 + 21 +12605.848395 + 31 +0.0 + 0 +LINE + 5 +1F75 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12649.149665 + 30 +0.0 + 11 +26774.999922 + 21 +12670.8003 + 31 +0.0 + 0 +LINE + 5 +1F76 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12714.10157 + 30 +0.0 + 11 +26740.0 + 21 +12731.421943 + 31 +0.0 + 0 +LINE + 5 +1F77 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12549.556609 + 30 +0.0 + 11 +26812.499922 + 21 +12562.547125 + 31 +0.0 + 0 +LINE + 5 +1F78 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12605.848395 + 30 +0.0 + 11 +26774.999922 + 21 +12627.49903 + 31 +0.0 + 0 +LINE + 5 +1F79 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12670.8003 + 30 +0.0 + 11 +26740.0 + 21 +12688.120673 + 31 +0.0 + 0 +LINE + 5 +1F7A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12506.255339 + 30 +0.0 + 11 +26812.499922 + 21 +12519.245854 + 31 +0.0 + 0 +LINE + 5 +1F7B + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12562.547125 + 30 +0.0 + 11 +26774.999922 + 21 +12584.19776 + 31 +0.0 + 0 +LINE + 5 +1F7C + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12627.49903 + 30 +0.0 + 11 +26740.0 + 21 +12644.819403 + 31 +0.0 + 0 +LINE + 5 +1F7D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12462.954069 + 30 +0.0 + 11 +26812.499922 + 21 +12475.944584 + 31 +0.0 + 0 +LINE + 5 +1F7E + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12519.245854 + 30 +0.0 + 11 +26774.999922 + 21 +12540.89649 + 31 +0.0 + 0 +LINE + 5 +1F7F + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12584.19776 + 30 +0.0 + 11 +26740.0 + 21 +12601.518133 + 31 +0.0 + 0 +LINE + 5 +1F80 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12419.652799 + 30 +0.0 + 11 +26812.499922 + 21 +12432.643314 + 31 +0.0 + 0 +LINE + 5 +1F81 + 8 +0 + 62 + 0 + 10 +26787.499922 + 20 +12475.944584 + 30 +0.0 + 11 +26774.999922 + 21 +12497.595219 + 31 +0.0 + 0 +LINE + 5 +1F82 + 8 +0 + 62 + 0 + 10 +26749.999922 + 20 +12540.89649 + 30 +0.0 + 11 +26740.0 + 21 +12558.216863 + 31 +0.0 + 0 +LINE + 5 +1F83 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12376.351529 + 30 +0.0 + 11 +26812.499923 + 21 +12389.342044 + 31 +0.0 + 0 +LINE + 5 +1F84 + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12432.643314 + 30 +0.0 + 11 +26774.999923 + 21 +12454.293949 + 31 +0.0 + 0 +LINE + 5 +1F85 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12497.595219 + 30 +0.0 + 11 +26740.0 + 21 +12514.915593 + 31 +0.0 + 0 +LINE + 5 +1F86 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12333.050259 + 30 +0.0 + 11 +26812.499923 + 21 +12346.040774 + 31 +0.0 + 0 +LINE + 5 +1F87 + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12389.342044 + 30 +0.0 + 11 +26774.999923 + 21 +12410.992679 + 31 +0.0 + 0 +LINE + 5 +1F88 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12454.293949 + 30 +0.0 + 11 +26740.0 + 21 +12471.614323 + 31 +0.0 + 0 +LINE + 5 +1F89 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12289.748989 + 30 +0.0 + 11 +26812.499923 + 21 +12302.739504 + 31 +0.0 + 0 +LINE + 5 +1F8A + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12346.040774 + 30 +0.0 + 11 +26774.999923 + 21 +12367.691409 + 31 +0.0 + 0 +LINE + 5 +1F8B + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12410.992679 + 30 +0.0 + 11 +26740.0 + 21 +12428.313053 + 31 +0.0 + 0 +LINE + 5 +1F8C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12246.447719 + 30 +0.0 + 11 +26812.499923 + 21 +12259.438234 + 31 +0.0 + 0 +LINE + 5 +1F8D + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12302.739504 + 30 +0.0 + 11 +26774.999923 + 21 +12324.390139 + 31 +0.0 + 0 +LINE + 5 +1F8E + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12367.691409 + 30 +0.0 + 11 +26740.0 + 21 +12385.011783 + 31 +0.0 + 0 +LINE + 5 +1F8F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12203.146449 + 30 +0.0 + 11 +26812.499923 + 21 +12216.136963 + 31 +0.0 + 0 +LINE + 5 +1F90 + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12259.438234 + 30 +0.0 + 11 +26774.999923 + 21 +12281.088869 + 31 +0.0 + 0 +LINE + 5 +1F91 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12324.390139 + 30 +0.0 + 11 +26740.0 + 21 +12341.710513 + 31 +0.0 + 0 +LINE + 5 +1F92 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12159.845179 + 30 +0.0 + 11 +26812.499923 + 21 +12172.835693 + 31 +0.0 + 0 +LINE + 5 +1F93 + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12216.136963 + 30 +0.0 + 11 +26774.999923 + 21 +12237.787599 + 31 +0.0 + 0 +LINE + 5 +1F94 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12281.088869 + 30 +0.0 + 11 +26740.0 + 21 +12298.409243 + 31 +0.0 + 0 +LINE + 5 +1F95 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12116.543909 + 30 +0.0 + 11 +26812.499923 + 21 +12129.534423 + 31 +0.0 + 0 +LINE + 5 +1F96 + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12172.835693 + 30 +0.0 + 11 +26774.999923 + 21 +12194.486328 + 31 +0.0 + 0 +LINE + 5 +1F97 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12237.787599 + 30 +0.0 + 11 +26740.0 + 21 +12255.107973 + 31 +0.0 + 0 +LINE + 5 +1F98 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12073.242639 + 30 +0.0 + 11 +26812.499923 + 21 +12086.233153 + 31 +0.0 + 0 +LINE + 5 +1F99 + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12129.534423 + 30 +0.0 + 11 +26774.999923 + 21 +12151.185058 + 31 +0.0 + 0 +LINE + 5 +1F9A + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12194.486328 + 30 +0.0 + 11 +26740.0 + 21 +12211.806703 + 31 +0.0 + 0 +LINE + 5 +1F9B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +12029.941369 + 30 +0.0 + 11 +26812.499923 + 21 +12042.931883 + 31 +0.0 + 0 +LINE + 5 +1F9C + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12086.233153 + 30 +0.0 + 11 +26774.999923 + 21 +12107.883788 + 31 +0.0 + 0 +LINE + 5 +1F9D + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12151.185058 + 30 +0.0 + 11 +26740.0 + 21 +12168.505433 + 31 +0.0 + 0 +LINE + 5 +1F9E + 8 +0 + 62 + 0 + 10 +26818.781848 + 20 +11988.75 + 30 +0.0 + 11 +26812.499923 + 21 +11999.630613 + 31 +0.0 + 0 +LINE + 5 +1F9F + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +12042.931883 + 30 +0.0 + 11 +26774.999923 + 21 +12064.582518 + 31 +0.0 + 0 +LINE + 5 +1FA0 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12107.883788 + 30 +0.0 + 11 +26740.0 + 21 +12125.204163 + 31 +0.0 + 0 +LINE + 5 +1FA1 + 8 +0 + 62 + 0 + 10 +26787.499923 + 20 +11999.630613 + 30 +0.0 + 11 +26774.999923 + 21 +12021.281248 + 31 +0.0 + 0 +LINE + 5 +1FA2 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12064.582518 + 30 +0.0 + 11 +26740.0 + 21 +12081.902893 + 31 +0.0 + 0 +LINE + 5 +1FA3 + 8 +0 + 62 + 0 + 10 +26749.999923 + 20 +12021.281248 + 30 +0.0 + 11 +26740.0 + 21 +12038.601623 + 31 +0.0 + 0 +LINE + 5 +1FA4 + 8 +0 + 62 + 0 + 10 +26743.781848 + 20 +11988.75 + 30 +0.0 + 11 +26740.0 + 21 +11995.300353 + 31 +0.0 + 0 +LINE + 5 +1FA5 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14801.222649 + 30 +0.0 + 11 +26812.499918 + 21 +14814.213172 + 31 +0.0 + 0 +LINE + 5 +1FA6 + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14857.514442 + 30 +0.0 + 11 +26774.999918 + 21 +14879.165077 + 31 +0.0 + 0 +LINE + 5 +1FA7 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14922.466347 + 30 +0.0 + 11 +26740.0 + 21 +14939.786713 + 31 +0.0 + 0 +LINE + 5 +1FA8 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14844.523919 + 30 +0.0 + 11 +26812.499918 + 21 +14857.514442 + 31 +0.0 + 0 +LINE + 5 +1FA9 + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14900.815712 + 30 +0.0 + 11 +26774.999918 + 21 +14922.466347 + 31 +0.0 + 0 +LINE + 5 +1FAA + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +14965.767618 + 30 +0.0 + 11 +26740.0 + 21 +14983.087983 + 31 +0.0 + 0 +LINE + 5 +1FAB + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14887.825189 + 30 +0.0 + 11 +26812.499918 + 21 +14900.815712 + 31 +0.0 + 0 +LINE + 5 +1FAC + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14944.116982 + 30 +0.0 + 11 +26774.999918 + 21 +14965.767618 + 31 +0.0 + 0 +LINE + 5 +1FAD + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +15009.068888 + 30 +0.0 + 11 +26740.0 + 21 +15026.389253 + 31 +0.0 + 0 +LINE + 5 +1FAE + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14931.126459 + 30 +0.0 + 11 +26812.499918 + 21 +14944.116982 + 31 +0.0 + 0 +LINE + 5 +1FAF + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +14987.418253 + 30 +0.0 + 11 +26774.999918 + 21 +15009.068888 + 31 +0.0 + 0 +LINE + 5 +1FB0 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +15052.370158 + 30 +0.0 + 11 +26740.0 + 21 +15069.690523 + 31 +0.0 + 0 +LINE + 5 +1FB1 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +14974.427729 + 30 +0.0 + 11 +26812.499918 + 21 +14987.418253 + 31 +0.0 + 0 +LINE + 5 +1FB2 + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +15030.719523 + 30 +0.0 + 11 +26774.999918 + 21 +15052.370158 + 31 +0.0 + 0 +LINE + 5 +1FB3 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +15095.671428 + 30 +0.0 + 11 +26740.0 + 21 +15112.991793 + 31 +0.0 + 0 +LINE + 5 +1FB4 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15017.728999 + 30 +0.0 + 11 +26812.499918 + 21 +15030.719523 + 31 +0.0 + 0 +LINE + 5 +1FB5 + 8 +0 + 62 + 0 + 10 +26787.499918 + 20 +15074.020793 + 30 +0.0 + 11 +26774.999918 + 21 +15095.671428 + 31 +0.0 + 0 +LINE + 5 +1FB6 + 8 +0 + 62 + 0 + 10 +26749.999918 + 20 +15138.972698 + 30 +0.0 + 11 +26740.0 + 21 +15156.293063 + 31 +0.0 + 0 +LINE + 5 +1FB7 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15061.030269 + 30 +0.0 + 11 +26812.499917 + 21 +15074.020793 + 31 +0.0 + 0 +LINE + 5 +1FB8 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15117.322063 + 30 +0.0 + 11 +26774.999917 + 21 +15138.972698 + 31 +0.0 + 0 +LINE + 5 +1FB9 + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15182.273968 + 30 +0.0 + 11 +26740.0 + 21 +15199.594333 + 31 +0.0 + 0 +LINE + 5 +1FBA + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15104.331539 + 30 +0.0 + 11 +26812.499917 + 21 +15117.322063 + 31 +0.0 + 0 +LINE + 5 +1FBB + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15160.623333 + 30 +0.0 + 11 +26774.999917 + 21 +15182.273968 + 31 +0.0 + 0 +LINE + 5 +1FBC + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15225.575238 + 30 +0.0 + 11 +26740.0 + 21 +15242.895603 + 31 +0.0 + 0 +LINE + 5 +1FBD + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15147.632809 + 30 +0.0 + 11 +26812.499917 + 21 +15160.623333 + 31 +0.0 + 0 +LINE + 5 +1FBE + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15203.924603 + 30 +0.0 + 11 +26774.999917 + 21 +15225.575238 + 31 +0.0 + 0 +LINE + 5 +1FBF + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15268.876509 + 30 +0.0 + 11 +26740.0 + 21 +15286.196873 + 31 +0.0 + 0 +LINE + 5 +1FC0 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15190.934079 + 30 +0.0 + 11 +26812.499917 + 21 +15203.924603 + 31 +0.0 + 0 +LINE + 5 +1FC1 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15247.225873 + 30 +0.0 + 11 +26774.999917 + 21 +15268.876509 + 31 +0.0 + 0 +LINE + 5 +1FC2 + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15312.177779 + 30 +0.0 + 11 +26740.0 + 21 +15329.498143 + 31 +0.0 + 0 +LINE + 5 +1FC3 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15234.235349 + 30 +0.0 + 11 +26812.499917 + 21 +15247.225873 + 31 +0.0 + 0 +LINE + 5 +1FC4 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15290.527144 + 30 +0.0 + 11 +26774.999917 + 21 +15312.177779 + 31 +0.0 + 0 +LINE + 5 +1FC5 + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15355.479049 + 30 +0.0 + 11 +26740.0 + 21 +15372.799413 + 31 +0.0 + 0 +LINE + 5 +1FC6 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15277.536619 + 30 +0.0 + 11 +26812.499917 + 21 +15290.527144 + 31 +0.0 + 0 +LINE + 5 +1FC7 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15333.828414 + 30 +0.0 + 11 +26774.999917 + 21 +15355.479049 + 31 +0.0 + 0 +LINE + 5 +1FC8 + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15398.780319 + 30 +0.0 + 11 +26740.0 + 21 +15416.100683 + 31 +0.0 + 0 +LINE + 5 +1FC9 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15320.837889 + 30 +0.0 + 11 +26812.499917 + 21 +15333.828414 + 31 +0.0 + 0 +LINE + 5 +1FCA + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15377.129684 + 30 +0.0 + 11 +26774.999917 + 21 +15398.780319 + 31 +0.0 + 0 +LINE + 5 +1FCB + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15442.081589 + 30 +0.0 + 11 +26740.0 + 21 +15459.401953 + 31 +0.0 + 0 +LINE + 5 +1FCC + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15364.139159 + 30 +0.0 + 11 +26812.499917 + 21 +15377.129684 + 31 +0.0 + 0 +LINE + 5 +1FCD + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15420.430954 + 30 +0.0 + 11 +26774.999917 + 21 +15442.081589 + 31 +0.0 + 0 +LINE + 5 +1FCE + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15485.382859 + 30 +0.0 + 11 +26740.0 + 21 +15502.703223 + 31 +0.0 + 0 +LINE + 5 +1FCF + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15407.440429 + 30 +0.0 + 11 +26812.499917 + 21 +15420.430954 + 31 +0.0 + 0 +LINE + 5 +1FD0 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15463.732224 + 30 +0.0 + 11 +26774.999917 + 21 +15485.382859 + 31 +0.0 + 0 +LINE + 5 +1FD1 + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15528.684129 + 30 +0.0 + 11 +26740.0 + 21 +15546.004493 + 31 +0.0 + 0 +LINE + 5 +1FD2 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15450.741699 + 30 +0.0 + 11 +26812.499917 + 21 +15463.732224 + 31 +0.0 + 0 +LINE + 5 +1FD3 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15507.033494 + 30 +0.0 + 11 +26774.999917 + 21 +15528.684129 + 31 +0.0 + 0 +LINE + 5 +1FD4 + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15571.9854 + 30 +0.0 + 11 +26740.0 + 21 +15589.305763 + 31 +0.0 + 0 +LINE + 5 +1FD5 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15494.042969 + 30 +0.0 + 11 +26812.499917 + 21 +15507.033494 + 31 +0.0 + 0 +LINE + 5 +1FD6 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15550.334764 + 30 +0.0 + 11 +26774.999917 + 21 +15571.9854 + 31 +0.0 + 0 +LINE + 5 +1FD7 + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15615.28667 + 30 +0.0 + 11 +26740.0 + 21 +15632.607033 + 31 +0.0 + 0 +LINE + 5 +1FD8 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15537.344239 + 30 +0.0 + 11 +26812.499917 + 21 +15550.334764 + 31 +0.0 + 0 +LINE + 5 +1FD9 + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15593.636035 + 30 +0.0 + 11 +26774.999917 + 21 +15615.28667 + 31 +0.0 + 0 +LINE + 5 +1FDA + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15658.58794 + 30 +0.0 + 11 +26740.0 + 21 +15675.908303 + 31 +0.0 + 0 +LINE + 5 +1FDB + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15580.645509 + 30 +0.0 + 11 +26812.499917 + 21 +15593.636035 + 31 +0.0 + 0 +LINE + 5 +1FDC + 8 +0 + 62 + 0 + 10 +26787.499917 + 20 +15636.937305 + 30 +0.0 + 11 +26774.999917 + 21 +15658.58794 + 31 +0.0 + 0 +LINE + 5 +1FDD + 8 +0 + 62 + 0 + 10 +26749.999917 + 20 +15701.88921 + 30 +0.0 + 11 +26740.0 + 21 +15719.209573 + 31 +0.0 + 0 +LINE + 5 +1FDE + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15623.946779 + 30 +0.0 + 11 +26812.499916 + 21 +15636.937305 + 31 +0.0 + 0 +LINE + 5 +1FDF + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15680.238575 + 30 +0.0 + 11 +26774.999916 + 21 +15701.88921 + 31 +0.0 + 0 +LINE + 5 +1FE0 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +15745.19048 + 30 +0.0 + 11 +26740.0 + 21 +15762.510843 + 31 +0.0 + 0 +LINE + 5 +1FE1 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15667.248049 + 30 +0.0 + 11 +26812.499916 + 21 +15680.238575 + 31 +0.0 + 0 +LINE + 5 +1FE2 + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15723.539845 + 30 +0.0 + 11 +26774.999916 + 21 +15745.19048 + 31 +0.0 + 0 +LINE + 5 +1FE3 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +15788.49175 + 30 +0.0 + 11 +26740.0 + 21 +15805.812113 + 31 +0.0 + 0 +LINE + 5 +1FE4 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15710.549319 + 30 +0.0 + 11 +26812.499916 + 21 +15723.539845 + 31 +0.0 + 0 +LINE + 5 +1FE5 + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15766.841115 + 30 +0.0 + 11 +26774.999916 + 21 +15788.49175 + 31 +0.0 + 0 +LINE + 5 +1FE6 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +15831.79302 + 30 +0.0 + 11 +26740.0 + 21 +15849.113383 + 31 +0.0 + 0 +LINE + 5 +1FE7 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15753.850589 + 30 +0.0 + 11 +26812.499916 + 21 +15766.841115 + 31 +0.0 + 0 +LINE + 5 +1FE8 + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15810.142385 + 30 +0.0 + 11 +26774.999916 + 21 +15831.79302 + 31 +0.0 + 0 +LINE + 5 +1FE9 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +15875.094291 + 30 +0.0 + 11 +26740.0 + 21 +15892.414653 + 31 +0.0 + 0 +LINE + 5 +1FEA + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15797.151859 + 30 +0.0 + 11 +26812.499916 + 21 +15810.142385 + 31 +0.0 + 0 +LINE + 5 +1FEB + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15853.443655 + 30 +0.0 + 11 +26774.999916 + 21 +15875.094291 + 31 +0.0 + 0 +LINE + 5 +1FEC + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +15918.395561 + 30 +0.0 + 11 +26740.0 + 21 +15935.715923 + 31 +0.0 + 0 +LINE + 5 +1FED + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15840.453129 + 30 +0.0 + 11 +26812.499916 + 21 +15853.443655 + 31 +0.0 + 0 +LINE + 5 +1FEE + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15896.744926 + 30 +0.0 + 11 +26774.999916 + 21 +15918.395561 + 31 +0.0 + 0 +LINE + 5 +1FEF + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +15961.696831 + 30 +0.0 + 11 +26740.0 + 21 +15979.017193 + 31 +0.0 + 0 +LINE + 5 +1FF0 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15883.754399 + 30 +0.0 + 11 +26812.499916 + 21 +15896.744926 + 31 +0.0 + 0 +LINE + 5 +1FF1 + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15940.046196 + 30 +0.0 + 11 +26774.999916 + 21 +15961.696831 + 31 +0.0 + 0 +LINE + 5 +1FF2 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +16004.998101 + 30 +0.0 + 11 +26740.0 + 21 +16022.318463 + 31 +0.0 + 0 +LINE + 5 +1FF3 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15927.055669 + 30 +0.0 + 11 +26812.499916 + 21 +15940.046196 + 31 +0.0 + 0 +LINE + 5 +1FF4 + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +15983.347466 + 30 +0.0 + 11 +26774.999916 + 21 +16004.998101 + 31 +0.0 + 0 +LINE + 5 +1FF5 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +16048.299371 + 30 +0.0 + 11 +26740.0 + 21 +16065.619733 + 31 +0.0 + 0 +LINE + 5 +1FF6 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +15970.356939 + 30 +0.0 + 11 +26812.499916 + 21 +15983.347466 + 31 +0.0 + 0 +LINE + 5 +1FF7 + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +16026.648736 + 30 +0.0 + 11 +26774.999916 + 21 +16048.299371 + 31 +0.0 + 0 +LINE + 5 +1FF8 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +16091.600641 + 30 +0.0 + 11 +26740.0 + 21 +16108.921003 + 31 +0.0 + 0 +LINE + 5 +1FF9 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16013.658209 + 30 +0.0 + 11 +26812.499916 + 21 +16026.648736 + 31 +0.0 + 0 +LINE + 5 +1FFA + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +16069.950006 + 30 +0.0 + 11 +26774.999916 + 21 +16091.600641 + 31 +0.0 + 0 +LINE + 5 +1FFB + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +16134.901911 + 30 +0.0 + 11 +26740.0 + 21 +16152.222273 + 31 +0.0 + 0 +LINE + 5 +1FFC + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16056.959479 + 30 +0.0 + 11 +26812.499916 + 21 +16069.950006 + 31 +0.0 + 0 +LINE + 5 +1FFD + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +16113.251276 + 30 +0.0 + 11 +26774.999916 + 21 +16134.901911 + 31 +0.0 + 0 +LINE + 5 +1FFE + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +16178.203182 + 30 +0.0 + 11 +26740.0 + 21 +16195.523543 + 31 +0.0 + 0 +LINE + 5 +1FFF + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16100.260749 + 30 +0.0 + 11 +26812.499916 + 21 +16113.251276 + 31 +0.0 + 0 +LINE + 5 +2000 + 8 +0 + 62 + 0 + 10 +26787.499916 + 20 +16156.552546 + 30 +0.0 + 11 +26774.999916 + 21 +16178.203182 + 31 +0.0 + 0 +LINE + 5 +2001 + 8 +0 + 62 + 0 + 10 +26749.999916 + 20 +16221.504452 + 30 +0.0 + 11 +26740.0 + 21 +16238.824813 + 31 +0.0 + 0 +LINE + 5 +2002 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16143.562019 + 30 +0.0 + 11 +26812.499915 + 21 +16156.552546 + 31 +0.0 + 0 +LINE + 5 +2003 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16199.853817 + 30 +0.0 + 11 +26774.999915 + 21 +16221.504452 + 31 +0.0 + 0 +LINE + 5 +2004 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16264.805722 + 30 +0.0 + 11 +26740.0 + 21 +16282.126083 + 31 +0.0 + 0 +LINE + 5 +2005 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16186.863289 + 30 +0.0 + 11 +26812.499915 + 21 +16199.853817 + 31 +0.0 + 0 +LINE + 5 +2006 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16243.155087 + 30 +0.0 + 11 +26774.999915 + 21 +16264.805722 + 31 +0.0 + 0 +LINE + 5 +2007 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16308.106992 + 30 +0.0 + 11 +26740.0 + 21 +16325.427353 + 31 +0.0 + 0 +LINE + 5 +2008 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16230.164559 + 30 +0.0 + 11 +26812.499915 + 21 +16243.155087 + 31 +0.0 + 0 +LINE + 5 +2009 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16286.456357 + 30 +0.0 + 11 +26774.999915 + 21 +16308.106992 + 31 +0.0 + 0 +LINE + 5 +200A + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16351.408262 + 30 +0.0 + 11 +26740.0 + 21 +16368.728623 + 31 +0.0 + 0 +LINE + 5 +200B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16273.465829 + 30 +0.0 + 11 +26812.499915 + 21 +16286.456357 + 31 +0.0 + 0 +LINE + 5 +200C + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16329.757627 + 30 +0.0 + 11 +26774.999915 + 21 +16351.408262 + 31 +0.0 + 0 +LINE + 5 +200D + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16394.709532 + 30 +0.0 + 11 +26740.0 + 21 +16412.029893 + 31 +0.0 + 0 +LINE + 5 +200E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16316.767099 + 30 +0.0 + 11 +26812.499915 + 21 +16329.757627 + 31 +0.0 + 0 +LINE + 5 +200F + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16373.058897 + 30 +0.0 + 11 +26774.999915 + 21 +16394.709532 + 31 +0.0 + 0 +LINE + 5 +2010 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16438.010802 + 30 +0.0 + 11 +26740.0 + 21 +16455.331163 + 31 +0.0 + 0 +LINE + 5 +2011 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16360.068369 + 30 +0.0 + 11 +26812.499915 + 21 +16373.058897 + 31 +0.0 + 0 +LINE + 5 +2012 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16416.360167 + 30 +0.0 + 11 +26774.999915 + 21 +16438.010802 + 31 +0.0 + 0 +LINE + 5 +2013 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16481.312073 + 30 +0.0 + 11 +26740.0 + 21 +16498.632433 + 31 +0.0 + 0 +LINE + 5 +2014 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16403.369639 + 30 +0.0 + 11 +26812.499915 + 21 +16416.360167 + 31 +0.0 + 0 +LINE + 5 +2015 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16459.661437 + 30 +0.0 + 11 +26774.999915 + 21 +16481.312072 + 31 +0.0 + 0 +LINE + 5 +2016 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16524.613343 + 30 +0.0 + 11 +26740.0 + 21 +16541.933703 + 31 +0.0 + 0 +LINE + 5 +2017 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16446.670909 + 30 +0.0 + 11 +26812.499915 + 21 +16459.661437 + 31 +0.0 + 0 +LINE + 5 +2018 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16502.962708 + 30 +0.0 + 11 +26774.999915 + 21 +16524.613343 + 31 +0.0 + 0 +LINE + 5 +2019 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16567.914613 + 30 +0.0 + 11 +26740.0 + 21 +16585.234973 + 31 +0.0 + 0 +LINE + 5 +201A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16489.972179 + 30 +0.0 + 11 +26812.499915 + 21 +16502.962707 + 31 +0.0 + 0 +LINE + 5 +201B + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16546.263978 + 30 +0.0 + 11 +26774.999915 + 21 +16567.914613 + 31 +0.0 + 0 +LINE + 5 +201C + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16611.215883 + 30 +0.0 + 11 +26740.0 + 21 +16628.536243 + 31 +0.0 + 0 +LINE + 5 +201D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16533.273449 + 30 +0.0 + 11 +26812.499915 + 21 +16546.263978 + 31 +0.0 + 0 +LINE + 5 +201E + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16589.565248 + 30 +0.0 + 11 +26774.999915 + 21 +16611.215883 + 31 +0.0 + 0 +LINE + 5 +201F + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16654.517153 + 30 +0.0 + 11 +26740.0 + 21 +16671.837513 + 31 +0.0 + 0 +LINE + 5 +2020 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16576.574719 + 30 +0.0 + 11 +26812.499915 + 21 +16589.565248 + 31 +0.0 + 0 +LINE + 5 +2021 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16632.866518 + 30 +0.0 + 11 +26774.999915 + 21 +16654.517153 + 31 +0.0 + 0 +LINE + 5 +2022 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16697.818423 + 30 +0.0 + 11 +26740.0 + 21 +16715.138783 + 31 +0.0 + 0 +LINE + 5 +2023 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16619.875989 + 30 +0.0 + 11 +26812.499915 + 21 +16632.866518 + 31 +0.0 + 0 +LINE + 5 +2024 + 8 +0 + 62 + 0 + 10 +26787.499915 + 20 +16676.167788 + 30 +0.0 + 11 +26774.999915 + 21 +16697.818423 + 31 +0.0 + 0 +LINE + 5 +2025 + 8 +0 + 62 + 0 + 10 +26749.999915 + 20 +16741.119693 + 30 +0.0 + 11 +26740.0 + 21 +16758.440053 + 31 +0.0 + 0 +LINE + 5 +2026 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16663.177259 + 30 +0.0 + 11 +26812.499914 + 21 +16676.167788 + 31 +0.0 + 0 +LINE + 5 +2027 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +16719.469058 + 30 +0.0 + 11 +26774.999914 + 21 +16741.119693 + 31 +0.0 + 0 +LINE + 5 +2028 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +16784.420964 + 30 +0.0 + 11 +26740.0 + 21 +16801.741323 + 31 +0.0 + 0 +LINE + 5 +2029 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16706.478529 + 30 +0.0 + 11 +26812.499914 + 21 +16719.469058 + 31 +0.0 + 0 +LINE + 5 +202A + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +16762.770328 + 30 +0.0 + 11 +26774.999914 + 21 +16784.420963 + 31 +0.0 + 0 +LINE + 5 +202B + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +16827.722234 + 30 +0.0 + 11 +26740.0 + 21 +16845.042593 + 31 +0.0 + 0 +LINE + 5 +202C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16749.779799 + 30 +0.0 + 11 +26812.499914 + 21 +16762.770328 + 31 +0.0 + 0 +LINE + 5 +202D + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +16806.071599 + 30 +0.0 + 11 +26774.999914 + 21 +16827.722234 + 31 +0.0 + 0 +LINE + 5 +202E + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +16871.023504 + 30 +0.0 + 11 +26740.0 + 21 +16888.343863 + 31 +0.0 + 0 +LINE + 5 +202F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16793.081069 + 30 +0.0 + 11 +26812.499914 + 21 +16806.071598 + 31 +0.0 + 0 +LINE + 5 +2030 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +16849.372869 + 30 +0.0 + 11 +26774.999914 + 21 +16871.023504 + 31 +0.0 + 0 +LINE + 5 +2031 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +16914.324774 + 30 +0.0 + 11 +26740.0 + 21 +16931.645133 + 31 +0.0 + 0 +LINE + 5 +2032 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16836.382339 + 30 +0.0 + 11 +26812.499914 + 21 +16849.372869 + 31 +0.0 + 0 +LINE + 5 +2033 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +16892.674139 + 30 +0.0 + 11 +26774.999914 + 21 +16914.324774 + 31 +0.0 + 0 +LINE + 5 +2034 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +16957.626044 + 30 +0.0 + 11 +26740.0 + 21 +16974.946403 + 31 +0.0 + 0 +LINE + 5 +2035 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16879.683609 + 30 +0.0 + 11 +26812.499914 + 21 +16892.674139 + 31 +0.0 + 0 +LINE + 5 +2036 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +16935.975409 + 30 +0.0 + 11 +26774.999914 + 21 +16957.626044 + 31 +0.0 + 0 +LINE + 5 +2037 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +17000.927314 + 30 +0.0 + 11 +26740.0 + 21 +17018.247673 + 31 +0.0 + 0 +LINE + 5 +2038 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16922.984879 + 30 +0.0 + 11 +26812.499914 + 21 +16935.975409 + 31 +0.0 + 0 +LINE + 5 +2039 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +16979.276679 + 30 +0.0 + 11 +26774.999914 + 21 +17000.927314 + 31 +0.0 + 0 +LINE + 5 +203A + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +17044.228584 + 30 +0.0 + 11 +26740.0 + 21 +17061.548943 + 31 +0.0 + 0 +LINE + 5 +203B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +16966.286149 + 30 +0.0 + 11 +26812.499914 + 21 +16979.276679 + 31 +0.0 + 0 +LINE + 5 +203C + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +17022.577949 + 30 +0.0 + 11 +26774.999914 + 21 +17044.228584 + 31 +0.0 + 0 +LINE + 5 +203D + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +17087.529855 + 30 +0.0 + 11 +26740.0 + 21 +17104.850213 + 31 +0.0 + 0 +LINE + 5 +203E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17009.587419 + 30 +0.0 + 11 +26812.499914 + 21 +17022.577949 + 31 +0.0 + 0 +LINE + 5 +203F + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +17065.879219 + 30 +0.0 + 11 +26774.999914 + 21 +17087.529854 + 31 +0.0 + 0 +LINE + 5 +2040 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +17130.831125 + 30 +0.0 + 11 +26740.0 + 21 +17148.151483 + 31 +0.0 + 0 +LINE + 5 +2041 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17052.888689 + 30 +0.0 + 11 +26812.499914 + 21 +17065.879219 + 31 +0.0 + 0 +LINE + 5 +2042 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +17109.18049 + 30 +0.0 + 11 +26774.999914 + 21 +17130.831125 + 31 +0.0 + 0 +LINE + 5 +2043 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +17174.132395 + 30 +0.0 + 11 +26740.0 + 21 +17191.452753 + 31 +0.0 + 0 +LINE + 5 +2044 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17096.189959 + 30 +0.0 + 11 +26812.499914 + 21 +17109.180489 + 31 +0.0 + 0 +LINE + 5 +2045 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +17152.48176 + 30 +0.0 + 11 +26774.999914 + 21 +17174.132395 + 31 +0.0 + 0 +LINE + 5 +2046 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +17217.433665 + 30 +0.0 + 11 +26740.0 + 21 +17234.754023 + 31 +0.0 + 0 +LINE + 5 +2047 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17139.491229 + 30 +0.0 + 11 +26812.499914 + 21 +17152.48176 + 31 +0.0 + 0 +LINE + 5 +2048 + 8 +0 + 62 + 0 + 10 +26787.499914 + 20 +17195.78303 + 30 +0.0 + 11 +26774.999914 + 21 +17217.433665 + 31 +0.0 + 0 +LINE + 5 +2049 + 8 +0 + 62 + 0 + 10 +26749.999914 + 20 +17260.734935 + 30 +0.0 + 11 +26740.0 + 21 +17278.055293 + 31 +0.0 + 0 +LINE + 5 +204A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17182.792499 + 30 +0.0 + 11 +26812.499913 + 21 +17195.78303 + 31 +0.0 + 0 +LINE + 5 +204B + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17239.0843 + 30 +0.0 + 11 +26774.999913 + 21 +17260.734935 + 31 +0.0 + 0 +LINE + 5 +204C + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17304.036205 + 30 +0.0 + 11 +26740.0 + 21 +17321.356563 + 31 +0.0 + 0 +LINE + 5 +204D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17226.093769 + 30 +0.0 + 11 +26812.499913 + 21 +17239.0843 + 31 +0.0 + 0 +LINE + 5 +204E + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17282.38557 + 30 +0.0 + 11 +26774.999913 + 21 +17304.036205 + 31 +0.0 + 0 +LINE + 5 +204F + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17347.337475 + 30 +0.0 + 11 +26740.0 + 21 +17364.657833 + 31 +0.0 + 0 +LINE + 5 +2050 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17269.395039 + 30 +0.0 + 11 +26812.499913 + 21 +17282.38557 + 31 +0.0 + 0 +LINE + 5 +2051 + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17325.68684 + 30 +0.0 + 11 +26774.999913 + 21 +17347.337475 + 31 +0.0 + 0 +LINE + 5 +2052 + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17390.638746 + 30 +0.0 + 11 +26740.0 + 21 +17407.959103 + 31 +0.0 + 0 +LINE + 5 +2053 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17312.696309 + 30 +0.0 + 11 +26812.499913 + 21 +17325.68684 + 31 +0.0 + 0 +LINE + 5 +2054 + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17368.98811 + 30 +0.0 + 11 +26774.999913 + 21 +17390.638745 + 31 +0.0 + 0 +LINE + 5 +2055 + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17433.940016 + 30 +0.0 + 11 +26740.0 + 21 +17451.260373 + 31 +0.0 + 0 +LINE + 5 +2056 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17355.997579 + 30 +0.0 + 11 +26812.499913 + 21 +17368.98811 + 31 +0.0 + 0 +LINE + 5 +2057 + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17412.289381 + 30 +0.0 + 11 +26774.999913 + 21 +17433.940016 + 31 +0.0 + 0 +LINE + 5 +2058 + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17477.241286 + 30 +0.0 + 11 +26740.0 + 21 +17494.561643 + 31 +0.0 + 0 +LINE + 5 +2059 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17399.298849 + 30 +0.0 + 11 +26812.499913 + 21 +17412.28938 + 31 +0.0 + 0 +LINE + 5 +205A + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17455.590651 + 30 +0.0 + 11 +26774.999913 + 21 +17477.241286 + 31 +0.0 + 0 +LINE + 5 +205B + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17520.542556 + 30 +0.0 + 11 +26740.0 + 21 +17537.862913 + 31 +0.0 + 0 +LINE + 5 +205C + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17442.600119 + 30 +0.0 + 11 +26812.499913 + 21 +17455.590651 + 31 +0.0 + 0 +LINE + 5 +205D + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17498.891921 + 30 +0.0 + 11 +26774.999913 + 21 +17520.542556 + 31 +0.0 + 0 +LINE + 5 +205E + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17563.843826 + 30 +0.0 + 11 +26740.0 + 21 +17581.164183 + 31 +0.0 + 0 +LINE + 5 +205F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17485.901389 + 30 +0.0 + 11 +26812.499913 + 21 +17498.891921 + 31 +0.0 + 0 +LINE + 5 +2060 + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17542.193191 + 30 +0.0 + 11 +26774.999913 + 21 +17563.843826 + 31 +0.0 + 0 +LINE + 5 +2061 + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17607.145096 + 30 +0.0 + 11 +26740.0 + 21 +17624.465453 + 31 +0.0 + 0 +LINE + 5 +2062 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17529.202659 + 30 +0.0 + 11 +26812.499913 + 21 +17542.193191 + 31 +0.0 + 0 +LINE + 5 +2063 + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17585.494461 + 30 +0.0 + 11 +26774.999913 + 21 +17607.145096 + 31 +0.0 + 0 +LINE + 5 +2064 + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17650.446366 + 30 +0.0 + 11 +26740.0 + 21 +17667.766723 + 31 +0.0 + 0 +LINE + 5 +2065 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17572.503929 + 30 +0.0 + 11 +26812.499913 + 21 +17585.494461 + 31 +0.0 + 0 +LINE + 5 +2066 + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17628.795731 + 30 +0.0 + 11 +26774.999913 + 21 +17650.446366 + 31 +0.0 + 0 +LINE + 5 +2067 + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17693.747637 + 30 +0.0 + 11 +26740.0 + 21 +17711.067993 + 31 +0.0 + 0 +LINE + 5 +2068 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17615.805199 + 30 +0.0 + 11 +26812.499913 + 21 +17628.795731 + 31 +0.0 + 0 +LINE + 5 +2069 + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17672.097001 + 30 +0.0 + 11 +26774.999913 + 21 +17693.747636 + 31 +0.0 + 0 +LINE + 5 +206A + 8 +0 + 62 + 0 + 10 +26749.999913 + 20 +17737.048907 + 30 +0.0 + 11 +26741.800908 + 21 +17751.25 + 31 +0.0 + 0 +LINE + 5 +206B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17659.106469 + 30 +0.0 + 11 +26812.499913 + 21 +17672.097001 + 31 +0.0 + 0 +LINE + 5 +206C + 8 +0 + 62 + 0 + 10 +26787.499913 + 20 +17715.398272 + 30 +0.0 + 11 +26774.999913 + 21 +17737.048907 + 31 +0.0 + 0 +LINE + 5 +206D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17702.407739 + 30 +0.0 + 11 +26812.499912 + 21 +17715.398271 + 31 +0.0 + 0 +LINE + 5 +206E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +17745.709009 + 30 +0.0 + 11 +26816.800907 + 21 +17751.25 + 31 +0.0 + 0 +LINE + 5 +206F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14818.543487 + 30 +0.0 + 11 +26749.999939 + 21 +14835.863889 + 31 +0.0 + 0 +LINE + 5 +2070 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14879.16516 + 30 +0.0 + 11 +26787.499939 + 21 +14900.815795 + 31 +0.0 + 0 +LINE + 5 +2071 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14944.117065 + 30 +0.0 + 11 +26820.0 + 21 +14957.107551 + 31 +0.0 + 0 +LINE + 5 +2072 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14861.844757 + 30 +0.0 + 11 +26749.999939 + 21 +14879.16516 + 31 +0.0 + 0 +LINE + 5 +2073 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14922.46643 + 30 +0.0 + 11 +26787.499939 + 21 +14944.117065 + 31 +0.0 + 0 +LINE + 5 +2074 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14987.418335 + 30 +0.0 + 11 +26820.0 + 21 +15000.408821 + 31 +0.0 + 0 +LINE + 5 +2075 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14905.146027 + 30 +0.0 + 11 +26749.999939 + 21 +14922.46643 + 31 +0.0 + 0 +LINE + 5 +2076 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14965.7677 + 30 +0.0 + 11 +26787.499939 + 21 +14987.418335 + 31 +0.0 + 0 +LINE + 5 +2077 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +15030.719605 + 30 +0.0 + 11 +26820.0 + 21 +15043.710091 + 31 +0.0 + 0 +LINE + 5 +2078 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14948.447297 + 30 +0.0 + 11 +26749.99994 + 21 +14965.7677 + 31 +0.0 + 0 +LINE + 5 +2079 + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15009.06897 + 30 +0.0 + 11 +26787.49994 + 21 +15030.719605 + 31 +0.0 + 0 +LINE + 5 +207A + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15074.020875 + 30 +0.0 + 11 +26820.0 + 21 +15087.011361 + 31 +0.0 + 0 +LINE + 5 +207B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14991.748567 + 30 +0.0 + 11 +26749.99994 + 21 +15009.06897 + 31 +0.0 + 0 +LINE + 5 +207C + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15052.37024 + 30 +0.0 + 11 +26787.49994 + 21 +15074.020875 + 31 +0.0 + 0 +LINE + 5 +207D + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15117.322146 + 30 +0.0 + 11 +26820.0 + 21 +15130.312631 + 31 +0.0 + 0 +LINE + 5 +207E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15035.049837 + 30 +0.0 + 11 +26749.99994 + 21 +15052.37024 + 31 +0.0 + 0 +LINE + 5 +207F + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15095.67151 + 30 +0.0 + 11 +26787.49994 + 21 +15117.322145 + 31 +0.0 + 0 +LINE + 5 +2080 + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15160.623416 + 30 +0.0 + 11 +26820.0 + 21 +15173.613901 + 31 +0.0 + 0 +LINE + 5 +2081 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15078.351107 + 30 +0.0 + 11 +26749.99994 + 21 +15095.67151 + 31 +0.0 + 0 +LINE + 5 +2082 + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15138.972781 + 30 +0.0 + 11 +26787.49994 + 21 +15160.623416 + 31 +0.0 + 0 +LINE + 5 +2083 + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15203.924686 + 30 +0.0 + 11 +26820.0 + 21 +15216.915171 + 31 +0.0 + 0 +LINE + 5 +2084 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15121.652377 + 30 +0.0 + 11 +26749.99994 + 21 +15138.97278 + 31 +0.0 + 0 +LINE + 5 +2085 + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15182.274051 + 30 +0.0 + 11 +26787.49994 + 21 +15203.924686 + 31 +0.0 + 0 +LINE + 5 +2086 + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15247.225956 + 30 +0.0 + 11 +26820.0 + 21 +15260.216441 + 31 +0.0 + 0 +LINE + 5 +2087 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15164.953647 + 30 +0.0 + 11 +26749.99994 + 21 +15182.274051 + 31 +0.0 + 0 +LINE + 5 +2088 + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15225.575321 + 30 +0.0 + 11 +26787.49994 + 21 +15247.225956 + 31 +0.0 + 0 +LINE + 5 +2089 + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15290.527226 + 30 +0.0 + 11 +26820.0 + 21 +15303.517711 + 31 +0.0 + 0 +LINE + 5 +208A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15208.254917 + 30 +0.0 + 11 +26749.99994 + 21 +15225.575321 + 31 +0.0 + 0 +LINE + 5 +208B + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15268.876591 + 30 +0.0 + 11 +26787.49994 + 21 +15290.527226 + 31 +0.0 + 0 +LINE + 5 +208C + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15333.828496 + 30 +0.0 + 11 +26820.0 + 21 +15346.818981 + 31 +0.0 + 0 +LINE + 5 +208D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15251.556187 + 30 +0.0 + 11 +26749.99994 + 21 +15268.876591 + 31 +0.0 + 0 +LINE + 5 +208E + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15312.177861 + 30 +0.0 + 11 +26787.49994 + 21 +15333.828496 + 31 +0.0 + 0 +LINE + 5 +208F + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15377.129766 + 30 +0.0 + 11 +26820.0 + 21 +15390.120251 + 31 +0.0 + 0 +LINE + 5 +2090 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15294.857457 + 30 +0.0 + 11 +26749.99994 + 21 +15312.177861 + 31 +0.0 + 0 +LINE + 5 +2091 + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15355.479131 + 30 +0.0 + 11 +26787.49994 + 21 +15377.129766 + 31 +0.0 + 0 +LINE + 5 +2092 + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15420.431036 + 30 +0.0 + 11 +26820.0 + 21 +15433.421521 + 31 +0.0 + 0 +LINE + 5 +2093 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15338.158727 + 30 +0.0 + 11 +26749.99994 + 21 +15355.479131 + 31 +0.0 + 0 +LINE + 5 +2094 + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15398.780401 + 30 +0.0 + 11 +26787.49994 + 21 +15420.431036 + 31 +0.0 + 0 +LINE + 5 +2095 + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15463.732307 + 30 +0.0 + 11 +26820.0 + 21 +15476.722791 + 31 +0.0 + 0 +LINE + 5 +2096 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15381.459997 + 30 +0.0 + 11 +26749.99994 + 21 +15398.780401 + 31 +0.0 + 0 +LINE + 5 +2097 + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15442.081671 + 30 +0.0 + 11 +26787.49994 + 21 +15463.732307 + 31 +0.0 + 0 +LINE + 5 +2098 + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15507.033577 + 30 +0.0 + 11 +26820.0 + 21 +15520.024061 + 31 +0.0 + 0 +LINE + 5 +2099 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15424.761267 + 30 +0.0 + 11 +26749.99994 + 21 +15442.081671 + 31 +0.0 + 0 +LINE + 5 +209A + 8 +0 + 62 + 0 + 10 +26774.99994 + 20 +15485.382942 + 30 +0.0 + 11 +26787.49994 + 21 +15507.033577 + 31 +0.0 + 0 +LINE + 5 +209B + 8 +0 + 62 + 0 + 10 +26812.49994 + 20 +15550.334847 + 30 +0.0 + 11 +26820.0 + 21 +15563.325331 + 31 +0.0 + 0 +LINE + 5 +209C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15468.062537 + 30 +0.0 + 11 +26749.999941 + 21 +15485.382942 + 31 +0.0 + 0 +LINE + 5 +209D + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15528.684212 + 30 +0.0 + 11 +26787.499941 + 21 +15550.334847 + 31 +0.0 + 0 +LINE + 5 +209E + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15593.636117 + 30 +0.0 + 11 +26820.0 + 21 +15606.626601 + 31 +0.0 + 0 +LINE + 5 +209F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15511.363807 + 30 +0.0 + 11 +26749.999941 + 21 +15528.684212 + 31 +0.0 + 0 +LINE + 5 +20A0 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15571.985482 + 30 +0.0 + 11 +26787.499941 + 21 +15593.636117 + 31 +0.0 + 0 +LINE + 5 +20A1 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15636.937387 + 30 +0.0 + 11 +26820.0 + 21 +15649.927871 + 31 +0.0 + 0 +LINE + 5 +20A2 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15554.665077 + 30 +0.0 + 11 +26749.999941 + 21 +15571.985482 + 31 +0.0 + 0 +LINE + 5 +20A3 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15615.286752 + 30 +0.0 + 11 +26787.499941 + 21 +15636.937387 + 31 +0.0 + 0 +LINE + 5 +20A4 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15680.238657 + 30 +0.0 + 11 +26820.0 + 21 +15693.229141 + 31 +0.0 + 0 +LINE + 5 +20A5 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15597.966347 + 30 +0.0 + 11 +26749.999941 + 21 +15615.286752 + 31 +0.0 + 0 +LINE + 5 +20A6 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15658.588022 + 30 +0.0 + 11 +26787.499941 + 21 +15680.238657 + 31 +0.0 + 0 +LINE + 5 +20A7 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15723.539927 + 30 +0.0 + 11 +26820.0 + 21 +15736.530411 + 31 +0.0 + 0 +LINE + 5 +20A8 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15641.267617 + 30 +0.0 + 11 +26749.999941 + 21 +15658.588022 + 31 +0.0 + 0 +LINE + 5 +20A9 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15701.889292 + 30 +0.0 + 11 +26787.499941 + 21 +15723.539927 + 31 +0.0 + 0 +LINE + 5 +20AA + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15766.841198 + 30 +0.0 + 11 +26820.0 + 21 +15779.831681 + 31 +0.0 + 0 +LINE + 5 +20AB + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15684.568887 + 30 +0.0 + 11 +26749.999941 + 21 +15701.889292 + 31 +0.0 + 0 +LINE + 5 +20AC + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15745.190562 + 30 +0.0 + 11 +26787.499941 + 21 +15766.841198 + 31 +0.0 + 0 +LINE + 5 +20AD + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15810.142468 + 30 +0.0 + 11 +26820.0 + 21 +15823.132951 + 31 +0.0 + 0 +LINE + 5 +20AE + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15727.870157 + 30 +0.0 + 11 +26749.999941 + 21 +15745.190562 + 31 +0.0 + 0 +LINE + 5 +20AF + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15788.491833 + 30 +0.0 + 11 +26787.499941 + 21 +15810.142468 + 31 +0.0 + 0 +LINE + 5 +20B0 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15853.443738 + 30 +0.0 + 11 +26820.0 + 21 +15866.434221 + 31 +0.0 + 0 +LINE + 5 +20B1 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15771.171427 + 30 +0.0 + 11 +26749.999941 + 21 +15788.491833 + 31 +0.0 + 0 +LINE + 5 +20B2 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15831.793103 + 30 +0.0 + 11 +26787.499941 + 21 +15853.443738 + 31 +0.0 + 0 +LINE + 5 +20B3 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15896.745008 + 30 +0.0 + 11 +26820.0 + 21 +15909.735491 + 31 +0.0 + 0 +LINE + 5 +20B4 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15814.472697 + 30 +0.0 + 11 +26749.999941 + 21 +15831.793103 + 31 +0.0 + 0 +LINE + 5 +20B5 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15875.094373 + 30 +0.0 + 11 +26787.499941 + 21 +15896.745008 + 31 +0.0 + 0 +LINE + 5 +20B6 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15940.046278 + 30 +0.0 + 11 +26820.0 + 21 +15953.036761 + 31 +0.0 + 0 +LINE + 5 +20B7 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15857.773967 + 30 +0.0 + 11 +26749.999941 + 21 +15875.094373 + 31 +0.0 + 0 +LINE + 5 +20B8 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15918.395643 + 30 +0.0 + 11 +26787.499941 + 21 +15940.046278 + 31 +0.0 + 0 +LINE + 5 +20B9 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +15983.347548 + 30 +0.0 + 11 +26820.0 + 21 +15996.338031 + 31 +0.0 + 0 +LINE + 5 +20BA + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15901.075237 + 30 +0.0 + 11 +26749.999941 + 21 +15918.395643 + 31 +0.0 + 0 +LINE + 5 +20BB + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +15961.696913 + 30 +0.0 + 11 +26787.499941 + 21 +15983.347548 + 31 +0.0 + 0 +LINE + 5 +20BC + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +16026.648818 + 30 +0.0 + 11 +26820.0 + 21 +16039.639301 + 31 +0.0 + 0 +LINE + 5 +20BD + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15944.376507 + 30 +0.0 + 11 +26749.999941 + 21 +15961.696913 + 31 +0.0 + 0 +LINE + 5 +20BE + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +16004.998183 + 30 +0.0 + 11 +26787.499941 + 21 +16026.648818 + 31 +0.0 + 0 +LINE + 5 +20BF + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +16069.950089 + 30 +0.0 + 11 +26820.0 + 21 +16082.940571 + 31 +0.0 + 0 +LINE + 5 +20C0 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +15987.677777 + 30 +0.0 + 11 +26749.999941 + 21 +16004.998183 + 31 +0.0 + 0 +LINE + 5 +20C1 + 8 +0 + 62 + 0 + 10 +26774.999941 + 20 +16048.299453 + 30 +0.0 + 11 +26787.499941 + 21 +16069.950089 + 31 +0.0 + 0 +LINE + 5 +20C2 + 8 +0 + 62 + 0 + 10 +26812.499941 + 20 +16113.251359 + 30 +0.0 + 11 +26820.0 + 21 +16126.241841 + 31 +0.0 + 0 +LINE + 5 +20C3 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16030.979047 + 30 +0.0 + 11 +26749.999942 + 21 +16048.299453 + 31 +0.0 + 0 +LINE + 5 +20C4 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16091.600724 + 30 +0.0 + 11 +26787.499942 + 21 +16113.251359 + 31 +0.0 + 0 +LINE + 5 +20C5 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16156.552629 + 30 +0.0 + 11 +26820.0 + 21 +16169.543111 + 31 +0.0 + 0 +LINE + 5 +20C6 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16074.280317 + 30 +0.0 + 11 +26749.999942 + 21 +16091.600724 + 31 +0.0 + 0 +LINE + 5 +20C7 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16134.901994 + 30 +0.0 + 11 +26787.499942 + 21 +16156.552629 + 31 +0.0 + 0 +LINE + 5 +20C8 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16199.853899 + 30 +0.0 + 11 +26820.0 + 21 +16212.844381 + 31 +0.0 + 0 +LINE + 5 +20C9 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16117.581587 + 30 +0.0 + 11 +26749.999942 + 21 +16134.901994 + 31 +0.0 + 0 +LINE + 5 +20CA + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16178.203264 + 30 +0.0 + 11 +26787.499942 + 21 +16199.853899 + 31 +0.0 + 0 +LINE + 5 +20CB + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16243.155169 + 30 +0.0 + 11 +26820.0 + 21 +16256.145651 + 31 +0.0 + 0 +LINE + 5 +20CC + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16160.882857 + 30 +0.0 + 11 +26749.999942 + 21 +16178.203264 + 31 +0.0 + 0 +LINE + 5 +20CD + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16221.504534 + 30 +0.0 + 11 +26787.499942 + 21 +16243.155169 + 31 +0.0 + 0 +LINE + 5 +20CE + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16286.456439 + 30 +0.0 + 11 +26820.0 + 21 +16299.446921 + 31 +0.0 + 0 +LINE + 5 +20CF + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16204.184127 + 30 +0.0 + 11 +26749.999942 + 21 +16221.504534 + 31 +0.0 + 0 +LINE + 5 +20D0 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16264.805804 + 30 +0.0 + 11 +26787.499942 + 21 +16286.456439 + 31 +0.0 + 0 +LINE + 5 +20D1 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16329.757709 + 30 +0.0 + 11 +26820.0 + 21 +16342.748191 + 31 +0.0 + 0 +LINE + 5 +20D2 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16247.485397 + 30 +0.0 + 11 +26749.999942 + 21 +16264.805804 + 31 +0.0 + 0 +LINE + 5 +20D3 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16308.107074 + 30 +0.0 + 11 +26787.499942 + 21 +16329.757709 + 31 +0.0 + 0 +LINE + 5 +20D4 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16373.05898 + 30 +0.0 + 11 +26820.0 + 21 +16386.049461 + 31 +0.0 + 0 +LINE + 5 +20D5 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16290.786667 + 30 +0.0 + 11 +26749.999942 + 21 +16308.107074 + 31 +0.0 + 0 +LINE + 5 +20D6 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16351.408344 + 30 +0.0 + 11 +26787.499942 + 21 +16373.05898 + 31 +0.0 + 0 +LINE + 5 +20D7 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16416.36025 + 30 +0.0 + 11 +26820.0 + 21 +16429.350731 + 31 +0.0 + 0 +LINE + 5 +20D8 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16334.087937 + 30 +0.0 + 11 +26749.999942 + 21 +16351.408344 + 31 +0.0 + 0 +LINE + 5 +20D9 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16394.709615 + 30 +0.0 + 11 +26787.499942 + 21 +16416.36025 + 31 +0.0 + 0 +LINE + 5 +20DA + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16459.66152 + 30 +0.0 + 11 +26820.0 + 21 +16472.652001 + 31 +0.0 + 0 +LINE + 5 +20DB + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16377.389207 + 30 +0.0 + 11 +26749.999942 + 21 +16394.709615 + 31 +0.0 + 0 +LINE + 5 +20DC + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16438.010885 + 30 +0.0 + 11 +26787.499942 + 21 +16459.66152 + 31 +0.0 + 0 +LINE + 5 +20DD + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16502.96279 + 30 +0.0 + 11 +26820.0 + 21 +16515.953271 + 31 +0.0 + 0 +LINE + 5 +20DE + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16420.690477 + 30 +0.0 + 11 +26749.999942 + 21 +16438.010885 + 31 +0.0 + 0 +LINE + 5 +20DF + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16481.312155 + 30 +0.0 + 11 +26787.499942 + 21 +16502.96279 + 31 +0.0 + 0 +LINE + 5 +20E0 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16546.26406 + 30 +0.0 + 11 +26820.0 + 21 +16559.254541 + 31 +0.0 + 0 +LINE + 5 +20E1 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16463.991747 + 30 +0.0 + 11 +26749.999942 + 21 +16481.312155 + 31 +0.0 + 0 +LINE + 5 +20E2 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16524.613425 + 30 +0.0 + 11 +26787.499942 + 21 +16546.26406 + 31 +0.0 + 0 +LINE + 5 +20E3 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16589.56533 + 30 +0.0 + 11 +26820.0 + 21 +16602.555811 + 31 +0.0 + 0 +LINE + 5 +20E4 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16507.293017 + 30 +0.0 + 11 +26749.999942 + 21 +16524.613425 + 31 +0.0 + 0 +LINE + 5 +20E5 + 8 +0 + 62 + 0 + 10 +26774.999942 + 20 +16567.914695 + 30 +0.0 + 11 +26787.499942 + 21 +16589.56533 + 31 +0.0 + 0 +LINE + 5 +20E6 + 8 +0 + 62 + 0 + 10 +26812.499942 + 20 +16632.8666 + 30 +0.0 + 11 +26820.0 + 21 +16645.857081 + 31 +0.0 + 0 +LINE + 5 +20E7 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16550.594287 + 30 +0.0 + 11 +26749.999943 + 21 +16567.914695 + 31 +0.0 + 0 +LINE + 5 +20E8 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16611.215965 + 30 +0.0 + 11 +26787.499943 + 21 +16632.8666 + 31 +0.0 + 0 +LINE + 5 +20E9 + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16676.167871 + 30 +0.0 + 11 +26820.0 + 21 +16689.158351 + 31 +0.0 + 0 +LINE + 5 +20EA + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16593.895557 + 30 +0.0 + 11 +26749.999943 + 21 +16611.215965 + 31 +0.0 + 0 +LINE + 5 +20EB + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16654.517235 + 30 +0.0 + 11 +26787.499943 + 21 +16676.167871 + 31 +0.0 + 0 +LINE + 5 +20EC + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16719.469141 + 30 +0.0 + 11 +26820.0 + 21 +16732.459621 + 31 +0.0 + 0 +LINE + 5 +20ED + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16637.196827 + 30 +0.0 + 11 +26749.999943 + 21 +16654.517235 + 31 +0.0 + 0 +LINE + 5 +20EE + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16697.818506 + 30 +0.0 + 11 +26787.499943 + 21 +16719.469141 + 31 +0.0 + 0 +LINE + 5 +20EF + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16762.770411 + 30 +0.0 + 11 +26820.0 + 21 +16775.760891 + 31 +0.0 + 0 +LINE + 5 +20F0 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16680.498097 + 30 +0.0 + 11 +26749.999943 + 21 +16697.818506 + 31 +0.0 + 0 +LINE + 5 +20F1 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16741.119776 + 30 +0.0 + 11 +26787.499943 + 21 +16762.770411 + 31 +0.0 + 0 +LINE + 5 +20F2 + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16806.071681 + 30 +0.0 + 11 +26820.0 + 21 +16819.062161 + 31 +0.0 + 0 +LINE + 5 +20F3 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16723.799367 + 30 +0.0 + 11 +26749.999943 + 21 +16741.119776 + 31 +0.0 + 0 +LINE + 5 +20F4 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16784.421046 + 30 +0.0 + 11 +26787.499943 + 21 +16806.071681 + 31 +0.0 + 0 +LINE + 5 +20F5 + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16849.372951 + 30 +0.0 + 11 +26820.0 + 21 +16862.363431 + 31 +0.0 + 0 +LINE + 5 +20F6 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16767.100637 + 30 +0.0 + 11 +26749.999943 + 21 +16784.421046 + 31 +0.0 + 0 +LINE + 5 +20F7 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16827.722316 + 30 +0.0 + 11 +26787.499943 + 21 +16849.372951 + 31 +0.0 + 0 +LINE + 5 +20F8 + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16892.674221 + 30 +0.0 + 11 +26820.0 + 21 +16905.664701 + 31 +0.0 + 0 +LINE + 5 +20F9 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16810.401907 + 30 +0.0 + 11 +26749.999943 + 21 +16827.722316 + 31 +0.0 + 0 +LINE + 5 +20FA + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16871.023586 + 30 +0.0 + 11 +26787.499943 + 21 +16892.674221 + 31 +0.0 + 0 +LINE + 5 +20FB + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16935.975491 + 30 +0.0 + 11 +26820.0 + 21 +16948.965971 + 31 +0.0 + 0 +LINE + 5 +20FC + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16853.703177 + 30 +0.0 + 11 +26749.999943 + 21 +16871.023586 + 31 +0.0 + 0 +LINE + 5 +20FD + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16914.324856 + 30 +0.0 + 11 +26787.499943 + 21 +16935.975491 + 31 +0.0 + 0 +LINE + 5 +20FE + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +16979.276762 + 30 +0.0 + 11 +26820.0 + 21 +16992.267241 + 31 +0.0 + 0 +LINE + 5 +20FF + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16897.004447 + 30 +0.0 + 11 +26749.999943 + 21 +16914.324856 + 31 +0.0 + 0 +LINE + 5 +2100 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +16957.626126 + 30 +0.0 + 11 +26787.499943 + 21 +16979.276762 + 31 +0.0 + 0 +LINE + 5 +2101 + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +17022.578032 + 30 +0.0 + 11 +26820.0 + 21 +17035.568511 + 31 +0.0 + 0 +LINE + 5 +2102 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16940.305717 + 30 +0.0 + 11 +26749.999943 + 21 +16957.626126 + 31 +0.0 + 0 +LINE + 5 +2103 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +17000.927397 + 30 +0.0 + 11 +26787.499943 + 21 +17022.578032 + 31 +0.0 + 0 +LINE + 5 +2104 + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +17065.879302 + 30 +0.0 + 11 +26820.0 + 21 +17078.869781 + 31 +0.0 + 0 +LINE + 5 +2105 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +16983.606987 + 30 +0.0 + 11 +26749.999943 + 21 +17000.927397 + 31 +0.0 + 0 +LINE + 5 +2106 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +17044.228667 + 30 +0.0 + 11 +26787.499943 + 21 +17065.879302 + 31 +0.0 + 0 +LINE + 5 +2107 + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +17109.180572 + 30 +0.0 + 11 +26820.0 + 21 +17122.171051 + 31 +0.0 + 0 +LINE + 5 +2108 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17026.908257 + 30 +0.0 + 11 +26749.999943 + 21 +17044.228667 + 31 +0.0 + 0 +LINE + 5 +2109 + 8 +0 + 62 + 0 + 10 +26774.999943 + 20 +17087.529937 + 30 +0.0 + 11 +26787.499943 + 21 +17109.180572 + 31 +0.0 + 0 +LINE + 5 +210A + 8 +0 + 62 + 0 + 10 +26812.499943 + 20 +17152.481842 + 30 +0.0 + 11 +26820.0 + 21 +17165.472321 + 31 +0.0 + 0 +LINE + 5 +210B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17070.209527 + 30 +0.0 + 11 +26749.999944 + 21 +17087.529937 + 31 +0.0 + 0 +LINE + 5 +210C + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17130.831207 + 30 +0.0 + 11 +26787.499944 + 21 +17152.481842 + 31 +0.0 + 0 +LINE + 5 +210D + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17195.783112 + 30 +0.0 + 11 +26820.0 + 21 +17208.773591 + 31 +0.0 + 0 +LINE + 5 +210E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17113.510797 + 30 +0.0 + 11 +26749.999944 + 21 +17130.831207 + 31 +0.0 + 0 +LINE + 5 +210F + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17174.132477 + 30 +0.0 + 11 +26787.499944 + 21 +17195.783112 + 31 +0.0 + 0 +LINE + 5 +2110 + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17239.084382 + 30 +0.0 + 11 +26820.0 + 21 +17252.074861 + 31 +0.0 + 0 +LINE + 5 +2111 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17156.812067 + 30 +0.0 + 11 +26749.999944 + 21 +17174.132477 + 31 +0.0 + 0 +LINE + 5 +2112 + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17217.433747 + 30 +0.0 + 11 +26787.499944 + 21 +17239.084382 + 31 +0.0 + 0 +LINE + 5 +2113 + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17282.385653 + 30 +0.0 + 11 +26820.0 + 21 +17295.376131 + 31 +0.0 + 0 +LINE + 5 +2114 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17200.113337 + 30 +0.0 + 11 +26749.999944 + 21 +17217.433747 + 31 +0.0 + 0 +LINE + 5 +2115 + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17260.735017 + 30 +0.0 + 11 +26787.499944 + 21 +17282.385653 + 31 +0.0 + 0 +LINE + 5 +2116 + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17325.686923 + 30 +0.0 + 11 +26820.0 + 21 +17338.677401 + 31 +0.0 + 0 +LINE + 5 +2117 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17243.414607 + 30 +0.0 + 11 +26749.999944 + 21 +17260.735017 + 31 +0.0 + 0 +LINE + 5 +2118 + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17304.036288 + 30 +0.0 + 11 +26787.499944 + 21 +17325.686923 + 31 +0.0 + 0 +LINE + 5 +2119 + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17368.988193 + 30 +0.0 + 11 +26820.0 + 21 +17381.978671 + 31 +0.0 + 0 +LINE + 5 +211A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17286.715877 + 30 +0.0 + 11 +26749.999944 + 21 +17304.036288 + 31 +0.0 + 0 +LINE + 5 +211B + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17347.337558 + 30 +0.0 + 11 +26787.499944 + 21 +17368.988193 + 31 +0.0 + 0 +LINE + 5 +211C + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17412.289463 + 30 +0.0 + 11 +26820.0 + 21 +17425.279941 + 31 +0.0 + 0 +LINE + 5 +211D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17330.017147 + 30 +0.0 + 11 +26749.999944 + 21 +17347.337558 + 31 +0.0 + 0 +LINE + 5 +211E + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17390.638828 + 30 +0.0 + 11 +26787.499944 + 21 +17412.289463 + 31 +0.0 + 0 +LINE + 5 +211F + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17455.590733 + 30 +0.0 + 11 +26820.0 + 21 +17468.581211 + 31 +0.0 + 0 +LINE + 5 +2120 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17373.318417 + 30 +0.0 + 11 +26749.999944 + 21 +17390.638828 + 31 +0.0 + 0 +LINE + 5 +2121 + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17433.940098 + 30 +0.0 + 11 +26787.499944 + 21 +17455.590733 + 31 +0.0 + 0 +LINE + 5 +2122 + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17498.892003 + 30 +0.0 + 11 +26820.0 + 21 +17511.882481 + 31 +0.0 + 0 +LINE + 5 +2123 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17416.619687 + 30 +0.0 + 11 +26749.999944 + 21 +17433.940098 + 31 +0.0 + 0 +LINE + 5 +2124 + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17477.241368 + 30 +0.0 + 11 +26787.499944 + 21 +17498.892003 + 31 +0.0 + 0 +LINE + 5 +2125 + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17542.193273 + 30 +0.0 + 11 +26820.0 + 21 +17555.183751 + 31 +0.0 + 0 +LINE + 5 +2126 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17459.920957 + 30 +0.0 + 11 +26749.999944 + 21 +17477.241368 + 31 +0.0 + 0 +LINE + 5 +2127 + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17520.542638 + 30 +0.0 + 11 +26787.499944 + 21 +17542.193273 + 31 +0.0 + 0 +LINE + 5 +2128 + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17585.494544 + 30 +0.0 + 11 +26820.0 + 21 +17598.485021 + 31 +0.0 + 0 +LINE + 5 +2129 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17503.222227 + 30 +0.0 + 11 +26749.999944 + 21 +17520.542638 + 31 +0.0 + 0 +LINE + 5 +212A + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17563.843908 + 30 +0.0 + 11 +26787.499944 + 21 +17585.494544 + 31 +0.0 + 0 +LINE + 5 +212B + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17628.795814 + 30 +0.0 + 11 +26820.0 + 21 +17641.786291 + 31 +0.0 + 0 +LINE + 5 +212C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17546.523497 + 30 +0.0 + 11 +26749.999944 + 21 +17563.843908 + 31 +0.0 + 0 +LINE + 5 +212D + 8 +0 + 62 + 0 + 10 +26774.999944 + 20 +17607.145179 + 30 +0.0 + 11 +26787.499944 + 21 +17628.795814 + 31 +0.0 + 0 +LINE + 5 +212E + 8 +0 + 62 + 0 + 10 +26812.499944 + 20 +17672.097084 + 30 +0.0 + 11 +26820.0 + 21 +17685.087561 + 31 +0.0 + 0 +LINE + 5 +212F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17589.824767 + 30 +0.0 + 11 +26749.999945 + 21 +17607.145179 + 31 +0.0 + 0 +LINE + 5 +2130 + 8 +0 + 62 + 0 + 10 +26774.999945 + 20 +17650.446449 + 30 +0.0 + 11 +26787.499945 + 21 +17672.097084 + 31 +0.0 + 0 +LINE + 5 +2131 + 8 +0 + 62 + 0 + 10 +26812.499945 + 20 +17715.398354 + 30 +0.0 + 11 +26820.0 + 21 +17728.388831 + 31 +0.0 + 0 +LINE + 5 +2132 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17633.126037 + 30 +0.0 + 11 +26749.999945 + 21 +17650.446449 + 31 +0.0 + 0 +LINE + 5 +2133 + 8 +0 + 62 + 0 + 10 +26774.999945 + 20 +17693.747719 + 30 +0.0 + 11 +26787.499945 + 21 +17715.398354 + 31 +0.0 + 0 +LINE + 5 +2134 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17676.427307 + 30 +0.0 + 11 +26749.999945 + 21 +17693.747719 + 31 +0.0 + 0 +LINE + 5 +2135 + 8 +0 + 62 + 0 + 10 +26774.999945 + 20 +17737.048989 + 30 +0.0 + 11 +26783.198902 + 21 +17751.25 + 31 +0.0 + 0 +LINE + 5 +2136 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +17719.728577 + 30 +0.0 + 11 +26749.999945 + 21 +17737.048989 + 31 +0.0 + 0 +LINE + 5 +2137 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14775.242217 + 30 +0.0 + 11 +26749.999939 + 21 +14792.562619 + 31 +0.0 + 0 +LINE + 5 +2138 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14835.86389 + 30 +0.0 + 11 +26787.499939 + 21 +14857.514525 + 31 +0.0 + 0 +LINE + 5 +2139 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14900.815795 + 30 +0.0 + 11 +26820.0 + 21 +14913.806281 + 31 +0.0 + 0 +LINE + 5 +213A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14731.940947 + 30 +0.0 + 11 +26749.999939 + 21 +14749.261349 + 31 +0.0 + 0 +LINE + 5 +213B + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14792.562619 + 30 +0.0 + 11 +26787.499939 + 21 +14814.213254 + 31 +0.0 + 0 +LINE + 5 +213C + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14857.514525 + 30 +0.0 + 11 +26820.0 + 21 +14870.505011 + 31 +0.0 + 0 +LINE + 5 +213D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14688.639677 + 30 +0.0 + 11 +26749.999939 + 21 +14705.960079 + 31 +0.0 + 0 +LINE + 5 +213E + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14749.261349 + 30 +0.0 + 11 +26787.499939 + 21 +14770.911984 + 31 +0.0 + 0 +LINE + 5 +213F + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14814.213255 + 30 +0.0 + 11 +26820.0 + 21 +14827.203741 + 31 +0.0 + 0 +LINE + 5 +2140 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14645.338407 + 30 +0.0 + 11 +26749.999939 + 21 +14662.658809 + 31 +0.0 + 0 +LINE + 5 +2141 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14705.960079 + 30 +0.0 + 11 +26787.499939 + 21 +14727.610714 + 31 +0.0 + 0 +LINE + 5 +2142 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14770.911984 + 30 +0.0 + 11 +26820.0 + 21 +14783.902471 + 31 +0.0 + 0 +LINE + 5 +2143 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14602.037137 + 30 +0.0 + 11 +26749.999939 + 21 +14619.357539 + 31 +0.0 + 0 +LINE + 5 +2144 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14662.658809 + 30 +0.0 + 11 +26787.499939 + 21 +14684.309444 + 31 +0.0 + 0 +LINE + 5 +2145 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14727.610714 + 30 +0.0 + 11 +26820.0 + 21 +14740.601201 + 31 +0.0 + 0 +LINE + 5 +2146 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14558.735867 + 30 +0.0 + 11 +26749.999939 + 21 +14576.056269 + 31 +0.0 + 0 +LINE + 5 +2147 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14619.357539 + 30 +0.0 + 11 +26787.499939 + 21 +14641.008174 + 31 +0.0 + 0 +LINE + 5 +2148 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14684.309444 + 30 +0.0 + 11 +26820.0 + 21 +14697.299931 + 31 +0.0 + 0 +LINE + 5 +2149 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14515.434597 + 30 +0.0 + 11 +26749.999939 + 21 +14532.754998 + 31 +0.0 + 0 +LINE + 5 +214A + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14576.056269 + 30 +0.0 + 11 +26787.499939 + 21 +14597.706904 + 31 +0.0 + 0 +LINE + 5 +214B + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14641.008174 + 30 +0.0 + 11 +26820.0 + 21 +14653.998661 + 31 +0.0 + 0 +LINE + 5 +214C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14472.133327 + 30 +0.0 + 11 +26749.999939 + 21 +14489.453728 + 31 +0.0 + 0 +LINE + 5 +214D + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14532.754999 + 30 +0.0 + 11 +26787.499939 + 21 +14554.405634 + 31 +0.0 + 0 +LINE + 5 +214E + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14597.706904 + 30 +0.0 + 11 +26820.0 + 21 +14610.697391 + 31 +0.0 + 0 +LINE + 5 +214F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14428.832057 + 30 +0.0 + 11 +26749.999939 + 21 +14446.152458 + 31 +0.0 + 0 +LINE + 5 +2150 + 8 +0 + 62 + 0 + 10 +26774.999939 + 20 +14489.453728 + 30 +0.0 + 11 +26787.499939 + 21 +14511.104363 + 31 +0.0 + 0 +LINE + 5 +2151 + 8 +0 + 62 + 0 + 10 +26812.499939 + 20 +14554.405634 + 30 +0.0 + 11 +26820.0 + 21 +14567.396121 + 31 +0.0 + 0 +LINE + 5 +2152 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14385.530787 + 30 +0.0 + 11 +26749.999938 + 21 +14402.851188 + 31 +0.0 + 0 +LINE + 5 +2153 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14446.152458 + 30 +0.0 + 11 +26787.499938 + 21 +14467.803093 + 31 +0.0 + 0 +LINE + 5 +2154 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14511.104364 + 30 +0.0 + 11 +26820.0 + 21 +14524.094851 + 31 +0.0 + 0 +LINE + 5 +2155 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14342.229517 + 30 +0.0 + 11 +26749.999938 + 21 +14359.549918 + 31 +0.0 + 0 +LINE + 5 +2156 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14402.851188 + 30 +0.0 + 11 +26787.499938 + 21 +14424.501823 + 31 +0.0 + 0 +LINE + 5 +2157 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14467.803093 + 30 +0.0 + 11 +26820.0 + 21 +14480.793581 + 31 +0.0 + 0 +LINE + 5 +2158 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14298.928247 + 30 +0.0 + 11 +26749.999938 + 21 +14316.248648 + 31 +0.0 + 0 +LINE + 5 +2159 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14359.549918 + 30 +0.0 + 11 +26787.499938 + 21 +14381.200553 + 31 +0.0 + 0 +LINE + 5 +215A + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14424.501823 + 30 +0.0 + 11 +26820.0 + 21 +14437.492311 + 31 +0.0 + 0 +LINE + 5 +215B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14255.626977 + 30 +0.0 + 11 +26749.999938 + 21 +14272.947378 + 31 +0.0 + 0 +LINE + 5 +215C + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14316.248648 + 30 +0.0 + 11 +26787.499938 + 21 +14337.899283 + 31 +0.0 + 0 +LINE + 5 +215D + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14381.200553 + 30 +0.0 + 11 +26820.0 + 21 +14394.191041 + 31 +0.0 + 0 +LINE + 5 +215E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14212.325707 + 30 +0.0 + 11 +26749.999938 + 21 +14229.646107 + 31 +0.0 + 0 +LINE + 5 +215F + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14272.947378 + 30 +0.0 + 11 +26787.499938 + 21 +14294.598013 + 31 +0.0 + 0 +LINE + 5 +2160 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14337.899283 + 30 +0.0 + 11 +26820.0 + 21 +14350.889771 + 31 +0.0 + 0 +LINE + 5 +2161 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14169.024437 + 30 +0.0 + 11 +26749.999938 + 21 +14186.344837 + 31 +0.0 + 0 +LINE + 5 +2162 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14229.646108 + 30 +0.0 + 11 +26787.499938 + 21 +14251.296743 + 31 +0.0 + 0 +LINE + 5 +2163 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14294.598013 + 30 +0.0 + 11 +26820.0 + 21 +14307.588501 + 31 +0.0 + 0 +LINE + 5 +2164 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14125.723167 + 30 +0.0 + 11 +26749.999938 + 21 +14143.043567 + 31 +0.0 + 0 +LINE + 5 +2165 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14186.344837 + 30 +0.0 + 11 +26787.499938 + 21 +14207.995472 + 31 +0.0 + 0 +LINE + 5 +2166 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14251.296743 + 30 +0.0 + 11 +26820.0 + 21 +14264.287231 + 31 +0.0 + 0 +LINE + 5 +2167 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14082.421897 + 30 +0.0 + 11 +26749.999938 + 21 +14099.742297 + 31 +0.0 + 0 +LINE + 5 +2168 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14143.043567 + 30 +0.0 + 11 +26787.499938 + 21 +14164.694202 + 31 +0.0 + 0 +LINE + 5 +2169 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14207.995473 + 30 +0.0 + 11 +26820.0 + 21 +14220.985961 + 31 +0.0 + 0 +LINE + 5 +216A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +14039.120627 + 30 +0.0 + 11 +26749.999938 + 21 +14056.441027 + 31 +0.0 + 0 +LINE + 5 +216B + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14099.742297 + 30 +0.0 + 11 +26787.499938 + 21 +14121.392932 + 31 +0.0 + 0 +LINE + 5 +216C + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14164.694202 + 30 +0.0 + 11 +26820.0 + 21 +14177.684691 + 31 +0.0 + 0 +LINE + 5 +216D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13995.819357 + 30 +0.0 + 11 +26749.999938 + 21 +14013.139757 + 31 +0.0 + 0 +LINE + 5 +216E + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14056.441027 + 30 +0.0 + 11 +26787.499938 + 21 +14078.091662 + 31 +0.0 + 0 +LINE + 5 +216F + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14121.392932 + 30 +0.0 + 11 +26820.0 + 21 +14134.383421 + 31 +0.0 + 0 +LINE + 5 +2170 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13952.518087 + 30 +0.0 + 11 +26749.999938 + 21 +13969.838487 + 31 +0.0 + 0 +LINE + 5 +2171 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +14013.139757 + 30 +0.0 + 11 +26787.499938 + 21 +14034.790392 + 31 +0.0 + 0 +LINE + 5 +2172 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14078.091662 + 30 +0.0 + 11 +26820.0 + 21 +14091.082151 + 31 +0.0 + 0 +LINE + 5 +2173 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13909.216817 + 30 +0.0 + 11 +26749.999938 + 21 +13926.537216 + 31 +0.0 + 0 +LINE + 5 +2174 + 8 +0 + 62 + 0 + 10 +26774.999938 + 20 +13969.838487 + 30 +0.0 + 11 +26787.499938 + 21 +13991.489122 + 31 +0.0 + 0 +LINE + 5 +2175 + 8 +0 + 62 + 0 + 10 +26812.499938 + 20 +14034.790392 + 30 +0.0 + 11 +26820.0 + 21 +14047.780881 + 31 +0.0 + 0 +LINE + 5 +2176 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13865.915547 + 30 +0.0 + 11 +26749.999937 + 21 +13883.235946 + 31 +0.0 + 0 +LINE + 5 +2177 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13926.537217 + 30 +0.0 + 11 +26787.499937 + 21 +13948.187852 + 31 +0.0 + 0 +LINE + 5 +2178 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13991.489122 + 30 +0.0 + 11 +26820.0 + 21 +14004.479611 + 31 +0.0 + 0 +LINE + 5 +2179 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13822.614277 + 30 +0.0 + 11 +26749.999937 + 21 +13839.934676 + 31 +0.0 + 0 +LINE + 5 +217A + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13883.235946 + 30 +0.0 + 11 +26787.499937 + 21 +13904.886581 + 31 +0.0 + 0 +LINE + 5 +217B + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13948.187852 + 30 +0.0 + 11 +26820.0 + 21 +13961.178341 + 31 +0.0 + 0 +LINE + 5 +217C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13779.313007 + 30 +0.0 + 11 +26749.999937 + 21 +13796.633406 + 31 +0.0 + 0 +LINE + 5 +217D + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13839.934676 + 30 +0.0 + 11 +26787.499937 + 21 +13861.585311 + 31 +0.0 + 0 +LINE + 5 +217E + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13904.886582 + 30 +0.0 + 11 +26820.0 + 21 +13917.877071 + 31 +0.0 + 0 +LINE + 5 +217F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13736.011737 + 30 +0.0 + 11 +26749.999937 + 21 +13753.332136 + 31 +0.0 + 0 +LINE + 5 +2180 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13796.633406 + 30 +0.0 + 11 +26787.499937 + 21 +13818.284041 + 31 +0.0 + 0 +LINE + 5 +2181 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13861.585311 + 30 +0.0 + 11 +26820.0 + 21 +13874.575801 + 31 +0.0 + 0 +LINE + 5 +2182 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13692.710467 + 30 +0.0 + 11 +26749.999937 + 21 +13710.030866 + 31 +0.0 + 0 +LINE + 5 +2183 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13753.332136 + 30 +0.0 + 11 +26787.499937 + 21 +13774.982771 + 31 +0.0 + 0 +LINE + 5 +2184 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13818.284041 + 30 +0.0 + 11 +26820.0 + 21 +13831.274531 + 31 +0.0 + 0 +LINE + 5 +2185 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13649.409197 + 30 +0.0 + 11 +26749.999937 + 21 +13666.729596 + 31 +0.0 + 0 +LINE + 5 +2186 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13710.030866 + 30 +0.0 + 11 +26787.499937 + 21 +13731.681501 + 31 +0.0 + 0 +LINE + 5 +2187 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13774.982771 + 30 +0.0 + 11 +26820.0 + 21 +13787.973261 + 31 +0.0 + 0 +LINE + 5 +2188 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13606.107927 + 30 +0.0 + 11 +26749.999937 + 21 +13623.428325 + 31 +0.0 + 0 +LINE + 5 +2189 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13666.729596 + 30 +0.0 + 11 +26787.499937 + 21 +13688.380231 + 31 +0.0 + 0 +LINE + 5 +218A + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13731.681501 + 30 +0.0 + 11 +26820.0 + 21 +13744.671991 + 31 +0.0 + 0 +LINE + 5 +218B + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13562.806657 + 30 +0.0 + 11 +26749.999937 + 21 +13580.127055 + 31 +0.0 + 0 +LINE + 5 +218C + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13623.428326 + 30 +0.0 + 11 +26787.499937 + 21 +13645.078961 + 31 +0.0 + 0 +LINE + 5 +218D + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13688.380231 + 30 +0.0 + 11 +26820.0 + 21 +13701.370721 + 31 +0.0 + 0 +LINE + 5 +218E + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13519.505387 + 30 +0.0 + 11 +26749.999937 + 21 +13536.825785 + 31 +0.0 + 0 +LINE + 5 +218F + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13580.127055 + 30 +0.0 + 11 +26787.499937 + 21 +13601.77769 + 31 +0.0 + 0 +LINE + 5 +2190 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13645.078961 + 30 +0.0 + 11 +26820.0 + 21 +13658.069451 + 31 +0.0 + 0 +LINE + 5 +2191 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13476.204117 + 30 +0.0 + 11 +26749.999937 + 21 +13493.524515 + 31 +0.0 + 0 +LINE + 5 +2192 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13536.825785 + 30 +0.0 + 11 +26787.499937 + 21 +13558.47642 + 31 +0.0 + 0 +LINE + 5 +2193 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13601.777691 + 30 +0.0 + 11 +26820.0 + 21 +13614.768181 + 31 +0.0 + 0 +LINE + 5 +2194 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13432.902847 + 30 +0.0 + 11 +26749.999937 + 21 +13450.223245 + 31 +0.0 + 0 +LINE + 5 +2195 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13493.524515 + 30 +0.0 + 11 +26787.499937 + 21 +13515.17515 + 31 +0.0 + 0 +LINE + 5 +2196 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13558.47642 + 30 +0.0 + 11 +26820.0 + 21 +13571.466911 + 31 +0.0 + 0 +LINE + 5 +2197 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13389.601577 + 30 +0.0 + 11 +26749.999937 + 21 +13406.921975 + 31 +0.0 + 0 +LINE + 5 +2198 + 8 +0 + 62 + 0 + 10 +26774.999937 + 20 +13450.223245 + 30 +0.0 + 11 +26787.499937 + 21 +13471.87388 + 31 +0.0 + 0 +LINE + 5 +2199 + 8 +0 + 62 + 0 + 10 +26812.499937 + 20 +13515.17515 + 30 +0.0 + 11 +26820.0 + 21 +13528.165641 + 31 +0.0 + 0 +LINE + 5 +219A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13346.300307 + 30 +0.0 + 11 +26749.999936 + 21 +13363.620705 + 31 +0.0 + 0 +LINE + 5 +219B + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13406.921975 + 30 +0.0 + 11 +26787.499936 + 21 +13428.57261 + 31 +0.0 + 0 +LINE + 5 +219C + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13471.87388 + 30 +0.0 + 11 +26820.0 + 21 +13484.864371 + 31 +0.0 + 0 +LINE + 5 +219D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13302.999037 + 30 +0.0 + 11 +26749.999936 + 21 +13320.319434 + 31 +0.0 + 0 +LINE + 5 +219E + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13363.620705 + 30 +0.0 + 11 +26787.499936 + 21 +13385.27134 + 31 +0.0 + 0 +LINE + 5 +219F + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13428.57261 + 30 +0.0 + 11 +26820.0 + 21 +13441.563101 + 31 +0.0 + 0 +LINE + 5 +21A0 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13259.697767 + 30 +0.0 + 11 +26749.999936 + 21 +13277.018164 + 31 +0.0 + 0 +LINE + 5 +21A1 + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13320.319435 + 30 +0.0 + 11 +26787.499936 + 21 +13341.97007 + 31 +0.0 + 0 +LINE + 5 +21A2 + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13385.27134 + 30 +0.0 + 11 +26820.0 + 21 +13398.261831 + 31 +0.0 + 0 +LINE + 5 +21A3 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13216.396497 + 30 +0.0 + 11 +26749.999936 + 21 +13233.716894 + 31 +0.0 + 0 +LINE + 5 +21A4 + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13277.018164 + 30 +0.0 + 11 +26787.499936 + 21 +13298.668799 + 31 +0.0 + 0 +LINE + 5 +21A5 + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13341.97007 + 30 +0.0 + 11 +26820.0 + 21 +13354.960561 + 31 +0.0 + 0 +LINE + 5 +21A6 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13173.095227 + 30 +0.0 + 11 +26749.999936 + 21 +13190.415624 + 31 +0.0 + 0 +LINE + 5 +21A7 + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13233.716894 + 30 +0.0 + 11 +26787.499936 + 21 +13255.367529 + 31 +0.0 + 0 +LINE + 5 +21A8 + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13298.6688 + 30 +0.0 + 11 +26820.0 + 21 +13311.659291 + 31 +0.0 + 0 +LINE + 5 +21A9 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13129.793957 + 30 +0.0 + 11 +26749.999936 + 21 +13147.114354 + 31 +0.0 + 0 +LINE + 5 +21AA + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13190.415624 + 30 +0.0 + 11 +26787.499936 + 21 +13212.066259 + 31 +0.0 + 0 +LINE + 5 +21AB + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13255.367529 + 30 +0.0 + 11 +26820.0 + 21 +13268.358021 + 31 +0.0 + 0 +LINE + 5 +21AC + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13086.492687 + 30 +0.0 + 11 +26749.999936 + 21 +13103.813084 + 31 +0.0 + 0 +LINE + 5 +21AD + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13147.114354 + 30 +0.0 + 11 +26787.499936 + 21 +13168.764989 + 31 +0.0 + 0 +LINE + 5 +21AE + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13212.066259 + 30 +0.0 + 11 +26820.0 + 21 +13225.056751 + 31 +0.0 + 0 +LINE + 5 +21AF + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +13043.191417 + 30 +0.0 + 11 +26749.999936 + 21 +13060.511814 + 31 +0.0 + 0 +LINE + 5 +21B0 + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13103.813084 + 30 +0.0 + 11 +26787.499936 + 21 +13125.463719 + 31 +0.0 + 0 +LINE + 5 +21B1 + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13168.764989 + 30 +0.0 + 11 +26820.0 + 21 +13181.755481 + 31 +0.0 + 0 +LINE + 5 +21B2 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12999.890147 + 30 +0.0 + 11 +26749.999936 + 21 +13017.210544 + 31 +0.0 + 0 +LINE + 5 +21B3 + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13060.511814 + 30 +0.0 + 11 +26787.499936 + 21 +13082.162449 + 31 +0.0 + 0 +LINE + 5 +21B4 + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13125.463719 + 30 +0.0 + 11 +26820.0 + 21 +13138.454211 + 31 +0.0 + 0 +LINE + 5 +21B5 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12956.588877 + 30 +0.0 + 11 +26749.999936 + 21 +12973.909273 + 31 +0.0 + 0 +LINE + 5 +21B6 + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +13017.210544 + 30 +0.0 + 11 +26787.499936 + 21 +13038.861179 + 31 +0.0 + 0 +LINE + 5 +21B7 + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13082.162449 + 30 +0.0 + 11 +26820.0 + 21 +13095.152941 + 31 +0.0 + 0 +LINE + 5 +21B8 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12913.287607 + 30 +0.0 + 11 +26749.999936 + 21 +12930.608003 + 31 +0.0 + 0 +LINE + 5 +21B9 + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +12973.909273 + 30 +0.0 + 11 +26787.499936 + 21 +12995.559909 + 31 +0.0 + 0 +LINE + 5 +21BA + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +13038.861179 + 30 +0.0 + 11 +26820.0 + 21 +13051.851671 + 31 +0.0 + 0 +LINE + 5 +21BB + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12869.986337 + 30 +0.0 + 11 +26749.999936 + 21 +12887.306733 + 31 +0.0 + 0 +LINE + 5 +21BC + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +12930.608003 + 30 +0.0 + 11 +26787.499936 + 21 +12952.258638 + 31 +0.0 + 0 +LINE + 5 +21BD + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +12995.559909 + 30 +0.0 + 11 +26820.0 + 21 +13008.550401 + 31 +0.0 + 0 +LINE + 5 +21BE + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12826.685067 + 30 +0.0 + 11 +26749.999936 + 21 +12844.005463 + 31 +0.0 + 0 +LINE + 5 +21BF + 8 +0 + 62 + 0 + 10 +26774.999936 + 20 +12887.306733 + 30 +0.0 + 11 +26787.499936 + 21 +12908.957368 + 31 +0.0 + 0 +LINE + 5 +21C0 + 8 +0 + 62 + 0 + 10 +26812.499936 + 20 +12952.258638 + 30 +0.0 + 11 +26820.0 + 21 +12965.249131 + 31 +0.0 + 0 +LINE + 5 +21C1 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12783.383797 + 30 +0.0 + 11 +26749.999935 + 21 +12800.704193 + 31 +0.0 + 0 +LINE + 5 +21C2 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12844.005463 + 30 +0.0 + 11 +26787.499935 + 21 +12865.656098 + 31 +0.0 + 0 +LINE + 5 +21C3 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12908.957368 + 30 +0.0 + 11 +26820.0 + 21 +12921.947861 + 31 +0.0 + 0 +LINE + 5 +21C4 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12740.082527 + 30 +0.0 + 11 +26749.999935 + 21 +12757.402923 + 31 +0.0 + 0 +LINE + 5 +21C5 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12800.704193 + 30 +0.0 + 11 +26787.499935 + 21 +12822.354828 + 31 +0.0 + 0 +LINE + 5 +21C6 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12865.656098 + 30 +0.0 + 11 +26820.0 + 21 +12878.646591 + 31 +0.0 + 0 +LINE + 5 +21C7 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12696.781257 + 30 +0.0 + 11 +26749.999935 + 21 +12714.101653 + 31 +0.0 + 0 +LINE + 5 +21C8 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12757.402923 + 30 +0.0 + 11 +26787.499935 + 21 +12779.053558 + 31 +0.0 + 0 +LINE + 5 +21C9 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12822.354828 + 30 +0.0 + 11 +26820.0 + 21 +12835.345321 + 31 +0.0 + 0 +LINE + 5 +21CA + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12653.479987 + 30 +0.0 + 11 +26749.999935 + 21 +12670.800382 + 31 +0.0 + 0 +LINE + 5 +21CB + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12714.101653 + 30 +0.0 + 11 +26787.499935 + 21 +12735.752288 + 31 +0.0 + 0 +LINE + 5 +21CC + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12779.053558 + 30 +0.0 + 11 +26820.0 + 21 +12792.044051 + 31 +0.0 + 0 +LINE + 5 +21CD + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12610.178717 + 30 +0.0 + 11 +26749.999935 + 21 +12627.499112 + 31 +0.0 + 0 +LINE + 5 +21CE + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12670.800382 + 30 +0.0 + 11 +26787.499935 + 21 +12692.451018 + 31 +0.0 + 0 +LINE + 5 +21CF + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12735.752288 + 30 +0.0 + 11 +26820.0 + 21 +12748.742781 + 31 +0.0 + 0 +LINE + 5 +21D0 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12566.877447 + 30 +0.0 + 11 +26749.999935 + 21 +12584.197842 + 31 +0.0 + 0 +LINE + 5 +21D1 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12627.499112 + 30 +0.0 + 11 +26787.499935 + 21 +12649.149747 + 31 +0.0 + 0 +LINE + 5 +21D2 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12692.451018 + 30 +0.0 + 11 +26820.0 + 21 +12705.441511 + 31 +0.0 + 0 +LINE + 5 +21D3 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12523.576177 + 30 +0.0 + 11 +26749.999935 + 21 +12540.896572 + 31 +0.0 + 0 +LINE + 5 +21D4 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12584.197842 + 30 +0.0 + 11 +26787.499935 + 21 +12605.848477 + 31 +0.0 + 0 +LINE + 5 +21D5 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12649.149747 + 30 +0.0 + 11 +26820.0 + 21 +12662.140241 + 31 +0.0 + 0 +LINE + 5 +21D6 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12480.274907 + 30 +0.0 + 11 +26749.999935 + 21 +12497.595302 + 31 +0.0 + 0 +LINE + 5 +21D7 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12540.896572 + 30 +0.0 + 11 +26787.499935 + 21 +12562.547207 + 31 +0.0 + 0 +LINE + 5 +21D8 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12605.848477 + 30 +0.0 + 11 +26820.0 + 21 +12618.838971 + 31 +0.0 + 0 +LINE + 5 +21D9 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12436.973637 + 30 +0.0 + 11 +26749.999935 + 21 +12454.294032 + 31 +0.0 + 0 +LINE + 5 +21DA + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12497.595302 + 30 +0.0 + 11 +26787.499935 + 21 +12519.245937 + 31 +0.0 + 0 +LINE + 5 +21DB + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12562.547207 + 30 +0.0 + 11 +26820.0 + 21 +12575.537701 + 31 +0.0 + 0 +LINE + 5 +21DC + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12393.672367 + 30 +0.0 + 11 +26749.999935 + 21 +12410.992762 + 31 +0.0 + 0 +LINE + 5 +21DD + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12454.294032 + 30 +0.0 + 11 +26787.499935 + 21 +12475.944667 + 31 +0.0 + 0 +LINE + 5 +21DE + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12519.245937 + 30 +0.0 + 11 +26820.0 + 21 +12532.236431 + 31 +0.0 + 0 +LINE + 5 +21DF + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12350.371097 + 30 +0.0 + 11 +26749.999935 + 21 +12367.691491 + 31 +0.0 + 0 +LINE + 5 +21E0 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12410.992762 + 30 +0.0 + 11 +26787.499935 + 21 +12432.643397 + 31 +0.0 + 0 +LINE + 5 +21E1 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12475.944667 + 30 +0.0 + 11 +26820.0 + 21 +12488.935161 + 31 +0.0 + 0 +LINE + 5 +21E2 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12307.069827 + 30 +0.0 + 11 +26749.999935 + 21 +12324.390221 + 31 +0.0 + 0 +LINE + 5 +21E3 + 8 +0 + 62 + 0 + 10 +26774.999935 + 20 +12367.691491 + 30 +0.0 + 11 +26787.499935 + 21 +12389.342127 + 31 +0.0 + 0 +LINE + 5 +21E4 + 8 +0 + 62 + 0 + 10 +26812.499935 + 20 +12432.643397 + 30 +0.0 + 11 +26820.0 + 21 +12445.633891 + 31 +0.0 + 0 +LINE + 5 +21E5 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12263.768557 + 30 +0.0 + 11 +26749.999934 + 21 +12281.088951 + 31 +0.0 + 0 +LINE + 5 +21E6 + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12324.390221 + 30 +0.0 + 11 +26787.499934 + 21 +12346.040856 + 31 +0.0 + 0 +LINE + 5 +21E7 + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12389.342127 + 30 +0.0 + 11 +26820.0 + 21 +12402.332621 + 31 +0.0 + 0 +LINE + 5 +21E8 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12220.467287 + 30 +0.0 + 11 +26749.999934 + 21 +12237.787681 + 31 +0.0 + 0 +LINE + 5 +21E9 + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12281.088951 + 30 +0.0 + 11 +26787.499934 + 21 +12302.739586 + 31 +0.0 + 0 +LINE + 5 +21EA + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12346.040856 + 30 +0.0 + 11 +26820.0 + 21 +12359.031351 + 31 +0.0 + 0 +LINE + 5 +21EB + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12177.166017 + 30 +0.0 + 11 +26749.999934 + 21 +12194.486411 + 31 +0.0 + 0 +LINE + 5 +21EC + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12237.787681 + 30 +0.0 + 11 +26787.499934 + 21 +12259.438316 + 31 +0.0 + 0 +LINE + 5 +21ED + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12302.739586 + 30 +0.0 + 11 +26820.0 + 21 +12315.730081 + 31 +0.0 + 0 +LINE + 5 +21EE + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12133.864747 + 30 +0.0 + 11 +26749.999934 + 21 +12151.185141 + 31 +0.0 + 0 +LINE + 5 +21EF + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12194.486411 + 30 +0.0 + 11 +26787.499934 + 21 +12216.137046 + 31 +0.0 + 0 +LINE + 5 +21F0 + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12259.438316 + 30 +0.0 + 11 +26820.0 + 21 +12272.428811 + 31 +0.0 + 0 +LINE + 5 +21F1 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12090.563477 + 30 +0.0 + 11 +26749.999934 + 21 +12107.883871 + 31 +0.0 + 0 +LINE + 5 +21F2 + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12151.185141 + 30 +0.0 + 11 +26787.499934 + 21 +12172.835776 + 31 +0.0 + 0 +LINE + 5 +21F3 + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12216.137046 + 30 +0.0 + 11 +26820.0 + 21 +12229.127541 + 31 +0.0 + 0 +LINE + 5 +21F4 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12047.262207 + 30 +0.0 + 11 +26749.999934 + 21 +12064.5826 + 31 +0.0 + 0 +LINE + 5 +21F5 + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12107.883871 + 30 +0.0 + 11 +26787.499934 + 21 +12129.534506 + 31 +0.0 + 0 +LINE + 5 +21F6 + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12172.835776 + 30 +0.0 + 11 +26820.0 + 21 +12185.826271 + 31 +0.0 + 0 +LINE + 5 +21F7 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +12003.960937 + 30 +0.0 + 11 +26749.999934 + 21 +12021.28133 + 31 +0.0 + 0 +LINE + 5 +21F8 + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12064.5826 + 30 +0.0 + 11 +26787.499934 + 21 +12086.233236 + 31 +0.0 + 0 +LINE + 5 +21F9 + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12129.534506 + 30 +0.0 + 11 +26820.0 + 21 +12142.525001 + 31 +0.0 + 0 +LINE + 5 +21FA + 8 +0 + 62 + 0 + 10 +26774.999934 + 20 +12021.28133 + 30 +0.0 + 11 +26787.499934 + 21 +12042.931965 + 31 +0.0 + 0 +LINE + 5 +21FB + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12086.233236 + 30 +0.0 + 11 +26820.0 + 21 +12099.223731 + 31 +0.0 + 0 +LINE + 5 +21FC + 8 +0 + 62 + 0 + 10 +26781.217961 + 20 +11988.75 + 30 +0.0 + 11 +26787.499934 + 21 +11999.630695 + 31 +0.0 + 0 +LINE + 5 +21FD + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +12042.931965 + 30 +0.0 + 11 +26820.0 + 21 +12055.922461 + 31 +0.0 + 0 +LINE + 5 +21FE + 8 +0 + 62 + 0 + 10 +26812.499934 + 20 +11999.630695 + 30 +0.0 + 11 +26820.0 + 21 +12012.621191 + 31 +0.0 + 0 +ENDBLK + 5 +21FF + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X51 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X51 + 1 + + 0 +LINE + 5 +2201 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9769.61524 + 30 +0.0 + 11 +26775.0 + 21 +9769.61524 + 31 +0.0 + 0 +LINE + 5 +2202 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9791.265875 + 30 +0.0 + 11 +26812.5 + 21 +9791.265875 + 31 +0.0 + 0 +LINE + 5 +2203 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9812.91651 + 30 +0.0 + 11 +26775.0 + 21 +9812.91651 + 31 +0.0 + 0 +LINE + 5 +2204 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9834.567145 + 30 +0.0 + 11 +26812.5 + 21 +9834.567145 + 31 +0.0 + 0 +LINE + 5 +2205 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9856.21778 + 30 +0.0 + 11 +26775.0 + 21 +9856.21778 + 31 +0.0 + 0 +LINE + 5 +2206 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9877.868415 + 30 +0.0 + 11 +26812.5 + 21 +9877.868415 + 31 +0.0 + 0 +LINE + 5 +2207 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9899.51905 + 30 +0.0 + 11 +26775.0 + 21 +9899.51905 + 31 +0.0 + 0 +LINE + 5 +2208 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9921.169685 + 30 +0.0 + 11 +26812.5 + 21 +9921.169685 + 31 +0.0 + 0 +LINE + 5 +2209 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9942.82032 + 30 +0.0 + 11 +26775.0 + 21 +9942.82032 + 31 +0.0 + 0 +LINE + 5 +220A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9964.470955 + 30 +0.0 + 11 +26812.5 + 21 +9964.470955 + 31 +0.0 + 0 +LINE + 5 +220B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9986.12159 + 30 +0.0 + 11 +26775.0 + 21 +9986.12159 + 31 +0.0 + 0 +LINE + 5 +220C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10007.772225 + 30 +0.0 + 11 +26812.5 + 21 +10007.772225 + 31 +0.0 + 0 +LINE + 5 +220D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10029.42286 + 30 +0.0 + 11 +26775.0 + 21 +10029.42286 + 31 +0.0 + 0 +LINE + 5 +220E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10051.073495 + 30 +0.0 + 11 +26812.5 + 21 +10051.073495 + 31 +0.0 + 0 +LINE + 5 +220F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10072.72413 + 30 +0.0 + 11 +26775.0 + 21 +10072.72413 + 31 +0.0 + 0 +LINE + 5 +2210 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10094.374765 + 30 +0.0 + 11 +26812.5 + 21 +10094.374765 + 31 +0.0 + 0 +LINE + 5 +2211 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10116.0254 + 30 +0.0 + 11 +26775.0 + 21 +10116.0254 + 31 +0.0 + 0 +LINE + 5 +2212 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10137.676035 + 30 +0.0 + 11 +26812.5 + 21 +10137.676035 + 31 +0.0 + 0 +LINE + 5 +2213 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10159.32667 + 30 +0.0 + 11 +26775.0 + 21 +10159.32667 + 31 +0.0 + 0 +LINE + 5 +2214 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10180.977305 + 30 +0.0 + 11 +26812.5 + 21 +10180.977305 + 31 +0.0 + 0 +LINE + 5 +2215 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10202.62794 + 30 +0.0 + 11 +26775.0 + 21 +10202.62794 + 31 +0.0 + 0 +LINE + 5 +2216 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10224.278575 + 30 +0.0 + 11 +26812.5 + 21 +10224.278575 + 31 +0.0 + 0 +LINE + 5 +2217 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10245.92921 + 30 +0.0 + 11 +26775.0 + 21 +10245.92921 + 31 +0.0 + 0 +LINE + 5 +2218 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10267.579845 + 30 +0.0 + 11 +26812.5 + 21 +10267.579845 + 31 +0.0 + 0 +LINE + 5 +2219 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10289.23048 + 30 +0.0 + 11 +26775.0 + 21 +10289.23048 + 31 +0.0 + 0 +LINE + 5 +221A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10310.881115 + 30 +0.0 + 11 +26812.5 + 21 +10310.881115 + 31 +0.0 + 0 +LINE + 5 +221B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10332.53175 + 30 +0.0 + 11 +26775.0 + 21 +10332.53175 + 31 +0.0 + 0 +LINE + 5 +221C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +10354.182385 + 30 +0.0 + 11 +26812.5 + 21 +10354.182385 + 31 +0.0 + 0 +LINE + 5 +221D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +10375.83302 + 30 +0.0 + 11 +26775.0 + 21 +10375.83302 + 31 +0.0 + 0 +LINE + 5 +221E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9747.964605 + 30 +0.0 + 11 +26812.5 + 21 +9747.964605 + 31 +0.0 + 0 +LINE + 5 +221F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9726.31397 + 30 +0.0 + 11 +26775.0 + 21 +9726.31397 + 31 +0.0 + 0 +LINE + 5 +2220 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9704.663335 + 30 +0.0 + 11 +26812.5 + 21 +9704.663335 + 31 +0.0 + 0 +LINE + 5 +2221 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9683.0127 + 30 +0.0 + 11 +26775.0 + 21 +9683.0127 + 31 +0.0 + 0 +LINE + 5 +2222 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9661.362065 + 30 +0.0 + 11 +26812.5 + 21 +9661.362065 + 31 +0.0 + 0 +LINE + 5 +2223 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9639.71143 + 30 +0.0 + 11 +26775.0 + 21 +9639.71143 + 31 +0.0 + 0 +LINE + 5 +2224 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9618.060795 + 30 +0.0 + 11 +26812.5 + 21 +9618.060795 + 31 +0.0 + 0 +LINE + 5 +2225 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9596.41016 + 30 +0.0 + 11 +26775.0 + 21 +9596.41016 + 31 +0.0 + 0 +LINE + 5 +2226 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9574.759525 + 30 +0.0 + 11 +26812.5 + 21 +9574.759525 + 31 +0.0 + 0 +LINE + 5 +2227 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9553.10889 + 30 +0.0 + 11 +26775.0 + 21 +9553.10889 + 31 +0.0 + 0 +LINE + 5 +2228 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9531.458255 + 30 +0.0 + 11 +26812.5 + 21 +9531.458255 + 31 +0.0 + 0 +LINE + 5 +2229 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9509.80762 + 30 +0.0 + 11 +26775.0 + 21 +9509.80762 + 31 +0.0 + 0 +LINE + 5 +222A + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9488.156985 + 30 +0.0 + 11 +26812.5 + 21 +9488.156985 + 31 +0.0 + 0 +LINE + 5 +222B + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9466.50635 + 30 +0.0 + 11 +26775.0 + 21 +9466.50635 + 31 +0.0 + 0 +LINE + 5 +222C + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9444.855715 + 30 +0.0 + 11 +26812.5 + 21 +9444.855715 + 31 +0.0 + 0 +LINE + 5 +222D + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9423.20508 + 30 +0.0 + 11 +26775.0 + 21 +9423.20508 + 31 +0.0 + 0 +LINE + 5 +222E + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9401.554445 + 30 +0.0 + 11 +26812.5 + 21 +9401.554445 + 31 +0.0 + 0 +LINE + 5 +222F + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9379.90381 + 30 +0.0 + 11 +26775.0 + 21 +9379.90381 + 31 +0.0 + 0 +LINE + 5 +2230 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9358.253175 + 30 +0.0 + 11 +26812.5 + 21 +9358.253175 + 31 +0.0 + 0 +LINE + 5 +2231 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9336.60254 + 30 +0.0 + 11 +26775.0 + 21 +9336.60254 + 31 +0.0 + 0 +LINE + 5 +2232 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9314.951905 + 30 +0.0 + 11 +26812.5 + 21 +9314.951905 + 31 +0.0 + 0 +LINE + 5 +2233 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9293.30127 + 30 +0.0 + 11 +26775.0 + 21 +9293.30127 + 31 +0.0 + 0 +LINE + 5 +2234 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9271.650635 + 30 +0.0 + 11 +26812.5 + 21 +9271.650635 + 31 +0.0 + 0 +LINE + 5 +2235 + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9250.0 + 30 +0.0 + 11 +26775.0 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2236 + 8 +0 + 62 + 0 + 10 +25363.75 + 20 +9228.349365 + 30 +0.0 + 11 +25387.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2237 + 8 +0 + 62 + 0 + 10 +25437.5 + 20 +9228.349365 + 30 +0.0 + 11 +25462.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2238 + 8 +0 + 62 + 0 + 10 +25512.5 + 20 +9228.349365 + 30 +0.0 + 11 +25537.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2239 + 8 +0 + 62 + 0 + 10 +25587.5 + 20 +9228.349365 + 30 +0.0 + 11 +25612.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +223A + 8 +0 + 62 + 0 + 10 +25662.5 + 20 +9228.349365 + 30 +0.0 + 11 +25687.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +223B + 8 +0 + 62 + 0 + 10 +25737.5 + 20 +9228.349365 + 30 +0.0 + 11 +25762.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +223C + 8 +0 + 62 + 0 + 10 +25812.5 + 20 +9228.349365 + 30 +0.0 + 11 +25837.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +223D + 8 +0 + 62 + 0 + 10 +25887.5 + 20 +9228.349365 + 30 +0.0 + 11 +25912.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +223E + 8 +0 + 62 + 0 + 10 +25962.5 + 20 +9228.349365 + 30 +0.0 + 11 +25987.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +223F + 8 +0 + 62 + 0 + 10 +26037.5 + 20 +9228.349365 + 30 +0.0 + 11 +26062.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2240 + 8 +0 + 62 + 0 + 10 +26112.5 + 20 +9228.349365 + 30 +0.0 + 11 +26137.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2241 + 8 +0 + 62 + 0 + 10 +26187.5 + 20 +9228.349365 + 30 +0.0 + 11 +26212.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2242 + 8 +0 + 62 + 0 + 10 +26262.5 + 20 +9228.349365 + 30 +0.0 + 11 +26287.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2243 + 8 +0 + 62 + 0 + 10 +26337.5 + 20 +9228.349365 + 30 +0.0 + 11 +26362.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2244 + 8 +0 + 62 + 0 + 10 +26412.5 + 20 +9228.349365 + 30 +0.0 + 11 +26437.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2245 + 8 +0 + 62 + 0 + 10 +26487.5 + 20 +9228.349365 + 30 +0.0 + 11 +26512.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2246 + 8 +0 + 62 + 0 + 10 +26562.5 + 20 +9228.349365 + 30 +0.0 + 11 +26587.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2247 + 8 +0 + 62 + 0 + 10 +26637.5 + 20 +9228.349365 + 30 +0.0 + 11 +26662.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2248 + 8 +0 + 62 + 0 + 10 +26712.5 + 20 +9228.349365 + 30 +0.0 + 11 +26737.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +2249 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9228.349365 + 30 +0.0 + 11 +26812.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +224A + 8 +0 + 62 + 0 + 10 +25400.0 + 20 +9206.69873 + 30 +0.0 + 11 +25425.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +224B + 8 +0 + 62 + 0 + 10 +25475.0 + 20 +9206.69873 + 30 +0.0 + 11 +25500.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +224C + 8 +0 + 62 + 0 + 10 +25550.0 + 20 +9206.69873 + 30 +0.0 + 11 +25575.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +224D + 8 +0 + 62 + 0 + 10 +25625.0 + 20 +9206.69873 + 30 +0.0 + 11 +25650.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +224E + 8 +0 + 62 + 0 + 10 +25700.0 + 20 +9206.69873 + 30 +0.0 + 11 +25725.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +224F + 8 +0 + 62 + 0 + 10 +25775.0 + 20 +9206.69873 + 30 +0.0 + 11 +25800.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2250 + 8 +0 + 62 + 0 + 10 +25850.0 + 20 +9206.69873 + 30 +0.0 + 11 +25875.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2251 + 8 +0 + 62 + 0 + 10 +25925.0 + 20 +9206.69873 + 30 +0.0 + 11 +25950.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2252 + 8 +0 + 62 + 0 + 10 +26000.0 + 20 +9206.69873 + 30 +0.0 + 11 +26025.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2253 + 8 +0 + 62 + 0 + 10 +26075.0 + 20 +9206.69873 + 30 +0.0 + 11 +26100.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2254 + 8 +0 + 62 + 0 + 10 +26150.0 + 20 +9206.69873 + 30 +0.0 + 11 +26175.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2255 + 8 +0 + 62 + 0 + 10 +26225.0 + 20 +9206.69873 + 30 +0.0 + 11 +26250.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2256 + 8 +0 + 62 + 0 + 10 +26300.0 + 20 +9206.69873 + 30 +0.0 + 11 +26325.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2257 + 8 +0 + 62 + 0 + 10 +26375.0 + 20 +9206.69873 + 30 +0.0 + 11 +26400.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2258 + 8 +0 + 62 + 0 + 10 +26450.0 + 20 +9206.69873 + 30 +0.0 + 11 +26475.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +2259 + 8 +0 + 62 + 0 + 10 +26525.0 + 20 +9206.69873 + 30 +0.0 + 11 +26550.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +225A + 8 +0 + 62 + 0 + 10 +26600.0 + 20 +9206.69873 + 30 +0.0 + 11 +26625.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +225B + 8 +0 + 62 + 0 + 10 +26675.0 + 20 +9206.69873 + 30 +0.0 + 11 +26700.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +225C + 8 +0 + 62 + 0 + 10 +26750.0 + 20 +9206.69873 + 30 +0.0 + 11 +26775.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +225D + 8 +0 + 62 + 0 + 10 +25363.75 + 20 +9185.048095 + 30 +0.0 + 11 +25387.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +225E + 8 +0 + 62 + 0 + 10 +25437.5 + 20 +9185.048095 + 30 +0.0 + 11 +25462.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +225F + 8 +0 + 62 + 0 + 10 +25512.5 + 20 +9185.048095 + 30 +0.0 + 11 +25537.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2260 + 8 +0 + 62 + 0 + 10 +25587.5 + 20 +9185.048095 + 30 +0.0 + 11 +25612.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2261 + 8 +0 + 62 + 0 + 10 +25662.5 + 20 +9185.048095 + 30 +0.0 + 11 +25687.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2262 + 8 +0 + 62 + 0 + 10 +25737.5 + 20 +9185.048095 + 30 +0.0 + 11 +25762.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2263 + 8 +0 + 62 + 0 + 10 +25812.5 + 20 +9185.048095 + 30 +0.0 + 11 +25837.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2264 + 8 +0 + 62 + 0 + 10 +25887.5 + 20 +9185.048095 + 30 +0.0 + 11 +25912.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2265 + 8 +0 + 62 + 0 + 10 +25962.5 + 20 +9185.048095 + 30 +0.0 + 11 +25987.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2266 + 8 +0 + 62 + 0 + 10 +26037.5 + 20 +9185.048095 + 30 +0.0 + 11 +26062.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2267 + 8 +0 + 62 + 0 + 10 +26112.5 + 20 +9185.048095 + 30 +0.0 + 11 +26137.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2268 + 8 +0 + 62 + 0 + 10 +26187.5 + 20 +9185.048095 + 30 +0.0 + 11 +26212.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2269 + 8 +0 + 62 + 0 + 10 +26262.5 + 20 +9185.048095 + 30 +0.0 + 11 +26287.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +226A + 8 +0 + 62 + 0 + 10 +26337.5 + 20 +9185.048095 + 30 +0.0 + 11 +26362.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +226B + 8 +0 + 62 + 0 + 10 +26412.5 + 20 +9185.048095 + 30 +0.0 + 11 +26437.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +226C + 8 +0 + 62 + 0 + 10 +26487.5 + 20 +9185.048095 + 30 +0.0 + 11 +26512.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +226D + 8 +0 + 62 + 0 + 10 +26562.5 + 20 +9185.048095 + 30 +0.0 + 11 +26587.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +226E + 8 +0 + 62 + 0 + 10 +26637.5 + 20 +9185.048095 + 30 +0.0 + 11 +26662.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +226F + 8 +0 + 62 + 0 + 10 +26712.5 + 20 +9185.048095 + 30 +0.0 + 11 +26737.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2270 + 8 +0 + 62 + 0 + 10 +26787.5 + 20 +9185.048095 + 30 +0.0 + 11 +26812.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +2271 + 8 +0 + 62 + 0 + 10 +26412.49993 + 20 +9185.048054 + 30 +0.0 + 11 +26399.99993 + 21 +9206.698689 + 31 +0.0 + 0 +LINE + 5 +2272 + 8 +0 + 62 + 0 + 10 +26374.99993 + 20 +9249.99996 + 30 +0.0 + 11 +26374.999907 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2273 + 8 +0 + 62 + 0 + 10 +26374.99993 + 20 +9206.698689 + 30 +0.0 + 11 +26362.49993 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +2274 + 8 +0 + 62 + 0 + 10 +26371.187928 + 20 +9170.0 + 30 +0.0 + 11 +26362.49993 + 21 +9185.048054 + 31 +0.0 + 0 +LINE + 5 +2275 + 8 +0 + 62 + 0 + 10 +26337.49993 + 20 +9228.349325 + 30 +0.0 + 11 +26324.99993 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +2276 + 8 +0 + 62 + 0 + 10 +26337.49993 + 20 +9185.048054 + 30 +0.0 + 11 +26324.99993 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +2277 + 8 +0 + 62 + 0 + 10 +26299.99993 + 20 +9249.99996 + 30 +0.0 + 11 +26299.999907 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2278 + 8 +0 + 62 + 0 + 10 +26299.99993 + 20 +9206.69869 + 30 +0.0 + 11 +26287.49993 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +2279 + 8 +0 + 62 + 0 + 10 +26296.187929 + 20 +9170.0 + 30 +0.0 + 11 +26287.49993 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +227A + 8 +0 + 62 + 0 + 10 +26262.49993 + 20 +9228.349325 + 30 +0.0 + 11 +26249.99993 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +227B + 8 +0 + 62 + 0 + 10 +26262.49993 + 20 +9185.048055 + 30 +0.0 + 11 +26249.99993 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +227C + 8 +0 + 62 + 0 + 10 +26224.99993 + 20 +9249.99996 + 30 +0.0 + 11 +26224.999907 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +227D + 8 +0 + 62 + 0 + 10 +26224.999931 + 20 +9206.69869 + 30 +0.0 + 11 +26212.499931 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +227E + 8 +0 + 62 + 0 + 10 +26221.187929 + 20 +9170.0 + 30 +0.0 + 11 +26212.499931 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +227F + 8 +0 + 62 + 0 + 10 +26187.499931 + 20 +9228.349325 + 30 +0.0 + 11 +26174.999931 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +2280 + 8 +0 + 62 + 0 + 10 +26187.499931 + 20 +9185.048055 + 30 +0.0 + 11 +26174.999931 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +2281 + 8 +0 + 62 + 0 + 10 +26149.999931 + 20 +9249.99996 + 30 +0.0 + 11 +26149.999908 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2282 + 8 +0 + 62 + 0 + 10 +26149.999931 + 20 +9206.69869 + 30 +0.0 + 11 +26137.499931 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +2283 + 8 +0 + 62 + 0 + 10 +26146.187929 + 20 +9170.0 + 30 +0.0 + 11 +26137.499931 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +2284 + 8 +0 + 62 + 0 + 10 +26112.499931 + 20 +9228.349325 + 30 +0.0 + 11 +26099.999931 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +2285 + 8 +0 + 62 + 0 + 10 +26112.499931 + 20 +9185.048055 + 30 +0.0 + 11 +26099.999931 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +2286 + 8 +0 + 62 + 0 + 10 +26074.999931 + 20 +9249.99996 + 30 +0.0 + 11 +26074.999908 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2287 + 8 +0 + 62 + 0 + 10 +26074.999931 + 20 +9206.69869 + 30 +0.0 + 11 +26062.499931 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +2288 + 8 +0 + 62 + 0 + 10 +26071.18793 + 20 +9170.0 + 30 +0.0 + 11 +26062.499931 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +2289 + 8 +0 + 62 + 0 + 10 +26037.499931 + 20 +9228.349325 + 30 +0.0 + 11 +26024.999931 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +228A + 8 +0 + 62 + 0 + 10 +26037.499931 + 20 +9185.048055 + 30 +0.0 + 11 +26024.999931 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +228B + 8 +0 + 62 + 0 + 10 +25999.999931 + 20 +9249.99996 + 30 +0.0 + 11 +25999.999908 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +228C + 8 +0 + 62 + 0 + 10 +25999.999931 + 20 +9206.69869 + 30 +0.0 + 11 +25987.499931 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +228D + 8 +0 + 62 + 0 + 10 +25996.18793 + 20 +9170.0 + 30 +0.0 + 11 +25987.499931 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +228E + 8 +0 + 62 + 0 + 10 +25962.499931 + 20 +9228.349325 + 30 +0.0 + 11 +25949.999931 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +228F + 8 +0 + 62 + 0 + 10 +25962.499931 + 20 +9185.048055 + 30 +0.0 + 11 +25949.999931 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +2290 + 8 +0 + 62 + 0 + 10 +25924.999931 + 20 +9249.99996 + 30 +0.0 + 11 +25924.999909 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2291 + 8 +0 + 62 + 0 + 10 +25924.999932 + 20 +9206.69869 + 30 +0.0 + 11 +25912.499932 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +2292 + 8 +0 + 62 + 0 + 10 +25921.18793 + 20 +9170.0 + 30 +0.0 + 11 +25912.499932 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +2293 + 8 +0 + 62 + 0 + 10 +25887.499932 + 20 +9228.349325 + 30 +0.0 + 11 +25874.999932 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +2294 + 8 +0 + 62 + 0 + 10 +25887.499932 + 20 +9185.048055 + 30 +0.0 + 11 +25874.999932 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +2295 + 8 +0 + 62 + 0 + 10 +25849.999932 + 20 +9249.999961 + 30 +0.0 + 11 +25849.999909 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2296 + 8 +0 + 62 + 0 + 10 +25849.999932 + 20 +9206.69869 + 30 +0.0 + 11 +25837.499932 + 21 +9228.349325 + 31 +0.0 + 0 +LINE + 5 +2297 + 8 +0 + 62 + 0 + 10 +25846.187931 + 20 +9170.0 + 30 +0.0 + 11 +25837.499932 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +2298 + 8 +0 + 62 + 0 + 10 +25812.499932 + 20 +9228.349326 + 30 +0.0 + 11 +25799.999932 + 21 +9249.999961 + 31 +0.0 + 0 +LINE + 5 +2299 + 8 +0 + 62 + 0 + 10 +25812.499932 + 20 +9185.048055 + 30 +0.0 + 11 +25799.999932 + 21 +9206.69869 + 31 +0.0 + 0 +LINE + 5 +229A + 8 +0 + 62 + 0 + 10 +25774.999932 + 20 +9249.999961 + 30 +0.0 + 11 +25774.999909 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +229B + 8 +0 + 62 + 0 + 10 +25774.999932 + 20 +9206.698691 + 30 +0.0 + 11 +25762.499932 + 21 +9228.349326 + 31 +0.0 + 0 +LINE + 5 +229C + 8 +0 + 62 + 0 + 10 +25771.187931 + 20 +9170.0 + 30 +0.0 + 11 +25762.499932 + 21 +9185.048055 + 31 +0.0 + 0 +LINE + 5 +229D + 8 +0 + 62 + 0 + 10 +25737.499932 + 20 +9228.349326 + 30 +0.0 + 11 +25724.999932 + 21 +9249.999961 + 31 +0.0 + 0 +LINE + 5 +229E + 8 +0 + 62 + 0 + 10 +25737.499932 + 20 +9185.048056 + 30 +0.0 + 11 +25724.999932 + 21 +9206.698691 + 31 +0.0 + 0 +LINE + 5 +229F + 8 +0 + 62 + 0 + 10 +25699.999932 + 20 +9249.999961 + 30 +0.0 + 11 +25699.99991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22A0 + 8 +0 + 62 + 0 + 10 +25699.999932 + 20 +9206.698691 + 30 +0.0 + 11 +25687.499932 + 21 +9228.349326 + 31 +0.0 + 0 +LINE + 5 +22A1 + 8 +0 + 62 + 0 + 10 +25696.187931 + 20 +9170.0 + 30 +0.0 + 11 +25687.499932 + 21 +9185.048056 + 31 +0.0 + 0 +LINE + 5 +22A2 + 8 +0 + 62 + 0 + 10 +25662.499932 + 20 +9228.349326 + 30 +0.0 + 11 +25649.999932 + 21 +9249.999961 + 31 +0.0 + 0 +LINE + 5 +22A3 + 8 +0 + 62 + 0 + 10 +25662.499932 + 20 +9185.048056 + 30 +0.0 + 11 +25649.999932 + 21 +9206.698691 + 31 +0.0 + 0 +LINE + 5 +22A4 + 8 +0 + 62 + 0 + 10 +25624.999932 + 20 +9249.999961 + 30 +0.0 + 11 +25624.99991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22A5 + 8 +0 + 62 + 0 + 10 +25624.999932 + 20 +9206.698691 + 30 +0.0 + 11 +25612.499932 + 21 +9228.349326 + 31 +0.0 + 0 +LINE + 5 +22A6 + 8 +0 + 62 + 0 + 10 +25621.187932 + 20 +9170.0 + 30 +0.0 + 11 +25612.499933 + 21 +9185.048056 + 31 +0.0 + 0 +LINE + 5 +22A7 + 8 +0 + 62 + 0 + 10 +25587.499933 + 20 +9228.349326 + 30 +0.0 + 11 +25574.999933 + 21 +9249.999961 + 31 +0.0 + 0 +LINE + 5 +22A8 + 8 +0 + 62 + 0 + 10 +25587.499933 + 20 +9185.048056 + 30 +0.0 + 11 +25574.999933 + 21 +9206.698691 + 31 +0.0 + 0 +LINE + 5 +22A9 + 8 +0 + 62 + 0 + 10 +25549.999933 + 20 +9249.999961 + 30 +0.0 + 11 +25549.99991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22AA + 8 +0 + 62 + 0 + 10 +25549.999933 + 20 +9206.698691 + 30 +0.0 + 11 +25537.499933 + 21 +9228.349326 + 31 +0.0 + 0 +LINE + 5 +22AB + 8 +0 + 62 + 0 + 10 +25546.187932 + 20 +9170.0 + 30 +0.0 + 11 +25537.499933 + 21 +9185.048056 + 31 +0.0 + 0 +LINE + 5 +22AC + 8 +0 + 62 + 0 + 10 +25512.499933 + 20 +9228.349326 + 30 +0.0 + 11 +25499.999933 + 21 +9249.999961 + 31 +0.0 + 0 +LINE + 5 +22AD + 8 +0 + 62 + 0 + 10 +25512.499933 + 20 +9185.048056 + 30 +0.0 + 11 +25499.999933 + 21 +9206.698691 + 31 +0.0 + 0 +LINE + 5 +22AE + 8 +0 + 62 + 0 + 10 +25474.999933 + 20 +9249.999961 + 30 +0.0 + 11 +25474.999911 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22AF + 8 +0 + 62 + 0 + 10 +25474.999933 + 20 +9206.698691 + 30 +0.0 + 11 +25462.499933 + 21 +9228.349326 + 31 +0.0 + 0 +LINE + 5 +22B0 + 8 +0 + 62 + 0 + 10 +25471.187932 + 20 +9170.0 + 30 +0.0 + 11 +25462.499933 + 21 +9185.048056 + 31 +0.0 + 0 +LINE + 5 +22B1 + 8 +0 + 62 + 0 + 10 +25437.499933 + 20 +9228.349326 + 30 +0.0 + 11 +25424.999933 + 21 +9249.999961 + 31 +0.0 + 0 +LINE + 5 +22B2 + 8 +0 + 62 + 0 + 10 +25437.499933 + 20 +9185.048056 + 30 +0.0 + 11 +25424.999933 + 21 +9206.698691 + 31 +0.0 + 0 +LINE + 5 +22B3 + 8 +0 + 62 + 0 + 10 +25399.999933 + 20 +9249.999961 + 30 +0.0 + 11 +25399.999911 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22B4 + 8 +0 + 62 + 0 + 10 +25399.999933 + 20 +9206.698691 + 30 +0.0 + 11 +25387.499933 + 21 +9228.349326 + 31 +0.0 + 0 +LINE + 5 +22B5 + 8 +0 + 62 + 0 + 10 +25396.187933 + 20 +9170.0 + 30 +0.0 + 11 +25387.499933 + 21 +9185.048056 + 31 +0.0 + 0 +LINE + 5 +22B6 + 8 +0 + 62 + 0 + 10 +26446.187928 + 20 +9170.0 + 30 +0.0 + 11 +26437.49993 + 21 +9185.048054 + 31 +0.0 + 0 +LINE + 5 +22B7 + 8 +0 + 62 + 0 + 10 +26412.49993 + 20 +9228.349324 + 30 +0.0 + 11 +26399.99993 + 21 +9249.99996 + 31 +0.0 + 0 +LINE + 5 +22B8 + 8 +0 + 62 + 0 + 10 +26449.99993 + 20 +9206.698689 + 30 +0.0 + 11 +26437.49993 + 21 +9228.349324 + 31 +0.0 + 0 +LINE + 5 +22B9 + 8 +0 + 62 + 0 + 10 +26487.49993 + 20 +9185.048054 + 30 +0.0 + 11 +26474.99993 + 21 +9206.698689 + 31 +0.0 + 0 +LINE + 5 +22BA + 8 +0 + 62 + 0 + 10 +26449.99993 + 20 +9249.999959 + 30 +0.0 + 11 +26449.999906 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22BB + 8 +0 + 62 + 0 + 10 +26521.187928 + 20 +9170.0 + 30 +0.0 + 11 +26512.49993 + 21 +9185.048054 + 31 +0.0 + 0 +LINE + 5 +22BC + 8 +0 + 62 + 0 + 10 +26487.49993 + 20 +9228.349324 + 30 +0.0 + 11 +26474.99993 + 21 +9249.999959 + 31 +0.0 + 0 +LINE + 5 +22BD + 8 +0 + 62 + 0 + 10 +26524.99993 + 20 +9206.698689 + 30 +0.0 + 11 +26512.49993 + 21 +9228.349324 + 31 +0.0 + 0 +LINE + 5 +22BE + 8 +0 + 62 + 0 + 10 +26562.499929 + 20 +9185.048054 + 30 +0.0 + 11 +26549.999929 + 21 +9206.698689 + 31 +0.0 + 0 +LINE + 5 +22BF + 8 +0 + 62 + 0 + 10 +26524.999929 + 20 +9249.999959 + 30 +0.0 + 11 +26524.999906 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22C0 + 8 +0 + 62 + 0 + 10 +26596.187927 + 20 +9170.0 + 30 +0.0 + 11 +26587.499929 + 21 +9185.048054 + 31 +0.0 + 0 +LINE + 5 +22C1 + 8 +0 + 62 + 0 + 10 +26562.499929 + 20 +9228.349324 + 30 +0.0 + 11 +26549.999929 + 21 +9249.999959 + 31 +0.0 + 0 +LINE + 5 +22C2 + 8 +0 + 62 + 0 + 10 +26599.999929 + 20 +9206.698689 + 30 +0.0 + 11 +26587.499929 + 21 +9228.349324 + 31 +0.0 + 0 +LINE + 5 +22C3 + 8 +0 + 62 + 0 + 10 +26637.499929 + 20 +9185.048054 + 30 +0.0 + 11 +26624.999929 + 21 +9206.698689 + 31 +0.0 + 0 +LINE + 5 +22C4 + 8 +0 + 62 + 0 + 10 +26599.999929 + 20 +9249.999959 + 30 +0.0 + 11 +26599.999906 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22C5 + 8 +0 + 62 + 0 + 10 +26671.187927 + 20 +9170.0 + 30 +0.0 + 11 +26662.499929 + 21 +9185.048054 + 31 +0.0 + 0 +LINE + 5 +22C6 + 8 +0 + 62 + 0 + 10 +26637.499929 + 20 +9228.349324 + 30 +0.0 + 11 +26624.999929 + 21 +9249.999959 + 31 +0.0 + 0 +LINE + 5 +22C7 + 8 +0 + 62 + 0 + 10 +26674.999929 + 20 +9206.698689 + 30 +0.0 + 11 +26662.499929 + 21 +9228.349324 + 31 +0.0 + 0 +LINE + 5 +22C8 + 8 +0 + 62 + 0 + 10 +26712.499929 + 20 +9185.048054 + 30 +0.0 + 11 +26699.999929 + 21 +9206.698689 + 31 +0.0 + 0 +LINE + 5 +22C9 + 8 +0 + 62 + 0 + 10 +26674.999929 + 20 +9249.999959 + 30 +0.0 + 11 +26674.999905 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +22CA + 8 +0 + 62 + 0 + 10 +26746.187927 + 20 +9170.0 + 30 +0.0 + 11 +26737.499929 + 21 +9185.048054 + 31 +0.0 + 0 +LINE + 5 +22CB + 8 +0 + 62 + 0 + 10 +26712.499929 + 20 +9228.349324 + 30 +0.0 + 11 +26699.999929 + 21 +9249.999959 + 31 +0.0 + 0 +LINE + 5 +22CC + 8 +0 + 62 + 0 + 10 +26749.999929 + 20 +9206.698689 + 30 +0.0 + 11 +26737.499929 + 21 +9228.349324 + 31 +0.0 + 0 +LINE + 5 +22CD + 8 +0 + 62 + 0 + 10 +26787.499929 + 20 +9185.048054 + 30 +0.0 + 11 +26774.999929 + 21 +9206.698689 + 31 +0.0 + 0 +LINE + 5 +22CE + 8 +0 + 62 + 0 + 10 +26749.999929 + 20 +9249.999959 + 30 +0.0 + 11 +26740.0 + 21 +9267.320343 + 31 +0.0 + 0 +LINE + 5 +22CF + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9172.057549 + 30 +0.0 + 11 +26812.499929 + 21 +9185.048054 + 31 +0.0 + 0 +LINE + 5 +22D0 + 8 +0 + 62 + 0 + 10 +26787.499929 + 20 +9228.349324 + 30 +0.0 + 11 +26774.999929 + 21 +9249.999959 + 31 +0.0 + 0 +LINE + 5 +22D1 + 8 +0 + 62 + 0 + 10 +26749.999929 + 20 +9293.301229 + 30 +0.0 + 11 +26740.0 + 21 +9310.621613 + 31 +0.0 + 0 +LINE + 5 +22D2 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9215.358819 + 30 +0.0 + 11 +26812.499929 + 21 +9228.349324 + 31 +0.0 + 0 +LINE + 5 +22D3 + 8 +0 + 62 + 0 + 10 +26787.499929 + 20 +9271.650594 + 30 +0.0 + 11 +26774.999929 + 21 +9293.301229 + 31 +0.0 + 0 +LINE + 5 +22D4 + 8 +0 + 62 + 0 + 10 +26749.999929 + 20 +9336.602499 + 30 +0.0 + 11 +26740.0 + 21 +9353.922883 + 31 +0.0 + 0 +LINE + 5 +22D5 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9258.660089 + 30 +0.0 + 11 +26812.499928 + 21 +9271.650594 + 31 +0.0 + 0 +LINE + 5 +22D6 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9314.951864 + 30 +0.0 + 11 +26774.999928 + 21 +9336.602499 + 31 +0.0 + 0 +LINE + 5 +22D7 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9379.903769 + 30 +0.0 + 11 +26740.0 + 21 +9397.224153 + 31 +0.0 + 0 +LINE + 5 +22D8 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9301.961359 + 30 +0.0 + 11 +26812.499928 + 21 +9314.951864 + 31 +0.0 + 0 +LINE + 5 +22D9 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9358.253134 + 30 +0.0 + 11 +26774.999928 + 21 +9379.903769 + 31 +0.0 + 0 +LINE + 5 +22DA + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9423.205039 + 30 +0.0 + 11 +26740.0 + 21 +9440.525423 + 31 +0.0 + 0 +LINE + 5 +22DB + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9345.262629 + 30 +0.0 + 11 +26812.499928 + 21 +9358.253134 + 31 +0.0 + 0 +LINE + 5 +22DC + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9401.554404 + 30 +0.0 + 11 +26774.999928 + 21 +9423.205039 + 31 +0.0 + 0 +LINE + 5 +22DD + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9466.50631 + 30 +0.0 + 11 +26740.0 + 21 +9483.826693 + 31 +0.0 + 0 +LINE + 5 +22DE + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9388.563899 + 30 +0.0 + 11 +26812.499928 + 21 +9401.554404 + 31 +0.0 + 0 +LINE + 5 +22DF + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9444.855674 + 30 +0.0 + 11 +26774.999928 + 21 +9466.50631 + 31 +0.0 + 0 +LINE + 5 +22E0 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9509.80758 + 30 +0.0 + 11 +26740.0 + 21 +9527.127963 + 31 +0.0 + 0 +LINE + 5 +22E1 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9431.865169 + 30 +0.0 + 11 +26812.499928 + 21 +9444.855674 + 31 +0.0 + 0 +LINE + 5 +22E2 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9488.156945 + 30 +0.0 + 11 +26774.999928 + 21 +9509.80758 + 31 +0.0 + 0 +LINE + 5 +22E3 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9553.10885 + 30 +0.0 + 11 +26740.0 + 21 +9570.429233 + 31 +0.0 + 0 +LINE + 5 +22E4 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9475.166439 + 30 +0.0 + 11 +26812.499928 + 21 +9488.156945 + 31 +0.0 + 0 +LINE + 5 +22E5 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9531.458215 + 30 +0.0 + 11 +26774.999928 + 21 +9553.10885 + 31 +0.0 + 0 +LINE + 5 +22E6 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9596.41012 + 30 +0.0 + 11 +26740.0 + 21 +9613.730503 + 31 +0.0 + 0 +LINE + 5 +22E7 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9518.467709 + 30 +0.0 + 11 +26812.499928 + 21 +9531.458215 + 31 +0.0 + 0 +LINE + 5 +22E8 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9574.759485 + 30 +0.0 + 11 +26774.999928 + 21 +9596.41012 + 31 +0.0 + 0 +LINE + 5 +22E9 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9639.71139 + 30 +0.0 + 11 +26740.0 + 21 +9657.031773 + 31 +0.0 + 0 +LINE + 5 +22EA + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9561.768979 + 30 +0.0 + 11 +26812.499928 + 21 +9574.759485 + 31 +0.0 + 0 +LINE + 5 +22EB + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9618.060755 + 30 +0.0 + 11 +26774.999928 + 21 +9639.71139 + 31 +0.0 + 0 +LINE + 5 +22EC + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9683.01266 + 30 +0.0 + 11 +26740.0 + 21 +9700.333043 + 31 +0.0 + 0 +LINE + 5 +22ED + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9605.070249 + 30 +0.0 + 11 +26812.499928 + 21 +9618.060755 + 31 +0.0 + 0 +LINE + 5 +22EE + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9661.362025 + 30 +0.0 + 11 +26774.999928 + 21 +9683.01266 + 31 +0.0 + 0 +LINE + 5 +22EF + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9726.31393 + 30 +0.0 + 11 +26740.0 + 21 +9743.634313 + 31 +0.0 + 0 +LINE + 5 +22F0 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9648.371519 + 30 +0.0 + 11 +26812.499928 + 21 +9661.362025 + 31 +0.0 + 0 +LINE + 5 +22F1 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9704.663295 + 30 +0.0 + 11 +26774.999928 + 21 +9726.31393 + 31 +0.0 + 0 +LINE + 5 +22F2 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9769.615201 + 30 +0.0 + 11 +26740.0 + 21 +9786.935583 + 31 +0.0 + 0 +LINE + 5 +22F3 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9691.672789 + 30 +0.0 + 11 +26812.499928 + 21 +9704.663295 + 31 +0.0 + 0 +LINE + 5 +22F4 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9747.964565 + 30 +0.0 + 11 +26774.999928 + 21 +9769.6152 + 31 +0.0 + 0 +LINE + 5 +22F5 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9812.916471 + 30 +0.0 + 11 +26740.0 + 21 +9830.236853 + 31 +0.0 + 0 +LINE + 5 +22F6 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9734.974059 + 30 +0.0 + 11 +26812.499928 + 21 +9747.964565 + 31 +0.0 + 0 +LINE + 5 +22F7 + 8 +0 + 62 + 0 + 10 +26787.499928 + 20 +9791.265836 + 30 +0.0 + 11 +26774.999928 + 21 +9812.916471 + 31 +0.0 + 0 +LINE + 5 +22F8 + 8 +0 + 62 + 0 + 10 +26749.999928 + 20 +9856.217741 + 30 +0.0 + 11 +26740.0 + 21 +9873.538123 + 31 +0.0 + 0 +LINE + 5 +22F9 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9778.275329 + 30 +0.0 + 11 +26812.499927 + 21 +9791.265835 + 31 +0.0 + 0 +LINE + 5 +22FA + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +9834.567106 + 30 +0.0 + 11 +26774.999927 + 21 +9856.217741 + 31 +0.0 + 0 +LINE + 5 +22FB + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +9899.519011 + 30 +0.0 + 11 +26740.0 + 21 +9916.839393 + 31 +0.0 + 0 +LINE + 5 +22FC + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9821.576599 + 30 +0.0 + 11 +26812.499927 + 21 +9834.567106 + 31 +0.0 + 0 +LINE + 5 +22FD + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +9877.868376 + 30 +0.0 + 11 +26774.999927 + 21 +9899.519011 + 31 +0.0 + 0 +LINE + 5 +22FE + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +9942.820281 + 30 +0.0 + 11 +26740.0 + 21 +9960.140663 + 31 +0.0 + 0 +LINE + 5 +22FF + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9864.877869 + 30 +0.0 + 11 +26812.499927 + 21 +9877.868376 + 31 +0.0 + 0 +LINE + 5 +2300 + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +9921.169646 + 30 +0.0 + 11 +26774.999927 + 21 +9942.820281 + 31 +0.0 + 0 +LINE + 5 +2301 + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +9986.121551 + 30 +0.0 + 11 +26740.0 + 21 +10003.441933 + 31 +0.0 + 0 +LINE + 5 +2302 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9908.179139 + 30 +0.0 + 11 +26812.499927 + 21 +9921.169646 + 31 +0.0 + 0 +LINE + 5 +2303 + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +9964.470916 + 30 +0.0 + 11 +26774.999927 + 21 +9986.121551 + 31 +0.0 + 0 +LINE + 5 +2304 + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10029.422821 + 30 +0.0 + 11 +26740.0 + 21 +10046.743203 + 31 +0.0 + 0 +LINE + 5 +2305 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9951.480409 + 30 +0.0 + 11 +26812.499927 + 21 +9964.470916 + 31 +0.0 + 0 +LINE + 5 +2306 + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10007.772186 + 30 +0.0 + 11 +26774.999927 + 21 +10029.422821 + 31 +0.0 + 0 +LINE + 5 +2307 + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10072.724092 + 30 +0.0 + 11 +26740.0 + 21 +10090.044473 + 31 +0.0 + 0 +LINE + 5 +2308 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +9994.781679 + 30 +0.0 + 11 +26812.499927 + 21 +10007.772186 + 31 +0.0 + 0 +LINE + 5 +2309 + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10051.073456 + 30 +0.0 + 11 +26774.999927 + 21 +10072.724091 + 31 +0.0 + 0 +LINE + 5 +230A + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10116.025362 + 30 +0.0 + 11 +26740.0 + 21 +10133.345743 + 31 +0.0 + 0 +LINE + 5 +230B + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10038.082949 + 30 +0.0 + 11 +26812.499927 + 21 +10051.073456 + 31 +0.0 + 0 +LINE + 5 +230C + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10094.374727 + 30 +0.0 + 11 +26774.999927 + 21 +10116.025362 + 31 +0.0 + 0 +LINE + 5 +230D + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10159.326632 + 30 +0.0 + 11 +26740.0 + 21 +10176.647013 + 31 +0.0 + 0 +LINE + 5 +230E + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10081.384219 + 30 +0.0 + 11 +26812.499927 + 21 +10094.374726 + 31 +0.0 + 0 +LINE + 5 +230F + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10137.675997 + 30 +0.0 + 11 +26774.999927 + 21 +10159.326632 + 31 +0.0 + 0 +LINE + 5 +2310 + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10202.627902 + 30 +0.0 + 11 +26740.0 + 21 +10219.948283 + 31 +0.0 + 0 +LINE + 5 +2311 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10124.685489 + 30 +0.0 + 11 +26812.499927 + 21 +10137.675997 + 31 +0.0 + 0 +LINE + 5 +2312 + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10180.977267 + 30 +0.0 + 11 +26774.999927 + 21 +10202.627902 + 31 +0.0 + 0 +LINE + 5 +2313 + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10245.929172 + 30 +0.0 + 11 +26740.0 + 21 +10263.249553 + 31 +0.0 + 0 +LINE + 5 +2314 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10167.986759 + 30 +0.0 + 11 +26812.499927 + 21 +10180.977267 + 31 +0.0 + 0 +LINE + 5 +2315 + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10224.278537 + 30 +0.0 + 11 +26774.999927 + 21 +10245.929172 + 31 +0.0 + 0 +LINE + 5 +2316 + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10289.230442 + 30 +0.0 + 11 +26740.0 + 21 +10306.550823 + 31 +0.0 + 0 +LINE + 5 +2317 + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10211.288029 + 30 +0.0 + 11 +26812.499927 + 21 +10224.278537 + 31 +0.0 + 0 +LINE + 5 +2318 + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10267.579807 + 30 +0.0 + 11 +26774.999927 + 21 +10289.230442 + 31 +0.0 + 0 +LINE + 5 +2319 + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10332.531712 + 30 +0.0 + 11 +26740.0 + 21 +10349.852093 + 31 +0.0 + 0 +LINE + 5 +231A + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10254.589299 + 30 +0.0 + 11 +26812.499927 + 21 +10267.579807 + 31 +0.0 + 0 +LINE + 5 +231B + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10310.881077 + 30 +0.0 + 11 +26774.999927 + 21 +10332.531712 + 31 +0.0 + 0 +LINE + 5 +231C + 8 +0 + 62 + 0 + 10 +26749.999927 + 20 +10375.832983 + 30 +0.0 + 11 +26749.759161 + 21 +10376.25 + 31 +0.0 + 0 +LINE + 5 +231D + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10297.890569 + 30 +0.0 + 11 +26812.499927 + 21 +10310.881077 + 31 +0.0 + 0 +LINE + 5 +231E + 8 +0 + 62 + 0 + 10 +26787.499927 + 20 +10354.182347 + 30 +0.0 + 11 +26774.999927 + 21 +10375.832982 + 31 +0.0 + 0 +LINE + 5 +231F + 8 +0 + 62 + 0 + 10 +26820.0 + 20 +10341.191839 + 30 +0.0 + 11 +26812.499926 + 21 +10354.182347 + 31 +0.0 + 0 +LINE + 5 +2320 + 8 +0 + 62 + 0 + 10 +25728.811888 + 20 +9170.0 + 30 +0.0 + 11 +25737.499932 + 21 +9185.048134 + 31 +0.0 + 0 +LINE + 5 +2321 + 8 +0 + 62 + 0 + 10 +25762.499932 + 20 +9228.349404 + 30 +0.0 + 11 +25774.999909 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2322 + 8 +0 + 62 + 0 + 10 +25724.999932 + 20 +9206.698769 + 30 +0.0 + 11 +25737.499932 + 21 +9228.349404 + 31 +0.0 + 0 +LINE + 5 +2323 + 8 +0 + 62 + 0 + 10 +25687.499932 + 20 +9185.048134 + 30 +0.0 + 11 +25699.999932 + 21 +9206.698769 + 31 +0.0 + 0 +LINE + 5 +2324 + 8 +0 + 62 + 0 + 10 +25653.811888 + 20 +9170.0 + 30 +0.0 + 11 +25662.499932 + 21 +9185.048134 + 31 +0.0 + 0 +LINE + 5 +2325 + 8 +0 + 62 + 0 + 10 +25687.499932 + 20 +9228.349404 + 30 +0.0 + 11 +25699.99991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2326 + 8 +0 + 62 + 0 + 10 +25649.999932 + 20 +9206.698769 + 30 +0.0 + 11 +25662.499932 + 21 +9228.349404 + 31 +0.0 + 0 +LINE + 5 +2327 + 8 +0 + 62 + 0 + 10 +25612.499932 + 20 +9185.048134 + 30 +0.0 + 11 +25624.999932 + 21 +9206.698769 + 31 +0.0 + 0 +LINE + 5 +2328 + 8 +0 + 62 + 0 + 10 +25578.811888 + 20 +9170.0 + 30 +0.0 + 11 +25587.499932 + 21 +9185.048134 + 31 +0.0 + 0 +LINE + 5 +2329 + 8 +0 + 62 + 0 + 10 +25612.499932 + 20 +9228.349404 + 30 +0.0 + 11 +25624.99991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +232A + 8 +0 + 62 + 0 + 10 +25574.999932 + 20 +9206.698769 + 30 +0.0 + 11 +25587.499932 + 21 +9228.349404 + 31 +0.0 + 0 +LINE + 5 +232B + 8 +0 + 62 + 0 + 10 +25537.499933 + 20 +9185.048134 + 30 +0.0 + 11 +25549.999933 + 21 +9206.698769 + 31 +0.0 + 0 +LINE + 5 +232C + 8 +0 + 62 + 0 + 10 +25503.811889 + 20 +9170.0 + 30 +0.0 + 11 +25512.499933 + 21 +9185.048134 + 31 +0.0 + 0 +LINE + 5 +232D + 8 +0 + 62 + 0 + 10 +25537.499933 + 20 +9228.349404 + 30 +0.0 + 11 +25549.99991 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +232E + 8 +0 + 62 + 0 + 10 +25499.999933 + 20 +9206.698769 + 30 +0.0 + 11 +25512.499933 + 21 +9228.349404 + 31 +0.0 + 0 +LINE + 5 +232F + 8 +0 + 62 + 0 + 10 +25462.499933 + 20 +9185.048134 + 30 +0.0 + 11 +25474.999933 + 21 +9206.698769 + 31 +0.0 + 0 +LINE + 5 +2330 + 8 +0 + 62 + 0 + 10 +25428.811889 + 20 +9170.0 + 30 +0.0 + 11 +25437.499933 + 21 +9185.048133 + 31 +0.0 + 0 +LINE + 5 +2331 + 8 +0 + 62 + 0 + 10 +25462.499933 + 20 +9228.349404 + 30 +0.0 + 11 +25474.999911 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2332 + 8 +0 + 62 + 0 + 10 +25424.999933 + 20 +9206.698769 + 30 +0.0 + 11 +25437.499933 + 21 +9228.349404 + 31 +0.0 + 0 +LINE + 5 +2333 + 8 +0 + 62 + 0 + 10 +25387.499933 + 20 +9185.048133 + 30 +0.0 + 11 +25399.999933 + 21 +9206.698768 + 31 +0.0 + 0 +LINE + 5 +2334 + 8 +0 + 62 + 0 + 10 +25387.499933 + 20 +9228.349404 + 30 +0.0 + 11 +25399.999911 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2335 + 8 +0 + 62 + 0 + 10 +25762.499932 + 20 +9185.048134 + 30 +0.0 + 11 +25774.999932 + 21 +9206.698769 + 31 +0.0 + 0 +LINE + 5 +2336 + 8 +0 + 62 + 0 + 10 +25799.999932 + 20 +9206.698769 + 30 +0.0 + 11 +25812.499932 + 21 +9228.349404 + 31 +0.0 + 0 +LINE + 5 +2337 + 8 +0 + 62 + 0 + 10 +25803.811887 + 20 +9170.0 + 30 +0.0 + 11 +25812.499932 + 21 +9185.048134 + 31 +0.0 + 0 +LINE + 5 +2338 + 8 +0 + 62 + 0 + 10 +25837.499932 + 20 +9228.349404 + 30 +0.0 + 11 +25849.999909 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2339 + 8 +0 + 62 + 0 + 10 +25837.499932 + 20 +9185.048134 + 30 +0.0 + 11 +25849.999932 + 21 +9206.698769 + 31 +0.0 + 0 +LINE + 5 +233A + 8 +0 + 62 + 0 + 10 +25874.999932 + 20 +9206.698769 + 30 +0.0 + 11 +25887.499932 + 21 +9228.349404 + 31 +0.0 + 0 +LINE + 5 +233B + 8 +0 + 62 + 0 + 10 +25878.811887 + 20 +9170.0 + 30 +0.0 + 11 +25887.499931 + 21 +9185.048134 + 31 +0.0 + 0 +LINE + 5 +233C + 8 +0 + 62 + 0 + 10 +25912.499931 + 20 +9228.349405 + 30 +0.0 + 11 +25924.999909 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +233D + 8 +0 + 62 + 0 + 10 +25912.499931 + 20 +9185.048134 + 30 +0.0 + 11 +25924.999931 + 21 +9206.698769 + 31 +0.0 + 0 +LINE + 5 +233E + 8 +0 + 62 + 0 + 10 +25949.999931 + 20 +9206.69877 + 30 +0.0 + 11 +25962.499931 + 21 +9228.349405 + 31 +0.0 + 0 +LINE + 5 +233F + 8 +0 + 62 + 0 + 10 +25953.811887 + 20 +9170.0 + 30 +0.0 + 11 +25962.499931 + 21 +9185.048134 + 31 +0.0 + 0 +LINE + 5 +2340 + 8 +0 + 62 + 0 + 10 +25987.499931 + 20 +9228.349405 + 30 +0.0 + 11 +25999.999908 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2341 + 8 +0 + 62 + 0 + 10 +25987.499931 + 20 +9185.048135 + 30 +0.0 + 11 +25999.999931 + 21 +9206.69877 + 31 +0.0 + 0 +LINE + 5 +2342 + 8 +0 + 62 + 0 + 10 +26024.999931 + 20 +9206.69877 + 30 +0.0 + 11 +26037.499931 + 21 +9228.349405 + 31 +0.0 + 0 +LINE + 5 +2343 + 8 +0 + 62 + 0 + 10 +26028.811886 + 20 +9170.0 + 30 +0.0 + 11 +26037.499931 + 21 +9185.048135 + 31 +0.0 + 0 +LINE + 5 +2344 + 8 +0 + 62 + 0 + 10 +26062.499931 + 20 +9228.349405 + 30 +0.0 + 11 +26074.999908 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2345 + 8 +0 + 62 + 0 + 10 +26062.499931 + 20 +9185.048135 + 30 +0.0 + 11 +26074.999931 + 21 +9206.69877 + 31 +0.0 + 0 +LINE + 5 +2346 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10358.512677 + 30 +0.0 + 11 +26749.999931 + 21 +10375.833065 + 31 +0.0 + 0 +LINE + 5 +2347 + 8 +0 + 62 + 0 + 10 +26099.999931 + 20 +9206.69877 + 30 +0.0 + 11 +26112.499931 + 21 +9228.349405 + 31 +0.0 + 0 +LINE + 5 +2348 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10315.211407 + 30 +0.0 + 11 +26749.999931 + 21 +10332.531795 + 31 +0.0 + 0 +LINE + 5 +2349 + 8 +0 + 62 + 0 + 10 +26774.999931 + 20 +10375.833065 + 30 +0.0 + 11 +26775.240648 + 21 +10376.25 + 31 +0.0 + 0 +LINE + 5 +234A + 8 +0 + 62 + 0 + 10 +26103.811886 + 20 +9170.0 + 30 +0.0 + 11 +26112.499931 + 21 +9185.048135 + 31 +0.0 + 0 +LINE + 5 +234B + 8 +0 + 62 + 0 + 10 +26137.499931 + 20 +9228.349405 + 30 +0.0 + 11 +26149.999908 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +234C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10271.910137 + 30 +0.0 + 11 +26749.999931 + 21 +10289.230525 + 31 +0.0 + 0 +LINE + 5 +234D + 8 +0 + 62 + 0 + 10 +26774.999931 + 20 +10332.531795 + 30 +0.0 + 11 +26787.499931 + 21 +10354.18243 + 31 +0.0 + 0 +LINE + 5 +234E + 8 +0 + 62 + 0 + 10 +26137.499931 + 20 +9185.048135 + 30 +0.0 + 11 +26149.999931 + 21 +9206.69877 + 31 +0.0 + 0 +LINE + 5 +234F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10228.608867 + 30 +0.0 + 11 +26749.999931 + 21 +10245.929254 + 31 +0.0 + 0 +LINE + 5 +2350 + 8 +0 + 62 + 0 + 10 +26774.999931 + 20 +10289.230525 + 30 +0.0 + 11 +26787.499931 + 21 +10310.88116 + 31 +0.0 + 0 +LINE + 5 +2351 + 8 +0 + 62 + 0 + 10 +26812.499931 + 20 +10354.18243 + 30 +0.0 + 11 +26820.0 + 21 +10367.172931 + 31 +0.0 + 0 +LINE + 5 +2352 + 8 +0 + 62 + 0 + 10 +26174.999931 + 20 +9206.69877 + 30 +0.0 + 11 +26187.499931 + 21 +9228.349405 + 31 +0.0 + 0 +LINE + 5 +2353 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10185.307597 + 30 +0.0 + 11 +26749.999931 + 21 +10202.627984 + 31 +0.0 + 0 +LINE + 5 +2354 + 8 +0 + 62 + 0 + 10 +26774.999931 + 20 +10245.929254 + 30 +0.0 + 11 +26787.499931 + 21 +10267.57989 + 31 +0.0 + 0 +LINE + 5 +2355 + 8 +0 + 62 + 0 + 10 +26812.499931 + 20 +10310.88116 + 30 +0.0 + 11 +26820.0 + 21 +10323.871661 + 31 +0.0 + 0 +LINE + 5 +2356 + 8 +0 + 62 + 0 + 10 +26178.811886 + 20 +9170.0 + 30 +0.0 + 11 +26187.49993 + 21 +9185.048135 + 31 +0.0 + 0 +LINE + 5 +2357 + 8 +0 + 62 + 0 + 10 +26212.49993 + 20 +9228.349405 + 30 +0.0 + 11 +26224.999907 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2358 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10142.006327 + 30 +0.0 + 11 +26749.99993 + 21 +10159.326714 + 31 +0.0 + 0 +LINE + 5 +2359 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +10202.627984 + 30 +0.0 + 11 +26787.49993 + 21 +10224.278619 + 31 +0.0 + 0 +LINE + 5 +235A + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +10267.57989 + 30 +0.0 + 11 +26820.0 + 21 +10280.570391 + 31 +0.0 + 0 +LINE + 5 +235B + 8 +0 + 62 + 0 + 10 +26212.49993 + 20 +9185.048135 + 30 +0.0 + 11 +26224.99993 + 21 +9206.69877 + 31 +0.0 + 0 +LINE + 5 +235C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10098.705057 + 30 +0.0 + 11 +26749.99993 + 21 +10116.025444 + 31 +0.0 + 0 +LINE + 5 +235D + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +10159.326714 + 30 +0.0 + 11 +26787.49993 + 21 +10180.977349 + 31 +0.0 + 0 +LINE + 5 +235E + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +10224.278619 + 30 +0.0 + 11 +26820.0 + 21 +10237.269121 + 31 +0.0 + 0 +LINE + 5 +235F + 8 +0 + 62 + 0 + 10 +26249.99993 + 20 +9206.69877 + 30 +0.0 + 11 +26262.49993 + 21 +9228.349405 + 31 +0.0 + 0 +LINE + 5 +2360 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10055.403787 + 30 +0.0 + 11 +26749.99993 + 21 +10072.724174 + 31 +0.0 + 0 +LINE + 5 +2361 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +10116.025444 + 30 +0.0 + 11 +26787.49993 + 21 +10137.676079 + 31 +0.0 + 0 +LINE + 5 +2362 + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +10180.977349 + 30 +0.0 + 11 +26820.0 + 21 +10193.967851 + 31 +0.0 + 0 +LINE + 5 +2363 + 8 +0 + 62 + 0 + 10 +26253.811885 + 20 +9170.0 + 30 +0.0 + 11 +26262.49993 + 21 +9185.048135 + 31 +0.0 + 0 +LINE + 5 +2364 + 8 +0 + 62 + 0 + 10 +26287.49993 + 20 +9228.349405 + 30 +0.0 + 11 +26299.999907 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2365 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +10012.102517 + 30 +0.0 + 11 +26749.99993 + 21 +10029.422904 + 31 +0.0 + 0 +LINE + 5 +2366 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +10072.724174 + 30 +0.0 + 11 +26787.49993 + 21 +10094.374809 + 31 +0.0 + 0 +LINE + 5 +2367 + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +10137.676079 + 30 +0.0 + 11 +26820.0 + 21 +10150.666581 + 31 +0.0 + 0 +LINE + 5 +2368 + 8 +0 + 62 + 0 + 10 +26287.49993 + 20 +9185.048135 + 30 +0.0 + 11 +26299.99993 + 21 +9206.69877 + 31 +0.0 + 0 +LINE + 5 +2369 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9968.801247 + 30 +0.0 + 11 +26749.99993 + 21 +9986.121634 + 31 +0.0 + 0 +LINE + 5 +236A + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +10029.422904 + 30 +0.0 + 11 +26787.49993 + 21 +10051.073539 + 31 +0.0 + 0 +LINE + 5 +236B + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +10094.374809 + 30 +0.0 + 11 +26820.0 + 21 +10107.365311 + 31 +0.0 + 0 +LINE + 5 +236C + 8 +0 + 62 + 0 + 10 +26324.99993 + 20 +9206.69877 + 30 +0.0 + 11 +26337.49993 + 21 +9228.349405 + 31 +0.0 + 0 +LINE + 5 +236D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9925.499977 + 30 +0.0 + 11 +26749.99993 + 21 +9942.820363 + 31 +0.0 + 0 +LINE + 5 +236E + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +9986.121634 + 30 +0.0 + 11 +26787.49993 + 21 +10007.772269 + 31 +0.0 + 0 +LINE + 5 +236F + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +10051.073539 + 30 +0.0 + 11 +26820.0 + 21 +10064.064041 + 31 +0.0 + 0 +LINE + 5 +2370 + 8 +0 + 62 + 0 + 10 +26328.811885 + 20 +9170.0 + 30 +0.0 + 11 +26337.49993 + 21 +9185.048135 + 31 +0.0 + 0 +LINE + 5 +2371 + 8 +0 + 62 + 0 + 10 +26362.49993 + 20 +9228.349405 + 30 +0.0 + 11 +26374.999907 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2372 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9882.198707 + 30 +0.0 + 11 +26749.99993 + 21 +9899.519093 + 31 +0.0 + 0 +LINE + 5 +2373 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +9942.820363 + 30 +0.0 + 11 +26787.49993 + 21 +9964.470999 + 31 +0.0 + 0 +LINE + 5 +2374 + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +10007.772269 + 30 +0.0 + 11 +26820.0 + 21 +10020.762771 + 31 +0.0 + 0 +LINE + 5 +2375 + 8 +0 + 62 + 0 + 10 +26362.49993 + 20 +9185.048135 + 30 +0.0 + 11 +26374.99993 + 21 +9206.69877 + 31 +0.0 + 0 +LINE + 5 +2376 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9838.897437 + 30 +0.0 + 11 +26749.99993 + 21 +9856.217823 + 31 +0.0 + 0 +LINE + 5 +2377 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +9899.519093 + 30 +0.0 + 11 +26787.49993 + 21 +9921.169728 + 31 +0.0 + 0 +LINE + 5 +2378 + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +9964.470999 + 30 +0.0 + 11 +26820.0 + 21 +9977.461501 + 31 +0.0 + 0 +LINE + 5 +2379 + 8 +0 + 62 + 0 + 10 +26399.99993 + 20 +9206.69877 + 30 +0.0 + 11 +26412.49993 + 21 +9228.349405 + 31 +0.0 + 0 +LINE + 5 +237A + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9795.596167 + 30 +0.0 + 11 +26749.99993 + 21 +9812.916553 + 31 +0.0 + 0 +LINE + 5 +237B + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +9856.217823 + 30 +0.0 + 11 +26787.49993 + 21 +9877.868458 + 31 +0.0 + 0 +LINE + 5 +237C + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +9921.169728 + 30 +0.0 + 11 +26820.0 + 21 +9934.160231 + 31 +0.0 + 0 +LINE + 5 +237D + 8 +0 + 62 + 0 + 10 +26403.811885 + 20 +9170.0 + 30 +0.0 + 11 +26412.49993 + 21 +9185.048135 + 31 +0.0 + 0 +LINE + 5 +237E + 8 +0 + 62 + 0 + 10 +26437.49993 + 20 +9228.349405 + 30 +0.0 + 11 +26449.999906 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +237F + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9752.294897 + 30 +0.0 + 11 +26749.99993 + 21 +9769.615283 + 31 +0.0 + 0 +LINE + 5 +2380 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +9812.916553 + 30 +0.0 + 11 +26787.49993 + 21 +9834.567188 + 31 +0.0 + 0 +LINE + 5 +2381 + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +9877.868458 + 30 +0.0 + 11 +26820.0 + 21 +9890.858961 + 31 +0.0 + 0 +LINE + 5 +2382 + 8 +0 + 62 + 0 + 10 +26437.49993 + 20 +9185.048135 + 30 +0.0 + 11 +26449.99993 + 21 +9206.69877 + 31 +0.0 + 0 +LINE + 5 +2383 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9708.993627 + 30 +0.0 + 11 +26749.99993 + 21 +9726.314013 + 31 +0.0 + 0 +LINE + 5 +2384 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +9769.615283 + 30 +0.0 + 11 +26787.49993 + 21 +9791.265918 + 31 +0.0 + 0 +LINE + 5 +2385 + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +9834.567188 + 30 +0.0 + 11 +26820.0 + 21 +9847.557691 + 31 +0.0 + 0 +LINE + 5 +2386 + 8 +0 + 62 + 0 + 10 +26474.99993 + 20 +9206.69877 + 30 +0.0 + 11 +26487.49993 + 21 +9228.349406 + 31 +0.0 + 0 +LINE + 5 +2387 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9665.692357 + 30 +0.0 + 11 +26749.99993 + 21 +9683.012743 + 31 +0.0 + 0 +LINE + 5 +2388 + 8 +0 + 62 + 0 + 10 +26774.99993 + 20 +9726.314013 + 30 +0.0 + 11 +26787.49993 + 21 +9747.964648 + 31 +0.0 + 0 +LINE + 5 +2389 + 8 +0 + 62 + 0 + 10 +26812.49993 + 20 +9791.265918 + 30 +0.0 + 11 +26820.0 + 21 +9804.256421 + 31 +0.0 + 0 +LINE + 5 +238A + 8 +0 + 62 + 0 + 10 +26478.811884 + 20 +9170.0 + 30 +0.0 + 11 +26487.499929 + 21 +9185.048135 + 31 +0.0 + 0 +LINE + 5 +238B + 8 +0 + 62 + 0 + 10 +26512.499929 + 20 +9228.349406 + 30 +0.0 + 11 +26524.999906 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +238C + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9622.391087 + 30 +0.0 + 11 +26749.999929 + 21 +9639.711472 + 31 +0.0 + 0 +LINE + 5 +238D + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9683.012743 + 30 +0.0 + 11 +26787.499929 + 21 +9704.663378 + 31 +0.0 + 0 +LINE + 5 +238E + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9747.964648 + 30 +0.0 + 11 +26820.0 + 21 +9760.955151 + 31 +0.0 + 0 +LINE + 5 +238F + 8 +0 + 62 + 0 + 10 +26512.499929 + 20 +9185.048135 + 30 +0.0 + 11 +26524.999929 + 21 +9206.698771 + 31 +0.0 + 0 +LINE + 5 +2390 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9579.089817 + 30 +0.0 + 11 +26749.999929 + 21 +9596.410202 + 31 +0.0 + 0 +LINE + 5 +2391 + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9639.711472 + 30 +0.0 + 11 +26787.499929 + 21 +9661.362108 + 31 +0.0 + 0 +LINE + 5 +2392 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9704.663378 + 30 +0.0 + 11 +26820.0 + 21 +9717.653881 + 31 +0.0 + 0 +LINE + 5 +2393 + 8 +0 + 62 + 0 + 10 +26549.999929 + 20 +9206.698771 + 30 +0.0 + 11 +26562.499929 + 21 +9228.349406 + 31 +0.0 + 0 +LINE + 5 +2394 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9535.788547 + 30 +0.0 + 11 +26749.999929 + 21 +9553.108932 + 31 +0.0 + 0 +LINE + 5 +2395 + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9596.410202 + 30 +0.0 + 11 +26787.499929 + 21 +9618.060837 + 31 +0.0 + 0 +LINE + 5 +2396 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9661.362108 + 30 +0.0 + 11 +26820.0 + 21 +9674.352611 + 31 +0.0 + 0 +LINE + 5 +2397 + 8 +0 + 62 + 0 + 10 +26553.811884 + 20 +9170.0 + 30 +0.0 + 11 +26562.499929 + 21 +9185.048136 + 31 +0.0 + 0 +LINE + 5 +2398 + 8 +0 + 62 + 0 + 10 +26587.499929 + 20 +9228.349406 + 30 +0.0 + 11 +26599.999906 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2399 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9492.487277 + 30 +0.0 + 11 +26749.999929 + 21 +9509.807662 + 31 +0.0 + 0 +LINE + 5 +239A + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9553.108932 + 30 +0.0 + 11 +26787.499929 + 21 +9574.759567 + 31 +0.0 + 0 +LINE + 5 +239B + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9618.060837 + 30 +0.0 + 11 +26820.0 + 21 +9631.051341 + 31 +0.0 + 0 +LINE + 5 +239C + 8 +0 + 62 + 0 + 10 +26587.499929 + 20 +9185.048136 + 30 +0.0 + 11 +26599.999929 + 21 +9206.698771 + 31 +0.0 + 0 +LINE + 5 +239D + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9449.186007 + 30 +0.0 + 11 +26749.999929 + 21 +9466.506392 + 31 +0.0 + 0 +LINE + 5 +239E + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9509.807662 + 30 +0.0 + 11 +26787.499929 + 21 +9531.458297 + 31 +0.0 + 0 +LINE + 5 +239F + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9574.759567 + 30 +0.0 + 11 +26820.0 + 21 +9587.750071 + 31 +0.0 + 0 +LINE + 5 +23A0 + 8 +0 + 62 + 0 + 10 +26624.999929 + 20 +9206.698771 + 30 +0.0 + 11 +26637.499929 + 21 +9228.349406 + 31 +0.0 + 0 +LINE + 5 +23A1 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9405.884737 + 30 +0.0 + 11 +26749.999929 + 21 +9423.205122 + 31 +0.0 + 0 +LINE + 5 +23A2 + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9466.506392 + 30 +0.0 + 11 +26787.499929 + 21 +9488.157027 + 31 +0.0 + 0 +LINE + 5 +23A3 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9531.458297 + 30 +0.0 + 11 +26820.0 + 21 +9544.448801 + 31 +0.0 + 0 +LINE + 5 +23A4 + 8 +0 + 62 + 0 + 10 +26628.811884 + 20 +9170.0 + 30 +0.0 + 11 +26637.499929 + 21 +9185.048136 + 31 +0.0 + 0 +LINE + 5 +23A5 + 8 +0 + 62 + 0 + 10 +26662.499929 + 20 +9228.349406 + 30 +0.0 + 11 +26674.999905 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +23A6 + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9362.583467 + 30 +0.0 + 11 +26749.999929 + 21 +9379.903852 + 31 +0.0 + 0 +LINE + 5 +23A7 + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9423.205122 + 30 +0.0 + 11 +26787.499929 + 21 +9444.855757 + 31 +0.0 + 0 +LINE + 5 +23A8 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9488.157027 + 30 +0.0 + 11 +26820.0 + 21 +9501.147531 + 31 +0.0 + 0 +LINE + 5 +23A9 + 8 +0 + 62 + 0 + 10 +26662.499929 + 20 +9185.048136 + 30 +0.0 + 11 +26674.999929 + 21 +9206.698771 + 31 +0.0 + 0 +LINE + 5 +23AA + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9319.282197 + 30 +0.0 + 11 +26749.999929 + 21 +9336.602581 + 31 +0.0 + 0 +LINE + 5 +23AB + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9379.903852 + 30 +0.0 + 11 +26787.499929 + 21 +9401.554487 + 31 +0.0 + 0 +LINE + 5 +23AC + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9444.855757 + 30 +0.0 + 11 +26820.0 + 21 +9457.846261 + 31 +0.0 + 0 +LINE + 5 +23AD + 8 +0 + 62 + 0 + 10 +26699.999929 + 20 +9206.698771 + 30 +0.0 + 11 +26712.499929 + 21 +9228.349406 + 31 +0.0 + 0 +LINE + 5 +23AE + 8 +0 + 62 + 0 + 10 +26740.0 + 20 +9275.980927 + 30 +0.0 + 11 +26749.999929 + 21 +9293.301311 + 31 +0.0 + 0 +LINE + 5 +23AF + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9336.602581 + 30 +0.0 + 11 +26787.499929 + 21 +9358.253217 + 31 +0.0 + 0 +LINE + 5 +23B0 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9401.554487 + 30 +0.0 + 11 +26820.0 + 21 +9414.544991 + 31 +0.0 + 0 +LINE + 5 +23B1 + 8 +0 + 62 + 0 + 10 +26703.811883 + 20 +9170.0 + 30 +0.0 + 11 +26712.499929 + 21 +9185.048136 + 31 +0.0 + 0 +LINE + 5 +23B2 + 8 +0 + 62 + 0 + 10 +26737.499929 + 20 +9228.349406 + 30 +0.0 + 11 +26749.999929 + 21 +9250.000041 + 31 +0.0 + 0 +LINE + 5 +23B3 + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9293.301311 + 30 +0.0 + 11 +26787.499929 + 21 +9314.951946 + 31 +0.0 + 0 +LINE + 5 +23B4 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9358.253217 + 30 +0.0 + 11 +26820.0 + 21 +9371.243721 + 31 +0.0 + 0 +LINE + 5 +23B5 + 8 +0 + 62 + 0 + 10 +26737.499929 + 20 +9185.048136 + 30 +0.0 + 11 +26749.999929 + 21 +9206.698771 + 31 +0.0 + 0 +LINE + 5 +23B6 + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9250.000041 + 30 +0.0 + 11 +26787.499929 + 21 +9271.650676 + 31 +0.0 + 0 +LINE + 5 +23B7 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9314.951946 + 30 +0.0 + 11 +26820.0 + 21 +9327.942451 + 31 +0.0 + 0 +LINE + 5 +23B8 + 8 +0 + 62 + 0 + 10 +26774.999929 + 20 +9206.698771 + 30 +0.0 + 11 +26787.499929 + 21 +9228.349406 + 31 +0.0 + 0 +LINE + 5 +23B9 + 8 +0 + 62 + 0 + 10 +26812.499929 + 20 +9271.650676 + 30 +0.0 + 11 +26820.0 + 21 +9284.641181 + 31 +0.0 + 0 +LINE + 5 +23BA + 8 +0 + 62 + 0 + 10 +26778.811883 + 20 +9170.0 + 30 +0.0 + 11 +26787.499928 + 21 +9185.048136 + 31 +0.0 + 0 +LINE + 5 +23BB + 8 +0 + 62 + 0 + 10 +26812.499928 + 20 +9228.349406 + 30 +0.0 + 11 +26820.0 + 21 +9241.339911 + 31 +0.0 + 0 +LINE + 5 +23BC + 8 +0 + 62 + 0 + 10 +26812.499928 + 20 +9185.048136 + 30 +0.0 + 11 +26820.0 + 21 +9198.038641 + 31 +0.0 + 0 +ENDBLK + 5 +23BD + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X52 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X52 + 1 + + 0 +LINE + 5 +23BF + 8 +0 + 62 + 0 + 10 +21912.5 + 20 +9228.349365 + 30 +0.0 + 11 +21937.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C0 + 8 +0 + 62 + 0 + 10 +21987.5 + 20 +9228.349365 + 30 +0.0 + 11 +22012.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C1 + 8 +0 + 62 + 0 + 10 +22062.5 + 20 +9228.349365 + 30 +0.0 + 11 +22087.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C2 + 8 +0 + 62 + 0 + 10 +22137.5 + 20 +9228.349365 + 30 +0.0 + 11 +22162.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C3 + 8 +0 + 62 + 0 + 10 +22212.5 + 20 +9228.349365 + 30 +0.0 + 11 +22237.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C4 + 8 +0 + 62 + 0 + 10 +22287.5 + 20 +9228.349365 + 30 +0.0 + 11 +22312.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C5 + 8 +0 + 62 + 0 + 10 +22362.5 + 20 +9228.349365 + 30 +0.0 + 11 +22387.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C6 + 8 +0 + 62 + 0 + 10 +22437.5 + 20 +9228.349365 + 30 +0.0 + 11 +22462.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C7 + 8 +0 + 62 + 0 + 10 +22512.5 + 20 +9228.349365 + 30 +0.0 + 11 +22537.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C8 + 8 +0 + 62 + 0 + 10 +22587.5 + 20 +9228.349365 + 30 +0.0 + 11 +22612.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23C9 + 8 +0 + 62 + 0 + 10 +22662.5 + 20 +9228.349365 + 30 +0.0 + 11 +22687.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23CA + 8 +0 + 62 + 0 + 10 +22737.5 + 20 +9228.349365 + 30 +0.0 + 11 +22762.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23CB + 8 +0 + 62 + 0 + 10 +22812.5 + 20 +9228.349365 + 30 +0.0 + 11 +22837.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23CC + 8 +0 + 62 + 0 + 10 +22887.5 + 20 +9228.349365 + 30 +0.0 + 11 +22912.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23CD + 8 +0 + 62 + 0 + 10 +22962.5 + 20 +9228.349365 + 30 +0.0 + 11 +22987.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23CE + 8 +0 + 62 + 0 + 10 +23037.5 + 20 +9228.349365 + 30 +0.0 + 11 +23062.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23CF + 8 +0 + 62 + 0 + 10 +23112.5 + 20 +9228.349365 + 30 +0.0 + 11 +23137.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23D0 + 8 +0 + 62 + 0 + 10 +23187.5 + 20 +9228.349365 + 30 +0.0 + 11 +23212.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +23D1 + 8 +0 + 62 + 0 + 10 +21875.0 + 20 +9206.69873 + 30 +0.0 + 11 +21900.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D2 + 8 +0 + 62 + 0 + 10 +21950.0 + 20 +9206.69873 + 30 +0.0 + 11 +21975.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D3 + 8 +0 + 62 + 0 + 10 +22025.0 + 20 +9206.69873 + 30 +0.0 + 11 +22050.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D4 + 8 +0 + 62 + 0 + 10 +22100.0 + 20 +9206.69873 + 30 +0.0 + 11 +22125.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D5 + 8 +0 + 62 + 0 + 10 +22175.0 + 20 +9206.69873 + 30 +0.0 + 11 +22200.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D6 + 8 +0 + 62 + 0 + 10 +22250.0 + 20 +9206.69873 + 30 +0.0 + 11 +22275.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D7 + 8 +0 + 62 + 0 + 10 +22325.0 + 20 +9206.69873 + 30 +0.0 + 11 +22350.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D8 + 8 +0 + 62 + 0 + 10 +22400.0 + 20 +9206.69873 + 30 +0.0 + 11 +22425.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23D9 + 8 +0 + 62 + 0 + 10 +22475.0 + 20 +9206.69873 + 30 +0.0 + 11 +22500.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23DA + 8 +0 + 62 + 0 + 10 +22550.0 + 20 +9206.69873 + 30 +0.0 + 11 +22575.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23DB + 8 +0 + 62 + 0 + 10 +22625.0 + 20 +9206.69873 + 30 +0.0 + 11 +22650.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23DC + 8 +0 + 62 + 0 + 10 +22700.0 + 20 +9206.69873 + 30 +0.0 + 11 +22725.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23DD + 8 +0 + 62 + 0 + 10 +22775.0 + 20 +9206.69873 + 30 +0.0 + 11 +22800.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23DE + 8 +0 + 62 + 0 + 10 +22850.0 + 20 +9206.69873 + 30 +0.0 + 11 +22875.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23DF + 8 +0 + 62 + 0 + 10 +22925.0 + 20 +9206.69873 + 30 +0.0 + 11 +22950.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23E0 + 8 +0 + 62 + 0 + 10 +23000.0 + 20 +9206.69873 + 30 +0.0 + 11 +23025.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23E1 + 8 +0 + 62 + 0 + 10 +23075.0 + 20 +9206.69873 + 30 +0.0 + 11 +23100.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23E2 + 8 +0 + 62 + 0 + 10 +23150.0 + 20 +9206.69873 + 30 +0.0 + 11 +23175.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23E3 + 8 +0 + 62 + 0 + 10 +23225.0 + 20 +9206.69873 + 30 +0.0 + 11 +23250.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +23E4 + 8 +0 + 62 + 0 + 10 +21912.5 + 20 +9185.048095 + 30 +0.0 + 11 +21937.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23E5 + 8 +0 + 62 + 0 + 10 +21987.5 + 20 +9185.048095 + 30 +0.0 + 11 +22012.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23E6 + 8 +0 + 62 + 0 + 10 +22062.5 + 20 +9185.048095 + 30 +0.0 + 11 +22087.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23E7 + 8 +0 + 62 + 0 + 10 +22137.5 + 20 +9185.048095 + 30 +0.0 + 11 +22162.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23E8 + 8 +0 + 62 + 0 + 10 +22212.5 + 20 +9185.048095 + 30 +0.0 + 11 +22237.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23E9 + 8 +0 + 62 + 0 + 10 +22287.5 + 20 +9185.048095 + 30 +0.0 + 11 +22312.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23EA + 8 +0 + 62 + 0 + 10 +22362.5 + 20 +9185.048095 + 30 +0.0 + 11 +22387.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23EB + 8 +0 + 62 + 0 + 10 +22437.5 + 20 +9185.048095 + 30 +0.0 + 11 +22462.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23EC + 8 +0 + 62 + 0 + 10 +22512.5 + 20 +9185.048095 + 30 +0.0 + 11 +22537.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23ED + 8 +0 + 62 + 0 + 10 +22587.5 + 20 +9185.048095 + 30 +0.0 + 11 +22612.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23EE + 8 +0 + 62 + 0 + 10 +22662.5 + 20 +9185.048095 + 30 +0.0 + 11 +22687.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23EF + 8 +0 + 62 + 0 + 10 +22737.5 + 20 +9185.048095 + 30 +0.0 + 11 +22762.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23F0 + 8 +0 + 62 + 0 + 10 +22812.5 + 20 +9185.048095 + 30 +0.0 + 11 +22837.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23F1 + 8 +0 + 62 + 0 + 10 +22887.5 + 20 +9185.048095 + 30 +0.0 + 11 +22912.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23F2 + 8 +0 + 62 + 0 + 10 +22962.5 + 20 +9185.048095 + 30 +0.0 + 11 +22987.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23F3 + 8 +0 + 62 + 0 + 10 +23037.5 + 20 +9185.048095 + 30 +0.0 + 11 +23062.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23F4 + 8 +0 + 62 + 0 + 10 +23112.5 + 20 +9185.048095 + 30 +0.0 + 11 +23137.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23F5 + 8 +0 + 62 + 0 + 10 +23187.5 + 20 +9185.048095 + 30 +0.0 + 11 +23212.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +23F6 + 8 +0 + 62 + 0 + 10 +22549.999943 + 20 +9206.698697 + 30 +0.0 + 11 +22537.499943 + 21 +9228.349332 + 31 +0.0 + 0 +LINE + 5 +23F7 + 8 +0 + 62 + 0 + 10 +22546.187945 + 20 +9170.0 + 30 +0.0 + 11 +22537.499943 + 21 +9185.048062 + 31 +0.0 + 0 +LINE + 5 +23F8 + 8 +0 + 62 + 0 + 10 +22512.499943 + 20 +9228.349332 + 30 +0.0 + 11 +22499.999943 + 21 +9249.999967 + 31 +0.0 + 0 +LINE + 5 +23F9 + 8 +0 + 62 + 0 + 10 +22512.499943 + 20 +9185.048062 + 30 +0.0 + 11 +22499.999943 + 21 +9206.698697 + 31 +0.0 + 0 +LINE + 5 +23FA + 8 +0 + 62 + 0 + 10 +22474.999943 + 20 +9249.999967 + 30 +0.0 + 11 +22474.999924 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +23FB + 8 +0 + 62 + 0 + 10 +22474.999943 + 20 +9206.698697 + 30 +0.0 + 11 +22462.499943 + 21 +9228.349332 + 31 +0.0 + 0 +LINE + 5 +23FC + 8 +0 + 62 + 0 + 10 +22471.187945 + 20 +9170.0 + 30 +0.0 + 11 +22462.499943 + 21 +9185.048062 + 31 +0.0 + 0 +LINE + 5 +23FD + 8 +0 + 62 + 0 + 10 +22437.499943 + 20 +9228.349332 + 30 +0.0 + 11 +22424.999943 + 21 +9249.999967 + 31 +0.0 + 0 +LINE + 5 +23FE + 8 +0 + 62 + 0 + 10 +22437.499943 + 20 +9185.048062 + 30 +0.0 + 11 +22424.999943 + 21 +9206.698697 + 31 +0.0 + 0 +LINE + 5 +23FF + 8 +0 + 62 + 0 + 10 +22399.999943 + 20 +9249.999967 + 30 +0.0 + 11 +22399.999924 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2400 + 8 +0 + 62 + 0 + 10 +22399.999943 + 20 +9206.698697 + 30 +0.0 + 11 +22387.499943 + 21 +9228.349332 + 31 +0.0 + 0 +LINE + 5 +2401 + 8 +0 + 62 + 0 + 10 +22396.187946 + 20 +9170.0 + 30 +0.0 + 11 +22387.499943 + 21 +9185.048062 + 31 +0.0 + 0 +LINE + 5 +2402 + 8 +0 + 62 + 0 + 10 +22362.499943 + 20 +9228.349332 + 30 +0.0 + 11 +22349.999943 + 21 +9249.999967 + 31 +0.0 + 0 +LINE + 5 +2403 + 8 +0 + 62 + 0 + 10 +22362.499943 + 20 +9185.048062 + 30 +0.0 + 11 +22349.999943 + 21 +9206.698697 + 31 +0.0 + 0 +LINE + 5 +2404 + 8 +0 + 62 + 0 + 10 +22324.999943 + 20 +9249.999967 + 30 +0.0 + 11 +22324.999924 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2405 + 8 +0 + 62 + 0 + 10 +22324.999943 + 20 +9206.698697 + 30 +0.0 + 11 +22312.499943 + 21 +9228.349332 + 31 +0.0 + 0 +LINE + 5 +2406 + 8 +0 + 62 + 0 + 10 +22321.187946 + 20 +9170.0 + 30 +0.0 + 11 +22312.499943 + 21 +9185.048062 + 31 +0.0 + 0 +LINE + 5 +2407 + 8 +0 + 62 + 0 + 10 +22287.499943 + 20 +9228.349332 + 30 +0.0 + 11 +22274.999943 + 21 +9249.999967 + 31 +0.0 + 0 +LINE + 5 +2408 + 8 +0 + 62 + 0 + 10 +22287.499943 + 20 +9185.048062 + 30 +0.0 + 11 +22274.999943 + 21 +9206.698697 + 31 +0.0 + 0 +LINE + 5 +2409 + 8 +0 + 62 + 0 + 10 +22249.999943 + 20 +9249.999967 + 30 +0.0 + 11 +22249.999925 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +240A + 8 +0 + 62 + 0 + 10 +22249.999944 + 20 +9206.698697 + 30 +0.0 + 11 +22237.499944 + 21 +9228.349332 + 31 +0.0 + 0 +LINE + 5 +240B + 8 +0 + 62 + 0 + 10 +22246.187946 + 20 +9170.0 + 30 +0.0 + 11 +22237.499944 + 21 +9185.048062 + 31 +0.0 + 0 +LINE + 5 +240C + 8 +0 + 62 + 0 + 10 +22212.499944 + 20 +9228.349332 + 30 +0.0 + 11 +22199.999944 + 21 +9249.999967 + 31 +0.0 + 0 +LINE + 5 +240D + 8 +0 + 62 + 0 + 10 +22212.499944 + 20 +9185.048062 + 30 +0.0 + 11 +22199.999944 + 21 +9206.698697 + 31 +0.0 + 0 +LINE + 5 +240E + 8 +0 + 62 + 0 + 10 +22174.999944 + 20 +9249.999968 + 30 +0.0 + 11 +22174.999925 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +240F + 8 +0 + 62 + 0 + 10 +22174.999944 + 20 +9206.698697 + 30 +0.0 + 11 +22162.499944 + 21 +9228.349332 + 31 +0.0 + 0 +LINE + 5 +2410 + 8 +0 + 62 + 0 + 10 +22171.187947 + 20 +9170.0 + 30 +0.0 + 11 +22162.499944 + 21 +9185.048062 + 31 +0.0 + 0 +LINE + 5 +2411 + 8 +0 + 62 + 0 + 10 +22137.499944 + 20 +9228.349333 + 30 +0.0 + 11 +22124.999944 + 21 +9249.999968 + 31 +0.0 + 0 +LINE + 5 +2412 + 8 +0 + 62 + 0 + 10 +22137.499944 + 20 +9185.048062 + 30 +0.0 + 11 +22124.999944 + 21 +9206.698697 + 31 +0.0 + 0 +LINE + 5 +2413 + 8 +0 + 62 + 0 + 10 +22099.999944 + 20 +9249.999968 + 30 +0.0 + 11 +22099.999925 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2414 + 8 +0 + 62 + 0 + 10 +22099.999944 + 20 +9206.698698 + 30 +0.0 + 11 +22087.499944 + 21 +9228.349333 + 31 +0.0 + 0 +LINE + 5 +2415 + 8 +0 + 62 + 0 + 10 +22096.187947 + 20 +9170.0 + 30 +0.0 + 11 +22087.499944 + 21 +9185.048062 + 31 +0.0 + 0 +LINE + 5 +2416 + 8 +0 + 62 + 0 + 10 +22062.499944 + 20 +9228.349333 + 30 +0.0 + 11 +22049.999944 + 21 +9249.999968 + 31 +0.0 + 0 +LINE + 5 +2417 + 8 +0 + 62 + 0 + 10 +22062.499944 + 20 +9185.048063 + 30 +0.0 + 11 +22049.999944 + 21 +9206.698698 + 31 +0.0 + 0 +LINE + 5 +2418 + 8 +0 + 62 + 0 + 10 +22024.999944 + 20 +9249.999968 + 30 +0.0 + 11 +22024.999926 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2419 + 8 +0 + 62 + 0 + 10 +22024.999944 + 20 +9206.698698 + 30 +0.0 + 11 +22012.499944 + 21 +9228.349333 + 31 +0.0 + 0 +LINE + 5 +241A + 8 +0 + 62 + 0 + 10 +22021.187947 + 20 +9170.0 + 30 +0.0 + 11 +22012.499944 + 21 +9185.048063 + 31 +0.0 + 0 +LINE + 5 +241B + 8 +0 + 62 + 0 + 10 +21987.499944 + 20 +9228.349333 + 30 +0.0 + 11 +21974.999944 + 21 +9249.999968 + 31 +0.0 + 0 +LINE + 5 +241C + 8 +0 + 62 + 0 + 10 +21987.499944 + 20 +9185.048063 + 30 +0.0 + 11 +21974.999944 + 21 +9206.698698 + 31 +0.0 + 0 +LINE + 5 +241D + 8 +0 + 62 + 0 + 10 +21949.999944 + 20 +9249.999968 + 30 +0.0 + 11 +21949.999926 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +241E + 8 +0 + 62 + 0 + 10 +21949.999945 + 20 +9206.698698 + 30 +0.0 + 11 +21937.499945 + 21 +9228.349333 + 31 +0.0 + 0 +LINE + 5 +241F + 8 +0 + 62 + 0 + 10 +21946.187948 + 20 +9170.0 + 30 +0.0 + 11 +21937.499945 + 21 +9185.048063 + 31 +0.0 + 0 +LINE + 5 +2420 + 8 +0 + 62 + 0 + 10 +21912.499945 + 20 +9228.349333 + 30 +0.0 + 11 +21899.999945 + 21 +9249.999968 + 31 +0.0 + 0 +LINE + 5 +2421 + 8 +0 + 62 + 0 + 10 +21912.499945 + 20 +9185.048063 + 30 +0.0 + 11 +21899.999945 + 21 +9206.698698 + 31 +0.0 + 0 +LINE + 5 +2422 + 8 +0 + 62 + 0 + 10 +21874.999945 + 20 +9249.999968 + 30 +0.0 + 11 +21874.999926 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2423 + 8 +0 + 62 + 0 + 10 +21874.999945 + 20 +9206.698698 + 30 +0.0 + 11 +21863.75 + 21 +9226.184174 + 31 +0.0 + 0 +LINE + 5 +2424 + 8 +0 + 62 + 0 + 10 +21871.187948 + 20 +9170.0 + 30 +0.0 + 11 +21863.75 + 21 +9182.882904 + 31 +0.0 + 0 +LINE + 5 +2425 + 8 +0 + 62 + 0 + 10 +22587.499942 + 20 +9185.048062 + 30 +0.0 + 11 +22574.999942 + 21 +9206.698697 + 31 +0.0 + 0 +LINE + 5 +2426 + 8 +0 + 62 + 0 + 10 +22549.999942 + 20 +9249.999967 + 30 +0.0 + 11 +22549.999923 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2427 + 8 +0 + 62 + 0 + 10 +22621.187945 + 20 +9170.0 + 30 +0.0 + 11 +22612.499942 + 21 +9185.048061 + 31 +0.0 + 0 +LINE + 5 +2428 + 8 +0 + 62 + 0 + 10 +22587.499942 + 20 +9228.349332 + 30 +0.0 + 11 +22574.999942 + 21 +9249.999967 + 31 +0.0 + 0 +LINE + 5 +2429 + 8 +0 + 62 + 0 + 10 +22624.999942 + 20 +9206.698697 + 30 +0.0 + 11 +22612.499942 + 21 +9228.349332 + 31 +0.0 + 0 +LINE + 5 +242A + 8 +0 + 62 + 0 + 10 +22662.499942 + 20 +9185.048061 + 30 +0.0 + 11 +22649.999942 + 21 +9206.698696 + 31 +0.0 + 0 +LINE + 5 +242B + 8 +0 + 62 + 0 + 10 +22624.999942 + 20 +9249.999967 + 30 +0.0 + 11 +22624.999923 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +242C + 8 +0 + 62 + 0 + 10 +22696.187944 + 20 +9170.0 + 30 +0.0 + 11 +22687.499942 + 21 +9185.048061 + 31 +0.0 + 0 +LINE + 5 +242D + 8 +0 + 62 + 0 + 10 +22662.499942 + 20 +9228.349332 + 30 +0.0 + 11 +22649.999942 + 21 +9249.999967 + 31 +0.0 + 0 +LINE + 5 +242E + 8 +0 + 62 + 0 + 10 +22699.999942 + 20 +9206.698696 + 30 +0.0 + 11 +22687.499942 + 21 +9228.349331 + 31 +0.0 + 0 +LINE + 5 +242F + 8 +0 + 62 + 0 + 10 +22737.499942 + 20 +9185.048061 + 30 +0.0 + 11 +22724.999942 + 21 +9206.698696 + 31 +0.0 + 0 +LINE + 5 +2430 + 8 +0 + 62 + 0 + 10 +22699.999942 + 20 +9249.999967 + 30 +0.0 + 11 +22699.999923 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2431 + 8 +0 + 62 + 0 + 10 +22771.187944 + 20 +9170.0 + 30 +0.0 + 11 +22762.499942 + 21 +9185.048061 + 31 +0.0 + 0 +LINE + 5 +2432 + 8 +0 + 62 + 0 + 10 +22737.499942 + 20 +9228.349331 + 30 +0.0 + 11 +22724.999942 + 21 +9249.999966 + 31 +0.0 + 0 +LINE + 5 +2433 + 8 +0 + 62 + 0 + 10 +22774.999942 + 20 +9206.698696 + 30 +0.0 + 11 +22762.499942 + 21 +9228.349331 + 31 +0.0 + 0 +LINE + 5 +2434 + 8 +0 + 62 + 0 + 10 +22812.499942 + 20 +9185.048061 + 30 +0.0 + 11 +22799.999942 + 21 +9206.698696 + 31 +0.0 + 0 +LINE + 5 +2435 + 8 +0 + 62 + 0 + 10 +22774.999942 + 20 +9249.999966 + 30 +0.0 + 11 +22774.999922 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2436 + 8 +0 + 62 + 0 + 10 +22846.187944 + 20 +9170.0 + 30 +0.0 + 11 +22837.499942 + 21 +9185.048061 + 31 +0.0 + 0 +LINE + 5 +2437 + 8 +0 + 62 + 0 + 10 +22812.499942 + 20 +9228.349331 + 30 +0.0 + 11 +22799.999942 + 21 +9249.999966 + 31 +0.0 + 0 +LINE + 5 +2438 + 8 +0 + 62 + 0 + 10 +22849.999942 + 20 +9206.698696 + 30 +0.0 + 11 +22837.499942 + 21 +9228.349331 + 31 +0.0 + 0 +LINE + 5 +2439 + 8 +0 + 62 + 0 + 10 +22887.499941 + 20 +9185.048061 + 30 +0.0 + 11 +22874.999941 + 21 +9206.698696 + 31 +0.0 + 0 +LINE + 5 +243A + 8 +0 + 62 + 0 + 10 +22849.999941 + 20 +9249.999966 + 30 +0.0 + 11 +22849.999922 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +243B + 8 +0 + 62 + 0 + 10 +22921.187943 + 20 +9170.0 + 30 +0.0 + 11 +22912.499941 + 21 +9185.048061 + 31 +0.0 + 0 +LINE + 5 +243C + 8 +0 + 62 + 0 + 10 +22887.499941 + 20 +9228.349331 + 30 +0.0 + 11 +22874.999941 + 21 +9249.999966 + 31 +0.0 + 0 +LINE + 5 +243D + 8 +0 + 62 + 0 + 10 +22924.999941 + 20 +9206.698696 + 30 +0.0 + 11 +22912.499941 + 21 +9228.349331 + 31 +0.0 + 0 +LINE + 5 +243E + 8 +0 + 62 + 0 + 10 +22962.499941 + 20 +9185.048061 + 30 +0.0 + 11 +22949.999941 + 21 +9206.698696 + 31 +0.0 + 0 +LINE + 5 +243F + 8 +0 + 62 + 0 + 10 +22924.999941 + 20 +9249.999966 + 30 +0.0 + 11 +22924.999922 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2440 + 8 +0 + 62 + 0 + 10 +22996.187943 + 20 +9170.0 + 30 +0.0 + 11 +22987.499941 + 21 +9185.048061 + 31 +0.0 + 0 +LINE + 5 +2441 + 8 +0 + 62 + 0 + 10 +22962.499941 + 20 +9228.349331 + 30 +0.0 + 11 +22949.999941 + 21 +9249.999966 + 31 +0.0 + 0 +LINE + 5 +2442 + 8 +0 + 62 + 0 + 10 +22999.999941 + 20 +9206.698696 + 30 +0.0 + 11 +22987.499941 + 21 +9228.349331 + 31 +0.0 + 0 +LINE + 5 +2443 + 8 +0 + 62 + 0 + 10 +23037.499941 + 20 +9185.048061 + 30 +0.0 + 11 +23024.999941 + 21 +9206.698696 + 31 +0.0 + 0 +LINE + 5 +2444 + 8 +0 + 62 + 0 + 10 +22999.999941 + 20 +9249.999966 + 30 +0.0 + 11 +22999.999921 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2445 + 8 +0 + 62 + 0 + 10 +23071.187943 + 20 +9170.0 + 30 +0.0 + 11 +23062.499941 + 21 +9185.048061 + 31 +0.0 + 0 +LINE + 5 +2446 + 8 +0 + 62 + 0 + 10 +23037.499941 + 20 +9228.349331 + 30 +0.0 + 11 +23024.999941 + 21 +9249.999966 + 31 +0.0 + 0 +LINE + 5 +2447 + 8 +0 + 62 + 0 + 10 +23074.999941 + 20 +9206.698696 + 30 +0.0 + 11 +23062.499941 + 21 +9228.349331 + 31 +0.0 + 0 +LINE + 5 +2448 + 8 +0 + 62 + 0 + 10 +23112.499941 + 20 +9185.048061 + 30 +0.0 + 11 +23099.999941 + 21 +9206.698696 + 31 +0.0 + 0 +LINE + 5 +2449 + 8 +0 + 62 + 0 + 10 +23074.999941 + 20 +9249.999966 + 30 +0.0 + 11 +23074.999921 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +244A + 8 +0 + 62 + 0 + 10 +23146.187942 + 20 +9170.0 + 30 +0.0 + 11 +23137.499941 + 21 +9185.04806 + 31 +0.0 + 0 +LINE + 5 +244B + 8 +0 + 62 + 0 + 10 +23112.499941 + 20 +9228.349331 + 30 +0.0 + 11 +23099.999941 + 21 +9249.999966 + 31 +0.0 + 0 +LINE + 5 +244C + 8 +0 + 62 + 0 + 10 +23149.999941 + 20 +9206.698696 + 30 +0.0 + 11 +23137.499941 + 21 +9228.349331 + 31 +0.0 + 0 +LINE + 5 +244D + 8 +0 + 62 + 0 + 10 +23187.499941 + 20 +9185.04806 + 30 +0.0 + 11 +23174.999941 + 21 +9206.698695 + 31 +0.0 + 0 +LINE + 5 +244E + 8 +0 + 62 + 0 + 10 +23149.999941 + 20 +9249.999966 + 30 +0.0 + 11 +23149.999921 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +244F + 8 +0 + 62 + 0 + 10 +23221.187942 + 20 +9170.0 + 30 +0.0 + 11 +23212.49994 + 21 +9185.04806 + 31 +0.0 + 0 +LINE + 5 +2450 + 8 +0 + 62 + 0 + 10 +23187.49994 + 20 +9228.349331 + 30 +0.0 + 11 +23174.99994 + 21 +9249.999966 + 31 +0.0 + 0 +LINE + 5 +2451 + 8 +0 + 62 + 0 + 10 +23224.99994 + 20 +9206.698695 + 30 +0.0 + 11 +23212.49994 + 21 +9228.34933 + 31 +0.0 + 0 +LINE + 5 +2452 + 8 +0 + 62 + 0 + 10 +23251.25 + 20 +9204.533528 + 30 +0.0 + 11 +23249.99994 + 21 +9206.698695 + 31 +0.0 + 0 +LINE + 5 +2453 + 8 +0 + 62 + 0 + 10 +23224.99994 + 20 +9249.999966 + 30 +0.0 + 11 +23224.99992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2454 + 8 +0 + 62 + 0 + 10 +23251.25 + 20 +9247.834798 + 30 +0.0 + 11 +23249.99994 + 21 +9249.999965 + 31 +0.0 + 0 +LINE + 5 +2455 + 8 +0 + 62 + 0 + 10 +22537.499942 + 20 +9185.048128 + 30 +0.0 + 11 +22549.999942 + 21 +9206.698763 + 31 +0.0 + 0 +LINE + 5 +2456 + 8 +0 + 62 + 0 + 10 +22503.811902 + 20 +9170.0 + 30 +0.0 + 11 +22512.499942 + 21 +9185.048128 + 31 +0.0 + 0 +LINE + 5 +2457 + 8 +0 + 62 + 0 + 10 +22537.499942 + 20 +9228.349398 + 30 +0.0 + 11 +22549.999923 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2458 + 8 +0 + 62 + 0 + 10 +22499.999943 + 20 +9206.698763 + 30 +0.0 + 11 +22512.499943 + 21 +9228.349398 + 31 +0.0 + 0 +LINE + 5 +2459 + 8 +0 + 62 + 0 + 10 +22462.499943 + 20 +9185.048128 + 30 +0.0 + 11 +22474.999943 + 21 +9206.698763 + 31 +0.0 + 0 +LINE + 5 +245A + 8 +0 + 62 + 0 + 10 +22428.811902 + 20 +9170.0 + 30 +0.0 + 11 +22437.499943 + 21 +9185.048128 + 31 +0.0 + 0 +LINE + 5 +245B + 8 +0 + 62 + 0 + 10 +22462.499943 + 20 +9228.349398 + 30 +0.0 + 11 +22474.999924 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +245C + 8 +0 + 62 + 0 + 10 +22424.999943 + 20 +9206.698763 + 30 +0.0 + 11 +22437.499943 + 21 +9228.349398 + 31 +0.0 + 0 +LINE + 5 +245D + 8 +0 + 62 + 0 + 10 +22387.499943 + 20 +9185.048128 + 30 +0.0 + 11 +22399.999943 + 21 +9206.698763 + 31 +0.0 + 0 +LINE + 5 +245E + 8 +0 + 62 + 0 + 10 +22353.811902 + 20 +9170.0 + 30 +0.0 + 11 +22362.499943 + 21 +9185.048128 + 31 +0.0 + 0 +LINE + 5 +245F + 8 +0 + 62 + 0 + 10 +22387.499943 + 20 +9228.349398 + 30 +0.0 + 11 +22399.999924 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2460 + 8 +0 + 62 + 0 + 10 +22349.999943 + 20 +9206.698763 + 30 +0.0 + 11 +22362.499943 + 21 +9228.349398 + 31 +0.0 + 0 +LINE + 5 +2461 + 8 +0 + 62 + 0 + 10 +22312.499943 + 20 +9185.048128 + 30 +0.0 + 11 +22324.999943 + 21 +9206.698763 + 31 +0.0 + 0 +LINE + 5 +2462 + 8 +0 + 62 + 0 + 10 +22278.811903 + 20 +9170.0 + 30 +0.0 + 11 +22287.499943 + 21 +9185.048127 + 31 +0.0 + 0 +LINE + 5 +2463 + 8 +0 + 62 + 0 + 10 +22312.499943 + 20 +9228.349398 + 30 +0.0 + 11 +22324.999924 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2464 + 8 +0 + 62 + 0 + 10 +22274.999943 + 20 +9206.698763 + 30 +0.0 + 11 +22287.499943 + 21 +9228.349398 + 31 +0.0 + 0 +LINE + 5 +2465 + 8 +0 + 62 + 0 + 10 +22237.499943 + 20 +9185.048127 + 30 +0.0 + 11 +22249.999943 + 21 +9206.698762 + 31 +0.0 + 0 +LINE + 5 +2466 + 8 +0 + 62 + 0 + 10 +22203.811903 + 20 +9170.0 + 30 +0.0 + 11 +22212.499943 + 21 +9185.048127 + 31 +0.0 + 0 +LINE + 5 +2467 + 8 +0 + 62 + 0 + 10 +22237.499943 + 20 +9228.349398 + 30 +0.0 + 11 +22249.999925 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2468 + 8 +0 + 62 + 0 + 10 +22199.999944 + 20 +9206.698762 + 30 +0.0 + 11 +22212.499944 + 21 +9228.349397 + 31 +0.0 + 0 +LINE + 5 +2469 + 8 +0 + 62 + 0 + 10 +22162.499944 + 20 +9185.048127 + 30 +0.0 + 11 +22174.999944 + 21 +9206.698762 + 31 +0.0 + 0 +LINE + 5 +246A + 8 +0 + 62 + 0 + 10 +22128.811903 + 20 +9170.0 + 30 +0.0 + 11 +22137.499944 + 21 +9185.048127 + 31 +0.0 + 0 +LINE + 5 +246B + 8 +0 + 62 + 0 + 10 +22162.499944 + 20 +9228.349397 + 30 +0.0 + 11 +22174.999925 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +246C + 8 +0 + 62 + 0 + 10 +22124.999944 + 20 +9206.698762 + 30 +0.0 + 11 +22137.499944 + 21 +9228.349397 + 31 +0.0 + 0 +LINE + 5 +246D + 8 +0 + 62 + 0 + 10 +22087.499944 + 20 +9185.048127 + 30 +0.0 + 11 +22099.999944 + 21 +9206.698762 + 31 +0.0 + 0 +LINE + 5 +246E + 8 +0 + 62 + 0 + 10 +22053.811904 + 20 +9170.0 + 30 +0.0 + 11 +22062.499944 + 21 +9185.048127 + 31 +0.0 + 0 +LINE + 5 +246F + 8 +0 + 62 + 0 + 10 +22087.499944 + 20 +9228.349397 + 30 +0.0 + 11 +22099.999925 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2470 + 8 +0 + 62 + 0 + 10 +22049.999944 + 20 +9206.698762 + 30 +0.0 + 11 +22062.499944 + 21 +9228.349397 + 31 +0.0 + 0 +LINE + 5 +2471 + 8 +0 + 62 + 0 + 10 +22012.499944 + 20 +9185.048127 + 30 +0.0 + 11 +22024.999944 + 21 +9206.698762 + 31 +0.0 + 0 +LINE + 5 +2472 + 8 +0 + 62 + 0 + 10 +21978.811904 + 20 +9170.0 + 30 +0.0 + 11 +21987.499944 + 21 +9185.048127 + 31 +0.0 + 0 +LINE + 5 +2473 + 8 +0 + 62 + 0 + 10 +22012.499944 + 20 +9228.349397 + 30 +0.0 + 11 +22024.999926 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2474 + 8 +0 + 62 + 0 + 10 +21974.999944 + 20 +9206.698762 + 30 +0.0 + 11 +21987.499944 + 21 +9228.349397 + 31 +0.0 + 0 +LINE + 5 +2475 + 8 +0 + 62 + 0 + 10 +21937.499944 + 20 +9185.048127 + 30 +0.0 + 11 +21949.999944 + 21 +9206.698762 + 31 +0.0 + 0 +LINE + 5 +2476 + 8 +0 + 62 + 0 + 10 +21903.811904 + 20 +9170.0 + 30 +0.0 + 11 +21912.499944 + 21 +9185.048127 + 31 +0.0 + 0 +LINE + 5 +2477 + 8 +0 + 62 + 0 + 10 +21937.499944 + 20 +9228.349397 + 30 +0.0 + 11 +21949.999926 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2478 + 8 +0 + 62 + 0 + 10 +21899.999945 + 20 +9206.698762 + 30 +0.0 + 11 +21912.499945 + 21 +9228.349397 + 31 +0.0 + 0 +LINE + 5 +2479 + 8 +0 + 62 + 0 + 10 +21863.75 + 20 +9187.213286 + 30 +0.0 + 11 +21874.999945 + 21 +9206.698762 + 31 +0.0 + 0 +LINE + 5 +247A + 8 +0 + 62 + 0 + 10 +21863.75 + 20 +9230.514556 + 30 +0.0 + 11 +21874.999926 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +247B + 8 +0 + 62 + 0 + 10 +22574.999942 + 20 +9206.698763 + 30 +0.0 + 11 +22587.499942 + 21 +9228.349398 + 31 +0.0 + 0 +LINE + 5 +247C + 8 +0 + 62 + 0 + 10 +22578.811901 + 20 +9170.0 + 30 +0.0 + 11 +22587.499942 + 21 +9185.048128 + 31 +0.0 + 0 +LINE + 5 +247D + 8 +0 + 62 + 0 + 10 +22612.499942 + 20 +9228.349398 + 30 +0.0 + 11 +22624.999923 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +247E + 8 +0 + 62 + 0 + 10 +22612.499942 + 20 +9185.048128 + 30 +0.0 + 11 +22624.999942 + 21 +9206.698763 + 31 +0.0 + 0 +LINE + 5 +247F + 8 +0 + 62 + 0 + 10 +22649.999942 + 20 +9206.698763 + 30 +0.0 + 11 +22662.499942 + 21 +9228.349398 + 31 +0.0 + 0 +LINE + 5 +2480 + 8 +0 + 62 + 0 + 10 +22653.811901 + 20 +9170.0 + 30 +0.0 + 11 +22662.499942 + 21 +9185.048128 + 31 +0.0 + 0 +LINE + 5 +2481 + 8 +0 + 62 + 0 + 10 +22687.499942 + 20 +9228.349398 + 30 +0.0 + 11 +22699.999923 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2482 + 8 +0 + 62 + 0 + 10 +22687.499942 + 20 +9185.048128 + 30 +0.0 + 11 +22699.999942 + 21 +9206.698763 + 31 +0.0 + 0 +LINE + 5 +2483 + 8 +0 + 62 + 0 + 10 +22724.999942 + 20 +9206.698763 + 30 +0.0 + 11 +22737.499942 + 21 +9228.349398 + 31 +0.0 + 0 +LINE + 5 +2484 + 8 +0 + 62 + 0 + 10 +22728.811901 + 20 +9170.0 + 30 +0.0 + 11 +22737.499942 + 21 +9185.048128 + 31 +0.0 + 0 +LINE + 5 +2485 + 8 +0 + 62 + 0 + 10 +22762.499942 + 20 +9228.349399 + 30 +0.0 + 11 +22774.999922 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2486 + 8 +0 + 62 + 0 + 10 +22762.499942 + 20 +9185.048128 + 30 +0.0 + 11 +22774.999942 + 21 +9206.698763 + 31 +0.0 + 0 +LINE + 5 +2487 + 8 +0 + 62 + 0 + 10 +22799.999942 + 20 +9206.698764 + 30 +0.0 + 11 +22812.499942 + 21 +9228.349399 + 31 +0.0 + 0 +LINE + 5 +2488 + 8 +0 + 62 + 0 + 10 +22803.8119 + 20 +9170.0 + 30 +0.0 + 11 +22812.499941 + 21 +9185.048128 + 31 +0.0 + 0 +LINE + 5 +2489 + 8 +0 + 62 + 0 + 10 +22837.499941 + 20 +9228.349399 + 30 +0.0 + 11 +22849.999922 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +248A + 8 +0 + 62 + 0 + 10 +22837.499941 + 20 +9185.048129 + 30 +0.0 + 11 +22849.999941 + 21 +9206.698764 + 31 +0.0 + 0 +LINE + 5 +248B + 8 +0 + 62 + 0 + 10 +22874.999941 + 20 +9206.698764 + 30 +0.0 + 11 +22887.499941 + 21 +9228.349399 + 31 +0.0 + 0 +LINE + 5 +248C + 8 +0 + 62 + 0 + 10 +22878.8119 + 20 +9170.0 + 30 +0.0 + 11 +22887.499941 + 21 +9185.048129 + 31 +0.0 + 0 +LINE + 5 +248D + 8 +0 + 62 + 0 + 10 +22912.499941 + 20 +9228.349399 + 30 +0.0 + 11 +22924.999922 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +248E + 8 +0 + 62 + 0 + 10 +22912.499941 + 20 +9185.048129 + 30 +0.0 + 11 +22924.999941 + 21 +9206.698764 + 31 +0.0 + 0 +LINE + 5 +248F + 8 +0 + 62 + 0 + 10 +22949.999941 + 20 +9206.698764 + 30 +0.0 + 11 +22962.499941 + 21 +9228.349399 + 31 +0.0 + 0 +LINE + 5 +2490 + 8 +0 + 62 + 0 + 10 +22953.8119 + 20 +9170.0 + 30 +0.0 + 11 +22962.499941 + 21 +9185.048129 + 31 +0.0 + 0 +LINE + 5 +2491 + 8 +0 + 62 + 0 + 10 +22987.499941 + 20 +9228.349399 + 30 +0.0 + 11 +22999.999921 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2492 + 8 +0 + 62 + 0 + 10 +22987.499941 + 20 +9185.048129 + 30 +0.0 + 11 +22999.999941 + 21 +9206.698764 + 31 +0.0 + 0 +LINE + 5 +2493 + 8 +0 + 62 + 0 + 10 +23024.999941 + 20 +9206.698764 + 30 +0.0 + 11 +23037.499941 + 21 +9228.349399 + 31 +0.0 + 0 +LINE + 5 +2494 + 8 +0 + 62 + 0 + 10 +23028.811899 + 20 +9170.0 + 30 +0.0 + 11 +23037.499941 + 21 +9185.048129 + 31 +0.0 + 0 +LINE + 5 +2495 + 8 +0 + 62 + 0 + 10 +23062.499941 + 20 +9228.349399 + 30 +0.0 + 11 +23074.999921 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2496 + 8 +0 + 62 + 0 + 10 +23062.499941 + 20 +9185.048129 + 30 +0.0 + 11 +23074.999941 + 21 +9206.698764 + 31 +0.0 + 0 +LINE + 5 +2497 + 8 +0 + 62 + 0 + 10 +23099.999941 + 20 +9206.698764 + 30 +0.0 + 11 +23112.499941 + 21 +9228.349399 + 31 +0.0 + 0 +LINE + 5 +2498 + 8 +0 + 62 + 0 + 10 +23103.811899 + 20 +9170.0 + 30 +0.0 + 11 +23112.499941 + 21 +9185.048129 + 31 +0.0 + 0 +LINE + 5 +2499 + 8 +0 + 62 + 0 + 10 +23137.499941 + 20 +9228.349399 + 30 +0.0 + 11 +23149.999921 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +249A + 8 +0 + 62 + 0 + 10 +23137.49994 + 20 +9185.048129 + 30 +0.0 + 11 +23149.99994 + 21 +9206.698764 + 31 +0.0 + 0 +LINE + 5 +249B + 8 +0 + 62 + 0 + 10 +23174.99994 + 20 +9206.698764 + 30 +0.0 + 11 +23187.49994 + 21 +9228.349399 + 31 +0.0 + 0 +LINE + 5 +249C + 8 +0 + 62 + 0 + 10 +23178.811899 + 20 +9170.0 + 30 +0.0 + 11 +23187.49994 + 21 +9185.048129 + 31 +0.0 + 0 +LINE + 5 +249D + 8 +0 + 62 + 0 + 10 +23212.49994 + 20 +9228.349399 + 30 +0.0 + 11 +23224.99992 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +249E + 8 +0 + 62 + 0 + 10 +23212.49994 + 20 +9185.048129 + 30 +0.0 + 11 +23224.99994 + 21 +9206.698764 + 31 +0.0 + 0 +LINE + 5 +249F + 8 +0 + 62 + 0 + 10 +23249.99994 + 20 +9206.698764 + 30 +0.0 + 11 +23251.25 + 21 +9208.863932 + 31 +0.0 + 0 +ENDBLK + 5 +24A0 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X53 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X53 + 1 + + 0 +LINE + 5 +24A2 + 8 +0 + 62 + 0 + 10 +20412.5 + 20 +9228.349365 + 30 +0.0 + 11 +20437.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24A3 + 8 +0 + 62 + 0 + 10 +20487.5 + 20 +9228.349365 + 30 +0.0 + 11 +20512.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24A4 + 8 +0 + 62 + 0 + 10 +20562.5 + 20 +9228.349365 + 30 +0.0 + 11 +20587.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24A5 + 8 +0 + 62 + 0 + 10 +20637.5 + 20 +9228.349365 + 30 +0.0 + 11 +20662.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24A6 + 8 +0 + 62 + 0 + 10 +20712.5 + 20 +9228.349365 + 30 +0.0 + 11 +20737.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24A7 + 8 +0 + 62 + 0 + 10 +20787.5 + 20 +9228.349365 + 30 +0.0 + 11 +20812.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24A8 + 8 +0 + 62 + 0 + 10 +20862.5 + 20 +9228.349365 + 30 +0.0 + 11 +20887.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24A9 + 8 +0 + 62 + 0 + 10 +20937.5 + 20 +9228.349365 + 30 +0.0 + 11 +20962.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24AA + 8 +0 + 62 + 0 + 10 +21012.5 + 20 +9228.349365 + 30 +0.0 + 11 +21037.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24AB + 8 +0 + 62 + 0 + 10 +21087.5 + 20 +9228.349365 + 30 +0.0 + 11 +21112.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24AC + 8 +0 + 62 + 0 + 10 +21162.5 + 20 +9228.349365 + 30 +0.0 + 11 +21187.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24AD + 8 +0 + 62 + 0 + 10 +21237.5 + 20 +9228.349365 + 30 +0.0 + 11 +21262.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24AE + 8 +0 + 62 + 0 + 10 +21312.5 + 20 +9228.349365 + 30 +0.0 + 11 +21337.5 + 21 +9228.349365 + 31 +0.0 + 0 +LINE + 5 +24AF + 8 +0 + 62 + 0 + 10 +20375.0 + 20 +9206.69873 + 30 +0.0 + 11 +20400.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B0 + 8 +0 + 62 + 0 + 10 +20450.0 + 20 +9206.69873 + 30 +0.0 + 11 +20475.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B1 + 8 +0 + 62 + 0 + 10 +20525.0 + 20 +9206.69873 + 30 +0.0 + 11 +20550.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B2 + 8 +0 + 62 + 0 + 10 +20600.0 + 20 +9206.69873 + 30 +0.0 + 11 +20625.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B3 + 8 +0 + 62 + 0 + 10 +20675.0 + 20 +9206.69873 + 30 +0.0 + 11 +20700.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B4 + 8 +0 + 62 + 0 + 10 +20750.0 + 20 +9206.69873 + 30 +0.0 + 11 +20775.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B5 + 8 +0 + 62 + 0 + 10 +20825.0 + 20 +9206.69873 + 30 +0.0 + 11 +20850.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B6 + 8 +0 + 62 + 0 + 10 +20900.0 + 20 +9206.69873 + 30 +0.0 + 11 +20925.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B7 + 8 +0 + 62 + 0 + 10 +20975.0 + 20 +9206.69873 + 30 +0.0 + 11 +21000.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B8 + 8 +0 + 62 + 0 + 10 +21050.0 + 20 +9206.69873 + 30 +0.0 + 11 +21075.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24B9 + 8 +0 + 62 + 0 + 10 +21125.0 + 20 +9206.69873 + 30 +0.0 + 11 +21150.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24BA + 8 +0 + 62 + 0 + 10 +21200.0 + 20 +9206.69873 + 30 +0.0 + 11 +21225.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24BB + 8 +0 + 62 + 0 + 10 +21275.0 + 20 +9206.69873 + 30 +0.0 + 11 +21300.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24BC + 8 +0 + 62 + 0 + 10 +21350.0 + 20 +9206.69873 + 30 +0.0 + 11 +21375.0 + 21 +9206.69873 + 31 +0.0 + 0 +LINE + 5 +24BD + 8 +0 + 62 + 0 + 10 +20412.5 + 20 +9185.048095 + 30 +0.0 + 11 +20437.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24BE + 8 +0 + 62 + 0 + 10 +20487.5 + 20 +9185.048095 + 30 +0.0 + 11 +20512.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24BF + 8 +0 + 62 + 0 + 10 +20562.5 + 20 +9185.048095 + 30 +0.0 + 11 +20587.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C0 + 8 +0 + 62 + 0 + 10 +20637.5 + 20 +9185.048095 + 30 +0.0 + 11 +20662.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C1 + 8 +0 + 62 + 0 + 10 +20712.5 + 20 +9185.048095 + 30 +0.0 + 11 +20737.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C2 + 8 +0 + 62 + 0 + 10 +20787.5 + 20 +9185.048095 + 30 +0.0 + 11 +20812.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C3 + 8 +0 + 62 + 0 + 10 +20862.5 + 20 +9185.048095 + 30 +0.0 + 11 +20887.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C4 + 8 +0 + 62 + 0 + 10 +20937.5 + 20 +9185.048095 + 30 +0.0 + 11 +20962.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C5 + 8 +0 + 62 + 0 + 10 +21012.5 + 20 +9185.048095 + 30 +0.0 + 11 +21037.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C6 + 8 +0 + 62 + 0 + 10 +21087.5 + 20 +9185.048095 + 30 +0.0 + 11 +21112.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C7 + 8 +0 + 62 + 0 + 10 +21162.5 + 20 +9185.048095 + 30 +0.0 + 11 +21187.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C8 + 8 +0 + 62 + 0 + 10 +21237.5 + 20 +9185.048095 + 30 +0.0 + 11 +21262.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24C9 + 8 +0 + 62 + 0 + 10 +21312.5 + 20 +9185.048095 + 30 +0.0 + 11 +21337.5 + 21 +9185.048095 + 31 +0.0 + 0 +LINE + 5 +24CA + 8 +0 + 62 + 0 + 10 +20862.499948 + 20 +9185.048065 + 30 +0.0 + 11 +20849.999948 + 21 +9206.6987 + 31 +0.0 + 0 +LINE + 5 +24CB + 8 +0 + 62 + 0 + 10 +20824.999948 + 20 +9249.99997 + 30 +0.0 + 11 +20824.999931 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24CC + 8 +0 + 62 + 0 + 10 +20824.999948 + 20 +9206.6987 + 30 +0.0 + 11 +20812.499948 + 21 +9228.349335 + 31 +0.0 + 0 +LINE + 5 +24CD + 8 +0 + 62 + 0 + 10 +20821.187953 + 20 +9170.0 + 30 +0.0 + 11 +20812.499948 + 21 +9185.048065 + 31 +0.0 + 0 +LINE + 5 +24CE + 8 +0 + 62 + 0 + 10 +20787.499948 + 20 +9228.349335 + 30 +0.0 + 11 +20774.999948 + 21 +9249.99997 + 31 +0.0 + 0 +LINE + 5 +24CF + 8 +0 + 62 + 0 + 10 +20787.499948 + 20 +9185.048065 + 30 +0.0 + 11 +20774.999948 + 21 +9206.6987 + 31 +0.0 + 0 +LINE + 5 +24D0 + 8 +0 + 62 + 0 + 10 +20749.999948 + 20 +9249.99997 + 30 +0.0 + 11 +20749.999931 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24D1 + 8 +0 + 62 + 0 + 10 +20749.999948 + 20 +9206.6987 + 30 +0.0 + 11 +20737.499948 + 21 +9228.349335 + 31 +0.0 + 0 +LINE + 5 +24D2 + 8 +0 + 62 + 0 + 10 +20746.187953 + 20 +9170.0 + 30 +0.0 + 11 +20737.499949 + 21 +9185.048065 + 31 +0.0 + 0 +LINE + 5 +24D3 + 8 +0 + 62 + 0 + 10 +20712.499949 + 20 +9228.349335 + 30 +0.0 + 11 +20699.999949 + 21 +9249.99997 + 31 +0.0 + 0 +LINE + 5 +24D4 + 8 +0 + 62 + 0 + 10 +20712.499949 + 20 +9185.048065 + 30 +0.0 + 11 +20699.999949 + 21 +9206.6987 + 31 +0.0 + 0 +LINE + 5 +24D5 + 8 +0 + 62 + 0 + 10 +20674.999949 + 20 +9249.99997 + 30 +0.0 + 11 +20674.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24D6 + 8 +0 + 62 + 0 + 10 +20674.999949 + 20 +9206.6987 + 30 +0.0 + 11 +20662.499949 + 21 +9228.349335 + 31 +0.0 + 0 +LINE + 5 +24D7 + 8 +0 + 62 + 0 + 10 +20671.187953 + 20 +9170.0 + 30 +0.0 + 11 +20662.499949 + 21 +9185.048065 + 31 +0.0 + 0 +LINE + 5 +24D8 + 8 +0 + 62 + 0 + 10 +20637.499949 + 20 +9228.349335 + 30 +0.0 + 11 +20624.999949 + 21 +9249.99997 + 31 +0.0 + 0 +LINE + 5 +24D9 + 8 +0 + 62 + 0 + 10 +20637.499949 + 20 +9185.048065 + 30 +0.0 + 11 +20624.999949 + 21 +9206.6987 + 31 +0.0 + 0 +LINE + 5 +24DA + 8 +0 + 62 + 0 + 10 +20599.999949 + 20 +9249.99997 + 30 +0.0 + 11 +20599.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24DB + 8 +0 + 62 + 0 + 10 +20599.999949 + 20 +9206.6987 + 30 +0.0 + 11 +20587.499949 + 21 +9228.349335 + 31 +0.0 + 0 +LINE + 5 +24DC + 8 +0 + 62 + 0 + 10 +20596.187954 + 20 +9170.0 + 30 +0.0 + 11 +20587.499949 + 21 +9185.048065 + 31 +0.0 + 0 +LINE + 5 +24DD + 8 +0 + 62 + 0 + 10 +20562.499949 + 20 +9228.349335 + 30 +0.0 + 11 +20549.999949 + 21 +9249.999971 + 31 +0.0 + 0 +LINE + 5 +24DE + 8 +0 + 62 + 0 + 10 +20562.499949 + 20 +9185.048065 + 30 +0.0 + 11 +20549.999949 + 21 +9206.6987 + 31 +0.0 + 0 +LINE + 5 +24DF + 8 +0 + 62 + 0 + 10 +20524.999949 + 20 +9249.999971 + 30 +0.0 + 11 +20524.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24E0 + 8 +0 + 62 + 0 + 10 +20524.999949 + 20 +9206.6987 + 30 +0.0 + 11 +20512.499949 + 21 +9228.349336 + 31 +0.0 + 0 +LINE + 5 +24E1 + 8 +0 + 62 + 0 + 10 +20521.187954 + 20 +9170.0 + 30 +0.0 + 11 +20512.499949 + 21 +9185.048065 + 31 +0.0 + 0 +LINE + 5 +24E2 + 8 +0 + 62 + 0 + 10 +20487.499949 + 20 +9228.349336 + 30 +0.0 + 11 +20474.999949 + 21 +9249.999971 + 31 +0.0 + 0 +LINE + 5 +24E3 + 8 +0 + 62 + 0 + 10 +20487.499949 + 20 +9185.048065 + 30 +0.0 + 11 +20474.999949 + 21 +9206.698701 + 31 +0.0 + 0 +LINE + 5 +24E4 + 8 +0 + 62 + 0 + 10 +20449.999949 + 20 +9249.999971 + 30 +0.0 + 11 +20449.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24E5 + 8 +0 + 62 + 0 + 10 +20449.999949 + 20 +9206.698701 + 30 +0.0 + 11 +20437.499949 + 21 +9228.349336 + 31 +0.0 + 0 +LINE + 5 +24E6 + 8 +0 + 62 + 0 + 10 +20446.187954 + 20 +9170.0 + 30 +0.0 + 11 +20437.49995 + 21 +9185.048066 + 31 +0.0 + 0 +LINE + 5 +24E7 + 8 +0 + 62 + 0 + 10 +20412.49995 + 20 +9228.349336 + 30 +0.0 + 11 +20399.99995 + 21 +9249.999971 + 31 +0.0 + 0 +LINE + 5 +24E8 + 8 +0 + 62 + 0 + 10 +20412.49995 + 20 +9185.048066 + 30 +0.0 + 11 +20399.99995 + 21 +9206.698701 + 31 +0.0 + 0 +LINE + 5 +24E9 + 8 +0 + 62 + 0 + 10 +20374.99995 + 20 +9249.999971 + 30 +0.0 + 11 +20374.999933 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24EA + 8 +0 + 62 + 0 + 10 +20374.99995 + 20 +9206.698701 + 30 +0.0 + 11 +20363.75 + 21 +9226.184185 + 31 +0.0 + 0 +LINE + 5 +24EB + 8 +0 + 62 + 0 + 10 +20371.187955 + 20 +9170.0 + 30 +0.0 + 11 +20363.75 + 21 +9182.882915 + 31 +0.0 + 0 +LINE + 5 +24EC + 8 +0 + 62 + 0 + 10 +20896.187952 + 20 +9170.0 + 30 +0.0 + 11 +20887.499948 + 21 +9185.048065 + 31 +0.0 + 0 +LINE + 5 +24ED + 8 +0 + 62 + 0 + 10 +20862.499948 + 20 +9228.349335 + 30 +0.0 + 11 +20849.999948 + 21 +9249.99997 + 31 +0.0 + 0 +LINE + 5 +24EE + 8 +0 + 62 + 0 + 10 +20899.999948 + 20 +9206.6987 + 30 +0.0 + 11 +20887.499948 + 21 +9228.349335 + 31 +0.0 + 0 +LINE + 5 +24EF + 8 +0 + 62 + 0 + 10 +20937.499948 + 20 +9185.048065 + 30 +0.0 + 11 +20924.999948 + 21 +9206.6987 + 31 +0.0 + 0 +LINE + 5 +24F0 + 8 +0 + 62 + 0 + 10 +20899.999948 + 20 +9249.99997 + 30 +0.0 + 11 +20899.999931 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24F1 + 8 +0 + 62 + 0 + 10 +20971.187952 + 20 +9170.0 + 30 +0.0 + 11 +20962.499948 + 21 +9185.048065 + 31 +0.0 + 0 +LINE + 5 +24F2 + 8 +0 + 62 + 0 + 10 +20937.499948 + 20 +9228.349335 + 30 +0.0 + 11 +20924.999948 + 21 +9249.99997 + 31 +0.0 + 0 +LINE + 5 +24F3 + 8 +0 + 62 + 0 + 10 +20974.999948 + 20 +9206.6987 + 30 +0.0 + 11 +20962.499948 + 21 +9228.349335 + 31 +0.0 + 0 +LINE + 5 +24F4 + 8 +0 + 62 + 0 + 10 +21012.499948 + 20 +9185.048064 + 30 +0.0 + 11 +20999.999948 + 21 +9206.6987 + 31 +0.0 + 0 +LINE + 5 +24F5 + 8 +0 + 62 + 0 + 10 +20974.999948 + 20 +9249.99997 + 30 +0.0 + 11 +20974.99993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24F6 + 8 +0 + 62 + 0 + 10 +21046.187952 + 20 +9170.0 + 30 +0.0 + 11 +21037.499948 + 21 +9185.048064 + 31 +0.0 + 0 +LINE + 5 +24F7 + 8 +0 + 62 + 0 + 10 +21012.499948 + 20 +9228.349335 + 30 +0.0 + 11 +20999.999948 + 21 +9249.99997 + 31 +0.0 + 0 +LINE + 5 +24F8 + 8 +0 + 62 + 0 + 10 +21049.999947 + 20 +9206.698699 + 30 +0.0 + 11 +21037.499947 + 21 +9228.349335 + 31 +0.0 + 0 +LINE + 5 +24F9 + 8 +0 + 62 + 0 + 10 +21087.499947 + 20 +9185.048064 + 30 +0.0 + 11 +21074.999947 + 21 +9206.698699 + 31 +0.0 + 0 +LINE + 5 +24FA + 8 +0 + 62 + 0 + 10 +21049.999947 + 20 +9249.99997 + 30 +0.0 + 11 +21049.99993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +24FB + 8 +0 + 62 + 0 + 10 +21121.187951 + 20 +9170.0 + 30 +0.0 + 11 +21112.499947 + 21 +9185.048064 + 31 +0.0 + 0 +LINE + 5 +24FC + 8 +0 + 62 + 0 + 10 +21087.499947 + 20 +9228.349334 + 30 +0.0 + 11 +21074.999947 + 21 +9249.99997 + 31 +0.0 + 0 +LINE + 5 +24FD + 8 +0 + 62 + 0 + 10 +21124.999947 + 20 +9206.698699 + 30 +0.0 + 11 +21112.499947 + 21 +9228.349334 + 31 +0.0 + 0 +LINE + 5 +24FE + 8 +0 + 62 + 0 + 10 +21162.499947 + 20 +9185.048064 + 30 +0.0 + 11 +21149.999947 + 21 +9206.698699 + 31 +0.0 + 0 +LINE + 5 +24FF + 8 +0 + 62 + 0 + 10 +21124.999947 + 20 +9249.999969 + 30 +0.0 + 11 +21124.99993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2500 + 8 +0 + 62 + 0 + 10 +21196.187951 + 20 +9170.0 + 30 +0.0 + 11 +21187.499947 + 21 +9185.048064 + 31 +0.0 + 0 +LINE + 5 +2501 + 8 +0 + 62 + 0 + 10 +21162.499947 + 20 +9228.349334 + 30 +0.0 + 11 +21149.999947 + 21 +9249.999969 + 31 +0.0 + 0 +LINE + 5 +2502 + 8 +0 + 62 + 0 + 10 +21199.999947 + 20 +9206.698699 + 30 +0.0 + 11 +21187.499947 + 21 +9228.349334 + 31 +0.0 + 0 +LINE + 5 +2503 + 8 +0 + 62 + 0 + 10 +21237.499947 + 20 +9185.048064 + 30 +0.0 + 11 +21224.999947 + 21 +9206.698699 + 31 +0.0 + 0 +LINE + 5 +2504 + 8 +0 + 62 + 0 + 10 +21199.999947 + 20 +9249.999969 + 30 +0.0 + 11 +21199.999929 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2505 + 8 +0 + 62 + 0 + 10 +21271.187951 + 20 +9170.0 + 30 +0.0 + 11 +21262.499947 + 21 +9185.048064 + 31 +0.0 + 0 +LINE + 5 +2506 + 8 +0 + 62 + 0 + 10 +21237.499947 + 20 +9228.349334 + 30 +0.0 + 11 +21224.999947 + 21 +9249.999969 + 31 +0.0 + 0 +LINE + 5 +2507 + 8 +0 + 62 + 0 + 10 +21274.999947 + 20 +9206.698699 + 30 +0.0 + 11 +21262.499947 + 21 +9228.349334 + 31 +0.0 + 0 +LINE + 5 +2508 + 8 +0 + 62 + 0 + 10 +21312.499947 + 20 +9185.048064 + 30 +0.0 + 11 +21299.999947 + 21 +9206.698699 + 31 +0.0 + 0 +LINE + 5 +2509 + 8 +0 + 62 + 0 + 10 +21274.999947 + 20 +9249.999969 + 30 +0.0 + 11 +21274.999929 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +250A + 8 +0 + 62 + 0 + 10 +21346.18795 + 20 +9170.0 + 30 +0.0 + 11 +21337.499947 + 21 +9185.048064 + 31 +0.0 + 0 +LINE + 5 +250B + 8 +0 + 62 + 0 + 10 +21312.499947 + 20 +9228.349334 + 30 +0.0 + 11 +21299.999947 + 21 +9249.999969 + 31 +0.0 + 0 +LINE + 5 +250C + 8 +0 + 62 + 0 + 10 +21349.999946 + 20 +9206.698699 + 30 +0.0 + 11 +21337.499946 + 21 +9228.349334 + 31 +0.0 + 0 +LINE + 5 +250D + 8 +0 + 62 + 0 + 10 +21376.25 + 20 +9204.533543 + 30 +0.0 + 11 +21374.999946 + 21 +9206.698699 + 31 +0.0 + 0 +LINE + 5 +250E + 8 +0 + 62 + 0 + 10 +21349.999946 + 20 +9249.999969 + 30 +0.0 + 11 +21349.999929 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +250F + 8 +0 + 62 + 0 + 10 +21376.25 + 20 +9247.834813 + 30 +0.0 + 11 +21374.999946 + 21 +9249.999969 + 31 +0.0 + 0 +LINE + 5 +2510 + 8 +0 + 62 + 0 + 10 +20849.999948 + 20 +9206.69876 + 30 +0.0 + 11 +20862.499948 + 21 +9228.349395 + 31 +0.0 + 0 +LINE + 5 +2511 + 8 +0 + 62 + 0 + 10 +20812.499948 + 20 +9185.048125 + 30 +0.0 + 11 +20824.999948 + 21 +9206.69876 + 31 +0.0 + 0 +LINE + 5 +2512 + 8 +0 + 62 + 0 + 10 +20778.811909 + 20 +9170.0 + 30 +0.0 + 11 +20787.499948 + 21 +9185.048125 + 31 +0.0 + 0 +LINE + 5 +2513 + 8 +0 + 62 + 0 + 10 +20812.499948 + 20 +9228.349395 + 30 +0.0 + 11 +20824.999931 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2514 + 8 +0 + 62 + 0 + 10 +20774.999948 + 20 +9206.69876 + 30 +0.0 + 11 +20787.499948 + 21 +9228.349395 + 31 +0.0 + 0 +LINE + 5 +2515 + 8 +0 + 62 + 0 + 10 +20737.499948 + 20 +9185.048125 + 30 +0.0 + 11 +20749.999948 + 21 +9206.69876 + 31 +0.0 + 0 +LINE + 5 +2516 + 8 +0 + 62 + 0 + 10 +20703.81191 + 20 +9170.0 + 30 +0.0 + 11 +20712.499948 + 21 +9185.048125 + 31 +0.0 + 0 +LINE + 5 +2517 + 8 +0 + 62 + 0 + 10 +20737.499948 + 20 +9228.349395 + 30 +0.0 + 11 +20749.999931 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2518 + 8 +0 + 62 + 0 + 10 +20699.999948 + 20 +9206.69876 + 30 +0.0 + 11 +20712.499948 + 21 +9228.349395 + 31 +0.0 + 0 +LINE + 5 +2519 + 8 +0 + 62 + 0 + 10 +20662.499949 + 20 +9185.048124 + 30 +0.0 + 11 +20674.999949 + 21 +9206.69876 + 31 +0.0 + 0 +LINE + 5 +251A + 8 +0 + 62 + 0 + 10 +20628.81191 + 20 +9170.0 + 30 +0.0 + 11 +20637.499949 + 21 +9185.048124 + 31 +0.0 + 0 +LINE + 5 +251B + 8 +0 + 62 + 0 + 10 +20662.499949 + 20 +9228.349395 + 30 +0.0 + 11 +20674.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +251C + 8 +0 + 62 + 0 + 10 +20624.999949 + 20 +9206.698759 + 30 +0.0 + 11 +20637.499949 + 21 +9228.349395 + 31 +0.0 + 0 +LINE + 5 +251D + 8 +0 + 62 + 0 + 10 +20587.499949 + 20 +9185.048124 + 30 +0.0 + 11 +20599.999949 + 21 +9206.698759 + 31 +0.0 + 0 +LINE + 5 +251E + 8 +0 + 62 + 0 + 10 +20553.81191 + 20 +9170.0 + 30 +0.0 + 11 +20562.499949 + 21 +9185.048124 + 31 +0.0 + 0 +LINE + 5 +251F + 8 +0 + 62 + 0 + 10 +20587.499949 + 20 +9228.349394 + 30 +0.0 + 11 +20599.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2520 + 8 +0 + 62 + 0 + 10 +20549.999949 + 20 +9206.698759 + 30 +0.0 + 11 +20562.499949 + 21 +9228.349394 + 31 +0.0 + 0 +LINE + 5 +2521 + 8 +0 + 62 + 0 + 10 +20512.499949 + 20 +9185.048124 + 30 +0.0 + 11 +20524.999949 + 21 +9206.698759 + 31 +0.0 + 0 +LINE + 5 +2522 + 8 +0 + 62 + 0 + 10 +20478.811911 + 20 +9170.0 + 30 +0.0 + 11 +20487.499949 + 21 +9185.048124 + 31 +0.0 + 0 +LINE + 5 +2523 + 8 +0 + 62 + 0 + 10 +20512.499949 + 20 +9228.349394 + 30 +0.0 + 11 +20524.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2524 + 8 +0 + 62 + 0 + 10 +20474.999949 + 20 +9206.698759 + 30 +0.0 + 11 +20487.499949 + 21 +9228.349394 + 31 +0.0 + 0 +LINE + 5 +2525 + 8 +0 + 62 + 0 + 10 +20437.499949 + 20 +9185.048124 + 30 +0.0 + 11 +20449.999949 + 21 +9206.698759 + 31 +0.0 + 0 +LINE + 5 +2526 + 8 +0 + 62 + 0 + 10 +20403.811911 + 20 +9170.0 + 30 +0.0 + 11 +20412.499949 + 21 +9185.048124 + 31 +0.0 + 0 +LINE + 5 +2527 + 8 +0 + 62 + 0 + 10 +20437.499949 + 20 +9228.349394 + 30 +0.0 + 11 +20449.999932 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2528 + 8 +0 + 62 + 0 + 10 +20399.999949 + 20 +9206.698759 + 30 +0.0 + 11 +20412.499949 + 21 +9228.349394 + 31 +0.0 + 0 +LINE + 5 +2529 + 8 +0 + 62 + 0 + 10 +20363.75 + 20 +9187.213275 + 30 +0.0 + 11 +20374.99995 + 21 +9206.698759 + 31 +0.0 + 0 +LINE + 5 +252A + 8 +0 + 62 + 0 + 10 +20363.75 + 20 +9230.514545 + 30 +0.0 + 11 +20374.999933 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +252B + 8 +0 + 62 + 0 + 10 +20853.811909 + 20 +9170.0 + 30 +0.0 + 11 +20862.499948 + 21 +9185.048125 + 31 +0.0 + 0 +LINE + 5 +252C + 8 +0 + 62 + 0 + 10 +20887.499948 + 20 +9228.349395 + 30 +0.0 + 11 +20899.999931 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +252D + 8 +0 + 62 + 0 + 10 +20887.499948 + 20 +9185.048125 + 30 +0.0 + 11 +20899.999948 + 21 +9206.69876 + 31 +0.0 + 0 +LINE + 5 +252E + 8 +0 + 62 + 0 + 10 +20924.999948 + 20 +9206.69876 + 30 +0.0 + 11 +20937.499948 + 21 +9228.349395 + 31 +0.0 + 0 +LINE + 5 +252F + 8 +0 + 62 + 0 + 10 +20928.811909 + 20 +9170.0 + 30 +0.0 + 11 +20937.499948 + 21 +9185.048125 + 31 +0.0 + 0 +LINE + 5 +2530 + 8 +0 + 62 + 0 + 10 +20962.499948 + 20 +9228.349395 + 30 +0.0 + 11 +20974.99993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2531 + 8 +0 + 62 + 0 + 10 +20962.499948 + 20 +9185.048125 + 30 +0.0 + 11 +20974.999948 + 21 +9206.69876 + 31 +0.0 + 0 +LINE + 5 +2532 + 8 +0 + 62 + 0 + 10 +20999.999947 + 20 +9206.69876 + 30 +0.0 + 11 +21012.499947 + 21 +9228.349395 + 31 +0.0 + 0 +LINE + 5 +2533 + 8 +0 + 62 + 0 + 10 +21003.811908 + 20 +9170.0 + 30 +0.0 + 11 +21012.499947 + 21 +9185.048125 + 31 +0.0 + 0 +LINE + 5 +2534 + 8 +0 + 62 + 0 + 10 +21037.499947 + 20 +9228.349395 + 30 +0.0 + 11 +21049.99993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2535 + 8 +0 + 62 + 0 + 10 +21037.499947 + 20 +9185.048125 + 30 +0.0 + 11 +21049.999947 + 21 +9206.69876 + 31 +0.0 + 0 +LINE + 5 +2536 + 8 +0 + 62 + 0 + 10 +21074.999947 + 20 +9206.69876 + 30 +0.0 + 11 +21087.499947 + 21 +9228.349395 + 31 +0.0 + 0 +LINE + 5 +2537 + 8 +0 + 62 + 0 + 10 +21078.811908 + 20 +9170.0 + 30 +0.0 + 11 +21087.499947 + 21 +9185.048125 + 31 +0.0 + 0 +LINE + 5 +2538 + 8 +0 + 62 + 0 + 10 +21112.499947 + 20 +9228.349395 + 30 +0.0 + 11 +21124.99993 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2539 + 8 +0 + 62 + 0 + 10 +21112.499947 + 20 +9185.048125 + 30 +0.0 + 11 +21124.999947 + 21 +9206.69876 + 31 +0.0 + 0 +LINE + 5 +253A + 8 +0 + 62 + 0 + 10 +21149.999947 + 20 +9206.69876 + 30 +0.0 + 11 +21162.499947 + 21 +9228.349396 + 31 +0.0 + 0 +LINE + 5 +253B + 8 +0 + 62 + 0 + 10 +21153.811908 + 20 +9170.0 + 30 +0.0 + 11 +21162.499947 + 21 +9185.048125 + 31 +0.0 + 0 +LINE + 5 +253C + 8 +0 + 62 + 0 + 10 +21187.499947 + 20 +9228.349396 + 30 +0.0 + 11 +21199.999929 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +253D + 8 +0 + 62 + 0 + 10 +21187.499947 + 20 +9185.048125 + 30 +0.0 + 11 +21199.999947 + 21 +9206.698761 + 31 +0.0 + 0 +LINE + 5 +253E + 8 +0 + 62 + 0 + 10 +21224.999947 + 20 +9206.698761 + 30 +0.0 + 11 +21237.499947 + 21 +9228.349396 + 31 +0.0 + 0 +LINE + 5 +253F + 8 +0 + 62 + 0 + 10 +21228.811907 + 20 +9170.0 + 30 +0.0 + 11 +21237.499947 + 21 +9185.048126 + 31 +0.0 + 0 +LINE + 5 +2540 + 8 +0 + 62 + 0 + 10 +21262.499947 + 20 +9228.349396 + 30 +0.0 + 11 +21274.999929 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2541 + 8 +0 + 62 + 0 + 10 +21262.499947 + 20 +9185.048126 + 30 +0.0 + 11 +21274.999947 + 21 +9206.698761 + 31 +0.0 + 0 +LINE + 5 +2542 + 8 +0 + 62 + 0 + 10 +21299.999946 + 20 +9206.698761 + 30 +0.0 + 11 +21312.499946 + 21 +9228.349396 + 31 +0.0 + 0 +LINE + 5 +2543 + 8 +0 + 62 + 0 + 10 +21303.811907 + 20 +9170.0 + 30 +0.0 + 11 +21312.499946 + 21 +9185.048126 + 31 +0.0 + 0 +LINE + 5 +2544 + 8 +0 + 62 + 0 + 10 +21337.499946 + 20 +9228.349396 + 30 +0.0 + 11 +21349.999929 + 21 +9250.0 + 31 +0.0 + 0 +LINE + 5 +2545 + 8 +0 + 62 + 0 + 10 +21337.499946 + 20 +9185.048126 + 30 +0.0 + 11 +21349.999946 + 21 +9206.698761 + 31 +0.0 + 0 +LINE + 5 +2546 + 8 +0 + 62 + 0 + 10 +21374.999946 + 20 +9206.698761 + 30 +0.0 + 11 +21376.25 + 21 +9208.863917 + 31 +0.0 + 0 +ENDBLK + 5 +2547 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +MASSHILFSLINIE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +MASSHILFSLINIE + 1 + + 0 +POLYLINE + 5 +2549 + 8 +0 + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +34A9 + 8 +0 + 10 +-150.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +34AA + 8 +0 + 10 +150.0 + 20 +0.0 + 30 +0.0 + 0 +SEQEND + 5 +34AB + 8 +0 + 0 +POLYLINE + 5 +254D + 8 +0 + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +34AC + 8 +0 + 10 +0.0 + 20 +-350.0 + 30 +0.0 + 0 +VERTEX + 5 +34AD + 8 +0 + 10 +0.0 + 20 +350.0 + 30 +0.0 + 0 +SEQEND + 5 +34AE + 8 +0 + 0 +POLYLINE + 5 +2551 + 8 +0 + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +34AF + 8 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +34B0 + 8 +0 + 10 +53.033009 + 20 +53.033009 + 30 +0.0 + 0 +SEQEND + 5 +34B1 + 8 +0 + 0 +POLYLINE + 5 +2555 + 8 +0 + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +34B2 + 8 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +34B3 + 8 +0 + 10 +-53.033009 + 20 +-53.033009 + 30 +0.0 + 0 +SEQEND + 5 +34B4 + 8 +0 + 0 +ENDBLK + 5 +2559 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D55 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D55 + 1 + + 0 +LINE + 5 +255B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9746.0 + 20 +11975.0 + 30 +0.0 + 11 +12614.0 + 21 +11975.0 + 31 +0.0 + 0 +INSERT + 5 +255C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9745.0 + 20 +11975.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +255D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +12615.0 + 20 +11975.0 + 30 +0.0 + 0 +TEXT + 5 +255E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10983.125 + 20 +12062.5 + 30 +0.0 + 40 +175.0 + 1 +2.87 + 41 +0.75 + 72 + 1 + 11 +11180.0 + 21 +12150.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2560 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9745.0 + 20 +12370.0 + 30 +0.0 + 0 +POINT + 5 +2561 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +12615.0 + 20 +12370.0 + 30 +0.0 + 0 +POINT + 5 +2562 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +12615.0 + 20 +11975.0 + 30 +0.0 + 0 +ENDBLK + 5 +2563 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D56 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D56 + 1 + + 0 +LINE + 5 +2565 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13881.0 + 20 +11975.0 + 30 +0.0 + 11 +14119.0 + 21 +11975.0 + 31 +0.0 + 0 +INSERT + 5 +2566 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13880.0 + 20 +11975.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2567 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14120.0 + 20 +11975.0 + 30 +0.0 + 0 +TEXT + 5 +2568 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13890.625 + 20 +12062.5 + 30 +0.0 + 40 +175.0 + 1 +25 + 41 +0.75 + 72 + 1 + 11 +14000.0 + 21 +12150.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2569 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13880.0 + 20 +11955.0 + 30 +0.0 + 0 +POINT + 5 +256A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14120.0 + 20 +11975.0 + 30 +0.0 + 0 +POINT + 5 +256B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14120.0 + 20 +11975.0 + 30 +0.0 + 0 +ENDBLK + 5 +256C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D57 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D57 + 1 + + 0 +LINE + 5 +256E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5371.0 + 20 +16165.0 + 30 +0.0 + 11 +7619.0 + 21 +16165.0 + 31 +0.0 + 0 +INSERT + 5 +256F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5370.0 + 20 +16165.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2570 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +7620.0 + 20 +16165.0 + 30 +0.0 + 0 +TEXT + 5 +2571 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +6298.125 + 20 +16252.5 + 30 +0.0 + 40 +175.0 + 1 +2.25 + 41 +0.75 + 72 + 1 + 11 +6495.0 + 21 +16340.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2572 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5370.0 + 20 +16875.0 + 30 +0.0 + 0 +POINT + 5 +2573 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7620.0 + 20 +16875.0 + 30 +0.0 + 0 +POINT + 5 +2574 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7620.0 + 20 +16165.0 + 30 +0.0 + 0 +ENDBLK + 5 +2575 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D58 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D58 + 1 + + 0 +LINE + 5 +2577 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7619.0 + 20 +16165.0 + 30 +0.0 + 11 +7618.0 + 21 +16165.0 + 31 +0.0 + 0 +LINE + 5 +2578 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7741.0 + 20 +16165.0 + 30 +0.0 + 11 +7742.0 + 21 +16165.0 + 31 +0.0 + 0 +LINE + 5 +2579 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7742.0 + 20 +16165.0 + 30 +0.0 + 11 +7917.0 + 21 +16165.0 + 31 +0.0 + 0 +INSERT + 5 +257A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +7620.0 + 20 +16165.0 + 30 +0.0 + 0 +INSERT + 5 +257B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +7740.0 + 20 +16165.0 + 30 +0.0 + 50 +180.0 + 0 +TEXT + 5 +257C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7742.0 + 20 +16252.5 + 30 +0.0 + 40 +175.0 + 1 +12 + 41 +0.75 + 72 + 1 + 11 +7829.5 + 21 +16340.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +257D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7620.0 + 20 +16875.0 + 30 +0.0 + 0 +POINT + 5 +257E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7740.0 + 20 +16195.0 + 30 +0.0 + 0 +POINT + 5 +257F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7740.0 + 20 +16165.0 + 30 +0.0 + 0 +ENDBLK + 5 +2580 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D59 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D59 + 1 + + 0 +LINE + 5 +2582 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +14616.0 + 30 +0.0 + 11 +3500.0 + 21 +16124.0 + 31 +0.0 + 0 +INSERT + 5 +2583 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +14615.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2584 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +16125.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2585 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3412.5 + 20 +15216.875 + 30 +0.0 + 40 +175.0 + 1 +1.51 + 50 +90.0 + 41 +0.75 + 72 + 1 + 11 +3325.0 + 21 +15370.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2586 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +14615.0 + 30 +0.0 + 0 +POINT + 5 +2587 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +16125.0 + 30 +0.0 + 0 +POINT + 5 +2588 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +16125.0 + 30 +0.0 + 0 +ENDBLK + 5 +2589 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D60 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D60 + 1 + + 0 +LINE + 5 +258B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +16126.0 + 30 +0.0 + 11 +3500.0 + 21 +18239.0 + 31 +0.0 + 0 +INSERT + 5 +258C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +16125.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +258D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +18240.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +258E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3412.5 + 20 +17029.375 + 30 +0.0 + 40 +175.0 + 1 +2.11 + 50 +90.0 + 41 +0.75 + 72 + 1 + 11 +3325.0 + 21 +17182.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +258F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +16125.0 + 30 +0.0 + 0 +POINT + 5 +2590 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +18240.0 + 30 +0.0 + 0 +POINT + 5 +2591 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +18240.0 + 30 +0.0 + 0 +ENDBLK + 5 +2592 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D61 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D61 + 1 + + 0 +LINE + 5 +2594 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +18241.0 + 30 +0.0 + 11 +3500.0 + 21 +19374.0 + 31 +0.0 + 0 +INSERT + 5 +2595 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +18240.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2596 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +19375.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2597 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3412.5 + 20 +18654.375 + 30 +0.0 + 40 +175.0 + 1 +1.13 + 50 +90.0 + 41 +0.75 + 72 + 1 + 11 +3325.0 + 21 +18807.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2598 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +18240.0 + 30 +0.0 + 0 +POINT + 5 +2599 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +19375.0 + 30 +0.0 + 0 +POINT + 5 +259A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +19375.0 + 30 +0.0 + 0 +ENDBLK + 5 +259B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D62 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D62 + 1 + + 0 +LINE + 5 +259D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +19376.0 + 30 +0.0 + 11 +3500.0 + 21 +22114.0 + 31 +0.0 + 0 +INSERT + 5 +259E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +19375.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +259F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +22115.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +25A0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3412.5 + 20 +20548.125 + 30 +0.0 + 40 +175.0 + 1 +2.74 + 50 +90.0 + 41 +0.75 + 72 + 1 + 11 +3325.0 + 21 +20745.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25A1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +19375.0 + 30 +0.0 + 0 +POINT + 5 +25A2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +25A3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +22115.0 + 30 +0.0 + 0 +ENDBLK + 5 +25A4 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D63 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D63 + 1 + + 0 +LINE + 5 +25A6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +9251.0 + 30 +0.0 + 11 +3500.0 + 21 +14614.0 + 31 +0.0 + 0 +INSERT + 5 +25A7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +9250.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +25A8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +3500.0 + 20 +14615.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +25A9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +3412.5 + 20 +11735.625 + 30 +0.0 + 40 +175.0 + 1 +5.36 + 50 +90.0 + 41 +0.75 + 72 + 1 + 11 +3325.0 + 21 +11932.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25AA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +25AB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +14615.0 + 30 +0.0 + 0 +POINT + 5 +25AC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +3500.0 + 20 +14615.0 + 30 +0.0 + 0 +ENDBLK + 5 +25AD + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D64 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D64 + 1 + + 0 +LINE + 5 +25AF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5366.0 + 20 +18105.0 + 30 +0.0 + 11 +8114.0 + 21 +18105.0 + 31 +0.0 + 0 +INSERT + 5 +25B0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5365.0 + 20 +18105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25B1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8115.0 + 20 +18105.0 + 30 +0.0 + 0 +TEXT + 5 +25B2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +6543.125 + 20 +18192.5 + 30 +0.0 + 40 +175.0 + 1 +2.75 + 41 +0.75 + 72 + 1 + 11 +6740.0 + 21 +18280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25B3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +17255.0 + 30 +0.0 + 0 +POINT + 5 +25B4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8115.0 + 20 +17255.0 + 30 +0.0 + 0 +POINT + 5 +25B5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8115.0 + 20 +18105.0 + 30 +0.0 + 0 +ENDBLK + 5 +25B6 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D65 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D65 + 1 + + 0 +LINE + 5 +25B8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8116.0 + 20 +18105.0 + 30 +0.0 + 11 +9004.0 + 21 +18105.0 + 31 +0.0 + 0 +INSERT + 5 +25B9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8115.0 + 20 +18105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25BA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9005.0 + 20 +18105.0 + 30 +0.0 + 0 +TEXT + 5 +25BB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8450.625 + 20 +18192.5 + 30 +0.0 + 40 +175.0 + 1 +88 + 41 +0.75 + 72 + 1 + 11 +8560.0 + 21 +18280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25BC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8115.0 + 20 +17255.0 + 30 +0.0 + 0 +POINT + 5 +25BD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9005.0 + 20 +17185.0 + 30 +0.0 + 0 +POINT + 5 +25BE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9005.0 + 20 +18105.0 + 30 +0.0 + 0 +ENDBLK + 5 +25BF + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D66 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D66 + 1 + + 0 +LINE + 5 +25C1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9006.0 + 20 +18105.0 + 30 +0.0 + 11 +9749.0 + 21 +18105.0 + 31 +0.0 + 0 +INSERT + 5 +25C2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9005.0 + 20 +18105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25C3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9750.0 + 20 +18105.0 + 30 +0.0 + 0 +TEXT + 5 +25C4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9268.125 + 20 +18192.5 + 30 +0.0 + 40 +175.0 + 1 +75 + 41 +0.75 + 72 + 1 + 11 +9377.5 + 21 +18280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25C5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9005.0 + 20 +17185.0 + 30 +0.0 + 0 +POINT + 5 +25C6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +18100.0 + 30 +0.0 + 0 +POINT + 5 +25C7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +18105.0 + 30 +0.0 + 0 +ENDBLK + 5 +25C8 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D67 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D67 + 1 + + 0 +LINE + 5 +25CA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5001.0 + 20 +26015.0 + 30 +0.0 + 11 +26739.0 + 21 +26015.0 + 31 +0.0 + 0 +INSERT + 5 +25CB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5000.0 + 20 +26015.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25CC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26740.0 + 20 +26015.0 + 30 +0.0 + 0 +TEXT + 5 +25CD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15629.375 + 20 +26102.5 + 30 +0.0 + 40 +175.0 + 1 +21.74 + 41 +0.75 + 72 + 1 + 11 +15870.0 + 21 +26190.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25CE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +25CF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +25D0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +26015.0 + 30 +0.0 + 0 +ENDBLK + 5 +25D1 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D68 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D68 + 1 + + 0 +LINE + 5 +25D3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5366.0 + 20 +25315.0 + 30 +0.0 + 11 +9749.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +25D4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5365.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25D5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9750.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +25D6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7360.625 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +4.38 + 41 +0.75 + 72 + 1 + 11 +7557.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25D7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +25D8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +21740.0 + 30 +0.0 + 0 +POINT + 5 +25D9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +25DA + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D69 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D69 + 1 + + 0 +LINE + 5 +25DC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5001.0 + 20 +25315.0 + 30 +0.0 + 11 +5364.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +25DD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5000.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25DE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5365.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +25DF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5073.125 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 72 + 1 + 11 +5182.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25E0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +25E1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +25E2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +25E3 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D70 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D70 + 1 + + 0 +LINE + 5 +25E5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10111.0 + 20 +25315.0 + 30 +0.0 + 11 +14874.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +25E6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10110.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25E7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14875.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +25E8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +12295.625 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +4.76 + 41 +0.75 + 72 + 1 + 11 +12492.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25E9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10110.0 + 20 +21745.0 + 30 +0.0 + 0 +POINT + 5 +25EA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14875.0 + 20 +21735.0 + 30 +0.0 + 0 +POINT + 5 +25EB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14875.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +25EC + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D71 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D71 + 1 + + 0 +LINE + 5 +25EE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9751.0 + 20 +25315.0 + 30 +0.0 + 11 +10109.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +25EF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9750.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25F0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10110.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +25F1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9820.625 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 72 + 1 + 11 +9930.0 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25F2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +21740.0 + 30 +0.0 + 0 +POINT + 5 +25F3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10110.0 + 20 +21745.0 + 30 +0.0 + 0 +POINT + 5 +25F4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10110.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +25F5 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D72 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D72 + 1 + + 0 +LINE + 5 +25F7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14876.0 + 20 +25315.0 + 30 +0.0 + 11 +15239.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +25F8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14875.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +25F9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15240.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +25FA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14948.125 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 72 + 1 + 11 +15057.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +25FB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14875.0 + 20 +21735.0 + 30 +0.0 + 0 +POINT + 5 +25FC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15240.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +25FD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15240.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +25FE + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D73 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D73 + 1 + + 0 +LINE + 5 +2600 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15241.0 + 20 +25315.0 + 30 +0.0 + 11 +17614.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +2601 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15240.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2602 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17615.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +2603 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16230.625 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +2.38 + 41 +0.75 + 72 + 1 + 11 +16427.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2604 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15240.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +2605 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17615.0 + 20 +21735.0 + 30 +0.0 + 0 +POINT + 5 +2606 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17615.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +2607 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D74 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D74 + 1 + + 0 +LINE + 5 +2609 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17616.0 + 20 +25315.0 + 30 +0.0 + 11 +17994.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +260A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17615.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +260B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17995.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +260C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17695.625 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 72 + 1 + 11 +17805.0 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +260D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17615.0 + 20 +21735.0 + 30 +0.0 + 0 +POINT + 5 +260E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17995.0 + 20 +21745.0 + 30 +0.0 + 0 +POINT + 5 +260F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17995.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +2610 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D75 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D75 + 1 + + 0 +LINE + 5 +2612 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17996.0 + 20 +25315.0 + 30 +0.0 + 11 +22499.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +2613 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17995.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2614 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22500.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +2615 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +20072.5 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +4.51 + 41 +0.75 + 72 + 1 + 11 +20247.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2616 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17995.0 + 20 +21745.0 + 30 +0.0 + 0 +POINT + 5 +2617 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22500.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +2618 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22500.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +2619 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D76 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D76 + 1 + + 0 +LINE + 5 +261B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22501.0 + 20 +25315.0 + 30 +0.0 + 11 +22864.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +261C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22500.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +261D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22865.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +261E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22573.125 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 72 + 1 + 11 +22682.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +261F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22500.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +2620 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22865.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +2621 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22865.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +2622 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D77 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D77 + 1 + + 0 +LINE + 5 +2624 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22866.0 + 20 +25315.0 + 30 +0.0 + 11 +26369.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +2625 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22865.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2626 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26370.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +2627 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24442.5 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +3.51 + 41 +0.75 + 72 + 1 + 11 +24617.5 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2628 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22865.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +2629 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26370.0 + 20 +21740.0 + 30 +0.0 + 0 +POINT + 5 +262A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26370.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +262B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D78 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D78 + 1 + + 0 +LINE + 5 +262D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +26371.0 + 20 +25315.0 + 30 +0.0 + 11 +26739.0 + 21 +25315.0 + 31 +0.0 + 0 +INSERT + 5 +262E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26370.0 + 20 +25315.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +262F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26740.0 + 20 +25315.0 + 30 +0.0 + 0 +TEXT + 5 +2630 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +26445.625 + 20 +25402.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 72 + 1 + 11 +26555.0 + 21 +25490.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2631 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26370.0 + 20 +21740.0 + 30 +0.0 + 0 +POINT + 5 +2632 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +22000.0 + 30 +0.0 + 0 +POINT + 5 +2633 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +25315.0 + 30 +0.0 + 0 +ENDBLK + 5 +2634 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D79 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D79 + 1 + + 0 +LINE + 5 +2636 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +25251.0 + 20 +24615.0 + 30 +0.0 + 11 +26739.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2637 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +25250.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2638 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26740.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +2639 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +25820.0 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.49 + 41 +0.75 + 72 + 1 + 11 +25995.0 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +263A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +25250.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +263B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +263C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +263D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D80 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D80 + 1 + + 0 +LINE + 5 +263F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +19751.0 + 20 +24615.0 + 30 +0.0 + 11 +23364.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2640 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +19750.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2641 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +23365.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +2642 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21382.5 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +3.61 + 41 +0.75 + 72 + 1 + 11 +21557.5 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2643 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +19750.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2644 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23365.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2645 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23365.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +2646 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D81 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D81 + 1 + + 0 +LINE + 5 +2648 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18736.0 + 20 +24615.0 + 30 +0.0 + 11 +19749.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2649 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18735.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +264A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +19750.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +264B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +19100.3125 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.01 + 41 +0.75 + 72 + 1 + 11 +19242.5 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +264C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18735.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +264D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +19750.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +264E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +19750.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +264F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D82 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D82 + 1 + + 0 +LINE + 5 +2651 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16876.0 + 20 +24615.0 + 30 +0.0 + 11 +18734.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2652 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16875.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2653 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18735.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +2654 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17630.0 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.86 + 41 +0.75 + 72 + 1 + 11 +17805.0 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2655 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16875.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +2656 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18735.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +2657 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18735.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +2658 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D83 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D83 + 1 + + 0 +LINE + 5 +265A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15861.0 + 20 +24615.0 + 30 +0.0 + 11 +16874.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +265B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15860.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +265C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16875.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +265D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16225.3125 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.01 + 41 +0.75 + 72 + 1 + 11 +16367.5 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +265E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15860.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +265F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16875.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +2660 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16875.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +2661 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D84 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D84 + 1 + + 0 +LINE + 5 +2663 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +11256.0 + 20 +24615.0 + 30 +0.0 + 11 +15859.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2664 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +11255.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2665 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15860.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +2666 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13382.5 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +4.61 + 41 +0.75 + 72 + 1 + 11 +13557.5 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2667 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +11255.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +2668 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15860.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +2669 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15860.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +266A + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D85 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D85 + 1 + + 0 +LINE + 5 +266C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10241.0 + 20 +24615.0 + 30 +0.0 + 11 +11254.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +266D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10240.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +266E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +11255.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +266F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10605.3125 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.01 + 41 +0.75 + 72 + 1 + 11 +10747.5 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2670 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10240.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2671 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +11255.0 + 20 +22105.0 + 30 +0.0 + 0 +POINT + 5 +2672 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +11255.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +2673 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D86 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D86 + 1 + + 0 +LINE + 5 +2675 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8501.0 + 20 +24615.0 + 30 +0.0 + 11 +10239.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2676 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8500.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2677 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10240.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +2678 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9195.0 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.74 + 41 +0.75 + 72 + 1 + 11 +9370.0 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2679 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8500.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +267A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10240.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +267B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10240.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +267C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D87 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D87 + 1 + + 0 +LINE + 5 +267E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5001.0 + 20 +24615.0 + 30 +0.0 + 11 +6739.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +267F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5000.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2680 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +6740.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +2681 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5695.0 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.74 + 41 +0.75 + 72 + 1 + 11 +5870.0 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2682 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2683 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +6740.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2684 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +6740.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +2685 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D88 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D88 + 1 + + 0 +LINE + 5 +2687 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +23366.0 + 20 +24615.0 + 30 +0.0 + 11 +25249.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2688 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +23365.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2689 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +25250.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +268A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24132.5 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.88 + 41 +0.75 + 72 + 1 + 11 +24307.5 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +268B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23365.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +268C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +25250.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +268D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +25250.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +268E + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D89 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D89 + 1 + + 0 +LINE + 5 +2690 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +6741.0 + 20 +24615.0 + 30 +0.0 + 11 +8499.0 + 21 +24615.0 + 31 +0.0 + 0 +INSERT + 5 +2691 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +6740.0 + 20 +24615.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2692 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8500.0 + 20 +24615.0 + 30 +0.0 + 0 +TEXT + 5 +2693 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7445.0 + 20 +24702.5 + 30 +0.0 + 40 +175.0 + 1 +1.76 + 41 +0.75 + 72 + 1 + 11 +7620.0 + 21 +24790.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2694 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +6740.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2695 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8500.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2696 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8500.0 + 20 +24615.0 + 30 +0.0 + 0 +ENDBLK + 5 +2697 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D90 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D90 + 1 + + 0 +LINE + 5 +2699 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +9251.0 + 30 +0.0 + 11 +2800.0 + 21 +9614.0 + 31 +0.0 + 0 +INSERT + 5 +269A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +9250.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +269B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +9615.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +269C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +9323.125 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +9432.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +269D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +269E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +9615.0 + 30 +0.0 + 0 +POINT + 5 +269F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +9615.0 + 30 +0.0 + 0 +ENDBLK + 5 +26A0 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D91 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D91 + 1 + + 0 +LINE + 5 +26A2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +9616.0 + 30 +0.0 + 11 +2800.0 + 21 +14114.0 + 31 +0.0 + 0 +INSERT + 5 +26A3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +9615.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +26A4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +14115.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +26A5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +11690.0 + 30 +0.0 + 40 +175.0 + 1 +4.51 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +11865.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26A6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +9615.0 + 30 +0.0 + 0 +POINT + 5 +26A7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +14115.0 + 30 +0.0 + 0 +POINT + 5 +26A8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +14115.0 + 30 +0.0 + 0 +ENDBLK + 5 +26A9 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D92 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D92 + 1 + + 0 +LINE + 5 +26AB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +14116.0 + 30 +0.0 + 11 +2800.0 + 21 +14474.0 + 31 +0.0 + 0 +INSERT + 5 +26AC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +14115.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +26AD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +14475.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +26AE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +14185.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +14295.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26AF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +14115.0 + 30 +0.0 + 0 +POINT + 5 +26B0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5390.0 + 20 +14475.0 + 30 +0.0 + 0 +POINT + 5 +26B1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +14475.0 + 30 +0.0 + 0 +ENDBLK + 5 +26B2 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D93 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D93 + 1 + + 0 +LINE + 5 +26B4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +14476.0 + 30 +0.0 + 11 +2800.0 + 21 +16874.0 + 31 +0.0 + 0 +INSERT + 5 +26B5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +14475.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +26B6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +16875.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +26B7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +15478.125 + 30 +0.0 + 40 +175.0 + 1 +2.38 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +15675.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26B8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5390.0 + 20 +14475.0 + 30 +0.0 + 0 +POINT + 5 +26B9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +16875.0 + 30 +0.0 + 0 +POINT + 5 +26BA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +16875.0 + 30 +0.0 + 0 +ENDBLK + 5 +26BB + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D94 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D94 + 1 + + 0 +LINE + 5 +26BD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +16876.0 + 30 +0.0 + 11 +2800.0 + 21 +17234.0 + 31 +0.0 + 0 +INSERT + 5 +26BE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +16875.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +26BF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +17235.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +26C0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +16945.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +17055.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26C1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +16875.0 + 30 +0.0 + 0 +POINT + 5 +26C2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5375.0 + 20 +17235.0 + 30 +0.0 + 0 +POINT + 5 +26C3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +17235.0 + 30 +0.0 + 0 +ENDBLK + 5 +26C4 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D95 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D95 + 1 + + 0 +LINE + 5 +26C6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +17236.0 + 30 +0.0 + 11 +2800.0 + 21 +21749.0 + 31 +0.0 + 0 +INSERT + 5 +26C7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +17235.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +26C8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +21750.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +26C9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +19317.5 + 30 +0.0 + 40 +175.0 + 1 +4.51 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +19492.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26CA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5375.0 + 20 +17235.0 + 30 +0.0 + 0 +POINT + 5 +26CB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5355.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +26CC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +21750.0 + 30 +0.0 + 0 +ENDBLK + 5 +26CD + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D96 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D96 + 1 + + 0 +LINE + 5 +26CF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +21751.0 + 30 +0.0 + 11 +2800.0 + 21 +22119.0 + 31 +0.0 + 0 +INSERT + 5 +26D0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +21750.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +26D1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +22120.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +26D2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +21825.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +21935.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26D3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5355.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +26D4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5345.0 + 20 +22120.0 + 30 +0.0 + 0 +POINT + 5 +26D5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +22120.0 + 30 +0.0 + 0 +ENDBLK + 5 +26D6 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D97 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D97 + 1 + + 0 +LINE + 5 +26D8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10121.0 + 20 +18105.0 + 30 +0.0 + 11 +13529.0 + 21 +18105.0 + 31 +0.0 + 0 +INSERT + 5 +26D9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10120.0 + 20 +18105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +26DA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13530.0 + 20 +18105.0 + 30 +0.0 + 0 +TEXT + 5 +26DB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +11650.0 + 20 +18192.5 + 30 +0.0 + 40 +175.0 + 1 +3.41 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +11825.0 + 21 +18280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26DC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10120.0 + 20 +17375.0 + 30 +0.0 + 0 +POINT + 5 +26DD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13530.0 + 20 +17375.0 + 30 +0.0 + 0 +POINT + 5 +26DE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13530.0 + 20 +18105.0 + 30 +0.0 + 0 +ENDBLK + 5 +26DF + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D98 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D98 + 1 + + 0 +LINE + 5 +26E1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14561.0 + 20 +18105.0 + 30 +0.0 + 11 +14884.0 + 21 +18105.0 + 31 +0.0 + 0 +INSERT + 5 +26E2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14560.0 + 20 +18105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +26E3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14885.0 + 20 +18105.0 + 30 +0.0 + 0 +TEXT + 5 +26E4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14613.125 + 20 +18192.5 + 30 +0.0 + 40 +175.0 + 1 +32 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +14722.5 + 21 +18280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26E5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14560.0 + 20 +17375.0 + 30 +0.0 + 0 +POINT + 5 +26E6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14885.0 + 20 +17395.0 + 30 +0.0 + 0 +POINT + 5 +26E7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14885.0 + 20 +18105.0 + 30 +0.0 + 0 +ENDBLK + 5 +26E8 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D99 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D99 + 1 + + 0 +LINE + 5 +26EA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15236.0 + 20 +18110.0 + 30 +0.0 + 11 +15989.0 + 21 +18110.0 + 31 +0.0 + 0 +INSERT + 5 +26EB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15235.0 + 20 +18110.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +26EC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15990.0 + 20 +18110.0 + 30 +0.0 + 0 +TEXT + 5 +26ED + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15503.125 + 20 +18197.5 + 30 +0.0 + 40 +175.0 + 1 +75 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +15612.5 + 21 +18285.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26EE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15235.0 + 20 +17380.0 + 30 +0.0 + 0 +POINT + 5 +26EF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15990.0 + 20 +17380.0 + 30 +0.0 + 0 +POINT + 5 +26F0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15990.0 + 20 +18110.0 + 30 +0.0 + 0 +ENDBLK + 5 +26F1 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D100 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D100 + 1 + + 0 +LINE + 5 +26F3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15991.0 + 20 +18110.0 + 30 +0.0 + 11 +16869.0 + 21 +18110.0 + 31 +0.0 + 0 +INSERT + 5 +26F4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15990.0 + 20 +18110.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +26F5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16870.0 + 20 +18110.0 + 30 +0.0 + 0 +TEXT + 5 +26F6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16320.625 + 20 +18197.5 + 30 +0.0 + 40 +175.0 + 1 +88 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16430.0 + 21 +18285.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +26F7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15990.0 + 20 +17380.0 + 30 +0.0 + 0 +POINT + 5 +26F8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16870.0 + 20 +17370.0 + 30 +0.0 + 0 +POINT + 5 +26F9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16870.0 + 20 +18110.0 + 30 +0.0 + 0 +ENDBLK + 5 +26FA + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D101 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D101 + 1 + + 0 +LINE + 5 +26FC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16871.0 + 20 +18110.0 + 30 +0.0 + 11 +17624.0 + 21 +18110.0 + 31 +0.0 + 0 +INSERT + 5 +26FD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16870.0 + 20 +18110.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +26FE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17625.0 + 20 +18110.0 + 30 +0.0 + 0 +TEXT + 5 +26FF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17138.125 + 20 +18197.5 + 30 +0.0 + 40 +175.0 + 1 +75 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +17247.5 + 21 +18285.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2700 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16870.0 + 20 +17370.0 + 30 +0.0 + 0 +POINT + 5 +2701 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17625.0 + 20 +17380.0 + 30 +0.0 + 0 +POINT + 5 +2702 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17625.0 + 20 +18110.0 + 30 +0.0 + 0 +ENDBLK + 5 +2703 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D102 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D102 + 1 + + 0 +LINE + 5 +2705 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17986.0 + 20 +16810.0 + 30 +0.0 + 11 +21359.0 + 21 +16810.0 + 31 +0.0 + 0 +INSERT + 5 +2706 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17985.0 + 20 +16810.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2707 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21360.0 + 20 +16810.0 + 30 +0.0 + 0 +TEXT + 5 +2708 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +19475.625 + 20 +16897.5 + 30 +0.0 + 40 +175.0 + 1 +3.37 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +19672.5 + 21 +16985.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2709 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17985.0 + 20 +16005.0 + 30 +0.0 + 0 +POINT + 5 +270A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21360.0 + 20 +16005.0 + 30 +0.0 + 0 +POINT + 5 +270B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21360.0 + 20 +16810.0 + 30 +0.0 + 0 +ENDBLK + 5 +270C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D103 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D103 + 1 + + 0 +LINE + 5 +270E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21361.0 + 20 +16810.0 + 30 +0.0 + 11 +22254.0 + 21 +16810.0 + 31 +0.0 + 0 +INSERT + 5 +270F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21360.0 + 20 +16810.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2710 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22255.0 + 20 +16810.0 + 30 +0.0 + 0 +TEXT + 5 +2711 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21698.125 + 20 +16897.5 + 30 +0.0 + 40 +175.0 + 1 +88 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21807.5 + 21 +16985.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2712 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21360.0 + 20 +16005.0 + 30 +0.0 + 0 +POINT + 5 +2713 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22255.0 + 20 +15975.0 + 30 +0.0 + 0 +POINT + 5 +2714 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22255.0 + 20 +16810.0 + 30 +0.0 + 0 +ENDBLK + 5 +2715 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D104 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D104 + 1 + + 0 +LINE + 5 +2717 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22256.0 + 20 +16810.0 + 30 +0.0 + 11 +22509.0 + 21 +16810.0 + 31 +0.0 + 0 +INSERT + 5 +2718 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22255.0 + 20 +16810.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2719 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22510.0 + 20 +16810.0 + 30 +0.0 + 0 +TEXT + 5 +271A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22273.125 + 20 +16897.5 + 30 +0.0 + 40 +175.0 + 1 +25 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +22382.5 + 21 +16985.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +271B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22255.0 + 20 +15975.0 + 30 +0.0 + 0 +POINT + 5 +271C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22510.0 + 20 +16010.0 + 30 +0.0 + 0 +POINT + 5 +271D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22510.0 + 20 +16810.0 + 30 +0.0 + 0 +ENDBLK + 5 +271E + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D105 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D105 + 1 + + 0 +LINE + 5 +2720 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +15986.0 + 30 +0.0 + 11 +24520.0 + 21 +16244.0 + 31 +0.0 + 0 +INSERT + 5 +2721 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +15985.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2722 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +16245.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2723 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24432.5 + 20 +16005.625 + 30 +0.0 + 40 +175.0 + 1 +25 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24345.0 + 21 +16115.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2724 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22865.0 + 20 +15985.0 + 30 +0.0 + 0 +POINT + 5 +2725 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22865.0 + 20 +16245.0 + 30 +0.0 + 0 +POINT + 5 +2726 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +16245.0 + 30 +0.0 + 0 +ENDBLK + 5 +2727 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D106 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D106 + 1 + + 0 +LINE + 5 +2729 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +16246.0 + 30 +0.0 + 11 +24520.0 + 21 +17129.0 + 31 +0.0 + 0 +INSERT + 5 +272A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +16245.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +272B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +17130.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +272C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24432.5 + 20 +16578.125 + 30 +0.0 + 40 +175.0 + 1 +88 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24345.0 + 21 +16687.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +272D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22865.0 + 20 +16245.0 + 30 +0.0 + 0 +POINT + 5 +272E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22845.0 + 20 +17130.0 + 30 +0.0 + 0 +POINT + 5 +272F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +17130.0 + 30 +0.0 + 0 +ENDBLK + 5 +2730 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D107 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D107 + 1 + + 0 +LINE + 5 +2732 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +17131.0 + 30 +0.0 + 11 +24520.0 + 21 +21739.0 + 31 +0.0 + 0 +INSERT + 5 +2733 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +17130.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2734 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +21740.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2735 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24432.5 + 20 +19238.125 + 30 +0.0 + 40 +175.0 + 1 +4.62 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24345.0 + 21 +19435.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2736 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22845.0 + 20 +17130.0 + 30 +0.0 + 0 +POINT + 5 +2737 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23355.0 + 20 +21740.0 + 30 +0.0 + 0 +POINT + 5 +2738 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +21740.0 + 30 +0.0 + 0 +ENDBLK + 5 +2739 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D108 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D108 + 1 + + 0 +LINE + 5 +273B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +9256.0 + 30 +0.0 + 11 +28240.0 + 21 +10359.0 + 31 +0.0 + 0 +INSERT + 5 +273C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +9255.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +273D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +10360.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +273E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28152.5 + 20 +9676.25 + 30 +0.0 + 40 +175.0 + 1 +1.11 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28065.0 + 21 +9807.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +273F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +9255.0 + 30 +0.0 + 0 +POINT + 5 +2740 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +10360.0 + 30 +0.0 + 0 +POINT + 5 +2741 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +10360.0 + 30 +0.0 + 0 +ENDBLK + 5 +2742 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D109 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D109 + 1 + + 0 +LINE + 5 +2744 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +10361.0 + 30 +0.0 + 11 +28240.0 + 21 +12009.0 + 31 +0.0 + 0 +INSERT + 5 +2745 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +10360.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2746 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +12010.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2747 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28152.5 + 20 +11010.0 + 30 +0.0 + 40 +175.0 + 1 +1.63 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28065.0 + 21 +11185.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2748 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +10360.0 + 30 +0.0 + 0 +POINT + 5 +2749 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26730.0 + 20 +12010.0 + 30 +0.0 + 0 +POINT + 5 +274A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +12010.0 + 30 +0.0 + 0 +ENDBLK + 5 +274B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D110 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D110 + 1 + + 0 +LINE + 5 +274D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +12011.0 + 30 +0.0 + 11 +28240.0 + 21 +17729.0 + 31 +0.0 + 0 +INSERT + 5 +274E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +12010.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +274F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +17730.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2750 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28152.5 + 20 +14673.125 + 30 +0.0 + 40 +175.0 + 1 +5.74 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28065.0 + 21 +14870.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2751 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26730.0 + 20 +12010.0 + 30 +0.0 + 0 +POINT + 5 +2752 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26725.0 + 20 +17730.0 + 30 +0.0 + 0 +POINT + 5 +2753 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +17730.0 + 30 +0.0 + 0 +ENDBLK + 5 +2754 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D111 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D111 + 1 + + 0 +LINE + 5 +2756 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +17731.0 + 30 +0.0 + 11 +28240.0 + 21 +18384.0 + 31 +0.0 + 0 +INSERT + 5 +2757 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +17730.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2758 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +18385.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2759 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28152.5 + 20 +17948.125 + 30 +0.0 + 40 +175.0 + 1 +63 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28065.0 + 21 +18057.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +275A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26725.0 + 20 +17730.0 + 30 +0.0 + 0 +POINT + 5 +275B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26720.0 + 20 +18385.0 + 30 +0.0 + 0 +POINT + 5 +275C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +18385.0 + 30 +0.0 + 0 +ENDBLK + 5 +275D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D112 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D112 + 1 + + 0 +LINE + 5 +275F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +18386.0 + 30 +0.0 + 11 +28240.0 + 21 +22114.0 + 31 +0.0 + 0 +INSERT + 5 +2760 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +18385.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2761 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28240.0 + 20 +22115.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2762 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28152.5 + 20 +20053.125 + 30 +0.0 + 40 +175.0 + 1 +3.74 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28065.0 + 21 +20250.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2763 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26720.0 + 20 +18385.0 + 30 +0.0 + 0 +POINT + 5 +2764 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26725.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2765 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28240.0 + 20 +22115.0 + 30 +0.0 + 0 +ENDBLK + 5 +2766 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D113 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D113 + 1 + + 0 +LINE + 5 +2768 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +9256.0 + 30 +0.0 + 11 +28940.0 + 21 +9614.0 + 31 +0.0 + 0 +INSERT + 5 +2769 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +9255.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +276A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +9615.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +276B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28852.5 + 20 +9325.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28765.0 + 21 +9435.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +276C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26685.0 + 20 +9255.0 + 30 +0.0 + 0 +POINT + 5 +276D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26685.0 + 20 +9615.0 + 30 +0.0 + 0 +POINT + 5 +276E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +9615.0 + 30 +0.0 + 0 +ENDBLK + 5 +276F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D114 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D114 + 1 + + 0 +LINE + 5 +2771 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +9616.0 + 30 +0.0 + 11 +28940.0 + 21 +15624.0 + 31 +0.0 + 0 +INSERT + 5 +2772 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +9615.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2773 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +15625.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2774 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28852.5 + 20 +12455.9375 + 30 +0.0 + 40 +175.0 + 1 +6.01 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28765.0 + 21 +12620.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2775 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26685.0 + 20 +9615.0 + 30 +0.0 + 0 +POINT + 5 +2776 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26365.0 + 20 +15625.0 + 30 +0.0 + 0 +POINT + 5 +2777 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +15625.0 + 30 +0.0 + 0 +ENDBLK + 5 +2778 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D115 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D115 + 1 + + 0 +LINE + 5 +277A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +15626.0 + 30 +0.0 + 11 +28940.0 + 21 +15994.0 + 31 +0.0 + 0 +INSERT + 5 +277B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +15625.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +277C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +15995.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +277D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28852.5 + 20 +15700.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28765.0 + 21 +15810.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +277E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26365.0 + 20 +15625.0 + 30 +0.0 + 0 +POINT + 5 +277F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26365.0 + 20 +15995.0 + 30 +0.0 + 0 +POINT + 5 +2780 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +15995.0 + 30 +0.0 + 0 +ENDBLK + 5 +2781 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D116 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D116 + 1 + + 0 +LINE + 5 +2783 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +15996.0 + 30 +0.0 + 11 +28940.0 + 21 +21744.0 + 31 +0.0 + 0 +INSERT + 5 +2784 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +15995.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2785 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +21745.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2786 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28852.5 + 20 +18673.125 + 30 +0.0 + 40 +175.0 + 1 +5.76 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28765.0 + 21 +18870.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2787 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26365.0 + 20 +15995.0 + 30 +0.0 + 0 +POINT + 5 +2788 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26370.0 + 20 +21745.0 + 30 +0.0 + 0 +POINT + 5 +2789 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +21745.0 + 30 +0.0 + 0 +ENDBLK + 5 +278A + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D117 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D117 + 1 + + 0 +LINE + 5 +278C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +21746.0 + 30 +0.0 + 11 +28940.0 + 21 +22114.0 + 31 +0.0 + 0 +INSERT + 5 +278D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +21745.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +278E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +22115.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +278F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28852.5 + 20 +21820.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28765.0 + 21 +21930.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2790 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26370.0 + 20 +21745.0 + 30 +0.0 + 0 +POINT + 5 +2791 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26380.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +2792 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +22115.0 + 30 +0.0 + 0 +ENDBLK + 5 +2793 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D118 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D118 + 1 + + 0 +LINE + 5 +2795 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +29640.0 + 20 +9256.0 + 30 +0.0 + 11 +29640.0 + 21 +22114.0 + 31 +0.0 + 0 +INSERT + 5 +2796 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +29640.0 + 20 +9255.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2797 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +29640.0 + 20 +22115.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2798 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +29552.5 + 20 +15444.375 + 30 +0.0 + 40 +175.0 + 1 +12.86 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +29465.0 + 21 +15685.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2799 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26720.0 + 20 +9255.0 + 30 +0.0 + 0 +POINT + 5 +279A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26720.0 + 20 +22115.0 + 30 +0.0 + 0 +POINT + 5 +279B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +29640.0 + 20 +22115.0 + 30 +0.0 + 0 +ENDBLK + 5 +279C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D119 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D119 + 1 + + 0 +LINE + 5 +279E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +15624.0 + 30 +0.0 + 11 +24520.0 + 21 +15241.0 + 31 +0.0 + 0 +INSERT + 5 +279F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +15625.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +27A0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +15240.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +27A1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24432.5 + 20 +15334.0625 + 30 +0.0 + 40 +175.0 + 1 +40 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24345.0 + 21 +15432.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27A2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22975.0 + 20 +15625.0 + 30 +0.0 + 0 +POINT + 5 +27A3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22975.0 + 20 +15240.0 + 30 +0.0 + 0 +POINT + 5 +27A4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +15240.0 + 30 +0.0 + 0 +ENDBLK + 5 +27A5 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D120 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D120 + 1 + + 0 +LINE + 5 +27A7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +15239.0 + 30 +0.0 + 11 +24520.0 + 21 +14361.0 + 31 +0.0 + 0 +INSERT + 5 +27A8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +15240.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +27A9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +14360.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +27AA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24432.5 + 20 +14690.625 + 30 +0.0 + 40 +175.0 + 1 +88 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24345.0 + 21 +14800.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27AB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22975.0 + 20 +15240.0 + 30 +0.0 + 0 +POINT + 5 +27AC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22960.0 + 20 +14360.0 + 30 +0.0 + 0 +POINT + 5 +27AD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +14360.0 + 30 +0.0 + 0 +ENDBLK + 5 +27AE + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D121 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D121 + 1 + + 0 +LINE + 5 +27B0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +14359.0 + 30 +0.0 + 11 +24520.0 + 21 +9626.0 + 31 +0.0 + 0 +INSERT + 5 +27B1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +14360.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +27B2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +24520.0 + 20 +9625.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +27B3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24432.5 + 20 +11795.625 + 30 +0.0 + 40 +175.0 + 1 +4.72 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24345.0 + 21 +11992.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27B4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22960.0 + 20 +14360.0 + 30 +0.0 + 0 +POINT + 5 +27B5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +24375.0 + 20 +9625.0 + 30 +0.0 + 0 +POINT + 5 +27B6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +24520.0 + 20 +9625.0 + 30 +0.0 + 0 +ENDBLK + 5 +27B7 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D122 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D122 + 1 + + 0 +LINE + 5 +27B9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13890.0 + 20 +17244.0 + 30 +0.0 + 11 +13890.0 + 21 +17243.0 + 31 +0.0 + 0 +LINE + 5 +27BA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13890.0 + 20 +17376.0 + 30 +0.0 + 11 +13890.0 + 21 +17377.0 + 31 +0.0 + 0 +LINE + 5 +27BB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13890.0 + 20 +17377.0 + 30 +0.0 + 11 +13890.0 + 21 +17552.0 + 31 +0.0 + 0 +INSERT + 5 +27BC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13890.0 + 20 +17245.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +27BD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13890.0 + 20 +17375.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +27BE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13802.5 + 20 +17377.0 + 30 +0.0 + 40 +175.0 + 1 +12 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13715.0 + 21 +17464.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27BF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14555.0 + 20 +17245.0 + 30 +0.0 + 0 +POINT + 5 +27C0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14555.0 + 20 +17375.0 + 30 +0.0 + 0 +POINT + 5 +27C1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13890.0 + 20 +17375.0 + 30 +0.0 + 0 +ENDBLK + 5 +27C2 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D123 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D123 + 1 + + 0 +LINE + 5 +27C4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13890.0 + 20 +17376.0 + 30 +0.0 + 11 +13890.0 + 21 +21749.0 + 31 +0.0 + 0 +INSERT + 5 +27C5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13890.0 + 20 +17375.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +27C6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13890.0 + 20 +21750.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +27C7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13802.5 + 20 +19365.625 + 30 +0.0 + 40 +175.0 + 1 +4.37 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13715.0 + 21 +19562.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27C8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14555.0 + 20 +17375.0 + 30 +0.0 + 0 +POINT + 5 +27C9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13890.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +27CA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13890.0 + 20 +21750.0 + 30 +0.0 + 0 +ENDBLK + 5 +27CB + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D124 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D124 + 1 + + 0 +LINE + 5 +27CD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10725.0 + 20 +15486.0 + 30 +0.0 + 11 +10725.0 + 21 +15739.0 + 31 +0.0 + 0 +INSERT + 5 +27CE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10725.0 + 20 +15485.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +27CF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10725.0 + 20 +15740.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +27D0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10637.5 + 20 +15503.125 + 30 +0.0 + 40 +175.0 + 1 +25 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +10550.0 + 21 +15612.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27D1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10130.0 + 20 +15485.0 + 30 +0.0 + 0 +POINT + 5 +27D2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10130.0 + 20 +15740.0 + 30 +0.0 + 0 +POINT + 5 +27D3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10725.0 + 20 +15740.0 + 30 +0.0 + 0 +ENDBLK + 5 +27D4 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D125 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D125 + 1 + + 0 +LINE + 5 +27D6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10725.0 + 20 +16626.0 + 30 +0.0 + 11 +10725.0 + 21 +17254.0 + 31 +0.0 + 0 +INSERT + 5 +27D7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10725.0 + 20 +16625.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +27D8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10725.0 + 20 +17255.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +27D9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10637.5 + 20 +16830.625 + 30 +0.0 + 40 +175.0 + 1 +62 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +10550.0 + 21 +16940.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27DA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10115.0 + 20 +16625.0 + 30 +0.0 + 0 +POINT + 5 +27DB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10715.0 + 20 +17255.0 + 30 +0.0 + 0 +POINT + 5 +27DC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10725.0 + 20 +17255.0 + 30 +0.0 + 0 +ENDBLK + 5 +27DD + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D126 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D126 + 1 + + 0 +LINE + 5 +27DF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8415.0 + 20 +16491.0 + 30 +0.0 + 11 +8415.0 + 21 +16879.0 + 31 +0.0 + 0 +INSERT + 5 +27E0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8415.0 + 20 +16490.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +27E1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8415.0 + 20 +16880.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +27E2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8327.5 + 20 +16586.5625 + 30 +0.0 + 40 +175.0 + 1 +40 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8240.0 + 21 +16685.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27E3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7730.0 + 20 +16490.0 + 30 +0.0 + 0 +POINT + 5 +27E4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8115.0 + 20 +16880.0 + 30 +0.0 + 0 +POINT + 5 +27E5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8415.0 + 20 +16880.0 + 30 +0.0 + 0 +ENDBLK + 5 +27E6 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D127 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D127 + 1 + + 0 +LINE + 5 +27E8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8415.0 + 20 +15586.0 + 30 +0.0 + 11 +8415.0 + 21 +16489.0 + 31 +0.0 + 0 +INSERT + 5 +27E9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8415.0 + 20 +15585.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +27EA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8415.0 + 20 +16490.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +27EB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8327.5 + 20 +15928.125 + 30 +0.0 + 40 +175.0 + 1 +88 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8240.0 + 21 +16037.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27EC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7730.0 + 20 +15585.0 + 30 +0.0 + 0 +POINT + 5 +27ED + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7730.0 + 20 +16490.0 + 30 +0.0 + 0 +POINT + 5 +27EE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8415.0 + 20 +16490.0 + 30 +0.0 + 0 +ENDBLK + 5 +27EF + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D128 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D128 + 1 + + 0 +LINE + 5 +27F1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8415.0 + 20 +14491.0 + 30 +0.0 + 11 +8415.0 + 21 +15584.0 + 31 +0.0 + 0 +INSERT + 5 +27F2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8415.0 + 20 +14490.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +27F3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8415.0 + 20 +15585.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +27F4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8327.5 + 20 +14895.3125 + 30 +0.0 + 40 +175.0 + 1 +1.10 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8240.0 + 21 +15037.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27F5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7730.0 + 20 +14490.0 + 30 +0.0 + 0 +POINT + 5 +27F6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7730.0 + 20 +15585.0 + 30 +0.0 + 0 +POINT + 5 +27F7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8415.0 + 20 +15585.0 + 30 +0.0 + 0 +ENDBLK + 5 +27F8 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D129 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D129 + 1 + + 0 +LINE + 5 +27FA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8405.0 + 20 +19981.0 + 30 +0.0 + 11 +8405.0 + 21 +20874.0 + 31 +0.0 + 0 +INSERT + 5 +27FB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8405.0 + 20 +19980.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +27FC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8405.0 + 20 +20875.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +27FD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8317.5 + 20 +20318.125 + 30 +0.0 + 40 +175.0 + 1 +88 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8230.0 + 21 +20427.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +27FE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +19980.0 + 30 +0.0 + 0 +POINT + 5 +27FF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9755.0 + 20 +20875.0 + 30 +0.0 + 0 +POINT + 5 +2800 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8405.0 + 20 +20875.0 + 30 +0.0 + 0 +ENDBLK + 5 +2801 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D130 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D130 + 1 + + 0 +LINE + 5 +2803 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8405.0 + 20 +20876.0 + 30 +0.0 + 11 +8405.0 + 21 +21749.0 + 31 +0.0 + 0 +INSERT + 5 +2804 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8405.0 + 20 +20875.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2805 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8405.0 + 20 +21750.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2806 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8317.5 + 20 +21203.125 + 30 +0.0 + 40 +175.0 + 1 +87 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8230.0 + 21 +21312.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2807 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9755.0 + 20 +20875.0 + 30 +0.0 + 0 +POINT + 5 +2808 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9740.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +2809 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8405.0 + 20 +21750.0 + 30 +0.0 + 0 +ENDBLK + 5 +280A + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D131 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D131 + 1 + + 0 +LINE + 5 +280C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8405.0 + 20 +17266.0 + 30 +0.0 + 11 +8405.0 + 21 +19979.0 + 31 +0.0 + 0 +INSERT + 5 +280D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8405.0 + 20 +17265.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +280E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8405.0 + 20 +19980.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +280F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8317.5 + 20 +18031.875 + 30 +0.0 + 40 +175.0 + 1 + 2.75 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8230.0 + 21 +18622.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2810 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +17265.0 + 30 +0.0 + 0 +POINT + 5 +2811 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +19980.0 + 30 +0.0 + 0 +POINT + 5 +2812 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8405.0 + 20 +19980.0 + 30 +0.0 + 0 +ENDBLK + 5 +2813 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D132 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D132 + 1 + + 0 +LINE + 5 +2815 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15746.0 + 20 +16480.0 + 30 +0.0 + 11 +16374.0 + 21 +16480.0 + 31 +0.0 + 0 +INSERT + 5 +2816 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15745.0 + 20 +16480.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2817 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16375.0 + 20 +16480.0 + 30 +0.0 + 0 +TEXT + 5 +2818 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15972.5 + 20 +16567.5 + 30 +0.0 + 40 +175.0 + 1 +61 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16060.0 + 21 +16655.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2819 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15745.0 + 20 +15815.0 + 30 +0.0 + 0 +POINT + 5 +281A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16375.0 + 20 +15815.0 + 30 +0.0 + 0 +POINT + 5 +281B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16375.0 + 20 +16480.0 + 30 +0.0 + 0 +ENDBLK + 5 +281C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D133 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D133 + 1 + + 0 +LINE + 5 +281E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17386.0 + 20 +16480.0 + 30 +0.0 + 11 +17634.0 + 21 +16480.0 + 31 +0.0 + 0 +INSERT + 5 +281F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17385.0 + 20 +16480.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2820 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17635.0 + 20 +16480.0 + 30 +0.0 + 0 +TEXT + 5 +2821 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17400.625 + 20 +16567.5 + 30 +0.0 + 40 +175.0 + 1 +25 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +17510.0 + 21 +16655.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2822 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17385.0 + 20 +15975.0 + 30 +0.0 + 0 +POINT + 5 +2823 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17635.0 + 20 +16015.0 + 30 +0.0 + 0 +POINT + 5 +2824 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17635.0 + 20 +16480.0 + 30 +0.0 + 0 +ENDBLK + 5 +2825 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D134 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D134 + 1 + + 0 +LINE + 5 +2827 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16376.0 + 20 +16480.0 + 30 +0.0 + 11 +17384.0 + 21 +16480.0 + 31 +0.0 + 0 +INSERT + 5 +2828 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16375.0 + 20 +16480.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2829 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17385.0 + 20 +16480.0 + 30 +0.0 + 0 +TEXT + 5 +282A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16737.8125 + 20 +16567.5 + 30 +0.0 + 40 +175.0 + 1 +1.01 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16880.0 + 21 +16655.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +282B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16375.0 + 20 +15815.0 + 30 +0.0 + 0 +POINT + 5 +282C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17385.0 + 20 +15975.0 + 30 +0.0 + 0 +POINT + 5 +282D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17385.0 + 20 +16480.0 + 30 +0.0 + 0 +ENDBLK + 5 +282E + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D135 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D135 + 1 + + 0 +LINE + 5 +2830 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10725.0 + 20 +15741.0 + 30 +0.0 + 11 +10725.0 + 21 +16624.0 + 31 +0.0 + 0 +INSERT + 5 +2831 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10725.0 + 20 +15740.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2832 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10725.0 + 20 +16625.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2833 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10637.5 + 20 +15870.625 + 30 +0.0 + 40 +175.0 + 1 +88 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +10550.0 + 21 +15980.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2834 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10130.0 + 20 +15740.0 + 30 +0.0 + 0 +POINT + 5 +2835 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10115.0 + 20 +16625.0 + 30 +0.0 + 0 +POINT + 5 +2836 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10725.0 + 20 +16625.0 + 30 +0.0 + 0 +ENDBLK + 5 +2837 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D136 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D136 + 1 + + 0 +LINE + 5 +2839 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10106.0 + 20 +16480.0 + 30 +0.0 + 11 +15744.0 + 21 +16480.0 + 31 +0.0 + 0 +INSERT + 5 +283A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +10105.0 + 20 +16480.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +283B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15745.0 + 20 +16480.0 + 30 +0.0 + 0 +TEXT + 5 +283C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +12728.125 + 20 +16567.5 + 30 +0.0 + 40 +175.0 + 1 +5.63 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +12925.0 + 21 +16655.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +283D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +10105.0 + 20 +15495.0 + 30 +0.0 + 0 +POINT + 5 +283E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15745.0 + 20 +15495.0 + 30 +0.0 + 0 +POINT + 5 +283F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15745.0 + 20 +16480.0 + 30 +0.0 + 0 +ENDBLK + 5 +2840 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D137 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D137 + 1 + + 0 +LINE + 5 +2842 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18650.0 + 20 +21744.0 + 30 +0.0 + 11 +18650.0 + 21 +18981.0 + 31 +0.0 + 0 +INSERT + 5 +2843 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18650.0 + 20 +21745.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2844 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18650.0 + 20 +18980.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2845 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18562.5 + 20 +20165.625 + 30 +0.0 + 40 +175.0 + 1 +2.76 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +18475.0 + 21 +20362.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2846 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17990.0 + 20 +21745.0 + 30 +0.0 + 0 +POINT + 5 +2847 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17990.0 + 20 +18980.0 + 30 +0.0 + 0 +POINT + 5 +2848 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18650.0 + 20 +18980.0 + 30 +0.0 + 0 +ENDBLK + 5 +2849 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D138 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D138 + 1 + + 0 +LINE + 5 +284B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18650.0 + 20 +18979.0 + 30 +0.0 + 11 +18650.0 + 21 +17491.0 + 31 +0.0 + 0 +INSERT + 5 +284C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18650.0 + 20 +18980.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +284D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18650.0 + 20 +17490.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +284E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18562.5 + 20 +18060.0 + 30 +0.0 + 40 +175.0 + 1 +1.49 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +18475.0 + 21 +18235.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +284F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17990.0 + 20 +18980.0 + 30 +0.0 + 0 +POINT + 5 +2850 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17990.0 + 20 +17490.0 + 30 +0.0 + 0 +POINT + 5 +2851 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18650.0 + 20 +17490.0 + 30 +0.0 + 0 +ENDBLK + 5 +2852 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D139 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D139 + 1 + + 0 +LINE + 5 +2854 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15486.0 + 30 +0.0 + 11 +15005.0 + 21 +15994.0 + 31 +0.0 + 0 +INSERT + 5 +2855 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15005.0 + 20 +15485.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2856 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15005.0 + 20 +15995.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2857 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14917.5 + 20 +15641.5625 + 30 +0.0 + 40 +175.0 + 1 +50 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +14830.0 + 21 +15740.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2858 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15485.0 + 30 +0.0 + 0 +POINT + 5 +2859 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15995.0 + 30 +0.0 + 0 +POINT + 5 +285A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15995.0 + 30 +0.0 + 0 +ENDBLK + 5 +285B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D140 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D140 + 1 + + 0 +LINE + 5 +285D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15996.0 + 30 +0.0 + 11 +15005.0 + 21 +17249.0 + 31 +0.0 + 0 +INSERT + 5 +285E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15005.0 + 20 +15995.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +285F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15005.0 + 20 +17250.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2860 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14917.5 + 20 +16580.0 + 30 +0.0 + 40 +175.0 + 1 +1.26 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +14830.0 + 21 +16755.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2861 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15995.0 + 30 +0.0 + 0 +POINT + 5 +2862 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15010.0 + 20 +17250.0 + 30 +0.0 + 0 +POINT + 5 +2863 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +17250.0 + 30 +0.0 + 0 +ENDBLK + 5 +2864 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D141 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D141 + 1 + + 0 +LINE + 5 +2866 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +9611.0 + 30 +0.0 + 11 +8745.0 + 21 +12739.0 + 31 +0.0 + 0 +INSERT + 5 +2867 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +9610.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2868 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +12740.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2869 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8657.5 + 20 +11000.0 + 30 +0.0 + 40 +175.0 + 1 +3.12 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8570.0 + 21 +11175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +286A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9010.0 + 20 +9610.0 + 30 +0.0 + 0 +POINT + 5 +286B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9010.0 + 20 +12740.0 + 30 +0.0 + 0 +POINT + 5 +286C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +12740.0 + 30 +0.0 + 0 +ENDBLK + 5 +286D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D142 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D142 + 1 + + 0 +LINE + 5 +286F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +12741.0 + 30 +0.0 + 11 +8745.0 + 21 +12994.0 + 31 +0.0 + 0 +INSERT + 5 +2870 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +12740.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2871 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +12995.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2872 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8657.5 + 20 +12758.125 + 30 +0.0 + 40 +175.0 + 1 +25 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8570.0 + 21 +12867.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2873 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9010.0 + 20 +12740.0 + 30 +0.0 + 0 +POINT + 5 +2874 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9745.0 + 20 +12995.0 + 30 +0.0 + 0 +POINT + 5 +2875 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +12995.0 + 30 +0.0 + 0 +ENDBLK + 5 +2876 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D143 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D143 + 1 + + 0 +LINE + 5 +2878 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +12996.0 + 30 +0.0 + 11 +8745.0 + 21 +13874.0 + 31 +0.0 + 0 +INSERT + 5 +2879 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +12995.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +287A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +13875.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +287B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8657.5 + 20 +13325.625 + 30 +0.0 + 40 +175.0 + 1 +88 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8570.0 + 21 +13435.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +287C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9745.0 + 20 +12995.0 + 30 +0.0 + 0 +POINT + 5 +287D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9755.0 + 20 +13875.0 + 30 +0.0 + 0 +POINT + 5 +287E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +13875.0 + 30 +0.0 + 0 +ENDBLK + 5 +287F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D144 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D144 + 1 + + 0 +LINE + 5 +2881 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +13876.0 + 30 +0.0 + 11 +8745.0 + 21 +14129.0 + 31 +0.0 + 0 +INSERT + 5 +2882 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +13875.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2883 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8745.0 + 20 +14130.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2884 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8657.5 + 20 +13893.125 + 30 +0.0 + 40 +175.0 + 1 +25 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8570.0 + 21 +14002.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2885 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9755.0 + 20 +13875.0 + 30 +0.0 + 0 +POINT + 5 +2886 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9735.0 + 20 +14130.0 + 30 +0.0 + 0 +POINT + 5 +2887 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8745.0 + 20 +14130.0 + 30 +0.0 + 0 +ENDBLK + 5 +2888 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D145 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D145 + 1 + + 0 +LINE + 5 +288A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9371.0 + 20 +13450.0 + 30 +0.0 + 11 +9744.0 + 21 +13450.0 + 31 +0.0 + 0 +INSERT + 5 +288B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9370.0 + 20 +13450.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +288C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9745.0 + 20 +13450.0 + 30 +0.0 + 0 +TEXT + 5 +288D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9448.125 + 20 +13537.5 + 30 +0.0 + 40 +175.0 + 1 +37 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +9557.5 + 21 +13625.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +288E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9370.0 + 20 +12745.0 + 30 +0.0 + 0 +POINT + 5 +288F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9745.0 + 20 +12745.0 + 30 +0.0 + 0 +POINT + 5 +2890 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9745.0 + 20 +13450.0 + 30 +0.0 + 0 +ENDBLK + 5 +2891 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D146 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D146 + 1 + + 0 +LINE + 5 +2893 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +12616.0 + 20 +11975.0 + 30 +0.0 + 11 +13247.5 + 21 +11975.0 + 31 +0.0 + 0 +LINE + 5 +2894 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13879.0 + 20 +11975.0 + 30 +0.0 + 11 +13247.5 + 21 +11975.0 + 31 +0.0 + 0 +INSERT + 5 +2895 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +12615.0 + 20 +11975.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2896 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13880.0 + 20 +11975.0 + 30 +0.0 + 0 +TEXT + 5 +2897 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +12850.0 + 20 +12062.5 + 30 +0.0 + 40 +175.0 + 1 +1.26 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13025.0 + 21 +12150.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2898 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +12615.0 + 20 +12370.0 + 30 +0.0 + 0 +POINT + 5 +2899 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13880.0 + 20 +11955.0 + 30 +0.0 + 0 +POINT + 5 +289A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13880.0 + 20 +11975.0 + 30 +0.0 + 0 +ENDBLK + 5 +289B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D147 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D147 + 1 + + 0 +LINE + 5 +289D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +9611.0 + 30 +0.0 + 11 +13590.0 + 21 +12374.0 + 31 +0.0 + 0 +INSERT + 5 +289E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +9610.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +289F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +12375.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +28A0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13502.5 + 20 +10795.625 + 30 +0.0 + 40 +175.0 + 1 +2.76 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13415.0 + 21 +10992.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28A1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13775.0 + 20 +9610.0 + 30 +0.0 + 0 +POINT + 5 +28A2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13775.0 + 20 +12375.0 + 30 +0.0 + 0 +POINT + 5 +28A3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +12375.0 + 30 +0.0 + 0 +ENDBLK + 5 +28A4 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D148 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D148 + 1 + + 0 +LINE + 5 +28A6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +12376.0 + 30 +0.0 + 11 +13590.0 + 21 +12744.0 + 31 +0.0 + 0 +INSERT + 5 +28A7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +12375.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +28A8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +12745.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +28A9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13502.5 + 20 +12450.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13415.0 + 21 +12560.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28AA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13775.0 + 20 +12375.0 + 30 +0.0 + 0 +POINT + 5 +28AB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13875.0 + 20 +12745.0 + 30 +0.0 + 0 +POINT + 5 +28AC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +12745.0 + 30 +0.0 + 0 +ENDBLK + 5 +28AD + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D149 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D149 + 1 + + 0 +LINE + 5 +28AF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +12746.0 + 30 +0.0 + 11 +13590.0 + 21 +13499.0 + 31 +0.0 + 0 +INSERT + 5 +28B0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +12745.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +28B1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +13500.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +28B2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13502.5 + 20 +13013.125 + 30 +0.0 + 40 +175.0 + 1 +76 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13415.0 + 21 +13122.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28B3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13880.0 + 20 +12745.0 + 30 +0.0 + 0 +POINT + 5 +28B4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13880.0 + 20 +13500.0 + 30 +0.0 + 0 +POINT + 5 +28B5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +13500.0 + 30 +0.0 + 0 +ENDBLK + 5 +28B6 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D150 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D150 + 1 + + 0 +LINE + 5 +28B8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +13501.0 + 30 +0.0 + 11 +13590.0 + 21 +13869.0 + 31 +0.0 + 0 +INSERT + 5 +28B9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +13500.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +28BA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13590.0 + 20 +13870.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +28BB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13502.5 + 20 +13575.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13415.0 + 21 +13685.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28BC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13880.0 + 20 +13500.0 + 30 +0.0 + 0 +POINT + 5 +28BD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14125.0 + 20 +13870.0 + 30 +0.0 + 0 +POINT + 5 +28BE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13590.0 + 20 +13870.0 + 30 +0.0 + 0 +ENDBLK + 5 +28BF + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D151 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D151 + 1 + + 0 +LINE + 5 +28C1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14484.0 + 20 +11975.0 + 30 +0.0 + 11 +14483.0 + 21 +11975.0 + 31 +0.0 + 0 +LINE + 5 +28C2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14621.0 + 20 +11975.0 + 30 +0.0 + 11 +14622.0 + 21 +11975.0 + 31 +0.0 + 0 +LINE + 5 +28C3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14622.0 + 20 +11975.0 + 30 +0.0 + 11 +14797.0 + 21 +11975.0 + 31 +0.0 + 0 +INSERT + 5 +28C4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14485.0 + 20 +11975.0 + 30 +0.0 + 0 +INSERT + 5 +28C5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14620.0 + 20 +11975.0 + 30 +0.0 + 50 +180.0 + 0 +TEXT + 5 +28C6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14622.0 + 20 +12062.5 + 30 +0.0 + 40 +175.0 + 1 +12 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +14709.5 + 21 +12150.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28C7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14485.0 + 20 +13495.0 + 30 +0.0 + 0 +POINT + 5 +28C8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14620.0 + 20 +13495.0 + 30 +0.0 + 0 +POINT + 5 +28C9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14620.0 + 20 +11975.0 + 30 +0.0 + 0 +ENDBLK + 5 +28CA + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D152 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D152 + 1 + + 0 +LINE + 5 +28CC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15506.0 + 20 +11975.0 + 30 +0.0 + 11 +17619.0 + 21 +11975.0 + 31 +0.0 + 0 +INSERT + 5 +28CD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15505.0 + 20 +11975.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +28CE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17620.0 + 20 +11975.0 + 30 +0.0 + 0 +TEXT + 5 +28CF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16387.5 + 20 +12062.5 + 30 +0.0 + 40 +175.0 + 1 +2.12 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16562.5 + 21 +12150.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28D0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15505.0 + 20 +11975.0 + 30 +0.0 + 0 +POINT + 5 +28D1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17620.0 + 20 +11975.0 + 30 +0.0 + 0 +POINT + 5 +28D2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17620.0 + 20 +11975.0 + 30 +0.0 + 0 +ENDBLK + 5 +28D3 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D153 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D153 + 1 + + 0 +LINE + 5 +28D5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16955.0 + 20 +9626.0 + 30 +0.0 + 11 +16955.0 + 21 +13499.0 + 31 +0.0 + 0 +INSERT + 5 +28D6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16955.0 + 20 +9625.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +28D7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16955.0 + 20 +13500.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +28D8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16867.5 + 20 +10923.125 + 30 +0.0 + 40 +175.0 + 1 +3.88 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16780.0 + 21 +11120.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28D9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17360.0 + 20 +9625.0 + 30 +0.0 + 0 +POINT + 5 +28DA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17360.0 + 20 +13500.0 + 30 +0.0 + 0 +POINT + 5 +28DB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16955.0 + 20 +13500.0 + 30 +0.0 + 0 +ENDBLK + 5 +28DC + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D154 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D154 + 1 + + 0 +LINE + 5 +28DE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +15634.0 + 30 +0.0 + 11 +16850.0 + 21 +15491.0 + 31 +0.0 + 0 +INSERT + 5 +28DF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +15635.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +28E0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +15490.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +28E1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16762.5 + 20 +15667.5 + 30 +0.0 + 40 +175.0 + 1 +13 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16675.0 + 21 +15755.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28E2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16120.0 + 20 +15635.0 + 30 +0.0 + 0 +POINT + 5 +28E3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16120.0 + 20 +15490.0 + 30 +0.0 + 0 +POINT + 5 +28E4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +15490.0 + 30 +0.0 + 0 +ENDBLK + 5 +28E5 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D155 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D155 + 1 + + 0 +LINE + 5 +28E7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +13974.0 + 30 +0.0 + 11 +16850.0 + 21 +13866.0 + 31 +0.0 + 0 +INSERT + 5 +28E8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +13975.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +28E9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +13865.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +28EA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16762.5 + 20 +14012.5 + 30 +0.0 + 40 +175.0 + 1 +12 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16675.0 + 21 +14100.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28EB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16125.0 + 20 +13975.0 + 30 +0.0 + 0 +POINT + 5 +28EC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16120.0 + 20 +13865.0 + 30 +0.0 + 0 +POINT + 5 +28ED + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +13865.0 + 30 +0.0 + 0 +ENDBLK + 5 +28EE + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D156 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D156 + 1 + + 0 +LINE + 5 +28F0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15746.0 + 20 +14495.0 + 30 +0.0 + 11 +16104.0 + 21 +14495.0 + 31 +0.0 + 0 +INSERT + 5 +28F1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15745.0 + 20 +14495.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +28F2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16105.0 + 20 +14495.0 + 30 +0.0 + 0 +TEXT + 5 +28F3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15815.625 + 20 +14582.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +15925.0 + 21 +14670.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28F4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15745.0 + 20 +13980.0 + 30 +0.0 + 0 +POINT + 5 +28F5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16105.0 + 20 +13980.0 + 30 +0.0 + 0 +POINT + 5 +28F6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16105.0 + 20 +14495.0 + 30 +0.0 + 0 +ENDBLK + 5 +28F7 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D157 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D157 + 1 + + 0 +LINE + 5 +28F9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +13914.0 + 30 +0.0 + 11 +21880.0 + 21 +9626.0 + 31 +0.0 + 0 +INSERT + 5 +28FA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +13915.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +28FB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +9625.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +28FC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21792.5 + 20 +11584.0625 + 30 +0.0 + 40 +175.0 + 1 +4.30 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21705.0 + 21 +11770.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +28FD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21565.0 + 20 +13915.0 + 30 +0.0 + 0 +POINT + 5 +28FE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21855.0 + 20 +9625.0 + 30 +0.0 + 0 +POINT + 5 +28FF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +9625.0 + 30 +0.0 + 0 +ENDBLK + 5 +2900 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D158 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D158 + 1 + + 0 +LINE + 5 +2902 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +14044.0 + 30 +0.0 + 11 +21880.0 + 21 +13916.0 + 31 +0.0 + 0 +INSERT + 5 +2903 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +14045.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2904 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +13915.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2905 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21792.5 + 20 +13627.5 + 30 +0.0 + 40 +175.0 + 1 +12 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21705.0 + 21 +13715.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2906 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21560.0 + 20 +14045.0 + 30 +0.0 + 0 +POINT + 5 +2907 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21565.0 + 20 +13915.0 + 30 +0.0 + 0 +POINT + 5 +2908 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +13915.0 + 30 +0.0 + 0 +ENDBLK + 5 +2909 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D159 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D159 + 1 + + 0 +LINE + 5 +290B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +15249.0 + 30 +0.0 + 11 +21880.0 + 21 +14246.0 + 31 +0.0 + 0 +INSERT + 5 +290C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +15250.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +290D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +14245.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +290E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21792.5 + 20 +14772.8125 + 30 +0.0 + 40 +175.0 + 1 +1.01 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21705.0 + 21 +14915.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +290F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21235.0 + 20 +15250.0 + 30 +0.0 + 0 +POINT + 5 +2910 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21225.0 + 20 +14245.0 + 30 +0.0 + 0 +POINT + 5 +2911 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +14245.0 + 30 +0.0 + 0 +ENDBLK + 5 +2912 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D160 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D160 + 1 + + 0 +LINE + 5 +2914 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +14244.0 + 30 +0.0 + 11 +21880.0 + 21 +14046.0 + 31 +0.0 + 0 +INSERT + 5 +2915 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +14245.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2916 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +14045.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2917 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21792.5 + 20 +14291.5625 + 30 +0.0 + 40 +175.0 + 1 +20 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21705.0 + 21 +14390.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2918 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21225.0 + 20 +14245.0 + 30 +0.0 + 0 +POINT + 5 +2919 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21560.0 + 20 +14045.0 + 30 +0.0 + 0 +POINT + 5 +291A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +14045.0 + 30 +0.0 + 0 +ENDBLK + 5 +291B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D161 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D161 + 1 + + 0 +LINE + 5 +291D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +15634.0 + 30 +0.0 + 11 +21880.0 + 21 +15251.0 + 31 +0.0 + 0 +INSERT + 5 +291E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +15635.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +291F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21880.0 + 20 +15250.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2920 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21792.5 + 20 +15280.625 + 30 +0.0 + 40 +175.0 + 1 +37 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21705.0 + 21 +15390.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2921 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21235.0 + 20 +15635.0 + 30 +0.0 + 0 +POINT + 5 +2922 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21235.0 + 20 +15250.0 + 30 +0.0 + 0 +POINT + 5 +2923 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21880.0 + 20 +15250.0 + 30 +0.0 + 0 +ENDBLK + 5 +2924 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D162 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D162 + 1 + + 0 +LINE + 5 +2926 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22456.0 + 20 +12880.0 + 30 +0.0 + 11 +22849.0 + 21 +12880.0 + 31 +0.0 + 0 +INSERT + 5 +2927 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22455.0 + 20 +12880.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2928 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22850.0 + 20 +12880.0 + 30 +0.0 + 0 +TEXT + 5 +2929 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22554.0625 + 20 +12967.5 + 30 +0.0 + 40 +175.0 + 1 +40 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +22652.5 + 21 +13055.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +292A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22455.0 + 20 +13925.0 + 30 +0.0 + 0 +POINT + 5 +292B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22850.0 + 20 +12875.0 + 30 +0.0 + 0 +POINT + 5 +292C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22850.0 + 20 +12880.0 + 30 +0.0 + 0 +ENDBLK + 5 +292D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D163 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D163 + 1 + + 0 +LINE + 5 +292F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21566.0 + 20 +12880.0 + 30 +0.0 + 11 +22454.0 + 21 +12880.0 + 31 +0.0 + 0 +INSERT + 5 +2930 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21565.0 + 20 +12880.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2931 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22455.0 + 20 +12880.0 + 30 +0.0 + 0 +TEXT + 5 +2932 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22030.625 + 20 +12967.5 + 30 +0.0 + 40 +175.0 + 1 +88 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +22140.0 + 21 +13055.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2933 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21565.0 + 20 +13920.0 + 30 +0.0 + 0 +POINT + 5 +2934 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22455.0 + 20 +13925.0 + 30 +0.0 + 0 +POINT + 5 +2935 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22455.0 + 20 +12880.0 + 30 +0.0 + 0 +ENDBLK + 5 +2936 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D164 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D164 + 1 + + 0 +LINE + 5 +2938 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21236.0 + 20 +12880.0 + 30 +0.0 + 11 +21564.0 + 21 +12880.0 + 31 +0.0 + 0 +INSERT + 5 +2939 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21235.0 + 20 +12880.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +293A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21565.0 + 20 +12880.0 + 30 +0.0 + 0 +TEXT + 5 +293B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21270.625 + 20 +12967.5 + 30 +0.0 + 40 +175.0 + 1 +32 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21380.0 + 21 +13055.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +293C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21235.0 + 20 +13920.0 + 30 +0.0 + 0 +POINT + 5 +293D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21565.0 + 20 +13920.0 + 30 +0.0 + 0 +POINT + 5 +293E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21565.0 + 20 +12880.0 + 30 +0.0 + 0 +ENDBLK + 5 +293F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D165 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D165 + 1 + + 0 +LINE + 5 +2941 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14621.0 + 20 +11975.0 + 30 +0.0 + 11 +15062.5 + 21 +11975.0 + 31 +0.0 + 0 +LINE + 5 +2942 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15504.0 + 20 +11975.0 + 30 +0.0 + 11 +15062.5 + 21 +11975.0 + 31 +0.0 + 0 +INSERT + 5 +2943 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14620.0 + 20 +11975.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2944 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15505.0 + 20 +11975.0 + 30 +0.0 + 0 +TEXT + 5 +2945 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15030.625 + 20 +12062.5 + 30 +0.0 + 40 +175.0 + 1 +88 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +15140.0 + 21 +12150.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2946 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14620.0 + 20 +13495.0 + 30 +0.0 + 0 +POINT + 5 +2947 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15505.0 + 20 +11975.0 + 30 +0.0 + 0 +POINT + 5 +2948 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15505.0 + 20 +11975.0 + 30 +0.0 + 0 +ENDBLK + 5 +2949 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D166 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D166 + 1 + + 0 +LINE + 5 +294B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +15119.0 + 30 +0.0 + 11 +16850.0 + 21 +14996.0 + 31 +0.0 + 0 +INSERT + 5 +294C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +15120.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +294D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +14995.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +294E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16762.5 + 20 +15147.5 + 30 +0.0 + 40 +175.0 + 1 +12 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16675.0 + 21 +15235.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +294F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15740.0 + 20 +15120.0 + 30 +0.0 + 0 +POINT + 5 +2950 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16110.0 + 20 +14995.0 + 30 +0.0 + 0 +POINT + 5 +2951 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +14995.0 + 30 +0.0 + 0 +ENDBLK + 5 +2952 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D167 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D167 + 1 + + 0 +LINE + 5 +2954 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +14994.0 + 30 +0.0 + 11 +16850.0 + 21 +13976.0 + 31 +0.0 + 0 +INSERT + 5 +2955 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +14995.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2956 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16850.0 + 20 +13975.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2957 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16762.5 + 20 +14452.8125 + 30 +0.0 + 40 +175.0 + 1 +1.01 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16675.0 + 21 +14595.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2958 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16110.0 + 20 +14995.0 + 30 +0.0 + 0 +POINT + 5 +2959 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16125.0 + 20 +13975.0 + 30 +0.0 + 0 +POINT + 5 +295A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16850.0 + 20 +13975.0 + 30 +0.0 + 0 +ENDBLK + 5 +295B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D168 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D168 + 1 + + 0 +LINE + 5 +295D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15484.0 + 30 +0.0 + 11 +15005.0 + 21 +15116.0 + 31 +0.0 + 0 +INSERT + 5 +295E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15005.0 + 20 +15485.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +295F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +15005.0 + 20 +15115.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2960 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14902.5 + 20 +14765.625 + 30 +0.0 + 40 +175.0 + 1 +36 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +14815.0 + 21 +14875.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2961 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15485.0 + 30 +0.0 + 0 +POINT + 5 +2962 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15115.0 + 30 +0.0 + 0 +POINT + 5 +2963 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +15005.0 + 20 +15115.0 + 30 +0.0 + 0 +ENDBLK + 5 +2964 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D169 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D169 + 1 + + 0 +LINE + 5 +2966 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5001.0 + 20 +6000.0 + 30 +0.0 + 11 +7734.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +2967 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5000.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2968 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +7735.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +2969 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +6170.625 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +2.74 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +6367.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +296A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +296B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7735.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +296C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7735.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +296D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D170 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D170 + 1 + + 0 +LINE + 5 +296F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7736.0 + 20 +6000.0 + 30 +0.0 + 11 +8749.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +2970 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +7735.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2971 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8750.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +2972 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8100.3125 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.01 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +8242.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2973 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +7735.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +2974 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8750.0 + 20 +9275.0 + 30 +0.0 + 0 +POINT + 5 +2975 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8750.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +2976 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D171 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D171 + 1 + + 0 +LINE + 5 +2978 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +8751.0 + 20 +6000.0 + 30 +0.0 + 11 +9864.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +2979 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8750.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +297A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9865.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +297B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9176.25 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.11 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +9307.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +297C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8750.0 + 20 +9275.0 + 30 +0.0 + 0 +POINT + 5 +297D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9865.0 + 20 +9460.0 + 30 +0.0 + 0 +POINT + 5 +297E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9865.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +297F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D172 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D172 + 1 + + 0 +LINE + 5 +2981 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9866.0 + 20 +6000.0 + 30 +0.0 + 11 +11239.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +2982 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9865.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2983 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +11240.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +2984 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +10377.5 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.38 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +10552.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2985 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9865.0 + 20 +9460.0 + 30 +0.0 + 0 +POINT + 5 +2986 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +11240.0 + 20 +9435.0 + 30 +0.0 + 0 +POINT + 5 +2987 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +11240.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +2988 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D173 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D173 + 1 + + 0 +LINE + 5 +298A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +11241.0 + 20 +6000.0 + 30 +0.0 + 11 +16109.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +298B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +11240.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +298C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16110.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +298D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13478.125 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +4.86 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +13675.0 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +298E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +11240.0 + 20 +9435.0 + 30 +0.0 + 0 +POINT + 5 +298F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16110.0 + 20 +9380.0 + 30 +0.0 + 0 +POINT + 5 +2990 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16110.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +2991 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D174 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D174 + 1 + + 0 +LINE + 5 +2993 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16111.0 + 20 +6000.0 + 30 +0.0 + 11 +17369.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +2994 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +16110.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2995 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17370.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +2996 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +16565.0 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.26 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16740.0 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2997 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +16110.0 + 20 +9380.0 + 30 +0.0 + 0 +POINT + 5 +2998 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17370.0 + 20 +9460.0 + 30 +0.0 + 0 +POINT + 5 +2999 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17370.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +299A + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D175 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D175 + 1 + + 0 +LINE + 5 +299C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17371.0 + 20 +6000.0 + 30 +0.0 + 11 +18494.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +299D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17370.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +299E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18495.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +299F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17801.25 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.11 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +17932.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29A0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17370.0 + 20 +9460.0 + 30 +0.0 + 0 +POINT + 5 +29A1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18495.0 + 20 +9420.0 + 30 +0.0 + 0 +POINT + 5 +29A2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18495.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +29A3 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D176 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D176 + 1 + + 0 +LINE + 5 +29A5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18496.0 + 20 +6000.0 + 30 +0.0 + 11 +20369.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +29A6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18495.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29A7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +20370.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +29A8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +19257.5 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.88 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +19432.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29A9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18495.0 + 20 +9420.0 + 30 +0.0 + 0 +POINT + 5 +29AA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +20370.0 + 20 +9390.0 + 30 +0.0 + 0 +POINT + 5 +29AB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +20370.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +29AC + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D177 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D177 + 1 + + 0 +LINE + 5 +29AE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +20371.0 + 20 +6000.0 + 30 +0.0 + 11 +21369.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +29AF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +20370.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29B0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21370.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +29B1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +20760.625 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +99 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +20870.0 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29B2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +20370.0 + 20 +9390.0 + 30 +0.0 + 0 +POINT + 5 +29B3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21370.0 + 20 +9355.0 + 30 +0.0 + 0 +POINT + 5 +29B4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21370.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +29B5 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D178 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D178 + 1 + + 0 +LINE + 5 +29B7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21371.0 + 20 +6000.0 + 30 +0.0 + 11 +21869.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +29B8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21370.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29B9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21870.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +29BA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21532.5 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +51 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21620.0 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29BB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21370.0 + 20 +9355.0 + 30 +0.0 + 0 +POINT + 5 +29BC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21870.0 + 20 +9360.0 + 30 +0.0 + 0 +POINT + 5 +29BD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21870.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +29BE + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D179 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D179 + 1 + + 0 +LINE + 5 +29C0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21871.0 + 20 +6000.0 + 30 +0.0 + 11 +23239.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +29C1 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21870.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29C2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +23240.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +29C3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22380.0 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +22555.0 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29C4 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21870.0 + 20 +9360.0 + 30 +0.0 + 0 +POINT + 5 +29C5 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23240.0 + 20 +9370.0 + 30 +0.0 + 0 +POINT + 5 +29C6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23240.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +29C7 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D180 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D180 + 1 + + 0 +LINE + 5 +29C9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +23241.0 + 20 +6000.0 + 30 +0.0 + 11 +25374.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +29CA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +23240.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29CB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +25375.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +29CC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24132.5 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +2.13 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24307.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29CD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23240.0 + 20 +9370.0 + 30 +0.0 + 0 +POINT + 5 +29CE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +25375.0 + 20 +9440.0 + 30 +0.0 + 0 +POINT + 5 +29CF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +25375.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +29D0 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D181 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D181 + 1 + + 0 +LINE + 5 +29D2 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +25376.0 + 20 +6000.0 + 30 +0.0 + 11 +26739.0 + 21 +6000.0 + 31 +0.0 + 0 +INSERT + 5 +29D3 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +25375.0 + 20 +6000.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29D4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26740.0 + 20 +6000.0 + 30 +0.0 + 0 +TEXT + 5 +29D5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +25882.5 + 20 +6087.5 + 30 +0.0 + 40 +175.0 + 1 +1.36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +26057.5 + 21 +6175.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29D6 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +25375.0 + 20 +9440.0 + 30 +0.0 + 0 +POINT + 5 +29D7 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +9330.0 + 30 +0.0 + 0 +POINT + 5 +29D8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +6000.0 + 30 +0.0 + 0 +ENDBLK + 5 +29D9 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D182 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D182 + 1 + + 0 +LINE + 5 +29DB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5001.0 + 20 +5300.0 + 30 +0.0 + 11 +5364.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +29DC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5000.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29DD + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5365.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +29DE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5073.125 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +5182.5 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29DF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +29E0 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +29E1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +29E2 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D183 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D183 + 1 + + 0 +LINE + 5 +29E4 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5366.0 + 20 +5300.0 + 30 +0.0 + 11 +9374.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +29E5 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5365.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29E6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9375.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +29E7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7205.9375 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +4.01 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +7370.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29E8 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5365.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +29E9 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9375.0 + 20 +9645.0 + 30 +0.0 + 0 +POINT + 5 +29EA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9375.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +29EB + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D184 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D184 + 1 + + 0 +LINE + 5 +29ED + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9751.0 + 20 +5300.0 + 30 +0.0 + 11 +14124.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +29EE + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9750.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29EF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14125.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +29F0 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +11740.625 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +4.38 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +11937.5 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29F1 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +9635.0 + 30 +0.0 + 0 +POINT + 5 +29F2 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14125.0 + 20 +9650.0 + 30 +0.0 + 0 +POINT + 5 +29F3 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14125.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +29F4 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D185 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D185 + 1 + + 0 +LINE + 5 +29F6 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14126.0 + 20 +5300.0 + 30 +0.0 + 11 +14499.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +29F7 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14125.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29F8 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14500.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +29F9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14203.125 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +14312.5 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +29FA + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14125.0 + 20 +9650.0 + 30 +0.0 + 0 +POINT + 5 +29FB + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14500.0 + 20 +9660.0 + 30 +0.0 + 0 +POINT + 5 +29FC + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14500.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +29FD + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D186 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D186 + 1 + + 0 +LINE + 5 +29FF + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14501.0 + 20 +5300.0 + 30 +0.0 + 11 +17629.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A00 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14500.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A01 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17630.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A02 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +15890.0 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +3.13 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +16065.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A03 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14500.0 + 20 +9660.0 + 30 +0.0 + 0 +POINT + 5 +2A04 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17630.0 + 20 +9660.0 + 30 +0.0 + 0 +POINT + 5 +2A05 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17630.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A06 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D187 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D187 + 1 + + 0 +LINE + 5 +2A08 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17631.0 + 20 +5300.0 + 30 +0.0 + 11 +17999.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A09 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +17630.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A0A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18000.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A0B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +17705.625 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +17815.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A0C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +17630.0 + 20 +9660.0 + 30 +0.0 + 0 +POINT + 5 +2A0D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18000.0 + 20 +9630.0 + 30 +0.0 + 0 +POINT + 5 +2A0E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18000.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A0F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D188 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D188 + 1 + + 0 +LINE + 5 +2A11 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18001.0 + 20 +5300.0 + 30 +0.0 + 11 +20869.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A12 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18000.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A13 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +20870.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A14 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +19238.125 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +2.88 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +19435.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A15 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18000.0 + 20 +9630.0 + 30 +0.0 + 0 +POINT + 5 +2A16 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +20870.0 + 20 +9630.0 + 30 +0.0 + 0 +POINT + 5 +2A17 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +20870.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A18 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D189 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D189 + 1 + + 0 +LINE + 5 +2A1A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +20871.0 + 20 +5300.0 + 30 +0.0 + 11 +21239.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A1B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +20870.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A1C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21240.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A1D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +20945.625 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +21055.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A1E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +20870.0 + 20 +9630.0 + 30 +0.0 + 0 +POINT + 5 +2A1F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21240.0 + 20 +9660.0 + 30 +0.0 + 0 +POINT + 5 +2A20 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21240.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A21 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D190 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D190 + 1 + + 0 +LINE + 5 +2A23 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21241.0 + 20 +5300.0 + 30 +0.0 + 11 +22849.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A24 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +21240.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A25 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22850.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A26 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +21891.875 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +1.61 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +22045.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A27 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +21240.0 + 20 +9660.0 + 30 +0.0 + 0 +POINT + 5 +2A28 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22850.0 + 20 +9645.0 + 30 +0.0 + 0 +POINT + 5 +2A29 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22850.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A2A + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D191 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D191 + 1 + + 0 +LINE + 5 +2A2C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22976.0 + 20 +5300.0 + 30 +0.0 + 11 +26374.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A2D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22975.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A2E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26375.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A2F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24489.0625 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +3.40 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24675.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A30 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22975.0 + 20 +9650.0 + 30 +0.0 + 0 +POINT + 5 +2A31 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26375.0 + 20 +9670.0 + 30 +0.0 + 0 +POINT + 5 +2A32 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26375.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A33 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D192 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D192 + 1 + + 0 +LINE + 5 +2A35 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +26376.0 + 20 +5300.0 + 30 +0.0 + 11 +26739.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A36 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26375.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A37 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26740.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A38 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +26448.125 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +26557.5 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A39 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26375.0 + 20 +9670.0 + 30 +0.0 + 0 +POINT + 5 +2A3A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +9690.0 + 30 +0.0 + 0 +POINT + 5 +2A3B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26740.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A3C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D193 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D193 + 1 + + 0 +LINE + 5 +2A3E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +22851.0 + 20 +5300.0 + 30 +0.0 + 11 +22974.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A3F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22850.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A40 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +22975.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A41 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +23007.5 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +12 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +23095.0 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A42 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22850.0 + 20 +9645.0 + 30 +0.0 + 0 +POINT + 5 +2A43 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22975.0 + 20 +9650.0 + 30 +0.0 + 0 +POINT + 5 +2A44 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +22975.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A45 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D194 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D194 + 1 + + 0 +LINE + 5 +2A47 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9376.0 + 20 +5300.0 + 30 +0.0 + 11 +9749.0 + 21 +5300.0 + 31 +0.0 + 0 +INSERT + 5 +2A48 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9375.0 + 20 +5300.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A49 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +9750.0 + 20 +5300.0 + 30 +0.0 + 0 +TEXT + 5 +2A4A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +9453.125 + 20 +5387.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +9562.5 + 21 +5475.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A4B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9375.0 + 20 +9645.0 + 30 +0.0 + 0 +POINT + 5 +2A4C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +9635.0 + 30 +0.0 + 0 +POINT + 5 +2A4D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +9750.0 + 20 +5300.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A4E + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D195 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D195 + 1 + + 0 +LINE + 5 +2A50 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5856.0 + 20 +8070.0 + 30 +0.0 + 11 +8854.0 + 21 +8070.0 + 31 +0.0 + 0 +INSERT + 5 +2A51 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5855.0 + 20 +8070.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A52 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +8855.0 + 20 +8070.0 + 30 +0.0 + 0 +TEXT + 5 +2A53 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +7455.0 + 20 +8157.5 + 30 +0.0 + 40 +175.0 + 1 +3.00 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +7630.0 + 21 +8245.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A54 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5855.0 + 20 +9300.0 + 30 +0.0 + 0 +POINT + 5 +2A55 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8855.0 + 20 +8125.0 + 30 +0.0 + 0 +POINT + 5 +2A56 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +8855.0 + 20 +8070.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A57 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D196 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D196 + 1 + + 0 +LINE + 5 +2A59 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +4991.0 + 20 +8070.0 + 30 +0.0 + 11 +5854.0 + 21 +8070.0 + 31 +0.0 + 0 +INSERT + 5 +2A5A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +4990.0 + 20 +8070.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A5B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +5855.0 + 20 +8070.0 + 30 +0.0 + 0 +TEXT + 5 +2A5C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +5165.625 + 20 +8157.5 + 30 +0.0 + 40 +175.0 + 1 +85 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +5275.0 + 21 +8245.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A5D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +4990.0 + 20 +9300.0 + 30 +0.0 + 0 +POINT + 5 +2A5E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5855.0 + 20 +9300.0 + 30 +0.0 + 0 +POINT + 5 +2A5F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5855.0 + 20 +8070.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A60 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D197 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D197 + 1 + + 0 +LINE + 5 +2A62 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +9249.0 + 30 +0.0 + 11 +2800.0 + 21 +7646.0 + 31 +0.0 + 0 +INSERT + 5 +2A63 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +9250.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A64 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +2800.0 + 20 +7645.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2A65 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +2712.5 + 20 +8283.4375 + 30 +0.0 + 40 +175.0 + 1 +1.60 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +2625.0 + 21 +8447.5 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A66 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +2A67 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +5000.0 + 20 +7645.0 + 30 +0.0 + 0 +POINT + 5 +2A68 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +2800.0 + 20 +7645.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A69 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D198 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D198 + 1 + + 0 +LINE + 5 +2A6B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +26046.0 + 20 +8105.0 + 30 +0.0 + 11 +26744.0 + 21 +8105.0 + 31 +0.0 + 0 +INSERT + 5 +2A6C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26045.0 + 20 +8105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A6D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26745.0 + 20 +8105.0 + 30 +0.0 + 0 +TEXT + 5 +2A6E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +26296.5625 + 20 +8192.5 + 30 +0.0 + 40 +175.0 + 1 +70 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +26395.0 + 21 +8280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A6F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26045.0 + 20 +8095.0 + 30 +0.0 + 0 +POINT + 5 +2A70 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26745.0 + 20 +9300.0 + 30 +0.0 + 0 +POINT + 5 +2A71 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26745.0 + 20 +8105.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A72 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D199 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D199 + 1 + + 0 +LINE + 5 +2A74 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +23031.0 + 20 +8105.0 + 30 +0.0 + 11 +26044.0 + 21 +8105.0 + 31 +0.0 + 0 +INSERT + 5 +2A75 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +23030.0 + 20 +8105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A76 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +26045.0 + 20 +8105.0 + 30 +0.0 + 0 +TEXT + 5 +2A77 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +24670.0 + 20 +8192.5 + 30 +0.0 + 40 +175.0 + 1 +3.00 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +24845.0 + 21 +8280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A78 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +23030.0 + 20 +8095.0 + 30 +0.0 + 0 +POINT + 5 +2A79 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26045.0 + 20 +8095.0 + 30 +0.0 + 0 +POINT + 5 +2A7A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26045.0 + 20 +8105.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A7B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D200 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D200 + 1 + + 0 +LINE + 5 +2A7D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +9254.0 + 30 +0.0 + 11 +28940.0 + 21 +7646.0 + 31 +0.0 + 0 +INSERT + 5 +2A7E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +9255.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A7F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +28940.0 + 20 +7645.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2A80 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +28852.5 + 20 +8285.9375 + 30 +0.0 + 40 +175.0 + 1 +1.60 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +28765.0 + 21 +8450.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A81 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26040.0 + 20 +9255.0 + 30 +0.0 + 0 +POINT + 5 +2A82 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +26040.0 + 20 +7645.0 + 30 +0.0 + 0 +POINT + 5 +2A83 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +28940.0 + 20 +7645.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A84 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D201 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D201 + 1 + + 0 +LINE + 5 +2A86 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +13531.0 + 20 +18105.0 + 30 +0.0 + 11 +14559.0 + 21 +18105.0 + 31 +0.0 + 0 +INSERT + 5 +2A87 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +13530.0 + 20 +18105.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2A88 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +14560.0 + 20 +18105.0 + 30 +0.0 + 0 +TEXT + 5 +2A89 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +14010.625 + 20 +18192.5 + 30 +0.0 + 40 +175.0 + 1 +88 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +14120.0 + 21 +18280.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2A8A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +13530.0 + 20 +17375.0 + 30 +0.0 + 0 +POINT + 5 +2A8B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14560.0 + 20 +17375.0 + 30 +0.0 + 0 +POINT + 5 +2A8C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +14560.0 + 20 +18105.0 + 30 +0.0 + 0 +ENDBLK + 5 +2A8D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X202 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X202 + 1 + + 0 +LINE + 5 +2A8F + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +22560.097423 + 30 +0.0 + 11 +34589.902577 + 21 +22930.0 + 31 +0.0 + 0 +LINE + 5 +2A90 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +22913.650814 + 30 +0.0 + 11 +34236.349186 + 21 +22930.0 + 31 +0.0 + 0 +LINE + 5 +2A91 + 8 +0 + 62 + 0 + 10 +34443.455967 + 20 +22430.0 + 30 +0.0 + 11 +34943.455967 + 21 +22930.0 + 31 +0.0 + 0 +LINE + 5 +2A92 + 8 +0 + 62 + 0 + 10 +34797.009358 + 20 +22430.0 + 30 +0.0 + 11 +34970.0 + 21 +22602.990642 + 31 +0.0 + 0 +ENDBLK + 5 +2A93 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X203 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X203 + 1 + + 0 +LINE + 5 +2A95 + 8 +0 + 62 + 0 + 10 +34327.339444 + 20 +21430.0 + 30 +0.0 + 11 +34827.339444 + 21 +21930.0 + 31 +0.0 + 0 +LINE + 5 +2A96 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +21499.437252 + 30 +0.0 + 11 +34650.562748 + 21 +21930.0 + 31 +0.0 + 0 +LINE + 5 +2A97 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +21676.213947 + 30 +0.0 + 11 +34473.786053 + 21 +21930.0 + 31 +0.0 + 0 +LINE + 5 +2A98 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +21852.990642 + 30 +0.0 + 11 +34297.009358 + 21 +21930.0 + 31 +0.0 + 0 +LINE + 5 +2A99 + 8 +0 + 62 + 0 + 10 +34504.116139 + 20 +21430.0 + 30 +0.0 + 11 +34970.0 + 21 +21895.883861 + 31 +0.0 + 0 +LINE + 5 +2A9A + 8 +0 + 62 + 0 + 10 +34680.892834 + 20 +21430.0 + 30 +0.0 + 11 +34970.0 + 21 +21719.107166 + 31 +0.0 + 0 +LINE + 5 +2A9B + 8 +0 + 62 + 0 + 10 +34857.66953 + 20 +21430.0 + 30 +0.0 + 11 +34970.0 + 21 +21542.33047 + 31 +0.0 + 0 +ENDBLK + 5 +2A9C + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X204 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X204 + 1 + + 0 +LINE + 5 +2A9E + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20649.059328 + 30 +0.0 + 11 +34231.25 + 21 +20649.059328 + 31 +0.0 + 0 +LINE + 5 +2A9F + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20649.059328 + 30 +0.0 + 11 +34343.75 + 21 +20649.059328 + 31 +0.0 + 0 +LINE + 5 +2AA0 + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20649.059328 + 30 +0.0 + 11 +34456.25 + 21 +20649.059328 + 31 +0.0 + 0 +LINE + 5 +2AA1 + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20649.059328 + 30 +0.0 + 11 +34568.75 + 21 +20649.059328 + 31 +0.0 + 0 +LINE + 5 +2AA2 + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20649.059328 + 30 +0.0 + 11 +34681.25 + 21 +20649.059328 + 31 +0.0 + 0 +LINE + 5 +2AA3 + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20649.059328 + 30 +0.0 + 11 +34793.75 + 21 +20649.059328 + 31 +0.0 + 0 +LINE + 5 +2AA4 + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20649.059328 + 30 +0.0 + 11 +34906.25 + 21 +20649.059328 + 31 +0.0 + 0 +LINE + 5 +2AA5 + 8 +0 + 62 + 0 + 10 +34250.0 + 20 +20681.53528 + 30 +0.0 + 11 +34287.5 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +2AA6 + 8 +0 + 62 + 0 + 10 +34362.5 + 20 +20681.53528 + 30 +0.0 + 11 +34400.0 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +2AA7 + 8 +0 + 62 + 0 + 10 +34475.0 + 20 +20681.53528 + 30 +0.0 + 11 +34512.5 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +2AA8 + 8 +0 + 62 + 0 + 10 +34587.5 + 20 +20681.53528 + 30 +0.0 + 11 +34625.0 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +2AA9 + 8 +0 + 62 + 0 + 10 +34700.0 + 20 +20681.53528 + 30 +0.0 + 11 +34737.5 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +2AAA + 8 +0 + 62 + 0 + 10 +34812.5 + 20 +20681.53528 + 30 +0.0 + 11 +34850.0 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +2AAB + 8 +0 + 62 + 0 + 10 +34925.0 + 20 +20681.53528 + 30 +0.0 + 11 +34962.5 + 21 +20681.53528 + 31 +0.0 + 0 +LINE + 5 +2AAC + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20714.011233 + 30 +0.0 + 11 +34231.25 + 21 +20714.011233 + 31 +0.0 + 0 +LINE + 5 +2AAD + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20714.011233 + 30 +0.0 + 11 +34343.75 + 21 +20714.011233 + 31 +0.0 + 0 +LINE + 5 +2AAE + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20714.011233 + 30 +0.0 + 11 +34456.25 + 21 +20714.011233 + 31 +0.0 + 0 +LINE + 5 +2AAF + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20714.011233 + 30 +0.0 + 11 +34568.75 + 21 +20714.011233 + 31 +0.0 + 0 +LINE + 5 +2AB0 + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20714.011233 + 30 +0.0 + 11 +34681.25 + 21 +20714.011233 + 31 +0.0 + 0 +LINE + 5 +2AB1 + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20714.011233 + 30 +0.0 + 11 +34793.75 + 21 +20714.011233 + 31 +0.0 + 0 +LINE + 5 +2AB2 + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20714.011233 + 30 +0.0 + 11 +34906.25 + 21 +20714.011233 + 31 +0.0 + 0 +LINE + 5 +2AB3 + 8 +0 + 62 + 0 + 10 +34250.0 + 20 +20746.487185 + 30 +0.0 + 11 +34287.5 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +2AB4 + 8 +0 + 62 + 0 + 10 +34362.5 + 20 +20746.487185 + 30 +0.0 + 11 +34400.0 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +2AB5 + 8 +0 + 62 + 0 + 10 +34475.0 + 20 +20746.487185 + 30 +0.0 + 11 +34512.5 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +2AB6 + 8 +0 + 62 + 0 + 10 +34587.5 + 20 +20746.487185 + 30 +0.0 + 11 +34625.0 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +2AB7 + 8 +0 + 62 + 0 + 10 +34700.0 + 20 +20746.487185 + 30 +0.0 + 11 +34737.5 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +2AB8 + 8 +0 + 62 + 0 + 10 +34812.5 + 20 +20746.487185 + 30 +0.0 + 11 +34850.0 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +2AB9 + 8 +0 + 62 + 0 + 10 +34925.0 + 20 +20746.487185 + 30 +0.0 + 11 +34962.5 + 21 +20746.487185 + 31 +0.0 + 0 +LINE + 5 +2ABA + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20778.963138 + 30 +0.0 + 11 +34231.25 + 21 +20778.963138 + 31 +0.0 + 0 +LINE + 5 +2ABB + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20778.963138 + 30 +0.0 + 11 +34343.75 + 21 +20778.963138 + 31 +0.0 + 0 +LINE + 5 +2ABC + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20778.963138 + 30 +0.0 + 11 +34456.25 + 21 +20778.963138 + 31 +0.0 + 0 +LINE + 5 +2ABD + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20778.963138 + 30 +0.0 + 11 +34568.75 + 21 +20778.963138 + 31 +0.0 + 0 +LINE + 5 +2ABE + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20778.963138 + 30 +0.0 + 11 +34681.25 + 21 +20778.963138 + 31 +0.0 + 0 +LINE + 5 +2ABF + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20778.963138 + 30 +0.0 + 11 +34793.75 + 21 +20778.963138 + 31 +0.0 + 0 +LINE + 5 +2AC0 + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20778.963138 + 30 +0.0 + 11 +34906.25 + 21 +20778.963138 + 31 +0.0 + 0 +LINE + 5 +2AC1 + 8 +0 + 62 + 0 + 10 +34250.0 + 20 +20811.43909 + 30 +0.0 + 11 +34287.5 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +2AC2 + 8 +0 + 62 + 0 + 10 +34362.5 + 20 +20811.43909 + 30 +0.0 + 11 +34400.0 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +2AC3 + 8 +0 + 62 + 0 + 10 +34475.0 + 20 +20811.43909 + 30 +0.0 + 11 +34512.5 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +2AC4 + 8 +0 + 62 + 0 + 10 +34587.5 + 20 +20811.43909 + 30 +0.0 + 11 +34625.0 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +2AC5 + 8 +0 + 62 + 0 + 10 +34700.0 + 20 +20811.43909 + 30 +0.0 + 11 +34737.5 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +2AC6 + 8 +0 + 62 + 0 + 10 +34812.5 + 20 +20811.43909 + 30 +0.0 + 11 +34850.0 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +2AC7 + 8 +0 + 62 + 0 + 10 +34925.0 + 20 +20811.43909 + 30 +0.0 + 11 +34962.5 + 21 +20811.43909 + 31 +0.0 + 0 +LINE + 5 +2AC8 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20843.915043 + 30 +0.0 + 11 +34231.25 + 21 +20843.915043 + 31 +0.0 + 0 +LINE + 5 +2AC9 + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20843.915043 + 30 +0.0 + 11 +34343.75 + 21 +20843.915043 + 31 +0.0 + 0 +LINE + 5 +2ACA + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20843.915043 + 30 +0.0 + 11 +34456.25 + 21 +20843.915043 + 31 +0.0 + 0 +LINE + 5 +2ACB + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20843.915043 + 30 +0.0 + 11 +34568.75 + 21 +20843.915043 + 31 +0.0 + 0 +LINE + 5 +2ACC + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20843.915043 + 30 +0.0 + 11 +34681.25 + 21 +20843.915043 + 31 +0.0 + 0 +LINE + 5 +2ACD + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20843.915043 + 30 +0.0 + 11 +34793.75 + 21 +20843.915043 + 31 +0.0 + 0 +LINE + 5 +2ACE + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20843.915043 + 30 +0.0 + 11 +34906.25 + 21 +20843.915043 + 31 +0.0 + 0 +LINE + 5 +2ACF + 8 +0 + 62 + 0 + 10 +34250.0 + 20 +20876.390995 + 30 +0.0 + 11 +34287.5 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +2AD0 + 8 +0 + 62 + 0 + 10 +34362.5 + 20 +20876.390995 + 30 +0.0 + 11 +34400.0 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +2AD1 + 8 +0 + 62 + 0 + 10 +34475.0 + 20 +20876.390995 + 30 +0.0 + 11 +34512.5 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +2AD2 + 8 +0 + 62 + 0 + 10 +34587.5 + 20 +20876.390995 + 30 +0.0 + 11 +34625.0 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +2AD3 + 8 +0 + 62 + 0 + 10 +34700.0 + 20 +20876.390995 + 30 +0.0 + 11 +34737.5 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +2AD4 + 8 +0 + 62 + 0 + 10 +34812.5 + 20 +20876.390995 + 30 +0.0 + 11 +34850.0 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +2AD5 + 8 +0 + 62 + 0 + 10 +34925.0 + 20 +20876.390995 + 30 +0.0 + 11 +34962.5 + 21 +20876.390995 + 31 +0.0 + 0 +LINE + 5 +2AD6 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20908.866948 + 30 +0.0 + 11 +34231.25 + 21 +20908.866948 + 31 +0.0 + 0 +LINE + 5 +2AD7 + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20908.866948 + 30 +0.0 + 11 +34343.75 + 21 +20908.866948 + 31 +0.0 + 0 +LINE + 5 +2AD8 + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20908.866948 + 30 +0.0 + 11 +34456.25 + 21 +20908.866948 + 31 +0.0 + 0 +LINE + 5 +2AD9 + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20908.866948 + 30 +0.0 + 11 +34568.75 + 21 +20908.866948 + 31 +0.0 + 0 +LINE + 5 +2ADA + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20908.866948 + 30 +0.0 + 11 +34681.25 + 21 +20908.866948 + 31 +0.0 + 0 +LINE + 5 +2ADB + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20908.866948 + 30 +0.0 + 11 +34793.75 + 21 +20908.866948 + 31 +0.0 + 0 +LINE + 5 +2ADC + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20908.866948 + 30 +0.0 + 11 +34906.25 + 21 +20908.866948 + 31 +0.0 + 0 +LINE + 5 +2ADD + 8 +0 + 62 + 0 + 10 +34250.0 + 20 +20616.583375 + 30 +0.0 + 11 +34287.5 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +2ADE + 8 +0 + 62 + 0 + 10 +34362.5 + 20 +20616.583375 + 30 +0.0 + 11 +34400.0 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +2ADF + 8 +0 + 62 + 0 + 10 +34475.0 + 20 +20616.583375 + 30 +0.0 + 11 +34512.5 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +2AE0 + 8 +0 + 62 + 0 + 10 +34587.5 + 20 +20616.583375 + 30 +0.0 + 11 +34625.0 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +2AE1 + 8 +0 + 62 + 0 + 10 +34700.0 + 20 +20616.583375 + 30 +0.0 + 11 +34737.5 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +2AE2 + 8 +0 + 62 + 0 + 10 +34812.5 + 20 +20616.583375 + 30 +0.0 + 11 +34850.0 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +2AE3 + 8 +0 + 62 + 0 + 10 +34925.0 + 20 +20616.583375 + 30 +0.0 + 11 +34962.5 + 21 +20616.583375 + 31 +0.0 + 0 +LINE + 5 +2AE4 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20584.107423 + 30 +0.0 + 11 +34231.25 + 21 +20584.107423 + 31 +0.0 + 0 +LINE + 5 +2AE5 + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20584.107423 + 30 +0.0 + 11 +34343.75 + 21 +20584.107423 + 31 +0.0 + 0 +LINE + 5 +2AE6 + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20584.107423 + 30 +0.0 + 11 +34456.25 + 21 +20584.107423 + 31 +0.0 + 0 +LINE + 5 +2AE7 + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20584.107423 + 30 +0.0 + 11 +34568.75 + 21 +20584.107423 + 31 +0.0 + 0 +LINE + 5 +2AE8 + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20584.107423 + 30 +0.0 + 11 +34681.25 + 21 +20584.107423 + 31 +0.0 + 0 +LINE + 5 +2AE9 + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20584.107423 + 30 +0.0 + 11 +34793.75 + 21 +20584.107423 + 31 +0.0 + 0 +LINE + 5 +2AEA + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20584.107423 + 30 +0.0 + 11 +34906.25 + 21 +20584.107423 + 31 +0.0 + 0 +LINE + 5 +2AEB + 8 +0 + 62 + 0 + 10 +34250.0 + 20 +20551.63147 + 30 +0.0 + 11 +34287.5 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +2AEC + 8 +0 + 62 + 0 + 10 +34362.5 + 20 +20551.63147 + 30 +0.0 + 11 +34400.0 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +2AED + 8 +0 + 62 + 0 + 10 +34475.0 + 20 +20551.63147 + 30 +0.0 + 11 +34512.5 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +2AEE + 8 +0 + 62 + 0 + 10 +34587.5 + 20 +20551.63147 + 30 +0.0 + 11 +34625.0 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +2AEF + 8 +0 + 62 + 0 + 10 +34700.0 + 20 +20551.63147 + 30 +0.0 + 11 +34737.5 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +2AF0 + 8 +0 + 62 + 0 + 10 +34812.5 + 20 +20551.63147 + 30 +0.0 + 11 +34850.0 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +2AF1 + 8 +0 + 62 + 0 + 10 +34925.0 + 20 +20551.63147 + 30 +0.0 + 11 +34962.5 + 21 +20551.63147 + 31 +0.0 + 0 +LINE + 5 +2AF2 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20519.155518 + 30 +0.0 + 11 +34231.25 + 21 +20519.155518 + 31 +0.0 + 0 +LINE + 5 +2AF3 + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20519.155518 + 30 +0.0 + 11 +34343.75 + 21 +20519.155518 + 31 +0.0 + 0 +LINE + 5 +2AF4 + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20519.155518 + 30 +0.0 + 11 +34456.25 + 21 +20519.155518 + 31 +0.0 + 0 +LINE + 5 +2AF5 + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20519.155518 + 30 +0.0 + 11 +34568.75 + 21 +20519.155518 + 31 +0.0 + 0 +LINE + 5 +2AF6 + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20519.155518 + 30 +0.0 + 11 +34681.25 + 21 +20519.155518 + 31 +0.0 + 0 +LINE + 5 +2AF7 + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20519.155518 + 30 +0.0 + 11 +34793.75 + 21 +20519.155518 + 31 +0.0 + 0 +LINE + 5 +2AF8 + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20519.155518 + 30 +0.0 + 11 +34906.25 + 21 +20519.155518 + 31 +0.0 + 0 +LINE + 5 +2AF9 + 8 +0 + 62 + 0 + 10 +34250.0 + 20 +20486.679565 + 30 +0.0 + 11 +34287.5 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +2AFA + 8 +0 + 62 + 0 + 10 +34362.5 + 20 +20486.679565 + 30 +0.0 + 11 +34400.0 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +2AFB + 8 +0 + 62 + 0 + 10 +34475.0 + 20 +20486.679565 + 30 +0.0 + 11 +34512.5 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +2AFC + 8 +0 + 62 + 0 + 10 +34587.5 + 20 +20486.679565 + 30 +0.0 + 11 +34625.0 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +2AFD + 8 +0 + 62 + 0 + 10 +34700.0 + 20 +20486.679565 + 30 +0.0 + 11 +34737.5 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +2AFE + 8 +0 + 62 + 0 + 10 +34812.5 + 20 +20486.679565 + 30 +0.0 + 11 +34850.0 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +2AFF + 8 +0 + 62 + 0 + 10 +34925.0 + 20 +20486.679565 + 30 +0.0 + 11 +34962.5 + 21 +20486.679565 + 31 +0.0 + 0 +LINE + 5 +2B00 + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +20454.203613 + 30 +0.0 + 11 +34231.25 + 21 +20454.203613 + 31 +0.0 + 0 +LINE + 5 +2B01 + 8 +0 + 62 + 0 + 10 +34306.25 + 20 +20454.203613 + 30 +0.0 + 11 +34343.75 + 21 +20454.203613 + 31 +0.0 + 0 +LINE + 5 +2B02 + 8 +0 + 62 + 0 + 10 +34418.75 + 20 +20454.203613 + 30 +0.0 + 11 +34456.25 + 21 +20454.203613 + 31 +0.0 + 0 +LINE + 5 +2B03 + 8 +0 + 62 + 0 + 10 +34531.25 + 20 +20454.203613 + 30 +0.0 + 11 +34568.75 + 21 +20454.203613 + 31 +0.0 + 0 +LINE + 5 +2B04 + 8 +0 + 62 + 0 + 10 +34643.75 + 20 +20454.203613 + 30 +0.0 + 11 +34681.25 + 21 +20454.203613 + 31 +0.0 + 0 +LINE + 5 +2B05 + 8 +0 + 62 + 0 + 10 +34756.25 + 20 +20454.203613 + 30 +0.0 + 11 +34793.75 + 21 +20454.203613 + 31 +0.0 + 0 +LINE + 5 +2B06 + 8 +0 + 62 + 0 + 10 +34868.75 + 20 +20454.203613 + 30 +0.0 + 11 +34906.25 + 21 +20454.203613 + 31 +0.0 + 0 +LINE + 5 +2B07 + 8 +0 + 62 + 0 + 10 +34699.999881 + 20 +20486.679546 + 30 +0.0 + 11 +34681.249881 + 21 +20519.155498 + 31 +0.0 + 0 +LINE + 5 +2B08 + 8 +0 + 62 + 0 + 10 +34643.749881 + 20 +20584.107404 + 30 +0.0 + 11 +34624.999881 + 21 +20616.583356 + 31 +0.0 + 0 +LINE + 5 +2B09 + 8 +0 + 62 + 0 + 10 +34587.499881 + 20 +20681.535261 + 30 +0.0 + 11 +34568.749881 + 21 +20714.011214 + 31 +0.0 + 0 +LINE + 5 +2B0A + 8 +0 + 62 + 0 + 10 +34531.249881 + 20 +20778.963119 + 30 +0.0 + 11 +34512.499881 + 21 +20811.439072 + 31 +0.0 + 0 +LINE + 5 +2B0B + 8 +0 + 62 + 0 + 10 +34474.999881 + 20 +20876.390977 + 30 +0.0 + 11 +34456.249881 + 21 +20908.86693 + 31 +0.0 + 0 +LINE + 5 +2B0C + 8 +0 + 62 + 0 + 10 +34695.223832 + 20 +20430.0 + 30 +0.0 + 11 +34681.249882 + 21 +20454.203593 + 31 +0.0 + 0 +LINE + 5 +2B0D + 8 +0 + 62 + 0 + 10 +34643.749882 + 20 +20519.155498 + 30 +0.0 + 11 +34624.999882 + 21 +20551.631451 + 31 +0.0 + 0 +LINE + 5 +2B0E + 8 +0 + 62 + 0 + 10 +34587.499882 + 20 +20616.583356 + 30 +0.0 + 11 +34568.749882 + 21 +20649.059309 + 31 +0.0 + 0 +LINE + 5 +2B0F + 8 +0 + 62 + 0 + 10 +34531.249882 + 20 +20714.011214 + 30 +0.0 + 11 +34512.499882 + 21 +20746.487167 + 31 +0.0 + 0 +LINE + 5 +2B10 + 8 +0 + 62 + 0 + 10 +34474.999882 + 20 +20811.439072 + 30 +0.0 + 11 +34456.249882 + 21 +20843.915025 + 31 +0.0 + 0 +LINE + 5 +2B11 + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20908.86693 + 30 +0.0 + 11 +34406.548698 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B12 + 8 +0 + 62 + 0 + 10 +34643.749882 + 20 +20454.203593 + 30 +0.0 + 11 +34624.999882 + 21 +20486.679546 + 31 +0.0 + 0 +LINE + 5 +2B13 + 8 +0 + 62 + 0 + 10 +34587.499882 + 20 +20551.631451 + 30 +0.0 + 11 +34568.749882 + 21 +20584.107404 + 31 +0.0 + 0 +LINE + 5 +2B14 + 8 +0 + 62 + 0 + 10 +34531.249882 + 20 +20649.059309 + 30 +0.0 + 11 +34512.499882 + 21 +20681.535262 + 31 +0.0 + 0 +LINE + 5 +2B15 + 8 +0 + 62 + 0 + 10 +34474.999882 + 20 +20746.487167 + 30 +0.0 + 11 +34456.249882 + 21 +20778.96312 + 31 +0.0 + 0 +LINE + 5 +2B16 + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20843.915025 + 30 +0.0 + 11 +34399.999882 + 21 +20876.390977 + 31 +0.0 + 0 +LINE + 5 +2B17 + 8 +0 + 62 + 0 + 10 +34587.499882 + 20 +20486.679546 + 30 +0.0 + 11 +34568.749882 + 21 +20519.155498 + 31 +0.0 + 0 +LINE + 5 +2B18 + 8 +0 + 62 + 0 + 10 +34531.249882 + 20 +20584.107404 + 30 +0.0 + 11 +34512.499882 + 21 +20616.583356 + 31 +0.0 + 0 +LINE + 5 +2B19 + 8 +0 + 62 + 0 + 10 +34474.999882 + 20 +20681.535262 + 30 +0.0 + 11 +34456.249882 + 21 +20714.011214 + 31 +0.0 + 0 +LINE + 5 +2B1A + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20778.96312 + 30 +0.0 + 11 +34399.999882 + 21 +20811.439072 + 31 +0.0 + 0 +LINE + 5 +2B1B + 8 +0 + 62 + 0 + 10 +34362.499882 + 20 +20876.390978 + 30 +0.0 + 11 +34343.749882 + 21 +20908.86693 + 31 +0.0 + 0 +LINE + 5 +2B1C + 8 +0 + 62 + 0 + 10 +34582.723833 + 20 +20430.0 + 30 +0.0 + 11 +34568.749882 + 21 +20454.203593 + 31 +0.0 + 0 +LINE + 5 +2B1D + 8 +0 + 62 + 0 + 10 +34531.249882 + 20 +20519.155499 + 30 +0.0 + 11 +34512.499882 + 21 +20551.631451 + 31 +0.0 + 0 +LINE + 5 +2B1E + 8 +0 + 62 + 0 + 10 +34474.999882 + 20 +20616.583356 + 30 +0.0 + 11 +34456.249882 + 21 +20649.059309 + 31 +0.0 + 0 +LINE + 5 +2B1F + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20714.011214 + 30 +0.0 + 11 +34399.999882 + 21 +20746.487167 + 31 +0.0 + 0 +LINE + 5 +2B20 + 8 +0 + 62 + 0 + 10 +34362.499882 + 20 +20811.439072 + 30 +0.0 + 11 +34343.749882 + 21 +20843.915025 + 31 +0.0 + 0 +LINE + 5 +2B21 + 8 +0 + 62 + 0 + 10 +34306.249882 + 20 +20908.86693 + 30 +0.0 + 11 +34294.048698 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B22 + 8 +0 + 62 + 0 + 10 +34531.249882 + 20 +20454.203593 + 30 +0.0 + 11 +34512.499882 + 21 +20486.679546 + 31 +0.0 + 0 +LINE + 5 +2B23 + 8 +0 + 62 + 0 + 10 +34474.999882 + 20 +20551.631451 + 30 +0.0 + 11 +34456.249882 + 21 +20584.107404 + 31 +0.0 + 0 +LINE + 5 +2B24 + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20649.059309 + 30 +0.0 + 11 +34399.999882 + 21 +20681.535262 + 31 +0.0 + 0 +LINE + 5 +2B25 + 8 +0 + 62 + 0 + 10 +34362.499882 + 20 +20746.487167 + 30 +0.0 + 11 +34343.749882 + 21 +20778.96312 + 31 +0.0 + 0 +LINE + 5 +2B26 + 8 +0 + 62 + 0 + 10 +34306.249882 + 20 +20843.915025 + 30 +0.0 + 11 +34287.499882 + 21 +20876.390978 + 31 +0.0 + 0 +LINE + 5 +2B27 + 8 +0 + 62 + 0 + 10 +34474.999882 + 20 +20486.679546 + 30 +0.0 + 11 +34456.249882 + 21 +20519.155499 + 31 +0.0 + 0 +LINE + 5 +2B28 + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20584.107404 + 30 +0.0 + 11 +34399.999882 + 21 +20616.583357 + 31 +0.0 + 0 +LINE + 5 +2B29 + 8 +0 + 62 + 0 + 10 +34362.499882 + 20 +20681.535262 + 30 +0.0 + 11 +34343.749882 + 21 +20714.011215 + 31 +0.0 + 0 +LINE + 5 +2B2A + 8 +0 + 62 + 0 + 10 +34306.249882 + 20 +20778.96312 + 30 +0.0 + 11 +34287.499882 + 21 +20811.439072 + 31 +0.0 + 0 +LINE + 5 +2B2B + 8 +0 + 62 + 0 + 10 +34249.999882 + 20 +20876.390978 + 30 +0.0 + 11 +34231.249882 + 21 +20908.86693 + 31 +0.0 + 0 +LINE + 5 +2B2C + 8 +0 + 62 + 0 + 10 +34470.223833 + 20 +20430.0 + 30 +0.0 + 11 +34456.249882 + 21 +20454.203593 + 31 +0.0 + 0 +LINE + 5 +2B2D + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20519.155499 + 30 +0.0 + 11 +34399.999882 + 21 +20551.631451 + 31 +0.0 + 0 +LINE + 5 +2B2E + 8 +0 + 62 + 0 + 10 +34362.499882 + 20 +20616.583357 + 30 +0.0 + 11 +34343.749882 + 21 +20649.059309 + 31 +0.0 + 0 +LINE + 5 +2B2F + 8 +0 + 62 + 0 + 10 +34306.249882 + 20 +20714.011215 + 30 +0.0 + 11 +34287.499882 + 21 +20746.487167 + 31 +0.0 + 0 +LINE + 5 +2B30 + 8 +0 + 62 + 0 + 10 +34249.999882 + 20 +20811.439073 + 30 +0.0 + 11 +34231.249882 + 21 +20843.915025 + 31 +0.0 + 0 +LINE + 5 +2B31 + 8 +0 + 62 + 0 + 10 +34418.749882 + 20 +20454.203594 + 30 +0.0 + 11 +34399.999882 + 21 +20486.679546 + 31 +0.0 + 0 +LINE + 5 +2B32 + 8 +0 + 62 + 0 + 10 +34362.499882 + 20 +20551.631451 + 30 +0.0 + 11 +34343.749882 + 21 +20584.107404 + 31 +0.0 + 0 +LINE + 5 +2B33 + 8 +0 + 62 + 0 + 10 +34306.249882 + 20 +20649.059309 + 30 +0.0 + 11 +34287.499882 + 21 +20681.535262 + 31 +0.0 + 0 +LINE + 5 +2B34 + 8 +0 + 62 + 0 + 10 +34249.999882 + 20 +20746.487167 + 30 +0.0 + 11 +34231.249882 + 21 +20778.96312 + 31 +0.0 + 0 +LINE + 5 +2B35 + 8 +0 + 62 + 0 + 10 +34362.499883 + 20 +20486.679546 + 30 +0.0 + 11 +34343.749883 + 21 +20519.155499 + 31 +0.0 + 0 +LINE + 5 +2B36 + 8 +0 + 62 + 0 + 10 +34306.249883 + 20 +20584.107404 + 30 +0.0 + 11 +34287.499883 + 21 +20616.583357 + 31 +0.0 + 0 +LINE + 5 +2B37 + 8 +0 + 62 + 0 + 10 +34249.999883 + 20 +20681.535262 + 30 +0.0 + 11 +34231.249883 + 21 +20714.011215 + 31 +0.0 + 0 +LINE + 5 +2B38 + 8 +0 + 62 + 0 + 10 +34357.723834 + 20 +20430.0 + 30 +0.0 + 11 +34343.749883 + 21 +20454.203594 + 31 +0.0 + 0 +LINE + 5 +2B39 + 8 +0 + 62 + 0 + 10 +34306.249883 + 20 +20519.155499 + 30 +0.0 + 11 +34287.499883 + 21 +20551.631452 + 31 +0.0 + 0 +LINE + 5 +2B3A + 8 +0 + 62 + 0 + 10 +34249.999883 + 20 +20616.583357 + 30 +0.0 + 11 +34231.249883 + 21 +20649.05931 + 31 +0.0 + 0 +LINE + 5 +2B3B + 8 +0 + 62 + 0 + 10 +34306.249883 + 20 +20454.203594 + 30 +0.0 + 11 +34287.499883 + 21 +20486.679546 + 31 +0.0 + 0 +LINE + 5 +2B3C + 8 +0 + 62 + 0 + 10 +34249.999883 + 20 +20551.631452 + 30 +0.0 + 11 +34231.249883 + 21 +20584.107404 + 31 +0.0 + 0 +LINE + 5 +2B3D + 8 +0 + 62 + 0 + 10 +34249.999883 + 20 +20486.679546 + 30 +0.0 + 11 +34231.249883 + 21 +20519.155499 + 31 +0.0 + 0 +LINE + 5 +2B3E + 8 +0 + 62 + 0 + 10 +34245.223834 + 20 +20430.0 + 30 +0.0 + 11 +34231.249883 + 21 +20454.203594 + 31 +0.0 + 0 +LINE + 5 +2B3F + 8 +0 + 62 + 0 + 10 +34756.249881 + 20 +20454.203593 + 30 +0.0 + 11 +34737.499881 + 21 +20486.679546 + 31 +0.0 + 0 +LINE + 5 +2B40 + 8 +0 + 62 + 0 + 10 +34699.999881 + 20 +20551.631451 + 30 +0.0 + 11 +34681.249881 + 21 +20584.107403 + 31 +0.0 + 0 +LINE + 5 +2B41 + 8 +0 + 62 + 0 + 10 +34643.749881 + 20 +20649.059309 + 30 +0.0 + 11 +34624.999881 + 21 +20681.535261 + 31 +0.0 + 0 +LINE + 5 +2B42 + 8 +0 + 62 + 0 + 10 +34587.499881 + 20 +20746.487167 + 30 +0.0 + 11 +34568.749881 + 21 +20778.963119 + 31 +0.0 + 0 +LINE + 5 +2B43 + 8 +0 + 62 + 0 + 10 +34531.249881 + 20 +20843.915025 + 30 +0.0 + 11 +34512.499881 + 21 +20876.390977 + 31 +0.0 + 0 +LINE + 5 +2B44 + 8 +0 + 62 + 0 + 10 +34807.723832 + 20 +20430.0 + 30 +0.0 + 11 +34793.749881 + 21 +20454.203593 + 31 +0.0 + 0 +LINE + 5 +2B45 + 8 +0 + 62 + 0 + 10 +34756.249881 + 20 +20519.155498 + 30 +0.0 + 11 +34737.499881 + 21 +20551.631451 + 31 +0.0 + 0 +LINE + 5 +2B46 + 8 +0 + 62 + 0 + 10 +34699.999881 + 20 +20616.583356 + 30 +0.0 + 11 +34681.249881 + 21 +20649.059309 + 31 +0.0 + 0 +LINE + 5 +2B47 + 8 +0 + 62 + 0 + 10 +34643.749881 + 20 +20714.011214 + 30 +0.0 + 11 +34624.999881 + 21 +20746.487167 + 31 +0.0 + 0 +LINE + 5 +2B48 + 8 +0 + 62 + 0 + 10 +34587.499881 + 20 +20811.439072 + 30 +0.0 + 11 +34568.749881 + 21 +20843.915025 + 31 +0.0 + 0 +LINE + 5 +2B49 + 8 +0 + 62 + 0 + 10 +34531.249881 + 20 +20908.86693 + 30 +0.0 + 11 +34519.048697 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B4A + 8 +0 + 62 + 0 + 10 +34812.499881 + 20 +20486.679545 + 30 +0.0 + 11 +34793.749881 + 21 +20519.155498 + 31 +0.0 + 0 +LINE + 5 +2B4B + 8 +0 + 62 + 0 + 10 +34756.249881 + 20 +20584.107403 + 30 +0.0 + 11 +34737.499881 + 21 +20616.583356 + 31 +0.0 + 0 +LINE + 5 +2B4C + 8 +0 + 62 + 0 + 10 +34699.999881 + 20 +20681.535261 + 30 +0.0 + 11 +34681.249881 + 21 +20714.011214 + 31 +0.0 + 0 +LINE + 5 +2B4D + 8 +0 + 62 + 0 + 10 +34643.749881 + 20 +20778.963119 + 30 +0.0 + 11 +34624.999881 + 21 +20811.439072 + 31 +0.0 + 0 +LINE + 5 +2B4E + 8 +0 + 62 + 0 + 10 +34587.499881 + 20 +20876.390977 + 30 +0.0 + 11 +34568.749881 + 21 +20908.86693 + 31 +0.0 + 0 +LINE + 5 +2B4F + 8 +0 + 62 + 0 + 10 +34868.749881 + 20 +20454.203593 + 30 +0.0 + 11 +34849.999881 + 21 +20486.679545 + 31 +0.0 + 0 +LINE + 5 +2B50 + 8 +0 + 62 + 0 + 10 +34812.499881 + 20 +20551.631451 + 30 +0.0 + 11 +34793.749881 + 21 +20584.107403 + 31 +0.0 + 0 +LINE + 5 +2B51 + 8 +0 + 62 + 0 + 10 +34756.249881 + 20 +20649.059309 + 30 +0.0 + 11 +34737.499881 + 21 +20681.535261 + 31 +0.0 + 0 +LINE + 5 +2B52 + 8 +0 + 62 + 0 + 10 +34699.999881 + 20 +20746.487166 + 30 +0.0 + 11 +34681.249881 + 21 +20778.963119 + 31 +0.0 + 0 +LINE + 5 +2B53 + 8 +0 + 62 + 0 + 10 +34643.749881 + 20 +20843.915024 + 30 +0.0 + 11 +34624.999881 + 21 +20876.390977 + 31 +0.0 + 0 +LINE + 5 +2B54 + 8 +0 + 62 + 0 + 10 +34920.223832 + 20 +20430.0 + 30 +0.0 + 11 +34906.249881 + 21 +20454.203593 + 31 +0.0 + 0 +LINE + 5 +2B55 + 8 +0 + 62 + 0 + 10 +34868.749881 + 20 +20519.155498 + 30 +0.0 + 11 +34849.999881 + 21 +20551.631451 + 31 +0.0 + 0 +LINE + 5 +2B56 + 8 +0 + 62 + 0 + 10 +34812.499881 + 20 +20616.583356 + 30 +0.0 + 11 +34793.749881 + 21 +20649.059308 + 31 +0.0 + 0 +LINE + 5 +2B57 + 8 +0 + 62 + 0 + 10 +34756.249881 + 20 +20714.011214 + 30 +0.0 + 11 +34737.499881 + 21 +20746.487166 + 31 +0.0 + 0 +LINE + 5 +2B58 + 8 +0 + 62 + 0 + 10 +34699.999881 + 20 +20811.439072 + 30 +0.0 + 11 +34681.249881 + 21 +20843.915024 + 31 +0.0 + 0 +LINE + 5 +2B59 + 8 +0 + 62 + 0 + 10 +34643.749881 + 20 +20908.86693 + 30 +0.0 + 11 +34631.548697 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B5A + 8 +0 + 62 + 0 + 10 +34924.999881 + 20 +20486.679545 + 30 +0.0 + 11 +34906.249881 + 21 +20519.155498 + 31 +0.0 + 0 +LINE + 5 +2B5B + 8 +0 + 62 + 0 + 10 +34868.749881 + 20 +20584.107403 + 30 +0.0 + 11 +34849.999881 + 21 +20616.583356 + 31 +0.0 + 0 +LINE + 5 +2B5C + 8 +0 + 62 + 0 + 10 +34812.499881 + 20 +20681.535261 + 30 +0.0 + 11 +34793.749881 + 21 +20714.011214 + 31 +0.0 + 0 +LINE + 5 +2B5D + 8 +0 + 62 + 0 + 10 +34756.249881 + 20 +20778.963119 + 30 +0.0 + 11 +34737.499881 + 21 +20811.439072 + 31 +0.0 + 0 +LINE + 5 +2B5E + 8 +0 + 62 + 0 + 10 +34699.999881 + 20 +20876.390977 + 30 +0.0 + 11 +34681.249881 + 21 +20908.86693 + 31 +0.0 + 0 +LINE + 5 +2B5F + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20473.688957 + 30 +0.0 + 11 +34962.499881 + 21 +20486.679545 + 31 +0.0 + 0 +LINE + 5 +2B60 + 8 +0 + 62 + 0 + 10 +34924.999881 + 20 +20551.63145 + 30 +0.0 + 11 +34906.249881 + 21 +20584.107403 + 31 +0.0 + 0 +LINE + 5 +2B61 + 8 +0 + 62 + 0 + 10 +34868.749881 + 20 +20649.059308 + 30 +0.0 + 11 +34849.999881 + 21 +20681.535261 + 31 +0.0 + 0 +LINE + 5 +2B62 + 8 +0 + 62 + 0 + 10 +34812.499881 + 20 +20746.487166 + 30 +0.0 + 11 +34793.749881 + 21 +20778.963119 + 31 +0.0 + 0 +LINE + 5 +2B63 + 8 +0 + 62 + 0 + 10 +34756.249881 + 20 +20843.915024 + 30 +0.0 + 11 +34737.499881 + 21 +20876.390977 + 31 +0.0 + 0 +LINE + 5 +2B64 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20538.640862 + 30 +0.0 + 11 +34962.49988 + 21 +20551.63145 + 31 +0.0 + 0 +LINE + 5 +2B65 + 8 +0 + 62 + 0 + 10 +34924.99988 + 20 +20616.583356 + 30 +0.0 + 11 +34906.24988 + 21 +20649.059308 + 31 +0.0 + 0 +LINE + 5 +2B66 + 8 +0 + 62 + 0 + 10 +34868.74988 + 20 +20714.011214 + 30 +0.0 + 11 +34849.99988 + 21 +20746.487166 + 31 +0.0 + 0 +LINE + 5 +2B67 + 8 +0 + 62 + 0 + 10 +34812.49988 + 20 +20811.439071 + 30 +0.0 + 11 +34793.74988 + 21 +20843.915024 + 31 +0.0 + 0 +LINE + 5 +2B68 + 8 +0 + 62 + 0 + 10 +34756.24988 + 20 +20908.866929 + 30 +0.0 + 11 +34744.048696 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B69 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20603.592767 + 30 +0.0 + 11 +34962.49988 + 21 +20616.583356 + 31 +0.0 + 0 +LINE + 5 +2B6A + 8 +0 + 62 + 0 + 10 +34924.99988 + 20 +20681.535261 + 30 +0.0 + 11 +34906.24988 + 21 +20714.011213 + 31 +0.0 + 0 +LINE + 5 +2B6B + 8 +0 + 62 + 0 + 10 +34868.74988 + 20 +20778.963119 + 30 +0.0 + 11 +34849.99988 + 21 +20811.439071 + 31 +0.0 + 0 +LINE + 5 +2B6C + 8 +0 + 62 + 0 + 10 +34812.49988 + 20 +20876.390977 + 30 +0.0 + 11 +34793.74988 + 21 +20908.866929 + 31 +0.0 + 0 +LINE + 5 +2B6D + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20668.544672 + 30 +0.0 + 11 +34962.49988 + 21 +20681.535261 + 31 +0.0 + 0 +LINE + 5 +2B6E + 8 +0 + 62 + 0 + 10 +34924.99988 + 20 +20746.487166 + 30 +0.0 + 11 +34906.24988 + 21 +20778.963119 + 31 +0.0 + 0 +LINE + 5 +2B6F + 8 +0 + 62 + 0 + 10 +34868.74988 + 20 +20843.915024 + 30 +0.0 + 11 +34849.99988 + 21 +20876.390977 + 31 +0.0 + 0 +LINE + 5 +2B70 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20733.496577 + 30 +0.0 + 11 +34962.49988 + 21 +20746.487166 + 31 +0.0 + 0 +LINE + 5 +2B71 + 8 +0 + 62 + 0 + 10 +34924.99988 + 20 +20811.439071 + 30 +0.0 + 11 +34906.24988 + 21 +20843.915024 + 31 +0.0 + 0 +LINE + 5 +2B72 + 8 +0 + 62 + 0 + 10 +34868.74988 + 20 +20908.866929 + 30 +0.0 + 11 +34856.548696 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B73 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20798.448482 + 30 +0.0 + 11 +34962.49988 + 21 +20811.439071 + 31 +0.0 + 0 +LINE + 5 +2B74 + 8 +0 + 62 + 0 + 10 +34924.99988 + 20 +20876.390976 + 30 +0.0 + 11 +34906.24988 + 21 +20908.866929 + 31 +0.0 + 0 +LINE + 5 +2B75 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20863.400387 + 30 +0.0 + 11 +34962.49988 + 21 +20876.390976 + 31 +0.0 + 0 +LINE + 5 +2B76 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +20928.352292 + 30 +0.0 + 11 +34969.048695 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B77 + 8 +0 + 62 + 0 + 10 +34456.249925 + 20 +20454.203705 + 30 +0.0 + 11 +34474.999925 + 21 +20486.679658 + 31 +0.0 + 0 +LINE + 5 +2B78 + 8 +0 + 62 + 0 + 10 +34512.499925 + 20 +20551.631563 + 30 +0.0 + 11 +34531.249925 + 21 +20584.107516 + 31 +0.0 + 0 +LINE + 5 +2B79 + 8 +0 + 62 + 0 + 10 +34568.749925 + 20 +20649.059421 + 30 +0.0 + 11 +34587.499925 + 21 +20681.535373 + 31 +0.0 + 0 +LINE + 5 +2B7A + 8 +0 + 62 + 0 + 10 +34624.999925 + 20 +20746.487279 + 30 +0.0 + 11 +34643.749925 + 21 +20778.963231 + 31 +0.0 + 0 +LINE + 5 +2B7B + 8 +0 + 62 + 0 + 10 +34681.249925 + 20 +20843.915137 + 30 +0.0 + 11 +34699.999925 + 21 +20876.391089 + 31 +0.0 + 0 +LINE + 5 +2B7C + 8 +0 + 62 + 0 + 10 +34404.775909 + 20 +20430.0 + 30 +0.0 + 11 +34418.749925 + 21 +20454.203705 + 31 +0.0 + 0 +LINE + 5 +2B7D + 8 +0 + 62 + 0 + 10 +34456.249925 + 20 +20519.15561 + 30 +0.0 + 11 +34474.999925 + 21 +20551.631563 + 31 +0.0 + 0 +LINE + 5 +2B7E + 8 +0 + 62 + 0 + 10 +34512.499925 + 20 +20616.583468 + 30 +0.0 + 11 +34531.249925 + 21 +20649.059421 + 31 +0.0 + 0 +LINE + 5 +2B7F + 8 +0 + 62 + 0 + 10 +34568.749925 + 20 +20714.011326 + 30 +0.0 + 11 +34587.499925 + 21 +20746.487279 + 31 +0.0 + 0 +LINE + 5 +2B80 + 8 +0 + 62 + 0 + 10 +34624.999925 + 20 +20811.439184 + 30 +0.0 + 11 +34643.749925 + 21 +20843.915137 + 31 +0.0 + 0 +LINE + 5 +2B81 + 8 +0 + 62 + 0 + 10 +34681.249925 + 20 +20908.867042 + 30 +0.0 + 11 +34693.451044 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B82 + 8 +0 + 62 + 0 + 10 +34399.999925 + 20 +20486.679657 + 30 +0.0 + 11 +34418.749925 + 21 +20519.15561 + 31 +0.0 + 0 +LINE + 5 +2B83 + 8 +0 + 62 + 0 + 10 +34456.249925 + 20 +20584.107515 + 30 +0.0 + 11 +34474.999925 + 21 +20616.583468 + 31 +0.0 + 0 +LINE + 5 +2B84 + 8 +0 + 62 + 0 + 10 +34512.499925 + 20 +20681.535373 + 30 +0.0 + 11 +34531.249925 + 21 +20714.011326 + 31 +0.0 + 0 +LINE + 5 +2B85 + 8 +0 + 62 + 0 + 10 +34568.749925 + 20 +20778.963231 + 30 +0.0 + 11 +34587.499925 + 21 +20811.439184 + 31 +0.0 + 0 +LINE + 5 +2B86 + 8 +0 + 62 + 0 + 10 +34624.999925 + 20 +20876.391089 + 30 +0.0 + 11 +34643.749925 + 21 +20908.867042 + 31 +0.0 + 0 +LINE + 5 +2B87 + 8 +0 + 62 + 0 + 10 +34343.749925 + 20 +20454.203705 + 30 +0.0 + 11 +34362.499925 + 21 +20486.679657 + 31 +0.0 + 0 +LINE + 5 +2B88 + 8 +0 + 62 + 0 + 10 +34399.999925 + 20 +20551.631563 + 30 +0.0 + 11 +34418.749925 + 21 +20584.107515 + 31 +0.0 + 0 +LINE + 5 +2B89 + 8 +0 + 62 + 0 + 10 +34456.249925 + 20 +20649.059421 + 30 +0.0 + 11 +34474.999925 + 21 +20681.535373 + 31 +0.0 + 0 +LINE + 5 +2B8A + 8 +0 + 62 + 0 + 10 +34512.499925 + 20 +20746.487279 + 30 +0.0 + 11 +34531.249925 + 21 +20778.963231 + 31 +0.0 + 0 +LINE + 5 +2B8B + 8 +0 + 62 + 0 + 10 +34568.749925 + 20 +20843.915136 + 30 +0.0 + 11 +34587.499925 + 21 +20876.391089 + 31 +0.0 + 0 +LINE + 5 +2B8C + 8 +0 + 62 + 0 + 10 +34292.27591 + 20 +20430.0 + 30 +0.0 + 11 +34306.249925 + 21 +20454.203705 + 31 +0.0 + 0 +LINE + 5 +2B8D + 8 +0 + 62 + 0 + 10 +34343.749925 + 20 +20519.15561 + 30 +0.0 + 11 +34362.499925 + 21 +20551.631563 + 31 +0.0 + 0 +LINE + 5 +2B8E + 8 +0 + 62 + 0 + 10 +34399.999925 + 20 +20616.583468 + 30 +0.0 + 11 +34418.749925 + 21 +20649.059421 + 31 +0.0 + 0 +LINE + 5 +2B8F + 8 +0 + 62 + 0 + 10 +34456.249925 + 20 +20714.011326 + 30 +0.0 + 11 +34474.999925 + 21 +20746.487278 + 31 +0.0 + 0 +LINE + 5 +2B90 + 8 +0 + 62 + 0 + 10 +34512.499925 + 20 +20811.439184 + 30 +0.0 + 11 +34531.249925 + 21 +20843.915136 + 31 +0.0 + 0 +LINE + 5 +2B91 + 8 +0 + 62 + 0 + 10 +34568.749925 + 20 +20908.867042 + 30 +0.0 + 11 +34580.951044 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2B92 + 8 +0 + 62 + 0 + 10 +34287.499925 + 20 +20486.679657 + 30 +0.0 + 11 +34306.249925 + 21 +20519.15561 + 31 +0.0 + 0 +LINE + 5 +2B93 + 8 +0 + 62 + 0 + 10 +34343.749925 + 20 +20584.107515 + 30 +0.0 + 11 +34362.499925 + 21 +20616.583468 + 31 +0.0 + 0 +LINE + 5 +2B94 + 8 +0 + 62 + 0 + 10 +34399.999925 + 20 +20681.535373 + 30 +0.0 + 11 +34418.749925 + 21 +20714.011326 + 31 +0.0 + 0 +LINE + 5 +2B95 + 8 +0 + 62 + 0 + 10 +34456.249925 + 20 +20778.963231 + 30 +0.0 + 11 +34474.999925 + 21 +20811.439184 + 31 +0.0 + 0 +LINE + 5 +2B96 + 8 +0 + 62 + 0 + 10 +34512.499925 + 20 +20876.391089 + 30 +0.0 + 11 +34531.249925 + 21 +20908.867042 + 31 +0.0 + 0 +LINE + 5 +2B97 + 8 +0 + 62 + 0 + 10 +34231.249925 + 20 +20454.203705 + 30 +0.0 + 11 +34249.999925 + 21 +20486.679657 + 31 +0.0 + 0 +LINE + 5 +2B98 + 8 +0 + 62 + 0 + 10 +34287.499925 + 20 +20551.631562 + 30 +0.0 + 11 +34306.249925 + 21 +20584.107515 + 31 +0.0 + 0 +LINE + 5 +2B99 + 8 +0 + 62 + 0 + 10 +34343.749925 + 20 +20649.05942 + 30 +0.0 + 11 +34362.499925 + 21 +20681.535373 + 31 +0.0 + 0 +LINE + 5 +2B9A + 8 +0 + 62 + 0 + 10 +34399.999925 + 20 +20746.487278 + 30 +0.0 + 11 +34418.749925 + 21 +20778.963231 + 31 +0.0 + 0 +LINE + 5 +2B9B + 8 +0 + 62 + 0 + 10 +34456.249925 + 20 +20843.915136 + 30 +0.0 + 11 +34474.999925 + 21 +20876.391089 + 31 +0.0 + 0 +LINE + 5 +2B9C + 8 +0 + 62 + 0 + 10 +34231.249926 + 20 +20519.15561 + 30 +0.0 + 11 +34249.999926 + 21 +20551.631562 + 31 +0.0 + 0 +LINE + 5 +2B9D + 8 +0 + 62 + 0 + 10 +34287.499926 + 20 +20616.583468 + 30 +0.0 + 11 +34306.249926 + 21 +20649.05942 + 31 +0.0 + 0 +LINE + 5 +2B9E + 8 +0 + 62 + 0 + 10 +34343.749926 + 20 +20714.011326 + 30 +0.0 + 11 +34362.499926 + 21 +20746.487278 + 31 +0.0 + 0 +LINE + 5 +2B9F + 8 +0 + 62 + 0 + 10 +34399.999926 + 20 +20811.439184 + 30 +0.0 + 11 +34418.749926 + 21 +20843.915136 + 31 +0.0 + 0 +LINE + 5 +2BA0 + 8 +0 + 62 + 0 + 10 +34456.249926 + 20 +20908.867041 + 30 +0.0 + 11 +34468.451045 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2BA1 + 8 +0 + 62 + 0 + 10 +34231.249926 + 20 +20584.107515 + 30 +0.0 + 11 +34249.999926 + 21 +20616.583468 + 31 +0.0 + 0 +LINE + 5 +2BA2 + 8 +0 + 62 + 0 + 10 +34287.499926 + 20 +20681.535373 + 30 +0.0 + 11 +34306.249926 + 21 +20714.011326 + 31 +0.0 + 0 +LINE + 5 +2BA3 + 8 +0 + 62 + 0 + 10 +34343.749926 + 20 +20778.963231 + 30 +0.0 + 11 +34362.499926 + 21 +20811.439183 + 31 +0.0 + 0 +LINE + 5 +2BA4 + 8 +0 + 62 + 0 + 10 +34399.999926 + 20 +20876.391089 + 30 +0.0 + 11 +34418.749926 + 21 +20908.867041 + 31 +0.0 + 0 +LINE + 5 +2BA5 + 8 +0 + 62 + 0 + 10 +34231.249926 + 20 +20649.05942 + 30 +0.0 + 11 +34249.999926 + 21 +20681.535373 + 31 +0.0 + 0 +LINE + 5 +2BA6 + 8 +0 + 62 + 0 + 10 +34287.499926 + 20 +20746.487278 + 30 +0.0 + 11 +34306.249926 + 21 +20778.963231 + 31 +0.0 + 0 +LINE + 5 +2BA7 + 8 +0 + 62 + 0 + 10 +34343.749926 + 20 +20843.915136 + 30 +0.0 + 11 +34362.499926 + 21 +20876.391089 + 31 +0.0 + 0 +LINE + 5 +2BA8 + 8 +0 + 62 + 0 + 10 +34231.249926 + 20 +20714.011325 + 30 +0.0 + 11 +34249.999926 + 21 +20746.487278 + 31 +0.0 + 0 +LINE + 5 +2BA9 + 8 +0 + 62 + 0 + 10 +34287.499926 + 20 +20811.439183 + 30 +0.0 + 11 +34306.249926 + 21 +20843.915136 + 31 +0.0 + 0 +LINE + 5 +2BAA + 8 +0 + 62 + 0 + 10 +34343.749926 + 20 +20908.867041 + 30 +0.0 + 11 +34355.951045 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2BAB + 8 +0 + 62 + 0 + 10 +34231.249926 + 20 +20778.963231 + 30 +0.0 + 11 +34249.999926 + 21 +20811.439183 + 31 +0.0 + 0 +LINE + 5 +2BAC + 8 +0 + 62 + 0 + 10 +34287.499926 + 20 +20876.391089 + 30 +0.0 + 11 +34306.249926 + 21 +20908.867041 + 31 +0.0 + 0 +LINE + 5 +2BAD + 8 +0 + 62 + 0 + 10 +34231.249926 + 20 +20843.915136 + 30 +0.0 + 11 +34249.999926 + 21 +20876.391088 + 31 +0.0 + 0 +LINE + 5 +2BAE + 8 +0 + 62 + 0 + 10 +34231.249926 + 20 +20908.867041 + 30 +0.0 + 11 +34243.451046 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2BAF + 8 +0 + 62 + 0 + 10 +34512.499925 + 20 +20486.679658 + 30 +0.0 + 11 +34531.249925 + 21 +20519.15561 + 31 +0.0 + 0 +LINE + 5 +2BB0 + 8 +0 + 62 + 0 + 10 +34568.749925 + 20 +20584.107516 + 30 +0.0 + 11 +34587.499925 + 21 +20616.583468 + 31 +0.0 + 0 +LINE + 5 +2BB1 + 8 +0 + 62 + 0 + 10 +34624.999925 + 20 +20681.535374 + 30 +0.0 + 11 +34643.749925 + 21 +20714.011326 + 31 +0.0 + 0 +LINE + 5 +2BB2 + 8 +0 + 62 + 0 + 10 +34681.249925 + 20 +20778.963231 + 30 +0.0 + 11 +34699.999925 + 21 +20811.439184 + 31 +0.0 + 0 +LINE + 5 +2BB3 + 8 +0 + 62 + 0 + 10 +34737.499925 + 20 +20876.391089 + 30 +0.0 + 11 +34756.249925 + 21 +20908.867042 + 31 +0.0 + 0 +LINE + 5 +2BB4 + 8 +0 + 62 + 0 + 10 +34517.275909 + 20 +20430.0 + 30 +0.0 + 11 +34531.249924 + 21 +20454.203705 + 31 +0.0 + 0 +LINE + 5 +2BB5 + 8 +0 + 62 + 0 + 10 +34568.749924 + 20 +20519.15561 + 30 +0.0 + 11 +34587.499924 + 21 +20551.631563 + 31 +0.0 + 0 +LINE + 5 +2BB6 + 8 +0 + 62 + 0 + 10 +34624.999924 + 20 +20616.583468 + 30 +0.0 + 11 +34643.749924 + 21 +20649.059421 + 31 +0.0 + 0 +LINE + 5 +2BB7 + 8 +0 + 62 + 0 + 10 +34681.249924 + 20 +20714.011326 + 30 +0.0 + 11 +34699.999924 + 21 +20746.487279 + 31 +0.0 + 0 +LINE + 5 +2BB8 + 8 +0 + 62 + 0 + 10 +34737.499924 + 20 +20811.439184 + 30 +0.0 + 11 +34756.249924 + 21 +20843.915137 + 31 +0.0 + 0 +LINE + 5 +2BB9 + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20908.867042 + 30 +0.0 + 11 +34805.951043 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2BBA + 8 +0 + 62 + 0 + 10 +34568.749924 + 20 +20454.203705 + 30 +0.0 + 11 +34587.499924 + 21 +20486.679658 + 31 +0.0 + 0 +LINE + 5 +2BBB + 8 +0 + 62 + 0 + 10 +34624.999924 + 20 +20551.631563 + 30 +0.0 + 11 +34643.749924 + 21 +20584.107516 + 31 +0.0 + 0 +LINE + 5 +2BBC + 8 +0 + 62 + 0 + 10 +34681.249924 + 20 +20649.059421 + 30 +0.0 + 11 +34699.999924 + 21 +20681.535374 + 31 +0.0 + 0 +LINE + 5 +2BBD + 8 +0 + 62 + 0 + 10 +34737.499924 + 20 +20746.487279 + 30 +0.0 + 11 +34756.249924 + 21 +20778.963232 + 31 +0.0 + 0 +LINE + 5 +2BBE + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20843.915137 + 30 +0.0 + 11 +34812.499924 + 21 +20876.39109 + 31 +0.0 + 0 +LINE + 5 +2BBF + 8 +0 + 62 + 0 + 10 +34624.999924 + 20 +20486.679658 + 30 +0.0 + 11 +34643.749924 + 21 +20519.155611 + 31 +0.0 + 0 +LINE + 5 +2BC0 + 8 +0 + 62 + 0 + 10 +34681.249924 + 20 +20584.107516 + 30 +0.0 + 11 +34699.999924 + 21 +20616.583468 + 31 +0.0 + 0 +LINE + 5 +2BC1 + 8 +0 + 62 + 0 + 10 +34737.499924 + 20 +20681.535374 + 30 +0.0 + 11 +34756.249924 + 21 +20714.011326 + 31 +0.0 + 0 +LINE + 5 +2BC2 + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20778.963232 + 30 +0.0 + 11 +34812.499924 + 21 +20811.439184 + 31 +0.0 + 0 +LINE + 5 +2BC3 + 8 +0 + 62 + 0 + 10 +34849.999924 + 20 +20876.39109 + 30 +0.0 + 11 +34868.749924 + 21 +20908.867042 + 31 +0.0 + 0 +LINE + 5 +2BC4 + 8 +0 + 62 + 0 + 10 +34629.775908 + 20 +20430.0 + 30 +0.0 + 11 +34643.749924 + 21 +20454.203705 + 31 +0.0 + 0 +LINE + 5 +2BC5 + 8 +0 + 62 + 0 + 10 +34681.249924 + 20 +20519.155611 + 30 +0.0 + 11 +34699.999924 + 21 +20551.631563 + 31 +0.0 + 0 +LINE + 5 +2BC6 + 8 +0 + 62 + 0 + 10 +34737.499924 + 20 +20616.583469 + 30 +0.0 + 11 +34756.249924 + 21 +20649.059421 + 31 +0.0 + 0 +LINE + 5 +2BC7 + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20714.011326 + 30 +0.0 + 11 +34812.499924 + 21 +20746.487279 + 31 +0.0 + 0 +LINE + 5 +2BC8 + 8 +0 + 62 + 0 + 10 +34849.999924 + 20 +20811.439184 + 30 +0.0 + 11 +34868.749924 + 21 +20843.915137 + 31 +0.0 + 0 +LINE + 5 +2BC9 + 8 +0 + 62 + 0 + 10 +34906.249924 + 20 +20908.867042 + 30 +0.0 + 11 +34918.451043 + 21 +20930.0 + 31 +0.0 + 0 +LINE + 5 +2BCA + 8 +0 + 62 + 0 + 10 +34681.249924 + 20 +20454.203705 + 30 +0.0 + 11 +34699.999924 + 21 +20486.679658 + 31 +0.0 + 0 +LINE + 5 +2BCB + 8 +0 + 62 + 0 + 10 +34737.499924 + 20 +20551.631563 + 30 +0.0 + 11 +34756.249924 + 21 +20584.107516 + 31 +0.0 + 0 +LINE + 5 +2BCC + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20649.059421 + 30 +0.0 + 11 +34812.499924 + 21 +20681.535374 + 31 +0.0 + 0 +LINE + 5 +2BCD + 8 +0 + 62 + 0 + 10 +34849.999924 + 20 +20746.487279 + 30 +0.0 + 11 +34868.749924 + 21 +20778.963232 + 31 +0.0 + 0 +LINE + 5 +2BCE + 8 +0 + 62 + 0 + 10 +34906.249924 + 20 +20843.915137 + 30 +0.0 + 11 +34924.999924 + 21 +20876.39109 + 31 +0.0 + 0 +LINE + 5 +2BCF + 8 +0 + 62 + 0 + 10 +34737.499924 + 20 +20486.679658 + 30 +0.0 + 11 +34756.249924 + 21 +20519.155611 + 31 +0.0 + 0 +LINE + 5 +2BD0 + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20584.107516 + 30 +0.0 + 11 +34812.499924 + 21 +20616.583469 + 31 +0.0 + 0 +LINE + 5 +2BD1 + 8 +0 + 62 + 0 + 10 +34849.999924 + 20 +20681.535374 + 30 +0.0 + 11 +34868.749924 + 21 +20714.011327 + 31 +0.0 + 0 +LINE + 5 +2BD2 + 8 +0 + 62 + 0 + 10 +34906.249924 + 20 +20778.963232 + 30 +0.0 + 11 +34924.999924 + 21 +20811.439185 + 31 +0.0 + 0 +LINE + 5 +2BD3 + 8 +0 + 62 + 0 + 10 +34962.499924 + 20 +20876.39109 + 30 +0.0 + 11 +34970.0 + 21 +20889.381603 + 31 +0.0 + 0 +LINE + 5 +2BD4 + 8 +0 + 62 + 0 + 10 +34742.275908 + 20 +20430.0 + 30 +0.0 + 11 +34756.249924 + 21 +20454.203706 + 31 +0.0 + 0 +LINE + 5 +2BD5 + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20519.155611 + 30 +0.0 + 11 +34812.499924 + 21 +20551.631563 + 31 +0.0 + 0 +LINE + 5 +2BD6 + 8 +0 + 62 + 0 + 10 +34849.999924 + 20 +20616.583469 + 30 +0.0 + 11 +34868.749924 + 21 +20649.059421 + 31 +0.0 + 0 +LINE + 5 +2BD7 + 8 +0 + 62 + 0 + 10 +34906.249924 + 20 +20714.011327 + 30 +0.0 + 11 +34924.999924 + 21 +20746.487279 + 31 +0.0 + 0 +LINE + 5 +2BD8 + 8 +0 + 62 + 0 + 10 +34962.499924 + 20 +20811.439185 + 30 +0.0 + 11 +34970.0 + 21 +20824.429698 + 31 +0.0 + 0 +LINE + 5 +2BD9 + 8 +0 + 62 + 0 + 10 +34793.749924 + 20 +20454.203706 + 30 +0.0 + 11 +34812.499924 + 21 +20486.679658 + 31 +0.0 + 0 +LINE + 5 +2BDA + 8 +0 + 62 + 0 + 10 +34849.999924 + 20 +20551.631564 + 30 +0.0 + 11 +34868.749924 + 21 +20584.107516 + 31 +0.0 + 0 +LINE + 5 +2BDB + 8 +0 + 62 + 0 + 10 +34906.249924 + 20 +20649.059421 + 30 +0.0 + 11 +34924.999924 + 21 +20681.535374 + 31 +0.0 + 0 +LINE + 5 +2BDC + 8 +0 + 62 + 0 + 10 +34962.499924 + 20 +20746.487279 + 30 +0.0 + 11 +34970.0 + 21 +20759.477793 + 31 +0.0 + 0 +LINE + 5 +2BDD + 8 +0 + 62 + 0 + 10 +34849.999923 + 20 +20486.679658 + 30 +0.0 + 11 +34868.749923 + 21 +20519.155611 + 31 +0.0 + 0 +LINE + 5 +2BDE + 8 +0 + 62 + 0 + 10 +34906.249923 + 20 +20584.107516 + 30 +0.0 + 11 +34924.999923 + 21 +20616.583469 + 31 +0.0 + 0 +LINE + 5 +2BDF + 8 +0 + 62 + 0 + 10 +34962.499923 + 20 +20681.535374 + 30 +0.0 + 11 +34970.0 + 21 +20694.525888 + 31 +0.0 + 0 +LINE + 5 +2BE0 + 8 +0 + 62 + 0 + 10 +34854.775907 + 20 +20430.0 + 30 +0.0 + 11 +34868.749923 + 21 +20454.203706 + 31 +0.0 + 0 +LINE + 5 +2BE1 + 8 +0 + 62 + 0 + 10 +34906.249923 + 20 +20519.155611 + 30 +0.0 + 11 +34924.999923 + 21 +20551.631564 + 31 +0.0 + 0 +LINE + 5 +2BE2 + 8 +0 + 62 + 0 + 10 +34962.499923 + 20 +20616.583469 + 30 +0.0 + 11 +34970.0 + 21 +20629.573983 + 31 +0.0 + 0 +LINE + 5 +2BE3 + 8 +0 + 62 + 0 + 10 +34906.249923 + 20 +20454.203706 + 30 +0.0 + 11 +34924.999923 + 21 +20486.679658 + 31 +0.0 + 0 +LINE + 5 +2BE4 + 8 +0 + 62 + 0 + 10 +34962.499923 + 20 +20551.631564 + 30 +0.0 + 11 +34970.0 + 21 +20564.622078 + 31 +0.0 + 0 +LINE + 5 +2BE5 + 8 +0 + 62 + 0 + 10 +34962.499923 + 20 +20486.679659 + 30 +0.0 + 11 +34970.0 + 21 +20499.670173 + 31 +0.0 + 0 +LINE + 5 +2BE6 + 8 +0 + 62 + 0 + 10 +34967.275907 + 20 +20430.0 + 30 +0.0 + 11 +34970.0 + 21 +20434.718268 + 31 +0.0 + 0 +ENDBLK + 5 +2BE7 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X205 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X205 + 1 + + 0 +LINE + 5 +2BE9 + 8 +0 + 62 + 0 + 10 +34271.883092 + 20 +19430.0 + 30 +0.0 + 11 +34771.883092 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BEA + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +19554.893603 + 30 +0.0 + 11 +34595.106397 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BEB + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +19731.670299 + 30 +0.0 + 11 +34418.329701 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BEC + 8 +0 + 62 + 0 + 10 +34220.0 + 20 +19908.446994 + 30 +0.0 + 11 +34241.553006 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BED + 8 +0 + 62 + 0 + 10 +34448.659787 + 20 +19430.0 + 30 +0.0 + 11 +34948.659787 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BEE + 8 +0 + 62 + 0 + 10 +34625.436483 + 20 +19430.0 + 30 +0.0 + 11 +34970.0 + 21 +19774.563517 + 31 +0.0 + 0 +LINE + 5 +2BEF + 8 +0 + 62 + 0 + 10 +34802.213178 + 20 +19430.0 + 30 +0.0 + 11 +34970.0 + 21 +19597.786822 + 31 +0.0 + 0 +LINE + 5 +2BF0 + 8 +0 + 62 + 0 + 10 +34771.533137 + 20 +19430.0 + 30 +0.0 + 11 +34271.533137 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BF1 + 8 +0 + 62 + 0 + 10 +34594.756442 + 20 +19430.0 + 30 +0.0 + 11 +34220.0 + 21 +19804.756442 + 31 +0.0 + 0 +LINE + 5 +2BF2 + 8 +0 + 62 + 0 + 10 +34417.979746 + 20 +19430.0 + 30 +0.0 + 11 +34220.0 + 21 +19627.979746 + 31 +0.0 + 0 +LINE + 5 +2BF3 + 8 +0 + 62 + 0 + 10 +34241.203051 + 20 +19430.0 + 30 +0.0 + 11 +34220.0 + 21 +19451.203051 + 31 +0.0 + 0 +LINE + 5 +2BF4 + 8 +0 + 62 + 0 + 10 +34948.309832 + 20 +19430.0 + 30 +0.0 + 11 +34448.309832 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BF5 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +19585.086528 + 30 +0.0 + 11 +34625.086528 + 21 +19930.0 + 31 +0.0 + 0 +LINE + 5 +2BF6 + 8 +0 + 62 + 0 + 10 +34970.0 + 20 +19761.863223 + 30 +0.0 + 11 +34801.863223 + 21 +19930.0 + 31 +0.0 + 0 +ENDBLK + 5 +2BF7 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D206 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D206 + 1 + + 0 +LINE + 5 +2BF9 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +33321.0 + 20 +5405.0 + 30 +0.0 + 11 +33894.0 + 21 +5405.0 + 31 +0.0 + 0 +INSERT + 5 +2BFA + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +33320.0 + 20 +5405.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2BFB + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +33895.0 + 20 +5405.0 + 30 +0.0 + 0 +TEXT + 5 +2BFC + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +33541.875 + 20 +5492.5 + 30 +0.0 + 40 +175.0 + 1 +11 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +33607.5 + 21 +5580.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2BFD + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +33320.0 + 20 +6755.0 + 30 +0.0 + 0 +POINT + 5 +2BFE + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +33895.0 + 20 +6755.0 + 30 +0.0 + 0 +POINT + 5 +2BFF + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +33895.0 + 20 +5405.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C00 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D207 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D207 + 1 + + 0 +LINE + 5 +2C02 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +33896.0 + 20 +5405.0 + 30 +0.0 + 11 +34199.0 + 21 +5405.0 + 31 +0.0 + 0 +INSERT + 5 +2C03 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +33895.0 + 20 +5405.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2C04 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +34200.0 + 20 +5405.0 + 30 +0.0 + 0 +TEXT + 5 +2C05 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +34003.75 + 20 +5492.5 + 30 +0.0 + 40 +175.0 + 1 +6 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +34047.5 + 21 +5580.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C06 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +33895.0 + 20 +6755.0 + 30 +0.0 + 0 +POINT + 5 +2C07 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +34200.0 + 20 +6775.0 + 30 +0.0 + 0 +POINT + 5 +2C08 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +34200.0 + 20 +5405.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C09 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D208 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D208 + 1 + + 0 +LINE + 5 +2C0B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +34201.0 + 20 +5405.0 + 30 +0.0 + 11 +34599.0 + 21 +5405.0 + 31 +0.0 + 0 +INSERT + 5 +2C0C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +34200.0 + 20 +5405.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2C0D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +34600.0 + 20 +5405.0 + 30 +0.0 + 0 +TEXT + 5 +2C0E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +34356.25 + 20 +5492.5 + 30 +0.0 + 40 +175.0 + 1 +8 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +34400.0 + 21 +5580.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C0F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +34200.0 + 20 +6775.0 + 30 +0.0 + 0 +POINT + 5 +2C10 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +34600.0 + 20 +6775.0 + 30 +0.0 + 0 +POINT + 5 +2C11 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +34600.0 + 20 +5405.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C12 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D209 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D209 + 1 + + 0 +LINE + 5 +2C14 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +34601.0 + 20 +5405.0 + 30 +0.0 + 11 +36424.0 + 21 +5405.0 + 31 +0.0 + 0 +INSERT + 5 +2C15 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +34600.0 + 20 +5405.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2C16 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +36425.0 + 20 +5405.0 + 30 +0.0 + 0 +TEXT + 5 +2C17 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +35403.125 + 20 +5492.5 + 30 +0.0 + 40 +175.0 + 1 +36 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +35512.5 + 21 +5580.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C18 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +34600.0 + 20 +6775.0 + 30 +0.0 + 0 +POINT + 5 +2C19 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +36425.0 + 20 +6755.0 + 30 +0.0 + 0 +POINT + 5 +2C1A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +36425.0 + 20 +5405.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C1B + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D210 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D210 + 1 + + 0 +LINE + 5 +2C1D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +36426.0 + 20 +5405.0 + 30 +0.0 + 11 +36504.0 + 21 +5405.0 + 31 +0.0 + 0 +INSERT + 5 +2C1E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +36425.0 + 20 +5405.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2C1F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +36505.0 + 20 +5405.0 + 30 +0.0 + 0 +TEXT + 5 +2C20 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +36558.125 + 20 +5492.5 + 30 +0.0 + 40 +175.0 + 1 +1 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +36580.0 + 21 +5580.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C21 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +36425.0 + 20 +6755.0 + 30 +0.0 + 0 +POINT + 5 +2C22 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +36505.0 + 20 +6755.0 + 30 +0.0 + 0 +POINT + 5 +2C23 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +36505.0 + 20 +5405.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C24 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D211 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D211 + 1 + + 0 +LINE + 5 +2C26 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +37996.0 + 20 +9155.0 + 30 +0.0 + 11 +38574.0 + 21 +9155.0 + 31 +0.0 + 0 +INSERT + 5 +2C27 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +37995.0 + 20 +9155.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2C28 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +38575.0 + 20 +9155.0 + 30 +0.0 + 0 +TEXT + 5 +2C29 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +38219.375 + 20 +9242.5 + 30 +0.0 + 40 +175.0 + 1 +11 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +38285.0 + 21 +9330.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C2A + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +37995.0 + 20 +10130.0 + 30 +0.0 + 0 +POINT + 5 +2C2B + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +38575.0 + 20 +10130.0 + 30 +0.0 + 0 +POINT + 5 +2C2C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +38575.0 + 20 +9155.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C2D + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D212 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D212 + 1 + + 0 +LINE + 5 +2C2F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +38576.0 + 20 +9155.0 + 30 +0.0 + 11 +39239.0 + 21 +9155.0 + 31 +0.0 + 0 +INSERT + 5 +2C30 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +38575.0 + 20 +9155.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2C31 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +39240.0 + 20 +9155.0 + 30 +0.0 + 0 +TEXT + 5 +2C32 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +38820.0 + 20 +9242.5 + 30 +0.0 + 40 +175.0 + 1 +13 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +38907.5 + 21 +9330.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C33 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +38575.0 + 20 +10130.0 + 30 +0.0 + 0 +POINT + 5 +2C34 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39240.0 + 20 +10720.0 + 30 +0.0 + 0 +POINT + 5 +2C35 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39240.0 + 20 +9155.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C36 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D213 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D213 + 1 + + 0 +LINE + 5 +2C38 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +39241.0 + 20 +9155.0 + 30 +0.0 + 11 +39834.0 + 21 +9155.0 + 31 +0.0 + 0 +INSERT + 5 +2C39 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +39240.0 + 20 +9155.0 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +2C3A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +39835.0 + 20 +9155.0 + 30 +0.0 + 0 +TEXT + 5 +2C3B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +39471.875 + 20 +9242.5 + 30 +0.0 + 40 +175.0 + 1 +11 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +39537.5 + 21 +9330.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C3C + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39240.0 + 20 +10720.0 + 30 +0.0 + 0 +POINT + 5 +2C3D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39835.0 + 20 +10125.0 + 30 +0.0 + 0 +POINT + 5 +2C3E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39835.0 + 20 +9155.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C3F + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D214 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D214 + 1 + + 0 +LINE + 5 +2C41 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +13254.0 + 30 +0.0 + 11 +40740.0 + 21 +12626.0 + 31 +0.0 + 0 +INSERT + 5 +2C42 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +13255.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2C43 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +12625.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2C44 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40652.5 + 20 +12852.5 + 30 +0.0 + 40 +175.0 + 1 +12 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +40565.0 + 21 +12940.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C45 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39815.0 + 20 +13255.0 + 30 +0.0 + 0 +POINT + 5 +2C46 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39815.0 + 20 +12625.0 + 30 +0.0 + 0 +POINT + 5 +2C47 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +12625.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C48 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D215 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D215 + 1 + + 0 +LINE + 5 +2C4A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +12624.0 + 30 +0.0 + 11 +40740.0 + 21 +11956.0 + 31 +0.0 + 0 +INSERT + 5 +2C4B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +12625.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2C4C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +11955.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2C4D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40652.5 + 20 +12202.5 + 30 +0.0 + 40 +175.0 + 1 +13 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +40565.0 + 21 +12290.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C4E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39815.0 + 20 +12625.0 + 30 +0.0 + 0 +POINT + 5 +2C4F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39250.0 + 20 +11955.0 + 30 +0.0 + 0 +POINT + 5 +2C50 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +11955.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C51 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D216 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D216 + 1 + + 0 +LINE + 5 +2C53 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +11954.0 + 30 +0.0 + 11 +40740.0 + 21 +11366.0 + 31 +0.0 + 0 +INSERT + 5 +2C54 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +11955.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2C55 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +11365.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2C56 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40652.5 + 20 +11594.375 + 30 +0.0 + 40 +175.0 + 1 +11 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +40565.0 + 21 +11660.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C57 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39250.0 + 20 +11955.0 + 30 +0.0 + 0 +POINT + 5 +2C58 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39240.0 + 20 +11365.0 + 30 +0.0 + 0 +POINT + 5 +2C59 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +11365.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C5A + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D217 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D217 + 1 + + 0 +LINE + 5 +2C5C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +11364.0 + 30 +0.0 + 11 +40740.0 + 21 +10706.0 + 31 +0.0 + 0 +INSERT + 5 +2C5D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +11365.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2C5E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +40740.0 + 20 +10705.0 + 30 +0.0 + 50 +270.0 + 0 +TEXT + 5 +2C5F + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +40652.5 + 20 +10947.5 + 30 +0.0 + 40 +175.0 + 1 +13 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +40565.0 + 21 +11035.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2C60 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39240.0 + 20 +11365.0 + 30 +0.0 + 0 +POINT + 5 +2C61 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +39240.0 + 20 +10705.0 + 30 +0.0 + 0 +POINT + 5 +2C62 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +40740.0 + 20 +10705.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C63 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X218 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X218 + 1 + + 0 +LINE + 5 +2C65 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +9986.355394 + 30 +0.0 + 11 +34265.625 + 21 +9986.355394 + 31 +0.0 + 0 +LINE + 5 +2C66 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +9986.355394 + 30 +0.0 + 11 +34546.875 + 21 +9986.355394 + 31 +0.0 + 0 +LINE + 5 +2C67 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +10067.545275 + 30 +0.0 + 11 +34406.25 + 21 +10067.545275 + 31 +0.0 + 0 +LINE + 5 +2C68 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +10067.545275 + 30 +0.0 + 11 +34600.0 + 21 +10067.545275 + 31 +0.0 + 0 +LINE + 5 +2C69 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +10148.735156 + 30 +0.0 + 11 +34265.625 + 21 +10148.735156 + 31 +0.0 + 0 +LINE + 5 +2C6A + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +10148.735156 + 30 +0.0 + 11 +34546.875 + 21 +10148.735156 + 31 +0.0 + 0 +LINE + 5 +2C6B + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +10229.925038 + 30 +0.0 + 11 +34406.25 + 21 +10229.925038 + 31 +0.0 + 0 +LINE + 5 +2C6C + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +10229.925038 + 30 +0.0 + 11 +34600.0 + 21 +10229.925038 + 31 +0.0 + 0 +LINE + 5 +2C6D + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +10311.114919 + 30 +0.0 + 11 +34265.625 + 21 +10311.114919 + 31 +0.0 + 0 +LINE + 5 +2C6E + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +10311.114919 + 30 +0.0 + 11 +34546.875 + 21 +10311.114919 + 31 +0.0 + 0 +LINE + 5 +2C6F + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +10392.3048 + 30 +0.0 + 11 +34406.25 + 21 +10392.3048 + 31 +0.0 + 0 +LINE + 5 +2C70 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +10392.3048 + 30 +0.0 + 11 +34600.0 + 21 +10392.3048 + 31 +0.0 + 0 +LINE + 5 +2C71 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +10473.494681 + 30 +0.0 + 11 +34265.625 + 21 +10473.494681 + 31 +0.0 + 0 +LINE + 5 +2C72 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +10473.494681 + 30 +0.0 + 11 +34546.875 + 21 +10473.494681 + 31 +0.0 + 0 +LINE + 5 +2C73 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +10554.684563 + 30 +0.0 + 11 +34406.25 + 21 +10554.684563 + 31 +0.0 + 0 +LINE + 5 +2C74 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +10554.684563 + 30 +0.0 + 11 +34600.0 + 21 +10554.684563 + 31 +0.0 + 0 +LINE + 5 +2C75 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +10635.874444 + 30 +0.0 + 11 +34265.625 + 21 +10635.874444 + 31 +0.0 + 0 +LINE + 5 +2C76 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +10635.874444 + 30 +0.0 + 11 +34546.875 + 21 +10635.874444 + 31 +0.0 + 0 +LINE + 5 +2C77 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +10717.064325 + 30 +0.0 + 11 +34406.25 + 21 +10717.064325 + 31 +0.0 + 0 +LINE + 5 +2C78 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +10717.064325 + 30 +0.0 + 11 +34600.0 + 21 +10717.064325 + 31 +0.0 + 0 +LINE + 5 +2C79 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +10798.254206 + 30 +0.0 + 11 +34265.625 + 21 +10798.254206 + 31 +0.0 + 0 +LINE + 5 +2C7A + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +10798.254206 + 30 +0.0 + 11 +34546.875 + 21 +10798.254206 + 31 +0.0 + 0 +LINE + 5 +2C7B + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +10879.444088 + 30 +0.0 + 11 +34406.25 + 21 +10879.444088 + 31 +0.0 + 0 +LINE + 5 +2C7C + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +10879.444088 + 30 +0.0 + 11 +34600.0 + 21 +10879.444088 + 31 +0.0 + 0 +LINE + 5 +2C7D + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +10960.633969 + 30 +0.0 + 11 +34265.625 + 21 +10960.633969 + 31 +0.0 + 0 +LINE + 5 +2C7E + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +10960.633969 + 30 +0.0 + 11 +34546.875 + 21 +10960.633969 + 31 +0.0 + 0 +LINE + 5 +2C7F + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +11041.82385 + 30 +0.0 + 11 +34406.25 + 21 +11041.82385 + 31 +0.0 + 0 +LINE + 5 +2C80 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +11041.82385 + 30 +0.0 + 11 +34600.0 + 21 +11041.82385 + 31 +0.0 + 0 +LINE + 5 +2C81 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +11123.013731 + 30 +0.0 + 11 +34265.625 + 21 +11123.013731 + 31 +0.0 + 0 +LINE + 5 +2C82 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +11123.013731 + 30 +0.0 + 11 +34546.875 + 21 +11123.013731 + 31 +0.0 + 0 +LINE + 5 +2C83 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +11204.203613 + 30 +0.0 + 11 +34406.25 + 21 +11204.203613 + 31 +0.0 + 0 +LINE + 5 +2C84 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +11204.203613 + 30 +0.0 + 11 +34600.0 + 21 +11204.203613 + 31 +0.0 + 0 +LINE + 5 +2C85 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +11285.393494 + 30 +0.0 + 11 +34265.625 + 21 +11285.393494 + 31 +0.0 + 0 +LINE + 5 +2C86 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +11285.393494 + 30 +0.0 + 11 +34546.875 + 21 +11285.393494 + 31 +0.0 + 0 +LINE + 5 +2C87 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +11366.583375 + 30 +0.0 + 11 +34406.25 + 21 +11366.583375 + 31 +0.0 + 0 +LINE + 5 +2C88 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +11366.583375 + 30 +0.0 + 11 +34600.0 + 21 +11366.583375 + 31 +0.0 + 0 +LINE + 5 +2C89 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +11447.773256 + 30 +0.0 + 11 +34265.625 + 21 +11447.773256 + 31 +0.0 + 0 +LINE + 5 +2C8A + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +11447.773256 + 30 +0.0 + 11 +34546.875 + 21 +11447.773256 + 31 +0.0 + 0 +LINE + 5 +2C8B + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +11528.963138 + 30 +0.0 + 11 +34406.25 + 21 +11528.963138 + 31 +0.0 + 0 +LINE + 5 +2C8C + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +11528.963138 + 30 +0.0 + 11 +34600.0 + 21 +11528.963138 + 31 +0.0 + 0 +LINE + 5 +2C8D + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +11610.153019 + 30 +0.0 + 11 +34265.625 + 21 +11610.153019 + 31 +0.0 + 0 +LINE + 5 +2C8E + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +11610.153019 + 30 +0.0 + 11 +34546.875 + 21 +11610.153019 + 31 +0.0 + 0 +LINE + 5 +2C8F + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +11691.3429 + 30 +0.0 + 11 +34406.25 + 21 +11691.3429 + 31 +0.0 + 0 +LINE + 5 +2C90 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +11691.3429 + 30 +0.0 + 11 +34600.0 + 21 +11691.3429 + 31 +0.0 + 0 +LINE + 5 +2C91 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +11772.532781 + 30 +0.0 + 11 +34265.625 + 21 +11772.532781 + 31 +0.0 + 0 +LINE + 5 +2C92 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +11772.532781 + 30 +0.0 + 11 +34546.875 + 21 +11772.532781 + 31 +0.0 + 0 +LINE + 5 +2C93 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +11853.722663 + 30 +0.0 + 11 +34406.25 + 21 +11853.722663 + 31 +0.0 + 0 +LINE + 5 +2C94 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +11853.722663 + 30 +0.0 + 11 +34600.0 + 21 +11853.722663 + 31 +0.0 + 0 +LINE + 5 +2C95 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +11934.912544 + 30 +0.0 + 11 +34265.625 + 21 +11934.912544 + 31 +0.0 + 0 +LINE + 5 +2C96 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +11934.912544 + 30 +0.0 + 11 +34546.875 + 21 +11934.912544 + 31 +0.0 + 0 +LINE + 5 +2C97 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +12016.102425 + 30 +0.0 + 11 +34406.25 + 21 +12016.102425 + 31 +0.0 + 0 +LINE + 5 +2C98 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +12016.102425 + 30 +0.0 + 11 +34600.0 + 21 +12016.102425 + 31 +0.0 + 0 +LINE + 5 +2C99 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +12097.292306 + 30 +0.0 + 11 +34265.625 + 21 +12097.292306 + 31 +0.0 + 0 +LINE + 5 +2C9A + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +12097.292306 + 30 +0.0 + 11 +34546.875 + 21 +12097.292306 + 31 +0.0 + 0 +LINE + 5 +2C9B + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +12178.482188 + 30 +0.0 + 11 +34406.25 + 21 +12178.482188 + 31 +0.0 + 0 +LINE + 5 +2C9C + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +12178.482188 + 30 +0.0 + 11 +34600.0 + 21 +12178.482188 + 31 +0.0 + 0 +LINE + 5 +2C9D + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +12259.672069 + 30 +0.0 + 11 +34265.625 + 21 +12259.672069 + 31 +0.0 + 0 +LINE + 5 +2C9E + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +12259.672069 + 30 +0.0 + 11 +34546.875 + 21 +12259.672069 + 31 +0.0 + 0 +LINE + 5 +2C9F + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +12340.86195 + 30 +0.0 + 11 +34406.25 + 21 +12340.86195 + 31 +0.0 + 0 +LINE + 5 +2CA0 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +12340.86195 + 30 +0.0 + 11 +34600.0 + 21 +12340.86195 + 31 +0.0 + 0 +LINE + 5 +2CA1 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +12422.051831 + 30 +0.0 + 11 +34265.625 + 21 +12422.051831 + 31 +0.0 + 0 +LINE + 5 +2CA2 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +12422.051831 + 30 +0.0 + 11 +34546.875 + 21 +12422.051831 + 31 +0.0 + 0 +LINE + 5 +2CA3 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +12503.241713 + 30 +0.0 + 11 +34406.25 + 21 +12503.241713 + 31 +0.0 + 0 +LINE + 5 +2CA4 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +12503.241713 + 30 +0.0 + 11 +34600.0 + 21 +12503.241713 + 31 +0.0 + 0 +LINE + 5 +2CA5 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +12584.431594 + 30 +0.0 + 11 +34265.625 + 21 +12584.431594 + 31 +0.0 + 0 +LINE + 5 +2CA6 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +12584.431594 + 30 +0.0 + 11 +34546.875 + 21 +12584.431594 + 31 +0.0 + 0 +LINE + 5 +2CA7 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +12665.621475 + 30 +0.0 + 11 +34406.25 + 21 +12665.621475 + 31 +0.0 + 0 +LINE + 5 +2CA8 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +12665.621475 + 30 +0.0 + 11 +34600.0 + 21 +12665.621475 + 31 +0.0 + 0 +LINE + 5 +2CA9 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +12746.811356 + 30 +0.0 + 11 +34265.625 + 21 +12746.811356 + 31 +0.0 + 0 +LINE + 5 +2CAA + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +12746.811356 + 30 +0.0 + 11 +34546.875 + 21 +12746.811356 + 31 +0.0 + 0 +LINE + 5 +2CAB + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +12828.001238 + 30 +0.0 + 11 +34406.25 + 21 +12828.001238 + 31 +0.0 + 0 +LINE + 5 +2CAC + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +12828.001238 + 30 +0.0 + 11 +34600.0 + 21 +12828.001238 + 31 +0.0 + 0 +LINE + 5 +2CAD + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +12909.191119 + 30 +0.0 + 11 +34265.625 + 21 +12909.191119 + 31 +0.0 + 0 +LINE + 5 +2CAE + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +12909.191119 + 30 +0.0 + 11 +34546.875 + 21 +12909.191119 + 31 +0.0 + 0 +LINE + 5 +2CAF + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +12990.381 + 30 +0.0 + 11 +34406.25 + 21 +12990.381 + 31 +0.0 + 0 +LINE + 5 +2CB0 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +12990.381 + 30 +0.0 + 11 +34600.0 + 21 +12990.381 + 31 +0.0 + 0 +LINE + 5 +2CB1 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +13071.570881 + 30 +0.0 + 11 +34265.625 + 21 +13071.570881 + 31 +0.0 + 0 +LINE + 5 +2CB2 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +13071.570881 + 30 +0.0 + 11 +34546.875 + 21 +13071.570881 + 31 +0.0 + 0 +LINE + 5 +2CB3 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +13152.760763 + 30 +0.0 + 11 +34406.25 + 21 +13152.760763 + 31 +0.0 + 0 +LINE + 5 +2CB4 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +13152.760763 + 30 +0.0 + 11 +34600.0 + 21 +13152.760763 + 31 +0.0 + 0 +LINE + 5 +2CB5 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +13233.950644 + 30 +0.0 + 11 +34265.625 + 21 +13233.950644 + 31 +0.0 + 0 +LINE + 5 +2CB6 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +13233.950644 + 30 +0.0 + 11 +34546.875 + 21 +13233.950644 + 31 +0.0 + 0 +LINE + 5 +2CB7 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +9905.165513 + 30 +0.0 + 11 +34406.25 + 21 +9905.165513 + 31 +0.0 + 0 +LINE + 5 +2CB8 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +9905.165513 + 30 +0.0 + 11 +34600.0 + 21 +9905.165513 + 31 +0.0 + 0 +LINE + 5 +2CB9 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +9823.975631 + 30 +0.0 + 11 +34265.625 + 21 +9823.975631 + 31 +0.0 + 0 +LINE + 5 +2CBA + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +9823.975631 + 30 +0.0 + 11 +34546.875 + 21 +9823.975631 + 31 +0.0 + 0 +LINE + 5 +2CBB + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +9742.78575 + 30 +0.0 + 11 +34406.25 + 21 +9742.78575 + 31 +0.0 + 0 +LINE + 5 +2CBC + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +9742.78575 + 30 +0.0 + 11 +34600.0 + 21 +9742.78575 + 31 +0.0 + 0 +LINE + 5 +2CBD + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +9661.595869 + 30 +0.0 + 11 +34265.625 + 21 +9661.595869 + 31 +0.0 + 0 +LINE + 5 +2CBE + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +9661.595869 + 30 +0.0 + 11 +34546.875 + 21 +9661.595869 + 31 +0.0 + 0 +LINE + 5 +2CBF + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +9580.405988 + 30 +0.0 + 11 +34406.25 + 21 +9580.405988 + 31 +0.0 + 0 +LINE + 5 +2CC0 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +9580.405988 + 30 +0.0 + 11 +34600.0 + 21 +9580.405988 + 31 +0.0 + 0 +LINE + 5 +2CC1 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +9499.216106 + 30 +0.0 + 11 +34265.625 + 21 +9499.216106 + 31 +0.0 + 0 +LINE + 5 +2CC2 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +9499.216106 + 30 +0.0 + 11 +34546.875 + 21 +9499.216106 + 31 +0.0 + 0 +LINE + 5 +2CC3 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +9418.026225 + 30 +0.0 + 11 +34406.25 + 21 +9418.026225 + 31 +0.0 + 0 +LINE + 5 +2CC4 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +9418.026225 + 30 +0.0 + 11 +34600.0 + 21 +9418.026225 + 31 +0.0 + 0 +LINE + 5 +2CC5 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +9336.836344 + 30 +0.0 + 11 +34265.625 + 21 +9336.836344 + 31 +0.0 + 0 +LINE + 5 +2CC6 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +9336.836344 + 30 +0.0 + 11 +34546.875 + 21 +9336.836344 + 31 +0.0 + 0 +LINE + 5 +2CC7 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +9255.646463 + 30 +0.0 + 11 +34406.25 + 21 +9255.646463 + 31 +0.0 + 0 +LINE + 5 +2CC8 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +9255.646463 + 30 +0.0 + 11 +34600.0 + 21 +9255.646463 + 31 +0.0 + 0 +LINE + 5 +2CC9 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +9174.456581 + 30 +0.0 + 11 +34265.625 + 21 +9174.456581 + 31 +0.0 + 0 +LINE + 5 +2CCA + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +9174.456581 + 30 +0.0 + 11 +34546.875 + 21 +9174.456581 + 31 +0.0 + 0 +LINE + 5 +2CCB + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +9093.2667 + 30 +0.0 + 11 +34406.25 + 21 +9093.2667 + 31 +0.0 + 0 +LINE + 5 +2CCC + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +9093.2667 + 30 +0.0 + 11 +34600.0 + 21 +9093.2667 + 31 +0.0 + 0 +LINE + 5 +2CCD + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +9012.076819 + 30 +0.0 + 11 +34265.625 + 21 +9012.076819 + 31 +0.0 + 0 +LINE + 5 +2CCE + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +9012.076819 + 30 +0.0 + 11 +34546.875 + 21 +9012.076819 + 31 +0.0 + 0 +LINE + 5 +2CCF + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +8930.886938 + 30 +0.0 + 11 +34406.25 + 21 +8930.886938 + 31 +0.0 + 0 +LINE + 5 +2CD0 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +8930.886938 + 30 +0.0 + 11 +34600.0 + 21 +8930.886938 + 31 +0.0 + 0 +LINE + 5 +2CD1 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +8849.697056 + 30 +0.0 + 11 +34265.625 + 21 +8849.697056 + 31 +0.0 + 0 +LINE + 5 +2CD2 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +8849.697056 + 30 +0.0 + 11 +34546.875 + 21 +8849.697056 + 31 +0.0 + 0 +LINE + 5 +2CD3 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +8768.507175 + 30 +0.0 + 11 +34406.25 + 21 +8768.507175 + 31 +0.0 + 0 +LINE + 5 +2CD4 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +8768.507175 + 30 +0.0 + 11 +34600.0 + 21 +8768.507175 + 31 +0.0 + 0 +LINE + 5 +2CD5 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +8687.317294 + 30 +0.0 + 11 +34265.625 + 21 +8687.317294 + 31 +0.0 + 0 +LINE + 5 +2CD6 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +8687.317294 + 30 +0.0 + 11 +34546.875 + 21 +8687.317294 + 31 +0.0 + 0 +LINE + 5 +2CD7 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +8606.127413 + 30 +0.0 + 11 +34406.25 + 21 +8606.127413 + 31 +0.0 + 0 +LINE + 5 +2CD8 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +8606.127413 + 30 +0.0 + 11 +34600.0 + 21 +8606.127413 + 31 +0.0 + 0 +LINE + 5 +2CD9 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +8524.937531 + 30 +0.0 + 11 +34265.625 + 21 +8524.937531 + 31 +0.0 + 0 +LINE + 5 +2CDA + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +8524.937531 + 30 +0.0 + 11 +34546.875 + 21 +8524.937531 + 31 +0.0 + 0 +LINE + 5 +2CDB + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +8443.74765 + 30 +0.0 + 11 +34406.25 + 21 +8443.74765 + 31 +0.0 + 0 +LINE + 5 +2CDC + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +8443.74765 + 30 +0.0 + 11 +34600.0 + 21 +8443.74765 + 31 +0.0 + 0 +LINE + 5 +2CDD + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +8362.557769 + 30 +0.0 + 11 +34265.625 + 21 +8362.557769 + 31 +0.0 + 0 +LINE + 5 +2CDE + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +8362.557769 + 30 +0.0 + 11 +34546.875 + 21 +8362.557769 + 31 +0.0 + 0 +LINE + 5 +2CDF + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +8281.367888 + 30 +0.0 + 11 +34406.25 + 21 +8281.367888 + 31 +0.0 + 0 +LINE + 5 +2CE0 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +8281.367888 + 30 +0.0 + 11 +34600.0 + 21 +8281.367888 + 31 +0.0 + 0 +LINE + 5 +2CE1 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +8200.178006 + 30 +0.0 + 11 +34265.625 + 21 +8200.178006 + 31 +0.0 + 0 +LINE + 5 +2CE2 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +8200.178006 + 30 +0.0 + 11 +34546.875 + 21 +8200.178006 + 31 +0.0 + 0 +LINE + 5 +2CE3 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +8118.988125 + 30 +0.0 + 11 +34406.25 + 21 +8118.988125 + 31 +0.0 + 0 +LINE + 5 +2CE4 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +8118.988125 + 30 +0.0 + 11 +34600.0 + 21 +8118.988125 + 31 +0.0 + 0 +LINE + 5 +2CE5 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +8037.798244 + 30 +0.0 + 11 +34265.625 + 21 +8037.798244 + 31 +0.0 + 0 +LINE + 5 +2CE6 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +8037.798244 + 30 +0.0 + 11 +34546.875 + 21 +8037.798244 + 31 +0.0 + 0 +LINE + 5 +2CE7 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +7956.608363 + 30 +0.0 + 11 +34406.25 + 21 +7956.608363 + 31 +0.0 + 0 +LINE + 5 +2CE8 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +7956.608363 + 30 +0.0 + 11 +34600.0 + 21 +7956.608363 + 31 +0.0 + 0 +LINE + 5 +2CE9 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +7875.418481 + 30 +0.0 + 11 +34265.625 + 21 +7875.418481 + 31 +0.0 + 0 +LINE + 5 +2CEA + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +7875.418481 + 30 +0.0 + 11 +34546.875 + 21 +7875.418481 + 31 +0.0 + 0 +LINE + 5 +2CEB + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +7794.2286 + 30 +0.0 + 11 +34406.25 + 21 +7794.2286 + 31 +0.0 + 0 +LINE + 5 +2CEC + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +7794.2286 + 30 +0.0 + 11 +34600.0 + 21 +7794.2286 + 31 +0.0 + 0 +LINE + 5 +2CED + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +7713.038719 + 30 +0.0 + 11 +34265.625 + 21 +7713.038719 + 31 +0.0 + 0 +LINE + 5 +2CEE + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +7713.038719 + 30 +0.0 + 11 +34546.875 + 21 +7713.038719 + 31 +0.0 + 0 +LINE + 5 +2CEF + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +7631.848838 + 30 +0.0 + 11 +34406.25 + 21 +7631.848838 + 31 +0.0 + 0 +LINE + 5 +2CF0 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +7631.848838 + 30 +0.0 + 11 +34600.0 + 21 +7631.848838 + 31 +0.0 + 0 +LINE + 5 +2CF1 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +7550.658956 + 30 +0.0 + 11 +34265.625 + 21 +7550.658956 + 31 +0.0 + 0 +LINE + 5 +2CF2 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +7550.658956 + 30 +0.0 + 11 +34546.875 + 21 +7550.658956 + 31 +0.0 + 0 +LINE + 5 +2CF3 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +7469.469075 + 30 +0.0 + 11 +34406.25 + 21 +7469.469075 + 31 +0.0 + 0 +LINE + 5 +2CF4 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +7469.469075 + 30 +0.0 + 11 +34600.0 + 21 +7469.469075 + 31 +0.0 + 0 +LINE + 5 +2CF5 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +7388.279194 + 30 +0.0 + 11 +34265.625 + 21 +7388.279194 + 31 +0.0 + 0 +LINE + 5 +2CF6 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +7388.279194 + 30 +0.0 + 11 +34546.875 + 21 +7388.279194 + 31 +0.0 + 0 +LINE + 5 +2CF7 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +7307.089313 + 30 +0.0 + 11 +34406.25 + 21 +7307.089313 + 31 +0.0 + 0 +LINE + 5 +2CF8 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +7307.089313 + 30 +0.0 + 11 +34600.0 + 21 +7307.089313 + 31 +0.0 + 0 +LINE + 5 +2CF9 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +7225.899431 + 30 +0.0 + 11 +34265.625 + 21 +7225.899431 + 31 +0.0 + 0 +LINE + 5 +2CFA + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +7225.899431 + 30 +0.0 + 11 +34546.875 + 21 +7225.899431 + 31 +0.0 + 0 +LINE + 5 +2CFB + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +7144.70955 + 30 +0.0 + 11 +34406.25 + 21 +7144.70955 + 31 +0.0 + 0 +LINE + 5 +2CFC + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +7144.70955 + 30 +0.0 + 11 +34600.0 + 21 +7144.70955 + 31 +0.0 + 0 +LINE + 5 +2CFD + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +7063.519669 + 30 +0.0 + 11 +34265.625 + 21 +7063.519669 + 31 +0.0 + 0 +LINE + 5 +2CFE + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +7063.519669 + 30 +0.0 + 11 +34546.875 + 21 +7063.519669 + 31 +0.0 + 0 +LINE + 5 +2CFF + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +6982.329788 + 30 +0.0 + 11 +34406.25 + 21 +6982.329788 + 31 +0.0 + 0 +LINE + 5 +2D00 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +6982.329788 + 30 +0.0 + 11 +34600.0 + 21 +6982.329788 + 31 +0.0 + 0 +LINE + 5 +2D01 + 8 +0 + 62 + 0 + 10 +34200.0 + 20 +6901.139906 + 30 +0.0 + 11 +34265.625 + 21 +6901.139906 + 31 +0.0 + 0 +LINE + 5 +2D02 + 8 +0 + 62 + 0 + 10 +34453.125 + 20 +6901.139906 + 30 +0.0 + 11 +34546.875 + 21 +6901.139906 + 31 +0.0 + 0 +LINE + 5 +2D03 + 8 +0 + 62 + 0 + 10 +34312.5 + 20 +6819.950025 + 30 +0.0 + 11 +34406.25 + 21 +6819.950025 + 31 +0.0 + 0 +LINE + 5 +2D04 + 8 +0 + 62 + 0 + 10 +34593.75 + 20 +6819.950025 + 30 +0.0 + 11 +34600.0 + 21 +6819.950025 + 31 +0.0 + 0 +LINE + 5 +2D05 + 8 +0 + 62 + 0 + 10 +34593.749868 + 20 +9580.405953 + 30 +0.0 + 11 +34546.874868 + 21 +9661.595835 + 31 +0.0 + 0 +LINE + 5 +2D06 + 8 +0 + 62 + 0 + 10 +34453.124868 + 20 +9823.975598 + 30 +0.0 + 11 +34406.249868 + 21 +9905.16548 + 31 +0.0 + 0 +LINE + 5 +2D07 + 8 +0 + 62 + 0 + 10 +34312.499868 + 20 +10067.545243 + 30 +0.0 + 11 +34265.624868 + 21 +10148.735125 + 31 +0.0 + 0 +LINE + 5 +2D08 + 8 +0 + 62 + 0 + 10 +34593.749869 + 20 +9418.02619 + 30 +0.0 + 11 +34546.874869 + 21 +9499.216072 + 31 +0.0 + 0 +LINE + 5 +2D09 + 8 +0 + 62 + 0 + 10 +34453.124869 + 20 +9661.595835 + 30 +0.0 + 11 +34406.249869 + 21 +9742.785717 + 31 +0.0 + 0 +LINE + 5 +2D0A + 8 +0 + 62 + 0 + 10 +34312.499869 + 20 +9905.16548 + 30 +0.0 + 11 +34265.624869 + 21 +9986.355362 + 31 +0.0 + 0 +LINE + 5 +2D0B + 8 +0 + 62 + 0 + 10 +34593.749869 + 20 +9255.646427 + 30 +0.0 + 11 +34546.874869 + 21 +9336.836309 + 31 +0.0 + 0 +LINE + 5 +2D0C + 8 +0 + 62 + 0 + 10 +34453.124869 + 20 +9499.216072 + 30 +0.0 + 11 +34406.249869 + 21 +9580.405954 + 31 +0.0 + 0 +LINE + 5 +2D0D + 8 +0 + 62 + 0 + 10 +34312.499869 + 20 +9742.785717 + 30 +0.0 + 11 +34265.624869 + 21 +9823.975599 + 31 +0.0 + 0 +LINE + 5 +2D0E + 8 +0 + 62 + 0 + 10 +34593.749869 + 20 +9093.266664 + 30 +0.0 + 11 +34546.874869 + 21 +9174.456546 + 31 +0.0 + 0 +LINE + 5 +2D0F + 8 +0 + 62 + 0 + 10 +34453.124869 + 20 +9336.836309 + 30 +0.0 + 11 +34406.249869 + 21 +9418.026191 + 31 +0.0 + 0 +LINE + 5 +2D10 + 8 +0 + 62 + 0 + 10 +34312.499869 + 20 +9580.405954 + 30 +0.0 + 11 +34265.624869 + 21 +9661.595836 + 31 +0.0 + 0 +LINE + 5 +2D11 + 8 +0 + 62 + 0 + 10 +34593.74987 + 20 +8930.886901 + 30 +0.0 + 11 +34546.87487 + 21 +9012.076783 + 31 +0.0 + 0 +LINE + 5 +2D12 + 8 +0 + 62 + 0 + 10 +34453.12487 + 20 +9174.456546 + 30 +0.0 + 11 +34406.24987 + 21 +9255.646428 + 31 +0.0 + 0 +LINE + 5 +2D13 + 8 +0 + 62 + 0 + 10 +34312.49987 + 20 +9418.026191 + 30 +0.0 + 11 +34265.62487 + 21 +9499.216073 + 31 +0.0 + 0 +LINE + 5 +2D14 + 8 +0 + 62 + 0 + 10 +34593.74987 + 20 +8768.507138 + 30 +0.0 + 11 +34546.87487 + 21 +8849.69702 + 31 +0.0 + 0 +LINE + 5 +2D15 + 8 +0 + 62 + 0 + 10 +34453.12487 + 20 +9012.076783 + 30 +0.0 + 11 +34406.24987 + 21 +9093.266665 + 31 +0.0 + 0 +LINE + 5 +2D16 + 8 +0 + 62 + 0 + 10 +34312.49987 + 20 +9255.646428 + 30 +0.0 + 11 +34265.62487 + 21 +9336.83631 + 31 +0.0 + 0 +LINE + 5 +2D17 + 8 +0 + 62 + 0 + 10 +34593.74987 + 20 +8606.127375 + 30 +0.0 + 11 +34546.87487 + 21 +8687.317257 + 31 +0.0 + 0 +LINE + 5 +2D18 + 8 +0 + 62 + 0 + 10 +34453.12487 + 20 +8849.69702 + 30 +0.0 + 11 +34406.24987 + 21 +8930.886902 + 31 +0.0 + 0 +LINE + 5 +2D19 + 8 +0 + 62 + 0 + 10 +34312.49987 + 20 +9093.266665 + 30 +0.0 + 11 +34265.62487 + 21 +9174.456546 + 31 +0.0 + 0 +LINE + 5 +2D1A + 8 +0 + 62 + 0 + 10 +34593.749871 + 20 +8443.747612 + 30 +0.0 + 11 +34546.874871 + 21 +8524.937494 + 31 +0.0 + 0 +LINE + 5 +2D1B + 8 +0 + 62 + 0 + 10 +34453.124871 + 20 +8687.317257 + 30 +0.0 + 11 +34406.249871 + 21 +8768.507139 + 31 +0.0 + 0 +LINE + 5 +2D1C + 8 +0 + 62 + 0 + 10 +34312.499871 + 20 +8930.886902 + 30 +0.0 + 11 +34265.624871 + 21 +9012.076783 + 31 +0.0 + 0 +LINE + 5 +2D1D + 8 +0 + 62 + 0 + 10 +34593.749871 + 20 +8281.367849 + 30 +0.0 + 11 +34546.874871 + 21 +8362.557731 + 31 +0.0 + 0 +LINE + 5 +2D1E + 8 +0 + 62 + 0 + 10 +34453.124871 + 20 +8524.937494 + 30 +0.0 + 11 +34406.249871 + 21 +8606.127376 + 31 +0.0 + 0 +LINE + 5 +2D1F + 8 +0 + 62 + 0 + 10 +34312.499871 + 20 +8768.507139 + 30 +0.0 + 11 +34265.624871 + 21 +8849.69702 + 31 +0.0 + 0 +LINE + 5 +2D20 + 8 +0 + 62 + 0 + 10 +34593.749871 + 20 +8118.988086 + 30 +0.0 + 11 +34546.874871 + 21 +8200.177968 + 31 +0.0 + 0 +LINE + 5 +2D21 + 8 +0 + 62 + 0 + 10 +34453.124871 + 20 +8362.557731 + 30 +0.0 + 11 +34406.249871 + 21 +8443.747613 + 31 +0.0 + 0 +LINE + 5 +2D22 + 8 +0 + 62 + 0 + 10 +34312.499871 + 20 +8606.127376 + 30 +0.0 + 11 +34265.624871 + 21 +8687.317257 + 31 +0.0 + 0 +LINE + 5 +2D23 + 8 +0 + 62 + 0 + 10 +34593.749872 + 20 +7956.608323 + 30 +0.0 + 11 +34546.874872 + 21 +8037.798205 + 31 +0.0 + 0 +LINE + 5 +2D24 + 8 +0 + 62 + 0 + 10 +34453.124872 + 20 +8200.177968 + 30 +0.0 + 11 +34406.249872 + 21 +8281.36785 + 31 +0.0 + 0 +LINE + 5 +2D25 + 8 +0 + 62 + 0 + 10 +34312.499872 + 20 +8443.747613 + 30 +0.0 + 11 +34265.624872 + 21 +8524.937494 + 31 +0.0 + 0 +LINE + 5 +2D26 + 8 +0 + 62 + 0 + 10 +34593.749872 + 20 +7794.22856 + 30 +0.0 + 11 +34546.874872 + 21 +7875.418442 + 31 +0.0 + 0 +LINE + 5 +2D27 + 8 +0 + 62 + 0 + 10 +34453.124872 + 20 +8037.798205 + 30 +0.0 + 11 +34406.249872 + 21 +8118.988087 + 31 +0.0 + 0 +LINE + 5 +2D28 + 8 +0 + 62 + 0 + 10 +34312.499872 + 20 +8281.36785 + 30 +0.0 + 11 +34265.624872 + 21 +8362.557731 + 31 +0.0 + 0 +LINE + 5 +2D29 + 8 +0 + 62 + 0 + 10 +34593.749872 + 20 +7631.848797 + 30 +0.0 + 11 +34546.874872 + 21 +7713.038679 + 31 +0.0 + 0 +LINE + 5 +2D2A + 8 +0 + 62 + 0 + 10 +34453.124872 + 20 +7875.418442 + 30 +0.0 + 11 +34406.249872 + 21 +7956.608323 + 31 +0.0 + 0 +LINE + 5 +2D2B + 8 +0 + 62 + 0 + 10 +34312.499872 + 20 +8118.988087 + 30 +0.0 + 11 +34265.624872 + 21 +8200.177968 + 31 +0.0 + 0 +LINE + 5 +2D2C + 8 +0 + 62 + 0 + 10 +34593.749872 + 20 +7469.469034 + 30 +0.0 + 11 +34546.874872 + 21 +7550.658916 + 31 +0.0 + 0 +LINE + 5 +2D2D + 8 +0 + 62 + 0 + 10 +34453.124872 + 20 +7713.038679 + 30 +0.0 + 11 +34406.249872 + 21 +7794.22856 + 31 +0.0 + 0 +LINE + 5 +2D2E + 8 +0 + 62 + 0 + 10 +34312.499872 + 20 +7956.608324 + 30 +0.0 + 11 +34265.624872 + 21 +8037.798205 + 31 +0.0 + 0 +LINE + 5 +2D2F + 8 +0 + 62 + 0 + 10 +34593.749873 + 20 +7307.089271 + 30 +0.0 + 11 +34546.874873 + 21 +7388.279153 + 31 +0.0 + 0 +LINE + 5 +2D30 + 8 +0 + 62 + 0 + 10 +34453.124873 + 20 +7550.658916 + 30 +0.0 + 11 +34406.249873 + 21 +7631.848797 + 31 +0.0 + 0 +LINE + 5 +2D31 + 8 +0 + 62 + 0 + 10 +34312.499873 + 20 +7794.228561 + 30 +0.0 + 11 +34265.624873 + 21 +7875.418442 + 31 +0.0 + 0 +LINE + 5 +2D32 + 8 +0 + 62 + 0 + 10 +34593.749873 + 20 +7144.709508 + 30 +0.0 + 11 +34546.874873 + 21 +7225.89939 + 31 +0.0 + 0 +LINE + 5 +2D33 + 8 +0 + 62 + 0 + 10 +34453.124873 + 20 +7388.279153 + 30 +0.0 + 11 +34406.249873 + 21 +7469.469034 + 31 +0.0 + 0 +LINE + 5 +2D34 + 8 +0 + 62 + 0 + 10 +34312.499873 + 20 +7631.848798 + 30 +0.0 + 11 +34265.624873 + 21 +7713.038679 + 31 +0.0 + 0 +LINE + 5 +2D35 + 8 +0 + 62 + 0 + 10 +34593.749873 + 20 +6982.329745 + 30 +0.0 + 11 +34546.874873 + 21 +7063.519627 + 31 +0.0 + 0 +LINE + 5 +2D36 + 8 +0 + 62 + 0 + 10 +34453.124873 + 20 +7225.89939 + 30 +0.0 + 11 +34406.249873 + 21 +7307.089271 + 31 +0.0 + 0 +LINE + 5 +2D37 + 8 +0 + 62 + 0 + 10 +34312.499873 + 20 +7469.469035 + 30 +0.0 + 11 +34265.624873 + 21 +7550.658916 + 31 +0.0 + 0 +LINE + 5 +2D38 + 8 +0 + 62 + 0 + 10 +34593.749874 + 20 +6819.949982 + 30 +0.0 + 11 +34546.874874 + 21 +6901.139863 + 31 +0.0 + 0 +LINE + 5 +2D39 + 8 +0 + 62 + 0 + 10 +34453.124874 + 20 +7063.519627 + 30 +0.0 + 11 +34406.249874 + 21 +7144.709508 + 31 +0.0 + 0 +LINE + 5 +2D3A + 8 +0 + 62 + 0 + 10 +34312.499874 + 20 +7307.089272 + 30 +0.0 + 11 +34265.624874 + 21 +7388.279153 + 31 +0.0 + 0 +LINE + 5 +2D3B + 8 +0 + 62 + 0 + 10 +34453.124874 + 20 +6901.139864 + 30 +0.0 + 11 +34406.249874 + 21 +6982.329745 + 31 +0.0 + 0 +LINE + 5 +2D3C + 8 +0 + 62 + 0 + 10 +34312.499874 + 20 +7144.709508 + 30 +0.0 + 11 +34265.624874 + 21 +7225.89939 + 31 +0.0 + 0 +LINE + 5 +2D3D + 8 +0 + 62 + 0 + 10 +34446.635515 + 20 +6750.0 + 30 +0.0 + 11 +34406.249874 + 21 +6819.949982 + 31 +0.0 + 0 +LINE + 5 +2D3E + 8 +0 + 62 + 0 + 10 +34312.499874 + 20 +6982.329745 + 30 +0.0 + 11 +34265.624874 + 21 +7063.519627 + 31 +0.0 + 0 +LINE + 5 +2D3F + 8 +0 + 62 + 0 + 10 +34312.499875 + 20 +6819.949982 + 30 +0.0 + 11 +34265.624875 + 21 +6901.139864 + 31 +0.0 + 0 +LINE + 5 +2D40 + 8 +0 + 62 + 0 + 10 +34593.749868 + 20 +9742.785716 + 30 +0.0 + 11 +34546.874868 + 21 +9823.975598 + 31 +0.0 + 0 +LINE + 5 +2D41 + 8 +0 + 62 + 0 + 10 +34453.124868 + 20 +9986.355361 + 30 +0.0 + 11 +34406.249868 + 21 +10067.545243 + 31 +0.0 + 0 +LINE + 5 +2D42 + 8 +0 + 62 + 0 + 10 +34312.499868 + 20 +10229.925006 + 30 +0.0 + 11 +34265.624868 + 21 +10311.114888 + 31 +0.0 + 0 +LINE + 5 +2D43 + 8 +0 + 62 + 0 + 10 +34593.749868 + 20 +9905.16548 + 30 +0.0 + 11 +34546.874868 + 21 +9986.355361 + 31 +0.0 + 0 +LINE + 5 +2D44 + 8 +0 + 62 + 0 + 10 +34453.124868 + 20 +10148.735124 + 30 +0.0 + 11 +34406.249868 + 21 +10229.925006 + 31 +0.0 + 0 +LINE + 5 +2D45 + 8 +0 + 62 + 0 + 10 +34312.499868 + 20 +10392.304769 + 30 +0.0 + 11 +34265.624868 + 21 +10473.494651 + 31 +0.0 + 0 +LINE + 5 +2D46 + 8 +0 + 62 + 0 + 10 +34593.749868 + 20 +10067.545243 + 30 +0.0 + 11 +34546.874868 + 21 +10148.735124 + 31 +0.0 + 0 +LINE + 5 +2D47 + 8 +0 + 62 + 0 + 10 +34453.124868 + 20 +10311.114887 + 30 +0.0 + 11 +34406.249868 + 21 +10392.304769 + 31 +0.0 + 0 +LINE + 5 +2D48 + 8 +0 + 62 + 0 + 10 +34312.499868 + 20 +10554.684532 + 30 +0.0 + 11 +34265.624868 + 21 +10635.874414 + 31 +0.0 + 0 +LINE + 5 +2D49 + 8 +0 + 62 + 0 + 10 +34593.749867 + 20 +10229.925006 + 30 +0.0 + 11 +34546.874867 + 21 +10311.114887 + 31 +0.0 + 0 +LINE + 5 +2D4A + 8 +0 + 62 + 0 + 10 +34453.124867 + 20 +10473.49465 + 30 +0.0 + 11 +34406.249867 + 21 +10554.684532 + 31 +0.0 + 0 +LINE + 5 +2D4B + 8 +0 + 62 + 0 + 10 +34312.499867 + 20 +10717.064295 + 30 +0.0 + 11 +34265.624867 + 21 +10798.254177 + 31 +0.0 + 0 +LINE + 5 +2D4C + 8 +0 + 62 + 0 + 10 +34593.749867 + 20 +10392.304769 + 30 +0.0 + 11 +34546.874867 + 21 +10473.49465 + 31 +0.0 + 0 +LINE + 5 +2D4D + 8 +0 + 62 + 0 + 10 +34453.124867 + 20 +10635.874413 + 30 +0.0 + 11 +34406.249867 + 21 +10717.064295 + 31 +0.0 + 0 +LINE + 5 +2D4E + 8 +0 + 62 + 0 + 10 +34312.499867 + 20 +10879.444058 + 30 +0.0 + 11 +34265.624867 + 21 +10960.63394 + 31 +0.0 + 0 +LINE + 5 +2D4F + 8 +0 + 62 + 0 + 10 +34593.749867 + 20 +10554.684532 + 30 +0.0 + 11 +34546.874867 + 21 +10635.874413 + 31 +0.0 + 0 +LINE + 5 +2D50 + 8 +0 + 62 + 0 + 10 +34453.124867 + 20 +10798.254176 + 30 +0.0 + 11 +34406.249867 + 21 +10879.444058 + 31 +0.0 + 0 +LINE + 5 +2D51 + 8 +0 + 62 + 0 + 10 +34312.499867 + 20 +11041.823821 + 30 +0.0 + 11 +34265.624867 + 21 +11123.013703 + 31 +0.0 + 0 +LINE + 5 +2D52 + 8 +0 + 62 + 0 + 10 +34593.749866 + 20 +10717.064295 + 30 +0.0 + 11 +34546.874866 + 21 +10798.254176 + 31 +0.0 + 0 +LINE + 5 +2D53 + 8 +0 + 62 + 0 + 10 +34453.124866 + 20 +10960.633939 + 30 +0.0 + 11 +34406.249866 + 21 +11041.823821 + 31 +0.0 + 0 +LINE + 5 +2D54 + 8 +0 + 62 + 0 + 10 +34312.499866 + 20 +11204.203584 + 30 +0.0 + 11 +34265.624866 + 21 +11285.393466 + 31 +0.0 + 0 +LINE + 5 +2D55 + 8 +0 + 62 + 0 + 10 +34593.749866 + 20 +10879.444058 + 30 +0.0 + 11 +34546.874866 + 21 +10960.633939 + 31 +0.0 + 0 +LINE + 5 +2D56 + 8 +0 + 62 + 0 + 10 +34453.124866 + 20 +11123.013703 + 30 +0.0 + 11 +34406.249866 + 21 +11204.203584 + 31 +0.0 + 0 +LINE + 5 +2D57 + 8 +0 + 62 + 0 + 10 +34312.499866 + 20 +11366.583347 + 30 +0.0 + 11 +34265.624866 + 21 +11447.773229 + 31 +0.0 + 0 +LINE + 5 +2D58 + 8 +0 + 62 + 0 + 10 +34593.749866 + 20 +11041.823821 + 30 +0.0 + 11 +34546.874866 + 21 +11123.013702 + 31 +0.0 + 0 +LINE + 5 +2D59 + 8 +0 + 62 + 0 + 10 +34453.124866 + 20 +11285.393466 + 30 +0.0 + 11 +34406.249866 + 21 +11366.583347 + 31 +0.0 + 0 +LINE + 5 +2D5A + 8 +0 + 62 + 0 + 10 +34312.499866 + 20 +11528.96311 + 30 +0.0 + 11 +34265.624866 + 21 +11610.152992 + 31 +0.0 + 0 +LINE + 5 +2D5B + 8 +0 + 62 + 0 + 10 +34593.749865 + 20 +11204.203584 + 30 +0.0 + 11 +34546.874865 + 21 +11285.393465 + 31 +0.0 + 0 +LINE + 5 +2D5C + 8 +0 + 62 + 0 + 10 +34453.124865 + 20 +11447.773229 + 30 +0.0 + 11 +34406.249865 + 21 +11528.96311 + 31 +0.0 + 0 +LINE + 5 +2D5D + 8 +0 + 62 + 0 + 10 +34312.499865 + 20 +11691.342873 + 30 +0.0 + 11 +34265.624865 + 21 +11772.532755 + 31 +0.0 + 0 +LINE + 5 +2D5E + 8 +0 + 62 + 0 + 10 +34593.749865 + 20 +11366.583347 + 30 +0.0 + 11 +34546.874865 + 21 +11447.773228 + 31 +0.0 + 0 +LINE + 5 +2D5F + 8 +0 + 62 + 0 + 10 +34453.124865 + 20 +11610.152992 + 30 +0.0 + 11 +34406.249865 + 21 +11691.342873 + 31 +0.0 + 0 +LINE + 5 +2D60 + 8 +0 + 62 + 0 + 10 +34312.499865 + 20 +11853.722636 + 30 +0.0 + 11 +34265.624865 + 21 +11934.912518 + 31 +0.0 + 0 +LINE + 5 +2D61 + 8 +0 + 62 + 0 + 10 +34593.749865 + 20 +11528.96311 + 30 +0.0 + 11 +34546.874865 + 21 +11610.152991 + 31 +0.0 + 0 +LINE + 5 +2D62 + 8 +0 + 62 + 0 + 10 +34453.124865 + 20 +11772.532755 + 30 +0.0 + 11 +34406.249865 + 21 +11853.722636 + 31 +0.0 + 0 +LINE + 5 +2D63 + 8 +0 + 62 + 0 + 10 +34312.499865 + 20 +12016.102399 + 30 +0.0 + 11 +34265.624865 + 21 +12097.292281 + 31 +0.0 + 0 +LINE + 5 +2D64 + 8 +0 + 62 + 0 + 10 +34593.749864 + 20 +11691.342873 + 30 +0.0 + 11 +34546.874864 + 21 +11772.532754 + 31 +0.0 + 0 +LINE + 5 +2D65 + 8 +0 + 62 + 0 + 10 +34453.124864 + 20 +11934.912518 + 30 +0.0 + 11 +34406.249864 + 21 +12016.102399 + 31 +0.0 + 0 +LINE + 5 +2D66 + 8 +0 + 62 + 0 + 10 +34312.499864 + 20 +12178.482162 + 30 +0.0 + 11 +34265.624864 + 21 +12259.672044 + 31 +0.0 + 0 +LINE + 5 +2D67 + 8 +0 + 62 + 0 + 10 +34593.749864 + 20 +11853.722636 + 30 +0.0 + 11 +34546.874864 + 21 +11934.912517 + 31 +0.0 + 0 +LINE + 5 +2D68 + 8 +0 + 62 + 0 + 10 +34453.124864 + 20 +12097.292281 + 30 +0.0 + 11 +34406.249864 + 21 +12178.482162 + 31 +0.0 + 0 +LINE + 5 +2D69 + 8 +0 + 62 + 0 + 10 +34312.499864 + 20 +12340.861926 + 30 +0.0 + 11 +34265.624864 + 21 +12422.051807 + 31 +0.0 + 0 +LINE + 5 +2D6A + 8 +0 + 62 + 0 + 10 +34593.749864 + 20 +12016.102399 + 30 +0.0 + 11 +34546.874864 + 21 +12097.292281 + 31 +0.0 + 0 +LINE + 5 +2D6B + 8 +0 + 62 + 0 + 10 +34453.124864 + 20 +12259.672044 + 30 +0.0 + 11 +34406.249864 + 21 +12340.861925 + 31 +0.0 + 0 +LINE + 5 +2D6C + 8 +0 + 62 + 0 + 10 +34312.499864 + 20 +12503.241689 + 30 +0.0 + 11 +34265.624864 + 21 +12584.43157 + 31 +0.0 + 0 +LINE + 5 +2D6D + 8 +0 + 62 + 0 + 10 +34593.749864 + 20 +12178.482162 + 30 +0.0 + 11 +34546.874864 + 21 +12259.672044 + 31 +0.0 + 0 +LINE + 5 +2D6E + 8 +0 + 62 + 0 + 10 +34453.124864 + 20 +12422.051807 + 30 +0.0 + 11 +34406.249864 + 21 +12503.241688 + 31 +0.0 + 0 +LINE + 5 +2D6F + 8 +0 + 62 + 0 + 10 +34312.499864 + 20 +12665.621452 + 30 +0.0 + 11 +34265.624864 + 21 +12746.811333 + 31 +0.0 + 0 +LINE + 5 +2D70 + 8 +0 + 62 + 0 + 10 +34593.749863 + 20 +12340.861925 + 30 +0.0 + 11 +34546.874863 + 21 +12422.051807 + 31 +0.0 + 0 +LINE + 5 +2D71 + 8 +0 + 62 + 0 + 10 +34453.124863 + 20 +12584.43157 + 30 +0.0 + 11 +34406.249863 + 21 +12665.621451 + 31 +0.0 + 0 +LINE + 5 +2D72 + 8 +0 + 62 + 0 + 10 +34312.499863 + 20 +12828.001215 + 30 +0.0 + 11 +34265.624863 + 21 +12909.191096 + 31 +0.0 + 0 +LINE + 5 +2D73 + 8 +0 + 62 + 0 + 10 +34593.749863 + 20 +12503.241688 + 30 +0.0 + 11 +34546.874863 + 21 +12584.43157 + 31 +0.0 + 0 +LINE + 5 +2D74 + 8 +0 + 62 + 0 + 10 +34453.124863 + 20 +12746.811333 + 30 +0.0 + 11 +34406.249863 + 21 +12828.001214 + 31 +0.0 + 0 +LINE + 5 +2D75 + 8 +0 + 62 + 0 + 10 +34312.499863 + 20 +12990.380978 + 30 +0.0 + 11 +34265.624863 + 21 +13071.570859 + 31 +0.0 + 0 +LINE + 5 +2D76 + 8 +0 + 62 + 0 + 10 +34593.749863 + 20 +12665.621451 + 30 +0.0 + 11 +34546.874863 + 21 +12746.811333 + 31 +0.0 + 0 +LINE + 5 +2D77 + 8 +0 + 62 + 0 + 10 +34453.124863 + 20 +12909.191096 + 30 +0.0 + 11 +34406.249863 + 21 +12990.380977 + 31 +0.0 + 0 +LINE + 5 +2D78 + 8 +0 + 62 + 0 + 10 +34312.499863 + 20 +13152.760741 + 30 +0.0 + 11 +34265.624863 + 21 +13233.950622 + 31 +0.0 + 0 +LINE + 5 +2D79 + 8 +0 + 62 + 0 + 10 +34593.749862 + 20 +12828.001214 + 30 +0.0 + 11 +34546.874862 + 21 +12909.191096 + 31 +0.0 + 0 +LINE + 5 +2D7A + 8 +0 + 62 + 0 + 10 +34453.124862 + 20 +13071.570859 + 30 +0.0 + 11 +34406.249862 + 21 +13152.760741 + 31 +0.0 + 0 +LINE + 5 +2D7B + 8 +0 + 62 + 0 + 10 +34593.749862 + 20 +12990.380977 + 30 +0.0 + 11 +34546.874862 + 21 +13071.570859 + 31 +0.0 + 0 +LINE + 5 +2D7C + 8 +0 + 62 + 0 + 10 +34453.124862 + 20 +13233.950622 + 30 +0.0 + 11 +34443.858749 + 21 +13250.0 + 31 +0.0 + 0 +LINE + 5 +2D7D + 8 +0 + 62 + 0 + 10 +34593.749862 + 20 +13152.76074 + 30 +0.0 + 11 +34546.874862 + 21 +13233.950622 + 31 +0.0 + 0 +LINE + 5 +2D7E + 8 +0 + 62 + 0 + 10 +34265.624906 + 20 +9823.975728 + 30 +0.0 + 11 +34312.499906 + 21 +9905.16561 + 31 +0.0 + 0 +LINE + 5 +2D7F + 8 +0 + 62 + 0 + 10 +34406.249906 + 20 +10067.545373 + 30 +0.0 + 11 +34453.124906 + 21 +10148.735255 + 31 +0.0 + 0 +LINE + 5 +2D80 + 8 +0 + 62 + 0 + 10 +34546.874906 + 20 +10311.115018 + 30 +0.0 + 11 +34593.749906 + 21 +10392.3049 + 31 +0.0 + 0 +LINE + 5 +2D81 + 8 +0 + 62 + 0 + 10 +34265.624907 + 20 +9986.355491 + 30 +0.0 + 11 +34312.499907 + 21 +10067.545373 + 31 +0.0 + 0 +LINE + 5 +2D82 + 8 +0 + 62 + 0 + 10 +34406.249907 + 20 +10229.925136 + 30 +0.0 + 11 +34453.124907 + 21 +10311.115018 + 31 +0.0 + 0 +LINE + 5 +2D83 + 8 +0 + 62 + 0 + 10 +34546.874907 + 20 +10473.494781 + 30 +0.0 + 11 +34593.749907 + 21 +10554.684663 + 31 +0.0 + 0 +LINE + 5 +2D84 + 8 +0 + 62 + 0 + 10 +34265.624907 + 20 +10148.735254 + 30 +0.0 + 11 +34312.499907 + 21 +10229.925136 + 31 +0.0 + 0 +LINE + 5 +2D85 + 8 +0 + 62 + 0 + 10 +34406.249907 + 20 +10392.304899 + 30 +0.0 + 11 +34453.124907 + 21 +10473.494781 + 31 +0.0 + 0 +LINE + 5 +2D86 + 8 +0 + 62 + 0 + 10 +34546.874907 + 20 +10635.874544 + 30 +0.0 + 11 +34593.749907 + 21 +10717.064426 + 31 +0.0 + 0 +LINE + 5 +2D87 + 8 +0 + 62 + 0 + 10 +34265.624907 + 20 +10311.115017 + 30 +0.0 + 11 +34312.499907 + 21 +10392.304899 + 31 +0.0 + 0 +LINE + 5 +2D88 + 8 +0 + 62 + 0 + 10 +34406.249907 + 20 +10554.684662 + 30 +0.0 + 11 +34453.124907 + 21 +10635.874544 + 31 +0.0 + 0 +LINE + 5 +2D89 + 8 +0 + 62 + 0 + 10 +34546.874907 + 20 +10798.254307 + 30 +0.0 + 11 +34593.749907 + 21 +10879.444189 + 31 +0.0 + 0 +LINE + 5 +2D8A + 8 +0 + 62 + 0 + 10 +34265.624908 + 20 +10473.49478 + 30 +0.0 + 11 +34312.499908 + 21 +10554.684662 + 31 +0.0 + 0 +LINE + 5 +2D8B + 8 +0 + 62 + 0 + 10 +34406.249908 + 20 +10717.064425 + 30 +0.0 + 11 +34453.124908 + 21 +10798.254307 + 31 +0.0 + 0 +LINE + 5 +2D8C + 8 +0 + 62 + 0 + 10 +34546.874908 + 20 +10960.63407 + 30 +0.0 + 11 +34593.749908 + 21 +11041.823952 + 31 +0.0 + 0 +LINE + 5 +2D8D + 8 +0 + 62 + 0 + 10 +34265.624908 + 20 +10635.874543 + 30 +0.0 + 11 +34312.499908 + 21 +10717.064425 + 31 +0.0 + 0 +LINE + 5 +2D8E + 8 +0 + 62 + 0 + 10 +34406.249908 + 20 +10879.444188 + 30 +0.0 + 11 +34453.124908 + 21 +10960.63407 + 31 +0.0 + 0 +LINE + 5 +2D8F + 8 +0 + 62 + 0 + 10 +34546.874908 + 20 +11123.013833 + 30 +0.0 + 11 +34593.749908 + 21 +11204.203715 + 31 +0.0 + 0 +LINE + 5 +2D90 + 8 +0 + 62 + 0 + 10 +34265.624908 + 20 +10798.254306 + 30 +0.0 + 11 +34312.499908 + 21 +10879.444188 + 31 +0.0 + 0 +LINE + 5 +2D91 + 8 +0 + 62 + 0 + 10 +34406.249908 + 20 +11041.823951 + 30 +0.0 + 11 +34453.124908 + 21 +11123.013833 + 31 +0.0 + 0 +LINE + 5 +2D92 + 8 +0 + 62 + 0 + 10 +34546.874908 + 20 +11285.393596 + 30 +0.0 + 11 +34593.749908 + 21 +11366.583478 + 31 +0.0 + 0 +LINE + 5 +2D93 + 8 +0 + 62 + 0 + 10 +34265.624908 + 20 +10960.63407 + 30 +0.0 + 11 +34312.499908 + 21 +11041.823951 + 31 +0.0 + 0 +LINE + 5 +2D94 + 8 +0 + 62 + 0 + 10 +34406.249908 + 20 +11204.203714 + 30 +0.0 + 11 +34453.124908 + 21 +11285.393596 + 31 +0.0 + 0 +LINE + 5 +2D95 + 8 +0 + 62 + 0 + 10 +34546.874908 + 20 +11447.773359 + 30 +0.0 + 11 +34593.749908 + 21 +11528.963241 + 31 +0.0 + 0 +LINE + 5 +2D96 + 8 +0 + 62 + 0 + 10 +34265.624909 + 20 +11123.013833 + 30 +0.0 + 11 +34312.499909 + 21 +11204.203714 + 31 +0.0 + 0 +LINE + 5 +2D97 + 8 +0 + 62 + 0 + 10 +34406.249909 + 20 +11366.583477 + 30 +0.0 + 11 +34453.124909 + 21 +11447.773359 + 31 +0.0 + 0 +LINE + 5 +2D98 + 8 +0 + 62 + 0 + 10 +34546.874909 + 20 +11610.153122 + 30 +0.0 + 11 +34593.749909 + 21 +11691.343004 + 31 +0.0 + 0 +LINE + 5 +2D99 + 8 +0 + 62 + 0 + 10 +34265.624909 + 20 +11285.393596 + 30 +0.0 + 11 +34312.499909 + 21 +11366.583477 + 31 +0.0 + 0 +LINE + 5 +2D9A + 8 +0 + 62 + 0 + 10 +34406.249909 + 20 +11528.96324 + 30 +0.0 + 11 +34453.124909 + 21 +11610.153122 + 31 +0.0 + 0 +LINE + 5 +2D9B + 8 +0 + 62 + 0 + 10 +34546.874909 + 20 +11772.532885 + 30 +0.0 + 11 +34593.749909 + 21 +11853.722767 + 31 +0.0 + 0 +LINE + 5 +2D9C + 8 +0 + 62 + 0 + 10 +34265.624909 + 20 +11447.773359 + 30 +0.0 + 11 +34312.499909 + 21 +11528.96324 + 31 +0.0 + 0 +LINE + 5 +2D9D + 8 +0 + 62 + 0 + 10 +34406.249909 + 20 +11691.343003 + 30 +0.0 + 11 +34453.124909 + 21 +11772.532885 + 31 +0.0 + 0 +LINE + 5 +2D9E + 8 +0 + 62 + 0 + 10 +34546.874909 + 20 +11934.912648 + 30 +0.0 + 11 +34593.749909 + 21 +12016.10253 + 31 +0.0 + 0 +LINE + 5 +2D9F + 8 +0 + 62 + 0 + 10 +34265.62491 + 20 +11610.153122 + 30 +0.0 + 11 +34312.49991 + 21 +11691.343003 + 31 +0.0 + 0 +LINE + 5 +2DA0 + 8 +0 + 62 + 0 + 10 +34406.24991 + 20 +11853.722766 + 30 +0.0 + 11 +34453.12491 + 21 +11934.912648 + 31 +0.0 + 0 +LINE + 5 +2DA1 + 8 +0 + 62 + 0 + 10 +34546.87491 + 20 +12097.292411 + 30 +0.0 + 11 +34593.74991 + 21 +12178.482293 + 31 +0.0 + 0 +LINE + 5 +2DA2 + 8 +0 + 62 + 0 + 10 +34265.62491 + 20 +11772.532885 + 30 +0.0 + 11 +34312.49991 + 21 +11853.722766 + 31 +0.0 + 0 +LINE + 5 +2DA3 + 8 +0 + 62 + 0 + 10 +34406.24991 + 20 +12016.102529 + 30 +0.0 + 11 +34453.12491 + 21 +12097.292411 + 31 +0.0 + 0 +LINE + 5 +2DA4 + 8 +0 + 62 + 0 + 10 +34546.87491 + 20 +12259.672174 + 30 +0.0 + 11 +34593.74991 + 21 +12340.862056 + 31 +0.0 + 0 +LINE + 5 +2DA5 + 8 +0 + 62 + 0 + 10 +34265.62491 + 20 +11934.912648 + 30 +0.0 + 11 +34312.49991 + 21 +12016.102529 + 31 +0.0 + 0 +LINE + 5 +2DA6 + 8 +0 + 62 + 0 + 10 +34406.24991 + 20 +12178.482293 + 30 +0.0 + 11 +34453.12491 + 21 +12259.672174 + 31 +0.0 + 0 +LINE + 5 +2DA7 + 8 +0 + 62 + 0 + 10 +34546.87491 + 20 +12422.051937 + 30 +0.0 + 11 +34593.74991 + 21 +12503.241819 + 31 +0.0 + 0 +LINE + 5 +2DA8 + 8 +0 + 62 + 0 + 10 +34265.624911 + 20 +12097.292411 + 30 +0.0 + 11 +34312.499911 + 21 +12178.482292 + 31 +0.0 + 0 +LINE + 5 +2DA9 + 8 +0 + 62 + 0 + 10 +34406.249911 + 20 +12340.862056 + 30 +0.0 + 11 +34453.124911 + 21 +12422.051937 + 31 +0.0 + 0 +LINE + 5 +2DAA + 8 +0 + 62 + 0 + 10 +34546.874911 + 20 +12584.4317 + 30 +0.0 + 11 +34593.749911 + 21 +12665.621582 + 31 +0.0 + 0 +LINE + 5 +2DAB + 8 +0 + 62 + 0 + 10 +34265.624911 + 20 +12259.672174 + 30 +0.0 + 11 +34312.499911 + 21 +12340.862055 + 31 +0.0 + 0 +LINE + 5 +2DAC + 8 +0 + 62 + 0 + 10 +34406.249911 + 20 +12503.241819 + 30 +0.0 + 11 +34453.124911 + 21 +12584.4317 + 31 +0.0 + 0 +LINE + 5 +2DAD + 8 +0 + 62 + 0 + 10 +34546.874911 + 20 +12746.811463 + 30 +0.0 + 11 +34593.749911 + 21 +12828.001345 + 31 +0.0 + 0 +LINE + 5 +2DAE + 8 +0 + 62 + 0 + 10 +34265.624911 + 20 +12422.051937 + 30 +0.0 + 11 +34312.499911 + 21 +12503.241818 + 31 +0.0 + 0 +LINE + 5 +2DAF + 8 +0 + 62 + 0 + 10 +34406.249911 + 20 +12665.621582 + 30 +0.0 + 11 +34453.124911 + 21 +12746.811463 + 31 +0.0 + 0 +LINE + 5 +2DB0 + 8 +0 + 62 + 0 + 10 +34546.874911 + 20 +12909.191226 + 30 +0.0 + 11 +34593.749911 + 21 +12990.381108 + 31 +0.0 + 0 +LINE + 5 +2DB1 + 8 +0 + 62 + 0 + 10 +34265.624912 + 20 +12584.4317 + 30 +0.0 + 11 +34312.499912 + 21 +12665.621581 + 31 +0.0 + 0 +LINE + 5 +2DB2 + 8 +0 + 62 + 0 + 10 +34406.249912 + 20 +12828.001345 + 30 +0.0 + 11 +34453.124912 + 21 +12909.191226 + 31 +0.0 + 0 +LINE + 5 +2DB3 + 8 +0 + 62 + 0 + 10 +34546.874912 + 20 +13071.570989 + 30 +0.0 + 11 +34593.749912 + 21 +13152.760871 + 31 +0.0 + 0 +LINE + 5 +2DB4 + 8 +0 + 62 + 0 + 10 +34265.624912 + 20 +12746.811463 + 30 +0.0 + 11 +34312.499912 + 21 +12828.001344 + 31 +0.0 + 0 +LINE + 5 +2DB5 + 8 +0 + 62 + 0 + 10 +34406.249912 + 20 +12990.381108 + 30 +0.0 + 11 +34453.124912 + 21 +13071.570989 + 31 +0.0 + 0 +LINE + 5 +2DB6 + 8 +0 + 62 + 0 + 10 +34546.874912 + 20 +13233.950752 + 30 +0.0 + 11 +34556.140949 + 21 +13250.0 + 31 +0.0 + 0 +LINE + 5 +2DB7 + 8 +0 + 62 + 0 + 10 +34265.624912 + 20 +12909.191226 + 30 +0.0 + 11 +34312.499912 + 21 +12990.381108 + 31 +0.0 + 0 +LINE + 5 +2DB8 + 8 +0 + 62 + 0 + 10 +34406.249912 + 20 +13152.760871 + 30 +0.0 + 11 +34453.124912 + 21 +13233.950752 + 31 +0.0 + 0 +LINE + 5 +2DB9 + 8 +0 + 62 + 0 + 10 +34265.624912 + 20 +13071.570989 + 30 +0.0 + 11 +34312.499912 + 21 +13152.760871 + 31 +0.0 + 0 +LINE + 5 +2DBA + 8 +0 + 62 + 0 + 10 +34265.624913 + 20 +13233.950752 + 30 +0.0 + 11 +34274.89095 + 21 +13250.0 + 31 +0.0 + 0 +LINE + 5 +2DBB + 8 +0 + 62 + 0 + 10 +34265.624906 + 20 +9661.595965 + 30 +0.0 + 11 +34312.499906 + 21 +9742.785847 + 31 +0.0 + 0 +LINE + 5 +2DBC + 8 +0 + 62 + 0 + 10 +34406.249906 + 20 +9905.16561 + 30 +0.0 + 11 +34453.124906 + 21 +9986.355492 + 31 +0.0 + 0 +LINE + 5 +2DBD + 8 +0 + 62 + 0 + 10 +34546.874906 + 20 +10148.735255 + 30 +0.0 + 11 +34593.749906 + 21 +10229.925136 + 31 +0.0 + 0 +LINE + 5 +2DBE + 8 +0 + 62 + 0 + 10 +34265.624906 + 20 +9499.216202 + 30 +0.0 + 11 +34312.499906 + 21 +9580.406084 + 31 +0.0 + 0 +LINE + 5 +2DBF + 8 +0 + 62 + 0 + 10 +34406.249906 + 20 +9742.785847 + 30 +0.0 + 11 +34453.124906 + 21 +9823.975729 + 31 +0.0 + 0 +LINE + 5 +2DC0 + 8 +0 + 62 + 0 + 10 +34546.874906 + 20 +9986.355492 + 30 +0.0 + 11 +34593.749906 + 21 +10067.545373 + 31 +0.0 + 0 +LINE + 5 +2DC1 + 8 +0 + 62 + 0 + 10 +34265.624905 + 20 +9336.836439 + 30 +0.0 + 11 +34312.499905 + 21 +9418.026321 + 31 +0.0 + 0 +LINE + 5 +2DC2 + 8 +0 + 62 + 0 + 10 +34406.249905 + 20 +9580.406084 + 30 +0.0 + 11 +34453.124905 + 21 +9661.595966 + 31 +0.0 + 0 +LINE + 5 +2DC3 + 8 +0 + 62 + 0 + 10 +34546.874905 + 20 +9823.975729 + 30 +0.0 + 11 +34593.749905 + 21 +9905.16561 + 31 +0.0 + 0 +LINE + 5 +2DC4 + 8 +0 + 62 + 0 + 10 +34265.624905 + 20 +9174.456676 + 30 +0.0 + 11 +34312.499905 + 21 +9255.646558 + 31 +0.0 + 0 +LINE + 5 +2DC5 + 8 +0 + 62 + 0 + 10 +34406.249905 + 20 +9418.026321 + 30 +0.0 + 11 +34453.124905 + 21 +9499.216203 + 31 +0.0 + 0 +LINE + 5 +2DC6 + 8 +0 + 62 + 0 + 10 +34546.874905 + 20 +9661.595966 + 30 +0.0 + 11 +34593.749905 + 21 +9742.785847 + 31 +0.0 + 0 +LINE + 5 +2DC7 + 8 +0 + 62 + 0 + 10 +34265.624905 + 20 +9012.076913 + 30 +0.0 + 11 +34312.499905 + 21 +9093.266795 + 31 +0.0 + 0 +LINE + 5 +2DC8 + 8 +0 + 62 + 0 + 10 +34406.249905 + 20 +9255.646558 + 30 +0.0 + 11 +34453.124905 + 21 +9336.83644 + 31 +0.0 + 0 +LINE + 5 +2DC9 + 8 +0 + 62 + 0 + 10 +34546.874905 + 20 +9499.216203 + 30 +0.0 + 11 +34593.749905 + 21 +9580.406084 + 31 +0.0 + 0 +LINE + 5 +2DCA + 8 +0 + 62 + 0 + 10 +34265.624904 + 20 +8849.69715 + 30 +0.0 + 11 +34312.499904 + 21 +8930.887032 + 31 +0.0 + 0 +LINE + 5 +2DCB + 8 +0 + 62 + 0 + 10 +34406.249904 + 20 +9093.266795 + 30 +0.0 + 11 +34453.124904 + 21 +9174.456677 + 31 +0.0 + 0 +LINE + 5 +2DCC + 8 +0 + 62 + 0 + 10 +34546.874904 + 20 +9336.83644 + 30 +0.0 + 11 +34593.749904 + 21 +9418.026321 + 31 +0.0 + 0 +LINE + 5 +2DCD + 8 +0 + 62 + 0 + 10 +34265.624904 + 20 +8687.317387 + 30 +0.0 + 11 +34312.499904 + 21 +8768.507269 + 31 +0.0 + 0 +LINE + 5 +2DCE + 8 +0 + 62 + 0 + 10 +34406.249904 + 20 +8930.887032 + 30 +0.0 + 11 +34453.124904 + 21 +9012.076913 + 31 +0.0 + 0 +LINE + 5 +2DCF + 8 +0 + 62 + 0 + 10 +34546.874904 + 20 +9174.456677 + 30 +0.0 + 11 +34593.749904 + 21 +9255.646558 + 31 +0.0 + 0 +LINE + 5 +2DD0 + 8 +0 + 62 + 0 + 10 +34265.624904 + 20 +8524.937624 + 30 +0.0 + 11 +34312.499904 + 21 +8606.127506 + 31 +0.0 + 0 +LINE + 5 +2DD1 + 8 +0 + 62 + 0 + 10 +34406.249904 + 20 +8768.507269 + 30 +0.0 + 11 +34453.124904 + 21 +8849.69715 + 31 +0.0 + 0 +LINE + 5 +2DD2 + 8 +0 + 62 + 0 + 10 +34546.874904 + 20 +9012.076914 + 30 +0.0 + 11 +34593.749904 + 21 +9093.266795 + 31 +0.0 + 0 +LINE + 5 +2DD3 + 8 +0 + 62 + 0 + 10 +34265.624904 + 20 +8362.557861 + 30 +0.0 + 11 +34312.499904 + 21 +8443.747743 + 31 +0.0 + 0 +LINE + 5 +2DD4 + 8 +0 + 62 + 0 + 10 +34406.249904 + 20 +8606.127506 + 30 +0.0 + 11 +34453.124904 + 21 +8687.317387 + 31 +0.0 + 0 +LINE + 5 +2DD5 + 8 +0 + 62 + 0 + 10 +34546.874904 + 20 +8849.697151 + 30 +0.0 + 11 +34593.749904 + 21 +8930.887032 + 31 +0.0 + 0 +LINE + 5 +2DD6 + 8 +0 + 62 + 0 + 10 +34265.624903 + 20 +8200.178098 + 30 +0.0 + 11 +34312.499903 + 21 +8281.36798 + 31 +0.0 + 0 +LINE + 5 +2DD7 + 8 +0 + 62 + 0 + 10 +34406.249903 + 20 +8443.747743 + 30 +0.0 + 11 +34453.124903 + 21 +8524.937624 + 31 +0.0 + 0 +LINE + 5 +2DD8 + 8 +0 + 62 + 0 + 10 +34546.874903 + 20 +8687.317388 + 30 +0.0 + 11 +34593.749903 + 21 +8768.507269 + 31 +0.0 + 0 +LINE + 5 +2DD9 + 8 +0 + 62 + 0 + 10 +34265.624903 + 20 +8037.798335 + 30 +0.0 + 11 +34312.499903 + 21 +8118.988217 + 31 +0.0 + 0 +LINE + 5 +2DDA + 8 +0 + 62 + 0 + 10 +34406.249903 + 20 +8281.36798 + 30 +0.0 + 11 +34453.124903 + 21 +8362.557861 + 31 +0.0 + 0 +LINE + 5 +2DDB + 8 +0 + 62 + 0 + 10 +34546.874903 + 20 +8524.937625 + 30 +0.0 + 11 +34593.749903 + 21 +8606.127506 + 31 +0.0 + 0 +LINE + 5 +2DDC + 8 +0 + 62 + 0 + 10 +34265.624903 + 20 +7875.418572 + 30 +0.0 + 11 +34312.499903 + 21 +7956.608454 + 31 +0.0 + 0 +LINE + 5 +2DDD + 8 +0 + 62 + 0 + 10 +34406.249903 + 20 +8118.988217 + 30 +0.0 + 11 +34453.124903 + 21 +8200.178098 + 31 +0.0 + 0 +LINE + 5 +2DDE + 8 +0 + 62 + 0 + 10 +34546.874903 + 20 +8362.557862 + 30 +0.0 + 11 +34593.749903 + 21 +8443.747743 + 31 +0.0 + 0 +LINE + 5 +2DDF + 8 +0 + 62 + 0 + 10 +34265.624902 + 20 +7713.038809 + 30 +0.0 + 11 +34312.499902 + 21 +7794.22869 + 31 +0.0 + 0 +LINE + 5 +2DE0 + 8 +0 + 62 + 0 + 10 +34406.249902 + 20 +7956.608454 + 30 +0.0 + 11 +34453.124902 + 21 +8037.798335 + 31 +0.0 + 0 +LINE + 5 +2DE1 + 8 +0 + 62 + 0 + 10 +34546.874902 + 20 +8200.178098 + 30 +0.0 + 11 +34593.749902 + 21 +8281.36798 + 31 +0.0 + 0 +LINE + 5 +2DE2 + 8 +0 + 62 + 0 + 10 +34265.624902 + 20 +7550.659046 + 30 +0.0 + 11 +34312.499902 + 21 +7631.848927 + 31 +0.0 + 0 +LINE + 5 +2DE3 + 8 +0 + 62 + 0 + 10 +34406.249902 + 20 +7794.228691 + 30 +0.0 + 11 +34453.124902 + 21 +7875.418572 + 31 +0.0 + 0 +LINE + 5 +2DE4 + 8 +0 + 62 + 0 + 10 +34546.874902 + 20 +8037.798335 + 30 +0.0 + 11 +34593.749902 + 21 +8118.988217 + 31 +0.0 + 0 +LINE + 5 +2DE5 + 8 +0 + 62 + 0 + 10 +34265.624902 + 20 +7388.279283 + 30 +0.0 + 11 +34312.499902 + 21 +7469.469164 + 31 +0.0 + 0 +LINE + 5 +2DE6 + 8 +0 + 62 + 0 + 10 +34406.249902 + 20 +7631.848928 + 30 +0.0 + 11 +34453.124902 + 21 +7713.038809 + 31 +0.0 + 0 +LINE + 5 +2DE7 + 8 +0 + 62 + 0 + 10 +34546.874902 + 20 +7875.418572 + 30 +0.0 + 11 +34593.749902 + 21 +7956.608454 + 31 +0.0 + 0 +LINE + 5 +2DE8 + 8 +0 + 62 + 0 + 10 +34265.624901 + 20 +7225.89952 + 30 +0.0 + 11 +34312.499901 + 21 +7307.089401 + 31 +0.0 + 0 +LINE + 5 +2DE9 + 8 +0 + 62 + 0 + 10 +34406.249901 + 20 +7469.469165 + 30 +0.0 + 11 +34453.124901 + 21 +7550.659046 + 31 +0.0 + 0 +LINE + 5 +2DEA + 8 +0 + 62 + 0 + 10 +34546.874901 + 20 +7713.038809 + 30 +0.0 + 11 +34593.749901 + 21 +7794.228691 + 31 +0.0 + 0 +LINE + 5 +2DEB + 8 +0 + 62 + 0 + 10 +34265.624901 + 20 +7063.519757 + 30 +0.0 + 11 +34312.499901 + 21 +7144.709638 + 31 +0.0 + 0 +LINE + 5 +2DEC + 8 +0 + 62 + 0 + 10 +34406.249901 + 20 +7307.089402 + 30 +0.0 + 11 +34453.124901 + 21 +7388.279283 + 31 +0.0 + 0 +LINE + 5 +2DED + 8 +0 + 62 + 0 + 10 +34546.874901 + 20 +7550.659046 + 30 +0.0 + 11 +34593.749901 + 21 +7631.848928 + 31 +0.0 + 0 +LINE + 5 +2DEE + 8 +0 + 62 + 0 + 10 +34265.624901 + 20 +6901.139994 + 30 +0.0 + 11 +34312.499901 + 21 +6982.329875 + 31 +0.0 + 0 +LINE + 5 +2DEF + 8 +0 + 62 + 0 + 10 +34406.249901 + 20 +7144.709639 + 30 +0.0 + 11 +34453.124901 + 21 +7225.89952 + 31 +0.0 + 0 +LINE + 5 +2DF0 + 8 +0 + 62 + 0 + 10 +34546.874901 + 20 +7388.279283 + 30 +0.0 + 11 +34593.749901 + 21 +7469.469165 + 31 +0.0 + 0 +LINE + 5 +2DF1 + 8 +0 + 62 + 0 + 10 +34272.114184 + 20 +6750.0 + 30 +0.0 + 11 +34312.4999 + 21 +6819.950112 + 31 +0.0 + 0 +LINE + 5 +2DF2 + 8 +0 + 62 + 0 + 10 +34406.2499 + 20 +6982.329875 + 30 +0.0 + 11 +34453.1249 + 21 +7063.519757 + 31 +0.0 + 0 +LINE + 5 +2DF3 + 8 +0 + 62 + 0 + 10 +34546.8749 + 20 +7225.89952 + 30 +0.0 + 11 +34593.7499 + 21 +7307.089402 + 31 +0.0 + 0 +LINE + 5 +2DF4 + 8 +0 + 62 + 0 + 10 +34406.2499 + 20 +6819.950112 + 30 +0.0 + 11 +34453.1249 + 21 +6901.139994 + 31 +0.0 + 0 +LINE + 5 +2DF5 + 8 +0 + 62 + 0 + 10 +34546.8749 + 20 +7063.519757 + 30 +0.0 + 11 +34593.7499 + 21 +7144.709639 + 31 +0.0 + 0 +LINE + 5 +2DF6 + 8 +0 + 62 + 0 + 10 +34546.8749 + 20 +6901.139994 + 30 +0.0 + 11 +34593.7499 + 21 +6982.329876 + 31 +0.0 + 0 +LINE + 5 +2DF7 + 8 +0 + 62 + 0 + 10 +34553.364183 + 20 +6750.0 + 30 +0.0 + 11 +34593.7499 + 21 +6819.950113 + 31 +0.0 + 0 +ENDBLK + 5 +2DF8 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X219 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X219 + 1 + + 0 +LINE + 5 +2DFA + 8 +0 + 62 + 0 + 10 +34600.0 + 20 +9320.932573 + 30 +0.0 + 11 +36425.0 + 21 +11145.932573 + 31 +0.0 + 0 +LINE + 5 +2DFB + 8 +0 + 62 + 0 + 10 +34600.0 + 20 +10469.981092 + 30 +0.0 + 11 +36425.0 + 21 +12294.981092 + 31 +0.0 + 0 +LINE + 5 +2DFC + 8 +0 + 62 + 0 + 10 +34600.0 + 20 +11619.029611 + 30 +0.0 + 11 +36230.970389 + 21 +13250.0 + 31 +0.0 + 0 +LINE + 5 +2DFD + 8 +0 + 62 + 0 + 10 +34600.0 + 20 +12768.078131 + 30 +0.0 + 11 +35081.921869 + 21 +13250.0 + 31 +0.0 + 0 +LINE + 5 +2DFE + 8 +0 + 62 + 0 + 10 +34600.0 + 20 +8171.884053 + 30 +0.0 + 11 +36425.0 + 21 +9996.884053 + 31 +0.0 + 0 +LINE + 5 +2DFF + 8 +0 + 62 + 0 + 10 +34600.0 + 20 +7022.835534 + 30 +0.0 + 11 +36425.0 + 21 +8847.835534 + 31 +0.0 + 0 +LINE + 5 +2E00 + 8 +0 + 62 + 0 + 10 +35476.212986 + 20 +6750.0 + 30 +0.0 + 11 +36425.0 + 21 +7698.787014 + 31 +0.0 + 0 +ENDBLK + 5 +2E01 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*X220 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*X220 + 1 + + 0 +LINE + 5 +2E03 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +9990.476221 + 30 +0.0 + 11 +33900.0 + 21 +10565.476221 + 31 +0.0 + 0 +LINE + 5 +2E04 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +10344.029611 + 30 +0.0 + 11 +33900.0 + 21 +10919.029611 + 31 +0.0 + 0 +LINE + 5 +2E05 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +10697.583002 + 30 +0.0 + 11 +33900.0 + 21 +11272.583002 + 31 +0.0 + 0 +LINE + 5 +2E06 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +11051.136393 + 30 +0.0 + 11 +33900.0 + 21 +11626.136393 + 31 +0.0 + 0 +LINE + 5 +2E07 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +11404.689783 + 30 +0.0 + 11 +33900.0 + 21 +11979.689783 + 31 +0.0 + 0 +LINE + 5 +2E08 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +11758.243174 + 30 +0.0 + 11 +33900.0 + 21 +12333.243174 + 31 +0.0 + 0 +LINE + 5 +2E09 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +12111.796564 + 30 +0.0 + 11 +33900.0 + 21 +12686.796564 + 31 +0.0 + 0 +LINE + 5 +2E0A + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +12465.349955 + 30 +0.0 + 11 +33900.0 + 21 +13040.349955 + 31 +0.0 + 0 +LINE + 5 +2E0B + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +12818.903346 + 30 +0.0 + 11 +33756.096654 + 21 +13250.0 + 31 +0.0 + 0 +LINE + 5 +2E0C + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +13172.456736 + 30 +0.0 + 11 +33402.543264 + 21 +13250.0 + 31 +0.0 + 0 +LINE + 5 +2E0D + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +9636.92283 + 30 +0.0 + 11 +33900.0 + 21 +10211.92283 + 31 +0.0 + 0 +LINE + 5 +2E0E + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +9283.36944 + 30 +0.0 + 11 +33900.0 + 21 +9858.36944 + 31 +0.0 + 0 +LINE + 5 +2E0F + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +8929.816049 + 30 +0.0 + 11 +33900.0 + 21 +9504.816049 + 31 +0.0 + 0 +LINE + 5 +2E10 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +8576.262658 + 30 +0.0 + 11 +33900.0 + 21 +9151.262658 + 31 +0.0 + 0 +LINE + 5 +2E11 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +8222.709268 + 30 +0.0 + 11 +33900.0 + 21 +8797.709268 + 31 +0.0 + 0 +LINE + 5 +2E12 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +7869.155877 + 30 +0.0 + 11 +33900.0 + 21 +8444.155877 + 31 +0.0 + 0 +LINE + 5 +2E13 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +7515.602487 + 30 +0.0 + 11 +33900.0 + 21 +8090.602487 + 31 +0.0 + 0 +LINE + 5 +2E14 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +7162.049096 + 30 +0.0 + 11 +33900.0 + 21 +7737.049096 + 31 +0.0 + 0 +LINE + 5 +2E15 + 8 +0 + 62 + 0 + 10 +33325.0 + 20 +6808.495706 + 30 +0.0 + 11 +33900.0 + 21 +7383.495706 + 31 +0.0 + 0 +LINE + 5 +2E16 + 8 +0 + 62 + 0 + 10 +33620.057685 + 20 +6750.0 + 30 +0.0 + 11 +33900.0 + 21 +7029.942315 + 31 +0.0 + 0 +ENDBLK + 5 +2E17 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D221 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D221 + 1 + + 0 +LINE + 5 +2E19 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18355.0 + 20 +9656.0 + 30 +0.0 + 11 +18355.0 + 21 +10854.0 + 31 +0.0 + 0 +INSERT + 5 +2E1A + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18355.0 + 20 +9655.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2E1B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18355.0 + 20 +10855.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2E1C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18267.5 + 20 +10101.875 + 30 +0.0 + 40 +175.0 + 1 +1.21 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +18180.0 + 21 +10255.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2E1D + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18365.0 + 20 +9655.0 + 30 +0.0 + 0 +POINT + 5 +2E1E + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18355.0 + 20 +10855.0 + 30 +0.0 + 0 +POINT + 5 +2E1F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18355.0 + 20 +10855.0 + 30 +0.0 + 0 +ENDBLK + 5 +2E20 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D222 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D222 + 1 + + 0 +LINE + 5 +2E22 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18455.0 + 20 +9626.0 + 30 +0.0 + 11 +18455.0 + 21 +9654.0 + 31 +0.0 + 0 +INSERT + 5 +2E23 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18455.0 + 20 +9625.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2E24 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18455.0 + 20 +9655.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2E25 + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18367.5 + 20 +9696.25 + 30 +0.0 + 40 +175.0 + 1 +3 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +18280.0 + 21 +9740.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2E26 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18465.0 + 20 +9625.0 + 30 +0.0 + 0 +POINT + 5 +2E27 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18465.0 + 20 +9655.0 + 30 +0.0 + 0 +POINT + 5 +2E28 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18455.0 + 20 +9655.0 + 30 +0.0 + 0 +ENDBLK + 5 +2E29 + 8 +0 + 0 +BLOCK + 8 +0 + 2 +*D223 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D223 + 1 + + 0 +LINE + 5 +2E2B + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18445.0 + 20 +13866.0 + 30 +0.0 + 11 +18445.0 + 21 +15624.0 + 31 +0.0 + 0 +INSERT + 5 +2E2C + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18445.0 + 20 +13865.0 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +2E2D + 8 +0 + 6 +BYBLOCK + 62 + 0 + 2 +MASSHILFSLINIE + 10 +18445.0 + 20 +15625.0 + 30 +0.0 + 50 +90.0 + 0 +TEXT + 5 +2E2E + 8 +0 + 6 +BYBLOCK + 62 + 0 + 10 +18357.5 + 20 +14570.0 + 30 +0.0 + 40 +175.0 + 1 +1.76 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 72 + 1 + 11 +18270.0 + 21 +14745.0 + 31 +0.0 + 73 + 2 + 0 +POINT + 5 +2E2F + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18490.0 + 20 +13865.0 + 30 +0.0 + 0 +POINT + 5 +2E30 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18490.0 + 20 +15625.0 + 30 +0.0 + 0 +POINT + 5 +2E31 + 8 +DEFPOINTS + 6 +BYBLOCK + 62 + 0 + 10 +18445.0 + 20 +15625.0 + 30 +0.0 + 0 +ENDBLK + 5 +2E32 + 8 +0 + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +POLYLINE + 5 +2E33 + 8 +0 + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34B5 + 8 +0 + 10 +1000.0 + 20 +250.0 + 30 +0.0 + 0 +VERTEX + 5 +34B6 + 8 +0 + 10 +41800.0 + 20 +250.0 + 30 +0.0 + 0 +VERTEX + 5 +34B7 + 8 +0 + 10 +41800.0 + 20 +29450.0 + 30 +0.0 + 0 +VERTEX + 5 +34B8 + 8 +0 + 10 +1000.0 + 20 +29450.0 + 30 +0.0 + 0 +SEQEND + 5 +34B9 + 8 +0 + 0 +POLYLINE + 5 +2E39 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34BA + 8 +MAUERWERK + 10 +8750.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +34BB + 8 +MAUERWERK + 10 +9865.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +34BC + 8 +MAUERWERK + 10 +9865.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +34BD + 8 +MAUERWERK + 10 +9740.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +34BE + 8 +MAUERWERK + 10 +9740.0 + 20 +12375.0 + 30 +0.0 + 0 +VERTEX + 5 +34BF + 8 +MAUERWERK + 10 +12615.0 + 20 +12375.0 + 30 +0.0 + 0 +VERTEX + 5 +34C0 + 8 +MAUERWERK + 10 +12615.0 + 20 +12740.0 + 30 +0.0 + 0 +VERTEX + 5 +34C1 + 8 +MAUERWERK + 10 +10115.0 + 20 +12740.0 + 30 +0.0 + 0 +VERTEX + 5 +34C2 + 8 +MAUERWERK + 10 +10115.0 + 20 +12990.0 + 30 +0.0 + 0 +VERTEX + 5 +34C3 + 8 +MAUERWERK + 10 +9750.0 + 20 +12990.0 + 30 +0.0 + 0 +VERTEX + 5 +34C4 + 8 +MAUERWERK + 10 +9750.0 + 20 +12740.0 + 30 +0.0 + 0 +VERTEX + 5 +34C5 + 8 +MAUERWERK + 10 +9375.0 + 20 +12740.0 + 30 +0.0 + 0 +VERTEX + 5 +34C6 + 8 +MAUERWERK + 10 +9375.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +34C7 + 8 +MAUERWERK + 10 +8750.0 + 20 +9615.0 + 30 +0.0 + 0 +SEQEND + 5 +34C8 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E49 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34C9 + 8 +MAUERWERK + 10 +5000.0 + 20 +16125.0 + 30 +0.0 + 0 +VERTEX + 5 +34CA + 8 +MAUERWERK + 10 +5365.0 + 20 +16125.0 + 30 +0.0 + 0 +VERTEX + 5 +34CB + 8 +MAUERWERK + 10 +5365.0 + 20 +16875.0 + 30 +0.0 + 0 +VERTEX + 5 +34CC + 8 +MAUERWERK + 10 +8115.0 + 20 +16875.0 + 30 +0.0 + 0 +VERTEX + 5 +34CD + 8 +MAUERWERK + 10 +8115.0 + 20 +17240.0 + 30 +0.0 + 0 +VERTEX + 5 +34CE + 8 +MAUERWERK + 10 +5365.0 + 20 +17240.0 + 30 +0.0 + 0 +VERTEX + 5 +34CF + 8 +MAUERWERK + 10 +5365.0 + 20 +18240.0 + 30 +0.0 + 0 +VERTEX + 5 +34D0 + 8 +MAUERWERK + 10 +5000.0 + 20 +18240.0 + 30 +0.0 + 0 +SEQEND + 5 +34D1 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E53 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34D2 + 8 +MAUERWERK + 10 +5000.0 + 20 +19375.0 + 30 +0.0 + 0 +VERTEX + 5 +34D3 + 8 +MAUERWERK + 10 +5365.0 + 20 +19375.0 + 30 +0.0 + 0 +VERTEX + 5 +34D4 + 8 +MAUERWERK + 10 +5365.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34D5 + 8 +MAUERWERK + 10 +6740.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34D6 + 8 +MAUERWERK + 10 +6740.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +34D7 + 8 +MAUERWERK + 10 +5000.0 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +34D8 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E5B + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34D9 + 8 +MAUERWERK + 10 +8500.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +34DA + 8 +MAUERWERK + 10 +8500.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34DB + 8 +MAUERWERK + 10 +9750.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34DC + 8 +MAUERWERK + 10 +9750.0 + 20 +20875.0 + 30 +0.0 + 0 +VERTEX + 5 +34DD + 8 +MAUERWERK + 10 +10115.0 + 20 +20875.0 + 30 +0.0 + 0 +VERTEX + 5 +34DE + 8 +MAUERWERK + 10 +10115.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34DF + 8 +MAUERWERK + 10 +10240.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34E0 + 8 +MAUERWERK + 10 +10240.0 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +34E1 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E65 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34E2 + 8 +MAUERWERK + 10 +9750.0 + 20 +19990.0 + 30 +0.0 + 0 +VERTEX + 5 +34E3 + 8 +MAUERWERK + 10 +9750.0 + 20 +17240.0 + 30 +0.0 + 0 +VERTEX + 5 +34E4 + 8 +MAUERWERK + 10 +9000.0 + 20 +17240.0 + 30 +0.0 + 0 +VERTEX + 5 +34E5 + 8 +MAUERWERK + 10 +9000.0 + 20 +16875.0 + 30 +0.0 + 0 +VERTEX + 5 +34E6 + 8 +MAUERWERK + 10 +9750.0 + 20 +16875.0 + 30 +0.0 + 0 +VERTEX + 5 +34E7 + 8 +MAUERWERK + 10 +9750.0 + 20 +16625.0 + 30 +0.0 + 0 +VERTEX + 5 +34E8 + 8 +MAUERWERK + 10 +10115.0 + 20 +16625.0 + 30 +0.0 + 0 +VERTEX + 5 +34E9 + 8 +MAUERWERK + 10 +10115.0 + 20 +19990.0 + 30 +0.0 + 0 +SEQEND + 5 +34EA + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E6F + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34EB + 8 +MAUERWERK + 10 +11250.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +34EC + 8 +MAUERWERK + 10 +11250.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34ED + 8 +MAUERWERK + 10 +14875.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34EE + 8 +MAUERWERK + 10 +14875.0 + 20 +17250.0 + 30 +0.0 + 0 +VERTEX + 5 +34EF + 8 +MAUERWERK + 10 +15240.0 + 20 +17250.0 + 30 +0.0 + 0 +VERTEX + 5 +34F0 + 8 +MAUERWERK + 10 +15240.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34F1 + 8 +MAUERWERK + 10 +15865.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34F2 + 8 +MAUERWERK + 10 +15865.0 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +34F3 + 8 +MAUERWERK + 0 +POINT + 5 +2E79 + 8 +MAUERWERK + 10 +14875.0 + 20 +21125.0 + 30 +0.0 + 0 +POINT + 5 +2E7A + 8 +MAUERWERK + 10 +15240.0 + 20 +17625.0 + 30 +0.0 + 0 +POINT + 5 +2E7B + 8 +MAUERWERK + 10 +15730.0 + 20 +21750.0 + 30 +0.0 + 0 +POINT + 5 +2E7C + 8 +MAUERWERK + 10 +11750.0 + 20 +22115.0 + 30 +0.0 + 0 +POLYLINE + 5 +2E7D + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34F4 + 8 +MAUERWERK + 10 +25250.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +34F5 + 8 +MAUERWERK + 10 +25250.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34F6 + 8 +MAUERWERK + 10 +26375.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34F7 + 8 +MAUERWERK + 10 +26375.0 + 20 +18375.0 + 30 +0.0 + 0 +VERTEX + 5 +34F8 + 8 +MAUERWERK + 10 +26740.0 + 20 +18375.0 + 30 +0.0 + 0 +VERTEX + 5 +34F9 + 8 +MAUERWERK + 10 +26740.0 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +34FA + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E85 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +34FB + 8 +MAUERWERK + 10 +23365.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +34FC + 8 +MAUERWERK + 10 +19750.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +34FD + 8 +MAUERWERK + 10 +19750.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34FE + 8 +MAUERWERK + 10 +22500.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +34FF + 8 +MAUERWERK + 10 +22500.0 + 20 +17125.0 + 30 +0.0 + 0 +VERTEX + 5 +3500 + 8 +MAUERWERK + 10 +22865.0 + 20 +17125.0 + 30 +0.0 + 0 +VERTEX + 5 +3501 + 8 +MAUERWERK + 10 +22865.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +3502 + 8 +MAUERWERK + 10 +23365.0 + 20 +21750.0 + 30 +0.0 + 0 +SEQEND + 5 +3503 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E8F + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3504 + 8 +MAUERWERK + 10 +26375.0 + 20 +10365.0 + 30 +0.0 + 0 +VERTEX + 5 +3505 + 8 +MAUERWERK + 10 +26740.0 + 20 +10365.0 + 30 +0.0 + 0 +VERTEX + 5 +3506 + 8 +MAUERWERK + 10 +26740.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3507 + 8 +MAUERWERK + 10 +25375.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3508 + 8 +MAUERWERK + 10 +25375.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +3509 + 8 +MAUERWERK + 10 +26375.0 + 20 +9615.0 + 30 +0.0 + 0 +SEQEND + 5 +350A + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E97 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +350B + 8 +MAUERWERK + 10 +23240.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +350C + 8 +MAUERWERK + 10 +21875.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +350D + 8 +MAUERWERK + 10 +21875.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +350E + 8 +MAUERWERK + 10 +23240.0 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +350F + 8 +MAUERWERK + 0 +POLYLINE + 5 +2E9D + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3510 + 8 +MAUERWERK + 10 +21365.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3511 + 8 +MAUERWERK + 10 +21365.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +3512 + 8 +MAUERWERK + 10 +21240.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +3513 + 8 +MAUERWERK + 10 +21240.0 + 20 +14240.0 + 30 +0.0 + 0 +VERTEX + 5 +3514 + 8 +MAUERWERK + 10 +20875.0 + 20 +14240.0 + 30 +0.0 + 0 +VERTEX + 5 +3515 + 8 +MAUERWERK + 10 +20875.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +3516 + 8 +MAUERWERK + 10 +20375.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +3517 + 8 +MAUERWERK + 10 +20375.0 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +3518 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2EA7 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3519 + 8 +MAUERWERK + 10 +11250.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +351A + 8 +MAUERWERK + 10 +11250.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +351B + 8 +MAUERWERK + 10 +16115.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +351C + 8 +MAUERWERK + 10 +16115.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +351D + 8 +MAUERWERK + 10 +14490.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +351E + 8 +MAUERWERK + 10 +14490.0 + 20 +13500.0 + 30 +0.0 + 0 +VERTEX + 5 +351F + 8 +MAUERWERK + 10 +14615.0 + 20 +13500.0 + 30 +0.0 + 0 +VERTEX + 5 +3520 + 8 +MAUERWERK + 10 +14615.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3521 + 8 +MAUERWERK + 10 +14125.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3522 + 8 +MAUERWERK + 10 +14125.0 + 20 +12740.0 + 30 +0.0 + 0 +VERTEX + 5 +3523 + 8 +MAUERWERK + 10 +13875.0 + 20 +12740.0 + 30 +0.0 + 0 +VERTEX + 5 +3524 + 8 +MAUERWERK + 10 +13875.0 + 20 +12375.0 + 30 +0.0 + 0 +VERTEX + 5 +3525 + 8 +MAUERWERK + 10 +14125.0 + 20 +12375.0 + 30 +0.0 + 0 +VERTEX + 5 +3526 + 8 +MAUERWERK + 10 +14125.0 + 20 +9615.0 + 30 +0.0 + 0 +SEQEND + 5 +3527 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2EB7 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3528 + 8 +MAUERWERK + 10 +18490.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +3529 + 8 +MAUERWERK + 10 +18490.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +352A + 8 +MAUERWERK + 10 +17375.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +352B + 8 +MAUERWERK + 10 +17375.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +352C + 8 +MAUERWERK + 10 +17625.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +352D + 8 +MAUERWERK + 10 +17625.0 + 20 +13500.0 + 30 +0.0 + 0 +VERTEX + 5 +352E + 8 +MAUERWERK + 10 +15500.0 + 20 +13500.0 + 30 +0.0 + 0 +VERTEX + 5 +352F + 8 +MAUERWERK + 10 +15500.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3530 + 8 +MAUERWERK + 10 +15750.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3531 + 8 +MAUERWERK + 10 +15750.0 + 20 +13990.0 + 30 +0.0 + 0 +VERTEX + 5 +3532 + 8 +MAUERWERK + 10 +16115.0 + 20 +13990.0 + 30 +0.0 + 0 +VERTEX + 5 +3533 + 8 +MAUERWERK + 10 +16115.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3534 + 8 +MAUERWERK + 10 +17990.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3535 + 8 +MAUERWERK + 10 +17990.0 + 20 +9615.0 + 30 +0.0 + 0 +SEQEND + 5 +3536 + 8 +MAUERWERK + 0 +POINT + 5 +2EC7 + 8 +MAUERWERK + 10 +5040.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +2EC8 + 8 +MAUERWERK + 10 +6050.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +2EC9 + 8 +MAUERWERK + 10 +7060.0 + 20 +9250.0 + 30 +0.0 + 0 +POINT + 5 +2ECA + 8 +MAUERWERK + 10 +7740.0 + 20 +9580.0 + 30 +0.0 + 0 +POINT + 5 +2ECB + 8 +MAUERWERK + 10 +6765.0 + 20 +9615.0 + 30 +0.0 + 0 +POINT + 5 +2ECC + 8 +MAUERWERK + 10 +5755.0 + 20 +9615.0 + 30 +0.0 + 0 +POINT + 5 +2ECD + 8 +MAUERWERK + 10 +5365.0 + 20 +10235.0 + 30 +0.0 + 0 +POINT + 5 +2ECE + 8 +MAUERWERK + 10 +5365.0 + 20 +11245.0 + 30 +0.0 + 0 +POINT + 5 +2ECF + 8 +MAUERWERK + 10 +5365.0 + 20 +12255.0 + 30 +0.0 + 0 +POINT + 5 +2ED0 + 8 +MAUERWERK + 10 +5365.0 + 20 +13265.0 + 30 +0.0 + 0 +POINT + 5 +2ED1 + 8 +MAUERWERK + 10 +5515.0 + 20 +14125.0 + 30 +0.0 + 0 +POINT + 5 +2ED2 + 8 +MAUERWERK + 10 +6525.0 + 20 +14125.0 + 30 +0.0 + 0 +POINT + 5 +2ED3 + 8 +MAUERWERK + 10 +7535.0 + 20 +14125.0 + 30 +0.0 + 0 +POINT + 5 +2ED4 + 8 +MAUERWERK + 10 +8545.0 + 20 +14125.0 + 30 +0.0 + 0 +POINT + 5 +2ED5 + 8 +MAUERWERK + 10 +9555.0 + 20 +14125.0 + 30 +0.0 + 0 +POINT + 5 +2ED6 + 8 +MAUERWERK + 10 +10115.0 + 20 +14075.0 + 30 +0.0 + 0 +POINT + 5 +2ED7 + 8 +MAUERWERK + 10 +10115.0 + 20 +15085.0 + 30 +0.0 + 0 +POINT + 5 +2ED8 + 8 +MAUERWERK + 10 +11085.0 + 20 +15125.0 + 30 +0.0 + 0 +POINT + 5 +2ED9 + 8 +MAUERWERK + 10 +12095.0 + 20 +15125.0 + 30 +0.0 + 0 +POINT + 5 +2EDA + 8 +MAUERWERK + 10 +13105.0 + 20 +15125.0 + 30 +0.0 + 0 +POINT + 5 +2EDB + 8 +MAUERWERK + 10 +14115.0 + 20 +15125.0 + 30 +0.0 + 0 +POINT + 5 +2EDC + 8 +MAUERWERK + 10 +15125.0 + 20 +15125.0 + 30 +0.0 + 0 +POINT + 5 +2EDD + 8 +MAUERWERK + 10 +16010.0 + 20 +15000.0 + 30 +0.0 + 0 +POINT + 5 +2EDE + 8 +MAUERWERK + 10 +16365.0 + 20 +15655.0 + 30 +0.0 + 0 +POINT + 5 +2EDF + 8 +MAUERWERK + 10 +15750.0 + 20 +15930.0 + 30 +0.0 + 0 +POINT + 5 +2EE0 + 8 +MAUERWERK + 10 +15180.0 + 20 +15490.0 + 30 +0.0 + 0 +POINT + 5 +2EE1 + 8 +MAUERWERK + 10 +14170.0 + 20 +15490.0 + 30 +0.0 + 0 +POINT + 5 +2EE2 + 8 +MAUERWERK + 10 +13160.0 + 20 +15490.0 + 30 +0.0 + 0 +POINT + 5 +2EE3 + 8 +MAUERWERK + 10 +12150.0 + 20 +15490.0 + 30 +0.0 + 0 +POINT + 5 +2EE4 + 8 +MAUERWERK + 10 +11140.0 + 20 +15490.0 + 30 +0.0 + 0 +POINT + 5 +2EE5 + 8 +MAUERWERK + 10 +10130.0 + 20 +15490.0 + 30 +0.0 + 0 +POINT + 5 +2EE6 + 8 +MAUERWERK + 10 +9750.0 + 20 +15360.0 + 30 +0.0 + 0 +POINT + 5 +2EE7 + 8 +MAUERWERK + 10 +9610.0 + 20 +14490.0 + 30 +0.0 + 0 +POINT + 5 +2EE8 + 8 +MAUERWERK + 10 +8600.0 + 20 +14490.0 + 30 +0.0 + 0 +POINT + 5 +2EE9 + 8 +MAUERWERK + 10 +7590.0 + 20 +14490.0 + 30 +0.0 + 0 +POINT + 5 +2EEA + 8 +MAUERWERK + 10 +6580.0 + 20 +14490.0 + 30 +0.0 + 0 +POINT + 5 +2EEB + 8 +MAUERWERK + 10 +5570.0 + 20 +14490.0 + 30 +0.0 + 0 +POINT + 5 +2EEC + 8 +MAUERWERK + 10 +5000.0 + 20 +14300.0 + 30 +0.0 + 0 +POINT + 5 +2EED + 8 +MAUERWERK + 10 +5000.0 + 20 +13290.0 + 30 +0.0 + 0 +POINT + 5 +2EEE + 8 +MAUERWERK + 10 +5000.0 + 20 +12280.0 + 30 +0.0 + 0 +POINT + 5 +2EEF + 8 +MAUERWERK + 10 +5000.0 + 20 +11270.0 + 30 +0.0 + 0 +POINT + 5 +2EF0 + 8 +MAUERWERK + 10 +5000.0 + 20 +10260.0 + 30 +0.0 + 0 +POINT + 5 +2EF1 + 8 +MAUERWERK + 10 +26740.0 + 20 +12395.0 + 30 +0.0 + 0 +POINT + 5 +2EF2 + 8 +MAUERWERK + 10 +26740.0 + 20 +15845.0 + 30 +0.0 + 0 +POINT + 5 +2EF3 + 8 +MAUERWERK + 10 +26375.0 + 20 +16550.0 + 30 +0.0 + 0 +POINT + 5 +2EF4 + 8 +MAUERWERK + 10 +23485.0 + 20 +15990.0 + 30 +0.0 + 0 +POINT + 5 +2EF5 + 8 +MAUERWERK + 10 +23100.0 + 20 +15625.0 + 30 +0.0 + 0 +POINT + 5 +2EF6 + 8 +MAUERWERK + 10 +26375.0 + 20 +15450.0 + 30 +0.0 + 0 +POLYLINE + 5 +2EF7 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3537 + 8 +MAUERWERK + 10 +26375.0 + 20 +12000.0 + 30 +0.0 + 0 +VERTEX + 5 +3538 + 8 +MAUERWERK + 10 +26740.0 + 20 +12000.0 + 30 +0.0 + 0 +VERTEX + 5 +3539 + 8 +MAUERWERK + 10 +26740.0 + 20 +17740.0 + 30 +0.0 + 0 +VERTEX + 5 +353A + 8 +MAUERWERK + 10 +26375.0 + 20 +17740.0 + 30 +0.0 + 0 +VERTEX + 5 +353B + 8 +MAUERWERK + 10 +26375.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +353C + 8 +MAUERWERK + 10 +22865.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +353D + 8 +MAUERWERK + 10 +22865.0 + 20 +16240.0 + 30 +0.0 + 0 +VERTEX + 5 +353E + 8 +MAUERWERK + 10 +22500.0 + 20 +16240.0 + 30 +0.0 + 0 +VERTEX + 5 +353F + 8 +MAUERWERK + 10 +22500.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +3540 + 8 +MAUERWERK + 10 +22250.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +3541 + 8 +MAUERWERK + 10 +22250.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +3542 + 8 +MAUERWERK + 10 +26375.0 + 20 +15625.0 + 30 +0.0 + 0 +SEQEND + 5 +3543 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2F05 + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3544 + 8 +TRENNWAENDE + 10 +22850.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +3545 + 8 +TRENNWAENDE + 10 +22850.0 + 20 +13915.0 + 30 +0.0 + 0 +VERTEX + 5 +3546 + 8 +TRENNWAENDE + 10 +22450.0 + 20 +13915.0 + 30 +0.0 + 0 +VERTEX + 5 +3547 + 8 +TRENNWAENDE + 10 +22450.0 + 20 +14040.0 + 30 +0.0 + 0 +VERTEX + 5 +3548 + 8 +TRENNWAENDE + 10 +22850.0 + 20 +14040.0 + 30 +0.0 + 0 +VERTEX + 5 +3549 + 8 +TRENNWAENDE + 10 +22850.0 + 20 +14340.0 + 30 +0.0 + 0 +VERTEX + 5 +354A + 8 +TRENNWAENDE + 10 +22975.0 + 20 +14340.0 + 30 +0.0 + 0 +VERTEX + 5 +354B + 8 +TRENNWAENDE + 10 +22975.0 + 20 +9615.0 + 30 +0.0 + 0 +SEQEND + 5 +354C + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F0F + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +354D + 8 +TRENNWAENDE + 10 +22850.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +354E + 8 +TRENNWAENDE + 10 +22850.0 + 20 +15225.0 + 30 +0.0 + 0 +VERTEX + 5 +354F + 8 +TRENNWAENDE + 10 +22975.0 + 20 +15225.0 + 30 +0.0 + 0 +VERTEX + 5 +3550 + 8 +TRENNWAENDE + 10 +22975.0 + 20 +15625.0 + 30 +0.0 + 0 +SEQEND + 5 +3551 + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F15 + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3552 + 8 +TRENNWAENDE + 10 +21240.0 + 20 +13915.0 + 30 +0.0 + 0 +VERTEX + 5 +3553 + 8 +TRENNWAENDE + 10 +21565.0 + 20 +13915.0 + 30 +0.0 + 0 +VERTEX + 5 +3554 + 8 +TRENNWAENDE + 10 +21565.0 + 20 +14040.0 + 30 +0.0 + 0 +VERTEX + 5 +3555 + 8 +TRENNWAENDE + 10 +21240.0 + 20 +14040.0 + 30 +0.0 + 0 +SEQEND + 5 +3556 + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F1B + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3557 + 8 +TRENNWAENDE + 10 +10115.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +3558 + 8 +TRENNWAENDE + 10 +13525.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +3559 + 8 +TRENNWAENDE + 10 +13525.0 + 20 +17250.0 + 30 +0.0 + 0 +VERTEX + 5 +355A + 8 +TRENNWAENDE + 10 +10115.0 + 20 +17250.0 + 30 +0.0 + 0 +SEQEND + 5 +355B + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F21 + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +355C + 8 +TRENNWAENDE + 10 +14875.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +355D + 8 +TRENNWAENDE + 10 +14555.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +355E + 8 +TRENNWAENDE + 10 +14555.0 + 20 +17250.0 + 30 +0.0 + 0 +VERTEX + 5 +355F + 8 +TRENNWAENDE + 10 +14875.0 + 20 +17250.0 + 30 +0.0 + 0 +SEQEND + 5 +3560 + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F27 + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3561 + 8 +TRENNWAENDE + 10 +15240.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +3562 + 8 +TRENNWAENDE + 10 +15990.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +3563 + 8 +TRENNWAENDE + 10 +15990.0 + 20 +17250.0 + 30 +0.0 + 0 +VERTEX + 5 +3564 + 8 +TRENNWAENDE + 10 +15240.0 + 20 +17250.0 + 30 +0.0 + 0 +SEQEND + 5 +3565 + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F2D + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3566 + 8 +TRENNWAENDE + 10 +17625.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +3567 + 8 +TRENNWAENDE + 10 +16875.0 + 20 +17375.0 + 30 +0.0 + 0 +VERTEX + 5 +3568 + 8 +TRENNWAENDE + 10 +16875.0 + 20 +17250.0 + 30 +0.0 + 0 +VERTEX + 5 +3569 + 8 +TRENNWAENDE + 10 +17625.0 + 20 +17250.0 + 30 +0.0 + 0 +SEQEND + 5 +356A + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F33 + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +356B + 8 +TRENNWAENDE + 10 +7615.0 + 20 +16875.0 + 30 +0.0 + 0 +VERTEX + 5 +356C + 8 +TRENNWAENDE + 10 +7615.0 + 20 +16475.0 + 30 +0.0 + 0 +VERTEX + 5 +356D + 8 +TRENNWAENDE + 10 +7740.0 + 20 +16475.0 + 30 +0.0 + 0 +VERTEX + 5 +356E + 8 +TRENNWAENDE + 10 +7740.0 + 20 +16875.0 + 30 +0.0 + 0 +SEQEND + 5 +356F + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F39 + 8 +TRENNWAENDE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3570 + 8 +TRENNWAENDE + 10 +7615.0 + 20 +14490.0 + 30 +0.0 + 0 +VERTEX + 5 +3571 + 8 +TRENNWAENDE + 10 +7615.0 + 20 +15590.0 + 30 +0.0 + 0 +VERTEX + 5 +3572 + 8 +TRENNWAENDE + 10 +7740.0 + 20 +15590.0 + 30 +0.0 + 0 +VERTEX + 5 +3573 + 8 +TRENNWAENDE + 10 +7740.0 + 20 +14490.0 + 30 +0.0 + 0 +SEQEND + 5 +3574 + 8 +TRENNWAENDE + 0 +POLYLINE + 5 +2F3F + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3575 + 8 +FENSTER + 10 +6740.0 + 20 +21738.696968 + 30 +0.0 + 0 +VERTEX + 5 +3576 + 8 +FENSTER + 10 +8505.0 + 20 +21738.696968 + 30 +0.0 + 0 +SEQEND + 5 +3577 + 8 +FENSTER + 0 +POLYLINE + 5 +2F43 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3578 + 8 +FENSTER + 10 +10240.0 + 20 +21738.750414 + 30 +0.0 + 0 +VERTEX + 5 +3579 + 8 +FENSTER + 10 +11250.0 + 20 +21738.750414 + 30 +0.0 + 0 +SEQEND + 5 +357A + 8 +FENSTER + 0 +POLYLINE + 5 +2F47 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +357B + 8 +FENSTER + 10 +15865.0 + 20 +21738.749579 + 30 +0.0 + 0 +VERTEX + 5 +357C + 8 +FENSTER + 10 +16880.0 + 20 +21738.749579 + 30 +0.0 + 0 +SEQEND + 5 +357D + 8 +FENSTER + 0 +POLYLINE + 5 +2F4B + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +357E + 8 +FENSTER + 10 +18740.0 + 20 +21738.72851 + 30 +0.0 + 0 +VERTEX + 5 +357F + 8 +FENSTER + 10 +19750.0 + 20 +21738.72851 + 30 +0.0 + 0 +SEQEND + 5 +3580 + 8 +FENSTER + 0 +POLYLINE + 5 +2F4F + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3581 + 8 +FENSTER + 10 +23365.0 + 20 +21738.76512 + 30 +0.0 + 0 +VERTEX + 5 +3582 + 8 +FENSTER + 10 +25255.0 + 20 +21738.76512 + 30 +0.0 + 0 +SEQEND + 5 +3583 + 8 +FENSTER + 0 +POLYLINE + 5 +2F53 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3584 + 8 +FENSTER + 10 +26363.699375 + 20 +18380.0 + 30 +0.0 + 0 +VERTEX + 5 +3585 + 8 +FENSTER + 10 +26363.699375 + 20 +17720.0 + 30 +0.0 + 0 +SEQEND + 5 +3586 + 8 +FENSTER + 0 +POLYLINE + 5 +2F57 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3587 + 8 +FENSTER + 10 +26363.746274 + 20 +12010.0 + 30 +0.0 + 0 +VERTEX + 5 +3588 + 8 +FENSTER + 10 +26363.746274 + 20 +10355.0 + 30 +0.0 + 0 +SEQEND + 5 +3589 + 8 +FENSTER + 0 +POLYLINE + 5 +2F5B + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +358A + 8 +FENSTER + 10 +23231.732275 + 20 +9626.249997 + 30 +0.0 + 0 +VERTEX + 5 +358B + 8 +FENSTER + 10 +25366.732275 + 20 +9626.249997 + 30 +0.0 + 0 +SEQEND + 5 +358C + 8 +FENSTER + 0 +POLYLINE + 5 +2F5F + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +358D + 8 +FENSTER + 10 +21360.0 + 20 +9626.287656 + 30 +0.0 + 0 +VERTEX + 5 +358E + 8 +FENSTER + 10 +21875.0 + 20 +9626.287656 + 30 +0.0 + 0 +SEQEND + 5 +358F + 8 +FENSTER + 0 +POLYLINE + 5 +2F63 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3590 + 8 +FENSTER + 10 +18480.0 + 20 +9626.31444 + 30 +0.0 + 0 +VERTEX + 5 +3591 + 8 +FENSTER + 10 +20380.0 + 20 +9626.31444 + 30 +0.0 + 0 +SEQEND + 5 +3592 + 8 +FENSTER + 0 +POLYLINE + 5 +2F67 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3593 + 8 +FENSTER + 10 +16109.83412 + 20 +9626.263541 + 30 +0.0 + 0 +VERTEX + 5 +3594 + 8 +FENSTER + 10 +17379.83412 + 20 +9626.263541 + 30 +0.0 + 0 +SEQEND + 5 +3595 + 8 +FENSTER + 0 +POLYLINE + 5 +2F6B + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3596 + 8 +FENSTER + 10 +9865.0 + 20 +9626.25 + 30 +0.0 + 0 +VERTEX + 5 +3597 + 8 +FENSTER + 10 +11260.0 + 20 +9626.25 + 30 +0.0 + 0 +SEQEND + 5 +3598 + 8 +FENSTER + 0 +LINE + 5 +2F6F + 8 +FENSTER + 10 +8755.0 + 20 +9615.0 + 30 +0.0 + 11 +8750.0 + 21 +9615.0 + 31 +0.0 + 0 +POLYLINE + 5 +2F70 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3599 + 8 +FENSTER + 10 +7730.0 + 20 +9626.281294 + 30 +0.0 + 0 +VERTEX + 5 +359A + 8 +FENSTER + 10 +8755.0 + 20 +9626.281294 + 30 +0.0 + 0 +SEQEND + 5 +359B + 8 +FENSTER + 0 +POLYLINE + 5 +2F74 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +359C + 8 +FENSTER + 10 +5376.25 + 20 +16130.0 + 30 +0.0 + 0 +VERTEX + 5 +359D + 8 +FENSTER + 10 +5376.25 + 20 +14615.0 + 30 +0.0 + 0 +SEQEND + 5 +359E + 8 +FENSTER + 0 +POLYLINE + 5 +2F78 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +359F + 8 +FENSTER + 10 +5376.260808 + 20 +19390.0 + 30 +0.0 + 0 +VERTEX + 5 +35A0 + 8 +FENSTER + 10 +5376.260808 + 20 +18230.0 + 30 +0.0 + 0 +SEQEND + 5 +35A1 + 8 +FENSTER + 0 +POLYLINE + 5 +2F7C + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35A2 + 8 +VORSATZSCHALLE + 10 +4745.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35A3 + 8 +VORSATZSCHALLE + 10 +7740.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35A4 + 8 +VORSATZSCHALLE + 10 +7740.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35A5 + 8 +VORSATZSCHALLE + 10 +4860.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35A6 + 8 +VORSATZSCHALLE + 10 +4860.0 + 20 +14615.0 + 30 +0.0 + 0 +VERTEX + 5 +35A7 + 8 +VORSATZSCHALLE + 10 +4745.0 + 20 +14615.0 + 30 +0.0 + 0 +SEQEND + 5 +35A8 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2F84 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35A9 + 8 +VORSATZSCHALLE + 10 +8750.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35AA + 8 +VORSATZSCHALLE + 10 +8750.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35AB + 8 +VORSATZSCHALLE + 10 +9865.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35AC + 8 +VORSATZSCHALLE + 10 +9865.0 + 20 +9110.0 + 30 +0.0 + 0 +SEQEND + 5 +35AD + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2F8A + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35AE + 8 +VORSATZSCHALLE + 10 +11250.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35AF + 8 +VORSATZSCHALLE + 10 +11250.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35B0 + 8 +VORSATZSCHALLE + 10 +16115.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35B1 + 8 +VORSATZSCHALLE + 10 +16115.0 + 20 +9110.0 + 30 +0.0 + 0 +SEQEND + 5 +35B2 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2F90 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35B3 + 8 +VORSATZSCHALLE + 10 +17375.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35B4 + 8 +VORSATZSCHALLE + 10 +17375.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35B5 + 8 +VORSATZSCHALLE + 10 +18490.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35B6 + 8 +VORSATZSCHALLE + 10 +18490.0 + 20 +9110.0 + 30 +0.0 + 0 +SEQEND + 5 +35B7 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2F96 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35B8 + 8 +VORSATZSCHALLE + 10 +20375.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35B9 + 8 +VORSATZSCHALLE + 10 +20375.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35BA + 8 +VORSATZSCHALLE + 10 +21365.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35BB + 8 +VORSATZSCHALLE + 10 +21365.0 + 20 +9110.0 + 30 +0.0 + 0 +SEQEND + 5 +35BC + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2F9C + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35BD + 8 +VORSATZSCHALLE + 10 +21875.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35BE + 8 +VORSATZSCHALLE + 10 +21875.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35BF + 8 +VORSATZSCHALLE + 10 +23240.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35C0 + 8 +VORSATZSCHALLE + 10 +23240.0 + 20 +9110.0 + 30 +0.0 + 0 +SEQEND + 5 +35C1 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FA2 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35C2 + 8 +VORSATZSCHALLE + 10 +26880.0 + 20 +10365.0 + 30 +0.0 + 0 +VERTEX + 5 +35C3 + 8 +VORSATZSCHALLE + 10 +26995.0 + 20 +10365.0 + 30 +0.0 + 0 +VERTEX + 5 +35C4 + 8 +VORSATZSCHALLE + 10 +26995.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35C5 + 8 +VORSATZSCHALLE + 10 +25375.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +35C6 + 8 +VORSATZSCHALLE + 10 +25375.0 + 20 +9110.0 + 30 +0.0 + 0 +VERTEX + 5 +35C7 + 8 +VORSATZSCHALLE + 10 +26880.0 + 20 +9110.0 + 30 +0.0 + 0 +SEQEND + 5 +35C8 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FAA + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35C9 + 8 +VORSATZSCHALLE + 10 +26880.0 + 20 +12000.0 + 30 +0.0 + 0 +VERTEX + 5 +35CA + 8 +VORSATZSCHALLE + 10 +26995.0 + 20 +12000.0 + 30 +0.0 + 0 +VERTEX + 5 +35CB + 8 +VORSATZSCHALLE + 10 +26995.0 + 20 +17740.0 + 30 +0.0 + 0 +VERTEX + 5 +35CC + 8 +VORSATZSCHALLE + 10 +26880.0 + 20 +17740.0 + 30 +0.0 + 0 +SEQEND + 5 +35CD + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FB0 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35CE + 8 +VORSATZSCHALLE + 10 +26880.0 + 20 +18375.0 + 30 +0.0 + 0 +VERTEX + 5 +35CF + 8 +VORSATZSCHALLE + 10 +26995.0 + 20 +18375.0 + 30 +0.0 + 0 +VERTEX + 5 +35D0 + 8 +VORSATZSCHALLE + 10 +26995.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35D1 + 8 +VORSATZSCHALLE + 10 +25250.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35D2 + 8 +VORSATZSCHALLE + 10 +25250.0 + 20 +22255.0 + 30 +0.0 + 0 +VERTEX + 5 +35D3 + 8 +VORSATZSCHALLE + 10 +26880.0 + 20 +22255.0 + 30 +0.0 + 0 +SEQEND + 5 +35D4 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FB8 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35D5 + 8 +VORSATZSCHALLE + 10 +4745.0 + 20 +19375.0 + 30 +0.0 + 0 +VERTEX + 5 +35D6 + 8 +VORSATZSCHALLE + 10 +4860.0 + 20 +19375.0 + 30 +0.0 + 0 +VERTEX + 5 +35D7 + 8 +VORSATZSCHALLE + 10 +4860.0 + 20 +22255.0 + 30 +0.0 + 0 +VERTEX + 5 +35D8 + 8 +VORSATZSCHALLE + 10 +6740.0 + 20 +22255.0 + 30 +0.0 + 0 +VERTEX + 5 +35D9 + 8 +VORSATZSCHALLE + 10 +6740.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35DA + 8 +VORSATZSCHALLE + 10 +4745.0 + 20 +22370.0 + 30 +0.0 + 0 +SEQEND + 5 +35DB + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FC0 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35DC + 8 +VORSATZSCHALLE + 10 +8500.0 + 20 +22255.0 + 30 +0.0 + 0 +VERTEX + 5 +35DD + 8 +VORSATZSCHALLE + 10 +8500.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35DE + 8 +VORSATZSCHALLE + 10 +10240.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35DF + 8 +VORSATZSCHALLE + 10 +10240.0 + 20 +22255.0 + 30 +0.0 + 0 +SEQEND + 5 +35E0 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FC6 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35E1 + 8 +VORSATZSCHALLE + 10 +11250.0 + 20 +22255.0 + 30 +0.0 + 0 +VERTEX + 5 +35E2 + 8 +VORSATZSCHALLE + 10 +11250.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35E3 + 8 +VORSATZSCHALLE + 10 +15865.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35E4 + 8 +VORSATZSCHALLE + 10 +15865.0 + 20 +22255.0 + 30 +0.0 + 0 +SEQEND + 5 +35E5 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FCC + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35E6 + 8 +VORSATZSCHALLE + 10 +16875.0 + 20 +22255.0 + 30 +0.0 + 0 +VERTEX + 5 +35E7 + 8 +VORSATZSCHALLE + 10 +16875.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35E8 + 8 +VORSATZSCHALLE + 10 +18740.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35E9 + 8 +VORSATZSCHALLE + 10 +18740.0 + 20 +22255.0 + 30 +0.0 + 0 +SEQEND + 5 +35EA + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FD2 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35EB + 8 +VORSATZSCHALLE + 10 +19750.0 + 20 +22255.0 + 30 +0.0 + 0 +VERTEX + 5 +35EC + 8 +VORSATZSCHALLE + 10 +19750.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35ED + 8 +VORSATZSCHALLE + 10 +23365.0 + 20 +22370.0 + 30 +0.0 + 0 +VERTEX + 5 +35EE + 8 +VORSATZSCHALLE + 10 +23365.0 + 20 +22255.0 + 30 +0.0 + 0 +SEQEND + 5 +35EF + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FD8 + 8 +VORSATZSCHALLE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35F0 + 8 +VORSATZSCHALLE + 10 +4860.0 + 20 +18240.0 + 30 +0.0 + 0 +VERTEX + 5 +35F1 + 8 +VORSATZSCHALLE + 10 +4745.0 + 20 +18240.0 + 30 +0.0 + 0 +VERTEX + 5 +35F2 + 8 +VORSATZSCHALLE + 10 +4745.0 + 20 +16125.0 + 30 +0.0 + 0 +VERTEX + 5 +35F3 + 8 +VORSATZSCHALLE + 10 +4860.0 + 20 +16125.0 + 30 +0.0 + 0 +SEQEND + 5 +35F4 + 8 +VORSATZSCHALLE + 0 +POLYLINE + 5 +2FDE + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35F5 + 8 +MAUERWERK + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +35F6 + 8 +MAUERWERK + 10 +7740.0 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +35F7 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2FE2 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +35F8 + 8 +MAUERWERK + 10 +7740.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +35F9 + 8 +MAUERWERK + 10 +7740.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +35FA + 8 +MAUERWERK + 10 +5365.0 + 20 +9615.0 + 30 +0.0 + 0 +VERTEX + 5 +35FB + 8 +MAUERWERK + 10 +5365.0 + 20 +14125.0 + 30 +0.0 + 0 +VERTEX + 5 +35FC + 8 +MAUERWERK + 10 +9750.0 + 20 +14125.0 + 30 +0.0 + 0 +VERTEX + 5 +35FD + 8 +MAUERWERK + 10 +9750.0 + 20 +13875.0 + 30 +0.0 + 0 +VERTEX + 5 +35FE + 8 +MAUERWERK + 10 +10115.0 + 20 +13875.0 + 30 +0.0 + 0 +VERTEX + 5 +35FF + 8 +MAUERWERK + 10 +10115.0 + 20 +15125.0 + 30 +0.0 + 0 +VERTEX + 5 +3600 + 8 +MAUERWERK + 10 +15750.0 + 20 +15125.0 + 30 +0.0 + 0 +VERTEX + 5 +3601 + 8 +MAUERWERK + 10 +15750.0 + 20 +15000.0 + 30 +0.0 + 0 +VERTEX + 5 +3602 + 8 +MAUERWERK + 10 +16115.0 + 20 +15000.0 + 30 +0.0 + 0 +VERTEX + 5 +3603 + 8 +MAUERWERK + 10 +16115.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +3604 + 8 +MAUERWERK + 10 +16365.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +3605 + 8 +MAUERWERK + 10 +16365.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +3606 + 8 +MAUERWERK + 10 +15750.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +3607 + 8 +MAUERWERK + 10 +15750.0 + 20 +15490.0 + 30 +0.0 + 0 +VERTEX + 5 +3608 + 8 +MAUERWERK + 10 +10115.0 + 20 +15490.0 + 30 +0.0 + 0 +VERTEX + 5 +3609 + 8 +MAUERWERK + 10 +10115.0 + 20 +15740.0 + 30 +0.0 + 0 +VERTEX + 5 +360A + 8 +MAUERWERK + 10 +9750.0 + 20 +15740.0 + 30 +0.0 + 0 +VERTEX + 5 +360B + 8 +MAUERWERK + 10 +9750.0 + 20 +14490.0 + 30 +0.0 + 0 +VERTEX + 5 +360C + 8 +MAUERWERK + 10 +5365.0 + 20 +14490.0 + 30 +0.0 + 0 +VERTEX + 5 +360D + 8 +MAUERWERK + 10 +5365.0 + 20 +14615.0 + 30 +0.0 + 0 +VERTEX + 5 +360E + 8 +MAUERWERK + 10 +5000.0 + 20 +14615.0 + 30 +0.0 + 0 +VERTEX + 5 +360F + 8 +MAUERWERK + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +3610 + 8 +MAUERWERK + 0 +POLYLINE + 5 +2FFC + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3611 + 8 +DAEMMUNG + 10 +4920.0 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3612 + 8 +DAEMMUNG + 10 +7751.25 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3613 + 8 +DAEMMUNG + 10 +7751.25 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3614 + 8 +DAEMMUNG + 10 +5000.0 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3615 + 8 +DAEMMUNG + 10 +5000.0 + 20 +14626.25 + 30 +0.0 + 0 +VERTEX + 5 +3616 + 8 +DAEMMUNG + 10 +4920.0 + 20 +14626.25 + 30 +0.0 + 0 +SEQEND + 5 +3617 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3004 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3618 + 8 +DAEMMUNG + 10 +8738.75 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3619 + 8 +DAEMMUNG + 10 +8738.75 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +361A + 8 +DAEMMUNG + 10 +9876.25 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +361B + 8 +DAEMMUNG + 10 +9876.25 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +361C + 8 +DAEMMUNG + 0 +POLYLINE + 5 +300A + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +361D + 8 +DAEMMUNG + 10 +11238.75 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +361E + 8 +DAEMMUNG + 10 +11238.75 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +361F + 8 +DAEMMUNG + 10 +16126.25 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3620 + 8 +DAEMMUNG + 10 +16126.25 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +3621 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3010 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3622 + 8 +DAEMMUNG + 10 +17363.75 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3623 + 8 +DAEMMUNG + 10 +17363.75 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3624 + 8 +DAEMMUNG + 10 +18501.25 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3625 + 8 +DAEMMUNG + 10 +18501.25 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +3626 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3016 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3627 + 8 +DAEMMUNG + 10 +20363.75 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3628 + 8 +DAEMMUNG + 10 +20363.75 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3629 + 8 +DAEMMUNG + 10 +21376.25 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +362A + 8 +DAEMMUNG + 10 +21376.25 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +362B + 8 +DAEMMUNG + 0 +POLYLINE + 5 +301C + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +362C + 8 +DAEMMUNG + 10 +21863.75 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +362D + 8 +DAEMMUNG + 10 +21863.75 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +362E + 8 +DAEMMUNG + 10 +23251.25 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +362F + 8 +DAEMMUNG + 10 +23251.25 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +3630 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3022 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3631 + 8 +DAEMMUNG + 10 +25363.75 + 20 +9250.0 + 30 +0.0 + 0 +VERTEX + 5 +3632 + 8 +DAEMMUNG + 10 +25363.75 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3633 + 8 +DAEMMUNG + 10 +26820.0 + 20 +9170.0 + 30 +0.0 + 0 +VERTEX + 5 +3634 + 8 +DAEMMUNG + 10 +26820.0 + 20 +10376.25 + 30 +0.0 + 0 +VERTEX + 5 +3635 + 8 +DAEMMUNG + 10 +26740.0 + 20 +10376.25 + 30 +0.0 + 0 +VERTEX + 5 +3636 + 8 +DAEMMUNG + 10 +26740.0 + 20 +9250.0 + 30 +0.0 + 0 +SEQEND + 5 +3637 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +302A + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3638 + 8 +DAEMMUNG + 10 +26740.0 + 20 +11990.0 + 30 +0.0 + 0 +VERTEX + 5 +3639 + 8 +DAEMMUNG + 10 +26820.0 + 20 +11990.0 + 30 +0.0 + 0 +VERTEX + 5 +363A + 8 +DAEMMUNG + 10 +26820.0 + 20 +17751.25 + 30 +0.0 + 0 +VERTEX + 5 +363B + 8 +DAEMMUNG + 10 +26740.0 + 20 +17751.25 + 30 +0.0 + 0 +SEQEND + 5 +363C + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3030 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +363D + 8 +DAEMMUNG + 10 +26820.0 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +363E + 8 +DAEMMUNG + 10 +26820.0 + 20 +18443.75 + 30 +0.0 + 0 +VERTEX + 5 +363F + 8 +DAEMMUNG + 10 +26820.0 + 20 +18363.75 + 30 +0.0 + 0 +VERTEX + 5 +3640 + 8 +DAEMMUNG + 10 +26740.0 + 20 +18363.75 + 30 +0.0 + 0 +VERTEX + 5 +3641 + 8 +DAEMMUNG + 10 +26740.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +3642 + 8 +DAEMMUNG + 10 +25238.75 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +3643 + 8 +DAEMMUNG + 10 +25238.75 + 20 +22195.0 + 30 +0.0 + 0 +SEQEND + 5 +3644 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3039 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3645 + 8 +DAEMMUNG + 10 +4920.0 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +3646 + 8 +DAEMMUNG + 10 +4920.0 + 20 +19443.75 + 30 +0.0 + 0 +VERTEX + 5 +3647 + 8 +DAEMMUNG + 10 +4920.0 + 20 +19363.75 + 30 +0.0 + 0 +VERTEX + 5 +3648 + 8 +DAEMMUNG + 10 +5000.0 + 20 +19363.75 + 30 +0.0 + 0 +VERTEX + 5 +3649 + 8 +DAEMMUNG + 10 +5000.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +364A + 8 +DAEMMUNG + 10 +6751.25 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +364B + 8 +DAEMMUNG + 10 +6751.25 + 20 +22195.0 + 30 +0.0 + 0 +SEQEND + 5 +364C + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3042 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +364D + 8 +DAEMMUNG + 10 +8488.75 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +364E + 8 +DAEMMUNG + 10 +8488.75 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +364F + 8 +DAEMMUNG + 10 +10251.25 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +3650 + 8 +DAEMMUNG + 10 +10251.25 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +3651 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3048 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3652 + 8 +DAEMMUNG + 10 +11238.75 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +3653 + 8 +DAEMMUNG + 10 +11238.75 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +3654 + 8 +DAEMMUNG + 10 +15876.25 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +3655 + 8 +DAEMMUNG + 10 +15876.25 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +3656 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +304E + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3657 + 8 +DAEMMUNG + 10 +16863.75 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +3658 + 8 +DAEMMUNG + 10 +16863.75 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +3659 + 8 +DAEMMUNG + 10 +18751.25 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +365A + 8 +DAEMMUNG + 10 +18751.25 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +365B + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3054 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +365C + 8 +DAEMMUNG + 10 +19738.25 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +365D + 8 +DAEMMUNG + 10 +19738.25 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +365E + 8 +DAEMMUNG + 10 +23375.75 + 20 +22195.0 + 30 +0.0 + 0 +VERTEX + 5 +365F + 8 +DAEMMUNG + 10 +23375.75 + 20 +22115.0 + 30 +0.0 + 0 +SEQEND + 5 +3660 + 8 +DAEMMUNG + 0 +POLYLINE + 5 +305A + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3661 + 8 +FENSTER + 10 +6740.0 + 20 +22381.250308 + 30 +0.0 + 0 +VERTEX + 5 +3662 + 8 +FENSTER + 10 +8505.0 + 20 +22381.250308 + 30 +0.0 + 0 +SEQEND + 5 +3663 + 8 +FENSTER + 0 +POLYLINE + 5 +305E + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3664 + 8 +FENSTER + 10 +4733.794186 + 20 +19390.0 + 30 +0.0 + 0 +VERTEX + 5 +3665 + 8 +FENSTER + 10 +4733.794186 + 20 +18230.0 + 30 +0.0 + 0 +SEQEND + 5 +3666 + 8 +FENSTER + 0 +POLYLINE + 5 +3062 + 8 +DAEMMUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3667 + 8 +DAEMMUNG + 10 +4920.0 + 20 +16113.75 + 30 +0.0 + 0 +VERTEX + 5 +3668 + 8 +DAEMMUNG + 10 +5000.0 + 20 +16113.75 + 30 +0.0 + 0 +VERTEX + 5 +3669 + 8 +DAEMMUNG + 10 +5000.0 + 20 +18251.25 + 30 +0.0 + 0 +VERTEX + 5 +366A + 8 +DAEMMUNG + 10 +4920.0 + 20 +18251.25 + 30 +0.0 + 0 +SEQEND + 5 +366B + 8 +DAEMMUNG + 0 +POLYLINE + 5 +3068 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +366C + 8 +FENSTER + 10 +4860.00225 + 20 +18251.100556 + 30 +0.0 + 0 +VERTEX + 5 +366D + 8 +FENSTER + 10 +4923.297336 + 20 +18251.100556 + 30 +0.0 + 0 +SEQEND + 5 +366E + 8 +FENSTER + 0 +POLYLINE + 5 +306C + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +366F + 8 +FENSTER + 10 +4733.493167 + 20 +16130.0 + 30 +0.0 + 0 +VERTEX + 5 +3670 + 8 +FENSTER + 10 +4733.493167 + 20 +14615.0 + 30 +0.0 + 0 +SEQEND + 5 +3671 + 8 +FENSTER + 0 +POLYLINE + 5 +3070 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3672 + 8 +FENSTER + 10 +4853.742083 + 20 +16125.0 + 30 +0.0 + 0 +VERTEX + 5 +3673 + 8 +FENSTER + 10 +5030.0 + 20 +16125.0 + 30 +0.0 + 0 +SEQEND + 5 +3674 + 8 +FENSTER + 0 +POLYLINE + 5 +3074 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3675 + 8 +FENSTER + 10 +4859.902627 + 20 +14615.0 + 30 +0.0 + 0 +VERTEX + 5 +3676 + 8 +FENSTER + 10 +5020.0 + 20 +14615.0 + 30 +0.0 + 0 +SEQEND + 5 +3677 + 8 +FENSTER + 0 +POLYLINE + 5 +3078 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3678 + 8 +FENSTER + 10 +7730.0 + 20 +8981.423634 + 30 +0.0 + 0 +VERTEX + 5 +3679 + 8 +FENSTER + 10 +8755.0 + 20 +8981.423634 + 30 +0.0 + 0 +SEQEND + 5 +367A + 8 +FENSTER + 0 +POLYLINE + 5 +307C + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +367B + 8 +FENSTER + 10 +7740.0 + 20 +9111.199371 + 30 +0.0 + 0 +VERTEX + 5 +367C + 8 +FENSTER + 10 +7740.0 + 20 +9285.0 + 30 +0.0 + 0 +SEQEND + 5 +367D + 8 +FENSTER + 0 +POLYLINE + 5 +3080 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +367E + 8 +FENSTER + 10 +8750.0 + 20 +9060.0 + 30 +0.0 + 0 +VERTEX + 5 +367F + 8 +FENSTER + 10 +8750.0 + 20 +9280.0 + 30 +0.0 + 0 +SEQEND + 5 +3680 + 8 +FENSTER + 0 +POLYLINE + 5 +3084 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3681 + 8 +FENSTER + 10 +9865.0 + 20 +8984.334044 + 30 +0.0 + 0 +VERTEX + 5 +3682 + 8 +FENSTER + 10 +11260.0 + 20 +8984.334044 + 30 +0.0 + 0 +SEQEND + 5 +3683 + 8 +FENSTER + 0 +POLYLINE + 5 +3088 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3684 + 8 +FENSTER + 10 +9865.0 + 20 +9295.0 + 30 +0.0 + 0 +VERTEX + 5 +3685 + 8 +FENSTER + 10 +9865.0 + 20 +9075.0 + 30 +0.0 + 0 +SEQEND + 5 +3686 + 8 +FENSTER + 0 +POLYLINE + 5 +308C + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3687 + 8 +FENSTER + 10 +11250.0 + 20 +9350.0 + 30 +0.0 + 0 +VERTEX + 5 +3688 + 8 +FENSTER + 10 +11250.0 + 20 +9075.0 + 30 +0.0 + 0 +SEQEND + 5 +3689 + 8 +FENSTER + 0 +POLYLINE + 5 +3090 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +368A + 8 +FENSTER + 10 +16110.0 + 20 +8983.714374 + 30 +0.0 + 0 +VERTEX + 5 +368B + 8 +FENSTER + 10 +17380.0 + 20 +8983.714374 + 30 +0.0 + 0 +SEQEND + 5 +368C + 8 +FENSTER + 0 +POLYLINE + 5 +3094 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +368D + 8 +FENSTER + 10 +16115.0 + 20 +9310.0 + 30 +0.0 + 0 +VERTEX + 5 +368E + 8 +FENSTER + 10 +16115.0 + 20 +9087.237065 + 30 +0.0 + 0 +SEQEND + 5 +368F + 8 +FENSTER + 0 +POLYLINE + 5 +3098 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3690 + 8 +FENSTER + 10 +17375.0 + 20 +9315.0 + 30 +0.0 + 0 +VERTEX + 5 +3691 + 8 +FENSTER + 10 +17375.0 + 20 +9110.026403 + 30 +0.0 + 0 +SEQEND + 5 +3692 + 8 +FENSTER + 0 +POLYLINE + 5 +309C + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3693 + 8 +FENSTER + 10 +18480.0 + 20 +8983.742222 + 30 +0.0 + 0 +VERTEX + 5 +3694 + 8 +FENSTER + 10 +20380.0 + 20 +8983.742222 + 30 +0.0 + 0 +SEQEND + 5 +3695 + 8 +FENSTER + 0 +POLYLINE + 5 +30A0 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3696 + 8 +FENSTER + 10 +20375.0 + 20 +9280.0 + 30 +0.0 + 0 +VERTEX + 5 +3697 + 8 +FENSTER + 10 +20375.0 + 20 +9119.145747 + 30 +0.0 + 0 +SEQEND + 5 +3698 + 8 +FENSTER + 0 +POLYLINE + 5 +30A4 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3699 + 8 +FENSTER + 10 +18490.0 + 20 +9320.0 + 30 +0.0 + 0 +VERTEX + 5 +369A + 8 +FENSTER + 10 +18490.0 + 20 +9122.747675 + 30 +0.0 + 0 +SEQEND + 5 +369B + 8 +FENSTER + 0 +POLYLINE + 5 +30A8 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +369C + 8 +FENSTER + 10 +21360.0 + 20 +8983.47638 + 30 +0.0 + 0 +VERTEX + 5 +369D + 8 +FENSTER + 10 +21875.0 + 20 +8983.47638 + 30 +0.0 + 0 +SEQEND + 5 +369E + 8 +FENSTER + 0 +POLYLINE + 5 +30AC + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +369F + 8 +FENSTER + 10 +21365.0 + 20 +9305.0 + 30 +0.0 + 0 +VERTEX + 5 +36A0 + 8 +FENSTER + 10 +21365.0 + 20 +9103.889231 + 30 +0.0 + 0 +SEQEND + 5 +36A1 + 8 +FENSTER + 0 +POLYLINE + 5 +30B0 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36A2 + 8 +FENSTER + 10 +21875.0 + 20 +9300.0 + 30 +0.0 + 0 +VERTEX + 5 +36A3 + 8 +FENSTER + 10 +21875.0 + 20 +9108.078478 + 30 +0.0 + 0 +SEQEND + 5 +36A4 + 8 +FENSTER + 0 +POLYLINE + 5 +30B4 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36A5 + 8 +FENSTER + 10 +23240.0 + 20 +9275.0 + 30 +0.0 + 0 +VERTEX + 5 +36A6 + 8 +FENSTER + 10 +23240.0 + 20 +9088.71261 + 30 +0.0 + 0 +SEQEND + 5 +36A7 + 8 +FENSTER + 0 +POLYLINE + 5 +30B8 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36A8 + 8 +FENSTER + 10 +25375.0 + 20 +9295.0 + 30 +0.0 + 0 +VERTEX + 5 +36A9 + 8 +FENSTER + 10 +25375.0 + 20 +9081.046908 + 30 +0.0 + 0 +SEQEND + 5 +36AA + 8 +FENSTER + 0 +POLYLINE + 5 +30BC + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +36AB + 8 +FENSTER + 10 +23231.732275 + 20 +8983.756213 + 30 +0.0 + 0 +VERTEX + 5 +36AC + 8 +FENSTER + 10 +25366.732275 + 20 +8983.756213 + 30 +0.0 + 0 +SEQEND + 5 +36AD + 8 +FENSTER + 0 +POLYLINE + 5 +30C0 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +36AE + 8 +FENSTER + 10 +27006.25051 + 20 +12010.0 + 30 +0.0 + 0 +VERTEX + 5 +36AF + 8 +FENSTER + 10 +27006.25051 + 20 +10355.0 + 30 +0.0 + 0 +SEQEND + 5 +36B0 + 8 +FENSTER + 0 +POLYLINE + 5 +30C4 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36B1 + 8 +FENSTER + 10 +26725.965803 + 20 +11999.707383 + 30 +0.0 + 0 +VERTEX + 5 +36B2 + 8 +FENSTER + 10 +26879.383708 + 20 +11999.707383 + 30 +0.0 + 0 +SEQEND + 5 +36B3 + 8 +FENSTER + 0 +POLYLINE + 5 +30C8 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36B4 + 8 +FENSTER + 10 +26740.0 + 20 +10365.0 + 30 +0.0 + 0 +VERTEX + 5 +36B5 + 8 +FENSTER + 10 +26883.826117 + 20 +10365.0 + 30 +0.0 + 0 +SEQEND + 5 +36B6 + 8 +FENSTER + 0 +POLYLINE + 5 +30CC + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +36B7 + 8 +FENSTER + 10 +27006.264517 + 20 +18380.0 + 30 +0.0 + 0 +VERTEX + 5 +36B8 + 8 +FENSTER + 10 +27006.264517 + 20 +17720.0 + 30 +0.0 + 0 +SEQEND + 5 +36B9 + 8 +FENSTER + 0 +POLYLINE + 5 +30D0 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36BA + 8 +FENSTER + 10 +26717.517718 + 20 +18375.099979 + 30 +0.0 + 0 +VERTEX + 5 +36BB + 8 +FENSTER + 10 +26865.113764 + 20 +18375.0 + 30 +0.0 + 0 +SEQEND + 5 +36BC + 8 +FENSTER + 0 +POLYLINE + 5 +30D4 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36BD + 8 +FENSTER + 10 +26700.0 + 20 +17740.0 + 30 +0.0 + 0 +VERTEX + 5 +36BE + 8 +FENSTER + 10 +26875.171862 + 20 +17740.0 + 30 +0.0 + 0 +SEQEND + 5 +36BF + 8 +FENSTER + 0 +POLYLINE + 5 +30D8 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36C0 + 8 +FENSTER + 10 +25250.0 + 20 +22261.196616 + 30 +0.0 + 0 +VERTEX + 5 +36C1 + 8 +FENSTER + 10 +25250.0 + 20 +22085.0 + 30 +0.0 + 0 +SEQEND + 5 +36C2 + 8 +FENSTER + 0 +POLYLINE + 5 +30DC + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +36C3 + 8 +FENSTER + 10 +23365.0 + 20 +22381.256088 + 30 +0.0 + 0 +VERTEX + 5 +36C4 + 8 +FENSTER + 10 +25255.0 + 20 +22381.256088 + 30 +0.0 + 0 +SEQEND + 5 +36C5 + 8 +FENSTER + 0 +POLYLINE + 5 +30E0 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36C6 + 8 +FENSTER + 10 +23365.0 + 20 +22100.0 + 30 +0.0 + 0 +VERTEX + 5 +36C7 + 8 +FENSTER + 10 +23365.0 + 20 +22245.591735 + 30 +0.0 + 0 +SEQEND + 5 +36C8 + 8 +FENSTER + 0 +POLYLINE + 5 +30E4 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +36C9 + 8 +FENSTER + 10 +18740.0 + 20 +22381.306986 + 30 +0.0 + 0 +VERTEX + 5 +36CA + 8 +FENSTER + 10 +19750.0 + 20 +22381.306986 + 30 +0.0 + 0 +SEQEND + 5 +36CB + 8 +FENSTER + 0 +POLYLINE + 5 +30E8 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36CC + 8 +FENSTER + 10 +19750.0 + 20 +22261.364123 + 30 +0.0 + 0 +VERTEX + 5 +36CD + 8 +FENSTER + 10 +19750.0 + 20 +22085.0 + 30 +0.0 + 0 +SEQEND + 5 +36CE + 8 +FENSTER + 0 +POLYLINE + 5 +30EC + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36CF + 8 +FENSTER + 10 +18740.0 + 20 +22095.0 + 30 +0.0 + 0 +VERTEX + 5 +36D0 + 8 +FENSTER + 10 +18740.0 + 20 +22260.16654 + 30 +0.0 + 0 +SEQEND + 5 +36D1 + 8 +FENSTER + 0 +POLYLINE + 5 +30F0 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +36D2 + 8 +FENSTER + 10 +15865.0 + 20 +22381.251394 + 30 +0.0 + 0 +VERTEX + 5 +36D3 + 8 +FENSTER + 10 +16880.0 + 20 +22381.251394 + 30 +0.0 + 0 +SEQEND + 5 +36D4 + 8 +FENSTER + 0 +POLYLINE + 5 +30F4 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36D5 + 8 +FENSTER + 10 +16875.0 + 20 +22253.739829 + 30 +0.0 + 0 +VERTEX + 5 +36D6 + 8 +FENSTER + 10 +16875.0 + 20 +22090.0 + 30 +0.0 + 0 +SEQEND + 5 +36D7 + 8 +FENSTER + 0 +POLYLINE + 5 +30F8 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36D8 + 8 +FENSTER + 10 +15865.0 + 20 +22243.287727 + 30 +0.0 + 0 +VERTEX + 5 +36D9 + 8 +FENSTER + 10 +15865.0 + 20 +22080.0 + 30 +0.0 + 0 +SEQEND + 5 +36DA + 8 +FENSTER + 0 +POLYLINE + 5 +30FC + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +36DB + 8 +FENSTER + 10 +10240.0 + 20 +22381.250977 + 30 +0.0 + 0 +VERTEX + 5 +36DC + 8 +FENSTER + 10 +11250.0 + 20 +22381.250977 + 30 +0.0 + 0 +SEQEND + 5 +36DD + 8 +FENSTER + 0 +POLYLINE + 5 +3100 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36DE + 8 +FENSTER + 10 +11250.025952 + 20 +22080.0 + 30 +0.0 + 0 +VERTEX + 5 +36DF + 8 +FENSTER + 10 +11250.0 + 20 +22247.225609 + 30 +0.0 + 0 +SEQEND + 5 +36E0 + 8 +FENSTER + 0 +POLYLINE + 5 +3104 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36E1 + 8 +FENSTER + 10 +10240.0 + 20 +22080.0 + 30 +0.0 + 0 +VERTEX + 5 +36E2 + 8 +FENSTER + 10 +10240.0 + 20 +22243.476199 + 30 +0.0 + 0 +SEQEND + 5 +36E3 + 8 +FENSTER + 0 +POLYLINE + 5 +3108 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36E4 + 8 +FENSTER + 10 +8500.0 + 20 +22252.650614 + 30 +0.0 + 0 +VERTEX + 5 +36E5 + 8 +FENSTER + 10 +8500.0 + 20 +22090.0 + 30 +0.0 + 0 +SEQEND + 5 +36E6 + 8 +FENSTER + 0 +POLYLINE + 5 +310C + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36E7 + 8 +FENSTER + 10 +6740.0 + 20 +22243.580917 + 30 +0.0 + 0 +VERTEX + 5 +36E8 + 8 +FENSTER + 10 +6740.0 + 20 +22085.0 + 30 +0.0 + 0 +SEQEND + 5 +36E9 + 8 +FENSTER + 0 +POLYLINE + 5 +3110 + 8 +FENSTER + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36EA + 8 +FENSTER + 10 +4867.826474 + 20 +19363.745737 + 30 +0.0 + 0 +VERTEX + 5 +36EB + 8 +FENSTER + 10 +4932.844101 + 20 +19363.745737 + 30 +0.0 + 0 +SEQEND + 5 +36EC + 8 +FENSTER + 0 +POLYLINE + 5 +3114 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36ED + 8 +MAUERWERK + 10 +21365.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +36EE + 8 +MAUERWERK + 10 +21365.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +36EF + 8 +MAUERWERK + 10 +17990.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +36F0 + 8 +MAUERWERK + 10 +17990.0 + 20 +18988.024968 + 30 +0.0 + 0 +SEQEND + 5 +36F1 + 8 +MAUERWERK + 0 +POLYLINE + 5 +311A + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36F2 + 8 +MAUERWERK + 10 +17625.0 + 20 +18992.018547 + 30 +0.0 + 0 +VERTEX + 5 +36F3 + 8 +MAUERWERK + 10 +17625.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +36F4 + 8 +MAUERWERK + 10 +17375.0 + 20 +15990.0 + 30 +0.0 + 0 +VERTEX + 5 +36F5 + 8 +MAUERWERK + 10 +17375.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +36F6 + 8 +MAUERWERK + 10 +20875.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +36F7 + 8 +MAUERWERK + 10 +20875.0 + 20 +15250.0 + 30 +0.0 + 0 +VERTEX + 5 +36F8 + 8 +MAUERWERK + 10 +21240.0 + 20 +15250.0 + 30 +0.0 + 0 +VERTEX + 5 +36F9 + 8 +MAUERWERK + 10 +21240.0 + 20 +15625.0 + 30 +0.0 + 0 +VERTEX + 5 +36FA + 8 +MAUERWERK + 10 +21365.0 + 20 +15625.0 + 30 +0.0 + 0 +SEQEND + 5 +36FB + 8 +MAUERWERK + 0 +POLYLINE + 5 +3125 + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +36FC + 8 +MAUERWERK + 10 +18740.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +36FD + 8 +MAUERWERK + 10 +18740.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +36FE + 8 +MAUERWERK + 10 +16875.0 + 20 +22115.0 + 30 +0.0 + 0 +VERTEX + 5 +36FF + 8 +MAUERWERK + 10 +16875.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +3700 + 8 +MAUERWERK + 10 +17625.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +3701 + 8 +MAUERWERK + 10 +17625.0 + 20 +18990.0 + 30 +0.0 + 0 +SEQEND + 5 +3702 + 8 +MAUERWERK + 0 +POLYLINE + 5 +312D + 8 +MAUERWERK + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3703 + 8 +MAUERWERK + 10 +17990.0 + 20 +18990.0 + 30 +0.0 + 0 +VERTEX + 5 +3704 + 8 +MAUERWERK + 10 +17990.0 + 20 +21750.0 + 30 +0.0 + 0 +VERTEX + 5 +3705 + 8 +MAUERWERK + 10 +18740.0 + 20 +21750.0 + 30 +0.0 + 0 +SEQEND + 5 +3706 + 8 +MAUERWERK + 0 +POLYLINE + 5 +3132 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3707 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18865.0 + 30 +0.0 + 0 +VERTEX + 5 +3708 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18865.0 + 30 +0.0 + 0 +VERTEX + 5 +3709 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18730.0 + 30 +0.0 + 0 +VERTEX + 5 +370A + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18730.0 + 30 +0.0 + 0 +SEQEND + 5 +370B + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +3138 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +370C + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18615.0 + 30 +0.0 + 0 +VERTEX + 5 +370D + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18615.0 + 30 +0.0 + 0 +VERTEX + 5 +370E + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18480.0 + 30 +0.0 + 0 +VERTEX + 5 +370F + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18480.0 + 30 +0.0 + 0 +SEQEND + 5 +3710 + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +313E + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3711 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18240.0 + 30 +0.0 + 0 +VERTEX + 5 +3712 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18240.0 + 30 +0.0 + 0 +VERTEX + 5 +3713 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18105.0 + 30 +0.0 + 0 +VERTEX + 5 +3714 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18105.0 + 30 +0.0 + 0 +SEQEND + 5 +3715 + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +3144 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3716 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17990.0 + 30 +0.0 + 0 +VERTEX + 5 +3717 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17990.0 + 30 +0.0 + 0 +VERTEX + 5 +3718 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17855.0 + 30 +0.0 + 0 +VERTEX + 5 +3719 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17855.0 + 30 +0.0 + 0 +SEQEND + 5 +371A + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +314A + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +371B + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17740.0 + 30 +0.0 + 0 +VERTEX + 5 +371C + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17740.0 + 30 +0.0 + 0 +VERTEX + 5 +371D + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17605.0 + 30 +0.0 + 0 +VERTEX + 5 +371E + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17605.0 + 30 +0.0 + 0 +SEQEND + 5 +371F + 8 +SCHORNSTEINE + 0 +INSERT + 5 +3150 + 8 +SCHRAFFUR-MAUER + 2 +*X0 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3151 + 8 +SCHRAFFUR-MAUER + 2 +*X1 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3152 + 8 +SCHRAFFUR-MAUER + 2 +*X2 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3153 + 8 +SCHRAFFUR-MAUER + 2 +*X3 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3154 + 8 +SCHRAFFUR-MAUER + 2 +*X4 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3155 + 8 +SCHRAFFUR-MAUER + 2 +*X5 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3156 + 8 +SCHRAFFUR-MAUER + 2 +*X6 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3157 + 8 +SCHRAFFUR-MAUER + 2 +*X7 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3158 + 8 +SCHRAFFUR-MAUER + 2 +*X8 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3159 + 8 +SCHRAFFUR-MAUER + 2 +*X9 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +315A + 8 +SCHRAFFUR-MAUER + 2 +*X10 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +315B + 8 +SCHRAFFUR-MAUER + 2 +*X11 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +315C + 8 +SCHRAFFUR-MAUER + 2 +*X12 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +315D + 8 +SCHRAFFUR-MAUER + 2 +*X13 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +315E + 8 +SCHRAFFUR-MAUER + 2 +*X14 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +2000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +315F + 8 +SCHRAFFUR-VORMAUER + 2 +*X15 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3160 + 8 +SCHRAFFUR-VORMAUER + 2 +*X16 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3161 + 8 +SCHRAFFUR-VORMAUER + 2 +*X17 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3162 + 8 +SCHRAFFUR-VORMAUER + 2 +*X18 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3163 + 8 +SCHRAFFUR-VORMAUER + 2 +*X19 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3164 + 8 +SCHRAFFUR-VORMAUER + 2 +*X20 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3165 + 8 +SCHRAFFUR-VORMAUER + 2 +*X21 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3166 + 8 +SCHRAFFUR-VORMAUER + 2 +*X22 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3167 + 8 +SCHRAFFUR-VORMAUER + 2 +*X23 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3168 + 8 +SCHRAFFUR-VORMAUER + 2 +*X24 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3169 + 8 +SCHRAFFUR-VORMAUER + 2 +*X25 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +316A + 8 +SCHRAFFUR-VORMAUER + 2 +*X26 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +316B + 8 +SCHRAFFUR-VORMAUER + 2 +*X27 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +316C + 8 +SCHRAFFUR-VORMAUER + 2 +*X28 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +316D + 8 +SCHRAFFUR-VORMAUER + 2 +*X29 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI31,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +316E + 8 +SCHRAFFUR-TRENNWAND + 2 +*X30 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +316F + 8 +SCHRAFFUR-TRENNWAND + 2 +*X31 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3170 + 8 +SCHRAFFUR-TRENNWAND + 2 +*X32 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3171 + 8 +SCHRAFFUR-TRENNWAND + 2 +*X33 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3172 + 8 +SCHRAFFUR-TRENNWAND + 2 +*X34 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3173 + 8 +SCHRAFFUR-TRENNWAND + 2 +*X35 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3174 + 8 +SCHRAFFUR-TRENNWAND + 2 +*X36 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3175 + 8 +SCHRAFFUR-TRENNWAND + 2 +*X37 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3176 + 8 +SCHRAFFUR-TRENNWAND + 2 +*X38 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +ANSI37,I +1040 +1000.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3177 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X39 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3178 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X40 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3179 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X41 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +317A + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X42 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +317B + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X43 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +317C + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X44 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +317D + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X45 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +317E + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X46 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +317F + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X47 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3180 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X48 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3181 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X49 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3182 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X50 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3183 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X51 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3184 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X52 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +INSERT + 5 +3185 + 8 +SCHRAFFUR-DAEMMUNG + 2 +*X53 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +HATCH +1002 +{ +1070 + 16 +1000 +HONEY,I +1040 +200.0 +1040 +0.0 +1002 +} + 0 +POLYLINE + 5 +3186 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 1 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3720 + 8 +TREPPE + 10 +19380.0 + 20 +10855.0 + 30 +0.0 + 0 +VERTEX + 5 +3721 + 8 +TREPPE + 10 +19380.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3722 + 8 +TREPPE + 10 +18040.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3723 + 8 +TREPPE + 10 +18040.0 + 20 +10855.0 + 30 +0.0 + 0 +SEQEND + 5 +3724 + 8 +TREPPE + 0 +POLYLINE + 5 +318C + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3725 + 8 +TREPPE + 10 +20825.0 + 20 +11156.0 + 30 +0.0 + 0 +VERTEX + 5 +3726 + 8 +TREPPE + 10 +19485.0 + 20 +11156.0 + 30 +0.0 + 0 +SEQEND + 5 +3727 + 8 +TREPPE + 0 +POLYLINE + 5 +3190 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3728 + 8 +TREPPE + 10 +19380.0 + 20 +11156.0 + 30 +0.0 + 0 +VERTEX + 5 +3729 + 8 +TREPPE + 10 +18040.0 + 20 +11156.0 + 30 +0.0 + 0 +SEQEND + 5 +372A + 8 +TREPPE + 0 +POLYLINE + 5 +3194 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +372B + 8 +TREPPE + 10 +19380.0 + 20 +11457.0 + 30 +0.0 + 0 +VERTEX + 5 +372C + 8 +TREPPE + 10 +18040.0 + 20 +11457.0 + 30 +0.0 + 0 +SEQEND + 5 +372D + 8 +TREPPE + 0 +POLYLINE + 5 +3198 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +372E + 8 +TREPPE + 10 +19380.0 + 20 +11758.0 + 30 +0.0 + 0 +VERTEX + 5 +372F + 8 +TREPPE + 10 +18040.0 + 20 +11758.0 + 30 +0.0 + 0 +SEQEND + 5 +3730 + 8 +TREPPE + 0 +POLYLINE + 5 +319C + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3731 + 8 +TREPPE + 10 +19380.0 + 20 +12059.0 + 30 +0.0 + 0 +VERTEX + 5 +3732 + 8 +TREPPE + 10 +18040.0 + 20 +12059.0 + 30 +0.0 + 0 +SEQEND + 5 +3733 + 8 +TREPPE + 0 +POLYLINE + 5 +31A0 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3734 + 8 +TREPPE + 10 +19380.0 + 20 +12360.0 + 30 +0.0 + 0 +VERTEX + 5 +3735 + 8 +TREPPE + 10 +18040.0 + 20 +12360.0 + 30 +0.0 + 0 +SEQEND + 5 +3736 + 8 +TREPPE + 0 +POLYLINE + 5 +31A4 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3737 + 8 +TREPPE + 10 +19380.0 + 20 +12661.0 + 30 +0.0 + 0 +VERTEX + 5 +3738 + 8 +TREPPE + 10 +18040.0 + 20 +12661.0 + 30 +0.0 + 0 +SEQEND + 5 +3739 + 8 +TREPPE + 0 +POLYLINE + 5 +31A8 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +373A + 8 +TREPPE + 10 +20825.0 + 20 +11457.0 + 30 +0.0 + 0 +VERTEX + 5 +373B + 8 +TREPPE + 10 +19485.0 + 20 +11457.0 + 30 +0.0 + 0 +SEQEND + 5 +373C + 8 +TREPPE + 0 +POLYLINE + 5 +31AC + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +373D + 8 +TREPPE + 10 +19380.0 + 20 +12962.0 + 30 +0.0 + 0 +VERTEX + 5 +373E + 8 +TREPPE + 10 +18040.0 + 20 +12962.0 + 30 +0.0 + 0 +SEQEND + 5 +373F + 8 +TREPPE + 0 +POLYLINE + 5 +31B0 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3740 + 8 +TREPPE + 10 +19380.0 + 20 +13263.0 + 30 +0.0 + 0 +VERTEX + 5 +3741 + 8 +TREPPE + 10 +18040.0 + 20 +13263.0 + 30 +0.0 + 0 +SEQEND + 5 +3742 + 8 +TREPPE + 0 +POLYLINE + 5 +31B4 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3743 + 8 +TREPPE + 10 +19380.0 + 20 +13564.0 + 30 +0.0 + 0 +VERTEX + 5 +3744 + 8 +TREPPE + 10 +18040.0 + 20 +13564.0 + 30 +0.0 + 0 +SEQEND + 5 +3745 + 8 +TREPPE + 0 +POLYLINE + 5 +31B8 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3746 + 8 +TREPPE + 10 +20825.0 + 20 +13263.0 + 30 +0.0 + 0 +VERTEX + 5 +3747 + 8 +TREPPE + 10 +19485.0 + 20 +13263.0 + 30 +0.0 + 0 +SEQEND + 5 +3748 + 8 +TREPPE + 0 +POLYLINE + 5 +31BC + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3749 + 8 +TREPPE + 10 +20825.0 + 20 +13564.0 + 30 +0.0 + 0 +VERTEX + 5 +374A + 8 +TREPPE + 10 +19485.0 + 20 +13564.0 + 30 +0.0 + 0 +SEQEND + 5 +374B + 8 +TREPPE + 0 +POLYLINE + 5 +31C0 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +374C + 8 +TREPPE + 10 +20826.354686 + 20 +12971.134203 + 30 +0.0 + 0 +VERTEX + 5 +374D + 8 +TREPPE + 10 +19481.657999 + 20 +11626.391689 + 30 +0.0 + 0 +SEQEND + 5 +374E + 8 +TREPPE + 0 +POLYLINE + 5 +31C4 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +374F + 8 +TREPPE + 10 +20827.970522 + 20 +12912.986847 + 30 +0.0 + 0 +VERTEX + 5 +3750 + 8 +TREPPE + 10 +19482.88825 + 20 +11567.710208 + 30 +0.0 + 0 +SEQEND + 5 +3751 + 8 +TREPPE + 0 +POLYLINE + 5 +31C8 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3752 + 8 +TREPPE + 10 +20825.0 + 20 +11758.0 + 30 +0.0 + 0 +VERTEX + 5 +3753 + 8 +TREPPE + 10 +19673.0 + 20 +11758.0 + 30 +0.0 + 0 +SEQEND + 5 +3754 + 8 +TREPPE + 0 +POLYLINE + 5 +31CC + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3755 + 8 +TREPPE + 10 +19613.0 + 20 +11758.0 + 30 +0.0 + 0 +VERTEX + 5 +3756 + 8 +TREPPE + 10 +19485.0 + 20 +11758.0 + 30 +0.0 + 0 +SEQEND + 5 +3757 + 8 +TREPPE + 0 +POLYLINE + 5 +31D0 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3758 + 8 +TREPPE + 10 +20825.0 + 20 +12059.0 + 30 +0.0 + 0 +VERTEX + 5 +3759 + 8 +TREPPE + 10 +19974.0 + 20 +12059.0 + 30 +0.0 + 0 +SEQEND + 5 +375A + 8 +TREPPE + 0 +POLYLINE + 5 +31D4 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +375B + 8 +TREPPE + 10 +19914.0 + 20 +12059.0 + 30 +0.0 + 0 +VERTEX + 5 +375C + 8 +TREPPE + 10 +19485.0 + 20 +12059.0 + 30 +0.0 + 0 +SEQEND + 5 +375D + 8 +TREPPE + 0 +POLYLINE + 5 +31D8 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +375E + 8 +TREPPE + 10 +20825.0 + 20 +12360.0 + 30 +0.0 + 0 +VERTEX + 5 +375F + 8 +TREPPE + 10 +20275.0 + 20 +12360.0 + 30 +0.0 + 0 +SEQEND + 5 +3760 + 8 +TREPPE + 0 +POLYLINE + 5 +31DC + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3761 + 8 +TREPPE + 10 +20215.0 + 20 +12360.0 + 30 +0.0 + 0 +VERTEX + 5 +3762 + 8 +TREPPE + 10 +19485.0 + 20 +12360.0 + 30 +0.0 + 0 +SEQEND + 5 +3763 + 8 +TREPPE + 0 +POLYLINE + 5 +31E0 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3764 + 8 +TREPPE + 10 +20825.0 + 20 +12661.0 + 30 +0.0 + 0 +VERTEX + 5 +3765 + 8 +TREPPE + 10 +20576.0 + 20 +12661.0 + 30 +0.0 + 0 +SEQEND + 5 +3766 + 8 +TREPPE + 0 +POLYLINE + 5 +31E4 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3767 + 8 +TREPPE + 10 +20516.0 + 20 +12661.0 + 30 +0.0 + 0 +VERTEX + 5 +3768 + 8 +TREPPE + 10 +19485.0 + 20 +12661.0 + 30 +0.0 + 0 +SEQEND + 5 +3769 + 8 +TREPPE + 0 +POLYLINE + 5 +31E8 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +376A + 8 +TREPPE + 10 +20825.0 + 20 +10855.0 + 30 +0.0 + 0 +VERTEX + 5 +376B + 8 +TREPPE + 10 +20825.0 + 20 +12910.0 + 30 +0.0 + 0 +SEQEND + 5 +376C + 8 +TREPPE + 0 +POLYLINE + 5 +31EC + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +376D + 8 +TREPPE + 10 +20817.0 + 20 +12962.0 + 30 +0.0 + 0 +VERTEX + 5 +376E + 8 +TREPPE + 10 +19485.0 + 20 +12962.0 + 30 +0.0 + 0 +SEQEND + 5 +376F + 8 +TREPPE + 0 +POLYLINE + 5 +31F0 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3770 + 8 +TREPPE + 10 +20825.0 + 20 +12970.0 + 30 +0.0 + 0 +VERTEX + 5 +3771 + 8 +TREPPE + 10 +20825.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3772 + 8 +TREPPE + 10 +19485.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +3773 + 8 +TREPPE + 10 +19485.0 + 20 +11629.733805 + 30 +0.0 + 0 +SEQEND + 5 +3774 + 8 +TREPPE + 0 +POLYLINE + 5 +31F6 + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3775 + 8 +TREPPE + 10 +19485.0 + 20 +11569.822263 + 30 +0.0 + 0 +VERTEX + 5 +3776 + 8 +TREPPE + 10 +19485.0 + 20 +10855.0 + 30 +0.0 + 0 +VERTEX + 5 +3777 + 8 +TREPPE + 10 +20825.0 + 20 +10855.0 + 30 +0.0 + 0 +SEQEND + 5 +3778 + 8 +TREPPE + 0 +POLYLINE + 5 +31FB + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +12.5 + 41 +12.5 + 0 +VERTEX + 5 +3779 + 8 +TREPPE + 10 +19372.305199 + 20 +10854.832899 + 30 +0.0 + 0 +VERTEX + 5 +377A + 8 +TREPPE + 10 +19495.0 + 20 +10854.832899 + 30 +0.0 + 0 +SEQEND + 5 +377B + 8 +TREPPE + 0 +POLYLINE + 5 +31FF + 8 +TREPPE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +377C + 8 +TREPPE + 10 +20155.0 + 20 +13865.0 + 30 +0.0 + 0 +VERTEX + 5 +377D + 8 +TREPPE + 10 +20155.0 + 20 +10510.0 + 30 +0.0 + 0 +VERTEX + 5 +377E + 8 +TREPPE + 10 +18710.0 + 20 +10510.0 + 30 +0.0 + 0 +VERTEX + 5 +377F + 8 +TREPPE + 10 +18710.0 + 20 +13865.0 + 30 +0.0 + 0 +SEQEND + 5 +3780 + 8 +TREPPE + 0 +SOLID + 5 +3205 + 8 +TREPPE + 10 +18710.0 + 20 +13870.0 + 30 +0.0 + 11 +18780.0 + 21 +13520.0 + 31 +0.0 + 12 +18640.0 + 22 +13520.0 + 32 +0.0 + 13 +18640.0 + 23 +13520.0 + 33 +0.0 + 0 +POINT + 5 +3206 + 8 +TREPPE + 10 +20155.0 + 20 +13870.0 + 30 +0.0 + 0 +POINT + 5 +3207 + 8 +TREPPE + 10 +20155.0 + 20 +13860.0 + 30 +0.0 + 0 +POINT + 5 +3208 + 8 +TREPPE + 10 +20155.0 + 20 +13865.0 + 30 +0.0 + 0 +POINT + 5 +3209 + 8 +TREPPE + 10 +20150.0 + 20 +13865.0 + 30 +0.0 + 0 +POINT + 5 +320A + 8 +TREPPE + 10 +20155.0 + 20 +13865.0 + 30 +0.0 + 0 +POINT + 5 +320B + 8 +TREPPE + 10 +20180.0 + 20 +13880.0 + 30 +0.0 + 0 +POINT + 5 +320C + 8 +TREPPE + 10 +20150.0 + 20 +13895.0 + 30 +0.0 + 0 +POINT + 5 +320D + 8 +TREPPE + 10 +20145.0 + 20 +13890.0 + 30 +0.0 + 0 +POINT + 5 +320E + 8 +TREPPE + 10 +20125.0 + 20 +13870.0 + 30 +0.0 + 0 +POLYLINE + 5 +320F + 8 +BALKONE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3781 + 8 +BALKONE + 10 +5850.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +3782 + 8 +BALKONE + 10 +5850.0 + 20 +7645.0 + 30 +0.0 + 0 +VERTEX + 5 +3783 + 8 +BALKONE + 10 +8850.0 + 20 +7645.0 + 30 +0.0 + 0 +VERTEX + 5 +3784 + 8 +BALKONE + 10 +8850.0 + 20 +8995.0 + 30 +0.0 + 0 +SEQEND + 5 +3785 + 8 +BALKONE + 0 +POLYLINE + 5 +3215 + 8 +BALKONE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3786 + 8 +BALKONE + 10 +26040.0 + 20 +8995.0 + 30 +0.0 + 0 +VERTEX + 5 +3787 + 8 +BALKONE + 10 +26040.0 + 20 +7645.0 + 30 +0.0 + 0 +VERTEX + 5 +3788 + 8 +BALKONE + 10 +23040.0 + 20 +7645.0 + 30 +0.0 + 0 +VERTEX + 5 +3789 + 8 +BALKONE + 10 +23040.0 + 20 +8995.0 + 30 +0.0 + 0 +SEQEND + 5 +378A + 8 +BALKONE + 0 +POLYLINE + 5 +321B + 8 +SCHNITTLINIEN + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +378B + 8 +SCHNITTLINIEN + 10 +23600.0 + 20 +6650.0 + 30 +0.0 + 0 +VERTEX + 5 +378C + 8 +SCHNITTLINIEN + 10 +23600.0 + 20 +13455.0 + 30 +0.0 + 0 +VERTEX + 5 +378D + 8 +SCHNITTLINIEN + 10 +21435.0 + 20 +13455.0 + 30 +0.0 + 0 +VERTEX + 5 +378E + 8 +SCHNITTLINIEN + 10 +21510.0 + 20 +23300.0 + 30 +0.0 + 0 +SEQEND + 5 +378F + 8 +SCHNITTLINIEN + 0 +POLYLINE + 5 +3221 + 8 +SCHNITTLINIEN + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3790 + 8 +SCHNITTLINIEN + 10 +19720.0 + 20 +7250.0 + 30 +0.0 + 0 +VERTEX + 5 +3791 + 8 +SCHNITTLINIEN + 10 +19720.0 + 20 +15150.0 + 30 +0.0 + 0 +SEQEND + 5 +3792 + 8 +SCHNITTLINIEN + 0 +POLYLINE + 5 +3225 + 8 +SCHNITTLINIEN + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +35.0 + 41 +35.0 + 0 +VERTEX + 5 +3793 + 8 +SCHNITTLINIEN + 10 +5600.0 + 20 +6615.0 + 30 +0.0 + 0 +VERTEX + 5 +3794 + 8 +SCHNITTLINIEN + 10 +5600.0 + 20 +23830.0 + 30 +0.0 + 0 +SEQEND + 5 +3795 + 8 +SCHNITTLINIEN + 0 +SOLID + 5 +3229 + 8 +SCHNITTLINIEN + 10 +19135.0 + 20 +14835.0 + 30 +0.0 + 11 +19475.0 + 21 +14540.0 + 31 +0.0 + 12 +19475.0 + 22 +15130.0 + 32 +0.0 + 13 +19475.0 + 23 +15130.0 + 33 +0.0 + 0 +SOLID + 5 +322A + 8 +SCHNITTLINIEN + 10 +19135.0 + 20 +7600.0 + 30 +0.0 + 11 +19475.0 + 21 +7305.0 + 31 +0.0 + 12 +19475.0 + 22 +7895.0 + 32 +0.0 + 13 +19475.0 + 23 +7895.0 + 33 +0.0 + 0 +SOLID + 5 +322B + 8 +SCHNITTLINIEN + 10 +24245.0 + 20 +6990.0 + 30 +0.0 + 11 +23905.0 + 21 +7285.0 + 31 +0.0 + 12 +23905.0 + 22 +6695.0 + 32 +0.0 + 13 +23905.0 + 23 +6695.0 + 33 +0.0 + 0 +SOLID + 5 +322C + 8 +SCHNITTLINIEN + 10 +22060.0 + 20 +22925.0 + 30 +0.0 + 11 +21720.0 + 21 +23220.0 + 31 +0.0 + 12 +21720.0 + 22 +22630.0 + 32 +0.0 + 13 +21720.0 + 23 +22630.0 + 33 +0.0 + 0 +SOLID + 5 +322D + 8 +SCHNITTLINIEN + 10 +6285.0 + 20 +6940.0 + 30 +0.0 + 11 +5945.0 + 21 +7235.0 + 31 +0.0 + 12 +5945.0 + 22 +6645.0 + 32 +0.0 + 13 +5945.0 + 23 +6645.0 + 33 +0.0 + 0 +SOLID + 5 +322E + 8 +SCHNITTLINIEN + 10 +6285.0 + 20 +23535.0 + 30 +0.0 + 11 +5945.0 + 21 +23830.0 + 31 +0.0 + 12 +5945.0 + 22 +23240.0 + 32 +0.0 + 13 +5945.0 + 23 +23240.0 + 33 +0.0 + 0 +POLYLINE + 5 +322F + 8 +SPANNRICHTUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +3796 + 8 +SPANNRICHTUNG + 10 +18955.0 + 20 +9925.0 + 30 +0.0 + 0 +VERTEX + 5 +3797 + 8 +SPANNRICHTUNG + 10 +18680.0 + 20 +10090.0 + 30 +0.0 + 0 +VERTEX + 5 +3798 + 8 +SPANNRICHTUNG + 10 +19549.211617 + 20 +10090.0 + 30 +0.0 + 0 +VERTEX + 5 +3799 + 8 +SPANNRICHTUNG + 10 +19263.423234 + 20 +10255.0 + 30 +0.0 + 0 +SEQEND + 5 +379A + 8 +SPANNRICHTUNG + 0 +POLYLINE + 5 +3235 + 8 +SPANNRICHTUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +379B + 8 +SPANNRICHTUNG + 10 +7260.0 + 20 +8869.211617 + 30 +0.0 + 0 +VERTEX + 5 +379C + 8 +SPANNRICHTUNG + 10 +7260.0 + 20 +8254.211617 + 30 +0.0 + 0 +VERTEX + 5 +379D + 8 +SPANNRICHTUNG + 10 +7375.0 + 20 +8455.0 + 30 +0.0 + 0 +SEQEND + 5 +379E + 8 +SPANNRICHTUNG + 0 +POLYLINE + 5 +323A + 8 +SPANNRICHTUNG + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +379F + 8 +SPANNRICHTUNG + 10 +24405.0 + 20 +8795.0 + 30 +0.0 + 0 +VERTEX + 5 +37A0 + 8 +SPANNRICHTUNG + 10 +24405.0 + 20 +8290.0 + 30 +0.0 + 0 +VERTEX + 5 +37A1 + 8 +SPANNRICHTUNG + 10 +24525.0 + 20 +8460.788383 + 30 +0.0 + 0 +SEQEND + 5 +37A2 + 8 +SPANNRICHTUNG + 0 +LINE + 5 +323F + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +17278.805922 + 30 +0.0 + 11 +17990.0 + 21 +17643.805922 + 31 +0.0 + 0 +LINE + 5 +3240 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +17632.359313 + 30 +0.0 + 11 +17847.640687 + 21 +17855.0 + 31 +0.0 + 0 +LINE + 5 +3241 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +17985.912703 + 30 +0.0 + 11 +17744.087297 + 21 +18105.0 + 31 +0.0 + 0 +LINE + 5 +3242 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +18339.466094 + 30 +0.0 + 11 +17765.533906 + 21 +18480.0 + 31 +0.0 + 0 +LINE + 5 +3243 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +18693.019485 + 30 +0.0 + 11 +17740.0 + 21 +18808.019485 + 31 +0.0 + 0 +LINE + 5 +3244 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +19046.572875 + 30 +0.0 + 11 +17990.0 + 21 +19411.572875 + 31 +0.0 + 0 +LINE + 5 +3245 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +19400.126266 + 30 +0.0 + 11 +17990.0 + 21 +19765.126266 + 31 +0.0 + 0 +LINE + 5 +3246 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +19753.679656 + 30 +0.0 + 11 +17990.0 + 21 +20118.679656 + 31 +0.0 + 0 +LINE + 5 +3247 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +20107.233047 + 30 +0.0 + 11 +17990.0 + 21 +20472.233047 + 31 +0.0 + 0 +LINE + 5 +3248 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +20460.786438 + 30 +0.0 + 11 +17990.0 + 21 +20825.786438 + 31 +0.0 + 0 +LINE + 5 +3249 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +20814.339828 + 30 +0.0 + 11 +17990.0 + 21 +21179.339828 + 31 +0.0 + 0 +LINE + 5 +324A + 8 +0 + 62 + 0 + 10 +18560.660172 + 20 +21750.0 + 30 +0.0 + 11 +18740.0 + 21 +21929.339828 + 31 +0.0 + 0 +LINE + 5 +324B + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +21167.893219 + 30 +0.0 + 11 +17990.0 + 21 +21532.893219 + 31 +0.0 + 0 +LINE + 5 +324C + 8 +0 + 62 + 0 + 10 +18207.106781 + 20 +21750.0 + 30 +0.0 + 11 +18572.106781 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +324D + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +21521.446609 + 30 +0.0 + 11 +18218.553391 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +324E + 8 +0 + 62 + 0 + 10 +17500.0 + 20 +21750.0 + 30 +0.0 + 11 +17865.0 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +324F + 8 +0 + 62 + 0 + 10 +17146.446609 + 20 +21750.0 + 30 +0.0 + 11 +17511.446609 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +3250 + 8 +0 + 62 + 0 + 10 +16875.0 + 20 +21832.106781 + 30 +0.0 + 11 +17157.893219 + 21 +22115.0 + 31 +0.0 + 0 +LINE + 5 +3251 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +16925.252532 + 30 +0.0 + 11 +17990.0 + 21 +17290.252532 + 31 +0.0 + 0 +LINE + 5 +3252 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +16571.699141 + 30 +0.0 + 11 +17990.0 + 21 +16936.699141 + 31 +0.0 + 0 +LINE + 5 +3253 + 8 +0 + 62 + 0 + 10 +17375.0 + 20 +15968.145751 + 30 +0.0 + 11 +17396.854249 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +3254 + 8 +0 + 62 + 0 + 10 +17625.0 + 20 +16218.145751 + 30 +0.0 + 11 +17990.0 + 21 +16583.145751 + 31 +0.0 + 0 +LINE + 5 +3255 + 8 +0 + 62 + 0 + 10 +17385.40764 + 20 +15625.0 + 30 +0.0 + 11 +17990.0 + 21 +16229.59236 + 31 +0.0 + 0 +LINE + 5 +3256 + 8 +0 + 62 + 0 + 10 +17738.961031 + 20 +15625.0 + 30 +0.0 + 11 +18103.961031 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +3257 + 8 +0 + 62 + 0 + 10 +18092.514421 + 20 +15625.0 + 30 +0.0 + 11 +18457.514421 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +3258 + 8 +0 + 62 + 0 + 10 +18446.067812 + 20 +15625.0 + 30 +0.0 + 11 +18811.067812 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +3259 + 8 +0 + 62 + 0 + 10 +18799.621202 + 20 +15625.0 + 30 +0.0 + 11 +19164.621202 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +325A + 8 +0 + 62 + 0 + 10 +19153.174593 + 20 +15625.0 + 30 +0.0 + 11 +19518.174593 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +325B + 8 +0 + 62 + 0 + 10 +19506.727984 + 20 +15625.0 + 30 +0.0 + 11 +19871.727984 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +325C + 8 +0 + 62 + 0 + 10 +19860.281374 + 20 +15625.0 + 30 +0.0 + 11 +20225.281374 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +325D + 8 +0 + 62 + 0 + 10 +20213.834765 + 20 +15625.0 + 30 +0.0 + 11 +20578.834765 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +325E + 8 +0 + 62 + 0 + 10 +20567.388155 + 20 +15625.0 + 30 +0.0 + 11 +20932.388155 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +325F + 8 +0 + 62 + 0 + 10 +20875.0 + 20 +15579.058454 + 30 +0.0 + 11 +21285.941546 + 21 +15990.0 + 31 +0.0 + 0 +LINE + 5 +3260 + 8 +0 + 62 + 0 + 10 +20899.494937 + 20 +15250.0 + 30 +0.0 + 11 +21240.0 + 21 +15590.505063 + 31 +0.0 + 0 +LINE + 5 +3261 + 8 +0 + 62 + 0 + 10 +21274.494937 + 20 +15625.0 + 30 +0.0 + 11 +21365.0 + 21 +15715.505063 + 31 +0.0 + 0 +LINE + 5 +3262 + 8 +0 + 62 + 0 + 10 +17796.980515 + 20 +18865.0 + 30 +0.0 + 11 +17990.0 + 21 +19058.019485 + 31 +0.0 + 0 +LINE + 5 +3263 + 8 +0 + 62 + 0 + 10 +17875.0 + 20 +18589.466094 + 30 +0.0 + 11 +17990.0 + 21 +18704.466094 + 31 +0.0 + 0 +LINE + 5 +3264 + 8 +0 + 62 + 0 + 10 +17875.0 + 20 +18235.912703 + 30 +0.0 + 11 +17990.0 + 21 +18350.912703 + 31 +0.0 + 0 +LINE + 5 +3265 + 8 +0 + 62 + 0 + 10 +17875.0 + 20 +17882.359313 + 30 +0.0 + 11 +17990.0 + 21 +17997.359313 + 31 +0.0 + 0 +POLYLINE + 5 +3266 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37A3 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18105.0 + 30 +0.0 + 0 +VERTEX + 5 +37A4 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18235.0 + 30 +0.0 + 0 +SEQEND + 5 +37A5 + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +326A + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37A6 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18110.0 + 30 +0.0 + 0 +VERTEX + 5 +37A7 + 8 +SCHORNSTEINE + 10 +17870.0 + 20 +18235.0 + 30 +0.0 + 0 +SEQEND + 5 +37A8 + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +326E + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37A9 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18485.0 + 30 +0.0 + 0 +VERTEX + 5 +37AA + 8 +SCHORNSTEINE + 10 +17745.0 + 20 +18610.0 + 30 +0.0 + 0 +SEQEND + 5 +37AB + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +3272 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37AC + 8 +SCHORNSTEINE + 10 +17745.0 + 20 +18485.0 + 30 +0.0 + 0 +VERTEX + 5 +37AD + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +18610.0 + 30 +0.0 + 0 +SEQEND + 5 +37AE + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +3276 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37AF + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +18865.0 + 30 +0.0 + 0 +VERTEX + 5 +37B0 + 8 +SCHORNSTEINE + 10 +17870.0 + 20 +18735.0 + 30 +0.0 + 0 +SEQEND + 5 +37B1 + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +327A + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37B2 + 8 +SCHORNSTEINE + 10 +17745.0 + 20 +18735.0 + 30 +0.0 + 0 +VERTEX + 5 +37B3 + 8 +SCHORNSTEINE + 10 +17870.0 + 20 +18860.0 + 30 +0.0 + 0 +SEQEND + 5 +37B4 + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +327E + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37B5 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17990.0 + 30 +0.0 + 0 +VERTEX + 5 +37B6 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17855.0 + 30 +0.0 + 0 +SEQEND + 5 +37B7 + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +3282 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37B8 + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17855.0 + 30 +0.0 + 0 +VERTEX + 5 +37B9 + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17990.0 + 30 +0.0 + 0 +SEQEND + 5 +37BA + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +3286 + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37BB + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17605.0 + 30 +0.0 + 0 +VERTEX + 5 +37BC + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17740.0 + 30 +0.0 + 0 +SEQEND + 5 +37BD + 8 +SCHORNSTEINE + 0 +POLYLINE + 5 +328A + 8 +SCHORNSTEINE + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +17.5 + 41 +17.5 + 0 +VERTEX + 5 +37BE + 8 +SCHORNSTEINE + 10 +17875.0 + 20 +17605.0 + 30 +0.0 + 0 +VERTEX + 5 +37BF + 8 +SCHORNSTEINE + 10 +17740.0 + 20 +17740.0 + 30 +0.0 + 0 +SEQEND + 5 +37C0 + 8 +SCHORNSTEINE + 0 +TEXT + 5 +328F + 8 +LEGENDE-70 + 10 +19900.0 + 20 +7445.0 + 30 +0.0 + 40 +350.0 + 1 +X + 0 +TEXT + 5 +3290 + 8 +LEGENDE-70 + 10 +19900.0 + 20 +14670.0 + 30 +0.0 + 40 +350.0 + 1 +X + 0 +TEXT + 5 +3291 + 8 +LEGENDE-70 + 10 +24485.0 + 20 +6780.0 + 30 +0.0 + 40 +350.0 + 1 +I + 0 +TEXT + 5 +3292 + 8 +LEGENDE-70 + 10 +22305.0 + 20 +22780.0 + 30 +0.0 + 40 +350.0 + 1 +I + 41 +0.5 + 0 +TEXT + 5 +3293 + 8 +LEGENDE-70 + 10 +6485.0 + 20 +6790.0 + 30 +0.0 + 40 +350.0 + 1 +S-DG + 0 +TEXT + 5 +3294 + 8 +LEGENDE-70 + 10 +6485.0 + 20 +23375.0 + 30 +0.0 + 40 +350.0 + 1 +S-DG + 0 +TEXT + 5 +3295 + 8 +LEGENDE-70 + 10 +7625.0 + 20 +22595.0 + 30 +0.0 + 40 +350.0 + 1 +S1 + 0 +TEXT + 5 +3296 + 8 +LEGENDE-70 + 10 +12955.0 + 20 +22580.0 + 30 +0.0 + 40 +350.0 + 1 +W21 + 0 +TEXT + 5 +3297 + 8 +LEGENDE-70 + 10 +20205.0 + 20 +22580.0 + 30 +0.0 + 40 +350.0 + 1 +W22 + 0 +TEXT + 5 +3298 + 8 +LEGENDE-70 + 10 +23890.0 + 20 +22580.0 + 30 +0.0 + 40 +350.0 + 1 +S2 + 0 +TEXT + 5 +3299 + 8 +LEGENDE-70 + 10 +4415.0 + 20 +20490.0 + 30 +0.0 + 40 +350.0 + 1 +W3 + 50 +90.0 + 0 +TEXT + 5 +329A + 8 +LEGENDE-70 + 10 +4465.0 + 20 +11340.0 + 30 +0.0 + 40 +350.0 + 1 +W4 + 50 +90.0 + 0 +TEXT + 5 +329B + 8 +LEGENDE-70 + 10 +6160.0 + 20 +17445.0 + 30 +0.0 + 40 +350.0 + 1 +W25 + 0 +TEXT + 5 +329C + 8 +LEGENDE-70 + 10 +6250.0 + 20 +14645.0 + 30 +0.0 + 40 +350.0 + 1 +W26 + 0 +TEXT + 5 +329D + 8 +LEGENDE-70 + 10 +9620.0 + 20 +18675.0 + 30 +0.0 + 40 +350.0 + 1 +W8 + 50 +90.0 + 0 +TEXT + 5 +329E + 8 +LEGENDE-70 + 10 +6160.0 + 20 +9930.0 + 30 +0.0 + 40 +350.0 + 1 +W23 + 0 +TEXT + 5 +329F + 8 +LEGENDE-70 + 10 +10605.0 + 20 +12890.0 + 30 +0.0 + 40 +350.0 + 1 +W28 + 0 +TEXT + 5 +32A0 + 8 +LEGENDE-70 + 10 +12015.0 + 20 +9895.0 + 30 +0.0 + 40 +350.0 + 1 +W24 + 0 +TEXT + 5 +32A1 + 8 +LEGENDE-70 + 10 +19000.0 + 20 +8415.0 + 30 +0.0 + 40 +350.0 + 1 +S4 + 0 +TEXT + 5 +32A2 + 8 +LEGENDE-70 + 10 +12440.0 + 20 +15605.0 + 30 +0.0 + 40 +350.0 + 1 +W27 + 0 +TEXT + 5 +32A3 + 8 +LEGENDE-70 + 10 +18965.0 + 20 +16115.0 + 30 +0.0 + 40 +350.0 + 1 +W29 + 0 +TEXT + 5 +32A4 + 8 +LEGENDE-70 + 10 +23160.0 + 20 +16090.0 + 30 +0.0 + 40 +350.0 + 1 +W30 + 0 +TEXT + 5 +32A5 + 8 +LEGENDE-70 + 10 +14705.0 + 20 +18675.0 + 30 +0.0 + 40 +350.0 + 1 +W7 + 50 +90.0 + 0 +TEXT + 5 +32A6 + 8 +LEGENDE-70 + 10 +17480.0 + 20 +18680.0 + 30 +0.0 + 40 +350.0 + 1 +W6 + 50 +90.0 + 0 +TEXT + 5 +32A7 + 8 +LEGENDE-70 + 10 +22355.0 + 20 +19100.0 + 30 +0.0 + 40 +350.0 + 1 +W5 + 50 +90.0 + 0 +TEXT + 5 +32A8 + 8 +LEGENDE-70 + 10 +26130.0 + 20 +19345.0 + 30 +0.0 + 40 +350.0 + 1 +W1 + 50 +90.0 + 0 +TEXT + 5 +32A9 + 8 +LEGENDE-70 + 10 +26060.0 + 20 +12355.0 + 30 +0.0 + 40 +350.0 + 1 +W2 + 50 +90.0 + 0 +TEXT + 5 +32AA + 8 +LEGENDE-70 + 10 +26095.0 + 20 +10705.0 + 30 +0.0 + 40 +350.0 + 1 +S3 + 50 +90.0 + 0 +TEXT + 5 +32AB + 8 +LEGENDE-70 + 10 +21655.0 + 20 +10070.0 + 30 +0.0 + 40 +350.0 + 1 +W29 + 50 +90.0 + 0 +TEXT + 5 +32AC + 8 +LEGENDE-70 + 10 +17500.0 + 20 +9915.0 + 30 +0.0 + 40 +350.0 + 1 +W11 + 50 +90.0 + 0 +TEXT + 5 +32AD + 8 +LEGENDE-70 + 10 +14035.0 + 20 +9905.0 + 30 +0.0 + 40 +350.0 + 1 +W10 + 50 +90.0 + 0 +DIMENSION + 5 +32AE + 8 +BEMASSUNG + 2 +*D87 + 10 +6740.0 + 20 +24615.0 + 30 +0.0 + 11 +5870.0 + 21 +24790.0 + 31 +0.0 + 1 +1.74 + 13 +5000.0 + 23 +22115.0 + 33 +0.0 + 14 +6740.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32AF + 8 +BEMASSUNG + 2 +*D89 + 10 +8500.0 + 20 +24615.0 + 30 +0.0 + 11 +7620.0 + 21 +24790.0 + 31 +0.0 + 1 +1.76 + 13 +6740.0 + 23 +22115.0 + 33 +0.0 + 14 +8500.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B0 + 8 +BEMASSUNG + 2 +*D86 + 10 +10240.0 + 20 +24615.0 + 30 +0.0 + 11 +9370.0 + 21 +24790.0 + 31 +0.0 + 1 +1.74 + 13 +8500.0 + 23 +22115.0 + 33 +0.0 + 14 +10240.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B1 + 8 +BEMASSUNG + 2 +*D85 + 10 +11255.0 + 20 +24615.0 + 30 +0.0 + 11 +10747.5 + 21 +24790.0 + 31 +0.0 + 1 +1.01 + 13 +10240.0 + 23 +22115.0 + 33 +0.0 + 14 +11255.0 + 24 +22105.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B2 + 8 +BEMASSUNG + 2 +*D84 + 10 +15860.0 + 20 +24615.0 + 30 +0.0 + 11 +13557.5 + 21 +24790.0 + 31 +0.0 + 1 +4.61 + 13 +11255.0 + 23 +22105.0 + 33 +0.0 + 14 +15860.0 + 24 +22105.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B3 + 8 +BEMASSUNG + 2 +*D83 + 10 +16875.0 + 20 +24615.0 + 30 +0.0 + 11 +16367.5 + 21 +24790.0 + 31 +0.0 + 1 +1.01 + 13 +15860.0 + 23 +22105.0 + 33 +0.0 + 14 +16875.0 + 24 +22105.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B4 + 8 +BEMASSUNG + 2 +*D82 + 10 +18735.0 + 20 +24615.0 + 30 +0.0 + 11 +17805.0 + 21 +24790.0 + 31 +0.0 + 1 +1.86 + 13 +16875.0 + 23 +22105.0 + 33 +0.0 + 14 +18735.0 + 24 +22105.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B5 + 8 +BEMASSUNG + 2 +*D81 + 10 +19750.0 + 20 +24615.0 + 30 +0.0 + 11 +19242.5 + 21 +24790.0 + 31 +0.0 + 1 +1.01 + 13 +18735.0 + 23 +22105.0 + 33 +0.0 + 14 +19750.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B6 + 8 +BEMASSUNG + 2 +*D80 + 10 +23365.0 + 20 +24615.0 + 30 +0.0 + 11 +21557.5 + 21 +24790.0 + 31 +0.0 + 1 +3.61 + 13 +19750.0 + 23 +22115.0 + 33 +0.0 + 14 +23365.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B7 + 8 +BEMASSUNG + 2 +*D88 + 10 +25250.0 + 20 +24615.0 + 30 +0.0 + 11 +24307.5 + 21 +24790.0 + 31 +0.0 + 1 +1.88 + 13 +23365.0 + 23 +22115.0 + 33 +0.0 + 14 +25250.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B8 + 8 +BEMASSUNG + 2 +*D79 + 10 +26740.0 + 20 +24615.0 + 30 +0.0 + 11 +25995.0 + 21 +24790.0 + 31 +0.0 + 1 +1.49 + 13 +25250.0 + 23 +22115.0 + 33 +0.0 + 14 +26740.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32B9 + 8 +BEMASSUNG + 2 +*D69 + 10 +5365.0 + 20 +25315.0 + 30 +0.0 + 11 +5182.5 + 21 +25490.0 + 31 +0.0 + 1 +36 + 13 +5000.0 + 23 +22115.0 + 33 +0.0 + 14 +5365.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32BA + 8 +BEMASSUNG + 2 +*D68 + 10 +9750.0 + 20 +25315.0 + 30 +0.0 + 11 +7557.5 + 21 +25490.0 + 31 +0.0 + 1 +4.38 + 13 +5365.0 + 23 +22115.0 + 33 +0.0 + 14 +9750.0 + 24 +21740.0 + 34 +0.0 + 0 +DIMENSION + 5 +32BB + 8 +BEMASSUNG + 2 +*D71 + 10 +10110.0 + 20 +25315.0 + 30 +0.0 + 11 +9930.0 + 21 +25490.0 + 31 +0.0 + 1 +36 + 13 +9750.0 + 23 +21740.0 + 33 +0.0 + 14 +10110.0 + 24 +21745.0 + 34 +0.0 + 0 +DIMENSION + 5 +32BC + 8 +BEMASSUNG + 2 +*D70 + 10 +14875.0 + 20 +25315.0 + 30 +0.0 + 11 +12492.5 + 21 +25490.0 + 31 +0.0 + 1 +4.76 + 13 +10110.0 + 23 +21745.0 + 33 +0.0 + 14 +14875.0 + 24 +21735.0 + 34 +0.0 + 0 +DIMENSION + 5 +32BD + 8 +BEMASSUNG + 2 +*D72 + 10 +15240.0 + 20 +25315.0 + 30 +0.0 + 11 +15057.5 + 21 +25490.0 + 31 +0.0 + 1 +36 + 13 +14875.0 + 23 +21735.0 + 33 +0.0 + 14 +15240.0 + 24 +21750.0 + 34 +0.0 + 0 +DIMENSION + 5 +32BE + 8 +BEMASSUNG + 2 +*D73 + 10 +17615.0 + 20 +25315.0 + 30 +0.0 + 11 +16427.5 + 21 +25490.0 + 31 +0.0 + 1 +2.38 + 13 +15240.0 + 23 +21750.0 + 33 +0.0 + 14 +17615.0 + 24 +21735.0 + 34 +0.0 + 0 +DIMENSION + 5 +32BF + 8 +BEMASSUNG + 2 +*D74 + 10 +17995.0 + 20 +25315.0 + 30 +0.0 + 11 +17805.0 + 21 +25490.0 + 31 +0.0 + 1 +36 + 13 +17615.0 + 23 +21735.0 + 33 +0.0 + 14 +17995.0 + 24 +21745.0 + 34 +0.0 + 0 +DIMENSION + 5 +32C0 + 8 +BEMASSUNG + 2 +*D75 + 10 +22500.0 + 20 +25315.0 + 30 +0.0 + 11 +20247.5 + 21 +25490.0 + 31 +0.0 + 1 +4.51 + 13 +17995.0 + 23 +21745.0 + 33 +0.0 + 14 +22500.0 + 24 +21750.0 + 34 +0.0 + 0 +DIMENSION + 5 +32C1 + 8 +BEMASSUNG + 2 +*D76 + 10 +22865.0 + 20 +25315.0 + 30 +0.0 + 11 +22682.5 + 21 +25490.0 + 31 +0.0 + 1 +36 + 13 +22500.0 + 23 +21750.0 + 33 +0.0 + 14 +22865.0 + 24 +21750.0 + 34 +0.0 + 0 +DIMENSION + 5 +32C2 + 8 +BEMASSUNG + 2 +*D77 + 10 +26370.0 + 20 +25315.0 + 30 +0.0 + 11 +24617.5 + 21 +25490.0 + 31 +0.0 + 1 +3.51 + 13 +22865.0 + 23 +21750.0 + 33 +0.0 + 14 +26370.0 + 24 +21740.0 + 34 +0.0 + 0 +DIMENSION + 5 +32C3 + 8 +BEMASSUNG + 2 +*D78 + 10 +26740.0 + 20 +25315.0 + 30 +0.0 + 11 +26555.0 + 21 +25490.0 + 31 +0.0 + 1 +36 + 13 +26370.0 + 23 +21740.0 + 33 +0.0 + 14 +26740.0 + 24 +22000.0 + 34 +0.0 + 0 +DIMENSION + 5 +32C4 + 8 +BEMASSUNG + 2 +*D67 + 10 +26740.0 + 20 +26015.0 + 30 +0.0 + 11 +15870.0 + 21 +26190.0 + 31 +0.0 + 1 +21.74 + 13 +5000.0 + 23 +22115.0 + 33 +0.0 + 14 +26740.0 + 24 +22115.0 + 34 +0.0 + 0 +DIMENSION + 5 +32C5 + 8 +BEMASSUNG + 2 +*D63 + 10 +3500.0 + 20 +14615.0 + 30 +0.0 + 11 +3325.0 + 21 +11932.5 + 31 +0.0 + 1 +5.36 + 13 +5000.0 + 23 +9250.0 + 33 +0.0 + 14 +5000.0 + 24 +14615.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32C6 + 8 +BEMASSUNG + 2 +*D59 + 10 +3500.0 + 20 +16125.0 + 30 +0.0 + 11 +3325.0 + 21 +15370.0 + 31 +0.0 + 1 +1.51 + 13 +5000.0 + 23 +14615.0 + 33 +0.0 + 14 +5000.0 + 24 +16125.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32C7 + 8 +BEMASSUNG + 2 +*D60 + 10 +3500.0 + 20 +18240.0 + 30 +0.0 + 11 +3325.0 + 21 +17182.5 + 31 +0.0 + 1 +2.11 + 13 +5000.0 + 23 +16125.0 + 33 +0.0 + 14 +5000.0 + 24 +18240.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32C8 + 8 +BEMASSUNG + 2 +*D61 + 10 +3500.0 + 20 +19375.0 + 30 +0.0 + 11 +3325.0 + 21 +18807.5 + 31 +0.0 + 1 +1.13 + 13 +5000.0 + 23 +18240.0 + 33 +0.0 + 14 +5000.0 + 24 +19375.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32C9 + 8 +BEMASSUNG + 2 +*D62 + 10 +3500.0 + 20 +22115.0 + 30 +0.0 + 11 +3325.0 + 21 +20745.0 + 31 +0.0 + 1 +2.74 + 13 +5000.0 + 23 +19375.0 + 33 +0.0 + 14 +5000.0 + 24 +22115.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32CA + 8 +BEMASSUNG + 2 +*D64 + 10 +8115.0 + 20 +18105.0 + 30 +0.0 + 11 +6740.0 + 21 +18280.0 + 31 +0.0 + 1 +2.75 + 13 +5365.0 + 23 +17255.0 + 33 +0.0 + 14 +8115.0 + 24 +17255.0 + 34 +0.0 + 0 +DIMENSION + 5 +32CB + 8 +BEMASSUNG + 2 +*D65 + 10 +9005.0 + 20 +18105.0 + 30 +0.0 + 11 +8560.0 + 21 +18280.0 + 31 +0.0 + 1 +88 + 13 +8115.0 + 23 +17255.0 + 33 +0.0 + 14 +9005.0 + 24 +17185.0 + 34 +0.0 + 0 +DIMENSION + 5 +32CC + 8 +BEMASSUNG + 2 +*D66 + 10 +9750.0 + 20 +18105.0 + 30 +0.0 + 11 +9377.5 + 21 +18280.0 + 31 +0.0 + 1 +75 + 13 +9005.0 + 23 +17185.0 + 33 +0.0 + 14 +9750.0 + 24 +18100.0 + 34 +0.0 + 0 +DIMENSION + 5 +32CD + 8 +BEMASSUNG + 2 +*D57 + 10 +7620.0 + 20 +16165.0 + 30 +0.0 + 11 +6495.0 + 21 +16340.0 + 31 +0.0 + 1 +2.25 + 13 +5370.0 + 23 +16875.0 + 33 +0.0 + 14 +7620.0 + 24 +16875.0 + 34 +0.0 + 0 +DIMENSION + 5 +32CE + 8 +BEMASSUNG + 2 +*D58 + 10 +7740.0 + 20 +16165.0 + 30 +0.0 + 11 +7829.5 + 21 +16340.0 + 31 +0.0 + 1 +12 + 13 +7620.0 + 23 +16875.0 + 33 +0.0 + 14 +7740.0 + 24 +16195.0 + 34 +0.0 + 0 +DIMENSION + 5 +32CF + 8 +BEMASSUNG + 2 +*D55 + 10 +12615.0 + 20 +11975.0 + 30 +0.0 + 11 +11180.0 + 21 +12150.0 + 31 +0.0 + 1 +2.87 + 13 +9745.0 + 23 +12370.0 + 33 +0.0 + 14 +12615.0 + 24 +12370.0 + 34 +0.0 + 0 +DIMENSION + 5 +32D0 + 8 +BEMASSUNG + 2 +*D146 + 10 +13880.0 + 20 +11975.0 + 30 +0.0 + 11 +13025.0 + 21 +12150.0 + 31 +0.0 + 70 + 128 + 1 +1.26 + 13 +12615.0 + 23 +12370.0 + 33 +0.0 + 14 +13880.0 + 24 +11955.0 + 34 +0.0 + 0 +DIMENSION + 5 +32D1 + 8 +BEMASSUNG + 2 +*D56 + 10 +14120.0 + 20 +11975.0 + 30 +0.0 + 11 +14000.0 + 21 +12150.0 + 31 +0.0 + 1 +25 + 13 +13880.0 + 23 +11955.0 + 33 +0.0 + 14 +14120.0 + 24 +11975.0 + 34 +0.0 + 0 +TEXT + 5 +32D2 + 8 +BEMASSUNG + 10 +26657.241299 + 20 +25517.290813 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32D3 + 8 +BEMASSUNG + 10 +24515.928885 + 20 +24822.24712 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32D4 + 8 +BEMASSUNG + 10 +22779.643546 + 20 +25526.273006 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32D5 + 8 +BEMASSUNG + 10 +17917.639253 + 20 +25547.220539 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32D6 + 8 +BEMASSUNG + 10 +15161.804721 + 20 +25526.273006 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32D7 + 8 +BEMASSUNG + 10 +13778.648316 + 20 +24803.584125 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32D8 + 8 +BEMASSUNG + 10 +17974.943526 + 20 +24816.921717 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32D9 + 8 +BEMASSUNG + 10 +21747.188324 + 20 +24806.448018 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32DA + 8 +BEMASSUNG + 10 +13778.648316 + 20 +24814.057823 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32DB + 8 +BEMASSUNG + 10 +10027.360287 + 20 +25536.746704 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32DC + 8 +BEMASSUNG + 10 +7772.360287 + 20 +25536.746704 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32DD + 8 +BEMASSUNG + 10 +5267.360287 + 20 +25536.746704 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32DE + 8 +BEMASSUNG + 10 +8675.0 + 20 +18331.746704 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 0 +TEXT + 5 +32DF + 8 +BEMASSUNG + 10 +2610.0 + 20 +22030.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +TEXT + 5 +32E0 + 8 +BEMASSUNG + 10 +2610.0 + 20 +17160.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +TEXT + 5 +32E1 + 8 +BEMASSUNG + 10 +3300.0 + 20 +19020.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +TEXT + 5 +32E2 + 8 +BEMASSUNG + 10 +3300.0 + 20 +17365.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +TEXT + 5 +32E3 + 8 +BEMASSUNG + 10 +2610.0 + 20 +14385.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +TEXT + 5 +32E4 + 8 +BEMASSUNG + 10 +3300.0 + 20 +12135.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +DIMENSION + 5 +32E5 + 8 +BEMASSUNG + 2 +*D90 + 10 +2800.0 + 20 +9615.0 + 30 +0.0 + 11 +2625.0 + 21 +9432.5 + 31 +0.0 + 1 +36 + 13 +5000.0 + 23 +9250.0 + 33 +0.0 + 14 +5000.0 + 24 +9615.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32E6 + 8 +BEMASSUNG + 2 +*D91 + 10 +2800.0 + 20 +14115.0 + 30 +0.0 + 11 +2625.0 + 21 +11865.0 + 31 +0.0 + 1 +4.51 + 13 +5000.0 + 23 +9615.0 + 33 +0.0 + 14 +5365.0 + 24 +14115.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32E7 + 8 +BEMASSUNG + 2 +*D92 + 10 +2800.0 + 20 +14475.0 + 30 +0.0 + 11 +2625.0 + 21 +14295.0 + 31 +0.0 + 1 +36 + 13 +5365.0 + 23 +14115.0 + 33 +0.0 + 14 +5390.0 + 24 +14475.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32E8 + 8 +BEMASSUNG + 2 +*D93 + 10 +2800.0 + 20 +16875.0 + 30 +0.0 + 11 +2625.0 + 21 +15675.0 + 31 +0.0 + 1 +2.38 + 13 +5390.0 + 23 +14475.0 + 33 +0.0 + 14 +5365.0 + 24 +16875.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32E9 + 8 +BEMASSUNG + 2 +*D94 + 10 +2800.0 + 20 +17235.0 + 30 +0.0 + 11 +2625.0 + 21 +17055.0 + 31 +0.0 + 1 +36 + 13 +5365.0 + 23 +16875.0 + 33 +0.0 + 14 +5375.0 + 24 +17235.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32EA + 8 +BEMASSUNG + 2 +*D95 + 10 +2800.0 + 20 +21750.0 + 30 +0.0 + 11 +2625.0 + 21 +19492.5 + 31 +0.0 + 1 +4.51 + 13 +5375.0 + 23 +17235.0 + 33 +0.0 + 14 +5355.0 + 24 +21750.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32EB + 8 +BEMASSUNG + 2 +*D96 + 10 +2800.0 + 20 +22120.0 + 30 +0.0 + 11 +2625.0 + 21 +21935.0 + 31 +0.0 + 1 +36 + 13 +5355.0 + 23 +21750.0 + 33 +0.0 + 14 +5345.0 + 24 +22120.0 + 34 +0.0 + 50 +90.0 + 0 +TEXT + 5 +32EC + 8 +BEMASSUNG + 10 +2610.0 + 20 +15890.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +TEXT + 5 +32ED + 8 +BEMASSUNG + 10 +2610.0 + 20 +9525.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 0 +DIMENSION + 5 +32EE + 8 +BEMASSUNG + 2 +*D97 + 10 +13530.0 + 20 +18105.0 + 30 +0.0 + 11 +11825.0 + 21 +18280.0 + 31 +0.0 + 1 +3.41 + 13 +10120.0 + 23 +17375.0 + 33 +0.0 + 14 +13530.0 + 24 +17375.0 + 34 +0.0 + 0 +DIMENSION + 5 +32EF + 8 +BEMASSUNG + 2 +*D201 + 10 +14560.0 + 20 +18105.0 + 30 +0.0 + 11 +14120.0 + 21 +18280.0 + 31 +0.0 + 70 + 128 + 1 +88 + 13 +13530.0 + 23 +17375.0 + 33 +0.0 + 14 +14560.0 + 24 +17375.0 + 34 +0.0 + 0 +DIMENSION + 5 +32F0 + 8 +BEMASSUNG + 2 +*D98 + 10 +14885.0 + 20 +18105.0 + 30 +0.0 + 11 +14722.5 + 21 +18280.0 + 31 +0.0 + 1 +32 + 13 +14560.0 + 23 +17375.0 + 33 +0.0 + 14 +14885.0 + 24 +17395.0 + 34 +0.0 + 0 +DIMENSION + 5 +32F1 + 8 +BEMASSUNG + 2 +*D99 + 10 +15990.0 + 20 +18110.0 + 30 +0.0 + 11 +15612.5 + 21 +18285.0 + 31 +0.0 + 1 +75 + 13 +15235.0 + 23 +17380.0 + 33 +0.0 + 14 +15990.0 + 24 +17380.0 + 34 +0.0 + 0 +DIMENSION + 5 +32F2 + 8 +BEMASSUNG + 2 +*D100 + 10 +16870.0 + 20 +18110.0 + 30 +0.0 + 11 +16430.0 + 21 +18285.0 + 31 +0.0 + 1 +88 + 13 +15990.0 + 23 +17380.0 + 33 +0.0 + 14 +16870.0 + 24 +17370.0 + 34 +0.0 + 0 +DIMENSION + 5 +32F3 + 8 +BEMASSUNG + 2 +*D101 + 10 +17625.0 + 20 +18110.0 + 30 +0.0 + 11 +17247.5 + 21 +18285.0 + 31 +0.0 + 1 +75 + 13 +16870.0 + 23 +17370.0 + 33 +0.0 + 14 +17625.0 + 24 +17380.0 + 34 +0.0 + 0 +DIMENSION + 5 +32F4 + 8 +BEMASSUNG + 2 +*D102 + 10 +21360.0 + 20 +16810.0 + 30 +0.0 + 11 +19672.5 + 21 +16985.0 + 31 +0.0 + 1 +3.37 + 13 +17985.0 + 23 +16005.0 + 33 +0.0 + 14 +21360.0 + 24 +16005.0 + 34 +0.0 + 0 +DIMENSION + 5 +32F5 + 8 +BEMASSUNG + 2 +*D103 + 10 +22255.0 + 20 +16810.0 + 30 +0.0 + 11 +21807.5 + 21 +16985.0 + 31 +0.0 + 1 +88 + 13 +21360.0 + 23 +16005.0 + 33 +0.0 + 14 +22255.0 + 24 +15975.0 + 34 +0.0 + 0 +DIMENSION + 5 +32F6 + 8 +BEMASSUNG + 2 +*D104 + 10 +22510.0 + 20 +16810.0 + 30 +0.0 + 11 +22382.5 + 21 +16985.0 + 31 +0.0 + 1 +25 + 13 +22255.0 + 23 +15975.0 + 33 +0.0 + 14 +22510.0 + 24 +16010.0 + 34 +0.0 + 0 +TEXT + 5 +32F7 + 8 +BEMASSUNG + 10 +19890.0 + 20 +17015.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +32F8 + 8 +BEMASSUNG + 10 +21950.0 + 20 +17015.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +32F9 + 8 +BEMASSUNG + 10 +16570.0 + 20 +18305.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +32FA + 8 +BEMASSUNG + 10 +14250.0 + 20 +18305.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 41 +0.75 + 7 +STANDART + 0 +DIMENSION + 5 +32FB + 8 +BEMASSUNG + 2 +*D105 + 10 +24520.0 + 20 +16245.0 + 30 +0.0 + 11 +24345.0 + 21 +16115.0 + 31 +0.0 + 1 +25 + 13 +22865.0 + 23 +15985.0 + 33 +0.0 + 14 +22865.0 + 24 +16245.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32FC + 8 +BEMASSUNG + 2 +*D106 + 10 +24520.0 + 20 +17130.0 + 30 +0.0 + 11 +24345.0 + 21 +16687.5 + 31 +0.0 + 1 +88 + 13 +22865.0 + 23 +16245.0 + 33 +0.0 + 14 +22845.0 + 24 +17130.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32FD + 8 +BEMASSUNG + 2 +*D107 + 10 +24520.0 + 20 +21740.0 + 30 +0.0 + 11 +24345.0 + 21 +19435.0 + 31 +0.0 + 1 +4.62 + 13 +22845.0 + 23 +17130.0 + 33 +0.0 + 14 +23355.0 + 24 +21740.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32FE + 8 +BEMASSUNG + 2 +*D108 + 10 +28240.0 + 20 +10360.0 + 30 +0.0 + 11 +28065.0 + 21 +9807.5 + 31 +0.0 + 1 +1.11 + 13 +26740.0 + 23 +9255.0 + 33 +0.0 + 14 +26740.0 + 24 +10360.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +32FF + 8 +BEMASSUNG + 2 +*D109 + 10 +28240.0 + 20 +12010.0 + 30 +0.0 + 11 +28065.0 + 21 +11185.0 + 31 +0.0 + 1 +1.63 + 13 +26740.0 + 23 +10360.0 + 33 +0.0 + 14 +26730.0 + 24 +12010.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3300 + 8 +BEMASSUNG + 2 +*D110 + 10 +28240.0 + 20 +17730.0 + 30 +0.0 + 11 +28065.0 + 21 +14870.0 + 31 +0.0 + 1 +5.74 + 13 +26730.0 + 23 +12010.0 + 33 +0.0 + 14 +26725.0 + 24 +17730.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3301 + 8 +BEMASSUNG + 2 +*D111 + 10 +28240.0 + 20 +18385.0 + 30 +0.0 + 11 +28065.0 + 21 +18057.5 + 31 +0.0 + 1 +63 + 13 +26725.0 + 23 +17730.0 + 33 +0.0 + 14 +26720.0 + 24 +18385.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3302 + 8 +BEMASSUNG + 2 +*D112 + 10 +28240.0 + 20 +22115.0 + 30 +0.0 + 11 +28065.0 + 21 +20250.0 + 31 +0.0 + 1 +3.74 + 13 +26720.0 + 23 +18385.0 + 33 +0.0 + 14 +26725.0 + 24 +22115.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3303 + 8 +BEMASSUNG + 2 +*D113 + 10 +28940.0 + 20 +9615.0 + 30 +0.0 + 11 +28765.0 + 21 +9435.0 + 31 +0.0 + 1 +36 + 13 +26685.0 + 23 +9255.0 + 33 +0.0 + 14 +26685.0 + 24 +9615.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3304 + 8 +BEMASSUNG + 2 +*D114 + 10 +28940.0 + 20 +15625.0 + 30 +0.0 + 11 +28765.0 + 21 +12620.0 + 31 +0.0 + 1 +6.01 + 13 +26685.0 + 23 +9615.0 + 33 +0.0 + 14 +26365.0 + 24 +15625.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3305 + 8 +BEMASSUNG + 2 +*D115 + 10 +28940.0 + 20 +15995.0 + 30 +0.0 + 11 +28765.0 + 21 +15810.0 + 31 +0.0 + 1 +36 + 13 +26365.0 + 23 +15625.0 + 33 +0.0 + 14 +26365.0 + 24 +15995.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3306 + 8 +BEMASSUNG + 2 +*D116 + 10 +28940.0 + 20 +21745.0 + 30 +0.0 + 11 +28765.0 + 21 +18870.0 + 31 +0.0 + 1 +5.76 + 13 +26365.0 + 23 +15995.0 + 33 +0.0 + 14 +26370.0 + 24 +21745.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3307 + 8 +BEMASSUNG + 2 +*D117 + 10 +28940.0 + 20 +22115.0 + 30 +0.0 + 11 +28765.0 + 21 +21930.0 + 31 +0.0 + 1 +36 + 13 +26370.0 + 23 +21745.0 + 33 +0.0 + 14 +26380.0 + 24 +22115.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3308 + 8 +BEMASSUNG + 2 +*D118 + 10 +29640.0 + 20 +22115.0 + 30 +0.0 + 11 +29465.0 + 21 +15685.0 + 31 +0.0 + 1 +12.86 + 13 +26720.0 + 23 +9255.0 + 33 +0.0 + 14 +26720.0 + 24 +22115.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3309 + 8 +BEMASSUNG + 2 +*D119 + 10 +24520.0 + 20 +15240.0 + 30 +0.0 + 11 +24345.0 + 21 +15432.5 + 31 +0.0 + 1 +40 + 13 +22975.0 + 23 +15625.0 + 33 +0.0 + 14 +22975.0 + 24 +15240.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +330A + 8 +BEMASSUNG + 2 +*D120 + 10 +24520.0 + 20 +14360.0 + 30 +0.0 + 11 +24345.0 + 21 +14800.0 + 31 +0.0 + 1 +88 + 13 +22975.0 + 23 +15240.0 + 33 +0.0 + 14 +22960.0 + 24 +14360.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +330B + 8 +BEMASSUNG + 2 +*D121 + 10 +24520.0 + 20 +9625.0 + 30 +0.0 + 11 +24345.0 + 21 +11992.5 + 31 +0.0 + 1 +4.72 + 13 +22960.0 + 23 +14360.0 + 33 +0.0 + 14 +24375.0 + 24 +9625.0 + 34 +0.0 + 50 +90.0 + 0 +TEXT + 5 +330C + 8 +BEMASSUNG + 10 +24345.0 + 20 +12215.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +330D + 8 +BEMASSUNG + 10 +24345.0 + 20 +14955.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +330E + 8 +BEMASSUNG + 10 +28045.0 + 20 +11410.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +330F + 8 +BEMASSUNG + 10 +28045.0 + 20 +9975.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +3310 + 8 +BEMASSUNG + 10 +28735.0 + 20 +9520.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +3311 + 8 +BEMASSUNG + 10 +29445.0 + 20 +15915.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +3312 + 8 +BEMASSUNG + 10 +28740.0 + 20 +15895.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +3313 + 8 +BEMASSUNG + 10 +28045.0 + 20 +18230.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +3314 + 8 +BEMASSUNG + 10 +28735.0 + 20 +22015.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +3315 + 8 +BEMASSUNG + 10 +24345.0 + 20 +16845.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +TEXT + 5 +3316 + 8 +BEMASSUNG + 10 +24345.0 + 20 +19675.0 + 30 +0.0 + 40 +125.0 + 1 +5 + 50 +90.0 + 41 +0.75 + 7 +STANDART + 0 +DIMENSION + 5 +3317 + 8 +BEMASSUNG + 2 +*D128 + 10 +8415.0 + 20 +15585.0 + 30 +0.0 + 11 +8240.0 + 21 +15037.5 + 31 +0.0 + 1 +1.10 + 13 +7730.0 + 23 +14490.0 + 33 +0.0 + 14 +7730.0 + 24 +15585.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3318 + 8 +BEMASSUNG + 2 +*D127 + 10 +8415.0 + 20 +16490.0 + 30 +0.0 + 11 +8240.0 + 21 +16037.5 + 31 +0.0 + 1 +88 + 13 +7730.0 + 23 +15585.0 + 33 +0.0 + 14 +7730.0 + 24 +16490.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +3319 + 8 +BEMASSUNG + 2 +*D126 + 10 +8415.0 + 20 +16880.0 + 30 +0.0 + 11 +8240.0 + 21 +16685.0 + 31 +0.0 + 1 +40 + 13 +7730.0 + 23 +16490.0 + 33 +0.0 + 14 +8115.0 + 24 +16880.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +331A + 8 +BEMASSUNG + 2 +*D131 + 10 +8405.0 + 20 +19980.0 + 30 +0.0 + 11 +8230.0 + 21 +18622.5 + 31 +0.0 + 1 + 2.75 + 13 +9750.0 + 23 +17265.0 + 33 +0.0 + 14 +9750.0 + 24 +19980.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +331B + 8 +BEMASSUNG + 2 +*D129 + 10 +8405.0 + 20 +20875.0 + 30 +0.0 + 11 +8230.0 + 21 +20427.5 + 31 +0.0 + 1 +88 + 13 +9750.0 + 23 +19980.0 + 33 +0.0 + 14 +9755.0 + 24 +20875.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +331C + 8 +BEMASSUNG + 2 +*D130 + 10 +8405.0 + 20 +21750.0 + 30 +0.0 + 11 +8230.0 + 21 +21312.5 + 31 +0.0 + 1 +87 + 13 +9755.0 + 23 +20875.0 + 33 +0.0 + 14 +9740.0 + 24 +21750.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +331D + 8 +BEMASSUNG + 2 +*D122 + 10 +13890.0 + 20 +17375.0 + 30 +0.0 + 11 +13715.0 + 21 +17464.5 + 31 +0.0 + 1 +12 + 13 +14555.0 + 23 +17245.0 + 33 +0.0 + 14 +14555.0 + 24 +17375.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +331E + 8 +BEMASSUNG + 2 +*D123 + 10 +13890.0 + 20 +21750.0 + 30 +0.0 + 11 +13715.0 + 21 +19562.5 + 31 +0.0 + 1 +4.37 + 13 +14555.0 + 23 +17375.0 + 33 +0.0 + 14 +13890.0 + 24 +21750.0 + 34 +0.0 + 50 +90.0 + 0 +DIMENSION + 5 +331F + 8 +BEMASSUNG + 2 +*D124 + 10 +10725.0 + 20 +15