From 850e5bce2491dec8dd4bb50ccae9edebcf8a1f7f Mon Sep 17 00:00:00 2001 From: Ramakrishnan Muthukrishnan Date: Sun, 17 Jul 2016 09:40:02 +0530 Subject: [PATCH] hspec tests for single/multi torrent, bencode etc --- COPYING | 676 ++++++++++++++++++++++++++++++++++ README.md | 5 + Setup.hs | 2 + data/test1.torrent | Bin 0 -> 26174 bytes data/test2.torrent | Bin 0 -> 44718 bytes data/test3.torrent | Bin 0 -> 45617 bytes data/test4.torrent | Bin 0 -> 32209 bytes functorrent.cabal | 55 +++ src/FuncTorrent/Bencode.hs | 97 +++++ src/FuncTorrent/Filesystem.hs | 30 ++ src/FuncTorrent/Metainfo.hs | 145 ++++++++ src/main/Main.hs | 8 + stack.yaml | 66 ++++ test/BencodeSpec.hs | 53 +++ test/MetainfoSpec.hs | 46 +++ test/Spec.hs | 1 + 16 files changed, 1184 insertions(+) create mode 100644 COPYING create mode 100644 README.md create mode 100644 Setup.hs create mode 100644 data/test1.torrent create mode 100644 data/test2.torrent create mode 100644 data/test3.torrent create mode 100644 data/test4.torrent create mode 100644 functorrent.cabal create mode 100644 src/FuncTorrent/Bencode.hs create mode 100644 src/FuncTorrent/Filesystem.hs create mode 100644 src/FuncTorrent/Metainfo.hs create mode 100644 src/main/Main.hs create mode 100644 stack.yaml create mode 100644 test/BencodeSpec.hs create mode 100644 test/MetainfoSpec.hs create mode 100644 test/Spec.hs diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..b018460 --- /dev/null +++ b/COPYING @@ -0,0 +1,676 @@ +Copyright Ramakrishnan Muthukrishnan (c) 2016 + + 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. + + + Copyright (C) + + 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: + + Copyright (C) + 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 0000000..1396289 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# functorrent + +[![Build Status](https://travis-ci.org/vu3rdd/functorrent.png)](https://travis-ci.org/vu3rdd/functorrent) + +TODO Description. diff --git a/Setup.hs b/Setup.hs new file mode 100644 index 0000000..9a994af --- /dev/null +++ b/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/data/test1.torrent b/data/test1.torrent new file mode 100644 index 0000000000000000000000000000000000000000..7a3c0a0f10dac306211efbaa7978bb6face73fff GIT binary patch literal 26174 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

<7) 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 awobdI;GHNt*3t66O;ZNN@Dm0}F=b``h|Zk= literal 0 HcmV?d00001 diff --git a/data/test2.torrent b/data/test2.torrent new file mode 100644 index 0000000000000000000000000000000000000000..d38a2f6dfa85605d13adb856860385830bc11f3e GIT binary patch literal 44718 zcma&NLy#y8ux44dZQHhO+qP}H>XvQWwr$(C&Hkfb_r&aGw#k!`tBfzwgoDe_&d%P| z&e)Whlgq-z#es{S-o@U@$<)q;&eh1(&c&6^*xr_ljgyU&{{KcYGXFnGv^JK`E;cs* z|8q@kSXlmVA4>-}HoE_>W~Qd>T>lZ+{s+Xw$))Sm-RB?HQT494t+ZO$q)_1y&{&CJqi$ zw*Rp@v#>C8FmN%|oD@oYxf!5F&XWpjdHP=paAl*!lpZ3YiX;^4iEwJDK|+1$&IB6Y zVGPd?gn)mz3~ha2*Nc$m6?NUW0dj~UA?K3K-60^0#spTta1}OnT#l8r#Y?btUodaL z9@joec4_(7M$|7JB#bn;U%`!X3iAi3;zCFpLPp{aWd-{!fyuaud-`Aws3>vOZ&7ek z3F!l_;n@(N#R<(YT}mfVVlQ=5S)g8GmXr8m_*Dzp4!HBltLJUNJEcJ3-k28NXGQYF zw~UrK{(BD`xnykh0S-~0Z1_4Q5aVn zA5|(+Mv0$2|8;k|Os^40tLxMVFoX;YHfdB$i1%fIl$C7EqUMQauSc6U(1JDUbtV80 zr=pc%br7qFLNXAwe}<^0i<%~ght`kIpHQtJJ+0-}FLzl#7M8ne7niUt{LcuhfpV5#a) z^VW>OYBjeSn2*fYJ}^Air?3;XR2Q0i54#D~EBN;q+b}SAmm*D>TV3}2LFr*MI=7cl zovkN$NDMB_C}}Btyc^~1xW`d0JJqBU7G1s*OFgCNs%k@Ad3N2?_xSkSjp_Y3H6xVb zK?$aZp&L%Y-^itZ2odBHsCstTedQGg#QPyjpiO_Cff&OI*1DvA`a0?OSYR$x_UDCa zBkwTd3@BTk8#Fh+)#0}AcG;kUyl-v-%2xCb;5&JMI#8S(yO1WnZ*_13n-eX{c)&$+ zFkJUHBpUWghJ#vrC5Kf~II__}u*SCEbPrnxU7@y;s0bU1A%CTqdd+Muj3TMyDQ$N0KEBGsOxX}BzTwQOdm|? zjVaaKH{f+h3dDu}EB~+2Rmv0HQ>?`^Ffg~w{wMhA_&NW?w|{y4-RI^tp`F0nq^gp> zwd&~%Yb8-xnXH%72m0CNpB#YFC?=mkAO4qx_9E396y-FK#baq|#Sx7*Es0=>bzjKV zR-&^YVc~y2msIA&^^bc<^R0*$iOZQAE0k6oTbyPsDkLMCxW~ztrricC+~BwRAL{iVI!RoI znNj<~tfO!yLYGgjB+t#R$X?KyxCWaq4S}3BrYGyPj=b}W@QS_+4?=3b>VF1|R~5B; zWH#C?9a~7VIxA^sID-wEqyN^{A5B@O-ky_3Tm>1V4P@Jyj9oHyf|zE#Z82J+c3H`gKQ6BtZ$!yGLxmO$UIg)N zSM>^R&{9KBr6Umn1LU&web~;s*es*#l4nd>LN|E`?JdHjgbcoX)T zyQ)69Mj!;4RbPB`?9*ot?Z7$Dpfb|1yYsgHzvFrUKeJ;}`IMBh_AI{vdae zpR*l3WuM3vZG&j0H%NB1o;6?`xnzmvJyQ$GbH?0qd)us5WApoLf_hb>CJbiJG$8=@ zutT_w+3{X`DoIatSVx*yiz1#sc!N zv@)`4_M9Ipp_;d(G*~1Q;H)ir!0yKtUlb9TK*tc?t32QUo$$0rNL;29wr{85XZ&}1|7onxqZ^c+=X$(7)9;92o3xa?%W7Yd>bNN*?Gr*_aXq_NZTbNY@eZ~Lf z;`c?n5tBm)VwWuW%UixXw_ia{bQzyNyG^KKlJXm6-AXajAU%Wys@tg& zbhSygg=O1e2c0~{&q;vzcOEs60nD+;A?qE3IKTDlViiH4ecQW9Y8L^s;4(^T-Ouy-MiUN-awZcJ)yJcW?0<>lnP0lxnMm?4 zWa&;zSSk+&-lNn7ZaIwFOxFiS=h8p7T({kN@_j=>$J}kEFbB@+X%+#{&8OrXU5u^*h3(|33(wZtESJE|b6Cj0_L?;5Y4 zv@R>dwcnh**n}Ml+ccjQAT#e#v}xa~%nllG`~jB9%Fkr+>6JIyFO}G$XHH?ayxHXi zzUe5fc4EhKRRo}Y=`8N#WpN6!?WD9s*4w?69bZtjfmiHdGeH!xx$n`c;%GYOEe89F zUw*icx@<`}##L04%JpMHu13a=azedEO1+jRhW2(_XVY29 zJcf98lCqwX3PI3w6x-tE4$80}0m3p(QcOU3I(1|O42J`NY}x@Q;j6pz$JGr8)9%4o zyXaVVo350^)IGRo-1DMpu*o8=k5G0zy&@RYiE6K(W;(?pJhu3|L15AJxxi&@FkTP&^T?ww#m)#dE1eS1)%eUG<_fZj-0mmvJ+dp$d^dN zt?U4_Z^f)Q-?AMhD=8#_?#K;U*2xyl(+P4@y`XY2L=UPkpZ=MmvSF z-&$kSf;xj~N(wonWEZ59BRzEYJ23qbYt{cKC#iMq@{|23L9$|xtB*n-77v*f>b6T` zY2WDUi17`cCx@&+7>)mlO_izMLpAqJk!<+v#0Z&lLG-h6&_l^h5;QY7sIwc@;2G$n zxAxfGCZE4Iy?M#IT=3gWpX(FpNZ=NXxuQh7CD#=Jm z2}$bO9`uOq!zh72FdcguONhAF91w@T>5cP=*hO|4#>iak9dFV~abXP#klsU{;3I7c zL^%<>Y0GtzEwix|0mEb=)S?uo${1#Wb(fjePL#myjICVJlzGt*rZM{mcZ7fx@I8Pi zIoa=iVK%HH^|qcbH2{<-PA^aMX<#-~?BuMk>w%?p6UQy)aaB*=lg{LL0&)J=9vw{S z?5BxPOIulWh^Qgv_-Odm0Hp<;1(Z9G+%+TY8Dzu^>ps}56iry_d=KEQ){g3-Yx%`X z?h$+1jU6omnqFaOr;=?fJW9v=Ac|Xa11leJ?=xp~M z&ehG{4Y}i`h9lgy{hOE#!rsf>0bj9MASPU(tWkb=rq<8aQmhcdN`lPCi*$?_ZTL52 zXdkV(*(-5Llvtm$O_}X0MyX{Vo_;zJ&t8(d?0Vb=Ap;tltcJ`z2%=^i9KWY>igJ>JoNVo`#njOgTbZZ4s&CQvV| zPK5(4Ym<6tA&>>w&<1C+zWag#%AXGWtvJb=XlT<(TuKS9dM(-&fNNI!8G5^Yjv}xA zwXpb<-)RC?)MCz$v|GOHu?m(u%<(Ek>w}Lm7YI$jHmhNpXyFpq8|`Go-oX&_O<A zo4_g1Pt7a`K>1JIO_yS@Gs*KUMnx6GIhV*?r5&hNx(?=16l4mJk`U?I=wWTLUc=ON zMYB~<3;+af*ghxYkmk610Q_7l^*F)^RDWHw&wz`d8LK6WIz1R_Vgddn|IM_98! zX_WM_)JozSNo_Ch&+9?|r7qh{qAzeM-xGRJwk*^1D^07V=DGe{U6D8iGm!oS&^~x* zF!A>3qV39W(r@>xr)yGN7GaNc+~T!S@}hFqKa*`R{?Z>qS$0LFU`yK4(~xM50WD#w zA0d;dR80YlH`aDN$OtK9IQ!j&u=QkICen7CIB^B=O$9Jt!L9aesKw}z!ps+q^zK-l z-Cuxq(JF=ztVF=7pnnDw$*TyA~=CX%?;v0oy9;qjvxlg+g&s7s>fj+}Y_W=9qQZioX$#A1vW4a+uw+smNImADlxuh))^%>V z6(WrDSvp+PvnK?DgE4KxiNsyveAa8@hE!p$zE94vu*Nx|3Z1WhLG|?V)kxQH_Sh0` zx>O3D3*Un7hn)soy;~JTQ7`b?8f?0W1HK~PFyHIqO|2B~ReUM8|LXL^7$DcMT`ZdI zR;4|3`*m(?EfF2**1lq=Oa153j4k6ZNBb^a90E>J3XT3-61G$~3>Rs|c>HEJQV?2} zUtNZ&YrdpXkL{H%fjKku5+*utC74hY9XDI&H31H(}(oPv9IHdT%;3lNR0T;uU(sJCtb29l~kuf3_@&F z1+%m^C$6l?mrAo?ROllg$Cm4+(EH$ShYtADNsHVXx|#epWAFlY0Wqo@s9LF?wI4fs z)cx=A83gT!#GnxK(l(*@3Tw~M=)zDyhT^-NEw15SxSzh1$wImjkN0jc+3SM(dxMvG zj-5>fj}Br>1(gALdinB|T>4!YXeaelhKp5(;JNL~K4~7ou~s5$n+ZTD{p-(Y;tv#= zB&egHaNF6wNeeAf)M3iP2?5VSt=Gbj)!pKuaET!eJRR@P^A~K*!ZH1^W!mGY337wu zdOrDD%&;<`3!+>oiHAILFfUSl66|@cCiXo@Rsr3Dk4}-iCp-iZ(B^VGMZ4+y_AU&+ za#ZQbxaU`MrLKlc$fh6t_2Soj?zTE+RAefNAuh%aDbIDQb=Y(-q)gq@4G0N8+0t~% zDQ9_k0L)v&?9qO=%tyzRJ~#*jR-ZzXH@AxY!$MAzNb;VjhmM`rzWNyz(^u4Wv{Z~d zi!3aCGaFi#1@LhsnJMQHot`l8f`=8|Dl?3#$xjQ(+xJQq7=>uwpEoW$?X+XYEB6Je zI~)^GP|b8lyz#lIObR#m&U|$Et@Ed%x{xbXYZc*SWW#V$SW}Tj*PW7a{J5OiK+`^r7)nfj_07+`-^EXI; z;JiP;iT3VVRk{T%-lz}2cak2Nyj5KAd~9iSIn7la^Fde55GhZnL%oj|2c#|7JlG;Du*tIyyzk^z*lAKbu3F4Q9g(#$ zWfyreDx;wFWdwu$Tnu8?4+|4bN-wPPrGCV!hC1g{u57J{2JEn4kSnim#;Rk{w}s~u zQ%1BC#88)Y%%2ie$1Dh*5evl#XS=BxcH+o;g;uA;h(|mqR%;6}dNN3W#G#qVi_u6O zdPHcVUzc|gATYP;(bpDVX@2uBNcx-p4-skE%lfQr%9TzYt%w;mcq466lLAkoB7A~f z0bqbcdCW&HxE-w~zh*so9H9%;Y)9(_;z#530qSpIuvZht5ic0P$YWrdd^SmdoC@5( zh>DF}y2f%ONw!7N8eVFa>_9-pJiuma|4o28GMr*zb;;(||0M2noxDzlo*pejMSEE9 z*?`H~+BLPL8ZJI?Vo*fM5BZ~ru0wmooYk@2TdT)xx2suBg7_{MkismR(Kms1g3`j0 zxDuIZvAyn1DQ$KkvQVz6G}FiHsKKL{p6L5A&Qn9SVKP@@ELe0!EFqkI(1rlHChCgk z=Sf*WnR%qXJK21uNY*CJGu!%#Fm>z{ArZ|717b;>%AcNh#B`XA!*R?X5!4FdYPl{G z?jx7^p>HgVg41wcVuF*Pxo2#Sr(gar81Si#h!DoN)52|xI^0Ri?|`entptqnvdYWO z!w)<=3x((=ngrd0iJL#0g>U4U&f+*#BCjEF#mOVN?j(p}woac>I5LrA`)x?Px=)D2(?DpVkUsfCDw46YSml8|T$ zWRnh3*XQ$ki8vAM)9;IoFFDxRU?`nIiIdzNPI(8`?4GnJ`!(J~@Ua)?ipQVyAs1#Z zEkwSv4`)N)KvU^^6;ZqJlCIFSyAa;e2}yzO30==%wy4TUd&LjfAQeexV_7+34>p<< ziU_^~=C){FH;^X{Q_^kw(1KymlH#ja>`C(4qMY&gk?B?*oZMDf5Hq?6m1^!UReKSt zkrgYF*>N}GZks_I!I9xn(OEiz-#n=xPmA=R1a6!sk0~1>k?Ip{4qoMuQZdKH-4zs! zZt1?#kL4U#o?Rg;neb*Jzl9m22kx4!*LBIfm({A-Q4ji&voSp3;25M$KdKPe1uY5A zgE^5h#S6U+pkL)+{JBbu?t+Gxq=m`Ng9QY)U0wRGw7j>HR&L%puIr*8xg!-JSVh2fcf*Mg6g|(mzqKCM%}e5RD#N#rlS}^{F)lZDWkVweI44pHfY4(P5u<`2vtTHTBXqXd{TM9gl6g6 zh%t3hdZeXCjN9!JJACm-_MdHnK|y5yz?;cFVIT_SswnM#=LcwB> zY2>EOjg^vLVdY7UA3Yq4{;LNDF`DG}VJXb9n zWZd&cST5(&*WV$6n zo8_HT`5F0SP**jk3e^OvvQJrk-utp+83=00hCf$Y^wrMJx1dY9g8blyf2Xi?mhr;6 z!#C0QA|MenO}Y3p=dE+TOb#;Esst!GDoYz)v+j!KQfn9RZ>s(@2zY@hq`aN2(wFJ#$WYN;D`Q=FFVEH$*uFOrk z0the}=(a?I;HqsqweH}(gI#O#4TXCN~ zW9qyGCb57CX*m#BHvhfA73(!|SMGLJqOLqr7fO&`)D2dW6FyvRn)!$^Zn)_QL__cM zH(WJrv_!=kNIFev;VO>Qn@CY|VYVef>t92j9!LpNBT@qDEAfEvcj@9azt>h-e%O!Z zK3Ka(I_=abzYe+)T-5>0a;COMhx3xNfFITtgzHI~eT|VP5I{|d_+@GQlcy;4E#aqS zsu^G=njWFXrP2A0-tygceu)<@O{YzOw%JQyY-&d>;8A5BdpC{~W>7zjg{?p|OQB*% z;Z`)Yzc}->i9P53O}4m7mkTOGSSB}bav47&nT4)AfG~k0;M$Pao3}ido8Y}s+78#8 zN7-`Q#j32Apr-PV&YmuG?a{Pt%DY90W4;#zU-ueLnXg1G`ASrX%JD^r z2xC{Z3SsR)lje}^(znfHXPvri(|Q8Umm(v3GjU{gLo=T=8_PyR#k8odoCxfLLET=3 z5MLcIQ+xXo={r0Aq3=?dIZPgd6Gk-EQ@|kin>_7>mgl#i)q~$y*30-YcI%=l3*ft! z`DVz}qfIZN^53gT=XpHY5-XDnG4j5X5aFUQeTWX@+xk>3{Qlz)wz_X%Oi`!CQbzpB z^bt4O5&RNkD1{sW5ZAihL1+|0_aj!buw)hAehcOQI@p)N>0G+6Bi#Gt>gCllX#%mc z{>m&}$W|25By0l7T)nBF5NiM5!O1Q2T>qnbUG3?o#T=1GIuA zrDc@4qfvujxq$8sqXYV;cQWI|1iFsb+9Vn}Xs6B~N!Xfpqpvhb{SkesOuHNK_%Mb?oWySJ%>u+3D^J>uj%J>J+An(Z0P{alZWCAd4woP0W4>;9NIaiIda#O9SePuDT@Bkn>vbxHV~71{)_fG#1kcMqLr@JK^mHoT?d9Z$_x zE?Dwh%t@Z0ZVr>_)!a{nyw&2D#w+d$jwbeJDDKCpfH5Zqsn-YQ-&RrOVGbNL26<0p zR?>r=&GJ)F*gr%+k_Q)V_{F)CLh-Xx5Q%Z&I?+UyTB$PTPM8RAE#7dHm7wK`YN2vT zJ%?-r%Z@;ajST+!%KqylTc?cb_;p&;CZ6y(4qmd%JFTQX>l1TdO0sUUtpxR{wYJGl zu2viMSfkp=9UIG{%F@_RyPBp_`&VCJlJ8f*+ALs;1p z>WmuCdpnLSOHw7Yv6v@4RhKW{I9A{$>^CE{o-Dpx6mu;3!LoD}C)!!0 za_*D0b|M+VV}@F>t?yb_zF~$xpW2i|QH~shsK&V;z1aTzQ`DZsy<`d2zfCdP^2EG- zccD?n1(f}jcdzCci!%v-)6_lk@oKY| zkFZRjqwQ=~RoA&{zG5kwJ04WeDc(A9;p+x8}|jW3!}SPGFY z=xk}R1Z5MoFZwVI6Fw8<^uj&s3dd`ahVUoJ)b*G^qUX7ZrhOr&-bfACEQI2dmZMX% zkSmBlI~DI&r_$-XvRqR;BAVz+5_Fg7BNwzp9Ogu2(wXoD))8*YLKDg6y$7KHCU8M7 zk(fdRN>LQ$-^352zBnqcRxp*&>2et13%u{48D`TAwPBCHW+q&(g2E|RJ>R3@sijVe zodo>_iCg=Ngs+he><24TBH}6*4g+By=!|e?;{Z8!&Bj=y8WD4pRrut%qp^Ydmhg4@ zLBLo>AHfN2G-jK%zv^O83r-wO+U|A2WF`!aIBET#CRM6|BR1_+cU`%>I8SZgfhK>A z5IjPitl+L+2C-!NiuXfH+RY>K)5bBd2--9)QRvUS#wU+s1dU>bYHA-vIX#-VWi0)p zt^%v76_*82Jwbbiiz^g=0&c#1SNPO+G+6?;4_g^K8t<>J9Z+U**qhpAk<*vTJrP%y zzZA-T3!Y9*V5I4_zLkoM$M_ckcxuql2?yZiXDc`8iiW?j#x6zkbBtgK!Eo&zq;}X$P_>e+fLZKd60F`?xHZR&x4W9tfab-K@ zj*xK<9195W0Gh6cemFSK=?E3=70k)G5uBDqOU&c;V9-8;2?2x7Cs+h!DRazp)m(;n z$_V;0L9(zD0 zYC(3H%%*7$k%<+sxep9GgGNT+^XvJ)9QkraP?hd{cCFPrj^%Jy9tVq<=L)q-@t^9B zH?}jI9Yq5eqfWNDIOXM|Gv_u-;lPq%s>NM<6M7jX{yrZ4>ubK)+Bn!Wlh_!GJIkDATpE-coTL1}a> z_}_|m+VNgZg2aRjMbNK|tPK6$Jx{Msy;`}1e?H8;5Dnp!lt4Pjlm)6J%4fKejs5KQ*|cc0|HVicYX^JDNOmWcmtz>P#XoadT3 zmXLu5#{DydY?3IR4E=EQ`%Y-QY7|2ZrrU6hiBZCw;TQd%J^D4m+*lhOi1E{C96&(G zJ6S;PwA`yUtS4RbdC*U=#{Mj9*fSl>VKo?3#+#^x)_fZx z!8^4{9QwTH)EoBhPcpCu6Z0U!WIaJ@1Bji*>hgWaSnmMQu?QMU(Wvs1sY+9o;8Qk8 zLSqB?px=FhZha}1bBAtrOrW7YD1IFKMG7p@Z9ED7-_bzkPjRAFi?3O+K5#r5u>>54 zD;)hudC1pF8cb$DJj@wf;9+~(Hm?0b6sa~w`4Yjw`>;Sw=C@+0TFXZZ>-~^LCFAf@ z9aC4)-C1xS4(bwLfWH395(uHE1MB+(J1&4>UPv1C4-EI&qkK(&i6Io>!jGvQJD8tP zFtgq=jAa*Wtj(1KFuysmY#>skJKiHKPD+>t2O1~C;2U?WK>CfQqc?q8+ZETqv6OR45}U$}?3 zJ|9?*8P@AJjXcdJ#~G2Il0u@lc>c*kGItglU#9@kn5eIR422C2#VTrA38U>RLeb-x z?LD%3FDj~<4RC0r-?;VR6XgMP(d}-upXaA1s|;*5GE<0cDqAxk7css)lg^J@g21!K z>5fWn;mPg2HX~B7Z7MfHdtIH_gL+3b zsHd(Pg(Q06+$@gvPv)PGE;t1(LjIR7nXOOi1nbW9T}Bs(^J2Ni}J{gUDd+xld-b(F{(ZP&g5@s zG>1M0F|#!oinkawe=N=@dgFs~vN<~Y7|u4vg43>*wg{Sk&occptZEWKH+F3gAn{kV(MvaQg&Ba5L*6-{FC= z_8MujYeyD?H2MKsEm{_lMb?;z9c7j|=`QDL&Tyed&aDvaih>S&k!?yd zXc$4qs-B4H=W}c0iiY1-^Y(R^ZUWO+ODpEhy+5>~s9L}*57lQ}Q}p|m1leGzizC~( zq;-2vd^oj@YGat&6H-niuJM*hxLPRZ5NE3e@D02EoRSgKBBE2S!+euBbj^0=L+D)f zFCWPZw>R>IfAa*-=u$cmU6)vJ>&=uDl)siFOF&i}(;g6vohbIe`7R|p;7J=1d(;mD zv{bEmMzS_X5&lyLDMxS!i@YPA0k>e*f&4w5rNVM^I3tjLFYWl(h09FpFM8u%%YMXbQ&-*A-OwIZAcQb`daVZ4L$R@*9&YSlNP{v6gHwaQ+SUZ^`*1 z#3SBO`YX}DdyL|Y3DqA;d_F*eaKH>qMvft2rWLzaX#Mk8!*2Y!fadrkk=aEcf-oJn z-Nn*_f>9L^Pr^CXANoOoUeXWYiMh#Zw|NFQ}oX zpE8N`2Q*w_--kzi3mvB40dy0uwatd-`{!8&NtT8pKI{t1=Nfn=jT_kyUVGT%Qi_Zm z*cfYy7%`Zi5Ln`HSa}lb{>V(Zju&*x2#iWznnX7UkslL>UK;YL86uHeDyF`e|w4KVaCaSI@Z+#oVqN~fc@X74^1 zdbZWnl`+~{uw}0T)R3GGu1FU$8%?Tb0LK>T6gww7=;HfG>WUBo#aPkB&bGNSACM7U zz*kwzZJpnO7oCDFFjjJntRfMVDt!MLX;A@@JY8%*0BxD{jQg7Ixvgb+wcx?n9Y2{dm~7b&9<9=Zli5(MreV(&ed^n< zc_M+sq4vapDpy9&{#=&2rK)ZywH>M567(;nX#g<~bjz?_qX#?mB~*TFxmTGhM~RaF zZUd+<{~v9E$*7-f#qt*6Po=Br(wMdKvGLSGw7(ZIDL}M;Z4O@yBkWwe!YSD{wRE4G ztUE9b3*CU}Z{{{pNz%;ii^e!mvAsw)5y2gVlch-MsBwHF0@Ka_4ko_uO3JRODHEoA zj|w~i-rZ)DPj{G94@Mfxi3q3gzA4JKKgHM`IQQ#d?c-0~p6k?=ks25$e~>V2Ja$8L zV)^<%S28c!hHPlI1!|4D*$jYGRzfkQvAoaSDPvB)no7!{qpUAaz|mH8&Z$a66YL)t zW`zDV7Si4oi8*gM+WCjfIOA11kh^>yMghFeR=f^00kMgv42^TmIeIQGx}a;B;(}`H z2mJM47QWZ0Tc-v$4Lmck)h(Xch~hqEshp?0SC5a3IjgX6AKh@j)GjtFVLm-RY0oY4 ztp54N+6f0L0?$MQCi{gc&pge2%Nui>IOulB+3$t2p3(A>u9rO{WrsNn1&UwDo&CU|_3?_0| z-PMhV*^@`9O}+$c0S~UEZU~?2a=UN3#s+J+T@Ca;I4-$#pqS4Ku@1|0nNs~nsRa%N zO#F8QFviwhteNx`br6Kz;4^k=;k=l&m+#1uskKI_^iSgB{4x}*)smIKQ3VYT;4&s`dZc5CG<-|Fg+-L7N1X_@`AkK*!ybiwmHIXVKj2Nd<_sCL!)E`tmiM6 z7^$dmwzL~o48E^>{ zR#;YS7KgySC3B4#=l7M)ks5JNH3hbx#+oRjim!y<>WvYq_5rxYMEur+a?5FSFCg9| zD5Xn-m!f)l#)2N~l$*nxVJWo#br^kiulNywFf zF40!oT>25yFc3+ist{afv18SC=JOdB|FTn7wL=7iG}{wKpQvh2vz4I{S{0Xd1)vg` zf6nA+vi}hUOo#=lEI61k4S(k!YV60I?vq20CK9FS5Q$#!-Hi)>Yd_~qwSf#dU!-@Aq!YUmw7B+Q8BOR`cZHRvVbYZWuGDMc2o{%y$fFrU#(i zbqlPFZ!Y=3GRuSQJWyR}d_MzQ#DBg0eYJ44-^AvFi|*k%{^>5W%e;b4#@~D-5apm| zS3sO>%!b8Dq|~Ow;5t3~wUB&Q)4EfbcY@A(UIsd4C7?meB2&@}=cx|$V}ez%O?cPz zagj7pQ6;8o#bSyaq@SF;E-hNHOiR)t8P1Yk0=NBZcEqQ~4<&!%u9EfiG($P-$z0k+ z)P6X4N&H7&2Wf&7_Ah0I#i=*zCh|^JrMlYkz$Gp*^1XE) zotBMFS`%~7d{sc9H!fz#(1N4$ibTE0!;FCb;75w@%Q*sP<5NON8Xtv2Aes8I79W?e zAAY|smw~lcmFsr9Y)O&M%43j3KM?BKN>q;=XA1dyL3FwxViBxjJti(&aY8()y$Bb5BZa4v(G?La}9ue+dx^sysJ+D`1S)dLB zqE@-NAS$+;<>R%Lk<0UYnGMbR`@1m0)-B;G;%|8V(wlHT(!qCg>56P)*BZxUaD-3a zAuBOTXbCeItoO5)PBcMgPUL}F@&L;Yu@9SjimXh!$R|mZD4gWNpZ-FEQ(Lyz7@$FH z4wX@jhj6i05QU=&WqY@%x8@9a?j07s)sZ_iH(-nw%<7EtM)*61iDyDf=PB3H4{NNf zz7Mr{IC9ucVe%HP7cZk%YuY54#0}WzJU8p3sM;2z0G0)zqKPHik9o@MMH~JZlwYXZ zw~KC$c^;+w`01Vd%eh}!rGOpI`0v?^Zt&J`TbP6 z8f!j>9yLH;gD!kOcn=Df44wwOGkG$4=jCAHJto;Pn{05f@Vm`gNWSg2GgwFo=iNhwg= zSfreL9y`W*&lXXze0cL~(CW|3zM`qTkf4?TF(h9i_wPM}U(?)T& zhBt$>sIqounI|vtEb}TpZMx5~Cj4tHUuj*Ow2_N1k$maAi7o3m8(xr~$nh1TU~KGV z=C`78pJ!eZ0%D9Lxa7Sx5Ht{03eo|(^h%%V3t>9oH$L^BJ*HthQbmb4PO^p3zvJRU zdC?+t9a5&BgY$q%SvMSgoU4VFm_E2Cgf8WUrg+<6*s|A9k`aSEdoeRU)uG;fr{Lza zhF9)5MQ+gvP@?|QTh=u*ad-ZsQVkAB2Fsb_yE&EHS_MornevHP%BLoSz(E=j_674H zl|V{-de0myud6vc%RIh0Dh zyKBxj9Pj(TAh=qqEZr%MNq)PHN<8j~%w{*Y3B)o#H>rtWOP*z0UOga4qwYPysHiDh z50U1^oLYHF`V68E6@&4$$BcLQ%yL$ND|ZdKAfcToT~+&o#yvH0KD5<$LFug)jgvui zq}5xpU7w=r@`QQ^#gZiolw0jd6fw^Fp|T|V7H>TDiM{*Z_Je*7J*EOYK8GW7ZGGG3 zc*KzwUksdNPgXDd&_!WfgTX;F1Zo$uSO0@QG}bjS+3oRJAH0FAHWO-c=`Iq-*-+VJ zZR}3~EZ@9kZfS?r%VYB<(;-4ox)b2n#|AVzkYHKGE0&94613^B{+Zy{)J9PyQ713C z0|X50+I{_=-88h7h^hEgvCx9@+qi~r2sFE@zp|#WA7T*LJ3F=c8l*}oKs2d!2l9i~ zQ&9>d)C5{f*0MMmxBzoH1ROl%sn8wfJ!@!o5;bCa`y6E<^8{$=7 z<9AdBiYHhI7uK%`^vxS67;v7mhT$uoph1t>d~V^C@=zb|W1Uo>M&$$@%DpzR=Ck30 zG&CIyC3L`ur96G@C9I-o*L$}J>^JFNjb-Uy<+BYtLlHri#iI| zpgDOI@{}M54o@*x;BTe$wnU#bo^Uia&fSgK-=wK7R1PoKjY$F=mJ)XKNwBAW>tLTa zdufLeHc(5ENaK%*fsph#NgnCv!pbxBLpR+!*4M!r8jaB2xdKK1i3NJSdI?$&rl6LJ zO2tK9*1CousZ=WWv#X9=EfF?wdI{x9KGs`v;6X&WZNu-pG3OtaxK_GsaqR)d<{Ei} z1s0!cQ$~?iK_-e}1QZ-ZDWApc_xQ_``7}$nQ}{^Gt*vgBCn|aYHlj@m+I+bQEsRzo z%(_s8#+M=g8%i#s#}F}_fWuSXt^kO&9N4V>e*7|Qo*ogxwX9cu2NDyskY9NMLQzeK zL^n|=sV+3zWZY{STg1)gNO#bnkCqZS811btNth4DC9l2}(Ly<}O_fTzZTn}I|559O zvaspn-kI5sNe&mZe^*a5Hd`4aBZuu^7`n)p^16Qv5C=_o^}hfsK-9mo-#HSWn3@J4 zDMNlfWpT39f-kI|He&2ZW{x2GY7ipLOOvo`xr6|=dzZ9{R<%fxt8irI8o#Yb&p)iB zQ&f-}{2%EH$rZDKq#Ch+ICOQ1sDk4d#@O0xOk-!oInlmQm(l{{BXrhsg@v%7Uv1AD zrk%A;0`pF0bV06yI>gY(b|m3@)DHw+8rk?!IW;lqtQ8a)n;ZM?E*X&`4aDzNPo`CO z!39c6XE5d)!oPzZ4m;w?mC&=jXf0^>=<=9*h><|4Ynx$~XeHJ!Q55C_5BwJgo?g<*Xh-d_r1eE$X@dG5+iMDG_?DcCfX zj=U#K>ZXGTT-3}U&4z?vyi+7@j2{ci;I9dOVbHLc&ctI9+BZ?vjCN)2DKC>u$qjZB zKhwL0KiR3NXNIX7yRH^9QK62_yXmQBvIKG|vZWs`0D+<@A0qYh8N4@E0 z!4Prmlp=Unu~UOYpBULuLhjX3Bm+(ocCe$Dr7YFd;jR|}nl^`R-Dl00L4-}w_mdAl~o zq5ZvDBE5Gd3H)pV?F>%98a+cIo-g25*t@-W4C{wM3Zi2*#lco0`$n7!`ghpync~ zc@s_T>sdjRsKnnhuVY^XKv*aj0LQm=UvsSjYglf6996-9`Y_n&%Dcr2MG~q$@|bu> zs!ew(_pur?@vh2usXZq6++ZVm+W7ZhZrUl>Jx>Z3r~awQfNh5EFzR$mG?ZI=Mtpin z-csD|cKrSIW3#%9PWnKkyHd9H!LOt%*HWublOxGKK!yeJlrFRu(BheI+^|PmAcmG$ zCbEdq3jUdbsVg={{QguCu+TH`Erd8gD#5#_s1S2!e!`=s`UQLzHX^UAB|=I5lsA&# zK3!uW5d^@U@NB~f^#3r%kd#`&aNXLxCC3OE0+`SbNW_LdN?4?NS<$AFlG&;da3c^w zt0WQ0vo<{>;~8i{q`_!(kgEfJ!od*k(feXJI$3SL}PcV~m0}JEv z8odVYnh9-#1qAb!NHm&@#Us6llzJj9wJR@Lz+Is{HBbhc8Fa2@Aj^`|5&_EKEg zpO5nBCevR}C1(cTV#Hz6l=ml${a#unM3NKQ`iM@9HtFH9ybW<}6W%Tf6%6FAHG&6bH-m#lU&2lz|A>Ky!vmG{Oz>(*(R zOfre2J5KBqxpZBv_68ryZqY<00K_MtSk^e06C4;eWDzX>@;&;A+RnZHKHWBRHz)lF zD|-ftCSA8430ZeHr*DzW8vsqVmHe+x5LO2~tT}t=Ei~-tCDm1NCY3~RMmiNbAO!$L z%a~z_XQ+C+d-ZlauWi6<_O-jRe5mR(m&w)lW3#F~bZqMaXs=|wa{%c~cgrGMKSBwz zz=kXI?~is*#sZl18t*Q)D3^^8G3!^jS6Hv42Z`Qg5;r0J=w6X1hMhsjvchnx(VJX{ z$0D6Wg+j5^J6!!f3S&^P3`Gbs8;foi+8JP#VmYtdBMKQ%v}$!UxT`Y7kr1reMhA-q zUMCY5m!Ez;@HkbKxATuW4JUtfZ$*GRb<@>COp4TSrsv90;zY9TP>3QAQ+D*nkO|Hd zk!DWeyp>Ba;xHh*B!$vJhZE73fHF$JWI5Arp;)-R{r3Y0-g~E0glqmd`#%EDBLU8D zHA#O(S|Y8~tyEKs7?E1KveouOT3E?wbsk2>VkF<(szdh_MGCmYvhkC_)f36Yg^jeN zRG>7WD(%JPA_u*iX+Nt{M4q{QBJ{)5!k=V+qe8-+V?^*xEDRid6@?-j%HPBP2zoR` zZ5!2Q0|8*Xm78?;Kg4%j;_k@t<*c2lMs4D4RSsnJPbRn%;Du*ap)dQU0Kx9V z*&MN7YN?{P50e+GH>5L8I$)8~`17%1htB-0#agLC{Oa_zv9-HIAt)oC7Kqs2lkqO2 z3%3aa2{@p-opwGHW*7^{U0`mB(OXkwahtw7HTk%V2EdEF!PX<=Gl(DI){5PuuIVUm zvr7}FVZC+P#B|o@X5;h4i%SBOfPt9u-g?h;Pem>_jNVKOzwRIqmh80@L03{kQ7IH= z(&<(}*{oZIztrUS=cL`pli^oE1t`(NwosQCoZR;dsqJfzA-?7Y|@d{Wk9f&kp>zUW`v=JrVHp0I`N_>^D7r4p*Ut7Jdjl01XbBuv> z$nN$cU;*L(Kre)Ymri%IcMiadEtli{AGJ1Ry|cA@{&3iZ z>Pmwe72z#6LO=_25L3`$gHv-WFYwrvhCSblCUnEx7bnf+J1AFB%UNhrHOlfXmuDcH%TwEjSP6KrBR79=!$zJh5O`y8}yqnnBT|He$%Sek4f zz2op?_DSzHS;u;Bm9g#=onx$^!`}*jVA0!QJ)4*ICacbU!H=_Q8gZ?-RroNp=kD8n zOGD)Q8aV%}ueq}_aEZ|$STjV_7Av&T+bheCEb;%E>T`Igba1R|rcOo<@ylkVvk&b` zm!+(V1J0=)(VoqRrrtHyKyO`2zB}m93EBMrTB741;1^fwDh!8$32!J)tA8iK(rf3OwA-@;`rez8S>l_I=o;7;aj<6<=ez8qUq zED-u_T(MLIfh&qBdF+m($ghOh`N1qIRYKRgP5YONh8S`t> zbs}dv7s<-k-`<49rOXbBh>uYdjtxJcI{g0l03gESemR*p&#vsS+8q{4ux)F_)z7xu zNrw50n}*n=#G(BKlYUA)*C6E!Q;|}B42gOBLBWiW~H68?tfH-f-ZB+5ObRFc_G7(J|B)D~k?w zvyH6*Yl&eN`&o5=&<2sxYoaf!t$f^IRdL#%wQ(36l*H34oF8m0FVoXZJ+l~-Pk)4S zx1=;N;$MCaK%zfGS74Uj-t9suskMY$PFr6xJ_$24kaTYfkWZYzD=jA@&~O>@Ah%kTXt@41kC5ScmEm5|(g*6@c&-D*G{85co9? zmj+7)wEa9~B7FMKL(#5qG4ME?wYMni`B9OT;%2O8@w5z6#MmL(;x7(IdSzw4VWX6-fsOBk$ zW$V_^-PZ!lC;F;rjP}QRisjA7#q`KRFXHYYYJ3p1x8X35cbMV@qBc*hzlMY_Coiuq zy5tr+C~v^q17D^se8TH{F?CyKY2pB?u&waq#DZ)pjh*tMj+1cClP568I<6^OlF<2K zYzp0DN#Yj>Ytly`>d>PQWFTo^G=$^i76& z7^ZGY#+0=){J`A*z40tVLz*!2y)Zhw%ufO?f$Z(N-Jg7lZ9Oze7%B?(=lsEq<<4i7 z8Vprp@+3^bUJw zHN0$fll+u zOm6pl0H`bHNPoAI(X!$Y7KvI3iS5>9`x#gGMv|)e%QpBo!%&s{D|UP?GL; zTn;L@QXjMQWgSw#z}zQ_FQgG+yg#5A|GJyGJC#grzVM3zrS9P~6oynZRP}T+k>9aQ z7wGtBR~PO1?iH2-WS)NrSVQklHR0ME%mb8 zh|6jgGd7$GKns3ZL1oD$uTX0;LtNXt)MdWsMPCLs$Dq>cD(i6FzT%C)G)LoDUW6jd3#sZ;3;%@5 z)g}hMKc5n!g(+(u+QhkH?gQYz6oe)8u$1PTB4v*J+5ws3qL;ZUs-vc#rUs*IS$@I` z^B%O-iPlkAuC@rdc;d`fM@#q_Nga8dKGhenC#z6e48ah9(sat1*mFOp{|IF_^IxTz z^BC8iFA#Dkh1?n;O5LS%h{Z(Sp#UuYHP^{M0dBWA*$~?WgnvICixPe`@qaS$Hylpl zHIVGq@#(aiLv-mq)vnnbKQrm7Lp^#Fx5E|26 zLb-_>!|Osc28u&<)U~uc%#e`;XllQp)kEY3AAOd^gHv~l zR`PxxLfoP$m%kv_`|k~l7h=Sl8bFLx&`0&GDomDHIQs!KtamenV^Dp2-T@K;N~KPD zd9^lWp*|PE^|>ER6!1!1-^X|j@&tFYVA9QYHE#M^)`eV=WjI;`3dgnhQ{2+jYud#M z%VglrB}c41P-hCvJR#U@WzzI$I|>HqWmI&Z*z_B z>$xUks?y4@&sk{nS&PS^~7T zt0!N2Mi8E3WxCdK2*lHu#4{ z>{W)?3#NIwQg7lHF3kKwi-J!GWB<5|N9#N%$jOINP5E+E&6tgan6D)5U@rCnaN%6v>A-8Xl)s-wv7O7_m;6$C9;q7$eimnX)A#47fO!A-t;W$UMnRKB6qkfd{|xLH^6tS>o<+3jsJ2NPQU=) zp13}`+_xhKTD@V^>tR0qb~e{CJ9A-70w66Oa}V}?bv_@*!&pQPStEqZ@T+MFjvQ1w z9)}ULFIc4@_YHovnq?-A`#Xfkph$W~D6Tn{EMED(CF|#MfGXAS($Vc1Gu0a=Q^Va^ z+=kCLEVH*v;>Vx&Mg z-rwm>SNGL|oV<>tP8S4Vmx2ew_Yg$5OwlOu8|^BpDB^1Lu<`qPIdF&J#3cX-71wwT zPs3FaHGOV?^&Y$t(y+W(D-+N{O)QO6tsLX~n%rX}zSMvk=yq7=K_rtXXpG0bE1YnGhwo1)y4qs**zl-u(h4*}<4i|C6C%`#ZyYdh+8AC?Q~qIBBD$ zjSGc9=T#v|Ck4BS@UB8t7`7Nni34$WQteaPh>|d3R)=};i?Q9NgjPAn(Ff~A;LN>X zwi1;7j?j{pmyGr|*O<(21h3x^Hkrm*uXl!xUL%eA9$ry_M770n@EVtFWI&~UR1XOm( zfHk?NO!qC549`_*Uh0&)>>qaDP!QPuPw_rVyJJEH%dMkhLfSY}-b|5CT<+RSoH3RW zP~@IY%i)6p%Fs;;ODEuFM=3Zxns1Re`civ^5c^j&zV~4u5Hy+b$b2)Y8(7J^Z!d@cs1>T@zY5IB{LLZw~Mfp`Ad3w4(aT<#pups^kf4B&2lGXPpF(D!0$m-D# z%L9i?c}n#ctw-*+Fp+JtNg<=!c-g%XjixuYYb~(-pKV)Y6uyE>|LUL1PHAo2O;O3g z6^|GdzQC&e6fF|WpcBPe3Qk(a$<@{3jg_&&bc%$c#?~Bz)8dO<8*oE$_&K41G%x(C zgS(_HESO!p+6%WINqtG;+CGN7dHE(hWv3p|NWL?Pv!W+sqeBypWe-xV{ZxE(e3F3g z+y2RF-Dfo#uNZR3yQ*E{cI`OAC=`CRo@nLs5WtAo!1T9D`K*TVq$WgVM0o&x3YY(e z7fg5P=hzH0ZMnzm+vjLhn9I-vnkCazn4b#)M-}3U)^wZ3{>jU~-N9Xd`FY3M5)))J z4#xJwJoY`DzAEQMhrbRs<3o`E)m`&g>Wr;`b#_yMlqDuz>$wq z9f#m7`>q}xrDh3~ZbB`sfy-Mm3Wz+nC;bffnSb|hsgNU+3&Q;My0@rXzD0gqU~~EE ze2v*!mAf$lY#AmJ?~)0eW{=LE$NC!=eDy0jHToxNAp=Fhc32!1P*n`_MtP`&HRsa_ zeG1lEs*Z-%28)Sh>_j9p;#vcq7JPIhq6u(Ay;m`UZbi=2Nh8btg+7l@RWZti7y(7| zk>i**&+brw1nLouG=)LB7yilU=`ha_m^_#NQ!-+Es|E%^9bM`UN&oiXBq$} zabL{&q+IwUw^F0f{~-4-QM%sybKobP=UG&#X{;PfuaQHK6L;fE!#kHH(w59(epl-h z-RN4;KW|qfZh={s-sdbf!c`{+iRc4ay^D}dsfw^lwi{My>%8y*F)Vm{KV;0lD0NDa z8NnGV^xn?Be5+%tmSI#B!TxjPmFxgx8hHKa=UAb|DQU2q71 zhTsIqh*a5~%B`RhZ0dJ`v_5Ev!$DGoB^R=yX%dYpZQqz~7YDa{Y?9&WwI)5(GHG?& zeO3#)GP#6mLE7$7lz=(Nd2JhA-K@*Be zokdNbsjbwP?t>T&+RQik;$qR|p$P^|J2T}zq*?88B^w6>ece=AA1osIAplsnU5s}7`xF0vE7<)ZL9FG3n67m}0)z8Do>ORR zS=!HU{wJkMB$u8)%3j>GvdJYT+}fvmM2Q2&rPQWjCACBil2o#8Uqfb@bjnR(lFz5{s4 zxx#tYS4Wjmlkb;ovUD;Zsvw(oa*H>%p=L!q?ccOnb)(U1zqpNx>d+~76iuj0e{7N8 z=Rn`iCjGzEhLR0JDnJs2hC*T8reY!Hl-j?Mo_a=vh z3eiPz5t)wZGLurOq|vtf&1u>D=$DNf;(6Q@^mDbzT~JWf84G2gKD+yjBkLby`1)M~ z=d7hbokLxQt_2+d8>k#p=J^c93g0N)SJDJvjlR_e`1CoRj;v&UTI11{HMY|~4BDFt@RPEe|E7GbdL;kZNL74yhW zWk>TfXz7|)oS=8z{`Lc~#m*Ni)+nv&kAI2O#_J({kjqpn=xE7o#%RNd$P5;529XS| zWhcI(;gI4mt=j151r_TzanHLs453RS>k@s}g0H{TpBO46m8&@`o8G?wj7r9cB0Ivo zsR`tzLx=aJo~ee;x;kD#nvuU5L8+00@8*(^vqQS^RPyXC{Rl(6M)O3i%-Sv3@O8}bmnw&6FcdmE#xX~HmwF%+ zNfbIgIs1WY90q6&%OnrxCMuv3%uj;G&3*T!+(Y|QYTwQstXHu)%^{CLRv4iE(%^KI zJ|zq60OBLh|8lC=VT83h)GQL$bhFj7u%i(SS4iW4_^Oy81z{v|N5NOCJ@hIS(G1Co zR-0StIlp10Eg9L=5k;U)yOEDCI%600Hbk>)oP=!Mc8uuHL?jnLerFJ;yI2F_BQ-F$ zdz6n2xntl8d*;`)qdivB+5xY|v^WjY!5`9St&N53L)jA(88X7@hZswuZvGu|ras@@ zbZgeIOPM23Ejxw@{dY<%V}N03xlg#m^LsXt&{nc-SF|3p`i=euxRSxGLvF2`lc6D- zl4OvUK?FnB2d8dX!e(vCelQ{UThGqhCk2~S-GEC`9|kq}l(`c|CNV+f%Aik^ZtoQg zK^oasHy!xuy?xN6))=&{?r<|RwzlH)pwh*kEf6q}hUg_9;c5tdPAL(Q6Gv76W zB#SVZp_ylmTJxi-oXp~Xo&n9Ff6y(+OL^)OT)9M}vf2_bhhYSUWLsQLv@S%{l83ON zpbUNZO2X{Kg)sK8K22dglnIcUl|_YY&|#=>6UeWLGGvA(?`QV)YXLS-!I2}{Jz5a- z^C5a9xbwQVE&>2{QPhc}E$B#;%W8BX?Cm}H0ua@I;vuh)2UpYM9z4y>$|!IaW?N+u z-5O$K5{<^Ft;|OjsU26F&9r>}VlCHL3TYqk5H|E(z{)K-`3lvlk$gkgMwfJzLWja( z{|Ba?hjO;!B7|!En;oC^%&?I@Yu8CdiI&gEQLz;OpikXAr4H7HEe&fY>NL?&22Zq}ud$v5& zjJgT#EHM0ws7adFgy0sx!m2&QQr~FepgujCz1c6z{p7D)qYS0rxA04Mo~PYZgY|su z{bw55N+B%x+tBT(?&Gu`m@^?Iw}2g2Gp5A*fz3Db^@ zND{z>Uh=6OwQeC^1}2W)%=^8H_aUZ={a@1x%#jguqYyRJzyL;LxOw~VdzGFR(_SHZ5|07 z(+v{ehhEq#mxw*tpWfPUoo0!4u|=D=w{5Ndl$jtT+j~;XeNN!vNM2}TyZ`(}RMXo@ zBbfG4Q{0ZkL>^yk?&@{xwPfy5^{T?o)4fttr1r?%ID{N}n5&e8SmLZnq&R76KYL!g z`stBu=>jmYFJqd^NvJV)!W51&^zNekHB!J z)l|A2!pE+C&)I$dja+jzItkqigT& zO0IH6%-(nJvd7{idZeh(u{Q;K{Yyc*Ew@o;9`<0Z^W#$}jGQI&1#)c^6aav7-hQ{) zJe?K`p*kW+9lLdvI*U5{uHdM=QQI-_%!wovqMbd_Y;U-VC7(W8I1(9M$Z4FAx22;G zYECeUPUw~^;)gwz&gCmE74yFi7wc$Z!BNjIX*0SFM;{gP+nl$@jV{AJg?`qsuwW=O znaZOcD|q^IR~N$m9r|QKLzGfN&_Ws2`wvT2d+Xg9m~x_e=&WMpqT;4nY(|5m+55Uh zh^}dO>77a@+_uLYv?*bC@)F*!Ol~g^(hrM<)YFS73pjDO0@ezK^j`PgQuBcexu!d* zzlNAwgNRRM0V^K6qWT-$NeHvKf$PB9=Yp_97sS7ok#ZyTor{+WZ_s+T+;QO8*)~S9 z`o48H%2stN(?z?-?h&p!X5T6$S7yJl#D@mbfAe&>+J!@N%ti)D(Dta^JDYyF;2T@t zPLg{I+JRdGsK=t7gT>2xS><)f6(U`?F%s+of1?fb=xqmBS+Ps1RpDD&+dg5Z4*?gp zf}d9!!*E%+frd=4KhO2H9`2I$d81mSQIq%^C#NJ}-mcLjwRax?ne)Kv-z7eH+2n#e z!Kk?3w=VlgN2^F!>K&sBcEipeK}mG3FE3K?y5UCeWfg>z*$&`kRp(U?#TSZ4>N}muiAlW zpEDU`X@68?I3ZT~x}~}m={Xlu{#;^A9KZEVe&8JOd5N<*0&!49jy9rdd&ue;y6MM# z8(h`$MZG(_1MwCX2B2>SD>=%Jm*jIB+_^pb=Gdn8ZRK_>Jy;U82V;Z0_5-(~WW)Ti zy!Hg7rbl+NhH}i1Ozo3)Zz`F76?}LdsP5IVVfY8NKH#uqrj-0jMJDS$TWrH?G^}Mc z0a`4Zf3^H9>+RRjL(Ac)Mo!+yeLBc<0vj0A{^N`_?~iW$4fGp;o@JsHe6hNIgk~Z2 zs##3!sjw)nhOy5wt8Q&)THw4lo^D zP)yBJPZytm^b9JKE|*Ez|BX?#HPl2Iw5A38J+z#Z88T*%K`WAic+So61NoiZQ4@Yq z{jc(k-eXtXD~J9inv!(d3|%p_P-5It<^@vVROJ*nhCE5%06fgbO;-AtRUd>gIvuj| z+u&!Ah^<7|tLqi=!ZKo}fCVXDIOGr?U*?zopv3U`b_YKQB0$@53 z%7jxGV+-<>p*QWr)DP{qXcI@varqHgp2bvfmGbfo-Lp3uE@5smJROmBie3b_M?IP$ z7b1dGg7^tm3B>ydi}$tknb8d=CGXA;?SFoc3`ISaL^9tQv}Ighli`!NHQi<2d30eX z1gjxpM7|6eaBG^b%+jAo0r=KV#0w7R1`c5t@#fd|r2KoP_t$s-g70)byoI>y|39k% zN;>6W7GLyLDJ8Daw0P4?MtQ&YS6hFUDgi+26s{E{XT5?JQw}Q1U!p6`=CcpN|C8qd z`BcbJ^zu%~ve*86Rs?KVKe~N|UKbk(X1T8UmQlokM=LLx*!TX~D^_aaCeOf`I-C<* zw?lqcFym$8dFgJp+-`MtEu=XI^QHVnq?=*e3+zb(k`}Q=>LNvlP|h38i*HVO5n8J{ z_q(&&9z>&1OI87c`0TM4&!28vhQnEtDVpfXXHC-O&o)2+3i_}gEUIa{K%6M8fq-Ax z%<(goxe(SY**?g59gNIPc=f2k5Jc+7E8OBXpT6PC=O0G(&^99hmL(uB$Hv;?4Foe} z`h%>rcnm*vC0NBQL>;f{Do9q}V1!#Z&dpVNRQG2I!{p^p7hch z>;U;G@jHxbMkz^JuR zkm{(Tmu%>HhB$21LY_4|)w_%r-mAE*chDvW(Pzg32pXf;Wl~n;XunGKS%zs*o5tj6 zW4^2~te9k-}&l@Mnl>=-CnG0IvkU!X}O*g&@ndw6ckuMBv}dA{4Xj%8@(r;u8hsEl+VS}6Cu zffgD&A)MFpmo+yW0Gw#6vhBXkBm&w@hnjG;wqUDsF~}ANz_XqnDV57pL<>{@2q7qa zkyLj~*W98cM_hKM{zu`)qS2{08qsv89a)RVDKx}X@JWUeN!*Tt=|6`|Sus}kypUC; zx&i);my5v$oI-D z36s1%hD**|9VLoh+dhV|Yw+ROzb57jp?|93v{6Y?;5t)j6rA^s=&c;Lrz&DkS7!y$ zVQd$(wpHfhm(?MiyG{ZsT&#VxCYY9ziQ!c5onpDy<_kYxlYIaV$4lpOJ#PIwV#$lr zrf$=n9+WuJc*S&}T?pRoge>y@hh>Wk?)Go$TkT~jboCAKfelG-XkfvJbzzvc@pha8 zd1z+PH0fq<36!3#w3z@!aA%>(i}88DK6{*Rv+l+-&K)T}|W09}hle3%M+F(VuL zGYP-z<=T@zoK$ql+=Ff*^(pb>7qkYLtcJ1(ajFp|<`MkZUgs%jxo979iD8w-&8qU= zcxGA9;Sb25QxTp?MqbR7{#VRCMH+l+?!>B#ag7_4(gOH{wU2rm15w{b3J6EAbm0Nj zJFu?<%}eOB*<}J_f}izW0H8DW)Q|#s^+iHuxPxx#P%6HK$(udxo#W#6O37YE;-9zA zu4ZOu@H@mc`r$G+!F+`NBl?AReJ6I?fnKt?TJ#~5l&DF^Da`IC!^g{(MO+_EUq>uK zBj!SsgHkHN(SID>l!x+IZ+f=jjq0zVQrGGom&~ukT7{awr5^4lSc}8prL51+JlF@& z^-Z{XB%PP5gqFEOSquI_FzCD-!elDqkm@O&P%IAJd%i*7*>CWoYc|HNt~5X>T-c8* zV6&(0p0bdUgh#jJiu@;Nha@%{NYyR?eji?tgXnfv9`hi%q z{KQBL4rqd5t& zz(XQygihJ3DQFVFz|6jgroZ;5EKF%Tm$F__BL0C2o$l+oKXmDtQ>vxNW4WE@gYpI+>isB6Gg4*tR{d@WdNa`j02xaW$= z!5dRrO?no@%LYd#$#2!7qK{qU_1ySe$w>wHGUz@U2Ymz9>uZ2HV>R;_|E%cN*?r|M z85s{4WbYMd7a^?(^P1421P6zH8RbqTo;xt=I;Dv?+$Q7{&|HoV4W*a@u+L$y4R}B0 zY0FKpn!;QksO9wjC8plPNU%)OA>C`@K!5z(#JJb&AXMFloJD{IJNAIIKoidIn+Yi- z@&cT|&~!|yeLAGom=_IjEOjM0s_IG-Q0oKJG&Gq5mDlYf_g?5uqY5^T%Lyfx_GP}} z>)K=q5G2i8LPcDWk&0f2W02w^-Ya+^L&2K6f`FQB2Mc>YgL4K&ji?KnACwG-c)|P; z@`t6ew+vF1@#<{y#mmW}f*#Ta3&~>ercG^Qn`O5rEAraLiBaH-{ZfdY1u^WrwcncHDe9#k z8v)<}g1Di{+Llbak?K8~3RUE)jKPxzhuJoLNSr~pyx6ma&RBp;i^46@(?*_oQy*^u z=+HP0kTd%i9YG4|E>z6zCSFWD?>_yW^{%(6_kCw#m7M91karq>umaaOYD0Qg(e673 z^Sx`)&%a>OD*E$DqYjp4q56tw^V%4!)@esNMQZU{W%mMCEXp-4dlJCH#h72U2adR(O>}zQvEER%B<@;3xa#Fm17_7S ziTBO27nvCF7v&qb=J&j%#F~AL6{zP#W~T8{_m%`eL?L}Afec44It||SJt>`%&-^75*i-( z$apd@)wVvOiJ8|1s$+d$t?rZWHMNv(b&4}wenic0* zB6BQ#MP;Cf`GzFW`;t_CY0mo}chy(P z2A|r#bhQpwMi$`!)0l(`M?9QmKM_GdHiiK`N^M0BxqNtFWF>l^lX{4?hvS{}KYfp> zf$ZK@&MHS)Yu{?Vs%*3Dco9(|>{_ZT1};*yBR6RlWG!hL80Y8{p~S|8b02c31a0P^ z!hng6#}-@l{md@{ztbiVS2r0V6p5y<6&3!tw+wOoGwm zp>ub`YlVyn%mp6AOw9P^Nfu}<4Yrr#7n8*?ln9bE%EPZ0qX5FgsLg0BwlxyahVLj4|Og?P@&(l1&G#OH0hoz44lM+)DGbg+Pk zZCeUz8xF^EVdznT3MSYxjD$UtpHe*&G+3sb^nh95E{U_tN z#DnR9La=<36ZvQDMDN6~7Ie1wQmYfY3*2{OXyvZ??mrwcIw=>?GdaR~EH;fDROL;} z&XM{)PLtdZ-XF_h7uxU&nrZn$mOH0fsozWq2f`iX?`SIXzWHs53rcBZX=ra($F>K* z*?CmG0z;^+H{wD@ww5(hYa@{TkJh7YJo&Xo49wi^%ce`4qDO$DmnToa*CHDCJK zvLpFZC@t-F{Nx|hQi)=??SFmHAxuu@X|wM5kY_j(OtWLKkK?R3C&%EJ4q=ENqe-^u zvVI%f@J>TD66GIiagra0sk`SCgO|nJI)RDpx@(MId`qkif2H++DTIpT)sEwDnb;YQqgcH1xJmqlVEKYCCIVn@NT2DLZl;8G(JLR=q>52YzqDG+V?8@akT;`FxxMeU zE86pMF^1`mpgRpmX?-71#I_jcPV;G`3`9uNo@{m+_I0tnPf}aiUcn&d7mu=(yOlkp zZ7jvoymW1y$p?ojkLWrJF}0}Bx4nHFVs8%?`4R&rmCv9V{%HOS(Knt3?E(fXwc1C% zvBN4-Jtb-N%Dx@$=mNLL?hCBQR?Izu<&|n*3($FZ2DS?u$m^k)wyG6t2PUk8<0vBx zg_N7He4qkDEQS(yP>^G4HNf;)$ElTv-g3}GpM0#S39GI?NN>~}>lv3<|K)y37DX}F zw7HKiRSAyn%$%)@^KkdE4Q{dh=`fzYo}f6^B9Ab<2X3^xgTrD^?q`bYby4S^&9VvP zwg_P`hD_mIP(io-#w>eVAP9YBZSJiR2WHl&eT<10`UV>{aHcKOIV(Nj6)f)NMLv4| z^8B|}Hv5u$jQHaubU5W@;dFt%%twKdJG2e--!_q5)Eb2gOFIAwMVfs~Nzf4=?RopT zL)=^oOx@~nri`x;B(3la>lae-|{$GIn(%%!h2req$<-`dY*mg zy84N?%P|dK5j|R?jYA5n#+*iM{DN=LY#Ee3kkpqOcr5~k?A$MwHf=>5M7jm3{wCmx z`V23(nqpz|>f`0VX;yfKSu0L=CL4?2P?%j3whpc6zS`4o>V>E=A8JVRnea_8SYgi@ zSjn?l4~u_;itx1e+Sp3WeyApp!`p8N;1@|hmGafkh613R`5%S}Nz;9Oh$oODfB@c8 z&F;o(b{+2(PRH79s+2^sJa$8HP<>F}o?Df2}3GN^7nBNgu; z6w`M!W>C$(0G=h@s>|hsUs@z}^1m>*g^S@vuvM=g1~flTxPycXgdJcI7!|6~XVNcJg#HC|37yvP#!&#+u%M z74vYWK;=yn5JA(AP(JUYxQc+H)#35>NpmFT7b!st5M@!qMGM8^h%J8bKVKh;{G^-d zWn(OvY&A9R8Tft{`f!zf&CLCia&1W~=Jq3&y#g( zNb7}M4FTO;urxV0{HBtVT4^(@qB_@sf`aNoL4#oaYCHX+omvrMVcMqGtx`OrAvL|a zOtpBZ!`{I%Q~MZ5E}qJq4ICa?7XON z#hzBbTR$$aXT;@vcK6z|C+xP^?nZ=o{|}w+OSpw~qb6>BW`Wtm$ScuV%Or_;+$Sf| zYxHs{e!b##B+2lv?jVS;JUS7NbSXg7S^e*zKL2GuMIc5XE^fSK=%Hv-C+oegLTnGkE4n9*2XqUoPqVtc+G-J|ODXn{+uDNVMn9le zLplg+A%KQ6dfij1uM6Y}BX8PkzpYKJ%bItqP;id$*~sFGvux<#Y&1zpTW^;`oI|e+ znockA|0WlhE*!c{8F~=iSm#f7P{$deJfMc}Jalvi{-ID<1AWlkL`TWupz!YBy~DFC z1=pgEEQ^!sP7Jx_%;lp%mP{lR|8_uKcvbh=xY}ja-=j{k2sEIIZ6XvLo;<&o%3SSN zi2@qmoIs=pFWu+p!|wHIsJ0{Qa!1e140zzc z<$xFqlI+8aelX=4Nqli#wlnLCVKZ{GL(Akt9PJglm^FMKMf9GfRnQ6LK}m6~Co(H@ z4AEL|zmXx;vXPeY^I4$G^# z#*r$F%G{>q*Xb!myL5DI#<(ONOzb2l+165q;2v$={zPq~gadc1m8M>UqVf%+7wFz% zLM(oc1<`GyiY%M`8~m_+h*)H63f_V4eYHCy0YF({{9nYl+1FGXdy9kZ!k4*VuH#YM ztu-Gm*5CqiK6@{Up4qdas#ev7?Em-#x@wdok@o>xqVtE*bo)qi>yvm6I!VN%kG48?*DHHP=Z~Z@%!eH( z4R%Phfl8U~b&71|%^&DIDnuCXt+}cu4KqjkyAm}n-AoBb5j0?ocFySKxfQq5(N+uW z)u!SJr!_n9Zgp`72eqQ$g}?Ao>0w+@qkN@9-HQNjC((jKd__oAvo5JL!dDu>``&xym}epPm-*is?f{ESIuR}HOv zZ08$pKwrJciIWR%_FCN#>k!crQnWW}NJTj_LK6_gq-mfc^CuICaBTlI8B5}O^?jdM zL?Y1(+px!T+Jl^=EGbMhcY99%UmGIVS7=0-9WFTF~*CG#7t$Hy+!_4Q9I6Oy9Qsr zs95GqnP2xtLHxYL)SZ!ueVF0It!}iWYk(7`uSIEL$cLdWawSaec70^AJm&vwS5PdrjPc9>Wb3Y}c1`ms32(L^J7-l-xT4s36x zEE++0MmUGH^nQ4Xpg!-1)ivU)XJ==vZ_LU`R1;@adv*zKe7OV^&1oPfjb%)zNko17 z9%fd?S=a@2sE^@PUM&)LV8M!Y1`_ldWcC2tq17F1hz?vX$N?ScScR&#a^KJOU z@!hT5AYl`NIn$xaN7#DR+ZE>Bc%8o=b76}}#7a8E;uY>}gZx*mD?fcofkPLvijy?^ z6D=fxuYV~Tc*A)P+z68NdX_N){QnWnL7@*^ssJ`74rbl{+JlZ7=8bMCQMR zMGhdCz+QRVl`{+X&=6<4i2woXg1I!EpYjX%;mzk|V;;fzE0nRO))* zo9Wn4Q1xn*j0o)eK)t|a*M`1={j}scS-HtX3_kX!uADO8=WMYjNC$^hJPp|4HLTtN zI~_{fpVe!`G19DV>W{hr4m4y-39<+mgcYdq6>|?Br_d0Y$L!jooN>c;cGWGfAs@4;Y&$ z+;R3<1tFbid&U+{It^RWYB!!L+@!At2pVA5bzUD&<&^wk)@4q5I8uU?fcicE1G&`r zfq#CZOU_w2*HI*w4&v0vH^tOOf9U*Z2767NDg$u&JUOJi!qei_|0MKP-y@K-#ZE}) z_GrN+PEp5(uPO&yko>q*3t4n^<^!Y!$An&`c)=m@CUZ8|&yJsVgA_V|1n=Rg2}q5;Mu#bg%KGrVv8SbbbHTmH&1O&Lj6>ocnMoof1@6BHZ4*z zjhO<0t`B*SkKzq{PkQm`QmgbX$9WbAUt@mm_O=4aEo$NwX0hIZ{B!?me|0K$py6F@ zw&*h**%hP`nxRKtEGGzuafe5E;tZq(nL{3%ua2qo1mGw~qX?S42@4IuPBDHa%YUDiYeq-8-c)vBg2prBHVKw*9KuwniU4D827*Jhfn2PGpQ&N z0-7WqsP@%Qg@s%4G<4{XzOAy|qV;5q9m}uRwqzaE*s7>euO1~$)&P%f#un}N_~yel z^PbDuMg%}%Z$~>~b)3Cz-9AJ1SH>{N^%gXD6GQ=Mx#i%e0!%hjJ4dI~nS<(rF2!Wp zovWLj-Tl#I!=+YGQGb?qkF*(2R-26Zq59|v(A*{Iuq^w%0G!ZKbFwuT*yRS6Hzxo~ zPbb#QP-#)63v>=z99+*zz2BmV89dAtv3_ly<>$Vo{KH&Kg{$HG8rBLA6 z8W*Q~bggR`g=~i*FeL&0b_hL_6*=%;&N!MaH5~$vWGHiDh6Ys58VPvaM;=TYm>89v zM0y2m#A%u@BGV`;c$|GHej$?-qn-&cTT5TjB@d$Roh$15>Ygo`VvV!*es@ z^SSZ|0IvGi^!hwmMLiD;vNWi45)MR!Nr8$!S4cCRJ>%EN8KxRvd#pXyVii#$-Vq5wTag?kx!VeROk;9 zfx!5bUn5SI8s@BOX4+iO<;&~Tia=s}N}H!i5MbqR-C@*aRw~8)7Ej6;>mD-IKeEVhTe=xpm>yb!ki!l+A^7-}hL>>tcytzRiiuh8Cmic%A>8=YE9 zh(gT1C*{W3nyI7ofAq4lnHFa6D}ZI_CTy1WC8yH?4Mh!fAJjZs1S&m=YiGF9fn;bC z!3d$c@7Zm6E@nzH4BwwP>`genVm%y*oC$Q-A_~8*)w}p|02J0;BF_9y|8rr=Er5pi z(@C1T$0CcKFnXeW`!T^JO4(l|naln2wL@iPYJ{_+smtnS(_nOx*Wh(Cm&aj>~^T=&Xz9ovVEA0eIsBF%DI-UUWeUp{K z(TJAGA1KsxIh9#uM!-c#=@5S9gOYl~=vSk7E_<@Jn1v=zMfhWej$Rirh%B7PnGui~vhX`#3!9uJ;gx zmPd<}emkC!6V@R_-tIsYDo^eY(C6jvEk{kHUe#2d>|yfDpEUqS<@i|id-xPq`s%To z$d@v^mMtJ9Oe+$J-VqVEB>0i8157x2)`v+~x_QWl)!@{T@HBAA*R!7Ly88Ciidl5v@l9{D9nZDKm-MXnJcJJ2f9 zLOP)$?PExY{|#QZaE4l{J75uH&JUwdqC+|yVzT@Fe_*v^F93ofQ5r6zMeNkPUP7}h zuR0l&%wL8U&*@p&i1DEFv*?U&>{q|K9HXk1JWW6fycwcIAohQqBrLD6i2hZkup9kY zz#wDuSY}(l|CWls^KX!$4=ElOulte}P)%64s-)s}>Q2wjc})eew21!Vi5LSs)FTP$ z`f7q1Nsce$Bi0EgP`G2ar8-$SC$@>f(Dvx@!b*>7U8cQwo%v}`NnTaY!N#*C&WSm2 z#yOL^k=VG!|MbnHOLxP;#kAv<|KSLOXj^vcZ%P{Ike-AwQkb-z1!2h5KASJ1FQ#I` zN|Q#eC0nvkT)(89?ZlHm3Iy30r305%Jy79!%7!H&9j9i+rwhLw6X6jZgq$|uom=*B z%ar6^7*Y2Y&fCHJ>`5-Qmo>EW4)~RmANA)tk|}hhascT6BsPbsdALuUxN^W=NFWNO zhb#o|%Z~!s(8xtQK+Hv8M(5>$Jk@MV1L!2d34;w;9))h9`yJxyL?t2jZ8p&{A7s0L z$7B(1$bS*B4K1f3ent-&6OaFSLs*D&9PxOlGC^#ay# z$(zsh5664!2}3P(sR`$A|FU+)b6XhiE3kA<4&3mAz$XhYO~Zw_g_NXaBG0{?zKaZ^ zWV?bD2 zxf17`*+p};ZkOJB zIF=m9-JoY?7JixP+Q*zo_E*C=(|NKKz67pN10dn9xf=(w5wOC=(MD<_Bu8h872O;h zb!7ZVzB{yqfuH>kv+%LDM(J9Dx3RwD!5$Q@-Qc*xmk-x^1oqFL8eWPymNvJb zuGI4~w(1`1l2l|%+5~d8i*|u+j>=lQrc8UW+;eZBi_R;AyZp|ularUNjp3cGA+hM; z>lLBWFuklQbJP-<93Y$3=MmCpKaKeaB7bF9s~|;DSiPwP@qOxO7Z(6~?C+65VCXXE zO~Cp{062F9!Vmq7W+>jeGH0E16C6q)P|aqIH;sl18ZX_+dt z5>XTEnng0LlcMHIyqyVrvqktKL!J<2BQ0-H$>-EI#yNNI`yCQEE1aHTgt*_%q)q0e zL&bXRi_ExgLvB_|rMA=|I3iru$k`!Lz)T;!n2GXPwOQZ68xxFy0wfJG^sZY=sJII# zNxhw0ky*sJXP+^Gm}I|&tl^v>CSH-gBKPcM+ic#0hD(8P@V*>6q^edcXe9ZT9~QtG z3e+09;z4I&nUs}MryUxW zKo6IyH{te39r5RZ5Q0v@c^J)dz-U~|ODYkBr=c)ngP%e;-^}`LYWq=9OADrhKKZn? zCje1hS)oJmKx)vFRPHz^WJ01mHvlNxVUKnqwO9{)rBD)cn|U{@CXjn0oQgEj zY1&i^0Ws7j3U3+0{O*A6iY)JMm?CRYOzY;8Hfw0=8m%GQ`M{tTan=6K0$l$e{jncH zVQBIOQD(#~EP|E#9CtVuyGJHcmR_P|U1)?*EfWDCgIMvSKq#oN=6fM4Ru!IC1;rnS zcbmw3B;o&>ivTg-syVineBV#(1m8ErKf$Lto14!mNcCv(R!Adx6R<}(*Fn*Dk03!i zNb>NSx0OvpVd^6l$f56mS?LtZf^_u)&S&*Cn?JDynf6%O*-*`}MX3 zllwKNL2*Hp?Bjr}p*Afa@7Q#4bWgy;$6E$=D2&M2$354tj|ceOI=6cHfv~2u`h*1@Q!^r*G}N^!ne9T0Qv z5!0@vmc}`4Yx_NJ)nLgV*3k78?Jo6rkYt4h7oB?4=2G+Kq|TAx&}eMESAKDXd7zw= zWDa)tw?NL6V!A)@h8Q|N%WHC=FlYDjH7dcP(x|0LB9`kbse_+$MP-;iE3~qNG#xKUxMr${1Wy9Xf&@{2fh@8^&RGQJIBZF%CQNPjCV2S++n2;Pi~`&LQdt zcO!i1JPJW-Tg5xe^8h_Gq85oG~R%m*Aw@M2x6aNB8stu3+{c^8ksB`~zF3gi%0g?(L#; z?imSd2ToM93L=xOEqtHQ+;VEqndPK9K)|kgRQS|S63)T=tTDsmuh1? zw%2r4*Yv5yvTpPYJ?D(Fb?&?N2hI)8U|V()v;*e#V`RNvk}BI&DhX&1l_gKcJ&AGG<%r43~hUqtuakv-HIFAZ8J#9*epR z;*~@dk7}v+f5nN=-ssL4FZyYO!7+*7tRk=4xJtXj0`^%+_llb4@a# z5*tBRLcBh{chNRwNRY;;~*?JB1&6m4X%JDhTr+u82yu*B-TLVx*nnnM<8_m%=vh4>xUg$2n# zZdMBOg~gpIP;gczL=9mj7{eAs6*8%>x#tSEy`(&GA9u)Y6X+0%FOsx$`2;MLz)XRl$N5FM`yRAbCR6W z-258lDV*t6wV5jq)sCVSxZ!wtR+bT11lIrDaf1agiv$609q`1(^gc+MiC%o%kV>JG z0+lflV9+EDWyzc|^z$cGq2G|W6N-ars7)ZxkmJuY5ZoR8LM%=|sFtdT;Sb0J_ThDn zl#*G2(GhV2RBw#~A&PF5(nJBw2Bs*mSaaYyGQ(2{6YzIYvSq zIEJz^(XIG$=>mPEl)d0H95ONeR@Fy=a`iSp8lzg}$x>p^^0s8bT+c|qlCx)gUGy#{ z56eLE?J5nk$i2979^)H(19a>_&EkpP40~UWc)6$fI;=tBy~RKHXWKF}Wt;)x=`1Yh z;)RJ{6C#C^4%Tx36Bq;Tje6p_lrZQgM;NcK-z4t=DVwbi0XWS$1-6;hCp)!>} zhmhS^{{D_(6a8=3{)PSJ<`kQ+{bB7wm%D??Jj#*~f<&ENZ&nw`711hGAo4LZS-d}u zp=NpOgjPM9fhvb^W(P+~|K8PRfo=t6yjp)isin}zKBS2uv=$KnLo4UL@*Q?X#dM#x zx|HA}x(CA++sc&>&1SmKMC<9r&P;0&2e1Ui~ zrB_Ro2ok*Kjm-XO5k*m1i&KrgR`Rf1+8%C3f8ESLOP}hwihmvZ=l%2*9V2*(^3r_7)}Hltd$ge4TyqmyD22L*2th?@D(S%7wzK+h@iA zzloMSQfSNvz%KG6q}I4exw4AAw$i>v%rKahX17>Kcn2qE3^B=eY?{scC{JAS@5;2! zSFMzdLJk;CGZO4lh0-zWyUr-@4mB(LeX0E^mx@XuP9nP3fT`gglGb)KhL2-1=dQ^{ zyf$D+mnEV>8ZQH+d9s~8VZXPCDR?&?iUS6E}FZKv9|#AuhjC6&_AG{Q@FD(N=0`2VU9yaHG~z(wi4w zC(UP_x=Ub=74x&Tclq=c1nDbN%My|gHOB--vE50}IS@ZTF2*r#ZZpW0K_dP??gN?H zWO#EV<>;i~Bdl1fmZM`c6l=nsE?1n{ZGGpRYUzD9=3!Jw4+D=wNVPQSoA%bl@u?$& z-+7e#dTkwkL#}5gP6-W*@2~yo#(aknDMT~~IRG%~O#!OE?V6s53VWiDk=?L8F8B`bSxxoS zeL&Gi0tm2cElJ~ijH=h%TSimZ+A1P9EvGI8!CZW=ZkUkg==ZSrtqOa)5sp#1`lRB& za`EqpZBh8N<$=vbc=W@T(8{5o0i6$29z#pqJ~nZf)X0?z_qpE-wKSs}evCu6n{<{o z+6dpc*Z^byhuorY!Xjd@Ak;7gk{Wv9Xj81%yC`X(aGQ&*22k$a^mBMiQxbFsq%%?% za>cCaL$8fVXmckTW$X=~0z}2+VvqG*UJwLv;3uD@9P}G&QNG2t>CHUJI!(eYS!YNr z%XTct)Iw@db;6&M2sdA??YjG3Skd1*hU{_!dhtWZuHK$n5C*sq9MDO7>xSwPEzV)8 z$`{I{R~w#>lXTuRx6SLQBT)sc`cChQHxIe$B$`A>h@7-5*N+D((icG3%#j#f)$(B2EZtv){KWv+S-(;3%ev`$7B~%(_|4 z_&x{Q*cT!UXG*vDk6k%vWT3*{{&sZ6PqI`&LihL(|0x4|fcEuJG@4S| z)SR)viB}%6K0HXCpvY5gVf^@|`!f*7tC)s`>;~sBBRre0qdu%VefVo!Wi|Z!l5P3& zUa8zO5nBkH%~nr_n4G0|v@A*=wOiI=yyV#H24V*cVm0Y^O#C&6 zhozh6->bNsC_r<=#^dj*oigO{^J+xHmI{QtP9L2WL6x=-S~J5vJh4fp?iGct!*Saz z(s_?Jrv%i2q6zo){_Cr!GHqnf4dI|7*>Q@cMh##HOOXH}9NAn*H_6&7W8EaM zXg&}5NK*bgCDa!rf<%eIRBSfY7FDH5#y1LFR2(XiZPhcI`?H6@VLD#1zvXM}2P&Ed zxY!}?O1UUSf64I*yY|ec>8!<#&TGyoVTtCmT-l627v0+z z+9tJE-LH~x60uFuwGBQ9?c&gWLHXk}#Rsxd(IoB>tIvF-;R=D4)<>#lG=70y&z;A_ zYT-7Jo%X3kz$4rb1NMgJ?T~?L)HVy3?G9(DI+9rifLq1SAoX@ zRFeOvH7DSe>kjnmW7@xvjD6MvD>Ze|4rnb8aLwds>+Zz@bynZ`(*yq^-D>irnB!qhATZCy;;>OJWxffblrE1!BVNmWE&M6N0n}dBv!js~T1vq~+lACn!ZfT87i^oO-9mn`+)*I%DJhsu|k0mVM*^NgxD2U37ct}njropTp42y zLx{m+r~}|sm@Ct_^S=6DIijSBJMwZuYl4`gYE}Y`0hOCxRj%7Zh7pddG&w$)fX|g4 zT`uhF9j7-A%m|&Ad zqFvOY*}w!B2W<||g_p`^e*g*DGvGlt;wSC(5icK!TKLT2UMBh`VUB0a4jk0fleg2(vaw1>!4mTf{Q$-*gU+l4H}KH-FEDVd zrg1=c7NL8qs(}=-y)NV@O6(8M3Bg=*ds7b5h+ymKQ4EX1NET?tW3eTJQE*Q>VdB5Q zjgaPfi7n{0U~}y3IMlHAg~*1XhmYAgtk(A1#E(`GeW)Bru>}J?Xgx}k&t}JC-YG#l zpc0dxT0=cg#D)UH_BJ>def>lPQ=A|y=>Bd>T0>>P5<8X1b&3qNzgxd{G9Lf31Qt6$ z{Ai;xojk18mn8c4QSjK&R!aG5S@vv^@N?yp!}kR9FTiIPODD;1qk;}`K2t8A7$+}h zQVPCXdgM{;$OT=hyGF1J-OL2}ff;$Sw+h7vxWnffB19^khbw-SR5dwUgahG+Dl`sm z3di}pwZv(iFxOozO0hL&{eX{v?xnG)`(m@ANlFuo$*1B&Yu$;d`;WsAjtz3xsZ35H zAj`;%n9sPQz_TTsZ>8bk=xqnYYd(UA6aCP;nd}_aN58di?co)A5Ro_uiNRE4e0Qt+ z&?3FxIFXnwOB07As>c)f8GjYQQ>agLYGP__f^c+A)tvgx;Nttc-h75nL_K2qXf9C2 zixY8BZ*)kg?1Uitn%5pY-2l{2N$Q}ba|CeAkkhLKWOOt7Jcr&*hfWKFEEa@2kGm;o$)e+wf$ zqSb&`Kb6opO#0{E94ZT$b~=Ss?32;Wenq2dya=Qv*~W5FJLvYDsr%S%xkfG>9s;ym z1BgR}Qx*xXeKSP@8|ZN6=)G2;M10Cf3Z%|2K|>y(=s2|5q>*6E@EO2yFfXV&vdd`QJzcLc#=&Ce|hfP9{$OFUtS8 zj2ul2oGt8Z35*S#O)MCg8JOwW=oy&VO_(_?Y)$QqSvjpuY|Wg_Ef^TsSy>o47}@Fn zGuay0nEWUHKl#!yFw-*7(-@mLSvlL;(^xREv(j2P*)cG3+FO_ynGpOR0TxDPMs{`+ z*8e$mVrKbIij%D0IAnA;dUK)!5Oc`HPNW&B@ltp1r`FbL&ZbS)bEYl4#IjQ`ksW&` zmdHnu`xh`djBa3gLFDMcUGUM{iOCuyhDh$D-kt4$8bhFrQm7Q=C}(grLzw)kL0WJJ zv@3Gu&!S^cqxX#t+7fZ={w+SY4KjI-wnk(%h;<)(=Wb0{_>=`C?I$ct_E64ZEvn5sL?}O`4dL z`?|sExRM}f8U>z9}&gMlvC^4T0KL#`OpmJ&3kFfWd`mQ?3`vO6yt_X zix#?Y9_7Lv-?2Cf;@Cn13xDkbIG$uOOkNKB5@K3KB^P+sWD-bN`NT7CXO1~J-6M6Z z#C@5{=xE_W;P;C!Eqh1pG~m`f3Fp^nL*aa+MZ^i@oowFO6iwpPVZvVKypB=eNgey! z<*~4Z1cG<}E0nPp2llaUIltBpTc-o(6NLDQG}yki^*Ga?n|Ph~90b3#KF91OwE~7j z0jp2N)GF0WwxOT#PPTnSv1Q)RWx?~s#4r44@r?pZWsIs<+O8USn&q`{{CDFUtc3h#H0vi@K@t`8J&`$HYv@>Y0*j2Y~jTG zjNB#HckvMS)KAO6MepFoU&Eoa6G!C|VnxCOL2d{%-_YR4t!D`jrv6=_w`Uli1PT}S$Hg>?`!p+_@eEHUIg1J5%5qSEm z{of?J#XdZsRDty&+rh&u*4Le#W68jXZK{bVS%$Jg+|rG&tR#(JA6hwXdhY0h-?)Vw zVNx>_zn;Zf!Y_zc9WH<+wlkzmkqcVeZj96x0zUEZc%bqJ!_(LY{51d)!q%`l;R?Ky z*|#PdYMOutG<|m9kQqO@B_Xy|g3dT#_2$-1#Q8G~?n1JYAJ_6W1H)sS24+toX%J{G z{A@Ij<*pjKqnK{eaBeDbwp7> z-9H@W&fVZ@x2@`FiwaO;*t2BY=|Py!@_0O?#J7HSfFiff@GQtPxNd)E7%u?j=Ywqj zk@m^z7Ak}X-U{;corNaTwYBv#~1fVhc5z!Qy`vk+LA*Ty&KubOS ziZlzETd*ultiJTj-{=Crf|h-_j~jO*hGCg{nqwOj-_L6g!p^(ZMa(V;7oA0zv#|+K zqcM+4Kc__FpS<(@fKp)CugL9ftAs5b$JUrmxC-7(2ylD{ZK*_D1ZjDfx+r1`lN6yo z<>Y8MfA?1iL4M%G&*j)mdBW?yY;vv}I~4`u>f!=uRhA%rc4V7ZrIN5Lz!p7#807Qa zD%!3^skwnef-%SND%sS%RaT`Tg~J+VsU_~sdIWNe{$>{7#M6j&BD}PUrvTk!!=L5! ztiL}-1#ogISrsH}(X)a2yc??svaK29>_*vSlF5Y8epkxic<7VPmyUs3F@w9Bi0X%F zesmM)F%Gjj{YNs}fOemMh%8FH&p4?{V~pV^k5~!eR<`6#RcS6O2Q_e1YfKI?J2Uqo zM|d0g=)pU1t!8~lCl|h^&-$SL=)}u`Z|Mrs?L7J#_71KJJC9HI5NU+c$bc>n=T2%& zsl-w#rCoPpDfz|6lP%G-AxJ&u8F);4Tc*0QDQw`1twEn{mo96303HwJLM9dQz~ zwM=TcT0LeY)Y1b$+6`Ihv>Mr!K?H3VkMIlU4v=6=^g9fTZr5KKj+1gf(POkMh^XP& z?!XdzGBX-4O$w$N=tGj457VLOY!4#Sy5MmmKaRGdPIhRKoq;TN&B+IiSclF*?Bh?K{cSBD@p^Qh&xVAAUHMn*eJFZI^!z`9n{wNr5BB`seKm ztU_EmPqv+Q*(O#Wao9`PjL-0LlZ&`}yQzGSiq5w(ZnL-*JTbtoyN5;s*RP)hZYowA zqok8N%j=w6hR4@bFFu0|wG0S9sX{`tpsfyk%^NyV(eMgiJFID>5XBA7A4o!|Gdgku zm@&N@agr>}m=!D2k>I0TS}5iUB#?p_olo=jT3T3Rv-?ojxY0+gWP8k`Zgx{GU3+m$ zpu0%3v%+0$0Zat9GoZTXGvlAxFigEXPwxWV<8i-rZZA12GvZ%t*~3xB_wVq4Z(7#c z#jhT5bSP!!1}4ThKosiij(9?^IW5aUP8+OzB~|slm)Nl z07b_RwQ@JirZVoiA0qq4HG7T!B1>K6uu&tMS?1 zl^%Td05XOUq45so&c&9>+c-=34+I)KVKzDQa|U`=7hh`N2GyPA$p__^<4INbW&49d z`f&M*pN$k_!T0tDB3ta&KlbgnFQ676ZOLpi6ou!xk}_o%C{cV(2KS0MBcMbNEG{r;6_0nhVq144_2>95Z4Jj zv-nkn#kt#xP?WU*T68Lbli>c(8+ks2P|`H(g|DMZd#YV22^Lf)$;K|Ah33Zyc&c8C z<@+wMWeNATx>Rx@cN?#RXHWe-wr%f77tb3i_`o|w*lSVEe|<0vPZUNn+I@ZVpsx6? z{U=LHwe)73ZmF%UA9{sgaiJ$ag-SV{(c8P|{VXfmUkn&&d5>z7u}_|VNdTc|#*fI^ z-yC;Cirh{(DI49DdvhU?h?3n8a%Puf@WC(SIV__slLo%iXp%Di^eE6Qcm9ubhtBTf zmiOz#jS5Ub5=}HZDasDH;Mb1utukPzsn$6c-VDkA&`lomQ4~4HjSlKj`TPfMR+P@`RuTH?vXn_jq>=o4RMi8cY&OH`F><&s0*{G(+zwHW2f^C9zKf z9MnX;#j3&da?+jR__L*C**s(p9)+N;)J(urR z=L3cIpm78d`U#rp&8V&94mJnsS9LsouufsgL}WF}Eq@7+4lCtf7_{n~yYI&ezT27v z=8B%`M;9R*b}7lrj?uCQnaMf^pOZAbmM>7GH?2n3*=dVXqSo?_chU=?-O_X9=QJ-7 z49sD@J94 zh476hw4Jz_OULdct8v+VcU6ROr+atw{BB_+34KQNo1T)Kr>GHaED_bWKT@ZPuLbsX zLcqm>1vEFW7IIzkV_A0)-&6${)x9!SVGeBrriz_%53+Lt?slcB^@gHAn0MUvR%l}s z-incWt=!zFV2zOi+M4m!)=lkSp)>~53g#Rfws}V^9~Xfvf?i92sPY`@oZY9P6Ux(V zwSO5CTwXbXoJU$EV0!biyC|V1*JCCafVjmP^f0NO3k6tvZ(Sm>m_9Z-Bb(%WpOG+paQ#SxA*?koc?vh98VnYwuGwuS) zfHRZ8%2i(XZ8s@0P2UOmcyyE59};V=kPtE+zvgsLw#n_UMpA&S^fqA;6|lNsa*k1x z#Ab7~X0mB7D8|XRic$t!8|xfuGNjhnW86 zAi$wBxRduXCUy^Ug=Vd1AORIQa+X;%F)Pw-b!!pMz8_fv-r8$9Bek7B<0@fSd@u?~FQtIIwg$JV;4) zlZo7-{o>m;+{`zV``SEmFt>Y-djImx@LT5AvoJv-c9WaeFcK@MnHQ;4owxPQluq;e z9SF>-Y$DTNByAFw?s6X=mRDWLI&r*_^n$AlcZPx;iqnAcXGQ1AJe(8`d|4CP5iz}> z9$v2+Deiv}a`Ju!rCIbXSWH6AzUEEiJBle!wuAh_(|w@k<^30J+5nQ>LA}N6kW<2U zx0j{lgu4}HN^+1kj(qDkB_u?$?t#PLE~A?SKMB(p9mb->hIFNEK!qp)xsgj0Hqi~J zK>X_gKa8cso0By(Iu~!sk7gPrjw*F>HdjjwS1!ZsUOgiH3Zcy3!2^=F1|>(aoi-i{ zWkLLj?=1WySNGyQ5+%<-!t+aelvi0Ae7a@KZ51Z6Q_l4m%8|9>#28WxdGXGM6#1J3 z!WE8$Dsr>HaM1v~=M9d0oC)wueO1e~6!s;IO& z0xxGF2We~V^t{Hz$1v@%R2vV^wih*cm$cTc*O(!fk`9`%0(RA-&E1@Q<(EBk;qy%y ziK4%?`12c*3R2=8R@PMy%3^9Z3;d-vT2(VexOXqSf8B8#^$29nbSap7kUVz(G2fmX1?qdbO5&KOL4JwDb4TOpiIOx6_| zxoDV-s7sjBXz;4RPZiQ!+u!MJ=|3&9EYmScu@{T_D0@xY7#fR%!j;v)P)T~#?7f1Q z`U+~Y6Y9JsrSsmUOBWZSg_#cojxpEG{N5-RmDMl3skv6mW)T`>6{k&oyv4)NU+IKJ zG#V?(Q5-l?2`L33V1l4)lBd_HJ`Bp-wiZe;33VxI+qZygjH&}P*80uZ6RD^xm78fJjvAG^gC`7t3_F_}q)5#NW4%L^mWjl4y? zqTbJ|(50b4xIXM%{6C63q2mdcU^v8bQcKnW+&|p$+4SUtkQmfKjU)agbJ8~c&ZhJq zaIEq8g^9%;{+2Z1Inc~k>ShM+T?I)o)CFyOO>u?(NLRBao(RwEQ@|$H-Cg-y-f)K* zD6wl*A}%7_(=fOw8)_ol+3v2k33nSEB#ljG@N$WGs7N41GpkzvKx2 z>?HVaYwW-9iTJagMSHf8e3@vN99vNu1OX@5AMC|Yd^7=SrcUT#f@OI))auZ&xm~kZ zbYdUgixNyg>OdC@poz0g>mQ!0szbw|$r`+HO)UmAo+AP^~Up0A)P1dw0z^xD?)M$MvG+0)JN^T4tgliX* z`bny6STwB;D3+AhK0drNI8A>vDp2+y`i}UArk*!~-k6}Vo82rPxD&*g;IW&{nPaP! zK9jF--Gg^Wo72I{U@U*~d;;;T$m~i6R}9kR<6$zvW-AwjW4h35Kx@R_C@TbYBlLQ; z*wlhkd}BP=p@9J`WS}iLA3gRz4Y1P4P`;3!H4fLPph}qwfn8v`3=!B$^eD&QeJO2M z%oE|J4Ce;BIaH90skK2M#}YZjBd8pWMDFpK>*6k|u*_!gE5F3Mp#Kq0%0~y=Eeyj$ zM5`Oba8x%mRP~SF^_;?s0Qc2XW!fY0h8Mk*P9K^3dQg%=^^Z)xg<4~N`X}=6>fvqJ zmYFla?)-;QYNV_Ce|HGHg1L^r0bUu@ z??RD&MYjQF(!+N$m0)MNF>CnHmZ~m91|zzw*sZt-?Q;$NNIrL->2uMr?Nc(h5EB0T zOty?^VgAclK(2HwT2Vf?nezHGRWlu{B$jO8IUQ#@biv~ zpFQPKj>DM4?ysST&HRy!v+rp9ac|8L(B~-qz2+cjKn=&46s`SxLZWj89kDtj zkQVqYt?TknWE?=PytH>uxGM`Iuc>AJQ>0jnxXGG&wtKuT; zChcHs1)E=)p{{RL9djv`kxHEA&>+UF2f(5ZbP$BSzCzXg^Os8Rl`12 z0p4uKe0w5ST*HSH4BMixgBSKtV5|-Mtm?Cz=X{pB*~F+OyCdlj*->fA8i%73P0m!d z&??+rWpy@qzA9h=5g)ZxR?J!vqno(E8f#fK-exfxhRmjkOLGW791t|BBsNW0Bq{h4 z2U@q;Cf!h!yUF+J-@ZjB(`@Q~r#0MrEAggYH`$Pzc> zzsxYWQ0e|(npDyh;zE1JJ*Nrl$z@O9)Q~U!IqI*i)O-WG(CQn7ehdmdp3a^d%Iz9P zH5maKpFm$7rwBrvgY_}4BMl*8O8}|qovLq6kPw`Mg_`V`@Jwa^R`r4kYQ`l+8c(e| z!D!-9Vh?3K1)5RGp_lc@_N+xjP7jU9{ps~numtwhZLw!I1gm~|rzn%#-saY~XXTNW z@e_wq8_SAjtfEHi_!>BZWuP6khE`p`C5ScMHbPHYxadf#m>6jOfa8*qy&Ta0On#hgJBH>c!pF+0M^((Ol0^=cG8hQRGXqCEM z@$Cd&HQU#Psk2bi+W88d*d-+cH-3MpSxtiCRcHyXCiBelZx4|3vos54@QY)o1abRq zkMLhU-MR-0ynT!W4gz<$en61H^uh%+JHnh)v%*dLIdpryuULClT{hu)-Z! zy};1nLz>_wV!AFG>4URD#js+ct-BdFzM-;>JcAR^unT{e2{LLT^fBwB+8OV;EVmLy ze{OFou|E!eibFQxstRl$+09}j+ko!{KhfTT0afGk>ag$0I@Z5L?keuq%!h;P6lLL@!lmGH!5%${1m zYjAbX6&a%L=K4c9Kzl<<#c$jm#t0ms>`P~sjnAIhE6yj9^A&UxDmri^(1mXpcuf&| z|6nxz=@v9ha7Mq^bI#V6BS99Z)*UbjmK8ETj?O3xsJGwk+9rN}5!MvT{T~sRj`{>0 zn2PIdVe?>((DHcRhTWipI^+``mmX=j;dU1y(5?5IM3}vObVE21L zef-;4ArZJd-Yw)hbS**?MiMAufK(J@>Oa93l^LB|kWw+_AV&P+SmYY=-f8?2kAcI0 zbQIdnEzgtHSG`V{}l|EiOqI#wCNK!wmzQ*(p$6(jAnuPccw zF=3Xck>lcd*K54p56$;T#6uh73Gmx>zTx$~d10%4Eg*r2gdjlH($AC};G_kehO4yT zhzH2ALE=4BR0{xC%X51>==)ZwFEVHrp8m~CyLBom-jxUGD)Tr4Z%WN95f?UDmpWd? zVeND}kn%Hm_!s$#*6!Ex5^xw(SdN>t_3*Y7B)KZYLaCnjOxv=NK&w*ci>D#xT1`mf zUW$N?di+#g%qArqpYiOZWN_PE^tBW;*xyS`I|m)NrwprYZ!w#oJ;4zLgv{{pwK5;xaBp~S^WbrCxfG_`QxX~qp}8A2rD8<&v&~xl*v%lyo)deF?+ph zI3Q|&!wFr+YNuRQIwN5ryi`k$K+)xj zb1kl9i0H)`7)VJGf@w|2uozl^dT<5etr55;3zMC@IuoH zrZ1^j@2(4nm6xg+q+p5J5wLyBgSI7>6n3$Ja8v(ERh`}xUP^tOAv)xaH0nrhDY2^= z<7$nkC(BL9bsK@T3J+I?txtqH42x*8*#3%kw@G1~=bcTii|ON`s6%aR=Uo_;pAb;EE!U3{pS7^#imU4vUOt41`$jIABUz5}WQ1E1O^&P2=g7_CY^7&2G( z9S)tOG8EA`l!gyoY^HB!HFg*wi~-!U?Qm|*5c6M=inO+?zKswv+F~=d_*v-Sf$~w=Wuqb5W=!H;z1uRNH~cdn zd0BMg+-wx~#*%ot39ChOz)k+qv)s%6N$or_wb>iQuQDry`t`&*6PSoSx(7)@fC4&A z_<;zLw+;7E!`fiX&q>bk&AvXNC9*vR8O2NT{%j=+1g_NjCtPWuPrjzDbcMZ3@*$V| zsSDm-0rw+Yh@0fIk*5L%#xiydJEa*6s_}k$XFW`nd5m6^&D3F@)IP}wRpKwK?Ybgp zD+Fu$?y!lmFu6USPALf+R`(o0j4#OE{{z@ya#CwqIL8nn78Os?h9HWw(zAW2u=m8* zplKXstl6uJfmS^i*?LX|S_WJRyCZ9CxBfF78LYf}0&=VJO0u~=&2PAvv)A$D3Q4m$ zzCE$y`v4Nz2`v8D#>ZeQC2pZNM6$sfzQN7=5N>(jU@ttX4;XXI#UVH4K?_7=E41EG zI}orppbb}%gA$kg@y&4tR8N$npRxp^R>$b+v6GAgkpz9pgz<~oD>nC8A3`y1om9)FlQwUVWCA;n#FhMJs>hq5=XS0?O@?7W3Qx*I5Zf14soVOp)$zuWp zB$>1|>zBENq+-0gWOyhiwcj6-(1#XaL!pw zgT8Czobdn`|E+ZXO-erfMNU0wZuN_Yn}dD%@EZc;0?j zU5zbZz71qhmUnlnEAz0InIRX_=Q!T{1-`6M$!_3_d!|+$zd?qF<6=D??7Zr%zq#LV zc-fR&GXM8Rq?Z{zty;NjpYB>HW~`IESoIk*7Eg6ZB;hqK4e}}ArfAW zq4p?R9Bvcd$q=#s-Hs`nhE|8sN?5xqIIB$zV?1stKiXsEsqnnlAlg;oTUheKe}alp zxQnaKzG~^eNo2F!sdrz(qa)9$Is3bntUitRRVG!iQheZ&H&`okxCsFgRI^j|1Q}`7 zYIiQ4@LjeitmKUay4d6GJ966$|Y<(mS z2)8~k!jp{C^X9X!xxlvp!dx)JW3|$p{T-NNsRquZAYpE_xmrXFAH@`BgD>=zSGo;c zZ-Sq@@pG!}K=&*8V@7`)ZJju2|Gv{6y^VoZhQbjV9{3dxY#k63q%fcle=3m523M)H~H|LAgQnwIpKd*W))5hLAD z_iDR`?r2TC&o^$AiDXVd$&ts}jhhexu`Z(9B-{){65Vr@ih3ZuPl2QH;})+FC&Nt$ zRyzQPk7BkrN;#X94u{FeRF(+PPZ^|65$ON#g z#tXlmTpe%jwc6RgmL^6lWzIZ=!$@kYkX=~)ok&CufkHLqJCecUSQpFCvnj((s%!P# z-$Ne4z~Suq*Bf{D)210I4JGA7C|>K3yDckNig%@n&o0L{ST&ORM+)9=>_3K*7E8z- zIu>0_Zs3q03OoRk|CS7XK<3LHCFt0eR4BaLCmT{L$sI<~-m!Q7IBu^X`aW&XV&5|) zKGX&b2oepsfRehy3Iz4DL>cZ_0y501ccTw(*_+E5EYtSsuyZR0GLaHhapNIXsTTCi@y*qxG`ZG{^J3_% zR9`cdT~v}phg)K&f_L_@6Yj8Nf&q_HYf$eLX!2W!=ZiRxr%_!r5ozD+Q-Qd9z(_Kz zP%SuuiFL(wGc`N8JnP98D<+=tpOxPxfJBY1TZz}B1R1E7b+W>kd*JO4zmoGceCT1( zAiztxtB68^@K2keVzBU3pzJoiu8A4&-x+6YxE?dO1%6BRWA6{AS+O;$USf8x_k#}I z=$rXtQ?(3YhXU|$x?GPP6gvD)PRBdnNJAQqhonpSM5wGewb{vA-o?7nsZ*;?K}Di( zXIxis6X{&^mBQIX1jlL}w(NyNy9iSGSqB42@m21&EM3Aduvt5P0G}oPB*uC+ng)j-|WsgE~%9~6=mlIU!#f_-L-ZO z40}E2(wI~Vj*wf)pgFo+3iY&GQY?t;Af6kTm}h=n5*G`W4c%UWKE0I44(!R|RSE@g z2qB8GOslugRo@0-?zvSQBU|6*@jpIr*{nWXnaIj~F4IU`CUI2UX#e$Bx4>(Ik#v_; zH1W|vKN5Kd%LDOY8k>YT@Okkq+5;;|$|Kt)4avqzE~LkWMa?PHm^24yXafM0<(!`P zmEtmc(2juO}~)H3HJP8kW<}`h8x_v6zUrVa9D2+Kh}39-~jk zD0i<(17iy|i>WD#y)$>j*F4U6Dss%uGc?24!C3|VkgOvvwXDLqC79RRsNbvN&<$N( znU^wlkT6~bIA)?%#3EY`FWJVN9Yr4GY^MFH}6jD+RIGMl<8Cnk=sEO|+ zy|@}ZdQ4%W(lz8%L-b~w*N}1?r|})&Hp_J7hhgwu%7`hm9X|gRr1VFdYOk1D`xK@w$pXb&yg~Ab5~prBLVF>We?Q zVPxMiJ#7NZV`|#4l6J^=V3MdAfu-Q(wz_Su|L~(_KW)sF+(BP)b$;5EwU-MKeE5mL zm4xRhTt#K{+5XWw6R0{P!?3XwjSglw2_2-SfkG7H^lZ~9E$fbLuUJ*l)sXxWIwfOw$vdl;sLEQo+L$mtXj%uo&;Ak|ec zsqlOn(V>!sdxX)DaOj$?oo}_lk4S?c%F3d*u1?aPUL2f7uxn*6%mU>tDO-SegZ)OO z3vlZXj*_OK!!7LKkQaSYu@P?N9H><3pB?g@#yd|`$`x5XmxaS0s^lPMArENXFa#2k zlEi2sd@cRuT@aWB%o+Y?tQ8eU4)(9rfUfVx`CpkLJY~hTFr1EvBlE;Dp3B_a^0AS; zq+D;eg&n?c z5PySI0q1b4-#|(>K6)b3Cyfpg8$xkfNs?!-HBzngU|%*E$KLP;kMObn-*^j*Qlcyh`V3PD3MPIAH9J{^; zZPbF>h~Iua z5#+gX-PxkV+0_2IL^u-WNqUJk-b#@$2S?!LI|YO|acJz5L@J&+~&#};+Y!hCV{=&*Cw-GlJU z4ze>OctZqWDJ+|0wqi2@5Wu}pw>zq(PB#%mkRFO`PIi^=a-?OTwyY#!KdLjCL<4eZaQnwva5HSP5=;%Ab7)dni*8mFaIo_ zXFVS(zQ-?SCQSej9wjcegxSUO&P~~1zX7({Mj0mZLHr7;U)*)gmriq<&FGx@zZ3HJ z)!<@onXLWS=k?8_Oo*#8VEAt_a>~>qTs& z>Ru*e(#}=(7^a5^1whTuc9-Cp%~ET+Akv4)Dg{;=lJgKBC6^NYZb`}vKW(%UK$s!; zQ#}RT)}HvIp9IrRi50)Y8a;s`TpB;gQF98)pTi@gt*^jkP4t-(_L~C`gEunW$Zr&N zlqPqD7x6m+J>3n2H|OiKDIL`NTllPRy`eH9j3%79cx@nVG}K5{jMzm!j`1%=>$*V6 z!vD5U@ahrnYi@T3N!prDA*U-o$ED#1DYdbx;>n0pe-La6!Z&96!Bzpgg$8%@Lxj)v zVpeTCSgn3oqVBl`o~1oqac}%)-*e zENuMi?Wdf%VX^qY*U;ahlRN^x=EiMywOHyU8f=@WKcSh^A3;O2K!tkrmoq#PX+zm#!$i0AEB4nvu)q8CMwmE8mWt?Ao&F= z+n!k-p@lRE04Mg6Dy=GMMq?}B5aNSu5b|aD2(%gmq!Z;{#|ANUMYaCqwi`{M{KxUy zAn0vUFT+*i-c!>61=U3y(R{NGGd$n!G>WxCo|I`1(3h)e1-Zs z1npVM)V~zt9RxoY0CNur^ z+zUdPFUaiKG$vXxM*j;)U!$LXy=IfI%T6{8t8rCU_0dau&}xbVP*b>HXto&oVs#Cs zOTtC#)2=)PYr>T}>i9*^@?W3UL6SI@FDgl(%^Y*8VqwB?Z<&!Ytg|{+R`O`O;sf#_TbJ^^t=1Umgt>ghI1*$3-!`#u9?28*+Rpk%vrV`v((>oGYX|!l(vw{3tAx@ z2fr%JSfRjACiBRp6FhpTIn8DM=XL*|UbeOs{^>A^@fDcJ<$ERALij>de_ZdT<`|qz zB^O$->Wf%@tez?g724D?csjVnAJqq@lq%kkV15ZZZ&@^{e}8N0WHS6GSwqc-@ZnBN z`q}8}#GY)<93NDilTxk>vUv%0Nq_pD0E`;cvXr2=WmSUVPRSor`ZtCrYC7E`)sG5V ziQ$#pG>mMA47{yda21$+=N_X`ZQex=oE0tfusY4_`!f0fJ+FRoO=u-#5Qoe8yNq); zAh64P=JxH}G~`xyO-e-EMs{}r7=wFg4$^MVnx+PfaJuV3u`l z*^M14+MNV>CL`04?s1}R78e3@`A9Nd16p)=+KaHt%tYsV59}|S8Fn9uHoF;SQr{v> z#dVH#)$a_%bzUh361r9cKg`e<#g<6x61erW|1vA}L;!$u!@n}W$T=*@_|bqZ1)-Zm$&`pjvk{NZxm)hQ3&d*i6K0E#{d-qXZfX#Pk-d(*G}&pl*DDK-T=0ucI@HWD7J zx+bA^b~jKYY$@j1@fSx`zm4(!pRXWCG@gSix;VnQ9=uI1&zZsahH*VyizEtc0JVo5 z$q3o9Im|kv(dpc`%KN6A#hFi$Du*`U6=-ihp?5P?Pm0Tv$oAO`#m6?1*2qu%sjwIE zn}<(UbxKq24-5nB%s!-(Vu2dex1u7-92+-gdC?QKYZ-q863Hwb<8}?(A66(+nOJz! zU1;@It&JA*_TCg;1D_Y!rGTQ9Mx57WHhZZXy_1HE6kJvdKQ=#lVF^cN(Sls((rwc7 zy&8Rz(bV-Un_iBks5vLIZb@%Nzs{g>`GNZG!zJcyQ_SJ&Bo_G?jMz(00KeZvUBEvJ z#hc5GENg_w)c zLAr|Mro7Wys#2I?g5vH>wgFy4JPlOxtaL^D`%KbJ)y3oQJ&16u&T}<4F2YlbLnqJP zi4N$d8+DdD4oP?%mlU`RvoPDp0(?#e2H^Oj&GsRqX1JyWTbgR#)v(Gqr*l>wH! z19=Y?M7LdqpJ{r&#Rl1Efv}rYWn&fSBd%1C<{JN^k@@ zRsUBdcY&`elc#+f&k}FJ|0@)oFM_2nHC2nZ**>FrAT<3Y$XgEYzW+S`Lheql^J&ct z?T68f-{n;zgK1|I$P0-+o%KM#J~SD{#|LOH6_RB{UD@fU<7Xk)fRDaz8+PSha>@K$ ztGiP4-=oKAAa6k=H_DYEfUfDQJrjA&%X+RyAT3!Kut}o*CswkL1ho1c4DMK1ez)^P zf+-eOo>3aE-+Z0ce`x43f%jzti-miWo%4W!EV5sN{Ea41K0Z!;U&13B{GB*P@bV;# z3xF5iA*Us$ire-fr;w^sMCFniYc;Rw>l8U7j~zmSVh&LtL^thJ>+4y~&MHP62cFPH zEEuAJJ$sR`F6AB7=_h-0*QJ`J9<{c*Vm8OTAABZs>AN4)TRNuQNSQ2(^BS-I<|(^z zu3q~5uNgvD4Xf%~Su+Uc62zaMm`D6J6VHUnm_OpXDyq_yp0E}7;o=2sIW7TKuaxk? zYw5ww(yFwpO6vGvSqdc=h$A#NzJBW@)!@ms|hwIPvo%F)8Hc1e5i9~nw28bt^}~YqdwpmexNI3ab10T>Dp=u z6nMe9&?_!5p+^=eFpMb)ADoLA?c7M!k4xDT-k-%m(@t`HI80C?QC>asqoSC}$S@bn z`0N(HbJpabf41;40+(!`ws<2B3x&uRREporgC1j@bW^r*A+V=p1d(LXuP{HHWyq5{ zx9wj))Wh6+1!i+(@V%*XtD=$<&$4|w`S}ml=f&^JHvwGQj)wnBF~**a$480JRnfvg zX?3CNv$Tke72(?#jakzD71g7|EhCZpvQEhzr~UgYbhwcD zmVQ4rI#OPv-JO$;AU?0W_ZRwJD#?k+I)Ux!Z9#pTjiI?dZWOTAPU1o*O}md zJMNg_oO1Wefc+A^l2#J#4He+;Pg|q?)3>p5|5}&kvYp20+JkD6-wgvr{VV_Mh}dRd zF$umD^T_g8W}nnNL}bLC3}JqIR(G8mL1(%Sf4#2GC*VV1&-?>A;;R2KT*$B(pi`p0Z?sdk`g>L1n;QQl*VOK^ z=)Wi!6IH;%l1g`KEBF6;ly?+2PnsBkR^z`s&6G)oz4sH#D)&_hU|<%0TC{8&zI#Lw zggNz3X5JR=$RhN&EdeWByZvz{*Ll8ihCh#;k%1DQUf8_eIpwc-c;}o_N9_VrW&MJF zD%Tvbv-_as@5MARly}EIu)yI0R;$QH_R(=>?agYljNaimrA2L4TU4Yib?+*CS8a`B z+ytj?%t5yHnRr%?2@8^cmV%+-mM*5P{)5`fxL_gRAm1rn7Y|i!bCbTbn`sgDWyoGj z`N&gTny+w}|FeF*2{TzM#;*HO(ae#RS%r19*lg|5TDXm_+M z2biUExF`6Ul-2tlt`{>}bvcnC#U9=bzxHGe&DfjUFs|tx`~vHo|Fo-r!G*rm?)@Iv zc}P-(aR6@s6-dYr4TZblE> zeJs{tAEN6d!n|mecWSG2l6M2I_I&k_`-ft5nFS8m%Pz~4c2C#ew{Sh76?nOT4tO*? z@i12fwM@DxP~?$NSjGIr9W!ULoP0g@r*vo;DMV~sG*|q>FA{d#^F)3)fcL)u89?U0 zMLstzyry6=vtNtiI@&s~qwhCHEc=|GNu#zt+r(1f78-`?Ve>1tE(Sn~4i0k4Ck!|b ziBsSuAh7E!m!LU9sXiHbb&XWM^{T>_5es~@W~%`1XLy;&g`&GzRE0mY`l+a-{mwr0 zW?SGLr8tShId!>3gwc2qJZE-K80i_B7}^9Qr|9Jye%ct^7$5yiCkbfSX8Ei4ixN$2 zk-q)A5c4JI2excxr{PQmnz3wYX?~;a5tUo{bdK~3oxj(D-ucnP95+RC zsSC@IZ!7}IKiN}I+_zIx-_kLdPAsL@?U~Jja>h+TH4W~lgJ))9l}rz+Ys)^xenp;? zd2%Va>_gq5!fejV(n|>Mf%?&rEX*G_(^zf_P;v{27JaYlE;mTM&bulZ1`O0)CF4;OSkgzUArQF7NQLhrYP;E9QoLGm)_v0t_?kFKy>RVz zag`Pvu2F3T&+R4%#F@Qdeo?O}(Yve6z_-c(8aMb3(oSJlwx8>3F%d`4%B@8M`HXgd z|Ddx9$ajlx2wvJ8f475TGg$SF9PT?hjAJWoPZJ2~N#lNX$(?KsCs+G)=EA1Olqwmra@8rqkP&aO5daPjxgEUSkfh+s22wmyc3mh-?9%p(@TF9wnd$+Awxan<*3*}Mo z+!7<}rZCBuD=dfH0LZ(sFOz6+5{3O4#V7H>#my11Q3Tgrcgq6QX%v9XoE5g7=W9WR zW%g+>+JDYK`m6#7?W!7o2XNJ7_#!&Fh>xR+(hek|IO{2nDTZh?sgH7E4@uf|f?qew zFc!SG4j0JxxC-kA)lW){jrvbWWRsY#pPFQH_*fr>r~Ps?urgj0o!zi8fC3a>$lKNg z9^+Ngb@IqY&!a&dqj|pHa13YT^&-!2=BC=2t4uxpx{J0}F^mAILLO*~XF_NJnj=KY zr%s07|MW)A-_F5Q z23rv?hTbb4r8sv&F^Z2}<+*jojlrJjoSW&5epdoWzV)~pQOOW?Y9>h`qWOP+f;aT* zh_*sjAEcN$sI~v=3_4Q_~5jwU?JIAuy_s#8(WL$JygI_M}`{n^T>}{0-q&pp59~6;t(2 zQN{NGsD%pq%|8@l8(C8WM5|#+)mvCeX4K(jE;R2TGm4T_rA+pI!Dd%qLREJ9opOnA8Z}l)H3w#B75rx?tYh1t#<^u2n?hN}7)GKl zcgKAZQ#{*5t#}nD#R~S8!ZKoWO3oRhXeN~<&3ppEzO3H9!=T$Fxh_!)N{XMYsXqT) zeRBmnq%vJK2P<-eX?`Wyla`j%d)wpL?xZ3&xZZw$(!#M|Bik)8fB3y+yq34nEvzg! z8MJ>AYY-$CMMW^ABJau0Ar7+GLe50s_{e}j5sQP*jUJ3|jq571w zKzCttun1MG0BoZCfjtrwDtfh?uF#F2NXn=2+gT~#QaB=DeJf6RzeEixr?ccZVU2N{y3Qflv8Y@B(%hiE!Q(dHE1e9ri+Myir!kq5qx zcqrj$2_@ho{dTilTgq;Oz|W@#Fe`V8A1FyxO6d4u1*0%iR1o{D9J33Ke4IzB@o!GL zr8b8AE%^wNXWWa92MBmhoaN48Cw&VK$BYOYklrJdR|HVI2 zkyW^gbO<=|sC6bm;4!0IYp>xWG=>`WkE zcCu-VNyd>mC46MdaF{Nml1Z283X$^@jy8w7nh~^kY74EtE!;U$#;W)PZGc+XuJwq8 z&*Hk0nlCe^VDb0=($9}bk+2CZ&pT_L%Gpv~#Ts_x-itR2jG?h19*C)6;H{Mjbmo{z z3gt=cB*f)R9fI=I!FQwA(m+IqQmLD;6I4oN*)3cBBRgy*LVxDL2teaT}qR6F4Wx(xY*}^Ym zxA{s^gZmi^onh`8Qz&nKR)Qx!wwjJkwQcUseUA+`H9CE3-E`S%4Cg7}+T|#6A$`o! z+jqLUYMi)P9uaxb^9|xIQibZH>jiq{@0zgPC{9jhEPAN{gXJZ|5V|5_)*B>6OdArN zv<>(@G1`XOGJjVtk61&q!?*tZdp-6TkLDe82$r#m?}HWuv^Wbj_P_WzN2!<5`8Q{K z)`MOyT(H-Pq54lo3o`21swLe5Uo4`3jf9);P;7eFKyV1CODH)@7_cn1xqhXNsz&(F zA`RkS;2tPSw(EtVHaBN*KT#E?nIKNsM!K#V&+FXxX|tP@XZyX@FI=0ivb?yf_K&m{ zS#iuMAn#^5SF{YI)}@TgGV)BEwre?o-QBPyVawVUrM=b(P*<~ zjcE`O8LAn4(o5G$HDamv!7m2$?ae;%y-g%d)s+xk*cts+`voD~el0Bu#q)e?Wl+ND zCXWHpXj`iafP??38VB2v(O3l%%CWA)FFbcUyx_(tslR0rq=yeeo6>+@-jjnN0#RY9 zT@FShv9hjJKP^I^Wq}n6&j-#u$-C1#;=Z3QiwdDub<&BAo@ZT(_f(kNVyR>?2a( z<#9EupWth734XYs7h-mz-VyMNw?wb2)o>Q+liy*yR8F0no7FSe6lIT>S_)hI2(GeH zrXDVN^}K`uth%vhSoGpTK#%{)OJfh7^|{#Iqv}Y_jc~E;thQ_Pbl>y`Oz?Sk0!#zg zocGQ*gdyu7z;X!vIzV~O<2J{i_4f6QjSBk=!(d&CK$_MU26zZ?FR|noR%1#9#!tTB*)TBF-HBlk4%2g5yM>WLxr} z&`=G~8%7~9AzqeeupkMRUMo^K^fd0>@%gJ>oB*TfeX3S@5tUD%tQY?eH0N5j1|ILk zDq1)%5m530VLG2?>kQB4Vw=s*JDLd0{M%5J7ajC| z6yv3U1KD>6%(2Ug4-EyUH^u$G=m=w@b+t5m?S42xM232k8Re2c68C-2gjyVnCs^KY_}(+<_9hZ+r&AJ zD92pg<>)8CUYORI${Jj_f52(v zG25`2BT1QV(+D9b=ALQ8@16L97J9puGQBA=PQB}ZS3*skn9t|o9%11FYO5{4w8AiR zo;G%3j@t?cgalISxgShHl#Ca&)zV$V>s7!ij2$IMNYX%t0=$bSh$KF!94Ol1d?arC zUTf-gQ4ZUIFQcDTQ~S*-;E0V405IkW)=KU8Ag8PV)&)w1SXmsfqVgj>IY4{<=yO*u z-PoeJ5K$fcIUg5La1sZs_Nanx4Pun`VMj#s&2`JEeWfX;`d~^_1f{^vOK3 z4n*ov$H%TMc8L?)$i@Xf&*{sAEH!y`MaKZR-Rhg8u{_LQkj#8E%e%QTCE}-4YVPYHj=n2Lm;%{ z2;|HG1}en;NrYmTcxvd_DC$K@Ps}yRc3l@N7kk9^il7WNR`)4RSBLGH((%)J^UYT* zPQ;1u4IX_#f;@{+6n1V3RnRizG{7eF(Q}ky1I#e_G2G+Tbz12X$O&=dfrjgln=eK3 zN_C4265q^@XpP$HmG2ciwL*lIm|oWe{?h|pm?-IOJY>Oq4>qe0f4F=N!B&j_Q1!d$ zoszhVzy#)0@H|h8na8Sa!?%mxAo5y1J1qz-9y6(&geL&V9g&j`4#Gv<9JYyLoNU{^ zCYf{Axoyu{R6)c)a}h&B0RSPoCghbBG!}f&He<>b>`pj$2(?5n5@8v{kI~Ov`D%ve z0nf?(7cv|90rTM~!yNAt&#sM0eI+KcX~A3kA^}YYMeZ&9)Q1CBU-~pmfo0XN%x)-` z;Pdm9q)lm{1v)-x-$+ClfJkD@0*L1+mxaD%hN06(4Ma)F=h(e9q#lJ}fumjeY9g2O z!$p_Z@?2mkIao;cp+}J=T$?-KQQzmY_rnqyCWq=Bw4xMO>Xf^C}XW+c!1D4Y=tO4dDQIju3RCZ2Zl~)ATL}P@~?~mTH0~ z+;g!72}%FFi)i{KFkxkAdZkRkJ0gCeZ>%BaKwC*7HmT}F%t9=$D{I^9->l!wK!`Vn z`bN_g4p0s5jK`Ok5UJ!U>aEE$&Mj>7eH&43!QDa8^ggU?^qCma8u*#6s7H*+-d2;4b4`* zP_8(0G?yuS=he2U}P{6Qoj)6>HnN8OErn;E`M!KRFbEAN-z#cuB_1V0WJgr;wBB0yvV zlse&wVQXqsrTcVjQ?@`PzZ$|}xz01uxw;GpQfzbea%4vKW!6$p&Lp+H+B=|WZcN8H3ih==SbGpO)JLhoA1TbajtsP+j>FXs z{)6>iGq9}funVX@romP#`8@^g7VFlzQ7n@0+HtM{=5VwY+lkF%; z_(qmXe^|aAI4I=s)r0tI4=;_h3vy??jNM2UX@9BD?6k>SLX?XPz{wI)lz&~L-}HZ; zcrh1+a#6omHccnSdf~9M@0Z{{uWK{B0d&R$8t+h7_fa-SN?grZK}jry@1yh z^Y)%Z`7o$0Dmn&~P+td@)VAIa7t=g}%*D_Z_ftBWhz5S_H_Z{pF>#Q39D1f&G&Boba%z~ubgj%VJnFHcHlWgNdR$_2}rl8x9b$aD8MJEQr$UwLN zIC^_qQ>UbY+pqQBUGlY8^m3Ej&+DYi-ro&KNiu2W`th7Z9DGQTPx-OOM;WV-VOX?Y zAjQ&)pI5vR^pfuSEXCP{|D4bmQ{d{Dd~bxkw;O|(3n@QzliJ=r4(kekD|{N zvh=T3-uxQB1}HzP7ZX65{5D+Kb|>t(6n%`ysa@;w>Ji+FF4q*X4hz)ALC=DoNme{| z5{lel&Tm_+Yu=7#P{rSv5cu+Ct(2&N$h>^Tn8cgPRJK;d07`|FK?eBpxlJfK%7w@C zj(=qEefuf0B0I3B+giIIAwUlWL|Bi;Wnj;0F+vWh*kU{7l9xjZ{{)^qnxg{e%I*=l zvyjGK$dFxOm_|clHp^d->@1&u!dsW)R zR=(Uin8iXGM8s~$wvJVsp-OB<$t?dqbXuID(zkkIZ;{!Oo(L75;T$-|Xs5rA!S-tT zy=Ve#UTe}VNTHHor_*C)62^}mNn5*30cc)ShJL)m)q!+s%9)JNL7V3~#R?K7psLNj zQ@iQ9!Eno8zmN!Sx1lw?1a0j9wom@1Vu4;f559(OrgY%SV^dc#>E;aa`dM-SL1ZPp+PH??3CT588d}OC7S)(ejvtX4-LWbc<&8iA_W-q_DJ6E(9&>Eb z(aKrmU)~%#z@Q6sbJfUIV8iopw-++8zQq)?v}O-cf?}<7rRK~Z0{LI#wtYOO?_yyh z1-8v|B<6p^rQF`1{mL3{8!`M~_EC#D-_#Y&y)-sO5Pm$L7kD&)f*wn@Si@kIz^_lr zm9F79Knq~ch3rYQ`%y?r5Ae}(T-+x6{o{zf>^HA27=x8P7vqaM6%fPgCJIFJyYM|O zn!Un!^oXsWlIJPgW|_AI$$F24vL@yj(c^p!hqM&2C`S8l#e|x3f{Ai*G$$dmQT_os>ez=FCuheB@-OFtIU;LmyAYFy<1dOu^ZR zAM{nSh}P4(n$zDz@Y7x3QIv*}>z@sDdk&;yFXrz zhGP(O?F?5X8Zs55XQ0pyK+KEjA>%dUYkUmJ=rHYqmGOV;_}_sAlxh|!zahTa&}YX- z*NUTYedn23m%ds=l}b%m8G}x(=uyOuK?J`ByN>#^^RM|F!D#6wH4}69q zNL$y;w?;&`h7DcIg|K;tU9Dd)i$n%I3u*Bj4zRnQ7>B70pEW+55vK3CPXZhLhh=fg zP75>V%qHa>9D&&U9I63h?W!vuXr-=OCvM#d3H)#aY4>R#R}^qpL8v0jUFvbr*ln{g zibuS=do7&yZ+3i@E=iJo7WIk!+oj8G{#i_r>O~N; zeqJl+!A4NBQa7gjc73M&n}Hx8US@J`wxA8nCJPad)QcEB#{in(0=|~}G0}1J7t88d za$V3`=>~YXF*Z7vR1pHzS=Z3TMELQ1>zTtr7i6t20e#V0>846qT*wyoZeTrpI;oFH zFBmHDmK&whpXF~V+c5Zp;u)hr&e%Zlj=wHjutkg@nLb(c zl%t;voZM2n>s9y;i?RO;oF>kDYfKayQlD?H@2Wlc$yQSDee?vo#A}y5ke?XBmg?ol zzB0BYiO%hX(=Hz~mZK&s?l>qTI~V_;hI+GJ1dV7J0w;n8Y89$;lI6LA{LflRl;A2H z0FOP~(Oo`4-G1 zr?Fq`I?2gFrder9sQh6EAWTF0rT&#ME)8uiAKt*n`9;M!f>Aa%q45R|(phd*IK!3r z=%y1F(T9Ckv^jH`qk&#Sr&;Tp5Irv?ynyeI;hCwEUiwLdZ|cCG(S>6&>EW1W05#g4 zlRDM#yXw0Z>8hH;C0v-vd`_F|QZ3`GJ%{2%`OKy&iu>Jx=8cchc7^Kg<#)=Jx;dQh zJV7oh@A>-D1zr9|A9AXbX|m?N)+{c|T93RDE&u@}S7NK4__hUNq5~5l975Zk^=Y{@ zV`0yOvOUtTZrv+&aaEiGP@EqRf*Imy?wi@L8`@1eo_WIt-Ahi{j(Rx*6AIzpjy2cb8Xufo?Z@1wGqN>a2k@UZSJSdNAVB@0i$A@>}W9?192-G#=yERN;?EMipc>Nv~sl?yiR z2b3}s7hJd)dY`QzLTN*hAyfZ;rYw6i&S@cCLkGg_dq4_vGS*mHpMKU3EE}$=12#WM z^UEw@nVetef=2!S;VJ}H(UA~z(L(WCD5B?vtZdl&@#EUJgnu0u!agR^{t{tcXpr3y zLMRd=CIWQ+G)wEXz*2Xox0+}gM$LBRH-9`5=X=v_YsEH%YaWGj*)sPl#X((Nq| znP4vCl1T!RNUM)kTAgYs#yEDejbwYcDxxkLXOW)#_dVl!Hc=`uh}5~`Zs|ZU?iv!d zG&F^w)k{YypKYz@9Uhy0*rX{H_5^sc!J0uqw6Q%%e>#!$3~+fyfXIaw;sV+oqzq1C z$%6F4{kj#7=rh_Sr8r1LkA!Lvj-HoNIJMOoXGBy~wm@Sx({UvxQ6G+xeEbo~61f^-olC;V}+4XgRMx;}^PDf6F7 zuHvR%O#irYYo?JRc6LxTEtdMl$Kg#RpQ$wcIn`&UFx%nSQH&OepEz}u?2TohkzbSu zkwsmHA!A!s&aTcs@9T87b$Bt12ezrO>S!wJ9U87V^szU@zKhXyO4PRx2zL+#-&c%* zvk+ml=f=xk5fIY)94sV!R#Bcdp3R&GwAh2jBLTyLPoXc%f5j_0**?GDQ!GGvU`=jj z`>11Bhbi2I$NQjiG+-iuL_7~E=JDIIE4U1StCwn5zgsREKf}`>F_51|gn-iGwFtg~ zFf~OH0Z+P})H$G-L@%ejH?{Mr#U;E zj`FpUW;puxqJS-Jc6*r8q&W|OzAIK-_n;|`)~mIePF+mli9g}usFNJC4-tY$k^ zfxV;E#rQOi7s((WDf2oRd7FwzoI01WHO(&e1BcWq3o&E{Nf4&gqf{sHAm`kBG-_GH zD#`Fdz90&hDN?nn(NM@Ve`11`{l9q$r=ybhb7l#Dp!I*ala&0hi&_6Q{2kO{Cl>iR zs}2ezCmi2Zm53XRaHmn!U`J^o?No3Z2%SfCx9O32Vq5?!WHbZxCbNcd?M`Ke)DV}w zu%r~bm|#QB9e$PFk$S@knVI1PwE@6rY_3>JOJ9`UH`u)3;MF_?COS|eCJyhq^}DLE zJxLTwkZa}O@`pwxOt!Qb>45`bh*uZpn2;Ky0H5^of-&x_Hy>yZv)zW}kaNPj_lc5HV=d~|OjOTQ zFRCCfL0ytQNExWCEt8Gh=idLjV_kFfSvxr(ozf`v=aXf-#L2BQ_+A0V33R)M5q%=l zOUQHsz*A+YEgW{0-dcB8Qq0e182I0z(}YiKx*Y z=PY}D@!vj;ps_D_J#`J8ZAdYO^MIUb(EM7EUh$-GYs(j5vkT;GxcH-Rf4By^CCF^< z{)pIrMilm==r3*fz8$9AJVts>l-V|5K+GQNR&A9co{bxJ!$?bebaQ8hcpzXGynKPb zCH!`ICeqZOD|I%dQtno9|1}>PrlT-L4Gi++H$lf`zh1^ z7V#6F5HvhR35;^CNZC4rRRz#Q2P&zPHI&=+Yu1fZq}^E6di$3KFK82f_S>08E704M z;i+1`8oO-$Nb>+ot1R^?e&0HY&HXmOIjd{|Jujo4u?I>lO`iy~Ok+IC#EYSh{>FiM zsQE1#_MZxZ$*z;>Hf(}l_SFps{S^pmSAc2D1dpOTF|-y+2PC>){6_x}Oqr5gl+lBs zDe~k*r9o~7_+#musjff#w{*Ae13zPLPAQdZFc+z?*PntX4z_O#n$z+KgvYRW48gB5 zRiVUK>(ZL!T}O>_)1g~{J5&qUWZeqz$g%vENk#^7X&hWDCzL;{PcQnnkbPEmXu#l? z%>Z5YZ2>WRkZUBL%i%T6Bx78(83G9ACi)#{OqynT3Za1kw0TQwGN6lH>1DS?1tBPD z>9a8X=yjm47(a8nPr&RCK)yaar8At#;^ZWh$0!hxE* zH>Lw3Y7zCqogX<$=W(!+kDZ4F`uKau$B%IU2uPP`2$wOt#)69$tLhRr?R3E>an;qm z;B?@8kiij8nofY%A0feW^Vdh@4no$>qqd^zaQ=Q_KLzA!gz#M;j8qWO$ebr>pCq5* z!bH>2ZMd>PQYDP{nm9Iu&7ddxYFR5NB73UM(h82Z<-b^BYJY|JQqhP2O}@9i{d$)b zLU&A66(Jgi5J552CHG#KP~Xwu+5%nXa4stv<79`Lt*!g#@%DfSfa=@Ah5f1h%Fhob z`E!U<8H~T|h5jXLO+FzwPvCq@tA~b(g2*kpJUUiZ!xt2~{KX2%Ol8cddXY=a^oCTN z^v6RyjyQ5&v8j1i^g#Mljz!DvcC1^bKo; zNX=!Zm2WoeJ7*mJqr}2h?YLnve*$beNe=VfU{_9Gm4KDDjqqC~IpcOOH1PpJ~3mZ-R z=C=VVvO-pg^ExI|nI>WFAv1#` zTP;tn(E#5}&&}<#sml#%eFG9Igy?U!|M4*?L$ptM@tn@oH-?`MRgk~B%3UC;_`BJ8oY2G#QprY*aC-#_TVELz5y<*)Er;_Jy0?wA?oP?6@>Jp-mt zqIkep6d-ddaWI?ccX{317jbP-8otu@R^__>LdDcl7Y(@IRIr)gaK(3Lrms%PRQ+^Y!C1 z-5N-_z+3gW`T6S&5KI-(5{_V#x&_)63=2eIDH!ewSq!Pv{8`8?nhn#KCi)}qC~L;? z9mXX;h)2SW4xdt*S$Ab`bo-HCNGsYk&zhocZnxxme@PHZZ6zL%?9n#F`KL=Ynh0E? zl-!}w;sz$wHH7|>4m5m#RECjGxr(|H}Df7p?-q1!;8`eq+2RhC#;D;{+wgQA9 zi#p_jsm|1Hh8;+#sErgmJfdCTTXE?cE$_!mVf~RkH2lp*W=}8bMu~`Xl!Iy;^mEva z`EOTFi2bUjEvffwcx>D6H;@Z1IZOxt>sy)fHE)?JZT;8%yVnrk<7`+`H^X4E!@P&u z26?y=_{x006J!tHj~HRXDOl-djrgN+J?jF&0nD|uwj-{-b$#D~sAt_x_~Hg1g!dZd zY@1S))Xw~sgg~0QL1*B}l6dj62z!+=)@Zr)Q^KruvKY%4_)T)7yD|na!MBIZEX$GR z7iLj70wo!6x3NM@ojEhk`WS9IZaJ%4HC3jpQ+hfp$D?h+3|Uw`U_&0G5+h-Q&BbVe zIZrxO#c;nGtr54{Q#li>Vvu#W>m*RFf-_*{J=(3|B?`!QoonORS2Eu89*t**qhoKH zERt1oxcP&z!{B1^Ix?!l3$Hb42YEDkh~o#motu0WX4G08KjBAEt?&a@leAC2TU(1X zqEY9NH0Iao+x+|&N<1tlz4u(XP;vd$5{KU7mNKXS_{8(?P_H)oz1dowEN!X6xp>}b z|7w`2!+X!j!+MC7Ss38(i3k)mP1ceaeApDCPT;M{o#a0n+Upt8E%))K$n2YVD-Yi@ z>G0)Yx-Gv|iM<&T+QEjb6F#*#tyU+CH=#b~z1z@DV@gOY(6G4K?MNts=_G)ts?|_* zrr&!vKRvZ{Yb6c{e($mFvK44;oL&hG?sjP6B4$7c-;;!%S>*bCAd?Ee+}_S~mn(}$ za4!n!Fr%xNL!mUP{v;k4INm|%_e2$>f+}^z%C)~blHy?N*MIPpO&BPP8=w^2*M=N= zoT9=5exh(Axnh*f+h>#nsT6g=EzuDA?rikb$YsCYbG^E|T8T86Ib>a?y*Ho00hf-r zMldzy|AEu3efvhBd$?Hjmz{#0>3(TkEn0B-Xr3Q8iG}s`v852V<)=lnHD@!n8O67M z@5Fr`_+=p&Vg5w#Y5}U^ZOF*<^%_LtTb@pfIJ9sy2T68gvkgU`n25s@^ZEAqp3(n+ zpq!^ACZ8qdsE{dZ96c$4-mj|E1(euj^lYd}H`?^?z<-SVGx+a*0vZw7I+R@(+Pl?eu4{oU8dCTmG#d8f zl&B2R4Re2=E2o7!9Diu=`iP}5a^kXiBSTFajOX#NJX%bm)iI8;w}^s5NW{8&UNRfh zKl(Kf!#0cd(VbVN{KLdrp1C)s3k{xxgYgl;ZLH3^#C?AQ-7-mZFO@wzZ*v!a>MmeC zBak52>HAhSK-50jvfY>r53qjukTTIAVu}XLS9}6I;t1;R^W<+r;+2!C0bu-zAK;Z# zG-uw)rD6mrl-k%xF63YZD8;7vI-`?NFp?nv1=X}3kM1=T!mqbXIv0o*JFUDAVku2m z%?fnLJvcK33)d$nTEmHD9voNYH6-LR&^FI#L6;{#b+1`F20-0I%}X3NHAWUjHxXpx zmD5j_!l%gR)0elM^7BIPcDY@S>EdW$0cjvZZ6%?DFk?@U;{fq;NjMY_HY{Xoa8_M~|0Y$?LqSZYQD` zbW4z_4DJ1ku(uAV{wggl^!tcmg%K4?^qCsN@#rYTYn~^CIwuk?X$f?pP#(4j^f5rR z0BXMR%?&m0adRM7Ci&*g^OH{z@~5UgBoZ`IhNLvWEP%b-ngS zZcbjAOOuh2Owt&GpXrn zRcSXp<7lY^j>7fI!yNpv5b(-RU1Ym18P*?C+qWOukc6gmqTG{=E1(lJtMck}%?|2% z62bRfOnA#?_C9bdq>&RqF#g$(3Yk>yY-|0>$+^pEBePdzZX6Cw6IKn6i+N~~$n|3O z>{+QtNv0X@SH=ZuycVrG5rkQK{6&7V$XzH6ZeE%V8ke<9-Cc98mvVppLtTGgM5g^c z_AD>{7?Ib6tw=jAvC3zLZ4fICIxaaa8_Bu2%+KZn0U^$8 zI+7)Pw^4j{ESF6+0tL`;7{?xlBU(~Dq@fI!H-E`9NA`Am1$=dlY64S6zFnw$s{yMq z=u%`UPkh{n$oP{Kzd8Jf6NKpx?vLqKv$uC&cV`RnnR<44>-QuD$x>m5+;8XdHw(e+ zu{o7MkDWeDiQ6z(tFCLTT_KT#9U1sr)-!&J#AJ6FXk#M$J9Wi4HZzExGVDQ2;q8_m z`_kEme-3nnM{n9v>z%Fu(56qu9clLH=JTARvnupH5!*~c`1UVyLf&+l+~cpDGfs18D)(tRMm`NtwlycJZHpXoPa-}m-S;&u(9T#NJds)pQJHm( z(m4x5bq&OM?Ev7Uts9?)f_&ZZ?9g-!p%+n`EA;sEG#+UY7TW(!)HiUyzLYZ6p%q{Cfd}4!VmyS4+tb{G*mRM%ve-AAxs04!*)xA**F%pPE&+zBE>+iAk=SbNG0l0;IcG6QOuf5AgY;J$o`&6p;7?AH(i9vx z$EzIfZXPIUsQ!{N*4GWO48Xal$=l7NQgPcIsD=DU*snpJtBf3kD<1}Fb7;9(7beWW zr$U_g)U7+hxJ-6Py96xK2h(z(j>(~qQzz=hKR}`q#wsj?BFNh#>Dsp+l6kjlF1xLe zc&30{2E^V~sP1gw`)F2c0vE=H`X59b6~h%dYILkB9oNK@E@`$pUv{kFvR`f}?HTKj7e{3r>FQGO8cW$|Y4D5^W1OpLOhJvP(4x9;a)>@=i_H z^BG^SoBk;oaQ#;XIn6>2N%Uu>FP88$4^Q97@TWo)Veqs;ln1^KA}DF&MeMgwx!A%( zF{RdRM>*4+*{?7Pl=%I={#>K69VK zwb3zU|BRiKTn+7F$PF?X6f;gn)N{GN*1JubPT9-Xa{FMu1heu-2T{HtWWZuOQdN3O zuJJ-z3{;#qPLX+da*U(K4D13=ERJvgpYku$O+R8?mS1ox`_`CR6P030;~e#3f=1)|MkU3Ir__;F=2}%p zgC8dQtisD01nS&&(K4H&k<;?Aftl?7JS-l}ax#fJos4E_F)o|EndeeE0gZJeDY7!s zy(li7v817m7m{4gbKccq3!2zu>J!B6(>$)gemTL86$Mn0Diq70|$rTX9M6q2p!RoiY| z)txoA&L~Mx(Z? z%tPdAKA+>YE32mmfwW6F=D({6E#$)WP%JQnR-e5Ry7J((O?ydZ27P$65ip!ajOWN9 z^)5IYT$4shP~qLlX7+x%G2m$(-d1XupC}Y@!12555Re-z5ZkgBpYa&*i^|`#^wv2wB3>3@@($J0Podp6`5vKuy6!e)(2+Ez-6f8wVqPQqT;vJ@<={ zk5fZ9(3HAw(4dm?sHb-q;rjEl@*-(3_SYDHEvP!~OO%Z7iDWm;w?N4o=@}6l&!^3# zVi^XLV=kM0h1q9p>gp1k3|M^w_g`ubPd8r1Sh%=AqKI6M`jp(jpZ5__tu=~P-r&j! zkh1zF>}uq73&misYwEIHk`d z4B8n_7OFtxt{(S8<8&D0l&L*kuKe@w$zb&X;b^a)!}{}R-NqlqoomDoEw(2R`5I^q zS#RI5KZGB}!;UB9wildjG`6BiaD@8bBF(_nM_b^-c~lvuhJy#W$&+fIbLQJGvdg2P z(wI^vcbcZ8cglIeJY-><>i!wq#X}{G>wW*%ync~Yz+d3>QZRH?_KB?(1G*e{+>-wR z+>deDa{V{CL7z`fDmGW9*f{_=hr@CQf;J4!4FP{KfX?3WwN4d3lfWLHnW4V!oBT^# zRP(2pz?xb?R>O(Qh@N z!5=1+6d4Xbf3x-2F7udym|OZ{g0~y--N5)C>cVw+qj8O>;(b_hvy_s5A`-y8ld5ob zkw?5p>z#`eCtr^2l0pYJQSyrx?Drw>?JRzK*-O{ih1^_LHfqH)7@49!+yw~a$t$7743~8 z@p15m~OYT_Pf82Ii!i;pFbs94_B(l;oA^ojJ7(>Bb!nk#R5CA&@_y8 z&c@d2cHw9pwkG*OS~2gk1@X-BcIeRvBy|!Ch{tFx-#8gn*U%&iW}z{63d zzslP(nPaoViu*L3<;0?1TkE2~%$Q6fHF`7yyz6|ba<@KpC2zExAUpzAZyVC$~~Oim*_jcuyi`v!aFAuB5n z(S(*LS2zz9V=~(Yhb;cH+wJdO%fnEyE%CL(g(yr{7k1qz)Rujb zg%@9Hgde$T1dgk#PR=75jZ7%K5O*>&-p;ZZIH_2!i?WR5FwA5KTBJkRJVl+I*m)7} zgUFZeQBXB6BZSwt$-AXSt=b6ocK!Q5CsyobY%p!M1o%-GSE3sIWfpKT_9uXye$ITu zB)yS_!b;m~er6vw^kz2IKF|+B9W9{nBRJ)15PGD*L}+nq6k?rHL=17iHyTWHKS>K8 z@-2h7ZeEg>0#t^VS;^G_WX)nEVb>xS2C;Q5Jt!DR;+HMYMUpUJG@}T8nv$aKCrWlt zeg~?c$4F>w#{mJ59@9h1VZ1>7rKM2G6D@3M{Z;V-zs*wEf~L#aQey6YrS{iiwf__` zOCTL&dA8`Oyyl(7$6is{=|_As$&NPpusD_!(dLdyKxGk*8i_qcB1EZj@r%W%yYoi~ zyi&nIla412DcdpLD(r2&E&5_~_Lu;05QC)lki`zg`&_bJ^UGS}phExBtDMt(>P>T* zvF*(q#m9!9uTv>h-TvnOwvG0{y?B*z7nEhr@*1xZmBjNmHYUnj=9msMsdm%FQ(S5I zL2)~pZ=t15(+X^#SGY^xr_hjf(^uj+ZfF|0K&&qo^i|-_-6qx#TqwI4Eqcq%frO*zsiyYU{AY|JdhP~ZDUNX23@3xsGDn;Id7H4b2F z2nl@kYt0F;yfAsZ{3_dTG+i5hlXO97os*YG+(*V!SKQ~HYJt-qaeEj>dpO@wTET-& zmHfnAJ;q-O& z{eARBC3fw8rJ)33{EtAWU@*o?c0M9aOm7>GCFeuZmN!DlR26ZKX8sxIVR%Qm@~ChY zl0&!jybq^S{R*dtf~0jW8*?xcd#4u27|vx_cPJ}D3)iRDWv&!oz=aZXQ{;>R_k3qJ zFG=WKtA)s6-EBzC?1PK1{m2JCnaZgArO?d1w>{rftt+1FAu5jxoeXYq|zH)iLNzYD|R0-Ckv zw*}%{;Bs!r13VYR0E%dff7Abja(b{%60u)`pdu!<+q_sw-iH&wb}y8MY#Wdc3h z1`BUuBvMyrr+Xa`h&a=AP_3n{oPefs0}w?yEP-j&WBH? z^6+4ZgI2d+ompvy;FIG_{zkz(r@t**q0P!!h!Q>4UpeH`1hx^un7~s{&tBojuEl2k z7f_oRJ~gnwB~6)N_s+iLm+I$iVi}avZ3S<{cKb>xaZA4nX*UL6vWJH^A@vQlwV_`y z`RaVs%3UF{r3BhW%Q$vMpyMBO%?HpBH5RQWs6aRF#U7`MCiGKDFpf4}qxrZ`Z4%cU zF%yxM3o?E?9HGPV=8O=R=F~L}Vl}Ja0vts8Jc1lmP~s7{>k|Qzt(&|XBx@(i6E3;t ze{Xt59`isMfbBac;(Vl}CN)5>H=%19N4B3HwC*&Qbt(i|6-~u;lBg??8+`KOgaiFG zbkb|tJdIU!>W+Pk7~XEQ1q+5!3C3ek1dyS9;6woi1b7t^Bo%0a z7il^J6BP=IHee9sEu^>{3VkH#K{`{@DY}(hf3!@>$l{d#E~L_NUJ{y%0XI);kp?_~ z0u3Y=xB*mBGe7LEnO~gbi^9+?)=-=mw)4}_af9S#4s2`kec({muxvD{9R{J>4R(QR zd!ow8C3VW5;xTEHPf!-DQ;seR)q70Q0*P{6#n$nb!D5kn?*ZVvc2nTJv5rsWkr?80 zGogl?pbdB}-+B}^P$*G(U?*?-vs#_v5ixU34x?A?H*_6O_OGCW0*oCZ1H%>3W61gPq=Wl{>C}o)b}; z96cl5)sDiltaB#n>s+i3tgl>7N16AK5fVw=Iv9S?>X-aOsy6KvVC%~VLN zF3_W)W@^pEAAyE4wJ6j|{s&sEzp@0TZ6IvSLqF(VkFp*0+KQ_N1cJMU^O5<~iw*uq zYVtu;y2@}>qfr%Lel2Onac&Lgix}&}O4{3uausM>2_(kv8(N)A;# z1|Z&`%nUBlq-t|q&}NG*NJQL1(dd-=e3YBd!yYBnKDw`qi--N!E#QD!ji)r0rGw7J zWrJu?E|e{C>*L;&GKq1dxusDsm@VRAR|C_bm)g{^#o;+T=ubF|^}vFfxl9XKvs1D|OA5C7J|OlF=FNo?w738VzYd>(^y=fEnL z_b)z5FJw7EtD>vtp~4@WddxohF&;)q7Ut3K0h#HzkfZ7Z z%X*Iw=5g2HRaF`z_CIef@KHi)nT9iJe^h6B=qge!)am`W5NZj17MnuokWlckJ=rlR zUx7>l`iI0Da&w&J@ro`zTL1+;alV5hjO0}ymD`5tDV@B9d4BkiaVhundQeM+IW;&2 zT!h)EkR#VlEAbaaeI%mNJ^{LSH&qk;WO=5CVx8g5AH(74lMO979qA@ooFCIg$U05X zKAN2**^yu_d)E!_R=2()H=QmVK>oVFEk8HBjob2<<<0x^Q_(JG@oACOF>lNoG& zWp9W-zjiD#tlGcJ?l$IgA%oxezz9%)uiR5SSXde1TaOa+koW?kep$2$P}krYG=+jZ z<-&%~!2n#G@=HUnsBirsY~}lH8yJ#1Xgxc-GDHB|V&$k9FzfBU4ug*JeyrnqaOaxq zrWR#o!gsNhfnAZe@Fg42%fi2U#2i13E_|0t^V4;V-Gu0}kt*_qeo80p6)KPw&s0X18p6ucGecBfcQKPSU~?hl0?FiE{8qIGW3KT0s#K= zdtvEkM28u&RXE?y3E-X;zn;}(? z`SUKT^wSXo_?$#q#v7z407R|Tq9{b<8hq~+lB-)cosY3VKugm?jk#ZNsK?8PJD0`n zKAEgr^%Ou%lVi74tiz$!0_i~gDFrGW<3@`f`<8s(VS*_4y7*UOPOLg@l5sNT&;_v@ z!n%3wqD(Fos9wo4A&bl8bPO9gqSAIy!T5=G&y-tfGID_Mz3_cfoS=nGb^I^sHhs#8 zDlY(a&UY9dC;L~ck4<6X#s$=3H9XMqeKP83%d;NkAS_=N;EoL6rq|$AmczKq8%+^9`XP~2l z7iGfxV#$|#PZ*{;KJ%#{kG5U6@u{EC1h`!)7u-I@j&^OK^C7$0C~6=)Ll;(nCx)x@ z`9MTJ)84bev$huP;Bxonb%v%=gP_O_t7IB*3Dp;%TLe%er41v@O@HFJX=Oa12CD;a zJI-e3BTqH?t8_|k<4u@Jf{IJBX-i_E@(9kYP^T8S(M@YCmUEpW1ewqCo5IYQni8S_ zLKKYxsu`1r(YH40E$;{?dTU)ROj7vpvRKZ)=W%|V_59V9YS@$3k($Xlvy( zsIl{w0V7&jrer!LMMYQ711*%$=SS&oOCFC&xw;rZAE(w~fc&5xQ9pRwxr#`q=_0h_ z*ukoWZhY~7kBcFYv$wi;)-@=j;ZXu-;hxBvfDgz(mXoR2*`tV)_?UYS9It@K8_PWTJcA}dFCF})y+8a$ zzpnRAa(C@K&{oIgvh~6@xl*wT9Htr?Niq<1^0`Aqw@`dg6IAYUH>mk=r$~CsW03t4 zLJ#?AHdC~bpr*_n)2;_j_7nKR{XPEy92zd5OyN7kA>zCIqB-3L2AdbCmHBU($bM=P z6B8dDRjVyI)6QJ|Rn1B)g2Z!%cM0%Yin(dq17hTP!j7p^sb!e@qJs*6hMBu^wLIyY zxW{8}M8a!nQwBKj)kvdJOyRj)rf^VzZ1bq+LoQ1a1r6p^G?H=;5Rb!1a_t(}XjSM6 z{GYA70()NzZr&lu8S=jkUht2d<)P}FLip@0VqYs2k7ORk zi~x&1)yr*n3UIL6{yjqM8=>}o9vhOy&lMIW?M8u6_Y>bZ6$*0I0;oqoG$wNk0XQC7 zn>cagyTa$xrmmeMtw3n!uMg9C|HuCXeE0t5Qj*!HR?0s-(BB0-_F;IzlGUiQP4+4( zt5Sq+&6f47H3uWLhsb5>dAi7(#Mq>7@yK=Q;I|N3D8J=)N}7G&62@u>q0OHNc zdViyke3PWTvwLJ&AZ3FcdInBvh4R%NXW>ZgCt6LY=Wycr$FC~x)h4ZA(E9|)og`rp z9USJ_@iN#y6a)l@4=%y$!GLT;NSr;BOnv&1T~3cMaykkgLPGE#uGFh{szfVUZKSt{ z917o~Hu|eiH0b!x)pg)QRzb(<`1b`IF)4w~@jDA_e6&iSegDH&q9wJ3?>+Nh?-^V) z4aQ=_RROH>mb>sN3e!7sO?g4Ehp8ce<2ktI#W`axq&^jjoeiaoz%`8^3k)vQEdp=-2Wz#ik%niK1)i>pvQ2X958A35)jY$%(K4Psxp6r z4%*!(?ar9}zcpIAF*T|qh$jADq4Z$8Ti1RcWWBfQ3*<_Al2`%q_p<7=)5QN@r}>_K z-G0Z37nNqkrY)?0{@H#K3?2~?&Vb@c+<7g~wXM?S-=ljuPb=tzlo2;Akp9^!f^*a@ zD{e7O+~vTiRZU`BSqGKmr3LvXeu}3NS-$w;LfHJJ86EzKvv^9ps0c?$?#b{swxtZ*IWT+FP`6KQHC2kFDsnrU?M zU5c$j?gSs4AJC?C$A$z(EC{)Na* zK~DM=U@s%j=|!Ttf}S!Z-E;j}(<4ki+)A*fr~F%3?2Jo(H2Ua*2j0Pdd1HoI-?psE z>rMJ7b$8}PnoqNIoQfbeGo}4oD4v94|DsHMdMMck&amdD*}Qs27j^Ios#)Ii4v{bN zs_~t}TG^gnhpt^3j{z`|QEG|%GQ94$Vy4`~<}RNd@`PusUu7*zH)Tf4GQ# zWjMVYX#KQ7e=!aO$v2b;BXVh67&(ReplS8gIFpfYa3%~Q?V#HCb1ASf`rZ1X_?G?B zxiL!ykZzmdPMUuIVFNsuYQHukNl)yGA2wFRTgI}=i#J5`Xc05u%{5-B|k8RRsT@#HtXjZ&d% z_+IvXU!hobGwCS6Cp`$sHG_s5vH=?meu=A0wjuqU%4Rq*zkV#=i!}(}51&QC4OS9Q zS_p~_x0>1)hfryy;zlWLQ$1PatkoO%#p3c*{q#V*QfkgfY>2*8#Iv=x@4CKMYR?p&Lit4_3Li@2jb6+U1AZoVpK{1v(__< zgVmy@0o6bX>P*D=5gX?iPhiLcWMmljAipN!8so&XbfN}6RoQ`5YQupJ94)3%tSPGyz^RiM6NnT_rEraU%!lii5Ozvkg+2+**wqoO zdXBeWuKv;o<8`z+hzNgTT=^+megY^EDSE*cX|=`c?OI%%cmFX11wj9683@~?)22|c{?H=JXgznX%Jzwj`FO*e)yM|X-F~*p9jmEvdZ5JeP zQ#6)+9Zd?vTtmWYtPeL&_t%xWU6 zoq)-xqSEtUy>?K^Uu?gNw4mx=Ute0sr}GxOb)_el_#}h$_-Jrz$aYgq z%mGmLSS~&n)uhK93r^BXyOY-Q8y8g?`gcIJa@?{Q_Z$-Y0LI~1h6g+eRMyJvTAF@m zLrg@cbczPo|2J#s_rbjorKgacr|HFV?~p!Sv_ng-JccthaBXvc;c@LV_~jZIX!uCKf_(ew8*|3*8y4_w&@(+eA8jSU z^?2d+l!tZALP!L?Au@+W3zy&F(lZuGUEki2X#H?CSJ{mOUAPT_H9N#lUebMvd!?kq zzy4DaxQDp!-n$nO*E|+!?aJ+P+S-*O4$g%f&!gKaH4dQ{&#wf4!t4+7kZKiPU0&kr zf3?SgA1^0QsKMxEIKa zS)+VKRnATO>~TV?ultJ8AJ$;|EO0bg z8kKHea_7He&l8N{)59f`jMoyr@jKuVJar0o(Q+qQy#!B11BGA~dq17hB%nHCVh6E} z{mgSTYQN1IW*h-A@1)ga`1ADejqjH3gc0)u7>J0)4M?v7ymWKgoiNfZ{nCnicGy4V zPT7;nVcS!E!JgAAr?a3%`eEg4ttb~djV@qElt`;X1^4y|wZz?cl^GeK#Z@2iR;bfu zhenvh22LviR@*u=s>{l2;Jt)`^~L7v4+QBHRt+0o>uS6Q6F_IgESfW2PVn^ znSgyMiO#(dxlF2NViE{8CYsz*xvwR}ECuVeKf#kyB+=5&u-B!H!AzT*1Mt{0ct+=Vv&gZdZnv@d84jKb4plx*I0j63xuI-0`{+4WvUub_ zTCa4_JoHc2zJsyL3q+O!A%4ahdz;Ei5wki4V6gk%T6*aA?RYxyEOq;dU^5Xs?R>)O z6>`f?^}kD2KKhDK4%zX=_?P0WOF?fie0tMns!6i0{D!#SRreYt#{fl!Dkl&b|3WF% z$Tc`t|L7`Bd_m!W?J6*CbtV^60Dcc?Sl0yiF}VnBXhW)x%I|tc5M)uzNLPfLmFLYX z2GE9$a94Q&EVd*$dn3OGTTCTLBQm-1v9BX7zC5{dcXt?hk8NxTK3_-2P!-sW&_0w! zNL?VayjX9qpvr5m1@#2TT>%94nh5DU#>Puce)ET2j&}6WcHR!^08`R@Zj&;P@r_)I<**^qa~ki1$AT= z)c+o7Jc*S3yG_+qVm~%n;_of=;pVlc0{V-`CpY{VG~#`gcD7fCUZ*OQH?`NkePj|w zVZKYi4z*XfK(Cj>L6JmQ4F=wuvgR%?0Py$zh?)w#{$ZCOX+kI$f4WIr84S&xDMGQ$ z%r3pLmFMxj2f}_?N#2<|0mI@;A9Mpro<@+i%=h=?EohZnG-1opd&+cC{$7cBVErn{ zPaQzl(=>GdL7VcY8iZ-eUOpyRIg`?@zo07xQ zRXMWrLLFsx@l-R$hnt+D$giEWnW%B_(@wx%ywhST2F%Sp#8RcHnulwc8wVc{wIde& z{$eNJSqCxCUcSDx+iX~HW?#g7!N9}?uyP#r-yyE0X_@ZxG~MGZTGh?}u-?9tRvNj` zCi&+WSt{753z~9o*_}eddpa*%D5ex&+liwJk4$5JxIbZ=;`P}bLkcHF-ZsPf^sDu$ zwxsurWa&~72D0=vY>e>A(%f^2BQ3Qga|9%kDpp2NfXnRI0B*xR?cGT3PjczSNqW=} z0BPua=e8s%v_vE#ZfC>GJxeTHO-sLl+>T=xE`c*|NdLc`I3Q-yu`Ekm7%R!9i08f^ zB|a~x^G>v75P{%@w{vfVO7^nPgYn^QGt5)iqcN6=GeWXg_k~H3ITbgjqLQ?;IE5pN z$blKn95A$05=abal`&Zt+YuvdX)e;4!lW-vYSG;uFhJA#kJiI~JT~pwGdZ(#r<)&o z6_hu2K|rCir5tU%l?D6ksH}l2)s_fT(6@R!|nXMgh&JvZpa4< z@<%6LmO2$EWcoMkkAlwXhyB43SJ4R4qc8#*%*g-2>jOMvbz6Bb{d))&mb2i9mo#xoHX-2sV*x!O z&I$FzVqe_yQPYOWjC{KY(+b3(KeqU|t5u^1{EUf^PP*|`xqvz0HP?|`uYC@>rNy*} z#O zy}cTC@9%mFUK2)iqiL_3fp|9z6(&cTM=JqyTTV3+@eDgsc}DT*DqJfj@F0M`tH+*X zoq{t?0Iua{6P1E;7!W5!t{U#TLXS3wYwTr(cETobYxv&V7SmdJ){6r1OgaeGVgl$wS!n$HFjRmu7MVK|Z zNxOG<>nVZO-A4!}Twe>;ppo z8idVR_ZqK17tyh1jM^e0HL5W9fv@TH;4*@XxvGv5um8$AuC+D6cy9CJ@)MeZ7?~jzwiDLJ!BsT*h zUT|4T5Rwf+KxTW4&km^xGUIeyd<*(`pmY5m1d)(i`{|3@nyQ$k7W##WcON8xZ;9hB9HOmbBBxk zUt{#2sHfF-h;v-xI3IrC?4^`S?3QO|;B_Lviryey-$2(UTn#z(sWf>WK>)T{!<1r@ zq)frXvN}X2_7gjmtsF{U{IJnzLw$)D8M^#x=aMWyemC(vCQ|MQ{*{FLMK}^c=yL*r zGt??ibIRgy8Swh92Ea0(c0*3PTuiGgtyp*#Z6~5Oo_d5OLoM2v3*mW$lIbc1P6Gx= zm{*Sy#n!!IfGSZ1+EeQpwo)mYG^dWuy7D&nR}1`IF*z+ixwd%L$w}>vZjAJQ2CXq4 zCJ^w0lbPECa|vqama239qSkQ}@gun0d?O0o=O)F#!1b6GnU!8K`KSc|AUMtC2J(oW zA`hM>g;(UGz`nK5+jJq$Z@a7DwDzM0twEmxn>LDcn<#bixamRZLqgo#LbwLvqSx~U zbwn`tXWXv>!H~QB)gAvWgb@N>!TV!ux~92(DZ;8oQNe?W-|rHLC_X`Qv6r?-x<)-k+-S7_*Z1KZnUP7CNQLnibyj7qfqJxbjVD*US+!ImEsP zJvu5cM^}9U!uL*2>I zw4^!h%hP6gQe(uQX=RQD-3KjB9xmUhPSzASUENuZOwIdj&^%lf64701y#Z&s=CI-_ ze?I6X#hc1sW>()<$kB)HHka9XwP~%uZ#2kYs;xFVjBAy5>a~(nMGHZRw4ya-s0qAa(ifg7zCq)%r0zcGG zb)j^a;@9F-;>^3ELolnPfowsur${nxYISJxrBP<8WkHD{3Q{RpOkVT3mgc?bT&&@< zI$TQ{x2FlJeAV1Kn_Q0$rTmPZ%n)$Xcnw9DwQ}fb)5Hx5*xKs!C8AFu$TH0SX`cT} zsQpCK@t`7!abnUGZlormy+az1K!@X=_bquMkfL{m4-5OKUy_IdZVf1DoRXHeQZ2v0h9QZL5Z%m|Iu;Y0~ zsK1GP`^>%wU7pCPf(*OPR(4_KpO@?A#5}&qMB+|+u5=UQ!RVYfOCviYC9o|F;Nxtv z;$fBBRAi()Q0suGD6DqXANXpA-n`REXVKcbK$qtlHHP*Yj==$ChJ%_hZ?jLEY1mS( z2WnoF9SF&~q&m^u0n{NPlObO>n9EEZv&7P{Wb1*XQM?T%_9=Zjg^Ay00a|#lE}f~k zpyVKna;ADd2l*CRbI7b1?LvW(Olf3!N`VqZ8b%^nQ2-cMELD|fR=&9)sD91=6UkFTc3m_i7(4he zl$hCC=0ZZBPnwkadO@U`aerhy0XoW9WPLY3W2;i?UGAr|FBarv?+ zW!D3!iJU^tu>Q9=r)!cm1x}bDjdFKjOfnjIXw->VwMm6C6$J!f<)I$;On(Hr=Hf(D zPX&%v0%HMr_jO%}SVzb6=DUC6cEG3!_4-YMo7>Y|pgqg?mOx867&yV3q$=!GBlXOi zeP@W(=7GUrjCKdKr_OsL0XXYc06&{*y#`wz^E?|7yi(dnbAv!2zNRe9wozhX8Q>Q z>U%I(m#joD_M3xuP345!&%5{aq_cT9V5ED0boe(EDeLYk;Gb(8w0otwcutKVvw8aj z*SY3Pbyv1##+w&8$V@qz?Y-_9^`wT=d3K2E3HdFH|UbE7( za@$a#SfJCPa_&Qa;ICdudzr9D#pSY8_KWCM?)Abs9|gCd4}>IRA;PV#a};c@zm%h; zYrQV@+_X_a!t25(fsz6}6cRZsj*WTS^*n`@ye5k;X-3O_UhYBw$27&d!`I`jp02`* z>HU1(>gL}!#t#ByIa-*w<5aQS`SphVaF>O`3ULDtpwVpi*Z{3& ziB9Qq;rUbwJ+Tzy_v3_N!$n4f%Ewi4_OJ23IJn-E_%{LqNR%7g+Rjx# zT}oTZOkGDy+wAW*m;r>LAVEPPC;$Q^khiu&xw6>9y;!W^9w-)s72LrRh2&-Nw6aE6 zu{gP)Jnj*=vbZ_Axcu!2+QreH1?lMNVCM)&T02EJIJ(?l*gM&w+)#F2 zqAd4M;I4n|h(g%1pzkN)4lM3YNcdk={=VJ+6Z+rx|IgU}^Q_rFwD|j31nQ1%C=nJH zl$(n+$^&l4;_m7Wx4Vb!f^v4ZcDWY;&VsPB{!4E+t9waZ-JP5qUGAxSqAXldsK0UL zQb4(BSzB7&&$@Zpp}6_~zNtOj!Rvp<<)51U6-T(W!~FrAPH-d(`d)HQ7Ucbzi2Eg8 z{49S9_CK%hb-EYmKG1)yyFcFA&FcPMYq!4z$pXcKa=Dik$>MmQz5mAMAIiJ_1Jgft zVEK>nH?zOb68=~Ac7IE@dyx0Ja6fV%B{&P*!qNRNG43<*?^HPdnUk*k06`Ii3+ivt zwD1CeMXcdw_HbL2+25DmSIpn0tsNa${))LZ00eJ-9yI_878C-Z zfFkxtFi=QD7y^fZVQ?rEg}#RZL;{52PzXX02t`;3!Qm)ju!y~zwLR*d)?Y}$0EnQF zAV|as?q+2N1d9AeH2jv<=zCJGR&W4FP(%=bvH(~JBG4eH1pCNC47G7Tbmfru;9{{`$JX#PX2!r20f*?pi3t=SO0tN>F z!B8+50=Z`+C=3Gs8v{Y~y`=Y{|EK;y7(^Hd`zHYy2nhrVK>#p-FyKB{fI#GZZot68 zaF`HM7!85{4+0?QKXd1QBY?E=aOZb><@PTENH|as3=je%LEyh7D^O5S7;x{|C>IK7|C)|0DpuS5{aE`cDR6kPsA#ghK$}`(YpmEocElKmY(i zI1&j$K!w5ogTXz7|7!^T#^ByU{*3_`WdZ(6e0cZy?(1I=1V_T|!6G0)Gy;e~qG2Ei!~%#0 zA;4%s1Qd236~Mo7Kno)U?@I~rFAe}9$iLvDfM_rPY5{;DfEE^l03;eLh!BLJ?h6_M zv;f}k`QID}ASfjCclh_-_#YkUziiyq+0NPx^)Cv7Pykv8A$0FVC@2a5K?{Rm02J)r zErf(oLTEU^0tti)LJ|M&L}&=`Z{GDU3NSGEpILP82tX+G-W-8{c`XPk3~5=-y)f-UI+(BoY9HB7`9bC<-cMAqW<>5Utx2A+oObp|MM{bArU8Q)P3v!N0uN zTI^mAWmc+m+>Jaa4)|AX6p7jSf;FoN^8?vv`iG=hN@m>2vFGNDVhvd_eY_kgT9iml zY>eQNX46MS8Dl{Uj_JDix~J7ojzbJ4y&gyK`Yfml&i1kY{O$WFfZjkn3#t9;!oOgHlIbbpb@0nHBZEC{n zxvASBW+(J-$lK(V0Tzpg>m}{Y;mN_Z$D!h2CopiRyN+j2cNuzv#FFHQup< z$d8`}=7a>|-54a>-$C>uV6!NNTMZ?r(WVOM#9nVcS1f;9C_0lc661e8a4>*Sxgn7P01PK8!x%F%z7hI z>l_!ZA=4J;LajGU;ASiEU`y;ur9)7?VdTn$nViw(4b{r_{-3rS>Y-M4sZlX+oTMA1 z^?t~sdU)?R;EURDh(~7j>zZ%Lm+s$wY3B4+U~uS~&oaMZOl~#}4&-^!PNBM?y|3nn z`_cdS*GqL3hBtwjDkjFOTwnbeW>HFbZ?L)YN+y>@e=NBrX8Rz+9h1JdZ%T~ki%(p| zt&f{Y6Z1rHzv=06s=p02zt+YA>(Y z^1G1sz=fY8kS|WNVwL`+Fa4sOTxN&h8y_RSPhB==Qtl^&tHxJ1?Wf7@$?4eqeO1{R zxWC7s;+Pm_9hf-2@TmOh_jC*8LSwzv$MlV%meBVX$PsSl2j~)PGUP)w^F4MyN15H> ztB^sM!keq#Z_8M1V+Z=X(*Zb|m`15uF7&)P;mveZ?n&w^cagbx`4Dfiu=J&29rN>< zO}nQPRLNYI1QnAU}?+{_;BVX(Gn+x&Ck#t2a-@W+O)zYdIQq}pv{f6U4|sAS_!+UHG7##pD@y3UMyEJ$CG22!-UaV9^T zv;XPc6&6>vpq+l_y0*bgaDt1w`gyKGSo+~c2W!Aq2BrA~!?{z0Z*skmSlVTjbiV>; zNSCK!*;kwsVa|!K$$;bc4ocXaaV0p_iI|(u(jCG{#SRPcX|p;_lQZ+nD==FHbt#wS z1qRp*ENdP$XGJjKZJPSKq!FnpoRer}fsO6lIdVL@FYIOHVWahfS%~Bp4Yg12$YMVa zor;qL_&Q)I%O#rQ)YZ!U{DKoOzk#&%vQhiY7NVnsd4lUiYFuKP;vS>^c_-X@q-Xz6 za>izPD_J4PFZ3vUjBFFHLO4SIHK#T-E>~~Zbr2)VM%-iW40C>W4T$%pwB6UI+@9%t zD##D6#OqA)2Vs#&8(hIIq%@`SO6EDuStiI(s>dSNwOCiWkVoslp)CSMER?JKWRQj1 zun%4AI6g_rWKJWtBNoNr1@rZf{S>SC@&~=dOD#?s2+q%(VDnzacE@9Z%*;}cqnw&e zrL*|?j-|AR9NQGjjnTLoZqm*4pgk*Uis~WHp%<|?FEiCQU!7`)7hPa7eyV6;PX_I_ z31HkET#jI8mw!l=cw%6xH13>Uyu96lOD-b3GxN3SV?!@dfo5|jX@XCH(D`EzkIr8) zYRkO0kHo*2kX@zx2*claciI!exK5SHk! zGrNEMd1}x#@m$=NER*cn1anK|Q$qgBsh>>O6J6LDulds-Y?{DDK1)kM1QxvxJ($P} zOq;CD^mTEQf0F)by5NL6m#t9N=coQ)#m>d{;4Gz?3|UDUY-`{$o7G@^VtpjpMf%jF zjgUgFDza|px*vma^u4B?NYiu2OZse(37X3$e{oQI})>Dv{yd{1jcx(4@g6S1G8e^AGN%Z)|V7d&4 zw4fcn!Vw&yazxn3*HThmkUBnwyW4xlL-{%-;_$II+gVq^eo2VYgX6sJAX{=SIZ%#e>CuXe_bV5tcZ93(GLU6jkKDil^&{+z&CEtZq{2*aT9O-g+| zB{0KgTk7m;oDleQeqSzk+>)=V2ShHQ=b*rv{G-OW!J<%p5ZyFWr)nSGOe|L$3Au*yt(B_DMy3JYKhofAU}sG zPfnX_IKyi9A2xkgoZE+7)fylC-j-R5|J0`Gj^Wt8wtV{9ov@wvk<+mW z#B2ogFjT5V_gTv|UuIT`A(kTd-G!q28Aex)Tl6&~1#;}@ck;=V{3>4A#d(uN2<(v= zODh*hhwK-j7S#VNk8GtGCK~USHH&>W6)J1v_w~=KqF=(o^6W72EtJE1DJct`4o9@7 zzip}&#EfOd6-r#nhTn?o&mK3me+9?hiwpC%Wse$mu^ zP+E{V&dX0Gtx&A^G}XOT$VE4H9)y$1R7EF867}Q@-$F96IX@c=OID!aGgj@%fNXKU z{MugW9k*$7|E8Q{aJBDqQsMKhO2(+~-f|p`MVsN&>aR9_YpYO53y_Wi@eL6NN9xT- znR@d@Up+H@Lz?^XcN&W};s%I3GTblaJCKaOD@8j02s+qVZm-J^hJH{^Xv@r~2v>Aa zg=IfC{HXZuVJ|*=aWbB~2XFL|O#t(y<6EQezMa~fD(}BZxc!WCG2g6kd>px-=($t8$#BJ%gm;u*i@dKKS$t}ZM4 z#bP#LIFKk{`WgEr;D^gTH$x0Njs5tjWL3@Pk59BU3tzIiz5BtJiID?!c9dR^`fa^J zZl_%_2l`o4q4IrRFj7$d)xs6`*NA?0iQU}qcNBIT=C-%MST@MTq5IMDn8Ivpt}u`) z^58uBCNV?yr`F;`aZ8;ozQWLlJ727JGRVT(6%nPDwF6OeDZQja*3S!Z_WAg8p0)1q z=N1|qPi%(3mSA8xu5ax{gvj4^S0aI-W_89;BI-~0wt@WubultmyVMYTWwYdm(gFMccwDfHIdAl0`0 z@^rj*oKkh`h7lu1n_U#6y{=w6Y3YX%wX?)Pvqi5iUj6QPP!x<4@Nv0Mb33uS7;R{8 zPtzDywg>)2Yyb$|#KqO8AhdSxIU^_*CT@)0C?aoN`s}6{pz=_fsIo@RendZgXzPvc z&Nkh$b_UXG_NBq+y-Ns}Wcic2Fy-&Z% zh%6?ndAhxQh(6VN7*Ee$sVcn|zg}5?uE`-DT*q03v?f^c+-=FiydyPpN~s#H>y*l? zh~TWVR{Oojl=yp=o0yN)BYCxfsrt$i?{yoQJx%`O@dz8zg`HtCa`}xdaiIrIVlT}w z^>i!p%=J1QtOE=pq+Vs>@bmOILN zT`hX1dKt%Xz0MnP!Vm-{3s$5jJ30>#-G&5qNbr)5jYDKpe$Fo!UOWs-c=4^NOJY`A zWIp?Ya}em0e+_pd&F)j;2*bSZ-!xTyz}80+adSl>r$4iRqL*Dt~SP&c>vKR zljmsM4xrT`SbbsR=8a_7F-Xduz zvq`H(xYc`7)6)K48UrrzTRN zi9P4vF_JJp-$E+4z#fLDe%kL9oN+7m+`6_WigBF5`?(~IXW?98}^rE#?qW0&NUn56djBWY=v0Y63>yV}Q#>}mT&E3i6;NbK;*$wwd*3dc; z`Bvq3#LDKa2^oOf$`=`2g7krF*slooey=A~qFMBfUO76BIs$MyC%W=npBXrYw^pAG zWj8=<=ecWQTwtG(IQt$lXU5I>k{-iy`h>IGi1UQX3(Az2Q9J7@5Ue~J7ckc zXzfU;CV_2i62GMJ!49ZhK#qBR)pF@v`-OC7cJbUBV8(>dAtM80?IWyO0^8Qk`pKBk zZ~T%oANo;&OE+%}E9w{qJLTo@tXyy23p{OF%CJ<(clsS3(4m%X8&1$-i1S=Zy41{P zZQ+*;<&zdF$B~^PWW+QwYAUNnQOGCn@k64-sxHgmwgkI`k=P1E$Z7wmywCUfwYQUX zo?*gGfp0xxsQRZ%YncsL#CX-?t@&L=e@WA{+f=t^e*JHf{^#U>YXIQRYk%TX)7_5JV?Xy_PLWGo(0I@PTCVjxvAKr>5 zuhNL+W3HyH}f)4TaTxS4|jhJy;ccSuFMRm0&+CejnZ@UghjZS7h zgai;%fh0!)2L{fKOF_V$7gHzu2VWFY*!-2`x#+WgIE|k+_gr@#M^dJ=Q^z`r>Ma@X zEe>wYZizwGPfuA=XDx2sybcCuQXbYJr+=|)@*%FmJs%sEG-Q2=ye<)PLeR-PHW!>?y6G$`A0fUrvHQD9)=Gw=u@SX$=^To7y3d&rqZAqfcTa$JWj(VSUeZjyzY}? zTGU{H3I3%3g)I{lKKy+XH3lQ#n>zL6Dj=v%I* z_(z=wl+@RhE)~2(__x@W$>AOS4 z&36-@tsVb3RF{7p?5zp=+L$}UT%|~nZ&xB_&WxuRQ6$_HPIM;{+~a5s|A_0l)Z-*C zyZu6%naU@53Cj3bCy48jx&m%O(%3B6a`fP299W#NYAF3Tv`fUa|SZ&%zrY~U~&fWVzn46gt3l+Bx zxR@4RX6VGpI%tQALA8XfY>t}Ol`$sECeoB@X$CO7e;N*cpu7IKi-d6e*Pai$|^z(pCDTK)5i{K>1-a=V|=orbn^5aXFp=5gh7fyxSszo&N z^evIEGQz{#=fn>?)82nUoa){LA1##=m?lh&l~|YdKVEL?jo`gjKV|QkF3#$4bnlYU zXyj!W*;aO7&(%jA3%|M8&)1*Lj)hl@uP^(FCS}zAbe<@G#m|QZrPa0pTWlJ6 zEUYmo+UxaWmhE?Bsz#S$3-n)~$jeqH%*`>6B z^A~MQ`T9V5(ba+e9~AA!uKCo|ZypZ@s$+aUB{|7Grc-N$&D4({A3=!HgfibR_@Xu-U zEJI73=I0751k{tEzK#~Q(cANjp5fQ!&mf0+Q8!tP)K}#~sV?V;^ZIox&#v3Ec%s7uwjoc}VTV(MW$i@7&(RsXzEoTIl&fxO=2Pd# zJKvZg%)a*od(b{V#nwwVKE0l%&8~qPI)*n?kHQwL-9m;d%rf)Uv#_muNu2%(`zQe`@i_ z&;U)!cUua4kDb$El&fl~6A8ja?@(3<500JQx&Ujxcs}vxNb~l4i!A(5YBBqa!>cjC z?sKsx8QNQMt|=@~64vGt% zlHPo3>ZS39x%FpdY*KT19-ZtrvayH?Cx+M`E)N{IpHt&gv|%e=`2#DnUf~qWC;JUs zOL7Ssa8Pl4ti9k2W~iYuBG`5O*)8`z{2<39AzMy5o{psqqD2 zI_|sdJyj#Z=Vs_EKB~T0cP041G3VziMK~JpTi)Gwd3;QF9Wxz#TB4u|EZlxAH$jZ& zTkrWzG?JI!;I6fSnRT6U^ea>ORs{mvDyVmi_QX6E>&OpX`+H%gVlvsZ*JYx3XJq>eZuD4kwcu>{^HmTUxQ;;{99da zjw<$)bD=ahB$@RY93=K6vn=03=T+dp=#RnLB`r!0V#76!j!MTe0aGF`i;M&l z3z|%1=WV;4(s;tI+Zrp|Ei+z@J0(2;vbVyJ{B2O;JY?K@ip+U$56bw&K{TY{De3!PZn+d>H(y@boEbm^v?O7^47HQ(B>#gLKs{%ZRd7%9%rj z{!PXB=BA#}dxOtp<2#U$$KeIWk1yA>lQF&oP_As!0a8sT{WP<@zg6jHIlAhlfBLBL zRgz=#VlnHLFDTeR7yH#2_`>=oN@@Vc@Aj=V9zZ6ik zqOkNkvtEKHAbRyyRiHz_^8t<6WM=0b-hz=~X94>dqh2UsuD_`jsl?3Zdbx-`4va@xC)C(>*`)G@Wkj z)%DDQIAi=Nd4YLg0*;pA!IZd08IDgi+cslbJzV?d#dEz3aug5oio#~}v|>N3!dk#; z4Z&u($U{eg6sD}!?|9%med9}BgAojP$+kS!VOCfZ8GHZfVA3cSdmp`ok`Qo0ImR5z zIJWO{r+mDziM5Nnc+FH~&UV9Lf3>2`iR#GsLt>&w!bm_FHRLdL4FvuQmpw&izx`));Q&ou5}P@6}Z&=fx%LBsZscCi7p{jYBe zT=QMusAG-AQ5XX@&qrTH&%eS{A!OXnA@0r_)Wcor2MIhMz8H6~;}bDg{LsKOal%p9 zjw}7})7i@e&==9L6LN|^YVPXFmaOR7!BZ43F<&UH7Cje#L=oYyC=H{DmK)7MP+Nk!mV2c)V{3((C?wQ1!IG z8%fy-uzJh)f+6gEfdpO-K!u{nYUkNX)>;>P0BW0~>WDvVM6B3^D70MS7n^z1D7`KR z&A_#9nMo&?Y#?8cmr#PMxm}ogI~9fO zJ?sGI{wTVA@rmk3XKgoIiH>!5wCl6ayNv^~+IWzRva zSJ;ZeYldDl;C{gjSv%(x*_=^s|A3#`Hv`-S20x!F^v+Yu#;NFtT?7a9Y~#0*_hg=| z#)CqH?XMxx;Mf?y-i-Qu|5&f^2@Ly7Aow+g{Pve@@ji;liV8{toc<>!TcEKo>kE)m zs@t+|tGJ+qTmqmxdR9K=oRm$wCjYrd^n3KK0cdEngDzMgFd_1vk{JS#bmr0q5**xh>^EKaJ{ps+C!9JT?WQkt z#ymrJb7Xm#ibNECM?_H-N-W9*zRdTXi*H7T9a0jt**y&39i_YYow5Q@8nlh4S-4oB zPAsh17?2SvfbxF~j%T^C@(9@K5&03aG+i2G#}^mh_wZx0Sq?vjLr5Dw^DRuPQtp|z zjc$^^ZA+Gpbd|p~8)*)cR!&=1gv*kS2;e0LvPV4Wq529X(@ggx7AMo!K2O;1JQ##N zuKJ25^jqR(eoqxDCvmlt1;BYFMrtg_Q~f`9kE=e6D_@zM#T%VRkx|FFr`{uJ@Vjb$3)YAF1(rZ&{h3h%CKRSn;`k%<=lz@@e&y8s&PK~Y)~ zt)}dPHM+O_nOfIizWY^@@RL2`U|R^hv`l@7wF?s3+^_-+DV+0|x*_x-8&5Qu{IJ={ zV_o(%!p31>w#mbepnKNm`&q@lx@N(_-0SoA`9hgl2`c&nB@4fCu*FduhtWU5bf%fI8#ttGkxL`n*CCJD6N)9izoQr$I9_CK*IjKT z(7PnSG&hhjT#?HP~$3`lqO?xl2A~3IjdB-Uy?Gj(%3z@2xn! z6yiT;{coplu5D(8X?_EECz%?C2hFn3(T-LfDWX?AdHGS7Qw$4kChujWX&ew6=fJU0 zG4?zuPD(87olAQmKl}94OX3yI($OH^CE@;gI`OLp66PJFC`qz%ifR|xc0I>G($#Uj zuc==?D}Da5M>#04voS8}d=39|m8ho=S9CXN8B|9d{qsTTmtD&3 zVaQU@YlMpX#HOBDQ0>=J*0+IbOoA)UOVMs}&eqjv@3s`R(3vl40t~aA0|25`sR;%# zhL&45tU7j$Z%&l72v_HR4yiy!_6|I87v=@kwT2T7Ax@47k#Fzj6(#Op z9x01*^zw1SEV3mezS2BUz~*29q<5Nv#nSevLa-lXt9N>rSNd;(%J{6?w(AdNqB#uC z)?ey`R$`xquAHsw?LRtNzLWvxONa@oL0uCshpj$QDM;0L0<78Se8G9)V@9KN-S2FC zm`|25FnyNf?ANWaCoc8}e04&#=^MbhnO#p@MM>)M9+WH8J##lujE`g2f#q1zIZ~1l z8|;Yyk75JmM2u{P)TxpZ-2yIuzwq}klm-0MB#UHTcM%sc$OxyJwcMO#IwyK$n?sE> z{(O_IY=2WPdKzMuZGiqm!ho5182Y`!n>RZq>!ifdO5j*}twv%0Ia=aGPPCxa!zSJ` z$7cxi%?M@EW4KRARU3F8ZcO@D+`9adEeAybwAnFFg^ayn^;kuH!R@&^AzseWYxt63 zZ?Y`;e_OgGbARpcpUvyj@^F+{CDO^F3nekvP@CzKAzqnZ&hUP?>-o|reBnln=X+Q<)Kks^v?;|%NVRKmpXPAR>!PYHo5e*##=$oDW{m`9>VV5-SG@k#SZzODRUkR zmdkY*Oln$4OMcS{O{6Kq2HK5C1vq?Nwru2K&jFqxEGh?J2DBHtYJENqy4GyvROSxQ zIUso_yXe<*wim3?9+GXDp&0DZYqlC+U1jkDZB65-`zNU1${F3vvYdQRD>TpY(P^nK zX#F8AQ{+cstBfc@Dlg{k_%UHLny9-&&@Fj`GW;|8b3f5&D;5n&w?a3(QrO#@R=P75SM&sr)Pv@7MJ=UXV zzM>rAxZ@8Va!R$N(ov=(Ybh&Ce_k*S^w3Nb(qXSrh}aOn(49Z>!lUy{hp%S2xX8rl z5Av5~DD2CPR-8I)E zy43iPka6f~wE1fP!_->{c)_eDW<9d)2}cRV6eJ zd+JBu*y#Yyd6(T2+h-J^ zJbd!3{Zv~8rlVN$*#gpY_!M%bSR0Q4USpYhuNen!0yjs*vJQ8A-QAhI>XcLjrtl>s zd}(MKQUzo&;`9yU8t=cvem{eKyBmK}=1&}{mdiL!VUKGoi;pPI|jq3nw}M>Y?|r>A$qzC)^8`mBQE0G77{t}#HH%Du>CB@F-JB2nfoKUH*|{-OhC7uS@~X9U)?Xqi{fcYUf)>~1J$a(TFP-w^k9Jv6f)Skw<`O9|Zw^r6KtZ~vMuXy(yXbD+c( zPrlq?Zgp6c{$PwF#RV<|RU8&K|zv+14$4w0MqtON+Meibz?)rUzCxGaE)=qr>ggpbmO0pQy zHmI$0AAIpvX8dbLI}xAY$KfUCqQ2IjB4+#$(LU6dUK1~CMxE$yuJjwyGBv;Y?sOuR9c_eg}o&{hE!^Q4)#DZk_e#x~#xDM6N~~b6sBMkmO!q z5ei#?37mIAsOTSkdxPN{BuvX~O0YG~3g9Yc{KiDke6YE$X48raAby#2|55P9qt2gK znkjXR=FepUTy;9q5KCF0L<|uL53@=$LrlqOa+=ktorr?u1fBYSl zf9oj^T4|Y^X>7(g$;erBSfC%8p}0QH+Jq z4<>;ksT|>UnvQkReu)h`=!cR1&;nTD&=@A~YZ=(dh zy|U?l@@<9ErI~ECCfFno?J026``P`a4)s>i=P#)bBS`SZWxkH3Df3U?#AU0QK622= zS~++gi2w3Ue$%c6oeo8>X1@##_A*yn$4}L6d12ojf?hw*X@u+ojw5cC-Y!?F;*e(* zP2RG?7$(xlV(+@n>7?;RhfVA%fv$11k8dVZ@Q?S(G%4kH5OD<9_lhJ7b*ve!ty81T z<2J}j#&hDX%tSv#)|nc|ew2K*^?>s!F0YGEgU&ahIS{b%L z&jH1M{cIcQ}vffAT1Jm1M!WP z*P#R*_{#*?h6QJh+>=)4upI6v6)s;zJb!IFr8%=jt+#x(VPh3ziq-lb5{$Y@KwOj= z>>CM@V0{m^$EQRM=$t+R#7=;(=@HA0(g2$;gWG&PwL<5 zHi(1P*@+uc?E=@o)506@zum=#+q{moxBD?C*cQ#^9)j%Td~xdAP2(XRZ!0J=W2O6= zNGi&UPwg@o&%A?*vlIWkRr~09**0Fgu0Zi`Qqr{glzH>9FK^FMB_tIRpfh4IGcO-* zYt^pdwS*2cCqfi+zoH&^>$b5P7FD16hhPu1pvVUjcXxgf z*vn}zN3#5`(xnQ}9=HInSzdiXhMe2ZSBz`x5lKqKtLH`hVqBUD6Nn?l5h_l?^a$K0 zV_zwz!4*~f!gz3l+X^o6(fU~UCIOJdj$+V3Ns!q$*8%O7%LK9fPsy+yx!2jyXf|&H~nEc%Ra|bn8B1Ir7Jv* zEL~xm!mE$I`A}AtG=yx+;7peNo>ABR771At+C88OKUtMY|FWFQvSBJCF6+ql*`h?O z&bgb|?Cme!t9b0+*;dA4k&9Z<&Hz%Yi5~=bsc{bs9(0*gITT2~WKd5DWiii14fj7{&oXodY?L&EM+30 zy&Iv6{cc=!(_MO7#4}Wpn&|V7Ogab&yFaQLq1f@Ft`5c@nJ9`>pNmSMv_zFt+hMBJ z*6MkomvlLvv5$RSyW{V_nggf#y0>y`Gs<3h(_SelD3NHf5F;tAx6u~w_K&U5XPk;1 z#;mcvc*Ns|B5s(Oe55@Z%q+d#k~J>%yBNmrFoY&A_%qNk$`3=G4 zj23KMX_AvdP|^!>ncmF{Q;@2h$xTh03_hw_qjl6{=KK814)e;!wpoeCx1t>aglD{r zAuH@RAV=d|r`i>pfn|B=6sxPdf)CU1o@d^h*Mru;%NTxu4gqe*hIm0JWWlas#WYus zZ+D3ZmA(kkc~h?9zsr4|EDk83(Q@{~G)|K@D6OZ<&;0JS7C9B(n|aMWXZMmZiTT~L zuxTe?fAs;cU^DU8%x#9`N3n#h>_7P!TZRFz(PwMBgrqA0zO-`j-p(IAToU)q3}qmK zdO=;cIFC)ZX#!M=f+GA9T#~eG_H=1};m=@8gM`5Psp9ib{fA>Uv7+QUH^;9D*sq^7 z`Uu;Xfa@s+6W%I>co{#*zW?{I*PDTxZ!V?3l8u!)tsl~|3LmL2#t;hVMAU!}xz$0h ziD{1% z?8(sgG-fRZ2WysU>`@wxW|#A?peOYvlQ*N}TW>jI8HQDUA&$nII#XQTtd?(t0;7qJ zp$UJUNx`xE*D5=Rqz4yT$jj4YM{{+&?dSS(aj5esE}QWm87TzYZ*k5k6^P*NP*r2t zKx;PwcMZOyah6stHFV%T#Z~G*3tuU{;6;;UpJ`Or(_tmz4S3ep30~WVeAp1!8KQmj zw14`AvXaeCk5oePI&3JpT^34=Z> znLgF5RB(Q5nTT}sPiOs_8xNkxm4eZU@7jWF!3RQB3Icg|MBQpR?v(FZ0aO*-LC&&yz}r)gJfoke;(|`3+Z`Eadq(llF_?zp&GvN`)3wHq%x<6 zN%;m$MBr+-ccD9SJb&eRT=)$@{@UY5r}^dJlJzX#n^&n4#l3`&28n-Xm-MtgB1L!C zt2%!(sqN(8)?#VLz8u;YU+_1eFWR=RC#b^#n0#BrjViPaSn|ATs_f7XQTt9fmD9SB zxC|m|*VW_w^(ob8AYRrvI&NTpK}9k+8^-c|h!z{mIDiGFDfh<9SqJ zItZ*%%>j~kGSeET(-}!&`?{KEowHIKdxRZqvzSb=ldc7u?Qv>+hKnI>eOIz~=QFUn zyW4b5hjqMXz$Y51!xM14*+>7|*Sxw8r02tQ&uM z{e9v%_UZfoudsKB(u9kmEW@@PUns-2ZQHhO+qP}nMuyD{+qUbkRn@&}P^)|P250n! z_ujKN8}sdQOB5Tj{BS(QZ5}NQG@5DqTY#*;adLLO9Z)DyDin&QOC`m|^6Byt_x{D| zytxNGSIzxgfdCG#_j#mlQ2CX%;(DemE(}|_Syo!{LL{RQ-OIZH@}LO9rq^B;Gw)i7 zHI9p=Kbb8#MVB!{^u8*abl}2sP{hw|nxXnjROPp&IEXvmxC6j%94Wj1wxa4$d~~U& zP!pUu!fkGtYI*kpp}aoETw~m%q8r56rgS-H;xY!;LRuvn&kO0cu@RD>3caNOul9*i z`7nO+bnm*%@u3Sb%HOL1dp$T0fd`U$(E#A(Gmz{(B0quJTYNZ{OE`^7_rRRx%4^@1 zSoT9!OdJAg*h)VaceFI0*{6lC%Mrv(-lH z?d8GyE`KOqNI(kZxf#hK1kRK?PPAe?VaIklq}{}l8^Is+QGiB-lqd%}HXGm9Ll-^l z=bK41XUj@vQmVsONN7y(BTvAwZZ0$_7uHk!>0s@#Y5z9SBZHZ;UY{+gd$jH%N*Cs^ z;u@CcxvGSJG>D#Zqms;&x`;D7yiXY>-0wRW*6)&WQ zt8T&A2&x71-Ls|QT;(n1R<~imCZ=!SP=ZFF&k@ZLFRMs<9941frkoy5g5`4vGvVF5|Ixl%GZUdkho$4#{BwN^S_Rw=SnXD1QUJerFZ1g;&h(Bhh@uMAG z$#NJrA$Wtp&w0I}Qe%JdJrnI)uo0XzBi<^}lM;G`N4f`lET9iQn#c*)YLdX{ek*)g z`^0z@sHy>FvJ=CE|CP3O*9(U0IPVjnH->&&(B?UthqC1b$SkUCW$9qG+kMT!76fbR z%EdW`~H`@E1dicTIe_c;KK0BpQ#( z7KR#MkKlvYD@mFIDdW_uiEn0)Bh4-I6)l~HDH^?*0prUyUgZVDOhJhU!mpzlK3wFA zaaCNjbca#5kCX~nsR%)KvGuE^=Jd`Ex@-oM-ET3QiFdLbs97KtRk`O4Z+s=UVFG?G z>`Evj964iZyiqHK+i!kLk5mfCFqumVivAVX$e9LW-BE;SB3C=RpW*Urv--O9FW&6f zHE?&`vVtc3p_%3y0zj%IaX2GUjH7IwAs3Vv?%|ko`}2yrW|^dKRm-MaHmB= z!bhEwg6CkyNFNS1_*Dg~VS8Kh)~_UZpJOo{B(}ZZ=svWZ^Herjd!r=e=;@0ag|Sr0 zzXRM~d27QnRChFlHpJ0P)tR@4+WUl1hl8@C zuL*kYy1CGgr_IDe*vLZ`DpVY)A{6TMZvBWOH%byb=S;83Y5dj?Rl`w#j7SPzcp#A@ zerIR~{JE!eE|I~_-`q%l=!uR#BZY*5fq96V%+DDXT=C_NL z;Uo>S{mG9^f}H@_@{PXmz1zhe%ODgRQ6c$k$(;ok1_Z-(P1TU<1!HTKSy7tW*mEEx z>N$#xH!i=BVa6)c&-_{WCyufMDC{$jv3V)YD!ikd_p&I^vhL0#{&K?L$j5*^`v;+5 zn;l8p3%8o>97q0esJVtd#|ke?f#UN>XH%r$zO z@cz_>52jcs2tuP!KjFW#_%}apC_^89Xtqo>LAqb9ufkY8R;h|Mf#u*z6l>3(lZv?_ zmz!YUfi@1){T&xJ-5Ai^(~N|WSRSTEI$IF(Qpn7(PDy-bBkhTvJCSPeP9XUAh%R6R0^(5CGBP915C^5%50kXyL zDtLl&;@cL@U4>iAy}A11i1HOE^4#u&IAsUjEab0{bkWb2zX~r@k}`Nvnuk`Ct2_oC zKT<=qr%UNWRch-plu>9d%V3?LPvK;6qwEQnUGTgSToqk06?_Y(g@(m+fO7niD}?}I zl_TN~ginmra<)OMJ0qn--^w~~3o20EGJ`~d=H&0QtAHhFE9y|<_lwC;i*IqbZJbY% zx+p9$@_s>6_@a2I9?3Kuz<2=*j_G>i`(U_~r&}5J6EqG(f0^V;cjR@Q zmIK~)@xdum(l%NA@2k3mbr+%^h?uUm)w?JppJA0<4W_r?t_fR^S z?Bz!7;m%z6|xEf(f&>x|d+Lb3ICvusc!aG44Z$}P>`2-a>$C@=csl6YEcwdYB zR{KXolnv7}G?6ZZTCcX0%Ni5pHaxpJ$ZjN*#%{TGo*!RTrY=EL&}s!rjVW4w!m080 zuZSN?tofwbr|`G{P;mOT!DQ#Xz2`j1K9#DWfmL5J6>TDUx# zXaYDjXcnqSKPFT3_Z%7CsMUp*9~Vla>3dOklC9Eb#T88^W7p91@|8i3$xf*dI#7+y zt$W^0b=)ysU{w2Z>)<+9+%L&KO|X27s9a^vl3~4Vt3XHFVridjbDGz!*u6IT6_5Qs zf$$&I*MmvJ?vh`;ZK_4nL?J@`*UJr9iQJq4H7m-xAe?WFGu{ z`h`Sp#z4$By@$4J&5}uuka?bdoPp(+&Nx*ihc%KVxg@?WB%TUijWw4| zJ29!NxIb5RP+M-v8Z4|P6fctQkOCCLw8gnawB8{q-$Ae_$(|*^FG1)g!wd*|Mcn*k zcK&LR8}?L75b8q-^+wUr8nRL+7zmF^q0@I}Q0WU}MgSMbrzjVCYh~0c@Np+ECE=uu z+#vehrrJ9(#9gJv0MkFu+wBKb#Z|)t>w8zc?T!D;+8o3hL;E1>6gx#`esqiE@WQK7 z|CTOD-Csbt=md3`4*3oQAiDtXe+{UTz9?%Bx7s>M>Lt3Wg{UU%Y!6vHDKyk#HN+Pr zJ8O~-(nklxR$5NXT#D`gio|){{zq%khy1l72X?3zFscKuc9iHB>_{r;VK>-|%nNT? zwWkdK{HmPKsuezH&}bWLN7Lq>lwlEVc9(@BV7Kh{m?0t8qXUoB%yZPsW{oCw-AQ5q z_$U_63nFxHcQ?lJlMd$my1JeH0r6sJ`3p?zpJ z6;sU39qf150Xv$NnVtK0@no<(HUFyxp`MA)MnpG`EK-@8-;aF?0qu-I0BUHpNgs`c z&A)ud+yndg;3SEDe1xM+<}l0A%nTT(VH?ipqfXuNe-wH*AgK2F{iQ$t*ErQYd@%(v zU))?=E(;?Ou+~!-zYvP4qwbAFD9FMJi5uK!IO(8x3CE{=FOMYkw5u>*$_p%9{ln0l z*`6whPTYemy;6`TK*A4VuA?$2Xo0zTGa5~(gYWHBvJ>5KVvrh#g(x7ZLdcUDC9I^t zft^z~P;Zl5EzM)AbXt0O%IQZe_W5ukw?*OsYfu8-tS(NLA6x7xGKB7^Z0^>oEVW`e zdj-lNo#Je)QZ+d`&^%7`n700u6u+YN6TH2>7!5`&ssfDPT<(e6C*b7*7yMtrfH5qi zP}`a0gUyCpy>RyM;=+hXKw7~$?v`acjJIb@L{WW|Tqi%$)7E;~lNpL~A9^^~Ej-ac z?0r+x2gIB~2EB`Akr@UL0fMFMe$w1On+JhbxVtpSm5azV3-29cda?U)jim)jY^mib zm4yiVXr(z_fUVcUGM4jr7OX#~@_TFEJ5E_sC&r6X%38Z`! z*SnTKrvYxt#vA9=Q&%^uBnMde(S-56S^Ig;GeI zc2M*j%;D#@AGEd9cO81LFC5BuXyml8G{Jla50afWgkjhx-6H^; zA);0cS|29S$#+vFK1jrEjqGWlQf?<3m1lSgjDkMcjl8MTELZOtx;Q++@TO&T4gE0Z zhrzM>Zt?B6h^xF*&@Q}SLZG|WVp4WYmUHlZqdjpi6^c8whwWq(($UGRX90Jicdrq6 zGM!KKZ1 z-K#gr)@T~c&}d@m$#*&23&%9?oRc5};%eio3+X5dMxW;G`5M=I0#89eBJl~Seg6Rm zj;(LTi}Y zUdNB^A>q{vdh)A|vLarftvD!{>Mqt=bI_QE2h`tB-PX9SSNa`L5WjS;veFzAw!89` z5Nlyzz#!+t^K>I(92N!^6R{oWw^JR5lFsa1>frY@mQK0T9H~2uz}eX=aNb%QGD{dQ zz8&USp*E<^>`CW^4m|nmI`d&Zb}k_|4Kx;b{8uGA;xr*QmuIICa|!LBf_rrYDCkf1 zw9~Z5BL~nGBxcfQSJf0fEA=ng0X1S^f^1J$+{Eb8D}2cLi{>;l(hPd8U`cVD5e{-m zx-_o2?0Ia5{jPCHVkY|g`gz)do^<{!U} zf1f479`vj0)iiK#Ks$B(E=fq`$+&>0FQ1zcAMlcc>+ro%#PdY4?=&rocyE@eH$_tm zmQHwbW|Rjm7RzPli0@R6j>`kEfoK07-q_tepN6O170Ti}J!zddYJ=*{w6)_}&qINN zV$#$*Y&)@a5Z^Z$W{{Ya%#u;g?UWAl$iE}tDuEUFQ=r5A)u^6CpHv($OW*sxU%K}= zLcIow*{&2QI08G&OHB!NoLR~y)+%EqH?V3)Xi(pR%mi}KsUy0oY+wzXQ;Dm#ac;|E zY5&gkXxN@W@0c)KhVI{t{{o1qmNa+f$VhKJ7&S>{MVUx%hyLA`5Adq<6jfoYX|<5V zE(-lYT}Xw6m92e0jF(0Adp``bGh&B8hiEl;5Mrt{$EluBAvhRgjC7VqKJNianb2d| zQaGS&zJjB=9V9J$AutX7U=|2`muOizT`wwn@aJbg~aX{lt`aq)7?{6lc(?*1it$%&52 zpD2Q&Z-CM+yRFdFH@xaS$`0J(x0}*^k(^-*zkGq$UM5hdSoq$A`L~eWbD@$_)+B2( zoX$!?YZzgK2AkroiXf1nbHC(PG4ds@V%O-b_2peh#V~IGo(`K`R=4ZP=4f2F)D9)2 zyHJaKcYF=%bsW2mcBU6-#EjnuU{9GAE$V)Cf!m$Om1Y1!)WZF?3caAy;vi8+HJf~V zF>^QrT78-R2tA`Yyt`G{4chelww#_0KV2)IDdA_uh~O3-j7@Gx26HwN$Smf7YG?T$ z%mp1U*fi}g&mjm4b83%uwPJ!SJ3rTX1~Tpe=8W&xFd@5jrj?iu)B@n38LTqikSGQM zZ}FHTLcXC;ji&3wt@}AgLc0Z3^)x{gX!GXyxBUt&D<96{ME5J$BLyIm$rWA;R!x{0 zOn{$geD3sp9$bT@;}oiu%leeHuVOF4K07uc`r>(#lDSatj#T(Bh0T@il0h#$DwFob zY~LwJnrmxWeYt-uEZTHSd)Vgh5QcO0uOqgI;HpydxuUj!otDCvVi@RZ?Dtzwi8Ah( z`MdH`Z(drdtkXe6uu)Jh zi2-R_YpzluV5B|*eS^(72e6|9&1hy)Ut;m^Ey8i`p^50BN4~*XR*t45ebc<4<0?W? z$d<&1j~F;I=byBOKN(H_`NM?|rghfZgg*K1B#4~{xqhGE6h`gte}jnw#`2L7w&N2A zFo=c;H}9yp$fbD>OS?>K^bYLU@!zPlzHVxnJ)QMOnmn%i{Wtp=xZ{Js5|?q2eFK#Q zT22PY-R`#O<9+B2N7Q3}m)&O4rTrcVlK~~5`_&Gtt1ro|{t(z^6kh&ENwUa~fGS44 zjl-k*e~(DWHQo~ub@?%e%z6vBH4p5&1X(s`JU&3sBsr*?7ocdMD|hW7g%qO=Mm@kD z&i~}e=s}zbb#bZhvuxrA#Gv7N;P|KUpxA;FjVMjBN@Gd|2J{RdxOuxrBM0Yds1ZNx zWL=IqLw)_A7wNaF8O<4=Lk@=)ZS=-oHiO>bdjll7cwoq)%*tcX_g`W=dLIE{*UAqa zSK~UE5I8?WWmn#u{%z=@VelEauhK;&FwpdVH-zgvLAvA;{U=N>iIaq{(N?(V>QRS=gH z)S7KVBGM{vmTEi~WB~7TaAP48UAPre+ovH0vGurO4wHI=YfH^p{gtPX&fFMte$<4fSZFP` zn#{Z{a7=s2URelZ0(Y+RK>wkj(w~i$!QPCgE=E;wF3{O7*esUr9eQV(`4pn2jfL6< zDgQDKi&X+hk_I3(`LQkr-AP&dluO$_q2H94o-HvF?iVkcQV zubi1u36zmqBH4o{6iRop+?TgUrkpWqoS=|5(AmSP?Osgysdk7O9@Rew(!j7 z`m2wglsGQ_u}Iw9RX|F|!a!lxu3VUiaSi_vD^O4d`ol?mzzE>V7XKMDDC_pz4Bx$@ z=7uQ1zVu0Bg$5txP%xN}bL5l`i(X?^+`y8R!7_SKb3t?BT`mZM&lRW!^*=yb65Ka~< z^cK_v`QCoh9uM_({a8iC&)6v%k&&)mgI|AM^f06>!5a{#w)t`0oa)(gmIHbXGD5R9 z{6VQ0O^hY+A`*8iBcr6(L}P$n-X_ZR7)v+!?=p(70Y;$~$&Q_0h*+d25C&E_;KnQU zbkj(^+@mn;Z_=$*!om7$intNOR(&0CVZ;5u=d-QyTT9~BoC0B-0Klw{d76S8KW(a@ z&_uWlJ*bP+-`1%+HGCb7q$rPl)GTwnpdQWmSP2x^%(A(FvbujYim@P71@l!g)obQ= zQQFYP{SlMKzP$`vroUf!jF{?l$Z!CHt4S2jA>$ay4WYC;XJoQBVZ>CGE;wEG5>1m6#zg!nFC?_Ut2r!E@?`WYIt5o#E4ZcE|s zqVri_xM^^g8GZIy>ug;&zPL%l_-fPV-c~xmNQw=MI$*r{x7a!sH+g zZv)OmrN?SSu^oq1N{tK{Zso1OZr6TIlXE=o$60|_xAn&a^Z%`QD%pA+VKEPK3lLMe zZ{N>h1v+~wF6DEy_Pvz@BOlb#e_MD1&NlRbij0T@rQ;Vaqiis)2hR&eDeXaJkE+BT zm=4~F&XfY2E9fk^jEyI@8c#SKzK~RRE^tP=Ln>2H-c1? zqQpyQ-OQS8{9YZuigO+VbFI+iDFE^oogWcMM2wEcMNcG3)u%R#(MlB?BK<5|0CA&k zST0=__fa2BPhWXblRkJzOv*}q3pA9?p&1|Siw^in)ZgOmyr95#SfN5)#~Ud z32gqj^!6Eq;Z}Zpyr}%-+nnyoQ&y@^06!ELts}2v1jvU<}pSXhjWdXCmhHo9gYy;uiGocVj0=;2}QR z0I$2pBUCHz{;b!TnN&(uBlu8|K_|b4euw$^)adMpwawWccRgWd&!6-Xa#uNJNM?b> zcTukPgSO+_PDhMjS}qAoIA&#Vk9`%&YPc^cF|do9w%*V*Pc~;(XtE*R@t`4RWexb$ zr34h3qohd;B3R5FH${C*;nQoL5q0ohy=FWVD9cv+!Ptc?#40W_-Xf#?xN4#b?QS>o zs&uqC0_}`>tQ{sB^PvzLpt~)w01nA2n!Nl`!OgNSv@a7!YYVX$vYOHN+pA^V5#m`Y z_bHh1hZ0aiSk)*|PHt+f%AnW%f^qA`s3SN;PAHMOn3xL#m+6l!CJG_MgItout7y1^ zf5D{fvcx~PST;DQ7QTwBU34fvho&LmJTekd=YtF97*lZCLNrN?bqNh^^;qvD9@D-fIE)c$eUnc~~E>zoPmUxRO8AHx{ZR*2yKyU zLDAuSN83X#ayCL_i^VYHrW0dL7n~Q`ruj?ExLkmzjqC%Ln)bg`x7P&d0lYoBo@N!XNDhtB%Z!j_zaOqqi zUKNsqKwBS>mI{B5G77g7${GGr05>W|iodP5iM>>uEGB`E$qLo0QMATY-L&GoLDWqg;1U|aS2G{~CfW-fSgpr?6AV85qbE@3d-SF24LL)DUrJyYumJ@wJ5%c+Mm!KBy%&OH_a~=g;FeZL1efZHN?uDdun=55zjbKCskeszGA`p z2;qZ-58f41t<7N*{9{GU_?!aPXV*iGliS-H5;yMut58>5q zfz4t~2i={0WToWHNIrwHzlTLXW^YTq%|TyVG`ppmw~dfwA&^%1Ny3XN-FEukEeflB zUOZYH(Vbz(RIo71z?9Y^FNDQaBL)$SNS#`e-Eo}Nufd|lZ~q^nxZZr2Q)BFGHgs zh+SjJC8Ueqz17;ESn7asRwvtNKKD3@+K3_SM-SxQ$^|XygdaMP>sXy|Y-W?ot9pVK zUWCK%u5JviqD2W{p-YN;irdU!(NERw!q3ZNYdr93K5GQFetX_y1KL{~rLa5;y$+!g zEg*J9M~q*tcEiAJ77duY@q>|uDcmOE1^R5M%fV*^3%1;#S%b)Q72miyLyN{(SqS&p z?$6ItHR|AA1|KS%T9KCF=b)Xc(0QlxOtY+mh}L%KyT58zsb~i%1Y;b*fC{vWhIUdN ztxp|M*2#*MBXVq&vY^rA#W3`s8LlqsF1kd9^nf*Xc3&to(n)Dy@^CBBNz~^Uu6HfP zKp5)>(+4b8dXwdv3%=NrxIh|h@=~TzcJw>@c(fqnA-AjlY7gntC@6%Jn;;w+OPYvZ zXi3)iTRmF-ha4XRJBdO1&o`7G@V-~E19H&6_GJ!QLNgs3L^BplTU1srdAg6Lmhn6# z{%`;Jo!*uyJI5geq~1Uwq_=hj8_iq@uGDmf^_GS+UKe2Nbj|ATEqd~DLWA#x)<{d9 zmnn=yv1yP)l4JDH#@(35jkz!*eEH_(oDIG@o)=e<)` zjgP_@jATu2I*RY7?vZ-hc;rsFHXQ)$3gU?)hTgV#(~97$q~1#TDaq35Ng_AtCN`Qy zEg;VHDAY0dJ0rkul)0%A11oy9Y|06f8eEv6f-*b3k|(j40F`xuZ?J!_+FWsY(Xzcq z=`2NPn=S-Sa^4)Ba%Gu}2qH2n^0awav7|&(YN@muv?6I~V!~eqxgVI$EcXZ`F`eDb z)fcY9cjS1Rc`9+&A;0*zp?jrXcg@eXe}DjK<|yEy7QP?p?W7D(PzdzqC5L75mMw1UAxHWD|lCMkYyLc;IIgac0O* ziEmjD*3#hVW#q4gXSNDVlhKwO$x*Ut$+hoGcEYI!R_q4*9|C*ntOGVMDKv}=t&u73 zoKClJT25wv`Fv$9sek+Tw;CHGr=^Kw>!|v4Ip9-2!2J!yd@MXI@OB`b3@xtSs2AFC zM1GjHAy+w)iQ{2e*WTWk%<({;7_e>26OdU*{trY5tT=UywyHJKo+L4dX;+y;_RpWR zTT0$;D%k-9meTG7dC4Vg@MDd{CuQ%YFpfx1@Kc^$Mskqcp`j8c>bs#Sf>!byQ*m-> zB=ThJExg+yssaJk=^%W$60Zz~1grkOkw{GEnk;r^smn%JP7V1HA8y;3dCCEoXB``f z*pGd^yAW)~2=wA@a+~^v^0V#vpjtig1=vS2f87z)a0W;(#H|@oEpm9iXx8SxXS(N^ z0uL+)_(AT7zntO3Kt8KY&ErrXf1Rksc+OZqwYwMkki5XTu?a2rx zx0QDE4e92#AFnRG(e?rrlC(v{Bo%=erHa`ZQxrrTs0?cH?n^$%Iq`qR+;8O~_Tu=* z)=?&2Pe+!vKbrVA`X(XH_+1L1CUgvj&F^-tN~Fab$sYDaisS7<@dH`}=ekC>;8+81KpOzAbdbFQm>NDe^0 zKc;_~OTtJ;&P4geUY;W%XO&0OEJ1s?w+o8HNjlvsOVr$_LFJ9Su0rtnANIuHmmG%x z%rQ8V_8ur)Wq?LI3gD9_5f$diX4vBLto+INp`Q^^(IF#`a zc8S3_Hhz1^;w!swH2WdVm9T?CDYdAwAvmJ;M#>o4mLJTF=)=pr<~gnU1pKe*JxzC* zC;B^z4D4J1G{9v`bU~K@BO0o%%-OCZ9XnaB?pM_NWW3X0sxh!Ax+y`h@F?)98+ty_ zz#l2)Ze5V399PKJV52OB!OeuS`Q!wh6+@p?7Twc-j1d@W1YsLIe$|hIZz9UbSA+sa zr)}G^o6_y)ey5M>bpPhNZSc-l3@*kY$JnWT#lEJ;nw7i{Hv-lQr*pr;Sj7Ufi=SmO zA}ahQHDLf-k^r^(txxHMTREuve-*-Z9Wq}KJ7NF)Bq0{=$@;68`!L;LGi_l~6mT1y z3~*tYzBSSec(J(p&5n~5evlb#g&0p=`4M4fYiWGM!QB)-s{CWs6L*1d@EFGcMqlP| zjRXbLdwq>D&fi-0Bze0RO1|2iChz#zyF+sw)nfgl#Ac1mCB#cKiX~h!Cy~@Qv)XOt z;m+XsVZf{Byxbo%8*EIfa*{kpZ?gzqC#wpz$R<#~R5M}p`sX6u;qCoHy6OhHlJ*yj zk07Ych16h{5ayHOVwB5y@baV#rSP%O>|yNga>ujzPN!v7Cq!4c6~nWcl+HBH{-F}m zv7=YWKcE+ISzbHzxF!4uKih?O`#UqIwirOo0_fBSBWgir;F;UWLV>V52nSB&Q3lu^ z!O>Fy;3s)Gj&rBUikC~k$>H!J?e5PvAm=M*vdH=}9yJWS3Dq`dEKiwvoy~hUJDy9{ zu&jjg5dDgEZT~eJeUdZKtRbQy~Aj|8NxT#eb2%NFzd(Jo&A zt>!cKuQ)#)cvN)E-pPv4)z>y)$J7~Cl*@Acf>=ug=A0}zuHyW_B(+!}-aQk6zMK4# zumc*-44}B;)(y}>8*UXrS%hk8J+@*v3pOEMSD3MD@xr@Ac^exg^m?=R9fHl_tVYPW zBZ)zqso6)_{}07iMe{*Eq6GK_RSk-eO2gJgI z%@wqp(qRzcMvfNXC1L2rPheU1v79LT13m0ISri2$DesFEk6wVo&gPHH-yvW^OhM=t zz`*%uY_lAU{aAI7XZ#_kGv`LO9_5dp0@Xz75+#I#+OMJ{sLx05f8%piQ;0lJxZ&{V zHVCt^p*5KWnt1%o%Kdr5-4bDH2|>+Zv1`|I0mnF-3*d(ij^kTN|(Mt7>qsa3k|}%gEh1RR!p9 z-zj!{-s${}JGf1PFoRiofJvHsO~hyTs6b`Ao7FM8jzG;Y@t>g22;4plCOyg+v5u#j znQMQ607GWO%+xQ=RW!cU@Q#J`el!Vxr8CH;eC~H%AwN)5es$g1#0Up(C>ohYZ}}fo zH$9nh{z`iHggE#4bR_JhnQ&x!oh)~CtiQ;>NVi0zH!P)Rs74Ihg{0J?=07vB%HS#YCoHt zX`ZU6f!Sp{HtY+n@SHN*8Wr2pvA=Bz?2nW>tJyk$ExO}_YrUfBO@1$RN^)}mn|CZj zEe1hvRrB_a1nu>@;R#eR(Ob+Dk2%B8%*K~spaxXz{>Pea@ueqR>saNNzNQUf{4GDp zNyZb|F|)Xfuz0DDs7$eOh9a0ztS+B~&)b1J^eJ;}8~vZp!n_cWjSuKn;0A3iRL$!@ z{?oynGG{}CS?vaiZ-&BhpQ|Kq3f-|^}N$*U|_3@xCdHCRW?Oz zvJD!ZfPN;4xOPYiO8rqIQbRlQLkA{1iAD`H9ku5@EoZ+gB!1HhOI~gQj+psd>4>H0 zVE8+P?Z)p^)};&Db|(a=bnma90z@HxzNbgcUcFJ?XW@r?KkNU>?bJXKWx`F$VZ0NN+d1z!1l}D5>g$%%= zlD)LBS4}^YA=nU2nQI78ZxNLc!W}SgGVs>OV$}j0z7#GO6a$WaOJ(!2X_&&(+3{G4 z6B*@!1yZWR`hhp>v0N2iK21F_jGzzsZ%>lurdnW}V~D_%OCO{QvEPMHY7xezU`2XL zOe1kd7uwnjY7&>51vNQ%(;Aw{w@8Qi^w%YF>_J0@9effD=D2Nl=-Qs{vjD#lil*_E z@FcZt$N2q}Ki%2~Xqa#JH^;xGie@cq`FmwlrlNhW09%^z%Dy?TK2~@#=icvm>=-IG zSrdel-?t4rXz2pCF>0jE%P|;|Yr~P?k z{-v6Jw_#NFa66Rgq=q`*m{o9YE&W`!xlmsl7DKtUN4QHYffkV@K#x97^bq9}B>rvfk%Pce#wNx+dJ04KXZ`X6#*)s*_T zeSo{iZ7=d1xhF#GIi{u-zuW{XABhF#%AEJoicZ=XGJ`KuHc$+3=g2gB52cNe$|<2w z2ZRTmk@{zENPOq=(+jav+>)@g-5;>#T_BI5@k4Jr+4NrOBIbi3W)WQpXo#qOTY}twoJ(rDA1;gVZV&A5W8PY#_85$Cr1xg zn(p_{OcIa2>();lexsut<5#}W$WTQb0W3zQC(~|oDxi;BzzO*rxTg@r9besn7IKz^ zyu~BWgovwx5vj!k)b6;i{BZ4Z#hw<_?Y)$M#-*O0v-1AGwQb`LG|O!AN9Lu!|9LZJ z`=9CYD!6Gd0CN?SW2h1;N1R3)|5T+w8x$w&W(dx7W8fmFkWRw5nB)SM(!id9E2x%# zq6(1TAWn+k7ID@gI8Ws+`_s{pMwaSo8Exs)Y@j3&hSC^C>l|z9V{K`Xl zVme2ZRK^WlErA82ZhytVAMQn_nvnc%emex+5n045Ekju@)2@PA=?x0_dl22>f;MRB|BfWMJNDdBcSMi zN87&PmE@}p^2Ah83tKj4G{(s+IKlHGh$-aeQ;58h+ijEXuj)+8DC-!R*Zz{{0z+}I zo9stRRk+9WfYWs4e;{L;!iz$v3Z)PLXs#D8$VN zOI|;s>m!l2#+WwTBB7?JftQB3BX0y34O6tbHWuD=j2oe-f+2cprZyEIw*LwV5}%k( ztohCGC32~8_7x18L5&?AM>5=(wIg=yb#92|!FGG0{|aaS$cb8s5rx?Q5q=ei2okAs zde*?+Bo7bAqZT1(<^aE7KBTxJLQJeo)~P(j$!y4A+>1Y2;L54q2fmj33L)1{8;UB#^L-liB%2XPY*YwfxP~MLu{=m9q9@2J*3v)Lr#@y+QE;l47__ zCsk)6XS96QiX%h8@ib?H=U7tqtwDB5f%4eSKKD_=uNKI?9bn@5?dB1S`8PTQR@M|? zD|2V@FgeF0tq2m(php^geZ<2Ij7fI30_3w<=OH`o_LQ%8lWX@_w+>3!lZc=1.10 +tested-with: GHC == 7.10.2 + +library + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: src + exposed-modules: FuncTorrent.Bencode + , FuncTorrent.Metainfo + build-depends: base >= 4.7 && < 5 + , bytestring + , containers + , cryptohash + , parsec + +executable functorrent + default-language: Haskell2010 + ghc-options: -threaded -rtsopts -with-rtsopts=-N + hs-source-dirs: src/main + main-is: Main.hs + build-depends: base + , functorrent + +test-suite spec + default-language: Haskell2010 + ghc-options: -Wall + type: exitcode-stdio-1.0 + other-modules: BencodeSpec + , MetainfoSpec + hs-source-dirs: test + main-is: Spec.hs + build-depends: base + , functorrent + , hspec + , bytestring + , containers + , QuickCheck + + +source-repository head + type: git + location: https://github.com/vu3rdd/functorrent diff --git a/src/FuncTorrent/Bencode.hs b/src/FuncTorrent/Bencode.hs new file mode 100644 index 0000000..294ad89 --- /dev/null +++ b/src/FuncTorrent/Bencode.hs @@ -0,0 +1,97 @@ +{- + - Copyright (C) 2015-2016 Ramakrishnan Muthukrishnan + - + - This file is part of FuncTorrent. + - + - FuncTorrent 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. + - + - FuncTorrent 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 FuncTorrent; if not, see + -} + +{-# LANGUAGE OverloadedStrings #-} +module FuncTorrent.Bencode + (BVal(..) + , bValToInteger + , bstrToString + , decode + , encode + ) where + +import Prelude hiding (length, concat) + +import Data.ByteString (ByteString, length, concat) +import Data.ByteString.Char8 (unpack, pack) +import Data.Map.Strict (Map, fromList, toList) +import Text.ParserCombinators.Parsec +import qualified Text.Parsec.ByteString as ParsecBS + +data BVal = Bint Integer + | Bstr ByteString + | Blist [BVal] + | Bdict (Map String BVal) + deriving (Ord, Eq, Show) + +-- getters +bValToInteger :: BVal -> Maybe Integer +bValToInteger (Bint x) = Just x +bValToInteger _ = Nothing + +bstrToString :: BVal -> Maybe String +bstrToString bval = unpack <$> bValToBytestr bval + where bValToBytestr :: BVal -> Maybe ByteString + bValToBytestr (Bstr bs) = Just bs + bValToBytestr _ = Nothing + +bencStr :: ParsecBS.Parser ByteString +bencStr = do ds <- many1 digit <* char ':' + s <- count (read ds) anyChar + return (pack s) + +bencInt :: ParsecBS.Parser Integer +bencInt = do ds <- between (char 'i') (char 'e') numbers + return (read ds) + where numbers = do d' <- char '-' <|> digit + ds' <- many digit + parseNumber d' ds' + parseNumber '0' [] = return "0" + parseNumber '0' _ = unexpected "numbers cannot be left-padded with zeros" + parseNumber '-' [] = unexpected "sign without any digits" + parseNumber '-' (d'':_) | d'' == '0' = unexpected "numbers cannot be left-padded with zeros" + parseNumber d'' ds'' = return (d'':ds'') + +bencList :: ParsecBS.Parser [BVal] +bencList = between (char 'l') (char 'e') (many bencVal) + +bencDict :: ParsecBS.Parser (Map String BVal) +bencDict = between (char 'd') (char 'e') $ fromList <$> many kvpair + where kvpair = do k <- bencStr + v <- bencVal + return (unpack k, v) + +bencVal :: ParsecBS.Parser BVal +bencVal = Bstr <$> bencStr <|> + Bint <$> bencInt <|> + Blist <$> bencList <|> + Bdict <$> bencDict + +decode :: ByteString -> Either ParseError BVal +decode = parse bencVal "BVal" + +encode :: BVal -> ByteString +encode (Bstr bs) = pack $ show (length bs) ++ ":" ++ unpack bs +encode (Bint i) = pack $ "i" ++ show i ++ "e" +encode (Blist xs) = concat ["l", concat $ map encode xs, "e"] +encode (Bdict d) = concat ["d", concat kvlist, "e"] + where + kvlist :: [ByteString] + kvlist = [encPair kv | kv <- toList d] + encPair (k, v) = concat [encode . Bstr . pack $ k, encode v] diff --git a/src/FuncTorrent/Filesystem.hs b/src/FuncTorrent/Filesystem.hs new file mode 100644 index 0000000..66468c4 --- /dev/null +++ b/src/FuncTorrent/Filesystem.hs @@ -0,0 +1,30 @@ +{- + - Copyright (C) 2015-2016 Ramakrishnan Muthukrishnan + - + - This file is part of FuncTorrent. + - + - FuncTorrent 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. + - + - FuncTorrent 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 FuncTorrent; if not, see + -} + +module FuncTorrent.Filesystem + (new + , FilesystemState + , getBlock + , putBlock + , getStats + ) where + +data Filesystem = Filesystem { pieces :: [Piece] + , stats :: Stats + diff --git a/src/FuncTorrent/Metainfo.hs b/src/FuncTorrent/Metainfo.hs new file mode 100644 index 0000000..596ad68 --- /dev/null +++ b/src/FuncTorrent/Metainfo.hs @@ -0,0 +1,145 @@ +{- + - Copyright (C) 2015-2016 Ramakrishnan Muthukrishnan + - + - This file is part of FuncTorrent. + - + - FuncTorrent 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. + - + - FuncTorrent 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 FuncTorrent; if not, see + -} + +{-# LANGUAGE DuplicateRecordFields #-} + +module FuncTorrent.Metainfo + (Info(..) + , Metainfo(..) + , DynamicInfo(..) + , torrentToMetainfo + ) where + +import Prelude hiding (lookup) +import Data.ByteString.Char8 (ByteString, unpack) +import Data.Map as M ((!), lookup) +import Crypto.Hash.SHA1 (hash) +import Data.Maybe (maybeToList) + +import FuncTorrent.Bencode (BVal(..), encode, decode, bstrToString, bValToInteger) + +-- only single file mode supported for the time being. +data Info = Info { pieceLength :: !Integer + , pieces :: !ByteString + , private :: !(Maybe Integer) + , dyninfo :: !DynamicInfo + } deriving (Eq, Show) + +data DynamicInfo = SingleFileInfo { name :: String + , lengthInBytes :: Integer + , md5sum :: Maybe String + } + | MultiFileInfo { dname :: String + , files :: [FileInfo] + } + deriving (Eq, Show) + +data FileInfo = FileInfo { lengthInBytes :: Integer + , md5sum :: Maybe String + , path :: String + } deriving (Eq, Show) + +data Metainfo = Metainfo { info :: !Info + , announceList :: ![String] + , creationDate :: !(Maybe Integer) + , comment :: !(Maybe String) + , createdBy :: !(Maybe String) + , encoding :: !(Maybe String) + , infoHash :: !ByteString + } deriving (Eq, Show) + +mkInfo :: BVal -> Maybe Info +mkInfo (Bdict m) = let (Bint pieceLength') = m ! "piece length" + (Bstr pieces') = m ! "pieces" + private' = Nothing + bdictfiles = lookup "files" m + in + case bdictfiles of + Just fs -> let (Blist files') = fs + (Bstr name') = m ! "name" + in + Just Info { pieceLength = pieceLength' + , pieces = pieces' + , private = private' + , dyninfo = MultiFileInfo { + dname = unpack name', + files = + map (\(Bdict f) -> + let (Just len') = bValToInteger (f ! "length") + (Bstr s') = f ! "path" + in + FileInfo { lengthInBytes = len', + md5sum = Nothing, + path = unpack s' + }) + files' } + } + Nothing -> let (Bstr name') = m ! "name" + (Bint length') = m ! "length" + md5sum' = Nothing + in + Just Info { pieceLength = pieceLength' + , pieces = pieces' + , private = private' + , dyninfo = SingleFileInfo { + name = unpack name', + lengthInBytes = length', + md5sum = md5sum'} + } + +mkInfo _ = Nothing + +mkMetaInfo :: BVal -> Either String Metainfo +mkMetaInfo (Bdict m) = + let (Just info') = mkInfo $ m ! "info" + announce' = lookup "announce" m + announceList' = lookup "announce-list" m + creationDate' = lookup "creation date" m + comment' = lookup "comment" m + createdBy' = lookup "created by" m + encoding' = lookup "encoding" m + in Right Metainfo { + info = info' + , announceList = maybeToList (announce' >>= bstrToString) + ++ getAnnounceList announceList' + , creationDate = bValToInteger =<< creationDate' + , comment = bstrToString =<< comment' + , createdBy = bstrToString =<< createdBy' + , encoding = bstrToString =<< encoding' + , infoHash = hash . encode $ (m ! "info") + } +mkMetaInfo _ = Left "mkMetaInfo: expect an input dict" + +getAnnounceList :: Maybe BVal -> [String] +getAnnounceList Nothing = [] +getAnnounceList (Just (Bint _)) = [] +getAnnounceList (Just (Bstr _)) = [] +getAnnounceList (Just (Blist l)) = map (\s -> case s of + (Bstr s') -> unpack s' + (Blist s') -> case s' of + [Bstr s''] -> unpack s'' + _ -> "" + _ -> "") l +getAnnounceList (Just (Bdict _)) = [] + +torrentToMetainfo :: ByteString -> Either String Metainfo +torrentToMetainfo s = + case decode s of + Right d -> mkMetaInfo d + Left e -> Left $ show e diff --git a/src/main/Main.hs b/src/main/Main.hs new file mode 100644 index 0000000..1f79023 --- /dev/null +++ b/src/main/Main.hs @@ -0,0 +1,8 @@ +module Main where + +import FuncTorrent.Bencode + +import Text.Printf (printf) + +main :: IO () +main = printf "hello world" diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..3bd7fc6 --- /dev/null +++ b/stack.yaml @@ -0,0 +1,66 @@ +# This file was automatically generated by 'stack init' +# +# Some commonly used options have been documented as comments in this file. +# For advanced use and comprehensive documentation of the format, please see: +# http://docs.haskellstack.org/en/stable/yaml_configuration/ + +# Resolver to choose a 'specific' stackage snapshot or a compiler version. +# A snapshot resolver dictates the compiler version and the set of packages +# to be used for project dependencies. For example: +# +# resolver: lts-3.5 +# resolver: nightly-2015-09-21 +# resolver: ghc-7.10.2 +# resolver: ghcjs-0.1.0_ghc-7.10.2 +# resolver: +# name: custom-snapshot +# location: "./custom-snapshot.yaml" +resolver: nightly-2016-07-10 + +# User packages to be built. +# Various formats can be used as shown in the example below. +# +# packages: +# - some-directory +# - https://example.com/foo/bar/baz-0.0.2.tar.gz +# - location: +# git: https://github.com/commercialhaskell/stack.git +# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# extra-dep: true +# subdirs: +# - auto-update +# - wai +# +# A package marked 'extra-dep: true' will only be built if demanded by a +# non-dependency (i.e. a user package), and its test suites and benchmarks +# will not be run. This is useful for tweaking upstream packages. +packages: +- '.' +# Dependency packages to be pulled from upstream that are not in the resolver +# (e.g., acme-missiles-0.3) +extra-deps: [] + +# Override default flag values for local packages and extra-deps +flags: {} + +# Extra package databases containing global packages +extra-package-dbs: [] + +# Control whether we use the GHC we find on the path +# system-ghc: true +# +# Require a specific version of stack, using version ranges +# require-stack-version: -any # Default +# require-stack-version: ">=1.1" +# +# Override the architecture used by stack, especially useful on Windows +# arch: i386 +# arch: x86_64 +# +# Extra directories used by stack for building +# extra-include-dirs: [/path/to/dir] +# extra-lib-dirs: [/path/to/dir] +# +# Allow a newer minor version of GHC than the snapshot specifies +# compiler-check: newer-minor \ No newline at end of file diff --git a/test/BencodeSpec.hs b/test/BencodeSpec.hs new file mode 100644 index 0000000..d6d2cb5 --- /dev/null +++ b/test/BencodeSpec.hs @@ -0,0 +1,53 @@ +{- + - Copyright (C) 2015-2016 Ramakrishnan Muthukrishnan + - + - This file is part of FuncTorrent. + - + - FuncTorrent 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. + - + - FuncTorrent 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 FuncTorrent; if not, see + -} + +{-# LANGUAGE OverloadedStrings #-} + +module BencodeSpec where + +import Test.Hspec + +import Data.Map.Strict (fromList) +import FuncTorrent.Bencode (encode, decode, BVal(..)) + +spec :: Spec +spec = + describe "Bencode" $ do + it "encode-strings" $ do + encode (Bstr "") `shouldBe` "0:" + encode (Bstr "spam") `shouldBe` "4:spam" + it "encode-ints" $ do + encode (Bint 0) `shouldBe` "i0e" + encode (Bint 42) `shouldBe` "i42e" + it "encode-lists" $ do + encode (Blist [(Bstr "spam"), (Bstr "eggs")]) `shouldBe` "l4:spam4:eggse" + encode (Blist []) `shouldBe` "le" + it "encode-dict" $ do + encode (Bdict (fromList [("spam", Bstr "eggs")])) `shouldBe` "d4:spam4:eggse" + it "decode-string" $ do + decode "4:spam" `shouldBe` Right (Bstr "spam") + decode "0:" `shouldBe` Right (Bstr "") + it "decode-ints" $ do + decode "i0e" `shouldBe` Right (Bint 0) + decode "i32e" `shouldBe` Right (Bint 32) + it "decode-lists" $ do + decode "l4:spam4:eggse" `shouldBe` Right (Blist [(Bstr "spam"), (Bstr "eggs")]) + decode "le" `shouldBe` Right (Blist []) + it "decode-dicts" $ do + decode "d4:spam4:eggse" `shouldBe` Right (Bdict (fromList [("spam", Bstr "eggs")])) diff --git a/test/MetainfoSpec.hs b/test/MetainfoSpec.hs new file mode 100644 index 0000000..93bf9ab --- /dev/null +++ b/test/MetainfoSpec.hs @@ -0,0 +1,46 @@ +{- + - Copyright (C) 2015-2016 Ramakrishnan Muthukrishnan + - + - This file is part of FuncTorrent. + - + - FuncTorrent 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. + - + - FuncTorrent 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 FuncTorrent; if not, see + -} + +{-# LANGUAGE OverloadedStrings #-} + +module MetainfoSpec where + +import Test.Hspec + +import FuncTorrent.Metainfo (Info(..), Metainfo(..), DynamicInfo(..), torrentToMetainfo) +import qualified Data.ByteString.Lazy.Char8 as BC (readFile, toStrict) +import qualified Data.ByteString as B + +spec :: Spec +spec = + describe "Bencode" $ do + it "torrent-file-1" $ do + c <- BC.readFile "data/test1.torrent" + let (Right m) = torrentToMetainfo (BC.toStrict c) + length (announceList m) `shouldBe` 1 + pieceLength (info m) `shouldBe` 524288 + pieces (info m) `shouldSatisfy` (\p -> B.length p `mod` 20 == 0) + let (SingleFileInfo name' _ _) = dyninfo $ info m + name' `shouldNotBe` "" + it "torrent-file-4" $ do + c <- BC.readFile "data/test4.torrent" + let (Right m) = torrentToMetainfo (BC.toStrict c) + length (announceList m) `shouldBe` 3 + let (MultiFileInfo _ files') = dyninfo $ info m + length files' `shouldNotBe` 1 diff --git a/test/Spec.hs b/test/Spec.hs new file mode 100644 index 0000000..a824f8c --- /dev/null +++ b/test/Spec.hs @@ -0,0 +1 @@ +{-# OPTIONS_GHC -F -pgmF hspec-discover #-} -- 2.45.2