congruence-1.2.7/000755 000766 000024 00000000000 14663721453 014153 5ustar00mhornstaff000000 000000 congruence-1.2.7/PackageInfo.g000644 000766 000024 00000012235 14663721427 016476 0ustar00mhornstaff000000 000000 ############################################################################# ## #W PackageInfo.g The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov #W Helena Verrill ## ## ############################################################################# SetPackageInfo( rec( PackageName := "Congruence", Subtitle := "Congruence subgroups of SL(2,Integers)", Version := "1.2.7", Date := "28/08/2024", # dd/mm/yyyy format License := "GPL-2.0-or-later", SourceRepository := rec( Type := "git", URL := Concatenation( "https://github.com/gap-packages/", LowercaseString(~.PackageName) ), ), IssueTrackerURL := Concatenation( ~.SourceRepository.URL, "/issues" ), PackageWWWHome := Concatenation( "https://gap-packages.github.io/", LowercaseString(~.PackageName) ), README_URL := Concatenation( ~.PackageWWWHome, "/README.md" ), PackageInfoURL := Concatenation( ~.PackageWWWHome, "/PackageInfo.g" ), ArchiveURL := Concatenation( ~.SourceRepository.URL, "/releases/download/v", ~.Version, "/", LowercaseString(~.PackageName), "-", ~.Version ), ArchiveFormats := ".tar.gz", Persons := [ rec( LastName := "Dooms", FirstNames := "Ann", IsAuthor := true, IsMaintainer := true, Email := "andooms@vub.ac.be", WWWHome := "http://homepages.vub.ac.be/~andooms", PostalAddress := Concatenation( [ "Department of Mathematics\n", "Vrije Universiteit Brussel\n", "Pleinlaan 2, Brussels, B-1050 Belgium" ] ), Place := "Brussels", Institution := "Vrije Universiteit Brussel" ), rec( LastName := "Jespers", FirstNames := "Eric", IsAuthor := true, IsMaintainer := false, Email := "efjesper@vub.ac.be", WWWHome := "http://homepages.vub.ac.be/~efjesper", PostalAddress := Concatenation( [ "Department of Mathematics\n", "Vrije Universiteit Brussel\n", "Pleinlaan 2, Brussels, B-1050 Belgium" ] ), Place := "Brussels", Institution := "Vrije Universiteit Brussel" ), rec( LastName := "Konovalov", FirstNames := "Olexandr", IsAuthor := true, IsMaintainer := true, Email := "obk1@st-andrews.ac.uk", WWWHome := "https://olexandr-konovalov.github.io/", PostalAddress := Concatenation( [ "School of Computer Science\n", "University of St Andrews\n", "Jack Cole Building, North Haugh,\n", "St Andrews, Fife, KY16 9SX, Scotland" ] ), Place := "St Andrews", Institution := "University of St Andrews" ), rec( LastName := "Verrill", FirstNames := "Helena", IsAuthor := true, IsMaintainer := true, Email := "verrill@math.lsu.edu", WWWHome := "http://www.math.lsu.edu/~verrill", PostalAddress := Concatenation( [ "Department of Mathematics\n", "Louisiana State University\n", "Baton Rouge, Louisiana, 70803-4918\n", "USA" ] ), Place := "Baton Rouge", Institution := "Louisiana State University" ) ], Status := "accepted", CommunicatedBy := "Graham Ellis (Galway)", AcceptDate := "09/2014", AbstractHTML := "The Congruence package provides functions to construct several types of canonical congruence subgroups in SL_2(Z), and also intersections of a finite number of such subgroups. Furthermore, it implements the algorithm for generating Farey symbols for congruence subgroups and using them to produce a system of independent generators for these subgroups", PackageDoc := rec( BookName := "Congruence", ArchiveURLSubset := ["doc"], HTMLStart := "doc/chap0_mj.html", PDFFile := "doc/manual.pdf", SixFile := "doc/manual.six", LongTitle := "Congruence subgroups of SL(2,Integers)", Autoload := true ), Dependencies := rec( GAP := ">=4.8", NeededOtherPackages := [ ["GAPDoc", ">= 1.5.1"] ], SuggestedOtherPackages := [], ExternalConditions := [] ), AvailabilityTest := ReturnTrue, TestFile := "tst/testall.g", Keywords := ["congruence subgroup", "Farey symbol"], AutoDoc := rec( entities := rec( VERSION := ~.Version, RELEASEDATE := function(date) local day, month, year, allMonths; day := Int(date{[1,2]}); month := Int(date{[4,5]}); year := Int(date{[7..10]}); allMonths := [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; return Concatenation(String(day)," ", allMonths[month], " ", String(year)); end(~.Date), RELEASEYEAR := ~.Date{[7..10]}, ), ), )); congruence-1.2.7/README.md000644 000766 000024 00000002144 14663721427 015434 0ustar00mhornstaff000000 000000 [![Build Status](https://github.com/gap-packages/congruence/workflows/CI/badge.svg?branch=master)](https://github.com/gap-packages/congruence/actions?query=workflow%3ACI+branch%3Amaster) [![Code Coverage](https://codecov.io/github/gap-packages/congruence/coverage.svg?branch=master&token=)](https://codecov.io/gh/gap-packages/congruence) # GAP package Congruence The GAP package Congruence provides functions to construct several types of canonical congruence subgroups in SL_2(Z), and also intersections of a finite number of such subgroups. Furthermore, it implements the algorithm for generating Farey symbols for congruence subgroups and using them to produce a system of independent generators for these subgroups. Congruence does not use external binaries and, therefore, works without restrictions on the type of the operating system. It is redistributed with GAP, but is not loaded by default. Therefore, to use Congruence, first you need to load it using the following command: gap> LoadPackage("congruence"); Ann Dooms, Eric Jespers, Olexandr Konovalov, Helena Verrill congruence-1.2.7/COPYING000644 000766 000024 00000043110 14663721427 015206 0ustar00mhornstaff000000 000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. 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 convey 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 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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 Library General Public License instead of this License. congruence-1.2.7/makedoc.g000644 000766 000024 00000001112 14663721427 015722 0ustar00mhornstaff000000 000000 ########################################################################### ## #W makedoc.g The Congruence package Olexandr Konovalov ## ########################################################################### if fail = LoadPackage("AutoDoc", ">= 2019.04.10") then Error("AutoDoc 2019.04.10 or newer is required"); fi; AutoDoc(rec( scaffold := rec( bib := "manual.bib", MainPage := false, TitlePage := false, ), extract_examples := rec( skip_empty_in_numbering := false ), gapdoc := rec( main := "manual.xml" ), )); congruence-1.2.7/lib/000755 000766 000024 00000000000 14663721427 014722 5ustar00mhornstaff000000 000000 congruence-1.2.7/doc/000755 000766 000024 00000000000 14663721453 014720 5ustar00mhornstaff000000 000000 congruence-1.2.7/tst/000755 000766 000024 00000000000 14663721453 014765 5ustar00mhornstaff000000 000000 congruence-1.2.7/init.g000644 000766 000024 00000001415 14663721427 015270 0ustar00mhornstaff000000 000000 ############################################################################# ## #W init.g The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov #W Helena Verrill ## ## ############################################################################# # read Congruence declarations ReadPackage( "congruence", "lib/cong.gd" ); ReadPackage( "congruence", "lib/farey.gd" ); # read the other part of code ReadPackage( "congruence", "lib/cong.g" ); ReadPackage( "congruence", "lib/factor.g" ); # set the default InfoLevel SetInfoLevel( InfoCongruence, 1 ); congruence-1.2.7/read.g000644 000766 000024 00000001236 14663721427 015241 0ustar00mhornstaff000000 000000 ############################################################################# ## #W read.g The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov #W Helena Verrill ## ## ############################################################################# # read the implementation part of the Congruence package ReadPackage( "congruence", "lib/cong.gi" ); ReadPackage( "congruence", "lib/farey.gi" ); ReadPackage( "congruence", "lib/random.gi" ); congruence-1.2.7/tst/congruence04.tst000644 000766 000024 00000010050 14663721453 020011 0ustar00mhornstaff000000 000000 # Congruence, chapter 4 # # DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! # # This file has been generated by AutoDoc. It contains examples extracted from # the package documentation. Each example is preceded by a comment which gives # the name of a GAPDoc XML file and a line range from which the example were # taken. Note that the XML file in turn may have been generated by AutoDoc # from some other input. # gap> START_TEST("congruence04.tst"); # doc/gens.xml:30-45 gap> FareySymbol(PrincipalCongruenceSubgroup(8)); [ infinity, 0, 1/4, 1/3, 3/8, 2/5, 1/2, 3/5, 5/8, 2/3, 3/4, 1, 5/4, 4/3, 11/8, 7/5, 3/2, 8/5, 13/8, 5/3, 7/4, 2, 9/4, 7/3, 19/8, 12/5, 5/2, 13/5, 21/8, 8/3, 11/4, 3, 13/4, 10/3, 27/8, 17/5, 7/2, 18/5, 29/8, 11/3, 15/4, 4, 17/4, 13/3, 9/2, 14/3, 19/4, 5, 21/4, 16/3, 11/2, 17/3, 23/4, 6, 25/4, 19/3, 13/2, 20/3, 27/4, 7, 29/4, 22/3, 15/2, 23/3, 31/4, 8, infinity ] [ 1, 17, 10, 26, 32, 18, 19, 27, 30, 5, 2, 2, 13, 28, 26, 20, 21, 29, 27, 7, 3, 3, 16, 31, 28, 22, 23, 33, 29, 9, 4, 4, 5, 30, 31, 24, 25, 32, 33, 12, 6, 6, 7, 19, 18, 15, 8, 8, 9, 21, 20, 10, 11, 11, 12, 23, 22, 13, 14, 14, 15, 25, 24, 16, 17, 1 ] gap> FareySymbol(CongruenceSubgroupGamma0(20)); [ infinity, 0, 1/5, 1/4, 2/7, 3/10, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1, infinity ] [ 1, 3, 4, 6, 7, 7, 5, 2, 2, 3, 6, 4, 5, 1 ] # doc/gens.xml:126-136 gap> H:=CongruenceSubgroupGamma0(5); gap> fs:=FareySymbol(H); [ infinity, 0, 1/2, 1, infinity ] [ 1, "even", "even", 1 ] gap> gfs:=GeneralizedFareySequence(fs); [ infinity, 0, 1/2, 1, infinity ] gap> MatrixByEvenInterval(gfs,2); [ [ 2, -1 ], [ 5, -2 ] ] # doc/gens.xml:148-154 gap> fs_oo:=FareySymbolByData([infinity,0,infinity],["odd","odd"]);; gap> gfs_oo:=GeneralizedFareySequence(fs_oo); [ infinity, 0, infinity ] gap> MatrixByOddInterval(gfs_oo,1); [ [ -1, -1 ], [ 1, 0 ] ] # doc/gens.xml:166-171 gap> fs_free:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);; gap> gfs_free:=GeneralizedFareySequence(fs_free);; gap> MatrixByFreePairOfIntervals(gfs_free,2,3); [ [ 3, -2 ], [ 2, -1 ] ] # doc/gens.xml:183-193 gap> fs_eo:=FareySymbolByData([infinity,0,infinity],["even","odd"]);; gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> GeneratorsByFareySymbol(fs); [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ] gap> GeneratorsByFareySymbol(fs_oo); [ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> GeneratorsByFareySymbol(fs_free); [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ] # doc/gens.xml:205-229 gap> G:=PrincipalCongruenceSubgroup(2); gap> FareySymbol(G); [ infinity, 0, 1, 2, infinity ] [ 2, 1, 1, 2 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ] gap> H:=CongruenceSubgroupGamma0(5); gap> GeneratorsOfGroup(H); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ] gap> I:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(3)); gap> FareySymbol(I); [ infinity, 0, 1/3, 1/2, 2/3, 1, 4/3, 3/2, 5/3, 2, infinity ] [ 1, 5, 4, 3, 2, 2, 3, 4, 5, 1 ] gap> GeneratorsOfGroup(I); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 11, -2 ], [ 6, -1 ] ], [ [ 19, -8 ], [ 12, -5 ] ], [ [ 17, -10 ], [ 12, -7 ] ], [ [ 7, -6 ], [ 6, -5 ] ] ] # doc/gens.xml:250-257 gap> IndexInPSL2ZByFareySymbol(fs); 6 gap> IndexInPSL2ZByFareySymbol(fs_oo); 2 gap> IndexInPSL2ZByFareySymbol(fs_free); 6 # gap> STOP_TEST("congruence04.tst", 1); congruence-1.2.7/tst/congruence03.tst000644 000766 000024 00000002164 14663721453 020017 0ustar00mhornstaff000000 000000 # Congruence, chapter 3 # # DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! # # This file has been generated by AutoDoc. It contains examples extracted from # the package documentation. Each example is preceded by a comment which gives # the name of a GAPDoc XML file and a line range from which the example were # taken. Note that the XML file in turn may have been generated by AutoDoc # from some other input. # gap> START_TEST("congruence03.tst"); # doc/farey.xml:59-63 gap> fs:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]); [ infinity, 0, 1, 2, infinity ] [ 1, 2, 2, 1 ] # doc/farey.xml:74-77 gap> IsValidFareySymbol(fs); true # doc/farey.xml:95-98 gap> GeneralizedFareySequence(fs); [ infinity, 0, 1, 2, infinity ] # doc/farey.xml:115-118 gap> List([1..5], i -> NumeratorOfGFSElement(GeneralizedFareySequence(fs),i)); [ -1, 0, 1, 2, 1 ] # doc/farey.xml:134-137 gap> List([1..5], i -> DenominatorOfGFSElement(GeneralizedFareySequence(fs),i)); [ 0, 1, 1, 1, 0 ] # doc/farey.xml:149-152 gap> LabelsOfFareySymbol(fs); [ 1, 2, 2, 1 ] # gap> STOP_TEST("congruence03.tst", 1); congruence-1.2.7/tst/congruence02.tst000644 000766 000024 00000007420 14663721453 020016 0ustar00mhornstaff000000 000000 # Congruence, chapter 2 # # DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! # # This file has been generated by AutoDoc. It contains examples extracted from # the package documentation. Each example is preceded by a comment which gives # the name of a GAPDoc XML file and a line range from which the example were # taken. Note that the XML file in turn may have been generated by AutoDoc # from some other input. # gap> START_TEST("congruence02.tst"); # doc/cong.xml:69-90 gap> G_8:=PrincipalCongruenceSubgroup(8); gap> IsGroup(G_8); true gap> IsMatrixGroup(G_8); true gap> DimensionOfMatrixGroup(G_8); 2 gap> MultiplicativeNeutralElement(G_8); [ [ 1, 0 ], [ 0, 1 ] ] gap> One(G); [ [ 1, 0 ], [ 0, 1 ] ] gap> [[1,2],[3,4]] in G_8; false gap> [[1,8],[8,65]] in G_8; true gap> SL_2:=SL(2,Integers); SL(2,Integers) gap> IsSubgroup(SL_2,G_8); true # doc/cong.xml:124-127 gap> G0_4:=CongruenceSubgroupGamma0(4); # doc/cong.xml:161-164 gap> GU0_2:=CongruenceSubgroupGammaUpper0(2); # doc/cong.xml:198-201 gap> G1_6:=CongruenceSubgroupGamma1(6); # doc/cong.xml:235-238 gap> GU1_4:=CongruenceSubgroupGammaUpper1(4); # doc/cong.xml:267-272 gap> I:=IntersectionOfCongruenceSubgroups(G0_4,GU1_4); gap> J:=IntersectionOfCongruenceSubgroups(G0_4,G1_6); # doc/cong.xml:299-306 gap> IsPrincipalCongruenceSubgroup(G_8); true gap> IsPrincipalCongruenceSubgroup(G0_4); false gap> IsPrincipalCongruenceSubgroup(I); true # doc/cong.xml:370-375 gap> IsIntersectionOfCongruenceSubgroups(I); false gap> IsIntersectionOfCongruenceSubgroups(J); true # doc/cong.xml:395-404 gap> LevelOfCongruenceSubgroup(G_8); 8 gap> LevelOfCongruenceSubgroup(G1_6); 6 gap> LevelOfCongruenceSubgroup(I); 4 gap> LevelOfCongruenceSubgroup(J); 12 # doc/cong.xml:415-424 gap> IndexInSL2Z(G_8); 384 gap> G_2:=PrincipalCongruenceSubgroup(2); gap> IndexInSL2Z(G_2); 12 gap> IndexInSL2Z(GU1_4); 12 # doc/cong.xml:440-452 gap> DefiningCongruenceSubgroups(J); [ , ] gap> P:=PrincipalCongruenceSubgroup(6); gap> Q:=PrincipalCongruenceSubgroup(10); gap> G:=IntersectionOfCongruenceSubgroups(Q,P); gap> DefiningCongruenceSubgroups(G); [ ] # doc/cong.xml:479-484 gap> Random(G_2) in G_2; true gap> Random(G_8,2) in G_8; true # doc/cong.xml:496-501 gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_2); true gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_8); false # doc/cong.xml:523-526 gap> CanEasilyCompareCongruenceSubgroups(G_8,I); false # doc/cong.xml:540-556 gap> IsSubset(G_2,G_8); true gap> IsSubset(G_8,G_2); false gap> f:=[PrincipalCongruenceSubgroup,CongruenceSubgroupGamma1,CongruenceSubgroupGammaUpper1,CongruenceSubgroupGamma0,CongruenceSubgroupGammaUpper0];; gap> g1:=List(f, t -> t(2));; gap> g2:=List(f, t -> t(4));; gap> for g in g2 do > Print( List( g1, x -> IsSubgroup(x,g) ), "\n"); > od; [ true, true, true, true, true ] [ false, true, false, true, false ] [ false, false, true, false, true ] [ false, false, false, true, false ] [ false, false, false, false, true ] # doc/cong.xml:569-572 gap> Index(G_2,G_8); 32 # gap> STOP_TEST("congruence02.tst", 1); congruence-1.2.7/tst/testall.g000644 000766 000024 00000000373 14663721427 016611 0ustar00mhornstaff000000 000000 LoadPackage( "congruence" ); TestDirectory(DirectoriesPackageLibrary( "congruence", "tst" ), rec(exitGAP := true, testOptions := rec(compareFunction := "uptowhitespace") ) ); FORCE_QUIT_GAP(1); # if we ever get here, there was an error congruence-1.2.7/tst/cong.tst000644 000766 000024 00000053247 14663721427 016463 0ustar00mhornstaff000000 000000 gap> G:=PrincipalCongruenceSubgroup(8); gap> IsGroup(G); true gap> IsMatrixGroup(G); true gap> IsPrincipalCongruenceSubgroup(G); true gap> IsFinitelyGeneratedGroup(G); true gap> LevelOfCongruenceSubgroup(G); 8 gap> DimensionOfMatrixGroup(G); 2 gap> MultiplicativeNeutralElement(G); [ [ 1, 0 ], [ 0, 1 ] ] gap> One(G); [ [ 1, 0 ], [ 0, 1 ] ] gap> [[1,2],[3,4]] in G; false gap> [[1,8],[8,65]] in G; true gap> G:=PrincipalCongruenceSubgroup(3); gap> ForAll( List([1..100], k -> Random(G)), m -> m in G); true gap> ForAll( List([1..100], k -> Random(G,10*k)), m -> m in G); true gap> G:=CongruenceSubgroupGamma0(3); gap> ForAll( List([1..100], k -> Random(G)), m -> m in G); true gap> ForAll( List([1..100], k -> Random(G,10*k)), m -> m in G); true gap> G:=CongruenceSubgroupGammaUpper0(3); gap> ForAll( List([1..100], k -> Random(G)), m -> m in G); true gap> ForAll( List([1..100], k -> Random(G,10*k)), m -> m in G); true gap> G:=CongruenceSubgroupGamma1(3); gap> ForAll( List([1..100], k -> Random(G)), m -> m in G); true gap> ForAll( List([1..100], k -> Random(G,10*k)), m -> m in G); true gap> G:=CongruenceSubgroupGammaUpper1(3); gap> ForAll( List([1..100], k -> Random(G)), m -> m in G); true gap> ForAll( List([1..100], k -> Random(G,10*k)), m -> m in G); true gap> G2:=PrincipalCongruenceSubgroup(2); gap> G3:=PrincipalCongruenceSubgroup(3); gap> G6:=PrincipalCongruenceSubgroup(6); gap> G:=SL(2,Integers); SL(2,Integers) gap> IsSubgroup(G,G2); true gap> IsSubgroup(G3,G2); false gap> IsSubgroup(G2,G6); true gap> Index(G,G3); 24 gap> IndexInSL2Z(G6); 144 gap> Index(G3,G6); 6 gap> f:=[PrincipalCongruenceSubgroup, > CongruenceSubgroupGamma1, > CongruenceSubgroupGammaUpper1, > CongruenceSubgroupGamma0, > CongruenceSubgroupGammaUpper0];; gap> g1:=List(f, t -> t(2));; gap> g2:=List(f, t -> t(4));; gap> for g in g2 do > Print( List( g1, x -> IsSubgroup(x,g) ), "\n"); > od; [ true, true, true, true, true ] [ false, true, false, true, false ] [ false, false, true, false, true ] [ false, false, false, true, false ] [ false, false, false, false, true ] gap> Intersection(G2,G3); gap> G6=Intersection(G2,G3); true gap> g1:=List(f, t -> t(2));; gap> g2:=List(f, t -> t(2));; gap> for g in g2 do > Print( List( g1, x -> Intersection(x,g) ), "\n"); > od; [ PrincipalCongruenceSubgroup(2), PrincipalCongruenceSubgroup(2), PrincipalCongruenceSubgroup(2), PrincipalCongruenceSubgroup(2), PrincipalCongruenceSubgroup(2) ] [ PrincipalCongruenceSubgroup(2), CongruenceSubgroupGamma1(2), PrincipalCongruenceSubgroup(2), CongruenceSubgroupGamma1(2), PrincipalCongruenceSubgroup(2) ] [ PrincipalCongruenceSubgroup(2), PrincipalCongruenceSubgroup(2), CongruenceSubgroupGammaUpper1(2), PrincipalCongruenceSubgroup(2), CongruenceSubgroupGammaUpper1(2) ] [ PrincipalCongruenceSubgroup(2), CongruenceSubgroupGamma1(2), PrincipalCongruenceSubgroup(2), CongruenceSubgroupGamma0(2), IntersectionOfCongruenceSubgroups( CongruenceSubgroupGamma0(2), CongruenceSubgroupGammaUpper0(2) ) ] [ PrincipalCongruenceSubgroup(2), PrincipalCongruenceSubgroup(2), CongruenceSubgroupGammaUpper1(2), IntersectionOfCongruenceSubgroups( CongruenceSubgroupGamma0(2), CongruenceSubgroupGammaUpper0(2) ), CongruenceSubgroupGammaUpper0(2) ] gap> G:=Intersection(CongruenceSubgroupGamma0(4),CongruenceSubgroupGamma1(3)); gap> DefiningCongruenceSubgroups(G); [ , ] gap> H:=Intersection(G,CongruenceSubgroupGamma1(4)); gap> DefiningCongruenceSubgroups(H); [ , ] gap> K:=Intersection(H,CongruenceSubgroupGamma0(3)); gap> List([1..6], n -> IndexInSL2Z(PrincipalCongruenceSubgroup(n))); [ 1, 12, 24, 48, 120, 144 ] gap> fs:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]); [ infinity, 0, 1, 2, infinity ] [ 1, 2, 2, 1 ] gap> GeneralizedFareySequence(fs); [ infinity, 0, 1, 2, infinity ] gap> List([1..5], i -> NumeratorOfGFSElement(GeneralizedFareySequence(fs),i)); [ -1, 0, 1, 2, 1 ] gap> List([1..5], i -> DenominatorOfGFSElement(GeneralizedFareySequence(fs),i)); [ 0, 1, 1, 1, 0 ] gap> LabelsOfFareySymbol(fs); [ 1, 2, 2, 1 ] gap> IsValidFareySymbol(fs); true gap> fs:=FareySymbolByData([infinity,0,1,infinity],[1,"even",1]); [ infinity, 0, 1, infinity ] [ 1, "even", 1 ] gap> Print(fs); Print("\n"); FareySymbolByData( [ infinity, 0, 1, infinity ], [ 1, "even", 1 ] ) gap> SetInfoLevel(InfoCongruence,1); gap> fs1_1:=FareySymbolByData([infinity,0,infinity],["even","odd"]);; gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> fs2_1:=FareySymbolByData([infinity,0,infinity],["odd","odd"]);; gap> GeneratorsByFareySymbol(last); [ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> fs2_2:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ] gap> fs2_3:=FareySymbolByData([infinity,0,1,infinity],[1,"even",1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ] ] gap> fs3_1:=FareySymbolByData([infinity,0,1,infinity],["even","even","even"]);; gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 1, -2 ], [ 1, -1 ] ] ] gap> fs3_2:=FareySymbolByData([infinity,0,1,2,infinity],["even",1,"even",1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 3, -1 ], [ 1, 0 ] ], [ [ 3, -5 ], [ 2, -3 ] ] ] gap> fs3_3:=FareySymbolByData([infinity,0,1,2,5/2,3,infinity],[1,2,3,3,2,1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 3 ], [ 0, 1 ] ], [ [ 8, -3 ], [ 3, -1 ] ], [ [ 7, -12 ], [ 3, -5 ] ] ] gap> fs3_4:=FareySymbolByData([infinity,0,1,infinity],[1,"odd",1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 3, -2 ] ] ] gap> fs4_1:=FareySymbolByData([infinity,0,1/2,1,3/2,2,infinity],[1,2,3,3,2,1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 7, -2 ], [ 4, -1 ] ], [ [ 5, -4 ], [ 4, -3 ] ] ] gap> fs4_2:=FareySymbolByData([infinity,0,1/2,1,3/2,2,5/2,3,7/2,4,infinity],[1,4,5,5,3,3,2,2,4,1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 4 ], [ 0, 1 ] ], [ [ 15, -4 ], [ 4, -1 ] ], [ [ 5, -4 ], [ 4, -3 ] ], [ [ 9, -16 ], [ 4, -7 ] ], [ [ 13, -36 ], [ 4, -11 ] ] ] gap> fs4_4:=FareySymbolByData([infinity,0,1/2,1,infinity],[1,2,2,1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 3, -1 ], [ 4, -1 ] ] ] gap> fs4_5:=FareySymbolByData([infinity,0,1,2,infinity],[1,"even","even",1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 3, -5 ], [ 2, -3 ] ] ] gap> fs4_6:=FareySymbolByData([infinity,0,1,2,3,4,infinity],[1,"even",2,"even",2,1]);; gap> GeneratorsByFareySymbol(last); [ [ [ 1, 4 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 7, -11 ], [ 2, -3 ] ], [ [ 5, -13 ], [ 2, -5 ] ] ] gap> fs4_7:=FareySymbolByData([infinity,0,1,infinity],["odd","even","even"]);; gap> GeneratorsByFareySymbol(last); [ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 1, -2 ], [ 1, -1 ] ] ] gap> fs5_1:=FareySymbolByData([infinity,0,1,2,3,infinity],[1,"even","even",1,"odd"]);; gap> GeneratorsByFareySymbol(last); [ [ [ 3, 2 ], [ 1, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 3, -5 ], [ 2, -3 ] ], [ [ 3, -13 ], [ 1, -4 ] ] ] gap> fs5_2:=FareySymbolByData([infinity,0,1/2,1,4/3,3/2,2,3,infinity],[1,2,3,3,"odd",2,1,"odd"]);; gap> GeneratorsByFareySymbol(last); [ [ [ 3, 2 ], [ 1, 1 ] ], [ [ 7, -2 ], [ 4, -1 ] ], [ [ 6, -5 ], [ 5, -4 ] ], [ [ 26, -37 ], [ 19, -27 ] ], [ [ 3, -13 ], [ 1, -4 ] ] ] gap> fs5_3:=FareySymbolByData([infinity,0,1/2,1,4/3,7/5,3/2,2,7/3,12/5,5/2,3,10/3,17/5,7/2,4, > 13/3,22/5,9/2,23/5,14/3,5,infinity], > [1,2,6,6,10,11,5,5,11,9,4,4,9,8,3,3,8,7,7,10,2,1]); [ infinity, 0, 1/2, 1, 4/3, 7/5, 3/2, 2, 7/3, 12/5, 5/2, 3, 10/3, 17/5, 7/2, 4, 13/3, 22/5, 9/2, 23/5, 14/3, 5, infinity ] [ 1, 2, 6, 6, 10, 11, 5, 5, 11, 9, 4, 4, 9, 8, 3, 3, 8, 7, 7, 10, 2, 1 ] gap> GeneratorsByFareySymbol(fs5_3); [ [ [ 1, 5 ], [ 0, 1 ] ], [ [ 24, -5 ], [ 5, -1 ] ], [ [ 6, -5 ], [ 5, -4 ] ], [ [ 139, -190 ], [ 30, -41 ] ], [ [ 59, -85 ], [ 25, -36 ] ], [ [ 11, -20 ], [ 5, -9 ] ], [ [ 84, -205 ], [ 25, -61 ] ], [ [ 16, -45 ], [ 5, -14 ] ], [ [ 109, -375 ], [ 25, -86 ] ], [ [ 21, -80 ], [ 5, -19 ] ], [ [ 91, -405 ], [ 20, -89 ] ] ] gap> fs11_1:=FareySymbolByData([infinity,-1,0,1,2,infinity],["even","odd","odd","even","even"]); [ infinity, -1, 0, 1, 2, infinity ] [ "even", "odd", "odd", "even", "even" ] gap> GeneratorsByFareySymbol(last); [ [ [ -1, -2 ], [ 1, 1 ] ], [ [ -2, -1 ], [ 3, 1 ] ], [ [ 1, -1 ], [ 3, -2 ] ], [ [ 3, -5 ], [ 2, -3 ] ], [ [ 2, -5 ], [ 1, -2 ] ] ] gap> fs11_2:=FareySymbolByData([infinity,0,1,2,3,infinity],["even","even","odd","odd","even"]); [ infinity, 0, 1, 2, 3, infinity ] [ "even", "even", "odd", "odd", "even" ] gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 4, -7 ], [ 3, -5 ] ], [ [ 7, -19 ], [ 3, -8 ] ], [ [ 3, -10 ], [ 1, -3 ] ] ] gap> fs12_1:=FareySymbolByData([infinity,0,1/6,1/5,1/4,1/3,1/2,3/5,2/3,1,4/3,7/5,3/2,5/3,7/4,9/5,11/6,2,infinity], > [ 1,8, 9, 7, 4, 4, 7, 6, 2,2, 6, 5, 3, 3, 5, 9, 8,1]); [ infinity, 0, 1/6, 1/5, 1/4, 1/3, 1/2, 3/5, 2/3, 1, 4/3, 7/5, 3/2, 5/3, 7/4, 9/5, 11/6, 2, infinity ] [ 1, 8, 9, 7, 4, 4, 7, 6, 2, 2, 6, 5, 3, 3, 5, 9, 8, 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 23, -2 ], [ 12, -1 ] ], [ [ 109, -20 ], [ 60, -11 ] ], [ [ 17, -4 ], [ 30, -7 ] ], [ [ 7, -2 ], [ 18, -5 ] ], [ [ 41, -26 ], [ 30, -19 ] ], [ [ 7, -6 ], [ 6, -5 ] ], [ [ 53, -76 ], [ 30, -43 ] ], [ [ 31, -50 ], [ 18, -29 ] ] ] gap> fs12_2:=FareySymbolByData([infinity,0,1,2,3,4,infinity],[1,"odd","odd","odd","odd",1]); [ infinity, 0, 1, 2, 3, 4, infinity ] [ 1, "odd", "odd", "odd", "odd", 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 4 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 3, -2 ] ], [ [ 4, -7 ], [ 3, -5 ] ], [ [ 7, -19 ], [ 3, -8 ] ], [ [ 10, -37 ], [ 3, -11 ] ] ] gap> fs12_3:=FareySymbolByData([infinity,0,1,5/4,4/3,3/2,5/3,2,7/3,5/2,8/3,11/4,14/5,3,infinity], > [1,"even",5,4,3,3,"even","even",2,2,4,5,"even",1]); [ infinity, 0, 1, 5/4, 4/3, 3/2, 5/3, 2, 7/3, 5/2, 8/3, 11/4, 14/5, 3, infinity ] [ 1, "even", 5, 4, 3, 3, "even", "even", 2, 2, 4, 5, "even", 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 3 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 67, -81 ], [ 24, -29 ] ], [ [ 65, -84 ], [ 24, -31 ] ], [ [ 19, -27 ], [ 12, -17 ] ], [ [ 17, -29 ], [ 10, -17 ] ], [ [ 23, -53 ], [ 10, -23 ] ], [ [ 31, -75 ], [ 12, -29 ] ], [ [ 73, -205 ], [ 26, -73 ] ] ] gap> fs12_4:=FareySymbolByData([infinity,0,1/3,1/2,2/3,1,2,3,10/3,7/2,11/3,4,5,6,infinity], > [1,"even",3,2,"even","even","even","even",2,3,"even","even","even",1]); [ infinity, 0, 1/3, 1/2, 2/3, 1, 2, 3, 10/3, 7/2, 11/3, 4, 5, 6, infinity ] [ 1, "even", 3, 2, "even", "even", "even", "even", 2, 3, "even", "even", "even", 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 6 ], [ 0, 1 ] ], [ [ 3, -1 ], [ 10, -3 ] ], [ [ 43, -18 ], [ 12, -5 ] ], [ [ 41, -24 ], [ 12, -7 ] ], [ [ 7, -5 ], [ 10, -7 ] ], [ [ 3, -5 ], [ 2, -3 ] ], [ [ 5, -13 ], [ 2, -5 ] ], [ [ 33, -109 ], [ 10, -33 ] ], [ [ 37, -137 ], [ 10, -37 ] ], [ [ 9, -41 ], [ 2, -9 ] ], [ [ 11, -61 ], [ 2, -11 ] ] ] gap> fs12_5:=FareySymbolByData([infinity,0,1/3,2/5,1/2,1,4/3,3/2,2,3,infinity], > ["even",1,"even","even","even","even",1,"even","even","even"]); [ infinity, 0, 1/3, 2/5, 1/2, 1, 4/3, 3/2, 2, 3, infinity ] [ "even", 1, "even", "even", "even", "even", 1, "even", "even", "even" ] gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 13, -3 ], [ 9, -2 ] ], [ [ 13, -5 ], [ 34, -13 ] ], [ [ 12, -5 ], [ 29, -12 ] ], [ [ 3, -2 ], [ 5, -3 ] ], [ [ 13, -17 ], [ 10, -13 ] ], [ [ 8, -13 ], [ 5, -8 ] ], [ [ 5, -13 ], [ 2, -5 ] ], [ [ 3, -10 ], [ 1, -3 ] ] ] gap> fs12_6:=FareySymbolByData([infinity,0,1,4/3,3/2,5/3,2,3,infinity], > [1,"even","even",2,2,"even","even",1]); [ infinity, 0, 1, 4/3, 3/2, 5/3, 2, 3, infinity ] [ 1, "even", "even", 2, 2, "even", "even", 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 3 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 13, -17 ], [ 10, -13 ] ], [ [ 19, -27 ], [ 12, -17 ] ], [ [ 17, -29 ], [ 10, -17 ] ], [ [ 5, -13 ], [ 2, -5 ] ] ] gap> fs12_7:=FareySymbolByData([infinity,0,1,2,3,4,5,6,infinity], > [1,"even","even","even","even","even","even",1]); [ infinity, 0, 1, 2, 3, 4, 5, 6, infinity ] [ 1, "even", "even", "even", "even", "even", "even", 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 6 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 3, -5 ], [ 2, -3 ] ], [ [ 5, -13 ], [ 2, -5 ] ], [ [ 7, -25 ], [ 2, -7 ] ], [ [ 9, -41 ], [ 2, -9 ] ], [ [ 11, -61 ], [ 2, -11 ] ] ] gap> fs12_8:=FareySymbolByData([infinity,0,1,3/2,2,3,infinity], > ["even","even","even","even","even","even"]); [ infinity, 0, 1, 3/2, 2, 3, infinity ] [ "even", "even", "even", "even", "even", "even" ] gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 1, -1 ], [ 2, -1 ] ], [ [ 7, -10 ], [ 5, -7 ] ], [ [ 8, -13 ], [ 5, -8 ] ], [ [ 5, -13 ], [ 2, -5 ] ], [ [ 3, -10 ], [ 1, -3 ] ] ] gap> fs12_9:=FareySymbolByData([infinity,0,1/4,1/3,1/2,2/3,3/4,4/5,5/6,1,infinity], > [1,4,3,2,2,3,4,5,5,1]); [ infinity, 0, 1/4, 1/3, 1/2, 2/3, 3/4, 4/5, 5/6, 1, infinity ] [ 1, 4, 3, 2, 2, 3, 4, 5, 5, 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 19, -4 ], [ 24, -5 ] ], [ [ 17, -5 ], [ 24, -7 ] ], [ [ 7, -3 ], [ 12, -5 ] ], [ [ 31, -25 ], [ 36, -29 ] ] ] gap> fs12_10:=FareySymbolByData([infinity,0,1/6,1/5,1/4,2/7,1/3,2/5,1/2,4/7,7/12,3/5,2/3,5/7,3/4,4/5,5/6,1,infinity], > [1,2,3,7,7,8,8,6,6,9,9,4,4,5,5,3,2,1]); [ infinity, 0, 1/6, 1/5, 1/4, 2/7, 1/3, 2/5, 1/2, 4/7, 7/12, 3/5, 2/3, 5/7, 3/4, 4/5, 5/6, 1, infinity ] [ 1, 2, 3, 7, 7, 8, 8, 6, 6, 9, 9, 4, 4, 5, 5, 3, 2, 1 ] gap> GeneratorsByFareySymbol(last); [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 11, -1 ], [ 12, -1 ] ], [ [ 49, -9 ], [ 60, -11 ] ], [ [ 13, -3 ], [ 48, -11 ] ], [ [ 13, -4 ], [ 36, -11 ] ], [ [ 13, -6 ], [ 24, -11 ] ], [ [ 85, -49 ], [ 144, -83 ] ], [ [ 25, -16 ], [ 36, -23 ] ], [ [ 37, -27 ], [ 48, -35 ] ] ] gap> G:=CongruenceSubgroupGamma0(20); gap> fs:=FareySymbol(G); [ infinity, 0, 1/5, 1/4, 2/7, 3/10, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1, infinity ] [ 1, 3, 4, 6, 7, 7, 5, 2, 2, 3, 6, 4, 5, 1 ] gap> G:=PrincipalCongruenceSubgroup(2); gap> FareySymbol(G); [ infinity, 0, 1, 2, infinity ] [ 2, 1, 1, 2 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ] gap> G:=CongruenceSubgroupGamma0(2); gap> FareySymbol(G); [ infinity, 0, 1, infinity ] [ 1, "even", 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 2, -1 ] ] ] gap> G:=CongruenceSubgroupGamma0(3); gap> FareySymbol(G); [ infinity, 0, 1, infinity ] [ 1, "odd", 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 3, -2 ] ] ] gap> G:=PrincipalCongruenceSubgroup(4); gap> FareySymbol(G); [ infinity, 0, 1/2, 1, 3/2, 2, 5/2, 3, 7/2, 4, infinity ] [ 1, 5, 2, 2, 3, 3, 4, 4, 5, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 4 ], [ 0, 1 ] ], [ [ -15, 4 ], [ -4, 1 ] ], [ [ 5, -4 ], [ 4, -3 ] ], [ [ 9, -16 ], [ 4, -7 ] ], [ [ 13, -36 ], [ 4, -11 ] ] ] gap> G:=CongruenceSubgroupGamma0(4); gap> FareySymbol(G); [ infinity, 0, 1/2, 1, infinity ] [ 1, 2, 2, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 3, -1 ], [ 4, -1 ] ] ] gap> G:=CongruenceSubgroupGamma0(5); gap> FareySymbol(G); [ infinity, 0, 1/2, 1, infinity ] [ 1, "even", "even", 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ] gap> G:=CongruenceSubgroupGamma0(6); gap> FareySymbol(G); [ infinity, 0, 1/3, 1/2, 2/3, 1, infinity ] [ 1, 3, 2, 2, 3, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 5, -1 ], [ 6, -1 ] ], [ [ 7, -3 ], [ 12, -5 ] ] ] gap> G:=CongruenceSubgroupGamma0(7); gap> FareySymbol(G); [ infinity, 0, 1/2, 1, infinity ] [ 1, "odd", "odd", 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 7, -3 ] ], [ [ 4, -3 ], [ 7, -5 ] ] ] gap> G:=CongruenceSubgroupGamma0(9); gap> FareySymbol(G); [ infinity, 0, 1/3, 1/2, 2/3, 1, infinity ] [ 1, 2, 2, 3, 3, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 4, -1 ], [ 9, -2 ] ], [ [ 7, -4 ], [ 9, -5 ] ] ] gap> G:=CongruenceSubgroupGamma0(10); gap> FareySymbol(G); [ infinity, 0, 1/3, 2/5, 1/2, 3/5, 2/3, 1, infinity ] [ 1, "even", 3, 2, 2, 3, "even", 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 3, -1 ], [ 10, -3 ] ], [ [ 19, -7 ], [ 30, -11 ] ], [ [ 11, -5 ], [ 20, -9 ] ], [ [ 7, -5 ], [ 10, -7 ] ] ] gap> G:=CongruenceSubgroupGamma0(13); gap> FareySymbol(G); [ infinity, 0, 1/3, 1/2, 2/3, 1, infinity ] [ 1, "odd", "even", "even", "odd", 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 3, -1 ], [ 13, -4 ] ], [ [ 5, -2 ], [ 13, -5 ] ], [ [ 8, -5 ], [ 13, -8 ] ], [ [ 9, -7 ], [ 13, -10 ] ] ] gap> G:=CongruenceSubgroupGamma0(18); gap> FareySymbol(G); [ infinity, 0, 1/6, 1/5, 2/9, 1/4, 1/3, 1/2, 2/3, 3/4, 7/9, 4/5, 5/6, 1, infinity ] [ 1, 4, 4, 7, 6, 2, 2, 3, 3, 6, 7, 5, 5, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 7, -1 ], [ 36, -5 ] ], [ [ 71, -15 ], [ 90, -19 ] ], [ [ 55, -13 ], [ 72, -17 ] ], [ [ 7, -2 ], [ 18, -5 ] ], [ [ 13, -8 ], [ 18, -11 ] ], [ [ 31, -25 ], [ 36, -29 ] ] ] gap> G:=CongruenceSubgroupGamma0(25); gap> FareySymbol(G); [ infinity, 0, 1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1, infinity ] [ 1, 2, 2, "even", 3, 3, 4, 4, "even", 5, 5, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 6, -1 ], [ 25, -4 ] ], [ [ 7, -2 ], [ 25, -7 ] ], [ [ 11, -4 ], [ 25, -9 ] ], [ [ 16, -9 ], [ 25, -14 ] ], [ [ 18, -13 ], [ 25, -18 ] ], [ [ 21, -16 ], [ 25, -19 ] ] ] gap> G:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(4)); gap> FareySymbol(G); [ infinity, 0, 1/2, 1, 3/2, 2, infinity ] [ 1, 3, 2, 2, 3, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 7, -2 ], [ 4, -1 ] ], [ [ 5, -4 ], [ 4, -3 ] ] ] gap> G:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(3)); gap> FareySymbol(G); [ infinity, 0, 1/3, 1/2, 2/3, 1, 4/3, 3/2, 5/3, 2, infinity ] [ 1, 5, 4, 3, 2, 2, 3, 4, 5, 1 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 11, -2 ], [ 6, -1 ] ], [ [ 19, -8 ], [ 12, -5 ] ], [ [ 17, -10 ], [ 12, -7 ] ], [ [ 7, -6 ], [ 6, -5 ] ] ] gap> G16:=CongruenceSubgroupGamma0(16);; gap> FS16:=FareySymbol(G16);; gap> gens:=GeneratorsByFareySymbol(FS16);; gap> glue_list:=__congruence_gluing_matrices(FS16); [ 1, 2, -2, 3, -3, 4, -4, 5, -5, -1 ] gap> for i in [1..1000] do > g:=Random(G16); > w:=__congruence_FactorizeMat( G16, g ); > h:=__congruence_CheckFactorizeMat(gens,w); > if g<>h and g<>-h then > Print("Error:", g, " is not plus/minus ", h , "\n"); > fi; > od; congruence-1.2.7/doc/manual.six000644 000766 000024 00000023142 14663721453 016724 0ustar00mhornstaff000000 000000 #SIXFORMAT GapDocGAP HELPBOOKINFOSIXTMP := rec( encoding := "UTF-8", bookname := "Congruence", entries := [ [ "Title page", "0.0", [ 0, 0, 0 ], 1, 1, "title page", "X7D2C85EC87DD46E5" ], [ "Abstract", "0.0-1", [ 0, 0, 1 ], 59, 2, "abstract", "X7AA6C5737B711C89" ] , [ "Copyright", "0.0-2", [ 0, 0, 2 ], 65, 2, "copyright", "X81488B807F2A1CF1" ], [ "Acknowledgements", "0.0-3", [ 0, 0, 3 ], 87, 2, "acknowledgements", "X82A988D47DFAFCFA" ], [ "Table of Contents", "0.0-4", [ 0, 0, 4 ], 95, 3, "table of contents", "X8537FEB07AF2BEC8" ], [ "\033[1X\033[33X\033[0;-2YIntroduction\033[133X\033[101X", "1", [ 1, 0, 0 ], 1, 4, "introduction", "X7DFB63A97E67C0A1" ], [ "\033[1X\033[33X\033[0;-2YGeneral aims of \033[5XCongruence\033[105X\033[10\ 1X\027\033[1X\027 package\033[133X\033[101X", "1.1", [ 1, 1, 0 ], 4, 4, "general aims of congruence package", "X80AE633F82C4D9BF" ], [ "\033[1X\033[33X\033[0;-2YInstallation and system requirements\033[133X\\ 033[101X", "1.2", [ 1, 2, 0 ], 24, 4, "installation and system requirements", "X7DB566D5785B7DBC" ], [ "\033[1X\033[33X\033[0;-2YConstruction of congruence subgroups\033[133X\\ 033[101X", "2", [ 2, 0, 0 ], 1, 5, "construction of congruence subgroups", "X7B010EE67FACF45E" ], [ "\033[1X\033[33X\033[0;-2YConstruction of congruence subgroups\033[133X\\ 033[101X", "2.1", [ 2, 1, 0 ], 32, 5, "construction of congruence subgroups", "X7B010EE67FACF45E" ], [ "\033[1X\033[33X\033[0;-2YProperties of congruence subgroups\033[133X\033[1\ 01X", "2.2", [ 2, 2, 0 ], 173, 8, "properties of congruence subgroups", "X8267F261874959E5" ], [ "\033[1X\033[33X\033[0;-2YAttributes of congruence subgroups\033[133X\033[1\ 01X", "2.3", [ 2, 3, 0 ], 247, 9, "attributes of congruence subgroups", "X8664A60E875EA5DE" ], [ "\033[1X\033[33X\033[0;-2YOperations for congruence subgroups\033[133X\033[\ 101X", "2.4", [ 2, 4, 0 ], 311, 10, "operations for congruence subgroups", "X7B15B49583DC9EF5" ], [ "\033[1X\033[33X\033[0;-2YFarey symbols and their properties\033[133X\033[1\ 01X", "3", [ 3, 0, 0 ], 1, 13, "farey symbols and their properties", "X85CABB30818CD99C" ], [ "\033[1X\033[33X\033[0;-2YConstruction of Farey symbols\033[133X\033[101X" , "3.1", [ 3, 1, 0 ], 41, 13, "construction of farey symbols", "X7B7B81E584CCA30C" ], [ "\033[1X\033[33X\033[0;-2YProperties of Farey symbols\033[133X\033[101X", "3.2", [ 3, 2, 0 ], 71, 14, "properties of farey symbols", "X8016C45082AEC784" ], [ "\033[1X\033[33X\033[0;-2YFarey symbols for congruence subgroups\033[133X\\ 033[101X", "4", [ 4, 0, 0 ], 1, 16, "farey symbols for congruence subgroups", "X831C60277F7D80B2" ], [ "\033[1X\033[33X\033[0;-2YComputation of the Farey symbol for a finite inde\ x subgroup\033[133X\033[101X", "4.1", [ 4, 1, 0 ], 15, 16, "computation of the farey symbol for a finite index subgroup", "X7F43DB8B803F313F" ], [ "\033[1X\033[33X\033[0;-2YComputation of generators of a finite index subgr\ oup from its Farey symbol\033[133X\033[101X", "4.2", [ 4, 2, 0 ], 44, 17, "computation of generators of a finite index subgroup from its farey sym\ bol", "X80AE179D869BEE90" ], [ "\033[1X\033[33X\033[0;-2YOther properties derived from Farey symbols\033[1\ 33X\033[101X", "4.3", [ 4, 3, 0 ], 166, 19, "other properties derived from farey symbols", "X7C5AB1D786207745" ], [ "\033[1X\033[33X\033[0;-2YService functions of the \033[5XCongruence\033[10\ 5X\033[101X\027\033[1X\027 package\033[133X\033[101X", "5", [ 5, 0, 0 ], 1, 20, "service functions of the congruence package", "X82C56A367A418E7C" ] , [ "\033[1X\033[33X\033[0;-2YAdditional information displayed by \033[5XCongru\ ence\033[105X\033[101X\027\033[1X\027 algorithms\033[133X\033[101X", "5.1", [ 5, 1, 0 ], 4, 20, "additional information displayed by congruence algorithms", "X86D04EE08437C320" ], [ "Bibliography", "bib", [ "Bib", 0, 0 ], 1, 21, "bibliography", "X7A6F98FD85F02BFE" ], [ "References", "bib", [ "Bib", 0, 0 ], 1, 21, "references", "X7A6F98FD85F02BFE" ], [ "Index", "ind", [ "Ind", 0, 0 ], 1, 22, "index", "X83A0356F839C696F" ], [ "\033[5XCongruence\033[105X package", "0.0-1", [ 0, 0, 1 ], 59, 2, "congruence package", "X7AA6C5737B711C89" ], [ "\033[10XIsCongruenceSubgroup\033[110X", "1.1", [ 1, 1, 0 ], 4, 4, "iscongruencesubgroup", "X80AE633F82C4D9BF" ], [ "\033[10XIsCongruenceSubgroup\033[110X", "2.0", [ 2, 0, 0 ], 1, 5, "iscongruencesubgroup", "X7B010EE67FACF45E" ], [ "\033[2XPrincipalCongruenceSubgroup\033[102X", "2.1-1", [ 2, 1, 1 ], 35, 5, "principalcongruencesubgroup", "X7A61F693873F7136" ], [ "\033[2XCongruenceSubgroupGamma0\033[102X", "2.1-2", [ 2, 1, 2 ], 72, 6, "congruencesubgroupgamma0", "X7B8DB77B81BE58D7" ], [ "\033[2XCongruenceSubgroupGammaUpper0\033[102X", "2.1-3", [ 2, 1, 3 ], 91, 6, "congruencesubgroupgammaupper0", "X7B4FBED17ECE2A7F" ], [ "\033[2XCongruenceSubgroupGamma1\033[102X", "2.1-4", [ 2, 1, 4 ], 110, 7, "congruencesubgroupgamma1", "X7CFDC47279AC0E85" ], [ "\033[2XCongruenceSubgroupGammaUpper1\033[102X", "2.1-5", [ 2, 1, 5 ], 129, 7, "congruencesubgroupgammaupper1", "X7C3FCDD878FE57ED" ], [ "\033[2XIntersectionOfCongruenceSubgroups\033[102X", "2.1-6", [ 2, 1, 6 ], 148, 7, "intersectionofcongruencesubgroups", "X7FE839377D7F45EB" ], [ "\033[2XIntersection\033[102X", "2.1-6", [ 2, 1, 6 ], 148, 7, "intersection", "X7FE839377D7F45EB" ], [ "\033[2XIsPrincipalCongruenceSubgroup\033[102X", "2.2-1", [ 2, 2, 1 ], 182, 8, "isprincipalcongruencesubgroup", "X828F7E08787650DC" ], [ "\033[2XIsCongruenceSubgroupGamma0\033[102X", "2.2-2", [ 2, 2, 2 ], 199, 8, "iscongruencesubgroupgamma0", "X85124A697E826AB4" ], [ "\033[2XIsCongruenceSubgroupGammaUpper0\033[102X", "2.2-3", [ 2, 2, 3 ], 207, 8, "iscongruencesubgroupgammaupper0", "X7A03633C83A286F5" ], [ "\033[2XIsCongruenceSubgroupGamma1\033[102X", "2.2-4", [ 2, 2, 4 ], 215, 8, "iscongruencesubgroupgamma1", "X8262396080F3B0DD" ], [ "\033[2XIsCongruenceSubgroupGammaUpper1\033[102X", "2.2-5", [ 2, 2, 5 ], 223, 9, "iscongruencesubgroupgammaupper1", "X7D731035834CF878" ], [ "\033[2XIsIntersectionOfCongruenceSubgroups\033[102X", "2.2-6", [ 2, 2, 6 ], 231, 9, "isintersectionofcongruencesubgroups", "X83B4E4FA7F4DFB97" ], [ "\033[2XLevelOfCongruenceSubgroup\033[102X", "2.3-1", [ 2, 3, 1 ], 252, 9, "levelofcongruencesubgroup", "X7D5696F584970D21" ], [ "\033[2XIndexInSL2Z\033[102X", "2.3-2", [ 2, 3, 2 ], 271, 10, "indexinsl2z", "X87302F8A7E44D67B" ], [ "\033[2XDefiningCongruenceSubgroups\033[102X", "2.3-3", [ 2, 3, 3 ], 288, 10, "definingcongruencesubgroups", "X7BF57D157824FFC8" ], [ "\033[2XRandom\033[102X one and two argument versions", "2.4-1", [ 2, 4, 1 ], 317, 10, "random one and two argument versions", "X8146AC8587C65DEE" ], [ "\033[2XRandom\033[102X", "2.4-1", [ 2, 4, 1 ], 317, 10, "random", "X8146AC8587C65DEE" ], [ "\033[2X\\in\033[102X", "2.4-2", [ 2, 4, 2 ], 333, 11, "in", "X87BDB89B7AAFE8AD" ], [ "\033[2XCanEasilyCompareCongruenceSubgroups\033[102X", "2.4-3", [ 2, 4, 3 ], 347, 11, "caneasilycomparecongruencesubgroups", "X7FC5BF527931FF4C" ], [ "\033[2XIsSubset\033[102X", "2.4-4", [ 2, 4, 4 ], 364, 11, "issubset", "X79CA175481F8105F" ], [ "\033[2XIndex\033[102X", "2.4-5", [ 2, 4, 5 ], 390, 12, "index", "X83A0356F839C696F" ], [ "\033[10XIsFareySymbol\033[110X", "3.0", [ 3, 0, 0 ], 1, 13, "isfareysymbol", "X85CABB30818CD99C" ], [ "\033[10XIsFareySymbolDefaultRep\033[110X", "3.0", [ 3, 0, 0 ], 1, 13, "isfareysymboldefaultrep", "X85CABB30818CD99C" ], [ "\033[2XFareySymbolByData\033[102X", "3.1-1", [ 3, 1, 1 ], 44, 13, "fareysymbolbydata", "X7F8F5919870A46FE" ], [ "\033[2XIsValidFareySymbol\033[102X", "3.1-2", [ 3, 1, 2 ], 60, 14, "isvalidfareysymbol", "X845F9BA182F4E73B" ], [ "\033[2XGeneralizedFareySequence\033[102X", "3.2-1", [ 3, 2, 1 ], 74, 14, "generalizedfareysequence", "X8245766978F02751" ], [ "\033[2XNumeratorOfGFSElement\033[102X", "3.2-2", [ 3, 2, 2 ], 85, 14, "numeratorofgfselement", "X80BB58E58492D103" ], [ "\033[2XDenominatorOfGFSElement\033[102X", "3.2-3", [ 3, 2, 3 ], 99, 14, "denominatorofgfselement", "X87477604878BCD42" ], [ "\033[2XLabelsOfFareySymbol\033[102X", "3.2-4", [ 3, 2, 4 ], 113, 15, "labelsoffareysymbol", "X83C941047D486000" ], [ "\033[2XFareySymbol\033[102X", "4.1-1", [ 4, 1, 1 ], 18, 16, "fareysymbol", "X8594896287DCFE8D" ], [ "\033[2XMatrixByEvenInterval\033[102X", "4.2-1", [ 4, 2, 1 ], 68, 17, "matrixbyeveninterval", "X8790C1498107A39A" ], [ "\033[2XMatrixByOddInterval\033[102X", "4.2-2", [ 4, 2, 2 ], 87, 17, "matrixbyoddinterval", "X78779BDF7A1DB4AE" ], [ "\033[2XMatrixByFreePairOfIntervals\033[102X", "4.2-3", [ 4, 2, 3 ], 102, 18, "matrixbyfreepairofintervals", "X7F792846795E3A63" ], [ "\033[2XGeneratorsByFareySymbol\033[102X", "4.2-4", [ 4, 2, 4 ], 116, 18, "generatorsbyfareysymbol", "X7905B050800E4416" ], [ "\033[2XGeneratorsOfGroup\033[102X", "4.2-5", [ 4, 2, 5 ], 134, 18, "generatorsofgroup", "X79C44528864044C5" ], [ "\033[2XIndexInPSL2ZByFareySymbol\033[102X", "4.3-1", [ 4, 3, 1 ], 169, 19, "indexinpsl2zbyfareysymbol", "X80EED34183408106" ], [ "\033[2XInfoCongruence\033[102X", "5.1-1", [ 5, 1, 1 ], 7, 20, "infocongruence", "X83B2A8607C2E6A38" ] ] ); congruence-1.2.7/doc/chapBib_mj.html000644 000766 000024 00000010624 14663721453 017627 0ustar00mhornstaff000000 000000 GAP (Congruence) - References
Goto Chapter: Top 1 2 3 4 5 Bib Ind

References

[CLLT93] Chan, S.-P., Lang, M.-L., Lim, C.-H. and Tan, S. P., Special polygons for subgroups of the modular group and applications, Internat. J. Math., 4 (1) (1993), 11--34.

[Kul91] Kulkarni, R. S., An arithmetic-geometric method in the study of the subgroups of the modular group, Amer. J. Math., 113 (6) (1991), 1053--1133.

[LLT95a] Lang, M.-L., Lim, C.-H. and Tan, S. P., An algorithm for determining if a subgroup of the modular group is congruence, J. London Math. Soc. (2), 51 (3) (1995), 491--502.

[LLT95b] Lang, M.-L., Lim, C.-H. and Tan, S. P., Independent generators for congruence subgroups of Hecke groups, Math. Z., 220 (4) (1995), 569--594.

Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/_entities.xml000644 000766 000024 00000000223 14663721446 017424 0ustar00mhornstaff000000 000000 Congruence'> congruence-1.2.7/doc/chap0_mj.html000644 000766 000024 00000035073 14663721453 017277 0ustar00mhornstaff000000 000000 GAP (Congruence) - Contents
Goto Chapter: Top 1 2 3 4 5 Bib Ind

Congruence

Congruence subgroups of \(SL_2(ℤ)\)

Version 1.2.7

28 August 2024

Ann Dooms
Email: andooms@vub.ac.be
Homepage: http://homepages.vub.ac.be/~andooms
Address:
Department of Mathematics, Vrije Universiteit Brussel
Pleinlaan 2, Brussels, B-1050 Belgium

Eric Jespers
Email: efjesper@vub.ac.be
Homepage: http://homepages.vub.ac.be/~efjesper
Address:
Department of Mathematics, Vrije Universiteit Brussel
Pleinlaan 2, Brussels, B-1050 Belgium

Olexandr Konovalov
Email: obk1@st-andrews.ac.uk
Homepage: https://olexandr-konovalov.github.io/
Address:
School of Computer Science
University of St Andrews
Jack Cole Building, North Haugh,
St Andrews, Fife, KY16 9SX, Scotland

Helena Verrill
Email: verrill@math.lsu.edu
Homepage: http://www.math.lsu.edu/~verrill/
Address:
Department of Mathematics
Louisiana State University
Baton Rouge, Louisiana, 70803-4918
USA

Abstract

The GAP package Congruence provides functionality to work with congruence subgroups of \(SL_2(ℤ)\).

Copyright

© 2006-2024 by Ann Dooms, Eric Jespers, Olexandr Konovalov and Helena Verrill.

Congruence is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For details, see the FSF's own site https://www.gnu.org/licenses/gpl.html.

If you obtained Congruence, we would be grateful for a short notification sent to one of the authors.

If you publish a result which was partially obtained with the usage of Congruence, please cite it in the following form:

A. Dooms, E. Jespers, O. Konovalov and H. Verrill. Congruence --- Congruence subgroups of \(SL_2(ℤ)\), Version 1.2.7; 2024 (https://gap-packages.github.io/congruence/).

Acknowledgements

We are very grateful to Mong-Lung Lang, Chong-Hai Lim and Ser Peow Tan for their comments provided while implementing algorithms from [LLT95a] and [LLT95b], and to Francqui Stichting (Belgium) for the support of the third author.

Contents


Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap2.html000644 000766 000024 00000100363 14663721453 016606 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 2: Construction of congruence subgroups
Goto Chapter: Top 1 2 3 4 5 Bib Ind

2 Construction of congruence subgroups

The package Congruence provides functions to construct several types of canonical congruence subgroups in SL_2(ℤ), and also intersections of a finite number of such subgroups. They will return a matrix group in the category IsCongruenceSubgroup, which is defined as a subcategory of IsMatrixGroup, and which will have a distinguishing property determining whether it is a congruence subgroup of one of the canonical types, or an intersection of such congruence subgroups (if it can not be reduced to one of the canonical congruence subgroups). To start to work with the package, you need first to load it as follows:

gap> LoadPackage("congruence");
-----------------------------------------------------------------------------
Loading Congruence 1.2.7 (Congruence subgroups of SL(2,Integers))
by Ann Dooms (http://homepages.vub.ac.be/~andooms),
   Eric Jespers (http://homepages.vub.ac.be/~efjesper),
   Olexandr Konovalov (https://olexandr-konovalov.github.io/), and
   Helena Verrill (http://www.math.lsu.edu/~verrill).
maintained by:
   Ann Dooms (http://homepages.vub.ac.be/~andooms),
   Olexandr Konovalov (https://olexandr-konovalov.github.io/), and
   Helena Verrill (http://www.math.lsu.edu/~verrill).
Homepage: https://gap-packages.github.io/congruence
Report issues at https://github.com/gap-packages/congruence/issues
-----------------------------------------------------------------------------
true

2.1 Construction of congruence subgroups

2.1-1 PrincipalCongruenceSubgroup
‣ PrincipalCongruenceSubgroup( N )( operation )

Returns the principal congruence subgroup Γ(N) of level N in SL_2(ℤ).

This subgroup consists of all matrices of the form


                         [1+N*a    N*b]
                         [  N*c  1+N*d]

where a,b,c,d are integers. The returned group will have the property IsPrincipalCongruenceSubgroup (2.2-1).

gap> G_8:=PrincipalCongruenceSubgroup(8);
<principal congruence subgroup of level 8 in SL_2(Z)>
gap> IsGroup(G_8);
true
gap> IsMatrixGroup(G_8);
true
gap> DimensionOfMatrixGroup(G_8);
2
gap> MultiplicativeNeutralElement(G_8);
[ [ 1, 0 ], [ 0, 1 ] ]
gap> One(G);
[ [ 1, 0 ], [ 0, 1 ] ]
gap> [[1,2],[3,4]] in G_8;
false
gap> [[1,8],[8,65]] in G_8;
true
gap> SL_2:=SL(2,Integers);
SL(2,Integers)
gap> IsSubgroup(SL_2,G_8);
true

2.1-2 CongruenceSubgroupGamma0
‣ CongruenceSubgroupGamma0( N )( operation )

Returns the congruence subgroup Γ_0(N) of level N in SL_2(ℤ).

This subgroup consists of all matrices of the form


                         [a    b]
                         [N*c  d]

where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGamma0 (2.2-2).

gap> G0_4:=CongruenceSubgroupGamma0(4);
<congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>

2.1-3 CongruenceSubgroupGammaUpper0
‣ CongruenceSubgroupGammaUpper0( N )( operation )

Returns the congruence subgroup Γ^0(N) of level N in SL_2(ℤ).

This subgroup consists of all matrices of the form


                         [a  N*b]
                         [c    d]

where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGammaUpper0 (2.2-3).

gap> GU0_2:=CongruenceSubgroupGammaUpper0(2);
<congruence subgroup CongruenceSubgroupGamma^0(2) in SL_2(Z)>

2.1-4 CongruenceSubgroupGamma1
‣ CongruenceSubgroupGamma1( N )( operation )

Returns the congruence subgroup Γ_1(N) of level N in SL_2(ℤ).

This subgroup consists of all matrices of the form


                         [1+N*a      b]
                         [  N*c  1+N*d]

where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGamma1 (2.2-4).

gap> G1_6:=CongruenceSubgroupGamma1(6);
<congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)>

2.1-5 CongruenceSubgroupGammaUpper1
‣ CongruenceSubgroupGammaUpper1( N )( operation )

Returns the congruence subgroup Γ^1(N) of level N in SL_2(ℤ).

This subgroup consists of all matrices of the form


                         [1+N*a    N*b]
                         [    c  1+N*d]

where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGammaUpper1 (2.2-5).

gap> GU1_4:=CongruenceSubgroupGammaUpper1(4);
<congruence subgroup CongruenceSubgroupGamma^1(4) in SL_2(Z)>

2.1-6 IntersectionOfCongruenceSubgroups
‣ IntersectionOfCongruenceSubgroups( G1, G2, ..., GN )( function )
‣ Intersection( G1, G2, ..., GN )( function )

Returns the intersection of its arguments, which can be congruence subgroups or their intersections, constructed with the same function. It is not necessary for the user to use IntersectionOfCongruenceSubgroups, since it will be called automatically from Intersection.

The returned group will have the property IsIntersectionOfCongruenceSubgroups (2.2-6).

The list of congruence subgroups that form the intersection can be obtained using DefiningCongruenceSubgroups (2.3-3). Note, that when the intersection appears to be one of the canonical congruence subgroups, the package will recognize this and will return a canonical subgroup of the appropriate type.

gap> I:=IntersectionOfCongruenceSubgroups(G0_4,GU1_4);
<principal congruence subgroup of level 4 in SL_2(Z)>
gap> J:=IntersectionOfCongruenceSubgroups(G0_4,G1_6);
<intersection of congruence subgroups of resulting level 12 in SL_2(Z)>

2.2 Properties of congruence subgroups

A congruence subgroup constructed by one of the five above listed functions will have certain properties determining its type. These properties will be used for method selection by Congruence algorithms. Note that they do not provide an actual test whether a certain matrix group is a congruence subgroup or not.

2.2-1 IsPrincipalCongruenceSubgroup
‣ IsPrincipalCongruenceSubgroup( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by PrincipalCongruenceSubgroup (2.1-1) (or reduced to one as a result of an intersection) and returns false otherwise.

gap> IsPrincipalCongruenceSubgroup(G_8);
true
gap> IsPrincipalCongruenceSubgroup(G0_4);
false
gap> IsPrincipalCongruenceSubgroup(I);
true

2.2-2 IsCongruenceSubgroupGamma0
‣ IsCongruenceSubgroupGamma0( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGamma0 (2.1-2) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-3 IsCongruenceSubgroupGammaUpper0
‣ IsCongruenceSubgroupGammaUpper0( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGammaUpper0 (2.1-3) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-4 IsCongruenceSubgroupGamma1
‣ IsCongruenceSubgroupGamma1( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGamma1 (2.1-4) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-5 IsCongruenceSubgroupGammaUpper1
‣ IsCongruenceSubgroupGammaUpper1( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGammaUpper1 (2.1-5) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-6 IsIntersectionOfCongruenceSubgroups
‣ IsIntersectionOfCongruenceSubgroups( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by IntersectionOfCongruenceSubgroups (2.1-6) and without being one of the canonical congruence subgroups, otherwise it returns false.

gap> IsIntersectionOfCongruenceSubgroups(I);
false
gap> IsIntersectionOfCongruenceSubgroups(J);
true

2.3 Attributes of congruence subgroups

The next three attributes store key properties of congruence subgroups.

2.3-1 LevelOfCongruenceSubgroup
‣ LevelOfCongruenceSubgroup( G )( attribute )

Stores the level of the congruence subgroup G. The (arithmetic) level of a congruence subgroup G is the smallest positive number N such that G contains the principal congruence subgroup of level N.

gap> LevelOfCongruenceSubgroup(G_8);
8
gap> LevelOfCongruenceSubgroup(G1_6);
6
gap> LevelOfCongruenceSubgroup(I);
4
gap> LevelOfCongruenceSubgroup(J);
12

2.3-2 IndexInSL2Z
‣ IndexInSL2Z( G )( attribute )

Stores the index of the congruence subgroup G in SL_2(ℤ).

gap> IndexInSL2Z(G_8);
384
gap> G_2:=PrincipalCongruenceSubgroup(2);
<principal congruence subgroup of level 2 in SL_2(Z)>
gap> IndexInSL2Z(G_2);
12
gap> IndexInSL2Z(GU1_4);
12

2.3-3 DefiningCongruenceSubgroups
‣ DefiningCongruenceSubgroups( G )( attribute )

Returns: list of congruence subgroups

For an intersection of congruence subgroups, returns the list of congruence subgroups forming this intersection. For a canonical congruence subgroup returns a list of length one containing that subgroup.

gap> DefiningCongruenceSubgroups(J);
[ <congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>,
  <congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)> ]
gap> P:=PrincipalCongruenceSubgroup(6);
<principal congruence subgroup of level 6 in SL_2(Z)>
gap> Q:=PrincipalCongruenceSubgroup(10); 
<principal congruence subgroup of level 10 in SL_2(Z)>
gap> G:=IntersectionOfCongruenceSubgroups(Q,P);  
<principal congruence subgroup of level 30 in SL_2(Z)>
gap> DefiningCongruenceSubgroups(G);
[ <principal congruence subgroup of level 30 in SL_2(Z)> ] 

2.4 Operations for congruence subgroups

Congruence installs several special methods for operations already available in GAP.

2.4-1 Random
‣ Random( G )( operation )
‣ Random( G, m )( operation )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns random element. In the two-argument form, the second parameter will control the absolute value of randomly selected entries of the matrix.

gap> Random(G_2) in G_2;
true
gap> Random(G_8,2) in G_8;
true

2.4-2 \in
‣ \in( m, G )( operation )

It is easy to implement the membership test for congruence subgroups and their intersections.

gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_2);
true
gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_8);
false

2.4-3 CanEasilyCompareCongruenceSubgroups
‣ CanEasilyCompareCongruenceSubgroups( G, H )( operation )

For congruence subgroups G,H in the category IsCongruenceSubgroup, returns true if G and H are of the same type listed in PrincipalCongruenceSubgroup (2.1-1) --> CongruenceSubgroupGammaUpper1 (2.1-5) and have the same LevelOfCongruenceSubgroup (2.3-1) or if G and H are of the type IntersectionOfCongruenceSubgroups (2.1-6) and the groups from DefiningCongruenceSubgroups (2.3-3) are in one to one correspondence, otherwise it returns false.

gap> CanEasilyCompareCongruenceSubgroups(G_8,I);
false

2.4-4 IsSubset
‣ IsSubset( G, H )( operation )

Congruence provides methods for IsSubset for congruence subgroups. IsSubset returns true if H is a subset of G. These methods make it possible to use IsSubgroup operation for congruence subgroups.

gap> IsSubset(G_2,G_8);
true
gap> IsSubset(G_8,G_2);
false
gap> f:=[PrincipalCongruenceSubgroup,CongruenceSubgroupGamma1,CongruenceSubgroupGammaUpper1,CongruenceSubgroupGamma0,CongruenceSubgroupGammaUpper0];;
gap> g1:=List(f, t -> t(2));;
gap> g2:=List(f, t -> t(4));;
gap> for g in g2 do
> Print( List( g1, x -> IsSubgroup(x,g) ), "\n");
> od;
[ true, true, true, true, true ]
[ false, true, false, true, false ]
[ false, false, true, false, true ]
[ false, false, false, true, false ]
[ false, false, false, false, true ]

2.4-5 Index
‣ Index( G, H )( operation )

If a congruence subgroup H is a subgroup of a congruence subgroup G, we can easily compute the index of H in G, since we know the index of both subgroups in SL_2(ℤ).

gap> Index(G_2,G_8);
32
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap3.html000644 000766 000024 00000024274 14663721453 016615 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 3: Farey symbols and their properties
Goto Chapter: Top 1 2 3 4 5 Bib Ind

3 Farey symbols and their properties

A Farey symbol is a compact and useful way to represent a subgroup of finite index in SL_2(ℤ) from which one can deduce independent generators for this subgroup. It consists of two components, namely a so-called generalised Farey sequence (gfs) and an ordered list of labels, giving additional structure to the gfs.

A generalised Farey sequence (g.F.S.) is an ordered list of the form -infinity, x_0, x_1, ... , x_n, infinity, where

1. the x_i = a_i/b_i are rational numbers in reduced form arranged in increasing order for i = 0, ... , n;

2. x_0, ... , x_n ∈ Z, and some x_i = 0;

3. we define x_-1=-infinity=-1/0 and x_n+1=infinity=1/0;

4. a_i+1b_i-a_ib_i+1=1 for i=-1, ... ,n.

The ordered list of labels of a Farey symbol gives an additional structure to the gfs. The labels correspond to each consecutive pair of x_i's and are of the following types:

1. even,

2. odd,

3. a natural number, which occurs in the list of labels exactly twice or not at all.

Note that the actual values of numerical labels are not important; it is the pairing of two intervals that matters.

The package Congruence provides functions to construct Farey symbols by the given generalised Farey sequence and corresponding list of labels. The returned Farey symbol will belong to the category IsFareySymbol and will have the representation IsFareySymbolDefaultRep.

3.1 Construction of Farey symbols

3.1-1 FareySymbolByData
‣ FareySymbolByData( gfs, labels )( function )

This constructor creates the Farey symbol with the given generalized Farey sequence and list of labels. It also checks conditions from the definition of Farey symbol and returns an error if they are not satisfied. The data used to create the Farey symbol are stored as its attributes GeneralizedFareySequence (3.2-1) and LabelsOfFareySymbol (3.2-4).

gap> fs:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);                         
[ infinity, 0, 1, 2, infinity ]
[ 1, 2, 2, 1 ]

3.1-2 IsValidFareySymbol
‣ IsValidFareySymbol( fs )( function )

This function is used in FareySymbolByData (3.1-1) to validate its output.

gap> IsValidFareySymbol(fs);
true

3.2 Properties of Farey symbols

3.2-1 GeneralizedFareySequence
‣ GeneralizedFareySequence( fs )( attribute )

Returns the generalized Farey sequence gfs of the Farey symbol.

gap> GeneralizedFareySequence(fs);
[ infinity, 0, 1, 2, infinity ]

3.2-2 NumeratorOfGFSElement
‣ NumeratorOfGFSElement( gfs, i )( function )

Returns: integer

Returns the numerator of the i-th term of the generalised Farey sequence gfs: for the 1st infinite entry returns -1, for the last one returns 1, for all other entries returns the usual numerator.

gap> List([1..5], i -> NumeratorOfGFSElement(GeneralizedFareySequence(fs),i));
[ -1, 0, 1, 2, 1 ]

3.2-3 DenominatorOfGFSElement
‣ DenominatorOfGFSElement( gfs, i )( function )

Returns: integer

Returns the denominator of the i-th term of the generalised Farey sequence gfs: for both infinite entries returns 0, for the other ones returns the usual denominator.

gap> List([1..5], i -> DenominatorOfGFSElement(GeneralizedFareySequence(fs),i));         
[ 0, 1, 1, 1, 0 ]

3.2-4 LabelsOfFareySymbol
‣ LabelsOfFareySymbol( fs )( attribute )

Returns the list of labels of the Farey symbol. This list has "odd", "even" and paired integers as entries.

gap> LabelsOfFareySymbol(fs);
[ 1, 2, 2, 1 ]
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap1_mj.html000644 000766 000024 00000012565 14663721453 017301 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 1: Introduction
Goto Chapter: Top 1 2 3 4 5 Bib Ind

1 Introduction

1.1 General aims of Congruence package

The GAP package Congruence provides functions to construct several types of canonical congruence subgroups in \(SL_2(ℤ)\), and also intersections of a finite number of such subgroups.

Furthermore, it implements the algorithm for generating Farey symbols for congruence subgroups and using them to produce a system of independent generators for these subgroups.

Using the package, one can also determine indices of congruence subgroups and their intersections in \(SL_2(ℤ)\) and in other congruence subgroups, generate their random elements and check element memberships. Success of other group theoretical constructions mostly depends on whether they could be expressed in terms of group generators or not.

For the theoretical backround, we refer to [LLT95b], [LLT95a], [CLLT93] and [Kul91].

1.2 Installation and system requirements

Congruence is distributed in standard formats (tar.gz, tar.bz2, -win.zip) and can be obtained from https://gap-packages.github.io/congruence/.

Congruence does not use external binaries and, therefore, works without restrictions on the operating system. It requires at least version GAP 4.5, and no compatibility with previous releases of GAP 4 is guaranteed.

Installation of the package is standard and follows the guidelines from the GAP manual (see Reference: Installing a GAP Package. After the package is installed, you can start GAP and load the Congruence package using the command:

gap> LoadPackage("congruence");
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/manual.js000644 000766 000024 00000010113 14663721453 016527 0ustar00mhornstaff000000 000000 /* manual.js Frank Lübeck */ /* This file contains a few javascript functions which allow to switch between display styles for GAPDoc HTML manuals. If javascript is switched off in a browser or this file in not available in a manual directory, this is no problem. Users just cannot switch between several styles and don't see the corresponding button. A style with name mystyle can be added by providing two files (or only one of them). mystyle.js: Additional javascript code for the style, it is read in the HTML pages after this current file. The additional code may adjust the preprocessing function jscontent() with is called onload of a file. This is done by appending functions to jscontentfuncs (jscontentfuncs.push(newfunc);). Make sure, that your style is still usable without javascript. mystyle.css: CSS configuration, read after manual.css (so it can just reconfigure a few details, or overwrite everything). Then adjust chooser.html such that users can switch on and off mystyle. A user can change the preferred style permanently by using the [Style] link and choosing one. Or one can append '?GAPDocStyle=mystyle' to the URL when loading any file of the manual (so the style can be configured in the GAP user preferences). */ /* generic helper function */ function deleteCookie(nam) { document.cookie = nam+"=;Path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT"; } /* read a value from a "nam1=val1;nam2=val2;..." string (e.g., the search part of an URL or a cookie */ function valueString(str,nam) { var cs = str.split(";"); for (var i=0; i < cs.length; i++) { var pos = cs[i].search(nam+"="); if (pos > -1) { pos = cs[i].indexOf("="); return cs[i].slice(pos+1); } } return 0; } /* when a non-default style is chosen via URL or a cookie, then the cookie is reset and the styles .js and .css files are read */ function overwriteStyle() { /* style in URL? */ var style = valueString(window.location.search, "GAPDocStyle"); /* otherwise check cookie */ if (style == 0) style = valueString(document.cookie, "GAPDocStyle"); if (style == 0) return; if (style == "default") deleteCookie("GAPDocStyle"); else { /* ok, we set the cookie for path "/" */ var path = "/"; /* or better like this ??? var here = window.location.pathname.split("/"); for (var i=0; i+3 < here.length; i++) path = path+"/"+here[i]; */ document.cookie = "GAPDocStyle="+style+";Path="+path; /* split into names of style files */ var stlist = style.split(","); /* read style's css and js files */ for (var i=0; i < stlist.length; i++) { document.writeln(''); document.writeln(''); } } } /* this adds a "[Style]" link next to the MathJax switcher */ function addStyleLink() { var line = document.getElementById("mathjaxlink"); var el = document.createElement("a"); var oncl = document.createAttribute("href"); var back = window.location.protocol+"//" if (window.location.protocol == "http:" || window.location.protocol == "https:") { back = back+window.location.host; if (window.location.port != "") { back = back+":"+window.location.port; } } back = back+window.location.pathname; oncl.nodeValue = "chooser.html?BACK="+back; el.setAttributeNode(oncl); var cont = document.createTextNode(" [Style]"); el.appendChild(cont); line.appendChild(el); } var jscontentfuncs = new Array(); jscontentfuncs.push(addStyleLink); /* the default jscontent() only adds the [Style] link to the page */ function jscontent () { for (var i=0; i < jscontentfuncs.length; i++) jscontentfuncs[i](); } congruence-1.2.7/doc/chapInd.html000644 000766 000024 00000014173 14663721453 017162 0ustar00mhornstaff000000 000000 GAP (Congruence) - Index
Goto Chapter: Top 1 2 3 4 5 Bib Ind

Index

\in 2.4-2
CanEasilyCompareCongruenceSubgroups 2.4-3
Congruence package .-1
CongruenceSubgroupGamma0 2.1-2
CongruenceSubgroupGamma1 2.1-4
CongruenceSubgroupGammaUpper0 2.1-3
CongruenceSubgroupGammaUpper1 2.1-5
DefiningCongruenceSubgroups 2.3-3
DenominatorOfGFSElement 3.2-3
FareySymbol 4.1-1
FareySymbolByData 3.1-1
GeneralizedFareySequence 3.2-1
GeneratorsByFareySymbol 4.2-4
GeneratorsOfGroup 4.2-5
Index 2.4-5
IndexInPSL2ZByFareySymbol 4.3-1
IndexInSL2Z 2.3-2
InfoCongruence 5.1-1
Intersection 2.1-6
IntersectionOfCongruenceSubgroups 2.1-6
IsCongruenceSubgroup 1.1 2.
IsCongruenceSubgroupGamma0 2.2-2
IsCongruenceSubgroupGamma1 2.2-4
IsCongruenceSubgroupGammaUpper0 2.2-3
IsCongruenceSubgroupGammaUpper1 2.2-5
IsFareySymbol 3.
IsFareySymbolDefaultRep 3.
IsIntersectionOfCongruenceSubgroups 2.2-6
IsPrincipalCongruenceSubgroup 2.2-1
IsSubset 2.4-4
IsValidFareySymbol 3.1-2
LabelsOfFareySymbol 3.2-4
LevelOfCongruenceSubgroup 2.3-1
MatrixByEvenInterval 4.2-1
MatrixByFreePairOfIntervals 4.2-3
MatrixByOddInterval 4.2-2
NumeratorOfGFSElement 3.2-2
PrincipalCongruenceSubgroup 2.1-1
Random 2.4-1
    one and two argument versions 2.4-1

Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap3_mj.html000644 000766 000024 00000024743 14663721453 017304 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 3: Farey symbols and their properties
Goto Chapter: Top 1 2 3 4 5 Bib Ind

3 Farey symbols and their properties

A Farey symbol is a compact and useful way to represent a subgroup of finite index in \(SL_2(ℤ)\) from which one can deduce independent generators for this subgroup. It consists of two components, namely a so-called generalised Farey sequence (gfs) and an ordered list of labels, giving additional structure to the gfs.

A generalised Farey sequence (g.F.S.) is an ordered list of the form \({ -infinity, x_0, x_1, ... , x_n, infinity }\), where

1. the \(x_i = a_i/b_i\) are rational numbers in reduced form arranged in increasing order for \(i = 0, ... , n\);

2. \(x_0, ... , x_n \in Z\), and some \(x_i = 0\);

3. we define \(x_{-1}=-infinity=-1/0\) and \(x_{n+1}=infinity=1/0\);

4. \(a_{i+1}b_{i}-a_{i}b_{i+1}=1\) for \(i=-1, ... ,n\).

The ordered list of labels of a Farey symbol gives an additional structure to the gfs. The labels correspond to each consecutive pair of \(x_i\)'s and are of the following types:

1. even,

2. odd,

3. a natural number, which occurs in the list of labels exactly twice or not at all.

Note that the actual values of numerical labels are not important; it is the pairing of two intervals that matters.

The package Congruence provides functions to construct Farey symbols by the given generalised Farey sequence and corresponding list of labels. The returned Farey symbol will belong to the category IsFareySymbol and will have the representation IsFareySymbolDefaultRep.

3.1 Construction of Farey symbols

3.1-1 FareySymbolByData
‣ FareySymbolByData( gfs, labels )( function )

This constructor creates the Farey symbol with the given generalized Farey sequence and list of labels. It also checks conditions from the definition of Farey symbol and returns an error if they are not satisfied. The data used to create the Farey symbol are stored as its attributes GeneralizedFareySequence (3.2-1) and LabelsOfFareySymbol (3.2-4).

gap> fs:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);                         
[ infinity, 0, 1, 2, infinity ]
[ 1, 2, 2, 1 ]

3.1-2 IsValidFareySymbol
‣ IsValidFareySymbol( fs )( function )

This function is used in FareySymbolByData (3.1-1) to validate its output.

gap> IsValidFareySymbol(fs);
true

3.2 Properties of Farey symbols

3.2-1 GeneralizedFareySequence
‣ GeneralizedFareySequence( fs )( attribute )

Returns the generalized Farey sequence gfs of the Farey symbol.

gap> GeneralizedFareySequence(fs);
[ infinity, 0, 1, 2, infinity ]

3.2-2 NumeratorOfGFSElement
‣ NumeratorOfGFSElement( gfs, i )( function )

Returns: integer

Returns the numerator of the i-th term of the generalised Farey sequence gfs: for the 1st infinite entry returns -1, for the last one returns 1, for all other entries returns the usual numerator.

gap> List([1..5], i -> NumeratorOfGFSElement(GeneralizedFareySequence(fs),i));
[ -1, 0, 1, 2, 1 ]

3.2-3 DenominatorOfGFSElement
‣ DenominatorOfGFSElement( gfs, i )( function )

Returns: integer

Returns the denominator of the i-th term of the generalised Farey sequence gfs: for both infinite entries returns 0, for the other ones returns the usual denominator.

gap> List([1..5], i -> DenominatorOfGFSElement(GeneralizedFareySequence(fs),i));         
[ 0, 1, 1, 1, 0 ]

3.2-4 LabelsOfFareySymbol
‣ LabelsOfFareySymbol( fs )( attribute )

Returns the list of labels of the Farey symbol. This list has "odd", "even" and paired integers as entries.

gap> LabelsOfFareySymbol(fs);
[ 1, 2, 2, 1 ]
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chapInd.txt000644 000766 000024 00000003320 14663721446 017027 0ustar00mhornstaff000000 000000 Index \in 2.4-2 CanEasilyCompareCongruenceSubgroups 2.4-3 Congruence package 0.0-1 CongruenceSubgroupGamma0 2.1-2 CongruenceSubgroupGamma1 2.1-4 CongruenceSubgroupGammaUpper0 2.1-3 CongruenceSubgroupGammaUpper1 2.1-5 DefiningCongruenceSubgroups 2.3-3 DenominatorOfGFSElement 3.2-3 FareySymbol 4.1-1 FareySymbolByData 3.1-1 GeneralizedFareySequence 3.2-1 GeneratorsByFareySymbol 4.2-4 GeneratorsOfGroup 4.2-5 Index 2.4-5 IndexInPSL2ZByFareySymbol 4.3-1 IndexInSL2Z 2.3-2 InfoCongruence 5.1-1 Intersection 2.1-6 IntersectionOfCongruenceSubgroups 2.1-6 IsCongruenceSubgroup 1.1 2.0 IsCongruenceSubgroupGamma0 2.2-2 IsCongruenceSubgroupGamma1 2.2-4 IsCongruenceSubgroupGammaUpper0 2.2-3 IsCongruenceSubgroupGammaUpper1 2.2-5 IsFareySymbol 3.0 IsFareySymbolDefaultRep 3.0 IsIntersectionOfCongruenceSubgroups 2.2-6 IsPrincipalCongruenceSubgroup 2.2-1 IsSubset 2.4-4 IsValidFareySymbol 3.1-2 LabelsOfFareySymbol 3.2-4 LevelOfCongruenceSubgroup 2.3-1 MatrixByEvenInterval 4.2-1 MatrixByFreePairOfIntervals 4.2-3 MatrixByOddInterval 4.2-2 NumeratorOfGFSElement 3.2-2 PrincipalCongruenceSubgroup 2.1-1 Random 2.4-1 one and two argument versions 2.4-1 ------------------------------------------------------- congruence-1.2.7/doc/service.xml000644 000766 000024 00000001426 14663721427 017106 0ustar00mhornstaff000000 000000 Service functions of the &Congruence; package
Additional information displayed by &Congruence; algorithms InfoCongruence is a special Info class for &Congruence; algorithms. It has 3 levels: 0, 1 (default) and 2. To change the info level to k, use the command SetInfoLevel(InfoCongruence, k).

In the example below we use this mechanism to see more details during the Farey symbol construction for a congruence subgroup.

congruence-1.2.7/doc/cong.xml000644 000766 000024 00000041064 14663721427 016376 0ustar00mhornstaff000000 000000 Construction of congruence subgroups IsCongruenceSubgroup The package &Congruence; provides functions to construct several types of canonical congruence subgroups in SL_2(&ZZ;), and also intersections of a finite number of such subgroups. They will return a matrix group in the category IsCongruenceSubgroup, which is defined as a subcategory of IsMatrixGroup, and which will have a distinguishing property determining whether it is a congruence subgroup of one of the canonical types, or an intersection of such congruence subgroups (if it can not be reduced to one of the canonical congruence subgroups). To start to work with the package, you need first to load it as follows: LoadPackage("congruence"); ----------------------------------------------------------------------------- Loading Congruence 1.2.7 (Congruence subgroups of SL(2,Integers)) by Ann Dooms (http://homepages.vub.ac.be/~andooms), Eric Jespers (http://homepages.vub.ac.be/~efjesper), Olexandr Konovalov (https://olexandr-konovalov.github.io/), and Helena Verrill (http://www.math.lsu.edu/~verrill). maintained by: Ann Dooms (http://homepages.vub.ac.be/~andooms), Olexandr Konovalov (https://olexandr-konovalov.github.io/), and Helena Verrill (http://www.math.lsu.edu/~verrill). Homepage: https://gap-packages.github.io/congruence Report issues at https://github.com/gap-packages/congruence/issues ----------------------------------------------------------------------------- true ]]>
Construction of congruence subgroups Returns the principal congruence subgroup \Gamma(N) of level N in SL_2(&ZZ;).

This subgroup consists of all matrices of the form where a,b,c,d are integers. The returned group will have the property . G_8:=PrincipalCongruenceSubgroup(8); gap> IsGroup(G_8); true gap> IsMatrixGroup(G_8); true gap> DimensionOfMatrixGroup(G_8); 2 gap> MultiplicativeNeutralElement(G_8); [ [ 1, 0 ], [ 0, 1 ] ] gap> One(G); [ [ 1, 0 ], [ 0, 1 ] ] gap> [[1,2],[3,4]] in G_8; false gap> [[1,8],[8,65]] in G_8; true gap> SL_2:=SL(2,Integers); SL(2,Integers) gap> IsSubgroup(SL_2,G_8); true ]]> Returns the congruence subgroup \Gamma_0(N) of level N in SL_2(&ZZ;).

This subgroup consists of all matrices of the form where a,b,c,d are integers. The returned group will have the property . G0_4:=CongruenceSubgroupGamma0(4); ]]> Returns the congruence subgroup \Gamma^0(N) of level N in SL_2(&ZZ;).

This subgroup consists of all matrices of the form where a,b,c,d are integers. The returned group will have the property . GU0_2:=CongruenceSubgroupGammaUpper0(2); ]]> Returns the congruence subgroup \Gamma_1(N) of level N in SL_2(&ZZ;).

This subgroup consists of all matrices of the form where a,b,c,d are integers. The returned group will have the property . G1_6:=CongruenceSubgroupGamma1(6); ]]> Returns the congruence subgroup \Gamma^1(N) of level N in SL_2(&ZZ;).

This subgroup consists of all matrices of the form where a,b,c,d are integers. The returned group will have the property . GU1_4:=CongruenceSubgroupGammaUpper1(4); ]]> Returns the intersection of its arguments, which can be congruence subgroups or their intersections, constructed with the same function. It is not necessary for the user to use IntersectionOfCongruenceSubgroups, since it will be called automatically from Intersection.

The returned group will have the property .

The list of congruence subgroups that form the intersection can be obtained using . Note, that when the intersection appears to be one of the canonical congruence subgroups, the package will recognize this and will return a canonical subgroup of the appropriate type. I:=IntersectionOfCongruenceSubgroups(G0_4,GU1_4); gap> J:=IntersectionOfCongruenceSubgroups(G0_4,G1_6); ]]>

Properties of congruence subgroups A congruence subgroup constructed by one of the five above listed functions will have certain properties determining its type. These properties will be used for method selection by &Congruence; algorithms. Note that they do not provide an actual test whether a certain matrix group is a congruence subgroup or not. For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by (or reduced to one as a result of an intersection) and returns false otherwise. IsPrincipalCongruenceSubgroup(G_8); true gap> IsPrincipalCongruenceSubgroup(G0_4); false gap> IsPrincipalCongruenceSubgroup(I); true ]]> For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by (or reduced to one as a result of an intersection) and returns false otherwise. For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by (or reduced to one as a result of an intersection) and returns false otherwise. For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by (or reduced to one as a result of an intersection) and returns false otherwise. For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by (or reduced to one as a result of an intersection) and returns false otherwise. For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by and without being one of the canonical congruence subgroups, otherwise it returns false. IsIntersectionOfCongruenceSubgroups(I); false gap> IsIntersectionOfCongruenceSubgroups(J); true ]]>
Attributes of congruence subgroups The next three attributes store key properties of congruence subgroups. Stores the level of the congruence subgroup G. The (arithmetic) level of a congruence subgroup G is the smallest positive number N such that G contains the principal congruence subgroup of level N. LevelOfCongruenceSubgroup(G_8); 8 gap> LevelOfCongruenceSubgroup(G1_6); 6 gap> LevelOfCongruenceSubgroup(I); 4 gap> LevelOfCongruenceSubgroup(J); 12 ]]> Stores the index of the congruence subgroup G in SL_2(&ZZ;). IndexInSL2Z(G_8); 384 gap> G_2:=PrincipalCongruenceSubgroup(2); gap> IndexInSL2Z(G_2); 12 gap> IndexInSL2Z(GU1_4); 12 ]]> list of congruence subgroups For an intersection of congruence subgroups, returns the list of congruence subgroups forming this intersection. For a canonical congruence subgroup returns a list of length one containing that subgroup. DefiningCongruenceSubgroups(J); [ , ] gap> P:=PrincipalCongruenceSubgroup(6); gap> Q:=PrincipalCongruenceSubgroup(10); gap> G:=IntersectionOfCongruenceSubgroups(Q,P); gap> DefiningCongruenceSubgroups(G); [ ] ]]>
Operations for congruence subgroups &Congruence; installs several special methods for operations already available in &GAP;. For a congruence subgroup G in the category IsCongruenceSubgroup, returns random element. In the two-argument form, the second parameter will control the absolute value of randomly selected entries of the matrix. Random(G_2) in G_2; true gap> Random(G_8,2) in G_8; true ]]> It is easy to implement the membership test for congruence subgroups and their intersections. \in([ [ 21, 10 ], [ 2, 1 ] ],G_2); true gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_8); false ]]> For congruence subgroups G,H in the category IsCongruenceSubgroup, returns true if G and H are of the same type listed in --> and have the same or if G and H are of the type and the groups from are in one to one correspondence, otherwise it returns false. CanEasilyCompareCongruenceSubgroups(G_8,I); false ]]> &Congruence; provides methods for IsSubset for congruence subgroups. IsSubset returns true if H is a subset of G. These methods make it possible to use IsSubgroup operation for congruence subgroups. IsSubset(G_2,G_8); true gap> IsSubset(G_8,G_2); false gap> f:=[PrincipalCongruenceSubgroup,CongruenceSubgroupGamma1,CongruenceSubgroupGammaUpper1,CongruenceSubgroupGamma0,CongruenceSubgroupGammaUpper0];; gap> g1:=List(f, t -> t(2));; gap> g2:=List(f, t -> t(4));; gap> for g in g2 do > Print( List( g1, x -> IsSubgroup(x,g) ), "\n"); > od; [ true, true, true, true, true ] [ false, true, false, true, false ] [ false, false, true, false, true ] [ false, false, false, true, false ] [ false, false, false, false, true ] ]]> If a congruence subgroup H is a subgroup of a congruence subgroup G, we can easily compute the index of H in G, since we know the index of both subgroups in SL_2(&ZZ;). Index(G_2,G_8); 32 ]]>
congruence-1.2.7/doc/chap4.html000644 000766 000024 00000037063 14663721453 016616 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 4: Farey symbols for congruence subgroups
Goto Chapter: Top 1 2 3 4 5 Bib Ind

4 Farey symbols for congruence subgroups

The package Congruence provides functions to construct Farey symbols for finite index subgroups. The algorithm used in the package allows to construct a Farey symbol for any finite index subgroup of SL_2(ℤ) for which it is possible to check whether a given matrix belongs to this subgroup or not.

The development of an algorithm to determine the Farey symbol for a subgroup G of a finite index in SL_2(ℤ) was started by Ravi Kulkarni in [Kul91] and later it was improved by Mong-Lung Lang, Chong-Hai Lim and Ser-Peow Tan in [LLT95b], [LLT95a].

4.1 Computation of the Farey symbol for a finite index subgroup

4.1-1 FareySymbol
‣ FareySymbol( G )( attribute )

For a subgroup of a finite index G, this attribute stores one of the Farey symbols corresponding to the congruence subgroup G. The algorithm for its computation will work for any matrix group for which a membership test is available.

gap> FareySymbol(PrincipalCongruenceSubgroup(8));
[ infinity, 0, 1/4, 1/3, 3/8, 2/5, 1/2, 3/5, 5/8, 2/3, 3/4, 1, 5/4, 4/3, 
  11/8, 7/5, 3/2, 8/5, 13/8, 5/3, 7/4, 2, 9/4, 7/3, 19/8, 12/5, 5/2, 13/5, 
  21/8, 8/3, 11/4, 3, 13/4, 10/3, 27/8, 17/5, 7/2, 18/5, 29/8, 11/3, 15/4, 4, 
  17/4, 13/3, 9/2, 14/3, 19/4, 5, 21/4, 16/3, 11/2, 17/3, 23/4, 6, 25/4, 
  19/3, 13/2, 20/3, 27/4, 7, 29/4, 22/3, 15/2, 23/3, 31/4, 8, infinity ]
[ 1, 17, 10, 26, 32, 18, 19, 27, 30, 5, 2, 2, 13, 28, 26, 20, 21, 29, 27, 7, 
  3, 3, 16, 31, 28, 22, 23, 33, 29, 9, 4, 4, 5, 30, 31, 24, 25, 32, 33, 12, 
  6, 6, 7, 19, 18, 15, 8, 8, 9, 21, 20, 10, 11, 11, 12, 23, 22, 13, 14, 14, 
  15, 25, 24, 16, 17, 1 ]
gap> FareySymbol(CongruenceSubgroupGamma0(20));
[ infinity, 0, 1/5, 1/4, 2/7, 3/10, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1, 
  infinity ]
[ 1, 3, 4, 6, 7, 7, 5, 2, 2, 3, 6, 4, 5, 1 ]  

4.2 Computation of generators of a finite index subgroup from its Farey symbol

If fs is the Farey symbol for a group G with r_1 even labels, r_2 odd labels and r_3 pairs of intervals, then G is generated by r_1+r_2+r_3 matrices, which form a set of independent generators for G. These matrices are constructed as follows:

for each even interval [x_i, x_i+1], take the matrix


                       A=  [a_{i+1} b_{i+1} + a_i b_i    -a_i^2 - a_{i+1}^2        ]
                           [b_i^2 +b_{i+1}^2             -a_{i+1} b_{i+1} - a_i b_i]

for each odd interval [x_j,x_j+1], take the matrix


                        B=  [a_{j+1} b_{j+1} + a_j b_{j+1} + a_j b_j      -a_j^2 - a_j a_{j+1} -a_{j+1}^2]
                            [ b_j^2 + b_j b_{j+1} + b_{j+1}^2  -a_{j+1}   b_{j+1} - a_{j+1} b_j - a_j b_j]

for each pair of free intervals [x_k,x_k+1] and [x_s,x_s+1], take the matrix


                        C=  [a_{s+1} b_{k+1} + a_s b_k    -a_s a_k - a_{s+1} a_{k+1}]
                            [b_s b_k- b_{s+1} b_{k+1}c    -a_{k+1} b_{s+1} - a_k b_s]

4.2-1 MatrixByEvenInterval
‣ MatrixByEvenInterval( gfs, i )( function )

Returns the matrix corresponding to the even interval i in the generalized Farey sequence gfs.

gap> H:=CongruenceSubgroupGamma0(5); 
<congruence subgroup CongruenceSubgroupGamma_0(5) in SL_2(Z)>
gap> fs:=FareySymbol(H);
[ infinity, 0, 1/2, 1, infinity ]
[ 1, "even", "even", 1 ]
gap> gfs:=GeneralizedFareySequence(fs);
[ infinity, 0, 1/2, 1, infinity ]
gap> MatrixByEvenInterval(gfs,2);      
[ [ 2, -1 ], [ 5, -2 ] ]

4.2-2 MatrixByOddInterval
‣ MatrixByOddInterval( gfs, i )( function )

Returns the matrix corresponding to the odd interval i in the generalized Farey sequence gfs.

gap> fs_oo:=FareySymbolByData([infinity,0,infinity],["odd","odd"]);;
gap> gfs_oo:=GeneralizedFareySequence(fs_oo);
[ infinity, 0, infinity ]
gap> MatrixByOddInterval(gfs_oo,1);
[ [ -1, -1 ], [ 1, 0 ] ]

4.2-3 MatrixByFreePairOfIntervals
‣ MatrixByFreePairOfIntervals( gfs, k, kp )( function )

Returns the matrix corresponding to the pair of free intervals k and kp in the generalized Farey sequence gfs.

gap> fs_free:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);;
gap> gfs_free:=GeneralizedFareySequence(fs_free);;
gap> MatrixByFreePairOfIntervals(gfs_free,2,3);                                                        
[ [ 3, -2 ], [ 2, -1 ] ]

4.2-4 GeneratorsByFareySymbol
‣ GeneratorsByFareySymbol( fs )( function )

Returns a set of matrices constructed as above.

gap> fs_eo:=FareySymbolByData([infinity,0,infinity],["even","odd"]);;
gap> GeneratorsByFareySymbol(last);                                  
[ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ]
gap> GeneratorsByFareySymbol(fs); 
[ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ]
gap> GeneratorsByFareySymbol(fs_oo);
[ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ]
gap> GeneratorsByFareySymbol(fs_free);                                                        
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ]

4.2-5 GeneratorsOfGroup
‣ GeneratorsOfGroup( G )( function )

Returns a set of generators for the finite index group G in SL_2(Z).

gap> G:=PrincipalCongruenceSubgroup(2);
<principal congruence subgroup of level 2 in SL_2(Z)>
gap> FareySymbol(G);
[ infinity, 0, 1, 2, infinity ]
[ 2, 1, 1, 2 ]
gap> GeneratorsOfGroup(G);
#I  Using the Congruence package for GeneratorsOfGroup ...
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ]
gap> H:=CongruenceSubgroupGamma0(5);        
<congruence subgroup CongruenceSubgroupGamma_0(5) in SL_2(Z)>
gap> GeneratorsOfGroup(H);
#I  Using the Congruence package for GeneratorsOfGroup ...
[ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ]
gap> I:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(3));
<intersection of congruence subgroups of resulting level 6 in SL_2(Z)>
gap> FareySymbol(I);
[ infinity, 0, 1/3, 1/2, 2/3, 1, 4/3, 3/2, 5/3, 2, infinity ]
[ 1, 5, 4, 3, 2, 2, 3, 4, 5, 1 ]
gap> GeneratorsOfGroup(I);                                                          
#I  Using the Congruence package for GeneratorsOfGroup ...
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 11, -2 ], [ 6, -1 ] ], 
  [ [ 19, -8 ], [ 12, -5 ] ], [ [ 17, -10 ], [ 12, -7 ] ], 
  [ [ 7, -6 ], [ 6, -5 ] ] ]

4.3 Other properties derived from Farey symbols

4.3-1 IndexInPSL2ZByFareySymbol
‣ IndexInPSL2ZByFareySymbol( fs )( function )

By Proposition 7.2 in [Kulkarni], for the Farey symbol with underlying generalized Farey sequence [infinity, x0, x1, ..., xn, infinity], the index in PSL_2(Z) is given by the formula d = 3*n + e3, where e3 is the number of odd intervals.

gap> IndexInPSL2ZByFareySymbol(fs);
6
gap> IndexInPSL2ZByFareySymbol(fs_oo);
2
gap> IndexInPSL2ZByFareySymbol(fs_free);
6
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/nocolorprompt.css000644 000766 000024 00000000313 14663721453 020344 0ustar00mhornstaff000000 000000 /* colors for ColorPrompt like examples */ span.GAPprompt { color: #000000; font-weight: normal; } span.GAPbrkprompt { color: #000000; font-weight: normal; } span.GAPinput { color: #000000; } congruence-1.2.7/doc/lefttoc.css000644 000766 000024 00000000474 14663721453 017077 0ustar00mhornstaff000000 000000 /* leftmenu.css Frank Lübeck */ /* Change default CSS to show section menu on left side */ body { padding-left: 28%; } body.chap0 { padding-left: 2%; } div.ChapSects div.ContSect:hover div.ContSSBlock { left: 15%; } div.ChapSects { left: 1%; width: 25%; } congruence-1.2.7/doc/intro.xml000644 000766 000024 00000004030 14663721427 016573 0ustar00mhornstaff000000 000000 Introduction
General aims of &Congruence; package IsCongruenceSubgroup The &GAP; package &Congruence; provides functions to construct several types of canonical congruence subgroups in SL_2(&ZZ;), and also intersections of a finite number of such subgroups.

Furthermore, it implements the algorithm for generating Farey symbols for congruence subgroups and using them to produce a system of independent generators for these subgroups.

Using the package, one can also determine indices of congruence subgroups and their intersections in SL_2(&ZZ;) and in other congruence subgroups, generate their random elements and check element memberships. Success of other group theoretical constructions mostly depends on whether they could be expressed in terms of group generators or not.

For the theoretical backround, we refer to , , and .

Installation and system requirements &Congruence; is distributed in standard formats (tar.gz, tar.bz2, -win.zip) and can be obtained from https://gap-packages.github.io/congruence/.

&Congruence; does not use external binaries and, therefore, works without restrictions on the operating system. It requires at least version &GAP; 4.5, and no compatibility with previous releases of &GAP; 4 is guaranteed.

Installation of the package is standard and follows the guidelines from the &GAP; manual (see . After the package is installed, you can start &GAP; and load the &Congruence; package using the command: LoadPackage("congruence"); ]]>

congruence-1.2.7/doc/chap2_mj.html000644 000766 000024 00000101323 14663721453 017271 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 2: Construction of congruence subgroups
Goto Chapter: Top 1 2 3 4 5 Bib Ind

2 Construction of congruence subgroups

The package Congruence provides functions to construct several types of canonical congruence subgroups in \(SL_2(ℤ)\), and also intersections of a finite number of such subgroups. They will return a matrix group in the category IsCongruenceSubgroup, which is defined as a subcategory of IsMatrixGroup, and which will have a distinguishing property determining whether it is a congruence subgroup of one of the canonical types, or an intersection of such congruence subgroups (if it can not be reduced to one of the canonical congruence subgroups). To start to work with the package, you need first to load it as follows:

gap> LoadPackage("congruence");
-----------------------------------------------------------------------------
Loading Congruence 1.2.7 (Congruence subgroups of SL(2,Integers))
by Ann Dooms (http://homepages.vub.ac.be/~andooms),
   Eric Jespers (http://homepages.vub.ac.be/~efjesper),
   Olexandr Konovalov (https://olexandr-konovalov.github.io/), and
   Helena Verrill (http://www.math.lsu.edu/~verrill).
maintained by:
   Ann Dooms (http://homepages.vub.ac.be/~andooms),
   Olexandr Konovalov (https://olexandr-konovalov.github.io/), and
   Helena Verrill (http://www.math.lsu.edu/~verrill).
Homepage: https://gap-packages.github.io/congruence
Report issues at https://github.com/gap-packages/congruence/issues
-----------------------------------------------------------------------------
true

2.1 Construction of congruence subgroups

2.1-1 PrincipalCongruenceSubgroup
‣ PrincipalCongruenceSubgroup( N )( operation )

Returns the principal congruence subgroup \(\Gamma(N)\) of level N in \(SL_2(ℤ)\).

This subgroup consists of all matrices of the form


                         [1+N*a    N*b]
                         [  N*c  1+N*d]

where \(a\),\(b\),\(c\),\(d\) are integers. The returned group will have the property IsPrincipalCongruenceSubgroup (2.2-1).

gap> G_8:=PrincipalCongruenceSubgroup(8);
<principal congruence subgroup of level 8 in SL_2(Z)>
gap> IsGroup(G_8);
true
gap> IsMatrixGroup(G_8);
true
gap> DimensionOfMatrixGroup(G_8);
2
gap> MultiplicativeNeutralElement(G_8);
[ [ 1, 0 ], [ 0, 1 ] ]
gap> One(G);
[ [ 1, 0 ], [ 0, 1 ] ]
gap> [[1,2],[3,4]] in G_8;
false
gap> [[1,8],[8,65]] in G_8;
true
gap> SL_2:=SL(2,Integers);
SL(2,Integers)
gap> IsSubgroup(SL_2,G_8);
true

2.1-2 CongruenceSubgroupGamma0
‣ CongruenceSubgroupGamma0( N )( operation )

Returns the congruence subgroup \(\Gamma_0(N)\) of level N in \(SL_2(ℤ)\).

This subgroup consists of all matrices of the form


                         [a    b]
                         [N*c  d]

where \(a\),\(b\),\(c\),\(d\) are integers. The returned group will have the property IsCongruenceSubgroupGamma0 (2.2-2).

gap> G0_4:=CongruenceSubgroupGamma0(4);
<congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>

2.1-3 CongruenceSubgroupGammaUpper0
‣ CongruenceSubgroupGammaUpper0( N )( operation )

Returns the congruence subgroup \(\Gamma^0(N)\) of level N in \(SL_2(ℤ)\).

This subgroup consists of all matrices of the form


                         [a  N*b]
                         [c    d]

where \(a\),\(b\),\(c\),\(d\) are integers. The returned group will have the property IsCongruenceSubgroupGammaUpper0 (2.2-3).

gap> GU0_2:=CongruenceSubgroupGammaUpper0(2);
<congruence subgroup CongruenceSubgroupGamma^0(2) in SL_2(Z)>

2.1-4 CongruenceSubgroupGamma1
‣ CongruenceSubgroupGamma1( N )( operation )

Returns the congruence subgroup \(\Gamma_1(N)\) of level N in \(SL_2(ℤ)\).

This subgroup consists of all matrices of the form


                         [1+N*a      b]
                         [  N*c  1+N*d]

where \(a\),\(b\),\(c\),\(d\) are integers. The returned group will have the property IsCongruenceSubgroupGamma1 (2.2-4).

gap> G1_6:=CongruenceSubgroupGamma1(6);
<congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)>

2.1-5 CongruenceSubgroupGammaUpper1
‣ CongruenceSubgroupGammaUpper1( N )( operation )

Returns the congruence subgroup \(\Gamma^1(N)\) of level N in \(SL_2(ℤ)\).

This subgroup consists of all matrices of the form


                         [1+N*a    N*b]
                         [    c  1+N*d]

where \(a\),\(b\),\(c\),\(d\) are integers. The returned group will have the property IsCongruenceSubgroupGammaUpper1 (2.2-5).

gap> GU1_4:=CongruenceSubgroupGammaUpper1(4);
<congruence subgroup CongruenceSubgroupGamma^1(4) in SL_2(Z)>

2.1-6 IntersectionOfCongruenceSubgroups
‣ IntersectionOfCongruenceSubgroups( G1, G2, ..., GN )( function )
‣ Intersection( G1, G2, ..., GN )( function )

Returns the intersection of its arguments, which can be congruence subgroups or their intersections, constructed with the same function. It is not necessary for the user to use IntersectionOfCongruenceSubgroups, since it will be called automatically from Intersection.

The returned group will have the property IsIntersectionOfCongruenceSubgroups (2.2-6).

The list of congruence subgroups that form the intersection can be obtained using DefiningCongruenceSubgroups (2.3-3). Note, that when the intersection appears to be one of the canonical congruence subgroups, the package will recognize this and will return a canonical subgroup of the appropriate type.

gap> I:=IntersectionOfCongruenceSubgroups(G0_4,GU1_4);
<principal congruence subgroup of level 4 in SL_2(Z)>
gap> J:=IntersectionOfCongruenceSubgroups(G0_4,G1_6);
<intersection of congruence subgroups of resulting level 12 in SL_2(Z)>

2.2 Properties of congruence subgroups

A congruence subgroup constructed by one of the five above listed functions will have certain properties determining its type. These properties will be used for method selection by Congruence algorithms. Note that they do not provide an actual test whether a certain matrix group is a congruence subgroup or not.

2.2-1 IsPrincipalCongruenceSubgroup
‣ IsPrincipalCongruenceSubgroup( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by PrincipalCongruenceSubgroup (2.1-1) (or reduced to one as a result of an intersection) and returns false otherwise.

gap> IsPrincipalCongruenceSubgroup(G_8);
true
gap> IsPrincipalCongruenceSubgroup(G0_4);
false
gap> IsPrincipalCongruenceSubgroup(I);
true

2.2-2 IsCongruenceSubgroupGamma0
‣ IsCongruenceSubgroupGamma0( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGamma0 (2.1-2) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-3 IsCongruenceSubgroupGammaUpper0
‣ IsCongruenceSubgroupGammaUpper0( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGammaUpper0 (2.1-3) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-4 IsCongruenceSubgroupGamma1
‣ IsCongruenceSubgroupGamma1( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGamma1 (2.1-4) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-5 IsCongruenceSubgroupGammaUpper1
‣ IsCongruenceSubgroupGammaUpper1( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGammaUpper1 (2.1-5) (or reduced to one as a result of an intersection) and returns false otherwise.

2.2-6 IsIntersectionOfCongruenceSubgroups
‣ IsIntersectionOfCongruenceSubgroups( G )( property )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by IntersectionOfCongruenceSubgroups (2.1-6) and without being one of the canonical congruence subgroups, otherwise it returns false.

gap> IsIntersectionOfCongruenceSubgroups(I);
false
gap> IsIntersectionOfCongruenceSubgroups(J);
true

2.3 Attributes of congruence subgroups

The next three attributes store key properties of congruence subgroups.

2.3-1 LevelOfCongruenceSubgroup
‣ LevelOfCongruenceSubgroup( G )( attribute )

Stores the level of the congruence subgroup G. The (arithmetic) level of a congruence subgroup G is the smallest positive number N such that G contains the principal congruence subgroup of level N.

gap> LevelOfCongruenceSubgroup(G_8);
8
gap> LevelOfCongruenceSubgroup(G1_6);
6
gap> LevelOfCongruenceSubgroup(I);
4
gap> LevelOfCongruenceSubgroup(J);
12

2.3-2 IndexInSL2Z
‣ IndexInSL2Z( G )( attribute )

Stores the index of the congruence subgroup G in \(SL_2(ℤ)\).

gap> IndexInSL2Z(G_8);
384
gap> G_2:=PrincipalCongruenceSubgroup(2);
<principal congruence subgroup of level 2 in SL_2(Z)>
gap> IndexInSL2Z(G_2);
12
gap> IndexInSL2Z(GU1_4);
12

2.3-3 DefiningCongruenceSubgroups
‣ DefiningCongruenceSubgroups( G )( attribute )

Returns: list of congruence subgroups

For an intersection of congruence subgroups, returns the list of congruence subgroups forming this intersection. For a canonical congruence subgroup returns a list of length one containing that subgroup.

gap> DefiningCongruenceSubgroups(J);
[ <congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>,
  <congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)> ]
gap> P:=PrincipalCongruenceSubgroup(6);
<principal congruence subgroup of level 6 in SL_2(Z)>
gap> Q:=PrincipalCongruenceSubgroup(10); 
<principal congruence subgroup of level 10 in SL_2(Z)>
gap> G:=IntersectionOfCongruenceSubgroups(Q,P);  
<principal congruence subgroup of level 30 in SL_2(Z)>
gap> DefiningCongruenceSubgroups(G);
[ <principal congruence subgroup of level 30 in SL_2(Z)> ] 

2.4 Operations for congruence subgroups

Congruence installs several special methods for operations already available in GAP.

2.4-1 Random
‣ Random( G )( operation )
‣ Random( G, m )( operation )

For a congruence subgroup G in the category IsCongruenceSubgroup, returns random element. In the two-argument form, the second parameter will control the absolute value of randomly selected entries of the matrix.

gap> Random(G_2) in G_2;
true
gap> Random(G_8,2) in G_8;
true

2.4-2 \in
‣ \in( m, G )( operation )

It is easy to implement the membership test for congruence subgroups and their intersections.

gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_2);
true
gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_8);
false

2.4-3 CanEasilyCompareCongruenceSubgroups
‣ CanEasilyCompareCongruenceSubgroups( G, H )( operation )

For congruence subgroups G,H in the category IsCongruenceSubgroup, returns true if G and H are of the same type listed in PrincipalCongruenceSubgroup (2.1-1) --> CongruenceSubgroupGammaUpper1 (2.1-5) and have the same LevelOfCongruenceSubgroup (2.3-1) or if G and H are of the type IntersectionOfCongruenceSubgroups (2.1-6) and the groups from DefiningCongruenceSubgroups (2.3-3) are in one to one correspondence, otherwise it returns false.

gap> CanEasilyCompareCongruenceSubgroups(G_8,I);
false

2.4-4 IsSubset
‣ IsSubset( G, H )( operation )

Congruence provides methods for IsSubset for congruence subgroups. IsSubset returns true if H is a subset of G. These methods make it possible to use IsSubgroup operation for congruence subgroups.

gap> IsSubset(G_2,G_8);
true
gap> IsSubset(G_8,G_2);
false
gap> f:=[PrincipalCongruenceSubgroup,CongruenceSubgroupGamma1,CongruenceSubgroupGammaUpper1,CongruenceSubgroupGamma0,CongruenceSubgroupGammaUpper0];;
gap> g1:=List(f, t -> t(2));;
gap> g2:=List(f, t -> t(4));;
gap> for g in g2 do
> Print( List( g1, x -> IsSubgroup(x,g) ), "\n");
> od;
[ true, true, true, true, true ]
[ false, true, false, true, false ]
[ false, false, true, false, true ]
[ false, false, false, true, false ]
[ false, false, false, false, true ]

2.4-5 Index
‣ Index( G, H )( operation )

If a congruence subgroup H is a subgroup of a congruence subgroup G, we can easily compute the index of H in G, since we know the index of both subgroups in \(SL_2(ℤ)\).

gap> Index(G_2,G_8);
32
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap5.html000644 000766 000024 00000007170 14663721453 016613 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 5: Service functions of the Congruence package
Goto Chapter: Top 1 2 3 4 5 Bib Ind

5 Service functions of the Congruence package

5.1 Additional information displayed by Congruence algorithms

5.1-1 InfoCongruence
‣ InfoCongruence( info class )

InfoCongruence is a special Info class for Congruence algorithms. It has 3 levels: 0, 1 (default) and 2. To change the info level to k, use the command SetInfoLevel(InfoCongruence, k).

In the example below we use this mechanism to see more details during the Farey symbol construction for a congruence subgroup.

Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/manual.bib000644 000766 000024 00000005530 14663721427 016657 0ustar00mhornstaff000000 000000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %W manual.bib Congruence documentation Ann Dooms %W Eric Jespers %W Olexandr Konovalov %% Helena Verrill %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @article {LLT-Hecke, AUTHOR = {Lang, Mong-Lung and Lim, Chong-Hai and Tan, Ser Peow}, TITLE = {Independent generators for congruence subgroups of {H}ecke groups}, JOURNAL = {Math. Z.}, FJOURNAL = {Mathematische Zeitschrift}, VOLUME = {220}, YEAR = {1995}, NUMBER = {4}, PAGES = {569--594}, ISSN = {0025-5874}, CODEN = {MAZEAX}, MRCLASS = {11F06 (30F35)}, MRNUMBER = {MR1363856 (96k:11049)}, MRREVIEWER = {O. V. Shvartsman}, } @article {LLT-Algorithm, AUTHOR = {Lang, Mong-Lung and Lim, Chong-Hai and Tan, Ser Peow}, TITLE = {An algorithm for determining if a subgroup of the modular group is congruence}, JOURNAL = {J. London Math. Soc. (2)}, FJOURNAL = {Journal of the London Mathematical Society. Second Series}, VOLUME = {51}, YEAR = {1995}, NUMBER = {3}, PAGES = {491--502}, ISSN = {0024-6107}, CODEN = {JLMSAK}, MRCLASS = {11F06 (20H10 30F35)}, MRNUMBER = {MR1332886 (96f:11064)}, MRREVIEWER = {B. Sury}, } @article {CLT, AUTHOR = {Chan, Shih-Ping and Lang, Mong-Lung and Lim, Chong-Hai and Tan, Ser Peow}, TITLE = {Special polygons for subgroups of the modular group and applications}, JOURNAL = {Internat. J. Math.}, FJOURNAL = {International Journal of Mathematics}, VOLUME = {4}, YEAR = {1993}, NUMBER = {1}, PAGES = {11--34}, ISSN = {0129-167X}, MRCLASS = {11F06 (20H05)}, MRNUMBER = {MR1209958 (94j:11045)}, MRREVIEWER = {Marvin I. Knopp}, } @article {Kulkarni, AUTHOR = {Kulkarni, Ravi S.}, TITLE = {An arithmetic-geometric method in the study of the subgroups of the modular group}, JOURNAL = {Amer. J. Math.}, FJOURNAL = {American Journal of Mathematics}, VOLUME = {113}, YEAR = {1991}, NUMBER = {6}, PAGES = {1053--1133}, ISSN = {0002-9327}, CODEN = {AJMAAN}, MRCLASS = {11F06}, MRNUMBER = {MR1137534 (92i:11046)}, MRREVIEWER = {Harvey Cohn}, } @article {DoJeKo, AUTHOR = {Dooms, Ann and Jespers, Eric and Konovalov, Alexander}, TITLE = {From Farey symbols to generators for subgroups of finite index in integral group rings of finite groups}, JOURNAL = {Journal of K-Theory}, VOLUME = {6}, YEAR = {2010}, NUMBER = {2}, PAGES = {263–283}, } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %E congruence-1.2.7/doc/manual.lab000644 000766 000024 00000011314 14663721453 016655 0ustar00mhornstaff000000 000000 \GAPDocLabFile{congruence} \makelabel{congruence:Title page}{}{X7D2C85EC87DD46E5} \makelabel{congruence:Abstract}{}{X7AA6C5737B711C89} \makelabel{congruence:Copyright}{}{X81488B807F2A1CF1} \makelabel{congruence:Acknowledgements}{}{X82A988D47DFAFCFA} \makelabel{congruence:Table of Contents}{}{X8537FEB07AF2BEC8} \makelabel{congruence:Introduction}{1}{X7DFB63A97E67C0A1} \makelabel{congruence:General aims of Congruence package}{1.1}{X80AE633F82C4D9BF} \makelabel{congruence:Installation and system requirements}{1.2}{X7DB566D5785B7DBC} \makelabel{congruence:Construction of congruence subgroups}{2}{X7B010EE67FACF45E} \makelabel{congruence:Construction of congruence subgroups}{2.1}{X7B010EE67FACF45E} \makelabel{congruence:Properties of congruence subgroups}{2.2}{X8267F261874959E5} \makelabel{congruence:Attributes of congruence subgroups}{2.3}{X8664A60E875EA5DE} \makelabel{congruence:Operations for congruence subgroups}{2.4}{X7B15B49583DC9EF5} \makelabel{congruence:Farey symbols and their properties}{3}{X85CABB30818CD99C} \makelabel{congruence:Construction of Farey symbols}{3.1}{X7B7B81E584CCA30C} \makelabel{congruence:Properties of Farey symbols}{3.2}{X8016C45082AEC784} \makelabel{congruence:Farey symbols for congruence subgroups}{4}{X831C60277F7D80B2} \makelabel{congruence:Computation of the Farey symbol for a finite index subgroup}{4.1}{X7F43DB8B803F313F} \makelabel{congruence:Computation of generators of a finite index subgroup from its Farey symbol}{4.2}{X80AE179D869BEE90} \makelabel{congruence:Other properties derived from Farey symbols}{4.3}{X7C5AB1D786207745} \makelabel{congruence:Service functions of the Congruence package}{5}{X82C56A367A418E7C} \makelabel{congruence:Additional information displayed by Congruence algorithms}{5.1}{X86D04EE08437C320} \makelabel{congruence:Bibliography}{Bib}{X7A6F98FD85F02BFE} \makelabel{congruence:References}{Bib}{X7A6F98FD85F02BFE} \makelabel{congruence:Index}{Ind}{X83A0356F839C696F} \makelabel{congruence:Congruence package}{}{X7AA6C5737B711C89} \makelabel{congruence:IsCongruenceSubgroup}{1.1}{X80AE633F82C4D9BF} \makelabel{congruence:IsCongruenceSubgroup}{2}{X7B010EE67FACF45E} \makelabel{congruence:PrincipalCongruenceSubgroup}{2.1.1}{X7A61F693873F7136} \makelabel{congruence:CongruenceSubgroupGamma0}{2.1.2}{X7B8DB77B81BE58D7} \makelabel{congruence:CongruenceSubgroupGammaUpper0}{2.1.3}{X7B4FBED17ECE2A7F} \makelabel{congruence:CongruenceSubgroupGamma1}{2.1.4}{X7CFDC47279AC0E85} \makelabel{congruence:CongruenceSubgroupGammaUpper1}{2.1.5}{X7C3FCDD878FE57ED} \makelabel{congruence:IntersectionOfCongruenceSubgroups}{2.1.6}{X7FE839377D7F45EB} \makelabel{congruence:Intersection}{2.1.6}{X7FE839377D7F45EB} \makelabel{congruence:IsPrincipalCongruenceSubgroup}{2.2.1}{X828F7E08787650DC} \makelabel{congruence:IsCongruenceSubgroupGamma0}{2.2.2}{X85124A697E826AB4} \makelabel{congruence:IsCongruenceSubgroupGammaUpper0}{2.2.3}{X7A03633C83A286F5} \makelabel{congruence:IsCongruenceSubgroupGamma1}{2.2.4}{X8262396080F3B0DD} \makelabel{congruence:IsCongruenceSubgroupGammaUpper1}{2.2.5}{X7D731035834CF878} \makelabel{congruence:IsIntersectionOfCongruenceSubgroups}{2.2.6}{X83B4E4FA7F4DFB97} \makelabel{congruence:LevelOfCongruenceSubgroup}{2.3.1}{X7D5696F584970D21} \makelabel{congruence:IndexInSL2Z}{2.3.2}{X87302F8A7E44D67B} \makelabel{congruence:DefiningCongruenceSubgroups}{2.3.3}{X7BF57D157824FFC8} \makelabel{congruence:Random one and two argument versions}{2.4.1}{X8146AC8587C65DEE} \makelabel{congruence:Random}{2.4.1}{X8146AC8587C65DEE} \makelabel{congruence:CanEasilyCompareCongruenceSubgroups}{2.4.3}{X7FC5BF527931FF4C} \makelabel{congruence:IsSubset}{2.4.4}{X79CA175481F8105F} \makelabel{congruence:Index}{2.4.5}{X83A0356F839C696F} \makelabel{congruence:IsFareySymbol}{3}{X85CABB30818CD99C} \makelabel{congruence:IsFareySymbolDefaultRep}{3}{X85CABB30818CD99C} \makelabel{congruence:FareySymbolByData}{3.1.1}{X7F8F5919870A46FE} \makelabel{congruence:IsValidFareySymbol}{3.1.2}{X845F9BA182F4E73B} \makelabel{congruence:GeneralizedFareySequence}{3.2.1}{X8245766978F02751} \makelabel{congruence:NumeratorOfGFSElement}{3.2.2}{X80BB58E58492D103} \makelabel{congruence:DenominatorOfGFSElement}{3.2.3}{X87477604878BCD42} \makelabel{congruence:LabelsOfFareySymbol}{3.2.4}{X83C941047D486000} \makelabel{congruence:FareySymbol}{4.1.1}{X8594896287DCFE8D} \makelabel{congruence:MatrixByEvenInterval}{4.2.1}{X8790C1498107A39A} \makelabel{congruence:MatrixByOddInterval}{4.2.2}{X78779BDF7A1DB4AE} \makelabel{congruence:MatrixByFreePairOfIntervals}{4.2.3}{X7F792846795E3A63} \makelabel{congruence:GeneratorsByFareySymbol}{4.2.4}{X7905B050800E4416} \makelabel{congruence:GeneratorsOfGroup}{4.2.5}{X79C44528864044C5} \makelabel{congruence:IndexInPSL2ZByFareySymbol}{4.3.1}{X80EED34183408106} \makelabel{congruence:InfoCongruence}{5.1.1}{X83B2A8607C2E6A38} congruence-1.2.7/doc/chapBib.txt000644 000766 000024 00000001720 14663721446 017013 0ustar00mhornstaff000000 000000 References [CLLT93] Chan, S.-P., Lang, M.-L., Lim, C.-H. and Tan, S. P., Special polygons for subgroups of the modular group and applications, Internat. J. Math., 4, 1 (1993), 11--34. [Kul91] Kulkarni, R. S., An arithmetic-geometric method in the study of the subgroups of the modular group, Amer. J. Math., 113, 6 (1991), 1053--1133. [LLT95a] Lang, M.-L., Lim, C.-H. and Tan, S. P., An algorithm for determining if a subgroup of the modular group is congruence, J. London Math. Soc. (2), 51, 3 (1995), 491--502. [LLT95b] Lang, M.-L., Lim, C.-H. and Tan, S. P., Independent generators for congruence subgroups of Hecke groups, Math. Z., 220, 4 (1995), 569--594.  congruence-1.2.7/doc/farey.xml000644 000766 000024 00000010716 14663721427 016556 0ustar00mhornstaff000000 000000 Farey symbols and their properties IsFareySymbol IsFareySymbolDefaultRep A Farey symbol is a compact and useful way to represent a subgroup of finite index in SL_2(&ZZ;) from which one can deduce independent generators for this subgroup. It consists of two components, namely a so-called generalised Farey sequence (gfs) and an ordered list of labels, giving additional structure to the gfs.

A generalised Farey sequence (g.F.S.) is an ordered list of the form { -infinity, x_0, x_1, ... , x_n, infinity }, where

1. the x_i = a_i/b_i are rational numbers in reduced form arranged in increasing order for i = 0, ... , n;

2. x_0, ... , x_n \in Z, and some x_i = 0;

3. we define x_{-1}=-infinity=-1/0 and x_{n+1}=infinity=1/0;

4. a_{i+1}b_{i}-a_{i}b_{i+1}=1 for i=-1, ... ,n.

The ordered list of labels of a Farey symbol gives an additional structure to the gfs. The labels correspond to each consecutive pair of x_i's and are of the following types:

1. even,

2. odd,

3. a natural number, which occurs in the list of labels exactly twice or not at all.

Note that the actual values of numerical labels are not important; it is the pairing of two intervals that matters.

The package &Congruence; provides functions to construct Farey symbols by the given generalised Farey sequence and corresponding list of labels. The returned Farey symbol will belong to the category IsFareySymbol and will have the representation IsFareySymbolDefaultRep.

Construction of Farey symbols This constructor creates the Farey symbol with the given generalized Farey sequence and list of labels. It also checks conditions from the definition of Farey symbol and returns an error if they are not satisfied. The data used to create the Farey symbol are stored as its attributes and . fs:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]); [ infinity, 0, 1, 2, infinity ] [ 1, 2, 2, 1 ] ]]> This function is used in to validate its output. IsValidFareySymbol(fs); true ]]>
Properties of Farey symbols Returns the generalized Farey sequence gfs of the Farey symbol. GeneralizedFareySequence(fs); [ infinity, 0, 1, 2, infinity ] ]]> integer Returns the numerator of the i-th term of the generalised Farey sequence gfs: for the 1st infinite entry returns -1, for the last one returns 1, for all other entries returns the usual numerator. List([1..5], i -> NumeratorOfGFSElement(GeneralizedFareySequence(fs),i)); [ -1, 0, 1, 2, 1 ] ]]> integer Returns the denominator of the i-th term of the generalised Farey sequence gfs: for both infinite entries returns 0, for the other ones returns the usual denominator. List([1..5], i -> DenominatorOfGFSElement(GeneralizedFareySequence(fs),i)); [ 0, 1, 1, 1, 0 ] ]]> Returns the list of labels of the Farey symbol. This list has "odd", "even" and paired integers as entries. LabelsOfFareySymbol(fs); [ 1, 2, 2, 1 ] ]]>
congruence-1.2.7/doc/manual.xml000644 000766 000024 00000006707 14663721427 016732 0ustar00mhornstaff000000 000000 Congruence"> <#Include SYSTEM "_entities.xml"> ] > &Congruence; Congruence subgroups of SL_2(&ZZ;) Version &VERSION; Ann Dooms andooms@vub.ac.be http://homepages.vub.ac.be/˜andooms
Department of Mathematics, Vrije Universiteit Brussel
Pleinlaan 2, Brussels, B-1050 Belgium
Eric Jespers efjesper@vub.ac.be http://homepages.vub.ac.be/˜efjesper
Department of Mathematics, Vrije Universiteit Brussel
Pleinlaan 2, Brussels, B-1050 Belgium
Olexandr Konovalov obk1@st-andrews.ac.uk https://olexandr-konovalov.github.io/
School of Computer Science
University of St Andrews
Jack Cole Building, North Haugh,
St Andrews, Fife, KY16 9SX, Scotland
Helena Verrill verrill@math.lsu.edu http://www.math.lsu.edu/˜verrill/
Department of Mathematics
Louisiana State University
Baton Rouge, Louisiana, 70803-4918
USA
&RELEASEDATE; &Congruence; package The &GAP; package &Congruence; provides functionality to work with congruence subgroups of SL_2(&ZZ;). ©right; 2006-&RELEASEYEAR; by Ann Dooms, Eric Jespers, Olexandr Konovalov and Helena Verrill.

&Congruence; is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For details, see the FSF's own site https://www.gnu.org/licenses/gpl.html.

If you obtained &Congruence;, we would be grateful for a short notification sent to one of the authors.

If you publish a result which was partially obtained with the usage of &Congruence;, please cite it in the following form:

A. Dooms, E. Jespers, O. Konovalov and H. Verrill. Congruence --- Congruence subgroups of SL_2(&ZZ;), Version &VERSION;; &RELEASEYEAR; (https://gap-packages.github.io/congruence/). We are very grateful to Mong-Lung Lang, Chong-Hai Lim and Ser Peow Tan for their comments provided while implementing algorithms from and , and to Francqui Stichting (Belgium) for the support of the third author. <#Include SYSTEM "intro.xml"> <#Include SYSTEM "cong.xml"> <#Include SYSTEM "farey.xml"> <#Include SYSTEM "gens.xml"> <#Include SYSTEM "service.xml"> congruence-1.2.7/doc/rainbow.js000644 000766 000024 00000005336 14663721453 016726 0ustar00mhornstaff000000 000000 function randchar(str) { var i = Math.floor(Math.random() * str.length); while (i == str.length) i = Math.floor(Math.random() * str.length); return str[i]; } hexdigits = "0123456789abcdef"; function randlight() { return randchar("cdef")+randchar(hexdigits)+ randchar("cdef")+randchar(hexdigits)+ randchar("cdef")+randchar(hexdigits) } function randdark() { return randchar("012345789")+randchar(hexdigits)+ randchar("012345789")+randchar(hexdigits)+ randchar("102345789")+randchar(hexdigits) } document.write('\n'); congruence-1.2.7/doc/grprings.xml000644 000766 000024 00000000300 14663721427 017267 0ustar00mhornstaff000000 000000 Generators for U(ZG) up to finite index See . congruence-1.2.7/doc/manual.pdf000644 000766 000024 00000775336 14663721453 016715 0ustar00mhornstaff000000 000000 %PDF-1.5 %ÐÔÅØ 89 0 obj << /Length 963 /Filter /FlateDecode >> stream xÚíVMsÛ6½ûWð(͘+,€„O–''m3‘Úéç–`Š1Ezø!5—üö, PÙM[ezéA¤Ù}ûv÷-æ%ó^ž±GÖÙâlòBIOhˆ0àÞâÖCÉ!„§BšEÞbåý6zVäIÙ˜|iÆ,®ÉEy\@…غø<‚(Pž¿pñ¹d£ª¹IÊ1F£¢¹¯ì_Å­CÓ‡h< Nü:œùØFo¬!`¥è a@Q!DÇ“;;y¨™ò¬~g’YC‰CC…a÷×cP¨(AÙ›î‰ ê0à!­!DÒÚþ4FÄ‘)«´ÈmöÂÏy1ª¶îÜÉ9Ò‘ç ¤Õ¹óÈ:M›¤©j»çŒ‹};P@ T×A*Cô|D¸œ§¹ û¼(6UëF Bb‰H¡­ÙU™.­ÝõåÈT÷DÙZS¹Y€Öܱú!3Æùª´¯Ç\ŽŠ¼#mÛ¯8sûÖŸSI”F{e2“ÇÖ› ĨL³lŸ•­¸ê’ÂP‚ÖÚó¥Ñ àxV]1?»I ,}î6qš]´fg ˜g?’ÀÊÄþñîe;≓:dÔ#QÖmÄËmsñnŒucõ€„‘6hº†¹s'æÒ¡‰e¨z:뺾¿˜LÖ³â5Æ‘¥6ùèØ>ÉÑ8NW«ÒTÕÅØ¨Ï »¬7&¯÷ãÛ­ßÅõÚlâ:]Vç®—eúÞýyÚÊbÛ©‰Ô_›Ô¹ÏʦªL×k/ˆ@²68‚îÅõ63ižÅ±ë0?¸õ¡fN+‡µÑ4ß þ1Yçº7Àö8°`&KÒfsT~DQÉvZ„,ø‹iy.äêô*4·ï»˜_+C¢‰ÿN†=Ýÿux*ò¿}?  àÑé…YÜÜáeUû-)³«Z4$„»';œ^t_Þ0'—gEú,\¹ü;º‹qTl©@[HÒzMc”“©Ïùr]ÙP›ÏŠÍ}Sסù2íßRVrr(¹/Äúaˆ6wÒ¶åm-wöŽfC˜ëxyׇÏÜÌš4[¥yâdû}QÖk»}7ÉúüΑpÎýEzkÜöõ/¨ìNÏ>ïó,êŒ*}LÈû¼éZïIO¿}P’Þ6òôÊÝÚˆ—tެ!«0«æI=Ї:ø¶¢%Íîv;Øs"Ñ­ÉGGvòíÔG¥ú¦hÒ*û®Íë¸~ìÄýpL[³¸îÄïŠ&éÕ´‡u¿C±àÈK×*%¿úŒ#÷ø ”o>Ô²_¯gŸ‘ÎL6 endstream endobj 106 0 obj << /Length 1478 /Filter /FlateDecode >> stream xÚ­WÝ“›6¿¿‚·ÂL‘‘ÄgòtIã¤éµÉôÜv¦I°-c&\qï¿ï®V`¸s®IÚ+iµÚß~8p 'p^^=[]-–œs'aYpgµsD"OS'‰9Ëx謶Î;÷yS\íùˆ⋦¶KHûäŸÅ,ÅÀBø΄0kÚ=è)‹@'‘,Ñžã.‹ýc؉íË^6¾AÛ'©÷€LÇÀû—ÂÌ„ÈF¤"$ykÒëº&⇦9´ßýB—¢^«ö¨ô°ÿ¦R’¿óz«iç'OFnSv<¹yeis ŒD¼R•ªs¢÷ “]¥uYUìš}ž2@³Ï!³£ø+1¤ñ`m‰¸ Sw§•"ªmvo®ÕSÜÊÜ»¦§³M^¡Õ¶„ä.מܾ³WËŽ¾`Ò¢ÑDšm¹»›Ÿ÷õVÙãnoïvJ¬.ó³—¿üf U+Wh•Á âž\`qó¶_W&.\º7åFÕ­¢E޲¹pÈÐîÕ–¶MˆáKO±$?çíÄö £Ö€ò9æ<ú‚© ³1Àð  pJ‚>Æ 9¾bUCȬ´‹‰˜wDƒËínsÄ׆üBôO †€À›¨UÞ) º‰*Ìó%˜AÚÛã­êò²0Û*[ŒHA –·Ëï¼(r‡ª„°=Ù,hËNQ7`C¿( ]8ó_MŸ˜e"(1Öê}×Û'‹ÅétbEݳFzÝEE¾iűbûîPÝë<30óL²0IfšPŠÝhî¨w¤=amZƒ jÂ…ìŠ%“±øÊ^5ye={RÓnÐW6Õ×v»Ð±]_Ùn2DÇvßèŽÈºéÊ÷A 6zCÔênÞsšZ]dϼï@Xkýá±ÆIúÐARHr6Uh‘ÓG«¶¯:¢OûrcO)OZ{/×]™WÕ-G?§i„HÝè[ìØÄ»» ‘&, å ‡ ¹{¬TÞÚ·6cC•Ö ²>kF8Š 5eñ¼Ê¢|(A!p‡'æ Y&“¹c¯Mʱ{H‘¹/ìÞ¹wàî»ûHÇ<¤Ž|¯,ÿ…n1Ÿ@-.fÔ¿qq&Žã,åcFù¾A 4ŸÉ\4‘gÔ1#b­Ä±FÚ ˆßÏ.É0 iz‰Ÿ^BgÂô?O/33QÈB¡ÌXÂï—!ËvLPÎKž^Âf ãœx8p ¶|CeX"Ãû•µÈ¾ˆ[(­¬€äë׬lç)tñXy<ƒÙLNÝtyˆ“VÌl>Ä]o>"†¡úUj[¨Ô«ö3ózšÓ­?¼4på«i½HØvvG+,›`UNÜÀˆßŸ±4<œ¹™Å€7=f6 ¼Éë“3–îóýeáI¢óŸ”•ý*/­èò`4éî-6oÜy«¨ÀÐj…ÁÁ ¦G“÷ªÔtoÓÈ·TãÎÿR¶Yl» €,üW 3Òªw…ÎMc·<@]D ¦ ÉëMÑh NdȱÓÍNÞ}!>Ñ‹7^&ÜUå3ˆÁÉ’J†ñ-BׄBœBž¥P€ÊK×›¿ú’vo;èZgK1åž©ª(ûƒ)d®q2а ˜û®íDZ5?èµÝ¾ÔÛiÛÅAŠÍÔ¾/VWÿ‘+ð endstream endobj 137 0 obj << /Length 900 /Filter /FlateDecode >> stream xÚݘMs›0†ïù:ÂU’@Ç´SgÒK:©oiØÈS\!g’_A Ž[€ÎÁ#0£Ýwõ¬´,7W¨n?O¯>M8„Â(Ž0˜.@Ä! à”ÃÆ`š‚ïK‘k™ëÒÿ5ýv… öÇj ºÜߨ!1‚‰jHNaˆ„ ï ƒºƒ Ýà!À!ï6×ÊDZW¤Û¹ÎŠüÄ4ör1l^ª©éÉg´,(A0Œ#à2ÚO6…!ïFæR%+? æ%ÉÖ¥}*»1>M0&íE© ÍºK#OùfÞVæsi{u—É $(l:m’ùïd)]]ö„!ó 0ãÿ h*óþ-Þ8€7:7Ñ~Ôx£+‹7oóR'«URÅ©U9OíCùRj¹¶ÏJþÙfJ®6TË<†¢ Ò& B”(r–h*6€â†]”Õ‚´˜=UjUc¥ÙŠU;7»MÙMfÕÛΖ–BÛMÉA„{¬'z3ÛqIœÀãhh?#i|éÉ\™öEqÅwUl¤Ò™,Ï&ILÉÇ@Eˆ8:sµ×D9•ª”Î 5^è\wîåBÚÓ„qTÙ™†Á'|¢s@Ðôìì¨[Ãüç÷g Ïo‚Ž`1`a¢±Î­îôuzõ‘‹ endstream endobj 147 0 obj << /Length 1914 /Filter /FlateDecode >> stream xÚ­XK“Û6¾Ï¯`åDUE<ôV¥*IÅSÞõÁ±g/ëø@I‰eŠTøÈdüëóáE‘Ž=¶÷0Cl|h4º¿îön®¨þr{uý2M#NIšrÝÞEYJ¤Q*e$å£9Nm³‚ô_åNÊ,Ï⻡¶×g_UÜ7nz‹™¾ÅͺénÅb½âX¹b F,¶bW<œnÄNm‹º©Ë­“°X“;ˆÖ,D ˜ "¥S¬6û¶NþnËÚ_W>=‹Tp¡ñ,ïVk¿Ïœ‘<£Îì82ÍOR‘:YîÅä.! r"õ•Ô J6äB„mÿ·?ÊF À°¥«00ãõýèݹÞùAÕ5áìÓN‡[ñ®î„ÜãJy]öÚ½ÕÃqâ:vÃöFÞ°Ä?$UÎô‰g†—CÛt{lZm´2.{ódqyâ¤Fp.“’\dsµGÓ ÛC(xô#oMx<JÏì×=t} +ë>iü«{7áÒ´þœªnN/wIËÿzåhê­‡rclØ¥©ý4ÂÆ ¼/Pï4|áX (YnM´™«¹Y65Þ§¡dÀ¬™Üöep¦.ö¤…—£q"©z^*…Ù³¢0ûròïBE¸L‚5ŽHssT<‘ÍL$¸©©]ͧѮ¸7–ó¢´·®¶@mŽn‘ãÇ|ñÛ!zûÑÍy w ‰"Bª3µ ïîP/[ šÄï†-œÀFp^€HóŠ›)«¥›Å$¢ºw\l¾¼îÉ2Ǧë«÷ÙÅ€ÿÐÔnòþ ¸EƒÙÀ ÕΪN箳ñb…ÿ>µÐWïFnwqϾ෠ùBø…è«›þé`³t3‰Óq01&6ˆ?ìTï< ß{ÁVß" ôñþ¢N‘ðY¥b&l­¿~½Êy|›Ëͬ‚À—?~;Xñû5 ‰G`Yè+@ÿcl=T9{„I–J­‘`ê&CÈ¿¢|×-ªª°Õæ\ï)£ÛªTÿ9”nàÂo^Ó]VtVÍ=·°â¨…G")M„ƒYw%«ܬ8ÒRo<^XºuO¨_ïŠÖÏ"¡‹Þ¯;“K’ÛJìÃÇ}ú¢%ûOKú îU\œË‹%°”p–O¡6Ÿø"VN’ô+ Ö÷eM>•§ÅªGš«+Û;. iÏ g˜g³é ¤<Ç+k8IäE ßµ Øç¹ê#͹€#ʠСïOÝ‹ëë}qZãÂCnîÈåͰ!es½5î†ÚÆ%ƒëÏö\¤$KÇk ‹…<¼M@ŠÍÏô|¿“ɨþ®±å€b†Í€£ÒnÆq/h¶¶Ä‡™MYméVps†K”M^à>_ÿáýÞèÑ´=ô=LÑ T>ÛhT¡:„HSºb~„þjv̱>4÷q‹¼–¨,~…„1€ ^Ý9‘¢wÏJþe†œè»Î…¾ ·Oå—/ø Š„H“×y3‡EÝsÛOÐySVeÿঌEÜ©ÍöEe3x…[mT ê‡.õ‘ >dnýt‹˜¥Ù¨©O£>1î‡G¯õÎWø ÍÕ¬‚˜ó¦È›oÍÓÞ˜ÈÅØvÚYËexNè*fÁனªÆœù¾s‹=JUÐWV]`£tÜh±¥E äò‹-rFÄ9bE=‡6¸†6;íûJ¡PÛ‰¹EϼjÒÑdcÔ›c”¾µyß$ ÄÜ ãi0šï,”k”ÕÐÞ˜™6ës•ú¬äüÓ‚¡=S½‰$þùÎÿ £B…¢Îæ7/îbñ¬M×m”Ð6NS?4ƒûæZ  dÛ/š–SF”’_þõAI1+‡ lÕž~šX‰™UŸºNø4=ßæó SqùÈBgçˆFxÀî…¥áßn¯þ¼bXK#~õâIBúÿíñêýíð å)AÉÝ[É#"#23ëªèÝÕïþ'´$ÊIžòÔ¹\Ÿ3¿ "˜Sí·¿ Ó?ÞXpFš¤oØy¦}fµ‡eY?ƒA#Nr•?BLáŠØ÷@%¸‚%’Ï# ÁËA1b’v;ÏØx{³`c°´PPW𑪅òyÝ,›Õ„Ó WJÐkxêï3̆ûçÆíwÿº,žP0¤ôÙÕŽ6ýj‹,U¢9–ßu³ß‚Ãä’,ýB’˜€”£‹Î~g¾`<§< éiZÁ˜ÿ…¡ endstream endobj 158 0 obj << /Length 2043 /Filter /FlateDecode >> stream xÚÅY[Û¶~ß_!ôÉFcšw‰)P —d›6ÍéÉ.ÎCÓ>ȶÖVcK®$ïf_úÛÏ IÉ’¥½¨1Z†(i4œïãp8äÐ`Ðàò‚úë·×ó×Zœ­¹ ®o‚P%T #‚›àz|˜|·‰÷URLg\Ñ Ÿþ~ýã%4¨ÿÅ:hß¾¿ôJ% £¡R̤!^_ž•UqXViž9¥ù».ól]’l™¸ûò°XSMòþt{Óç¯A5£ÄPSw¡‘®ƒë |/i8ÙÇËñ:Á/ç¯ãí/4#*2ðamÓzÊèP25q&دºÝhA ¯¿Ùù„oÓURºþn™Eeo£I•»Ç˰»-“)‡ÏðÛ¤ˆ·^ö~_kA6ìgq–gé²–h‘–3ÆQÔ@C%ýXYÆ,[3aØ$Í mN G¡¨a\MgÑämƒ6$&¤VŒ1¢iú‰ÚÉr/¦Úê$‘‘ZR¿QE b]A.šnR~4 Ô°¡A@5Í ¼rx8‰³•Co˼ÆN[&õ€Ã-³VÈ]~£”gi•¸—Ùa·@/Ç7µ`yXnÜÛ†X2…BZƒ¼wrwévëZE2sÃcA;£S ðxÁ…µ.»¸*ÒO®mÕ»fj¥ä¤š² ú2¶—qe{\çŽwh)Û´0M —5/oÊïZ“‰M®¼ýC„ÂÌ ¡T-J…L›Ô‚G{JgÃ*±”%+¢ì€Š:FÚ‡Àä±3rb"ÕåçMù³%äfؤå.îLë}RTh?¼h—fÍë»MRm¬ŸÀMZùkÙQ릪wo¯ªœÑnP3[!Y.âÓ‚íð¯q"§7î@E8´;bKìK=ÉòÊ5‰»Éê°DOá2´Žœ»¦Å†6èÃÕbÃF ›½m/pߨ†q Ñfr=¨S 﫸ð6Tþцô¼øèïÒjÓé²Y ^ A»ÏnÊ ZèýEY¹Û \·yì_§þ Î ¼ÞäÛmޱþ®|iW¯W×^0般^j¥R„,w~§Á Þ)D˜(¸³’»€™¨¿ÛWÿõë¶ 1škœ<4|”A06¡ðêS¼Ûo“~Ï‚3Â`Iø]wÌ­ùœ0ªÓAœê¦§A±ØfŸ£¢6BRÂÔã `530ÿœ†c‚9@'ƒÁï/86 1k%vá)^Çû¯}Bd“‰vJÔ~ ƒ3®ð¼åŸ–0;Á¾8:úèÚ_dXYX§B¡m8ËHŸSfƨx˜2Á 䎲ÙÀ˜˜=ë7,Ø÷ð††Ñ ú<0Ëê9h`sï9èvMA§¨—j€‡Ñ1k²k¢“´s|æ‚á×ÈÒ=ÁpŠ×«·(Ï_¼ð¿†]ªÎ¤ i,Â>Gr²è<¾BCHN½¯,î¦o²Ì5¾ÏóÅ+-+›ªÚ¿œÏ7ù.ÙÄ*ÉíaAâ%Y$ó¿ #È‘ eàÅ#ðGßà "„ßÏ‚P*E ó‰ô«"]:à?&%$%Ï„žÜüaÅŸ>Úê>îäCuàì­4sÀÿ³M>ÁüOy–߯[ÍÛã”@J  ÷²³^ì–¬a¥?€ô‚¤ùܱ`?Ã,ña:Fƒéó¡#³ü<|@‚L©w„’m’ÅÄÿ’¢°™í‰+ÜÝÝØOlȶ<H¾æÝ:I—/=Œ{´Ñ}ÜJ©Ï$ìbÀ^{C Ì¿úâþå#8FÑÇ!¥ÝRŸeüdD¨ñã×`µƒ—>Þ `ã­î6'ò<À…&Lþ›y4˜>Ò,s&Gà’°Hýy´Ñ}Ü4"Zžg"3N¸?ñûÁ;÷KÜ 8 ë| ôÌoÂJ7Úv¨»g]Àmk.7šè(: \J ý(¿Oö9îElZ–‡Ä/ÜqÕ&Ð;ÀË|×"xIÊs¯áA"Æ£èI¸ŠsÁ£ˆˆ#סO¬¹axà RhïŒä#†îµo¸6°Ã2Ÿ³ ÿ þ$5¨GH 1ª“ƒ 0I„Ô¼U€à’ò°>u&ìUØ`3Jé™Ê h•¥œûòW΢ƠQ&ýR¤Ù2ÝÇÛã6îªÕw§ë§J+LF'…û¦®­á£aÛ¬LÖà!k×"°æxzÏ”îhQ°5“Íñü»Á®Ñ"<Á?8,Ð’ª–Å#×G¬Ùª>T陉¶Ñ*Ä#dH°¢:ââÙº?wsÇ{ÐØ×HÿæLœ)ÑA Y醴ˡrø*Ì[zZõèV[:UwÃUódÑCC€©ejÞ¶ IÛÁ!ŠÖë¼£Ø \^b¸^35ª^>«^ž£^ÄŸS/jÔw(/pÓs»}*½IËǨݦL˪ì“xë½ÊÖp–ÉÉëÆoòbWM—U¥ ðba" mJgœ–h¡Œ3ˆÕƛˆ=Ò}öË¡Á„•êXÂ|7iŠU à‚ú»…; 'šT¯ÜëåyœÛ3QznËVÃÌE0avŠÁ§æM<6¤À´d¦Ðe¼ß©Î°6ÿxZ]2 endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 846 /Length 2543 /Filter /FlateDecode >> stream xÚÝZÛrÛÈ}çWÌ£í*æÒsK©¶¬õ–w]q*.Ë©Jbë¢`‰I0¼ÈöË~{Nƒ Hð.‘Zoåhôœ>ÝÓÓƒJ8a•ðB+-’ÐÖâLXƒ VX…&áXá"DÂhjƒÆF ã ü”!H(2X±& ¥”¼°$´OZØ}Ða¡0¡Òä[ü¨ÖZƒ$+È cR”„±& Ç]¡±³Á GèJyá$”§µÀá¡ÚFjy#¬8½ƒ„> › /(AÆ&UdðÉZ-B€ÄÃ][ô’ ²ªÑÞ¥ " t  Áþ( #¸2„ëДÐgy$$°ñ<(pɦ˜t)2‰À¦ØPp…q¶ô†'P~?ñ‰>Xf:Ÿ$X0e>¯†Ï‚R®¥á„ØŸ^õZã„`£†'ƒÇ}; ì "l×lŠbì_M|ÅÀH˜­ ¬ í[ð/ÌÇÚ°}°TÃëÑÀ.19ŽS#AÉpt ’…[4ØM ´5"y«ËˆKÁC3¢#ÅĘK"8XàœnÎö2.“¢9¤³§j åŸ1›Þqà1‹.) QÉØ–&¶V%D$“ÆaÈ ø²„ÊÏÂ&¾Î„j(tå[FÌ$ÁKÚñA 7ExµÎÎDv!²_‹…È~Ï:·íá$Iý\üôSëÙg<~á³Rê-|˜ðać‚×|˜ò¡SßíÖwÏ×:çI·H½©›_ù×}åu_m>ôøðY‘ª¯”=õù0^¾WöýeùÊë$>ÜÔŠ§Í;õßù“ú³òÞ]ý·Ô‘ï2Ðìâq\Óµ°­Wÿ]åqÍòAMþür©ð{Su^ó3o5ª/ÿ·6¿Û¼ÑoRR*?ß-¬\a{ÜŒ›íѲۇGûp\·ºj>YÔ7†[¬œ{Ól ×ÿK;7øó}SѰ96ÖåŒÄl]·î¼6bá»nÝÍ´9˜þÜÖѺußà±­)¦aÝ—úÞ臛8O6Ü÷¦¶h‘¾oNŒýºï¢N·ãRkIÕm­½»ÆÉðAd»í—eŽ¥m—OœBN}^ô´áõgQsoÑîë×:¦Í‚åaѶ2‚NäÉ=¼¶×Útk¨ÝfZŸ·ê6@yïÛCßE¶ùȾÙYEOšdík?ŠÃµnGM–MÖ 9"°vyÏn™_WÂûˆ¹aùÉëfÓ²Õ}}íúPŠž.]ºu:.š˜ïkàëÉëKííÁÎ9lü¨ÔòV|nS*=¯}uÝŒ×+×W¸‹q´’ßúå…EwãÚªÅóûæ8ºZ ŽÇó¸°è¦‰¿Ût[w”½ØfêÞ¾4n í³ß éw­Ñ—òךŠO! %>ˆìMwrÉ:ÎÎZÙÇïÃ\dïÛ7y+{] &ù`2±lØÊ>äãb:êä¸gWþ–_wÛ?ßÄ'Å/6““&x~o%cºlAÏ Dªž? ¨û$¢*{Žz&ÌLØ™ ™p3ág"”â²Õ€Yêke?£ë|T"P—ÙoÙÛì5þh¡/rg">i¯LóëUi Ò8-5¿»ôAoÑîbz5Îì]wp—Ÿ•=dç%ÇÙEöoù÷¬ßîö&Å_²¬=¸.ŠþøÕýôJ¶;ò*dgH:ç„%#=YaU’Ž_œ:+ƒ÷‡ƒ»L†€v[ôó!8–5¸ì÷ ï(=–ž†Ñ)I6€Â™„ÕZ:Aaþå?ùx˜NÉ!œ+#‚Ój’!áŠRéÓP8Ç{J ¡îÈËàq°Ä 0ÎÉàô#8,®îô«ñä%Ü;Ê¿Žêôî4ZŒk„5J*Cl¤qô0ÇŒ¯—cl/ïŠAqßî÷ò¦;¹©Ý";gPÒŸÆøã9x™ïqÀýÊ<‚Èû|4êöz¯úíÉ­ì§2¿žÏ£vFjä5“’,w¼•V¹Çãׯ_å2²ì÷ ï2‡KýŸÿú·N:ëD$‘=Ó^ïr[K?kiƒä½ˆFÓ7˜Oo¼ÉT²S²óó$UçH±ÉÍÏÑÞWç×ü=o:”çè"{?*:9(äóË‘}Ì¿MVÓüÊl¤•_Žx÷å˜ùˆwoͤ©¤=jÞ1›’p>J§ ¨¥ÑQ¸¤·ñáã‰áf0•Åè&ëu;ù`œ³›aOÞNú½#âÕ%$"'œŠ’w£’­“ŒÞ<äM{ørØîÜ• t1Ü;Åàf4Í|ëȯ:eOÛ«ÁÖJp²`ø ƒ„@Æ‚!Öó@;kUYw’Ëwï>¾<ïÝ#Àë—Ôið$’¼¿6Çc 2>;þ<¿å»| Æ)oT8¤›M«1MVò~ç!m=Ì™5%LX¼ï¸%Uðö(§»õ¤°œ84oôiµ)ìMxZ•û‡G%Ö‰uÇ%=ÃÍ{¾3+9Ë·¼á;“U¢1U¢1¶’TIWÉJŸ©ô™JŸ©ôÙJŸ­ôÙJŸ­ôYÚ‘Ào]þ™‡w€È œÊmZ+Uâ-u…éÎlŽîÆ–ìIP$ÉÞ"©:©P&b¬áo²¬¡Ö1¬îØž–ާx¤t^b8žâ­ÝƒÃœÇÜ'K™`€ƒ0‹ál”)¹>1§gC[é×áÈ%„È0«¿“ ó^Q\¸raè¤ç/i°J aŽÓóAX”àõH„€1a{zÁHþþÆDƒõã"éC܃ƒN¥Dþà8 uÇß¡§AúdXÀ€XÅäFXù°;sØ'ˆQ2ZZd C,Ë¡$æ…=8NŸ9lBÝÏi”$:Æ¥Jˆv§Oèäd؈´éY’4– :'µ¦dÐ8Åz½ü¡BüÁÒû–ÂmuOä¤80@ E§$€‹_dø=8ìéƒÃ"q’._JEö uvF‡;=:J!k1Õ{a–O»âN&y 4(°Šã¯81¹„]T¼8%sø£;ÄÖ½¦\Sš]dÌ_/õÖ¼¬h4=ìUÁR•¿\ý¯Tüõ …ÇÖï´^¿Ó‘õ;Uõ4Uõ4Uõ4Uõ4YO¯,QHsÉN]†³ŸÆò•¿uE¼Çd¸\< /U |Zcñ˜%É†å –Ò–K7þN¸ÂCáI´ÏëwO‡‚xr6´@”$,Îö¢øë´w× º[¡ì+“jG8ÂÎjj‹Šž_À“«f¤§|-ßÏt`ŽØÒÖy°ìŸ ­×ÜAMmÒå®ËAm¿`> ý-¿5Ý‘ xùQ~TíÌÉÞ¢º¸–<Dò\¢Ê…½ó?@êUÐ endstream endobj 172 0 obj << /Length 1878 /Filter /FlateDecode >> stream xÚíZMsÛ6½ûWðH͈ßH“š&žtòÑÆî%®Ç£È´£IV%9Iÿ}A‘"%‹£¦Ó<”Hh±ûø°Ø‡5n#žü|~òè%DšXM!:¿‰˜fŒ‰´bADç×ÑEüünzÛÏ{ Èø>ÓÞåù¯^jˆ€K­ÿ­B­AÓÙ¯”sBó¹¢D€%M&\£¤ôåS:Ï)[6Æ-Ñ ƒ­AÓ|’)È~“F4+l|ÜdCÿžÎÓåý|š^g_u|;¿»Ÿå¾ŒÆãüã§AÑø³3~¸ÌMèx6¿›¥óåßÞ)¢ìUb-QZG p"…õνZü6M‡£ÙMÄcGŽyƉ³ûÞƒ¦ø”"ŒïâO*©§¡‘ÿ“øæ·QõÆ{$ÎEÌ’²Ê¦Ììæ‹ó“¿NïÓ©¬ˆä2Ò”i NN..itÏ~E›éù%9AÈ5‘ÚýnüîWƒ‘%V1åƒ%œ+4D›|1¼ø:˜ÌÆi}f΀¾÷=¦®¸¯Ñ}…ÀsË·Ù È*klÍ‚ƒï 1œ0šn¶[̸ ½‰ÒËC³Õ·‰7ÞŸ6€lÑ¢qîbò`yV¸Ìžåôp¿ V2ƒå=Éd|ze?õ¼ìA<4ÐÒqÎ8Öü´Î¼ ¾²UÞrokpêøjÌ>†·0±=d*®® ¼'³|yâúwÐ ŠÏÛÙ­EX©Ù·»§ŸÓì7"6þÎhê¯g¯¯˜ƒïƒƒïYú(­#ªƒ¢0Õ°c‘Nia—kOºW‹Ó@,äBÜ»Z£PÓ£ÔݰKJ2OÿK\U[ÐzÖºã¸õ+8Ç}é¼,磯ȷºãAk,êp2M”bð€ab7´žµî8H¢1©‡X€1»7~MÒébt7}wƒ<(8ñ Ñ”:®”-»!ÕX å„`[ØÐzÊš×ëmÄi%^ù¾lxs?^ŽfãÑp°D6Œ>§oÓûå|0~1N‘&Ë®9Ñš:ºX?Ñ '¤áDàÖ•awáë‡ü}¥¾È¸ìWžÒü+øËe¸ldU{§ëqc`̱X¥½7«ÞMÓŒ9Ýñ¦uðuü°2°:á´=;oZ;]˫Ցx#P-ª½ysq}vÙ¿à}Ùèò²ZÚc"ê†L­©ƒÊJÀnÈÄ%Q4'ÓÍ`¼ØRª´Ÿ¶î9C Ô±èÀ8Q¸™@ƒt0}…tߌ­!©£J q§“]ð‡)«w©\ÛÏZs\X…zI‡ÂZ¢ÅÞtpÒþñÓ³×nka}dÄ«é2u§m3íѨjé¤8Fmr„ ËoæE[êAh†êéX¬Ð’Îö×µåS3d…£I¿Ë¢µ=u@EÍÖ -'Fï”ZOZw[¢h¢pÈÙî&òóqgèV> oˆÊµóq•GÇ|ÁŠ}O¼ $@ØCh•i@)×j{`b¤Ýé`2ÐÊ™ÿvs®waÊ%¸YÈë&ÒØàðCWbåŠël„à]  4!UÅ„ Y5™ÛxÛ8V#¼Üü€¢GRj½ K8TZ$®53XŽî¦Ej `¬÷WnP IAë¬ —ÙxŸõ‡½„Iê{>îð¦û¾¨ôm@òjx÷ñàÔiƒßÈm¢²³Q9PZV»d˜A£Ò¨¢Õf¦YL\U8«¦t𠚥A yãN¸]¤ã´‡ÉÍwÂÆoëFµÙ+†-Q«¦"–M !àaP´Ïz‰‰_7 çŠZ…Žm‚Ž7C'a#tš¡cš?3S ÊÒ Å"cy+0oÓœ-Ö(¶-–ù³þÀ5$݇‰;¦k zÞÜÍ'áÝTQu %æ Ì‚*ÄÀXc˓̗V†rb•ômà(Áʪ}Í·½D¡ï8 xhÒ®yÀ9–ZÃ'D1=o‚0aÌà+×ö&þwÝnýp·Û~×ÝnšÝŦàö„´º)4Æ&ÜI²Ú¿ÓÍÚuº™Û…÷înæ "mwìtï1u­bX‘[c©†0œÀ+åü8¥¹ÃZÝ»ÓM¯Äã§ÏËMÝz¥":«ÓÛCSGW Bµé¢Pw»Ryî}R.dB[1Yu¶ëÿAtµÂÈŸ(¶ís·¨Èrà!¼ßßDÈ(f¶Ø]0˜ÈøJðnDÀ3ÌØ(Ö‰ðþl–ÊXmå›å€yH¸$Ë;Qöèj€»âû!-¬FýÐe- vÒêûС|þ7ÄÖM;‰ôQÎÄ€Z‰,ó}Íï%Å]ª1¹šO³Y ˜É¹‹À´äå€ú!þcr`õϯ[ôÀj«ªE¨5®[¶¿(à›EA±+®Ê¸n1Î endstream endobj 187 0 obj << /Length 2008 /Filter /FlateDecode >> stream xÚíZKsÛ6¾ûWðHMCo}äP·õ$Ói§µsIÚzh™’5µD•¤šº¿¾ I’¬G3ÉL‰A`¹X|Ø×GGÓGWßÜ\|þ=!$RH+L¢›IDE$M#% Ò„G7÷Ñ»ø²XLGÇå(!"^å‹q>úíæõçß+Œ4Öö]NÖ)¨nÞRF滽¾»¹øó‚ÀG°ŸD‚‰HQ‰(O£ñüâÝo8º‡µ×F t¼o$çÑ eÞ{Œ®/~¶&Ki¤%•Öb“ L .ˆÝû»¿³ùò±±²¿3£©Ùºg¾jÌgË]*pD‘Nõ@ )œœ Á›@à8XìÖ2Z§#˜nþ P[N£þÄ/Wˆ5hLaO‘ÔÔ"<Í–/í7ïy-Âî(ŒÞ%‚Šøê ¾¥_|m).7º^ÝMËbµ¼ÊæóìÍr™—øW,0…ÿÈ—Ný>{ƒ¶Fø`€K­9DÃv1ÒøÕ€°(Œ|*ÀÂp؉˵@¦ß[ˆŒg +ýí™ÅoÍÒË¡ï{L>P QDNqýT¸ì!µ0ïÒÀ9En¿Ÿ=¤;5Wã•IÈZÛ«ˆø†÷á¾ïyÇ&ãÍ‹‘4ö—EzIp·:ÈÅ‘: G …'¬YÈ&]ÂyWÈ}Ò½ì8‰{~CŒo8BöTp3âuüÜG É”iœÏ—€Nõà‹IW ÓY=+þ•5›å#a©F©PphÕÔ‘FÇ/y½*Õ(¡ÇõCnÝØ1Ï•;¨?ëO›,댺 Ø > Ò(!Í):ÑUÄO“VªEJJO2ºg_•êÞC³#$Á¿½L1±'…¢¡þ× qþ¼M&à»÷k$éú– }Ž!B¡þ;™ëQ’Æ?1‰ûÐÑmб0t‚l…îm:ªØ>茚µP8àV^…s'„A r±~ó0«6|È{X5«j·æÑÏí`žÕålœo,¯ýsR”s9}X…€½9Ø@!ïHJC‡;å¦;ÜÜd}™Ÿ…î ‘îDw"á £„Q®â»Œ$t=\¬Ø8Øç™*¶Þñl&݇K!R¸ÙÓä# Ù•PΑà€ÃNúýC^æ!˜FªÍUYH£é(…—xRP´‘t·Mß«cÝ5ÃÞœrö|;îƒÎI0]׉¬4‚è¿ÎM6™æe…À+ yBPøÕ²I¿ù}ó¨b ÍÒû™ †fø(vIÉMÕN…Š—¥©õS°ª$ЋHåbÒ9ù«j]ÅLëw?Áh7ž¶¹Òç–nówÐoa¢)áPí©¯ö®2¹¼‚†-”ëôíŠÓó¾­¹x&q9bëAû&¨=ÿ íÛ *¼Øä5ýa¨‹ †ÖŠ£© ¹•–¹@s[ò¦µ’g#-‡C3@—C{-9?kC1=‘´Ü¶GZ?P†¤§¸ý *\ê0¸ça-\B2Ьe-â<¬¥aâu±ölç/m[Ê·ó—t1I–}¢ô…wè½ì%éˆýO_>Yú">ö"žÁ^žG_¤ÞK耿PèAÜ“e16E÷XÌ8Ü-¢´ ¨–¿ˆÿùË'Æ_¼×í$0mmœP)H3ôx#c1†RP&ÏÃb”{Îô3YÌ[Ú9¡…wÿ g_;w‚ o–PìÙ‡a1 gÓÇÿ†Üò½¿€iÚ,~6.s8@Œ©æÐ•¥çà2œJQ~êo`ZŒŽ#3‡Ÿ( D×§xÿ *\¡«Þ­áùd†JÈ ©jÉŒ<€Ì¼‚*PVùØ´ê?MÂÔ¦úÀ„¦µÉT€]¶ÅÕvb7$eÛû“àgDÅWÔ B~*ÌzR5Bï¡=„2DtW OV‹qö[ÂáA/Û+Ç ·$ÅÀmø‘ùã‘’ga4¤†@ú!K õ5ä¾Ýà®ñŽlgL{Þ¬ÔN6kzºšç‹º2GºÄÙøÁ.3÷âSÙMsæÙS§®(×&ÌJoDb9F˜mt7­}fs%TÃ6êr5®MŸ%…„Öª~0#aÏe¦ªlîF6dþš„ªøUmç “1¯, 7±È¢TYùäÞ3†öt®ª¼´£ºXϯo4h-ÈÆ¹¶Gf°MK¡¢Qݶ³ e:®f–Í3e~J×`š™»ÜÎŒŒÌ\¶ª àa33÷d—'e1GF*€²ÐahXóƒä[!ÉÕ…ä@CéÆÓ¾¶W6O6é£~£Ü#;ÛdsÖ2ÚWÕ3r£YXo€bH7ìø>Yní“ÍW°T²D*%ñ#j3¢MTš™np™ùNp™åú!s/L ³0¼ºy¨½Â~¸›¥&|ÍÒÓXÜÕÙ¬¹3»G›†©H7Xyü6ŸÌðÂ¥ÑNâ »7püÞ‡²ƒÀ…<8-‹,êâ…a ´ †à.ìÈú’ÞDÅÌdКfeåä ûóΉ ?˜´Šlþ²‡éÈÅ„ÈRÕÿG;Ù± lwUFp™ÿȦNÊ…L—ù¸˜.fÿ¸…Ú~‘…lq?”5fg3·}ך´÷%p3k ¾Ó(tå,«}0>-sÔ/×moþ/cg¿ endstream endobj 206 0 obj << /Length 1848 /Filter /FlateDecode >> stream xÚíZKoã6¾çWè(.ß"ûX -ºÁ.ŠvÛÍ^º[Š-'lË•ä¦ù÷!)[²d'JÜ ‡J9¿ùf†n"]œ}yöú-c,JˆM(‹.çO8aÆD‰fÄ2]΢ÏñÅêfÂh\NΙŠ7ÙjšMþ¸|ÿúmÂ"F‰¥ÖÏ•ŒPk@´›epÌ kýxyöçƒGÁzš(¡¢„kÂ¥‰¦Ë³ÏÐhßÞG”qçF.#f¢œ·ˆ>žýêUÖ2²Äj®½Æ–¡A˜"R1¿ö§ËõÂiÙ]YpF˜¶OYº£~âÔ„êc"hĉ5¶'@1C”dÏШÀ`;T—c¬RA%Ðíþˆ-o¢nÇo&¶ ÑÀšLm¹·ðMº~ãØÍk¤8í}>W\Åï¾úöݪÎÊ*›NX\çÅê—9"«t€ú¸¹¾)‹ÍºúB½ WòÕÅ'v%á}ÖyHñA¨mM=ÚR=ckk #á°%)‰Ú[ò›u™¯¦ù:]Lœ¦h°÷3×Uãø·bîÛEöWææÈXúž|åÛ?]q´ãïh¾7}/hŒ2zG}›˜„0ûBÔÐ&†=€ïÇ]é“áo¼¡ú¶NpÖ)ð§C oð—£ EÚ“Š8¬ºÃʬÚ,ê‚D—*f¼ Lùx`ŽÝꀱ8ážÁÎÏJ Ç%H ‹/uœŽ€k…Ô­&~aÒ*i“ ð¥4þ|bâb•užÁáqEÝáaÛ>c|wgì†ã9·Cø~¼§Ñ9—Ä„$á;˜nYWœå-ê _«ºÜLëlæ;®ïý°b•ù§tÔ·¡ã ¥|úk¹GèK¯ |Ûuñx‘W[¡óÍʹò¯wùbáݦN;’¦`’щŸ×e±>Ç-ãÖ˜X¿·Ý’x–·,ó•ƒ;väuøR߯329‚Å—·Y•ù^Úž´§ë0bS9Åái^”þa™Õ·E謲Eã›nֽϽãíà ²ºM¾™²iÀQb›Iéâ¦ðû?—ÌÕ&]3”y}»¬`‹Òêøç¢ýãJëæ)CÛÞ㛈g…ï]á3˜Â[> 3ÓUh§õß“‘UaøÝ-X!+ÃßlÏ _–i]æûç2|Ì«ÖÑFäÀѶð‰NQúT&Þ^芎hxy Y¡Ùz!a#üð]õ¡‰õ{'8\ÇߎË@þºçŽðÆCý™”íAþ±9ð>“xцÈÕAŽÒ92–4‚.SD‹-"‘ñ·l@!\°Ö(<æ¾™q€Î…úU6ÔhɾEŒáA2kØ´Y òúÝ©î °Ü»··îÒx}»{Ä#®â8Ë-Ábç 7Ey?h Ö1zwññ$v0´6x>I¤j¦¾ÈRA¸Þ”«jp-ˆX… @Àê7’ЭFù|Ð8˜8ˆÇ›æI(­¶§ÐÐ Ä[u]q€ï¯‡Í¦ |*Ùˆo»n¾ƒÖSPŨ6,é~~ò»ùt8/‡g¤‹ÉÙNgæ(žËl¶™6›© ßú0‰š;Òf0fPaÌ<|Zù¶ž5.®®_ïX0]Í<ƒb(x³ÿyº¨Ñ K¶'] ßåUFúI[ÈO¤ÒDƒà“TóR)ˆzd5ÿ„¥{ £T‚H&Ÿ“0>CD£„dà©öeÊ))BR=¹žß3 »áØqqeNVA·Mß¼¼©8E %…€Ó%Ôz^´¯7ð¿­:!,ЩĿ z›ñÆéÛÈTÙÓà‚Bbdö¸õ€â£Wí).¬p9Ö‹C…Bìú7ñîd¨o™¾q ƒí$¨F®EãWí+ž¢í³BÙ3D„t%Èã^ï>vW#L’°VÕÅGU]ÃÅÖEº\¦ô%—Sr 'ú^™Ãõ–BSé‡ë­ä¡z ¢(“âõ–Ù«·„´®æ–Ýz »×[\Ë“£E<&»¤Õ]€XWp¹õÒúxµ•P¢9ïÂOadµ%q4Á–”«¬¶42ìj ¥¶#,ÓÔ[¾ÊÃâ¡{'Ä¡BKkÂjß'5„&kƒvP+(9ÐO¯²ø* ÞVYB´ª,xqU´¾Ê‚WeaÛ UŽ™‡O+ߪ²$aŠ' äu:9-Oâý­6}ž”§âIö¢Hö@ʨ^6eÜo¡ÄùlœË endstream endobj 217 0 obj << /Length 1741 /Filter /FlateDecode >> stream xÚíXÛnÛF}×WðQ¢ÍÞw‰Ú -š¸OiÐ2eÕ­$ÇßÙEŠ™¶l @ ÒÔîÌðì™33ÄÑM„£ùä×ËÉëw„H¡Xa].#ª("ZGJ]^G_¦o¶›› ‚§ùÅŒˆé>Ý,Ò‹¯—^¿S$"Å8v{9A8Ö`ÚîŠÍš ö¾¢'1Ò`rÆÒR¸Eï.Àâ 3OsÑÓ¸Ëû¸Ø_ÝäÛýÎù$BÖ*PLUp:ï n¦aI¶qfËÛÔûKÊÔ„q³Íï½ÎëûF’VûßoB€€Ç4ýÜïÈ3¡Hq¶¾‡ŠMó´Ü盢ÓÇHÇ2l(ÁM'Ô1Aª7ZvCƒ—ñdîÌ!'6.8.Öø˜†Ý 8šbZ”éõÅŒ26½êFLJDuõÚ^€•Ìá5OÖë„tFÅÒ¬á/,°ã‘û‚GùMÔ|ð Xöe üE¼I=k‚¸€1Ã7sŸ§×ûEx“rë®ÛMênw ‹‹ýªôk–þ§»f›2Í‹tQfÛue¤˜#BL6ÆŸÀƒ$‰Ã±,“UÑÉ·„…e[ t~—)rk%’XjÖÎ4Eœˆ*†ýÌm¡ˆ"q-n‹¬3‚1®SßÑþ‚èi8Ê?w»4' 䇭š×Öõ÷Á3x%ê¢Cؘ[Ò‘‹©aVÈÅZ@=íôбƒ©y÷I ÉTˆ¾Ö4’<õUx—oÁwyvTˆáŒÅf³†7W žñÿªøŸWEÁTQØ4 Š‡Tj…f”•ëÇK£è‘Fˆº’F¸Ïáì§Aᫎpuê7VÍÕ\jêhÖ,ýOwµêxAñtæu‘å¡:40¬«§ÕÇ ¥ÖHIu^¡$ЧHí…’„RŽÊ÷µ’ðû²[6‹sˆ%!–‡  á:3 ¿½¢I1œºf’ÒëçÐLkÃJs©k&‰Õ Í„sg\*CŒðAèd/V2­»S’)­N¯~Éä5ɤX¦ôPü †½’ÉAêä ÉÔHSöp\‚`†#ðiÏ1C«£´?è¦Ä}º í!U¹¨g–­‹ÄE'† ZÒÇk§ìÑNÔ nî²òv»·JO¯Ò &'ûÜ §¹Yº«e¹Y$›í&[$« Ž ;Jµ*LE£‰ÈÅ+÷%iî߬<-&©d'µ“j+†X™™¼½œü31ÜÂ$µD‚‰ˆ+ &‰ëÉ—¯8º†ß>D¦ÃÒÑ]¹— eö­¢Ï“?Üü)9°'–Tºñr:®’aü|û#YïViÛ3£@ ¨åpÝ_Ùð ¢Àò82u+nYDÃI‘§˜AˆÎD[pµÊ›¨QÌ6¹ >Í;@†ƒg•iá1¾Iv?ûd0ûu¨þÀÕ8AE½š@«u[HÞ›4ùé8Õz ÙÕ8è áÑø´!æ 1˜0n¢@aºÒø(z"í¶93­§z!r0 uþÈñá|äObÊ +99`1™Þ¨¾=öÚ8´Säiêõx¡€ ¢=`s褱8ªÐlpÓzÙþÛcš£84ßlDëýKYæÙ•7öeZøò¸t×Î2ÚÙŒWAÓms¤}B\ÞzÛïýðå¶¼ÍSÿCÒEQnsÿóߦE²{ïÝßüfŠØDÛ9»àã©…!2º6¢ï6¶UßÐò"3 ®ôéw‹éõޤÿÛI}zNѧ¾íÝV9¥q´V ƒèܰ¢Ï† öû"÷ Ü@‹C-üàw‡ÆjMƒðÿðDs’`|°s—¶„UÝÝŒaáéÍÜ$Ï@ÂËÛuZf‹ðu X÷I`(TûßÜw»D¾Íf7+B:Ò¯“Õ*-|–í¶ElåÝgâ~}•æîþ·+‹Û`)ñ›çUZ•I¶9v´Ë³Í"Û%«áäk¦è1&€þ6™ ް>S›LCT?´M~„ëV¡¡¶çyR¡y‚‰„iNØ µÉJ´4í„úuiÔ–¯ù7}¶h<.mhmÛÂÎÑQQ+‡›îï~Æ{lMÂô¥øqW£é3ð|“ç#Äh`ÚØb†°:!°DRx‘—Œí²5‰Í'£b‰ÍG´gcÄùÆçñ¨´…ÊCäY&$¢Í'MOÞO‡ñ.ÛQKcÇ ÎDa¤âg£Ãùæñ¨´Qq:4ót t€£}v„Mí·Ï't1O0á;AcËQãr5vù뿪˜Xý endstream endobj 226 0 obj << /Length 1977 /Filter /FlateDecode >> stream xÚ½ZYoÛ8~÷¯Ð£ Ä,oQݶÀn» Rè‘ìK»E ÚŠc@–½²Òãßï IÉ–%;•­ú!P(‘s|ÎeÒ`Ðàrð×ÍàÉkÆX’(¤,¸¹ ¸ŽˆÔðF31ÜLƒÏ×Ël6bt˜ÆL ’l’Œ¾Ü¼yò:d£$¢‘[+ !P¶‹Å9êy=y­uÀ€¨R'¥`„G: EŒVn'‚p·ŽÐ üËgÁöðãå øI¹l ðúîŒE$ˆR T Œ£s],ód=sE‡Å}âþ™ƒn#Øén¸¼Ûù>{ÈØñúáë,_>¬Z`°QêÔe‹ˆæóÌMÑQ X Ø£Ÿs=›áÛ˜`š¦a0fRgS~šÚ&'‰4"ØšµÙ@Åê¹%ÛOm¤BÂCѺ{;dx9ÉÚ×àï›ÁÄ…xÞˆ*ÐZÄo²|þBƒ)|{V+`»¾Û™ ‹§²x¦Áõàƒ;ÄZ†‘æÚžÃ0"Bh ÇIEŽçß?âÅ*Mšœg„ÖG°®‰¢ø ¥0‡hЀ“ÈD Š¢$;…D)„4„ÂQ>HÁy"Obã­ù |ññ²ä(—yŒgñê…w^¸®æ€¶_8¦¸ªù/fmðòÖ  ý±ã÷ VžöÚ–VXvF¢ ¦Ð„*ÓÄ~¨séCŠ0²iЕܙ6åæ’0z.#ªÍÑFpyËŸ>ŸÏ³ÉŒ`§/+ÿzí=+ZïÏ.:ƒÓÄ—q ®õaLIoÏVad±±¡PñÑ_UÑÆŽ08á3M¾%v‡oß@±Ïë··ÅÍ^°ºÎ*5Q¡”°ˆŸÉê¨ aØ«ëéÑÄ:#ÑSA³S#†{c|¿ tçٞܜɄz£M6𻕽YAw,špjIïÇ ¯rüƒVЙg‹Ø r°“2¡Høl)0¢ %'œªl²V©•Ä ^£UN ušèP§½‚ú„òlžÍvbÛˆ™!øòõ™«·WÉÝÜIƒÕÛn´]ï­æ˜ ‰‘âôrŽCŠÃ¨ìRÎiÝRÎAýÌà)}ø˜9–nÙúikÏsMçë¢^âí«ììþ@Íî–×X¾FvË|4Ò ãÌ=çY‘äëdRÌ—þ rÀgÅNâ^UL.`ŠaŽJdk÷ÑB†^ØVR»tÜðn™/`‹äL“H„uÉ‹û9NUº&.!ŸÛRK©aì¦Mâl™Í'˜›Øá6µ˜à×0ˆÝ ¯¼°:À3M²Yqï¾.³¤"\ÄÖ>ݸ¸ «­+P2Ü_OJɈd¬ŸzRJJtÙz´ž<‚uËJᘋS¼è $J!°ó¢ÍyºäЕ:6 oüZç«Í­½é-¸wÇ¥ -ƒ@Û©@Ýçê`ûìòþgÛçë‚záÐ,².ãÅ"Øn)e³ C•ÄÅþ¢»^Mh(6oN+¼!ôñ_RE¢²òÞÅ»-Pû1dnê®KXä¾˾ûrœÎš5À°éò\Õ=Úèøêþ}YۯжöÔöº·SÙš&º¡!RöÒó†CÒØcm¯«í»«ÔDEk"ÏUÛ‹æ_Ûø›c´?£ëŒM^%!cé¥ÎçBïÑè=Òê:ëÔ„ê3u®n‚Ú¦nÇö1Ÿ>¿ò‰4Œ¹ô»»¦éÙ,äÃÅûþŒ¯3DM”µ¿@õa|B^–¢}Ÿ8Öø:ëÔ„Héð\ÆÇ9áÊü¾Ì÷²?‹ëŒKZ OÖÅA}/¨¨ç¾5ÓÃÖœ¯Íê°*÷Æúˆá=–æu×°$AB~Rí¾„F Š×Dƒ*@êí&ÔKàªË²C íÝ*Éctªþ×ú»w н}›ÖÞ^øà»Ý3IL·«›_ì×Eœ¦^°u‚’}Ãþ Hœú—«d2/‹¤¸_NK=J–; ÆižÄÓŸ~€}±oH8ž§ñ×´º©à;pux„…ϦM÷çûöû*›Fµå·Tl ñÒœ»òÁÆÖaë>ÆÙt¹pã ²«U6õW+¾#èKÿ6ÇÁìa‘d¾=÷ _@`EpÁ#»¥ü×»¥Nþ½MQá® ~ÅEQšíY´²‰SµKtG‘t 4õ»t¿·ÈÂᢕ08lÝ=‚Ä„ê×@hÞñ1Ø> ëw|ªV&×!v"ñQs0>|…$Z=r…Ç0¶u…ÇRu7†]\ØE³eþ³üiFUë¯ÖUÞˆýù*Ž·1†£OBY ;ÀC¶é¾"÷¼<ð’&x®ˆk l·Áf×ÚªW(½’å}'QÎ6Á%¤{´²Ùq›„5Û­[ÞniûÔ5Ž|(lÐÔq_Åy 3Éݧïó4uÿa›8_¦^Æriüu½L ?r.3}ðš¸>¿ôˆ¤?Kni2)0ôO}ŸP‘²Ž È›ÏË«b+a‹¾þ õ#ºÉ¡þ6ÍCú endstream endobj 241 0 obj << /Length 2143 /Filter /FlateDecode >> stream xÚÍZKoãF¾ûW9Q€Ôéê»dëñL`wçäƦdb-QKÊ“™¿ÕR¤IÉ¢D9¤šÍªê¯«º¾*šFˈF7Wÿ¸½úþD 1 …èv1eˆP8¢€Ñíct_çëåh\Lf ã—týNîoþþCPb¨ñïrMx‚’ÝKvÎ ºÞß^ýï ð–FV:‘\F S„ =¬®îîiôˆÏ~Ž(áFG¹™«LBdbß{Ž~»ú7Y‰È£˜rZC8W(L!Á+ÿu¾Ú<;+Ûš9Êœ¢ºe~âÌ焪C"hĈѦ#@‚&RÀ*—Cåa 8ÇHDP‚ÃîO¢Øbµ~½éØ D:Ae˜Gx9ß¼óìÞ«¤8ÍÝÍ$“ñ¯óõc¾úƒJzó'à LpXÄÙzâãàAà[öúTé`H:¨*c ‘°2ÊP¢òm‹—¬ì¬´k¶N˜ 9ƒÂk¢a gÐÓ ÄµGȆGèQ¥þf•®>§Eù”mƒ´ Syáo˜ž¸ßåËçe‘¿l‚.L@Æ–Å(#[,ÆþÞ±˜¾õÆŽVõ}ìíÅH’HÕ ¯N²ãVNå|›Z–yñ­m]®æSYï‚…?ìÄ˦O3–¼¢F á×TÅEº})Öe¯.a\ÐvJé)À…kšw›æW¶è 3&«!ê5S!E5Å2Å^gâ„ÓšÜ+ˆ×‚ ‡0‹ó…½ò r—óU†¾mÂØsVnÓG?êKŒn€ØFœ¨Møw‘­²ÍüùÚB;4ölˆ4è M'§¯3 ÑÎ(8à <[”¶¼'¯ŒåŠ(^ïälÖïHfj÷x×+g&PET[{Ý8 Ü!à—|3_­æ¿o0 ¡WB¯êôÕËÞÕϤ’¾¾°7Oó £ñQ©Q~Ûí#·í½Ë‹‚¬_Ò/éó¿®ÕŠ‹{{[gœZ$E£¡ëã{vk%û2Kï 2ÉÉÎþÞ Cǃ7cÌfXu8ƬÙ 1gÞÂ_CŨ}`õa­¤ëUU§Ù®t1äQo#^öú’ÖD ~º/©ýX‡Zµ±š¸×I·ßéÐüXùª?¥ñæñûÏt‘­³õWh×zÔ*¥@ âÔUòŠ‹tVÉyØ;Î\F²ù: ¸nÀn€cV,Š´ÜäëGkñÔª8GtŠ¿²²’²õse—`õ-´iÇIM:;‰SØu@ö78Ö›@Å8 ®”Ë3Ç5NPÝ¡Ä\a©g}¼8CDe„Äܦà2ÅǺUŠäÔâ®Aš'÷2ÓÀJmCûÓh…ÛpŒº0cíGé(ß38VȲúôFá6\m×rŽœ’³¼ôtU¤#ч%_¸qŠ+µ+ÜÄ€ÂíS‰ŽV¦Û1ª²]èJíÞ’Ëv¹Pqé·úÐ8KQ8¶âÂ’ãíFô‘±‘në]1²ÁzgÉSÛSf,^¥Û§ü1ü°è¾E,È•|_Ÿ:çt]¨ø¾6Êmõµñw]îÙ.ôueÌÑúj`åM,3­£ŽZ•Q×õ9XMQÂxÍ=ìGŒ˜xn/®0¶ËrCy¿ »}`’REÌ.½ÏD’Ä·O©eVl½½Vßjþ_ë1áQ4oò²Ì>?§~Žå-vô¥ÜCó5ºr­½ÙËém¥¶+7k—÷œwX• ïðä+ ÎY‹¶=¦—Á0°Ñ1a 3üH3\s'30\«¡ìœÌp†ˆÊêkó‹ðÌ/¸mâTþÒ<Äoþ´ÜGí/‡¢ƒ&à©m ƒ¦€ÁHHô1ß(†kíŽårжmÀGs=ꧪáPtÑÄZˆjÅ lïG飨êpµ]˱p¦.ä2Áü|²,~øé.ôÑ l;ñu-3í áDßmƒî³fnz3û'ÐWoâÄöËôþÇqqð^t·I=$ªNA؆½>u;—ðÃO¿d¥ ëEøœ¸õßgïüÕ=s‘î¢}”CÔE™#ãƒK çDÓ“ƒfÉŽCYŒŒò`ˆº(£(v©N ÍÓ§wZÏup·ÿAtÉüõ1ÔÁˆtA¥¶kw)×¥XÓV—ˆÚƒÞWïî'º0ž»eõ _Ûμ+VÜ\ˆ¿N—»Ó´wá½ïì¿>¬¿F G¶ê†„ëÿ,zä endstream endobj 252 0 obj << /Length 932 /Filter /FlateDecode >> stream xÚ½WMoÛ8½ûWð(ñ”3üÆ{Ø¢M[ìe·>5 7q\£‰íõ’ý÷;¢(E²d»JŒ="åáã{3äÌHŠ™ârðÇxðæ=" ÁIã;A6€¶üÆ"Ôb|+®²·ËÅlˆ2[Gh²Ýtq3^?½yïP „ C±VyPŽ‘ã"¤Üf Ó^ïÆƒÈC)rtpÊGÄ›‘¸y\]KqËÿ}Tðâ1Z>äÖLÄq/>þHà×ñg|ë™h¾ø;i²Z–lN+0¢ç=ɂԡ ÷{Á-.*!"Zý£‰«‘!“-oK Nmß)× £ñzÛ.céz@vj!…øj…n×»éÅópˆÙEçu›8ºŽþéVÝ›rKµ eè,ª%ªÐP}7¹ßÔ$±êr¶÷OãõIáýY·…{ &œ%Ü–ŸèÕAát59|:¼--æ›Æfxœ-1ñ'˜8ÃyDU®îbb¡r/G‚´Ì“țɢL'›ùý¿åþ«Ý6YlÄŽ}ÈqRR‹K7ew4çS0äNï‰Ì…tžO9ËRÕΜ„æ„RZ™Ôf^xÒ$Ùüü¹X9]=³\b´ÕÄç÷åöG‚J‘Ø”öçYrsK‹ÏÑÏþì8Ò,ÇJÏþ«Ê‹ŸÌLOó9R¢fõ|ë 6 IU7äK”‹I¾ë¦íÁTFÐÎã)cqþŠ)úHúÃàÀ8ÜKõòCŽÓž² Mº˜ïž&«ûi{gEÈÎ~ÁÖ­ÂGœu¯)!¯€(I(ÿ§Ï¦‘£g“UÏ/›*á_~£‹Kî¾ùüås§¿Ú®$Süš!õXëT îdúïÙA›ÀÛWu2¯€(¯2#XÛ«“©ôü-:Œû endstream endobj 260 0 obj << /Length 2594 /Filter /FlateDecode >> stream xÚ½Z[sÛ¸~÷¯à[¥©…Å…ÉdÒ™îÅ™íìtg?Õ›š¢dÎJ¤–¤â¸¿¾çàBd[iÚ›âÜ¿ˆFÛˆFﯨ}~{õÝR§D).£ÛM”("…Œ”dDð,º]Gw‹òC_¶Ë—t!–ŸnÿqE Ü_»¦Ýïí¢1IÒ„á¢4ZÅI™0ëÝ,¹\äí’¥‹òɬÚ=íï›]g:y½6þ¡¬,ÙƒžÞʶ¯ÊÎð`¥øî¨0J2š9jRØÐú;|ž1 Éd‰'3dHb›.ªÎŒåæQ4ûC^ôvLs“Ž]¹9îÌàã’Ÿv¥¾1϶<´eWÖ½™oëŽ÷Û¶9L¯Ù˜çï”òºêKÓ«êµfí‹e§FA‹ÙT.‘J’e)ȧ%û¸\¥‹_ÌDP@B²„êyŒE“h¡Ì\n§Ééz1‰SMfýN%5%ó'r!Ù…–JO¸›˰-oRL¥›´i›=NÏïC±VL[—{|¨Š‡å*¦bÑÔ¥iyx±.×Ç¢æ%üC­ãÀ¶¬Ë6ï›¶3ýMÓšFÿPÙ!g²\% ]ül¿,šº«ºÞNBCéÏ´©Cø©ûîZ3O}®ë|_îÐ)RãJðè£ ÇS]HN’lÐé*¤. †IÜŒ"ßíʵYÒH¸«:70wn$[þy,kTOùİLª) èÆ•£²Ýt!NXJX{æ5"Ök×0Ϧ]—­áŠ/€ÁÞoÌs—ß—;Ðt²Å¶Bø\Õ[»Æz]õUSç;ã\€Š„¯ß®oElK ÍAéò}‘lÄÐV¸jbhËGX&}ݳLÍusFÝãÔý–Ü,Sº ‰QÎBgÄ÷¨;ìºÃA£;=¼1#(£Þ[i•˜JÂÓ„(™f¢4„")‰“Áà "® «¤U ÒXÇM=à¸Ã÷oC.~ TLÒXxøDƒ´NêëÉÅ9öZr+±ÿfÉoð_KO·º,”LÎÓÙPoÌÓœ§§cÊ’ÓzW2©w%îðoËÎ~X›W“s¸ùlr憮©u©³gn!Ii|á©{ƒc b[¹´‚D 8䯠¢iÛ²;4CÐÊ‹FØÂZNYû‰œ¶Ž˜»Š"h,hGJbÎ.;Ïw÷'áú—¥”‹y‰3wÅ m@[̰q²Û5Èþ£Ù¶ã»§CÙ½qžÃ`cÃÇ2ðÕr»Vª¸Ø¬×Þ{éorC·ÎÁ´C`GŸF–1uA[«ÓBűµ"ê³ÇT ëÀYFÛéúg^ô;[î«ÂéÆš¬nì¹{îv$$Þ?]YUà¯z®nÙ! qÔÂ@û³.EïŽ: ” #x‚e[nÚÀ(~ÞÚu 7Шö‡¦íóº¤à $n7ÞÍ(£ócNH FýIÝ—­eªs†>=~[©@û¼‡/:rö¤n¢ŠÅ@¼ø#ߺ¨e܃¦Ž¢&þÐÀS‹Û‘…©e…Î "}@ÛCÛ ?Wk­K ¸9Ö"‰íê e±M@Q +fdV04Þ@çÞöN”)|ÕvhR˜³ÈalV@<©Ö©YµNÇ%6FˆÑ›å”-ÊIëQ‹EãÛ¶„h©ÏՀĨ~¬v¶K5ŽêjRõvò^¯°mÚ§`AÙߟ» ùôñiŸ/X¨¯eC’Ép„­‡|É©‡žC,WºPäˆÅŒ$tpª‘¥{ä©ÙýXnòã®ÿP‚‚ÃéqÌöng ¹&&"†->ÌY‰üÎÐÇwÐÅ^qCÝ­lÐÕM‚C)÷ˆ¾tû6ÛÍ OÐs×o$l.œáÔ=˜ È£µ4 ço(ƒ-Õ$åCblšÇO¨)N(Í‚7F“]ªpƘ^.ÛÖìþgxUáâÊhÑ® =i±¡3-6:€›9+× m&Sƒº±’‹5‰žtÔ—3z¹Æ¤ ªž[ƒÂ9"K³“$¡$lÿÿ‹%à\>¿€Ipv…‰í`Uߘ0ðá}@Ǭ˜·€b©«‡móÃ߬wàw^B›˜ô(U7Ý›w65‚Éý쮪7ÖÓ5½f×üÚu?]ßÁ\á×ìºÓÛ¹Kž‘Ây¡gþAï—jíTï5yvÉçÕŠ—5)7j½[j] êÀn¼ ×f˜Ù'¿ö§™Þ§S¾˜]ïWF³³q¸”Š(}[f©Ã„ûÀăÏå endstream endobj 167 0 obj << /Type /ObjStm /N 100 /First 878 /Length 1818 /Filter /FlateDecode >> stream xÚÅYÙj$7}ï¯Ðcò¢ÖÝ´€˜'†?$1ó0K† îà&Ÿs«ºÞ«ÛÅÄ`JÕu$]Ý{t%‘…(§ ¨…ZñB„ñÄÉ,f€ %|7 †Ê5ä†ïդΨHhÕqh)± PÊel(àÅëSŽZ TñI~®ølŠZÕ»®h£/yFþÒÐSòZ °%œD#T´Ú…¡†F­¦(€«VÂh ™tÆ Õ Úá„êÕ‰ƒ$Á÷T‚8_ D|øœ*  o &"΢x,@.ˆje/€cÔ€ Åé¢tŽêŠ‚ùð©&ç…¾šz- šœ.pÊì-× ’a Ø =øø 5|Rüì,Õ#ļ6cÆ2ËŒæ‡1-TÜz(d7 µÙŒ½Vš©ÁLɨii0% „ŸY 0¥P0§ÍCÞK“ä–´úl Ðxæ³bVŒ_Š8TÑ K9Ñ0?!»c°À©ØY(‡¬xcøDVx«…lìsˆZ–+ZF­ {2úËÙýT[ÈÅgU¼à¦4‚—ºqa*|Aƒ¦(àgF%54h)ò¾¬DËh« ½[ Å0›ð—P ìî¥dw ¥º  NEãàkinÀŒVš{f¹&®³³³ÙüU¸$´šÂ›0ÿõ·ßCÉѼQ)Ñé]Ý}ùònöìÙaÍr̰f–£{j–SLp“,œ"úlaÏ—W·áì,ÌÏ1tàPéÂÑlU&L!LÆ7H‚n…²ãeÌN+ë®Lˆ²U …ÈÜqµZ÷â:EYïßù¾WL,å±uP¿¾^~|»¸ —aþúÕy˜_,¾Þ†ûQ\üý×Þÿ±˜Í_bD‹«Û›ànê³ù›ÅÍòîúãâfP±á§_Ÿ>¿±ü.ýkþ^•bmïÐÛûk4EúùÕÕ ^JêŒ\IÇç€Ø%2àgó·wn‡÷Ÿ?_ý9›¿X^Z\¦wóç?Í_^Òðâ?bl˜(&øxt¿Ï-ºpLrm ØóaªÞ†ùË‹eÀDws÷áu?/¯"¼&Ò÷n­iÈp €ØŽÌÑ-]IANkéaòñrIVšð„Ÿ‘€•ö°‘M6#…6bÄÆ˜.kÙ§-èN g)¤}X*±!\z°î†Õ­ Ëàå¡VðTõf?®›’кÊÂ!]Ë^HW;&¤©ÙnL×Ñ®žÆŒOY=uÒØ^…“ |Qî£ÉTcÒ®ØÖé£I¸ÅâlVÑ$°–IîacÓ±A®ÕÓ=3°òs7$•¿S›<¡mD£yŽˆ óÅjø=i‚6Ëãdd_hjîš-è䓳·n?„ÅÄÚ¡ÜáVK‰E©kpSdÚ=Xäç‘å:‡°†©‡Z/`}2µ%m½¢µ)Ž §¼+`¾«x’€ùžÈ)ù–h|ò¤ÂU5ºº»$lD$a-ƒ}´ÖX¹=4iVR±ÞûŽÏ"u`CØ…1ÌeÖCf¤D ºSäkðì-cóísC–¥‡Í®VøN·S+¶¡ëøWLŽõa™cµÖ…5“hUú°¾Â¥>¾’¡Ý9÷a¥ÆÆ}íbØk2×{Ö.(A­Dú,FXZaµ •mkÖ«s§êí%Z~ñDéúYÉøœ6ÁZ)Ãjó´†îÍM™`­•!'¬›¹Þ+C&‹µö±)É`i~V•ÊHò\‚‘‹T—~ç]‘¢î„fºNh <½XkÑcz°†gîÚG}îÂj_‘.¬”së›gÛ~âÕ……K.ÇËÉNÒ³½×{0qúW„NÞOtø¤DgÃ.Ü¿6²uŸ×Ä’å.¬oáZµ>,6ì‡rùCX®9R/Öósêã‹y@Ž }Ø$ázÂ*vRNÞsº¸už¸±&žê¨J{Ž*í‰+Œƒðcóñ™WϲzÖ)W>Å> NPIÑ­« )·_ €h³ò­3tžéƒ\ÈÏê R<®Aý$•o¼ö!3÷s`…'È=AÊüY ²aµg7?¡i”-¦ 6ê¦:† MzÐ9ûEV‹ÃeÔp C ‡$7µS:üâ¨W · ëµÉQ«}XÁ†¤uAÍÂÂ]X­† _»°¾$ç܇e¿{Ù=—yÒnÀÏÀU?õ˜@1mï^Åïãž¶´[÷Yü6tå gTëò“ù?Nœ_ÝN‘œög¤3#œËîf«5ku“8Õ.°-ƒí›yENåIÞÍ9=y–i︤øÊYïÙ¸öaã~ ÝÕ@kýžÜú“Ô؇.•a¹ ñÌ}P¿Ð:=zé÷ñGÞ?ã¼£xÙoúˆÖí»íÎMÏ?”³1- endstream endobj 273 0 obj << /Length 1612 /Filter /FlateDecode >> stream xÚÍYKsÛ6¾ëWðHÍDÞt&‡4±§™Nާ×%¦ÍH”CQmÝ_ßð!’–(ªn HÜý°Xì÷ÆÑ2ÂÑõäÝíäõ!$RÈ(L¢ÛED¥A\B$ÈÝ>Dwñ÷Ût9%8Φ3"â}’~I¦÷·__)Œ 6î[¦S`¹øˆp;f‚½¯·“o8²Ö‘b"R”‚3}ÙLîîqô¿}Œ0bFG#7v4"ZGŸ&¿:Ä’GI¥uj`¼‹T"Ìs}7 *bòʵ´h¹o¡ß5÷¾.A4œœ¬=7TüymZJ盃 Ï[àœ"Š<×#,ýì¨ ±7&µAD1b†¢nòÿ²eT½¹žDw3‚1ŽØý654ž¯WWSþ<›'OŸž6Ÿ·ëF¦È=†Ô0¹MèÄïX`ÿ±Í"X‡¯»n¤µÆH¹GjÛKHSZ…ûôK¾Ú¦á‹2‡ÛkÆ ƒ¥“0_…0,aaâöëj7Qã`Ƚ…Þý.yð=iOh"‚H”rU 8ïžÞÏóy×n7¤’ÔgrBðæúÙŽ"%ŠìiN6„¬@šo]ûG‘)°Ró<ñsÈý´¶ûüqŸ£öÉ õ@èg3Ÿ…„"™_¯-TĘc)­ÜL?ü5ß<®“¶gFaRÒœãºU=$uK=¢zŒ0@@Js> Ö–¬6×:n®ûë·$aêC¼œ?¾õÉd¿kƒz‡«/¶–W;:™’¸¶¡;›Vߦf¼N²*:4­€ ]‹KðÄ aE]¼òlŸô“Ùp¯À%âãÒq„ ¿¥­jÔYdƳ|^‘™PÉtIfC¨ì—‚º¶I–¯’PŽ®mp›ëÚ¹¸;(íM†µ&è§O('!ºNÒ$ƒüÿ;9 ×ä[)Ö^^+8–A£x(ý$ËᙑSHV#Y®@‡ª:5Íó<[}žRàÃ<9il‡ÓÞ$ù>Ký‚ç_=#-«Ø‡ vÛ„¨­C{âJ ©Ju± 3?ÐÖö±ŒNH·E—Ó"ïú’+`a!/Ã\QÄ„9‘!ÏpÝ*I\ZzLIa"€aB_†"áX† –ŸK‘µ"ÙÚ”$ÊáQi–ÃqN¨K0%çIÎ'ÃUºX¥«üÉ ñ«®c5ìèyq8ÜŽ¡ÌçóM„šü©aƒ^ä¼È EJÖ(mÉþ´ß@¶æÛìçÅõÕ§ëd“¤ù óX…ÁòX G?‰Q*¶VÊm"¯:½1†4eGÉ v½&'ž¥ì>1à³p;Rð˜%Št÷¦‹j€=mì¼ÃUš¬²L2;8šùŸ “âeÉI&NCø\ÁYåïðÐÂRUTf]0«{¦ü«·›dç¸å)p´; ˺4G8Zózbôp4lCRݼ™ÎƒSy1pP¢!»ÜVS(0‰‹, [ts± Û2Oè™rWÔ â©Nš­tÅCWSëyÏjÚ4i:.^Z_Î×k?lø>‹ºÔÆY§nÚïösÿa•(BÄý‚t’0—‹ÆÒ†Ÿ(XÎpÝ*ð ¶»ÀlLa"€€ ®_F°08Ó&Î,?®vE¥½#‰{Ð,•]3{ëÚ.¦€ÁŧõƒQ·àyµ²ÿ_Lú o{‰°™Ç.!}T¢š—â³ r°?‡¢çøíøp„“„ …GÝŽ0 XàX\FíPh®. vÞ'év³Jÿc½S¡°z§¤_ñ@¥†_Vò0X¬þŸ’§aÒ±š¬&â‡j!]‡;©×Fô¨Pyªºè%pÝP=Ö®W=žšª:ZªGW=öd¨ê¡¥:ñçm@ÚR;R!¬i[ît Ü«Xjº$Ë©¢£¾RÏʊɱÓì鲃bŒ('ÊŽ3\·*­ é¨J;ÂD¡Å±såådÑqñoËŽ®’ ƒ}­|qá1<ÂíER¬ø“ÿ„Q• ÙѼb©TG©FŽªŽáð:fe‹ŠQ{á|¾žX ŠÊ!ª£”¾ý>¤œ_ endstream endobj 286 0 obj << /Length 656 /Filter /FlateDecode >> stream xÚ¥UKo›@¾ó+V>&;û‚U¥ZÅ–¢JUßœH¼v,ÙØÒ6ÿ¾ âÄR’Úa˜ùv曜­g³àÛ<8Ÿ""KÀ&Ù|Å„±  i ‚EÅæK¶¿ïóu„<,¢uøèò{ÝÎ/ϧ 2ä`¹õ¾2™rㄺ¶ x{×ùÔ†ªµ¨c%„5,–R£½“ÊûgÝS¬Ùðõj°EŒœóðGvç¶åÏÕ4:ÌŠÓÐ=]?íîöÛÑí§Ñˆ•3á,ô†ÒG>[TjhäÅ.Ý>’ŒH ‹.Š®yë­ÍÈ$Jwî«òõ;ˆ£¤7"0ì‰Ô,Ñ Xñ¬ªŠÍ]$xøX¹ÎmP‹qábi%h­)ë¸M=Ε«‹¼ŒbIDWÎ ÛMYyi¿j5Mæc]o>°.Œ«'¯*b Š•ááüaS¾~ÈZÕd¿\NÎHFN\]â?5ŽË'þ{–/½pÈ6…kåM^5·­]ÑÂd ·,F–ú3FJVYŸ¤Ë‰(W6.æÁï‰"Îê -53Z€šÝï‚Å-gKúvI}#‰¥¿åŽ¡M@'µß–]¿üXÅ,X#Œ¯) !(Ñò{ñ/Û¶îøf)ÐØ\= ?©ÃW8%}ƒ36µGSâ ?Ñ!©­RqÁï†ây@5ÁŽ&¶V\Í^!ÙbZ‡ËÁ˜¶¼ëìðµ]'µßh ~¥hê°ç9¦mÇxUÖƒôåÅvz+¾nÖF•í)}7!Çœ (’w@¼Í˜H!évÝ"jhÀ3ŠæTíIzÜwmŸÛ»{%7(ÓO5íÇ!ºÁ§)´ÒžBPŠ”ë~úú¿M{þpa£¼ endstream endobj 294 0 obj << /Length 2130 /Filter /FlateDecode >> stream xÚ½ZIoã8¾çWèh Í}Á}˜B'ƒî4ÐSÉiÒuPlÅʖܶܩú÷ó(.¢$ÇwŒ>\ôøÈ÷ñ{ ]…³e†³»+ìÛ?^Ín¥Ì(FRR‘=¾dJ"ÁD&AŒšìq‘=M>­òmSì¦7Tà Ÿ~yüå #œ…¿Ý2K‡Ÿï¼RŽ”VÄ*ÅÙ 7HæôÝN©˜ä»)Ñ“â»Óºÿ¾y®×{7x±ßk¿ß¼®–»CQÍ /yx^¶KëÃvïÎâ­™ÝÂn#ƒMØU0ÄÝž+»^ñÉ6ŸÍ—…]9»%„¦+„FRiXè̆§Oà DLÜÚUým$E\²°h»«§ ýW¹(ön×C5oʺòæv-صov‡yㆷvU¾+lc1Q,ÁÄjiñ€ÎÓªl¼5eµh—|sà ²'Ín%ˆp†7)FNòõ²Þ•Íjㆇ}±p½²rm$h~Ùº¶7ôº÷RµkS‹¬˜k††Á”3Ìõ]V¼J$#ÛãtFlMÄ}ÛêwEÒ¤WDO„+z˜ÞèÉ}¼J…ŒÂALb ‘dÊÉR/&RuqͲDê,°¤/HYdÆÿŽ©Rn:H€r”aÈ„^‚c¼®ÊùÊuËÆ·Þ¶õ~_>¯½Ç´÷c=iUÌ¿†µÜ­W”»fYÚKýË]Tnj“7»ò›ë?kð‡}_e³ [ÆKiGáŒUÝx&Rƒ8`q„ˆTMàzãÖëz»)*k•ö:[¼rã”±0ݦ„§MYyu޶tÌ=ø¹G÷¬z7Nl€É»ÁÜ0a&LvÌtî7Å”3R8Á•ŽRAïBÊwRþ˜ôã„T#dzµ120 1«Éw # ÓÉów7ù9ŸR !Ñ~µ€Ö_ó]ågl¸±íÓ µÁûÉÅN@zM½Cz>|q[çÕÂé\çmæj·i\›˜NÊMˆØ-ûüªpòßl p™‚óÆ4"2:åÍ1”D ¼Äý4µ:ïójyíøÂ FŠê¾W|Z½µ)ø6âý{þ'/Þ—ïêÛyPŽm¡ ™þþ-~/\*pZ§;_µÁÈ·gÜêýýÔÐɣϣk½þûÊò‘2ä}Rf„#Æ%µvÝ@1 Ä(&!¾nàˆ¼£àÉžnÆJ†ÍöÐä6Ýû@ø¥ÆoÖ>GJ˜“Óº(¾K¡A%dM#6õ•àú&Út–U½3?¸Ó¦Ûý¨$\ê2(8M¨ÑQ"Ún ·ÃýÆ]d#Bö’¤B’Ç twT©¥®>ܺ˜Ë¨DÔ˜D ç ¤ÁgÃM–½Yv‚WÛð/ÁJþªCÍKÜÅ2›’\Óå;²TI>v·nGI d‡w×®uù×­"“ô˜~‡¦Þ^¢®ŠþF-'mg&Û…¡ö´ƒy½-ÛºZ”.2õ3]\®²¥žëPÀöJwøn£û#ð^š .pT…ïަT(ëi¯2€¡/—mÐß»™yÏ5aâµ\¯}Ï&„z÷Õ­ðKiR‘ –B Š¿„‘6 §¹?©Ð¼+oŠÍs±Û¯J_'5Å~Pº¹TÙ:\¹Î¡†kÝãêçÇ«?¯¬?àŒ„7c1f¾¹zú‚³|ƒz¦töÚJn2b U+»n=\ý×?øxf‘T¶9EÄ ™Ãc ãƒÞÏßòÍv]Œwfö=iïolÝ;¾²Ç÷ ˜Ò3ŠŒ6# ‚h ùˆŠpqÂÓI .’zIªµýܟ iži8.[3OŽe¾ýÉÇ`»®?Ó ‡"‰‚àì60ý¾+«y¹Íן¢§=x³ŸµUöï_ìùÆÉCHëÝyûl¨Æhc±•¡âm,±DÚÇÖ§i‹OY½”1¿_Û!Ÿàk7Mf<ö˜ï±™ö=:^žÌhü*|O$rÌ˱N_” 3ÜJ¼&"x¶ù#©!à®úCBNÐÅ‘¡Þå ‰¦ªh>›Ñ*:N“>!U˜‹ŠRÄø¥€7M`¦jqÁóÍ#hžf—APCp‘>ýÑAÝÙKÁˆ묌ÂQ–ª™éð¡»ÕÁÓ]5=éŽÛ$¡ã)(ÏÆa %Ô\œªË@©¡è&ªÃ‡EÃŒ…2"ÁSNé8}ŽLî£Óб’¶DJd˜m|À³­(âŠ^@¯Cá¹$\ S0²G·èŸ§Â¥’„S´Ã*FÑ.´§1ØÍ~9ÞÙ¦ÑãPju‰lB¹Bó^:!‘'!`…ŒBCXç—‘‹!Lr³×‚Úx!z¨ŸÆIPkâíuw÷6Èg#4êZ!/DQû°¯6Œ‰2äW2£ã^XĆx˜.äõÚ˜Ê,÷#oƒ¾Èv1¼Q–²ŸžÂøl€ÆÓþÎwŒ)CÄø§µD´Èd3â­è9rך.ŒR2¤eôÄI[ÿÚh—æùêOFÛ³1ÃŒ’âBT9Ê|ýÁ‹4¢¡"²E¬Å? gŸsd*1I#ÿ™g 1QÍ.÷¬¿fîòÍ&ÇöÅ}ÔœÔkÍâäiˆh…}ç«FŒÞ7t“ÎÌ»&O=4Y2|êðøÀɇw+N¸æùŒ1„êOiy×$J ¦Xøç—wÖ#çŸ`lT`š]†’!NôÑz$¤>~4¸w­Ôtpå™’8ñSXmè¬àùÎéG~üù€ ÿšÕ ùÉ'çQ,â¯X½ÿ9Ñÿq’ŠÀ2¯êðC‘½ŸŠÍÿvYjä endstream endobj 302 0 obj << /Length 2593 /Filter /FlateDecode >> stream xÚå[[sÚH~÷¯Pù W Ó÷Kf3U›ÙØ3S»5µ‰ŸÖq¥d#0;<€“x~ýžî–„. H oÍCŒM÷éï|çœïˆŽÆŽ.NÞ]ž¼>'„D …It9Ѝ4ˆK¸# 2„G—Ãèª÷Ó|6>#¸·8Ñ{Lf·ÉÙõ寯ωFÿ]¦S0³ûQvÌ N×z}.eD8b\R;xÀAÔÈhÀÒRø/qDý·޲‹qT|ûáâ$ºŒ1Ø5}x\Å«É|v6 `à|ä_ÇÉ,YÄ«ùbY¾à 6½OÓÙd•ø›“Ù0ùæ/—7ãÅѽùヿ3òo§éÐU:áù½Ø}–d›‘0…)‰ÛÿnÐ>†°¢ºÝOûl\®B+~hí[“\îÐ>ô`í£0b°º{| Ò$únƒöi }¼ðÑ „±9N+½9$$’¢¸éΜ‹pßÕ˜z•1Mú¾Z™ndn5›TãywÞTñ½ôWŠ'HãR¯þ¬z’Â˵Õ,°Š9½rhmÚÒãÆt 2›&>i¤xyŸÈ’hë,Hª½*–îÈ_DÄa2³À$]µ:H¤¶Â÷¯“’è.ÉDÑ£ÉþçóÃ&Õÿ]H±Qôï‘Zþÿð«•Nïž~ïJ]mxìÏ"Æ ¢"’CHf¿*ûƒHÚúŒÒçÇ‹$©÷@ËP~!Ô &ÍáO€]ç¨Xú»ßïÁ.ˆ#¢hTvààêr%Ò2$ï¦ Ê× vA)ž˜ÿVYwÙS†-ƒ 3$ʲc#Ȭ‘O«ËU@&/¸Ñ¬Ä …¶¿£$yžgãÁ´çC§4 ųÆEV~òuºz2¾ GFFè}ö^—„‰¢í>qÜh~éÝÖ¹v˜/X¿³ð/â¶ÚýáÄ­>±1c\ï¢+ÍË&xd#çÊFÜ仜«‹å¦‘s[Yÿ\ÎÝg÷5çvÔV4°ylw/1ÂæëÜlO”Û݉É÷|fÑ Áêþ+’°Õþ+jµÞ ­í‰=‚ŒþÄà s ù@å'öiqfï_Nj¼{zÿÅ ‘Ù/VlÛK÷>.Ÿ–Û>eMÅaûœÅõé9“TêñÚ/ý¹ô\›cOž3çK|ÿ >…ª”éÜ‹ã‘=k#ˆZŸß(­ÆÒ4§;ÌJ£Ð¬ÐõY9»öèqvkÏ5fߨr€Ð0ðt<:“>êù¬³eXæ¥çh‹dù0Ÿ '³q:n^¿ãhŒ¿“}Pù®?úxòo:Vrµ’Jç'}DÓºé4Þ‹§÷I}eF "’{,]2_9ó9°ò–9°m¹µ©Í "ÁÉ!SdF(Š0Pë >a¤S¬Ö,E°½ñá"2¸ÝÆSPÙeJçqüðcšcÜyÂbJ(ÞðyF=~óÖžZ^¿ÎHï6ùhOöÎ.âé4Æ6„ ­*™k“™Yô•œ#Û—:´#Be‹)6'!—“ô'Á¿Ý¦ @9\ì gÄìu7~Ê” ú¼ÆÈŽã.ÀíøÿüLíGÿ±ýXg}JëÕAá6¸Å7(j*ûÉ¥=ßFË7oÏ!»=}|xí‘j ÒÏÝq¬5u8™tçûºà3Hcš=™qLf£Él²zê{¾à¾¿M^Óìª_èß]o¡Pkƒë{¦ OºÙ2”WÍUiËÙŽNP§éÆ o`ÄîM¶µ°¾GíG "6tß0Û8¹pÒÂÄ©5©pÒgÙ]Ô´†¦Ž.†ñ¢aæ$?sдµ·¶cªAáš#ñ‰˜(ë<Úó© ßO³¢z·ÊœvƤö Ôq…Wλ`Õ`8•%&¥/oG–|ú¥"A3.9êm¡TkÃ[gÐ’CäëS¤-€Áž•Ú2çQ÷_Š(uÁÙdœå¿ãÛ˜îÑÿ6¾î÷·¡í}‡ š_Š­š_¶«ùi!_\ó>ùÌ=¯m1ë¨ç%&„$Ýô¼^•ä {Þ=–®% ¢bŠ’4˜"3B ĉ>N1äÆ|ÿäó|îÛÈþЉØ6äÝÓ?âUl£ê*¸Ÿ]^÷¯Na,pý´jÿ^»ŠÙIÉl]}I_²#¡/ ‡dÿQl/iëà¿pO²<P·0ª3YÒ :Æœ Uº„pY˜7Q¸õl{óê;¤‰í…¿CAÑ#Ì*hAœ•ŸF{~õIwÜi KY9ÜtÃ[94iÚIÉ3+Ú¬GÂMm{³;çHb}PqÚЬÀÛï@͵P´¹¶L_ÿöÛÞ endstream endobj 311 0 obj << /Length 2096 /Filter /FlateDecode >> stream xÚíZ]sÛ6}ׯàd_¤ ÁÅ|ô!ÝZM§;éÆîK\O†‘)­&2©P²7Þ_¿)Š"¥˜£Ngú`ƒ¤€KààÜ{Ò`Ð`Ü{sÕ{~AHLH!¸šL">Q@ ˆàê6¸îÿ˜&³Ð~6ìßÇÉ$Ü\ýòü"„(1Ôø¶\¢e×´­Ó£ù»ž_(•’ÙÊ#Á0£‚—D+é Â÷í Š¿llß¾÷‚ëPJûÿŠÖÙüë›Ç‹lºÇ¿ÙnFóìÝôm²Ž3{÷à-V•Þ¶Ž ½=2ŒÞ÷½$~ô Äv%Y «g#°=+{õ€½ùƒJš[‘ªbE†D ^˜™MWÃÁHBØÿ\”ËÆ·K…س¢š‡Í•³ ZVöÑvbzŸLÖó4)ZlMXuvGÜpÂ턱P£½‰÷ñú>KVƒg¬¿þOl/xÿÎ Þ?œ¤Y¯–ir;Gùz©¯–×gý%‚ã¯Ò©/§YœÛš;ÈLºIt?~öE”Üú*‰{0Ovú1‹“8‹óÿÅ·þ—‹8Êb[<Úá#PÄ kGÀ‰ÆjÙbùÎ FÂCœ &_M E%G˜ÞOW½/=Àg4°F$—yÁä®w}Cƒ[üí¤!G|ÿëjÞ`B"CÛn\öþí½V‰*¦œã…†p®œ1(œö§¯ÑÝr×ßÌPæ˜WWººîcÉØ!4`ÄhS³ ")àE'¸ ¡ [ð¡'7Qú»D³•`¼7€lТÆîÚ 'sŒgÑò‡Zj¿x}  ŸÅ—wŸÒÅ›ÇFëÈúãõ<™Î“ùúqH‡0dC‹u×7Ãkû„ áÆzëË—;rßX ®°`kðêø3F4°3áÏ0Ðs,þ³ÍŒÓ2<\Dv.r·wqÑ×ëèÖ(ÕÆ£å¹ˆ‚q4ÑËü[ Ò_1Hhî`îåÖÕP–Fco3Qû1¤Œ§Êë&/øÐ—#D‡ùË›a¥+j@þ³-µˆ^ ¾}Ï/Î9! Ÿ`"OŠÖBˆyì€Y˜Q¹“+ ³0¦$Qèw})Zè˱‹ë4[!“ñB3ÛgÖ”eo¬¦ÄE›²_O¢¼ff£D µ²ûÔâ¥\Ù£™Ä†Ö¿ƒzd5º/VñÚ_X)hK'&'q^k’&«uv?Y[IçšÍ?¥VÕ=Øñ~Á%©D­¤»\’ Gù§ ®#^]÷OŒ( OrÏ£-ä]ÜÀˆód!´ 5œ ·âÔŠ-—…Š­âUÖ3›±âäÙðYz{û¬CµÕ»:ü¡&Œ›3Á¯hûä8ø·Â§…'^-¢Õº³Äß–:²J¦E‰_(CtM‰?/èЧóMv¯&Èoi5÷÷›’;¦Ä®©ŠŽØ*öʉöxÔ!•‚pv.²JÌUðÈ:]uGÕÖ ÔqEùÃÃn¨*P®©L…œNÍD-ÈO *;LTYü̪ ݶ%jú¹Y<˽x[Ò·F¶>9œç"=®ß)•ß‹ôÓ´;Þ·Æ¥-šŠwÂ{\¸5òY ýFÆ6GiÑHØýQº´~r nJXŠò˜ê3qÔ|?În6n:amkdjàrƒËÙ k± )vxFkvr´nްâàöÄSØÚ@H%NY`"_IZ \Énv)¸Â¸å.…cÆwtÆ\ͧ‚ñêZ4bFÐ'홞`¢è„愱3%p¦ÑpôÙÀøÅëß²y2™/í!ØÂ~^¹ƒ—ËûO³"n°Î2x{hêè†vƒ´“3 ¢el^-s>mN,ˆ‰?}vV9&þÎ [.â‡xQÉôöðÛ–—¿~´ÐÑ¿ö§áöCª£"ÑåàLçQL!ÿéÑœÛR‰ˆ¯hÜÁZãP‡R„(&º!˜Ä\|Ép]#ßçô”ÙÈÀaUËÕ¾©áÚw·>b.‰ a'#æšÃ+#fÃÝ‹b¨ß[ëŽÕÇÆ8òL'â̪®O_M½CÇ(u[‡îÑ: ø³@¥ÖY@ªs²üã-ªUlÿ÷•û:É2ÅI8‹L™—üý2š|ŽfùÍ4µßo v!ôøùÇ„,k=¢(`Œ3Õ(”`ú/½®lGQRO«óø-àúB~¬ßþüâuAPdb©ÆÑÝ]D­ËÎ<¸=.uhC»œë„¬€JŸANÖW“/µzÉºæÆ ëòÒAô±ÄÈó¯­€j?¢:(Šž‹o*$(¢ºÎ?wDzÖhÔ•@BÖ Ë¤$eÀŸœ'Ú¨ 7$T²P'\²¿O‹ŠÙi m}vP¾i8Sà€–ÃcCÀÛ¯Ý|«xb?H§É»i=ººûŠõ½]ÜcÝ}ëûaSpÆúE sv`ÚB]Ÿ,ZvãJ`ˆ¹+½šç¸ZP·Wú¢ß”ßÌÕjY¼º_¬óà´µ? ûj{@<=½µj-T•g:¡ÃîvÞvǺ¶({öyùcÛgá endstream endobj 321 0 obj << /Length 1338 /Filter /FlateDecode >> stream xÚ½W_sÛ6 ÷§ÐÝ^ä-fФÄÛmÙ5¹´½k¶d/Ír;'–]]mÙ•í$Þ§øO–,%©7¶HÀ@¤Á$ ÁYïäªw| ALTL!¸L*Â%R$<¸×áó|Òýˆpæwiÿæêýñi P¢¨²{£„D1J6›@ižuºÞ]õ¾õ‡4ÐÒI‰ f •±ànÖ»¾¡Á×Þ”D*  çLs£!BÓà²÷§µXò@%™ÔJò'(‘IB¹²ª¯ûÁD˜åã,ÏV›#=å!=²d8ŽÊs#¶¥9n^R¢’K”4OA}K¸1‡®V@B‡=NÛ Ñ4>`À U¼øsz <;§f;tîø…Çðe,:¤…T(Jt“$›ŸHTPL‚:᯳gТŒ@äÂk2\üncÛìóRŒÀ*׉³4O‹áj^,?a¸ŒÏŠùzñôÿàW'ë%ãZo’´;M@I„:HpIüBY¸~:Ç´‡ ÿ^f˜GL¤¬¾¤6Ftj)lF1óÅðîëpâ&ã9¢Uôw!´øY2!äé(ë~¢&(1'’$EÉ8!Œ%µWÿøÜÃÜý9ª­ÒÝÛexw˜¼$•5YܯK¿\f¸ž³3M0%#2y]„¥$Á›(¥$,ŽÚÐåO‡á“´b >… Ä÷ —pÑV8·ââïdz3M<Å/OÁI­ÑYž^¶‚$Û Ü"ú Ío"ÀcóèyŒ(Ì »J+öFg„x^çŒ0*p\õƒ °Gº'@Gxa€œ.¬qq§6Ðzeð5HÃO˜T1Y2Ì´‹¢I8_¤Å*K—–6J‹L7q÷ú/YâØ2Îìì´~Rº±¤åfv;Ÿ.k­œµÜøÅXNdE£Ui5vŸç£ôñ<¿¸üÈ>Ÿlj6\í5åÏËÄv–'ÕžTÛ†3pˆÛ·çU&;ôëÖ¬[¡±iXx[tÕv2„¬Éàè?™x!ãe»&À¤%<“®þe#]éÁ9`͇ ¯ó»U6ÏýŽŠ/ê=ø RFžÄcÇØß¹û|‚ÞÅ‹b¾˜/3-ÉbÂì s„ë}ÝâO¿‹<ÓQŽu¸°«¦lëÁ©æBTôÇɶ‘bÇÙê‹­Ìbº1…_Ï'¦ŒO³ÿt>%)ýV¾1‚H¢ðU1€/™oð3D‚2ÓvKj3 ©€`w`F>掴Ýyã(æPvidÌx´[ã©jT1á*òι¸ì’ðc‹1½°˜¡ÝD¢ù†™96QÈ O0F¶\Û«kæxŘ×û¹M”$ 5¸jL*–ž)[Ú³N2}íîõéÓÜ¢q»±K%<³õth©#KûÍ΢ŸÝ¦_ì<¶˜’Üö4²þÔ¯DŠÅ8TTÍ ^ óõìÖ'³ùØ}G.ieù*-îMž˜.[Ú?—I¹RˆGò\ZÖÎ1ì¤åjyd±"Q$QXBÖÜwÃÙbš65G  ×öPÝ(m\IòºÊ¶¿oB‚Á‰!ö&O,žè¸€}ŸX•*‚]_3i—{ku‡¥‰l̈8È«‚£D ÒÂ&Ÿn¶:klÚ,4ám¢ArâFÿóùá¢32MpyB$ö ‡ˆÁ(Y)9OXÝYeÓêKŽx«à”`kôCb\¤éá‚¢36Mx>¹Õa‚‚a;’ˆ—ÓDg•-V‰áU…ko ¾ô£ÐåEV¾/Ü÷¤Q ý endstream endobj 329 0 obj << /Length 749 /Filter /FlateDecode >> stream xÚ•TÉnÛ0¼ç+x”ˆå*‘½µE¸è©õ-í–h[ˆCKRÿ}EJ‘ £ËAà¢·Ì ‡$èˆz¼#aü¸»{÷$ˆœ$L¢Ý¥ –\¢DRÌ™F»=EŸNæÜÛv3I"¹ù¹ûrG0AÓ×Ñrùí18U)uE Š…ÆŠr_ï;Ô¢$z)2ëk†:닦îü²9ø±?Y× ªÉe5&9&ZAU®©í`ël ^µŽ§è˜¥|ÎÙdÏæh=• ƘIæ"a´L¡N-1ýæè)¦„èCžŽ‘)=•¢>l˜Œš¶2nÛoæEw.ÍÅias¿µ¿ÌŒP˜T˜¦ìŒÁ*ÅLͱ¦<6mÑŸªîYе”cRÌ…ÄB §f\Ïœÿ‹õ6°\œ›þÍ4T(D ÖDO®cêÉ5Ø“¥B,ƒütb BóML£7…À )Ö)S¸–ÎîSÎ" Oã +M×Á½’ëªmÌ•Æ wz¥£½®ÚÛÚX´_ä*ŠY:Û·p¦§IdüÐmVŒ®ÅÖÂÙËOM” l­„‰”K“8gÁµ¥2VZ,²Š¿á Í´Ž¶½oz2¡;÷CiÝA¿l ´-»÷.˜GäFÆ"êbÒQØÜ3”ý†F“® Z¢pJŠ)ÇR»™:ÜÝ9¤í6 ^ƒp0'SíÛÃ0]«ð{(D5·# 5)?ßR ÂÓ)âÞ—ºëîYSUó­.JÀ;*¦ßmïÎò«}qàF!ÈÒ,™…&4{ž$ºFDSxÓä\{¹Npºq Îã, äTGÖiòËTçÒú?{[6N¬W¿| q#?Ÿé<é¶*ëT/º*ühüØÙR5mÈÉmoŠ2¤åC[€ù0`òà`˜vDsñqÝ¥Ú7¥ÿ5uì9ÑkHIÏ©ëÛ!{{7Ý 'f:‡ù¹×ݰ?¶ÍpÆ«;Œ…c…'ú xøÂ³ÂÈ*êóîî7p*à endstream endobj 346 0 obj << /Length 861 /Filter /FlateDecode >> stream xÚÝ•MÛ6†ïû+t¤€ŠáðKbné¢iš:@°ö)››–…Ø’!Ë-òï;äH¶ìµE.=Ør8¤È÷á+‘T‰H~Ãó×Åë·Ö&Ró¼È!Y¬“Ür£LbµåJÉb•<³'¿ö] óÍÒÒ/‹÷§^½Å2Ü ËE’Å5Õ=?Îf©“láÔ—‹ªä93B°ù¦Þdë¦J3©5{Ü”Í/!4ìCÛTÙì8ffeS ™ÇMH½+ë!Sïb²²YQ×ß5}›JÃþ¦Ö"-âi¦tÎæ{¿¬Ë-¥öíö{Õ6qg‰v¼pE’âF;ÚȺ SJ`‡ãתkû5Û5=û§`×®ŽÛrGRH/‚ý~[/˾ÆåxXÏßMP*ÅAj<¦¸òMﻦì9•¿âe¿¦¸Ô 7<7§ÂñÈœéÏÂÀ?x ðYJ«ôç'y¸Hèg°¾«’ËŽ'.S¢àE~u>úBÝ“ÊÙx–Rrv€âÏ ;n¼`´Tì©L¥`¡¾ ÷:çôо•]Sc—EzÞ4”*»ºßì|_/³Ê·tõ’2oÚÅõ0:J‚C\}§0Èx™;Ë|¿‡ÈYy#Hù›òæÀÁ©Q›7»p¯¢¤Xw’ã»òZÅí¥¼8@- ,Œ c§óÎÁ‹üœ)+®DKýp}\ÒÞ¡ ´m®°­Â”/¸È‹©#Xsrë.!dÈ0A—ÎÚÁ07qlA q ½å¶j#QÔ¤«ÁÊãMÜÕM=¾B½¦ÙË»LŒá¸B“Yà“̃32ؘ ¬ƒ»†-q_Ý=7æo›E¸Œ²Y8დÌÚfÕ6J1œ·Ë! ¸È€Ë-Æ@8î 7…Ì)f‚Ó.ºÎ±@c|È/O±3ÿ;ù±ûiØÞ4³µ__Pkm>¥V©U²˜R3‘ÚˆÔ†®HmÎÔ*Pjqø}Xù½Ç¿¦§Á•o|Wömw vä7Ô!MÙ]R‰3O^1ýÈa3r‹Ïw~ù-ÁüÄãnÃ-Jçr¤gÄ‹>Ýt4•s™Û+G“RÚt¤ÍXisúìgÿ°”æ.¢¬ã’NAÂÅèßÿù;NÀ endstream endobj 392 0 obj << /Length 1041 /Filter /FlateDecode >> stream xÚ͘Msê6†÷ù^ÂLQôiË[’ÀÐIK&¡]ÜÛ.” 3ž‚MmH/ýõ•d]‚| Ž=Óc¬×ÏÑùôVô¦7°ô=^ÜÜN|ßÃ<@Þ"ò0Â.¼ J=AC³ z#†‚vňÐ8ÑKn'J÷äFäƒau¿¹ï§B@¯ø0F½l幞§7Þ×fp€P=ÅȪ0£âw"yy¼>Ü¥Ãl¶"“wi²Êö2y“/û×UfþØoóJà0’ΈžClåGˆ¨¥–XÑ d ‹ f™þÛŠ·¿ÄJ^ɇ jŸaèhøggì¦ ¸ßNÅf#`¥ 8¤--è7¹Üª_ŠˆºG :Füm»•Yµ)}(ïË’…øU”¨sÊàBJâ¸xĽŒâ$NVŠVS:¡}.¬™ÞÙ~Û°†M”VÞ1æ½LÒMœˆ]ª#{0¦“—‡µÜÈdW‰ˆCà³ -"mB´òN²œ¨äxx9l^Óõ™”Q[ ¿9×(qÇb§8Êbãý؉*°NZ'iÒ@fÕ=7•‰ÌÄ:þW.5ZA*ÿ>›­?—bš½Y•c FµÝò±f<4x÷“Ž_ºáªç1šêˆíÞÃü£RÛSFÁ Þ:u4•\«îXÉ Ì’§—G¬­ôeÜèJª~“Ö¡6¹ÒÊŸv-–Q!~éýêÞÍìR/ŸR>‹d™nª`“n&C³³x9-§‰ÚÿúnÅPüØý£Ï×S{5">XíSÍ•÷!bU­U™Î?ôF ¾J(TõªÚ‡† »‡‹›ÿ£'êÇ endstream endobj 283 0 obj << /Type /ObjStm /N 100 /First 874 /Length 1994 /Filter /FlateDecode >> stream xÚ½ZMo7½ëWðØJqf8C ¤ ÜM"É¡mCâ ©×*ü´ÿ¾oV”mÙ²¼µ62`»;;ûvæÍ¹âÂ!.)3ÆØ£I†Ñ‚h Y‚4\*Ó ‘r%× ìç[P«3®)A ®™âöÊ¡$WO¡dÈU ÷p-¡A–­JŒçÕŠ‰Lr ünDY¡2R!Ó€Qd£@f.£jÒ Æ ½Í0iM áÊ𤆫ɡ¶†‰c…ÀJ‚&G* P œ¹àä3° žÁJÝ&ª `5Ü ÉÍ‘]xxŸ4Jþ‚0œ[¢áu…\Ž¡‡²«€×E zÈå'¨ æG¸s‚ .»=„q3Ï// ;:… ¦ò0q§1þ ¹büóKÐ×üHàGGÿæd¸7fJu»çƒ0&ŽA 2`ŒÉ€Á=ïª2ÌakLL\ÁæwA¦6¿Z$¡™xAÍÐ¥ I¦ ™!œá%UW(Îàƒµâap­n$œ!¼"Þ5'WÜ‚Èë¶J haÍ} ÎËìÜ<¬†YCÅg烪~—…¢Å'%”â®ÚRÅ'-”æol)ÔF ]Ù—­p‰»%Ôì¶„¥«q={6›¿ý÷ïE˜ÿòáÓb6±<»\œ]^ :!øz6½¸X^/.†€Ný¼øãäÃwË»„0Bô¬™bmïgÐtà]Y‰??;[Bã»! q&¼Ÿ}ûí­'×gó7W/‡ãW'gŸgóï–ç,·'¤÷óæ?Î_¼£áÀ1_†wˆšˆ1)±Àêà]tÚYnQ5Cìyxö,Ìß„ù÷Ë·Ë0¾º¸úx{O–gQ"Eú:Ió‡¼ó:ÌýíwØ9*èTJŽ`õÙÕééûEm%š \#k¥Eú1²ZjlˆÉQ²Ù"¢{jQÖè\#‹@Š0J6;6ÎbHµùnœ¬Õˆ`Ø”=·Fy.GŽYÝvZ#g¯æˆ‹¶>XjÒç„°'»9ò°çõ‚’p£áQó_ΗÇo (‚êåQ˜¿]üsy—ów£ Éân´Õü”h»e—ª£É¼!ÚÉŒ°J©Ž“%ƒkêÌýßvÒSÍÝò=s7Þ3¹¡Z8$ïV#í—ìÐXÜNvÅÙRØ8ÚÐx x JQÓ·f»ã“ËEüéêôó‡ó³“Û©nO(¹Ê4R‰7PQ‰rEÌ™<ŒäÕ«·ßü°8þ¼˜JC®ñÖPÐ#Ä vÂòüôÓòüäòÏ¿îV5%GΆè#³EVÕ¢·+cd³%”»q²PL`Çä²ÞÅpè·Ãùv˜{GK”ÖáÛB[‡2ºÃf}ŽÜÞÊöðßL Ó&4Áw“·Í{å^oßGRhSt7…¶ÉZ42J6k‹)Àv3ú*hŒ,+ð¶qx!*¶g©ØdÀ|ºËšæ ´õ‘¯'(6û3Šè>£ÚžŒZ‡ÏFmˆ>¨m²Ûªù²ŠÄ«6NT5úJjŒ¬à ±'«s‘Ã71𤋮áû¬¡ÿÅa»ËϾoZ“}¥RoËR+Ñ?â ç߯(¶„€oã@øN@­2N–ÓHcds¡ÈIÿïŠý¦ùyj}k÷WÕ-íYßr¯_Úë—öúÕ‹´ï‡­ÆÜÇ^µ×CíõP{=ԮϺ>ëú¬ëë­€ôžP¬ëëËH±®Ïº>ëúúw)]_ß¡–Òõ•®¯t}¥ë+]_éúJ×W»¾ÚõÕ®¯v}µëë[³R»¾ÚõÕ®¯oQNTß Ì2,½Ì£!Š5•`ŒÔZw„/M—C}žNÕ†œë3J-!­J,W: òÏ3’¯?ÓPEŠðzß¼Æ&Ÿ³¯Ù«÷Zá f‰e€T"Õu;¬Ç+Ó Cy“f(bÈyØ ðÖÊ¿ 1°ø—wM1Õ|3¬!pF§!×Öɇ1‚‚=n¢hþ;”,¨$1Ó ”¦dCŠ¶ÚˆotøxÑÐùèS¶zh«’—@ÛÙ„°”Ó!_åâëÓõz„‡ù¦} ¢‚è†X鮸 úœÀðm­kgÇVô@ ’[ßk<ú½ê?pBj"¯Í¾HÞaÊjÁž“ü×9ÈUþ“#A³ì¿$íòF[ƒø”u½– endstream endobj 414 0 obj << /Length1 1411 /Length2 6115 /Length3 0 /Length 7074 /Filter /FlateDecode >> stream xÚt4œíÖ¶.jô’ƒˆ>ŒÞ{ï½ c F™aŒ:zïD´DtÑ{¢A‚èQ£D‚D´Oòæ=ç¼çÿ×ú¾5k=óÜûºv»÷µ6f=C^y{„TGñ‚€üEme3?€Ÿ_ÈÏ/@ÈÆfC¹Bÿ¶²™@‘ž0\â?ŠH(ucS£nˆÚ8@ÃË€D$@¢üü~~ñ¿‰¤@ ì ³h8Ô“Má9:¡nòüý à€p@ââ¢<¿ÝònP$ †´Á('¨ÛMFØ`ˆ€À (¿„àrB¡Ü%øø|||€`7O é(ÃÉð¡œPO(ÒjøÕ2@ìýÓ `äóü 0D8 |ÀH(àÆà ƒ@áž7.^p{(p“`¨®Ðu‡Âÿ"kýEàü¹úW¸?Þ¿Áà¿ÁÂÍ ÷ƒÁ0W(@WE ˆòEñÀpû_D°«'âÆì †¹‚ín¿KTäõà›ÿôç AÂÜQž@O˜ë¯ù~…¹¹fe¸½"ÂÍ GyþªO †„BnîÝïÏp]à8úï“ nïð« {/w>c8Ìà ª®ô‡sc"ü·ÍŠó‹ ˆŠˆ ¨/ĉïW#?wèoôË|ÓC Úáp¸is€Þü¢=ÁÞP é Dÿ'ðÏ!°‡AP;¨# Nøïè7f¨Ã_ç›ù#a¾Kþùü¿~ÿz³¾Q˜=îê÷oúïóY詚(ªqÿiù_ ‚€æ𠈋ð@BÂBQQ@à?éa ùgu¸ þW½7õwÍÞDÀñgC8ÿŒ¥ƒ¸‘.Àño¥[ñ óCn ÿ³Þ»üÿdþ+Êÿªôÿ®HÅËÕõ7ÎñáÿÁÁn0W¿?Œéz¡nÖ@q³ ðÿ¦šBÿÚ]m¨=ÌËí¿QuøfäᎮÿºH˜§ Ìj¯CAœþRÌ_vã_»æ ƒCõž°__/ˆŸÿ¿°›ƒ¸Ü|A\3i<â& ÜM,A[, $Mú/T xvÑß§· cÀ>¡x?ö­°™¡A;.-Y,š`Nrp¿V•µ<5 E¹x=c¦Ñ%րކ-U  é» þ´a’÷&ˆ[ª’¡EG>y;wO*µí5ñïaG=°27B³zW¸ Úð”…E[Tƒ– ˆ¹Ã-{K"ŸŠ&öæÐH<ðÒ)°VX#Ѐ’\yŸ¿á øƒ%ª¡Nª¢Ë‡ëbÁ©ˆõÜ%ô±ù.Ñ3/oŸ§oI^ÌFýp|0_a|±OÅ­Ti*_Ò»¼4QϸǰÖ?©—ã+YÄfÌ!—+^ÆÄ¿NÊ#/PÅO¯ZÙ[rø©!±#6s†öNSÑ>.üüãó+–ì Š/¸©Û>O½+>÷OD_Qƒw®Þî¨c`»i˜¹Ü!pÁI¢šÜêQ+å&Æ,ÒõY™"Ü]Wrì}•¤÷ [‘2½Ô5›'#(¥q1 ˆÀûDãSÐ?½"÷’ù’]zl/íg'E¡ß«ÐÚ^ÎE[/õ"rùô1|GÄ.þ Èä,/Cj¥‚7u<¤îÿ]-òeßýÌÂûH\↻³@¾Z_ça1Ál2ü“Oû+2áþ2w6Úo‹×{æÍ;wä]´ÌyadT¤ÄÅЪ®˜×äq¯æsé';ßi™ï§ ^¤í)U¶$Fv¤]­'wŸŒ!$^½jˆÞ.V~_ ûôbÏ2YþaƇËS’˜~ËL¾ÛëÊÃ’ï ¶%ÓHYúD8z_ÖkÞ•Ud–‘ttâì˜$V7%‡ë¿dZè’ “£Ý8ˆÊá d’šÃŒI̾ÀÅ8©×7M%ðàe­=c†‡äb‰uUÔ©®i³g]åª~ÎcXÃ;KÁ_ûò>]aŠqðóNâ¯:³cí­-{¸oAñ!vP‡U}¿ŠÓJ|Þgà¼'R¯ Û=ùÛn‹ív;¬r‡cM`H—Óß¡¤ð¨:A¾mð‘¥ì£à³ÁëÀÌà¢:Ÿ8{yQ'œÅË•Õ9Χj[Þ^Œ·¿Þ1r(µìØé¼;ä¿°…Ο'B’)N Tušƒ|Vì-îÇ-é­`¬Ä:sX¿¤=ó‚Wí;)8Î>th‰Ð¥*6­ Š$ëÔ\püRó:Øœy •¹{z¦Ó™2þƒ¢â9ÓwRÐŒ!phª;¹ÿ]l°ÔÊ÷ÖMï½s«¦Üð-¾ï—ägW3K·›š8™ß~`p…®dþ4߶ɾ£ƒa¨M¶KÌw)¶ §›{9¶zk«æŠ&¶ëåá•ö.¹zPõŠ`#šô@[s!%ÄæôÜfö­*xÁ¨SÛs0n˜ß¢T½V\@b?µÞŽ' qšQµ&s5øx+vD³B4a'k:9åÖØ m·™ä»šÍÝJnK¡…o\÷Ò;oyIŠæ×+„±#Me± ¿·>˜L/[<´ÔZß;+?=xÈŽN¸Ðã4yßT À“ â·°f0:OœT ‚JJË}]„ÿ¬!  Ï;™dœçQ&ÍoüÆ=ØÊVý͆Td¤E”ƒ“(ê<Ò—ZSäIÚ…Ç›ýËJ× Ú*‚ç¶{~_ayßlt‹:pD·¨>kk2w ×pxnÓ9H *óßjUóY´Ø‘qlxñvX ¯„FĤ/μ.)F$7·ôD"äCŃmÞd¥p~þW¥.Š øT–¡yUó¾ô ìÒ¾QݦÁjG/‰`A„ž¤/â(¨/+|¢Ï‹êu‹ÛCL¶«b"aÙQZËt²¥¦Ó£'ý²°T0è/X$«f@–óW=_sn[’À§<#¡¹+Ö¼JëÀŒ£¬gÔ› ÅÞû¹«9êÖJ3Y}åeì…ÉF¾ž*©Fâ½Õ¿?âŽy·l2¢_DêúËš ü¥­NÇÉ\Õ2 b‡[ì[UèŠÌ¼yN{Ö³gÜUF·k*OÇ#;b;º%hËÍȵ»çwI Â8(^¡ð‚|ÞnCJ¹ËlÕ Ö¼©Xžqb3o8®&a3¸’ÑI²¹lŽ4“°†%<õÞe!{ÍöIûåùT‘©(tpä;¶–tëD:¥ó:[É õ¶ú¢¾uÇ&ægІ°Í™ž,„Ãh¿#mœ+—B0ß/ƒÁø`¡púÀ œ‡KÓ-‰»Ëþx9Ö¡\n%û‰÷Ì犸+‹Ëjg"…:ëðª ßk؉©`Ï90:&áÝ} JÉ»[ÓæÖåI¶ùÌ0Ð!ú¢®Ö"¢~;àFE„‰!wµÈ|ïg`?Øí~À*Õ¬ÌØøç=N£`ÅÎ/.,E™¨Vur\ÆÓTÙ,ô™A pö20Å2Nñ­ñ®bëz× c÷’wËù¿ŒX·°Ž^cN½;û†é…ÆøÊL0Tä? eq‚H¢ìúZîè7-å¾)¬a¯0ˆ °"V€iré°í0–£mÆØÍæ: ¥î­!±Âîß;¤<îû³nŽ0¯ ·S@HÄÊ”ôºù9êjºBÓÖbÊO{)Rsž[/«–¨Cû ½Ü¿·ít7¯O=sžÕÖðuÓ¯þ1íì­û×HÊ%©}vÌ Ü“¿÷ O Oê²>#ÚÿéiXÈpl²úZäÉËåiê„„uk<†9ºšnl•oß%jÔ fR§\ÍIT2Ô ƒ÷©a÷Þ=º×E/‘®Je¾z|Ñr¤Z鿇‹6µÀ0Y®½m"0c)%0š¤nü)aßùº–Ú¬6½W=Xí­…cDôœž"½ÓŠ|-$…ÞckþÛ¶‰ÇÂÔßò9H8yó‰MKs½N#Á-åÔ²¤I"÷');#nߎy×V†òÓ£ï®Ñ*G7L$TЧLÒÔêó¯&1Ròð²¤ÕšÎºÚµçQ8Ð‹å ŠÑ›$ÈRi[IÛt¯ke÷î9[#f# ß"ñö?Œsüèls&xê˜F*™ãæðsX¦Üw²P Æ8°mÎhá?`ÙÛh%ö*ʱçyä©7WêÀé¸/†¥ª«é’N²¶ÑÕL`Xøð íd<•‡É`Ò!e·éJùUvÕu ³†Åû¥qæ¤ÄúWKýCƒëâ3÷\0ì;¢Î|ºÒ­¿À|(§è?‹Þéµ_Ö²ÚgéØÏ5uÉVˆ†Õ(d^lg|ói“÷òz'ƒ6êU²m¹Þ8°_ÙE?>«¼5N¿jŠ¢> ×v§ŒÊ‡Í…rP|ç¶â¡%q·°{ÕÙSØ\éqµQ¾³;sÑõz$D‹õîÙôÄÇÚî7MÛ•O¥­ÍE)¸ž%M!Ãõ¯Ì¦úó#½'e§Ž˜ËöÚâŒ]áw¸Zõê ÷’°ž-ÇÙ- F”o)´øâ܆’ŸÊ œtqDÒÜŠ<³úž5¬àñ!Íò§É!ítA?~T›–MéÝ¢h H7N¿Då¾õ^9ìÞí͵çÔÀ —à~õÇUË!G©©­VÚµO Û-g;VX ÔŒå‘ÂNa9Ȧ¨ÛôÊEùÔö){}ÊÞÄaÍÂ_¹ %ñOˆéXd{· ­mmji^ZèðÅô1­¶FŽ}²žq†Þ gÏ'§ý–ma(¢|ïÒóuiNé¸_W£Ô`Ðÿ™/ž”b»›ðØÆl`fd­µcéÅ.¿äî¥äºckŽ/ã0=2Sm±ÿó½Ã‚,•¤ó¦œJòl2úúVXÚÉáÏgFÍ? ö¾ÚDG¾q~Ï»1Æn /†ûQëZIè®]MÈ'¥•¿Héô—TA‚WÊÈp^¦ðÙdó.*å±#ê˜ïé®é³ÇÖjœÊe¿œ2ûŽ݆8KK”(ylÔj>_J}ë%¾uŽ3ì‘=¢$%±h¬Ž'_Ѳk ¶^G@Ö®pÙæ|­Ë§c%qª*»ßbж¯ƒ÷š² ü¢òH>YÌIL&ö¸>Jê8}zŸö'#eâC^'<Çš|¾/ÄÙë¤û*U_Ûþí0YóFjðÕñHè¤Ïì<ö•'¸†ŽŸeG¾|§¢±ÿŠ|²Ò”êš„­ s;.™'–3¶Pcþ%é'ïß+» qšÍÍ`þÁ!¤2Çù’©›@Öþé'¤˜âd>Ðãv‡0n^f†UÓÏ Ž¿IfšäËç?Ïî`sh½h" Î:{Gû;Åß›Üßz•V·‘yWtŠÒâDÑüs=±>¤ù½n÷r™ó«ÔKcªHÅû\sN–ª¡oØ0…7u£Ž;X¹‹ýgˆ°ŒÊð’K°˜i±ušçR¦ (ÅÚ—WòX.â]TTUE«mç‡Æ8™AÂFk;Û%ŠéâýÑéVèýˆÊƒë6'6oñv þ‚1£UIC‰~oúƒðŸ*×î½%Ÿ&xÄLã×w2›NwTš?¨ä…f=îâÕ/V6mUR®óöÌeá)È ø#â*j%Îï/r‡#¹¶*MÓ‚s³OqC«Œí:ŸYY+—z{âôÈj¹ ꊓt«Š'®`ý*‰±q¾éÃb±þ •3jûðžŸb>øÀœ;v!,ÏjØ4o=„ Göˆw+|·fÐø²†E+TàŽrîëy¤˜–õ.:-4~˜ðmå U&èfì: €'”õˆŠ`IŽL­Íew¤\ËXÙ5Žo,[mX±3/þؾý]=¼Øm0óHÑoëKÄ=CöXÀÃBÇyµöùÊT›®½F³L²O¬ºï¹ü3bÏÝVÒ–$g\}¬JÐ%4ã>üäÛ ;Ut‚2+W¡©‰ q{¾ú²ž¾Ø]Èñê%¶ÌÄr0ŒxRˆÎÎà y±ìS3WÝ­dÒ*ënt©s aW­CfzŒM¬{@Úú¶´…nv?ÇWî²KÛ5Âa’ §ÏÆ£Eín½Ãêœ*·6ùj˜œˆØ}&PH>ªÄ1bjÙÃG…R%4¤q4’ìúççiþÀ©žJÜì&/´`Žg9NÒz¿d: &Uy!YæSÈ¿¸é¬ßdϨI›Ûž×"‡„¶*ƒ%Wkˆ¥3†qHŸà¼$œŸóØÖ§`ž%ÏŠ/¶ÚmzSF¹‘}g+¿9^Ú;x„÷ˆ}KI…ÌÑNÚ•þÝ¹î½ ŸAÉd)ͽçf GƒH??H6W;ãë¿ÇXÎ|wÕç¥òa·lõ æ·ÛuÁ–LýœDꉒy±äØ%¡<»€[¸ó‹¦Ñ=oÐj9‹~Adm“û/*?tϧÎÜS:š®1O?ð=~û&K€fà Rï¸d¤¾Z“¼»½æÉQ™Èª§0ÛpBè¢Øâ4’[{zè¼Æ0NI‡Ç1ŸÂÃI®@W×==«•‹ûÖÁïÓ¹ž\émg{§q•¸Xß>ÅP:ÙH”­ðÝ\Fb{5Z­ü­´frÝ•íÜ÷±´ºùEš^Q8£Ž¯åÓS¢¯£/áÇÁäzÓs VSüQï’ly±ÅN‘{ÿǯs´öQªûvÂz9><ÀœödVÇV¼òÈ„«Q‰Ù®}ì¡K /J“ïrà{ºëé%þOáÌÝD¶î­ŽF>àÕyÑ«´i»-ÿmωÑâöâ s¹òĦ@lþ8´ø…¾ÈýÁ̉RÌqI{M«ËýÒi’Ëát†Aœ]ùµ³¥ÊsUÝ®Ãá¬@œ-Òä.Þ2£ñ2åƒ4p!iÖ€R§Ë ³Åt¡#<éêñõ÷t‰Ì¸+¸y5V†÷¾FëlÿÌmkÚÕ[|x€_à›Õ™ôèaÃyßtmIy¹º‡èV‰=tní5SÓÃŽ‘‚ëÐÂôa9¢Ln¼y"súUÇSR•âŒKñjÂ]*xØŸ&+ºrËlÝ·Ü"âzG¸R}1ŸÎì Únw5«Å î)¹ìäàÎGeÌÄ¥@ËoðIûÌ–8 Œ»oF¼·¦2³©áÓ®«ÆÞEï[Ó-‡UbI7Û÷ekhk~tšHŒ~úèÃûÄ—Yÿ‹©CˆÆ\ÕgÃëjBõ2¬£ü–¯^²Ç´×Å=m_¼úܨûTG¶™+”R O7ø•×ÜÜÌågÁ/klG iá¦ýÂIþB[ÊåµÅ\8NO;ždcŸÅøFµ³unÍwJÃî®;h¢öóô8êã ºÍí±xlñ?á…`°-¿Šß¶Z:Rÿœæ¹K°Â=?¹ ¥}4•èÄh¸®Z ¢çÊʘ2ßWvŠ˜ãºP™e+EênŸ`bL$Ëk¯ÖŽo_–χ¼jèvÅü?_\*4aTEt^ÐdQÁ'@•°oŸë–ÿÍŒªý endstream endobj 416 0 obj << /Length1 1460 /Length2 6185 /Length3 0 /Length 7176 /Filter /FlateDecode >> stream xÚwT“[Ó5Ò¤X¥IP@Š„Þ{¯ÒEj! I¤ƒ ½÷^¥+½Pª€(U¥#EŠŠÒ;_Pï½ï}ÿ­ï[Y+yΞ=sfÎì9ë ;ë}}^9”5L…Äñ‚ù@â--50 ð@üììpöNÁnÃ`á(¤ø000)Bpx¢ P„€`aq°ˆ8àÄþ"¢0âEˆ Ü ÅPG!aX vÚ·³Çá÷ùëÀ å€ÅÄDîýrÈ9Á0p( ЂàìaNø¡@…Ãpîÿ Á)iáÅ@WWW>ˆ–…±“æºp…ãìz0, 㳜— І8Áþ”ÆGÁ0°‡côQ¶8WÀ8†Äâ]!m`~w€¾š&@ Cþ&kþ&Üü9˜üw¸?ÞçàÈ_Î(儆 ÝáH;€-è(kòáÜp÷¤Í9‚À¢ðþ±Æ~¥(Ëé ø ÿÔ‡…bàh– Gœ×<ƒ?f%¤ÊÉ †Äa)ÎóS„c`Pü¹»ÿ4׉rEzþµ²…#mlÏ˰y„"áÎ`jŠ8xˆâ̆DED…0gÌ j<ßÀÀ ûeŸÃø¼=Ñ(4À_Ìn ÃÿPxb!.0óæíùŸ†¯(À`€ ŠXÃìàHŠ¢ãa˜íï5¾ÿ¸À„—:ÿüýdŽW˜ ‰pÿ‡þ«Å@-uU=-ž?%ÿm”—G¹ ¸ìO)7¼¬ûÒs±Àd×ÓCð4w«µUžc¹"Iá1W3å•–ÿôp |S M­ŠPðpušßõªp›7×ìqBx—y´8 }›û@°d=[k ˆ¼É×z»lr¡3dçV)aŒ A±vNÉá¶ÝÛnT …K±_ÄáºÇÉ:a@›]ëAòüþu £á6;ážÜ.JBéO÷Î~J7'ëøª :ÉNôêÇ›¸i{=[yréšiĨçá–Þi%,êÈ^µ÷æ½6Éuù ­n¯ÿj\tD‹ÜÜvSv8×Hãè·K-ÅR~d|bϾd¬o Ø12leH]a1mµd9³>CY^ÿ!Ïd”?{Øý¤ÿbý¦ñm–oô„‹õ™é¯ç ›«¨‡ÊXX®€„|ö þÍ&×íe#ªÒ;ŠÞ;?È&3c»L¯´|«­;<,÷·+¾BÚ¶nmÊPñ²jµ,²~ÌõÊÕÄjÊrHøQý€@Ä}ߎâZŠ=½~C`.Écoô)ïðší¸r4nIÑňô0ZÝZAêm͵1[FÂd+j¸ =¼’bá| b\Q=©éòAúQ³XwÑÑŽ9÷,"¬ãÒ~xô7‘A(û-åIÖ®‘ÐLu‚7x†&¨G.\ýj\WÍ߇Fe(e”„µºI÷Ù~P­94e17PÚ}å¦×æä9¢\\¤[¤¥PM#D=LÅ¡«·³Ó3UYö¦ülêYë}%lsó ®~¿·pèB{ªÍ=5.ÁãñîúÅ4—7òuGf]»¤!ÎÝÖÂKàHµÃ¦A *Ž@Øû±½X©5Û¦zÉÇQ#lŽˆÝvËm'6sªT±ÞNÿœ¥ŽÍþÇ S)ïîƒ=ßû]c Eæ„Fe)OxZ¼h±% úü-§Ì3Tsx#¤½¢ïA¦ØB_áÜáÞ÷ºYi¿k‹µ9{Qßõ\ÓFæÅ)‚o¥Ãš6(€›ä¡Í+ÌL¯nÒ¹}k¼âŒ[žxëß|[ÄwÓ0g{èÝN³<”ÀU$J¬¯7ò Ñýd¶–ß!QÇ¢eÞ¿™Š½ýR´afsàœ§ôh$0§´â™‚jv 4È^êý=yÃæ‹§= tMØE WŲ0Ým›+Dk¸ÉÅœl[ ú\@‚©ÚO¾«IŽvtt«g{çÑÐí2 èê²%Ŷôñ›cÔT>7ÓµÆ7ý‡îù¾Ÿî ¯‘²¥2A }«}3…tù ˆßÌl`ì•4QòïŸAÔè+‰„9-1Z·÷Cq6¾¾þÓϵ׃øÍ¡pÈü®àÖ™Ôó[Lê ÷É { îWªŸª¼Ì¶?š„º^«cÐZϸÇ]׿"äÍ÷¼@¬ðFeömaHK-õ˜Éjšw ‘ð3~o ÐwK£JºÁ'€EÂí>ý¡ MGù¸îSÄwi׸™k’ŸUM"+»‰Ý\h^^óö]TæeK¿nMËÊYçᨨ«g“¨é¹²êߨ™éH¹¨M¿+X6B*xº=[3uæ Çne7¬û¼ªšœ³ð‹D¿_¥îeC–´õÊ[Y‰ý1Ø*‡²)g8EîqàAÌA¡ÌàÍH AØ·”–fËíòÀ‹Ôö:dÆ3ï г‹€¦÷b#qåB;—Þ Ô}$÷«âÕ41zøÜú«àƒ,ÓУ:i¥QÇjßjÖ]íš1­õûO{b “+wÓZÁˆCU¦^äð©{z'̰»ûì(G<•† `ô2gT˜§..3z4ùMk—s$2$¨Œ‚eë‚ø€b„=CjÖÞ){$°¶ú~j!>Ø »9Ïå0“»ST»zW=QUÖp³NZ':ÆW›T¹£ÜÞ×;”Ov˫֙Bdæ^Ç…¼!Óœe´òD½žþÖ)K/£#$0Ç”ÎcjÀ6¥Ê—&ùƒ­÷´©-½¡ À{ËÏgåTñÎÏËëu8IÚÌx²FÐßÊZWï PåbÂèîÆÔ1ë íæ=6¸i­é ”r¤ùzsOJ×5WçT„Nè8ä£xâ‡{¹†–tš÷ebëzúnh+”/ëkíŽÁ7Æ.OH'^¡î~·²tié§÷‡;Æ™Šk¢+ál›#^›Y¬ Êa³}a§ «šñ–)lt“ÔÕØê›“:Lz9?Þ¤sÒs^¹¶—§nz3ÎÇvœŠHì^R‰pÍç–àüWå‹õgLú÷HdÀÑ2þd”[ãr£]³îÎ' ššÞá^ä°mÆÐ|ÿºBÞN_â$;ÌMwc@+3©ÔDX`¬cÇ;‘4þ*âj¥ê*zùæˆ*é­Ûdfù'¯©€Ã#·”ŒH<3Á¡[àƒªD#Í“a!wc /ßá­…ä^õ¸‹ùò6«FRåŸ&Ú ÆÕ}Z–M«[ëNǬN\rNÑHŒ¿á%-#ãçé»|_®™ðâVRSV+˪ù=2Ç~ÆSHê ãÀuˆÎi«ÖiËaÙÍjëtCÌ–\™S·F-aTJWôq— ¡B_ß*̈?Au Qõ¸i*¾m“K «|Ò¥]Èü^  þ-öÛm™_‘3éÉ2§zbùüÝгìåŽO-‘þŸù03d•D·¶”LŸñ•ž4|ݹ²â_ìçñ2i)SNrumn˜­@þ9¥&!0,æ‹x£<Ý`|懯 cÖð ø‘0ÈkåG·è•ÖÏYE'˜=[ĹúC¾ú„—Ú±åESVw’cÁüöÑ [åNáÓ²3–ùrw—?´?li§!»Ç¦#wU4%*‹lDûôÿ(ÿJIú`*^îDÔIÎãÓΗ b›Vm‰Û‹©>7I‡âŠ[ѳ-»É×éT ¯øÆk¿Ï®Œêœõ’h\ü.LÕ.7»7ÚceµØê ¤$¼Að°&Ú÷ìÔ°ûP˜ÑìãV½üò|üD¬dßÚÒý64‘C™o{÷ªk.^</ÏW>šÕp< xiXÐÕÿ»bÒœéèKaö§ª°vq£ïàV*Bq~ ð¢Üë\¸”JT*ù´‚±uí݉×k>Ïdhe0b•ÂYD7ñX,…çû[¦F¦OOÑlŽŸT¢«µlJÏã”U#¸foÌä ”âfõ–àé6»›#ë‰Bª¸¯ØêËAÞÞŽ>šC²_¾•¾¾Ü¯"ÕiQbÿq˱"½ N.j=»/‹µ¸±ï¦rÆDvuý¦Î^PÚÃðï Ê´S-ï/ßcƒlø3èMVbmjóò?š9ùBÁ¨*žåÇdÁ˳ľ¯”Ö‚­7Âï)”;oup<¸¶®–—Þ=šBŒyi6YÿúÉ›³ÏGz0”•KÜ|3ÆæZæë»ÑòŠ Û1…Áë¤UÏÆ›ŒIvÑA£[ޤ¹þƒ½r9,TœŸÌµé?P_%§¢Ýбð+ÓI¬BL¿{ï.Å´]lá!¤áGïÁvú¤úmÔ暴Ž~)÷ƒÐ¾ƒ¥ |bE¢þ6þÔ1¼¥i@EÉ~”cEæº ïÚ\9£Ub悬X8k ÊLV3bl®‡£üzÕ£­â.÷«=C‰ ^¥!†¥ÀxÔ ëÏÓmB‹ mÇ/ùZ¥K¾j¸9 t̽±Ä1—¥¯Æ¼÷2þÀÊZVŠ•­hNàÛà·˜ÃÔˆgs2«J—ÂV&îL׌JTì}ìùð4ÀÛÉ8c•÷gּܠÖ kí“ñé¤Û(Kkm&g-(‡´\Õ‰Sz]’Œø>co¦be}arK4?­sf³×ÂPàZ…sZíèÎÆÂ–Éí’3—¶ðƇSj‚H™”ìé~9摆e!¾b¬x«y£„*yàËjD[m5”–fñ”à~ÁÞ6+Œ,orŽúdöÄZK%ÆO8—’xˆrGTâÒã§›µg[Xbæl‹µJ);…¹±µ~Ó2+ë<.JDZšÇ·`|ðÿUã+B¸cÊŽ­a…g"*vQM)oůÈK‰±í\üÙ³~“-»A8vç°×su‡ÕŸœV*±ÒÅwظ‹¯ØÆgO夔2?HN?# ^¬/ˆtƒW†=w¾;ÐXQ’PF5Žþb—¯}ÁÕÝ|vÜ,c ËïìôýT&‹ïcFýᮄçÎŽA“ઠöì×ÑEÚ¹£Ts¤­Žës6sn¯Ô앤zü‹B ÌãÌ1ƒ¸vïËÍßÕž}K矦/¿s¹ ˜8õt­Ë”¼2™b,úèĽÉPÏÏqŽ(ÿFR×ÊXòÖ¯-(À«åÁýÑ£—]œ«3CkNž./£:´qÜÙ?Ó TŠ©U q”–8ÇÑÞôÌ5Afö¢¢zåâƒTúKûÓߪ.Ééds–aߨV±sN¡'Uoós¤ð¢Ã(56|*C­¶X¥)mé®&$“q®+JJÔ8Tvö5Î~R[:àÇÒ2çÖÏÉÕÚ©Ä¿ÕÖï ƒvó7ÀÐðM/ˆŒ)DY(Èç̇¯TÒJMcb†¬’6i3ÎeœüæÓm©Ú0ÆL•P óW™¢a48iï'¥EdÊæÚëÔV÷}ôÏX¤4¦Ïd”–5ÓÓ9jx¶Bó0flüäl¦"€nãhV‚õÏ&†OKýIê¸ ­r0€g{r”eñ†¢Ý=]¨n4öÓÁe¥‚]„c‘µ,R—gk@B/6™Êïþ.¨‚.àS½÷­+«5Œ ü2ÌGd%¢•Ä[]û2³†è” 4”ñÙ¥Rj;«¡Eê=V?Þ$<àÒsÛ˜‰[!êt#â›°/¾CÖ¬¨J¿–ý ÔK­óyÕD§^pi!¨qï@Ü™˜®»×Þ]cºöTYBÒä,û}à±O‡×fIÃ,ù(õµm ¦í¤¥bC®Óz­¥'¯öhQÊŽðØ¥A|°_âï+h j˜ÕOo.Ë(Ýù©‡ÞK¼½6ïxg:{;NV?çÐK’ël[ÕŒ˜‘”Öû^°‹¡Œ¢$—oÒ†y~úIþ÷Ä?âJ?Ϭª¼ï¡~OBÐfÀ¶¢¦µ;ïN&J'Ôböªlh»“-e%ÌÐMBH‹»|mPÔ±ïµ]t2.´¼g9Kòrå¢V³š»ZÖ‡@¼ ÝØ—¼|ê™èÛ½r²Ëî²/¿Ñ}y$% $lOBw£qC ”n”‰[;<tÜ"õªï,÷u%·o‚]°:¾Mþj&Ç„’m`“T£ªümÑ"KÎîzÃ’=·æÝ(¥¶y3\BˆUÞÑzWš4}÷€¦ŽnW¼ãå‚þt2Ÿå,ÕLKZ0¶ vá3(¬ºÚÆV6ðV2ÿÙ"ðt¶HŸ‰C«Ñ=2ÏD!?Üú`¡±0’‡\ÎõºFÅÞKSYlyž’ð"3Â,I*xº¯ÕgÉ`n’ês7Å¥‚ùHF×Âa.ð}Vþ|ÂãW”)^¼•PM*â€íZbêìï>½ÔÔ„gŒš‡ A"£e*<Ûû³å#ªfÃÚÖ¤ɸ9ü DJD}ÇÜIžënC$¾e¹^ÏRÝõ²Ñ^ý¨¡ðUS.§Cä™õ7”.‚ñt8DÓB4lTÖ¾ÅJ5»”ö€‡öž²p³D+Óûo&ówLÖP?ö@ ù÷L•ÔØ”Q)=Ž?êãè }ò‘´»(ÿ±fŸ ¨všwlaBßJáÁg˜AZ>]‘¤u%«n˜®ÄëX1 ÿäÓqcs‹sûBý3jÿA#}Ni¿¨† ­åwP «ß8jÛ£ÐØÿÇ@?\¼‡Ô¸…g“8Y£¦¥íxÜ€ØõË3¬s°Ai«ýaÌÄÚ¦f<‡¸±IXgKj,`Áîy~¦tDh0¡ÆÅô˲GcfßõµÅEŸæÑݵ#^-œ%3”™áZÕ³f:š@E4ø¦¬H‡ _^èìñáJ!׉£(yÖóÀUè-ðvÿ¼—cj1'Œž xsF½¤U…²q.þVÏΫ,&ÖêŽ=zÈ`•½ssé¯^§t÷à!ùpñ×^~¡û–•f/5>¡G¯¬tïçí?á²úù,YW·§~•óøâž`¼ÐÍÄ‹"ÿ™€'´Z³¨f2!n+™·zÊZÅ—ç:|OÇì¢ÖÐí¶³„H¢S‚V¡nðU›Òü¦Øoë4¦šîÎäµòíõl²wéCú„WY×ç(c•®×w«5mïß;R3xÅy:èžþ)ø{üÕ$4¼iùÌjŸe~Á19ûT¹cZ¼é5•Nþ*ÛÞ02VEñb‚pj‚@v.‹´› éZnñ'½=·-5“e˜^ÛÐpŠƒ6øÍEÜ8¿6 ¢)Ëï‹¶p3ñ»1gaû­%w¢jÌ5uƒ@Üûõß?ð4ÈJÃøx'PÏG¢WNèËé¯'=íöEôQmt™ùÐëñ\gsé@%)¤NØÍ’ºû¬å¬@XB.}QÔFbV¸7vË=rÊí÷ý?í›úqvq·Ÿ-;ó•‡÷í3·M¿/¾Ñ9X°ÞƒH0rØ1È|~i—]ÓÚƒÔZßc¤V%3¦ÿépîêuŸOkì(üº¤,ã-¼îÃpu°ËEmOÏuö ^Óˆ…,Þžì&>”,Ó4I½…æå¬ ^Ô…ÐhÍ—ÞmÕ$­¸§žV—Æ>žÜZzŠy°§'z²3§‰…Šžµ¹uPoº¨h“Š`´TM÷>*%ûºó€cFZj-Üß½ñâ)ZF†´*;Ñò%<½]ÄYD½œâöô>® ê’8Àµ>nÌïÕ¿c?~lhs—/1Ãb›1îÓuŸçóü‚Ù]nJÇœƒÚpË QÑD¨BØ]ƒ±>â¥ÉnÆ^l©úìDþü&5üÍDô g†v›ÿÆü²»âײ;ÔVÖxØ‹·§¹¼8 {’ùøO[ É oIËIŽ{ƒÞ­]«‘pyçYà]ïbxÌßŬ:àµÿîÔlf5…Z±9j‚^ËçÌekUÍ*‘wÍ ÑµŠŽ–÷!!91Ô_¶„ÔìgŽCAÅ‹;XcYÔ½jç=Èf?ƒÐ ³¦š¬V1Wc±bÝ« A=@¤×/¼ËB‰n’îPjÊä«É c¿Ðl†MÞ¿«-ñØý“¬[àe1ðáÆ =úq•ÑVæCÍWÅø³¡]£˜ÏâÚ‡d_#8-½)”ç7û×O‚JÐnöVë¶fZ_~Âr“TŒƒuB~: þ]/§‰ç¥93ѧ³ztbñª²¼¢Ý¢)ä$§©û¿öé endstream endobj 418 0 obj << /Length1 1478 /Length2 6403 /Length3 0 /Length 7390 /Filter /FlateDecode >> stream xÚtTÔÝÖ>H—( ’R3tww‡äŒ30 ’/!ŠÒ­0‚4Ò¡€t—´Ò t|c¼÷Þ÷þÿk}ßšµ~sγãìçìgVc~E'„D Gñƒ€Re]# BÄ&P ò&æ0ƒ =¡¸Ô8(#!`S£0~º8@Ë  @bR q)  Jþíˆ@JTÀÞP'€®@ ‡xs(#ÜýPW昿—nGHRRœïW8@Ñ ‚„:‚á]0Êâ†9Ñ #¡”ß?Rp˸¢PîR‚‚>>>`7OÒEއàE¹Œ ž¤7Ä ð“0@ìùÍL€˜`â õü#œQ>`$€`PGÜáw‚ ˜ÃÆš:}wü·³Îo>ÀŸ»€@ÿJ÷'úg"(üW0ØÑáæ†ûAá.g( ÐWÓ@ù¢ø`¸ÓOG0̉{ƒ¡0°ÆáWå`€š¢!Œ!ø‡ž§#êŽòð„Â~Rü™s˪p'e„›Žò$þYŸ  qÄ\»ŸàïÎ>„#|à6ÎP¸“óON^p¨‡DSå "þ7æAD@ ¸¤0â€ø:º þLoâçùeý„1 ‚Üîg HÔ‚ù#ð{C(¤$(à? ÿ܃@'¨# àq‰ÿCœï1ÍGB}V@Œö@àÏß¿V6y9!à0¿»ÿꯠ±¾±‰‘!ïoÆÿ²))!|ü"@¿(ú)2qÌ"èŸi ÀÐ?eüG¬&Üü]-æšþ®Øû¸ÿ àŸ¹ôÕBÜÿ¹5Pèˆù€þÏRÿòÿSøÏ,ÿ›Èÿ» 5/ì—™û—ýÿ1ƒÝ 0¿?Ñz¡0 ‹ÀŒü¿]Í!¿‡Vâõrûo«& ŒE¸ ì_×õTƒúBœ  (G×ßjù›þœ21@xB>+~Lkþˆ-LJ˜§Ã#É_&frþy¤*ÜáôsÄ„DÅ`$ìGŒi2f' afÑ âûKÄA8… `èœH⟕`LJÌëçŒúiü ÿ ÿÝÁ¿ b˜ˆ‡¦Q#e ºcø?ˆ€þ ÿ Áäu‡yyþþÁÄÑ ‰ñFýÒ†æßû_/â q$žG8J‡?¨ o´¦ Wá”n§öW™¨À)›I•Âvú·! 4ý¨ ªlÒ?áÆ"͸5÷„#cmç®]SoÙþƒÒc““¼»þ‹XíÃýˬŸ†–Ù`¥Ö¯E:jÒ¢q©8°DNÖ‰å´ÃY+ç˜ÚySŪiÆŠôÑ.ÈÂVO®Ò]‚&a •ÜÀ–  ˜+c^§—êz<9ëÁ’¦ÂKB­l™§uå<Õ™ˆYëKlöùhÓoDƒkbϳ‡}Õs áÝ%wÒbèW åãϲX'†ˆu„°h+¬²Òn_. æasްxLè¸q;–kYfŒ‹ª§2!e߈Ò@X5—5œ_ªâ6×íÅ«AÅ›ZäåxS•ÊZXZ(4g{€8þS± ⻡fƒíƒ-›cãcw’c‹?ÞT›pñaS}–à³oÍX~Š0”XxAB2dÿè½L&3XH˜z-ÓðÕm·ªæt2c¾×uo>'|¡ôkauõÛ·éò½ôöò‡â)›4$v}9xVÏ›%| dD@cL‡²¨Ï'XÓädÒb©uµAHm/ÐWáó4Se, }ZÂÖ¦%WÁ4SJ0Wb Z7ãyŠ;kÜ3¥çËÝ ½kDASKSØÔ ߃n2ÈØhÒÁ ñ=Á}Egg5`a}›¶ûð»aN9™‰Áõï°œSbÈG¾$÷«i†0d°kòYm²ÍþÓð8{^Xá1Äðxü©‚3­˜0ƒÆ‚Ø{ÈŸÞ´ŸÚîmv?U×ýó=ôJwÏx¨â‚=+£J_åI'[*+ó£•i^qwë_z Ë%ubÛ9QÕ²þÙdj Æl»Ùºõêã/{_C¸™Ia5”C; ûY /C/Þå)¶³C9é=¾`ÿÞª!bDCùBŽ/Nð¥çãÛã=ôæ 5ßÏ;£/.Wn‰ñÕ¾f~?ª§oe²ÙÜõD÷âµ»÷A+Y&SdbêÑdg‘RIò/vjx­¥r©2謅vR¸{\$5øP/j4Vû-vΈt~Ë·ÑdX¨Ú7>ÉdœÞaÌ+léÅ/…NWoÚ籓Jo],ÜkŒ‘éz•û|¹“2œãÙòJR¦Z=LYÕ>ÂìkžëbSoµaò€Z! ©cièvX0;úiÛ°pã±ä„äÖýxOÉ(l.ûåRf²-ä´ù©”޳­Ï‘ÝÏjXðÃH3l™Ìç"8…D|(Šaþ$kì£Bæ»”•>s][ú’×ù«lú¯²)?ö›·ßS£°™|e3¬ Šî}fmø¼íŽÚ=ô,Ô„f?~ÃVpäd—¯kViÌaòN¯^[<¡œ×(u|Ë Y˜~Ñcù£“rÛÒÔX1ÉHZ{S¬Ä„'â«jD– ~Æ6ö#²o¤–žÂJã_ß$±¤dz³O7jbÔž=&[8Û)V][E?v>1ð шȡüF`~Q%=£ÎT4U&ܘaûÓÛÖ}…äRºL¢4ð›ª~ªTÅ`ǘȯ0„9v•.÷A>«æõÝû‰A¸eÀƒ{á@Ø o¦2ûz.MXÎeðbëjÕE[ÏòðUË_îʸƒ7lIB']7õâØgÖì¤/»Ÿœ‘–JxùͲ#RæŸ{;9z´óжú=b½œ³Ë<»sÒ²uÓ”¯»•ó•Ò8ÈiÖè˜á.³ƒè‡~eR3k¾òħ‘{ãµ±ØÁ¯.ýe¿Ã?,+"]ã¾5G‚é¶÷d 3Ù ÿ²-Ýâ'¥x?Ž=“¥Ú÷²te›‹ònTZI'4ü#ÂáÇLÐå …Ù§¡ÎŸÃ.Ö l¦ÿ¸ôæ év àê7^nSi蛂ù]°Ð‰'Óä‘ZþW~WÚéöµÚö}¹º—¨z:ÁIõèÕ99J0n”äj1¾oixQä¯ P)<Úî\E.ÈŸwÍí"éÊÎtVÔ‰m£°«{j?i;\§®}$-Z‚_àÓ½Ù€»¢‰ôØU,vV|¼`yêõ&¤mn¥ý ihwk˜Âyë+“Ê#©„øi'f£Bœ9@²"ê6é&?ú)ÏR=]Ð[ïºôYÒjôµ×5¡ñ:¤v}øííb°ûŠKoò{ý0«¥¾±w<ºÃòýp5¹S®ÜÕyÖlq¬ tenaOôWY¢4ýÜöÔ§Á2ž·éòÍ}©ÝõŽÏ Õ°à)HËnl{¯… ¸o¶X¨Çg£7ªÒºl§Åîìfù Ûƒ÷r)^õÅX•ÄܲnîSÍÊoóahÅÛ3ß!Íõ_ƒè€Ãi)‚||»Þ«pž³ÔìK¾¶kþ uåùä%~ïfÀÍr˜üýbÿÃØç)båj×%¶YÜùu†8{òÏqvµíåöUEmö)y;sz=ÑòõÞŸºl­/þº—D=~iøñK‘žƒsïLcó|x‚(~êµ)Q£ÿСË7—~ðÊ“§^Uj9C©2í”g~sµè7ƒ7Îî5Þèq9º‘·²i{*R¤‘ÖŸ—>qfÛ:è¡ATf¼4Ý>|Dz\˜”4(.·ÅÓUp˜ªšu£¾¨TQœík€J¤‘Œ êR·³ûû©çê«ó‡’šß“œó‹3†p–®?_žóRN½²PÝzr«GàÛÖ–Áv¶{Z3Æâ7[¦-™Ë 7ðvÌ1qO)nh‘ò–¬E¨k ¤˜¦ý‘¢—»Ê.æ]iÌ`byû¯»3te:/®E^ï¬Ë§c}æ:Ú:n? V£u2S×çã]§ñ¤~£~U°h+X[ìQÕŽÛ{„í×Iþæôô>óÿp•b”©ð1„"-={CwRA«ýŠnc´ÜõD^ïõ£/Åm3­±ÀõõäAC¯•‘1=´]&=Š=$Ît—7^æ'=3’Æ‹aiÔ>¹;h’SsSíøÌzáòØv4‡‰‡D:•¨%ð›@źã1™†×¨ØµaçåàK®LCáiß»µOX„YŒû¤ÐnoÏpÔ¢´ å>æê_ïd0!ÍæCÛè}mÞÖá7Êñ,íf·VÛ„À2OqDÍ·¬ÖsÕ¤oñéqqQB‹c¬+ô [54Fû¿²´È›Hm+LªíÒ®ë]“[´Î+dÞð4¸.šã‡6‰8ש©Ô¸&ÌL¾3¹ÁckŒ7ÄÏ÷ ºä#‰¾¯W«J=¨Œý½ü˜Ä’$ÞRíß6z´'Ü8lMü~µ}ueùEÔ>Ví‘]ºok|ŽiV`,—ERuwT¸º¹éø-1Mk–ÔðõÙ#¹ ©^3»ó½rc¯$ïiƒhFª­Ù&© w…M§ý»ö{½VÔ2œqú¦ "~,}äQ}-AþøÂ´0ã̇§lÏ…2æµÇ¨Ô¢Óƒ»…uå³ÔÑ®Ý$…ž2þ:…$bmuñ„e¶Ò@ÃÁ¨kè³UÀýÏÀˆÇAù:cUÆ”1…R!Îè1·Æ×mŠÂ» ã{Æ$B²ô‰ãVïœj&“/´2¬gßÑ0—2Ð8nMÓ…\œ’âB5? u¥+®#¯b¨ËZ†Ê®èû´¼Ûø´Y±‰ª">?7›ú4ƒøåEºax•Õ켌i«…#îãéyGÞ#ŽÅ ¢m½†Y%cQÉÈ“°ÖwØñè,¶öñŽŒw.&_çVlŠÍ; ñg¸+ï±â|ðßœlðPÇÄ%/GØRé±"KÛ-ý e #9i‘/¤4•ïØ F‡ó?`‹ù[‚÷]Ædh‹0ÜëÕæ§Ÿ˜3/4^5ˆí/SD«s…uÐt̞ѾîSÝšÔ0o¥-gÞ¶\1ïå¯Të+µmˆRjóYtëÌ;&ÏUåi¦9]ßW ¯ßÀ'+Ž›wbà;#é{¾|U¤qPì”vâ_h6¼¾‚”–.‰Ö~/Ʊ­V °I×âRwÉÂu:Î4´Pñ¾4Šlת£jsí‰ÒÙ^õ¸&ò±\?õu‡?Š·F£,’ÛRÓnÑ•PÑKJõ “HħÝóŽüè>§Ã‘ÌG¥´jýÂúØ€§ÑÏ£ùÄ}_O*Fƒ!ÎÂÏ÷|=ž]/²b‡Ôñ–Öù•÷:t9¯—Mùó9•hN64c'¶Ë…Èi^ŸqKÄêGcJnhTÍä÷ Å[ýüóà“Qõ5“ðêf¦B·<ð·Äb]¯i•žIÔM3A9‚]ì±Ã‚î»5c¢Ÿ{Ô,mãà_ñ^úò»s[³D’Â.7[*É\xcÜ’PûŠŒ¤³¶r¡±DCË3ä_óUµéã¢ý/®q™_®j;vëÏó‰4?‡ŽĪ7|<¹lä½·XŒ¥=Àpé7Ðm0©žeã_š}2Ãõ)w¨b\;ǦžZ+-iCÜ—h¨÷ƒ°¬g·@¶fi/ºŽs°¼n«NÊéÞäæ‹N¥0›ù«cî¢ål'ÿ2Â*œ_ Ú¹¨ýwúåtGërc š°Må.F‰‡áR‚çFÉ8›Þ3ñTÜ7.‰NÄeÈyÖ,Ay RpJ—R9Ìä«êlÑ0¤‹GràÕÔ¥“ +£øVÄëÆv­4I¬@ž”šopw:-¦eº.‚­ÒgãêÞãϩʥXäýê{Ö…ÙX6¼¹&­Çð÷CÉZUFê¦eè> stream xÚxTTíÚ6Ò"t HçÒÝÝ ÃÌà 2Cƒ¤”H ÒÒ! ÝJJ—”(H("è7úúžsÞóÿk}ßšµöì羯»žçºöÌÚœlF¦‚ʤT‰@ Šeªú¦Ö"@(&ŠqršÁÐpèßv"N ¨ †DÈüBÕ Bclj 4¨Dt¼á1€ˆ„Œˆ¤ ¥ÿ"½dj  /ÐA" ("NU¤§¿ÌÅ©ó÷-€Ì ‘––øPö€zÁÀ @„v…z`*‚Ap€) ƒ¢ýÿ‘‚GÎö”öõõy „^. ¼_Ú`EA½| À¯‘ èŸÑ„ˆ8f®0Ô_S¤3Úä` pŠ@aB¼¨S`ª­0ô„"þëýüÙ€ˆÈ¿Òý‰þ•†ø ƒ‘ž „? áp†Á¡C =!´ZB@~ApòÁà ' àwë €†²1„™ðÏ|(°ÌBÁà¿fþ•³Íêˆ*ÒÊ@£ˆ~õ§ó‚‚1ûî/üçpÝH_Dàß+gâük ˆ·§°9vߪ­öƒ1ýÛæEÄÒâ"è}Ôì*ü«€™¿'ô·ó·3Cp 'ÒàŒ s†b¾ˆQ (íå üOÇ?WD"" Œ8A]`¢gǘ¡Î­1çïóØ1ô}þug‡a‰€ûÿþûˆ…µMõ,tÍøÿŒü/§Š Ò((* ”–DDD$’’â€àæ1Áþôñ±Úg$@ú¯v1ûôwË>8ÀóG ¼€æ2@b˜ ðü›è÷€â@0æ"ò¦ûïÿËeù_‰þßixÃá¿ý<þ?È÷ÿƒÀ0×Q>£ÄC-¡IW y{ü·W ¨Aá‚a´ È]!àÝ¿ì0”Ì 1‚¡Á®±æ/»ù/½Áa¨ûõ„ÁDÿåÈ ìŽyŠ 0Ôüí‚b4ôϺê0òKl¢â—ÈŸsÖ˜•8 P£JÔï7™ÂB$ÀÌ pFzý:XL^a(úKP¿¿m“ áúmøG5°·—ù›˜Vþ^ÿÖ9ê-Î!Á²‘n/#;.j•}?ᯬvÅ&Y÷Lj£¹æŸºêdiNßWq„TÓ<5Z(šš bä;¸÷»÷:'l9]+¥Þ¿®r$X0ôíäµ ”‚dp™|»Nq˜lÌLæh‹kËj9wõP²GlóÅç¢ë.Ô¦ô.ÀPrFΖΈ~¬œ×µ‹ýÈšc=l}<ÒË6ÃÛLÛ|âû,á\¥#žþ›ÿºmBæð‡orúŸŠêöÖHTGQÑßÐaËI¤§NÎÑiFaq©ˆŸ©–§%±Ó{Dq-ã8J.Ÿ)hOónt1P »eø`´É»)>'Ÿ×³|Ìä°‘möM˜„®%%ÖU ö)‡ g ël8ã°F žß‹KÃÀ¯ïZú©?ƒ,-;·ÖÃ~×Oð BÌþó$Ý…ãã¬dQ»4y¸ÔàÇç*FpÏgËwWri*N*#m6·Uï‘;B_Ÿ÷Ã*­XS§[-o:†{¢ÌÔÓaIVY»};ÉÍÚâgo),øÔ%ÐuºóÈnÞļę“ü<\£ö.MY%é…IöD 1²3Šy3½M¬ ƒ›Ö2•CgÈI©ÜÊ™_¼«’}&Þ"Ÿ& |°4ytCÍx/‘¼ný–qÏ7<û$'¯#aQB{Ýü.WÇRnôÝ$XÓnÒÕ–ŠõtØ‘äÜr¾Êóª²÷òOøºyÚx˜o¥\c}Ò=²îð|”¹Óf )ãÕä^o'wÚ¦ŸVãåî•Ó°¦Ì {d1¼²)Q¼MõÃu¬¹íH¯ã´…ЫgÔ¹éô±ˆí¹ìÝ0Oû­FƒCÏï÷UÔ”dÜ ¥ÅÖ«õC¹¤q‰c,BÔH¾JQ’€&ÃEçBX®ÎMDpEÝw4…»¶Zâ(ê/5=Îz™>PµÕ1 ë €ÏqŠÃ5¤¾û‰½ÿ(le(ñÆ_Ù]wð`wÓÎò>£Z¸~+~Œõݕғ¨ŠBëÄÙÑB+#õ#½kÑuÑÖ[Õ­åH­´@"Z¿iúÛC;ÜÝÞôAíH’‹³KKVf“,õ'Ç%û™­‰3ا߹ž¬gÀY5~ÒÜ Ñ£À6qyÁ¢‘çô¥¤z"˜?N¢za()^êá!ŒdòqžEFð;OÐåèïî³ÖŸÃ™À|Ë1ìÕö!&UŸí*<¢6ÈßÂJ#u+ ‡¦Ø´oÅ¿œyù}“î« ÅôŒ¥lf÷è—ŒAo%ž;h¾ÑRª™[æÏrƒÖ¿~5‰}Ò(ƒã¤uHùáV1M£S´,•Ëzª×dëÙÞY,Oþ Qm¾a¬ºäÓ–·—¢ØSÿ„UöINüÈ{ÈõÒÊ®{ì•ßšÒ²h§Löñ|LTÓŠqsŒÕ\‰èIg”òiFrÈ:Ý)i;9Ã7•µ/Œì±+ê3}³¨J ÚCZî<às±¿ïI,qCa{¦ÃæFÚõκãåc(†‡ÄcÖ5ûÂ{>¯'l Z¿/°´èq(ífjED¥RÊ-q'è<Y ñIžàh`w5/ÕW<­ßU\Mõ䛋”ô!§•_2A¯k’¥*¤ˆÛ‰¥Åš}ª—rn‹0ø—DG´òF6T%g>Os’>¼©I\t™bðœêäÄy;0zÒžBÍõý©ÜFa`fæšJÚÈÎ\ðå«Å<”¨3·ê‰ÿòZ­Ãà‹™Jv`©Ô:ƒä}îúÏ7tc®îºÊÓîÿ¨Tš3¤”½‡ |0Bª?Z¦ýìŽý6“T’ð>Ží;6ü½óËæñ…­™{ÈöpûyŽf®øO'ÇvRð´ÄfT+Wdäkᤵ5{Þ,6³O}¡ ’ìÕªƒÅÉúUš°NSöÙÄ­´+o{,ÓX"eñãL yŠ¥BÄR¦Ù:aufbÝDûéór*;aü1ÁàÀ˜©!¥ü™tþGLY0Ò×å`и'bhi½aæãl`‰Ay8Ö¡+'ê[ÅöQ«u~Õ ˆ&|ãS•Å»ñÁˆnPy–Ýé–â¬1öþ±ºžšáJ.‘üÓ0Ƨǡßd{´^:É`c´Ïfìy~óuãy«—ÄyÇkÙâz›ô­î ŸiwbŠšF­OYµ¡ùu@ªý¾HΤ̑I¤]Õ‡l§MUEvÎð è‡b_¶­ºô1‰Ç#Å&F[Ÿ›[e~v¾åêLP¿³°U á®êýÔÍ(ØÚDüFK˜±Àù%!8z±›1~á=-±ÇÈÛ+†¾B=R©‰W§‹Á#'ÈÛ‹ØUqÙzZÅoÛtߟž4åñf|%¸ŸÇ?¿¶öOëk/ÎϾADå ?í(¨TO¤´À¿fä>Í™¨›<+G›– ‘A?ÔYQãRñDXG<ì;w7°l´~µ¯± ·¥\Ÿ¾í^¿ÔK°b²ÏónvÂ^t“ˆ­|u½çÙŽ?N¶ òˆ@μÙ+¿Koü©º:²À?—*(5ñ+å!ÿƒ¤¢|–¾'êà„·/qRôv煫ϘivÑ q®´ YQ‹Fª Û>›ìšÁÄ%{$ùyv"Ê´I¯âŸðmÖòl´ZÌ~Y‰Ó,«‚K†ë:3ZÞXöÊwØ—ÿ®ÉÈ]qw$ÊJPÂÓM×›VuH ü¾¾i1`Z¯×&2¨5VíËÀ]A²o«@õ}Ϧ8ÓË–åÁÕè*˜ú7«ô -ÊOZ_w¢á]uãZ×¶Xfa~¨qýBæ‡F±| Ï ÐòÄç’.,_÷wÑt,Z"¼’„e‰0öÇ“½‡á@æ…a •½аnJÊØ€“M©þ îbÈO7³¬Ça½ƒŸŸ®Òß/uQ¦O>I>\xÕ–uC:¯ý“YŒêrˆpúA[rF^)’™oÿ©tü€×Ĭö£¤[ù¾î•Ÿ[A›ÐMü± ~'‘Ú¹—_ˆ{µ³ájz‡Æ68baçMF‚äiÇq'·Ü¤uç >TpODø‚4>_2,žO]üÎSHô—"dBz j…Ç›.l“1|Ï‘mX3xnqo ¾‡íU#¥ûu}]><öÌá±§" š‹‹ÉïÙ­#Ö³ˆ}púæçÕ…Ém8hœÄŽóöž{‰cR{¹Ã ãfSÆ竳þ–aT ¶¸¿UD"ÓôØ Þ/Ÿ™ Í ö±JÎ "ºù…î••£qnB* ÀÚ ÍÌ«¬÷c›wAå–ÆÛœ‘3t:/[¬Š {ÄÐÚþÀ¾®çB¸3wbûmSï1G¨ÝQžâéY£ÁWYöµn9ÃçÐËp2ŽDÜ*¢˜Æq–Žà«aܳ’ùÚµ©0Ø‘%Ã7¶¬ÇìŒ=ö˜ºW:… ”â&ËÏHÝŒ¾É;ùN9Å¥·V—o'ÌJ·{É¢‰;`ÑædT™ùïMÄÁÙÄ­úY³Ž'½™IKzã+¤:»‡ÇÛöj°²kÛ’#”\îûѶ/·—Í£/ƒ²±Òïà·ˆÜuž2Û¹o|~5$ÿ3> ó¦GÜ0Ȩ •%ý¥”%!xãS*3¿‹§r¨@­Àkù ·JQq Õ¡pÉ쯳Ä)‡é5O˜ÈC„¶…5ʇZG€…éh“œÕ¶8l!v&_(±+}7©Qè3èÆœ‡çñN4²A©¶n-=ì§ÃÑŽòtˆXéš1õv· ‹ÅéŽ#iõÂ6š$7y¢GvŠ€Ê­Ü@_¼2q±ób—™îú»¹*™[Ù{Êe•”«÷_N±®¼ZžºÛHÇ]”4y òÂÈ™îíͪ9Óþ|‰Óõ<¦g^E¥¶É^û8~$îh¬ûþ˜ö´;Äï\“ãg>cdñ΄PpAëø­Ñ'Íe´ï'º4Æ2Ÿ€kë²’Ãåéª_;³ÑÞ`åé¬ÂÞôÅï‹5‘jãQZ\|”@néTê5àÒöxš÷ṂÛ4è—a¥q8 ©åOöi U­­‹\©·î´³Éxrþ9Þ$ ';ÅeýB%‡Øhƒ†â¾¸èKòwem»h^Zý ²&ÓÂÏ?­Ó áññ3g¹Êøì˜“¹¯ÀJXdktW\ÍCAr+ãýEOÏ»X¦ök)î,Vð?“V‡6É<ðçöØCÉešo‡I{²9ta—w¼ûºÁ]b­Ùp¸Š—¡@ŠÝ_6öÊÍ®q"f¥ S ¸¨¶*opñðF§‚„ùqà}Z'köE)¾­G]Ccîeþbȵ¸ ¬÷€Ð“X­õ’D5ßµÖ »¢PâNÆ$ê]ȳ@õêáâÞG¾a‹ô«™BÔ«›® 蜳www»»»5Ô¸G`ç–‚ËòvU\Ët¥ã‘“ïb¹gO=YáÆ5ÏR?gÆâ:­–Q {žÜh_S½—ÞæÉ‹[Í{†ÿ#Ç5‹¢·n–§õ2»¸ñ–¾~Qc}$Éý®¦šásÕ•ObXMz6¨z_3#ïÀdTGÛDí…QÞ#~ÁÜêòóGOë4¾š_±·ëŽGEñWvL[wA%©•Y8Á»{e¡k¢îÎ… ¤·Ž¤XnùNñÏêN÷iˆî’e`Žþ̲˜â|âãrýc»o2–ô²·)|X“’gàY­ÉâEª°¦ÜŒ-µ¢J2ZÕ–UÌg3+ŠÝjFÑì᜙Ûm¼ˆH‘Ÿ²Šûqë:E¼áU\¨W¨>ZÁ_¾&Šo=ÌI§ë=I'ºŸQÙ«®ÎÝtÑ_’vurãÞéùBþ“^önDQ*—$M†}æ­ «ër÷ÝÉÔcÙfo^öízÙË÷¦ié=>#GW_UÔ+vëD´ §h°K˜ Õ6ñ±OùßëÏDéÙ‡g*§äwþ ¶—÷#ü:v«ól£¾W†„‚å…¢wGBÄ)Ž -ÖFÊëù«(Š›«ª_]1KÆÕ›£Â³^Ì•øo~îK%0ËW¿ÒôrY3Çï#åHŒ~ÏT›ØØGø íƒfÅÆ‚TÞÓ’‚|}ŸO+*`þõn~Eâ!ñ’.¸ô©U«‘Â$Âåô¦¶Æ¦ŒbúÉB¾©¹á8x€ÔMTÕöøc¥¡¤B˜»å¥{qay'öˆU wÄËæš2ê9óÒ—óKRzHˆÛjžTŒ•[bõÞˆvŽæíÒŸù†øÐŽo‰X38^­8† JS ÷Ò¯‡†æ).¼Ú™®m¼ÁB¾çºcWâtÔ}óz»}§ÒaGTnêb,}€—|ÍÔSQk;‘SC¯Sð£ÜP©ˆS?Y;|y›]Ò¸àƒ5{¡UØi}ª÷XßBƒz(þsœß]û“¨¥´‚szpy3€|ò¢¯éT ÝTù³­À­"ª¤7ˆ½´áóéAÒQþà-õŒ^œk>v‚5%u=ïR\ÒzåGêέ”{XU~ãA§¨”ß~±Vžœ†.ÅúFôÞØ¾ké­V‰Iº‡XËS®¦‚–6”‰¤8ã:tÜ͵çÃòeï} >åÖƒà2±†â+F‘¾½“±êÀ86Ýe±ØÉvûOSß\îÿÖ9«ðÈz²ËÿvÏ e»k¢ögUGvÃÖãn~û²ëH9LXê™’زR¦-A«š®{­Š#ì[›ëq› òý°é[ŽÆßY¦TõN O’[hü2|o~ì*a~¨Ñ²œÇEò€=rC=Ua,*¨IÖ—¬ŸØç;çë»3Û}ð¾Ýa8;Ž]ó©9ƒÛã•JüHÿ¸#´ß¬Œ7Ä8™ÆÛÆßáöK3{jÅs'þÍ׆Qv ð¿Ü¾ÇëV/UÉ»ÕtY è_G;gó¸(ùÚ9—XdŽôØî„<ØÑø¶ÍbO¦,æSuspÍ0Ûgº†©Iô†1QÀå'³–åËàâ‡ÛNwβoØføO¤ÌràBEª–ÜgÅŸBL”÷yú*&Éãù[*tÅl(\&×lú+}îÿÙj¾zIøû•B¯–ì 80ýHÎ_ÅI²ÎÆå—Øv„§Týö0PR€»Ôé½±s«g û3{FÈ9·÷Áp5›Â’Øw`ÃcÚÞŽçö³/žÐñÎf 6&¶ÖÎ]Š’›”õ4ù½ÙÚ%d1î'<õUq™L^ë¸6½nÏËfŸ¯€g;ȶÖehûÏÞSŸÇ{=²ëéUæ®Oܬ„¯ÔåzõL,-Þ;‹6=ÿÜÇɶϻ%ìi2x±¼øª‚N´Ñ›(Cš"~Áß·X‹*µ9æf ¼]×Zú5ãã¦SŒñK†Ó£ZS8e¾[ÿ ‰ž!€À‡‹|9tí§•nÀ=ƒÛq‘›Wëç4ê;ëP Ñi y}Z$ïmÁ0ð ÅÇ"™ióEÑ©…!‘˜ù7©ìdÝÆ–mÏ" ¯¿N%ßå3 øÞ&n9q?©´æºZy¿°0A•¸·#¿+IùÄš.³áìâÍÑŽ€²8bX{E#.M8Gñj4.s•Ä„j0àÛ|iÖV˜’Nú9Ö¤(oÆ2Íð‘}ËcÀRårã™Wű䃺oƒÇU@m97ûvCYÏ–јÿ&ªÕ GþíEKE$.D6´òSWÖ›Jå\í^GwŠº‹S„¿¯_6ýAD‡xwßã’Á·Sp*œZÿܗĦ”xô6ß¶S–ÒÄËéXGK2ÔÓ7p[²/HWÀF‚õMx'ª–†µWÓØ®nŽŸ°2ò^·¿<½÷z7ŸX´äƒ¹·R’ oø01·ï]Ȧ-àÁúªºð9—&‰Ìµð’^[ºƒmÞ„‚rPñÏ#¹š¥¿*ˆoáäð+w~0ÏM"NP6]7Ê“zIyu3ŽÄ0â{]OnU0Ð;üÛ,nb‹ ˆ´¡Gè˜7A«¤ÑJ°«‹ÜmÞ×$岟bd¯mk¤H_ÙÀU”žz¨D Ó‘eí )¦‹µÜÂÕ]1«~ ØæûÓõúxrŽÎ–§÷}Z~ü­&")%›æ\5ïY´Å™°L 쎒—9î¿Öµ/ð£z!¡‹—— y+¡t°ßjn¾S©³.Ù36Sv³^ýæ¸IyÞ±¸–áàVû ƒÿ¢t‹& endstream endobj 422 0 obj << /Length1 1306 /Length2 1243 /Length3 0 /Length 2081 /Filter /FlateDecode >> stream xÚS TSga,LuÄZ”¢­”Å• KDÃvÄ"*SÉ y$y/ËKBŒ  rTÄePäô¸ EA, ‚ ¨Œ"*¥(XAD‹ è([E˜Â¼\p朙“s^þÿÞï»ÿ]¾kóMh˜#G€ÅÂ\ Åéšó ¦ÓƤÐh ’M8‚Kà÷v’ÍX¡D0Ôí„—†pÂæ áz †‚•Й€îìF_æF£æúˆ)Ü€7¤F ˜0V’l¼0™Vĉp7ðáìøö€î꺌l ŽV |Á.‚¥Ä‹|HÂ0>ãÚ)!ìØ"—¹Q©†I•LçaO¬„jXô%ƒH O–F!Ù€p¢œp„aB\)`@$F•E… ` ^aþA`• F'ÀA2˜l SèÂM²õÔ@†ø|L*ƒP-‚Æ!"Á*nOÀÉBz $QbRCˆŠ%†Ô!Àå¬Qád}J¾‘áJŠ‘èk¤êÃmöA^˜T £¸’¤ÏÏQÀ|¢ïZêäpÅ(¦AuïoBõeT2jŠÈU°¿÷$†0‘>Úâ`°hLº« Àr'ðETýáZlpÒõf¢†D “!Qœˆaâ¤SBjà œ¨ûÔ1õF¢Óáã ŽCPÒÇè„N܉ù+°žFÈhú߇S4¡0†J´á†S9þ^œÈÈ¥“%pzzb @çÈbG'¡S¦¸‡Ä©qB!d2O¸þ¨Ë&Ò%úô>eõ¤ì&ÄL‚Ê…ÝG¡o ±h|âCÿ¿ån ü7•ë£üO¡žW%‘üv€ÿðCRD¢@ø¨$°âs@$<±°Á°QI?÷úã±4Nò¡}ˆ’‹$À‚Pç‹&db°Ã„ú§r}P>&Я ƒå …Ò’h„ÄÀttbŸp‚A†€JA1œ ™ OBLAÒÄ•¨ëô&Ò”°|•BAl‡arÄ›ïï†U„á˜Ojùã»§Æ—¤V ÿıÒ8>«g8™×ôï4ìô™¯~¾:Å‹ýn€y<½™sµ©+ýÝoszùãeâµóhâ¿=Ù”î6¯å\ÅtalySÜå#½Ê £+ðÊ•u1LT7ïu9¯V3¸²Ñþ+²¼ïÙýÜn_öwåEoψ^›Ø^xI13ªÏH7±tqaš¥Vrr+‹<‹9MUþK”ý+ë_eZs»ße߸Ã`=­yxš< i϶êé1—æöxzQí¼ 0¦4ÚtVûXŽîµK¬HM¶‹UÖ…-÷ý§¼ôÊ‹´¨î4&Ë;b[òÆ,SN E˜Ÿ Y²|žSÞ(¶uj6i]»9>óôƒ{sëÎÕop2;õÈ7&Ký`÷f /,•"~àE/‹Í>\xX”¿¯”;þEyôÆRÓlJ:Ë4´˜ÂeûÔ-`´Äïlo¸5,´ÞÀõÍ>î‹¶GJᓱäÆÎÈÆ´ ×¬ÖüïŒIÕb¿–-ç´;ª*Oµ_ºÙrýVæÂb[nݼTÜþï]«’ü>ù=2ÆÇæ_Þÿƒ¤)«ŽHv<á\ÿò˜¼–žt¬y<…kÉË*h„Šw]¬]p$ûBk´°»Üô<%iÝ¢¡´gC›~ ¿íµ¥¦-ïÍBVG™§íѸQF׺âEÕϸ6ºå.Çzv²ræVãŸLÙ쬒a¿]¹ê# /ïfÊEØ V¥(k,º­ä‡óª{æË™¡¹Æî#Cg/ö?yùz|LÑλm1æ‰ý<îŽÕþóñ«˜¬Û9gùÏͨi]ãÃs€ŒwÍ¢zÛmö½m¯ª:~Zcþ(Øš·Ó×2cˆÝÕ3Ë\°×ïÀ@ÑÓ®¯/UñcIx‘íž¹ËÜ)™Æ©½¼›'_´JiFíuíý§ E3®~›³ÃoZß=†ÏôÅoy3«êûštSøË_B3×ñÓö.à;”Zï¨èÓLsŽ*ú>Ô1éÁ¦WZ²çµ6qfgùz#Þ ‹ýNâæ8»öÏÝ•œd­i“vçy§DÙ3“8øšC‡pᆨù‡ ˜Ñ+ê¤å/;ÝK”º¤®”íWÊÇ[ÞäXPF÷-ι^'¦&Üóiÿ2`ì_¿>Œ¨aDžöe–ì½P870¢·|Ú~ÏCE«¾¼þ¬öKqø/¤"+—c[“eÈ“ŸuR¤ ËA³4Í¹ßÆþÍáÖŸ[ š·h[O¢Çî•ß<8¤®ïá=£Ü–Œ%ž:¸í[yîÑ3.iŒmÏçì¸íÐZöF…5Ù•†—úvK6†hä}=‡³è‹¾½¶üƸ¶¯íx~Ð6iúÜwI®®(åºVY(Kf±'í õÈPi‹ .M¯ÆYƒãw¾Ûµ#:ÚÌv¦ØÈ!/¾&B¸¹§¿®\Ü×y½fne’{ÂöÆ”Á¦”ŸÝ•G½ç§¶¾ÈV¯¼X'+.®mÝxûÌ«· ç‡ó ²V¤Tôûä^\Ý]z–}®­uMÞíe!9…šW%¡Ö—†}aýWdóËY{š]Þ^:vè«Xläî°Ï,]j^oˆelu¥]!Iû£l…o†•IûÍ=ó£šOo´æ˜­Í_oÝÕë·ÅÏi9eºõXW$°Žaº‚¼ŽþG¤ô=d_òÈ*ÎÃÇUû8ü~|óÀõ;¥´}‹œBTŒ’µAÂQ“ŒlòÖãÿ’Ñ%å endstream endobj 424 0 obj << /Length1 736 /Length2 9455 /Length3 0 /Length 10053 /Filter /FlateDecode >> stream xÚmveTœÍ²5ÜÝwwww'@p$¸»»{pwww ®wáË9ï=ç®»Ö·ž?U»ªºwí®õtÓRÊ9Ýt¼œ­9Y9Ù8„ÚrŠ:œ6ndZZiˆµ¹Ð ,cîf-з¶h[;8¹\œÈ´i'g/ÐÖÎ À`Éøo 2·:!='“ÐÒ âáá!ááêÎqcû[¤mm p³³ØAÖiuŠjòy5]€¼5Øbh¸[€€– ¥5ØÕš`ã€þq–N`+à¿8¹²ý›ØÃâö—˜ ÄÉ *«#)§®¦•fב˜ƒ­* ËÁn®B³­-nÿêŽàö_ dþ_Ëâ¿Ö£Ï,6dNN€ÐÒ `am #³ÿK7E°€ïØÊÝù?¡¿„\ÿò0üÕ`emó7ÛR3w´0H;9:»»YCªNVÖ0à_Ú†ÿ…(º™ÿmò?æŽ@×ÿ·æ2þI—ÛþU‘•“‡ƒçè*ô´¶ÒºýÕÞ âný¬oýÏ9©Z[ÝÿYÃú¯>OØÊ òúŸmÿ¶õïMÙ?ÊȨ3ÿw þ–[:YÁ¶m·¿ÚšC¬þ ü;¬aügšÿ»Ü¿}ÎÿõUÍÝ @O€Û¿Æ…ã_߬Oÿ›%%åäéÃÊÏ`åæãpr r¸üþ[KwÄìöoýÿ¶òÿßsemíim‰¼öÍÉR8Ô>£-¼Ò_öËB<´”m{¢ZóÀr/JÈj4¨¬Õ,_ë ¦ÚÅØRµJ^ÚšDŸý"7`+¯oVð3ÑïýÏw–gË2•ˆB‚ ?óQÐI÷Uvîa¥@êo,ú¬Ü Âõ™Ù6%ÿÑ2Bžý®0?Íã÷îŸÉ¡€÷çWŸÏ«±ôúBÚû21„É´Ô¸sZü68µÚs‹‘ôR‡A™e„HÛÚ“0kCyì­çPAÙðýýLc°A¨÷ÖÞY8YFÁ z'ÝäX¶H“¤mÓ†!~ôV<û³|9'¨G»«R¦ž×ßš*[äfÄ+ˆt6µtk¿kˆ| Že¼ÆŠÃBÜ¯Š¾× Šd';ît¡…Ú†TeL‡?Á9“Ü‹ûªvÒ¾™©›Qcãí¨×ºÞ,òî%’Ò[}5.G-Ä0—]"Ü>¶ Q~'5(¸bWÇx6ÔÛ5Ê &:ªŠÊÍ^¾ª­gÁN§^G§šë¬lž Öœ—8þüÂsF¤hÞ¾âÜ*¢¸À}?a·á½mLœ½\d¼yÀþ–*{‡êûç$ç4}¬s;)Œ«åQ.Øèáušv‡Æ¨OÃc=ó¨índwP;^(>ëÇâ…‰ÇdB\Š2«€ï|VÃvŽä,'S]÷ËòÆ’«Qã)Û¯v±«¯â—fÃ’Ø"[å[&’q÷ ‹ºâçµ¼ Ü¿)³Þ£ÔAͽœzÐ:¼?é=Öò¬s½|m9ä®õžÑl,–~‡ZENyÂD©ì€Ë=Ÿ1퉌ñù³,¨;\7ðÊà‡‚Æ*S(úšOùÐ@¿]Û![(lÂ-—8|Ö‘³Õ:ó¤üvÁ¯‰À€X¢tvÈôL«åøK¿<—ßÔ¢a¾[Éow^¤³/þÓïØJ»ÓOTØ*ªÒÛ츥MHž±9wqs!c]Çq¬+1,ºüO‡7>n Ž:„JáSÎðóæÛˆôKx ¦j.@(5…ª¶S˜/Í”—d’’æKËw Rûƒ¢Kj'å¼üÍõg#øÓ¥ÆŒØ%qÆÚkhÆk¿*|ÉϺà!ôVÌHšó#x¬ºòóþ–¹5[{™z( Åg jÖ!Dó’¨lǾù®„c2P¨>½CÙáL¬G+³Qþ@÷ܪF““­£kmb—¬B8°ôw9cl^Ï{8éÎR¯©ñ[$OÃs§cßq5îJüDãhôÍäA²³ þd"¼ôüÜ>-bÀkë², UkúF²ÏÃÄÚÏê³u9fÁQ0XfzT /ŽGÕöwžž£_«'(øÖ±IO}* Ö-Øa,dò‰€~Ò «Ÿµã;ŽÒ…ŒÏ=¬!of;"²ÖI†*X¤þù*‰l.R"lú­NóN3½²ì×m ™ÕsWôÎX ™ Ñ„¾2ƒC —ûQ.ý—C¡±4ÚI%“tÛìî™Øgâî‘ã1劇E¥‡'w¢âŽx‘L×"„¯˜ÌÆæ+fÝš•S–Q²w²’pÐ& ’±U¡ZêÃ%':uQuÅg<\s› Ø—uÃ`þÒ]L î$ÁLm„K?Ó„,¡È2RñªG‡‚ëZð$ŒØ”¯â…ê³[ù®è©bEö 4«›?v×A*t}"¶DÜ€§="}ˆò³“”îÕÃxЦ/Ä”2üJc™Æ‚uúC§r_+x†=¢SØ`éÝCXû… Z.œX©9â\ÕƒÛˆXüâ_ç=‹cÍ!Òª¿rP›×଑ÿóPki}ˆ¨âì»L•]ü>ÉÚTã,Û€J³’Æ„épN§³7èY:1µ<¿åD}d3ë¤ù¸|1òƒïË]¶ÔÉNœ&éÁôTfMؼIºS«( Q‚‹aîÔïÛ[¦ùù×]þ«5 bÜÙ¨¨4¹‘Q=3 ¦Éð×ý+jŒÇG‹ æR*碓‡£+ˆblŒóLìŸÁ â(”cçjÓv³ŠôR’–°»ï'øñiÓ`#P{³µ-j™©8š§¾ë94žÿ`°@P!æ¤0¹É“L²u,°–ÅšFöªsW¾^²˜ï*jw 3¯¢}nÇ|*‰2^}m, ý¬óäÐ5×*cs&Åô´ô®üõÞ•Ö0dÓ¨âü¾®å"%lƒµQ°´bëLοm_lué!¹vW1]l¹(Lfýºô›…Êi>èîñ¦è‰J±ÏË”ÏZä‰:\2¡<@Ý$…™6žfIØ®©Ù¿à‘w¿ðᥠþ‡î–)šöŸà¸¥:ýÕK|­ÄÇÏÏ N¸Šmcƒœ²#Æ]¦g¥Y¸¾oÍ…¦DÄ~ú;váÝètJ]¦^„ìÁ©TX÷ÚãË>&G÷RÔÀuÎèJÑ<Üß³DÕŽ³TK¿Ïr_”_Í‘!YÎðçû vN6¢ÝðbüìɶØâ#ÈB ò^*xL¡U¡•ʰzŸr&gPÕ¡zB!\UÝ\…|‘ã§°‰; oÛ-‡á9£Ñòæ°c6µ >A1fø@ÓÝ(BNŒÿ©Ë±þ[L<ת[&L¿­šØ|çROºW ·X’ðô.tt÷06ôcû¯SV*û<ÜÉ1óægv—ùµ±~jh-¶a±O‡ù1A„\Ù;¥˜Å×ñh_Y¡] =6î?‡ö,¸Ÿ¶Æã ™§z`×À"ý8R¸;È‹Ÿ ¸HŽYN‹µ˜M™\ƒ·³eÀoú˜L#¸¿“rè¯8D‚b8$~p0`Í‘Yy•%ßîruõ ΤOVKÚ;¥»˜LX=ÁçÝ%¥/*Y¢FX Ö©¬ÞÈÙ%΢–f/¸Ò°yia¶¦^Û²g—v**±o‹¾µüaN?ˆt äÍ/jsºÚ¯öÚ Ë¤þ`õ9kãgÞµíYÎÚáƒo•žÁNXƒã­1[6Ù~Z óXö®Ð¨ÖÕ‡‰•8•¿V†+7se“lðËÄ@¿Š É!ޤZ"K‰e–ë$¹´—“Â1#ÆWZ'4ïµj„“+wлÕCùçM€@ m:£¯Û¢6oÈv‚5 Pjz“m{~ d*7+}äa·#ãü¢žfèoƒg3v¼ñ™-sØðAUÞ.q}'P©Ž¦þKH€W£1 ?ÿ“Á:ç‡RfšúƒÓ)y‹  ¢±†Ñ˨™¶G ;/}¦ ù@ê“]xsˆ®O‡­¼9æ\{òZÜŒ0ý«¹ãAú : ™âÑdãÈ2ýÕÍdõ¡5í±"^!„y ÿh{ymW°H ,?@ãPÈÕL?K£x³£ê “Î/Ö;J~£“ÞÆœV°ù.Eÿ>l=}žpfΔpÜË~´l*Kã¤&‘§¥¥ÎèýÐß`=\Ú°ÆHyhsý'H}HËÔO0ŽÍA’.•uóøÒ¯¯±OÚ€’¥õ¨Eʣ˺Èun™$häèk<ŒRB)·2bÕ$ØçEè’áðÛªV!1"Öé®§¥å¹oúZ9íq/M¡=‡ÄX‚6ãv$#íœm—{½Ï{¼$¡wÐÊ8% Æ'S]f›€Áú”·I-ÞÛCüûYV¦&Ë묕ˈ4sS'ëÙàe¦ë6¤= z™ ›U‰’BVYÎÕ•W²,)¤•BQÖ¿'¡I­p«ÒÌËðçšÙDϦqûFú–S¢(ÚÅO¡r#ÅéV"×´i9(ø6×gnèÌXw/¡E¹ ×;ow"„mx.Ǩ{à;@ä-I)æ`[ì7Òè™d|Ïžc0÷1á5¯ýª5Ñ-?â Ýþ©ùYÁc÷¼!Ûöí7ª ¹ò08 | :¨¤u1å%Udúì1ƒ kwš ÂXNHÅ”JÊ7!¤Äøžžµ²æ±Ã @Ǩ÷órWêêU v¢¨â›<ÔÅ—OÒ 0‹¶²«–Ê7ñm_ˆ¬ÎÞƒ6nØ“>]^wçÔ§~–UOM5AÛúM–¨ø£šJ|æsZžÊRÙ¢BaÔ•³žRÒH \¨«²¤n x(òëÞŒÁUQÿç´ Ão±–óƒ[š¨u÷ýŠÝ7©‹½Ë: ˆÉ»éäÁ-æf‚;aÿÓ!A~ûpÁ²õbH;ëDŠ*LFއü*³VO²*ÇdL4©¥,§®³¶G‡rÞò·ÝúþIœßfü‹¸Ö—äjVœBèÏ9¶Ë‚…VgÙU¨¯õé‚5² 8š®íÕÃ,eMÑ7Š€V“$å¾ü(æ£ dŒH½’dx±›TÏȈ _°?yT\œÓ‘qJò§ìõ(É‹¯‘¯7Ðk‡FlB»L^Ø£žc¯þ( ¡{¿ ÷œµÂa¦†þLøe"±¬U¹ñËýXE1v*x*l¢n$ÌGJì¯Ïí<<§û0¿Ë-¬ö ¿²0nE8ã>š×æÖa§T8>»èjÐ.ùÍëÞíwV™Y›‡5:»Ïæ[Ô΂•-1jgm$‹ˆµ*š&”E l ^â ÇVîtÎú¹ÐÊ´8ÂË _©šÒ`d÷°éL,[)m]½B'vd¼^ÛvmóôÙ¶/¹\ø slpœˆ¡@ò4úM‰ÛªÄ#ð'+:¾’á¯&ãí‹D£]g•ÖÕ»°<*;"Àö}2‘>”Š‚Ù7ÜeŽº@YÀŒ:@žL­=ÃôýbÿüÒü’~´’÷RªÔçcæºm%ñ±ÐÕI¢Î PÚDKm{¹öè1eÀJDÊ;¥HM¨¹XW—Ƨ~óV#Ë\1Ū3¼8C³ptÅɽŽÕ$ו‘ùΘ¯=%¿KžàO퓞í….É@™¢Ûõ»Zꓳ܅&¤ yQÒŠNçûD¸Ê³ešŒ¤ Á qXÇr ë‡"÷Iêlu7îù(äÍË"à};‡¬é…ÓÒgÅD›|kNëÍA}¤\`€mÙyõ0tØv"§¶ 6ú¡~Â<}|ý÷Ko^#’agX³³æ±‹sgSkÃî¡ Ú¤†«~ÃÀÉtا.z5B>èßQ2£a&ØZ.ù‚_špt"°=†Å{ã… >­xåjX¾šºEVˉŸJ?2ÈWJýÊ€C¢³q›¢ÆÂh¡ˆ?A>NnŠf\’ý”DÑ™ÓÏõ¶\¾:®Q~-±[Xì”ô9¸’YHi¿$x0×”™%®ÈŽNÀ=èE+–xkiÌÊ–ê’ö.zu_üŒÙ°Öÿ•Ó>]ñ¼uÇr ÌIi7o÷ÌNUý›­z<”-ŠYÓ‚æØô ùn¸ÞÉM&ŽƒÂO—[¸–é* ˜j9Šª­€ƒß$š*Õ­OÔfå\,eû*àÆ8ùÓV‰ÌÄäέ¬!ªŠ0±h|xÔªƒ~*=Ó®d§*(J\’Kº`S?$å/•CÄŸ>=àí‘Å$ÛÃÿù¢<h2ªIËcS«Ó¹ÍÊ@"ÿƒ$°ËB¢|¯£ý²·ÄI>«Å-a–­Z§x½«çfo 43#Ë¡3ØN·çtnnmŒK;õ(¶–Ö>ÆmóÂlýIÖèÎÁc.¬ñ“Ï^=ôyÿÃÍþ1h÷€¢³É[üKVºÅðç£)UÛ¢°ã©&z¡íÍ  ê¶~î"Væãã/8ŠÔ±8(•(Ûs’ú±™µ;„VþÓKA-“³óТa’ èö5Ëè%⓯ĢE]Àq桉H‘”Ú¥ÉeÕycÉq·[s8\©+x™C·9ĦO||\»±RØ–«Â=z Ê·S9°v‰KÁÝ ûl Å͘ƒ`uÑKÈ£A”zÜ׈vø‡wŽã;¾;ž²è1´}¢øMo£S®âd&›}/C–±¼!1es¬à.³GJ¬4Õ€V6€Si_1 S1³8ó‰è®õ±4.—“"²Þ²el^ëóîd´¢ßDÌÕÌŽ˼gÿ-¢qÌcBr›»ÊÜç=•Î{ÁÏ7ÛVæ7T·Q|þTä>µÞww´Ü‹Š(}!>zR¨Yô|¨Jú¿2><°Á¼žÑpÐêh¾4ÆÇ‰jt©†K|U»ƒ¥¿óÜ*äëÒê„÷_ó‡Ú³j¾yô+¶aí#"ޙɆ"ŽÑ_ÝI†÷ î£b€´E!N“@õmIŒì;`¢4àV…„<Ôfî|WˆKI ÂÂêŒæêÒ+ÜõãìwÀg¶ +i~ÎUÿ¸ç߇ÆÞó W[^!hô¬¼Ì¨îAk^½o¯ô–b?* WºÛÕýçáª?†ó½Kqq“=”ã³ToBã!‰ƒ/£!• Æ”Ùog ,…¾°uæ (M¡:jO¸Wn— ^)^ËÖ1B•Ž“ºS%¹êµöö¿ù©Eõ<œ¼4ÓuØñ˜ŠÓÖ(°~ÑXŽ×¹è¯P™+ å À«¬"=U|¥<â `i•Â?>-YŠÛÄ9aÉJ[ÌÙ;tŠUwp–ë4©£¢]Ú¨õ—¨êdäoM?BÊâÄÓE†æÜX¡¦éÍR{29­º93Øʈ[A¼Dò†uÿමß(µe¨á¬ÆZ’z>¡s%$wnŠhÀ´hLc°¥pÓÄB÷÷dïÒ:>žºÜzÌÊý…’ ïd Ÿ²Å¶ë¥i>ziF+±öhÑÕãÞdö™ðsºâ0#´ -Éogk°ï­£s‹rõPUou‡+·H6öÚßx•Š“ ƒ·qæCåçoy‡­Žš¥ßܧDIMÄ7Ûž¿ïÑ“³J†PÒb8#¸ö×Ûü†ûŒ†_Ï0ÌÿUߢ0’Àˆ–‡îÅ=}.€àZ#<-«Ü=ª í”=vÿÔ@oºÌ¼-þˆÁß¡DÛûv??yƒ%¢ÆzðqØäšüÕ×·î¿´<{¼jà-Ö°®ði@{ʼn›÷yYä˜< à ̪@ìäÉw*`‹ gT37ïŸc†3­rœÅæ]¥‹¨ðçu7é%mÛ&b¨ëwQ#ür)Ñí!‚z±®§ÿœ±©»:ÕŸ¸ï? JKt£‘±¾/þ©´bó6N›È”Ój›"ÚJè‡TÓsß1 bSoÑEK®‰ÄÑei‹²3lÙv»ÜÔWìø´Qgø=¤~¯>Í®d âÛq{pâÏßÜfï#ý µ¬o£¤“𦌆c}.NsûMì•Õ–N§.?2$çüä'ËN½8:OeVUúŽp$DSyPAÁCgj÷"ƒUSª=JµÛˆØ6U›¼ùkZӳŜË?\öN‰´•9R ÓùÑd„¹TW‘E"ím]Cº_øúˆäÇz>ÏsÉ_Ê¥ðÙQ!«Z‚Úo¢õj Á¯ÃÅôÓ&Ë—gú® <Æ+†xjò¥¸¸j-†-ôâ¥&Jíg€Ï¡—$A<YeäþÛ@8² m÷ÜÈÏŸç¡€Øz-HÑÕ\áŸ_øÈ˜ìŽËºå÷•ꢪŸŠºq×úÊÌÛKšLÜ"+¨¤~JÂrfíG¼ÌÐ…éI¬êàÆ3R½Öºó·ËUy| jö‘ `Aam`~Q:Gÿí£Eu5ùѲ¦^îYûe­}Š3ÝPt^ž«£Tîß'BÒpÂQgÊì'ßSRX×ÁFX¬—Ê7úÜZ„ÊÌüƒàð̾5/Zýb0S y?–Áðm{ǃqü7ä^orð¹Ð¤ÏÖõ_ã.\û4J4¥£^úä‰ü‰g5~DÚP¿ ÂÝ·lé˜\Èú—$œ6+|Œæ—QpAúÂñ[£š‹Dšˆöú;¥f¹·ø~ÔZޤœ*Y^d®v_h{v/ÞŸôJ ¼0âö3`ÃIX¯þÇê;¡ýrZ&RŒp`©ôjcüÿgh1iTKs" '¡NõõbÝ”PW› îÆÑe¹*Usjõ Í=zn-ÓûÏqšA¡Ò㦭€3 JZª‰¯x $­r92Öòü{iŽ0!©bM6M£e} òØ?˜~ÖB—?¦>ÃëšùWÜB:¼å‡\¬yBZô~„çˆóvXÅMq¢ yµ…gSÕœ%ú£$Û Ý¯BIÎa C„sù/“z}Àî¶åëÊp”Át\;í\å¶u?›`‰»3ÖÂä“1²„Q½d¬d¾ëheP`ûh$tC“A÷DNÕøüBII±iUàÒÚú8_رjçâwð¬0«%ï|aP~O–Ów‰ó;]ÿÌ…wÔ¹óÄŒÜ'M=CF„™ƒ@n’’êQ܆ú‰OY_‚cvË®ñ4Ÿ£s °Æ#îx§Ð J×Ñr¼‹·˜jGÃ-‡¿( ±¸OnQÙ|9¿£xÁºœ°:$SBo]8CîC:nCS”çsmëGÏS¬×L¾cÂFŸ5ðÚgT/œY wèé×öªX3›3ø'½¹ .Ë¿TÜú_E¸R0ãø!Ú´+£<ê&šLŽå7ó=[ŠžžL Ø'¢’¾Q̳©ª…G,~ýB½_D¦œŠqá QÈðv³hW7`G¢_¯ÐÜë*¾ßl¤ñ¶…EÝáÉ:æÙ_íµÓÿ s©ñ‹Ö·Ú‰•P×Ý¥€Š-D:Ϧ¾»/GwÈ,¾öZp‚G03Á8Ö8í@å¬Ê çÉñ*TË™ýý_% 2‹aÒÂ8jÞ"¬¤Ÿ“sîÐ>ÐÛXzÊì¾ß8«a œŒ ì ~â/,áí`¶~¿Ç›kÕ Âx«UæÒH±ûš‡7ú meÅjê¬ÄÚ»áѧ‘ EÏ–»8¦3#®½°ùŸP¢Fé¹Efg°D%?ß(\âz•qfU§@Hç[õàîiVÊ(†±iy«rÎÄŒkrûS±ÂÚØS5S¦ª…ôòµíŠWKWÖ:òèXl°ZúGð‘ü`èfßrQ ÏïFöq> ŒÐ|ßï8\kõ!9|¿bT+¹å¨t>ZlÕ¶DÓ5Ãñ?Ý•= <\øñ¬À¸çjÈrJyÎGÕH¶ŽøÆø Ž.qPÄeÃ(Ýóa@Ò'™á<ÐsAæ6´Âð‰®¤4pã2l'HËÛfenj”ÖgfZ/¸Ëo°´i©{c&ÞÊ@앟vûk¿¯¶žøo)e8%›×æð™šÍ~ =ãÑ=­3´nb³c ’vpSàdÏ›bÿôŠŸÐ½ i0‘ýðï\Ú{)‡þÁÝÐf_¹<±GÊ {4AzZÄD†÷“¿ˆ*3Jëãú&ÛÖwM• µwõ\þnǶ&:æýéY£è|ǹ¢AùÀà‰‡%#zÎÏÑÐ WÖ%I7ò¡¶?» ;¦²‹~›ö¾íRÖØ§E4ë£^Kí»; Ùr¦¸ZøÓL¶²i bÕ0Ù—ÚäÂM…,laÊê·8]ÌÔ“ëí>lKYJ ~Ø`(Áû‘ŸT Œû«f>¼(NÑÎ5 '¦Öbƒñôt5 •f";ÿUA;ÄŒÑØ¯_•|¯äq?°=7ßm®×`§æ“ÒÂÎn£Lû]?¸{ÃÕÇGiÈÇ|Ø“îî¶ý1E¯<Á¼TÊt¦¬ž£_ð ä ŽŒ×¾Hm,Äõ“‰.]á»Bù¢&šF²Lí-Y[Qñ› Sæg´] a©‡VŒÑ²÷Øà“†‚Ñ,/¦o <)M ¹ÂJ Ø}å+ÛÌbï6ûÂdÃY5vžš}¼mË~¯jÙ.~ìò©Xá[`g¤…yìxíAͶ{Èw Zq´CÿÜ]ÕÖr>ÏÏOíøßÑg“FrH8Äl4˜nt>ûzOÊñy× «\5[ü‘·!ø+Ô•æí75FÙH°ŒJ20ªUjÉ>Ö•Pq…SÝŒÜkÓ…¾Æa(ù…KÊÏøz¹Ù|`S›”ÀOz}µUµ§ÍÖû±¾InØÛPÛZ[ÓC:Oâuá¿¡-\qEõÀŒg @qØÖ³Bî© ñ0×àòŽç÷bU;xN–^B¥+QCí3–%y»T¹,3´oÞÌ/¦F‡Ê> Bä™lß‚*•-€çøY±š&ö0ÚÃ62:“Lƒ£À}3çìi™aHGÛ.Õ9Æ£‘ë}^§$ñ«M P{Eª;›Š¦á¯«39=pM—.†•¬1öøoæ:¥%é„?Ä6àÜÙ}ªåmá1;ý´°yèô´ëz&Ä`c!2ANªºUÓÕÀÿm/Px¨².ëj£Äת˜ðXˆ­üånÃ…,µ¯“:v\€Ð*—ôfù(ú§ƒ%cùËQÝÉÉçÿ{gOÍKŠ8éwÂ=gÞrÕ‹$Ó>xÚi¨oí,TC &”¦ûtŸ¢èyûùk®#²va¿Ãý¶&!Ðê]Ø‘)WP‡<Øê€½íjù£ÄÑÑuÅék޾àÃGª}ã¹¥2³ŒÊf>OC“q0g˜Ÿy÷¸•%0p%@¶ÁÅM£VX÷¾Â½—ƹFSkUÿ½Läü4µ¬vfwêØ¨»2‘´ãåMw¿7¼XÆøñ“ õ^kWjŽÉš,”~ú·„É‘ëÜogµÓ~®aãÊ2×ç­÷9—#´vô`v×ùc_`˜ü—;Û?ÜØîžçc¼ã­Ë¯zç¤zÑ\Gº×¼E6÷ê3ˆ9¥0LFÓF<ÓØíWÌò;kQq*v{Û‹ÂÜÎ*Fé‡$G©FmS•ÍœQsß¾ÁþLeo„kÄ ½‚ãÛ¶í(ÝÄmûí»Ùæ×Ê}"ÏÁ(ÇiÅU9Ê~›¾ Î%ÙŠ·›ÈÿéÂ’Kè½kP©›D+q]8ï¾ë¯'î‚a‚ †:ÂQ§M]x’‰€åîØÐí[‡¶ø¡uÙÊêPΕÝê·ÏOÊî¹è«ÂhØÉ! ±³ ŸóŒèüÔ–Û~ãZQþ\x@ J".,U®%ÉdHOaµÎŒìpáÓ³JiAweêÂÙäªBwØfòÍH78áÐ\4ÙØƒ“°H=à©ùÁüÊ;OëEêÀ°M?¡€ê¥h‡:CÊ-»Ôt!bȳü¬ò¥µ° CÔÁ3!6Lÿ–X—½|éãg—?Û´G«JFa¥iÆgµ>úÇòG¸Ù·åoêSp¤«Â‹<óLÏæ]Ä(ƒä'êÇ©ynÆ­ßüٹ仢ç7%Áœæ“]ã“¡|[o´é/ñ ˜£)r½wîƒXé‰ œøGϱˆªXre~·Aþ$·>§ôTúª¨¿K8#Uh벪-´]YÁóéøAñ"qX‡4.…DîŸÜÝ&Tp!ÍÀÆm´µúçcj´ÉwK’< ÑE×;7_ÃUt?G«QCa›?¾®Ïg ‰ûd*æùõ*·7ÏD&DBzáv>£ÁìœÀæý¯î—KJa¼è'©9ŠKpN|kÛY:TF—Db./µnkÑÎûdðÃè•sçÀXÀÿºŒ;7 endstream endobj 426 0 obj << /Length1 737 /Length2 16986 /Length3 0 /Length 17566 /Filter /FlateDecode >> stream xÚl¸cnÝ®6ܶíîÕ¶­Õ¶mënÛ¶WÛ¶mÛ¶m[«ñ={ï÷ìS§ê«ù'¹’Œ‘\IÍ9æ û%fgë¬âaoÊDÇDÏÈM¤,¦¬ÂÄÈÅFÄHÏCF&ìhjè °³1t6å&R75!R6µ'bb&bfdd‚!#¶³÷p˜[8QSý$R³64؉Ôì¬í\ÆD¼®®®®N.ôŽ.üôÿ)›š9[˜™¬M‰„å4%åĉ(ÅåT‰ÄMmM ­‰\Œ¬ÆD2cS['S*"3;G"ëÿ(DÆv¶&€åäDÿïl]MÿIÌÌÑΆHVTEPL^N…HT˜AE˜ÈÐÖ„HFâŸp[g'î¼MœÿU-‘ó%kÃÿJFÿ•þkutÿDÃÄDd0v&225ØÂ0ü‹7I[3;"öÿÀ&.öÿcú'!§ò#¢ü‡C*"S³¼]¬­å mL‰(…ílì]œM‰díLLm‰þŽ›#à_ˆ²µ¡í?•üOˆ¡ ÀÚãÿ7èÿyH:þCŠ ­ù?4Òqѳ²ÿ8‰ÜMMÎÿpïìèbúXÝô?}’55¸Øüg Óøù§Ã&v¶Öÿo×Êú÷ž ’jRR’4ÿˆ›EmíL¶æDÊÎÿpkèhò_àßfCÀ¦‰ˆñ—û·Îô¿º¬¡³#ÀH›‘þ_ãÂø¯ç$Ýÿõ²s÷¢cbc'¢cag$bbag"âdaôù?é»8:šÚ:ÿ»ÿÔò?ú¿ËÔÔÝÔf}ÅΘ'Ø2µ%´ÜW´p®œXȼ5N®±o±6h-غ¤YÇV¼Ú3#9Ò–xq[Ö$a™{{aÚ-H¬Ï\\Ý ÷,Îçç{UöݸDÆÏQâÍIÀyç]FÖq9gÒ [4©ü´X¿Äý¥ÁÎ/Ž“EÈlË=Ò×ÕÎ"¯!Á¿ŸÝ÷¿^nœekÑêÜÊ"ŽüãÉI1×d-`rÕ×FC)ÅVý"A‹á"æÕç!¦Zâ(Û×@„ཹ½Ô#F Ž?ÍÝÓ`¢T\µvª ѨôázsÐ;¸úuŒÍè–Q9bv@¯wÅÔ]?e· p–¡ÈͪÉ×79­r¯ü«°½sOE<(ûF B‚\îòW«yŽy3lv;FàƒÍƒ*R'CßÀìqŸ{Ëbµ“}È  _îÊW;=̳aíÇáQ˜,é”Âå!Š.`íœZÆIÿàiõåÞ1È#¾k©óïi§bŸTDdåD.ÞU×Ò‚ ¤l Oµ—7Î*Î œº}°^bK¶.Û7óJα<Çlºïèàd,æël2|%‰>Áy¡žg^¤Œ´ïä@‡07½Šj¿ü$ÛB%ÕîQpÝH;ÆnyÚëWNEüžv£µBBޡֶ†ZçŽ0¨ôo—Cã±ôg*Å—]øí“î‰,V&"ÇZrPéeQ[Á!L,°¿Æ¾ˆ-ââqÇÁÌgüàðPbºÿK.ëvâEéøù¼ûTɽÆéöoÓi5d­ú+E(úÆé÷ÍGÚ̆Mžùð÷­{(.žÁÓÁtšÍùºJ)v{o…èiòrÙž¦š¯«¬(ɃG/ülTú$Ð%r*³FÇ{°“~ùYsRW¬p«%7cȤ¨ƒk·OÁ«í3)Å^ËË«c³]“\²1jÓH]dz߰\!Ž7Ý]x‚%Âà—2õ’ÖŒ ÄP–~'V]ìÙÑ~™iZ½H—Ýôá’&D* øôá+(§N¦ÄÈúŸ6&—Áèñ¢pC´Ok‹×»!|]¯–Í4˜^–] Ž¥<›‚ôGޤÖì3–„d̉˜ÚÈ®ƒ¡u誼N(èRb—¿œ§T– ˜vW!“öÕ ’Ì?6«ˆ‘Ä,\·j¥…&j ±t¨ª‘7\´¯&¤HÄ„ÏB€ìýÓ4 67-tÕ%ÁpMÜÝñqÏ{N÷cUºzç¯2¬ö€Iy¢dºpê³Ü×ð ÂÉ‘JHI¼j’Ö ºÉ¨¿ýQãìø9é¨ä|ëR≥¬Å×õZ•Äk¶¢†ˆ[ZÝ»ÜWTRïàiÛÈOm²ö\‰AQ¾ì_Á¬¬œ6Lšt™_ù«Ì-åX“ø£—¶u¹@ÌÒ…Î#,‘ÄOëe)>ÙÑb*tM´ú–÷3“ѹšSêXâ°ª\¯.ß™IÖ˜ˆ¸ÛWòÇœVËÞfs'Ä!³uB‚Ø0–#ñ:^C¦JQw*ÉER2Ûy#5%aJ¶¾œ@¶é fRr¤ˆçKo‘ H9—œ€WÁÈádÕá!¥WàM:óBø¸\fâÑKˆ¡ Ê >âÿwÊh%Z²tžõà‡^ùÞ§`ÆC>ŸûÙ]_¸", óß^Sùš§¿.>j†Cü0íúS ‹Fôa6f_Ïn¥ü‡+uòX‹‘«Z\ò )Ì´Ÿf­°€Ôì·%Ú¬£ùýwï– HW»J@¦ÍUïŠ{ªT¾wC?±üÈËÐd|ÔèX‹,oÔ=i~ÎøÑËä|n»K(\€ÏÉ5ZûÕu?[¥)<Ÿ•7—¹M[H÷Lx§–F0æUùmÒ qñ«*årÔlþ4Gé‘hç\Jq ñùR×>†û¶q½”¡~ÿ¨;î–¸}¨wv uÊÈõë[×f^¢i#ªKÈÔ¤’ œ6W!¢& eñÒz·±ÍñÅ|`®ãkgpë ò …|{—”ƒfÏÊôqè³ý†§WO£E,p&AË ÎÃØŸµ–Z=å‡kK3„˪ŸWIëâº&}† б`,“ZéuÁ‰"2žC•~&·ïü-L¿u}©ÛÐt’ ½òFôÑ¿ûµòÆY.‚–æÓümù“¶q©DŒ6ÿ2"WxR^5f3È)9YIcÀLGY_ýœT+úŽë\Žo¡²Á¨ºW/‘ÕŸ+ˆ« ?‘œi&ªÙ…Þ’Ò>¿Ô¢RE–u9vz`Ç­ è¤eì†ÁiïgUÅì¾æâ!ï¯V¸[ D1EG¤èY[oEdVŠò•Z˜õà3–ÍlÝ{æÐ妆.øõmscðë.=¿Ÿ"íº´ Cã*LØßù´k®éJ˜Ñ¦\Œå3¯0Aèiñ.ذIfùàT‰ˆ’ö7««Kœö£ƒå´u¦\ž/Ÿ …‘¯-•}wÙ¡xÁý}b6 ¬`Õw{¥E Wð¬üÇ5ô “;i`oI¢é^X_¶OÁJð4dþÇok5›sl¤©Û"A>æŽ]†=…é–Á-ñÁþ+Úð°M^‡-)>I©lí˜QáÆùÞz`¦çÖ¡'` Mùô|ÅηlNy%Q±Ñ»ŒÅ¬Ü)úúE:à§h©íjå3ÍËÝSÓPƒÑ&-?l(ÅP2\Í€Ø °šÝûÓV]!ÄÒ*‡ÿ‡¯Fmÿ ÍSúFàåpx©ZqZy3´I ˜Ù†—mçv2¢P3ð3ä‡X#Q¥E¡ùü§+•a_ 66týg´‘Ž©Î©ÌÎ;:LšªuèNƒwéÅpÿ}¶d+Ux?múòbqí¯/ãþ%ÜLñßg˜kýâجÑ?øïÊÛ’Í겉,äë€fûUÎîƒ>‡ØbgIhé©_UÀy¬…Ckˆp²añ?¼ƒ,Ë*©Cw2 „^vYû¸]ã¹9… 3Llà‰©ÊâÌäfy@Ë’ÎýS°zÊÛ3J_VòC¥œ}täX²hû…ýôè1ÂuÓɇº"Äw )I TÒL' ©žOÂ8º/>2…ªt½ºäì£qÜç.yÒ:ùín#m›ãl,±Ôuά-/ñ™£“Ó¹é‘òr¤½,¦‡Þ·Xú|kêÝí©Äùü^(ƒZ$aÅp‰>,òøއañÈwWj°Üæxëe‡RVkîüïEþ ¼˜,Þ(KyAn5+gÒŠ kyÝs±Ìû¾Ü(?÷f@¥ÀTÿûª{)“o…"®ÌÝ¥,âã‰ÜÌ?Tµ´‡M&ÑM±5µlÒ`³803Θ\ò$eVñü­ËY6‹~é±Ò¿³+#/£I¨OHÜóy=pÁ1T¨Úôú«ífgú,Óô«åÇ(½´ÅáW©•Š9Ñò=<žê¦c\¬‹}æ ¬‘­KwߘՓTÁÕ¯0)uÐQ¬`im® .aš¢2;É“àAÁÀ‡²>üGþ\²!¡FSÝãí8à'wz{—?•Ò,nïàÍ$¼å¼µB?êíjZ⤒2?È‘nÊðCA¤;¡»_ZÀ7»§tÝôÇ8‡W*;„˜J àSj’Ip|Ø? I^!ñ:å ƒ÷K¼oŽm½•—»"þ»AfÛeGžM…ÜÒõ͵÷enɼ¦‘åsÑøÇ5lŒ«©â'­@¯m Â1Ö}òÊù¤A&ˆ¼ÒÏ&Ž¡Ö ©#ë?h².‰{u'ÖÓT*›¦>‚BF×.šœ E’ÌEÀ‹ùl˜öyùu–øXÔnƒ‹µ·¤.c ®FœmÓ¸Ý “b6‘s=Ç/@L8®íÔ§ª®É<­åÅ#ê®V;w_I°§!Uÿ€x r/ØÜÂŽ†l³‰ÕO Lòó!(4×ÈÒ|DûåI‚è°šjêr|œ^Y§Î'òámÿâ r˜(ݶ¡Ø†«ÿ=XXX¨#¶”¿,Dš5¾ÏÜ>xNùv˜6eŒd¥wÕV†Ej­Íã¤ÂÁÌF.Å)Ð…¿b’ç1Ñû,®ò –:¸R1ÌY$náØ{|ZÔyfÆùbT„ú¤|ú[;‚íl!Átѽ+À¥r­kˆ¡‘0#A°ê,U‚—’Û°åb@tér4ô”޼o€bPï•vî÷|D±ëä"ÓÙIž”‡­Öû/·¿rÓ·¢§Àþ\.Ž@­`WfŸMeÒíy8¢ºƒÌO^ˆZHÄñm^~POŸä§®2”E•‰ÏÅ~âò´²ÆqgC­ýaÄÔ”B{?’.¨°Ù³f»'–ÙЙjlëOú©¹D š½ 3žôN™kû:a|¶u¯)ß· RTsQä©„šO|D„N2ÔFUãñn”*M¦µ#´NÕ^lžGTÀgz] ®ßâ”Ñô }ñ"ÃH¹wìoÏ{jÉúšAGæ’Êdü°$‡¨m@¸‡Ôé)ëÎk1ªO š%!±Ø;®/¯Ó)F£ñMòØîÞ´ä@j¦=5ìë«~þF6›„ž·u ,Ô3¶Ê? äâ“–‡6jþ-Ä{i„L8~œß— ßßv™­g;pÍ “†èFýœÞÃÐ4uAÏ3ƒ9PÔqž÷̹ÔmlR•»ŸÃM@àSê—L‘w‚ÕÔÖ©6›óT$áÁé°2½I§¼ê*9Cùó¶•=¸´?Ö j”õcµë>ù(«V_»Ì¼’ªËú}/йEfuêÿú. RÃSqGgÌòc•u(Ó¬dT8ªÃå>Õãámbðòk6Ì 1MS_'Ý£ÉSQërÿ½!R/ƒtn¸BNÖRâ"äZms—êÍò3õ7RËb°‚ê—ôŒK²“µûÀŒ‚ˆr §÷%Ö³¬ëÔ—×@Ê«¨GB¯3þ$¦G–wnw¥j²~óšÐ&m0àç7,—eØ:†ÿÄ ¬4Çßë½%ŒšGÈ Ìk£´ßÁO)%FE ßày‚úÍ—¤"ÎŽòþ eY£àχ¬‘×ßap…P å.oúÜEÍFÊ*x»6 9.œNU":Õ¡ÑR£@ •ÿ©ƒkbÁèàM*Y°|U ¼éŽN\Œ½>‘’–è;¸gÙ¦’¡zn@ƒðÚÄSì\êï¼ü{ÆC¹2³Ã*0F'±RÈ¿õ>'š¿Šä©$‰CsZŒuÆæu3m¯P—-w‡–á×Ôw‘ô …³Ç,\˜¶©:¢4ï‹.Ÿ]ëVµ¸“¸¢¨Å¿Ðzé~ÄÛZuÿClÕiJþØ€´Z/ ´+1¼òQ´B…Ø‘€Ï{¤ UÙöBåôÝß¼@aûvÖõ'é T QØ ²8@®½ìtåí¯ Ob1‡"h¿v^݉Ãô… \ÃÜûâä\¯¦¾Ã/šʳi‚qˆ“ëjú Qü–±Ïf]NáÿÕâÁDª?GÐR†Dõ2)/å%ü¸œ,Z2i´ÍºŸ·?mjIݶå]=àètÅ…Ï ÄÑð5p¾¦~bÅÞ}VbµbáÚ²Á¦«swY·Ú¨Axc [*›š¢¾Ma¨è~ƾ{c/~ òìðJÈ«0AÑ¡;kÚ)ÕÓn"ÎÔ£X­ñç—~'¿¸MŒ(–œ«áXdž4h¿º‚¯TæRÆýfS±'F¶ý¯ÄwKrr̆yZl^gpÀæÙº±Å¬Gg§ò•S {eÌž…à˜1Ý2tÊùCª•Ä™Ã#XÓîd~5¶&ãa8à±u×P¹Ý+¨HïE úòù”WWt› ®ÞbkD‡@W,•ˆu¼<²“N¬1gÒ™z-/b…7¯¿‰µŽŒ „08,³žŠ„œY‚ec.rñ¹±¹uرùÊC²dPi©¹s¿ß‚ ·')/ÊP2 ‹ª?†g(«ÌÄÂÁŽ“KÞ’}b6ÅHùs û6Gc „=z;ÉTîß’§m¼ªú@a÷;„F!~Ö¥e+|f&vÍ‘ê86(¼óNê£ÝckLºÌÖÛ¶eç|ž±'ذvοä>[F¬}s¼ hH&Œ‡«®©oÌn1Û&¨˜®e@p†åzP¦TòCûPZÕÜÉîeOðš;#øÎèEzf©-[ !CÕ¦€«P¥[ _0óîÑÄEFÓî—Ñ‚ú’_µSÕ[’€q Õ÷ë›[1:J"ÏLpb]‹ÆS¤·(ì€09u¾«åžN“¼]žÿÔŽ©-¡gÁ2Ë’ª ÛP;û!ÅÙn)7ü ƒî`nB äjÜ ¹¿ù`•®a«?ìi]C-Ë5sÝ_Ÿ*9³Â·_tTo%þZÐöêä/Ü¿j;hT>bžÐg,ciÿ‘þ¬o¥K,œ±MÝüyƒûñ‘[s ¶Ã)k_³- z|nD$C£dÁÃ>£ê5,õKÅ…¿Ý ÑIÒõÂ?¼«& ¥5¯0ˆr²“îp}\o¦oe>¿‘s— dp|%5—n!š|nrýÜóˆÖÄkjTb¦p2í’î$¯"o1}ÞPë%ú‹{ÉnÏ|¢á¾¦N¶ ‚R¿÷Imçö'V€Û•ô§¿Õ˜²×þLÉ FغóŒ=Éæ7cÈñémàYu3>‰S J ÿöïéPÂ4X÷êE‘VP *)³U•¢õ_[}ˆÇÉ+–®ÆM£LI¤B‹¨Š”¬ÇjÄÅ© Ï ¾×»£þyÍݯì³5ÓÇ<úác¡©ýk r_òÝ#BÀæ`vǼ÷åÒdh C{eDFäIJÊ,“$„«ÇS¨®}kú÷(ZËMfy!Ä„'&>4i†ŸSøKó"OºO¢¦è\«œÜBYrhrVo¬ÅÜsÝ‚íT&o?NL·£ËÑoçðvô¾˜ÚðALf]ÜbI$$•‚åâæý…‡ï°_® ¬+ér{o¦ã!@„¿eŠEƒ( »†–Ÿ™±¨(§ã\³¤ þ2­³ôäÖôÓ³aÒhìƒß«‡rX§…ôÁ>l½ºD•O €CÞ”€ V‹ ×L‹<¾þ\Zvôk©î–÷ÄÞJw‰À/=}rjùº°pÌNaÑ®1cEŽWAöƒMÅgS‚ Ú9 ngY²•7®cS›ö¹ØP’¼¸k„³ Ð’  ˜·¯Ù‡EâçZo 7j²¤œ’UÞ›ÚðÌp³?H\’9Rnßüߟ>&º`H÷jš{ŲZòœ/è| ïº¾Nëa­ˆ¥ yrœ5Z™þ]¯yXîâO³93gŠC3àëNZ±£_˜dœÔ”L‰î…Í‚O ¿4A„f8ÄÚßÊ£ØA½ÉN\ÒÆ? ^ª0}É5„ÔÁ…É^~ÍóÛµvz¼ãŒ÷èÞ\³Œï)òä˜Y?Ýéè¥g"(@›ÉñE4˜Oˆ £}ÕÜØQ¢”š|~O&Keœ[5–tÐŽÕ«âµ6;[ÏD¾GÊÉe4·]ñ#ã‡jwg DF™‹¡Ž‘˜Á);l½õß¼…/ŽlJ¶¬qÿ2ÜÜøUù`)t1Ž1Ë.楆œ®Œ¸ßiþn†i0¡%K9zŒw¢»Uóí„ñÈkAx߇Æfh¢=6Ônø¬´Êæ}«j±vúUsÿÌ­TÏ Ý.äÆcYÈ:?£r¿ßÀæ<ª™ ßúÌŒ÷.ÜÛ¾|h'myôòöF†=ú8b|ö…úScˆ‡ †Á(<ÌšniÿÔýh%L‹]–vøÈêÜ"3ÎþV!3.N²åäRç|<¶D<7‡Î­c“×&wÈV¥’‹xs`ì(>U€qÇÂ*É”ìÆ.¢s óB‡\)Z¼ãån+*\}@µ1õûe»ÎHêùL”<¦…?)–ÉS†.2Tš˜‘ólÜëáã—f¶Ý‘:Œ¬Ž4÷žX‡ÚV‚ârÂç΢…µÅÎ V;ò~5æq˵q‰°$pd´U9‘•‡%•¾þø#HI¢kL­ë±:ü^·³Áâ+ÚI¤½‹¼ŽX²18dí^½;CPsÏ]>ƒ]e9§°@'yuîøÈZ¦…e¾TrŸTÀINûܨ ŽQ*Œ¼É÷û² a³I±Y¸ùh/›áñæ–-˜ÄàJÿz Zà S\š*¤© hüñ‘ß:a=sàêaÈ]°Ï кК÷‚PÃryèÞwA ¡% ø-<Îæüî˜"¡gÃÖ“±]È8“·ñ:ÜvÓNIfQÞW–Œ±ï¢µ­“Pò÷µ 6Ù;ë¼øüù·jVøЉL÷£íu#ð+sAü.¿/ï/‹²vüÁì&} Ó~®’RÖkooÉô¼l­%Ê  ÿ6ë%ªV`ÁjEKµ-ÿÒ¯òã<ËßsMm‡ÐÉÀ}”@¤^}­=x„=DGHe\Aä®âDf‰Š½>óñ°˜>(~¨dv²«I昼Þå1‚á⣭ÇM†Ä‡ê\´=° °•hV´g¬KµU“zX}´‡RwÿlZ‘œ l-¯"i¼+£Ï$^¡Ÿ)Ì@î–”ˆm×ÐIR¹A…/êÈ-1ê²ná>5+$ÎîßÕ&RÂu‡^j±×ìͦξŒÎì s»hžÅ!u[fóÔ~äÈþ!EhNpî½|‘óÒUÑûXÇìh9¤Æ»EÑã¹óÂÙW>³Ã1Þ9NÓiÉíЩŽÖt-ö„´WB¦fˆ§æc¿c“•+˜õu/xœöZÅ, ;«éÐ%ÒWÑüö™¦Á‡ÃChW„t9÷Gy$. e§«øtV¨/µ=ô{›A®ÉÝ þ 6¹LEŠ-ÎÃmY*Q©ë"Žôð­®pB'“ÓßM‹&ûó2Ü (X‚d’ÒÐ$‹VLܤÜ3rWlß"E {p/qæþ@‹Ê;ʯµ«7¸Yu,"¬Ï_{·(â¡!z0mv%¯0U vÚç@ÕGŽŒ 2k­qg?x%1 õt!0TŒ§1·©_L,ó-©…ÃÃ\‰cëÄ~¾Ê‘y´w ¸Éî•ÞíhÌ]áÝÞ«Â_Ø×e!1'.-féi!Öº4$õ£P¯ß_ìÙUÏÑ&Îí'uÿy–4y½/Õ©/¦‰ÿËÓKé›Çé*-œ³¸‘Ò·ÍýúœµdÛ〉G˜§Æ!zf^çcµ¿+KRdÌ0X*ŸÿE=¦­`ãêv®+!TïKƒÎ½p€w6èD@Q¦·f%Å1Ñ}û³—Ÿ+ß~dE}jÑÓ°U†ªkƒ3¥8A ÷¦Rœ»ðÛŽµ‘Bò1û9¿8xC¤TúŠý&'ƒ–èÌðúŽò$Gê+wžÿ»,¤ƒ{Î €¦qµGã[–eÖˆÖ*é#¿·s›NEúûg/¦ÿ]+aˆ9“û|câ¥þO=ݯÕ2û'¼=\ˆÝ/h@ Õ@¾Üï\·ÉÍåxZbplrÈÀ¿ö(;·«ÁrYâÎçÓ)òZd# Bâó"Ÿ˜“´2¥2CRªŽ·á »äʇvÂv/hʉ §3–4#Îpx92HÞvò™€ÀÄ—»¿Ò%!°v·Þ9§³ÜÚŽPü¾L[®ýný¥8£Ædð1¥¸үɸm ¦Ð$'›û›|€É¦ÝÏg—w¸œ‚ôbä8ÝiY]q™/Ì$,½¦³ÜqÇÆ .ô¨½þ¯÷PñÚzÇ‘¥šzÉ3¦ºOé3˜ÐÙù²Ñ8´¨€ŒY(ˆ)÷míÃ5ó-#p`î:m6o Û›Ñe½f[!Õc8¶!þøÇÚ®þå)ü_åÓGʉ€F9IIW“fã:’(àO y=¢ëô­ÈâUGdfä?›æíc ‡ ·ŵfä rºœ‹1}P5¼F<¢òKsZÕ˜x(]#ÅÊ61o¥ÓðŸc®‘4»BüUÌ…ˆ1 lUW^O%LU¢OFi-¬‘9ªd ̆†À­g tmÿt×ÜäøäŸä&ðôÚÿ›q*“¼[§Þˆ1ã€üÆÖËÒ Öä iŸj{qoþ†[Ï>eV­1ænaUÁñw(# ¸^ú…e¦ÅaÕæoîA–ÃXc¾Ì ò«m^ª…ßìwö·I–afCB²)à~nîƒ%Ko•CKñ ö œ]_¦®{àÔßH©Á”µJ+¨§”hròçÆ1e`‰zÂNÛñ+Kë¾]lv!»Ñ°A$Íì¿Ã2ÊÃ3™*bÖ¡À·îÜi÷/´¿]µ(Ì ¢ÿf5Õø o²K-Ñ­‡?E¸ñÝxr§¢FZä,|¥Ã×F6`"ûEl’–1žT¸)Lõ¥â†EÁü1SE–ê7æ÷^Æbš‡ÿŠöi£D«8'óí"Ê™ð3ÒëœPÉ–\®ySÛE!ÂÙ žè°=©r?LBs|2Æ?)á w‡É9Ô†aÍ3…ŽEÑ%7½ˆ-É)ᘕWŠþéí œ28†$E1ÍtK¿öXÝŸH:ÂH¥D\L¡mì´5Xƒ¸# åb[ËK=çxÎ "ÚŒ•Šü '{s<ææ¶kÙ„dYá±Ï}Ðïý~ˆ ,ÓÌTy®g´­òm4ÈkbÇÒðxȇè•6•™Ë’”:x]ã™o’o-#ÿœjZ?|è˜;·¶¡ ›5!Ή´Ü÷k.:ï•Ö]Ÿù¾ïÖÎó^ÕÑ™”!"¾Ñ9D/äKðÉ¢GíËO}@Iç¢4Fx¨¯V5džF„,žˆ×}«ç&ÁÌŽ›rÿõ,¬Ï¨ÎÿdFÏ®4"ìófÁæÂËI›ú£ö@… ¢&ßJ>ªoô¸ ß6Qölß»¶T5Ï<Ò䨣\†ÃGú”¯–½‡A‹ïlˆåK4öúfæ×/ùVKCsËflÆ‹õ=vë'o¡fýµ¦µV¢&8ɤ>øü:„¶+kÐ0žÑà¨Äö‡{j:Á:¹ymG×gçϳh#1}0ñµ0öµ_KÈì·fW.Ž… +q³Ç÷ãëÐ,ö3ŽëqÔF™GâÂôi1Œ¼ú(¾é]•\/Cz‘c²MÍI<œúƒü<äEéZ9"Ò—Í—À‰rŽ'<åooÈJ>¶ ‚V¼½}û¬,Áe×_gÝΓ8#T‘δíw‚{rPÒSk#¦ì½WéÁJG9c÷~PÉ'áSú[v”ÂÁC¶eQ9†¥Îÿ SjšŸßJñ‡kaxŸÆó˜X°¬¾„Øn°À((‰êÂÃÙîN„ÚüDñ£ hCÞ&£% :9NScÏ6 Z¿âµù=Z–×Ôº2jªp9mÛàâ0&a‡¥kY$1žÆc}üŽÌ¤FšÈoÑ<7mS†FêW$z¹”¼ëmuZÛ÷>|×·ÃR-æOG¦<,Þ4¬;ÀvTè ,z’¢!ó|˜1‡N=±)rJÇ:Û… 7RI»…CjÑp1ãàÊE.¡ÚØމR•iESbÝ{3 Û’ñ"{Ǽsod«ìj¿§ ¨Ûr6Fo裵>°é=>ç2$çHWÍc Õ6hýrA,ˆ\Šå”ÑXÓxÀ˜ŽBd­´'ÿebÌ&CxSºmÎ&„6º˜·A)±òö(Ï@Kß‘‘‡Bºl”þ§øîݧ• Ã%ëÄó *‘C;Çä”_EbòKPøc ÒFÙ}h>OÒsb&5ˆAáw6KKÕûsªd$v½²9HòâÏûÏX–¨+:V™k¶¹Tƒí?sÖdú,êcïRBÿš< £ú9/bÌ«†Ì5çcì_é.x½ Ô„¦Þï{'¾Œ×šÜ?8&«s‚Py?h „{Ú§[”ݔ֥£ëÉÒy‘æor7¹ä-n™ìxª†A|*’üTÓ=^WˆÄJ©äy:©:¬û)8¦ }ª$Í{ãö‡HnÅÂ;ªª¬§ª¬½Ä°àš›Î÷jÏóºE|¹ Œj4oGÁ‡‚a‹õLï'ys>"zefšUˆ5~RÉtàd)R>àÏ»|NÝ_sªàG%kuÀÃ,Ûsþ¢¤Ú-†˜G¤×ÍÑôä`¬ÛBö§­e[©JUº‚#ë ¬é¸›`¢éºâŠ»—×Ü]Îßk±G¶¨ÿ|ÂÚß0Þ’ªDUþïuXRÆŃ ÿ*Ñ))¨q£}´C/›RcNÂn©@Q>“äÝF)(5N£‰õK).ºG*ä*¯vƒB?J›J¤·è7¾~׋0Ÿ¢®†ÖïÄ_ª1öÍ <„h”§üŽWÖP3Æà{Ý>ìâ@°è¬ŒÈ&~a¢#÷ùÿ{<§7¾ Aá<ï‘R³PUtަ:g;_—,'û'@À¬5´˜Ã€Å¦ÒWÝNéçK-é-´i§&w|ïP¦OTæ* 9J`ðÝ{ägøM<±’ … ê²¥KÄ%¥%¯8®®º˜uÇ6•i^!™©7éôlÕV) Ä@A‰â×]Ðá¤îî…ÈXsÅnTËø<íî«à[ÛId„:LN Ó2¯“‚}…pÀ÷ׄ#Èè»MÅÆ4§©É›¼4]t@ªõ²ƒKQùL¡=ÂËÓáÇwJãe¹|>Ľ-ÍiÏC‰2(IMÅy%L¾³‚0%|gøùC»©ùMl]8>À`è¡éVO"éÐ:¬Ä Q³wLÀ®øÜÏ Åä`G¥š|¾ë4|îö€°éûo)’)»Jø§ÜîZy=£ö𮺛.€,/9JV v3Pèš/a³–½1û5jÌ Œ¨‡Xjpód:«®…@‚Ãå0X ç—›Œ¾Àn§ »~qŠÛÈÈù,ÜæP ¢96ÕÅÛõéT)Gû÷‡a 4­ó‰«WÓÉ©o¿ôMgôhð×g SÕ Ó9·œ=„òÑh…Äß»w(åªcôS—"HËN; fùTè`߯Ô‹ì÷ÀÄ‘b‡²ºEŸK"̬ÚòV‹¹ÙKaõ4‡Ã ÃTôÖ¥Ø iÃôšù–M&Œ„hifx§U!0´ñÏ2ü¤ù.ÂO³näþÏÕ0tjs–+LÞKÝ¯Õ >w3dB-jÁCŽêµk]gbÖšG/O4Ø ûftLØ+]¢+*Aí.þ8©¦- äͳìG’„íÓÐÚZ2ÇÄùq7R…ЋdÕúcÔ 픀@ÌIi¤^cìKGŽ%ƒ7õÚå×”8¯¿ÜPÖ̳'Ôž´øî²Ô{V°o|¨,ƒAÿ9×L½Rd²ã«êè†6ü%‹ñ‚h~ëó×pƒû÷j™€·N½ÚugÖ#h,ÆCãXX«ÏÀFM}*0AÊwJŸnY’1¨,”¹/ÝùTì©[ïׯûgË帅Û2—þb‰–蟫³„H¤ƒ7ØñP¼Qál#r‰q`}àø-›B¼þÁ\(`) ñ|ô—@—Òð¼c“'òiÕö1³ E‘5üžóö=®l¯î0¥"š<ßmËBIG`óO7s§L ‡1õ×w 0ZžÃÅ÷ï :麓âËëc•NwÉêû@¤“Ñ+¦ìöx^¡4-D6WM0S*óÏ?όқtóÈL1)˜¶‡0‚EkÕrV66‹5;hó `].÷rJT¹œí”Ë÷yñ­²xâ9x,h‹jôñi Ï÷†@ÿÓ¬iiÃÝ 6ÐÞ~ûÿ{5¿LÑá»ÕWÄä¬3a´ÕˆÎ鑿¬m›ag%å-œù§ÓV©í–ýµh w-¹¤y9Ï¢ØÕ…C‡sß6õ‡嫦Ô¤åbiõùRŒ\«øZj³³XHu öoùÂ*ñµùí&†AɆ¡Ä¤c]hQ(gom$.YPª¯1ÿžñ6Òƒ”z™‡; –¼r&×µF¡ËHƒT«ÝñYË߀AŒw˜%çÝ<&¿|‚Öáãx$&¤Ü\Ÿ\IcÎtxÒ¸üŽX” °9"´Z7oTÏøõ|/£ÞïJó¸0ÄP5ôjÉ1€<–ÝØÏe-ÆŽìjM¨*ˆC©î‰*(–%ÕHm–=Àô £öhZ²Ï^@DD¶ enm¿† µL£«¥ê.OO¹áö@´œù7zYÀK1Ä«~Ö0µ|<áOav½ô»¸¤ÄnÙ RzÏŽ6\,Ù<Í«}䀚ÿµM ±+n{:ÿMŸŒöФÚË_¤Œ7¶¾Yl¤´l p(y`;ѹýÑò:=7·`‘\¥É®fTŽóþÁ-”‰SZEg‰Üï²GývDÝn®e<9²ÂÜäò3²{BÏZ„Ép{åûŒa›ú Å¿tݳ¿Þ©@ÅØ|Åè_Ÿª.ïÆ õÕ€Y ã'8 =p!D— #È\TâWJž¯ðsBÈòà6w£«}Ù&^è® `¯oÔÑöCœ¥iZ'—²ý™DM.´UÙ%Á i»B'b è2 $\ƒ2ý½š²¿ásË”Q¥üOTô§šÂ¾._&yh¼ìvoš‘r‹^„¦&σoê1l#Se6C³ÅµŸ}n¤úýÚ`ÐâæÀ,Ìýãd[1]¨YL¤iU?…ÍÐôÃ]_|S"ÀzÄfŸ¹F‹\ݵ!zKn{¬cñe“zî¿tõåìÆ¡lŠ¢>G—ÁÆLì’X]EU’½ŸbÅɼ ÷£O{Êu{Ñ1¡;zÏÉå58&?y¿åŸ¾ØjSxªý66™/‡}]”¿ìLgƒ—ƒù> ×ê3ÂEŠ„£ H8ò%žJÉ )GôåÚo|yéj¢°&ñ-çö$â'VC眦cÞOÁìÉxÈñ§*¦«ÅÆ œ@è;ý ‡^/ÉÉjíä§ ((êržÁ=È+Ô„Kïâó oyFÿÈ£÷«~ ÀAkk¡ZPÜ£5R‡Õb´ÄÇà¨)™b4Ñõö†£ÄwJ‘B£ÀpŽ1£Übˆ?†#‰:øù¤æ}<–—ÕVÒíÎì/>vðÝí…&ªËE<7Ø¥Øôâä÷7d½9Km¥Íä«[ô³Ý|Œç¿ÂDá[û\ŠêݽÅ6µT»^üh¨t-¢]a»²úã[5žÊI$6Bôá 5ò´´W‰£&YÉ 8*f&Ó¸‘È<ü{«öþƒj ´q+SÏOl.7³º¢Áëõoòjàš^í%ÿ¢( ÇrÊØwÖ%’Åù›¸Œè"CM e|·Mÿá¾ú´ér5¾€ <Š–„×®ÿ`Æü¾}è|3þkFð~bÖT½¼ŒòP®¡¦æ°üæ%w$;4>:¾ñYªt^F:ˬ÷#N+'I+ÚŽóÃðÀx‡7‡Š^muþ4ˆ_û'\0šÙ˨Á†À §eÑ Ï܉ýh(Ž0}ÈXÒemfZÝ4: Fú„ñSãÙ¬`rù·4Ò |W†ÝBP‡ºþ£ÂH ÕáÇ@<‰«;¥«þæ ð8ß䟭øó*9¢Ê‡ír,|„{=%þTÇC ëÛ÷®‚Ù&jÉæpÏ¥yºÍ ý¶ƒ3eÖÏðÎæe/Ì è*û±ÉpŸu|(ô6›à߯Û"§‘Ó#+¥PfÖÈýþÚágnHÒHéÕçïxP“ÇÖä3c)TŠÂJáª~v’sb64†¹b^ol^ÂRxY }‡l‡öRëzIx")~Ñ '«»âhþ‚ ZîlÛVUËØÀí„5Ͱ(3.ªÓ"Èd|:CYK~·ù±3ޤ%êc›æÉµÌ´r(•G¨¡Ÿìö°fÈ€#ÊLñ:s  0·¿Õ!˜¬y¸üJ{™… ÍÓg?QМû•ë‹Ä±ª/)¨^Á{Ãuê1Ê>çö¾ŒV‡g×8cÛê¥ñ4'£±€‡¬W]Ad5yû.ìã?sí{dä'x€kúª¿ï¸Þ4)J˜D0Äú'ÃfJFÝ ÕØdN”CÆ¢§Ìô ­ÆñsjßÎ/3²ªPe,l𤖵§|>·ýzŽv'Ü©»ÿUdEœt{꯻Vû¹h™ÆO߃ª×àÊ ðŽhú +K%©tÕfUÌ©U°û÷0†Á¥‡±5Ô »­!jºÖù0@ iÕ)çQ¬´e¹nŒFËÿæÅµ~PàÄ^ÃXØéBÞâȯÜK÷Ø[ôK«0W­§\ë•mgÇÀÊd¯'…]†v2 3ðOÉLHX<Òo|¹¶ØÀÂg_^ˆ˜¶‘ !¦¹(—i ™óqI|T>JΛµjײ-K\S—( ¹;U¼úí¨Ú0ŸnФÏ'30sR…]Kˆói11]O»ZèëªKãO›zÌ ÒíÔ²CÂ?/ "^9«Àï´á+‡¿E‹¼_€T§âÜ̹&WúýUa ^]Aó&‰„¯t)¶”mz jÜè ˜ƒˆ˜ëCìú Šv/>žàø¿Î5…ê…Er€ÁkóK=°¤ùzå£Ò‚`óH´y$Ì ¶èäâ1ÕÿVœò<Œ™'ôÁwÛÔe½|jp‘/OÔö·bòÄß Îƒ«½Š’cbX¨™jWúËù'O7M{÷Ïõœ´þùD¬,-”«™8æØ]HvLxs 'ÈtÆ‹Ÿ óN¼FÔlQá5T?>Ìs$—Fa­·sø€í~K$îH*¯«V$˜Iã&jå¢ñ R¦n’ξ¾*èÜíL>Ͼnñã(ËÃ:îâ ±Ëi‰L ýuíS,HºU9ƒ.^ðPãÝ2|ŽÜf` X´ü¢¿q®S•͘A `Òé[hÒƒ=ÅI~¿æJ-çÇôi›`ªNæ¼}t«PqJ|þyÿ‚ ;0f²;‰î^îfìKj¾ð²Àv‡°3Ts‹/åLÄøÿI§ªb3j%Ë™³þmκA´§e1Ìš› ·®„«Ó:r8©vÜÔ/Ï<@ýÑçÁ <€&Œ®ïÓ*kÆ×œxºÂ·°* mm,’å”—…Z”¢IéT©šúƒ,)8 ˜¥ŸžkˆTÛ‘~d¸eIô8§}ìä †‹•eàÚÖ._AàœArn5ËwÛñ;ܺÉñ É þ|ùñ¤ÎýÂöŒ£¡ÙwYQ‘¨½| U¦a‚_@îÝa™Áë¹x RvLõCÖÇ}áÄß}© )Þ;ì¥c±’1t.{ÍéPË-Ï Õ'Iµ‚? C‡õú°]`ï&9Q«[P¬Ûq?Rœ.êÈœTÜé[#ßwÍMq:¥ó‹èDµ¿Rà\0¦:n!íšY„(êvЦ'Ö’NF]‹×w¼»ÂoX¤ÛÁ&ë"jkþ"Ëé]Í"ñÐ{—&èh¤I#ËÇÄAé@H LmÇ ¹8Cm…·Ë+);€7<ÅõÃÂâG:Ái³€÷­qý‰n¥”I\¼¦kÃÇJp·]vˆ›NÆ ø>²4Ù6¦‹ŽÀÒW³çUê4Œð7@±Ä–šWlÐÒ@¨åü2‘ƒže½´å)k–m×°éÚxY¯;KKÙ00E¿€Dþ˜aÈgëºrZ,$,ïÐ…£©;\Üô•¡•7jda§»x.Ògæô¨KüBÀ 9@X(좊±nû«C›Î•' w„j™dÜê‚R¶Oð® w ø½ÅáiÄ#ª³ Ñd‚è`ÚÂqVONÜcáàrÜS¦ žSUSf껯N=ù×…Ü/Ú!æÔmÅ }ñÂØ-{ìˆô¼Í“Lë+R\yü>¿«0SÈrÓ*ƒèa¹¬Åõ»6ÙÖ aN]s×Y'ã/p5Ü÷¬dïˬˆâüsÿP9CáKHÎa¤Ûï ib,ø$2&]î  ò9»ã#®=‹HŒk+uå^y0ìô ¦µ'¡E1„V'+¡¼RøÞ û )UóÂËz1½Æ¡šõuOñ–~D×Еòü›évD9‹î—ÄðCøS¯ùêá'b5º‘‚CcñÁYƒ‹KìÆÑÛM߇z×Ä`¬¬‡ˆ yÎ{Dñ0¾Xa"2ÔÐÅD¸ñ¡ˆý÷ÔIÆ cBuóL]M-ÿ_" ; “·8V!×óÀ¦k¢ë›MÒåÁdÑìÇYD¸×yœý“|¿7(Zã³pžiùz+)szT2³tÁCíÔ‚²³éFw×np-öp0€àÿte$*9]ÆÀÂôø:u° ‹ÞŸU+Óë{ž¹¹Éä/^ª®DGúSŸr7 ˆ›Çé|=Úme5 -ºÄ2çE,¹d?Ú­¤ö%†±CL¡ª:J‚.Çá‚2~ÆrYÀHÞ¬>ƑÉ%s‰½U²Éñ³$ß6q‘2ÓïylÌÙ¶ãð¨t!œ>*UÌ\YZB¯9…A]¼ìBsE‘ég5 ~bÎþ:ôŽ D‘÷/Æ)õÇ\’„ƒ>¬ë¬VétÆwG´ PˆyïhíqJˆSŠà¥a€/¯| ; ô`;ëÚ(ÇTßJz­`·ôê_¡AØ A_a6½uÌRqõŠ9|)üÕ%Þ²Ùá^¶Õ ïüòÚ¥îÔ¿II'Jtù¡-y”ïÊMVßV¹Ð'öEBÌHqð•°w5œ¢´!k_éOá'úµ‰l¿ÛÃßC©» ev>võä@ùl!Úk¼ÒõÒò\¢!e:4È’&÷cd ã)w^–J`DϬ…€ï­ô™‹7|9— MbÔS†JÜÚËÃõ‚¹à4Ge7ðdúÛæ¸ÇC³9§Á©¢ï(8D4µíš‡õC±º±uÁFŸÒÔ<Ìc캽dí €![ýR¥©þéØáv^³Éqùz05…' $Ó¸‡7h×,ko¼ ®ÕжQGAx„Ô„Ã[tšP‰pÑ3ŠÚ¤o@ÛÆ=ÚEä+{Ãô?;r×O|ù ž˜)V÷iVöÃŽžufžP¨Ó˜³vš^,Yéídƚܖž`yç`tŽŸ2\Êé´êÂLá( U…@t¨nxÌmyy’:>P1:ãnil/]ÈÉ¢žŸ;ûqÛÌ]Ñ ªž‰¿2Ð >7/¹·±rtwªþU d’Œ9¨\˜:U’/‡»–Ò×…H6à•Ïs³F6$#ä…dŸö½ ˆÌþÿ^BÒ€ó¥I%š¡§'ïd–ë+®HÀ›¶ârk‰Ú?uú§Ùj‘A´-,[Å!ï nîO]Ô=ÑKÖ8e»JnÑ!C\㌺ì}™Õ RTáÇ™9©•…;º&éŽuèq)øn>M1PŒlyÄáâ_0øÑ1½<,1o¥¢µZ½»a~¨`Œ`©zòë{€¡‚)¦ó·b•r:ô4¯P†Gî9½ Èsþ ´’q.ÜkîØy'þêü’ý² ¥d‘©Ú°² [½\ø­õêX‚Û¶5-¢ÜŒÓàÉ]©Àò×Mf=P&QïȤIœAµÿóܤDÖåîzcK®ÔŠ‹¯Bm};*m&źÓ] Ã,‡‡¸þ×úöòŠí|ÑǽQ·k3œ7B†P ]]·ikÑàÆ£ï¸¬-aQçâ$éò7rÁ9ÞçÉ1‡Ö›Æ÷ñ¦aÇùí!’óü¶oèÿGEb5Aæ•h^2¹JVúš·ç²†S,ÃÔZjØ­îEò†Èm ÖKÚ›Cy/¡Î>dê˜Þê™õDå˜ôÔç€À6Gs´U‰‰ <’/r,×ù’iÒò†šxµvÆõ¦R´nªš<ݾ`™bÁ³Ž·üpä£Ì:ï¦]ìº(pµ[PXt`ãbÚ'ÇdN¥w¬Þ´ë Ý-xE óï¥ä1bSî¯ûýi“áþæùt±„÷èV]ÄpŠTºøïk_‡~ºö±Uã$˜Ž"Ò§h¸è~:ªÓN*Ø«,nÀÜSlØM M¡V<šž¼&ñÿÊ ýÏóáµSâz’8£Œ¯hZµkT¬¬é5|Ù¿£@Öcä@?¯ôîcŠª„dœÉÇÀÒW’3ÄC’™Olé@ Å¸ËË´›yÈÎEfz;ÕµÒHiø€òiö”€æ>Ÿ«ëq ?ÑðŠ€PNN$Õ/úçA{›,Ýò³CvtUE³ƒB3h6hägE°o[i†ÄÉhc`Gö ë¹¾ya»,7¿]ÑûXéóRk5ýŽ|2³­¹Œ¢èå¿…ÖZ‰É£+â§F´ÝÉÛoÊE1)ü´–ëŒà=gd=ˆ“NæsAzÕdÚöƒe*vË@¯¬yX~bðš’¦A3…%»¯HQœ®OÞ.ý´Apœí¦æ2h¨ê]dÅh5ê”ó+ÙG`¬VQ¿¤Hj5>Õ™iò´³é|m¶£­(.º¥—9㣼°Gq5úï•zŒ:²ܾ•`® ¶Ÿ¤è1Ý}ëáäxKùËôF§ùÏïÖJFxU­NbºU6Múú`U¨C¸9–—ݦ˜ç|¢FA¯-Ñ3~Ÿ^¿ÿ¼Ýx$€'µÅЉÜ"Œ ƂܢÏÒh nÌt²Êƒ,× Nö˜]zžÍ"öã²Uâ 8¸ÝìßĨͭO•nøëRr†|å׿¯d`„äãóïZ´& endstream endobj 428 0 obj << /Length1 725 /Length2 37882 /Length3 0 /Length 38366 /Filter /FlateDecode >> stream xÚl»spoÍÖ-';ܱ“_lÛ¶mÛ¶mÛ¶­Û¶mìØùžsÎ=ï­÷ÖWëŸÙsήsô¨Z³»Ö"!µ³uVö°7a a ¥ç(‰*+3ÐÓÓèi™ IH„M œ-ìl… œM8j&Æ%{#€‘žžš dgïáhafî 7¢ø· jm`lacáPµ³¶sµ02p»ººò»:¹Ð:ºðÒþ3IÉÄàln0µ°6ÉÉkHÈŠÈÅdUb&¶&ŽÖyCk #€´…‘‰­“ ÀÔÎ`ýŸÀÈÎÖØâ_˜œhÿ ÀÖÕÄÑù`¦Žv6eQ9Ye€ˆ²ÀÀÖ -þÏt[g'βMŒœÿU5Àù,kƒÿ± ÿÇúŸ¨£û,Zh€±…‘3ÀÐÄÌšî_¼IØšÚXÿã6v±ÿoè@NÿàÿÃ!ÀØÄôŸlkkY¹½‹³‰#@ÆÎØÄÑð/îÝ-þñü7ÕÀÆÂÚãÿ7ùÿdH8üC†€­Ù?ôÑÿÇeá$jánb,oáüßÎŽ.&ÿq«™ügodLŒ-\lþ3ÝäNþÙUc;[kÿ³â?¥ü{=:E9)IEªÿÁ¿Ã"¶Fvƶf%çø4p4þÇ¿ÃòÿQбüWQ†ÿ;–1pv´phÑÓþK"ôÿzþkéüß,AA;w/Fzv +=€‰ÀÎÄîó¿à¹8:šØ:ÿ›ôjùïøßb21q71‚^_±3â ¶Lk ­ð)š«§4k‹—mê[ì† ZK¶.mѶ«ñÌL‰´%ÜCØ–1N\æÜ‡Ÿv í3SÓÏ;‹÷ùù^Õ¥~3*•ös“a£: 8ïºËÌ>®`O~f‰&–›íÿ{©¿CÀv²™c¹ÇÅFü²ÚUì5$0à÷³ûöáåÆ^¾M¦Æ©t ìÈ 9ž’sM‚Ö &[sm8”ZbÕ/´.lVsb¢)†´ q €Ÿ Þ›×K9bàñÓÒ= &BÁPg§’L®;÷k[¯~€ž ¾Õ2J?WÔèÅü®„òÏÇç¡‚4Âö!ž>Ö2©i éú&»UÞ•5¦wÞ©°yßHaHË]Áj ×1wf¢Ínç\°YPeÚdè+˜=öŸ· FÉ—¾œ>êå®\Óý< Æ~<™ñ’vl>‚ÈÆÎ©eLÔŽf_Þ›¦ïžVz æIeDvnäâ]M5R*Ñ<áXGEÓL Â,ÿ©Û;ó%¦„AÛ²} ·ÄÓÓ˜Q̦ ðŽ6VæböÖ!ÝW²È#¬÷òyÖEêHÇNî¯ÆæÑ@­çI’-db­y×ôcÌÖÇ¡½~¥4$p ¾ig0j; ßˆ1”ZÖPëœúU~ào²(\ö‘þ e¸2 |Þ1žˆ¢å²̥U.Qæu•lB´ˆüÛ¸k¬‹˜Â.Þ!wlŒ·*ý™R(ñt‡•ì½óѪ¥3± ]P¬3e²Ë.hÚ™‡¿´¤gÕfâ}_üÃä€w:€rÀ+ï´„6ÔÚ-Žkycâ‰(g%Á‘FŠêÜWãV–jÍšÍíR° ŠLf«¡úc˪©j³ØAž´æÏ‚—vdk¨È’q)g •âôQ(˜¨|â'6zY‡=q½³Ý›NCÖŸÁ3OËþ™óRÞk;ÄD‘ØZ9û¡oH¼W,ÂýÒ£J$¶€/¹nT¶—K0i¸E&-ÿMö]ûÁg¡íb?Äê¸Ðƒ÷Ôäò™>€Eù,Ô’NÊ^íÞ†[[ÕÐg»_3kQ†w&žùÜõñŽ ‚ˈÖuÑÔNÈ2ÅÎ}|Ê¥jþÜÕÎ9%’ψ‡…“!Ãb¨h1ž½te¤÷¾gÖþ‰ÜñVGò¼Z+¨ð*„6¦) †ßY -ε£jŸáå8YTƒïJàª7õ¼óÇkª·"æôŽ9Ùz§?P¤ ªY0=òx]кëý=^›SI:lå—.å¯.LcŸG¯xó¿=ÄÉÎŒ"ËÕ°æ»üpŸø±«.K² ¼|öPÕS|­éš€Ihp¯žŠ›*ùzô²qQ¨ÅWê½=ijšo¼‚Ç»XïË)»­ØA°}¯¦`43XwøÊõ£’¤:‚¡–¦a”D¤©Ÿ§²œÏ…t`Ë ¨¤w©Væ½ë t’Ð31AÕO=%Gã¾9ˆ´èî[\Ðåö%µ å ™ÍÍõû¿ônØß ³1 !Px²)ckô®I…†~²©ð±Öãh#Vøp—í‰ZÉRÖÛ¿¥s閨´åÈi˜Ê¯gÊÊd°Í¬è0ÑÜÇÏñRºJ‡Mý"æÏ(Q¿ó°ÂTÚl3¾—Ï;¼S{¶ÊSMœ•üðbGHi‚F@q‡ à²88•>|æ¡6¯ücZý:wæZ!ö8Û»‚¶RħÁßn?­:Á¨¤ð-­MÁëÁ¶Çɘ²rþš‚È’=PbÓ%.BÛ'ÓÁªû‘éþš|ߌ”v÷Žhµ½^8u¸ôd·û‹©®«•H:íÁ$·!ehG@v>žPÿ Ò/Êò»^‘Ó ŽU‰T{ËÌ„’sñ†•ÔšbdÍØÅÈŸü&H¼Pæáæjwõz¬AŠÂ¢âÑ@ 8ÑÅ$ŒÍQ•×ÌüÁ°óê>`á©luÑUÐózapôW™uhs?IëÁãÍþ•6i0͹bæ(Ç·;Ü °x†úÉݹ‡ÄbÈÐ+í×«ÂÆ }÷AM»˜ÓXd˜½˜Š¬„Bµé’e\ôõáX? ÔÅsÒB”í{àп8©ƒ=ZäO¢çm)[Zí“B¨wƒÞ`·jÆ'¡É,4DÛ xO®Þôº–i§)Ë ~¾Q¨˜ö¾'Ù¾ ¡8Åhb烶Qåñ¸DáðÈKîe¯èa/É6š¹À$ÛÛÐÓ6íñxKM̽àù…˜& º9>˜q:@¸Ê“™c¹\‘¥DßÈßVú04³oì«L€UW ràÆw3&¡úï 8o£ËMJ T-EQú|JŽûþeËúëVN}àdõÔ¢…5ò`ÒžFšV†ä .<ÄÛÛ ¿ ¡îÅ%Ú:¥ÜÈÈJºö+F;ž¤.Xµ€ºÎ-”¯>·Ów­®Å\w€>†(Þ‚[Yvç›ñ’K»23º!ƒ‚9*§ÄVÚàš[hK-Á 7Öù„x²€öΫ·1\ƒï¨ÝLÕ¶½B§Ï [üõÄu¡ëáñ[PVêÝJïE@Ýígäø‰ã UÍ‘H5üäd™Ï½Q×f ËTÉ€ù|‡(±}Qàöe¢^g Õ´…¿‰¦+3JÚá´D3N>5ôë’Iä1àk)GÊ6‚"m‡ V€}æ©âæL?ÔíŸä^r2§EÈ3ÿÁ@uéyg‰ÊÄšhgÎDy{Píîñ‹‹ÈT")JK6Ú£'ŸEšà&Á‚çñ!Hüö…ü§®y°‡õv ùyw¢­k¶»úW¹öSzÏŽ¸ÿšþMýß7ùšÅueä(`Ë])“Òù›ÙÚñ”×`À¢OªI÷fïHX( ¢j4ú}*¬M¦–½³HGTv@/ªÃf¼¼6í¨?”í!CòÔÏ­¶GþÉmt“k¿kl,tàiråEmØhV=Cx¸^ÁK¬*r|£ŒªKÏðËk«ªçÏ8à¦Á(ø‰™=’n¢;;nRÂÒ!(ëîë0¸­çús^Ôr¬ù\:mL©¶†Ïâîç›vG˜¦ oƒSÚñÙ”¨€;Q-Âw,®††Â:°MæŠ$kè¼¾cáº(Ý0ùî–"Â<͉üŽÕ;°7­ºBáLêu[tg lʜșNÑ•€ƒª€ãq.Ð9 w¡^E Î]<»ªÓ¬× éTœ<ÙÓ×½ºç Vi⃲µ‰¡ CÕ¶öU€8ioºmé3¿GÈÒ8§ß‚@Ñ)™jÚä>SÈ(ÿü呯-Úgˆ’Á%H¹c·îöˆ-òË^"¿P;¶ž½šÐíª®Ž&U„k”´yV¦£3˜£©E6°A0¯„§ú6³o[u÷u‰Ip•ÉÅÔœô÷6@‹Öôq~²ˆÙ[¸~zF$è„üÊ]¼ØD¡g!ýÙAF põœY±£ Èw-4 Dd0€¦¿âÃvŽƒ1Øô‘à<­efýÝ‘Ò&|yƒà)ÇÑ6ËU|J±~–_¢X++hÕ5 Ê# a¯S¦âM(>Ì©,Ó±\JîÛúÝ+°³ËÀ²J>l.‹ ±0ôß½J.¯WíÓ kC(Z&55ª^WüÄ…Û Ÿ ²Ã•šh³Êlø5Mhë›±0?½¿ˆnU‚¦vEøŠûÉ"jpHé0Né_÷g)ªÊ¹$ô­0°<0Ý—§d²ˆæáZl`ا1NDÅ€JáþÆ>uí€j3ëãÆ×Cº)×/Ö˜«M7øßW¶ Ms2vžƒ÷)Õû”¦O©»aÐôN{óNBÀáY†FN#{»g¸Á,f‚ƒ8ñ«£TG z9µÍ¸Gñ:]Òàù纺fÙ;} bŽëH‘©b¾0ä Ñps ’Üñ€ô±»H1š7ªø´DŸùI'˜šàŒÝ áäOÝ$IqA`‘Iûg¾j‡-hç;‹[«LuWaWê]¼Ôö^ä‹Eœ3sÇHdŒ5²PŠ?d™,RÔÛ¾žÂhDg➺I¾ëÏ Ýâbü±mi*µ)hÑ–GÄü£—8ºL<ðרŸƒólNK(æ®aJxòí#]g…uD,]£‹#¿âa-%6ýÄWásí²ˆ#èdÅŸqT²hcL?à…wö ßú o¥Šm4ñjà#×1•·^у@K¹=v¤gØõuºZ·Í¶½ÊÀ5MÖkÚŸH2fGã¾UÈl™ÄÌj¢Ôâ@+ŒU÷|–O ?Ñ|΃÷ö‰~¹Ýøør ÈVÍýxú@v”ô,êÜÐÿÉþ ݆åáq…I¾“õM7à¡ßL=ßNþìå¼ÉØß¥¸&¬ºe'¬Zï_ŠA= Y­³ÒËê….I02â€\¬ jžš'í;`ÕjÒX2Æäì5ŠÖg1ïŠLÁQ~³¢l‹ .Ã]™’C«9 ñåi™qMè3=@ÚSthüÀ©ïtXŸà—šÏàk6ºæöÈí€=ûqì0Klsx‰½.ê»>eÚOMfGGÝ—ÛïÀ£D8á†g±ê…Ï) Yñ!;>»BÇv?ùw`ž»Zªïm±á?‘/ó†…tR"w°&‡4V¸Å6ÀÏ±ÒøLš|¸u.[V¶æž…äÁò.WþŽ…{CXv14Ÿî-w¶™…lCq–A꡼Dì/ ÛËF ”É*—ß÷aÊ{Ÿg¨~¾U£%»´˜ê¶ÀÍâ4@ì’w½Òëœß@@›tpÜ1Ž-èb÷Í;>)VïôÃsVMôÅ}¹õ\eG§š–¾s)J¤Ý¡A-GüœØr®ó0ÈÑ¿–¥è'¨»vÀ”Ïuß/ôžímNãƒÁH÷ÌÉjsBÙR‘ïFTã¾3´ ñËölDa¸’ÂÝ)锎!‡œ\Ìó~ѰŒ! 0*š[Ùnÿ(ºÑpAsþbMjÎðÍüî2÷œÈ/™o»Òêf‚1ÛƒnÒzõ¨{P>àõ¹ÔŽ",ö]»WÛN£€¬8­7j©p¿!Mr¶ÆÙ’•ºvhFmúÅ8#ð 4rËHºv€‚Äîþ+}-Ë–cÕQü7þg|Ül—¡3|{$;h–•¶€ð¼>är‹ý°wS߯pdp-’ì‰;=ŠÚŽø$²Õ™œæz ކ²Ç¾å=GÞ ˆDæJ‡’›²’Scuo\·‰Oõèž·ÀÏ£tð ×Ç u/¸…­Oño!ÚGEÙ¥£RqÅ4ïwc6âu]áh~ЂH¾¬„+ÿ" m]i´``Ÿ”¿SµÞ‡yÆmv1¸zÞÕƒ@O0œv¶þïãmgÿ4Âãñ¸5ùìíÐÐ¥q\°·bl¦ª‚9)È—øþß>g „ÞG!4Ýp¥aå[p!ÔÖ‰ù¸Îïˆ~ŠœdgÈM”ëO=¥¯×K ÚŒÛ’Êݵ«.ÎD6ƒÖ¹º¸”ˆ7­¡Éçáê2ñ(ÚR’ús |¿þN´ -­H{¿ ìÚ9ÿ•j”ÞTsØ×eÓC!ÒœÈ8ÖŠ¿(~ÚhíVÌ¡Ž±ß1Xwàb#K³*ðø&rXŸþdd––W g­ÄÓàØ]oôµ ÞàŸcj4˜?úŒ#;(¿?4nL †vÜ2†‰X¦("^x¨xœ¾xk&ò¤?:Hõ•Òƒ ÚH‡o.!Ê® òîY Ö©ãÅ/‹aøF¹¤õ–M×q<ú ć¾&O³%¿AõÇvå1Ý"’Dc¾ðü¨âbX•e’å=¶ÚòŽ÷lôÜžfÎÞÒ—NüM×»!ã]Þ$éd¸ ëY¡µôÓ¸ŒÍ™ÖŸCl· X agÀO%%ME7‚Àœ®»ˆã6ýTŒÒ¯c6ç·læ_ùJàäÐÐ*ãåø£ù)6[!g± tÉŠ›¢c²]ZÓ7sÍÄû–§¼‡pJìXaÅtpÁœÀ~° ÕPÞ¼œrïùêÈL—…_‡©ð«=[™ëSÇ|b¤-–˜ÜËÎðÏÃo ã ƒ'<‹×eʘ9ŽiÕêÄ—Ò°­U•MОeN½¾)ï~?‚ßÀT}_H—QŠ¢ú0Lëøð¢«}Uq§½o^»ÄB¤j“µ¢Œ$©ˆx ŸÔ:þè˜A-±|§Š3)]Œ¡ er$[1`´("ˆ“4‰ÙÇÛ˜¨Ø¤‚üÕÜò!¢xäÊb°ÑtkhŸŠê#ô…Úd¶Eû&Ñäz½¹ò7†^=æ°iÆ-jF ¡úþR‰fŸßQŸÂ¢› -‰xѳ¿ú‘v5kj¢þ2ó€/æOn…BÁ”MÛ ºGÒaÉÏúBÒu`q5u¥»Úín–1ãñé˶Vx4l÷f†]7ºˆÑ £‡p’$1±h£eN¿g%$ùñ Þ­A#³;Ó]¢B7‚–§âºCüñç5g±––b¼Ù™ºŠ6¢È¹S „a;%%¾@Nù§вġ4'¨ûá Åó\Ä ƒ$ž#Ö?›Ò=D¸EÉe1rTëm^“å£KUí'º–•ÞÙ n{+{F®‰³*SÓ„¼77¦ô¥¾öú*LWL±ïç– ®©…\tƒ'U¡>I×ñh€ýnœ ÅÀ†H´¹H‰·Î„ÑÕ´M誴ëÂG(M¹ÀjÈ ¼au8u•/Øl‚ÞvŽé¥uxš …â›F:Œ®Ô'7ȵ‡`“¸¿"“{O¦­Sð…OU3Í3°3¨`êûeóÖ¹ÄyªP>d2²ÊÙga즽Ã7ŸK$Årg? ¡$‰ ­yÔgl\ÈæeW}ÓtJË28;Ký?‚)×A &®íŠ4šî]3°jz¦™á«0i–\§‡mØ<,áh÷øuúò…V⯬!nÌžz Ømá}B¹ñ[¸HÖ˜WßePÑÒwú—‹% ¥Ö2<«çÇð¾(Ö”„Jƒò `{/l´ÁxË„3â ŽÃNväú 4Ämv‹¯J¦‚Yè6Ç‹â×&x¼wÎÆy´®RÙ!Ï*ÅÍú—I; -Ð[IIŸ $YjŸ•†âÑQÖJäR‚+ >"ãÜ.Ubé˜ØZ Åj×ië›yû|¿Ÿgá»úx\Ô×Ã@m:D>=j%1{ŒupÆ, lÀ‹:±Ö~Ê1|”æ:gG¨•Œ³æî gaè Õ`ZöÎP/%˜•Eë)Ò±raÀ~„)aÂ=͵þü°=²ñx/ "›‡7毋5¯»XQÜ9`$D׃ËMãu—xÛÕ›$¾X÷»({K!èM|PHÉÕ8¯VczÚ{úÐæüÝÏ“»‹-íǘëZ‘Ë•§÷¨ÚÎ}Þníª{h±ÁQ—v²‹g¥µ) Y#.WXBk,íʵ1`íö+¡wc˜P2ÁïëŠÏn{«M¦ >" òÐ!YXn{0Ï÷IbT!î;#ö-E$ˆg¦¦¼$ÞoP™F;øÞ-#aí¡äŒÜR°î ÿdð`p½Cq }®îQ y±Áþ+êZð°Mn‡-8¤y!hà9Útƒ`: ’á-”:ÞNs|<¶ö8ý­e“%Ø4ù[ë ä©!´&‰_Zƒ—Ì⤌ńÓmJÔ;¼õïLÏU'ÅÛYÕÊzÈi¢aŸoY„ìü‰˜jÖ _ÊU±Ü¾ÝÁÐø±w“ªŸÖ¿|pzßMKHÞ¶ÃJi„¬H..¯z8&"§A`mi2¼Æ˜%‘ìæääÌ6ÄËgáye«zÓÄ/YÈFÂè8â³N7åDN\“6,kcÈ)99W­jc[`ײ0al9ëhH w¥Ç‹¹È)sZë9î)ÚC½é¸^m±^ËÁñ ¢Ô.;—.ßP3ÙÒÅ_el0§3žøãœ),ƒEIÏ>³AmÀëèAô ¢r­”¡zà“Ø×œØ¡ºŸAt’Q¬6F¶õ[ðÂ";PjG"ruìV©@…Dki¨>ˆ¯Å(ЇUfº¶OÃÂî#T¡¯»ÒÅy=áø8Y5c‰otm2*“®¹-‹]×M»áä´F_íUé…DÔ½GÏ Öy°³uºfb¡ûŸñF`hõšG㈊ۖÊe’oB«c ûº?ý4=Ô_2¿Q <§þwsJžáÎ âñCYÐ6¦eym¦kñeÿ·rÚï“z·à·· ôgÂWÜIGÒô!2ëk—ú>òÂåg2ì»*µOûƒôC^×k?.|¤»÷È4Pj‘,_L|}'dbô™{Ç;}†‘exAF“Ç»-¥ãw*^¯ >ÌåÕ…¬ÄcGŽ„L•¿Nù´è¸`K¼á¢íœu芮Â1òÑ/!°Öì Ù–Ï”² Ì ‚—eã» Þ0ÁnUí†ït>Qsí›%(A!;÷`Õ|”Ý@ß2-¢ ZQux°Ö(uÓ:1Ü4n!LÚ@˜¥ßgBÌ…ìuí!V÷Éò1e‰¥˜:Œ.~¬îÔX΋þ.``n²0˜¯{êv°ÿ»±ÔF«úß½C hö‹¢°a¯ÖÄÌÊÔÓè0æ¥C¥Bœ>ß|ë×÷£‡’ìLî ÇezÆ%S4„¿<$ˆQï*¤jÈwVô¼‡ËŠŒÑ„BÍe|…Îñø³ or`j+©Oz›G¼P!ýW5÷ùÀ•T x^fDКº"‡Ò{j‡ZZ*uô $ëò4¸2?ýóË1§Î¥ okf8®ÑólÖæÄ˜Úm<Ç]6œ„èoȶÅ5 1wñòûöÅ´1ѽCÜß”'" &h" ãD÷ÓrLïY4ýoSÑUT` vgz%¶RžýPÍwïä`{Ýuc#ÎìðVXFB 6÷ü¾jõ(*t¬Ž|tUlÕd:W„¥›Ø¹p <Xçu#.År#TûkÆÓ)äM—™%BK³ÞèŽ0碾*9T”s5ùp’µòž˜æ ´zÃQ~±ýöƒ*?“I>ŒëQוðfJö­?\rá;‡#\ Þ»%5½ÌPZ›õغêZþ wBõŸ­ôF°]_6Q`P”VJNiÉÄwøjVêãRVW ¡ ’”=V­n,+ëîn¹Ÿ§H—0™l >™h°ƒ'qâMPšà¤´Cé«<‚7óæïð“Ë7˜3òÙ3ö2ß¹Aˆ(}„´~ˆúÌЛœ¾uP}Yû‡'ÝKP™ªýY?d>W†rèšeõ„t³c*c¼ÃÙÂÞ,»KüÂvÀAæ ¥M5ª.;ZÖQ Ë Wp ®Æ¬mºÃM}‡¤{ TѤ+àß·ð]eO—ç²ó²lØíó\LÑÉ£·L“÷t«ÂlÍä€#ø^Ñ+Ì Ñ•Ò (Ó9¶°d(Å=4j Á¨-K¥‰&¸“T>VK]-æspÅ]Û“j~ßöÆ.ÝÍ‹Oån·¦‘'´³¡Æ¼,}*W‹{=åÂY{ZMcSÉ!Ú]¡,pCµÜò>á:=—× ä=Xôîaº·¨Œí Åü¸æø°–1rUØVOü.2—ËœåÍ©kª˜A”ñž^É[údnYÊÉT}4-8g4(J/‚m\9Ï ´‚Ä9ŒX[(-Lvaüob§/ÙCãÆ"ÛS–è\ê}<”«–U-M`åzG8œO4 y•C3HCÄþ"+ì¿¡À!ðq»©ìä"ÞÓ °Ë¨ž:¿¤ŽÙúº þllÀ1”x@Ñ“ŸF–,÷1Q >|2Ù¸/ð*ÿ¤èϲÐϳ|ù°%‚“sŸ#“xN.%úc£D‚D7•]ØdV Ð)úX¨–i7Å)€ Ó«©Â€÷°ÏwÏB5íн–D‹Ì¿xÈ ö-…2³§×Q<‘ñ> BlÌM-¡Ÿ¹¬+r7Bïž^'Ęðæµ´ÃJŠQùúËeÏÅ<¾WÍR3¯gã´ŸŽj,T4W]„Í.ÃY4ÝòÎÀU£V”ðn!5„BŠá$Ñ!Íó¸Ñzc{Øš¢y"%-ä¦#D¥Ëlp™:!¤£n½—Ò¤©Ä-Çž éÍ’T›½qQçu(.˜N>eõë ÷zýx~c¨°O':tŸ"‡Þ°ZšH“~áM¿Ð{ 8Ù–ý¢Š}e‰÷äW Wî@65h¬¡ÝÊåK,›è¼²*ÕÛ[ ¯‘[Cìg¡õ°ÌW¨ÈnåKBcÝÒù÷j8Z³ž±……‘ËÀaºÁ“ìK±wÙS ðL„‰™Ø¹«m‡¤ç§†²Ò6U»ž†UÿR5¸ï,š²Ô¨²3ÐàE„±AźÏïQMf£ùU1 L§ðm(ë×"¤|Á á5’kÃÝ2ñümWUö°Ã4¼¸j£¹|<­ú­ë-;Öºg²FݳÙÚù‡Ý°v&°æh4ˉ'õMÓMÔÎl úO)¼õg÷~þh¸ªé+*»£”ÂT÷ƒ …˜QľÜu©)3ƧSÊ™Ò_ªo‚Ûš´£6˜Œo[Ô)>í=ø|%ý?((÷eÈž0óË#b¿ö/ ²RY8¬eרÆÊ`¶ó2^B}¦UÍ”­ÂóÏ<õî\Ý“Åd»0)"êÈ>XÄü½ /WÌçr Ú’BïJ½Á0:í‘ð£¤6¾ÖÕ—n'Ï4‚äy~‡OWÐ÷´£óë»Qâ ]. çÐT¢ó ¾qj‡tød¿¢·¼ÃQ…’©&‹™C&ÒZ›¡þˆ…Ÿ4Jo טÁ/œò¿G„OL§Æ…;­hiQ$å´ðšàzUÛØ»ÐòDCHv>ÎSoÕD Ó+1¿W«µ SZ´ ´œqØrZþÆÃgz›ÇJ6\¯ãÎè4g86vOÃ÷5… 3 M.Ç¡Í7y;ŒmÃ¥Q£–̹ 5: 8{»ì3¬¡2l¹Z?+“i]ÃR"#ƒïÆá™o3PÍÉ(¸îV}’ æûª|¨3rÌ€×TŒda:›-Ð.´üáT­ie=HøðŠ#LÊ5:„ä-”¾=zÔ×û%yÔÔ Mÿéêœvœ„0p¹ÜýMÛàIiçµÉwra&ží!â ŸŽ„ô«SØü6jöÛ:¤6¹6”¯O>È+bUÎÝqÜ•ÝZPES诡œzw%fwì"غ>N˜ !T ì¡ ÈŽî¿=’r€…Ÿ´ÿ7â­èö[{HSv¯à¶ÓB0ælõ ø½8\á</?Ö[1P7XU|•µ8ÿ0ª àÐÐd&8ž4…©¤ ®ìwyLÐ~’ˆdùFtQÉowR÷"8{ϯÖ*:ÑÖ®d9IIoQ…G,¦’£p§ÙŒ¼¥4¦æ•Œ8¯yé¼<=B[hŸ ¿/ŽA 5c¿;¾ù'/EÍ‚¿ù»4xæW£*¤³çË ±L|iB&"àÄZ£y¯~äOV©Ùþìïžp4¸!{FZ0K+ngŸÅ„Òú‡j(ê4»[ˆWfô:i‘ó ñ0 ¨’±|ÅÌpf 7‘¿ ÉP‘@Iß¾b#YÜ ú9‚ã»õý“ÝU9¿%Ĥö Æê]‡„49ÎÇq™û=&c:<³(‚ÓÑkäw”Ó[1zqÊ>a áœÜÚ¯8ÞÝjÚ¸Pq@;9¸¦”» à¬#O·þJúœ µCAiÖ"Û?wŒ#¦®úbçÖqx`"±º!*Ñë5€}éå\¸{â´ÐÃv›ï 3÷ ¤75Í›\7ýé¤ç!èÆb㳿9âäî+B#eãwä-ˆ ÊS){ª-¢ t‘ð¥¯æ£RP"¼Dk¶+í¨ù}׈Ú¾/§@Î.n\ÒÛ|Ísuæ·ŒdÁ€úÄ`¡-!_ÔÓ üJ l¶´:£í/Rªž™05¡ÅŸÔ3€[‰ÎS¢%¯=»·&DNáÒ•wΉˆÄ¯I¥¥ô÷§s¤Ü©òëÝ9Â÷ωè×DÍÔ“Ÿ]Y¢#»ºUXXÜÒ¿9Ò¢›ÓÏò.Ïë*ð³â’Y¨´Äk² §°oå{õÌ›Ý%¨ÞÕ§]§ºÂÅX$JzPfüjAµmƒ…Vº«òÊ٠쉖j_½;·v4tݲ‚Hi‹–íe›"7¬pìÖ†ë²:ˆ¿2!6YÒº@x÷èÑñû}!UW¼ƒ~e±Ûï燷il+Ö{Ф•Gã!ROK²çA%‚CÚÄ]li¾˜ Öæ%.ËkæÜïù(ÌÞ[VèÔSKÄ![•„FçˆLúj4lÄˆÅÆÆ"ãÆ©¬§#³y¢Z\Ï=è/”èóHpQ&DéZ³ìÇ‹öåõŒêA࣠¡ÛÈ\ÇÏ(MptoÂСLƒÿÐȹø-¬“pW £g³R$cHÉì’Ûvéx# ©uÆ5ÊIðÌ¡"n«x‰éP¹£¨‚Þv-¦¡>ö‚ß&e[< é}¡ÜI*ÛÍ ¾®ežLýPtbÚÐÙ‹Î$€ÏÑBµEa®£Y S-e¥ïº$á(Ý4; JÏaèŽ [ Ó.ü*¢ŸÉßxn»é '±©Âôr*Õrâ»|9v2‹T{!™BÂZ•[}×Ex4SIs¤r×V ú!~±½uIÜ9¦Š"­tħ î$À߇«gQwàH!_YuCÇØ¬Ç“âÃ’Y\NDÇy»¤87ïÙH5~sõ;ç°ë&6XwÞ2_unÚp’’;AaPÞÜa–÷bƒ–®ÞÚÞcº®Ãý=Û7ðO¥ô¢Ð ={èÝ¢Ô"ðÈ]]ò´õ ž•õ›=OãÆ'í¯ü©Ï³Ür«Xñ}L"õä2E,wM¬pÿ,Ôo »‚6¥õÔÆP]FZ>Y"T×A½š}Ò‰,§6x_’à•#-†v‘i–®,&ŽeÍlÞhp›EóÐþø/«—‚¯A“tõ^ÉÝTLW ˆM€?$ºÙO滌ÅOžo8 ùq¤J< ¥¦DX+$øC{ªÂÍËÂþÜU°ûM4Ú~³ˆžŸ°#;iÉÿ¤2ù†IR1…E›têe6ž™¢dUZ þB?ö Æj‘"Ñçјh°ÚtöAó0ÏxÅ,û¤‰QiÆ“D›Ÿ#íoˆAñl¼ "l’Ð@ªq> R¹ÕñCš¸ëÑg´ ľ-Šy;zŒÄL݆¸F`W${¨¼ØÀ¼“ {â8ÝçXtu`40+’îа2¶§ã‹_Û:Iµ¶Œ•ÍaÑÏ."zGIC(ʾçÏ€¥º¢õ}µæjf ^4}¯è‹ßôz]ûé|2ïÌ&4ÕÁ\ µö§™¤+¦"›jO¹ žŒZUÆDy‚óµÚÌôV5^*³:ãÍ«uòQ®ž&I}"7[J„»é3hì;ß™AXœ`Œ,6Ù'Æ{Í™?¢Zl\cÞÀ¶…O;_8’%$öC¬Úç ²è±ï¶ñ¥æßŠ”Åü˜õ/”¦i&…äþA1ÙÄ×›€×Ff&r>!‘F‹—siž0Œ°‘ðfXõ»HÏœÍK/×Ö= iç!+Oˆ’)Àízª´3*®Ž™h¸lË>÷}§ÏÁ­¿f’?] ‡5e˜³ü;7²%èÓWò{œ‡¾Nt©?ÛFfÒƒx,BCQ°wz>–—<A#ø® † —ת4US;':•ððjéØ/mJ;x8)R“ÑòJàq™ò@iè£9KèRàJ—ðÌçqhÞìh%и+µÝÍmÇGÖꊘ¥y¨ë@Ü}FP_zi®7zØý€¤Bdñ²Ë’²"žƒÖâÆ(óììßå,úxmú®è ¯Óg YÝâC±A–ô ñ0¦dû.òè‡FŠ!pÍÖº?£ûï“ uÚØO¶ùФðÀ|J®}¹œãOœØxádo—îUÇt9&UÑ|i”¢š%{72,zueIëÔe‹v­‚ð™9$‰(4hÔ«í[ ;›½mÁòúÄù€%7¥_Ô&¿ålàÿé[ÉQXz2v–U¹ßÇ©-õf(ã})]¶þó7…á‘Ä5a 7í·æ¨¤u·8ã ›p‚:9qhþz>q™]Ú¦¥úÌ ¼s†Ç3pÁ5‚^Bú0R¤[fÕƒóhT²«wж2çºîоu‘{WQ"ºìk‡Ü–O+>|uH3z D)å„°= Õò= 6uL4(C—uYp)Ã*Ãy â”Üùæ­.ý—¥àÿn=£0†—b#Þ>š¥ÒÝ ¦WŸdb vÍj-„UàŠt úÊ)†=1¨;çï¾ùØO·ÐæËG ¾2a}2®I´ê†Ø¹ÉµO°ÊÊ]%ÕT¶ÖlzÒ 7ê @7gV“öô´é7ÎØM¯[ÔÞâŸÜ‰s~[±‰²µ†µç„”jÈÿ¼¯¸òÂ$“E°_F®8r ÏåñJG|TÂÄí3h–Æ0.ó–2XøFA&B/Ï`!±Û›#5‚ñß>ÿ>½½˜Þ¯x7@¾nYÇ¡öwmÖ#­é-(¦Zà·Òêûz“Jä·^Ú˜ÎįعšÌý‰š[š¸Î)AoPÒù(î`^21Ô]ûƒ˜Ëÿ &¸‘5/#IÌ0Ò~Š»Á•¤è¡?~µ8UPæ¥Æ°„¼ÀžNŠþB‚½<±:K®$÷ê·¦ÜR@¿#¹q¹%â¹'¸Î”9«ñ 0+/«žJ/Û¦c¤D?g8©C°Š–#AJF2xY«ÖZÕÒÇ›od»tKRÙζ,¢‘C³5Œˆ¸M'¾R3²Šc‹jLÒäxM€ƒÒçKãØ4}¤”ÙÁæX±t;ßPcrS ¯.ä§µPž¹ãl¼Ÿùs¦”dÀ•|•üGûÁÙR•0;ïGMlA—M¯6ËgññғﺚôâÑêÍÁÂ}r¥Q‚ciëÏo¹Ü±RÄ\2Æ"YŸ ‚}¿#뛞µ«qq&ãÝ’1˜Ë}Q¦£÷)ô'¡¡®Ãeé<õmÑq÷Æ'/jd©oò”J™­øFi·ŠÖ=Âáqž"²î¿­ñqH}ïzbpàET‚J¶PõZå -é>Í!«z ÚxŒ$­ •†·ÄVQÞôýúøcªÙ‹/ÀYØ3Ímz|h}G s‚ø+$xõ7ËÂÓðUu¬ÊŠg,1õÂfMt…£ˆ ótÐÊ+£d‘ðG©¡Ÿž;Ê}?þ¯¼cß} —úã.Lo¡6 FàIBƒÆðÞvïÃó9¥!T` –͆">c:+ZÆ0ÍÙpȭ奄 ‡Àt kã×ö€j³µîoYçrQ· “„ÊÁZ«¿ã£XÊ‹«ùaD»­Åá”ñÅ\i4É!· G°r¢›à ’NØ¿(¤ZìÀs^GËKa,Ö3qº”Ò«êÁœ/”v± (åÏ}Ø9å#Õ8•˜/Ššu˜~kJ¹l0XßÑ»ò/¹ÌÓ~ÉÁ¼¦½½L‹†iƒ¨ }.vìxØtŽ!…ß'”[0°!üo•Gšl'ñ¢Ù}ã* å¸.ÕR4«c…Rvð7öš RÄ×kÝÆïì@Ê""•uaÛÍŠÝUúYêl•4æ õÛH&ćÈPjèF¿بï&B–ˆIjë„PvÚ«pš#üÿ¨8§-Qm×–m›³lÛ¶mÛ¶mÛ¶mÛ¶m»êîótÛú‡<Œ¤'cоü½þÖ_аÍtÅ„¾…k=LkùsÀ²¶aZhVº,.lɼ€vŒløYjL3Õ¦'^ ?\e¿¸]`òÌe9 Ø »sÄv"Ùç,k_ùö “(>óAŸÛ%=ãMÒ* vd# æ}¿#UðÖÞó äXËÎGîž&.æ´„¾JŸCTÌZ¶”Ý#›T±äV‰B9y²–Î/g¦”œ-Ï»Ì-~ô¬ôƒ½ÚòSâ¯vXñbS4J üïàШ°a´JUíë|µsÔ L.$ÄWußYÀ¶ÅsY_?y^‰½ƒTd8OË"¥÷L "”ÆœGjç¹G3êvÍdfl+€ðå¦Pñ¾ŸÆ^zJ4t+îŠ]úí[É3¸:)/¸«n3Áÿ`œŽõ‰¯É ’U솯º˜ûe¤Œ½i(³mlŸ~’`‘ÒWpäÖ ŽöåFl–zä¶—‰!uSNF!†MmÑ*ûaJ}`Ÿ‡ðKý7v–¹gYÅö vȉ 6Qn9ÀÌ‚¡m’ "NËkãÕö!ÿ6ô[ÂÜ}O/—^¡x•Šò|Qèˆ?@¼à¥‹óÚ)¶{£´³Ãvÿ§2Ùµz ,ÙÃv=/]¶ï`7„ØÛqêP6çö‰!*¨Û ÃÈ=ŠfaÃEÕÒ%ÄôÚëa!$£NPÑ£&„QKŽé¿­ÌØ£öD¸’õI‘;Ä÷SwH–Vœj „Ç¢w§V\ûedÅ aU!!5ªw Ÿ›Ò=ÒKh›%6à(Tœ³EyZ'áR¦øôkØŽ1Ø)¥¸ÍM›Èöµ@æÈ¼çÍI ”È_TQ¾6ÀÆQÍ‘žûGûÎVrqk‹9á‹ö]qWúS5rEPCs@úµ@œièXÇ9¯Š._¼(òãKäö¢¢¤Ýܨ¤` Ö&–PÐxäüÿbR_)Ééj3‰¦õR@z¦PàøÌ˜WŽ m,Üðʈ£º!ŸÀ<í;\ˆF|€·/ôàagkòÉbú­Óe%ábN˜`쯅§×Ë|§.5ˆÒ}£ ¦¶Ûå2úÀ@gIÆÄ¿…òSëršÈ÷Ù?*pŽ¡ „X³û‚ÎŒt¦5úšf8êç žõoâÛ0Š›ñû3]ŒøvÚÌ…ä4¨‡¬Ý^iv.Dò©Qû39k_„nY–·4bÉïªëpL>ÿøT[õ‡>ì¨˜ìø­%u&¼hŒ´Xµ) Ù¦ê×tPÏâ „MÓ´Ø h)›pјáYÄDÊÎ|¡a»‰j~åè·=® NÞÖíÙ‡ŠÝU=._ÊËÜÕÿ»ÓŠhÁ’@Dçºká'ê§R!ÄhÏ©l»>qÝxO8Ö/†£j Ù?¸^w?<ìN6HÏ9cs(Et‚MB†Ç6;† K¨å@:1ýå™f#‹u¦ª|Œ¹ã¸suHEK™MBDÕ:Eª.ŒkëïMÅ÷·€˜~€A}YkqX×EÀFikÛϰ׬Ž3F@‘Íá±_å®Wï<Ô ûÒº«øÄÉfN%tsQ/ O¤“Br›ÃäÔÉq>©0Ø¥ï'3®yŸr¡ü0<¡é3í{iÕŒ¿Xp¸aç?„W‘{º#åy*öN.3èn±Æ¢T.žN¿=™u•ÎËõê‡JÐPýøÀ¼^;Óâ@ͪ8ŒºnkM ¨Ñió*üªaùŠ2ìnxé±ñœŠÄkžÙ·-´¢\‡Â¾Aé2ñÝkHÁ«tôçЙ¤Hüq gYD»}ˆËº²ÑKû"„ Á]|§á0¯à‡t5â›'÷·/újLÚ…T<쯂V°A òdG™´¹éÅòÕÏéQ‚ ¨1%Xj…Ç‚†ª.óC`&>AïµS’ŽàQäm‹ræT’V&ω.~5m€Š(ïÔ6ŠG~÷Y;~”Ë¥ ü5ð ŒeB‘™&“EÚa¯"0¼WÉ÷4\œX1‰„ÇPË«¸õƒ“?d¿¼šv—C£JĆ(\b–ê Ž<Ê‘×y³]ÖÉŠêyþ"ÁN†>SêWºR0~Ò.âÞƒŸBu¯_Ôetc«pÎâè·Ef7à| æcæÿ ØÕ!‰´¤¸ÛSW|ð÷ÿâºT§¯¼7ñÌœAXªÂöv¹ñ."ùP©A—a¯[I86ƒâ á¨¹Éjìk¯K°åC4ã2hÃgœ@lÁÒLêKJ1Y²³SÆÖ£“þÒýJ)±ÆÇ›ø8åD-Væ®UàA: ²BqòCÑãËÃò3ÓÔÆfcàÁSбðfÆl‹«fä})…A­ t¦}3+¿Y+—·U0qJ,Ö…àf§A®šÁæÓ®iW&¬m} Æ3?Í<’^ƒ„Vù”ær°qàÛuƒ@—9tƈ«Ï—ÛÕOmV¹þm3j —‰Úh°íTm?6¢¿œ+îyw´;ÅWe–ü I³æWäÃ} ¨JÅv]-‰ ìz!à ù”Ë+[FžS¢‡P(–gj”±Oá¹ÿÂøœ™Æ}áyø¼t¹û_h.ÕAú¢T]ðBòVüχŸÜ‰ðB©£Ó´"V¢V½Ñ*ç{Ÿ4mwĉŸ´»î¡n`ûësN2-;I퓵qøEÕdòJc0V[ WSŒ¸eUÙ 5¸¼ÿÅ>HbPÕÿƦ–È»#ƒAyDªHË‘Žö‚ùk騟³V53ÿeþ³[©ÍoÒXûß•P„IÜJO¾BÍ—[o¥êiþ¦1"'Ã{æLœ´+M\ï–çUEy€ìi?5 ^ŸÈ ZËäTqäÞ¾=ýù›½d?‚Yåòª8Rö¢ªÜ{Ö.øßN€ù²êl)l»üîô“$ÉÀ&~yª1ÄîUk¥gz%6DŸûŽËóö¿¢y7a„»¸—|Šfì^KÙnaŸ6$d„ßè«ã,3ÏᑆFœ!tóE¸ì—÷¯í˜vžtˆ•ÛRC¬5î~IÀÖ 8D¸:ˆ=šj^ö`Ì€çB75ìëu­£p±Y?­ôåü©=G÷í¬¾SC–#úþyB2’U³—¥¡A€»†Ã˜ÓKûf§·a û°‡'D(ØúVõOÄ€.³çàc0‘ŽÜ•JsºL 4ßô@_„)IÔÿž7*¶NÔêGxƒó „K7”˜¸¥.K±q=)@¨ƒ Jž„ j5ù„jª šq²c_ äòª‰D3 Œ]2rq?#>ÃHMâðöl§“Â×ÒÙ “ÐÏŒtÔÝã&¢üÛs1_ÿ¡JðB—+¹GfY2<8l–aËß!•ûuqtB^^¹xr yÜ›×í¦]Jù0TBáE.±æ½,¯v£ZÆ ]Țą2m˜êk”e²ÕÌT¼xd „ç‰5éX{Þg¹MHù«3Æ„1\¢„XÐHB’Yt- Z™>›n–sWæ­A‚¢ Æ®­P‘aƒISfý¡ó†Œtjž‹„x6èüí\oðÌ%Ù’¤¯”ÿ¼{“ï/V’Vã×>bÑÜÿ¥z¾’\¨§QNs¦j×o<¹i?Ñʨ$¢7©…ªù.­h@ Ã;7Þ>0…ìùZf&ï^Ü?MŸqu'áèþ;d]¨DF-y(á›ôŽÇßK‡VÌi>ËS ŠÖ¹Ów 9°\]fvj¿ –]}R/9J¨ì_L{Ö.°Úã-#Ä\¸h\¸ö{í:þ‡²zý5‘ïoÔç8.±N”ådz²no–nêô0ñVãýÓa_7Pŵ ¦(£G•¢4½4+2õa¹äÔ"º`Ea¨|Ý_ ŒM‘ͺ o]®0Ãëj€1¿ÂÍ–DÛ_d"[Íã˜ÍÖœœ2‰áÛöÍQæUl’GG‚ jwù™[YÞwô\ã FYZ¾¤›LNÅAÑÝ K½íµ”8î{¢‚?9n•Ul’û$Ñk©AسA ;;j©ŠçÝþœ©ø=Î'~þ RB?áæ9_vƒ.ßê:’c(`½ñOáݘjd¡½î¼ål8! ”RöÏ&1Ó¼úªQˆt§2wɽ1³x¾šB' '“£’z—]€wD¸‡á½Èýs]ÚйMQì¬Ö‚cnÎÌã¨ðéÁÁô»`†ú@ܧªTê%»XÛÜþ6WF‹n4•O·Ôö„Ä:¯ÒÓcð™ G4ù$ *q$Ø-‹Ú¬DZɓ؉ 5‘fÿ(e>âôM<ˆ²£’iÚn^ñ£Œ9LÇiÛ¿¼%ª\¥<­1æÛŠÃ‰ —©ºv‡øJœÇ|Wçú¡×­YåÎO(3µºŸ-×øDö‡[€n÷ Jwg¤LIŸáòJK¢‡dÞˆíb­óõßsÒUAú™‡±ƒÈi‹¸ðvçyî‰uÂÎáøXPXÖqrÿ•èåÐ 9úöŽx²LÄ­¹…#ÎëÖÈ9J×Ä4bvÚ;°¦Ýî[êˆÇèšâ<à ùNòkÃf€d õÛ9ºT2|ÚÂ,Å‘÷€¬/úˆ`þ¦LB#û“’hçá p‰+^cUjLÕ$V‘îʸiˆqôý*+OL«ì×ξ¿x3²ÇNR&¡ #öZ¸åÎÖ?y–¡®1%ø®de¤»Dž˜!‡ë›¬¢ €‚¬RiœÀ‡ýµaû†Œo8À~É~ÙýYá…œK|þÌB:òÉÃS"ÉøBØtTÉû@ÒçY² s|dçÚädA¯.pùŽÅ‚/†~B;“vV=®¹[Ü\¢‡:ºãÌ®°(Öõ%Íå5‡9¢µ:6åuëÿzÖO ÉÝ;À+=Gö0ýô¼ V?KJñăÖHìˆrö‘ÖXP¿¯·*S¤ôMÁ'¼¬_Xt‹Èî§0t@ù1øÛҤȅ{l5ÊÎ1¤ðÁ¡‹`fñ’âÛ¢2»]ƒ¥M]?6ÙÈ'¡ùªö–X­ûfÔ”%ÅѸÑl‘‰v¨+rɳ±>vâUÄ$Šó ùx¡¥TÇ^09N°-úÜO<’Å>¸BYÞÝ¢ë)&{py”œ;< m»5e`[¯ôjíJp†ïçS£ýìëïA°ë-ˆV1…¨À)Õ4½œ@RÁŽ•Ѽͥ7µ(´Çšl˜ÃÐ0A5^´¯²&qXŽ—ìú]'?ÇúŒcsÄYéå„m±úÄV:èÐ2õ¦Ó7]œ äœtеýµ=÷£3~®Üjw7¢ÍÁ;)j<úñ5ú‘|B„4 IEØ™i¸Ÿ¾â.H"÷ê›{õˆ‚ãµhMŽ;AIKÖN;Ÿ~v#ÁÊ¿€¦E°:%üæB~j3v.z0j·å)ñº´iǨ>¶ShàT'J»çýzMŒL`û¥¦ÛLõõP'ˆ Cÿ›­îÊB×&4àa•]ñÅQ[°Õg8ÞvÄ[JäÊ‹1õuYìЧ«Ê~4Còucas"ÒÖ„í«è±zÓ,á@±ò ƒÁ6¨u°M/w0£ò‰_`­áûb™?™Ì¼Bæ …lO$æb7, xG÷ž0¹[rqd°±õÂÙ5+–+JÌÓ+k×G¶ÑÍ%Ñî­ç^/V` Óh8o…dN؃ɳû}¯°€³™;z‚‘,´‘¤¨Íåü±Ó½B5Ú§ZRÑëÊæîå 3çÏ,5p$0jrfâ•nÃåÃ4€(ÁÅ9™y<·Ä¾«%wÖ÷ŸÚñ„)UõÍ‹xח݃I°Rõæ™_{¸?È`Ý5ŸÇfFP „'>·ôŸôù{·€ª 6ÌèãÛ†œ1çÆiH¶ÜÚnû6¨‹ç 1Xæ­,Üð\û>KÝŸ ¤3@$ç$ѪlpÑ’4én§8¢Ž?oÊ£N(=ßnU’]ÁÏ2 ý¾èꬾI;¨åÒrY-x§“÷Íê1Øùê¥0@ƺ‚¼/õ9ÓÝ0°UÓjâ3ûE꾸ںg$ªgÿEg7pLµ"§ÌK:Ép3õýÎÑxWOŽ`iÚ#®eÒÆ…,¢G÷«‚ÿuiëNå úŒ—ÞÛÈh:{þ©¨‡>)†¢œÍ†*-IŒ'@º[“Ñâø;“Á4“òáûÒ›–]r•N˜õÚR(¹j›¥ S×~Î;:$.ýS%Î7Ö¨7)^<’Œé·àff†û혅`]ÜÞ]À—ƒË§-"¤ÿýŒ§ÔÒV¥Å)dç@´j ¡ImeÔ)Íî¢Îž£¸š¹ðï‹Qø†p«=‘Õít6]ŒÑýÒäM«É ’åëhEuFGÒÑ«÷>ÊAbªSìé@Ó®ëä°äõ`ñÕpŸÁQžíæ©5s¾<ŸU€ Lc»qŠk^N@Ý€UþD¸Û,“0Wµº·qÑo‰ÎÅŸˆ(’´ž%ämιÏãÙû{nS‰ Gÿ‚QÚ[ÛgœM—6 7w‘'„´µÌ–ûJ~”ËeŒï"êSže—Ðʽ«›š˜q%Q09í³ú<¬çÖÀòOÒôûhì’£+Í-×k±mÖ))]˜?ó4ŒÍ!¢®¿Cq»èBQ<æjKÜðn?! C´«^¹ä&¡àÔqÄ«´<,Eª;†Fˆã.{+9Ã<Œ#Jm=ŽÐG[ôí¤ŒÊÜ–rz%ÆM¬ꣶ÷aHŒ¦[È8ÿ:í©Y³ÑÒy)on§3mFç¹IŒ¿6„‘M[«n¨Q£X?ÇŸMKìšAµV=Æp5 „Jb1©ÿÌ^L„Ëù=oßjÀð HpL»Ž3Ýu¹«½kØ"ÁÓŽ2ž£ 뵿˧Jàc»d^^×-S’,¯kZÓÏí¢88ò#&OÔBZAê}ÑÌezך$ƒI òÂ¥ïUh1VûN-;o¥Mª¼Ð2‹å=•h\ùà@^«“ݰ-HPg‘ÿAÓz‰ ’›m³UÓÏ[à\Rk_ø™¶M¸ÖnìÄ"è³Ô§ÙŒfs´LáGpdÿÂ&­½-Vã~Ö™(€”F’e©þU5 e¶\–èÉqw ÆÐ’êùª ®yÞhfš(HHŒ]¼·Ÿ¤ÙiØ£Óp€* ˆQCß_SCZ‚±b>{ñ† = ÎJh¯õ :”õ|˜Ð‰å]Ò #éž)8¥»R÷ºoRƒ+3¼É«Î»æÛDÐâÝ-¯®ýˆ¿“\Wè"’/€h9~k^*—Î0¿è6Žû²¨l]FŸÑZ?ဟGèÅ4ˆ2rý÷'ò†QŸ´¾~n–YGï=²dÕjÚÒÒðxITO‘$Ù-½ç&ª:6EàD™ÒZSÆVérÅ@¬6.æ,ˆL —WNJ\rÙtÜ̈Åù²a¨aQš\!aªÇ½J2UsÍjTÃrX½JÙùµ†¥I¤…ß'2]KdY¡ÀŽ•™&Ç|‡ÂvøÇÏà¾45ц¦C ~x+kœc¤’î+œâ€ª¨3¸÷+A•“÷R0T#ÁõSQ«”ðž-nÓéÔ|%È)ôq™Qªð.ïÒÝ0:6¸Ržy’2²ÌÙÒÈÖ"ý˜c‰}=ø\-†A3öJT³À ê›s†®fázÔÝ7!“XæZ2½þoõ˨롎ر£ôI‹_£~ô!îzðûÙ•öC¿âa-bc¼§EAhî]>ˆ…†@è§äŸ ½!)ßõ$GÍöÌ&ñyÓúf^ YÉ•°pø™W3! ±'îÃÄøÛfC ˆñŠ·‹òF•MÑ‹¨È©Ô´Ì…*±ªyŒtÎIç£S`ßܳ€±ñY)§çW•ð’’%Fï¶„ 0âLªšo°«n„ `Kj#ó)1ÕXz!ýËN C\âè¯ »4ª¦{Σ _üõ¡³üFAU¦ø" táÊÙFKuDps>x¨YòÙáGa{‚ǤDV4¥¡„Ò¡ÅÛsÙä5¤ÓžQÒõÑ‹Düþ­éÙfá ²a7Ç[o»'ÔÍ”Éû2Œ3ˈ$3½ÌÿmŃ5·HàW°zªî&þ@"òü¯¾ñ5镘ˆM:OŽœo£ÚÛäÀs‡71H9Œ>R6°Âbo\àMÞøTŠ[ÁÝäô#‘°=«½ŸLÜjÂìpË;>]QˆÖ^[ qHÔÉ÷s…§*¹lýÒ…uñ'r‘n›¼0¸;eÕePžˆå ¨©P|,¤€7R²ht§Mפ/YI©`ßþɆ;‚Z:•y¯`{Š®&ŸcÉ ûŒu9È+Téäó®Ø|Çqpý¹?µ†bkßgÕ"Bð¬gËbpØ®9`Å·™§®Ò‡„U†’[Úɼ¤©6ÆT3kÈô"…þøÚ‚UÏ:GµCuÛ.çZ/ ò?Tª›írɽÒ!]^]á צaÕé­TüÅ6ìÍÈÍc}çt²ã"Ãg'G¸tëLnð­c,®t€cM6xéü‹Êò >©ue> ÙºxÖ4ÁÞ%ßžrü 1Ùkê¸T†Ï¦•jQo×MRi˜„Äo1/nº>õPÿT(aÊFø+ãÑ¿AÃÇÚêG“3ìËQ)B½#àð`…:v|¯Œ©#YÔhbñÎ]”îÓ²"VX ûL=²¸§×«çVö)„R0ïÃÝsFJ³ rÍŒFŒ¥ ïfPröID*|*˜£w©´W|ö~=}?RÕL 4‘ñ'h‘˜‰€­üä:/•F M/€ÿ—BO§Èîû$F¡Ó¯¾|½;0îÛíŠ47‘¹h~ÖhtåOå€#øi×äûÑ(K*!V=œ>O¨/Y/j›º·Òº*uïPx"Òq®%›c`ò*èën§fø5zLJ/B€Gíyàó;øÑ}÷(«Œóð’!»åj‘TÎ3ŽJz‰.¸á<ýQˆ¼&6×-¡îQ—yúƒìhŽÞÎSÕ˜XÜšI tî£YjºÆc…¯;ª•Ë]í.¶]Ãsðí¼ »ÃF^‡ ¤ÉRÉÎpþÍE².ÆD«bg:Í0Cà+4;¦2†ûÂZÔ=2hæ±±bð1½#ƒLB¢z¡õÎäÝ¿Ým„õF^Í•H—j©]"¥uöG%°û b!Ó¬Yä ¶}=®™ Œ°Ÿ3­OqÍLg¶Ñ’}vŽCÃãÖ ™¦Üô¸†FäÙO¾iGÐ:ÊéoÎ3ÉØWzXÆ,0q¦úRKÛ;f²k×Àš¼îKú'+^,d¿[\ða ï’>OÓäÏþF cvûæqÀÜÑ_¥m#%XÒd±ÁÝíÌV;g›ßÒ7ém£±¶ 1ï );AUÊÓôØÆ—Å ¢2™ Öo^f´©`zLfÏ©-Ó$ɺº6ÿW9ÿX~Ûiþ:ðJØH¯ ËiÕLKí‹Öе„{§ÃxKvÆ‘¤©“3…,4U Òxc¥¥CdêTTŸ³ý¡C=ˆ-xðÏ­:ïç{¸G@§Û °âV$S@LD¨ÂÒžFF¶÷L¦1±Ø³F³ tÃmÀ–þÐбy:öO÷}6î”®+ìÃh[†]›ÂZ¤~6»—7/×\þäˆwà)»'€p·:¢¦R(ÿFþ¾IëKË‘ï‰×¾c»pññ>X¾|¾/z÷Å“¬’xä,$ˆ¶ +ÈjÑ_·ß°7 ËKdú `¡ð±…=C:|(ƒFkgt?»ª>‚œn'8LšÇ›D¤qoµ£²1o¡]Õ¥;‘Ș‹{Q‡=wº”y›óG="F æd¯mè_·pá¥@*¶_‡G¹u%6,±ëcÿ‘Üa,4ÌM•–?\¶DÖ¼Íî¸ïËUÝ•5ô¸ˆ#©…Êýˆ˜­ðßëå•ÏSµFæIDì;ÈPq²;îøüô Pæ '~` ÜkfÌðÏ…H¹¼SÇ“ª¶B{ÉÀŠ:ñò0p›%jð§j3c†¹óë¦ç§í«»ù^¼ áò7fb_®6IG™RWçÚ¿šQ"1öÖ– ÷B…Cʘõ¬ÊÏŽÑå@µ˜ Ä·åfÌ™‹Ììì8.ÉÀ ÑIä¾W!†q rÒ‡–á8*Gi2(M娔ÈYVLn_º¡c«ð–2[ö¬¨–´µ¬¦hò°ï÷/9o¾ãéVƒü6wu„»üzh„¤¯X=šÝl‡ÈI|Ù¡$ízM»*SâaÚÀRY$ÁE›;?õÅÿnåƒ-7Šþ±°¿æÍ4Å“"-€(ºH½ zjtmÁ¢ Âx–òìfÔA"˜eë“Øwi…q¦J0®["ßîóU9EÔø7¿\ äVKò[ Ã”§rÃð˜Z’RS÷Æ@’Ûñ‚ X&b€àß剪~ìüŠ˜À˜iú¼ÅŒíÓÂM/æ´ñ”û[ð5ÔM¬¤Ç(ï±üPhÓßþxiS@2jÙ(äcB~l+°–+CœÍŸ/6–xÍYŒ»{•»!dUÝm è? Rz‰3õÔ9%ì™·ÍŽ½Û4MÂçÚÿóúdÝ=€ô–¢uÇ'Ä"yøEI¡¦!€“V}°êK‘—î˽0˜2Ëð…c£›ú({ȩ̀Ãôƒ¶ þmènM?TÁ,ã›åh5ñ,GÓ_P Y]12[&sÍ`#"Ž“ñrJÂàOÈv©°¹šfÔ7ðçŸô¦ÿ>Â&úŠ¥Ô=Ý‚ôLb­ PeAY±¸0ñhÌ6ðXÙÐ}_Ã]4ó‡ ?=áž[(]l0G_õ‘BV~¿®ºv(ªõÀÜÝÍŸì’O ×àªUýø—@W4ßxnÝúèN.CÛ»éºn¯]Í‹$ÄØ^Ev=Zˆ™käáqéŒ M¬ùô·ó8»@3¯r,ÙÜûôÀÌî}ÊØf<2q¯ÁCsŸ›„Úky>1¬À­Vÿaß@³–€°ßx¦H©¥cS òA@Éé'ª¼`¥!A(¯“=•VlÛû€æ#Úôëa¡®ùëŸiS*›p•Õq!àÐõäÔE×|]Pgý?µ9ì …ˆ0•Äqô%k‘ÂÅJN rö'ÞæSsQàz¹œj³œÅo¾7q"2 µ/  ‹"HXGí9Eé9«HÙí¿ë5Wç%D®kŒÛ×}§»êBth|2/̶ßÖ©ïOý O|VÄÃ!LO};»ÜI°—ÑÅ®òCaKF†¨€]„"Éô%’ cñ…£ÿûDw&U%eKŠéòwÔÿ$ÎT›¾I5©´€;à;'n摦äCÝKÀÅxâÔ„ÁÖøè0›Ÿ2¬R¹3;8g5ÆFå‹OÂñqE+Þ¸wB4+0ö²y¢æ‹ô´€ÉQž£OO'¸°^¦ˆèh)là/ImúmØ-ªøéC‚Gêðò¦C ÅÈKU4yì¬ Ó†7>Ì©àšñó–½5D©j4Ùpt•µê<€Å,´¡ÙÀ;47qàÖp_÷+ÌFH³ú˜aŹq¬É‚¸n:³…‰Î+‡S¶ Ü.xÉ›5å}@Iíýc-îéÏŠôëœT¯£•…#Lþþð…€•ŒGakX¸µ/ÿ>yÁÜ6ÉÖÙ'1ø×!ñPU²SÀqÊÊu$¨B€aµÑ¼g¯;¿L{ÅÁ¯†‚¡jRã7x¼Òä›±|i<þpa}^tuH‰žc®TINÈ ·À8T0«o007âò·¥8-š‘…éÁ¯Yl9.IÎ_ÕÇlÁMæêðëðôà…fyJþ ˆ~m 謞psº´ïöÃD¨Ú×£Ûe’ëBÕ©IŽ©ª59Ò®;JpQê ³·¯Ò—ç%÷Øomür5ÎÈTL(‡H¯¦ðìŽyŒÞÆSJ»î—á)†Æà”ù9/þÉe7DÁý©åŽÞúƒ1ô//¼ýÝìkñþ!ÊÙÚÓßÄ1À0p¶åî©Ê«¯¹{¤[>Âæ!œÑxK;p´9°žÆÆþäþþ6‚˜€î*5.˜ ‘új‹'8òì 8Èû×»0Jö ªG;Èš™Õî<„sL›?‘aÂÑÒ²Ób–ö½ +cíS"ÓZZÓ¾|¿G!™èäS”ÝU¿[Çݺ@õZäu>Y·ß«É ‰Xaàdaÿ†¡-ÁYä"'ð× mÑeòï~×)˜ÍŠ,²`žPÆ\†Ÿãa¥fêÝ +$*Aá³)£K„½Õ¤›ê³àsk[@÷Å:ïz™¸º±.îi\¿WX R5ä&YÖöN^ƒLÕðtcêQ!ö:'½âض~Ù¢–ß,m÷ØKhkX/ÿˆð3¸Ñ×g ‹<'dL&–”&ñ$zeÙ D-·îa`Mîù!—µÑ[¿þ”í‹7&Zqûl¯‡t ¾[û¼ Ú¶0ÂüÛHê)ŒžÛÞE>&Ï_qÏëmˆHoÐÜ.¸ÑØ+"G ÛµçÌG^®*H¯^úâ$6;Ml 1Þ¤Ÿ’H­#ìl‘Œ ï².„a[\¥„Ç×¹Qõš´×+SÎ ¥"Ÿsˆ2}v¬ñ-FÌi $JÑ+ 8«ÅÔ=8~Td¢i„ÍÍ?Ó Âevr ÑŸãúíÎR)ét†ð*|«}÷p¶J©¼k«)sd‹eÆÆlX E{k°gÏßP[˜è*¬£:(aN•]4æMþ’Ž^¤Á- …@ Êý6Bp¼TxßkNKìw|òú‘ëÙh^çÃ2ù•ÝÈ…’«¦i0W~é¡Çå‰` {iî:A¥Û¨$¨ÁJAW0ƒŸ?°Â€G>Àø¯íÿ§Ô$ÉzA×¾?S³˜9£^Õƒ‘ J^Õ”lóúX–*£ IMã ØŠnóÎÕâ¶gXOIl ²š]±®›&•+äoÜZR@ôˆ—ªHˆraüÆ=ñ¸î¬Ã}gT/ÛbÓnÌ9ÐU}‰ë6B+6ïÑÏ{µö¨åþú=ÃE›»\§„Ò”‹„¶ÌͽJvók½é{qqŸ›c¸szOÈ»¢DLøä½Éù`J19_(2¯Öõ ëÏžƒx&¸k¢ñÒ·)ó šHT·Nk)÷\SÍü‘ôK¯€;djôxûÄì;dËxú(ôžœ \„Z½9G_v$¦O :#DR^¶…~ãë8‡/¤r”†5ͧ{5ÃäB!ó°Þù¦mÇá„ÀQá\Õñ”~ʉ<_HônZÂáI[y¬Ø|ÉF5 ÞÔ˜• öRû|#}ŠGhó»†âÛRp³a¢ðŒ)«ÝõÌðñ*jѨƂ(X–›§_hÏPÃJ1œŠšV7Öš!ÌÖDz>ßT0òÎiÅ΂síœÜŸUC¼ÈZžµ†âßëx¬àˆÇî«#´Q²Î3ý~|eúbµ§$—ž´v¤pY^ȉü)eJ*pý?ºQ;Pšhn»è œNŸWá&ZòÈc¢.è[sI&1èŽ ·5ÒsAÚÖ§n,+¾¨âýÝļpg˜Z­³„¢äðüô`H®¢ýÚ²NÐ5ÞˆÛ D.]J®_Ý–O#£”#¢³^׋–ÌÚ{ 0€gÌÃeðù0Íï˹îS±Ö7$¯+â|›S|Z]æ‚¢Ål¿h#¹Ó ŠÂf‚álœ¢úmùƒ|ÛFr€êî^]ã „ÞŠ¨tÐ/ªJYºÆ`ájH2¥ôi¼,Rãd°!üÆ"!&0þä65æ91î..ŸgÕõ¤º&`eÐ |°s²ûË•Ôùj°-qÞ&dAÍ(C¬ÖíÞ ŸèWS*õ±Û]Ä“xôæåZX½¶AXúž» ù&^M/ÿ8;ž±Ùw‡œÇR%{î÷¤Šmm3€ÜêÿùÑ>æ¶ï îl§ªù_tòŠ•°]S©bHd!ò%”è žå“kj€±¶’ÁÒ «ìºÙæŸ!'¨ysžúmÅÚ\%n¥Ñ@=¯ {ÿbR‰ð54Éм…?D嫆ÙmšÓt¶ªX¡°à ¹;¡²ñD³ØlM÷㌠|iªðák=åF›ëi„·ýy¸&™ÚCf¢ +Úu¬Ó‚îHþhs\d›zâ¶p´u÷vvç{Òo°ú,ÇGþ’dVΘÿQl÷ùØÞY–.Q9¯ÒÅ—ø5À½Éyò¡QzìâöÅ_§ËÚx„x’©Ã"Îýδ°½Ñ\BÀqVQ’)Óhpà óÄȾ[Âó†eÒ¹¯öÐy'5Á˜Ðªàû|hŽßìðV':«õãîÆ)ëÜ%ŒXí0¤í¼Þ4¹1Ü/-óVØÕâø|†Ùmi½‚ÐõŸ"pýp‡¯ù=èŽT!ìò·Tö#7 ò²°G›å”úpP:Šss¾FsÎï# Ž7&GXMD õæF ÚãíéíþSÛUê%>ÐöµÈÆolëÿ´rRÑÆž’,ñ¿ÚŸSxîl9%´ ýÅz:Îa]ih"žêÊ?;Ö™Y£œA %^#d8fJðáÝm¸ôÑñ.‹>Q4Æýyw0çA¤z¢{ü*_k=¸¡é)}±À˜|ÄKj`”2ndúØ ¯äÙ'\² M+¡Sé[WäîžN§ñ+º< ý1Š àÛ±µÿŸ н%A¢`\¾ ›®LQt‡ðœ÷z¿_ëÚ¨àcË IEjEïl¥ßñZB?žÒ$Æ4ï—z¨lk…¹÷¤G½Ä/n¡of½ñ]®ÓÌGÆ®žl‡ í¸Tñ±6ôyòŽçªS+FˆˆöÕß9Aéæá|a²?መ–ub`RÕ1$B'KY;ÃÉ %ˆ›Ã7ïèq L#Ñ’ ]Áªr N¾Ñòný ßp]2È&퇤dìOõ!§üI ´ÞLLFý`QtM¹¨Ƽdtú!Oió|ËS‹£Æ”§uŠ—§_>Z™I J_™øÏaûÏÚ´_?n§i}qº¶Ç]ƒcþ.× -ßá(!uïù¾<ú&ѶBÏu†€ëöþ ¹€EWUµíÓGœœÉá¥_Ä/ê7WÞþ³£c/ŒÔÅxšè€C¿‰Žókã*uY½´Ð9†ò—°~uh’‡-_æ·/½^¡pw†¼+dxí)Ü ]?‹†ißg åãœxnhÕñj©„t_Ð-5•T(@^ e|ù§Ñµ€Ôgùk«XàvN÷ÀÉX£{wM‹€ÃÁüLŸWÇVV B£µbß},“ tùúï”8'ªoèÉš®i>eŽ*š¾]Z1óÄnêZ°Þ(.{BðõÕhfÃÕÛÜÅ’€2™ºi–§™,CÖç=v)“¥s9/ûÊ,… L: ˜IŒé!xºK_ò ž˜¸Ã¼a¡Êå´k{–¨{vÇ>Ad9f?ª?½êðyÒg¥Sù@µ„› ·ŸF!&_ oŒf%(Gt›q«já Ê?2%y§½ö{ú£‚cGv—YR%:(Œ–I¼ê)¸ýjì]諌OÝ$åöŒŸs zrNXk¾ÿÓgd¿©ìýrþjG´eZUw8rü·ç؉ء±±ZǰÎe½K€xìïs„ëÙ9"Y<àÒ»°R­ 祘j[VImlò…7ÇóÇBY›Ç±üoˆ)—ÉËÃÖ+Þï~£;,èšQvÄ@vT¢Tn~ ìIíáãªvrª±¸ržf/*õý­iùº—{}ˆ%Õe_xþ®á1ºMÈ{W˫З ž9¤˜‚Ábµ½lµçz¦~ºÐ‚í¤rO„¤ìHHÿ+2eŒ Ä£­3•‰Í`“»×ï¹wåÕ’‘ki„jCÎ5=é‹xã5ð×ò4Z ꪨ#‡Ñ2íÉgD“=…ý/S;n†Õìí•h  ßàt‚ Õ?‹1}Äûü*±uŽZtíþÿXiÛ Áƒµ¡ã0¬€‡A`tóÞþÒDÒ<À6 /–`ŠÔÎó2C$¥1KnÑ”£9¼ì5ÅTOwÔÃ_•â€dŽQ¨J¡„ʈAiX{èI«Õžöò‹ãJÁ÷7I0b0pí÷¨ÒÕ÷²ÌüÀBþÆcgi¸ñëŒnhÝGüŽbÒ É9}úWB悔w;ñI+oÞï‚5luHcÌèÙËþà×=_QŸ«\ VAH“ÑrÎ ªâv€“¦:îM×úó ­ÙôÃ^gn¶“„ñ󸂉W®ý<”Iá}9çe 'ïªöuÓ¬«—#õŠèú—‹ú¨ž›f2fÛü…?)fW>l@&:QÂÏ5«Âý—Dàd@¦í½Kdfþ1á†Ò8;ªÊl1UÂÞÛÚ6u쀰H8”7,òÿ ×(ë)Ë5Vu¾XDÑñhþWB«ZưpH#2XÙkÈÜ­Iâ€AäWa:IÄãÈŽ±pBôçføãÚèDå……ÄÕb†Ó®qIþü ÉÖ ©Œ×ï—„@8‘ÔY’]ÒZT !Ò>•ƒ0cýdFd…êæ=¡Ø4D)›DurñâÎFçCLúÛÇ-A§SbD,Cx;­Vî¢X^ÓwG½â)z!òñÁK;ºÃ®%¹;¼xÅR’™¨ÏÄ ›¶±ÖE\àu·µ²ˆm{‡§–’%r¸-‹„§bcÐí‚VBhÏ”}œÒŠO‡Ð‰…•ã7«©‹ïûjot›u?€Ö»Ï×Ï¢ùÅÐv‚¶Ì‡¶ë"½‘ˆˆÛ’‡n(9-~=’˜´ÔÕvÇŒ5=h&eUFT:¡øä’”§èŸÃèá„°Ræ»ÚAI"NиJ1t ;|Aщë,G |Ø­dmŒ‹DÿæÆ’Å‹ìT÷ö'^%;]êåêè­ìmzËÒŸû¾oF|ÑŸs@êßEpÄ«dpãÙ‡Ÿ:Rf쓜ûÉëò¯çu"mªMcTcµ¬ªåçÜ«Ê9ÔkGHp}0ú¶¹çRÓ†¹dÛoÓˆ(þ¢®RÀ5é@›XbZ2mÈÃià»È 9(€•_E¦¤È[˜o+ü•eHà¹a˜BûD‰zê¾51¦¦tQòU£ñQöz=è¹€¯ÐÍAƒõ¬º}Â=¬ó ¯¬jt :¥“W- IúQ€ÃšYš5G-µ0É p¿Ñ`Øæ"0É1­ßý’/ÍŽ©`%1ˆ‹”_î…ì=Až‡¹0Ð…Iì6¿øgF±æX‚jí·’ØªÀÝ”½õr–üwWMàÌâ”#µFTšqqvÞ³#ÝU”î3ð÷ß>[b×wöPÊÚÆþ6L½.Ç•-oPïªB2ppbÆ}›+kuÔ0ö5µ)0ô%cØÕ]cÆÑݬ3CÿÐ J߯äÓž!m¯9—o›C-ÄìuµK0zZp¨Ž×¿otÞÆfíú2aŸÎR=PŠ!‘øÁò©^Ø=+ZÔ¤~W6>2èÈ‹ÖêV¨b‡¶uÅ€ IEÄåRœñÀ狼q“2¼u`ô#©h¬‘»O C¹>&ÎúIlè3s‚®qÀ–#•3䦿®ÿRçvYÝ4.ÆbJkZÈ€XEÚ™;h¦Ê-k÷¹Œ|‚òŽŸØÉ‹•kÜþמ«?Pãl”ج§/·NêÊæ¼b/hâ~4¼'xLÈT*©LòeÍC/Ø‘ŽËû7H{ëâéòÌØÑïØv8h}‘Ý!ÿd4<ÁJOUÉ8¥JàBúXÍ‚Bz˜ð³È]3$®óBˆÿ‚Ôî¯áäQ:~UŽ[ÉO- ravf?Êõïì‰íè?µ«³e½bˆ>Ý.‘3O=·P–æÑzÔ½¹²5$­i«’)äy’·°6/Âò¤ždsi8ùä×ü?CêQ,„Áv®wÑPÉÜï”õ0Kº–Oñ! †o6ozõê®™qóhqN®ÔMH¤ˆü¼žµ¦îÖòhÈæ"Oéô¯`6Ω„OŸ'yr8ƒáñ”jCë±vù6Ýn»2#B7Ññˆ‰F¸0\ʳ{_f5Ôzç/£=isáà"˜]ÝÙs •{¦ž8'PE`³–‘¯Wä`žÇ<±€ZùøÊfe,÷Ô¸Oi“ƒ@)¤¿ßâèŽQväåÐ^+ˆþ±ešn—Hƒ¤ƒA„™Ïr{Ca÷^=öPBZ,´ŠòMDa²E!ÔÆž1.F?˜ŽÌŽai¿‹9´s´_¹Ô¦ÐúY/ðí‹¢8H«9'ªÐØ9‘Œ3@”aëY7?Õ-€lõÕzš@@‘½Cäìabä ô¾°ã{¶u_ •“`–Ö9˜«vuôâð ·Q‘µX«ÅDÆ’_ÀÖóz8‡]" ûp}¨Íª·Ü?V¸ TŠâ ï}ÿp wJÛÅ¿Å2b“~­ïzÝ&KÜ‹ÏqaªYÚ:Ú_Ť‹(Ù»Èæª‡y3mš"m0ä¨@ÒÔøf‚{ãËѺ¦âA ²?ϵCÈÑ`¦ ¬C’®°Zû=j0ªÂ€Y7x²øÀc˜—ŸËå¥W 0Ý8Õ/®&l—9I¡TÎH¬íÕæOa?Öðm«åÞœ÷J÷¹¸-8Ù îoæ¢Wd”Ÿ¥P%Îë}Î}T3ÉñR|"¯Éo«6zcL 2Ï%§>ù$ wÌ“+ Nzºy}Æ@¸‚x_\‹¾¬À¨Ä]á«ÀuLE —˜Ý¨šNJ]zï(ù:Ó^ NðyU½á&߇\z¨ÄÅŸ[¹.âàs'§¢V‡‰#Ÿýõ /y‚<ÃA:©f@·ªõù";2Ñ3YÃtnÅÛ"”ꌷƒ¿AÉ ’3vé¶«¨í •§Ã܈aGnÑèQ"ssAf° A5òJ1õÔN'<¿ÿ,.0?‹DBC¥ªž©ä{ö|Ü,ã‹à™‰a‰wrâ±¢˜½]©ÂS ýÖ¢y6mé]V:ñÀy âEl™~òºÜE]Õ´ÔK[âGKHÊUzÃ$]#<¥'¶w›bf%±+¥ ¸± Ž­¨ËPµÆAåxù„æEÐùó»›:TMÝ/ ÎuMƒÀj7lFð bì¨÷`™t©b]‰/UYDîïDp³cVþý‡/Á4¸¤£' è03æDÉð‘½l•/7Ò¯Áî.¸®í€ô Œ êióÿçqí…œ»\Î æ›»c?ÂÏ^ ãë™ Ï=X'QÄŸláí³Ê: ’ùýfËS†Y…i2‹¯n*>ó5Sr1Ãÿv"†|x|ÌÓpêÀz(A† 4>nÄÌZ“çÈ–mÁÊÄKÄ÷šü ®‰L7Î%saè@ê^Ìr-p?*©K2®~‹66™fýÿ¹ØïëË9/zxúZÇÊ’Ý*†}´™u¿.ËݣϓïâYÚ̵äO@‘cã–·Úêº}Í]O<\¾‚sð¸B бtü_jÒRõÙ.²#¹î&O1¬H¯ì•‡˜£JJÊ;JJÜïÆ‘OLŠðó™:Ë ÉoIFäþEÙH¾_;ý¼'ÕŽd. ¿V•àÄçý¸UÞ?mm«žyoFšµm¢Ç9ä‰vn‡1‹x9bkRãfÊqö»©Å{ÜÙ^ÄdÁý>+ ÔßÃ"étަ=Œú(:³––ÂwFcõDvT$Ö Íq\O‹ÔåêëëÒ—¶*…Í32ÝÇó¤«q°^0/²…åÛtCwY¼Ê+90+¢ó]lzªðú¸Pð¢âVÆkžƒÛ,æ+2^âÓD„ÅhßÀ ªzœäþÝö²®íV9¸—“©\a–Ÿ_S? Ø(»Ä‹Ÿ°º BL¾”•5@ıg h–ûA±ÙØ×æv”ÏÓ­Ö/lDq&¤t:HúVׄ1p»Nª‰ƒÄ•¨De‰]S$ "/›óåÚ±uu§2ˆPÈ]Ϋåã5II‰}µùˆ±g÷oòÜKähnIº[0ujYHÛ$ëC# ¸‡Ð´†) ;ã☬©ËâF0¦ôQ£®½$-F<ùtRX%Ο^`ÑV£Ö€lòôŠé?§ÍÕãê<ó¡Ù8Ün8å¨jMýÒËÈåß[Šs|%R¦ZîÓË\r@Q|à%S ¢È"Jî[ÐXíÇ2è™¶‚ò³þY°£ë¬I7ÓíÉž•›Vyq²6)îƒGjˆ( ÈŽô;¥™©€+å›Äå ÷¢¥Êfêgb9ü\䈊Ð7…lªp×Obk´jA¥±î>ìØ-y¡<¤Mrò:ÝøY¥|˜zt;°í‰7Ž`X=“–[Žÿ°þÙ¨ài-Óù®š"µzr{wtµ‚zœfÌ^G6I0S¬Ãðàx¬’ixÍœ·|’óÞWp§sh©L"¶ÖéÆ3 žvY¿3И1©IÕÈ 'Wrw”4‚ÍPvëÊVÁ“ˆtfŰÆPv½WÜâwzãøM!mDš”{•éEŸ?†ùÂú s5q‹äHúåB¾é¶½Cg‡ÂdG]A(.™ Ùãö"âßÒÁm¸}OO©ý)D&ÓƒmŒ}LaØÙ |yî«­¡ðŸ8¤M8ïÉ’~ +³pãci¿gTYÿ¤„¢õh çR³à-Ÿ‹ê£-5?£ÊÏï[õ¼ªµç= ËÂŽà¤ýC(b#â)!œåR\õƩFù¥‹ô!hK¾ lè4'pûË|ÚÒÐý#+ÑTS¢ y‚q ô¥§Ý(ÄãSăíG" [I!Êùq4 —%äe3Wõ·éXõHËn–ÈÍØ ÌUS½QûxË$&)\ß~Â]£±WCÊ$ç;/¡Døä"ÁVpƒ¢wÒ&Wš“Ðy8îÎ3‘9<ªg:áÏÔ{ì4hãÑŸjkï _0ÑÆÛqDVA\|´~NGO㥾Úå¼ÛÚ”§³‹ûŸ«Ñ3Žm„ia—'üc­ÚH«Þb¹K\ö6JâþJs»ë¼¥¸ÐÕ„¨ž|òcIÚ@†êüY&ïójÑ»¹%ÓµÝm®±À;Øïä¶šMÄ/·X¦Í½tüÈey›44µBñ¨Á>÷óŒ_¡.Ÿi{¨ênWyà–´ï’Á]/ûÔ4Iš‚ÿy>É|I\cPŽZÄÚ´YQø}ò˜_DËxƒÂ½ý°²‰oWÐîAÿÎÉ“¾^³8L XÀ,¥íü1´5V7.A3;êÍhznÒ²£Ãá÷’HÅØP⯱]× $»‡>¸Õ ðþ—%–…ç÷]®1•M³1„u¥¡1 â^Û¯¥4‚z e@"¨žúÊÈ}R“R\«F?ñAH™ØwœSC&›b<€T,¶J>ÛqJ¡rP=\T!:âŒO–yBO éEcáôÞß=6*I%pm¸óŸín“…jÿ¨QTøê‹¸ïæ‚MýI]\÷ÉCD‰å ‘öæ §¢áä†ÍšÖã°ôòhž˜ëþ.+ûûˆþ¸GV7+±¿œ—†Ulp>Ø +‰™ýßéÁYZÊî}>ZaÌ"D‰O@f$Ég ņ¬Þ#ƒ¾Z,}åXµ¥õÎÔá|×ÿŽAžt`æm¿>°d¡oÙ;ýT¨\1"o;–¨¡¶,óÑf‰È§Ju8UJ‡=O£}ìçUõ¡Öõ·ÑN@!x­â* Šrª+:«v*š)ÕòÌã±D±”e ÞóKK<ÀF“1ÿp™Œr‹ƒ'm½_áC0®¶ Pek¼€¿6¼rÖpwê 6@coqK‘ñ—í¦}ÃS þU ó E4c,JðlàhWº4zØ}@Ê º<ÍÓŸ©´ Xl À7·RJ—×fF/É*ÂÏã†É^v<ÆöÜ+Ü‘@I€‹8q.ª{»ôm„Àü€ttƒ… endstream endobj 430 0 obj << /Length1 725 /Length2 33023 /Length3 0 /Length 33481 /Filter /FlateDecode >> stream xÚl»Snݲ-Z¶íúÊšeÛ¶mÛ¶mβmÛ¶m̲ÍyÿµÖYûÄ>qc¼d¶ÌŒÞ²e>ŒˆÑ‘˜½‹Š§ƒ)#-#@YLE…‘“À@Ç CF&ìdjèbio'bèbÊP75(›:™L Œ0da{O'Ks ¥1Õ¿A€š¡‰¥­¥@ÍÞÆÞÍÒØÀãææ&àæìJçäÊG÷O‘²©)ÀÅÂ`fic –WД”PŠË©ÄMíL m ®F6–ÆKcS;gS*€™½Àæ?ÀØÞÎÄò_œœéþMÀÎÍÔÉåbfNö¶YQA1y9€¨0½Š0ÀÐÎ #ñO¹‹3×?Ù¦Æ..ÿêîÀå,Ãÿ±ŒþÇúŸ¨“Ç,:FF€‰¥± ÀÈÔÜÒ†þ_ºIÚ™ÙØþ›¸:ü7ô!çø(ÿÑ `bjöO¶«œ¡­)€RØÞÖÁÕÅÔ kobêdø—öîN–ÿ ÿM5´µ´ñüÿMþ?’.†ÿˆ!hgþ| ÿ,Å,=LM,]þÑÛÅÉÕô?°ºéf#kjbéjûŸrÓ4ùgª&öv6žÿçÄZù÷yô²’겊š4ÿ³ÿ‹ÚÛ›XÚ™”]þÑÓÐÉ䀇 -ÿ³Aÿåòß0þ__ÖÐÅÉÒ Í@÷¯aø×ó_K÷ÿf Ù{xÓ21°h™ÙŒÌ¬ŒfßÿEרÕÉÉÔÎåߢÿÓËý/“©©‡©1ÌÆª½1wˆUzkX…ŸhÑ|%85°y[‚\SÿRlðz"°Mi‹ŽxWfj”ñ>⎬IÒ ×ÎÂŒ{°X¿¹¸ºAÞY‚ïߟ5½_ïÆ¥2þNñR ì4Ï»î2³O*8R^XcHågÄ$î/ v‰Øÿ,AæXís³“¾®u{ úÿÝ{ÿôvç(_¡PçR>q⃜HM‰½&Ãh“«¹6N+± ^‚Œ1¯95ÕGÙ¸ $ÌïËë£5 tŠüÛÒ3&JÅXg¯šƒJ¡7½‹«_?ÈÀŽÐ‚nm+fôjqWBÝýùu¤(ƒ¸sD`€³EnVC¾±ÅawPí“w*âIÙ?ZìzW°VÃ}“™d»×9 b\™>öæ€ûÌï#‹ÕAöm o@‚‚~¹'_ãü°ÀŠu€Ga²¬S—h(ºˆµ{j,ýO«?ïŽ^ñ]Ko_;#ûOedvnÔÒ]MÝ/”4’Mâi°ŽŠ¦Ù Å9S÷–KlIö‡ÉyæçqãØ-Wà]œÌ¥í#úïÑ'8ŸcÔ󬋴юÝ\èP¦æW± í—Ï)²mTRí^·ÍŒìÖ§áýåtpAKþ°_ö@HȱÔÚ6P\‘UþàïrhÜQŒeø²‹ü>±¿½ÅÊEäXJ«\£-ê*Ù…évð×Ù–°E\}B#ïØ™xJMˆTà²o'_”NžÏ{N•r c.@FíÙåØ~Ûð,í:Õ¸âooÌ Þ82½¨]³Á~‹¯µÝ’†ºN÷H}ç(PÀãå8Ú೚§‡™H脆/HË3·ùôÕÚùoò'AØ$a95ÕÇ£°ã„ìçB¬lwÏó“RygŒØAÆÂW¿äÊöTt‰`b‘4ykíË‘ûJûÂùŒÔmð臿fèëbæ§æÔuž¾œi(Š'9Jû‡FjÊ—>§¬bRŸ»Eè»ÖÞ˜‹A¦™ï¡3ϵú›•-?¸qfOâ+NÒHÒ¾m¹9»çö£Y]FIÊLX U¯\çñSïKµ­]æ¨<œ [Ò¬óWª†k´†pù·ª¬åj5EíNKåqÇýäRc±A›ãM;ü) ¶‘€&>Øû…§aUvŠbå iøé·Q6‡nѤJÓÌruƒôõ²¼‰:+ö÷Ri5tZ:¡·®~´~Ka‚;¶ëþ)«èò‹ÖÚ ¼CxäµðÕú—S´Ÿ‚ú†-¦ §Ú²¤™Ò#É¡c¡ká¶e>'£x_ÛŒ3uJ˜[®%S¸lÌPHzÓü]™ò¤R½ÌŽmäŽÚ辀 qsRLƒè»6{!;„5PÇ<Â]UèÞ‰,ûÞ¥&Š/¹V©j7©X«è,¸È±’†ÛŸ‘‘[üÊžA|N[¹åLð‡VÃá ¾—-1Yv°]OùÚ\»%þ»P»/—£ênÄÇþ’ Sôq ž7å…pBÜí"ÙšxÀ4hõÇú•ir«ÈI;j]€º¢¤2®ˆ rw~òî–¸Ö<Ûè¶^}?ï[R;33ã>ãÀ^kűy”§7•@<žÁ¼y‚O•HwÙW´öqÌuTÞŽ•þ9Ö¸5Vï¶;”*(òLš/†_.\3›8ˆ"N­¡<6üˆ¿+MÇYÖÈ_·~8?Œ×ìó“ÕCT˜¼ $ÌôEyÿà¨û+‘ù w‹¡ƒ˜Vò8Üøfy§æßd#†H™%®oâ;âEfþ=4÷Ãx뜔½-¥2‹KFËÀ†q=hUsgû—}Ák ìÌ;ó¿ynXèðÀeã° å.~;\K;½UÆ.0i+ypBCAôÌ$#= ß8% «ëO2XŸœ Ïôßl¢4$Ó¾ý\¾ú¬©BfU„îÕvIò ¼Ì è°ØcU‰€ 7ÉL•g)D¼’ÓI {GÝ)Q™_†áTU‚èÅДí]›j+Íõ·X½nCÅ:ºqfè—å„–S…‡h¤õa6–Çj1Bi‰ø¯L4BDGH\ÊÙdðpiRN¡ÓÙ‡¦PÌĘƙe7\!Zx «÷f›sO¿Ù®)ø~y K.ƒ.žÎ=9ç®{J"Õ±½‚*¾oZŽj¨*¿!ï`<Î3.ÀA¡ÏùOsZ@VŸâ¬]Ç„ ¢w°ô ‹Ò@¸ðE€3 Cí´b~uœÁ?õ.Hºh;ÀІõ~AúÿE‹˜¬‰_{ÿ|LªQ`ÈZ>žòæ[¢;yp„Õô}%å¤ÿC‹‚ì4ÿÊq9%Lc t̤Ñу+añƒ›ÁÈò+ÒŸ÷ÎÍmX|{ Eƒ î´f¿sÓ gý|Á“a‚áqå˜IûÖØ:t²NÙT¸‘ÙÂþï,ÂÐty ›Ÿ§ N‘R¡³-oŒH} ]ÄN^Œio•%iôïÈcªÝ±pñªÔvä‚§ô!ö¡–BóÚ™c™²­níI€ƒFç1s7ÒQH…#TÖƒz‡Y±Ot ÍÑËV´JÙx|V¶NX5š€p6—÷Xƒ-IÃ"”›B6^ýrq'nCU&ïS åÉЋh–øÄ ‹¶¼ a?%Gö) ^úiÓ'bòã‘€šÕÐÑSAba}I”Ü« ]“Y+jnb@†m’€ùâ3j/ÍVÌfÐ3U…´PT-ѹיüØ53³$S/Pr¤|%×à[Ü»CÖÒ.加®²Ýg¡ê1_ƒ³ÙÀæsÀ³÷ty‰£#yÇ©‹s°íºžAiLve‚¥ûœ»!ÉG ƒöŒÀ([¸}Ù±_G /¿¶Õ·Z%7 îØð ºš€ŸšMÄ*<Ü»ô}2Ë“V衬…HA{ê0ƒGö›Oû˜0dm?Ò ¾:ÞûVöÈ›ÏðÔ¤·’ë3û¦f©ˆÔCú(ÅoÔ«ŠÂ'²A@ÁféÌJ磻œé¡óù‚’‹ù¥´¶.¸ŽŽ®]²$oôԺÖ${³¹ü{rë‚ßzÌ'‹>ãF©aų\»¶°I@n«æ-0Åwpùidk•Y²öÂ¾Š†QŽßÂÀiìZ{±›É'SŸx¬ê²3½eˆγZs7è¤ýîkC8B{û¿€Š1r“…ÐËëé}Ð"TfÛÕÐÚˆ´iyw áÃn²‚ßÐqïôåc1ö§ Kór=rÝuy“6T{ˆ¤1ãWW¡ºÁPþâÜÞþÅÖ«iŠ…Í.Â''AJ늆®jŒ$q¡H~¼eD ÒFüñSÎð#ΓI ‘š=(Á¹§´§zÎo¸ôê ýÃi¨òI$Ù¹ E\úýÈà_ŸáøSè¨Å“'p.FÅc¤Æ€èv_¦íx@E9ÈŠ‰äÂ&7î5Ï}¯“êv±¡2˜ŒýõÌM&95œ5oŠ6̃aÃ"ÜÛãˆx[<¢9îúÂŒæñA’R(ˆª““`Üÿ$‚û­Ü,H®¹´ìJ¹qÆ8žlàûv-òÄk#£¼ƒ“§lóòkœF-ûI`%ò;ÅjFÊ„{Fãaa°ž«}–üëP0—8$Ð@<ªf¸ž|Þo¸€Ð‘…:Ý(E|ët›x–©¶ñÙŸ½§”ûg6ÎŽìò–Ó BÑÈÌ@‡ñĸÇc寷ðþw4Þ¿·x¸àO¤â$ˆŠ³³ÓP'<„k_³¼µó´[äÖêýãXükµl)Uä;¿l×éÐî쑬\<£_ƒq1JkòÄv;%Qé&ZÄ/M_ÄÞ­¼}Ï ‚9sû1¼ËòÐFÊ4ÉXY/Ao¨CK’š6’¤IÉ5,âÃz½áÒ£ÞpΤÃS{#,îG¾¨}ÛoYì«Õº¼¾:­TØLøÏÍ›?::ƒ#&S.qû¯ ß«j€¹ËOxýáµ"q#ée~Ïø±£5ý5ªÿD¿'i¥^›x¦ÿZçÌ€Í ¡·Ë…ĉÇ+ÝÒ¢“³à­/&öìÚ¬ÀÓªŽÐ@›vy!gE€TìÄ™@r¼Â©÷¨ü±K™!G ¹U2ºù~KÐzNgùúŠj*&Û#·ʈÇè§¬Í DÀÁVÂÕ©Á·¯ðÞ þPæ°ZU/¦Te ³òqÞò©I¹ irÆA¾G¶¯k3Ø…¡8tšä¹”$ˆºš“Ñ[t[b8yõ©ç j{QQònnt2)D§ÆØòZú—Àõ›Ð²^ !M«‚ùתŒá“’Û_VûœÜí7GV…ŠìÛë])Üü !. ž  CÔ4 B÷­¿1úH w#Ì?TF­ktÝð;?F|Ú.‡)tbì©c/+m} îÍY;†Ú-íü<ò/â2Óíëi¬£ý0¶[Wèì`žàîýGÿÔÂpŠ9ÿ B8Ô- Ðõ,é¹ñ†ìä ŸWƒ~Ž…Æõö“4Œ«±fÉ牫xÓCF¹×V’È;ÃàÓê—¡å“´såy>mtŠF!ž›Úé[yã¶ vá(XƒNâ)vU"åT†ý¹=¢×+¶z£ÏkáÁÓ8E¼kz6áÄFò`|÷MqÉcÏ ¾Ëá2ÉåÑ·¾8òy'¨Å¶kJò”¦hW¤:i|i*×[ÿ¸Ï}nß|%ßÚ¿‘Q(>´Ä¿ü¾õ©žiÒ‹‹Â5OÊû"¼€Æ·íútÖ1׬!Uµ±|¢«ÙVÏ7’ºÛwî¨oj‚œ(n]“ð£J ˜«Uíˆ_-%°b.èÖCjá›y9ç†Û¢˜;<ü"-Î[󧥋©8üÖpÀ-náã~ôdžÄ5¥QåŽ5Ê|vsc+ÛìŸÐiÊ^£/õæG´Ó iÖD¡G9YlBSŸ(®–ƒõòïZƒôj^ù*Di\¾×väŒù3éÎÁ G_uðUº:滞É=*®•¾V”Ù¹†ýU-ýs8i¨z¥%QO¸àâáý…´NXŸ´5*+ï§á]ŽóË Hd|Ó•ˆçÀcz¡PB”W-ÿ[‘ˆ0ñ¬5ˆ®Ù\YkëA¤êü¡B5òL1‹S·³Ã¦g}뉙¾SV½*Ø9Jõe«QI«£A[¹Y—Ð ë&x2ûÃgyåœ ï«a«s\+†hÓ_ Îâ·NS`Ï6ÃÚ/Ÿ› Aô›³#ïOÃÔ×aÜ„„9’1|¡à%5pV\Æú?^jœGÒÛ˜Áîɨ¸‡áa¦ÆhÚ~Äâv ¶…4õG¢ Å¢ÎÛ_̶‹|*Ó æX©| ¹´|à㨡Àr¼6N\bðÊ/#±©r”®È¡Ê"¢€¸H§”H\áÉ=VB‘õ¶¯ÝûoŽžl%}%¦ÂVê¦.9ûþÔÚ‰ZJtËÖ¸Z!õÝr‘C¸.õÚ¯^xÂC"š×5™€èœ¼3!šÞ!‡G›‰Ji†t6n’#¦ùFQ{òë0c¶„Y?ì õËéÀ©À@T—2™à’žQ~¨K$.Opdò³[mäì×Ó²½4ÅJ#“æ Sz]g#Ou@¯€~Z©„fK‚QÃÖé’í¡è¯ôÀÛƒ ­ÛMÎl&Þk#ÅTa¸õó5´ÄÉŠk¶Á¦ŒÖ±nFÄ(¯’úzawJ *{ 6fQtY0 À"§Ê³¿$¼Ç¨Êi/›ZÙÓ3 Žyð‡BÃ*uˆ½&M|„¿åM´ vN‘'S [¼9¤3Yÿï$¡‚äé~ ºO¿šn6HÕ½>?þÃèü°nÙØúê[wÁÚ®‹˜‘éI=2c:\ |z®‹Ã £“o¡2uÔù‘I¦ˆoð|B|•å„yÂ#PãfŠ!öJÑqaÔKóNfô†ûÀ fÚYûöXó÷¢S½v¬Îø9†ÈA% Ü.ñhŸÝvMï†Ü]S‘XYÙ ’dîM@z1R‘äühôÒ°Ú«Oè1–­_ –V¦Q †<ˆÂd«O|‚Ñ`A6ÒÙ!~-9}¼<²üµƒÅf¸ €ïá„‘#ÃCQ>ÆXEŸziò¡SÎ ìtÙiAÍ5Sj>+;é@5³XC¯à‹”O-S±“*$¥¾ûFûÆ$[~{‘Ýs°ulø3Ü=À¹¼Ùlpu˜žÇwdq÷æoàùÙçñ熴Ònòü‡ÅøE ó')Š66FgKÛ’úÅÍeѱ¼NS^Ôß ŠGPÁÂv÷‹mÙêã±µ6Ùí¸±¥ÿ¢(טã5µðî0å‘tba>ø.|j ýˆœ(”hlƆk ‡Ð-ê2†vé«þúÒaùõÌä;{½ðãÔ}ï5¸­ õ‰@=‘á"wš¿ü˜ÒyÕoðyjìýsw!ô"’M/ôªÑÆÁÚ…nZývD‚æ° ‡&‡îWŸ½zHÁûo›ï¬ù±LH/JÅW‡83lwlؽ·²Ç›´Ÿ.k20—ô :乬& BšU¨ÉSéÓ#Ö(ó|iË"~ë ?D Ù?ËEª3L`À œ3nê‚þƒèá­ÏsŸlsŒ¶¸iQMÞ:¬›æéWõGU!NR‰zÄÈN¤½L™ÜŽ.­ÁΟ+ÑlýÞ{2~ÝÅ..É}r¡úK¦¢ÑË¥vħº…°n®Ê‘ë,hTç…ßâã~Á Ъ·#_\'Þ»|ak7o4Ä*ð°´…(7®}Û…¢Æìm¤p~«¿ ÍëOÈ›‹|áŽï3‰o‚ˆšqvnЗºÊ%)ý 8a‘NÆ®(I¿ÑüdGòÞGÀ¯‡ÆÆßa+WeG)*‘üS½ûU—µT¬žô'Ž’ëX¶£{=È |ô³1›;£‚’CKÐ+2wXt„cC—“Y¾âzÞ{–ÂÄ‹À5û¶·]|C Œù $jq”ÿ’Ö¯`ÓQÛ»oÃvRn}߃4+Â;Ý;—V/QÌè\ÞéTJÑâøx ðª'­ ª.YýØ8I± ®hä)5µ2‰XzjŒi‰<.…R6AA¨`ûx%Jæ­Uï¸Å×+«Û; Ò#ÄO!¤\è´<âó Z½ax«ØPNˆ¼B¸<çè¬=}†‹"ßàSs!ßÛØ§Ûà…õ|±­ˆTŽÝ½«ñ‘ǬÔ/©ØŽ¿Øá"vƒ|{ãö ´ß›ŒdŒdîðçíu~nóO›~à¿x]lm9ä—îð؉‰+w%Jã”j‡Óèêír+ ‡{Fƒ@w—Y,aOpZ£cG¯piŸ¦,áéIý >£;\åüR¸†ò}ú\Hù™ž*‘ħs34ˆªcªÂžøìtRoì³û‡rÝæñjçßw!–ÙŒ¢†ºÓï¼ËÿBЃivTóÝØ8±¹ÄëC«nD¨ìâ¿Åaê8º7ßßžžT— =…)â´Õ÷ ƒ•ú4ê0elÕ>Jyú\€PâÛXǦ‘?Ò3Û•;¥"e&Þ3á'eo.ß™dÛ ªq¼:@]-&<‰$le;DC«Œ/ 3±!è²U.Ì< viSCaÉÎv)©¼û0øüœÀ¹UWE œý›JC¸ˆz9¼Ñ¢@ûjÛ?s¢Y®Ùpw Ë“Z»=ƒ’3¹’5ànËœÛ98ݬ'-1îPl²ZXþµàÜòUºÁ¸”ÑÛ¸êä¯Î¸ŽÏM|&}?›¿¡wp,šÌĉV_ß N÷ä Ž¶-ôHF–9*vA‘Òf’Yi•XÚ51†Å“(Ü×ä§Q_ƒUrä(êÀÅU£Z£™C¤•çî„Ç!¼<Â~õBµ©)ê3dccxhÅJ.þ‡…J;ÖBåÆWyþUÛräFhdn‘u÷Z¿Ä]~éH5ð$2+/Åäc°ÆÙù#¨oa&©`¤™“ŸÚ™¶f0ka)œP·@Q3 Îÿ¥½|S·ÂÔRÆ­B;Wpݺ£'ÂNNÒ»1oº÷éžDGÞ¤±ØÛ_¬‰Gטª*ÓÕ9Õí΄¿‡w þ[i!/°E—ÿ7õ¸¶‚­›û¹®„PƒAT@3Ä×»ÒHFuGóK·pè–w¢–²‰®;¼®…+']þ’5ì8ú ‘—ñsüt@¬‘¡e+\2Ü#°KîwÄhæÈ:ý C IÉW°ú'¥ø€ðìà2­å'2wÁ,¶~ÖðùyÊ/’žp‘ƒ¸”ùÍkų_ö±•Þa»ôÎÜü¿–ŸÆ|lLÍ3b’J™A¤tÕèÖ¨]“I e¼ 2•-Ìñ•ðŽoÈh¼~«]F¸‡Rפ@†|·“Ãá©¿EÑ+Je#5ÁøJT’yºCs UŠÌÝqpÕášnÕ:œÃ¨S§¾ß¢^¶BXx¸K‘s ”ú„,é~{f€zÍ&KåÝ,¡š¢¢°ü½¡xÛ1Þ9‹U.½@¡Ì$F” i·cà ñ+.T6ß,z[QŒËñÁõêˆâ¾óÝÈÜ–jÙÐ-.Ðiø–µYä¸ì§é;ŸÌÇ$‚hJ·ðw¯6'7çÕþ©kq}ð6ç_0©Ç¼²ŠZIC®ž ¼‚ùB)g8ðR<ƒ 3l,ÐÂôÙU$p…vjì^kؘqýô²ÒX<#a–qþi |÷]Âä®6w ³Ú×ogþÁˆV%Ó50Dÿ¸e—êhy$U§Ã‚…Ž;ŸRösá²ã,8*lì|¹” È½‹ y†öËíÊŠÁ·ó¡aœ0ý|ºšIÌÉnµHÎ]ªmv>o7z™ƒÂí±$ªÕ¹{ááUg£özÄ2åBqLÑŸIs=›ãkK¦b\Ÿ†¯‡kL}”åhѬÔwì™ ·[’ƒˆ}{ŒÓDÉHË„©ÎŸYrlp¹.¶BUx|ˆbTl Ežª7£”QúwÛÝf&È:µH¦uªU³ÄØü š†ó$ñ–‘  ‚k09ƒ>Àw¥¾âˆY¹` /¾mcóÚûqVú6j-ôGàvÁ ŠÙ[Ÿw¿yüü{O¨7ïÛfjõ¬h}ÆÙ¡Oî„÷lîÉ.4RA¨§¹ÒtŠë7~°az¼•òfÒ#׸,P…„ø¡%…n‰]¾ë¯ ­е Älß,ƒ³*BŠ¢k_PlÅ÷a+äkÔx¿eV(ëhǰÍÒÅ59ƒTáÀ™Ó´ûÞk>Ë x™MY¸»–ìáq›'| û.fi–¦&8#Ò`Ê]ðšë¦rÞÊón°à\'ý£öä:Y†$݂⠽»ä&Í]ÖêÛF¿gŽCLw¥ö5Zç‹)0†ø’;¹:c‡î¾“mW9v–Ð)qó~üCbY{’z}Îó1!ó)æ8[SrˆuÓ–äma›mOìÂôâP̸B¡ñ†ýp d¦#Ázl„'‡—>zÑb…RÇ’û_ä„àÔu¤/j  ™Sé Ì*nR_ð+z9ó,3`'±Þ…ýëw<à1̪,^:4›<ð³³Íl`L†" Ì}ZJHf´wÍhkE^-¿vÞÎj/D£m ýžc·×ÂÎçÿ ô fn¢E'&ó¢­\{¢d”ÌDãð"^“áb°‘æÖœ}U¼¼‹÷×´ÝÞ„]Tœ º¤ºÄÝ´5Œäf't™*˜§»:‚½p,Y,8xaA‡¤Õ‹#ÛzS– Y?˜Öz³±LÚ·Þkgß)È X¼$Â6UÌ‹8ÁûÏÌ€~AòqýæzÅú¸ý«ÞUîÉ02é©4ö±ó¥CPEÌÒÃæEKÒ*øšã5£†¦–7Y<èv—3JˆHÏJl^É®ÉB³q¿aë\}Ù¡œbJªT¼’«û©ýüwG&K 熾Ņ4™ñ1$pµ¥ B{h–µŽ È‚­wä° Ž´:Æs/ôâCá,M/„7ÂÍ­Pˆ=K"¯ +0]1Ï·ÉÞ÷I¾ÿgš9ÉyfÚ–x‡1ñ½®긒Sè±/9?¤™;5k^ãÌn£Ž Âùmð‡h?ÔÖõb@l# Û;î4H‘Ùÿd3"vŸ+öY˜“ÞþîX cºîÄ®žI.ò" Ù4¡Ûz.—~ÞÙP¦¦F‘giHf³’ÃNcgx)Í›zYsYá9(´Þ¨6ðæÀ¬{¼²žp$0žö—#wQ+úaýÂ"#ßóã\i‡8¹wpþ…F׸¯ÜÊ=ž4Ûù¢Ñ kÓÍÞ•·ô¢&yçµ7“@¿T^ ž)cÝç×ösA'þʧĹûšw)!0 <¥JWú¯†Ä3QãTk`±˜4gØ÷þÛíZîñ¸î ¸Ç ¿ñ£—i¸¥B,gJšŒçáÀÃŒèŒ{ƒ6îo+³ýÆùFÌ?¬ÐµLs³¤QL ÝXda+{:Îc7Nì÷Ô^.V˜v†wZ@ÏLeøqk ZfÁá³!9_S(ðë:K àµO(®R+|nmÈ»&Þî_æóˆÓ¾Ôvq$­¦K;ù™êï«&•93%(Df’‹TÄìýÞ Ý>4DALèξsry­Ô6ibÝ‡ÈÆ}V£ Lñ·%nCkþi¦‚©]¶OƒWÚ£ÓÚ|ê][èë\×VFñÔ6™‡4¤üÏÑažu±óǸ74’%øcìiK~ ¥ }…«< üp–ìÚe$óÄÞ’Úä¡»ÂðÓ?­Œ’Šdù’~êJ¦cöùbR¡r(w¨´}µ¯ÈÌ¿v¥Ù“ÌÉc4 ‰ÅãBs“"¤ú’¸ïï¶Ø¾\œ/=f£†®¥ =¶9«|ªè__@ã!¿ÖX;3 ýÑ"FÜ`a{³ÙLxéC¢9qcÍþ¡-Ýæôi½ã@Ea„qãïÁ(;¡»%„Ö!N ú•Ulˆ7ò…k„!9+ÀAT°ë©  Bfcï÷_YœTÀ¦åhsÇö/|õ“OÎXäfZÎ+nþÉ›ÜBoÍ` q ìþ¾ñlÉS ò§ #K|NÞT¬¦D„ÍÛS¿O»ÈßÈÞŠ¢µÃ‡Ó‹†°×v¢H:/IÚ¶Ò["æ„Ï.ÔÖht[•ì¼’5‹Nba-ËT{qãy¹‹á4/:r\»µ­îÊô;öQå§•»$G_ªžEÊ%8n2aìÎxû<…¾Ân¨›öÉ\æ ò‰UÀÜ$ýZn“Áð@øi…!„DÂ`Ìñ?ÈUõݼ=ÉüGþÔ/à›7#üowS‘"xŠë&˜Ý~|Š>ýcRf™+`ž•¼‘5{íŠó’'…ïœcšþ-•HÝéu1ÒwGòðy‰_[ÿÝÕ‚ º›‡vѪÿN‚ç¿AißkžaD§¿ž1PþkRÀâv×v›æ¶è–fÓ=…ÓSü‘Û¶Ùk›Ÿ7\MìöŸENmEÄ„T,Q…˜9±ø ¦õ¤Ë!‚¨,ö–dqÓqŠ„ š_²ÆÖæmy¯I‰‹¢ö˜ H‚’DBS.A/$ëJ£P€¤ÿà[µ NÀŸ@r÷‹…Õ4©E”ü-œþ,÷=2S£ >ù[ÚSÅD‹K°xm§?t¨§•&@Æ/¸>úÚò×+˜îÁÈüZ¤ÉÊÄ'U’TÎ$žªÐ½á2¬(´A­RÞqŽ`Lpì[‡ÈÛˬ&LQ®çŒÞ­r¸›äû~¬’ zgÝÊþÃAdÏŒ+ YtvSÁ„·_&Z¯¸yþ“õâÚ&¶œËoÿš —:Ê­Ÿ¡!é \©Gì[Ÿ&‰)èýLË€}×Ò³ÁØ éÛAþmg¾$9ã{t>·jõü¬&g1ô¼ä@ ·ÜÊ^­ØPn›93¯l›¬º¼Ú¥'¹´!w[Ú  •ÿw¥£×ìNSÈÀÍ"ÌåO¢@޲ “¶óË!ý‹Ù#Ùbµ@Fµ¨ mõ÷‘ä¶Á§É0뤬X&i Ó¶«ÉŒÝNÊT¦r«œµs¢µ+?x zᨂ&и'íü]l?Ú½%,„ä~ׯ»~2º/-Çç6i¥˜Ö+ Õ‹£ŠnïïéOjÿ@Ræ·ntÍ®bß´Ò¡…l°²­#L ‡(Eª7pZä“úÏjséiŽÊ`{Ù-/ ^<“?»>ͺۺ-üg& hº •N£)<]Avµ™}H ˜ïKûáqå.WÙSž/Þ®G ZÈšpïñ øýÌ=jÊç#A^î[:Y¸ñòù1$ï¾5¯¬£m-isb‘)Ä«²®£^׆ñ¯´s “eó $FcÏÞ¡òÔT€ü‚˜ -%Zëâbi¹À’0‘ŠH`vfÎÆóòK†µOs¡É‚˜ç ÞCwPRvp$<è½?û?¿@Q™íŠo%dŠRoéþœ¥…&w@M;Ÿ"1C„ªÎ³nÐîÖÚáU·\ƒ—ÆfýÁBꎉJ¡lNþ4~ýâÔb§»Goo­Lw9æ»ù1 µ¡!¢aãÏœÞpç}Ái _˜k>F|‚ˆ¾©”"¹Ý»í¶²Êû¸lÞFmÕ 5òÇroÜÌG°ß9¤Tᮂ ò5Åó>®æ‹5‹ªÆ}GKô€…Ânj1P:Û|NX1ï:ÿ<'ú{¢ MÂÑíË/.ò­ã/úÔhZäo”@[Cv\åÔé?7!5u!lE70Kø:f7ê¾èÇë*¾+¹™€Žk–3NKîôëÆJ‡Ÿš}û"ç/ùv¢x‚+¬<¯Äš*""S’ž=åF!­ÕJõúÏtD'« ”¸u<ýª]$ˆ£¡XÐ:tz{«aãæ‡¨÷Å<ÍßßÃÕ¡‘…ü†ÓÛh÷ˆcA4Ç Ú¢pÓÙ?í3ñ\W_¶ÝΠF¼h¼!¾u§Š <@ö2-‡tDß.‘+›dw­êƒ ]›AÛ¼1PßÝAž·©ÛãS!Ê¢P©ZógÅŽk´ë¿4¼ãÂ~ÁÙs|ͳ0ýp”.—ñóZõR9¬6¦!¶ ¦ è.c€;ŒrâPÆåª2yï¤x¥{øÙÅÜ[¡²¡1Œê·•+füB,t!AËÎÃ8˜Þ3)Ù98\Õ¤§ý¬k8ˆ-̤­*hU )ï ˆ·IsïxoR-©PeK\ëÉWÛuQËFÇþÁ£Ò{3õÁX[%*Ú&Û=a”|×/ìêpÊêyiÌt†¢Æi²' 5±y)ãöÇE÷Ò¼ŒÈ*tòÕõ„syØþ-Û±ÈìˆÆií_·³ôñ }ï‰ÛR¹³Dö¸D£€]þ(Óa²ßÌìiçxÝ-~„÷ª”ŸE‡,3ê{ãÙ1Ûoš%xŠxÏü£r*;ÀDuYö žé3SQ°~#‹P÷·²X =ÆïUý†U´¿1[u¤·Ÿ¨:j²Î×Ñ3œ;QD'6GäÎuáNpøé)…d9F©Þþ¾­Q.E)vÛ»ÍÏŸÓÉ|¿b†¼ã‘x¨ÿÀ¾Âyƒ¾3ÕC[©›Ë!8!Ñö"‚X¥Ž©ÏÙ«£tÆ‹…pPer‚4ÅS‹¿PïïÉM~Þ‘«‰\;#Ä…¯RlTÑði›€^Ú{¯™ÉÑt”tœÙP""ÛcbZcùxȸЧ߀`ÊœmJ®r‘a.޽ʾˆEf25Ú‹†ãÉRFtk=Ž9”Ô 5Q:@=‰w yË€LBœŽ%9n³ÉUóæƒÏ+vCÜ IvÔ¿‡V%þŽÅ:¬_ísMa jë<½ð¦hŽ –FšK~,(Mö­=r|õ†èe i¤ ò"sfÄÞ;§»9Vuß ÚÎs-³‡lµ¡èˆwqiäJyÀÑ;àš¤Sìhâ0«"’A Œf=R’jtqeù¸ðbiò ˆ!ñxWmLT)ö¶ÆêGè]Ÿº_3pП D_ù­ÀÃkš9&Ì€Õ¢êî°¤³«6?sˆîŸìœ²87[{ý8h¾pm2/w+Ù.¦a Á‹c°dÎÅb8+^$‚K}YÔAÒÛÞj¤±ÿЬc ¼ [N'¼“L\–é<؇#ô„àõ "n¤ !€x^ì[; Áàãu¸ÜŒ¾jͬYî …W 5ÏN>6*u­Ñà7âJwëbiµ–0«v»¿ÿ‰ UöÑóä[°».^ÅôÚºó¼ÇPU’GêÇD8´È#cª©ÿuy‡«Ð6®v/ó®D5LøT Kÿ`5­úÛzÏ=þÈÙÂ>çpÌÃtò÷h¤µ¨¹± ޱdx»”Mä„íÊ=ßë`9RÏÖÌ5bcÞžwU¡ÜðË©d ûlašXÜ­éÒVÕC)à·~wWMƒdýÙ·ÎÆÎœÂÝ-‘„h0Eq<ã›ÿÿþ®øñþ¬`f"S5,`û‘±ˆ‡h¯"0z/KM­o²Ëvà\Ñ‚ùÃJËXDiÀ¬ ý:·)™Ù$’ë²Ú¬âz—í‹@-õaÛÀ ;…;¥b¶ÖÔÎDHa[ûW¨Yl焘{|ccßÏíVŒ™Ë!çl@æ/o•šä˜Qt 3&6:ÿE¡¯!¿ä¶¹ÁiuKuIlVë»æ‹ˆVC{A/óUˆã\’‹:pÀ»gº­g5NÜ». Ïœ[PH£îoÆPø®8s¤Ü“ ü0û»c뙃ÜN»nñh(Þ±`EmÙ†…‰ˆáδÕ:šÍ ‡àÐLX ßÒJA¸¤=Ò á]\ß@Ò,ϰE¹T”wÿ« Eázá‡<$×ÞqH%RÕÚy?Ç6D‚¥I×`)íØjÂ^øæÌÆ©ûÿ™¡Àà¼Ëñø“;ÎÖŠŸÄº¥IË(5M_Åž¼8x“zp æ¼`€“×ÀêU^˜ÌC¹Ò,3O¤“±9›’½ZÀKÑrc&+[,n«¤º4FÖ¶ITµÌ¤¦‡óó—äˆÄÔƒÒÌ”jö—¸°ÓO Vþ~:ûÖ~ç÷µß~x©Ê~ÆßÆþø‡Ùy¹­ÈÈÙ›¬qEB¶gº©§Ì¯Žþúê»âQ{ÌïWY¦&çM=ŽŸÆX¡Î8Ú&º†ƒ "ÅÄÁKñÃñœ•$…ììå´ä˜9h‡}–qnBÏ»YÞ¥.‚™ióÚQ¼ùYA–b¶Ý†U˜ÞÈxI×€"S¸+qºôØLž :xOIñ,ÓïU{(ßÉ»ÐØÜejåØùAŸŒ_ç Ô™3ÖüŠšQçOëêô ­÷W %™¦—åöBóõ,§£5Un¾\A!$s ×ª°Æ-ÈÕ‚È]•¿M¥Ó¦Ç …ç<'þ6oðG·tb_´ƒ¼“?£7s*eê“X1çŸvÁÞ^E¤+³m;§/iEþ¡òh„¦®ŸI=<*fÕÞ Ùà#Š[j(lVDxÏç.—~°Gð×G$·Šé= —?*ÔUû¤kcDg‰Ø•DéÙ€h(®ÿèZ‘Þ[d˜e‹°ÝZÞÐ(Æäi‘Jíê@pé²zkÒ [_S‚Á?Ü]¾cöIܽf·´yŒ ¦¢åYrÛâ§}ÕxãØË-vŸW`çäu7Z­HÜù~9G]k˜às@CMÅrž¯›ôò®®6;NòlóŽ}_îeÏ‹ɼդХ© Õ}^xþ"'!!Ô®÷ø•GLÂß-ü˰tPšwؤóå@œ£\uÒä÷Žm^‡A®Å¸Q~ñà!TºÎä&úå÷+F+‚é¤% ƒjüJ¿;ÊçKg™HšbÞøB?+\ä—.ýÔªn›Qáþ\ MŠhö÷@kÂ?•v¼,Ð' õê¼ß +=„Ófõ¯·4ϱ"—eϹÀ¶{¬-Ú°h8u”·*‘æ^–G‹œøÄÇG¶© @ŠIݱAíª½ÎQl†ë¬2ÁUZ–8èÂFPN*ŠÄÚ(yQöÕøk¦sà¢w/±@?Á4¯ EÉ“íD;ÙÍkê0 öºŒ‘K›’øi­%ç<Â(é…è†}`øï¤"6¿PÄœ”Ã:nK¬^Û|“Ó‹ì¾gYÒÊØ‡$3•/½-Í„ü_]ÖÜÌ‹ñõ´çRÛbèœ?¹B¦ŸpûÏpûH@³õ¨ZìÀ"q‹ÐøÜ«aeó‘?].Èï:Çí7³²ú78èy¿)¢ãW¾4˜oo3Ð";ÓÚ *™V¹$×hªâ®I°©ìd<¨?FŒâµ0ÈÊ2tLQaš9úí.ºŒ`ÄxUµ~Ö슣°Qr²<†ø´h°Ú¡\a+dþ,Ę́õŠÙôÔm5eöë­?ZP‰E¥kªsÛiÁ”8IÆCI Ê%¬X#$B»^XÍ4>–DÉéáuŠÐëf4%±Äœ ϧÃ?žò‡‹)LŒ²5¾]exºç 9åŒÆ³¥àÞ`ûŸ#Ê$!ö@/ûÀÌæ3pÊÁôšèƒpÞ9 V{fÄ·}+ÿè%_5ÙVyœ4 í»p¯%å!ÁsA3Fe§®¿ú7nªŽáýVÀpº°ûì> ’Øüß¿Âá×ÍV_÷w±¯Ç”40×ø{›› Áï "ø‚IÄ^ŒRð4 ×]˜%Àã_ï2®g99·ô_Ø'Dq¡6ïMßÔÈÂ6bàãíxÝÊc+«¿€k½ç€5 ]ÖÓ ¼’Ý{`– vçû€• Ø“++"ˆ‰]î#ðæàOé*±_¹‰œ¼ÒE5d„&Ì]£‰çѽîÓcl‚$±Ä•‚£¤kãâq9BYU‰£'dängDH’äÃÂò߬õÀoŠ{ý?Ôë "Ž

æ3[“ôoß½4 Êô ’eS5ÅôS|ÆpšÓ?èáDÑŒÆmÄc}zªùucVѤMs]Khm21¡]¹†:("ƒIOÚQóáÏ¿sq)¤‚m´´”‘2%~d€>ES«îb¹㈠¤I ìæ¼]. a0„ u“vØ5â;…÷ñkrÕº¶a³u¦ÜËiOéÝúB¯²(ÇL@¿2q•Ñ´¿Àf° ]´1ú¹­&ÍlÀ„¼U5ÎÎ/î%¢Õ1ÎðÚN̹3],Y <ÜYŸ2"¹p¤wšm¤é[¾ýø¢ªœ™Ç¾uÔ¢>• MNcå´‘Û`Ÿ(‡ÞÉÏ|‹’÷…p%¥‹¹Á‚P*rÌå\žšy_®œ\K O  ½ÔœHÛ£ïPšûÕ²#ÕÎÚ$fÒ@„ïy®vìí>åòQ2-gH1‚!tFñ«¸ ÑÄ4¡jJ3Hû”H­ä×kÝË{—ÒЂ› ö9! ;}6Kv§ë\"|puàL(¥½sJ¤×™¶Úû¨+ãÊ’í¦Ú&Ä­iµ+θ„¼@`‚yÿÒÖ!+UË>ú\q)ݾ}p½¶RJrë =Y˜Š§W™=òØqÇø\ˆéÊõ>ö{È?üÎW§‘Ý>âæç˜47{"WW¯•õrÉ1ãÛ#‚±Ûüq‡C>œ¦ ;vÎjQ$œn¤£ÍnËW-ôHŒ‰yÌþDíŠuœþ¹H'ǼqCRZy›ITp[8´¥#ìe*ªúë š\~ðºëIØ9èˆ*  `Ÿ¹`ë–2¨œÓ(4>Üwå2Û>WÙa)˜ç`ê($@+­×2Ù=_ißãÔUÈfÍ®ïÒPs`­¹ne7?äNG6aœ“?ùWˈ&ß±Ì'G°n±†ÓâŸHA·nýŠÏË.> ôµR•Q%±.sè S/*§²!9ÁǹͣãbÁÓéxß¾cxq1}/^ÒGÝT~Þxì§td–mqÏyöK÷Ú’eŽ1²üû·œº€á¹›ÿ7Zï™#ü`¹x`6á¾fyܩ˥‹æ¼ ùqÓ¼KW@jY­vŽd¸òeú[)[¢*«|»*¶Œ­÷èøSŽ6c¨«‰ºº¥KIe-·Âm"ÊR‡Wv¸Ü8åšûQ¥ú|bñ&wUµ6ý_QíêoQÈ­8©®E©¶uý÷+8¿ùÒ!8ö@9"a2ª&R«$”µø_,ÊÍÅÄæªÝ'÷¹¥†&¿©¦`à:gÞ§ÙGYõý©ÅD›³fg^U!Nû&‘ÇÀM>ü9–ÆA‚œ`AÚ¨'g.)E+?Ì7m" ôk—Nôá?¢×<×r“}B,q}œ•„w€â¸è?X±v}§~YevPíüyQ!d>P˜éÅcËÔJXi:aŽdöÿ#.ˆôLgªj¿2ÐÙ­øcÊoɇlõ¶ÎÙQìýN[¤‚$Wa Î>äYÍ6/¡â7i2ƒmѽ¨5Âc6)o5§¯@ù½yIf[|%ò¢A°`â HG x´q£Ë"§ öQƒ9òœ˜ÈÕbÄ—¤ªê5õ´íÌ·yÒ1cÊȃQØ9%’üqKÝ‘Az²@Y§j«›%öZ,ë°2g•~m¾–• ÐdŽRü!–¾LƒÏ'G)áñw '"Xo*>pÖ,¹à¯Ü·3$ÎÜʧíIŠdV@õ¤™@,Àÿ9WåÝq«j€ŽóÝÃÎŽiV/DˆwŸ ¨òÿ8£®#õ¤ŸŒ ª($­÷NY²T3åÏ+‘\ÍGøëÜ['žr&Úi½@¾í%@3]?ä}°òákö[UTÝ«æø$ª Ö×ÞÖ(*€Ì£2áÙœ7ù>ÿVç±»¨éº•ÁÑ¿­Ðަ<Æ܆,h´6[h-%ÿ–àõÃýÝd} ïG6x‹¢£ÊÛ/pÓ¸t¢?Áò /«mÛêÓ\Êm•$ÎLû îi –Àn1*0È“­L›mŒ‰Å;£k±zÃar¾*?Eä„^ñóÏJ¦¨}]3fL¹Æ =Ç›òX¤úA0¥›Vkw÷ÆÊ/–xÇÆ—^!j—à]`’N©úU¦·^GÈ|—ÎýŸŽCƒ]_‘CMS¸Ò‡‰òö®q¨¢-ˆúFXf¢ÄyE¬_ÍyêS{ ™›s+tTLäuÌHc%"Ÿø`2jc†N§ÔàÔ2·æ7;yú¤X…ͶõêGor$ô§]zJ>ý*Léžì½™*O(Ò§üqt7pb/K=£i¨¤¦g.ÞEñ܇Zë @xé`1‰ .èMÛpÐUbãûçºÔŸkyvŠxG³Ýí¶òuº—ÅáC4ÞátQg@ÖÉygc UqSi‘Óóh~ø…*£$f\ê}8A\‚ØÏJ0q79i¤âcnôqŠF^áÔeñ“¤ åì%èc 3Z®hq;¬ø»Þ þLê¿y )F—û ’7ü¬ˆ¿¤¥sœ¯mÖ’5Oüd>Ú@úÌ^hŽ8n¥9)]Fðï–O2 &ú2oWvN€ÍÂ~ç’ÝU‚éæÒYqÁŒ@Z1QS$/à òÅŠØöã¤÷Áš©/û €¯ •{£wk»*§à%7 C†ºSóƒÞ_Éú°áƺ¯zEéƒ|ˆ!&­ù<>&ŒÜdÞ`EÚ]al…W˜Ej 2dA]̰\%… DTÍÊZ‰`PÕ¸»‰b>b­Ã7u*÷ܞʹ}D.Ñ1¬ýÅ'Òµ89êIh*d%wÌ #—P…¥0(1$ãÕJíÀ3qFõšÀcñ”ˆgГ<ÉÆ¾NQo»ÑhüçÓ?Ñ*™»¯æþ…(7Xð­”»?„±Àyû¸rÉè¤#]ú$E?Êoð­,€?N1)û rRm>³u+ÚéÂॠ|ëj¿ FÁp#ýŸ¹w:? Ö,h¾ÒÔU¸$Öw@Óà69°Æâm­É€H]z¹ÝöaçÍ)ÈlÕx#…¿f¸§ÎÈê7Åöý;`:<íAñݻΚ›Zú Ãûi=’è{¥$ÚägËT¥1v!þ¸P¡'¾!ú›*Ý6¡Ú}ɦúÍCª’~¶‡1Ñ)ò~þx»ƒâÞõ‘ -ïˋЩ" ÍÆ-m-h‡[¢Í PAxš·‡MCØoHÁÈ"s„¸$D}'SI•³8Ý‘oZXát4ß0ŒéK—¤×ľ·^ À6ø_Ï)$Њnæ>\Éî½5iõÕYžF3§T‚’Qj$}T‰ÑSÏ`b“§•›SõçFÁé¾ kÞz6}c‚#ÑMvÙÈ[ WFãdÕ-äŸ|áÙ—$|¬HygÌì¦>weX¶[ÿVë°îœ6Êc;"ùËríè-/¥\b{X°hœàôÿž1+ö‘ï+3« ­âÀ= ÁáÃ7·®m߸_’>½£k°2L¬!¬ãŽ kr«\%^;â¯à:’8+Oqõ›¿æÔà{&°]ïþ’™Öþú0âË¿»U*ßj8¡bë´§P;×6æœW‘k·bÂŒ*Ÿ¨ÑöW@eWOyqÀnâ#‚’˜Œ×¹j¨¯âÄ·í»å«‡ç7¾q°«’Ðó´Æ#*¦MgàL${=õHˆ/êWüK(P…àü2V òî‚~¸Ò —¼5ë ùíÒÑɘAî®N’5r±Jß&w¯Ü,,èU(Kê ´1®o`ç8¢%òJe¯{µ€B§_¿¡k³¹ãþé%žÆøú_JVm׺Üj+ÕYã» 7ˆ:µÏ­ÖQ¤5mÒÞ´x’‚gŒòAýѱZZGà×ÒÍÁ›²uâ\`_LŽ:yÎ å A:jA¶0ðÖ?úÝ7£&ÿ›$ÔxÈð3'o fT¹¯6W:à°¦D“}ï#j°PòàcñéÁ>ªeÛkM†ú•bLf q`*Äiú ? ‡Ñ"ù•«fíß¼\í3ñ3bê˸;áÝöC‘;ðW8`7ëä¸~Urª„Úà ’µÛ$­×’†­SK‹g@½—âö@‡¡›qÃs*¨ÿߥBœ )ë3÷!þ1ÜóÿVì‡~<ëÉuN´F©,¢lušÔ:›ÿâvø’šÎAÐy ÝßMh ±7ccyjóó*õ ¨³+;è(ì)^ÓQÍtf =ËÕ|üÖqГy¦!báÒ±Óì zæÌ÷²ïb[©?O¨E•nÓ—á×JÌÒ>U0€?ÏÜ¥ë>ÔÅ)ÈÕ÷}øÐm27R:ŠÔ´Ñm¢ÓG"Ôžø‚¦;…«2ÙaH]ê•îrG¼Ÿpú?~¶o4r1ëu@Æü}]ÎXG8e¯×@Êífà—r/‹íÍ*uDï~#3€±q€õõ+ôê‰îLZV^Á ËÂ4©óz˜¦ú`8‚JLrb³Ñµ´:nüv¯Ô\²Œ°“ß–"´fê ’ò”šZ¤š=åi!'U…½+ÀºAiožÿ†× èî¤QÞC(FoÍIt:_6®É?å‡xí«|\;½¢Q€ÇE°^1ë.ƒj ÇÂxüO-ø&éþê=I6öek¦Ž¼rJeÌ™~et:ôäAœH&ßÿ º ˜’h*’ ‡LÏš ÈBeÀ—‚ú’é ç¿É™hy„bÜ6Rmtƒ jÒOg—†•¯-µ#P3y„of1ÑÄX•jtm2îƒzvÕ¿ÖóJtƒ‡tg•yÿ†¯àjð;|ÁÙ)<sBQJÐm©#è;€¸xm J;}s'löprF¥çÈS.òqj›ès8#6‡1œÏç,k &nÎô‚©à¾Öl‡5“DEáÀäÓZ~z‘‡Õ¸|š½ŒÇ-‡Ô†Ý²YÒ8ÔIÏRØÀêzóùY 4Û’õIq¼ÏOŽ€Â"x™9%èZÖ ’)J ûfT g†4ÃíÿÚøñ3Zùíª‡þ×ÎkŸëÆ”éR·9^[_ÉEø±"ç¹»ªˆÎÄy™¡šQÔI5›ú)³#0ô­³=AíJ *°4òÇå»Ìa/ãk aÙ48­×%goG‘oÛ‘`®œ^¬sR]G\qňõ9v¿-5‡ˆ§ÌW8Ï7¬]_„tÙ'¢òçû=@C¢h j §õ²¾Àõºó +ørÇ\ˆ¯ö0†©;ˆô‚‚W# a¸ Mz,¶ÔKþË,Úþsï±qa l!ñ3ôŒ"6ÜÅîÕSÃ~›pîHáý×RŽðC…><ËUŸMòƒ¤=#KûS!iCé ‚Æ”ßÄ©•ª³æyµê½WvhNóòNotN‡„Ôqç–? ÐضŠAB{@-¯wEþ d¥œPá†Ä¿«²ë20µåÍÒ¥p¦=;;dvQšÁݼ‚OæÅY´?sà/V:ø…65ŠVõ¿EOË D7»Æ«¬ÔŽOE8Yvì¼±ü÷°õmJ§‡F—Q:¢IKãfñ>šÜMÈß)¯!:់° ímÏrø*g^½ÈEÔç<Ü)µ/xM‚Jzyšw‘*bíê~¸Ê°A»ÑE¦˜GÀÔ&ÓÕb G#•s2î4w!‘°#̳V±[º!–>e¾¹¬7_{F—zöƒÞdÕ“Ù5W«ÉG­keÚÑFíÈ»±“ÇR^B"¿È‘¯öüíU¹v† ȉ…qź³HyCÛäf#cq9K¾ûÿâ+e'Ì P#7cíšSáÁàvC¸óR‹0~ß´C=½?ÙºOÄ»} Ìn©ò4R"Y}ª fòíÂñºçÏŒ Adsn\¡½ŽŽ—z_m êš~¨ˆV(€ú6Í%ã=°¼ÿÒÇò ìÐtXÓ<Ýäk¯†“/…ó¬ÉS'¨½òv[æÎîFÉÈnÔþFWØ;²—‘QÖpÌzÁ{Ù»XÁŒYYý%6’V¥aYzL+ÂZd¡-تjÀO- šÕ¢ ýÜ n É™hüÓE”j‹yå9‰ð5_ò¦yés÷M­’Sß@ÛZ´áR±;…A+>núFԢыU­bœ¥¼z ¯¼wž~L€Ùpï‹­ˆ¦zQhCâ-(‹F,ÓÝ0PWŶÛnDðKŽŒâ÷»nj%–ÎÚTÌWL KdZÍ´EÎfö™wÅÓMl0èxµßÞxÞ<þûc¯·K§ÔÞY–òP•õŸd0Ò~#|p¤¼’ÎÅâÖ²Ë[ ³¡Nrv;צá3$hESzŸ.±s‹%¢Otˆ„lÆ@Ù`"Ñ ’í)Êc9²ôâê˜ø&‚âÁ]a:bÔšzÈ›˜°Hs…›ÜÞ·P( ’–¾kœ:ñô­ªË͸Îü8«U»eÒ™…QøzÀ2C¼H#}VÇJ±Ž]èFv–É3¢v¨Ñ \J>ñ•·ó’t™Â4{)ý½$ ¼CŠT1Z“ÂyH2Ø#R/Íq,U•y3 ™‹ðÕG—lS=Aw1Tج’²{6 áú¨LÖ›p0m8ÛRÍL؆£‘<þ¾Ž; Ü7OYd¿×‹mê?²]Ž^×¹¬‰ä¤Ô õù8E€“ê[Óì(fŠª“ÿ© >SÑV³)ÎÅʶ*¼7]…*1:ÝÓJq׬6A^]]qÆ“ú¾–jÛì …e±g\NÒòJŸ€8\[e/sÉwG”=0:#t/z`…!á 4Gï‰&mÝ ¸Ø³¡À.à3óôYÎBö€‰õK@H1#¹-¿CzÐÒ@H››¢³v‹$±«ù±ŒÂ˜Ø¸ñßñÕ»’¢*Ö‡iô`[Ϭörhͪ÷q‰˜;³£ïîµ,‡D¦<É(¼#:&%*Ð\KIA¦ªhþ9Å!{”ùmçG@ŠÈ&WŒª–yÏ Á¬üÔ‚æQ„uÔ!züÒGùÊD¤9}M¾ž‘HbU鈦Aw!UY– 7=¿AË”Ëu"‹Eä)[•õ† Àˆgss^UwLÏܺÀôÉ=œ|.“ÍÐXî¼@ßæÅ`KHí’ýžp•b6ªÅòTõOGÔ§#{Ú+}Ó–@t‘zó;g¿ù-Ì®NÒˆ aÝ=7¿2àhfí7Ó_óÝäüw¤ÒÎ¥hYX<ùzÎbx[èÚÅqÐò_o#xdãrrw k.ËFùüºÜõimÆ“†ù07˜Šáwhœ( Èìˆf*Þ ¶®>ÿû¨­Z¯,@¨j¥™ä–¼:hþrŽQÇíÒV/ÐÊe¦5’}öXí°ÕrNo\Ú«=€|9²0pû…~4Ùšñýx%xÚ¶¦ ß\uF5µ’ï T_cõÞxÊRÕ|,ÜËMrTùчêh¨wÖ©óaOmnìëþQ ñÊjó@•2¯TÌÿ,½g2HÚxÚmRÅa…+šô¬,Þ×kÐ?ÙÊr¸y ­UÓ¯‡²N@ô€ Žg–Šo#bÇáº"CÔÖÊ™L6Řyi%Y³ÀúŠ$½¤q÷•j,iú˜£1hÑíÚë$T³,ˆ-¥ÍDYLÜ– «SŽ)•G¢$MŒª"1rá„ð­¡•pCØ`¼S%.¬ÞØ4ó‹ŒïÞ <;t^šnÆ÷qÎ…¯PqÔ½˜åH"‹·¼­³KthpÁóÕ¥ËÏ™çKÁB3¹–(ÿoähͽÓðAj?zªaƱ6ìªì§$7˜` 7Û~Î ³¶©°Æ9+hC~€EN7‡Ëý86¨é>]ߪåî}dMŽÑ€öHX4uáȼørL[ïÂËâwpr KSûéT£ÌåÐ9þ¨ÉÒ_¢“o´œ¼ÙÖ4¿Ì³.ËÊ%NtÑ2òêÊÞE¶(Š%c” y( þÉ`t€÷x·-nMsà ´3B)Så=å?ç2Êk(¾’6Zj·sþ„Þ{“œ0å\#>C|ëí쀉TrL˔ڈDïc¿†DÁéð¨#‰z^DrŠ^„b¨‹héyqƒwã{4™°5Jß@Da‚ü‘±P¶0Ðdõ8Ãd-¦üšJÛ ÍMÉi -™[éæo“© Æ0#b€äi sºçš¸ûáäCf¨õâúNä`m(¾p¤6{ö$iÁÆgįl“âCHÅlš€´¬²+¦µ‡]H!FÛPö^Á\Ia›ÞÂf¼±ìúü>ÍMåð÷׋ª~²´Ÿ¡°2ß±Št ï±åšDõÙñŸ÷d5 pÉÓþ—z9#ØIºçèv¦?˜})ýzáIÅ¬ÈøW½·%P S7øû_(ðMt&.£÷5 áƒd5¬{Ÿà*­~  XÙ]öTÆÙY þÇn`${Aíé ô#2/d®ˆ¡…ç¯h&gejnØ?àGöB@ÙZÔ×asAJðîÏTËû~uFå_…㬖' jxÓawž³F´¥¥NNiýÖºK4ÌöD(³õ>‹£ˆÝ:Žqä[U"‚¸ ¦i¹œ=Ä\ßjÁNéø`ßRg|8XÔH-–zÝj Êͽý¸æ¸Hì{KY%ö8° ‚¡‰(.AÕL„ Y6_Í=ŸmË|#[šnM@¼!ØK m—˜,±|uñ1¸YÑ[}ûK¢;¦A@°ç’kþÝÝò-{îU6Á8êIalkîL¾CãÜfó`çÛ7⹬¦ÚÇ#c­¨Fþ)-òðéíŒxåwê1ºì 3æ…‚#ð¡ ó©ñQ¹¿ UŠáî­ ˆÚ³é °WÁƒáT„N@¯AT§xÍ,ST}¸n‡'ËãE ˜šópu}l!Ø8æj?RæÏ‡ôˆ0Œ,µ|P ÆžhEbM°¥ßÎTôáIðÛE7rÍpæ¼ùkˆ|od/y¢}´ôó$Ö"èUó´RÏÊ”æw h32Ø·HgŷÚéŠRàÕù‚¥}ÓUü€Þå‹ ¤FÒ¯ë ‘X”Pƒ=NQBõ¶é…bn' Ê×Àï_±YIGæÎsÔ·u僢fˆ' ¾ZŠm…‚ŸÜWZ*³ÃìµJךݧ9 ð,:çÿB†êÝM²ûy *VÌé¼\[Ò-œ’Êvæ0ÈNhÀn§8hr ±Ô‰0…4öwd–JïêfX¢ÿÜ{ l}Œhi[/(K2»½Ñ‰SÐls ¶Ô ‡¯Æ®‚‚r&tµîŽNaì[Õïö«kF팀Nk&ÅùÖP7íŽ ·Ùüò …õÇ¿+Ô§'‰c!a°«hKgEŒ‚ f˜Gq|Ô¶ÐnØø› ´BK0ûó“aýA@%áå~›$rÙ]Cößí–:#vQaK뜸s?Ý«¬˜BëåjáàMáP%ÒŒ%™”¹1Ѷ'`7Æ—l5—´-6“3:„(k„÷ÛÔF^ù×}éÈž“v¸ü¼Ë ë½:{àê~f V’¹?sôÖiË‘-‡|_¸ÃHFS W^hâ¶€#•îE´ˆ rRTa6ËT¶©Ÿ …89`ÿ†}°Äâñ@VŸîZ®·Y0<õaYÆq4Õ/aÀh·#÷›žDRµŠWèDá˜jOÃ>Èß#ؼJ«%ÃËåÆx\ ²©œÎŒC¬°íx¥°Ëa2sú—rj~è³5lÁ,øoêÔ PM;X…ÀüÛr|”Dü»HË“î5|¥Â <)SÌèÉ—|]÷>Òá›f§`uAÏc‘,Dzc‰ñfeÄj?ÒR)R:ûNÄTËÉíG­äôEÞDb7÷_‚†©(>Ü¡|` l³õˆ7b1ø¯&+Œmúˆºf’/5Æù½¬ç;œé“æ¦Â‹©ÄÅP®} ä^à´+êǕްìg!gàªý²ÒWx}æ·Æ/”ñÛrãÜš`ø™µ¾%p¬ºÚA:½ç¿™;)kAÀÎ&6WÈêÚl³Ò’%«%ˆ¨¶"È Þ …¢QÚŠSó*0Ï^ŒÂ}jù <«òaÒÅó¸`'èÀ iòÛGíE.Q­®=£g0ïE›&Ø,!]úCÍ ;XÊz”Ç *¶–î â;šG„mTLþK"²düoNÏGïQarhî½P[zLª‰‚™Ü{*6J¦¼Ÿ`.›sÖ¬Ï7ÕÞÙõŸ©×Â$ØêÒR¾›2:[…n(”æ‚—Ï7侑akÉòÕô,XñoËÕFn×ñ÷«W QTºcÏ÷óœ©×´žw æÔ~Q¥ß¯†uMeEÐ9ÜéÚ•™’PyZDS£Ë â0ú¤Ï;”Fê›9áÑøÌÉ^,}õ© ’º…æ§•·6åñÎp¸˜  zço‡¸Ê8¬ƉÏkG1›ywspËJÜ BÅXˆ˜×ü< Ê~9«˜ ^x®š÷!&-1¤œoÚõûzÊúYE°}v/îÜhõ!¶8äˆ+=&cxØÝ?oÚJþ÷3íʲ¾Þ€þ¼$S*œ”Íœôc LÚ ãÂi‘_Îÿ(Õ¨.gÊ"{Ù+cm:”d¡íîÙߤ~ž.ŽªÌ¢üEÆ Ç·ÅœÛ—OþÀymd¸î†âU­Ç,ø9%kœƒðRƒR\ÑéK•‡AX¾¸žëkàkÆ#á™°—ç÷B,ØÆ7ÛÄÅ"‹@ß³¬­ñË’füàé‹kîð4~íj§ÑñøŽÖUh1oH€A\4›’²— Õ"v±•M2BR/0Ì͇ ¶¯,ÕÛeÌů\=±Ç›7ÿzEh7~Ô±Á“Ø>›u3ZàMªÑ ?âþ¾}ëåÛÍ÷yÕ݌س¢9ç+¡ˆ}«"«SˆÀWúæšúø`ÖØB\ä:÷$†¯È”N_$Å=J¿˜¼¤ÍÇPóÙŸñ+J2ÛÍãám’´º0 ¢\bO¼. “Äéc1´3-ØÄ‘RÄ:_ͧ¥b6ËâVÿ6ÏW2=³øEHIbÞÔïø€u%‡œ|ƒ6`\ÜìzŒ‹Á³æ;›Æ ë¯DTŠŠmò;r6ÅŽñ‡]ÍŠ91`¦wdÅ@Õ+¶Îã÷ÙøEìÞ¬Bî0MDhÝÿÙÀSý*´àjþ¥/°ïeæ‰RwôÅÏÝ/&‰œ‚ÒB‚<Á×}°ÊLÄ*ç¥qhØ ödDwEïYd—8H<…+k夵v3x\háÒý{i1îÜúXibñ­{MóÔrÝèmã0˜ž½¼á”ˆf¹ ¤ÌŒ1ïDì&1ýHXÃi‡«ù˜gMxŸ¼0wB¢PÈ!n?·5êŽ3^hÙ›6®Æc6GdÔ¾HjyW~Õ¾ÆøÊ½¯ˆ””ÚV|š²äpĘCߨ`ü⢠Œc&ô«cUœž~³ô© ]‡5¿P)@XS²ç½œ¬ú3i…,gãçìï€Ò„µdJ6Í .u½šQb}…}åÌèÎ4¸dÜ ÅcŠ< ߊèŸsÓm/ÁÇSì©fƪM¯WãnAmÆ 1»Ì’.I‹)·7¦‡›œ`g©/ <±k¡IÒçãRáhM@ÑÌÇŸŸªÏ#¸¨ÜïT:"ú¢‹Ö7Ýð„ð¢ÄšþŒeƒš2º¶¦~ž °­Âu))B\Kº:&>Œ\.èZ×A:ÑC5Ų¿ˆqær[úÑs*Cö–c¶žá¸Ö˜ŽÍÃÆþ˜€ù ¯†øl+rÛãæAK¡$ÍÑ-ÚoÁ*V1ßÈãRM%êgGp`Éækµ8ƒåœuÕÍÿÅæOHäDìí¹íùÕG ȇ)^anÈ¡ÞR°9Ξ†”‹¢;ÀÎ?Ê;UBxÛ—$wurÏ«ÍqzåƒE¶ˆªá9OÜ2=ÐiïùÇ‘?pO—®M§Ñ`fX(SGro“qKÒ½™Uµp`;‹w¥]êž'f¥3ÂQ<Œuå¿3׉ÁG ;'^ýÃÈ«(´‰-€ŠùN„˜p¹ŽØŒGÐGTÄ6O §ŠÃîÚrBÍ¢l’>¹-šX§xt¥ã¨Áº™Ð®m­™m>“g*Nÿ†]a2h‘åªKxÆ-E’þÍXaÇw#Bp; HpHã˜Ëb8»‡C3™õ7©ÈC]‘¹‹ó‘§ýs# MBá˜æàÙ–„lô÷Ô g^ŠXÓ¹/‡Y’ýcFWìëÕ#Çø8Å‚<޼Ú÷«aDÚÄ”AÇ$f:1~¤n!ªIE¡âæ4t¼! ^AM·ÑÀf£P&¿Ê–Q/›ÂÐɉt–½AÞë^¸Z¥zÈ@šjÒíô×@%—o˜g.…Ñ!®XÃw°¡`½íY]ÌÖÎrIÚ¿WAÆkÆ“DW‘j„‹í¼nïL‹5³âCy4ý ¥“ÕÉ3²ù‰ð×uUĹ…<%©µÈИñ‚ÑÈŠïð§x6Ä¥nàìI„ÊO¥úæË)ç3pT>ÕÇ(äÁÓ¥H2ˆ'f=p‰ ´-¥sƒ³ °Éð,Ê'BSUÊŒkm 3˜®+‹'ç}W¢Ð6ðPLõ _‚Þþº-£nœŽäܘ¦·‹úåãzfÍ‚IW\cz?J/ ›~x,Ss5†%×qøbV"°$WQÊe!Ý.Ö—Ò…‰³ÍY±HœEÝë6ÍT!2YÉŠãØSž„ú‹V&'£'ßá¾r<"gÐÍHäD}_ŽrFÜC³Àœ%îaÙÖÍ?Šæ…‚åÀ_MZù]ð]ö‘óƒö†¤§%‰]èÑ_J‡iÿ»ÄŠ‚±4göq ,îsÀ6aÃò€ê?Ú¤¶H“ï£\!4~Ô%QÏWÑeÐylÀ•¿êtv5DëG),îÞ*]ºŽwD{Šmqà ¿IÈÆ—Ãé@ +l?- Q‰ó{Pw1¿Á/ï)LÞõUácƒÚßZzoCbö†ãþjÇVkßšk¢j^P›Åò u«K %¸õ|>`X@Kû­#ø0™i?J”¢r<Šjž·çŠC&»³ 6–Rû„K!E–®Ä u?‘?È LöpÀu. Z8˜Êx°5X Ÿáá¸þ¨‚¦ëZ…£ÜT}œccgBë£O.9p8äÑ‹{»Ä¦zmOŽ=t#Ž2AÉk=·ÆÎÓšg®gͼRªFÌ|sîžÁžAqclÜüµU‚â‹KÀ½´”C™ÜKí]½Nø91ÒÅ„‹£#€~uï—z'a$¢ÛÒ"Y¦VÏÇìU8ت`áÁüN(˜[ô¡½Te|•«° t‚øÝ‡…g -÷QûÎÙ,i1ÜEMEZe‚̺>È©à„€|x+18C;î*cyÂpÊãk8 èÍØ¨}láµnÞs›øH ĨÍÛ@‘7ÏÂó˜WJ>Pߥ/(|u¹@ƒá\&!qyYbL£•t a¥ëŽ ©E ¸'{]W‚Qt} á{ž1ŠnT˜þoZ 8 ﺥ<€ö_’Ž DÜ.­ã„ñ­ÅçÜ—¼Tˆ°`ј÷FžBT·€Â²¢ G;¡¬³upZ“zýSÏ©tB°ä„„ƒ×„IìiQ>W<Åë­|,û"òµAºÛ Ù ‘rT ¦IY6d&•ž…"‹¸óàÿÍ>j•â󱯮õ¦…3æY>þ±h0ö€™…Ñ"&v&˳FURçê\w&Mu2RúF·mŠÒ046Øwõ’É*=w¹ffI6ú]e˾Åîe,·Õ?ÎDò4µ¬Êó})Œçj[.Qæt%v&œÒ©>Ä’ÓÌ€ûûÙbkw2ûq\+V,Õ‡›°¡)[{¯Á ùàg†xêAÊ¥.˜A?mQF1…L#/±º-æ¤/²W®€Ÿ.q‰à¨^‹ô\ÜÊÊ`q¶W¤FÜ+kÔßÿ×è¶ ¥…cú' ×€š„em¤izvÙ÷â7—e±BQ…ɸ- ãrÒ¼)óo€E#H³¸WK¸f³¢‚ÍÜe'ƒÌ¯…câ÷åæö=_o° Ý–…Çç+©:ˆóŠSÜîíjm/Ö–¬f]–òîŸÆøñU–K ÐôfÈ*J¥Ñ&0?¶'†šPÇW‡OH؉Ø}Yž©Úû)~þÿ·Xã7"ƒ@&‘JŸ(ù·,ù£DÇÕÀ œ–Án„gds‘þZÉr‰øúç­sŒ€¦«ýý†à-\.¡àB %Pë ’KlYö¿â%°¦uœ ,ñHüd.Oõ0ë{ŽZ“ÚAߧݦè±öƒj/4Á³‹aV‡îÁ +`ÞB®Ü)Qæ "ûH¥ —}Ùxç¾ ëìb³ùQ%ifÄíS{B­1 ´¬_‰8¼ßÙ°- ëaÔdíÞ…«¨‰6ŸÿG£è¾{Y±ÛÕ1¯Ô¾ìxgrÇ>N>ÀÛÀ«Xõ"z9 LðÖO†; Ý‚ÇöR³ðHÞr ‚}\ ¥œ*sÝ骈^/ÓGŒhuHuµªÄé|TßÁB­'ë* ©{ò‡w̼jî ¹g¹N›æ‚[ö¾·ßìe5³(ÈË´z OU¥¬»¥øUüØT•EáˆÉá‚¶{9d!$h„P8z&¡•¢Þê,òãP•µ6É)]”´uîXC™¯oíV²ëD&J䘂®z«”ÝÅâRŠ–ÀÿÂGÁ“K—aÛ!á̉§‹« 3~iÜʹe S8`»Œ«—öË4§È7¹ƒ¹Aó( 3ç¹a ѧ’=D#pcDBÀN‚˜ ²²¿A§Ù¾zL™gôï‘yfßn#r…­ÎòF:ªìô mcAzÏ÷½pø³VNÂe¾^^ØTᢀtâ\žW—g?_Y¸$ééð,§o¶$PªÜÙvìÏçX2üˆ¯2ëM}#‚8 ¥6>w¨fœÇÙ¹Í^!R“Ť%I( mœÿ+Ëñ³›^³ô…(3Yo¤«ÐÚ¦¹ÇÄþù € ®)â +è:±ÿ  |Œ^Uk™§}³)ô嫚›Ôâ²ññd…WŸUmßvÐþlä,#0…Fa…Ü&Ê\sµÏË7ûW?mÉ P0Q¶b# ;Ó¨ÎÊÓšŒ rdzö!9F!=¬ÉMŒò¡D€-ë "W#"èW"÷$hnÖôÂvÍz?f˜AK-Kú@Èæoš"ÐAܯ82шéPÔ‰ÂàJɬ֢ ò\@»0FӼȅ³+ì-¿‡ 1p™5Zá‚«E©møoö/ þºX†G”Šª ³ …¾\@î³Šü2ñ˜!¬©xâMõ‹÷ˆT'ÜÖÆJR<`É·NàúùCìUÿÑ¥ÝgªA·Dµ—Ÿp÷öÆ£ø„™ñ¸ôMs¿ö?md˜žåf©CÐóõOˆ~çÜWã7©Â®@7 Á+ iÔ"rÏ"*?–Ǹ!ÒÎt6[à¶™`Cx ß!‹þ‹£Q°]w*VgRSÍ<¼‚“Õ™\+Ô;Ì /?ˆÕ»~f"…<¬<øÁOÆ™‘àéQQKNðà=‹¦¡’—Ö%À£QþŸ…ÇKчdÖ§œàÄËÖ ÓÁ­·|é; å 0B(17M¤ >®×ÍÔèëšñþS˜i= þ“L½ÔiQ&AmoT7µÒÆ J.˜U“BÎ}ôíÆ7& \Bhëbº)$¡3Z£¡Âã÷œßÁ³ÂŸÎž×ñ÷›v¿OÕ”·vDýTä”÷ÅO¤étqŒRüÀq·wC¹]ò‘"}ž)öSõ™&Ô”ßyJEj>D”Dp-ùÿò™—AÑ4^uÎØ"1{,¾™«L^Â4ï&\××’Ü¡õ5þI¾…Æ‚Ôa2UP0âS;½í1§z.vóÚ/ãÕtá— 4rDZÝ~ôWð"5pÛ‚€©c‘३Ù:FyS©}Uàub®'ÜõVnÛ³•œœžÓ+Æñ%Îi¯<;Tþ¨¡Ë"+väf®ú?G}«Á‚cÌt·rÔvjãW”ñÅ¡ýš½ÆXt_x½~/gCtŸ•-”Shé^¨*¹GR§š~,Î?E µöš$A±ÑqS7^ÔsÌ·+Ñþm°ý•iÝзJ>H2v—,AAsmlïÒ]}Z;¦`ð)í;u–þÿç¨Gw, Ff¢"ïÊñÀú¢øPûxYˆŽ×Pãw~là.,yÃÂa®ÁC/}òZ6ýå;vïiløñ•An#ô ®šó+6yêd­ÞÌÖØ{ˆ#ž'lP?§¼,®™œžèY‡ÀeŒ¾3ô¸¦Pc¯yyº¾›XmÍË+¢Oúc¡€u'Þ1Ì„D†ø³ì5JÌö¹HàÁäRÜdP[ŽnÈñ¿½£:Üm‰€E¸LŸ.¼™z N´ëkCG³0AHr¥’?ø·Ä€* PúŽ.Ç"(Ãp—mÁc7/’(;û#9»3§+‘·³Ð¡¨{ÓYtwvÞÇÜòyîZå4RÖs-Nk£0\N%hl÷êÍDê‹>µÀ_î«u”o›å2OwþK»oJçÆgâÝú:ɶi ²0Þç¿bóTúã/1 ýö³¨:üŽ“õì×o[¸¤Ö†ãºÚO0¦EòùYžhÛK`4;FnÍa·gÄ&˜ì`ê _Mr]ü‡¶¾Åů<|!.Ld3d·Ëk‰õ%:;L»*Å=#ƒA+?¯ŒÞj¢§Ìè<üuñÜ/° î ¢Cœiƒ‡áíë™(—Ét¯°010r©A<¤ëpã7ùØ3[j€ô¯qTö2åþPQüŸ“QxêGÅâD{²’°¼ÊÀEñ¤gÒÚfÉS<ýÓXy„Cš÷¥N6tè bNÅÇ (ãj3‰ ªååìøÐ€Ê®óIOD±¼Æõa«„”µÎn- #o±Øß;.û˜m]F;eä²þŸ«ñ¤¿D_¢¨³y:£¿`òå÷âÛèÆÕWO‹Î5J¨F¼œ:ߨ\ü”ɨf;rÅRŸß2ùQDùŽ^¹dn²ûI܉>ÐV(_&Á‹\òÊÚü l&6 O& é«ÁX ô¥ñÜVxÒf¹gCÅ‚I rpž*5A0 [gzámls“°U_.¸ö¶=#Nó}¢ÑUµ/ÕΦh„y ç ò`|°:»'Te½Ùõ$"³ðmN”ÙNú“Ü÷üØg#¹?z8Õƒ•­^‚¡Vý_¿ŠÅ¦´a,JKÇ›èþ+CuÒO¹BÎÝoXm¿åõ¡Ûº ÀBo§ÞWDýŠöÙ‡ KMÒ¼8DUkgÜL4R:õÍêÿ0TÑäUaÞl¿ó„¸…3AN LdW¿ÅpKbTöbµõ…•”Ôº §ú“BlOGg0k ÖŒ{:gžË&I¹³SnC£ŒH@˜}HÈ0‚Z[p€z¯À ˜rDŽè·èÌïðh ÎASÞ¿«ü¬Ø<Ç…âöãŸÅŒFØÓ/Ø!.ãM÷>&¸†;4ôBç#—â—-4WgSxUŒÈõ1Ë9qíM€Ânl&žútƒò‰ˆ¯iŠüÌþ™îïɸìA›K¨åö"gœª³.–¬Fß@e¢I¿¦„`OÝÐÂ×øð\2¼ña†îýøe63B 0×2éé>[5­N†¦kÎy3ZT)þê%X9tÈïî›MoæQ¡zË=ñd°LöK‘[k‚BU0Œ4€¾ >8ä,ƒQÁÐ’dŠÊ|€ÁŒ0ù³ú;è 8¬,}Hú%Íñ½)ÎS¯ìpݨÂbòϬìAß*æ†ÜRs/¸š„zM £SêËÑèyê(_¯-*ª~ôè%€´Ñš¡•(¸*Ý.Øãqø/\ö廯‚Hv'Ðq¬Ð¤EÊÝ뢘NU‘D…˜{ô·-‘+*]ã7Þ÷†þÌA“ó&=ŸWGqsJ¨ƒ3µ‚êƒoÜß}kjQ~„«¶oüTú¯ ;F¥jO’pÆA™Jùu™@†èî7•1·î­ÍáêÔ(ìÕu¡.„Ïw]2%³ë~ÊÿØú®ãoW­ˆÔ¼Âu"¨L£E ˜UäO™\Y°ËyÌØÂ¦D}è¤(¦8Ø´³“¯©ä{ŸEôÜ£MùÜ/¤‚úÏÑ?±1ÒŽÅù7.1 én ÊðSBda&‘T+Ê£†W ç’Û!Ä„ ý’uŸkgÆ<¶®Ns7L2}¯¼-ì·dDR­â»ÉØçºÅ‹«Q93D»Ç¢íÔ‰Ý4ÝÏ;å.cû‚uû°ë~—¹Š »uÞmŸ?½G×÷Zª’YÝ› ÝÕžU:V¹šÿ›ÿzáÿët¼P1ì4.¢Üóf½ø®* ‹¸»?Ž?‚”à¤FtC,öâLýËt²𢗋™ùBk ²§¥i*.†Ÿßâ8k0c¢–1NM½¶:?{pt£ÔúºEþ‡=KZñ•Ñx)¯1#méqƒKX“aäiùïU… õ´j2KÆ7ž:’é¹éqq1¹æ8H-'ˆ>Ìsç+Ø›2¶S{ÕÞ MÕÞ"®•‚ž¡Qxh2H0òoÑHGó Qù?àÝØœk¹OÓdÁOµ!½íŸÝ„}¦¿O€6yà B˜ZëêÁd¢°à3²±¶‚‡ XoH_ÜHÖU»µáßÇ/H/ÚßÐÃMsŠx!Q·£<°›íºk^ ŽP'Äæ+¬nÑó@ôaË ¶[‚®S–ªÛ€*xâÇÓý¸x ¹!±òû0L¦R1çv­@Ò¬J½ÍbøÝ›ø ód€«—-Ýšp"«'ìÙ!êU:k ˜ÜIF½W?Lڕ䛆æzšGù7“F||¿ï&•ƇŒÕ;!´xŒÝ×rR ÃÑ tºÙvÝ4Œ®KÞææÙaå[%àÅDŸÇá ¨Z; Yî7žzÀ²> stream xÚmR{4”y¦%)Õ!ÕþÄ”KÆ Š\’æ"-3d4…ʘùf|ß7}óÍšr+§Db+’²i•léB[*­]%¡rI.•6I’ý˜èì9{~ÿ¼ïó>ïyŸ÷ù½dŠàÜH)D³¦Q¨NÀÅåÒl©T@¥ØéÉt âã0Š0ø8äxøAR@³…¦CtT‰ÁâP˜ ,ÆA°AÂÂá06 T B‹B¡X­É)˜|…hòƒ €‡B@K @çølòd{s¶?ð€ãK€&œÆË>|X}AZ&. оçÞ|ƒ• J;êØ›ˆ6g­Yƒ*wXÛRmµÝ * ÙÙÓ€£íÊÿ‘+c„à㦻LäãÇAJH Óø8ïK/NÈßÅÁB5C{O[^þòÒ×K¯éå¢àùuÚKDKŸ9nË~sÞH•Ýň4/¯ÌÙ/ï=Y_àÜá’™ÞrµrænqüÙô ŸHRã7•·a)y$˜lª?·»…S ë¸ÜðÅÁK…ƒÎèþªÇg>2lî KŽÿytA@yv¯ Go(€·ª50#Ψó쾬‰µ½…˦è1}:kñŸ¤ÒüËÅùþ½º+â³}·‘'¿¤NZäâYc7pOüL®Ù4?³ödÐó—6#‡˜tUí¯½9RYÚ|búÛ+ƒ¬¸ÀÃÈÏ Ìoø(žft¸ÝZá—®¯å»Uã¤e¨Æ³“-%ÚNû‚ÏEk•±ç8Kchgz?rS%šÍÊc°ísÛÎÉ÷‡žu Sf¯nZذ¢Öˆ!WíÙ×ë`ë*èiëÏ…^˜pu³ÞW}\ß1ðúz×zåÙûá+íþùƦµÈÞM‹–{Íd=€œLsM¿¸7A”ó8(4±ñ6¼‘rOë”þ§žWçÊsÜŽ²úºýáöÏRk]—y•rÑæÈ†º—}ÆS[ÜûU}œøô›¥‰1U /’³C£ë‘£ÃùW-_4>Tj*ª;ìÇŽ7£7¶dŽèvÒ˜½<”ž0C4·ýNwZiVaêΈ.ªÕºùZ_ì7Vrô#SæÔh›ðtýó²õÚRÛû††úóÅ,ì|7Ó ænlô±œFë2÷ÍUˆ¶Æ¦¯$MzõÈ.W¾¬_Éz{éÚÍÊ'JÕF‡©ÚŸ–Ø2â¢TKçÏ ÙÖ3|#B/]ø¥ÞÞéRê&y±9ÞÞZA¶˜[ícњ⸅·KŸÄ1µqi»fà•~×:ÕÊ÷é=’kÆv¯Ø6ݬs-éý€³èjg”U/ÒõaŒñ‰”íÖªõÚïÌj[1¶4Õg•íþ‘#½Š endstream endobj 434 0 obj << /Length1 1608 /Length2 4402 /Length3 0 /Length 5208 /Filter /FlateDecode >> stream xÚ­VeX”ëÖ¦Aix•†”’t˜†A&œ DR”’IIAA¤%$¤¤K)) AAáØçœ}®ý_çìs]ïŠç^÷Z÷zžkDΙ[IkÃ0.ðË4A,#« ˜!Q.D¼m"­ƒñ€$§"ƒˆˆ.! 1h=® ØÁa€ ÈÉ`@ƒõÁ!n@ÌÆÒN\RRêOÏq àâóÏé$‰@¢¤O¸‹‚£ $ˆÿú Üà€+Òè^5w023Ä Ìl8ŽƒxæD$0ABáh<\pÅà? ŠAÃÇ­áeHXÚxà±p(’t î …cCRŽC!ñxÒ7€ÄM Í€€h¨vL€äwÅœÂâ0¤ )F3Çà x(‰%¤ªæz—ÿàIpƒŽk㑤0€q%eÂ0PâqK'1 )J€ Ñx€÷&×r0$ëñ!Õ&aqÈD<ø“€ƒ# 8˜'Á°§ógŸÀ¿uÁb=|NNcN²þÅIÀÃ=\eÀr¤šP©6‰f/ŠÚ€eÿðÈØÆ<ḓ‰ïŒ8‰†A{ø0¸+È C •Äþ;•eþ>‘ÿ‰ÿÿyÿ7qÿªÑ¿]âÿõ>ÿú2ÑÃà ‚"-À @zað€ püÆü¿\ éáó²ÿšhÿƒá1"@HcÐF#HRÈÊÈþáDâ/#½á0s$ê¸Bëq¡9 ¾‘ÃwWH¼%÷ôGÑWÊ’‹Á çBæÔ5»È;›£&3T×”dmg{-, ~Ñð÷¿’ÇÑmîŠ yæ² ÿÀžò‡&WÄp4°V’±•?Y]_Þýq¡½»³ãMóWê–^ÉÌz5§â깂ÏMÜ·—Ðß^ÒÏU3âCûÎA[»hd~– 3¾¦ZÔæÕâwÛpJÑŸy­þà?ª»Ä³rE®Ÿÿ…ñÑ™ê{ÝR•ÝÀüõj/+î’þ<…ƒ"PC°ò¹´ÝÍJu¿R„W‘Æ ]=jW'æ>=@‰ð ‰Â1 +ˆd&ø»·Ë¥Ê -ÿbäó¤GØØ?7`äþUçzÎæêÐ4sKãd7¨É(Í¢—×Iy¿&wyƒEæ½8*jm˜a³‡õvñݵÿO¨áï+mkW0o(âS2°êÕ£‘Hé$Šc;,Ç´^|¤×O Šñ$ó Ïêg#˜ÀJo0ëJû0jàuQàOëãU‚w{wMÊ Y?cùÈWì[Ÿ÷—‰­×ý ÜϘa7™ëÒ´1 Tº_¹ÙÏmËÉQèݸöÍðöÆx"JUcŽGažb”÷ÝÆv…ªë}ÐfDô~ÑÂ|gLĤSëaÅ7¡€%qÉNÅ ©~(øàfU™f7|ŠúU©c#Jf×ä*;•PÖ‹KîÙåW¸ö\ÏÙK*/VCS92L‰Tjì’­0³ˆÉúuü8åe»?@­EÖ›”)} uÐ,iéª?môžOt™G'³_«¦›ŠSŽñ>k?!ögI« CÓŽmŽ7ö×Ãä{hŠßúh@‚ ˆXè‘ö›_³¹ô«×΄y}˜HPÃsÝjñ§< ©‡G;ÊSÏÇzŸN1>¤W}ù.˜ã(T¿û&ïp>¸ˆÍÃEîG çi¦oåÿúYËgÑD=\ºàRž:—Å,ðñEtJØ[ÿhÕOMzu\l×IàìoXÜ4^Ûýa¶Þ†¤Ö•^?¯U#gȃ*ÔF(öJpáµ®·çlkdÀ#EU«}¬ícœªö#,4ƾ:ö*Bª(Ÿ#ÞÛåûn!¡A‡_~—×>±¹Â¸XGöæLvšÜAxŒP[`C§LÌg€ž÷cØùÔ䫰ɹ¿—n QeOm“.·07±|Ìú¸Ÿ fiϪ¸òêÑC÷À7Ìvße‘¦ôÜO#ŠA4CoC msóP!½±ÌG’ ñÝ«Aw©óaÒûu¼[uë¥Èp¨(”?¶hË‚ØÞ 5*ªÐ&W‰nA¼,Y½ýp—f]žÃ*dFÖ7ËÁ»I«-Ãî£ãfäÅnB¥jËþ£,¡Üíß³õ\3ò^Ŷïã Æ]f”ãÛ‹ù>î+7­ú/„À®VžôÙ!ðŠ»ÛoU.Üýò=¤^DìSò¸LB/w¬çúšÖ–èåõé­X®X«ôcÝäiëºóÁP®W-1QÀˆÕ,Ó2wŽø[~:b¡˜0?±S†×-ˆäÒØ­vc ëÍTÓ?ÕÊJ'œcʤr‘ÝGíùGn~ó[þe³O£›Ú›ÉgÇ®mÓ¿+lj],¿ñPT˜–šŸÕ°b¤ ͘ß,OTgUy}JLJk¹·Íó±}¯—ÿ³+Ô,ÕÂB…‚q²Õ=+P.7ì´?(Ïe¥ß8»&ѦÀÆŒEó‰ï?¤Ç1Š”5 ¼ ×¥^Ä@ÜÚY†ÜBó#v“tµ©OÜb:ìU.P~)¶NÝϸ¤n–UEþTWHðLö:Q@x.üü’‚:Â™ó”Š ·°LA1o}¨}WÛ|!w x®VLr×Ù$ A äƒÀ,r[™oi˦ÙÅ|åfR¹+÷õ…„[yÕM­ð^[–jægÊU1àxûö!5`'øycÛj‘ôpgÚ*ZòÂâH‹Þ€gÜõ7ÛˆVL~«Š?÷ÅöÒ¸eÚ1‹:}æ’$;(/¼Ö9ä§¾5òA6žCA9(}ÑúPtu2ñÒp\M›m@‚öÕZyÃûrbåmKØÅâåÊŽú‚`âê·ÄŸ 6jxZ]·÷³WcŸðŽ©+fmÄNEЇàZì´N.ÿ^ô½Kâ)ʇ\¯gÝ6<[|ûµWïGÁÝ[¿%!évxYÉy2“ÚòsÈ|Ö=­ûDžvónݽÉÛ+6›šù¤Û K>{ 2A.ÙOÖèh£6œ¢G„Öaïbm`óuêsÕ±š5<Õ1ÏÌÀ·ÆÅ¨z”F!á÷ó1ƒç‹¢ÒX‚l$}l8öGÉ “µ¬>ÔÅûߘDœ·óè7H•â­aWox¸Îþ”£ü¥;òÖƒ’n/P(ÅÇĈ°Œ Ü(Á‹8Ö·²$òR‚ó€SœüA‰Ÿ÷½5¿Jë bÂäÒ¦ºÀàñÄ… ïÚ[O… j&!ODš”û?÷ò›Ä¨E‘þ˜]sô.Lõ²+¶ÂT-ã-Æ*Ê%º˜ÏÌ×o j† ™,ýhíÔE…_JÊ/½§PS‹<€x<øé¢¢oKÝüù†¥p\@Ê6ì&·1ˆ³·Ÿ±Ó ïgµx›¦á@p â-ÿ„rø ™&s-¬§8G0:Åiù±33žXçÜb¬Eu*<½a9UÁÓ¡oȲÐ~\ÈßòõÍqôlßÅ&J‹¯¸rýÑek«µG×~®ïiyýîHnä59Sp£„›Bõpò{…Î-¾–Ø#:g§JÆ –|q%9A5,?mŠ>ˆå´B¿³0˼E†?é¸iv×0z€Ci¤vù"ä…z÷9l ë:™‘Þè‹PÑÑZœ]Ïìa£@³R¦gRWM‚v·ø†æùRUúçÉšÆ÷stƒ£]a¦¯ëXc4Ì÷[¶wgA·YLjj3ö°Áž!eðùšzÕ±vTŠïš#Õ+Êšd“Òúã¬éÕ øuÞ„[´•sìa÷Ǫ~¡$3¦¿æ£~ár÷M–Ù, Z×TFt¦¾øÞœ©‡~cp – JrœŠxÂ÷±H.Û£‡AålWwS·®›EP_ÏŽFÄ˱S”t‡•£d®®"ÍyhÓEw)Éú0fùg ÃÃËú¥IP¤OÑ;«û›!ƒØ³‘\&kÀ ëÝv½q…óÔæîÁwEoÅ{4Úk‰džVŸ¹óyÍw°šz­xhŠK`‰ã­Ÿé/C‰ W×”B՘܆;oF;\Mßôs¼«E”e¿ðIŒáúœV'»vÙDôéˆií›dóµÂŒGΫÞXu4è9›3±=ÈU3ÿ•K0çêØÓ˜è0[¢V`Ø¥L¢àøZ!1ÊN6–õ54g‚ü2/¦©UÒg;§ª ¼8ã:QZù.ge8/;Çso­²m8ÑtxDkQ5)„NÛ(+«óþˆÈ-*Œ¿Ícaç/£§ppüOm•ñ¸å›]©m^t¹àçÎI¨è{k“ŽRÉÔþ)2Óvu¬r)0¡&û ™QµBßóN§É¼èVœ&…@es÷ä³c§&¿ßJü=ðåKWÙÙ~a‹À#û4Ik©ßƒ½í+ƒ /¼úÎ~]zóÝ7ÝCLT–m O ˜ih>ϼrÞï@û ×Z¦˜¿t(‡—ÐâA¢r8=å¨Pd°’†ØëIížI¯þ¡–iw“]ªñRK¯S>ûÑÆzÙ.Á þ-V×!Ï^ÕA7E›RJW#3/?„Ò};ûÜŽ_Ðïó£ó£ûµAÄMEWÆ{g6añ!‚êŸÓ{&´™»½}#mb¾‡´1’'ªú+ÚtpšÕs„³{¯ysQQ–ÏÔÔxœ?'ß®áùù’E¨.'òòÛ3³¶ ÆVÎ<ÊÝøë$z6ŸÆ€©ªÔ/Í êZÌ»ÄVö™:TåàÄLuÄ9Q‘»ŽvCþ>m›ßÛõ‹?'ûU(&f™½JßÛÉ¥š]3…ÀmÐVé§_òuYz=ÓhuqS!%}"Ëogwc»;n4pZ…îl¬wØpܾÐÅï= ·FÑL“Ü’Ž5Á—§ E™Ð¥û–˵@Í¢*1É}~vŽ¿ÙdçÚT3W±ù8QCÐ'=ü2‚Iî?V‹P\«¸mJû2½ú;ÁM¥}¬Fê¦T2µ­:Ϙ†•ðé6$Þ*›&¶˜°}¥þ¸É.°™DÛ°õÐÐOËèßeñ²ÕJWÌmû\\7[%ø)!®²“ìºá: †ü•AÕL›o÷°° õøÝÒ]”°g0~2ɤˆk{ÌV}¿û<–*[Ä=1ïrcjPÝõñŠû“lÁ޾ª¥R½«óGê\yÁ¡é«[YL‡ß#;'ÞdT$Ãb™7£®€hšöï/ï¶?¹·=P™››Ç f ÍÂr“çYê_ëôsºë:³®xŸ»Œ2E,5¼t×ðL?8-p£Üã–ø›8EïÊ5–ÎùëB¾9,‰É£,þ©!QV›¶š÷ü†v¬ˆ l³÷úl¤™ùŠm‡>£fP´ ÊÇ~å~‘‘ë¡ïyºGo1ÛL“[š’vJÖ+^/íøÂk¸®ò<š æ©QgL"+rJ$Êê#¹/¸³š„a­4÷+©e²„ÌÔi±£àþL?ãqâø„yÖë'u:Ó»¹7f˜WÛ2ß~Å;':£ŸÂïJ‡z~«·êß—eûŽú:F´ak^ຽGÊÉfì®:›ß9§uöfUpW…‹í£¸,ÞuŠ£÷aÉéIEèê4V{ÚWqÐ÷ƒÍ­ €±Eêo9¼ËTÉÑß&#²Wùæ.Âxk/ùJO ×P¹òf=)2pJŽØú`¡×ŸPªD›J3µ§êd°>ø-¥S<ÉA±,·Hg\f|'µ¿ööQ[»­f (ò?ütky¤ª|šW‚6hÑXÎfë^ Èj˜ŠÒ’Ç®`5Sã®ÁQ9Ëå÷–Ky4ÄÆSL®©áz„™©&sÇc®M½¤W—ûhx›ŒÏt-1¹$$ŸV±§è¬[qq±ä-Žs)4Ìf•Wˆ—vC-µjG¯Akæ-:–Â_Ë~2ìüÁWIlv½"øîú×Z¬Ûdš+}¯Qu˜hÖýïG¿¹# sVlJkØ z¥Èéª> stream xÚuSy<”]ÿk‘}7ÈnY2c_’}_²Å˜¹1Œ™1 †ì$”5YŠ,’5"YSI¡”5KIÖI–ïTïóô{zÞßçþã>纾çú.ç:’b6ö}Î0ÆaIeE(l…ô&íX ˆàKSA5³¤¤š„þES C€ ¡qX#‰Ê;ø‘Á–ø¬ …C5àjÊÔ5Tå¯@¶! qa`€0h,•2Â!É–dOÆã1heqd ÂÁ>ÔÊþlˆÃSh_?XÆÑÎYV^^á7¢ ƒÁÀÞ”¿°@DûbÁRÔE0€Áád¢Jœ°Z4êG¬â MúÑ.XÆDÂÕ”ð>€Š)}±II–Zè ,ÊøC€ÈücfFh€¤6EQúsnX\6ü_°‹úÙŠŒWrÄ¢ƒÈ€©Ñƒ©óoÌ Õ Ç 0è10B‘~J?R:PðÀORùŒÀ¢"Âñ8<Ø!h€úc'"‚0‰@"Âÿ/ñϳ²2…F’ÀÞ€/õ~«SaÀç×ÞA" CÁnPE(T ýñý½ò ^( ‡ÅP~‡[!°’Ó)G''Wù?{ÿ;ÊÀG•„(WCŽi¨QBU„©©ü©hƒ@ÿ·"èïæXö«pêÄþ*> ©.Ëü4¬,øŸJV8 €e~›Äª¥úƒúSþŸæùÿ?-ôgc2ó³™_ƒ©Áà½c„…#ÑÊÿ8ðg 3ðËçÿŽ) A#õ±¾˜¿Ç„&£C” š„ôûeŒ_¸#õóÅ68"úÇ›C”Õ”ÿàüÐÈ,@$RÝ÷“°¨?RžÀ"q(4ÖlO¢úA@ý ü ‘d:žŸD=û×ÞM-B$óø©ï_ߺ]«/™PéVwÜÜ'‹ª2_À˜U¤½oÅP!¨ZüE#»ÀÈæ©ŸNµ%ݳé‚'. €´)2pp&pК$ ¬(ÞÖ²‚³®1Ê<ÿíÈ8Ï—suÉòÈdU¬rÓERǰŸÃþ,Ž;JxÛua1È$(RYZÅd½8" ãùûÑÚi  õ¶AýcsXÌ:î îH›¹²ÜYÙâ¬jãðy`pH-jèìIfRýš· KÅqx{DZ¯~mæzí:®'I/|VêcÙ{Ó+7Ä âËÊžb=ÌÇ÷,FÍ"PsÉ(˜?\ò mP¦—Uc ¢õzï]"ž<VQX$ÁG¶`8ùæíÄvsß±§£mc8ŸÏ¾çã{¸Z›ìä;òN½ðx:lx¿Ý|f¶¦Î]„ÆV( W“¬»³|ÆÔÞ³«4OýdZ‹ª?LÿšÖjƒ':ª½:½ “Qt¹Pxá™ýêéõÓRl*7„ Ì~«R‡á,®µNËµÂŽ4ܲ@'½ê4€ˆZ¦ˆPîb¼û ÉÊ ö;«mÒ1õ› ÷™±›nBGÉÝåR?¸nj¹õîØ•ÇK¡äŇû…¦ ´Eö[¡ vlùigTÒ…ktE&'—†ß¦lï&ÙOŸkŒr(žòG?GÇZ"mEs­&‹Oua¯Zç~”:¦Òù¢dÚ¹,qÑ‚Úä’Rztëò¹Í¿sÔªx™m„•{çj[õYÑ9I×e~ÝN¾½¨“ˆW˜b}`ƒÕ+“óÝd¬ïbö»©ŽÑ•Úä³xêÙÀö4õìRBWÆ]^¯h_íÃÉ£ï9+U>œÊ@q=Ã^“¨/à_”ÔPþüû™ÎZVæôŸ3&½MÒÙX8Ö¯Oî4pø¯±ãTh¿Î;¥ܔ÷´YWƒ•Á53D±…ªVÀ}ûnÝ4%¬!$ ö1Óßvs·I{!E±0±1g!~qÏj²V­•BóÒß„?ôî®Øþ½ò¾ÏÒ¸ªÞTP¶Á(Ð ãY=­!4^ßûóçÍrÖÁw²·¶äª¦5ãWßÎr¤u:;Á“4¶ißO¶¯µö=w+kw‰‹w©c9ÝÐÇ%á™úêÙ)‡°÷UãÖzBÙŸl+2ãÎ/ªQÒ”áHõ©H=r¶œYÙP<òÕÏR:ƳFSýz  <ë¥mÐÓEøVÃä—õKÌÛÌ|åßwGhRY(½9w[V½_Y3<û,²LSÀë³Nvk¡Çÿþ¢¤Lb¤/F¦N¥u[|v‹Þ>Þ]¥CìHoÿÈãYæ!|æIýÙš `@`¾Ã~2-Pó­‰ÿTÁNK¦áMåÑI­*1[¯³eo—2‡ò3!4Ò* ËAgž‚ Ÿ¯ÕNÜT•J¾Xùt¯šá˜ò‡×ÃÞMJܹ)|_x‘ö6BŠsÔUðV™]Ûý¾“yóA_¶™±Aá¦]ßÒÝ mÌI«¥¢Ð%RMÁÅ´ª+>Œ>×Ì>U4÷=.ñzàÖY3"ÿ"2Ë«ñÚ Ð픎èA?XTÞQÆÙÅÖ¬ &Œ•Ù}Û–Á:ÆY(ÒŠ­æ*«ÚwÞèh:ÚJ¶­["R¼y”ò‡6 rŽn)·ô—4ô¤""²2 ¡ˆ:é«:óÚ]æÀôA#õ“ôS§ T²ì¿<éˆ2uHO/¶8 Û¿í½mrê¿àyæXÝ}Ö—±ïSWdcUTeE™6¤ÚZûÍHÚóšaqÙ›’-êãœÖ»I ™[GJR²oÉ¡1ZÙß)Táó0Ú~š_êÞ¢(r…sÒô¢»—f'Lþ K¶^[Ù;~ýÒoµJŒ Ã ½I-:œwOu¾v­Éør(? Ò_C:ßH¶>+ÝÅVÍÝÒÌè d‡œ‡ö0¬ëçSzð÷üŠž†Ü%óôe.1Ñ=.W'ô¾Ü©‘Z(XC ²ªÌ­›s‹ 8(᳋ҷ2 Üàr›î¿eaíi yäæÇ¾Í™4Ðxôí»·…NN¡dî[™5­uÜóqDMï­Ù,ƒígS¢fcïI¨UúGbIÆ4·2÷Ó”½¼¯&oîÇÙÅC×EOGEæIÎ ªF;^jpÆkn¼Ë;+ÑcØdü|Ù#(ˆ×¥«½tÚ°Aêá ¹Ö…Æm=C$`.u*6}-s¿ïÕ‘ðG½–­ßYiûÏiõ‘„íRö¾vF@ʦŸp*Ü<µŒ2½²’Û ™O[«î¸8vÈT~N«ò.rÏ%ÎSl’£E,1¡z7OÕëõê'Ï{>=u©ÑC1ô”†ÐI©ˆ]¢ëöftu äTøøôS¦%Ü¢ÿs ½Æ‹ùÄ qˆRz®$}Å]µ~òåÝíÒ¸“Sœ4| ôoØÄëAØ#‘ÕUêM^º„fW]còL’–•i„HúBÑ'&ýi6¹ûãÌ"nÇÌ ñÃI·K‡ÆÍt? £Á]& >î O¥Ë9 ™¾’(ûEi^Îú´\ÌîX„hWñÑæ[@åÝ“áE,Gš+©xv'Ë®H—µÌDà8¸¥Õ*Âæ÷q& Dû„ ãÅÞ~•\· ½6v‹[¾cËbÈå5YPRì1a`ð Ì;˜þè^gWñ ›Ýq¡ž%1<¹°³àÑ`ß½˜Û’÷žŽˆ‘fd©Z(\v´±3ƒ°uó„è®!͙͵kâ Y“ë®xÏã§RL½QìWl`<%ö˜è+sIÕŠ6ÒëÕÌ—'Œå‹;l*DÇ3_3¦ÅGM-S,ÇX´{qæY$¯Îó_¨l²cÉ´ú*~£bt±MéæM¼V`~±¡#Ш)yy¦úÖÜä¶6ü®® “m€+A¹[#j.ðÇeöç3I|5à¼abÕé>S/b7auÔÞ Ô–Ÿ¨ö8ËÄ{'8ÜlÝ4¢`áâÿ8(R"/Kö……Ùª1n×0ÉVìç•ÈÝ@VTê$LeËÍ™ïyÙ©1$º´ï={ô-2®°âA»]°§ÓàæÎXŸþð,nÚÛ2@êpÏ^P¢¹‚í«bŠD´übäø«©ååw Ÿ»¯¿|Þ’ú*wÅ(äàM0Ã'•Ÿhƒù—¸Ä^ñ%Îó>7U ‘¬c+Îo„ªžpFš8}å"¥ß‡NT°*~)ÛdˆiÊ[¸|*œž¿½\}éËøÊèÊà–Ì£•¡ñ=Ìr§}ä+ûêõüU |_™œyÏíž’©nd·°\Û±WÑÂí¹ù“=Ü…`ûÒÕ€ÞUmúo£ºúƒ§_%âí8Äs“G$°G²vØãŒž ¤Ï¦åøŒ ›f E—j½^˜'ßù†óS %”s.H«Dg–¹Ó¼çd‰@‹ øN¦X$œìèmíÖIcL¤wÛÃèGyýAS1ò9Y1ËêSØÕvž;Ÿ)“ŒƒbÅöï«*pøÌ˜ôÕc -°ü¤îœðžNLs&û¥Ìæø‹A~ïâA¦{F§ F§×¬Ôwº¸3ZÝÒhO6íg,æ¼ö&&C™}äàš"Ý5豈ýA‹ÔÈçÈ¡!s¡í>iªA<ÜÇÍØ„Í–ôŠü çg_ó¤×/Ÿ.~]׬óøí…àaDÈý1Y»w"¬°‘¤{/U\UÁÙÞժ˵G­´pzdžŸ/+RgJâõžJ$óØè¡Cg2tU]æ`àïu¦¥°jÞTyƒ¯jcò`ªq|,£A'O¸)’æÎô˜&^¹0Ñß_o’ü°¨Ú…õókeFÔ·â1J©vÞ‘Ïtþb§ÇÚ寺Z¹ {ßu'rq4+Œ}ôC‘ÌÄBd‹µíÒyäzÙ‹+¢i¶[º3“ׂ…TJŒß¢Î„¨@DE6hÖ/OêÝöX«ZÖŒB]rŸÌí­ØH^˜„Ôë]éh·ƒÉÞ&ô®çvV'2]Â^]ga°mõ„ËOÛ-Ë…¢Ø¿üg¡²¢çyjhÌ•Kw¯w¸]]y+|›Ø]¥¨ùáÞ~…Á#‡(÷Ûöˆ„ÑL…y2S‹דw£3½ËÑ> stream xÚmSy<”kND¶‰ y+dfhì²/eßNY3Ë; c†Ye_GB–²†ŠD¶J)YË–íØâØR Çš%ë7êœÓwúú½¼Ïs]÷}?÷u?×#zÒÜ ª…!¢@}"…ËÀTSœŠJ¶BŒ¡–  õ<‰èÉ&*j£àÁ_†ÐIˆ¤àˆ]$…cíJL$@Àa*0%•³0ú&ÿw ‘¤˜“pD?À¤€$<Ž@§t‰hªH XQ==ñ8c ’‰T$«Xz‡¿>Ð!zú’p.®@ÜÆò¢„””ô®¬¬  |ÿf]Œs!bô…7ˆ'zîF/a@½qÌ^¬9©‡ÁQödâ®ЧЬ¬' Ò12V†Rd%èÍê0:D½d¶½ùéâH š.ÌWöW3t'}þ¿¤°8æ›< ÕSÖ†€ó¢‚çuÿJ Cl?0 `r0e˜zà´«ìÞÑÖ¾žà7¾# ˜kþžDO‹Ä“Ák8,Hÿ±ù“‘Þ @!QÁkþÿKü{LJš @ú•ü¨N‡Aì÷½ ’BÂ]ìa20€í}ÿ¬é—‹!ð¾?ÂM‘ «mnbj{QêWúÿ‰ÔÖ&ÒËBáŠJTNé,‡Óu*#ä®jŽÄýÕìGòy–(ož>µ¿xƒ$2Ý•€ø7Kÿ®dJ¤àÐ þÃ00ŒîúþK#ý‹ÿ¥~>CŸŠÇ›øwñ]=0öôãéOdo8ôÿe!=pxß_äýxüný¿ÊýL¯®EpÁƒ.÷Ä‘õqW@Œ9Ž‚výî’ï¸ óí)‚æD2nï1ÓSðŸ8kWÚ’Ét+~£@æ§Cõh"Gp¬(t3"I˜€=M%‘èsúvSôÜ¿÷X½E¼¢Ùû‰hÕ0·ò°ªõR-ˆt¢C¾AÁfu—*|–-ÏðQf½)¿{älΊRr¦®ù[×sÅöŒ&Œ ñ½XEweíW2,Ü<áÜû £fe«™ªp,ïZ„5$\ç¿ugZÇ·Ñpþd᪭è9vn«"o ÐºÝä”—3äDáÝG¬fSýÊÇ6BæÌ ñ*̽-Õº0·È[ìj*~ÿzæ‚{ÅìÏ£WÜÎ}ý¯µ9½l”òĶ@Q¥º½FnÃõ•‘f5C­ô}Zö™ÉeÙ6ö÷-’½Ìü‰ B#‡øù;ƒÆªƒèƒ´¾Üׯ~oáP€jœgP%>§h£~YÙ§ù©Æ,ï? ­?o“{ûîÕ»ìâx=¬éh™=¦wÐŽ¨a|<ËtJ/G{³»ÄLø©Œ‚écô‡^™ÅrÔý²¸—ÀP^ö™ÐÍ5Í Ø¾â"sˆ<¥q3¢–tÀÝ=ú§µ{Ç ›´}zÿuÌp‰cओ_¥…S6"5C¨*ÑÊZ…C欷üo(p]ya7TWméîd‘õ\m±U|ú,û Ðþ´Ò WÞ˜ª’(»^qjý´CJõ”Ȱ²a)LH9:•$vc’AšÀú{¬;¤‚“u™sñÁò˜aga‘Ü®iIÌÒµçªHéi¾&‹§Ö"=àX Üd§D7Ì—3Y-xpÎj7« ,î÷ç|î£÷I½ŸˆšEµ™1=rß½¼¯1ÃÐ2w*‘Èt‰âCŠªmœ‹®k‹6:ÛU)õæ=ök#å­ú‘+ùÛÃÖY‘õÍGÛ…ë¦Äî”’³`;lazAWsüî¸Î„ßò[åOç{,.SÜË{XÝìï¤ wY%Ó“á\eÖxÜJÑö™ôÍI®ÃuþL]y……mŹg&]¥I,dAæ$urYêÀKŽBPEd.SæË…ìÉgAAB‹©#|ø“ùr}½m™ü¬8-$uöJe̚Ŀ;Nâ‰ûìëÉ £Yu¨°ç%·j…´eÞš¤|y!wùAt.õÔ>É®ü3¯·oÃÑ k4=ˆíÇûoÄK·ç\;üLâìÍõs4K¬Ó¬Éê]'n"}µŸ¼ÍæbÖ]F54§™d zD_¨—W0,ä°ðÕeHÓXøØ;øµ*)œdáT* ×®vÄ´}¥b£Fe1èx+hTØ>"ªúûÆÕÉ hö¤ råê3×yEÐ Ñ[ñ^|fU[¸5ÃMRß [bðEÎ:\n]=úR¬’&¿,bö‰ÀaÂȧ¹™ZqlèS;óLyoÀ¡@Ãw‡îpÌåÕ,-™YÙtAŽfÇ·13_Q°¯|>2á»R$Œ(æ°¼ÛyÚŤª•ùe+ƒèÆÇèœÒòz·61ooºkîTüÜ…3=Q–éµk‘•—¾šiéÕßJº½^4}ìiàÊðÓÜrÚ$,5IÝ ¾†nušv[ cÞ´ß»æÀ{Ë(`Ì#pH¤o9~õ]ÓþH˜þ¢i8'¬j[Êí|n‚X{!÷o33œéŽ…‚×Röß{gmëÎŒV³em³ñÃm¹‡^h˜Àjœ{Àð«ÃÛ=þVÝzêC #õ‹±.5*i’«WxïÙúxLÔ¹=Lþp߯6Ë´…;&ª«‰Pª9>î'×±ÍÞWÜictË:ºé: Gz#ñмkd?mæÓw—¬»;9ڢЧ7ÝÈ}ýòFe¼Nh­óð´¢k o°‰{¤î ±þWßß´æ5œ,×2ÚLHÎFôEó>´’¤”¯¦5(ËÄÖb¾õs¹gƒùµ¿p–¨o,:êCä 4ÿ§™+u;+ýrV!DžŽ&šév>öÂQ°Ž/*ªiÁ™-W]ßT¼mh{ÑÛ¯‹¨¦,iŠý)Äšq¬~èpëè¢*—È—N÷À]Žöô.‹¯6qƒ}Ï hiljeb¶ rÏÙYâa,I˜Ö¢1ΙŠò’÷^DµAuÆo ²vC+`5ÐM…دvV‰ÏOú,ðYËÏŽã†ù.e/HGÞ¿f¿ÒTq~b©YM`½áË‘)Ù?·¹)îõ·PwžØËóÁ*’‰Gãwš—„)ÅoÙzMr.sMyˆNŒ2ªåËÔÃN²¦‡$Ôä¶¶A˜LKµ*ñƒÝVš[yÖ£­¶¤ì"÷Icí…²› 6¶g.g›â%vï•b'BÕŸ=žŸ¶V[Ù˜è"nIuY|Ä»^šŠY/ÉÛwa©Y׺ õÜ÷K~^‡·£åNó[ñc÷÷'Ô¶œf–ä&ð=(§OHDìÍTä' Ó%'çúCŒ°äÌ´å‘ÔîàL ¾Ø›6+b’ܳ–„óggÕÝC NOû–¢ÜܪTáãC›üíØNÑ®+OBŠ2:/‘´áÜøÒ2×O[FæQ¤³ýS¢¯‘ý½I§+† Ž)›öŽfæ‹!‚Íw8b“ïÆtÂF†®0‹;©Ù@êÌtÏx,Ýݘ­(m ÞZTml†f\î1½ Õ=?Êz?•û‘–pôÉûÖø—¡+‘m<÷¼PìoŸ.•gœ»|/™06ÖWÏî^ó§fÁÂ‹Ž„¬Îy®…PçEXM|þÎ͘ãTŽäØ«.ÁÄ@3¸×VùäÔŽ™Ã¾—¥‚ª¨5Óƒl7{H ÿY€õTûJ‡ßSÅ¿O•”÷ wªi\/_š¹yq®Zå@Ñ|ÛÎ%'`_ÆÆ~ƒJíüæ'ݧÊGxú´VÍx&“u‰æIä‰z¿Ô™Ôýy…b´)%ªÄg?çcŸ–8VÊÐRƒÕHÔÃ5ÿ¦f&wD.O—ÇŸŠ ñþ›|§ eÿ°=CÛX®HKŒê.³˜m]šˆºÄ›VWä¿°¾³ÚäâÜÆ<›þÚƒŒ3¸a£ßK  Dd˜SC\#p(ŸšsóiœMƒ/=_G”…ö¬dYÉ”l³3¨h¢wŠÇÜcš‘²â[úöbœKš_[’8û¡Ü$½Çf‚Ž¹Ñ¸âîžçºÖ_­!›/6—]õIOy5<1JFÀ°96 ¤±$·ÚÌD¬¿X¾Ù¡I }Òvö¼('ñ^bž´´ßЋu|DjòÚÎh÷éµ'ÍðbM­™_F±Ó<Øníë üE–¼úR%ÌGÄNtí»7‡„ùT]÷5å—¥‰áFa¥öˆ"ÇH©a‘âäNË„€d‹ôÃ3¶þ+™¸éŽæœh¿;ʾ/c=NÞÅ^w 1_¹ÓfpßA{Òñ§»£ oùU¯Ò"˜¼[ÙàÌŒfu_ߺý@×Ó¦f7kiéàòùÍpæ”·ˆåô…—´Êê|M2œÁXe©é„¡¨*”V~ùyóçÊB‰N$üQ‚: ‡tÏ%c² m3ú¥$:Ò†`ü­§#ó|öÇnUqÙò_^ô£æOa¯‹Üã¿.ÉÁôXÈhÛ7zŸ ÖY˜±ÆXzxÎÇñ˜TkÀ!v_à=«Á—ÓµbAè@_å].Eé¬< ×·ñ¦LBúP)ýœk3ñFÂSR5Ç5|nÕÁØ© h+Y7)fÜo•ÉjÛ’~UDÍ€v’ñ±Z™+CÑV˜êd´ IâJ@{%ëv.Û{–$ñÌè/} Gƒ«”¤½Ï—.BLn(Œr…Õ98ÜJk¡Æƒ« ‘‡ ²ãä;½Ãrfsܸˆ4yIœº°¿¤Av"©6³õèÒ›qA®v¡È-ïRµ>C × béíê4S©™Âÿ9s endstream endobj 440 0 obj << /Length1 1601 /Length2 997 /Length3 0 /Length 1792 /Filter /FlateDecode >> stream xÚ­TiTW‡icˆƒŽ ú„ tÓ6( H`@dwq+ª^wTWUªªµ[d1$Äm"Çà‚" Á£"ĸ¦ÁuTFÙ4£ˆFH8ÙD‰óºÑ0óÃ9ã®ÓwyßýîýÞ}ÎÓ¢ãÄ“CZË$R?'`4qDœN¤Rä“Î9;Ïã & Œ ÐÄ«4 €— Èär¹ÈÌcXG*UX»Ä1 a ÆAßøQ¢/HÔã(ÿõ²â ‚ IA0/*úoa‘¡À54r!…4ä0 Dk)$iºÃjØ8C¤‘4/AX<ÀÏBœDÇ ‡¬1äXÈ©IžGÿÉ%‡Ñ$€À’Æ) a$€ü 4 Âr ÊP£‹fxÇ9’ª2ÌSPa‚±6O¢0`(“`pÒ‚)†`PTÀHšÔ ÆZ‰$ÏR˜ÕF`,Gšhhx’VŽ0ðT"q(Èóa§3Ò'øM÷ËR:ÓiÆ”õ+Rà!¥ˆd^¨&1*IZäi¼a´‚2鰟а¯b«!gëË á†x`CS:@@…È3’PUàúªJÞœ¨o@Ò7"è‘óÿs´ #£wýŸ6s4Nˆ†¢"15’öÕ»ÐÃÈP<ˆø\LMRº×Í^ ‡éÅB¥†Â¸Ñá0C½ÒJ4©D:ì$ùR ‰hRÀU@Qh0&ÿBš€EÒ hš{yÉGÅâU$žL'ííc AšÝÒÄÄß3viLØÒx÷ß=†¦”h¤³¯c«—},`ˆ_ #@P£)bÙl)b!Ÿ‰ÖI.E™4õ¿T3!ÉFì˜À‘Z€Z–ÊL¿üXËGÁ|Dã a¼^³|Æq˜N„ê!kH‘¡{M@­q7TÀSB3:XjÜ)‘qÃ}eÀ3S«1£[ô;h\Ãq莙4¬W¶i' ÔB\ôC#ƒûš´kO®ptâ¾êkÁ ç*eÕŸ±Ååñ 33úô]îËKW=?ò™¤¢Æï—“º†GìPKøŒÖË•ö”‹~ì,x/ÕÉ­ªðí¦é§}Ý[?ñ\Ql“Û¾xKJW}D³åRé¢Ö×bbW|>Ö¡æôLκ«ß-ÃiuaÆ„÷ûXÛ4|ç±­>3¾ÂÌîhÑ£öé_úû\.\¹T}QßmUÕò®{þÖ?:ûcÓ¶?š–#èVq=ß Þ[î‘æñvnø˜%O7[‹T‡ß ÿè˚Ʋî{ÜWyCéëÇ‚×ø$C‰A®ýøBÌe³<¹˜9Ç,£,›œú©.îfãØÁ·"Þi‹ÒYÐŽÓ>xü°²ÊŠõš»Ù:/a[mòû“²âÄl¯[ª—MÝ8±u î~½®íŸv+wÓºs[Þcؾ­aúõš ÏYzþ]Ó·3à\£,0uíìõª³uq÷NN>U™^H«¿Íg.oI-þ½?^MNÓ7?ü°ÆªÎM\ø]ÉZËÀ÷òÆåpÄÁE>N™ÙÉÚŸ›j¿3¸¤O±™£7øfϽãR­®krwŸÓª^Ýpý~¦™÷ÃÙå!§Hg4ÇÏNµo\üý»‚’ºÄ æËbì-ë±[ í*ןY¥gë»lj{̽ÒÅAƒ'.¸œ«£¿YÙ7Ô7”›àx8L'ñ¬ö()¾nä$]y:âšO‘cÁ­ÿÆ)¡ì|ÐÆÇ3OEÝô?ßyód‹ÍÉGþ |i5󅾸îóîÙD[{Þ”ea1ÙRg{ûÛ=‡»ŽÜï_ê0ÕÊ¿¼åhÁñ,ëŽñÖåÇê¯è:YÊ‹*×LÞg¡œà³"r«]•j†(éqü„Ÿ0³#9ŽDòO`÷üA…GE[uwÑ ?7ßECv‰¿—ïƒIWq!¦ ŒÔ§ï/ í¿”“ÓP«tHl˜6°ÑpLÑ•?6JÇ­6»»®xϪ¾ öØ7Ù»}êç©¥yÁΉíø¦ëíÅ”ânkOgí„æT î³)tÎ_Âle;æ/ßrhóÆåÛØ /þ@fÍÿbü¦UV¥Ýÿk×q endstream endobj 442 0 obj << /Length1 1626 /Length2 14184 /Length3 0 /Length 15030 /Filter /FlateDecode >> stream xÚ­·eTÜßÒ&Š»»Ó¸»»w·  4înÁ îîîÜÝ%÷@ðàn—ÿ93óÎ:wî—¹ï‡^ë·KŸª§v­ÞTd*êLbæ¦À/ö®Ll̬ü%©›‹šƒ’Ÿ“"Ðø”s!PQI8M\Aö’&®@~€6Ð 4°³Øøøø¨Ž^Î K+W­¦š6ãIþ1˜zýOͧ§ ÈÒ@ýùá´up´Ú»~†ø¿vT®V@€ÈPVÑ•U’ÐJ+i¤ö@g[€Š›©-È  2Ú»éÎÛföæ JsaþŒ%æ0¸8Í@Ÿn@O3 ã?*F€#ÐÙäâòù ¹,Mì]?{àêÙ›Ùº™ÿàSnáð/@ŽÎŸvŸºÏ`*.®.fÎ GWÀgVÉ/ÿÆéjeâúOnЧà`ñiiî`æöOIÿÒ}†ùÔºš€ì]®@O×r™æ G[¯ÏÜŸÁAÿ‚áæ²·ü/Œg ¥‰³¹-ÐÅå3Ìgìºó_uþ·êMm½þåíð/«ÿ…äê´µ`F`cÿÌiæú™ÛdÀòϬÈÚ[8ØXÿ-7wsüŸ:w ó¿DûÏÌÐ}‚01w°·õ˜-X”\?ShÿïXfþï#ù¿âÿ‚ÿ[èýÿGîrô¿]âÿ¿÷ù?Cq³µU2±û€ïÀç’1±|î€àŸEãf÷ÿr1±Ùzý9ý§µ6ðßhÅlÍÿS'ëjòÙ1{ËOZX™Yÿ-¹|yÍU@®fV ÛÏ~ýK®iot¶Ù?yýWKLl¬¬ÿ¡Ó°™ÙØÿC׿U@{óÿ„ÿIÕ¿À³ÈÉÈJ**2ü–ë¿ U>‡ÀUÃËñÛÿ(EÑÁüþ #.îà ðabãæ0qp²}Þ½O@|ܬ~ÿ‡”ÿ Äö_gEWg'@ÿ³nV¶Uÿ?~ÿu2ü0RöfæÿŒº«‰½ùç¤ý/Á?j37gçO‚ÿuù?«þŸçÍ<è 4CX]r0±NÏÊp­ÇÍ™’Ôècƒ u,kÒ(. ¬uè HØá«2~­ enžáo÷úuâø¶/G0Ö‡cKÓ› ü[@äGA×_ˆ¾IÝÉÃpÄòµ 9ãT;ÚçbQaJ›Uë`wJUíké+ ñL'‡3ÜÅ] …{a å½#Š¿YZcvZ3F}ÑÉ)uÒÑÃ=ÍÐøèÈpïtÿ>!Cn<•€ ®Ê Y²«—±óm“Ù;ô³;#˜æ¸›£žÜªs‚yKG¦¢EÍ&}@Ë CóÚû;Å­ Ãhq»ûRIU·º£…i'¨Ö¡¡_Ä`Mñ™dÐÏšñ}1-®PáãîæxX¹Xê¡å8ªëÛh#-û0#Á˜H¡Êå=9ãǽ…عRf‹¿5˜ús)½ ›fD»oûÁùÅÃøÎ¡t3½W.¿¡šÂ¬•èT Â]‘ÆH5w.»áMÓ„§çò+äó­yÓ^n™Ž¦CæcÀˆÞ $$ÒëÄÖì˜ò㎕ܓ½nåñ3ÕέYÃ{!à΀֖°2¶Run-«™6?„?–ƒñ™'ŸÀ‰KæÎIß¿ J«ØƒŒîX_¤„ˆ+U'éù,×¹ú¼pI_ä[aæøZúq7qrÁwAÔE£iéùçiéÇ$‹ÌýØÒô®/ŠœÊ %Œ”üÃu ¯onBYÝDÃÊß] ˜涚•ሳ¿Ÿý±aîmó奺m®¶ tÃìþ×›©qÎL¤3?#…“À º &ê’áøzÿu3>ÝvîcÞPÆ«u¨>X ÞúçýsIæ*-Y#cƒ'Í”;˜çûþàufÞBX×ø—“N $øûÞ)áÕEû£—í{0Ãw½ØÛ„ßìøºm iÄÀÉ*Éâa‘Ƭã«(+úP£w‹Þ1Ç´ê »ÌÒÛ¦;Õ–«Í¿ìLêÔ/œf5¾„?CÈÖŒaL›Ð<<ø´ópç°;~àõ~ÅÙ.6÷K`2¾™4ÔJc…üH³r•›);p@¬îƒ] ¼ô„î‰:Ƹ /7]%RÙohé¬ó”žkVä§°´üÁ€ÍØoÕÔv ø‹’ë¸Ç>°)¨¨ìxn6Él†·8ùý/ÝÆE^­éQ7qÝí}e™›üû«?rvT…¸yGCt½â\§Ê‰~AÖxLþö}ؤמ¾—u'_N¶!µªS¾]3VàOÐUß=aAÒµŽuU'Ú7jðï sû- 9ùk(õÒÐ"º0?(kž£RôÇÝ­Ø’Dci¡mŠªÛž®V÷¸/ó #i’üåÌÐéuaŒ^Lé=[Ý4<ÇoâNÓ*øBzò#T~Kd8‰dåÔg€j‰÷-÷Í<‚öGy–¯u‚¹¯5ØÛ';ÖåÒpÔ¸j7:Ûk‹Š —Ñ|ØëMñø_NJ×° Å\k§Ÿ–úrÇ™n”§*3ÀŠ+왩‚o_Æ-ágM4é]=’ò( öG•=y•~fLIwRC¦V#{êº(òóx[?_ÄèÀŒˆ DhöšŸeª;U¦Lªö\Áî™ì#œg]˜¤Å!Jâ½¢å¸g€ásÊ8E‹c&t)!®Ÿí—½êl \"`?ú±ˆŸ1jõ3&žÕÏM\¸|Ö8•þ\ç€ R½u…‹wÊ4;M"ðÜËõV¯šååäVK¸³2GôT³Lº¿o¸â­'_®@’Š?þYàÈ—ü¨TvSä8Q²óíjAÜQ]µ·®Oš¼ÃHg켺ªŽo/ à†)ñ–sµ¡âäŠ#.Ƥñ‚lC_^Q3Äæ¼!>î…~¢mx•üV³$ùR…ëº2ßÖxZ« u±+59©$ß¿<@ù5ºÂûÈ;ÞÒi’¿´ƒ‡û;Ùooöï[ýÂä—|‚Á’#Þq¤öµ1ê×/¿ºÎ×5] E¥H[Bÿ¬ÇkÀáAݽ¥¯I¹pdâŠûL&&&¨4­[Ôãàщ>ÄßÕÝd>H™¸ÔíÐüâ‘rÕ•0øC,†ÌWé½Á»\aøñЉ,¡–L_¥‡¯·3š:ëŒØ^‘¾~Ž‹5³ÌQÕ ðDÄáaO¹ý õbvuÙksc{ÈŠ ÆxÉ$ú}lsǨm;%NâûQ„íò= \Q·ì¼â1vÆ€+Eff!s^Q~Ñ›°³~Æ™¡ëÚ†*"ªk‘||ÞŒ#a>¹+5ÿ&›Îg¨QëC2¸yxfY{>ÈNÕî÷<]7Þ]¸ðl¡¬ofêÓží²(ºúQ§'+èQ­«>¾Ç)‚'V¼¼wð uå­rŽxO€¯©ÃƒkjL”Ö1…TØT)TªŽi”}t¦Ý#¶®.1žê$Ž.ÈѧDøòT½Ô²i†Wƒ#ÇkZˆæ{„œ‡§,Mrg®.ÕÖ¥ò{rŽìhþ×ÊKÏiL`ÓвÁË¦Š Ÿ4À‚Çq½Nü'©àÑäPr°!8Xi®ûÈ@±¬{;­ ¬ŠÿYF“Ù]Áeù§!‘A½æœÛæ—GúeqÆHlÚáÜÔriÍntßX²(”9YŠgˆEh|ºÔ@~§ó]Ÿ3I¦ì0ÍW‹ã`ª‘õ~FS¾k9ÓÆô´:#Fô]ÀäüŸ®¥WÂoœ‰§zMwõ7Úz5ö¿ö™PO9¡J5¥(0©¿9¬ç‡I ]Õkqѩˀb=1T*ÅØ°7ÔŽ_´±ðgºÛsuoüì¦ô‡p2Óª„Ê?ƒ»:Ë­ ÛSøð ãêXü¯ý·ÎsiD[_Z7(z)Cs±·8ª•¹Òâ¦J<Åáj“AöPüRĉ ᬲ+Îå›ËÝÈ{Šv‡=2f•ôp§mB´ˆzTûÞ§+§ç‘¨%Œˆ‘o¾o÷‹‚ªkŠÂŽîØWÏÑo¥úcvŽJð‹>^U©D'4›²R%9EB=Ö:XÊÖAd¦Ê.8s›_çth3‘n­˜g÷Á÷·Ì{!×öÈ'5–”Ž”\´œèHÓì!¨cY¡("ʵ‡•_úÄ1G¾SëŸC §ï‰Izd\2Ø`‘»¦à NúÛ&:ÿå*»zeD! ¦Ñ,ËÙ ¡%8öû1±](ô2ù[ð:X´fÏGŽúÆÀÑÊÚ+ÍN˜ßÌ«|ic÷&®Ë~#<ê´}Pn'¥«AÃC’Iú1F´Vïyh­!4ßæ&yPï##€ÝOßдÂg2 û0?îǦT¶Ä'Ã%Ç’RÚ–GeðMÀâ¢èäÍq ÚnN¬m;È…m&yµn{£†œÙ¹Û (-‰&ÚÒÀƒ53)¬³pÝÒøœ µ”0ãWºÏ΋y QÍ0®šì=2ñ÷dœ¼íO¡Ý%\jä~ÞbxÚA^íoÀ7­SkƒW„b–s&0²­$½´´SÔ€¬­‘CgÂs{÷6„$OÅdž’¼RÉÌ ›§ß 2´Þø=#RîÖÎá‰¹ÕØ36Ø­ÒhÉð(X.ÿ½9b7‘;íoƒÏy¦-g•ízõ‰üàš~p¸,!vL½¤(v¦æJ,Œ¶ž¥§Có>f†õmcgö¾ ·mÿTª³nH—OhÃ[ Säböã¾6H“gb>W*MØ2,Öjú /¥ÚŽ”ì€ Y¤#!D°È°€ L†q+}SÆU‘õ¬ð692ÄçdoÿwЃÁ“Å_ d‹ñP†ÅÂÙ^þ_”pè1©?ø¿ú\$Œ{¯‡-ƘšS·±±úQNÓbæKœ'Ÿ ¶F[:»8!:—µA»ÌS=yz̸K÷A¾§tðÍÉAk)»þÖÂͳ0è­`CͶ Þ;†ÔùØÕ±\ª÷óäI‡”O°Œ‚é ÅÚ›_Žóø‡ŠÉd¹„ %ÍûI锘Z檅"ÐÑCµ@ Z$œ{K«•›r”¼ˆÜäÙTØeS>ð b*lˆH]ë¹ §348ñ|!úà¸Pàn±Íðª8Üh'WL#@cܓʪÁ^Y‡–¸™š¦ŒþïôÔ9ηѽô¨'µ­¤UÅŽ eøYZhOÈ$•3„¢W¶×¨e‚iÛ`~Ã!Š\%ßÀoÈW` F£öUŽìé†ý9ñ ¥œ¯ø)ƒTÅÁvÞŸKª\4ì°p*µ§«×¬AÿìØƒ¹½¯½×œº…=ÌsÔZFuƘ´ î}f÷zÉë:6Áç„—Ì<Ý"±Z¾!@ /A çÙ‡ŠjÀBˆ&7rÊãc:¬Ë2#ˆ 36ˆ\’ÙŒ]ZñÝZ«°C¾(ÐðJû°­e“3-L¢õqK²2 šRx[²šîÄÆ-š'¹»bÖÖ¶†g˜è¡ý‡€ø¼`U™íû—¾Ø_9ñøŽ Oíç°I–M3&Æ]£2õXœ‚óèž©ˆÌ±Kp»Ép³VÖÙ (]ÑgåÛÔA°áà„ÛÇZj£…öŽŠ&ø¿»j‡•=ë†1°Wp_BÁáЫ݈³¾Ü]¨)›÷Þ-÷ÔÇr6 ¢†ŒÙkrLšBßM«Gä2©ëûÿ¦=¦}1‡ù¢àlä#Â_ÑF÷ÝÜÔû=¨ÉQèy«ï\ǰ¬â!ãyÒ »\¦ún·‹k¢Ý蜵9;ªƒ%Ð9¤Íccô{ƒÓ7½˜Ë‘D@y Y+r[îPûˆ¸S£¿-f°<9„n_stù6.+ø ÝŸ(înYúºÝqm^Á \¬_%æ(ö4)*¬A˜º>EWˆ87ÐWz­îGˆ4_¤«‰Új»Ì¿U(Øÿ:YЄCЉ"¤-®%T~àsIoÕ¿Ÿç"õ&Ñ»øyáVv#¬–È|…9qãaØt©oÈš—I›‡lDMÍàîbK·&;ÆFæ'zL,¼L,ÚW±¶×D,"Êui@¶­¦mM\‰vÁ¿}: :ùM‰ÅÅf§©nL'_Üu<ˆH“„üAÞLlëŠÁ;Ǽ?MD´ ÔÜñð€yË_ )=9­½û‚™!o&zàIãÞðÚb&òpÂ8“•¾Ë ¹ÚpRŒéÁOG âú²#´Ü øÚßôÞ,Ša¥7vê©=ÏíÀŠL˜˽ní'¸7´6U¬RïÞ: P¶Rª¹ aý9z y4Sóg1Q•š3gÇ Ϫg…¡…$ÏÈÓÀ–ЇºéŠÚ±±',)8ТÛ\´|[|á Ñ"›^†dÚ¨4tX|Âð›|?òšAŒÖJÕDf˜M¨‚gˆ¦‚™Ëù‰ö©®ý9‚ú`ÞI°ôÞFèöbfµG›4uyôÅ qÚvñ}†IrqoÈzJX¶Q-<í1KM§~Bd$7-0ô¥:é–/2ª-ñ#à>P\ÅÚ:Só¿´M³a‹ž~/Ñ M3sfÕ{¿ü™—ÞÁ®BSÛÛ¨Á!íë‘iw•¹¿Å˜½IoΪÞ–ØÆI`Á9u©…‰Ý^™b†ò O PYûž2‰‘=Ãn²izwo"ÔJù7’($dçá9™ Á±öç’z3೑۰o+ðôE$4rHY¦^Wáuÿ= š¡šc ÜÒUØåQíjeÔ'\ýîŒ ×ÖAÞf#„@™¬r; „;å$÷Ò”jÈÚ0ârÇÒH:x,#cór£¿Ájº)èn;~]€7¥»Œ‘±Ûÿ`»‰H·ùi)òüëÂ65ªÓw(5ã%ZGÓ>B2%lÝí•Äwc%\ÈŶ‘K@ÉÃ=v´CÖ ÙЬšb,¯6£56ˆý¡I0Þts¾Ð¢¡/*¾ô(1áQ¦aÞlafxÞPú T¡ ^O"ª ar<@'>¾÷8T“-TríZ@Ó{jÜâ€ÇãÏnòö‡\;’àG¶A Q‹œŠ·ÍUìù.“a‚õ? RR­†l,Ä<ïºFǤ’3mB[Ñ¿‡XF…àáô%ŠÇIŽ•¶솈Œ¨,%¾A‘§yŒæ,1“î•vN_| ÖdáJÑ)VÈ)ªGiùvhš‘ª ~ÑÐ9ÆÎ®”0d©+hS6ïÙ ©yl;Yµ‰@ã:¾¾xPëjÀ6þ“¤ÝµKÊæï†5z ¼yѧ• íÇjÝ-ó¥Ç€¨`âçkv2ûr¶8ä>m@“¿~蜯û/‚(?¶–1rWÛäòˆ£L{ÌØÁ.Û‰ó¦òɹÞÛ³ ý‹[Sš¤†ò¢Ä܃HXwýêI'-”:_‡2² :C¹²2œ³vËbl‘äLvMn¨Éž}K* bØ©RŒêñ²$ÿÜ_¥·ˆ‹íI¾gC¿ ùẳ°6´kï}×W½.;¯÷ᢎŠ|Ú¯wûfxÒõw}øË Y§ ’0‰KÍg mli(|¬õø*¯ÖÏšn«üP‘‰m§è¶¯’ΚÙ3J}V37Üæ*ŠuŠP1oa¾Œ-ˆ³lô4~JûÄf³¯2Œ×p9C?î.o¸Ï1(û“⤸6ä«O"?ŸS‘yÁpRG·›iï俽¨0j _ #œALý ê*ÂN½sñ.Cðõ};¿‘̺–1ÆúU®ÝéÀÁ«ÏЕ•¯ \èM:@Ðh?ºê~ö<ƒÁÅ>=$ð5¬Êi­ãIC{§è©á/m,cwàOa›l-Âf0ˆìylÅTrÔ¥6«"qISQ&;i®•GÔB% Ãÿ ”¾:?wD²JÅ]¯9¨-ý½1½Nmµù½éEo ‰…@¾·›&ÙHH=x!Ùlÿ>M*Té,DRÂÖÏÖ|8 †MyUÍ(Ü+-çŒ@A‘ñ€M¢S‰FB£B%Ïñ~€µð¬¢Nš6úëÄ:ð´å¿©Æê+YDØ.þ5 â4ö@EÇd.s/:GcšÿU6tÚ&üDŸ xžÓr¢»mñA. ×—5ü7ÐV`Ò"t3¾Ln) ütjÂf,›ÁReÍ/èh"&Ö ë }Ò§‘Ý×F„ræö­Ë@¦œSŠpq¸»X¾IÏÂÉO„‹æ.ÈÁðÆ«÷/·¾]ȇMb€ˆÿãu= @vV=M„]¾&&9à+Ò,ë߯hµF °î ‡Éò«t¨]">RÑíc° D˜k °R,ªYn¦cðï—FØ–²¯(È ŽÖdáë&<üMŠù‘-ÆŠ°í6¡ ú.±Gg-l"T É1oÇEÎó˜²HôjZ­Z÷—¤*¹g½T7©ù1¤LR˜Câ“+ïCbù)ÖxEà=”h~ 0j‚Ÿ»á§÷·sªG¾Àà<9õi€1/ÒÖnO#'e2¹¹.+S AFî«wHHª={¹Ë¬¾½\Ê~¹ë+b?@¨,lyÐLau®0ÄíYDeb ‰«à‰á/ЩëÄ”ú ‘Lf-Æ«â8ŸzŸòGT"øŽÍy`ŽWPmº \ÇÓîD·Ðz;;¸Çx_ @×Íè¦K·'õÇŠÍM_ˆ²×ùÐÅ@† sNþHËó媊›F͈YºzŒßƒXwx÷+s¹|³œÛÎÆ^OÚ×kCÏ8pǶö¦–cÇ Àï½þ°¬Ï“_•ÔR¼}Ä Í­1/[úö°g{:AWJ®÷ $Ç¿ÆQ;ZF{m´ÞŠ162Ik~'ËtîȵÈÙYSs IEHsÇú®Ò¸[U¯Õ Æ,u´E&Uë/‰ª†9Ow¹Öå…AÀlqp…ù˜±;’Ul^{}?Ó³à@-¦¿©ˆÔ â¼¦zëÈÇÑß}žy)}œM[7>³,‚ºoáA×çî‹B·×W†¹_ZE ½Ebd˜ù™AMÆŒš3Vd ]~K:°>®KÔ gÉ¿:µˆš,¯áŒrÙôBi/·gj¨ ;~µ2†éǘC—ˆ^ûCcúáô6ƒÃiÅj:W^ªAÇšê'Uÿ«­×mCÿgOef+AÕïÉÇ´&aàŽ‚ÇàN¹:…ë:•©M㤙öÿ»Êgƒ­ÎÅî0 éöaùù§PX–>Jꢰ¿¡³_ÅÙï©Ût‘“ñÍÃuD_0KPÅ9¾j¤ˆ«³ 1%ËSªÆ´éj‰Ä,öÀeï-åµVÁ®Yòì>z£¿ÉdÄö«ö+§å ¶±jZ¦ÔGi¸lª‘GIŠI“Çï50B2©ŒÊúοQ»Íí í{1€÷WgÂnð~{äm,ëTÎeBÊ4L•[ˆéÍÀLgRqœÙ!î‹{)OÈP¥É#ØNA9¢ % &'7—½2'DçŽú.n“65¡¼[–{`u£‚tYáz2- ›eX®©ÑHª¼sBíà™ Ð¥¬úÃS:x•SÁÄØ¹@îÓf…È´qÞ_oûKâϓĚêÉ¢xhì8KBü¾CŽÅZ›:4Êѳà÷9ÐCÙ5GÙŽÔîaé$ÕXÕe¨+<™ííUSM ÞüjgÅÚ¯´'8ÌFÄ!Ö7“ü½àN˜ûçifÞ¢”8\¿Ãž‡·–&¦Ö¬¡Ze[Jµx»øÓÇ·jC7¼-VöšÑî†Ëx›&ÿºçjèÒnο D|—O¥9â(v:2p|*òSaW!*‡zƒ;›˜³÷Ù.Ø"G1îeU6´o%£Gù š6Ï@£+ˆ«®:ÿQí|ˆÃ6†ÄNe¶zs÷œfðmÖwÃx¶ªf˜\k(ùx¾yŸ-çD¿\ú)€µã°°á‰í©t§=/¨sJA÷Ž5À>Èk|×$CÎðWx\0éL¶‚;;Ê  ÇSgõÀŒíá6kŒ“ܬûœ^ÎâR6·Ñ•õBð—E<õOÂå$±Æ*€â„áI\(ìÓÚÝË¡’g¥ ¾¹…2M/ÜÅkK–áJ^³ ¹mDÀñF®×±…#áÊ)“lLbfÒa›ô‘s½Uq+l””ÄîãúxˆXÔHüHnØJ¢ö•TÞdUÌuŒ †§´‹ü–™ô ª–ÈÐÆó[ÃЖ±IóW›ä}T!p¬¤°` öØNQµÐ g¨kÜIo•Ä0À¤ OŒš{’pÝJð‘PÀ YèDÏ ^¿{9F¸a¹62Q=8™ âàæ¯ª¾–¶è¢š]?–¢”B"©^\V%Ô*|­¾ò¨P;7x©Š’õï+ñ¤8Ôs”Ý&Iøàfâ yNð¢–Sj za£(Ö»a‘¸ˆt¦ ó&Ó¡|Î’ŸÒç\nz¸[4(µŽ!ýÕYòßoué.T/ÝSyª~Å«—ºû%†,Ã]k;usM‹Ì¦S¨~MiQö óZuÂGèå©Í<Þ•Ÿ¬Ä#ƒðó#M s‰ÉŽ«ÎÜŠz)Ceã N½úœ¡­ø´ÛmgP„/VWÃÁ…Ýu–Ù¢ÂÌTÐ^ÔkÎ0²0*ìÞºGòÍRÉ󉻑t’ˆí¸nåH§Í&ž²‡ïÆ—8þª ôÅmŸ mcÏ‘6Ú°ÞáR*'޼ ·$aíXß?Ä/–JœŸ½r±ä·ΉLRa±ü#óoe;°Xèþ,Rr'fÌcCi)šf3<ëaî'÷x÷%š‡6C@ã"·fÐ~CxYhS¦µ¹š”BeÉY0[c_£q!d ƒçñn_m —‘òÖ|µ@ÉK°F¨ýû/ÆBjÚbˆ<§z›áÃÏ#À¦.›BK‹¦Üˆ­qZ6•cÝ´VüÈIîW+:qè+t”Ò™è°Á ÇSºõA4ßiÌÓ” ¯Ú}ÛþGDò÷¾qíÐ-à%WµTkË"&ðŸ÷¿´d®g©Ýp¹‰zE¥dkõ &7ði-U0ƒ<>3üQaïÛê_"fO|IiÒxŽù}T¢ Юç0ƒQ³u³ñÅ®E5b囼öÄ•<çk±uwZKm>½À.Œì…yŸØá°™êùI ÔHš¹Äô“íÊô#üíjÜñQõù:§C¬[2zd)áÜ$ VLwêÝC(ó뽩_)zVi+%E¹3VXôzAKŸÆ,\'=v¬¡Ö5‡Ðëͪwúk…lÚSM„jðúÔÒ}+ø•ÃóržÊ™(‹ãí@3¤*2ùµð‚)c!”ojPpaÀÚ¾‚Y4³wÍ«”†ERn ˆË˜Ïö)¡Ñ› ‚#É¢•GpGGÊ7\‹mÝŒÒ|ØZ¤ ýù,¶î2ïK½/`œñ믊«Zÿ•`Ñð,æ^¨­©Ð€}+à‹/fŽ5É×çëJž\¾Þ+}. t\ ƒ¨WË 2­iö¿ß+ç·Ä¤ }åð|µíìltþËäoêk›AïÔMüv!°‹²ûІ×ßH¶=fþš©¼QKY¾¾Ò³@UâÀèu+(æ^ï diÃcÉpŒþ0=r²ª>e©j¢x§–ª¦Ól½’p¥FâLIÌÀ[T›4ƒäÔå[U³#^ØEê×=ß yB'ÒÒ°œÆ¤XùˆÀf>8¥Öþ ¾qŠ0þÙ×ϳ85Þ: ¼Ã2Ÿ]S†„ÞöËîŽ ÑæB µ~”bUè#ë{8U¾‹796^Þ¿í@Ã5K£ ù¨0ÑÍÉibÊö•*uG›Ï.R_íT¸›uò‚Äø†i쬷æ/CPþ9t<©]vÓF(ÌÏ©¨rtÿâãÀ[ëúó)ñfE%Ø“ òz‹*k§¦-²ëOŽ£pù—çá}!éyR|´ö’ùfÃÏúM{ü[S÷––,H'üÎJ+–vPÆ÷¯Œg*º,qçñfÄ8ý&\Úm­‹õDâ¨J˜³þýĆÆF½<Â*ó©§£õ Ç%5rÿ¶XšŒ@­‹ä¸C¼ˆ²úo6'ï%ªr²Î `%‹®BéåÇR{%ˆïÀŽcÁ_nï´Wž‹A>Ƭƒyn1> ‡¤åÕˆ•wè3m¬À.4ýïµ-wªùT}  °›«dfm‘!bP©Xl§eÑ1]a.Àñ5Æâ‚;Ïò_IAŒ©£n‘ç¿ÕÇ @*ÓE³t-QÕ9ŸR£ðÆk±§È¡-¬j‹Ø˜·ÃK— AX·àÍ÷ðåÀýz”)vVJáÄ…¹csâUàÔ!n5O{5ðŠl9izÌ<¯†%Ã~0øÛ°<>…Åu5­kµ¤bœLûžx˜"\¡•èßíHOÚ;¼ÏHD`”QnG]°ýTªÌ/Êóøukße¾pTšU"áÐ=Ä•\A8 Ì£ÇÑ@–d&y¬…¡ê>p87(¯l°µ=Û^ Õý¸¬×û8Éöå4%à›¯VÆh7ÊO|F}bº<ƒŽ\˜ÊïåGd?½™q6¾°wR0Ñ¥ûÁâàî)}AyJÓßä"CÇGõƒ©Hwã1pGˆ!jús]u€G*QæDn–/®2ЈeÆ<ç÷S=Î}ù l‹ùU¶¢Ç‘~hÈe’ ñi±×騂“Ê=TæKƒ¯ª« ö‚Úø•‹@qmi5ÞyÓa¯%²|@¨_b(Í«k|³MžæÍþõ¡yœ>¶¢Ï-¾n±dî×&}´‹_äbðù>ß+ñ•yˆoÄx_¡m£ pâFH3:NÎT™ª’ý;½lÈHǸùs@Q}P@#­9¾‡«ùÊ oÑ“N5¨³ Îr†²»8´e#gŽ:Xìøã‘ õ_'ëü/ ÿD‚,*æ;Ý„ÁÐéO‰zä·Tøµß ]òïcÆIÅÌ0+@ëÇ­qPZQØŸÑŒjdÇ…5`j€Z ÞBx64jÎUÞv_QP·¾Ê:¤Wp`¯R\Í×½†§±M¶„~ƒÎJÞê$ Ø~¯˜Õ¿¢Šfã—åÖèÙ â¨x#½NnqÇ>ñü 6%…9=)âÆ¿2zæ•Tˆ,)ëyfj­—¦¿€‚š#\Àõ-U‰ÝWnÿj'›²#üyöGœ½JŠÂ¦lÌ:Xõj 0MŠ>êÀ|ZUÇ©:äÅ;ÉAÇ?´mác¤×ºW,Åÿ8WA¹qª‰vŽo߯FXýÚq VZ,׬£°îf೸Œ²è“¶(xù~ð„¬Wq4 gf2¬ÊZ¹ª…^(Rñ‚ AÀb¶Ý(ªœ›ƒÐŸ]v;Ö˜‡¾X¿4aÉ÷yžFÝbL°–ÔA=]¢”$'e;=“Z÷SŒ ;‚û̲ !ïÆ# $€ïL—ývœ$d»þIQÁ‚Gâ·¢€…"yÒ™¿ñÅýhX aî‚Æº€Ùÿ­‹9T_ê.„£ÉA‘pÔMD^ÈpË¿çEªGúcX¹»­dCwåæ *Ÿ Ú^¨0BZªÈNÇæ¡kx?öÍI|á&¨ãšK÷讬Ï:NÝgqÅ~ÏcÍÂEç nGxfÓ/8fÍ€^úmªˆÀ9Î϶òí b¿&"òE´˜{Ù¯8‘îî'é2)Ñ|­È;ùíl‚ùKÿÖÓ’žícéC`Ñ‹Š<­ÎÚâÉI‹œŒ±–‰È–ô5“Ýxæpœ&¨Ï5óK –šíÐÓñp%w,Jñ]½T+kšl÷C²ºKÝkÜ¢¦‰š×ß(@÷9, ʃhB‘9Ÿê÷H6ÎøHD#¦§ ’CqCˆßq)®©’ó1«‡µ“àÅÔée¥i`O*#ÍhtåžLd¯ÍÛç7k:z‡ryíÊÖTq¾"gIÖòû»"6Iñ„˜Þ¥^ú-ø%ÇòÌš¶2nr6VÕmÅQpUX Š&á¤o+äWÅÈ»3º‰›œFô’Lm(‹ Ãñå*'¢¿íéC=a¶ù(ÁÀò1Ï¿•“9èù¯{*KåXFK²×½öf•_ÚÆJ2—œº²ÞA'îñ”rü³œ!ìÏã#skŬÚ]›N=bèïûVÜ&Ùo¦T$ÅUg¼|Ó8>RT5ʵlòÝbî„MPHp^€yt6\ÿÕ^©{䩇ݴ´0*—=…j=ÁÜËÄGC‹®ãpX·I™3R•œ«±°!$Š[y:´Ñ@Ì€÷ù@³²}éj¦†¡B¬ß•—âÝI÷>{ëE˜´Üà=Ø¤Õ /•ðÖû·l|Îïý,[%ÏÓLÞNI¼g£½œ²h¤ñ±8$ÆQØo%Œgü~Ùâµ%~½Þ¿s¥|?ûqµ~r…Ë¢šêM¼¦?bNzT=ö’ëúШUêC%AðŽHE0³ÇFüàÕ3“‹\pÆLÜë­bֈDŽ-}„éÈE»ÿ‹ü`³¥,s‘É-KnmË“]4×Í«KlM¾»_³QyÐÚý Þ?-š€ÝÂèS¬U-ìá§µäA=îïâB3¶Ê~¼,ae+±#“Ÿ’ßÖO:9Ÿ‚XØMm‚g”w’WÔÃçqƒô°S¾Ø‰µF•I9¤ QtyÄ7Œ-%! g±á~—Ô¬¥ÃMïÿ󇵤Y×½ð$]P¸Ö? Ô–å£5éŒåöÐZLu¨Ô0áIÉ, ß6ÌïW’,¤¦pg±U‰´&7´rÿìãƒ{Òô¦W‹:ƒU“]Ix°»J(‹ÀGæ«…ÝVΘÄÝ™C–SWŸîôœÐS%ާå~WÔ1`>©ÚN¹€Áh­$l+Ss¹–´f ?]TШ—«q[°7þH¯z)› )S\mƒ&¤d.Æ1{ûq_ŠQ¦ñùÏn¦ ÊáØ“7mÿ¹0*òÛ½+™dÚÖ-Ùq(ÒŠ;Ì[ôAYvÚBîIuÕ«yv¬!×Ev¶¹™: Uòä2½O€9•´þö,®Šn£ÝÀÎq¸Hf°ÝQHƒÚôŠgŽ¡xUIÙ÷ú‰K”(æ7šüþLd•â/ ]¦Ó ÉFGëÁ_Ãu<Ý2ÞK ŸÓƒªdíàÖé\6¬àZÕÔͲ" Õ­ •’ûÂåt¶TÍ$ÝwaùA—Æ™Š¦¦÷{Uöõ;3âlcI¤Ð>7ãíŒMèß>b0z­Îõ~Ìž»º!÷`}~}Lnsót/³rž!•«pX]Μñgk}´dÐ+Ä®¸ßÒÂØ÷§i-»p Ê‘/«Iðiá›.–y—±¸o½ä=Ohù±;ªèÿ;d¯Ç+•íro˜Æ3=æ~ší¬{Né:((²4õ¾ç§0¥~é¤^5èŠYK¼ù šªjØž”á¥v¤vTR£gu>‚õâJþ±ÚƒõfvmùÜÅxõÅÜ#ÍíÛiTcáv‘,.BsÇh„zMÉŠn7Kp€Òc!ǘ>ïÖâ<(0;8¬–ÈC1¢Ã»hDõyÄ­„܃2éjâÞ¿<¿*AìûA,‹vé~¨‚±·KÍ¢v@šÎ]D_ÚZÎ?l!2[·—RËÌqJÙ7%¬å9 ci65ÕKU0„Q1$ŠTù{ÎÐDûÓpÞZ‡yCßû[eš¾½>”g‚7“MåUá¤ëÏ÷eî²<*Örˆg%B‘¢%qW4†ûîêç_îUÕ†iµ¢cTEqO N•v/iFåb ø–°Ø»fr±]„,_&3ºk‰À4PþÁÜ€Ââµ”êo’A7Á>1G_‚D²©‘äÚÅ÷ñÇåÓm¾ÝX‡ögZµã_$«ê­)¯ÝBòÒŒ£—Ä?HʇD¤Éw,°Âù´?•ã4B_u€\¶ ðˬh‘WÌ&¼DŠT^9f¹µ¹Ûêr]›¨ÇG'Õˆ?ñ˜Êæ‘;=°¼cÒ'}wµü˟رB]pÅÂSÝdÕxV‡0žBEÛ„¿h5-±® ¥b±?ÉI(%àrÏ” øfêx®N,vò÷£+!+ö ôF›R¨J¦/+Ï€Øä†V/[S€ý’o#zü‚\÷±Tì%†?:/ÏôtyÔy˜h›ðJ9ÿz¤¿B— å†DE«é«&©xñþ˜1rŽØï]%­n`ò@7)œ½Ob Ÿ¥c\¾(q½çä_Y­1¶eOõ·ˆ3»ÌzÆýÊé• ¢~ [“X•X˜o.MÝ AÃsÓZÿ×ÍëŃ­šîpGWÍã‚<™>žu§7¡àÐíéYÄ.ìDÀyl³™ÞÉ $xPVE•š¸BÑ=r„1Ÿ*Ö¿ë¾g¦z¢®)¡Í€š8(hùÿ>½Ž‚ endstream endobj 444 0 obj << /Length1 1630 /Length2 17755 /Length3 0 /Length 18595 /Filter /FlateDecode >> stream xÚ¬¶ctf]·&;©Ø¸S±mÛ¶mÛ¶U1+¶mÛNÅ¶í¯ž÷íÓ§ÇùºÿtŸ{Œ½&®‰kî¹ ¡¼€±¡‰¨­3 -='@ÖÂÆÐÅIÑÎFÖŽCšFÑÄÌðWÎCB"ähbàlag+làl P31› 0$!;{G 3sg¹Š¢õJþ1zü‡æ¯§“…™-€ôï‹«‰µ½‰­ó_ˆÿkG%€³¹ ÀÔÂÚ $'¯!!+ “Uˆ™Øš8Xä] ­-ŒÒF&¶N&S;G€õ¿#;[c‹Js¢ý‹%à08Ù›Yüu3q72±ÿGE °7q´±prúû°p˜9Ø:ÿí³ÀÂÖÈÚÅøŸþÊMíþ•½£Ý_ ›¿º¿`òvNÎNFŽö΀¿Qå…Eÿ§³¹ó?±,þªv¦-íŒ\þ)é_º¿0µÎ¶NgwçbšŒ-œì­ <þÆþ fïhñ¯4\œ,lÍþ3j€£‰™£±µ‰“Ó_˜¿Øÿtç?ëü/ÕØÛ[{üËÛî_Vÿ3 g'kSZÆ¿1œÿÆ6³°…¡ûgV$lMí ôÿ–»Øÿ‡ÎÕÄñ_ "ÿgf(þ&a`lgkí061…¡“µsþ@þÇ2íÉÿ ÿ·üßBïÿ¹ÿ•£ÿå#þýžÿ+´¨‹µµ¬Íßø÷Žü]2¶€¿{ øgÑX8þÿ| l,¬=þO^ÿÕZÍäßéþÀ$œ þ¶EÀÖì/5ô´ôÿZ8‰Z¸›Ë[8™L ¬ÿöì_r[cGk [“¿Üþ«­zúÿ¢S6·0²²ý‡–«LlÿkéúWþtŠ¢Ò’êTÿ›û/Cù¿ƒà¬ìaÿ7·ÿQŒñÿ<ü#(hçð¢a`eÐ0²3üýþþ&ÄÁÈìó¿ ù/ †ÿ<Ë8;Z¸´þÖMÏð¯êÿÇóŸ'ÿ#bkdgüÏè(9Øÿ¶ÿ)øGmäâèø—ä-€¿UÿÇù_sobânb³¶lgÄl™–™î\‹‘;<)¬ÕßË:b_Ò \˜ï_m×ã—¾ÃQ¡ÿQBÛ8ÍùÕæ±tfÿy Iy8Ú‹nMÖ“brõׇˆ¢/i“´ƒê0N·>ý\-ÚëzQzL“•^õpwRAQ·øoºƒÉêú™ÂŸÈ5ß•øÉÁ×(µ>­±¹¶àìœ4éäù‰lpldx¨ç¼ï‡*'š„ËÃ7ùŒð—³‡¾ãCƒÑø›+›SåRV‹Z5R’Š›'Îû² ñcì Cú%¾Ù·ð>=ÿ²aœ”ÛUX(l,ca"/5Á¸ÐŒ²¤n]ç²Äù*럋z^Î4«ÌUŽX أƨe±4¢B–­/$Ur~ñÁÅLÍÐcqUzvÄt Õ(ž6æ:l>^„(þZÿ±ò_»üE1ºÎ>øP<Ý@UÊiuÙçò4Ã< 41 Gn‘Üôüü–¡”çÑOoŠe̱|{ÜØ )›è‚åS–•óÃkà|iM±]H5nRWû$LoXaHâ›6œÑ¹$÷Þ÷ɺ-=Z]Ýi",ð |ú3ÇýRÅ»P ÃâÝ—@¥Rм±²y¾Ìɚ矋†5CÔZQ'Ú;8Yí‚)™=‘¬{¿¸ð2O×Ìè{¤®|*¿SÆáCÝ#­b‡j‘%Ç€õèÌè­O%«Õ¡ë\šQ˜Z¦õ/¿#El@â Wwý¤?¦6 …ÞATý@~U¸mäµÙG‘’ØïC{»ºf.ÅçåV¡íwá/}»ô6y%chÌiÛ7¤Ûo̸Bd­§Ä›ZUã©¥€£(Oñv)4I┹纺+[m=Ig)LØ™H“¨EsIySõT‰U¨ù‰×Ig W±Ø Ú„–ê…¸×9©">¹ºÙ£2<æË3 Éš9Ô…Ü \ª½TýDd²6VÄÔ ÎÙSà‡1Γýã ÖZsù”(G“Wõ*|pÅlËä¤gënμ-àq·nÆÛgIÍ{¡Ph€Hÿ½»Ø÷[Ä–· xLV'çT:Dû§õPø(ìn¯,w5TsQ¶Ba!£7MWR›½œÆv€‹ÃîÔ˜xCÝo zaÕìôzK¢?hSø“©Vªðlê2 áxá¹7[UÓ¹’þ#6 ;œ° S^-dúË@;Öû§A‰¯Ó#;­z5:PÑÖG‰B1UüéòÇ2OGåÚJLÏiŠJËíÂ,;–©Š¤*F6V®ü›öOþ·¸77±óÌ&¼)` œ^'&4†õ3Ÿzé P±K\êY,ìÕ(¦ÙZ*ë¤4ß56À Õ~ñpa+ìn.Ò‰b­Ã™Ì2…?é ø'O/&‘A©5ŒŒƒ åÂæh™;}ºô†3¯8Ä.÷=Äp³wéê¤Ïõ^EA[îd!ND#ƒ9r•Èá6nL¿Sñ@|þ9ý˜ùp¬,¥«—x=¤úß ”äéx2ùG}Ü꽀ȅ<…Dîc)OiØ4šbäÖïáiÖÇ;Põ ávZ•$Âw]éO¿ùViõl …#U}ñ–Ä£o–—a^ ‰–V–Ã_ßeæ±éžÄp•MÑíן´;á!®,BÔYLÅtWR|äÇŠzæxhî)¿ PÑÑ—‰Nxû¢ñ矗As Ђu ßiÀй¯m "ïkRPû÷Cß}GÁˆØ%Ál ]xS§qaÑhLwÅw‡Â9s~k(oL?û§N«ú_¬õüjH7ŸoR1¡\Ü•3ÍE¡ >æ&¼›!hw¹Ó<÷ž¸çÕOÛã SZí¦IÀ˜Ï½)H),¬ªŸXÅ‹X“µðóXÕ[Ó•ˆ+|DÀ›H› ûÍÉ™ê.^å>>›4ݾ{;DN5Π—ü»”PdÅùj–€#·ž9ŽY·È&—øU¬íRÂlñ¼zž¥‘­eÑ îZ]Ç!þ®_.#MšÙ2ä\áŠÍÎK9.û3>-Ýt|NOà¹æ²­F­˜.޹Ø#óÏË–NŠš{µl6r™Ñ¨êðçÂàuCí%ªDØsc!( Ö`…¦p¯Æõá¾!A¤¨$äತ+Š9E‹šÁšÞŸ>˜"ÄoÝZ_qëìˆ(ç™Oþ¾»Ý›áƒ2j¯[àÏmMtžoÍÒõþHØZåR“·²O×ÅîWÁ>zb")ðߤ¯×¢'îžNAS—[,ø=tuį„´}³"‚Æ›FØtá꣹¶BÁõHæH=å]z’gËÂhà­›|…ä¢MuLãë»P“JZ®GܪWÿW”¼j(úÃæ‡#²^‘·ïà¨Ý‚WNeÞÌÙaµ5Ç'º'T'ÇñØú=H)QÿÂÏ,Ìo„{nÅ)Bð4ÊcwÚ‰žùàÝdØ…ãTXÅe–›¬>úÒ­¢u+Å&/!HÜó{mÝkHç|‚ïãW‹íY¨“8?A>UHxW+Å‹¯»— Láq=i²}_Ù“x‚o{D®ö¤·Ôî`|AÒs+ûL˜oyÖ™ÄhM¿[÷âì¹²Ð[Ä—:¥Ym-îÞÒ tÖ{ã)B Èg_6»SÇ„Œæ¨¦Ñ¯=ö·Aw ˜žä ªÄþ´mÚ{Û\·Ñ<)Ŭ¡Ï7æyÏ·<¢6oVïk2kG-§§=Êð.þÌ÷Tïݵø+se õgð½.kzý㉂Ùp!§¤e°wj?«ŠF¯ÛIxY~Û¤;ÃwñÈ¥>r™ª${%לÒ©Ê…øO‰&²¦!êÔ;×ú—öŠTmõýï@"‚êKo…ƒ$¸a×tv .†Ï—CôÊÛ¼_+ðÃ}¬x !¸šïN‚Þë¸?V¢Çù­#¢xá²Z®h¬ò îk„ê2 ­*“–Ä»L¿+¡ÌÂz˜Š¾ÚÌ@éòn6—ò‘×kHR‚AýL£ÎrKÖB¶@©Á-[öo‰ýŸü„¨"ª‘a*—>Òö•¦r)×õw¥þ}ž£‰Æ˜~f”I¬@¤,±K@”ú+fT²WªÏz :h¿Ù=33ðBV`‘89ÜRáXðãhgY¢Øa«419ãzFŠìLg&cñ4Â88£K·1ØèW)ÎÂåç¼±¶ÕøÉ‰Rãm|Ž"Òk>!8ÅŒGòŠ)m?%Fªb=¾Ð­ƒx±uNWyjj79²ƒÒcaëõUm$ã.˜'¤k~Ô•‰<›þXªÂ_.oBwê€ K¿Yv Ñ¥ß⟬±‚‘!]bí(žGýô,¬h{Ä|Pz÷:mžUaLþùçÔjÖü}©9žÁ·Ý[ܸ¹š—ùÑÀƒ×´“4UÕ¤×÷žÛwÿû½lx)S{Ù?7Ÿ~‰Ö=¼0]ذ…{Üy¢Öbü¨SÉݤ†)âµ^°lÊ ßôCmd©–¨WŒÜ3lAeX,,é6°ß8õÉù®'éÆÜ[LÙKPŠ×Qø êg&Uîz³–ìç[X‰ZìãÅsêíÚg‚ú%Ý]‚âûL«O³Cš3™ÅÝéÞ@ìëÔƒóÿßpvVp™¥?L>ÑOÍËïû¾×nÃHC)×/…n_ÊÅGH5±g‹¥©înyÏn¯óOÉ1Q6ŸàpW^–7/Aëäˆ(}Ñô„/¡ÄêÉ6°sµ—‘„¾Ù “­•%ӺϦãåÉð^R¤šg´½Ϻwš£ØŸ÷OÏ)ðÑ‹Mœ|¿D±Ð(µc^„g ¡%Æ©»Õz@7ç™°›ÛÇ *•Yý1Ñ]y­ á„´½p5ÀEˆ~¤¤Üâ?RO4)³Ã2åïfïì‰Û/sç±<ø‚ ƼnúrQ^䀛qœ¬×[((ÖŘHÇo[{„Æ/¦¼Üàai/ñŠkNZ¯…ó„¼!YKFγ”L[¬»rÞÓåÚD`m¢2UÎÓ˜ßãÁ¡)¤5P¼‹òD¢tмcj£Zs‘ˆȱàZ/üy´ a¿yÂoO¸5§ŽP{¶b%Å….¿É¥eñ'Pk6¹ü©y‚•ôhT†Q…/Î}ô W"|ãóÆéÅã„B7·:(º£­ùyŸ­ø†['ZŸ—žšõiÑÉËTŒtI²='W%Ì‘´xxè…‘Å/oß*ãfIÇQ.õB’m ‡2¶Ì!QbÊÝî²ð^÷ô¶Öݱ—Üð±‹+æöá;î‡{ɬËà_æð2ax¾Ç.ðõ¶ŸÅÙ¡„’h|¯¾zŽ\Ñèà“ …'µìŒŒæ¾èˆž~f^Ÿ$e¼.ÈT°õr>*xþþ<õè@¸ ,E"EÙFq"ɨkñ`5dqõx¾$°õü¯¿ **Q*zÍ]YÈ#NáàëI©ÍÆÐ8ä pŸ¦&Ëã0µªfxZ”(H©ëVÖ]z]r`pð›»&ÓkÅe\·Eoº85Ô ž¢ôÀ‰«Š‰ù±(©øqY–Â0Po˜ÚÅTËþ¨awä¨^Y½¥q ›'†+MŸ¿ÖL7Ï‚£@“"ä_ËÁÂV6Ië¤÷]]Ïu¿:0(+øè‘z¹ð™Žkùê,÷ Ý gå$öAñµõ À¸ž_ä¨è1÷Îkp³EG)/OÞˆ¸èÍj;Ál´ORwŠÿb6»§µ+ºk<ÝΠò¬Ñªs®˜‘í!g~à«C಄ä÷šx£À˜Lðq‹m¦™ —ˆ Q¶†¾²èÄ'ZC'Õ;z_sôCøvéÓLó]ÜŠð&#z 'ïI&Ûþ¸46Ž™´A¸ûEÇý2X•‚×È-‚ñ¾î¿/%ÒÂz»÷&×ðÒ$tªÞ½KÇZ¯ÕÛa_dñ>øL9ŽF‡ìï¨Ä4ɉiÑ-N¯^¨e­…Ì-™‡OÑ1uwèEZ4KlÃp9fÝ[Åòñ¹þÜØÜßmþç*¸lãàz$b𪕠F¥K5^窓}·v¤©Ñz–ÚîšÜZÑ8ŠTd&ýF}˾ Ï.úà‡óó8•úœÛç¬÷PøS²mÇËÂ,c>ó}ìÓÆ“{¸["¿}Á@0¢ÂäÀ„ q¸6J»¦øróú‰ ˆmd\1º¤Âa4K.j?3¤|ÉF{K´¹S^©çšYZN~;“º6«C¬ÜcSদ\_n8xŠ)Cð ,ò½˜~l y0vQ þ ì ÿq·F@ÈXx>ïFÂõG$,³÷ø’/˜álöT_àÃù†oUp H­t«ý òYd/?ç\à–¾¨'ÞW çgÙVRôJªV…Û7tCuéÊv®ÕÑ­¨îWUC®×uÆñ¦Ÿ,_Y¥Õ½ °ð/KYƒ£Ž¢ *)½_,Ý µ?=±‘‹ŒjIáϪõyfŒ™«SŸ¼6á1ÓZs:x]‰8’ C5ËË1@Lì°ð"eƒ2¦êfsDA7ô{ &}A¸K…ƒV¼ßÙç ÊÐcE@ìjZïýf„™TÕ4B0—׉UÜD±àŽÞþ@ˆ¡AÎðã¹Lœƒÿ…)ž&z¨ÁåÐÔ›õ‡]7ôÞ›4°EO n ÒÈf‡ˆõÑ‘ ¢Cøóš/Œîr§tú¡›ÑΟïq®}솟Z: %V2˜$ÙF4X§j­Åþ¹6u Îp5dž%Ì$™I¹0§´ÒÒûÌGC$hÊ38KæÊëtþi Å3 ?/ù^/¾|«QæÑ׆¼¼"Ó7,uâ¹l´]hÌŠõÄ•Dlr˜)8Š l²ëˆ@¸'AMéã§ÿ\Ç9`Ló4øàMh¼1SR]»`VH–UqŸ„’,ê#êt}Ÿ‰•‡‡a—X¾²odÖÆÚÄ:ž…×L$ê4~ù’û´®nñØcéêÕcN¶¡ g ¿'ñ C¨AªO3ûé/…<Ö7.øßb›f£^-‚‰´œ´ê> !N€œô¨^è§ld@»7p÷“* ò’Þáû1òéÊ <§(Öa]©¼xú2†tK2!Ô·³p¸$É•µ$ ñÐ#SœÊ9 —ÃBȹ £Oõ[×,êÍä2ïêffe 7Ú•á,…@tJÉ/&€ŸÄøQ7>[~+ôÌjô÷·Ýax犚øø¾ÿò³½Ç›4˜ÚÈ sð÷ß» bØUp4ß’1´«ú´ßn2èÁ¦Ý8ñ µyI×XÂ5ù}”Ú´ÓWè"Ö+uU 2Ò/k_Ùºñî:°)FŒH¡êÓ }3ŒãËøcI_µ‰”)ÚßÅá<ÁØjtSJÙŠùªQÊ¡í¾À”lE˯I­Õ„|ÄüÞ|/åEmñ K°j ¬£[š2¢&YîZ+6O>oÑâQg´¥Ê—<¤ÖðÑÒÙQp#K°„SÜxüìHõIcøW4&Çýsžÿ]tuÙ0Y.C‚ã¾?3nùHšÔƒp¥nÅk¬Ã@´êÚó¥K|­ÎA&ê0q¢¤I;(ñoð_«1‹µÉÁÊB9©L­ÆÄvjý¨fwø]»õŸäá…Æ ÎŒÖWñöIŠ®qOŒŽ]ÆðYóGÎs/ç*RÈ'Røe ðTBçCZH >}>§|ÎiVBU‰ÉÃÆÐ2!’OjÀ›mA9åãÈ^”`O'¯‚°ƒüœNÉÝ­7óÅE̓¼ÂZÊ"(QÁ”®@ެ×ÀRÊ>uÃb.¼Ö—Jûfq[ :?&"õx1ÑF*¤yF³ÝUwC˜MÞ¥|›—¼·Ò“Ô 1´MÉíœf7Ø÷9ÞôGt˜¿”²øgÔ&’'˱e7mìî¤Ö¡zI{ðÞÎ rqÍ:äêNz)vó!ÐÜM ˜û¬ix1ONÛ;JCMÙ~Ô†(KÿÈ•íËÈßÀ1§>¶±þ^®¸ú \ñý–j©–v¿ˆÿñÇ[¡Œu ÉB™SiYjKî|%%É¥Õ?j£WìÕ:ðÊG`€DkäuuM ÷rƒ!ÛÆŽÿiØ¡Ú-ûÊ*5‚ 4À×– ñXêÖèÕ’TZŠÿr.)ú~̨ý2¥<[¾Ö¼Q…¥‚n›]tã-…}ïŠ/!%n©QžýÞܤÊ"ìz¯$ãõk†vÕ iœå\$º ›é>ßWµôlgu³æ)—ökr†.“ØGbIa”ËStI+³Ývré±Ðel:|ÎGšéÅS&cÌAXÇ ïµµÖX‡ ã,G@IœÛvŽîÉÁ’mN_byÝ2€ƒ‹®’µÍèà utŒR¶Ó×j›‘qo1ÍEýÇõÜÆ§U=sè\¬C¢µÎ!ZgCN©†´´6tH,d%Û‰ïY²¯L9¡Â˜aÛØ$qøVe„­xÓ¸c°qJ²CÍH×°9†O“«n·Û¨a¾IIÇÚÂ'•rS»Å‰ ,áŽå9£tÜÂkLÖmÓ’4&Yî™ë-‰å-ËME™ƒ lÅmè­Á¿ŠYÑÄw@1Ù-Zí!丌"í“zé L/aT5») Û°Óâ—v³;WþœQ0ƒëÓú„ ÓHloW¡We3Ñ¼Šª¨mÞÄŸ"íù3‰Ë1×fß9¯aÓ,A¦’×;C9À~‹½+üôÔ¬íãUÚ9 %Ç›/Çd|=H? mUˆÚ“ÈKð¬ÜÏN¿ý„ÛÇA+Q¿çVXDtíýJ_ _FÞêñé‹èòîÆ‰gŒçfq\¿ÆÙäO$pWråO‡/Eðhš³ƒjYéªwßÌyHänÎîîZd³£õ`ýaýŠÂÜ85z•'^BB¶ã° Æ8‡ñÆs‚×ñâ•æÛ÷]ÝNŸ±L]Ê6ŠY7c½è£C{WÃþñàu/×pFÍ_F¼ 7w9*zÀËr ýhnE¡ŠÄ7óŒÒü}b¡ñ5ò=ñA8C°º<¢‡¯>Ú_vØ3¶ü€Û+T±>&uè¯-¶ÓQ˜$¾z ´B°ÆŠ›µXtìžû×Tˆò»R…õ¹ŽÕÞÈÍ “ä˜LÏ`ZQðË}fš©®Q{Ap#×åÑœÌk€9›-OòT™s4¥²Ûº3GUc°L“á~5¸”k¾y^€.åM2\G®=¿Ne»µB*…æ&‡ŸûˆÌSÞ•¶6ÐÛWמÞH"]™¹ zSZ<±DbŽâÍæ¢Ðªo._¢ãC1·(-5<ˆ¦!øÈΣ‹³‡Ð±óíò‚ÙWšxÈïÄ`S‡JÛðBú\û¾2ÖóíçPí*K´!UnT.˜íÚ=gþ b@7A˜-41AãM¨Gƒv„¢*I†üPù -ÁšÓíÒþ»äÖj,c¾m©D>6ë6t]ª^oy·r(Uºzê–ìKs¹k~LµHr ˆK±8Æ{ø­Ý/HWqtà)¢3¥P!·åj-'>v]н³Ì /+ÚÐÚ¡Ù½³ˆ@GÏ„ )pMG´ç~´ä/,,±îZ@x™›iûwqê¶=ðn¼z!ˆ„¡Þ|Uæe­Ý¿pÉ6-zØ :\Ê&™žq†EoÊàr\ÀŸ–g|¶Á( ÈÀ¢EQ­ …£„(Éz†…à}|Ö¯ä—IRmÓª¸À,W‡I‘dKP‹ƒ0.žÀ«)&&o¦Å†¹•î!¾Kö ºIv©ˆITðý@—^°¬Zh[Ÿ Ê…€ô(¢)Ñb¢¤oÃwO?W|-N‡£—–´º´7‡ËROF,` A—P$°!-Ĥ øÀ:ÏM÷ŽÈÁ XÔA|[|ÁUwV£Fí§WO]’‹ùû¸H¯SofÔ®˜"OÞÄ$ªÄ.(ï¥à[†ü%™â{[Y4zîã ½VߨüÏÆÂ{î’=ŽD6N\Á'ƒÄ#xwô>õ'„ñóëZÅÍŽ¸{yŠú>h”CA}€ˆájiIËXÛ/‘Ù¥:û’>Z$K5·­ ’†ÅvCA ’&W«°ªµ®Ø½@l ʇ˜’ÛQæçÊ£{ö7F ËB)}$ œùŒýö®¹mÇJÏzK g îßL+‹…ªdNÄaæ+s¤'ä!v¶X,â$Á"Äuo¬=sEôÀ<-¿\ØL £Úõ³@ÌáÃË úf®®Rþ¹’¨|ƒ½Û&)º%Ûø©Šª­<0Ã$ ¡ê:%¿÷¼V·f~㘡‰‡ßˆÝaÖÖŽÁr°£¢Í06ìÔÜÁ>V£ñ ®BÕ?ßN?EÌiuy-Þ~Ón%à|åØÃ‘o“–2EÖRë}ÈgÎç8!¦a¾z³¨:ê¼Ú•Áæìú´H#·ŠetßùG3JÆër-rªHª½‰B¶ÀWžÎž[~Óœ£&Ö'¼Ø›”}M·ziòböh¨NÍÑTÙ‰üÄà#é†|syD»+–Áƒg@=APëíëåæUr »Nb‚›£ßP4Åo~»«ˆì¹¥?&&„x×»O‰” «õIõ$D3 ªûl¶cü¨«9î Õ Ï|x±Hw³GÙâN&$'ðûí›Á–‰,K(@v80L½ÝÆ 2døÛ¯ŠþtGMPf(MéòN/Ö¥óþ÷ר?Tç»Bš°FfTzž‘èršÆ Cœ‘|¦‘$ÿü©°õ|5Mç,Ú…“¹¥›Åj Øéß«?w«Õ¹zϰ»PZq[êг‚¬Ã‘þ³ÜCÊÛ–|ÔbXZëxŠmÓþ f­W®.š™Ó…u<þhm1Q‹Œh¢æÚ Hàët Os¶NK„Ö ”~Z&ñA­R!Å£HÝç”bBÉu”tcŠ1˜yîÜUR¸¾t ,˦ð;Š0šÍ±e—š&jã†|±uö.’YÁ±šþU8†®8*ÒM8á%K™¸?úF4 ¦,çZŽØIpçdzî< Ž6þC?ÁºÆà·¶{f b‰ (Té sôÜ%$I•‚E|«–vì>§»ˆÀü+ª-T÷S…Ï<ˆ³Åô¼ÑgÝ4÷3é²S7¯Wbĉ_ÇuÓð¥¹+.å0¸ª€ çÖG"E%£-[kN ‘-Üóxd|þ*Ï;ÈA2q«%í¶:rVÙ©½}¤³î£8toH%þw÷˜i`§ªÄH-Wb“OÞcwÄã1È<|ý^¾s¤ÈCĢ nswî¼°ö€j—.„K¶Ž^·öÌl}šNBʜȑû'ëÈ}Xʨ6côÏïàuh1ßG LFÑ6{ñÁÈÚYÝÄ<¾)ªÅ)›úm3¹i¨b c©Pš=æg{øŽÜSæÜ˜hÿîl⺽|w7¬\•)Q<ñÊÜVž½­Ì 2ZuD¸Î/û¡×_—ËU–ÀZ„Ñ%oyLµ¸ëïTÞ—ÛÜE…É·%šI>= ñ¸®=–‰b’¢È-cx#›¯fNó/65?dZ„bYmì÷M°¹Â»¯w%îr}Îó2¨Uì–*Q.ypJ L¸.ì"¨––a~ü´çÁKl×Zx§"B­7 þjy½­×|½‘[+$…ø÷ (WÅ ¤ßŠS"ÜÍ ¶Èb–UœT„ÕÏ×S Ö¸.žŽˆÕƒŠ{ü˜çšÏ™ýlɹ4ž^e‰ e}nË:‚mÙŠ µõŒË‚fí§ÆÊvUÇ;rò†Eþ§gØÇ÷²ÃU›t¯K+Úp¡ŠÄÑzȯ̃r„ã¨_\…Õ ?×®F6ß|JÁ;¸VŸßºÖÑFT£YÇ.4ß~ðô5nR8lEêsá2b‘Â6… ¬M©Ä¯ÉõR{4œžÕ4’_ᦑ8Zfç ôÓÏ_Éks›51_Foh¹;³Q"IJª Ù> Ò³P‰6¿ÛÀ¦þkMù•º° ¿ùU>ëàY'Ý÷§‘¢!ô02w.—ßë®Gì®ÍïTQýI%#lœþ0bÒà ºGWu‚1¤WU2–wÐ'îE‚º¥LÒýwÖw"CÉJJ^á<±! ®dŽš¾4áœí&§¶¸˜ì®ÚUÄu×üüè×¢o ¸ª(°ÍŽA KÒU-sK´û¥Ç@7½÷PÕ.ôHJ"Ö…Yx³ð}·£p¶ç|޲½è­~.¼_²c-;€ž_m à8¡G?DæR¡cÚá¢öÎùq,»âJ‹¹ù?ŸfÅŠ#é\lñ‚¾¹>d$œMGnÀóÃÞ£cèý ªõU®F!A»à°áú ‰Ø/jPî .·Tw ³ ­6yJ¹’ǬŽMñ9#wßHx …ôÏS€ }ÜÎôõ<ÀÈ1)îá”Â÷·f~-ºV1㜲. Ö« ÓI[ÐÛ;¼ŸÛÆ”öî8:¯RdR–{‚¬rÎ*éWݤcËÖ‘Ä ÄŠcû©à²hÞ Úi'=T·ðï•꫈¦2a4àIžÐæÃêq R4…|‘ÒåÉ|ýPm'ºÁXÆWX_®Rã"1àgE•@ë×#ßÈáBØ[NŒ¥DßT잪ÀTIb@ ¾û6Ô…¤é5#ÏöbCŽìø)•nÑΨ;7ðó‹5R å1O͆a%iDÚ6ˆ¤$2k{|ê”ó‘¡%ؓɒz«’Æt6¬SnÞ<†¹Þžd%©ë òÉp *ÑUOîõ¡c•=»'ir1Ñ2¬™q1Óô_wÛõ=(^~@IRŠZãxíã€ÿIºiG°­‹aùÈ.t@«­AU]ÙŽœgч剻ò òõpÚžnºkL¡—`Qpr1Ý¿¶8­$ùv‘-$2غxl …’ƒ?à=¹A¶†Å€å2œ…p8ûæP¯½˜§YL`Mª×å> ¿¢èã2¦´Vnô÷UªÈ½ý´x|G¸PЧlŽó³^#A_î’7´¥ÜLÕÜguâHŒøÁ:(²¿¢]"Ee0u™ì\ŒÊX5’¦HOÖ7Ÿ•’‹Àá¡'ïcÑ£«¯‘ÉsEœÿKU}bþ¡×Ê~š1<0‹Àê?œ"õƒ;Ä’^³}2*fåSùrYÉÖ“¡ õ^‹1mxÙ‹-=/rÛ5Ã,`Ö æ|}oÉvƒ!µÙ2LžU/!Œˆzç.^ÀOIš}–ñ¹­y65Ü:ñD+G+É \jóº+eý¶]¸`¢{Ië sj½»šùklTWæ©gtdÛø;޽Óã']g™¤äB¹£?('>ïÐ[bÌ Ë@½ÚA æqÅËÝïŒ?'ìM2¡¶õ+$:­ðêÍj@•ª~¯EÊŸp eêº@¶å>ØFi¿¸³mS1o†BB–§þi?­Ý¾-&!8I‘1Ï6ݳ.À#Ù¬e¶¸pdµùP-¬Móìñ0VØ% UåZÐe%×ÞÆFU¶dººúÁ®° "lŽehÕçXU-¼ÎFd‘¸ÒQJ:Ÿ“W‰)—RÚ›Ÿçµå6&g…¨Äâi²~©áP(Ð\Ê5þˆü/§å°Xc! 7ªoÞq‡{Öºá]Öø š{|%oðNà° +g…wEë¼OÊåF’ $fµâ*LæÛÇ÷)hÉJkS ‚Þºáù ÑÎ’_ö¡úûÙ'ߤܲf¡wí¤è]j ±KˆªøõåÄhˆv&ÎÍs ± äÚÏÒŒý¤WøðN,‘=‘âдw?zºiaˆ'®úq˜ @Ñ4cá“Èò[äÞr¯FŠ KGaqÿaÿ0NÄ ’d¶§U[˜ ÖôXÁñ–ý)Ëß6Ô/tˆ‰V'GÙ›«\Ùªgˆ ¡­Òv“õÎ ÛÿóYÿ9ŸÓ'JÁM7üøÛÃGp¨™i1[Ø«Ïs€Ñ-Å»÷eeƒq"x|ÝŒ‚É ñª îñ&ÔžÚQâ3[°nõ´Þ‡HI,ƒ3Y„‘ÏÌè'ZÖ¢–4_°B]Ïe );þ€…N³ïæü½Ç) |Å–Y ‘Áþ¬ñí¤AÛqøûEÿ,†^ʇ\Vß@[5t;Q-Öõ¶Ÿ¾Ó"m0†F¡+<éz*:å¢Uà(©FTMËx¾­Â ™‹M£žº”-m߸¦îo½®—ËvžsícÕzòΩlÎnÓbv(ÃÃñ•ÌrëÌ@tÖæšépÛd){l$Ã÷:$¿HaŒ€Â2cktÚûôQìcH¶‰‰~Dšäì®â œ†—ÈÒf‘êå<ìØe}r*b˜5s=|sKæßá.·ˆÃ…BW¬INOr©»$7•ru…ZpmB>áy<‡Í)•ã"x«XjèêÝû-OÔýš…”€éÀOÎÌè³¶8À8F;e,@­Ô…Ù|ª®ú¡W*„:´. ÷’Æçs,¡O¥‡IE¾LÏÉîùs7b7¹¡wXÖóQV;*kÇm?dz¼–ëä¸wk ’‘qÍ –±Ø»’©)f+péàs–×6· Ï-ÆD8L5;(Äv#j®ês–qŒ¯óR ,íЮ|-›íKxÄÎŽ)_˜dó0}Jˆ¥ìëí° r©æì3*µzºÈ,jOÙÍÌ3Ñë¯úTÊâûÁõ4Äp"=Hìµ<ÆšÏd³Ã‹¸qíG z4ä廨âòÙÛã Q¡ ká~}’•ý„Ýc ë[í™IK„Œ8.”ìbfEªJ‰šW‡)ojë¾»fJ3øŠÅ]”‹WåkÎÒ(ô*î°mP]ÒñØœ—Qóÿ‹Ô;• njÿTªNG›¤ÿñ­–³—¡Äü›·â'`_|Mæ–uÆÄ=ƒxxbtDDª 0Ý c1yyØo ôð}:ëæ41hÏj¦eð/mðµ!æB‘¬êtƒ”g ½¼® (‹1Vª>4]:_ÇÍßFùCS Ó§6¬âèkÌ ÛZ ]ìcf1IŒ+S—¶t¶f›¢*Rd·/%¯;[¢ÍéÑ‚¼Dr¦Ù²ðj(×ãE©¸.¶ÁIÃ3.AèëÙéC¾å=Î5±ÉĬ5K¹_·.ø¾ü|z”8#º´ê}kER²£?9H3Øì¤¨!¥ÌX}ç èÖ&Oÿ^Q¬ä(ZÌz–Ü¡àš†¥²a £~è/½!W– Êÿ‰ºédC܃‰‚@úä»BÇjq½¾§Ç”%“ä®ÊjÝŽŒë^˜k¯FóÛMûf‚òp¾Á4`¥ï{AIüÍ5òG{ÕY¨”'Ú• .ìãnL\ÀÜè"^jÊìÎÕç‚ò+Œ |ü¯W;NoUªÞryÙ›,Ý’ãÉFæ] ¯[4žÝM—ң.ÕÌ&ñª×åqïç{8CÜ`ÐëZW²ž~@¡¿²lɽ\[¼–¸Ê0åJVtð-ú±¦ÏqRfIÝHõ–Œ¿®iéúhÝM–Î¢Š®Ú'$]1Ä4k/ÑÛ¡ò,=Ám ô05’Žœhl;ÿ§5ÓÀÜVἈ÷ƒ0î6q4‚.ßXC¢¡iýù°¼é°¸ Ù\*u‰¯Üփس!ä!Åë¸?iéÌì½òä¾u=öÇRCBV¶jØË]'|ÚàÐÙDõðRÐS›Ú‹“ÚˆÐÚÜTWÄúøÅM¡¶—8™låJ®)!÷ìçNsºŽ…qöN¶ehÈ+„ÉIµuD–ÐÆY\LDw4ÅÄ—ð™qRåUn'ç~?ƒU³¢B‰™^>I×Kpö©Ž$ͳóŽŸìRZY}ݽ¼„›çK¿«èt2cTåÏ$ «øVfÂmÏ´R «D×û–%Ûè´e.ØœÏhcøTÉýÈýSŠÐè Q©@Ϋ².ã:ì+ÏÀ5ÏFKðÕ{¡W_¶HNS¹F®¸×óÊpß­uˆ Ý—?•]½A¬¼À¢BNˆ–ü[€›Óˆß>̺>+_à³ šÚi»™XE(öcÑõàƒm¸_з»vÇç©nÉ=—øÔèú÷[ ‹Ëò[aù:n,EÀ1É©´UÑ0Ip06š|–D—††Ê1ž×û¢ßÜT8¯Ú??†€Ç¶X§”R¢v5ma‘Ë·‹|â8…±ª%ñFŸâûsÒ ÝÕ9”€O¦ÖÙ¹žŸÔOÄävATÔÕ‰W?R¤ì’oiÚoBl¡»Ø¥l¨ßC®ÉJ :íG×v]µn3Czc³¬^ÓS-gPò+¾ÃÚÛŠsLÈš<Ö9KÆ]è†ð`S´$c‚/CÙ„ù3Þ¢h¿eõ:øÆ€%÷{í‚á¸ñ6š¶a;w±ª9 …çÛ®¾Ütæ„L;Jžkñ=cNßì‰Æ¦çÓû9(‚°žçDÄË劻:,SkJ쩇¦2É"é Ð#lß{.Ê… eŽg2Û…Ã-‘‰m¹Ø eX2hñGÅŸýÙÛp Yà^|?ýf¸w0IƒeB­²â^1Ôl­07Õ5uœGoÅäñ—asáy ~Ù«#àæ|­ ˜úNˆ8?M§ÿ¼e‰¹^& ZâÎBùÃücC4dÝ˨ÓR†Îšœ—Å ùóê+mjŸV- Üæ È›Ã[En) Y#ð=Y^”MQ`„ Å@mx•‹)ý• 9ó“jD3!tÅ4#.:Š­'=z$j]3ÄÏå3¹Þ2½¸À„€û2Y¹®"«6°ûtŒéußÃöÓï–‰LC†màîrj·jŽ2MW/,)Wö-eFâ9-#îR‘ŠÇ­ŒØj¿?>X0?d¬ë3âYüCñKØÅ²Ža€|pÆ<ªcg7¾Þ!=èÎq>úðÝvê‚–¤(àmÝûN¨à»gKaˆ¡ÇwHWAž”V¬ïzÖÔcSÅý÷þÆJüÓª6Œ%J_£ÕÏ£*ø9 7+éœ4Dºé°rOÑÕ•S¯hó¥f/û?÷: ‚ÑmÉ”ÛåþNU©in¶Ž8ô¨±/¯™Ÿèg5Õ$8Ê‚^ª=>m\ ?¥ô‹D•ÅŒØî ¸s°:D ÍLí¡µlUr­ò{A-­Ç~šòú6Ôh=Aª_{PÅ-#“w‚Q˜çKjB¡ âfß?T:ÏÊ/ºÃ‘!ƒhõ¹*Š÷î”&Öâç‚ûKaÅWZÁ¿ÔL´^ μþôãWÓ}¾6èÏ[ûÆÔ£D>gy,éGêüz½È¹€IðÞòñ vÁumŒ!EœÎ­æ…T+ÖQ$âîÕbÁÑÑ ö%0ÄiÕl…i„ß=¥>£™^8ð>¢<Ϩ#=ÒøYÄÅDÒR©Ï+UîÂÅUÊô6~8ðýÈÊAØA§ªS ¥ŽJzÁ lÝ:§úT€ä)¶¦\ñ S­†ÛB%w/X$M+Îâ]?>ï0Y–è¢f0æ—9õPX-ðn+Ë–=ÖÙ¥ÉÍI=\/ï邲þm³˜íª~LåîÅÀÖNÒÛÑâèìãN”{ÔÆ„7OXŠÊ09ëZÞç‘kÞ t™ôT"µ/ú†Aœ!ÏG‹9rJpoü8˜ŸÌÞ¬W(Ô€î'ê }[Æ„Mh2fŠ`Ÿ$†úÅP÷EH,7}G#­ riÈuaŽÒMèõu D1ˇ,¢ÙÇ Tº©µæS_ôJÖ1Y† Ãó'½ˆîÜõ®CfxÜUÅfʈïE³•iÌ|fˆ²ðÙ@Æÿn­¿ý%!î¾Ól%9ŸÂÓiˉäMy§&Þß~·:˜æMŒ£ïéÞ ºu³—e¡‰â¸:jØ*¹‰îì¿¿ ž•ôµ/ìÖDÓm\—v[´SÞªz–¦¸R.ÀéøK|²#Îä?ïù&Ùݦú•›ð4¬|IÜü÷ïRŸ ðP¤’ž‹öO'M¥»Ø@nu\¦íSWx:¦gË%”ÛuèEÞøLZßCµbf•KœDL Ìê\¹õsc&[AJutØcÐl¦“~£öO׬©é[Ž^\h¦€íYí3j¥‡*o_º ÐL~ÃÄ/¶9\q™ÓÀ-íïQ]³× p#5[#´l ¾¾~²us‰d ô¼à@ß°xØ,rr߸»ûNR¡/<¥wù•ó-Êl¡µf>ª˜yÄÑ#Š‚‹[Õ!]3ðC´”T ýˆøf@k¾Æ~¨žB‡íâ*UõÄ௚ p*§Xb­Ô» 'l1KVÓ £3U>íì?FLO+ÛÕóè2ƒp¦¤éEŠ(“ŒïÕ~U`(VÀcÜ¿ôäǹW ^%À‡a‡àõ;L’γtWGo´I×~Šhe0X¢•Hx÷AžÎq1e€DõŽ5³^’èsZ4£Q PQuªoãÓ º×¨;¡î7‰ïØ`òŒ7¯‘(™Íñ±3œ F¿Õ…ÛBkÎvbõî=› m<ªÔ€&_À°ëßM̃¯ MÇT„£53yo¼"˜ðÊçOÕÕobFÒ Ÿre  lHOŒH] Ž A¿Söw“Öã?¥pD wo¢@}]ÒDʳ¤J+ùÍn¡ÙÖtåJÖºÊÚ‡Ùg‰d.õ3$zZ_a…”\oãZÜö?*5ðã̲„; lý4¾W‰zCQˆ¥5ƒ²U»$DïŸW#è±ÜT’+¦¾åFÉ䧬t“Ó™¿sÌ..[=Úêâ»]ëÚçx0%' šãp?µ5ŽÜ_•û›±q â¾(‹¯ýÚ…$Ò±Éê¡âˆqïd[íôϘgú¸AÀÊbo Ì>°É–;É5â¨aCUm<{,É:®´,ÜȧZÓ/%­ Î¥³YY”2дî{à›¢ñò…s+ÚˆQ¨Ÿ~¼B)QuÓ%µ…Lã™UéÖác‚•€Uv›á»ü9â×VªÁÀ³jTpM­‚~KAá ™•ŽT)”Ó|ýz‰uXÜÀ€‘\’¦’ój8ÿ´/Èv¶<#HÚª+ݨQh`P܇sŸŠhÝ`ßµõr73Á/s–Áùw9™JoVêÒÆ%‚ÐRòRº|T]UÌs¿êéïÞgƒì©1×»n»à¥âµâ+KÃÜ¢ :?Öœ£ ¢Ÿ &+\øQÐGPÁ ž‚ï±®C>ΤnL²=;;–]¯É-ðöé¶L ¿LÕ^#ÝÀ{‘k?ƒÐ4DÛGhl‰«Š?à&¯“ÿ2@Àª{±‘â²NºcÔ¿˜Ók'ÞÒ¡zN—d¶MH’6æ&LƒOU€HǨÈK Ç9Á§@È i™÷~ÑúÒߦ^ÿšeø‡FÎ$Dp·÷»6hVœÕ‚4 ÐÍà’ÉÌe~æD·©BHõ gnVó8ƒ‰‰èßï±°lúŽv”q¿á¢ubˆ"m±Câ¬Dxv`ÌË¤Ž€“Ög’ˆÛ„Þ8GÇ5GüN¹åÜÄ © \øm( â§ÙuÜZî@BIâõãζ­³´/?Ù=syÝøÎ ´£ó‘;õн@Œ{ª+í”_éºhU'x{wYš~Ý€KÆ ™¦»€ÞwqœÝب’ŸÐ Õ‰\¼ŒéIM÷jiرkeõBK'—~êYÕ=#Z“·Äƒ™ö|ru=‘üž®dÛo¥œ:Ø{T@v–:‰dˆÍ2€\/¯X̰dÔŽžÕc;Ûä UÞS_MzYüèe¨TY=ÚZ}™¥É]‡(ƒr0¯¿Êö34[ Þ1`ÿ™´„y|©þ¤©uf/%¯¬°ø 8‡‚E“Ã$ð­T1L)K“žŸôÞùZX{ñ­i}Ds ®Å‰ Ì#MÎ~SyF¯Jué6u ¥Ž¯Šf£çë ê¼U‹®1¡ÄJÅi0^‹or‹×:Ÿ©Ó9u,¹KpÄ}˜óf7µ®þSýÉÛ몦º>«o¸jÊÔRS¿þ=yG9óµY8·hCc>²® ÆFÕc§×^ŸNS~q2ÛÿŽì­Þ'‚äs¦ÀaAå‚J‚ýD"Œ_6ø„Pm(à¢qª¯#-+ñÊß7^ÑŽ—K9¥;]MpçHNˆž<Òbùìdû’¼_#Þã?!Y …Dà fƒ¶9+×7‰³ÍeNž?3×p^ªÉÎûm–èöJôÁ‹l§Èh¨¿ý!Ó„°Þ+í9¤M ÜBQ_n_Ë•„Ê’§¹øo¯ŠÄ‡fs']vfÿ‡¶²©y§9è¹Î"™eð¶(Öz(Ú½Ii6âÑ9é,ÃÉ<°i™údÇ‘w†AßPæéEn³‘òGþ\°Hm¿Õ¡_©È¯<¥}g¯5}×6S©[^Â`! V ])ì0ìXsi'Þt°È–>µýgIFu‡#`îƒwåà··¤Ï¦g~aSRGäróô”9‹ˆ CßË…»Bu¿ÕŽ“Ù]=d xIBvï`Ö²‹ž E{`ËCõ™dʼn fe¶® âß'DþE4cì§°÷æ7”y#’y³_š4•* žj´X—¹;nÕ>¾×þɺqÞÁÌIù¥è˜î­Œˆ.«Få˜è6[ƒòˆïC<Òù};º zkÊ_¨Åu¢¤“Ü<7ÇO¹ÐS.+z¨»jî´¸”—½™Kû›¿whQ)¿§Ðã玒/[q‚qìAØPRÉè }nEŒ| 3EÃÂE9,$8Ô{ P÷î.]þ"qÿJˆ·ðö îeVa!ƒ}uB†ú÷c$óÙRCW‚xÍó-X‰ô$Óßj8‹^uG‹h†YpÚ»UýKÒò Ù/¨Þ1£5RS£b}F¿ãXˆÁý XX(4;½­ü“ÕzÐòPóOb35f¡#’}OË;ZøëƒŽ/…?<>6““è\(,ÞT–ehcŸ=X2ú¾š~!öÀ\0ÿ5’Ò®±+lèf°ë›1µ¹ë„+e¯É,V×Ècjg05¡ÆV¾~øý­Ž_¦uÜlifÞ%×[dJ@G)ÂØ(ÿ†±“êá^G¡Bžÿ ,«÷—¥™#S|N<†FDn8jQ ßmû¥/Ü"ÃM—;n¥ÿD- bîb{ŽJÉj“4Pñe¦¶äð^Ž*ÒpTè(z½ÕúÊÂvm¼_Tã´D4#…ãwwHœ¤Žd¹ œzµÇCÙ ã‹ÄæFr¢Ìûo2“ —$R<­BýÄŠPSÎgÕL¸"B͂`?ÙÙüµ¦­šu9éjÈ¥ìo¹B›Þ¼¬Ê裉¡6麴f¤zeÇýúbÍc^|ˆÜxZšqÈ.R#W5¿þ¢{ž·¿û¤Yþ7 Õ™Vx?ÖŸÁ¨–÷òÊqcBÀ³F•ÿ?’ðX<í«àÎôl¬ûû;\Ù™Ù)ð»ÇVOra¼¶m¼¤™¨`^Æ”i»ð&)Š5‘‘£eK—³ž¾1žPªÞ™~MœƒIêè­nû9íÕ †¹— 7„• #Åš7º±—ãK©dTW€>}x¨ä0íošV®dNƒGž¢™žÚjáúeµÑZ7ƒôt½zbêC7γ.Z×Ä3Ÿ±‘¶x÷lÿ³Þuð¨÷6ÉM [f2¬„ÕFcP!|¬›7ÍaÐûºD¢)íq%å¦ +K1ÅÕ ùhþÛ¯ ²Å7ù6³ä ÏÍ"W„³„Ÿ³ endstream endobj 446 0 obj << /Length1 1647 /Length2 11051 /Length3 0 /Length 11902 /Filter /FlateDecode >> stream xÚ­weT]Ý’-ÜÝîîî–àî~€ƒ»kpwwOp îÜÝ‚×à.ï»}ûö¸ïõŸ~ýcï±WÍU³ªÖ¬UclJR%UFQ3{ ”½ #+ @dkâê¬bo«`Ï+Ǩ´p•u1¶|`œð””âN@c½„±   4HMllV^^^xJ€¸½ƒ§ÈÂÒ@£®¢IKOÏð/Ë_[&žÿD>ìæö'äàdÿ±Ãöû S²wvq6u9¸>¢*IHý#OKc—¿b;ƒ>`€½ùÇN3{S׿Júû ù@]ŒAvΠ‡Ë_±L€3³ƒ±çGì2'Ðßi¸:ƒì,þ•À haìdftvþ ùàþëtþU'à¿Toìà`ãù··ýß»þ3‹3ÐÆœ ž•í#¦©ËGl <ó_ý"kgn`eù‡ÝÌÕ៘Ðéï¢ù«gh?’06³·³ñ˜Íá™ì]>Bhþg*3ýï‰ü¿ ñÿŠÀÿ+òþÿ‰ûïý—Küÿ{ŸÿZÊÕÆFÁØö£þ1gƒÆØð1kr€¿†±à¯2ý¿\mA6žÿó¿ïÖþ#ëÿàüwø!Dí,>bdådâü‡ä,òš)\L-æÆ6‡÷·]ÝÎ èd²~ˆü÷ù~8±°ü¦f 2µ¶ûK Î@@;³¯áC·¿+`–û"­¬HÿßLÛ¿7+}t…‹š§ð‘4åíÍþsñ•˜˜½À›‘•‹ÀÈÆÍòq?®#/‡ïÿ#ìßD¬ÿZË»8<º,L,,¬€÷?Ÿ­ôÿFÒÎÔÞì¯>Ru1¶3ûh½ÿ4ü›º:9}(þ÷4ø¨üŸë¿/è4…_Y´7å¶JÏÊp©ÅÉ—Ðíëa… q(kP+. ¨¶ïöOßâ­0z© ajœä{kõ\8vxÝýL·7܃mCÝ Ä<ÍËh¹âÀ¤ÐŸ)ôªË/ÚZQ‰”ÀŠÂ^ÏúœÉÉJù%až¨ÖÏ~Å—6ÈùÔ1Ç$ô{¶UµâÝ$?°ðå)º çya™¢ïóõ:‚yù¾3ÁÕƒ.Aàf}ÒÐR»:¨«ê ¦gëžJ6#7„ïjº©ÉEc[öšèQ_⸄­HܧQDa³sVé~Œì5žÒr¹ˆb Ö>öf[?Á†RCã/œWÐ"f=W×½ƒc†Å!âø«Ó¯g5å`E30 MSÍ8ZĤ„ݶúÅLêˆÚMl¦­3ÄLéECÃ9-L{%£5FãN­ÔsL13 B˜̾šêä[,ø᭢Ĉ To¤ÕÛüÊ Wð!¹g ¡…XÃxùôy/s¿¬™‚eic²ûp&,q^‘÷ÔÅSÒñéRÁ×U¬sFd£Jˆ—¿Óvež#ÅÆ=¬2(¿ÖùkÈpúÀ^Ð ‘P,ôJ&Ç–ÎBòE²g-ã'¼§š Ö¬3’ñ®ß/sμ®_ahÍ*ôç\î^%¯#[ Q­ÝÖØ Â’3té¿pjÌ4ªÂ<õ)†‘džxÐ÷‚é">yçJè!ŒoùLÉ}mÀ•Ur[‘a5¾  qZ5Qg·Ê›‘1&Â9ÍEb7SŽËÌMŒÔ'¼Å³JMåËêf}åÃoøDk¥YC<Å¢W®W£Gbøâo Æ–M&P0ÖyÓÓŽ?2Ú:¶wwÉ—ÙÅ ÛÇcš‘•æ KÄøçá»Ö®u¾Þí¹æ†Üþk8·“73ÒPŸåo?™ì¹æù™sÚ YÅQw±ôsE7†Ÿføu޶QRäÙ¦>öXH¡"_6(z¤£ žà Ì—œÑÇŒ–£8R½‰uÖ:<àó~2ÂàéÓß~­Ú âºÍh ®1LY\šòº.÷7¿÷ï;6BÜG ÷²˜PÚ=mÕÉ _M$^c%êâ½6½>raf·€cHº-¤D‚4ýÓ$pÇXýðüZã‘X?ß8^–p©ÅêÔÄ*¬ÏZ×Y AŠ ˆ0 _õ²°P[.ž¾£;ñQ[ß9Ec#ûîÝw‰ 21+ÅÉâf¤`0âÜúiŸ¶¡ôôì¤7Pœ0À˜ôÎæ‘†ól7‚È6¬+ùøøba™UÐîÇë†M# ¯‹Ûý¼¦–«×,Ä3þËè“I9º¸†ˆ"•sL}KétÔÖ4ÕZW,ŠŸ"õm=zF鬀’¥T ‹)¸|8AN:0ÜWá¡Ük¿‚ü %’]áùé«é,ñ.cA&aîwJÊ2`,fˆ&ZjíÈÓ/jŠÝ‹`0&+udË««ÙØ>%^´?ó2÷Ùz@DØ~Ro‡6Tÿ+:å£b3¹ìJ·0ÔùÍ¯ê ™6¾#b²ÙÛ¢«}óWùÆÖú£a¨7êá¦z¬®#æ.œü¥0¾|‹aŽŸõ“ÔÕCádqÈk?svï†Uæd2+ÙžÊ1Aµýk&Í1ùÐz ®ÚÄsPœÅ†e½¡+7ªNÈ<—Ùðb³ÂŽ6²GéA ±õrT˜:I…xOG¿£‘Ùð¿òUóÊà:–OÄ›KÐCCX«“_a}¾‡g±–Gã.V£Î¿ïY…–佌Àƒí'œwÙ,Aúv|NtF©±LΙñ!’‡Dò!¼ÚâŒA¾´J¾Pp[I^m ’²Ø-F“¬¬“6œ’“ÎßÏ!³×B¥ŸÎú å­ˆKrL²P…)º¤fÝ€½ý6NåF³®¨ÂÀC†€–[ bÉÎ ¤vÈʬÍ&üñ´c48 r$㛣4¶¦Î†ë‡¼ÁAI™JöoÐ{ï¢ ê4›AÆÐH½¹ß¤à½¸Z2CRÙבsE`^ÝPš‹š“Ž5í¿y]o9º·ÓÏó7ß÷öˆÌŽó`% £ÍñÌ Qr§¿”;j¿.Ø­/?4öZþì¤p n{_e ˆÁ=-næû’Šîõ;¿êºü5¯œý•ÿÞCßï݇ʋ`w°ÔÇ®ßO ˜g³ñ_Špm6Ï?XDàWÓyçû¾LLï;kã¢á”®¦ý0ïYðÚöfˆkj±Ý§ìV‚i¢p„XŒíá\ëìbB³'𫤮ë†ÄñPéå8¹èCx^¹«¹4*%,Eåˆf싽jÚJÊsóiu¿Æš»“A^O:g6è•+Ê™÷¬“Ë?¯gaì3A¡ôæãNžBtår¬3êd\F“Ò50~_W˜g»Eõª´‰-÷È´šô -àµKÓYn\ßçÓ’wG·½Z×µõ†7°¬ü$CÐŽf A÷Y§i{&76MylÛ£ ŽŽ®Â§º‡B#ø5¼h`ýü‰„Å­=™—mçµ»@{<€M!$Q_h#ƒ®ÚÛvG‹B޶oÊ¢[„ ÷Û )¥÷Q¥õýLžÃ¬ûJa&?äqj‹„}‘bÄ.÷^ç=ñ…ošHÇÁ='®Èi®¤jƒßmßi¾Ô@z?¦…$ J|jŸ%û«G:•|vÙ¥îg®´~ËÝ­Ldæ<Èâ¾C‚VµhH [ŒóCliL"Æ]Ï„àR~ » +óLHj×ûeæ‚É:”*ªË €w¦ :¼K¼üÝ_­å,ï+ÁÑ r¡ˆ¤hž…6³)p¡iªÇA°äJÕüÜ3q/vÇÈŽ4,ýÓá˽¹ÏÆÃI«Q‚Y¸³ƒÕ"Í1߉R—’wß‘ƒs‡ùGÊ' ï˜#¦üjé¾,>ÿ"#:ài¥ø u¯ê4ˆr?zÕ@²n(§Šé¢ï¼ ]Hlå ãØþê1®%íÜò{“$õ Õ~n]n¾ LtÉEwÆž|Øpµ‹Ôº¢w‘;OÇŽH¼Ï2ÍZÀ}é7÷ ¿T¹¢¿Ñ£rt“7Ìp–:ɺ•]É|hÆÏþÚ™~Á]·pEÇEÄ_ ‚ªŸ¼™•]4ÑHª¹ÛÀµw³³SÐø™[“ÞzŸo£c™‹N„¥ë†ŽŽ´üí -7‘·,UÄIèŠDÔq³åXŠQ€˜„þ £ÆÛ"Y£…â”Éwšü§ HªÃ{¥Aï‹X´¢R ;‡â2uy¹­²|¿µ«ÊìÐe/X~Én„0ʾKz,®¬DÎ%1ô •KÍïñxËÉ*”~ypÑap4;=-Jâ,kI›Õ°#GÁõ(úºÁ›YƒyeîFZ¶JkÊÕI •Ô‹eÎgÍÛâ³ðÈL*¯žš¹›… è¹KŠnˆªR®Ž”Ñ)5äq9Hßlt —èˆGVˆ!SÖ9²z™òÌp?ÝÂ:­·¾Ô~o8Ó× 0?0p›dÊ›A\ZFÃ\¶#)§O]à]C';ÂΚ^¼·ãèþpœG¢ÿˆ›Âzk¬9Ôû)_¶OeõÌ þxüœŽ¯úZ(DVT»2‘yêÂu{(”;Žó³X¢º¦ÐÇ¥×VBQjÔ“ ¥ìØæÀwK>= ‘vfCð±(‰S ¦ìTô~ÊLI‡Ãº Íå;÷6rßô±§á(»‰º×µ»q\1žq¶v ~-ÛæLùÚT<§&â€*#ÆQšè­ï“÷µ¤^C˜KeïÜmFœ ªx¯³GKZkhÁøÀc#5ÊÕsúéÌŽKûÄÚ0À•ýþû(x :?‰ ›­@NêL9÷Ì*O šz¾®í «ÆY{ûwØÍÉxfŒ¦þï2;ØHlž½ «P7òÁ™û/*l®7RY? ­¨Ò|§SåO+¦n‹ÚÉ%î4;CM⿾üAûù}„»¥Ö¤nN~D¼<~uÔ•~G™$,VZ0WÛ±G%;”³Ö-§} £+ÅãÓʰŒÅø÷;OñÍ\a†Ž¥¶5XX¬‰LVz8O~B’| n‘íÌVÞnòzoÆ ©k̵7Ë_MŒ_rý¢ãUš!$tÊ®n©9>77¦!nÁ(1Áqx Àþ$ûá ï!~Ó\5Y=,Ü⦖Ï:Ù«Òk!×ÎAS±S'Î3I:4–5Ÿ®‘wÃ+hß»µï…OaGÖ]ÌŒì˜j7»X72ïñ‚¥Iïè«b”ƒ“m:’…)Hº§(vqŸ„ïñŸT/šÖ3C½Rèu ðÞi´_ªÝ9qúŽY~-Rgü}ü§Öm­R$8Ïrå7ø5½‡ I‚6y4Ú\7rÀ¨ÕA>Rš$rò Pf—þ‰=ã"EÒ L{,ýÀùsÉË-ÌÑO”ìËq1³k*ý¥óøÇÛ$t@ªÒËWëƒNjLìãÏVKøƒŒFÆy&ü„c;Œ@É××4%=b“W‰?¨>¸8Uð×°Uú88wÙîììÜ¿~†î»ïß*=òR4|á±°±@[‹¶žüÎ>i}©à‰2 :¾5¾àÖ† Þs½$— ¨ï?Œ[mÆu<¢9ómóerô¹è ô‰¢UC­ o¾ÔP5{z­]î1foD¯Zš]/Ñ!¿‡…[ä‚€ŒvBã …ü6.«.Âð{Ö¢)í®!„íARÑÛ–þxÖ‚²ŒgAô«+öâp!ŽM³y¯ËÑöþÒàíUŽwØå¹~z ž@¥¦0€dl»¬ÿ†"¼$ô-È£€¬Sÿ×é:âšsîIR”;µFþàB{œw’ +×:¿sÒÒöp’ e•?•T=| ©sËúçÅ8=&ŒnYVÑÜ £[²óx¤ªˆ%ó&L‡UGúdçTœI*g_®wVÿôø± (&æ+tÑëȾ-ØYŸ˜·…VüÑ:om|ƒ7÷¾þßp6ò]”ÃÀe˜¤JFÇóL¯¨R–ôfœÞûq£Ë´‰Ú·¾Êµ6 SòëÅ¡…úŸË0¹¡ËkÑ·v^ú–~:߸Ê´¥¶ª¶„O„z5¢”ó?•î<㯇­¯ ’Jí N¹9Òšº@ÇsÞÖÔ07Sx\ê AbA³i™ÉÎö#ÌÅ]\w*¯Xt 9{ùr±ìzÖÉ\ô,›N´(²Qí†ó%Ô«&>Gó§W–B´éYRÓRS÷…ͶfŽƒô¹OzyŸ§Tjíº#<`*™îåjÓµZñ«­ïÑŠ¨®#–'΃íü†mhŠ l¿Y´‹µ_ h2{[ª÷¯˜Z`ûD0OŽÌR]ó•ɶ…Ú‹Æ’01ˆâËéÞ1¾âη`a$KBêá#}$ØD*™ˆ7²“[poòôf­uív‚}Cw„P„.yŒÁµKc/ö^m$' `°n~è)„FÀa±ר—PÐM¥ÛãÇ‹ìÅ€M¥l‡¡>#ÐÃQS¼  Û¹ÛÑ©m4ʼnWÓШ (áCÉH øÔ©µÐvµ‘w‹ë¨$K“ù„ÕÉäK|â]ZŒŽŸÍŠ»ž½Ÿg§:öT_!K0Ê¿^?ŽÅVõl©‡Í›äµ\:6‹”è \´Ï®çÜË$AK>ê`»ætM†îöaD¦‰†T‘‰\heí :Ö]•’GMÀ\@> $c.ð“l;x:âÆÿ Ö-ï#à¼Õ™ý¡òM"^7âl•òä¾W¼Cr£ÁꧺÈý‰µšt]ZHn4Ê è(ú)f*¬”HÒÓ=J¶ºoÁ*|Ÿ8î|CY8;·“OÖÙ‡›„“W-r ÊÏŸøOLßât3•­F kI}þ„àvåo?‡p6w”áø\œâf9³}c!¶NÛµâåÊ%.8Û~ë—&©zcÃÙûZS6ÈЧ—þrZiV¦ÐÝôÕ†°šÂ1%çzaRs% g=DÅ´w-Ä_á‰ÛåX$ÀE@þÔ8ccD\û%:F=íùZW]\myŸWWfŠçÔx*³PR3ÝUm"ÃL±‹Øàú«µ“÷Ô• r3êôF°œS§¹~‰’!Âã†g/„ÖFemWzûÄRZU,O׈1>¯Í-Uã²â6†ÉÁн÷YV{iGÅ& ŽcõFTÁ¬Å·_g¥/‘Iü[¨Ð‚oS–TD`Þ¾4«-éÓžÆrþЕ©%mëÓœª%©J.br[’mRfOhËãçò†ËV¶Í Ô¥€Ü0†°áœ98šx‰dQ;ÁËiTÝ Ökb­> D©‹Çüü£'Räßú·ÛII–QDkþ$E k"MyùÎn®åá¦1l” ¥ß,€¿yó= ã­ ¨T6§Ã®ñ~¼¹Òãû"æ,ÖéÕZ°+„Nˆ¹AYû¾ÇñöwigØ>¼¯Â¡}ka§îI£ sT èÓ "5X}3Ÿ]=ý)MôU×/ZóXwÃmm¡V½ —¨ä5Oì䯥Oë¿ 3uÌï–y62?ì‰RÑÜR_œRuÍD–û¢ö‰ Js§’ÀÖxxßskxnÞ,jS'ÚþRžÇ5=™Z•\‰+1>%!¼Î;8¥Žúb3ÿ l·‡cŽA¬â.Õv«þ‡âq}¶Žäùw§«¬8dJ.'ܧ†Ž>® oØcožÎ·Ž«æ–þ“‰aE;ƒíx¡\qÚš|xZ½a«P&ú¦íØ`ëë› y·#š`¬º4ÞÔéÎ\ÊoÚô‹’lBûJé·»‡ÊFFÒi;ÖŽâ÷³‘ÝèGY)”¹s²Zj´Ps3ðPš™ñÝ'ÚH;‘¯Ø3\õ©=;{e@! ±»Ã‰ö"+fAÖJNÊ:ã1eHª¼¾í´‚œžÆô-nâžÁæ¢KžEf•£ÏÒP ÏHÙöyF­Rkf_ð±$9„î?’éG|ȸTì,ð\v½«lAã¾Æ}¼4&q:!ÂB]¬îñ9}ßÜ…Ds¶·ÔŽ·;@ “?!nØ{ÆDl©UWÚæèÁ;Ÿ×ž9X—¤‡ÉÃüŠw@ãú;ä8^š•MnסiâÖ&Jx$é¥ Æëç¨ß^É÷h^ùûÁ©žæÛêÚÓ¦VàT“Á/ij9ÝpÙ0¬“×dL¤R8æPû:%£| ©èƒ„ÆÛþŒhƒ¢QN¢Y ã)XÆÜáÒZ; ˜†hÕ¢ºî˜y –W÷iú¾YI7S)–q—^bfbq îiöúåÔnK݉0ÏHLjzo_buŒ†ÓéLÛÔýîì^ ï“y»úñMR)4{\³mFÔ‰h²Šë¾”~ñÆ Çc›zKŒMÄ å;žÜj[ÕÊ'³½]øÿÕN4«˜OlËÆ®°SÌœc%ŸJëíÉWÊ‘Ûä 1ç%íÆÆ'¬ÃÖóÞóCyg-«Bþ©"àÂxåÜ&Ö,n´åµhÅÆb9·î‘ð‚¦š*í£dÐõ@°ÉÂJúÉ©úæ,V Ó®Sæ6–à ß ’ŸCן~V WL8Žy|³#W½½@‚‹J2~#^ ÚwÎRÕs¡pËÇÝÂJÙ¶Ý™5» šÎ.YË‘*ÕÄABC×oŒ¦ŽtœÈSÀðÁÕýZo±“ºr¡7–È`qÙyËÇÛ©: 9 @!§aØBxéÑÙW°)¶÷ýí¹nÆ. uw|¿ÝŸ"\o>=+¨®ë¢²Òä7¼y—fr:²ÁþüH>ëáêŸd™x_Z(ÛI°<¢oí¢$NШ{‰?-þ|•¤eœ>ì­¹»Š¸Óñf,ht-±¼áp5ú¶ÂåÉò[%· lß7Ø=e&¤`Êñ4&ÿº,N9ΰÄz†Ñͤi…ƒ/ÚØ°T$L§¯„`AÚìÚ¯[¯TžÃùCù76e-àW=RYÝOqn5üÕf0ìû„nný¨© œ¦´X-fH‚Ñ_¤ÇáÍaIRހ冣t‘Oõ€zå[ô:ön¿,siîµq—­-ÃùU‹ˆ0ç§° E#„yÓû`{ím:BŽy·¦¯¨_ÞóD6BÞxx¥¨S„ódc“ÊÌleî6‚Ù¦cˆ‘òä‘(z2Ó¬Z¸ª¾îÊo[ Å[úü®3¦“¸§WÊ9×|Î1° &í²É&9z9R¿Û“Ll®¢o÷yÛ|R­ÊÜ£^Ù]vKßéÛ4ˆu»…R62ó@ _ˆä€: OÍÈiüاh~žU¢S_q:|0 EZÖJçùl²¨tÑ(‚ «Ð0uRO{ñviúúÙJ¼*ùöÿÌê_IqAèÒ"TîPŽÈ@'˜oYÕ’ב#ë]βÕæˆZ•ûòôS;¯ïŸX¾C²µõ‡î"Õž4ûb„åí³¢= m‘6yŸ‡Õn‹‹S³*.‡’=°¥Z ³Ê¦ªË3yOI}=P½ ýž#)ÔmŠvÒ”¦YºË[þì…ϯ#z¾àq*Ó± ÿŒOû;nÍZþ¤ÎhÕ€¤!{U.¿UW$\]QXwÕ´ç\N›]ÉCÞE3®³ñá[k¸ìå•©·ßuJ.{ÜhÁÕÞOlir†”mSÂ?ÑJœÁqö³+]‹ÃŒI€ÍØžÏÒ¢°éNæìžŸ\ð5YÙg¾ÉMî«:|• ÅŠ ‘Çä¬û0÷ÖQ|­úűS­>·?bKðÊ MúÙZ®¨üG]ÈÒÍÒˆ*˜¹—ÜPÓ¡Bo' ;•m-°œè`úHÈõõÛPÄ‚ Û¦šÍiã—k!"N(é&ûµdó1A¹ˆÁsNðÆ=D gXzß3gX×u%Âfˆ"çc-Y?¬)ý1Ò¯—Ü“Š\ƒ½Z_C¸ôçˆäWúÑR? |²Ç‡[‰â@±öÞ†øQò)¶î†‹&š£ç`9Š(¨ ¼s$¶ò敃¤)©Š.”P3òZm³éçŠÚµJBè'.n?Cä{ hƒ>Zx®Ã‚Tþ¶/c Ž•°IT’¼ÓÏýDrm•Á6زŠ@ýè„)ØÝnY7á”cHŠ*‚5âû„dÔ¼ŸzA²¸¶GÔLMIGùß÷×xÅe›¨ Êi&7“ƒIÆ~Ú¡¿‚û‚ß÷m®7E5ˆ(”þ&‘>ý­D”á_4ð>kaÐ,š0¨“-çÅQ*ÍâÙ ßb²"à aH±hÞÐþ¢f¾Ý¦ÞÏ@­z?ŽS±=ô ¦rj·Ì,5‘ë+_0†¤"aí±Êb2FE¬¸˜Â¸k#>Û 6¿Yè?Üð+ÏÞ°@°„8#~++laa„tÛq;ëšÛ]úóê‘’aFè£!ÝÙ µfɦ I"b½º,yµ¿F†ffm¯‡#ã’¨jježç"·ªvÉW"ýBêúÌ—šÊP3$%gZ€±‰ÉÔƒÉÅq¸údU…Œ~Å|زœ«BüÚCH‰HÁb¿îP¨\ùúO€cëeW\1fæDÉ•v[-ljZˆšCÖ­"sšój0x’Ìõ›µ> stream xÚm“Mo£0†ïü ï!Rz ˜|U‰ÄAÊaÛª‰V½&ö$E 6ÿ~=HÕUAgÞ¿“ɯ÷½Ÿ«ú~üÌÙ´uo$ø›ßÇÆ›LD-û t÷  @Ùö…½›Zî¡cÓÍNìtÙ=YñNËk¯`T=­áRêo ÞæøôeCîŸúòÚ•Úç(>”ÝÕŠæ™ ²ŸAæŠþ€iËZ¿°ð™sn[­6u…c´^0XaÁhî\je?ì„î¼0bª”ÝprOYÙ÷Åû[ÛAµÓçÚKS|ØdÛ™›óøäoF)õ…MZ³©}ß4W@Œ{YÆœmG;ÿë±<œñ®9Ü`‘;‡äKÖ Úæ(Áõ¼”óŒ¥E‘y Õ¹¡ât¤ba¥bi<Îg®bÌÅw­ü:/]×åvYsäˆâ[ä˜â+䄘#ψ]íœôò‚â9ò’8D^osâyMìîÚGÈ‚X o‰ä‚îBŸÉà5Éà‰<øÇ»’ÁÿÂò k£(Do9Örá,Âq¼B?"tŽýEDqì)bbœW$ÄèYÌèM»>sb×gEìjqÞ(ŒæÃ×po¿$îÝ}IdoŒÝ·œn-p!J ÷ýmê«ÜÏ-þøOÃÓ[áýL‡ endstream endobj 449 0 obj << /Length 696 /Filter /FlateDecode >> stream xÚmTMoâ0½çWx•ÚÅ$ !Ù ‘8l[•jµWHL7IP‡þûõ¬V=Mžß̼ñ s÷ëu;ÑU··õÈÙ›=w—¾´“ì÷îÝÝå]yil;<[[Ùj<=?±×¾+·v`÷Ù&ß´õðàÈ›¶<^*;²~&ûQ·‚>ìþÝþ”MS >Ù_êãP·ò{=éÇsæ@öd”ôÇöçºkŸ˜xäœ;`ÝVY×`Œs4½JaÓQÜ¡n«þª‡í¡.’Uu9\ßèY6î>¼ý<¶Ù´‡.Z.ÙôÍž‡þ“4>DÓ—¾²}Ý~°û¯ÒÜÑör:-d0­V¬²WÑÍÿ¼k,›þ8ãóþy²LÒ»ðºÊ®²çÓ®´ý®ý°Ñ’ó[Å*²mõíLrŸ²?ŒÜÔqù¥ã• â5F8@ šˆ=@Šð)&°  È8Ô¹€ÂÅRx u€Dº\j2H—†ª¡ÐVÁ¹0CzL]ø Âb°ct‘I ©g$`htÑ‹0œÆ\F„áŒ0ä†sê‡á jd< —Iê6œ»õñzgóñºË»þê W ¤qÈ’£+—Ÿ#ö•ñÌÇkÄÞ .‰bªsré…¤šáæÄç†bïmŽXú¾„Kß7ǵHß7Géû„û¾nb§>&jÊØµäuœ¯¼ú•ñ1ÜV™÷•âÜãâµÇ‰Ou$ÕŸqWèS/%1{\øxB!€§ÔK(hH©—TЖ枃»J©Ïϯv×ÜëÁ=küÒ2ø¥UðKÏ‚_:~é$ø¥Óà—ÖÁ/¿Œ ~™Eð+7¿èË¢/ ÿlì¡ÛÒ(/}ïö -+ZXukoûìÔE?Z„ãæÅÛKýqíƒÄ endstream endobj 450 0 obj << /Length 739 /Filter /FlateDecode >> stream xÚmUMoâ0¼çWx•ÚÅvHU„dçCâ°mUªÕ^!1ÝH ý÷ëñ#xÙö?ŸgìÁÜýx]OTÝmÍ$|äìÍœºs_™Iöss îîò®:L;<S›zœ==±×¾«Öf`÷Ù*_µÍð`É«¶ÚŸk3²¾'ióÑ´ž‚}Øý»ù=©½à“í¹ÙM;áà¾7ÃÞr¾›f¶ÆnjÌ-ùeúSÓµOLg~¼À8÷ã ãâþÈ)okà çA„8 ö$`I\èÎ×3`çAfŽã<ÈZ]ƒÂ!‹„ê xNkÇyã¹ãÐð"œ7Á¿ _¥ã“§Ìq âH`òáö•‚nú¥¤kÌÂðRONH=CpB:# =Ñ%8“ˆ88QA~¡!*ÉzÆœøÐäT?!~Ž> étw©8éÄy*ás£¤Ï }nÔÌçFE>7*ö¹Q‰ÏR>7в¢ G]¼;~îó¤ŠÛ<©ò6OšßæI‹¯yÒòkžtèó¤g>O:òyұϓN|žôÜçI/|ž´òyÒÚçIg>O:÷yÒ…Ï“.}ž2îó” Ÿ§Lú> stream xÚmUMoÛ:¼ëW°‡éÁ5?$R. ¤d9ôMðð®ŽÄä ˆeC¶ù÷³k›m‘CŒÕp¹;;†wŸ~>Î|¿Ž3óEŠ_ñ¸?O]œ5ß¶‡âî®Ýwç]Oßcìc]=~?§}÷Oâ¾yhÆáô9%?ŒÝ۹׬“B|Æœ‚>âþ)þ;ëvÇw%gÏçáí4Œ3‰ä§áô–’>\ ‚‚6ý§ã°¿ õEJ™€õØ7ûÆ8ó 1¿’{Æ~ºðÏ`W(-ú¡;]¾è·Û%=°ùñýxŠ»‡ñe_,—bþ+-OÓ;qü\ÌL}œ†ñUÜÿI--=ž‡·B«•èãKª˜æÿ¾ÝE1ÿpÆ[ÎÓû! Mߊyuû>Û.NÛñ5K)Wb¹Ù¬Š8ö­iÇ[ž_®¹uÊ•MúÑzQ­Š¥Ò)V†€Ú(TØ€àx¿àÞ¢ žjy‹°°!ÀÐÔ•µZÔÀ2àP="¦ZdÔ0\ÃG©R\¡·”).–2*ÎШa!„U¼Ä,†³ÔÛHð° `+jÐÃ.¸5Nα@èâ°èÐVK-àxŸ%ô˜Ü3š% A°YÓ€z¡ÎšÔ>kP#¬³¦õ™5m0W£oš¦Ã¾žj­®§Üý·.†ÐZ¡ŽT$X/©)n)æ#W—„o(æ“oÀRZÞ $K¢p4’ŽZ¶-bâ\­1¦Ü°Jä æP"Gñ‘XÔQ¬‚i/8ºkÉ^€ÂZqŒ:ZsŒ½š9”d š­Bù Ž)ßsLù-ï7½æx˜ÏJ›¡¾Ò`¯ažÉ½)f¥É$†µ’1™¸ dÑŠcªCZCù<£7Ã3JÊgózÌnøþHȰíáÌYÉšäTœ¯a…Šï¯Æ,_»œ-Ÿ—Oë87Ë}êÛKÔ´Ü—Ll¹oKñšò+Êg­JÌâ.¾GZyóº‹Vðc­48¸’ï¼äØWtù]Í:P~`áŒñ±–rZŽq.nÍ1]Ç ÇàSÿæ/©ßP•ýïuö¿7Ùÿ¾Ìþ÷Uö¿·ÙÿÞeÿû:û?Èìÿ ²ÿƒÎþ&û?”Ùÿ!dÿ‡&û¿1y–¦¼ÍH·œn5þ¹ã)º½ÝyšÒ“Bï½x#†1Þž´Ãþ€]ôGoáõñÅ×Mñ?®Xê endstream endobj 452 0 obj << /Length 851 /Filter /FlateDecode >> stream xÚ}UËnÛ0¼ë+ØC€äà˜”¬W` $ ð¡ME¯ŽD§bÉåCþ¾œÝuÒA6†ËÙÝÙ‘D^}{ØÎl;<»Yt«Õ£; ç±q³òûî\]UCs>¸~úá\ëÚËîéN=ŒC³u“º.7Õ¦ï¦OÞôÍë¹uÖç¤Â½tý}Ôõ“û5sM7­õ¬9ÌNç£g“™i¤y×È| #¥Ê:##Ï0)%ºT\Ãã`YQqJÆš†`ÆŒŒšc¸Ëùâ2Uó{7о5Ò´!\,€1–Ë8"\aD½ ŽE_s¼N[à”sSàŒãÄÏ9·¶‡ºà¾Ä)9^Wì$jšˆs7¬¡ œG“ýìZ × Ápý$ÁëòcMϱúXSõ_ü §þ7^ïÂEHOšupÍó¤ò¬áQF^o­Ç†1¼ÎBÆÐ–EŒQ?[0^“׆¼ÈƨŸ¥Œ‰“ñüЉÔ—¼0 ø’Œ¡9+ã¬bLõi~ãÈjÆÐ™³þ}sÖƒŸ³~z‡rÖCOÎúÊeý fÏYJ|ÖŸŸu¦Ðœ³ÎÏ8gå²ÎˆrY§¡Ï†}¶˜ÅŠÏ˜ÑŠÏ1°øLñ½¬øŒ÷ÒŠÏèkÅgøiÅgâˆÏ˜ÝŠÏÐoÅgè´â3f·â3|³â3ÕŸ¡ßŠÏÐYˆÏè[ˆÏàâ3ø…ø =…øL¹â3f/Ägâ‹ÏÄÏød ,' f)ÄÌRˆÿx ñŸjò·b©&'ÕÿÁ©¸W *ŽÇ~8šd0ïUµœPt"á Æò~Ò7çqô—Ý3tªã<ïz÷~‡#²èGwØåÅê¾þ=•ßÜ endstream endobj 453 0 obj << /Length 851 /Filter /FlateDecode >> stream xÚ}UËnÛ0¼ë+ØC€äà˜”¬W` $ ð¡ME¯ŽD§bÉäCþ¾œÝuÒA6†ËÙÝÙ‘D^}{ØÎlÛ?»Yt«Õ£ûóиYù}w ®®ª¾9]7ýp®uíew¼SCßlݤ®ËMµéÓ'oºæõܺ ësRá^Ý}Ôõ“û5sÍ8dzæ8Ï'7Ì&3ÓHy:L¯žúKù-õÙ–¢?Ý0úîN™[­µ¬»¶ìl æ"NÍ/r÷‡®D¡z†ÞÀ„ª=4“¬è¿9z‡¼}'wÜtû>X.ÕüÑoŽÓðFzo‚ùýкáн¨ëÏzÂö|:½:ˆQ:X­Tëö¾®÷åÇîèÔü‹©ß™Oo'§BZÖØô­O»Æ »îÅK­WjY׫Àuí{FRž÷îÚsuíÿBå«`ilB ˜„‘„­=öÌã¸æ@æ )UÖ 9yŽ€IÁ(Ñ¥âË ŒŠS*0Ö43Ö`Ô`ÔÌðÃ]¦È—©šß»A 𭑦 ábŒ±tX&Àá #êq,úê˜ãpÂØ§œ›g'~ι5°å8|Ô÷%NÉñ¸b'QÓDœ‹¸a á”8šìg×"Øh¸~ †ë' ~X—kzŽÕÇšê¬ÿâ_8õ¿1ðBx.BzҬÀ›hƘ'•g 2òÚxk=6Œáu2†¶,bŒúÙ‚ñ˜¼6äE–0Fý,eLœŒç‡†L¼ ¾ä…YÀ—¬` ÍYÉecªOó›ïDV3†ÎœõÇ蛳þüœõÓ;”³þzrÖŸP.ëO0{ÎúSâ³þ„ø¬3…æœu¦xÆ9ëŒ(—uF”Ë: }6ì³Å,V|ÆŒV|ŽÅgâˆÏèeÅg¼—V|F_+>ÃO+>G|ÆìV|†~+>C§Ÿ1»Ÿá›Ÿ©¾ø ýV|†ÎB|FßB|¿ŸÁ/Ägè)ÄgÊŸ1{!>_|&~Æ'a9i0K!þc–BüÇ{XˆÿT“¿K5ù;)¨ŽøNŽbøPq<ŽðÃÑ${„y¯ªå„¢ 1®÷“¾9ƒ¿èž¡Sçù¡sïWÑ©?!‹~t‡]®Q¬îëàiàT endstream endobj 454 0 obj << /Length 851 /Filter /FlateDecode >> stream xÚ}UËnÛ0¼ë+ØC€äà˜”¬W` $ ð¡ME¯ŽD§bÉåCþ¾œÝUÒA6†ËÙÝÙ‘D^}{ØÎlÛ?»Yt«Õ£;÷—¡q³òûî\]U}s9ºnüá\ëÚi÷|§†¾ÙºQ]—›jÓÆOÞtÍë¥uësRá^Ý}Ôõ“û5sÍ8­õ¬9ÎΗ“f£™i¤<ÆWOý‚¥ü–úlKQŸn8úîN™[¿ïë®-û#;s§æ“Üý¡kQ¨ž¡70¡jÍ(+úoŽÞ!$oßΣ;nº},—jþè7ÏãðFzo‚ùýкáн¨ëÏzÂör:½:ˆQ:X­Tëö¾®÷åÇîèÔü‹©ß™Oo'§BZÖØô­;ŸvvÝ‹ –Z¯Ô²®WëÚÿöŒ¤<ï'îÚsuíÿBå«`ilB ˜„‘„­=öÌã¸æ@æ )UÖ 9yŽ€IÁ(Ñ¥âË ŒŠS*0Ö43Ö`Ô`ÔÌðÃMSä‹iªæ÷n|k¤iC¸Xc,– pD¸ÂˆzA‹¾:æxœ0¶À)ç¦ÀljŸsn l9uÁ}‰Sr¼®ØIÔ4ç"nXCA8%Ž&ûÙµ6®AƒáúI‚ÖåÇšžcõ±¦:ë¿ø§þ7^ïÂEHOšupÍó¤ò¬áQF^o­Ç†1¼ÎBÆÐ–EŒQ?[0^“׆¼ÈƨŸ¥Œ‰“ñüЉÔ—¼0 ø’Œ¡9+ã¬bLõi~ãÈjÆÐ™³þ}sÖƒŸ³~z‡rÖCOÎúÊeý fÏYJ|ÖŸŸu¦Ðœ³ÎÏ8gå²ÎˆrY§¡Ï†}¶˜ÅŠÏ˜ÑŠÏ1°øLñ½¬øŒ÷ÒŠÏèkÅgøiÅgâˆÏ˜ÝŠÏÐoÅgè´â3f·â3|³â3ÕŸ¡ßŠÏÐYˆÏè[ˆÏàâ3ø…ø =…øL¹â3f/Ägâ‹ÏÄÏød ,' f)ÄÌRˆÿx ñŸjò·b©&'ÕÿÁ©¸W *ŽÇ~8šd0ïUµœPt"á Æò~Ò7—að—Ý3tªã> stream xÚ}UËnÛ0¼ë+ØC€äà˜”¬W` $ ð¡ME¯ŽD§bÉåCþ¾œÝUÒA6†ËÙÝÙ‘D^}{ØÎlÛ?»Yt«Õ£;÷—¡q³òûî\]U}s9ºnüá\ëÚi÷|§†¾ÙºQ]—›jÓÆOÞtÍë¥uësRá^Ý}Ôõ“û5sÍ8dzæ8;_Nn˜f¦‘òt_=õ –ò[ê³-E~ºá|è»;enµÖ>°îÚ²?b°s0qj>Éݺv…êzªöÐŒ²¢ÿæèBòöí<ºã¦Û÷Ár©æ~ó<o¤÷&˜ß­Ý‹ºþL 'l/§Ó«ƒ¥ƒÕJµnïëz_~ìŽNÍ¿˜úùôvr*¤µaMߺói׸a×½¸`©õJ-ëz¸®ýoÏHÊó~â®=W×þ/ÔQ¾ –É&¤€)ˆH8ù@h€ÐÚcÈ<Žkd>€‘Re€‘ƒ‘瘌]*®áq°¬À¨8¥cMC0c F FÍ 1Ü4E¾˜¦j~ï1À·Fš6„‹0ÆÒa™G„+Œ¨ıè«cŽWÀ c œrn œqœø9çÖÀ–ãðQÜ—8%Ç àŠDMq.â†5„Sâh²Ÿ]‹`£áú4®Ÿ$øa]~¬é9Vkª³þ‹?qêcà…ð.\„ô¤Y‡7ÑŒ1O*ÏeäµñÖzlÃë,d mYÄõ³ã50ymÈ‹,aŒúYʘ8Ï ™xA}É ³€/YÁš³’1<Ê*ÆTŸæ71Þ‰¬f 9ëÑ7gý1ø9ë§w(gý1ôä¬?¡\ÖŸ`öœõ§Ägý ñYg Í9ëLñŒsÖQ.ëŒ(—uúlØg‹Y¬øŒ­ø‹ÏÄŸÑËŠÏx/­øŒ¾V|†ŸV|&ŽøŒÙ­ø ýV|†N+>cv+>Ã7+>S}ñú­ø …øŒ¾…ø ~!>ƒ_ˆÏÐSˆÏ”+>cöB|&¾øLüŒOÂrÒ`–BüÇ,…ø÷°ÿ©&+–jòwRPñœŠ{Åð¡âxᇣIöó^UË E'b\!ï'}s Ð=C§:ÎóCçÞ¯¢SBýè›®Q¬îëàŠôàY endstream endobj 456 0 obj << /Length 851 /Filter /FlateDecode >> stream xÚ}UËnÛ0¼ë+ØC€äà˜”¬W` $ ð¡ME¯ŽD§bÉåCþ¾œÝUÒA6†ËÙÝÙ‘D^}{ØÎlÛ?»Yt«Õ£;÷—¡q³òûî\]U}s9ºnüá\ëÚi÷|§†¾ÙºQ]—›jÓÆOÞtÍë¥uësRá^Ý}Ôõ“û5sÍ8šPëYsœ/'7ÌF3ÓHy:Œ¯žúKù-õÙ–¢?Ýp>ôÝ2·ZkXwmÙ1Ø9˜‹85Ÿäî];ˆBõ ½ U{hFYÑsô!yûvÝqÓíû`¹TóG¿y‡7Ò{Ìï‡Ö ‡îE]&ж—ÓéÕAŒÒÁj¥Z·÷u½/?vG§æ_LýÎ|z;9ÒڰƦoÝù´kܰë^\°Ôz¥–u½ \×þ·g$åy?qמ«kÿê(_KƒdRÀ”Ä$ˆ| 4Àhí±dÇ52HÀH©²NÀÈÁÈsL F‰.×ð8XV`TœR±¦!˜±££f†Çnš"_LS5¿wƒà[#MÂÅcé°L€#ÂFÔ âXôÕ1Ç+à„±N97Î8Nüœsk`Ëqø¨ îKœ’ãpÅN¢¦‰8qà Â)q4ÙÏ®E°Ñpý ×Oü°.?Öô«5ÕYÿÅŸ8õ¿1ðBx.BzҬÀ›hƘ'•g 2òÚxk=6Œáu2†¶,bŒúÙ‚ñ˜¼6äE–0Fý,eLœŒç‡†L¼ ¾ä…YÀ—¬` ÍYÉecªOó›ïDV3†ÎœõÇ蛳þüœõÓ;”³þzrÖŸP.ëO0{ÎúSâ³þ„ø¬3…æœu¦xÆ9ëŒ(—uF”Ë: }6ì³Å,V|ÆŒV|ŽÅgâˆÏèeÅg¼—V|F_+>ÃO+>G|ÆìV|†~+>C§Ÿ1»Ÿá›Ÿ©¾ø ýV|†ÎB|FßB|¿ŸÁ/Ägè)ÄgÊŸ1{!>_|&~Æ'a9i0K!þc–BüÇ{XˆÿT“¿K5ù;)¨ŽøNŽbøPq<ŽðÃÑ${„y¯ªå„¢ 1®÷“¾¹ ƒ¿èž¡Sçù¡sïWÑ©?!‹~t‡M×(V÷uðõ¥à endstream endobj 457 0 obj << /Length 833 /Filter /FlateDecode >> stream xÚmUMoâ0½çWx•Ú‹í„8TÉ·ÔÃ~h[­ö ‰ÛTàп~3„Àªý<óüfüìÜ}ùù<³M¿õ³ø«¿ü¡? µŸåß6ûèî®èëÓÎwÇïÞ7¾WâçÐ×Ïþ(îó§â©k!ø©«ßO£>rþ­í¦ì#î_üŸÙî°Ý)9ÛžÚ÷cÛÍ$‚_Úã{út]PÜ‚‚’~ûáÐöÝ£P_¥”(»&ïw(ãÍÏRÄ|÷ÚvÍpÖ#¶P)-š¶>žgô_ïB?üüq8úÝS÷ÚG«•˜ÿ ‹‡ãðA¢ù¡ñCÛ½‰û[iaéù´ß¿{È2Z¯Eã_c¨ÿûfçÅüÓ/1/{/4ÍëªûÆö›Ú›îÍG+)×bUUëÈwÍk±æ”íëu¬TáOë4[@ˆ 0@`Á%€€! £ˆ ÀòŠ#P°™ €Â.Šw)¡À¡ˆÃºp¨%K€cJ€e Rͤ™¥š”ÚÜÈ(ú*¤Ú1Ž:b®¥DDŒ”˜RÔ@‚ È“2Œ£UŠâR*N)KI˜Î¡Ô€Ã0‡C„‡ÕSƒ,úk“©Éªm:5ÙB“ͦ&[ðY{Åœšì@ê’©É)ÎNMv¨ÜåS“ÊpåÔäJs}irpÐh•…­SÿÝ á™Ø2ŽéÐù¬L9ΙÖVã¼â}åy®XišŽó³ÅÌ8'šz®¸Ý ÊÔšxqŽÓ1ÏGÍyלŒN–Z1f×Xt:æs±ÆìûÐÚ0>w’pÖVR.Õ­rÂ)>ç1qÒ¾ŠùKv´Çì‰ÃHX„¶”­¤„1iSì5r„ÒÈM y°‚R6FBñl´˜¬H>]„³6ê‰áb ×£Ã5&Ã5&0½a'ÔeøvÔbÀ_dfQTtÁŒ£ÇÂQ]z™ÎõKÊ/¯ÆÅWБÉé^Zz…¤&£·¾²å­¯œºõ•Ó·¾ræÖW.»õ•«&_åròUOzò䢓n9¯)ÞþËC]Ÿ†!¼áô §rÛùË7dßï‘E?úøŒ_;Ì~TÑ?mÑ endstream endobj 458 0 obj << /Length 665 /Filter /FlateDecode >> stream xÚmTMkã0½ûWh…öF²G*!àØ ä°miʲ×ÄVZCcÛYè¿ßy#9톅ļÍÌ{3ú¸ùñ¼›¤es°“è^ŠÛ7ç®°“ìç¾ nnò¦8Ÿl=hýzI-.¶àÐ_¶ë«¦~ê^JIŽu]fÍ ºû`ê¹ÅtTs¬ê²óÄrв*oñ·8Ѽûì{ÚÖÇ&X,Äô…û¡ûdewÁô©+mWÕoâö¢Š¼»sÛ~X(2X.EiTŒz}ÜŸ¬˜^7uY~ýl­ÙVNMÑ”¶o÷…íöõ› R.Åb³Y¶.¯Ö”O9ÇØ„bå«%9ÖÀvÌsr(MXú„a“#Dùó$ar b¶qMŽDžs!™ ¨F´KèRLDØÄìPˆ0.BEäHQ#͸FŠéÚuÅŽ577v›±«â}ßQÈ•anÐOèd$ôg;ú²A,ˆÉ™ËCÛR;¼6§À+‡Ñ§Ìx**Ę$û³90ó«²ó‡û¿q'°ão¶×§fÿú Q%nú˜œš;Î5pÊX2ÿÊù™Óé¢]$œ£^”q®ßÆ~¿ +ôs"FÚá´âš!æ¡CƒyhîIhÐ~C¡MÏÜn£Oíf™1æ“$#hÐ)ç²½r~hмíjÆ5¡ŸF̹k×#ónÇÐi<âß7>TÆå²ßsa>Æs¡Žñ\8s&ws—a®YÆ1þ:€+ÍÝÜrùÄá¢á1¸\ßâÜut³ùÅà[‹ûZÕöò¨´M‹,þók4¾w°ž6Á_%aJ endstream endobj 459 0 obj << /Length 665 /Filter /FlateDecode >> stream xÚmTMkã0½ûWh…öF’G*!àØ ä°miʲ×ÔVZCcÛYè¿ßy#9햅ļÍÌ{3ú¸úñ¸Ÿ¤eóâ&ñ­O®oÎ]á&ÙÏC]]åMq>¹z¸w®tå¸Ú߉Ǯ)ön×Ù.ßÕÕpCÁ»ºx?—nŒúÐÚ½VõgxÄõ³û=ißþt¦›ÐO"î¹Þiýû’ [\lÁ¡¿\×WM}'Ô­”’›ºÌšt÷Ñ4p‹é¨æXÕeˆȉ”eU Áâoq¢ yÿÑî´«M´\Šé-öC÷ÁÊn¢éCWº®ª_ÅõEy÷ç¶}wP d´Z‰Ò©õz891ýÞÔeùù£uB³­¼š¢)]ß ×êW-¥\‰åv»Š\]~[S!åå8Æ&+ø¨™Z‘c¼eÇ"'‡2„•¥ÖÉŒå5çIÂä@Ä|놉"¼àB2AQƒhíSlLØÎØ¡28a}„ŠÉ‘¢Fšq5ÒïŠnnìbfÇ®Š·CG= WêÜ¢íe$ôg;þ´A,½ˆ:“sŸ‡¶¥ñx l=N×£O™ñT”Ƙ$û³0ó«²óë˜ý_¸س/vЧæÿú Q%~ú˜œZxÎ pÊX2ÿÚû™Óë¢]$œ£^œqnØÆa¿ K‡¹ƒ?‘£?ãq FqMyíc0Ã=) &l(´™¹ßmôiü,3Æ|’d &å\ÖcÖÞ †·]͹&ôÓˆ9wã{dÞ-ãtÚÀ…xö•õ¹ì\˜ \¨cΜÍýÜÀe™kžqL¸àJs?·<œ@>q¸hx .×·8wÝl~1øÖâ¾Vµ»<*mÓ"‹ÿü﬇mômDaš endstream endobj 460 0 obj << /Length 666 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öÆ6„ØU‰@"å°Ûª©V{MÁi‘@¬Ô¿ßycÓt·+%èù13ïÍØæêÛÃn’Uí³›Ä·R<º¡=÷¥›äß÷]tuU´åùèšÓç*Wo‡;ñзåÎÄu¾-¶M}º¡àmS¾+7Fý?hå^êæqýä~Mº×ß}kú ý$ŸêÓ|y'ˆBpðO×uÛÜ u+¥$bÝTy{„õ!šy1 ê¦êƒñ G‘Ò¢ªËSXñ³<Ò ¼{Nî¸mm´Xˆé#½Ný;{»‰¦÷}åúºy×[DïÎ]÷æ`AÈh¹•;P5ê÷ÇþèÄôK_ïŸÞ;'4¯•÷S¶•º}éú}ó⢅”K±Øl–‘kªÞ©ò|cSŠ•s&§æ^s œ1–¬¿òŸeΘO’ŒáÁdœË~ÌÊóð`xÛÕŒkÂ?˜s×¾GÖÝ0NàÓ-ÄÛ°o|¨¬Ïe>ha>6h¡Ž Z8s¶ðsƒ–e­YÎ1á:@++üÜŠpùÄá¢ásðqËsßÓÕæoßZÜ׺qŸ•®íÅþ=¬î7Ñ÷cÅ endstream endobj 461 0 obj << /Length 988 /Filter /FlateDecode >> stream xÚmVËnÛH¼ë+¸ÎAÑpøó 6 bc±W™;lJ ¤ƒÿ>S]”WXø`¹Uì®®~pF7ý|X›aÿÖÙW•ü ÇýyîÃÚý½;¬nnü¾?¿…éô=„! —§ÇoÉÏyß?„Srëîýý4ž¾Dçû©=áâõ¹“ /ãôŸ ò$·áßõáø>¯ŸÎãëiœÖ ®ãé5º|ò4‰Pr %ðO˜ã~ú–¤_•Rh§ÁíßPÀqµYD$›‹¬çqæEIò]«T'ÃØŸ–oòÙ¿ÅN øáýx o÷Óó~µÝ&›_ñáñ4¿‹¾/«Íyó8½$·×Â⃇óáð "Q«»»dÏ‘/Öý}÷’Í'Õ}x<¾B¢å{JMý~Çîónz «­RwɶëîVaþ÷L yz^|5|u?”Šv %@  !P°  vÖh#ƒ/ײ&€¼%`À»P¢Òm‘(0YJp”ä°à(sô°9–ŽHKV$µ ­@Z1Ä´BHåEiéᦓ4(ß"ܲVT飇.@¸E-]Ý–pU´tIÇ>Ej…Žypxrè Òz¦õ mÑð¶#)„u:f‰6Fy™YÓ\fØÿÞͱýš™dz§€buN\슶Œ‹BRÑž¶ÆLdtŽ¡ç'Ÿ|áA­9›ÙˆOIÁ+âȕ״%¶¡¶äFla)qt§ààätÐSˆæTƒ¿X8±]9Ä’³+µ¨±p¢9ÞœwüíVpý7¶À¦”Š­^²výå¢ü%k´²ÔcŇz,j,—…‡y­ØÜ} k·Ð_±v‡Ú+æòÈU1—gµäBís9‰e.+þ¬+sØi™£2b3—G?ì‰ÊÄθÐè‘ùª\ì‚û€\Fô¤øË,ʵ›š6òš†6j4†6öÐX¾Rà´K^ÄÚ%/üm.ýñè¡]ò¢?¶ä¾!¯•¼J‹-}Pø[î*ú`} Çò’ž;m™Ø©Ø)úì4môÇe´Áã¸ç²·ŽzdÏÝ¢Gl©WרÅñ=ªÅŸzjÔë¸{54;¾_5´y¾_rÊú”œrÈ(ƒž{¾¿s÷9÷<žzvÕSOŠ#Ïó½vÐæÙ™»gÿ=ô´’·pðo%o&ÇT{•·½ÊÛ^åm—¹ oÝ žŽgŽÿ]Fuu9O,èé âérzÉi…+ —çÇ]ןç9^ƒrÃÊý†›mœÂÇ%|Ø%r{_~(àÛnõ2} endstream endobj 462 0 obj << /Length 664 /Filter /FlateDecode >> stream xÚmTMoâ0½çWx•ÚÅvB°+„8l[•jµWHL7RI¢ý÷;oìÐnµDoÆ3óÞŒ?n~<ï&YÕÜ$¾—âÅÛK_ºIþsßE77E[^N®«\5®žÄsß–;7ˆÛ|[l›z¸£àmS¾_*7Fý?håÞêæ3<âöÕýžtÃé`ú ý$â^ëáÖ¿/ ²ÅÕúËõçºm„º—R’cÝTy{‚îs4 Üb:ª9ÖMÕâ9‘Ò¢ªË!Xü-O4$ï>΃;m›c-búB‹ç¡ÿ`ewÑô©¯\_7oâöªŠ¼»K×½;(2Z.EåŽTŒz}ÜŸœ˜~oêºüúÑ9¡ÙV^MÙVîÜíK×ï›7-¤\ŠÅf³Œ\S}[S!åpcSŠ•s|T¢–äXoØ1/È¡ aeé£ušC£¼æ> stream xÚmTMoâ0½çWx•ÚÅvB°+„8l[´Ú+ML7RI¢ý÷;oìÐnµDoÆ3óÞŒ?n~<ï&YÕ¾ºI|/Å‹;·—¾t“üç¡‹nnж¼œ\3<:W¹j\=?ˆç¾-wn·ù¶Ø6õpGÁÛ¦|¿TnŒúÐʽÕÍgxÄíÞýžté7ý„~qûzx§õïK‚lqµ‡þrý¹n›¡î¥”äX7UÞž ûM·˜ŽjŽuSõA€x…œHiQÕå,þ–'’wçÁ¶Í± 1}¡Åóа²»húÔW®¯›7q{UEÞÝ¥ëÞ-—¢rG*F½>NNL¿7u]ÞtNh¶•WS¶•;w‡Òõ‡æÍE )—b±Ù,#×TßÖTHy=ޱ)ÅÊ9>*QKr¬7ì˜äP†°²ôÑ:MÈ¡Q^sž$LDÌ6ÞaÈ‘*Âs.$S5ˆ6`Ñ>ÅÆ„m•Ãë#TLŽ 5²œkd¨‘­}WìXssc‰»*ÿzê¹Rýh/#¥?Ûñ§ béE$èLÎ|Ú–Æã°õ8^yŒ>eÎSQc’ìÏçÀ̯bÈV̯cöáNa'_ì OÍþõA£Jýô195÷œkàŒ±dþ•÷3§×E»H¸@½8çܰ%ŒÃ~A—s*=FÆã Œâšó0ÚÇ`†{RLØPh33¿ÛèÓøYæŒù$ÉLƹ¬Ç¬¼ o»šqMè§sîÚ÷ȼÆ tÚÀ…xö•õ¹ì\˜ \¨cΜ-üÜÀe™k–sL¸àÊ ?·"œ@>q¸hx ®×·¼ô=Ýl~1øÖâ¾Ö»>*]Û!‹ÿüﬧMô±Ba© endstream endobj 464 0 obj << /Length 665 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öÆ6„ØU‰@"å°mÕT«½¦àt‘@„ú÷;olšv»R‚ž3óÞŒm®~<î&YÕ¾¸I|+Å“;µç¾t“ü羋®®Š¶<]3Ü;W¹j|{º}[îÜ ®óm±mêᆂ·Mùv®Üõÿ •{­›KtÄõ³û=é†c_›~B?‰Àçzx£€oïâBþåúSÝ6wBÝJ)‰X7UÞaýMƒ¼˜Ž†uSõÁƒx£HiQÕåVü,4$ïÞOƒ;n›C-búD/OCÿÎÞn¢éC_¹¾n^ÅõÅÑ»s×½9X2Z.EåTú½ß˜~ëëãýó{ç„æµò~ʶr§n_º~ß¼ºh!åR,6›eäšêŸw*¤¼ÆØ”b啨%kà ó‚e+K­Ó„òšó$a"1Ûx‘*Âs.$S5ˆ6PÑ>ÅÆ„m„ÊA Âú‘¡F–s 5²µïЉ577v‘ر«òϾ§+uaÑö6Rúó:¾¬!,½‰É™ÏCÛÒx¼¶gÀ+ѧÌy*JcL’ù|Ìú*†mÅú:fþ“vŠuòiü©ÙWUê§É©¹×\gŒ%ë¯<ÏšÞí"áõâœsÖ0û_:Ìú©ôý3x0ŠkjÌÃhƒyîIYx0aCáÍÌün£Oãg™3æ“$cx0ç²³ò<<Þv5ãšðO#æÜµï‘u7Œø´A ñ6ì*ës™Z˜ Z¨cƒΜ-üÜ eYk–sL¸ÐÊ ?·"œ@>q¸hø|ÜßòÜ÷tµù›Á·÷µnÜÇg¥k;dñŸ¿GãG«‡Mô€@c¶ endstream endobj 394 0 obj << /Type /ObjStm /N 100 /First 914 /Length 4120 /Filter /FlateDecode >> stream xÚí\YsÛF¶~ç¯èÇ™r ½w£«RSå%²åX¶,)^Ë´˼‘H…¤2ñüúùN£6ÀŤ¬¨êÞ›J@4€^¾³ŸÓ¬e‚iç˜Ô gÏîhW2ÎY…¶Ì9ôó’ù€~^±  ΚIa1À&eéÚ[Ì$i¦4ƣᙴžî”LzI³&K#™.“sèR2%,SJ44S´œ. SVè.-°i¬U:¦–ytFzb2–•Òâ&¿š•NëQ–•¥FåYÆ:ˆ„fÖ’…’†kŽ$2À5)"1ÂŽÖ“¥(è{¤´²Á©EÌ(¥§I„R)id¬¬UQ5¤ P Gƒ<é0Vè=Ô,Tñ–7¤ ­²¤¸ïô\— (0£4Q¼ÔS€,j<(ô¬t!z m5·IÒÒ’†@ ÒZè”lÐÑ–˜,‘NPOzæ€r4V¡¥•#ähêáŒ)Ñ¢{‹ûØ€~BÝA)Ì^˜‘á¼ +¥…Ä©sÀ("Çb;é{”!Å·X½’dhÔ€UaNéÉ ˆ™âüôÓ€Ÿ~»®8Oæ~róy¯_ŒÆ¿ ø£Éô¼š~0[ñ‰?ãüñG/ü¸:›³`f! §ÚÊ‚LÍÚ"2jUxkÑí!ûé'ÆO:90þ„ýãzxQRü“ýë_ül(‚$ãó#¨-J(¶6¡€2­¡î„)‹(dS@2`„+¹ m 0c=w j…P¸…‚*o ¯ª•?ô½`A^—ð•®ðÎSÈB’+eam¹ƒ¹C>ÈÀø© ý.{‡”/,ž*u!á¥ô@ÀEC.t^¡ü 0¸Pó£ÁPJèÅý@€?@ÄAT…9À ÃMäIUƒ¼_FN´…` ,s†p—Ê )‰R |!É «ÜाC&À% è(i Äd=ÅVR°ãž ø^ÉG@‰”*I.Cš{‘‚~a(,ËBµõ•‚ィ£Td ‰-I™J(f•®prSÀ”wˆ¡Tp”UÈf@Ù LÁRvP·Á3Hs— Jd2r€êÒ Ê$$¢v0›8q§nš€rMSX*T(¨à@R‰TÂÝsH!Ì€TˆŽ2 $ÇðìBÞaØ6H¡ªT° "ª&æà PŽlÀp‡–a¤‰©‚׆Š!¤3¨ QZ}OŒPä!©”"E@!íD”`6ˆµÝý˜F# ‹Ð%È¢J€† ëwE©Â½ä/щ¼´Õ ž’ò{…©E¾’û~{XCQ¢’µ²P-ÁgzOUO(P”o â È 4ó1ãïÞ@^Pùæ‘£rß\^~ZÛÕÅ®(b‹€LºÓw2žÇå÷QÄÁ…ÇAû’ 0„–úÊKªÓ*L¥ˆW˜‚M'g'ÈdüèÉ>ã§ÕŸsgÿè½/-ÄߺmQãö[ÛüJî6ÛÛbÒø³ún³ÞâNÖyqí$jƒô»²«¢ žØ“ àÓࣅ‹@døèáž%‹¿¸rBÇgèÃþþý_òKËTe›C­²Š¿%ÿÿSw°²}ç^©xÄk ߀j‹®©ê²Ñƒ`¬uŒö1c_ÜãR¿v\j¸ñfnº«·tО ͥЗÎñ Mí¸fÓ& ÔôgZ¿“M÷¢~ÇqäßþOQeÅþþýûw‹ßhÓµkTˆôv†~m–Ð/´¬Ð©}Û’GªxTúMIÅŠÙ?YÝu8\) ”$VQÒÀ#Q?TÈG¬¤õh§, ÑcÅyê{qlš=f0”à»f~êg)ÿQíò¶I’„ÆU27I/“´nÍšÚtˆÚQHÆ9˜  ;ÔG¬ùžËRÐ;°ØŽ/—ã¢«ÉæoÌœVhúÓ¹qQÛ £vA4GsΠ®«qîDÑ۸ƈ¡ í³2µ}rcÍxj7®r…­{Åý†'‘^W+Zl£µósKsŽ=µý ºŒ9O|rŸÍœ†øMmœ­‘™$š”:ŠH$÷LDw.Ã8'aµYNˆï,SÌ Îõ9'«%/[Ï;ʲr¡;oo-ôfš£9è~Pµ¢Æ#z.¼F0yüËû¶Š’Ô*G26F%¡ÐÙ$ä\È…žÓÖÆÌt?fKñ8zƒ7 f•éÒ›ðeÓõ$¡fä6¦Ñ%©À³t˰2³Û–T/~XŒ4G{µhmoe“Ø^;ô²MOÚ4&Kw¢ífóÔ¥a6in¼¶”]9ZWË1óûí˜Ônó˜,ï‰c’½4ÏzÆû½L­§·ÉÔºšNFÖhtsnÂ@žáµ‚’ÖºÒŰ÷)Û±¡½'Õìl:ºžO¦õ^ÇËáž|8zúæñ³~'\/fÌÔ==šüÉ>î)ÃöT —ÕÆB°>îÎΪñeÀ¯ŸU£‹¯s† Z„ì9«ƒùðrtöp|qYÑÓyuõAyÀߥFKLðu8¥“ðëá´_V_æŸGõÕ”úÑå?kLû#Ìe$…Áãî®ÔzŸ?{z|ÖѨhŒÑÚÄX½ Ñ“ÓèJQ)éaNåž4 ^­¥ólru5ä×Õt49ç³Ëáì+ŸOGCš!ÒÛ¥ÕíBëÉ«“Óã× õx©F4¤Šð#¤¶ua-¡Ÿ§Ã³ßª9‰´iGyõûÍðr!ïLÖüúòfÖe@¹ N^¼ùå 8y¿V¡Û‹ú,é5¼]p츰ÉÖ𠺬®0ž_Æ=”؅°‡¾}ûàðäÑá:Â$öhV¥¦œªë‰6,[k¨9MNç4}èÒ¡v¡ãý“§Þ½zp²pJ`5%ˆ>{šD¤•¥e¦¤Rv(¡ËVD(b׊ÈvD$rr¾~»þZ»4íäaÞ<~ð4œÒ_C­¦IÂ7'¢Eqk¢Â4=åÏøK>䟓·©ø~ÁGü7~ɯød\ñëÖñù¿']êwò9ǯ~y~üÔŸn¨Bñ‘¨÷æGD*¶ þ!Äó'üg¾qÀŸó_ø ~–¼âGü5?æ'üWþ†‹†³³Ñèl4=»¹ªÛóÑåyŇðYü3œVí¡×ú²3pør2N|>§«ÌÇ}á_F€ù“›)ø1­†ójÊ¿&ƒ@þ'Šä²šÍ —1 šñÍÕçj:]Œù¤‘ÕJ_Y ðwþûÍd^¾äSHsV]jH³ê¬1ýÙD>ÿ:­*’7¿á7ãs,r6™Vüþoþ'ÿÆÿÃÿSM{º°“û=ót*6ê»dV›ô`§@ñäÑ/O_¿Z¡\¨CyKßoéé‚ëê]fåí’ µí^FæBYa…O£Ô:pùçV×M£j±lkh«˜ÞäQ`p—³+"ÓÏã³Éùh|:G_¾T˜þ¬š± ªÃ´iåÌtÈE½Q«ÄQGj²’ªuvrHâ‘2BY+ETѨ¬Qa"µNGÅlˆKd"KJžtFû=£Cb·dwrccAwìŸÔM㯓—›çúLßÑ$C¤/Uvúi+¾g,ÏjD­•,‡HÿJ>×5Wӆʾ­ÊG¸Hb6 ¢Ëé咱џE•¹¨¼n-å²ZõÓ²?Éþ>nÂf gUü#·¥Mߎû‰_“‘!ñýÑt6'KgöÿbØ\ X¿Ï¿Î}ÿ»žN~ƒ«çd†kò¦M€ú;´}@¾ȸ ¥ }¨¶(쨷ÚÇ–ðˆ 9ÒOXÂcÅîxú»š=@Jöåx(|·³Ëxäîx–7ñúˆ–tÈØ ]´,ÒuׯgÄo—@ª[0miW®rY¯L®è2G)¶A©wG¹¼{ÖG¹¤mºƒR¹ ¥ß¥¹…….íëôPj¹Ñ&$Õß-Jµ J»;Êå‘>JÝGTn¹*³”­XévÙßÈï‹{bǹˆŒËÞ×úÝ­Ýqé3oɦ_@“}£¦O€—ÀÞ"T¬Ý:éƒ]²mg×v°·#·?ú€ÃöÜn Àîqfõ6F©Y2u/3¤^fF´þÜ-Âͦ}ˆ>¸%óQëÜTÛpñ6gCõÞ‡k7Âu!ƒ+¶{‹ô½"³ÙÇÓg阔Û`^ކÕ uæä†êÖ®§õ{Ìį_Fç¨'|T/úw$ês½9ɤIçÚÒôtþt›%dYÏ¥ÒJ¦k•®ë5úöðÖk¨Ú·0åëMh·7žÓg(ºÎjéKðï­aÖ­¡ë·ÍL×ïsCÔk¤ïc6ÍI6SO¿ÓG0ô!Ôsºs¼º™_¢ìš%MaIð¤(ôÏ#Ä‹zß¡„b>)ØCæÓ˜–¤4ìhZýÁ|×2롺*6 MÇ_Ò7:Þ-ÏãB3O;®ž§§«ugÛvVM…QZTeFDÿ6Ä‚7ÍEÍ›=Ù[L6‹¥èÙ.VfkÙ4Ù–­Öl©2”½ROӲ؊•ÓÄ‘«˜–©ÆmàSzØœO ¸šO¢Ã'Ý[¬Šé Ewd²‚@ÓrX—+GF`f…"è–Ãz“âÊÎ> endobj 467 0 obj << /Type /ObjStm /N 36 /First 304 /Length 1889 /Filter /FlateDecode >> stream xÚ•XÑnã¶}ÏWð±)°Y’3ä@Q@"EhîÞ‹v (úàn…Ôh6Y$Þ¢ýû;#É-1nû`Xžá ÏáiYTZY­È(㕱‘?Ê© l… 0(ôüAÃßQyþ i Û$ÊxºB²Ê '@Îã? 2Ñ ?8eçTä•EÎŽDÊz OBQÆDžbÐ ŒåÌÁ(°A_a° ÁŠ 8ñ„œ‚èå'6ø§X4ˆ%Š›-Q+§ÅrÌF«ÈNê&z Å9”ÁN9 ,zåÄEüàìÕW_]½}¿?ÜŠ1iõÝÕÛNY;?ýo÷4>dçŸOã²´ÓwãŸÅÄäÇ×_×iÌ1 Í4s$n# "ñ,}«4°8ÊþéùpÂv»ã°HŸ9Å\ͧ¹ôù\ÕL vñæ[Q&c·a§¥5mbsà™Pq1ç\ì1ù»ÝÇñYýôE~üðæûÃîépÍ2–¡ê‹Û›)Å>êLî±®èðâÚõš%¤õÀbñì,Þ„èl5brâ­cSgȱ¨K0Ú•k®g|ñvx;¤ ¾p¬5ªŸ™Îþãþ°‚ÜŒùyÍqäMñA! Ùx[MëK %W´í‹ÐÅ r¯O¥KÝ ±ºò×ó. S&ÈP-d¥²¡! ¶#¦kˆ*/õÁ .`Jèı×t›è›ÑMâ}È=ÉÀžGf®Peã(X,%_QKPRÎB ™ccµhÉu½ÉÄ-E¡ÔÙBå-9q/¤Ø%='±Uæì|äZn&:[ÃóαkâôÍè&ñÌÍJ×Sa "¥Jh¹wÞg&îz~æ•7®ªZ.½‡.=éŽá™Z¤!÷¡  Ǫ¦…¢ è)º:"¬¼¡¸hb Ý¡¥Ùy#¯‰oÐ7£›ÄKr\V^y0¥ ˆ kxC€È‡F&Ñr/uy´ñ ygÛnHc+¹Ý †b>öõt<óò>,Á&̱©;]yûÞk´™™qæ [Ä7è›Ñ-â7i>ý5÷iKöEêÁ ïRp’wy•‡¹²þñyÎR×–œ’Båõ–Wnxz³hÉÖ^*Öó©Ëm Òt |ÜòNg)‡Ž â[ôÍè&q›œïÀSÇáñPµ &y&ÅÂ̼ŽVäê+/·Oç ‹"ɦb¯« zÛ¯)Ùg’k/X¸­!o˜H²‹«ŠCŠh4Ræ[‡ÖZ*ZÄ7è›ÑMâèJì;lÁ —ªUÔœ±ØqM®P׋˜MÏE¾y('ÞRÓ+oêúž=RŽqêÌUŽçÄÜÖÈ ‹IˆW î³Æ‹†ÀÔÊ6™okâôÍè&qmKèˆÏßìIˆÛ <ñ½Òk¾†>e”Ї <߉û‹Œ:ˆìâjѨçÞ{ê:^•N–=|øm÷é0>}yÃ+i ®Œ,{2-–¨ŭÜâ»ág3ÜXi(ç&i®+c;v»£‰‘ùc®ýa¼I·ï%Õæ¼©¦~¸(žo?ßÿ¾{zØK¬RßÞ¾ÓÝß=>í¿}d§Y;¿?ü>Šcýiw7ʄdzqþ-{ÅRm‘†„­°œÆn@Ï‚ƒ:­´aojËÔò±¶H? g`¼ì•3$"Ú,èiÖÓ¨W€I_96ÔÙ¥yש¾®QÌûª^6¹Fžá(>ìÚ¸Âõ˨6.‡*Ÿkƒ\k\¬ r±¤z‰åÂ깈ÌD6àú4¦ (J [’=ûLJ/E=FÇ•Q–˘•QøXññB¸ØnŒälCdgÃ68_œ„óÄv×FÑ%¬"MZQ„rn„©UlNÔ3gƒ_… 2W@PÒ;³6òHçÖF†ìV䜄û#Ï¿T+1­…7¯‡ø:d‹þ|„¬úqÿ®\Rþãñ¸r‰°Clº¦›»iºD쮹δ9í·X·q— Ú™`lN*ƒnº„`ôM×Dš®‰`h¸&ÑYk/´[‚ð·§²[ÛžTÆ÷I¥lÓ% š.Ùdè›.9ðr•¸ËQܺ­DaÞÖ»¦KXPËeç¨ÐtMQ±éšþ‚˜‹'¬Û¸Ka›õÛIq!ØPÎ,@»¦KŽ1MM×ôÿš®©Yº ¬Û¸KqÞ2`Zxæfl·Åu3w¸€gI½;áùvÿ+ÇàRl\YÞÁÎßfù¶Ë7üÍ»£×ÿ^-3-­åáÒ?qùWŒËŸD¤øÏþÙl.BËêmÚv÷wòRôŽuŠ~yYúßχûýÃd9¾%„ŒñôîõnüÏã¯ãÛžÇw#‡|ºi~E§—·ÿ`³åù endstream endobj 499 0 obj << /Type /XRef /Index [0 500] /Size 500 /W [1 3 1] /Root 497 0 R /Info 498 0 R /ID [ ] /Length 1210 /Filter /FlateDecode >> stream xÚ–IhžU†ïùÿtJÛ¤m:¥7C‡$MÒÌIÛ?IÓ¤SÒ)MmÚ¦éÜT"ˆ êÂEEä.‹ àB¤ÔƒÓBQ«¨(\¬7"t¡àÂýžwópÎùïð}÷}¿sÿBø¯B)Xhj DŠ8/"2P—¨U•¢+Ô”jðâÎ:Y3–€¥ÔJÔ´Ô2PMm+5í¶¬ ¶«¨¥ë¤+A µ}ÔHkÁ*jðI 3UZ ¿¸TÐ`LãÒÓ8.q¶ð sj¦qLã˜Æñ†óa»äž·pá-Ã/~™åõhôÇW¾@mç,«€• h¥¨FZ_,œƒ¥`¨ËÁ ·^ÖŒ5 ÆÂã•Ö‚Õ@-mP#S÷©³ðD«Æmõ Dõ«F°4[xæ+SƒRGÚèC±´>Ðn!hpè;@è= ìýn~¢`ìê觉&@Å«“GC‰ê c`/´ªx|e‘¦õ­4²H›‹§À> ¯=«E̵åpÌs`œ\rñ"à:‰ˆ¹D"!^ˆ¯ó ,ŸÐ7!hBФV +U>HH›6!mBÚ´`‹T4á—„ª ¹S@ß„¾ }‚&ÝVtÖÂëzŒz+ß›V„ȉSK(pDjˆœtƒ¡tBéÄ'];È;áÔP:¡tBéÔeáïµGñ‰ß¹¯¨ÇÂï+ê5³Ïõ™5>§¨ß¬­YÑ€Ùô/ŠÍnþ­hÈJSŠvZéÝçí²Ò?)Úm¥;ú\RÅJ?W [éXé¯ãŠF­Üñ´¢=V~ìEcV~ã…`å[ßxón·« ¼÷[÷oøh{¿)ðé£>¯+ðÅí_¾Xàë' |û`^*Ÿ*p÷ºVÆ>鬕ÿœÕDΈœ9#rFäŒÈ‘3"gDΈœ9#rFäŒÈ‘3"gDΈœ9óéfþdäÎH›Q5£jFÕŒªU³þ LoadPackage("congruence"); ----------------------------------------------------------------------------- Loading Congruence 1.2.7 (Congruence subgroups of SL(2,Integers)) by Ann Dooms (http://homepages.vub.ac.be/~andooms),  Eric Jespers (http://homepages.vub.ac.be/~efjesper),  Olexandr Konovalov (https://olexandr-konovalov.github.io/), and  Helena Verrill (http://www.math.lsu.edu/~verrill). maintained by:  Ann Dooms (http://homepages.vub.ac.be/~andooms),  Olexandr Konovalov (https://olexandr-konovalov.github.io/), and  Helena Verrill (http://www.math.lsu.edu/~verrill). Homepage: https://gap-packages.github.io/congruence Report issues at https://github.com/gap-packages/congruence/issues ----------------------------------------------------------------------------- true  2.1 Construction of congruence subgroups 2.1-1 PrincipalCongruenceSubgroup PrincipalCongruenceSubgroup( N )  operation Returns the principal congruence subgroup Γ(N) of level N in SL_2(ℤ). This subgroup consists of all matrices of the form [1+N*a N*b] [ N*c 1+N*d] where a,b,c,d are integers. The returned group will have the property IsPrincipalCongruenceSubgroup (2.2-1).  Example  gap> G_8:=PrincipalCongruenceSubgroup(8);  gap> IsGroup(G_8); true gap> IsMatrixGroup(G_8); true gap> DimensionOfMatrixGroup(G_8); 2 gap> MultiplicativeNeutralElement(G_8); [ [ 1, 0 ], [ 0, 1 ] ] gap> One(G); [ [ 1, 0 ], [ 0, 1 ] ] gap> [[1,2],[3,4]] in G_8; false gap> [[1,8],[8,65]] in G_8; true gap> SL_2:=SL(2,Integers); SL(2,Integers) gap> IsSubgroup(SL_2,G_8); true  2.1-2 CongruenceSubgroupGamma0 CongruenceSubgroupGamma0( N )  operation Returns the congruence subgroup Γ_0(N) of level N in SL_2(ℤ). This subgroup consists of all matrices of the form [a b] [N*c d] where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGamma0 (2.2-2).  Example  gap> G0_4:=CongruenceSubgroupGamma0(4);   2.1-3 CongruenceSubgroupGammaUpper0 CongruenceSubgroupGammaUpper0( N )  operation Returns the congruence subgroup Γ^0(N) of level N in SL_2(ℤ). This subgroup consists of all matrices of the form [a N*b] [c d] where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGammaUpper0 (2.2-3).  Example  gap> GU0_2:=CongruenceSubgroupGammaUpper0(2);   2.1-4 CongruenceSubgroupGamma1 CongruenceSubgroupGamma1( N )  operation Returns the congruence subgroup Γ_1(N) of level N in SL_2(ℤ). This subgroup consists of all matrices of the form [1+N*a b] [ N*c 1+N*d] where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGamma1 (2.2-4).  Example  gap> G1_6:=CongruenceSubgroupGamma1(6);   2.1-5 CongruenceSubgroupGammaUpper1 CongruenceSubgroupGammaUpper1( N )  operation Returns the congruence subgroup Γ^1(N) of level N in SL_2(ℤ). This subgroup consists of all matrices of the form [1+N*a N*b] [ c 1+N*d] where a,b,c,d are integers. The returned group will have the property IsCongruenceSubgroupGammaUpper1 (2.2-5).  Example  gap> GU1_4:=CongruenceSubgroupGammaUpper1(4);   2.1-6 IntersectionOfCongruenceSubgroups IntersectionOfCongruenceSubgroups( G1, G2, ..., GN )  function Intersection( G1, G2, ..., GN )  function Returns the intersection of its arguments, which can be congruence subgroups or their intersections, constructed with the same function. It is not necessary for the user to use IntersectionOfCongruenceSubgroups, since it will be called automatically from Intersection. The returned group will have the property IsIntersectionOfCongruenceSubgroups (2.2-6). The list of congruence subgroups that form the intersection can be obtained using DefiningCongruenceSubgroups (2.3-3). Note, that when the intersection appears to be one of the canonical congruence subgroups, the package will recognize this and will return a canonical subgroup of the appropriate type.  Example  gap> I:=IntersectionOfCongruenceSubgroups(G0_4,GU1_4);  gap> J:=IntersectionOfCongruenceSubgroups(G0_4,G1_6);   2.2 Properties of congruence subgroups A congruence subgroup constructed by one of the five above listed functions will have certain properties determining its type. These properties will be used for method selection by Congruence algorithms. Note that they do not provide an actual test whether a certain matrix group is a congruence subgroup or not. 2.2-1 IsPrincipalCongruenceSubgroup IsPrincipalCongruenceSubgroup( G )  property For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by PrincipalCongruenceSubgroup (2.1-1) (or reduced to one as a result of an intersection) and returns false otherwise.  Example  gap> IsPrincipalCongruenceSubgroup(G_8); true gap> IsPrincipalCongruenceSubgroup(G0_4); false gap> IsPrincipalCongruenceSubgroup(I); true  2.2-2 IsCongruenceSubgroupGamma0 IsCongruenceSubgroupGamma0( G )  property For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGamma0 (2.1-2) (or reduced to one as a result of an intersection) and returns false otherwise. 2.2-3 IsCongruenceSubgroupGammaUpper0 IsCongruenceSubgroupGammaUpper0( G )  property For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGammaUpper0 (2.1-3) (or reduced to one as a result of an intersection) and returns false otherwise. 2.2-4 IsCongruenceSubgroupGamma1 IsCongruenceSubgroupGamma1( G )  property For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGamma1 (2.1-4) (or reduced to one as a result of an intersection) and returns false otherwise. 2.2-5 IsCongruenceSubgroupGammaUpper1 IsCongruenceSubgroupGammaUpper1( G )  property For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by CongruenceSubgroupGammaUpper1 (2.1-5) (or reduced to one as a result of an intersection) and returns false otherwise. 2.2-6 IsIntersectionOfCongruenceSubgroups IsIntersectionOfCongruenceSubgroups( G )  property For a congruence subgroup G in the category IsCongruenceSubgroup, returns true if G was constructed by IntersectionOfCongruenceSubgroups (2.1-6) and without being one of the canonical congruence subgroups, otherwise it returns false.  Example  gap> IsIntersectionOfCongruenceSubgroups(I); false gap> IsIntersectionOfCongruenceSubgroups(J); true  2.3 Attributes of congruence subgroups The next three attributes store key properties of congruence subgroups. 2.3-1 LevelOfCongruenceSubgroup LevelOfCongruenceSubgroup( G )  attribute Stores the level of the congruence subgroup G. The (arithmetic) level of a congruence subgroup G is the smallest positive number N such that G contains the principal congruence subgroup of level N.  Example  gap> LevelOfCongruenceSubgroup(G_8); 8 gap> LevelOfCongruenceSubgroup(G1_6); 6 gap> LevelOfCongruenceSubgroup(I); 4 gap> LevelOfCongruenceSubgroup(J); 12  2.3-2 IndexInSL2Z IndexInSL2Z( G )  attribute Stores the index of the congruence subgroup G in SL_2(ℤ).  Example  gap> IndexInSL2Z(G_8); 384 gap> G_2:=PrincipalCongruenceSubgroup(2);  gap> IndexInSL2Z(G_2); 12 gap> IndexInSL2Z(GU1_4); 12  2.3-3 DefiningCongruenceSubgroups DefiningCongruenceSubgroups( G )  attribute Returns: list of congruence subgroups For an intersection of congruence subgroups, returns the list of congruence subgroups forming this intersection. For a canonical congruence subgroup returns a list of length one containing that subgroup.  Example  gap> DefiningCongruenceSubgroups(J); [ ,  ] gap> P:=PrincipalCongruenceSubgroup(6);  gap> Q:=PrincipalCongruenceSubgroup(10);   gap> G:=IntersectionOfCongruenceSubgroups(Q,P);   gap> DefiningCongruenceSubgroups(G); [ ]   2.4 Operations for congruence subgroups Congruence installs several special methods for operations already available in GAP. 2.4-1 Random Random( G )  operation Random( G, m )  operation For a congruence subgroup G in the category IsCongruenceSubgroup, returns random element. In the two-argument form, the second parameter will control the absolute value of randomly selected entries of the matrix.  Example  gap> Random(G_2) in G_2; true gap> Random(G_8,2) in G_8; true  2.4-2 \in \in( m, G )  operation It is easy to implement the membership test for congruence subgroups and their intersections.  Example  gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_2); true gap> \in([ [ 21, 10 ], [ 2, 1 ] ],G_8); false  2.4-3 CanEasilyCompareCongruenceSubgroups CanEasilyCompareCongruenceSubgroups( G, H )  operation For congruence subgroups G,H in the category IsCongruenceSubgroup, returns true if G and H are of the same type listed in PrincipalCongruenceSubgroup (2.1-1) --> CongruenceSubgroupGammaUpper1 (2.1-5) and have the same LevelOfCongruenceSubgroup (2.3-1) or if G and H are of the type IntersectionOfCongruenceSubgroups (2.1-6) and the groups from DefiningCongruenceSubgroups (2.3-3) are in one to one correspondence, otherwise it returns false.  Example  gap> CanEasilyCompareCongruenceSubgroups(G_8,I); false  2.4-4 IsSubset IsSubset( G, H )  operation Congruence provides methods for IsSubset for congruence subgroups. IsSubset returns true if H is a subset of G. These methods make it possible to use IsSubgroup operation for congruence subgroups.  Example  gap> IsSubset(G_2,G_8); true gap> IsSubset(G_8,G_2); false gap> f:=[PrincipalCongruenceSubgroup,CongruenceSubgroupGamma1,CongruenceSubgroupGammaUpper1,CongruenceSubgroupGamma0,CongruenceSubgroupGammaUpper0];; gap> g1:=List(f, t -> t(2));; gap> g2:=List(f, t -> t(4));; gap> for g in g2 do > Print( List( g1, x -> IsSubgroup(x,g) ), "\n"); > od; [ true, true, true, true, true ] [ false, true, false, true, false ] [ false, false, true, false, true ] [ false, false, false, true, false ] [ false, false, false, false, true ]  2.4-5 Index Index( G, H )  operation If a congruence subgroup H is a subgroup of a congruence subgroup G, we can easily compute the index of H in G, since we know the index of both subgroups in SL_2(ℤ).  Example  gap> Index(G_2,G_8); 32  congruence-1.2.7/doc/chap3.txt000644 000766 000024 00000012515 14663721446 016465 0ustar00mhornstaff000000 000000 3 Farey symbols and their properties A Farey symbol is a compact and useful way to represent a subgroup of finite index in SL_2(ℤ) from which one can deduce independent generators for this subgroup. It consists of two components, namely a so-called generalised Farey sequence (gfs) and an ordered list of labels, giving additional structure to the gfs. A generalised Farey sequence (g.F.S.) is an ordered list of the form -infinity, x_0, x_1, ... , x_n, infinity, where 1. the x_i = a_i/b_i are rational numbers in reduced form arranged in increasing order for i = 0, ... , n; 2. x_0, ... , x_n ∈ Z, and some x_i = 0; 3. we define x_-1=-infinity=-1/0 and x_n+1=infinity=1/0; 4. a_i+1b_i-a_ib_i+1=1 for i=-1, ... ,n. The ordered list of labels of a Farey symbol gives an additional structure to the gfs. The labels correspond to each consecutive pair of x_i's and are of the following types: 1. even, 2. odd, 3. a natural number, which occurs in the list of labels exactly twice or not at all. Note that the actual values of numerical labels are not important; it is the pairing of two intervals that matters. The package Congruence provides functions to construct Farey symbols by the given generalised Farey sequence and corresponding list of labels. The returned Farey symbol will belong to the category IsFareySymbol and will have the representation IsFareySymbolDefaultRep. 3.1 Construction of Farey symbols 3.1-1 FareySymbolByData FareySymbolByData( gfs, labels )  function This constructor creates the Farey symbol with the given generalized Farey sequence and list of labels. It also checks conditions from the definition of Farey symbol and returns an error if they are not satisfied. The data used to create the Farey symbol are stored as its attributes GeneralizedFareySequence (3.2-1) and LabelsOfFareySymbol (3.2-4).  Example  gap> fs:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);  [ infinity, 0, 1, 2, infinity ] [ 1, 2, 2, 1 ]  3.1-2 IsValidFareySymbol IsValidFareySymbol( fs )  function This function is used in FareySymbolByData (3.1-1) to validate its output.  Example  gap> IsValidFareySymbol(fs); true  3.2 Properties of Farey symbols 3.2-1 GeneralizedFareySequence GeneralizedFareySequence( fs )  attribute Returns the generalized Farey sequence gfs of the Farey symbol.  Example  gap> GeneralizedFareySequence(fs); [ infinity, 0, 1, 2, infinity ]  3.2-2 NumeratorOfGFSElement NumeratorOfGFSElement( gfs, i )  function Returns: integer Returns the numerator of the i-th term of the generalised Farey sequence gfs: for the 1st infinite entry returns -1, for the last one returns 1, for all other entries returns the usual numerator.  Example  gap> List([1..5], i -> NumeratorOfGFSElement(GeneralizedFareySequence(fs),i)); [ -1, 0, 1, 2, 1 ]  3.2-3 DenominatorOfGFSElement DenominatorOfGFSElement( gfs, i )  function Returns: integer Returns the denominator of the i-th term of the generalised Farey sequence gfs: for both infinite entries returns 0, for the other ones returns the usual denominator.  Example  gap> List([1..5], i -> DenominatorOfGFSElement(GeneralizedFareySequence(fs),i));  [ 0, 1, 1, 1, 0 ]  3.2-4 LabelsOfFareySymbol LabelsOfFareySymbol( fs )  attribute Returns the list of labels of the Farey symbol. This list has "odd", "even" and paired integers as entries.  Example  gap> LabelsOfFareySymbol(fs); [ 1, 2, 2, 1 ]  congruence-1.2.7/doc/chapBib.html000644 000766 000024 00000010315 14663721453 017136 0ustar00mhornstaff000000 000000 GAP (Congruence) - References

References

[CLLT93] Chan, S.-P., Lang, M.-L., Lim, C.-H. and Tan, S. P., Special polygons for subgroups of the modular group and applications, Internat. J. Math., 4 (1) (1993), 11--34.

[Kul91] Kulkarni, R. S., An arithmetic-geometric method in the study of the subgroups of the modular group, Amer. J. Math., 113 (6) (1991), 1053--1133.

[LLT95a] Lang, M.-L., Lim, C.-H. and Tan, S. P., An algorithm for determining if a subgroup of the modular group is congruence, J. London Math. Soc. (2), 51 (3) (1995), 491--502.

[LLT95b] Lang, M.-L., Lim, C.-H. and Tan, S. P., Independent generators for congruence subgroups of Hecke groups, Math. Z., 220 (4) (1995), 569--594.

Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap0.html000644 000766 000024 00000034311 14663721453 016603 0ustar00mhornstaff000000 000000 GAP (Congruence) - Contents
Goto Chapter: Top 1 2 3 4 5 Bib Ind

Congruence

Congruence subgroups of SL_2(ℤ)

Version 1.2.7

28 August 2024

Ann Dooms
Email: andooms@vub.ac.be
Homepage: http://homepages.vub.ac.be/~andooms
Address:
Department of Mathematics, Vrije Universiteit Brussel
Pleinlaan 2, Brussels, B-1050 Belgium

Eric Jespers
Email: efjesper@vub.ac.be
Homepage: http://homepages.vub.ac.be/~efjesper
Address:
Department of Mathematics, Vrije Universiteit Brussel
Pleinlaan 2, Brussels, B-1050 Belgium

Olexandr Konovalov
Email: obk1@st-andrews.ac.uk
Homepage: https://olexandr-konovalov.github.io/
Address:
School of Computer Science
University of St Andrews
Jack Cole Building, North Haugh,
St Andrews, Fife, KY16 9SX, Scotland

Helena Verrill
Email: verrill@math.lsu.edu
Homepage: http://www.math.lsu.edu/~verrill/
Address:
Department of Mathematics
Louisiana State University
Baton Rouge, Louisiana, 70803-4918
USA

Abstract

The GAP package Congruence provides functionality to work with congruence subgroups of SL_2(ℤ).

Copyright

© 2006-2024 by Ann Dooms, Eric Jespers, Olexandr Konovalov and Helena Verrill.

Congruence is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For details, see the FSF's own site https://www.gnu.org/licenses/gpl.html.

If you obtained Congruence, we would be grateful for a short notification sent to one of the authors.

If you publish a result which was partially obtained with the usage of Congruence, please cite it in the following form:

A. Dooms, E. Jespers, O. Konovalov and H. Verrill. Congruence --- Congruence subgroups of SL_2(ℤ), Version 1.2.7; 2024 (https://gap-packages.github.io/congruence/).

Acknowledgements

We are very grateful to Mong-Lung Lang, Chong-Hai Lim and Ser Peow Tan for their comments provided while implementing algorithms from [LLT95a] and [LLT95b], and to Francqui Stichting (Belgium) for the support of the third author.

Contents


Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap1.txt000644 000766 000024 00000004116 14663721446 016461 0ustar00mhornstaff000000 000000 1 Introduction 1.1 General aims of Congruence package The GAP package Congruence provides functions to construct several types of canonical congruence subgroups in SL_2(ℤ), and also intersections of a finite number of such subgroups. Furthermore, it implements the algorithm for generating Farey symbols for congruence subgroups and using them to produce a system of independent generators for these subgroups. Using the package, one can also determine indices of congruence subgroups and their intersections in SL_2(ℤ) and in other congruence subgroups, generate their random elements and check element memberships. Success of other group theoretical constructions mostly depends on whether they could be expressed in terms of group generators or not. For the theoretical backround, we refer to [LLT95b], [LLT95a], [CLLT93] and [Kul91]. 1.2 Installation and system requirements Congruence is distributed in standard formats (tar.gz, tar.bz2, -win.zip) and can be obtained from https://gap-packages.github.io/congruence/. Congruence does not use external binaries and, therefore, works without restrictions on the operating system. It requires at least version GAP 4.5, and no compatibility with previous releases of GAP 4 is guaranteed. Installation of the package is standard and follows the guidelines from the GAP manual (see 'Reference: Installing a GAP Package'. After the package is installed, you can start GAP and load the Congruence package using the command:  Example  gap> LoadPackage("congruence");  congruence-1.2.7/doc/chap0.txt000644 000766 000024 00000013557 14663721446 016471 0ustar00mhornstaff000000 000000 Congruence Congruence subgroups of SL_2(ℤ) Version 1.2.7 28 August 2024 Ann Dooms Eric Jespers Olexandr Konovalov Helena Verrill Ann Dooms Email: mailto:andooms@vub.ac.be Homepage: http://homepages.vub.ac.be/~andooms Address: Department of Mathematics, Vrije Universiteit Brussel Pleinlaan 2, Brussels, B-1050 Belgium Eric Jespers Email: mailto:efjesper@vub.ac.be Homepage: http://homepages.vub.ac.be/~efjesper Address: Department of Mathematics, Vrije Universiteit Brussel Pleinlaan 2, Brussels, B-1050 Belgium Olexandr Konovalov Email: mailto:obk1@st-andrews.ac.uk Homepage: https://olexandr-konovalov.github.io/ Address: School of Computer Science University of St Andrews Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland Helena Verrill Email: mailto:verrill@math.lsu.edu Homepage: http://www.math.lsu.edu/~verrill/ Address: Department of Mathematics Louisiana State University Baton Rouge, Louisiana, 70803-4918 USA ------------------------------------------------------- Abstract The GAP package Congruence provides functionality to work with congruence subgroups of SL_2(ℤ). ------------------------------------------------------- Copyright © 2006-2024 by Ann Dooms, Eric Jespers, Olexandr Konovalov and Helena Verrill. Congruence is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For details, see the FSF's own site https://www.gnu.org/licenses/gpl.html. If you obtained Congruence, we would be grateful for a short notification sent to one of the authors. If you publish a result which was partially obtained with the usage of Congruence, please cite it in the following form: A. Dooms, E. Jespers, O. Konovalov and H. Verrill. Congruence --- Congruence subgroups of SL_2(ℤ), Version 1.2.7; 2024 (https://gap-packages.github.io/congruence/). ------------------------------------------------------- Acknowledgements We are very grateful to Mong-Lung Lang, Chong-Hai Lim and Ser Peow Tan for their comments provided while implementing algorithms from [LLT95a] and [LLT95b], and to Francqui Stichting (Belgium) for the support of the third author. ------------------------------------------------------- Contents (Congruence) 1 Introduction 1.1 General aims of Congruence package 1.2 Installation and system requirements 2 Construction of congruence subgroups 2.1 Construction of congruence subgroups 2.1-1 PrincipalCongruenceSubgroup 2.1-2 CongruenceSubgroupGamma0 2.1-3 CongruenceSubgroupGammaUpper0 2.1-4 CongruenceSubgroupGamma1 2.1-5 CongruenceSubgroupGammaUpper1 2.1-6 IntersectionOfCongruenceSubgroups 2.2 Properties of congruence subgroups 2.2-1 IsPrincipalCongruenceSubgroup 2.2-2 IsCongruenceSubgroupGamma0 2.2-3 IsCongruenceSubgroupGammaUpper0 2.2-4 IsCongruenceSubgroupGamma1 2.2-5 IsCongruenceSubgroupGammaUpper1 2.2-6 IsIntersectionOfCongruenceSubgroups 2.3 Attributes of congruence subgroups 2.3-1 LevelOfCongruenceSubgroup 2.3-2 IndexInSL2Z 2.3-3 DefiningCongruenceSubgroups 2.4 Operations for congruence subgroups 2.4-1 Random 2.4-2 \in 2.4-3 CanEasilyCompareCongruenceSubgroups 2.4-4 IsSubset 2.4-5 Index 3 Farey symbols and their properties 3.1 Construction of Farey symbols 3.1-1 FareySymbolByData 3.1-2 IsValidFareySymbol 3.2 Properties of Farey symbols 3.2-1 GeneralizedFareySequence 3.2-2 NumeratorOfGFSElement 3.2-3 DenominatorOfGFSElement 3.2-4 LabelsOfFareySymbol 4 Farey symbols for congruence subgroups 4.1 Computation of the Farey symbol for a finite index subgroup 4.1-1 FareySymbol 4.2 Computation of generators of a finite index subgroup from its Farey symbol 4.2-1 MatrixByEvenInterval 4.2-2 MatrixByOddInterval 4.2-3 MatrixByFreePairOfIntervals 4.2-4 GeneratorsByFareySymbol 4.2-5 GeneratorsOfGroup 4.3 Other properties derived from Farey symbols 4.3-1 IndexInPSL2ZByFareySymbol 5 Service functions of the Congruence package 5.1 Additional information displayed by Congruence algorithms 5.1-1 InfoCongruence  congruence-1.2.7/doc/chap4_mj.html000644 000766 000024 00000037550 14663721453 017305 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 4: Farey symbols for congruence subgroups
Goto Chapter: Top 1 2 3 4 5 Bib Ind

4 Farey symbols for congruence subgroups

The package Congruence provides functions to construct Farey symbols for finite index subgroups. The algorithm used in the package allows to construct a Farey symbol for any finite index subgroup of \(SL_2(ℤ)\) for which it is possible to check whether a given matrix belongs to this subgroup or not.

The development of an algorithm to determine the Farey symbol for a subgroup G of a finite index in \(SL_2(ℤ)\) was started by Ravi Kulkarni in [Kul91] and later it was improved by Mong-Lung Lang, Chong-Hai Lim and Ser-Peow Tan in [LLT95b], [LLT95a].

4.1 Computation of the Farey symbol for a finite index subgroup

4.1-1 FareySymbol
‣ FareySymbol( G )( attribute )

For a subgroup of a finite index G, this attribute stores one of the Farey symbols corresponding to the congruence subgroup G. The algorithm for its computation will work for any matrix group for which a membership test is available.

gap> FareySymbol(PrincipalCongruenceSubgroup(8));
[ infinity, 0, 1/4, 1/3, 3/8, 2/5, 1/2, 3/5, 5/8, 2/3, 3/4, 1, 5/4, 4/3, 
  11/8, 7/5, 3/2, 8/5, 13/8, 5/3, 7/4, 2, 9/4, 7/3, 19/8, 12/5, 5/2, 13/5, 
  21/8, 8/3, 11/4, 3, 13/4, 10/3, 27/8, 17/5, 7/2, 18/5, 29/8, 11/3, 15/4, 4, 
  17/4, 13/3, 9/2, 14/3, 19/4, 5, 21/4, 16/3, 11/2, 17/3, 23/4, 6, 25/4, 
  19/3, 13/2, 20/3, 27/4, 7, 29/4, 22/3, 15/2, 23/3, 31/4, 8, infinity ]
[ 1, 17, 10, 26, 32, 18, 19, 27, 30, 5, 2, 2, 13, 28, 26, 20, 21, 29, 27, 7, 
  3, 3, 16, 31, 28, 22, 23, 33, 29, 9, 4, 4, 5, 30, 31, 24, 25, 32, 33, 12, 
  6, 6, 7, 19, 18, 15, 8, 8, 9, 21, 20, 10, 11, 11, 12, 23, 22, 13, 14, 14, 
  15, 25, 24, 16, 17, 1 ]
gap> FareySymbol(CongruenceSubgroupGamma0(20));
[ infinity, 0, 1/5, 1/4, 2/7, 3/10, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1, 
  infinity ]
[ 1, 3, 4, 6, 7, 7, 5, 2, 2, 3, 6, 4, 5, 1 ]  

4.2 Computation of generators of a finite index subgroup from its Farey symbol

If fs is the Farey symbol for a group \(G\) with \(r_1\) even labels, \(r_2\) odd labels and \(r_3\) pairs of intervals, then \(G\) is generated by \(r_1+r_2+r_3\) matrices, which form a set of independent generators for \(G\). These matrices are constructed as follows:

for each even interval \([x_i, x_{i+1}]\), take the matrix


                       A=  [a_{i+1} b_{i+1} + a_i b_i    -a_i^2 - a_{i+1}^2        ]
                           [b_i^2 +b_{i+1}^2             -a_{i+1} b_{i+1} - a_i b_i]

for each odd interval \([x_j,x_{j+1}]\), take the matrix


                        B=  [a_{j+1} b_{j+1} + a_j b_{j+1} + a_j b_j      -a_j^2 - a_j a_{j+1} -a_{j+1}^2]
                            [ b_j^2 + b_j b_{j+1} + b_{j+1}^2  -a_{j+1}   b_{j+1} - a_{j+1} b_j - a_j b_j]

for each pair of free intervals \([x_k,x_{k+1}]\) and \([x_s,x_{s+1}]\), take the matrix


                        C=  [a_{s+1} b_{k+1} + a_s b_k    -a_s a_k - a_{s+1} a_{k+1}]
                            [b_s b_k- b_{s+1} b_{k+1}c    -a_{k+1} b_{s+1} - a_k b_s]

4.2-1 MatrixByEvenInterval
‣ MatrixByEvenInterval( gfs, i )( function )

Returns the matrix corresponding to the even interval i in the generalized Farey sequence gfs.

gap> H:=CongruenceSubgroupGamma0(5); 
<congruence subgroup CongruenceSubgroupGamma_0(5) in SL_2(Z)>
gap> fs:=FareySymbol(H);
[ infinity, 0, 1/2, 1, infinity ]
[ 1, "even", "even", 1 ]
gap> gfs:=GeneralizedFareySequence(fs);
[ infinity, 0, 1/2, 1, infinity ]
gap> MatrixByEvenInterval(gfs,2);      
[ [ 2, -1 ], [ 5, -2 ] ]

4.2-2 MatrixByOddInterval
‣ MatrixByOddInterval( gfs, i )( function )

Returns the matrix corresponding to the odd interval i in the generalized Farey sequence gfs.

gap> fs_oo:=FareySymbolByData([infinity,0,infinity],["odd","odd"]);;
gap> gfs_oo:=GeneralizedFareySequence(fs_oo);
[ infinity, 0, infinity ]
gap> MatrixByOddInterval(gfs_oo,1);
[ [ -1, -1 ], [ 1, 0 ] ]

4.2-3 MatrixByFreePairOfIntervals
‣ MatrixByFreePairOfIntervals( gfs, k, kp )( function )

Returns the matrix corresponding to the pair of free intervals k and kp in the generalized Farey sequence gfs.

gap> fs_free:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);;
gap> gfs_free:=GeneralizedFareySequence(fs_free);;
gap> MatrixByFreePairOfIntervals(gfs_free,2,3);                                                        
[ [ 3, -2 ], [ 2, -1 ] ]

4.2-4 GeneratorsByFareySymbol
‣ GeneratorsByFareySymbol( fs )( function )

Returns a set of matrices constructed as above.

gap> fs_eo:=FareySymbolByData([infinity,0,infinity],["even","odd"]);;
gap> GeneratorsByFareySymbol(last);                                  
[ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ]
gap> GeneratorsByFareySymbol(fs); 
[ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ]
gap> GeneratorsByFareySymbol(fs_oo);
[ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ]
gap> GeneratorsByFareySymbol(fs_free);                                                        
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ]

4.2-5 GeneratorsOfGroup
‣ GeneratorsOfGroup( G )( function )

Returns a set of generators for the finite index group G in \(SL_2(Z)\).

gap> G:=PrincipalCongruenceSubgroup(2);
<principal congruence subgroup of level 2 in SL_2(Z)>
gap> FareySymbol(G);
[ infinity, 0, 1, 2, infinity ]
[ 2, 1, 1, 2 ]
gap> GeneratorsOfGroup(G);
#I  Using the Congruence package for GeneratorsOfGroup ...
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ]
gap> H:=CongruenceSubgroupGamma0(5);        
<congruence subgroup CongruenceSubgroupGamma_0(5) in SL_2(Z)>
gap> GeneratorsOfGroup(H);
#I  Using the Congruence package for GeneratorsOfGroup ...
[ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ]
gap> I:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(3));
<intersection of congruence subgroups of resulting level 6 in SL_2(Z)>
gap> FareySymbol(I);
[ infinity, 0, 1/3, 1/2, 2/3, 1, 4/3, 3/2, 5/3, 2, infinity ]
[ 1, 5, 4, 3, 2, 2, 3, 4, 5, 1 ]
gap> GeneratorsOfGroup(I);                                                          
#I  Using the Congruence package for GeneratorsOfGroup ...
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 11, -2 ], [ 6, -1 ] ], 
  [ [ 19, -8 ], [ 12, -5 ] ], [ [ 17, -10 ], [ 12, -7 ] ], 
  [ [ 7, -6 ], [ 6, -5 ] ] ]

4.3 Other properties derived from Farey symbols

4.3-1 IndexInPSL2ZByFareySymbol
‣ IndexInPSL2ZByFareySymbol( fs )( function )

By Proposition 7.2 in [Kulkarni], for the Farey symbol with underlying generalized Farey sequence [infinity, x0, x1, ..., xn, infinity], the index in \(PSL_2(Z)\) is given by the formula d = 3*n + e3, where e3 is the number of odd intervals.

gap> IndexInPSL2ZByFareySymbol(fs);
6
gap> IndexInPSL2ZByFareySymbol(fs_oo);
2
gap> IndexInPSL2ZByFareySymbol(fs_free);
6
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/manual.css000644 000766 000024 00000015754 14663721453 016723 0ustar00mhornstaff000000 000000 /* manual.css Frank Lübeck */ /* This is the default CSS style sheet for GAPDoc HTML manuals. */ /* basic settings, fonts, sizes, colors, ... */ body { position: relative; background: #ffffff; color: #000000; width: 70%; margin: 0pt; padding: 15pt; font-family: Helvetica,Verdana,Arial,sans-serif; text-align: justify; } /* no side toc on title page, bib and index */ body.chap0 { width: 95%; } body.chapBib { width: 95%; } body.chapInd { width: 95%; } h1 { font-size: 200%; } h2 { font-size: 160%; } h3 { font-size: 160%; } h4 { font-size: 130%; } h5 { font-size: 100%; } p.foot { font-size: 60%; font-style: normal; } a:link { color: #00008e; text-decoration: none; } a:visited { color: #00008e; text-decoration: none; } a:active { color: #000000; text-decoration: none; } a:hover { background: #eeeeee; } pre { font-family: "Courier New",Courier,monospace; font-size: 100%; color:#111111; } tt,code { font-family: "Courier New",Courier,monospace; font-size: 110%; color: #000000; } var { } /* general alignment classes */ .pcenter { text-align: center; } .pleft { text-align: left; } .pright { text-align: right; } /* layout for the definitions of functions, variables, ... */ div.func { background: #e0e0e0; margin: 0pt 0pt; } /* general and special table settings */ table { border-collapse: collapse; margin-left: auto; margin-right: auto; } td, th { border-style: none; } table.func { padding: 0pt 1ex; margin-left: 1ex; margin-right: 1ex; background: transparent; /* line-height: 1.1; */ width: 100%; } table.func td.tdright { padding-right: 2ex; } /* Example elements (for old converted manuals, now in div+pre */ table.example { background: #efefef; border-style: none; border-width: 0pt; padding: 0px; width: 100% } table.example td { border-style: none; border-width: 0pt; padding: 0ex 1ex; } /* becomes ... */ div.example { background: #efefef; padding: 0ex 1ex; /* overflow-x: auto; */ overflow: auto; } /* Links to chapters in all files at top and bottom. */ /* If there are too many chapters then use 'display: none' here. */ div.chlinktop { background: #dddddd; border-style: solid; border-width: thin; margin: 2px; text-align: center; } div.chlinktop a { margin: 3px; } div.chlinktop a:hover { background: #ffffff; } div.chlinkbot { background: #dddddd; border-style: solid; border-width: thin; margin: 2px; text-align: center; /* width: 100%; */ } div.chlinkbot a { margin: 3px; } span.chlink1 { } /* and this is for the "Top", "Prev", "Next" links */ div.chlinkprevnexttop { background: #dddddd; border-style: solid; border-width: thin; text-align: center; margin: 2px; } div.chlinkprevnexttop a:hover { background: #ffffff; } div.chlinkprevnextbot { background: #dddddd; border-style: solid; border-width: thin; text-align: center; margin: 2px; } div.chlinkprevnextbot a:hover { background: #ffffff; } /* table of contents, initially don't display subsections */ div.ContSSBlock { display: none; } div.ContSSBlock br { display: none; } /* format in separate lines */ span.tocline { display: block; width: 100%; } div.ContSSBlock a { display: block; } /* this is for the main table of contents */ div.ContChap { } div.ContChap div.ContSect:hover div.ContSSBlock { display: block; position: absolute; background: #eeeeee; border-style: solid; border-width: 1px 4px 4px 1px; border-color: #666666; padding-left: 0.5ex; color: #000000; left: 20%; width: 40%; z-index: 10000; } div.ContSSBlock a:hover { background: #ffffff; } /* and here for the side menu of contents in the chapter files */ div.ChapSects { } div.ChapSects a:hover { background: #eeeeee; } div.ChapSects a:hover { display: block; width: 100%; background: #eeeeee; color: #000000; } div.ChapSects div.ContSect:hover div.ContSSBlock { display: block; position: fixed; background: #eeeeee; border-style: solid; border-width: 1px 2px 2px 1px; border-color: #666666; padding-left: 0ex; padding-right: 0.5ex; color: #000000; left: 54%; width: 25%; z-index: 10000; } div.ChapSects div.ContSect:hover div.ContSSBlock a { display: block; margin-left: 3px; } div.ChapSects div.ContSect:hover div.ContSSBlock a:hover { display: block; background: #ffffff; } div.ContSect { text-align: left; margin-left: 1em; } div.ChapSects { position: fixed; left: 75%; font-size: 90%; overflow: auto; top: 10px; bottom: 0px; } /* Table elements */ table.GAPDocTable { border-collapse: collapse; border-style: none; border-color: black; } table.GAPDocTable td, table.GAPDocTable th { padding: 3pt; border-width: thin; border-style: solid; border-color: #555555; } caption.GAPDocTable { caption-side: bottom; width: 70%; margin-top: 1em; margin-left: auto; margin-right: auto; } td.tdleft { text-align: left; } table.GAPDocTablenoborder { border-collapse: collapse; border-style: none; border-color: black; } table.GAPDocTablenoborder td, table.GAPDocTable th { padding: 3pt; border-width: 0pt; border-style: solid; border-color: #555555; } caption.GAPDocTablenoborder { caption-side: bottom; width: 70%; margin-top: 1em; margin-left: auto; margin-right: auto; } td.tdleft { text-align: left; } td.tdright { text-align: right; } td.tdcenter { text-align: center; } /* Colors and fonts can be overwritten for some types of elements. */ /* Verb elements */ pre.normal { color: #000000; } /* Func-like elements and Ref to Func-like */ code.func { color: #000000; } /* K elements */ code.keyw { color: #770000; } /* F elements */ code.file { color: #8e4510; } /* C elements */ code.code { } /* Item elements */ code.i { } /* Button elements */ strong.button { } /* Headings */ span.Heading { } /* Arg elements */ var.Arg { color: #006600; } /* Example elements, is in tables, see above */ div.Example { } /* Package elements */ strong.pkg { } /* URL-like elements */ span.URL { } /* Mark elements */ strong.Mark { } /* Ref elements */ b.Ref { } span.Ref { } /* this contains the contents page */ div.contents { } /* this contains the index page */ div.index { } /* ignore some text for non-css layout */ span.nocss { display: none; } /* colors for ColorPrompt like examples */ span.GAPprompt { color: #000097; font-weight: normal; } span.GAPbrkprompt { color: #970000; font-weight: normal; } span.GAPinput { color: #970000; } /* Bib entries */ p.BibEntry { } span.BibKey { color: #005522; } span.BibKeyLink { } b.BibAuthor { } i.BibTitle { } i.BibBookTitle { } span.BibEditor { } span.BibJournal { } span.BibType { } span.BibPublisher { } span.BibSchool { } span.BibEdition { } span.BibVolume { } span.BibSeries { } span.BibNumber { } span.BibPages { } span.BibOrganization { } span.BibAddress { } span.BibYear { } span.BibPublisher { } span.BibNote { } span.BibHowpublished { } congruence-1.2.7/doc/chap4.txt000644 000766 000024 00000024111 14663721446 016461 0ustar00mhornstaff000000 000000 4 Farey symbols for congruence subgroups The package Congruence provides functions to construct Farey symbols for finite index subgroups. The algorithm used in the package allows to construct a Farey symbol for any finite index subgroup of SL_2(ℤ) for which it is possible to check whether a given matrix belongs to this subgroup or not. The development of an algorithm to determine the Farey symbol for a subgroup G of a finite index in SL_2(ℤ) was started by Ravi Kulkarni in [Kul91] and later it was improved by Mong-Lung Lang, Chong-Hai Lim and Ser-Peow Tan in [LLT95b], [LLT95a]. 4.1 Computation of the Farey symbol for a finite index subgroup 4.1-1 FareySymbol FareySymbol( G )  attribute For a subgroup of a finite index G, this attribute stores one of the Farey symbols corresponding to the congruence subgroup G. The algorithm for its computation will work for any matrix group for which a membership test is available.  Example  gap> FareySymbol(PrincipalCongruenceSubgroup(8)); [ infinity, 0, 1/4, 1/3, 3/8, 2/5, 1/2, 3/5, 5/8, 2/3, 3/4, 1, 5/4, 4/3,   11/8, 7/5, 3/2, 8/5, 13/8, 5/3, 7/4, 2, 9/4, 7/3, 19/8, 12/5, 5/2, 13/5,   21/8, 8/3, 11/4, 3, 13/4, 10/3, 27/8, 17/5, 7/2, 18/5, 29/8, 11/3, 15/4, 4,   17/4, 13/3, 9/2, 14/3, 19/4, 5, 21/4, 16/3, 11/2, 17/3, 23/4, 6, 25/4,   19/3, 13/2, 20/3, 27/4, 7, 29/4, 22/3, 15/2, 23/3, 31/4, 8, infinity ] [ 1, 17, 10, 26, 32, 18, 19, 27, 30, 5, 2, 2, 13, 28, 26, 20, 21, 29, 27, 7,   3, 3, 16, 31, 28, 22, 23, 33, 29, 9, 4, 4, 5, 30, 31, 24, 25, 32, 33, 12,   6, 6, 7, 19, 18, 15, 8, 8, 9, 21, 20, 10, 11, 11, 12, 23, 22, 13, 14, 14,   15, 25, 24, 16, 17, 1 ] gap> FareySymbol(CongruenceSubgroupGamma0(20)); [ infinity, 0, 1/5, 1/4, 2/7, 3/10, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1,   infinity ] [ 1, 3, 4, 6, 7, 7, 5, 2, 2, 3, 6, 4, 5, 1 ]   4.2 Computation of generators of a finite index subgroup from its Farey symbol If fs is the Farey symbol for a group G with r_1 even labels, r_2 odd labels and r_3 pairs of intervals, then G is generated by r_1+r_2+r_3 matrices, which form a set of independent generators for G. These matrices are constructed as follows: for each even interval [x_i, x_i+1], take the matrix A= [a_{i+1} b_{i+1} + a_i b_i -a_i^2 - a_{i+1}^2 ] [b_i^2 +b_{i+1}^2 -a_{i+1} b_{i+1} - a_i b_i] for each odd interval [x_j,x_j+1], take the matrix B= [a_{j+1} b_{j+1} + a_j b_{j+1} + a_j b_j -a_j^2 - a_j a_{j+1} -a_{j+1}^2] [ b_j^2 + b_j b_{j+1} + b_{j+1}^2 -a_{j+1} b_{j+1} - a_{j+1} b_j - a_j b_j] for each pair of free intervals [x_k,x_k+1] and [x_s,x_s+1], take the matrix C= [a_{s+1} b_{k+1} + a_s b_k -a_s a_k - a_{s+1} a_{k+1}] [b_s b_k- b_{s+1} b_{k+1}c -a_{k+1} b_{s+1} - a_k b_s] 4.2-1 MatrixByEvenInterval MatrixByEvenInterval( gfs, i )  function Returns the matrix corresponding to the even interval i in the generalized Farey sequence gfs.  Example  gap> H:=CongruenceSubgroupGamma0(5);   gap> fs:=FareySymbol(H); [ infinity, 0, 1/2, 1, infinity ] [ 1, "even", "even", 1 ] gap> gfs:=GeneralizedFareySequence(fs); [ infinity, 0, 1/2, 1, infinity ] gap> MatrixByEvenInterval(gfs,2);  [ [ 2, -1 ], [ 5, -2 ] ]  4.2-2 MatrixByOddInterval MatrixByOddInterval( gfs, i )  function Returns the matrix corresponding to the odd interval i in the generalized Farey sequence gfs.  Example  gap> fs_oo:=FareySymbolByData([infinity,0,infinity],["odd","odd"]);; gap> gfs_oo:=GeneralizedFareySequence(fs_oo); [ infinity, 0, infinity ] gap> MatrixByOddInterval(gfs_oo,1); [ [ -1, -1 ], [ 1, 0 ] ]  4.2-3 MatrixByFreePairOfIntervals MatrixByFreePairOfIntervals( gfs, k, kp )  function Returns the matrix corresponding to the pair of free intervals k and kp in the generalized Farey sequence gfs.  Example  gap> fs_free:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);; gap> gfs_free:=GeneralizedFareySequence(fs_free);; gap> MatrixByFreePairOfIntervals(gfs_free,2,3);  [ [ 3, -2 ], [ 2, -1 ] ]  4.2-4 GeneratorsByFareySymbol GeneratorsByFareySymbol( fs )  function Returns a set of matrices constructed as above.  Example  gap> fs_eo:=FareySymbolByData([infinity,0,infinity],["even","odd"]);; gap> GeneratorsByFareySymbol(last);  [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> GeneratorsByFareySymbol(fs);  [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ] gap> GeneratorsByFareySymbol(fs_oo); [ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> GeneratorsByFareySymbol(fs_free);  [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ]  4.2-5 GeneratorsOfGroup GeneratorsOfGroup( G )  function Returns a set of generators for the finite index group G in SL_2(Z).  Example  gap> G:=PrincipalCongruenceSubgroup(2);  gap> FareySymbol(G); [ infinity, 0, 1, 2, infinity ] [ 2, 1, 1, 2 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ] gap> H:=CongruenceSubgroupGamma0(5);   gap> GeneratorsOfGroup(H); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ] gap> I:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(3));  gap> FareySymbol(I); [ infinity, 0, 1/3, 1/2, 2/3, 1, 4/3, 3/2, 5/3, 2, infinity ] [ 1, 5, 4, 3, 2, 2, 3, 4, 5, 1 ] gap> GeneratorsOfGroup(I);  #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 11, -2 ], [ 6, -1 ] ],   [ [ 19, -8 ], [ 12, -5 ] ], [ [ 17, -10 ], [ 12, -7 ] ],   [ [ 7, -6 ], [ 6, -5 ] ] ]  4.3 Other properties derived from Farey symbols 4.3-1 IndexInPSL2ZByFareySymbol IndexInPSL2ZByFareySymbol( fs )  function By Proposition 7.2 in [Kulkarni], for the Farey symbol with underlying generalized Farey sequence [infinity, x0, x1, ..., xn, infinity], the index in PSL_2(Z) is given by the formula d = 3*n + e3, where e3 is the number of odd intervals.  Example  gap> IndexInPSL2ZByFareySymbol(fs); 6 gap> IndexInPSL2ZByFareySymbol(fs_oo); 2 gap> IndexInPSL2ZByFareySymbol(fs_free); 6  congruence-1.2.7/doc/chap5.txt000644 000766 000024 00000001341 14663721446 016462 0ustar00mhornstaff000000 000000 5 Service functions of the Congruence package 5.1 Additional information displayed by Congruence algorithms 5.1-1 InfoCongruence InfoCongruence  info class InfoCongruence is a special Info class for Congruence algorithms. It has 3 levels: 0, 1 (default) and 2. To change the info level to k, use the command SetInfoLevel(InfoCongruence, k). In the example below we use this mechanism to see more details during the Farey symbol construction for a congruence subgroup. congruence-1.2.7/doc/ragged.css000644 000766 000024 00000000231 14663721453 016657 0ustar00mhornstaff000000 000000 /* times.css Frank Lübeck */ /* Change default CSS to use Times font. */ body { text-align: left; } congruence-1.2.7/doc/chap1.html000644 000766 000024 00000012221 14663721453 016600 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 1: Introduction
Goto Chapter: Top 1 2 3 4 5 Bib Ind

1 Introduction

1.1 General aims of Congruence package

The GAP package Congruence provides functions to construct several types of canonical congruence subgroups in SL_2(ℤ), and also intersections of a finite number of such subgroups.

Furthermore, it implements the algorithm for generating Farey symbols for congruence subgroups and using them to produce a system of independent generators for these subgroups.

Using the package, one can also determine indices of congruence subgroups and their intersections in SL_2(ℤ) and in other congruence subgroups, generate their random elements and check element memberships. Success of other group theoretical constructions mostly depends on whether they could be expressed in terms of group generators or not.

For the theoretical backround, we refer to [LLT95b], [LLT95a], [CLLT93] and [Kul91].

1.2 Installation and system requirements

Congruence is distributed in standard formats (tar.gz, tar.bz2, -win.zip) and can be obtained from https://gap-packages.github.io/congruence/.

Congruence does not use external binaries and, therefore, works without restrictions on the operating system. It requires at least version GAP 4.5, and no compatibility with previous releases of GAP 4 is guaranteed.

Installation of the package is standard and follows the guidelines from the GAP manual (see Reference: Installing a GAP Package. After the package is installed, you can start GAP and load the Congruence package using the command:

gap> LoadPackage("congruence");
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chap5_mj.html000644 000766 000024 00000007510 14663721453 017277 0ustar00mhornstaff000000 000000 GAP (Congruence) - Chapter 5: Service functions of the Congruence package
Goto Chapter: Top 1 2 3 4 5 Bib Ind

5 Service functions of the Congruence package

5.1 Additional information displayed by Congruence algorithms

5.1-1 InfoCongruence
‣ InfoCongruence( info class )

InfoCongruence is a special Info class for Congruence algorithms. It has 3 levels: 0, 1 (default) and 2. To change the info level to k, use the command SetInfoLevel(InfoCongruence, k).

In the example below we use this mechanism to see more details during the Farey symbol construction for a congruence subgroup.

Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/gens.xml000644 000766 000024 00000021440 14663721427 016400 0ustar00mhornstaff000000 000000 Farey symbols for congruence subgroups The package &Congruence; provides functions to construct Farey symbols for finite index subgroups. The algorithm used in the package allows to construct a Farey symbol for any finite index subgroup of SL_2(&ZZ;) for which it is possible to check whether a given matrix belongs to this subgroup or not.

The development of an algorithm to determine the Farey symbol for a subgroup G of a finite index in SL_2(&ZZ;) was started by Ravi Kulkarni in and later it was improved by Mong-Lung Lang, Chong-Hai Lim and Ser-Peow Tan in , .

Computation of the Farey symbol for a finite index subgroup For a subgroup of a finite index G, this attribute stores one of the Farey symbols corresponding to the congruence subgroup G. The algorithm for its computation will work for any matrix group for which a membership test is available. FareySymbol(PrincipalCongruenceSubgroup(8)); [ infinity, 0, 1/4, 1/3, 3/8, 2/5, 1/2, 3/5, 5/8, 2/3, 3/4, 1, 5/4, 4/3, 11/8, 7/5, 3/2, 8/5, 13/8, 5/3, 7/4, 2, 9/4, 7/3, 19/8, 12/5, 5/2, 13/5, 21/8, 8/3, 11/4, 3, 13/4, 10/3, 27/8, 17/5, 7/2, 18/5, 29/8, 11/3, 15/4, 4, 17/4, 13/3, 9/2, 14/3, 19/4, 5, 21/4, 16/3, 11/2, 17/3, 23/4, 6, 25/4, 19/3, 13/2, 20/3, 27/4, 7, 29/4, 22/3, 15/2, 23/3, 31/4, 8, infinity ] [ 1, 17, 10, 26, 32, 18, 19, 27, 30, 5, 2, 2, 13, 28, 26, 20, 21, 29, 27, 7, 3, 3, 16, 31, 28, 22, 23, 33, 29, 9, 4, 4, 5, 30, 31, 24, 25, 32, 33, 12, 6, 6, 7, 19, 18, 15, 8, 8, 9, 21, 20, 10, 11, 11, 12, 23, 22, 13, 14, 14, 15, 25, 24, 16, 17, 1 ] gap> FareySymbol(CongruenceSubgroupGamma0(20)); [ infinity, 0, 1/5, 1/4, 2/7, 3/10, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1, infinity ] [ 1, 3, 4, 6, 7, 7, 5, 2, 2, 3, 6, 4, 5, 1 ] ]]>
Computation of generators of a finite index subgroup from its Farey symbol If fs is the Farey symbol for a group G with r_1 even labels, r_2 odd labels and r_3 pairs of intervals, then G is generated by r_1+r_2+r_3 matrices, which form a set of independent generators for G. These matrices are constructed as follows:

for each even interval [x_i, x_{i+1}], take the matrix

for each odd interval [x_j,x_{j+1}], take the matrix

for each pair of free intervals [x_k,x_{k+1}] and [x_s,x_{s+1}], take the matrix Returns the matrix corresponding to the even interval i in the generalized Farey sequence gfs. H:=CongruenceSubgroupGamma0(5); gap> fs:=FareySymbol(H); [ infinity, 0, 1/2, 1, infinity ] [ 1, "even", "even", 1 ] gap> gfs:=GeneralizedFareySequence(fs); [ infinity, 0, 1/2, 1, infinity ] gap> MatrixByEvenInterval(gfs,2); [ [ 2, -1 ], [ 5, -2 ] ] ]]> Returns the matrix corresponding to the odd interval i in the generalized Farey sequence gfs. fs_oo:=FareySymbolByData([infinity,0,infinity],["odd","odd"]);; gap> gfs_oo:=GeneralizedFareySequence(fs_oo); [ infinity, 0, infinity ] gap> MatrixByOddInterval(gfs_oo,1); [ [ -1, -1 ], [ 1, 0 ] ] ]]> Returns the matrix corresponding to the pair of free intervals k and kp in the generalized Farey sequence gfs. fs_free:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);; gap> gfs_free:=GeneralizedFareySequence(fs_free);; gap> MatrixByFreePairOfIntervals(gfs_free,2,3); [ [ 3, -2 ], [ 2, -1 ] ] ]]> Returns a set of matrices constructed as above. fs_eo:=FareySymbolByData([infinity,0,infinity],["even","odd"]);; gap> GeneratorsByFareySymbol(last); [ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> GeneratorsByFareySymbol(fs); [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ] gap> GeneratorsByFareySymbol(fs_oo); [ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ] gap> GeneratorsByFareySymbol(fs_free); [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ] ]]> Returns a set of generators for the finite index group G in SL_2(Z). G:=PrincipalCongruenceSubgroup(2); gap> FareySymbol(G); [ infinity, 0, 1, 2, infinity ] [ 2, 1, 1, 2 ] gap> GeneratorsOfGroup(G); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ] gap> H:=CongruenceSubgroupGamma0(5); gap> GeneratorsOfGroup(H); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ] gap> I:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(3)); gap> FareySymbol(I); [ infinity, 0, 1/3, 1/2, 2/3, 1, 4/3, 3/2, 5/3, 2, infinity ] [ 1, 5, 4, 3, 2, 2, 3, 4, 5, 1 ] gap> GeneratorsOfGroup(I); #I Using the Congruence package for GeneratorsOfGroup ... [ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 11, -2 ], [ 6, -1 ] ], [ [ 19, -8 ], [ 12, -5 ] ], [ [ 17, -10 ], [ 12, -7 ] ], [ [ 7, -6 ], [ 6, -5 ] ] ] ]]>

Other properties derived from Farey symbols By Proposition 7.2 in [Kulkarni], for the Farey symbol with underlying generalized Farey sequence [infinity, x0, x1, ..., xn, infinity], the index in PSL_2(Z) is given by the formula d = 3*n + e3, where e3 is the number of odd intervals. IndexInPSL2ZByFareySymbol(fs); 6 gap> IndexInPSL2ZByFareySymbol(fs_oo); 2 gap> IndexInPSL2ZByFareySymbol(fs_free); 6 ]]>
congruence-1.2.7/doc/toggless.js000644 000766 000024 00000004205 14663721453 017106 0ustar00mhornstaff000000 000000 /* toggless.js Frank Lübeck */ /* this file contains two functions: mergeSideTOCHooks: this changes div.ContSect elements to the class ContSectClosed and includes a hook to toggle between ContSectClosed and ContSectOpen. openclosetoc: this function does the toggling, the rest is done by CSS */ closedTOCMarker = "▶ "; openTOCMarker = "▼ "; noTOCMarker = " "; /* merge hooks into side toc for opening/closing subsections with openclosetoc */ function mergeSideTOCHooks() { var hlist = document.getElementsByTagName("div"); for (var i = 0; i < hlist.length; i++) { if (hlist[i].className == "ContSect") { var chlds = hlist[i].childNodes; var el = document.createElement("span"); var oncl = document.createAttribute("class"); oncl.nodeValue = "toctoggle"; el.setAttributeNode(oncl); var cont; if (chlds.length > 2) { var oncl = document.createAttribute("onclick"); oncl.nodeValue = "openclosetoc(event)"; el.setAttributeNode(oncl); cont = document.createTextNode(closedTOCMarker); } else { cont = document.createTextNode(noTOCMarker); } el.appendChild(cont); hlist[i].firstChild.insertBefore(el, hlist[i].firstChild.firstChild); hlist[i].className = "ContSectClosed"; } } } function openclosetoc (event) { /* first two steps to make it work in most browsers */ var evt=window.event || event; if (!evt.target) evt.target=evt.srcElement; var markClosed = document.createTextNode(closedTOCMarker); var markOpen = document.createTextNode(openTOCMarker); var par = evt.target.parentNode.parentNode; if (par.className == "ContSectOpen") { par.className = "ContSectClosed"; evt.target.replaceChild(markClosed, evt.target.firstChild); } else if (par.className == "ContSectClosed") { par.className = "ContSectOpen"; evt.target.replaceChild(markOpen, evt.target.firstChild); } } /* adjust jscontent which is called onload */ jscontentfuncs.push(mergeSideTOCHooks); congruence-1.2.7/doc/chapInd_mj.html000644 000766 000024 00000014667 14663721453 017660 0ustar00mhornstaff000000 000000 GAP (Congruence) - Index
Goto Chapter: Top 1 2 3 4 5 Bib Ind

Index

\in 2.4-2
CanEasilyCompareCongruenceSubgroups 2.4-3
Congruence package .-1
CongruenceSubgroupGamma0 2.1-2
CongruenceSubgroupGamma1 2.1-4
CongruenceSubgroupGammaUpper0 2.1-3
CongruenceSubgroupGammaUpper1 2.1-5
DefiningCongruenceSubgroups 2.3-3
DenominatorOfGFSElement 3.2-3
FareySymbol 4.1-1
FareySymbolByData 3.1-1
GeneralizedFareySequence 3.2-1
GeneratorsByFareySymbol 4.2-4
GeneratorsOfGroup 4.2-5
Index 2.4-5
IndexInPSL2ZByFareySymbol 4.3-1
IndexInSL2Z 2.3-2
InfoCongruence 5.1-1
Intersection 2.1-6
IntersectionOfCongruenceSubgroups 2.1-6
IsCongruenceSubgroup 1.1 2.
IsCongruenceSubgroupGamma0 2.2-2
IsCongruenceSubgroupGamma1 2.2-4
IsCongruenceSubgroupGammaUpper0 2.2-3
IsCongruenceSubgroupGammaUpper1 2.2-5
IsFareySymbol 3.
IsFareySymbolDefaultRep 3.
IsIntersectionOfCongruenceSubgroups 2.2-6
IsPrincipalCongruenceSubgroup 2.2-1
IsSubset 2.4-4
IsValidFareySymbol 3.1-2
LabelsOfFareySymbol 3.2-4
LevelOfCongruenceSubgroup 2.3-1
MatrixByEvenInterval 4.2-1
MatrixByFreePairOfIntervals 4.2-3
MatrixByOddInterval 4.2-2
NumeratorOfGFSElement 3.2-2
PrincipalCongruenceSubgroup 2.1-1
Random 2.4-1
    one and two argument versions 2.4-1

Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML

congruence-1.2.7/doc/chooser.html000644 000766 000024 00000007456 14663721453 017264 0ustar00mhornstaff000000 000000 GAPDoc Style Chooser

Setting preferences for GAPDoc manuals

Unfold subsections in menus only by mouse clicks: no (default)     yes

Show GAP examples as in sessions with ColorPrompt(true): yes (default)     no

Display side of table of contents within chapters: right (default)     left

Main document font: Helvetica/sans serif (default)     Times/serif

Paragraph formatting: left-right justified (default)     ragged right

Apply settings to last page.

congruence-1.2.7/lib/farey.gd000644 000766 000024 00000004477 14663721427 016360 0ustar00mhornstaff000000 000000 ############################################################################# ## #W farey.gd The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov ## ## ############################################################################# ############################################################################# ## ## IsFareySymbol( ) ## DeclareCategory( "IsFareySymbol", IsObject ); ############################################################################# ## ## FareySymbolByData( , ) ## ## This constructor creates Farey symbol with the given generalized Farey ## sequence and list of labels. It also checks conditions from the definition ## of Farey symbol and returns an error if they are not satisfied ## DeclareOperation( "FareySymbolByData", [ IsList, IsList ] ); ############################################################################# ## ## GeneralizedFareySequence( ) ## LabelsOfFareySymbol( ) ## ## The data used to create the Farey symbol are stored as its attributes ## DeclareAttribute( "GeneralizedFareySequence", IsFareySymbol ); DeclareAttribute( "LabelsOfFareySymbol", IsFareySymbol ); ############################################################################# ## ## FareySymbol( ) ## ## For a subgroup of a finite index G, this attribute stores the ## corresponding Farey symbol. The algorithm for its computation must work ## with any matrix group for which the membership test is available ## DeclareAttribute( "FareySymbol", IsMatrixGroup ); ############################################################################# # # GeneratorsByFareySymbol( fs ) # DeclareGlobalFunction( "GeneratorsByFareySymbol" ); ############################################################################# # # IndexInPSL2ZByFareySymbol( fs ) # # By the proposition 7.2 [Kulkarni], for the Farey symbol with underlying # generalized Farey sequence { infinity, x0, x1, ..., xn, infinity }, the # index in PSL_2(Z) is given by the formula d = 3*n + e3, where e3 is the # number of odd intervals. # DeclareGlobalFunction( "IndexInPSL2ZByFareySymbol" ); ############################################################################# ## #E ## congruence-1.2.7/lib/cong.gi000644 000766 000024 00000074775 14663721427 016215 0ustar00mhornstaff000000 000000 ############################################################################# ## #W cong.gi The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov ## ## ############################################################################# ############################################################################# ## ## Constructors of congruence subgroups InstallMethod( PrincipalCongruenceSubgroup, "for positive integer", [ IsPosInt ], function(n) local type, G; type := NewType( FamilyObj([[[1,0],[0,1]]]), IsGroup and IsAttributeStoringRep and IsFinitelyGeneratedGroup and IsMatrixGroup and IsCongruenceSubgroup); G := rec(); ObjectifyWithAttributes( G, type, DimensionOfMatrixGroup, 2, OneImmutable, [[1,0],[0,1]], IsIntegerMatrixGroup, true, IsFinite, false, LevelOfCongruenceSubgroup, n, IsPrincipalCongruenceSubgroup, true, IsIntersectionOfCongruenceSubgroups, false, IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false, IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false, IsCongruenceSubgroupGammaMN, false ); return G; end); InstallMethod( CongruenceSubgroupGamma0, "for positive integer", [ IsPosInt ], function(n) local type, G; type := NewType( FamilyObj([[[1,0],[0,1]]]), IsGroup and IsAttributeStoringRep and IsFinitelyGeneratedGroup and IsMatrixGroup and IsCongruenceSubgroup); G := rec(); ObjectifyWithAttributes( G, type, DimensionOfMatrixGroup, 2, OneImmutable, [[1,0],[0,1]], IsIntegerMatrixGroup, true, IsFinite, false, LevelOfCongruenceSubgroup, n, IsPrincipalCongruenceSubgroup, false, IsIntersectionOfCongruenceSubgroups, false, IsCongruenceSubgroupGamma0, true, IsCongruenceSubgroupGammaUpper0, false, IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false, IsCongruenceSubgroupGammaMN, false ); return G; end); InstallMethod( CongruenceSubgroupGammaUpper0, "for positive integer", [ IsPosInt ], function(n) local type, G; type := NewType( FamilyObj([[[1,0],[0,1]]]), IsGroup and IsAttributeStoringRep and IsFinitelyGeneratedGroup and IsMatrixGroup and IsCongruenceSubgroup); G := rec(); ObjectifyWithAttributes( G, type, DimensionOfMatrixGroup, 2, OneImmutable, [[1,0],[0,1]], IsIntegerMatrixGroup, true, IsFinite, false, LevelOfCongruenceSubgroup, n, IsPrincipalCongruenceSubgroup, false, IsIntersectionOfCongruenceSubgroups, false, IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, true, IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false, IsCongruenceSubgroupGammaMN, false ); return G; end); InstallMethod( CongruenceSubgroupGamma1, "for positive integer", [ IsPosInt ], function(n) local type, G; type := NewType( FamilyObj([[[1,0],[0,1]]]), IsGroup and IsAttributeStoringRep and IsFinitelyGeneratedGroup and IsMatrixGroup and IsCongruenceSubgroup); G := rec(); ObjectifyWithAttributes( G, type, DimensionOfMatrixGroup, 2, OneImmutable, [[1,0],[0,1]], IsIntegerMatrixGroup, true, IsFinite, false, LevelOfCongruenceSubgroup, n, IsPrincipalCongruenceSubgroup, false, IsIntersectionOfCongruenceSubgroups, false, IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false, IsCongruenceSubgroupGamma1, true, IsCongruenceSubgroupGammaUpper1, false, IsCongruenceSubgroupGammaMN, false ); return G; end); InstallMethod( CongruenceSubgroupGammaUpper1, "for positive integer", [ IsPosInt ], function(n) local type, G; type := NewType( FamilyObj([[[1,0],[0,1]]]), IsGroup and IsAttributeStoringRep and IsFinitelyGeneratedGroup and IsMatrixGroup and IsCongruenceSubgroup); G := rec(); ObjectifyWithAttributes( G, type, DimensionOfMatrixGroup, 2, OneImmutable, [[1,0],[0,1]], IsIntegerMatrixGroup, true, IsFinite, false, LevelOfCongruenceSubgroup, n, IsPrincipalCongruenceSubgroup, false, IsIntersectionOfCongruenceSubgroups, false, IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false, IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, true, IsCongruenceSubgroupGammaMN, false ); return G; end); InstallMethod( CongruenceSubgroupGammaMN, "for two positive integers", [ IsPosInt, IsPosInt ], function(m,n) local type, G; type := NewType( FamilyObj([[[1,0],[0,1]]]), IsGroup and IsAttributeStoringRep and IsFinitelyGeneratedGroup and IsMatrixGroup and IsCongruenceSubgroup); G := rec(); ObjectifyWithAttributes( G, type, DimensionOfMatrixGroup, 2, OneImmutable, [[1,0],[0,1]], IsIntegerMatrixGroup, true, IsFinite, false, LevelOfCongruenceSubgroup, m*n, LevelOfCongruenceSubgroupGammaMN, [m,n], IsPrincipalCongruenceSubgroup, false, IsIntersectionOfCongruenceSubgroups, false, IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false, IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false, IsCongruenceSubgroupGammaMN, true ); return G; end); InstallGlobalFunction( IntersectionOfCongruenceSubgroups, function( arg ) local type, G, H, K, T, arglist, n, i, pos; type := NewType( FamilyObj([[[1,0],[0,1]]]), IsGroup and IsAttributeStoringRep and IsFinitelyGeneratedGroup and IsMatrixGroup and IsCongruenceSubgroup); if not ForAll( arg, IsCongruenceSubgroup ) then Error("Usage : IntersectionOfCongruenceSubgroups( G1, G2, ... GN ) \n"); fi; # First we create a list arglist to eliminate evident repetitions of subgroups. # Then we eliminate evident inclusions of one subgroup into another: # - since intersection is associative, if we can intersect the group T which # is to be added with another subgroup K already contained in alglist, and # the result is one of the canonical congruence subgroups, we replace K by # the result of intersection of K and T # - we do not add a subgroup T to the list of defining subgroups, if alglist # already contains another subgroup K such that K is in T. # - if we add to alglist a subgroup T and alglist already contains one or more # subgroups K such that T is in K, we add T and remove all these K. arglist := []; for H in arg do if IsIntersectionOfCongruenceSubgroups(H) then for T in DefiningCongruenceSubgroups( H ) do pos:=PositionProperty( arglist, K -> CanReduceIntersectionOfCongruenceSubgroups( K, T ) ); if pos<>fail then arglist[pos]:=Intersection( arglist[pos], T ); else if ForAll( arglist, K -> not CanEasilyCompareCongruenceSubgroups( K, T ) ) and ForAll( arglist, K -> not IsSubgroup( T, K ) ) then for i in [ 1 .. Length(arglist) ] do if IsSubgroup( arglist[i], T ) then Unbind( arglist[i] ); fi; od; arglist := Compacted( arglist ); Add( arglist, T ); fi; fi; od; else pos:=PositionProperty( arglist, K -> CanReduceIntersectionOfCongruenceSubgroups( K, H ) ); if pos<>fail then arglist[pos]:=Intersection( arglist[pos], H ); else if ForAll( arglist, K -> not CanEasilyCompareCongruenceSubgroups( K, H ) ) and ForAll( arglist, K -> not IsSubgroup( H, K ) ) then for i in [ 1 .. Length(arglist) ] do if IsSubgroup( arglist[i], H ) then Unbind( arglist[i] ); fi; od; arglist := Compacted( arglist ); Add( arglist, H ); fi; fi; fi; od; # if the list of defining subgroups was reduced # to a single subgroup, we return this subgroup if Length( arglist ) = 1 then return arglist[1]; fi; # otherwise we sort the list of defining subgroups: # types of subgroups are sorted in the following way: # - IsCongruenceSubgroupGamma0 # - IsCongruenceSubgroupGammaUpper0 # - IsCongruenceSubgroupGamma1 # - IsCongruenceSubgroupGammaUpper1 # - IsPrincipalCongruenceSubgroup # and subgroups of the same type are sorted by ascending level Sort( arglist, function(X,Y) local f, t; f:=[IsCongruenceSubgroupGamma0,IsCongruenceSubgroupGammaUpper0,IsCongruenceSubgroupGamma1,IsCongruenceSubgroupGammaUpper1,IsPrincipalCongruenceSubgroup]; return PositionProperty(f, t -> t(X)) < PositionProperty(f, t -> t(Y)) or ( PositionProperty(f, t -> t(X)) = PositionProperty(f, t -> t(Y)) and LevelOfCongruenceSubgroup(X) < LevelOfCongruenceSubgroup(Y) ); end ); n := Lcm( List( arglist, H -> LevelOfCongruenceSubgroup(H) ) ); G := rec(); ObjectifyWithAttributes( G, type, DimensionOfMatrixGroup, 2, OneImmutable, [[1,0],[0,1]], IsIntegerMatrixGroup, true, IsFinite, false, LevelOfCongruenceSubgroup, n, IsPrincipalCongruenceSubgroup, false, IsIntersectionOfCongruenceSubgroups, true, IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false, IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false, DefiningCongruenceSubgroups, arglist ); return G; end); InstallMethod( DefiningCongruenceSubgroups, "for congruence subgroups", [ IsCongruenceSubgroup ], function(G) if not IsIntersectionOfCongruenceSubgroups(G) then return [G]; fi; end); ############################################################################# ## ## Methods for PrintObj and ViewObj for congruence subgroups InstallMethod( ViewObj, "for principal congruence subgroup", [ IsPrincipalCongruenceSubgroup ], 0, function( G ) Print( "" ); end ); InstallMethod( PrintObj, "for principal congruence subgroup", [ IsPrincipalCongruenceSubgroup ], 0, function( G ) Print( "PrincipalCongruenceSubgroup(", LevelOfCongruenceSubgroup(G), ")" ); end ); InstallMethod( ViewObj, "for CongruenceSubgroupGamma0 congruence subgroup", [ IsCongruenceSubgroupGamma0 ], 0, function( G ) Print( "" ); end ); InstallMethod( PrintObj, "for CongruenceSubgroupGamma0 congruence subgroup", [ IsCongruenceSubgroupGamma0 ], 0, function( G ) Print( "CongruenceSubgroupGamma0(", LevelOfCongruenceSubgroup(G), ")" ); end ); InstallMethod( ViewObj, "for CongruenceSubgroupGammaUpper0 congruence subgroup", [ IsCongruenceSubgroupGammaUpper0 ], 0, function( G ) Print( "" ); end ); InstallMethod( PrintObj, "for CongruenceSubgroupGammaUpper0 congruence subgroup", [ IsCongruenceSubgroupGammaUpper0 ], 0, function( G ) Print( "CongruenceSubgroupGammaUpper0(", LevelOfCongruenceSubgroup(G), ")" ); end ); InstallMethod( ViewObj, "for CongruenceSubgroupGamma1 congruence subgroup", [ IsCongruenceSubgroupGamma1 ], 0, function( G ) Print( "" ); end ); InstallMethod( PrintObj, "for CongruenceSubgroupGamma1 congruence subgroup", [ IsCongruenceSubgroupGamma1 ], 0, function( G ) Print( "CongruenceSubgroupGamma1(", LevelOfCongruenceSubgroup(G), ")" ); end ); InstallMethod( ViewObj, "for CongruenceSubgroupGammaUpper1 congruence subgroup", [ IsCongruenceSubgroupGammaUpper1 ], 0, function( G ) Print( "" ); end ); InstallMethod( PrintObj, "for CongruenceSubgroupGammaUpper1 congruence subgroup", [ IsCongruenceSubgroupGammaUpper1 ], 0, function( G ) Print( "CongruenceSubgroupGammaUpper1(", LevelOfCongruenceSubgroup(G), ")" ); end ); InstallMethod( ViewObj, "for CongruenceSubgroupGammaMN congruence subgroup", [ IsCongruenceSubgroupGammaMN ], 0, function( G ) Print( "" ); end ); InstallMethod( PrintObj, "for CongruenceSubgroupGammaMN congruence subgroup", [ IsCongruenceSubgroupGammaMN ], 0, function( G ) Print( "CongruenceSubgroupGammaMN(", LevelOfCongruenceSubgroupGammaMN(G)[1], ",", LevelOfCongruenceSubgroupGammaMN(G)[2], ")" ); end ); InstallMethod( ViewObj, "for intersection of congruence subgroups", [ IsIntersectionOfCongruenceSubgroups ], 0, function( G ) Print( "" ); end ); InstallMethod( PrintObj, "for intersection of congruence subgroups", [ IsIntersectionOfCongruenceSubgroups ], 0, function( G ) local i, k; k := Length(DefiningCongruenceSubgroups(G)); Print( "IntersectionOfCongruenceSubgroups( \n" ); for i in [ 1 .. k-1 ] do Print( " ", DefiningCongruenceSubgroups(G)[i], ", \n" ); od; Print( " ", DefiningCongruenceSubgroups(G)[k], " )" ); end ); ############################################################################# ## ## Membership tests for congruence subgroups InstallMethod( \in, "for a 2x2 matrix and a principal congruence subgroup", [ IsMatrix, IsPrincipalCongruenceSubgroup], 0, function( m, G ) local n; if not DimensionsMat( m ) = [2,2] then return false; elif DeterminantMat(m)<>1 then return false; else n := LevelOfCongruenceSubgroup(G); return IsInt( (m[1][1]-1)/n ) and IsInt(m[1][2]/n) and IsInt(m[2][1]/n) and IsInt( (m[2][2]-1)/n ); fi; end); InstallMethod( \in, "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGamma0", [ IsMatrix, IsCongruenceSubgroupGamma0 ], 0, function( m, G ) local n; if not DimensionsMat( m ) = [2,2] then return false; elif DeterminantMat(m)<>1 then return false; else n := LevelOfCongruenceSubgroup(G); return IsInt(m[2][1]/n); fi; end); InstallMethod( \in, "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGammaUpper0", [ IsMatrix, IsCongruenceSubgroupGammaUpper0 ], 0, function( m, G ) local n; if not DimensionsMat( m ) = [2,2] then return false; elif DeterminantMat(m)<>1 then return false; else n := LevelOfCongruenceSubgroup(G); return IsInt(m[1][2]/n); fi; end); InstallMethod( \in, "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGamma1", [ IsMatrix, IsCongruenceSubgroupGamma1 ], 0, function( m, G ) local n; if not DimensionsMat( m ) = [2,2] then return false; elif DeterminantMat(m)<>1 then return false; else n := LevelOfCongruenceSubgroup(G); return IsInt( (m[1][1]-1)/n ) and IsInt( m[2][1]/n ) and IsInt( (m[2][2]-1)/n ); fi; end); InstallMethod( \in, "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGammaUpper1", [ IsMatrix, IsCongruenceSubgroupGammaUpper1 ], 0, function( m, G ) local n; if not DimensionsMat( m ) = [2,2] then return false; elif DeterminantMat(m)<>1 then return false; else n := LevelOfCongruenceSubgroup(G); return IsInt( (m[1][1]-1)/n ) and IsInt( m[1][2]/n ) and IsInt( (m[2][2]-1)/n ); fi; end); InstallMethod( \in, "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGammaMN", [ IsMatrix, IsCongruenceSubgroupGammaMN ], 0, function( mat, G ) local m, n; if not DimensionsMat( mat ) = [2,2] then return false; elif DeterminantMat(mat)<>1 then return false; else m := LevelOfCongruenceSubgroupGammaMN(G)[1]; n := LevelOfCongruenceSubgroupGammaMN(G)[2]; return IsInt( (mat[1][1]-1)/m ) and IsInt(mat[1][2]/m) and IsInt(mat[2][1]/n) and IsInt( (mat[2][2]-1)/n ); fi; end); InstallMethod( \in, "for an intersection of congruence subgroups", [ IsMatrix, IsIntersectionOfCongruenceSubgroups ], 0, function( m, G ) local H; if not DimensionsMat( m ) = [2,2] then return false; elif DeterminantMat(m)<>1 then return false; else return ForAll( DefiningCongruenceSubgroups(G), H -> m in H ); fi; end); ############################################################################# ## ## Installing special methods for congruence subgroups ## for some general methods installed in GAP for matrix groups InstallMethod( DimensionOfMatrixGroup, "for congruence subgroup", [ IsCongruenceSubgroup ], 0, G -> 2 ); InstallMethod( \=, "for a pair of congruence subgroups", [ IsCongruenceSubgroup, IsCongruenceSubgroup ], 0, function( G, H ) if CanEasilyCompareCongruenceSubgroups( G, H ) then return true; else TryNextMethod(); fi; end); ############################################################################# ## ## IsSubset ## ############################################################################# InstallMethod( IsSubset, "for a natural SL_2(Z) and a congruence subgroup", [ IsNaturalSL, IsCongruenceSubgroup ], 0, function( G, H ) return MultiplicativeNeutralElement(G)=[ [ 1, 0 ], [ 0, 1 ] ]; end); InstallMethod( IsSubset, "for a congruence subgroup and a principal congruence subgroup", [ IsCongruenceSubgroup, IsPrincipalCongruenceSubgroup ], 0, function( G, H ) local T; if IsIntersectionOfCongruenceSubgroups(G) then return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) ); elif IsPrincipalCongruenceSubgroup(G) or IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGamma0(G) or IsCongruenceSubgroupGammaUpper0(G) then return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); else # for a case of another type of congruence subgroup TryNextMethod(); fi; end); InstallMethod( IsSubset, "for a congruence subgroup and CongruenceSubgroupGamma1", [ IsCongruenceSubgroup, IsCongruenceSubgroupGamma1 ], 0, function( G, H ) local T; if IsIntersectionOfCongruenceSubgroups(G) then return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) ); elif IsPrincipalCongruenceSubgroup(G) or IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGammaUpper0(G) then return false; elif IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGamma0(G) then return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); else # for a case of another type of congruence subgroup TryNextMethod(); fi; end); InstallMethod( IsSubset, "for a congruence subgroup and CongruenceSubgroupGammaUpper1", [ IsCongruenceSubgroup, IsCongruenceSubgroupGammaUpper1 ], 0, function( G, H ) local T; if IsIntersectionOfCongruenceSubgroups(G) then return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) ); elif IsPrincipalCongruenceSubgroup(G) or IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGamma0(G) then return false; elif IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGammaUpper0(G) then return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); else # for a case of another type of congruence subgroup TryNextMethod(); fi; end); InstallMethod( IsSubset, "for a congruence subgroup and CongruenceSubgroupGamma0", [ IsCongruenceSubgroup, IsCongruenceSubgroupGamma0 ], 0, function( G, H ) local T; if IsIntersectionOfCongruenceSubgroups(G) then return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) ); elif IsPrincipalCongruenceSubgroup(G) or IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGammaUpper0(G) then return false; elif IsCongruenceSubgroupGamma0(G) then return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); else # for a case of another type of congruence subgroup TryNextMethod(); fi; end); InstallMethod( IsSubset, "for a congruence subgroup and CongruenceSubgroupGammaUpper0", [ IsCongruenceSubgroup, IsCongruenceSubgroupGammaUpper0 ], 0, function( G, H ) local T; if IsIntersectionOfCongruenceSubgroups(G) then return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) ); elif IsPrincipalCongruenceSubgroup(G) or IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGamma0(G) then return false; elif IsCongruenceSubgroupGammaUpper0(G) then return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); else # for a case of another type of congruence subgroup TryNextMethod(); fi; end); InstallMethod( IsSubset, "for a congruence subgroup and intersection of congruence subgroups", [ IsCongruenceSubgroup, IsIntersectionOfCongruenceSubgroups ], 0, function( G, H ) local DG, DH; # here we can check only sufficient conditions, and they are not # satisfied, then we call the next method if IsIntersectionOfCongruenceSubgroups(G) then if ForAll( DefiningCongruenceSubgroups(H), DH -> ForAll( DefiningCongruenceSubgroups(G), DG -> IsSubset(G,DH) ) ) then return true; else TryNextMethod(); fi; elif IsPrincipalCongruenceSubgroup(G) or IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGamma0(G) or IsCongruenceSubgroupGammaUpper0(G) then if ForAll( DefiningCongruenceSubgroups(H), DH -> IsSubset(G,DH) ) then return true; else TryNextMethod(); fi; else # for a case of another type of congruence subgroup TryNextMethod(); fi; end); ############################################################################# ## ## Intersection2 ## ############################################################################# InstallMethod( Intersection2, "for a pair of congruence subgroups", [ IsCongruenceSubgroup, IsCongruenceSubgroup ], 0, function( G, H ) # # Case 1 - at least one subgroup is an intersection of congruence subgroups # if IsIntersectionOfCongruenceSubgroups(G) or IsIntersectionOfCongruenceSubgroups(H) then return IntersectionOfCongruenceSubgroups(G,H); # # Case 2 - the diagonal (both subgroups has the same type) # elif IsPrincipalCongruenceSubgroup(G) and IsPrincipalCongruenceSubgroup(H) then return PrincipalCongruenceSubgroup( Lcm( LevelOfCongruenceSubgroup(G), LevelOfCongruenceSubgroup(H) ) ); elif IsCongruenceSubgroupGamma1(G) and IsCongruenceSubgroupGamma1(H) then return CongruenceSubgroupGamma1( Lcm( LevelOfCongruenceSubgroup(G), LevelOfCongruenceSubgroup(H) ) ); elif IsCongruenceSubgroupGammaUpper1(G) and IsCongruenceSubgroupGammaUpper1(H) then return CongruenceSubgroupGammaUpper1( Lcm( LevelOfCongruenceSubgroup(G), LevelOfCongruenceSubgroup(H) ) ); elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGamma0(H) then return CongruenceSubgroupGamma0( Lcm( LevelOfCongruenceSubgroup(G), LevelOfCongruenceSubgroup(H) ) ); elif IsCongruenceSubgroupGammaUpper0(G) and IsCongruenceSubgroupGammaUpper0(H) then return CongruenceSubgroupGammaUpper0( Lcm( LevelOfCongruenceSubgroup(G), LevelOfCongruenceSubgroup(H) ) ); # # Case 3 - Subgroups has different level # elif LevelOfCongruenceSubgroup(G) <> LevelOfCongruenceSubgroup(H) then return IntersectionOfCongruenceSubgroups(G,H); # # Now subgroups have the same level # elif IsCongruenceSubgroupGamma1(G) and IsCongruenceSubgroupGamma0(H) then return G; # so all properties and attributes of G will be preserved elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGamma1(H) then return H; elif IsCongruenceSubgroupGammaUpper1(G) and IsCongruenceSubgroupGammaUpper0(H) then return G; elif IsCongruenceSubgroupGammaUpper0(G) and IsCongruenceSubgroupGammaUpper1(H) then return H; elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGammaUpper0(H) or IsCongruenceSubgroupGammaUpper0(G) and IsCongruenceSubgroupGamma0(H) then return IntersectionOfCongruenceSubgroups(G,H); else return PrincipalCongruenceSubgroup(LevelOfCongruenceSubgroup(G)); fi; end); ############################################################################# ## ## Indices of congruence subgroups ## ############################################################################# InstallMethod( Index, "for a natural SL_2(Z) and a congruence subgroup", [ IsNaturalSL, IsCongruenceSubgroup ], 0, function( G, H ) local n, prdiv, r, p; n := LevelOfCongruenceSubgroup(H); if HasIsPrincipalCongruenceSubgroup( H ) and IsPrincipalCongruenceSubgroup( H ) then if n=1 then Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = 1 ); return 1; elif n=2 then Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = 6 ); return 12; # not 6, since we are in SL, not in PSL else prdiv := Set( Factors( n ) ); r := n^3; # not (n^3)/2 since we are in SL, not in PSL for p in prdiv do r := r*(1-1/p^2); od; Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = r/2 ); return r; fi; elif ( HasIsCongruenceSubgroupGamma0( H ) and IsCongruenceSubgroupGamma0( H ) ) or ( HasIsCongruenceSubgroupGammaUpper0( H ) and IsCongruenceSubgroupGammaUpper0( H ) ) then # for CongruenceSubgroupGamma0 we use the formula # [ SL_2(Z) : CongruenceSubgroupGamma0(n) ] = n * "Product over prime p | n" ( 1 + 1/p ) prdiv := Set( Factors( n ) ); r := n; for p in prdiv do r := r*(1+1/p); od; Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = r ); return r; elif ( HasIsCongruenceSubgroupGamma1( H ) and IsCongruenceSubgroupGamma1( H ) ) or ( HasIsCongruenceSubgroupGammaUpper1( H ) and IsCongruenceSubgroupGammaUpper1( H ) ) then # for CongruenceSubgroupGamma1 we use the formula # [ CongruenceSubgroupGamma0(n) : CongruenceSubgroupGamma1(n) ] = n * "Product over prime p | n" ( 1 - 1/p ) # Combining with the previous case, we get that # [ SL_2(Z) : CongruenceSubgroupGamma1(n) ] = n^2 * "Product over prime p | n" ( 1 - 1/p^2 ) prdiv := Set( Factors( n ) ); r := n^2; for p in prdiv do r := r*(1-1/p^2); od; Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = r/2 ); return r; else # if H is not in any of the cases above, for example is an intersection # of some congruence subgroups, we derive the index from its Farey symbol if [[-1,0],[0,-1]] in H then return IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) ; else return IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) * 2; fi; fi; end); InstallMethod( IndexInSL2Z, "for a congruence subgroup", [ IsCongruenceSubgroup ], 0, G -> Index( SL(2,Integers), G ) ); InstallMethod( Index, "for a pair of congruence subgroups", [ IsCongruenceSubgroup, IsCongruenceSubgroup ], 0, function( G, H ) if IsSubgroup( G, H ) then return IndexInSL2Z(H)/IndexInSL2Z(G); fi; end); ############################################################################# ## ## Generators of confruence subgroups from Farey symbols ## ############################################################################# InstallMethod( GeneratorsOfGroup, "for a congruence subgroup", [ IsCongruenceSubgroup ], 0, function(G) local gens, i; Info( InfoCongruence, 1, "Using the Congruence package for GeneratorsOfGroup ..."); gens := GeneratorsByFareySymbol( FareySymbol( G ) ); for i in [ 1 .. Length(gens) ] do if not gens[i] in G then gens[i] := -gens[i]; Assert( 1, gens[i] in G ); fi; od; return gens; end ); ############################################################################# ## #E ## congruence-1.2.7/lib/random.gi000644 000766 000024 00000016441 14663721427 016531 0ustar00mhornstaff000000 000000 ############################################################################# ## #W random.gi The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov ## ## ############################################################################# ## ## This file contains implementations of methods to construct random elements ## of congruence subgroups CongruenceSubgroupGamma, CongruenceSubgroupGamma0, ## CongruenceSubgroupGammaUpper0, CongruenceSubgroupGamma1 and ## CongruenceSubgroupGammaUpper1. ## The idea is to select two random entries a and b in the same row or column ## of the matrix, such that a and b will satisfy the requirements arising ## from the congruence subgroup. For example, for the principal congruence ## subgroup we will select a and b as follows: ## a := 1 + n * Random( [ -10 .. 10 ] ); ## b := n * Random( [ -10 .. 10 ] ); ## After this we can find such x and y for the other row (or column) of the ## matrix that its determinant will be equal to one. If the resulting matrix ## will be not in the congruence subgroup because of not suitable x and y, ## we will repeat this process for another a and b until we will find ## suitable x and y. ## For each type of congruence subgroups, we provide one- and two-argument ## versions of Random. The one-argument version uses Random( [ -10 .. 10 ] ) ## to generate a and b, ## and in the two-argument version Random([ -m..m ]) ## will be used, where m is given by the second argument. ############################################################################# ## ## The principal congruence subgroup of level N consists of all matrices ## of the form [ 1+N N ] ## [ N 1+N ] ## InstallMethod( Random, "for a principal congruence subgroup", [ IsPrincipalCongruenceSubgroup ], 0, function( G ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := 1 + n * Random( [ -10 .. 10 ] ); b := n * Random( [ -10 .. 10 ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1 and IsInt( -gcd.coeff2/n ) and IsInt( (gcd.coeff1-1)/n ); return [ [ a, b ], [ -gcd.coeff2, gcd.coeff1 ] ]; end); InstallOtherMethod( Random, "for a principal congruence subgroup", [ IsPrincipalCongruenceSubgroup, IsPosInt ], 0, function( G, m ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := 1 + n * Random( [ -m .. m ] ); b := n * Random( [ -m .. m ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1 and IsInt( -gcd.coeff2/n ) and IsInt( (gcd.coeff1-1)/n ); return [ [ a, b ], [ -gcd.coeff2, gcd.coeff1 ] ]; end); ############################################################################# ## ## The congruence subgroup CongruenceSubgroupGamma0(N) consists of all matrices ## of the form [ * * ] ## [ N * ] ## InstallMethod( Random, "for a congruence subgroup CongruenceSubgroupGamma0", [ IsCongruenceSubgroupGamma0 ], 0, function( G ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := Random( [ -n*10 .. n*10 ] ); b := n * Random( [ -10 .. 10 ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1; return [ [ a, -gcd.coeff2 ], [ b, gcd.coeff1 ] ]; end); InstallOtherMethod( Random, "for a congruence subgroup CongruenceSubgroupGamma0", [ IsCongruenceSubgroupGamma0, IsPosInt ], 0, function( G, m ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := Random( [ -n*m .. n*m ] ); b := n * Random( [ -m .. m ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1; return [ [ a, -gcd.coeff2 ], [ b, gcd.coeff1 ] ]; end); ############################################################################# ## ## The congruence subgroup CongruenceSubgroupGammaUpper0(N) consists of all matrices ## of the form [ * N ] ## [ * * ] ## InstallMethod( Random, "for a congruence subgroup CongruenceSubgroupGammaUpper0", [ IsCongruenceSubgroupGammaUpper0 ], 0, function( G ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := Random( [ -n*10 .. n*10 ] ); b := n * Random( [ -10 .. 10 ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1; return [ [ a, b ], [ -gcd.coeff2, gcd.coeff1 ] ]; end); InstallOtherMethod( Random, "for a congruence subgroup CongruenceSubgroupGammaUpper0", [ IsCongruenceSubgroupGammaUpper0, IsPosInt ], 0, function( G, m ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := Random( [ -n*m .. n*m ] ); b := n * Random( [ -m .. m ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1; return [ [ a, b ], [ -gcd.coeff2, gcd.coeff1 ] ]; end); ############################################################################# ## ## The congruence subgroup CongruenceSubgroupGamma1(N) consists of all matrices ## of the form [ 1+N * ] ## [ N 1+N ] ## InstallMethod( Random, "for a congruence subgroup CongruenceSubgroupGamma1", [ IsCongruenceSubgroupGamma1 ], 0, function( G ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := 1 + n * Random( [ -10 .. 10 ] ); b := n * Random( [ -10 .. 10 ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1 and IsInt( (gcd.coeff1-1)/n ); return [ [ a, -gcd.coeff2 ], [ b, gcd.coeff1 ] ]; end); InstallOtherMethod( Random, "for a congruence subgroup CongruenceSubgroupGamma1", [ IsCongruenceSubgroupGamma1, IsPosInt ], 0, function( G, m ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := 1 + n * Random( [ -m .. m ] ); b := n * Random( [ -m .. m ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1 and IsInt( (gcd.coeff1-1)/n ); return [ [ a, -gcd.coeff2 ], [ b, gcd.coeff1 ] ]; end); ############################################################################# ## ## The congruence subgroup CongruenceSubgroupGammaUpper1(N) consists of all matrices ## of the form [ 1+N N ] ## [ * 1+N ] ## InstallMethod( Random, "for a congruence subgroup CongruenceSubgroupGammaUpper1", [ IsCongruenceSubgroupGammaUpper1 ], 0, function( G ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := 1 + n * Random( [ -10 .. 10 ] ); b := n * Random( [ -10 .. 10 ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1 and IsInt( (gcd.coeff1-1)/n ); return [ [ a, b ], [ -gcd.coeff2, gcd.coeff1 ] ]; end); InstallOtherMethod( Random, "for a congruence subgroup CongruenceSubgroupGammaUpper1", [ IsCongruenceSubgroupGammaUpper1, IsPosInt ], 0, function( G, m ) local n, a, b, gcd; n := LevelOfCongruenceSubgroup( G ); repeat a := 1 + n * Random( [ -m .. m ] ); b := n * Random( [ -m .. m ] ); gcd := Gcdex( a, b ); until gcd.gcd = 1 and IsInt( (gcd.coeff1-1)/n ); return [ [ a, b ], [ -gcd.coeff2, gcd.coeff1 ] ]; end); ############################################################################# ## #E ##congruence-1.2.7/lib/factor.g000644 000766 000024 00000017347 14663721427 016364 0ustar00mhornstaff000000 000000 ############################################################################# ## #W factor.gi The Congruence package Helena Verrill ## ## ############################################################################# # it will be useful to find the maximum value of the labels # though if space is not a problem, this could just return # the Length of the labels. __congruence_max_label:= function(L) local s, i; s:=1; for i in [1..Length(L)] do if (not L[i] = "even") and (not L[i] = "odd") and L[i] > s then s := L[i]; fi; od; return s; end;; # For a list of labels L such as # [1,3,4,7,4,7,3,1,"odd","even"], for reference, indices are: # 1 2 3 4 5 6 7 8 9 10 # want to produce a list: # [[9],[10],[1,8],[],[2,7],[3,5],...] # this is the list of the form: # [[all indices with L[x] = "odd"],[all indices with L[x] = "even"], # [all indices with L[x] = 1], ....] # assume L is a list of integers, or "odd" or "even". __congruence_edgepairs := function(L) local max, pairs, i; pairs:=[]; max:=__congruence_max_label(L); for i in [1..max+2] do pairs[i] := []; od; for i in [1..Length(L)] do if L[i]="odd" then Add(pairs[1],i); elif L[i]="even" then Add(pairs[2],i); else Add(pairs[L[i]+2],i); fi; od; return pairs; end;; # for each edge of a Farey Symbol, we compute the generator # which maps that edge to another edge. # (this is done at the same time as the fundamental # domain is computed, but the data may not have been stored, # and has to be recomputed; suggest change for a future version) # this function gives "edge gluing matrices" as a number in the # list of generators (gens); negative entries mean the inverse matrix, # e.g., -5 would mean (5th generator)^(-1) # (note, the list of labels in a Farey sequence says which edge is # glued to which; -2 and -3 means there is an elliptic point order # 2 or 3) # # the input is assumed to be a FareySymbol; # another version of this function could take input to be the group # # Note, if the output of this function was # stored as an attribute of the FareySymbol, # then it would not have to be recomputed # __congruence_gluing_matrices := function(FS) local cusps, gens, label_list, glue_list, l, i, index, gfs, labels, matrix; # the following is a list of the cusps of the sequence, # and other data extracted from the FareySymbol gfs := GeneralizedFareySequence(FS); labels := LabelsOfFareySymbol(FS); gens := GeneratorsByFareySymbol( FS ); # make a list of which edges have a given label: label_list := __congruence_edgepairs(labels); # the following list will be what is finally returned, # a list of integers as described above. glue_list := []; # make list of which generator joins two edges, # in the non elliptic case for i in [3..Length(label_list)] do l := label_list[i]; matrix := MatrixByFreePairOfIntervals( gfs, l[1], l[2] ); index := PositionNthOccurrence( gens ,matrix,1); if index = "fail" then index := -PositionNthOccurrence(gens,matrix^(-1),1); fi; glue_list[l[1]] := index; glue_list[l[2]] := -index; od; # Now deal with elliptic elements: for i in label_list[1] do matrix := MatrixByOddInterval( gfs, i ); index := PositionNthOccurrence(gens,matrix,1); if index = "fail" then index := -PositionNthOccurrence(gens,matrix^(-1),1); glue_list[i] := -index; else glue_list[i] := -index; fi; od; for i in label_list[2] do matrix := MatrixByEvenInterval( gfs, i ); index := PositionNthOccurrence(gens,matrix,1); if index = "fail" then index := -PositionNthOccurrence(gens,matrix^(-1),1); glue_list[i] := -index; else glue_list[i] := -index; fi; od; return glue_list; end;; # following function determines which edge an image ImL of # a domain is the longest # # The function either returns a index of an edge # which is a number between 1 and #L-1, # or it returns "overlap" meaning that there is overlap, but not equality. __congruence_longest_edge := function(ImL) local i, minImL, maxImL, maxindex, minindex; for i in [1..Length(ImL)] do if ImL[i] = infinity then return "infinity"; fi; od; minImL := Minimum(ImL); maxImL := Maximum(ImL); maxindex := PositionNthOccurrence( ImL ,maxImL,1); return maxindex; end;; # Need to be able to apply action of matrices to cusps __congruence_fractionallineartransformation:= function(g,c) local den, num; if c = infinity then if g[2][1] = 0 then return infinity; else return g[1][1]/g[2][1]; fi; else num:=g[1][1]*c + g[1][2]; den:=g[2][1]*c + g[2][2]; if den = 0 then return infinity; else return num/den; fi; fi; end;; __congruence_PSL2multiply := function(g,L) local imL, i; imL := []; for i in [1..Length(L)] do Add(imL,__congruence_fractionallineartransformation(g,L[i])); od; return imL; end;; # this an algorithm to determine a word for # a given matrix g in G in terms of the generators: find_word_ver2 := function(FS,glue_list,g) local gens, L, ImL, done, word,letter,i, edge, h, maybesame, inf; gens := GeneratorsByFareySymbol( FS ); L := GeneralizedFareySequence( FS ); ImL := __congruence_PSL2multiply(g,L); word:=[]; h := g; done := false; while not done do; edge := __congruence_longest_edge(ImL); if edge = "infinity" then # check equality of L and ImL: maybesame := true; i := 1; while i < Length(L) and maybesame do if not L[i] = ImL[i] then maybesame := false; fi; i := i+1; od; if maybesame then done := true; return Reversed(word); fi; # now assume the domains are not equal inf := PositionNthOccurrence( ImL , infinity ,1); if inf = 1 and ImL[2]L[2] then return "g is not in the group"; elif ImL[i+1]L[2] then return "g is not in the group"; fi; # now assume the domains do not overlap if ImL[inf+1] >= L[2] then letter := glue_list[inf]; elif inf = 1 then letter := glue_list[Length(glue_list)]; else letter := glue_list[inf-1]; fi; Add(word,letter); h:=h*gens[AbsoluteValue(letter)]^(-SignInt(letter)); ImL := __congruence_PSL2multiply(h,L); else # get next "letter" in the word for the matrix: letter := glue_list[edge]; Add(word,letter); h:=h*gens[AbsoluteValue(letter)]^(-SignInt(letter)); ImL := __congruence_PSL2multiply(h,L); fi; od; return Reversed(word); end;; ############################################################################# # # FactorizeMat( G, g ) # __congruence_FactorizeMat := function( G, g ) return find_word_ver2( FareySymbol(G), __congruence_gluing_matrices(FareySymbol(G)), g ); end; ############################################################################# # # CheckFactorizeMat(gens,word) # # the following function is for testing purposes: # gens is a list of generators, "word" a sequence of integers, none # of which is bigger than the size of the list of generators. # a word [4,6,-3] will return the product gens[4]*gens[6]*gens[3]^(-1) # __congruence_CheckFactorizeMat := function(gens,word) local g, i; g := [[1,0],[0,1]]; for i in word do g := g*gens[AbsoluteValue(i)]^SignInt(i); od; return g; end;congruence-1.2.7/lib/cong.g000644 000766 000024 00000017463 14663721427 016033 0ustar00mhornstaff000000 000000 ############################################################################# ## #W cong.g The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov ## ## ############################################################################# ############################################################################# # # CanEasilyCompareCongruenceSubgroups( G, H ) # InstallMethod( CanEasilyCompareCongruenceSubgroups, "for two congruence subgroups", [ IsCongruenceSubgroup, IsCongruenceSubgroup ], function ( G, H ) local i; if ForAll( [ G, H ], IsPrincipalCongruenceSubgroup ) or ForAll( [ G, H ], IsCongruenceSubgroupGamma0 ) or ForAll( [ G, H ], IsCongruenceSubgroupGammaUpper0 ) or ForAll( [ G, H ], IsCongruenceSubgroupGamma1 ) or ForAll( [ G, H ], IsCongruenceSubgroupGammaUpper1 ) then return LevelOfCongruenceSubgroup(G)=LevelOfCongruenceSubgroup(H); elif ForAll( [ G, H ], IsIntersectionOfCongruenceSubgroups ) then # we use the canonical ordering of subgroups # in the intersection of congruence subgroups if Length(DefiningCongruenceSubgroups(G)) <> Length(DefiningCongruenceSubgroups(H)) then return false; else return ForAll( [ 1 .. Length(DefiningCongruenceSubgroups(G)) ], i -> CanEasilyCompareCongruenceSubgroups( DefiningCongruenceSubgroups(G)[i], DefiningCongruenceSubgroups(H)[i]) ); fi; else return false; fi; end); ############################################################################# # # CanReduceIntersectionOfCongruenceSubgroups( G, H ) # # This function mimics the structure of the method for Intersection for # congruence subgroups. It returns true, if their intersection can be reduced # to one of the canonical congruence subgroups, and false otherwise, i.e. the # intersection can be expressed only as IntersectionOfCongruenceSubgroups. # This is used in IntersectionOfCongruenceSubgroups to reduce the list of # canonical subgroups forming the intersection. # InstallMethod( CanReduceIntersectionOfCongruenceSubgroups, "for two congruence subgroups", [ IsCongruenceSubgroup, IsCongruenceSubgroup ], function( G, H ) # # Case 1 - at least one subgroup is an intersection of congruence subgroups # if IsIntersectionOfCongruenceSubgroups(G) or IsIntersectionOfCongruenceSubgroups(H) then return false; # # Case 2 - the diagonal (both subgroups has the same type) # elif IsPrincipalCongruenceSubgroup(G) and IsPrincipalCongruenceSubgroup(H) then return true; elif IsCongruenceSubgroupGamma1(G) and IsCongruenceSubgroupGamma1(H) then return true; elif IsCongruenceSubgroupGammaUpper1(G) and IsCongruenceSubgroupGammaUpper1(H) then return true; elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGamma0(H) then return true; elif IsCongruenceSubgroupGammaUpper0(G) and IsCongruenceSubgroupGammaUpper0(H) then return true; # # Case 3 - Subgroups has different level # elif LevelOfCongruenceSubgroup(G) <> LevelOfCongruenceSubgroup(H) then return false; # # Now subgroups have the same level # elif IsCongruenceSubgroupGamma1(G) and IsCongruenceSubgroupGamma0(H) then return true; elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGamma1(H) then return true; elif IsCongruenceSubgroupGammaUpper1(G) and IsCongruenceSubgroupGammaUpper0(H) then return true; elif IsCongruenceSubgroupGammaUpper0(G) and IsCongruenceSubgroupGammaUpper1(H) then return true; elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGammaUpper0(H) or IsCongruenceSubgroupGammaUpper0(G) and IsCongruenceSubgroupGamma0(H) then return false; else return true; fi; end); ############################################################################# # # NumeratorOfGFSElement( gfs, i ) # # Returns the numerator of the i-th term of the generalised Farey sequence # gfs: for the 1st infinite entry returns -1, for the last one returns 1, # for all other entries returns usual numerator. # InstallGlobalFunction( "NumeratorOfGFSElement", function(gfs,i) if i in [ 2 .. Length(gfs)-1 ] then return NumeratorRat( gfs[i] ); elif i=1 then return -1; # infinity on the left elif i=Length(gfs) then return 1; # infinity on the right else Error("There is no entry number ", i, " in !!! \n"); fi; end); ############################################################################# # # DenominatorOfGFSElement( gfs, i ) # # Returns the denominator of the i-th term of the generalised Farey sequence # gfs: for both infinite entries returns 0, for the other ones returns usual # denominator. # InstallGlobalFunction( "DenominatorOfGFSElement", function(gfs,i) if i in [ 2 .. Length(gfs)-1 ] then return DenominatorRat( gfs[i] ); elif i=1 or i=Length(gfs) then return 0; else Error("There is no entry number ", i, " in !!! \n"); fi; end); ############################################################################# # # IsValidFareySymbol( fs ) # # This function is used in FareySymbolByData to validate its output # InstallGlobalFunction( "IsValidFareySymbol" , function( fs ) local gfs, labels, n, i, t; gfs := GeneralizedFareySequence(fs); labels := LabelsOfFareySymbol(fs); n := Length(gfs); if ForAny( [ 1 .. Length(labels) ], t -> not IsBound(labels[t] ) ) then Error(" must not contain holes !!! \n"); fi; if Length(labels)<>n-1 then Error("Lengths of and do not match !!! \n"); fi; if gfs[1]<>infinity or gfs[n]<>infinity then Error("First and last elements of must be infinity !!! \n"); fi; if not 0 in gfs then Error(" must contain at least one zero element !!! \n"); fi; for i in [ 1 .. n-1 ] do if NumeratorOfGFSElement(gfs,i+1) * DenominatorOfGFSElement(gfs,i) - NumeratorOfGFSElement(gfs,i) * DenominatorOfGFSElement(gfs,i+1) <> 1 then Error("a", i+1, "*b", i, " - a", i, "*b", i+1, " <> 1 !!! \n"); fi; od; if ForAny( Collected(labels), t -> IsInt(t[1]) and t[2]<>2 ) then Error(" are not properly paired !!! \n"); fi; return true; end); ############################################################################# # # MatrixByEvenInterval( gfs, i ) # InstallGlobalFunction( "MatrixByEvenInterval", function(gfs,i) local ai, bi, ai1, bi1; ai := NumeratorOfGFSElement(gfs,i); bi := DenominatorOfGFSElement(gfs,i); ai1 := NumeratorOfGFSElement(gfs,i+1); bi1 := DenominatorOfGFSElement(gfs,i+1); return [ [ ai1*bi1 + ai*bi, -ai^2 - ai1^2 ], [ bi^2 + bi1^2, -ai1*bi1 - ai*bi ] ]; end); ############################################################################# # # MatrixByOddInterval( gfs, i ) # InstallGlobalFunction( "MatrixByOddInterval", function(gfs,j) local aj, bj, aj1, bj1; aj := NumeratorOfGFSElement(gfs,j); bj := DenominatorOfGFSElement(gfs,j); aj1 := NumeratorOfGFSElement(gfs,j+1); bj1 := DenominatorOfGFSElement(gfs,j+1); return [ [ aj1*bj1 + aj*bj1 + aj*bj, -aj^2 - aj*aj1 - aj1^2 ], [ bj^2 + bj*bj1 + bj1^2, -aj1*bj1 - aj1*bj - aj*bj ] ]; end); ############################################################################# # # MatrixByFreePairOfIntervals( gfs, k, kp ) # InstallGlobalFunction( "MatrixByFreePairOfIntervals", function(gfs,k,kp) local ak, bk, ak1, bk1, akp, bkp, akp1, bkp1; ak := NumeratorOfGFSElement(gfs,k); bk := DenominatorOfGFSElement(gfs,k); ak1 := NumeratorOfGFSElement(gfs,k+1); bk1 := DenominatorOfGFSElement(gfs,k+1); akp := NumeratorOfGFSElement(gfs,kp); bkp := DenominatorOfGFSElement(gfs,kp); akp1 := NumeratorOfGFSElement(gfs,kp+1); bkp1 := DenominatorOfGFSElement(gfs,kp+1); return [ [ akp1*bk1 + akp*bk, -akp*ak - akp1*ak1 ], [ bkp*bk + bkp1*bk1, -ak1*bkp1 - ak*bkp ] ]; end); ############################################################################# ## #E ## congruence-1.2.7/lib/cong.gd000644 000766 000024 00000022357 14663721427 016175 0ustar00mhornstaff000000 000000 ############################################################################# ## #W cong.gd The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov ## ## ############################################################################# ############################################################################# ## ## InfoCongruence ## ## We declare new Info class for algorithms from the Congruence package. It ## has 3 levels - 0, 1 and 2. Default level is 1, and it is used to display ## messages when the package is used to replace existing GAP methods. ## To change Info level to k, use command SetInfoLevel(InfoCongruence, k) DeclareInfoClass("InfoCongruence"); ############################################################################# ## ## IsCongruenceSubgroup( ) ## ## We create category of congruence subgroups as a subcategory of matrix ## groups, and declare properties that are used to distinguish several ## important classes of congruence subgroups DeclareCategory( "IsCongruenceSubgroup", IsMatrixGroup ); ############################################################################# ## ## IsPrincipalCongruenceSubgroup( ) ## ## The principal congruence subgroup of level N consists of all matrices ## of the form [ 1+N N ] ## [ N 1+N ] ## DeclareProperty( "IsPrincipalCongruenceSubgroup", IsCongruenceSubgroup ); InstallTrueMethod(IsCongruenceSubgroup, IsPrincipalCongruenceSubgroup); ############################################################################# ## ## IsCongruenceSubgroupGamma0( ) ## ## The congruence subgroup CongruenceSubgroupGamma0(N) consists of all matrices ## of the form [ * * ] ## [ N * ] ## DeclareProperty( "IsCongruenceSubgroupGamma0", IsCongruenceSubgroup ); InstallTrueMethod(IsCongruenceSubgroup, IsCongruenceSubgroupGamma0); ############################################################################# ## ## IsCongruenceSubgroupGammaUpper0( ) ## ## The congruence subgroup CongruenceSubgroupGammaUpper0(N) consists of all matrices ## of the form [ * N ] ## [ * * ] ## DeclareProperty( "IsCongruenceSubgroupGammaUpper0", IsCongruenceSubgroup ); InstallTrueMethod(IsCongruenceSubgroup, IsCongruenceSubgroupGammaUpper0); ############################################################################# ## ## IsCongruenceSubgroupGamma1( ) ## ## The congruence subgroup CongruenceSubgroupGamma1(N) consists of all matrices ## of the form [ 1+N * ] ## [ N 1+N ] ## DeclareProperty( "IsCongruenceSubgroupGamma1", IsCongruenceSubgroup ); InstallTrueMethod(IsCongruenceSubgroup, IsCongruenceSubgroupGamma1); ############################################################################# ## ## IsCongruenceSubgroupGammaUpper1( ) ## ## The congruence subgroup CongruenceSubgroupGammaUpper1(N) consists of all matrices ## of the form [ 1+N N ] ## [ * 1+N ] ## DeclareProperty( "IsCongruenceSubgroupGammaUpper1", IsCongruenceSubgroup ); InstallTrueMethod(IsCongruenceSubgroup, IsCongruenceSubgroupGammaUpper1); ############################################################################# ## ## IsCongruenceSubgroupGammaMN( ) ## ## The congruence subgroup CongruenceSubgroupGammaMN(M,N) consists of all matrices ## of the form [ 1+M M ] ## [ N 1+N ] ## DeclareProperty( "IsCongruenceSubgroupGammaMN", IsCongruenceSubgroup ); InstallTrueMethod(IsCongruenceSubgroup, IsCongruenceSubgroupGammaMN); ############################################################################# ## ## IsIntersectionOfCongruenceSubgroups( ) ## ## This property will be uses for subgroups of SL_2(Z) that were constructed ## as intersection of a finite number of congruence subgroups of types ## CongruenceSubgroupGamma, CongruenceSubgroupGamma_0, ## CongruenceSubgroupGamma^0, CongruenceSubgroupGamma_1, ## CongruenceSubgroupGamma^1 and CongruenceSubgroupGammaMN ## DeclareProperty( "IsIntersectionOfCongruenceSubgroups", IsCongruenceSubgroup ); InstallTrueMethod(IsCongruenceSubgroup, IsIntersectionOfCongruenceSubgroups); ############################################################################# ## ## PrincipalCongruenceSubgroup( n ) ## CongruenceSubgroupGamma0( n ) ## CongruenceSubgroupGammaUpper0( n ) ## CongruenceSubgroupGamma1( n ) ## CongruenceSubgroupGammaUpper1( n ) ## CongruenceSubgroupGammaMN( m, n ) ## ## Declaration of global functions - constructors of congruence subgroups ## DeclareOperation("PrincipalCongruenceSubgroup", [IsPosInt]); DeclareOperation("CongruenceSubgroupGamma0", [IsPosInt]); DeclareOperation("CongruenceSubgroupGammaUpper0", [IsPosInt]); DeclareOperation("CongruenceSubgroupGamma1", [IsPosInt]); DeclareOperation("CongruenceSubgroupGammaUpper1", [IsPosInt]); DeclareOperation("CongruenceSubgroupGammaMN", [IsPosInt,IsPosInt]); ############################################################################# ## ## LevelOfCongruenceSubgroup( ) ## ## The (arithmetic) level of a congruence subgroup G is the smallest positive ## number N such that G contains the principal congruence subgroup of level N ## DeclareAttribute( "LevelOfCongruenceSubgroup", IsCongruenceSubgroup ); ############################################################################# ## ## LevelOfCongruenceSubgroupGammaMN( ) ## ## For the congruence subgroup GammaMN we need to store additionally ## two integers determining the 1st and 2nd lines of the matrix ## DeclareAttribute( "LevelOfCongruenceSubgroupGammaMN", IsCongruenceSubgroup ); ############################################################################# ## ## IndexInSL2Z( ) ## ## The index of a congruence subgroup in SL_2(Z) will be stored as its ## attribute. This also will allow us to install a method for Index(G,H) when ## G is SL_2(Z) and H is a congruence subgroup. You should remember that we ## are working with the SL_2(Z), because it is available in GAP, and not with ## the PSL_2(Z) since the latter is not implemented in GAP. ## DeclareAttribute( "IndexInSL2Z", IsCongruenceSubgroup ); ############################################################################# ## ## IntersectionOfCongruenceSubgroups( ) ## ## We declare special type of congruence subgroups that are intersections of ## a finite number congruence subgroups of types CongruenceSubgroupGamma, ## CongruenceSubgroupGamma_0, CongruenceSubgroupGamma^0, CongruenceSubgroupGamma_1 ## and CongruenceSubgroupGamma^1. The list of subgroups defining this ## intersection will be stored in the attribute "DefiningCongruenceSubgroups". ## DeclareGlobalFunction("IntersectionOfCongruenceSubgroups"); DeclareAttribute( "DefiningCongruenceSubgroups", IsCongruenceSubgroup ); ############################################################################# # # CanEasilyCompareCongruenceSubgroups( G, H ) # DeclareOperation( "CanEasilyCompareCongruenceSubgroups", [ IsCongruenceSubgroup, IsCongruenceSubgroup ] ); ############################################################################# # # CanReduceIntersectionOfCongruenceSubgroups( G, H ) # # This function mimics the structure of the method for Intersection for # congruence subgroups. It returns true, if their intersection can be reduced # to one of the canonical congruence subgroups, and false otherwise, i.e. the # intersection can be expressed only as IntersectionOfCongruenceSubgroups. # This is used in IntersectionOfCongruenceSubgroups to reduce the list of # canonical subgroups forming the intersection. # DeclareOperation( "CanReduceIntersectionOfCongruenceSubgroups", [ IsCongruenceSubgroup, IsCongruenceSubgroup ] ); ############################################################################# # # NumeratorOfGFSElement( gfs, i ) # # Returns the numerator of the i-th term of the generalised Farey sequence # gfs: for the 1st infinite entry returns -1, for the last one returns 1, # for all other entries returns usual numerator. # DeclareGlobalFunction( "NumeratorOfGFSElement" ); ############################################################################# # # DenominatorOfGFSElement( gfs, i ) # # Returns the denominator of the i-th term of the generalised Farey sequence # gfs: for both infinite entries returns 0, for the other ones returns usual # denominator. # DeclareGlobalFunction( "DenominatorOfGFSElement" ); ############################################################################# # # IsValidFareySymbol( fs ) # # This function is used in FareySymbolByData to validate its output # DeclareGlobalFunction( "IsValidFareySymbol" ); ############################################################################# # # MatrixByEvenInterval( gfs, i ) # DeclareGlobalFunction( "MatrixByEvenInterval" ); ############################################################################# # # MatrixByOddInterval( gfs, i ) # DeclareGlobalFunction( "MatrixByOddInterval" ); ############################################################################# # # MatrixByFreePairOfIntervals( gfs, k, kp ) # DeclareGlobalFunction( "MatrixByFreePairOfIntervals" ); ############################################################################# ## #E ## congruence-1.2.7/lib/farey.gi000644 000766 000024 00000026771 14663721427 016366 0ustar00mhornstaff000000 000000 ############################################################################# ## #W farey.gi The Congruence package Ann Dooms #W Eric Jespers #W Olexandr Konovalov ## ## ############################################################################# ############################################################################# ## ## IsFareySymbolDefaultRep ## DeclareRepresentation( "IsFareySymbolDefaultRep", IsPositionalObjectRep, [ 1, 2 ] ); ############################################################################# ## ## FareySymbolByData( , ) ## ## This constructor creates Farey symbol with the given generalized Farey ## sequence and list of labels. It also checks conditions from the definition ## of Farey symbol and returns an error if they are not satisfied ## InstallMethod( FareySymbolByData, "for two lists that are g.F.S. and labels for Farey symbol", [ IsList, IsList ], 0, function( gfs, labels) local fs; fs :=Objectify( NewType( NewFamily("FareySymbolsFamily", IsFareySymbol), IsFareySymbol), [ gfs, labels ] ); if IsValidFareySymbol(fs) then return fs; else Error(" is not a valid Farey symbol !!! \n"); fi; end); ############################################################################# ## ## GeneralizedFareySequence( ) ## LabelsOfFareySymbol( ) ## ## The data used to create the Farey symbol are stored as its attributes ## InstallMethod( GeneralizedFareySequence, "for Farey symbol in default representation", [ IsFareySymbol ], fs -> fs![1]); InstallMethod( LabelsOfFareySymbol, "for Farey symbol in default representation", [ IsFareySymbol ], fs -> fs![2] ); ############################################################################# ## ## ViewObj( fs ) ## PrintObj( fs ) ## InstallMethod( ViewObj, "for Farey symbol", [ IsFareySymbol ], 0, function(fs) Print( GeneralizedFareySequence(fs), "\n", LabelsOfFareySymbol(fs) ); end); InstallMethod( PrintObj, "for Farey symbol", [ IsFareySymbol ], 0, function(fs) Print( "FareySymbolByData( ", GeneralizedFareySequence(fs), ", ", LabelsOfFareySymbol(fs), " ) " ); end); ############################################################################# ## ## FareySymbol( ) ## ## For a subgroup of a finite index G, this attribute stores the ## corresponding Farey symbol. The algorithm for its computation must work ## with any matrix group for which the membership test is available ## InstallMethod( FareySymbol, "for a congruence subgroup", [ IsCongruenceSubgroup ], 0, function( G ) local gfs, # generalized Farey sequence (g.F.S.) labels, # labels of this g.F.S. fs, # resulting Farey symbol i, j, k, t, # counters stepnr, # number of the inductive ste newvertex, # new vertex to be inserted on the current inductive step unpairednr, # number of the 1st vertex of the unpaired side lastlabel, # last used label mat, # matrix by free pair of intervals unpairednumbers, # list of positions with assigned labels denominators, # denominators of current g.F.S. elements possibledenominators, # list of denominators arising from these positions minden, # minimum of possible denominators pos, # chosen position of minden in possibledenominators nrlabels, # number of labels assigned range1, # range for the search of odd and even labels range2, # range for the search of free (i.e.numerical) labels isfirstlabelssearch; # flag for determining of the range1 and range2 # # Initial data setup # if LevelOfCongruenceSubgroup(G)=1 then return FareySymbolByData( [ infinity, 0, infinity ], ["even","odd"]) ; fi; gfs := [ infinity, 0, infinity ]; labels:=[]; nrlabels:=0; stepnr:=0; lastlabel:=0; isfirstlabelssearch:=true; # # we perform the next loop until we will have fully labeled gfs # while nrlabels < Length( gfs ) - 1 do stepnr:=stepnr+1; Info( InfoCongruence, 2, "Step ", stepnr, " : g.F.S. of length ", Length(gfs), " with ", nrlabels, " labels"); Info( InfoCongruence, 3, " gfs = ", gfs ); Info( InfoCongruence, 3, "labels = ", labels ); # # 1. Choose any of the unpaired sides and insert new vertex # # 1.1. Find unpaired side that will give us a new vertex # with the minimal denominator (on the first step we # do some trick to get [infinity,0,1,infinity]) unpairednumbers := Filtered( [ 1 .. Length(gfs)-1 ], i -> not IsBound( labels[ i ] ) ); Info( InfoCongruence, 3, "Positions of unpaired labels : ", unpairednumbers ); # to avoid repeated calls of DenominatorOfGFSElement, we are caching # values of denominators from required positions denominators := []; for i in unpairednumbers do if not IsBound(denominators[i]) then denominators[i]:=DenominatorOfGFSElement(gfs,i); fi; denominators[i+1]:=DenominatorOfGFSElement(gfs,i+1); od; possibledenominators := List( unpairednumbers, i -> denominators[i] + denominators[i+1] ); Info( InfoCongruence, 3, "Possible denominators : ", possibledenominators ); minden := Minimum(possibledenominators); # we give priority to positive numbers in g.F.S. pos:=PositionProperty( [ 1 .. Length(unpairednumbers) ], i -> ( possibledenominators[i] = minden ) and ( NumeratorOfGFSElement( gfs, unpairednumbers[i] ) >=0 ) ); if pos=fail then pos:=PositionProperty( [ 1 .. Length(unpairednumbers) ], i -> possibledenominators[i] = minden ); fi; unpairednr := unpairednumbers[ pos ]; #i:=1; #repeat # pos := PositionNthOccurrence( possibledenominators, minden, i ); # i := i+1; # unpairednr := unpairednumbers[ pos ]; #until NumeratorOfGFSElement(gfs, unpairednr) >= 0; # # 1.2. Compute new vertex by the Farey sequence rule # newvertex := ( NumeratorOfGFSElement(gfs, unpairednr) + NumeratorOfGFSElement(gfs, unpairednr+1) ) / minden; # # 1.3. Insert this new vertex and an empty spot for the label # Info( InfoCongruence, 2, "Inserting ", newvertex, " at position ", unpairednr+1); Add( gfs, newvertex, unpairednr+1); Add( unpairednumbers, unpairednr, pos ); for i in [ pos+1 .. Length(unpairednumbers) ] do unpairednumbers[i] := unpairednumbers[i]+1; od; Add( labels, "hole" , unpairednr ); Unbind(labels[unpairednr]); # # 2. For each of new sides, we check if they are paired and # assign labels, if this is the case # if isfirstlabelssearch then range1 := [ 1 .. Length(gfs)-1 ]; range2 := [ 1 .. Length(gfs)-1 ]; else # if we already checked all cases for all possible labels, # on each new step it is enough to check only new intervals range1 := [ unpairednr, unpairednr+1 ]; # Slower but more obvious options for range2 could be: # range2 := [ 1 .. Length(gfs)-1 ]; # range2:= Filtered( [ 1 .. Length(gfs)-1 ], i -> not IsBound( labels[ i ] ) ); # but we use the fastest one range2 := unpairednumbers; fi; if not ( IsPrincipalCongruenceSubgroup(G) and LevelOfCongruenceSubgroup(G) > 2 ) then for i in range1 do # we do not check that labels[i] is not bound because this is # guaranteed by the algorithm mat := MatrixByOddInterval( gfs, i ); if mat in G or -mat in G then labels[i]:="odd"; nrlabels:=nrlabels+1; Info( InfoCongruence, 2, "Putting label ", lastlabel, " at position ", i ); else mat := MatrixByEvenInterval( gfs, i ); if mat in G or -mat in G then labels[i]:="even"; nrlabels:=nrlabels+1; Info( InfoCongruence, 2, "Putting label ", lastlabel, " at position ", i ); fi; fi; od; fi; for i in range1 do for j in range2 do # we eliminate the case i=j since we always check different intervals # now we check that both labels[i] and labels[j] are not bound for a case # if they were already assigned during the search for odd/even labels if i<>j and not IsBound( labels[i] ) and not IsBound( labels[j] ) then mat := MatrixByFreePairOfIntervals( gfs, i, j ); if mat in G or -mat in G then lastlabel := lastlabel+1; labels[i]:=lastlabel; labels[j]:=lastlabel; nrlabels:=nrlabels+2; Info( InfoCongruence, 2, "Putting label ", lastlabel, " at positions ", i, " and ", j ); # since i-th interval can be paired only with one j-th interval, # we quit from inner loop and go to the next i break; fi; fi; od; od; isfirstlabelssearch:=false; if stepnr mod 25000 = 0 then Error("You reached the checkpoint on the ", stepnr, "th iteration \n", "Currently you have g.F.S. of length ", Length(gfs), " with ", nrlabels, " labels assigned \n", "Use the index of the subgroup to get an idea about possible length of the g.F.S.:\n", "it will be equal to the index of in PSL_2Z minus the number of odd intervals in g.F.S.\n"); fi; od; fs := FareySymbolByData( gfs, labels) ; return fs; end); ############################################################################# # # GeneratorsByFareySymbol( fs ) # InstallGlobalFunction( GeneratorsByFareySymbol, function( fs ) local gfs, labels, usedlabels, gens, i, j, m; gfs := GeneralizedFareySequence(fs); labels := LabelsOfFareySymbol(fs); usedlabels:=[]; gens:=[]; for i in [ 1 .. Length(labels) ] do if labels[i]="even" then Info( InfoCongruence, 2, "labels[", i, "] = ", labels[i] ); m := MatrixByEvenInterval( gfs, i ); Add( gens, m ); if InfoLevel( InfoCongruence ) = 2 then Display(m); fi; elif labels[i]="odd" then Info( InfoCongruence, 2, "labels[", i, "] = ", labels[i] ); m := MatrixByOddInterval( gfs, i ); Add( gens, m ); if InfoLevel( InfoCongruence ) = 2 then Display(m); fi; elif not labels[i] in usedlabels then j := PositionNthOccurrence( labels, labels[i], 2 ); Info( InfoCongruence, 2, "labels[", i, "] = ", labels[i], " = labels[", j, "]" ); m := MatrixByFreePairOfIntervals( gfs, i, j ); Add( gens, m ); Add( usedlabels, labels[i] ); if InfoLevel( InfoCongruence ) = 2 then Display(m); fi; fi; od; return gens; end); ############################################################################# # # IndexInPSL2ZByFareySymbol( fs ) # # By the proposition 7.2 [Kulkarni], for the Farey symbol with underlying # generalized Farey sequence { infinity, x0, x1, ..., xn, infinity }, the # index in PSL_2(Z) is given by the formula d = 3*n + e3, where e3 is the # number of odd intervals. # InstallGlobalFunction( IndexInPSL2ZByFareySymbol, function( fs ) local n, e3, x, d; n := Length( GeneralizedFareySequence(fs) ) - 3; e3:= Number( LabelsOfFareySymbol(fs), x -> x = "odd" ); d := 3 * n + e3; return d; end); ############################################################################# ## #E ## congruence-1.2.7/lib/units.g000644 000766 000024 00000012626 14663721427 016243 0ustar00mhornstaff000000 000000 ############################################################################# # # units.g The Congruence package Ann Dooms # Eric Jespers # Olexandr Konovalov # ############################################################################# ############################################################################# # # NormalSubgroupsForM2Q(G,H) # # Returns a list of normal subgroups N of G such that quotient G/N is H. # NormalSubgroupsForM2Q := function( G, H ) local ord,m, N; ord:= Size(G)/Size(H); # Can we speedup this computing only normal subgroups of given size? m:=Filtered( NormalSubgroups(G) , N -> Size(N)=ord); m:=Filtered( m, N -> IdGroup( G/N ) = IdGroup( H ) ); return m; end; ############################################################################# # # GeneratorsInM2Q(G,H) # # Returns a list of lists of generators of a subgroup of f.i. in M_2(Q), # one for each homomorphic image. # H has to be S3 or D8! # GeneratorsInM2Q:=function(G,H) local k,m; if IdGroup(H)=[6,1] then k:=3; # H = S_3 else k:=4; # H = D_8 fi; m:=NormalSubgroupsForM2Q(G,H); if Length(m) > 0 then return GeneratorsOfGroup( PrincipalCongruenceSubgroup(k*Size(G)/Size(H) ) ); else return [ ]; fi; end; ############################################################################# # # MatrixEntries( matrix, k ) # # Returns a list with integer entries. Will be applied with k=4n or 3n. # PROBLEM: some matrices gave non-integers! SOLUTION: multiplied with -I_2! # MatrixEntries := function( matrix, k ) local g11,g12,g21,g22; g11:=(matrix[1][1]-1)/k; if not IsInt(g11) then matrix:=-matrix; g11:=(matrix[1][1]-1)/k; fi; g12:=matrix[1][2]/k; g21:=matrix[2][1]/k; g22:=(matrix[2][2]-1)/k; return [ g11, g12, g21, g22 ]; end; ############################################################################# # # D8Alpha(matrix,n) # # Returns a list with integer entries. # Will be applied with n = order of the normal subgroup N determining M_2(Q). # D8Alpha := function(matrix,n) local m,a0,a1,a2,a3; m := MatrixEntries(matrix,4*n); a0 := m[1] + m[4]; a1 := m[1] - m[2] + 2*m[3] - m[4]; a2 := m[1] + 2*m[3] - m[4]; a3 :=-m[1] + m[2] + m[4]; return [ a0, a1, a2, a3 ]; end; ############################################################################# # # S3Alpha(matrix,n) # # Returns a list with integer entries. # Will be applied with n = order of the normal subgroup N determining M_2(Q). # S3Alpha:= function(matrix,n) local m,a0,a1,a2,a3; m := MatrixEntries(matrix,3*n); a0 := m[1] + m[4]; a1 := 2*m[1] + 3*m[2] - m[3] - m[4]; a2 := -2*m[1] - 3*m[2] + m[3] + 2*m[4]; a3 := -m[1] - 3*m[2] + m[4]; return [ a0, a1, a2, a3 ]; end; ############################################################################# # # Alphas( G, H ) # # Returns a list of lists with integer entries which will serve for the units in U(ZG). # Alphas := function( G, H ) local gen,f,alpha,i; gen := GeneratorsInM2Q( G, H ); if IdGroup(H)=[6,1] then f:=S3Alpha; else f:=D8Alpha; fi; alpha:=[]; if Length(gen) > 0 then for i in [1..Length(gen)] do alpha[i] := f( gen[i], Size(G)/Size(H) ); od; fi; return alpha; end; ############################################################################# # # LiftGenerator(G,N) # # Lifts a minimal list of generators form G/N to G. # LiftGenerator := function( G, N ) local l,q,s,hom,i; l:=[]; hom:=NaturalHomomorphismByNormalSubgroup(G,N); q := Image( hom ); s := MinimalGeneratingSet( q ); for i in [ 1 .. Length(s) ] do Add( l, PreImagesRepresentative( hom,s[i]) ); od; return l; end; ############################################################################# # # CreateUnits(G,H) # # Creates units of ZG. H must be D8 or S3. # CreateUnits:=function(G,H) local m,alpha,a,b,x,y,ZG,emb,hat,u,i,j; m:=NormalSubgroupsForM2Q(G,H); alpha:=Alphas(G,H); a:=[]; b:=[]; ZG:=GroupRing(Integers,G); emb := Embedding(G,ZG); hat:=[]; u:=[]; if Length(m)<>0 then for i in [1..Length(m)] do hat[i]:=Sum( List(m[i], x->x^emb)); u[i]:=[]; x := LiftGenerator(G,m[i])[1]; y := LiftGenerator(G,m[i])[2]; if x^2=Identity(G) then a[i]:=y^emb; b[i]:=x^emb; else a[i]:=x^emb; b[i]:=y^emb; fi; if IdGroup(H)=[6,1] then for j in [1..Length(alpha)] do u[i][j]:=Identity(ZG) + (alpha[j][1]*Identity(ZG) + alpha[j][2]*a[i] + alpha[j][3]*b[i] + alpha[j][4]*a[i]^2*b[i])*(Identity(ZG)-a[i])*hat[i]; od; else for j in [1..Length(alpha)] do u[i][j]:=Identity(ZG) + (alpha[j][1]*Identity(ZG) + alpha[j][2]*a[i] + alpha[j][3]*b[i] + alpha[j][4]*a[i]*b[i])*(Identity(ZG)-a[i]^2)*hat[i]; od; fi; od; else fi; return u; end; ############################################################################# # # UnitsOfZGOfFiniteIndexInM2Q(G) # UnitsOfZGOfFiniteIndexInM2Q:= function(G) local u,v; u:=[]; v:=[]; if IsNilpotent(G)=true then u:=CreateUnits(G,DihedralGroup(8)); else u:=CreateUnits(G,DihedralGroup(8)); v:=CreateUnits(G,DihedralGroup(6)); fi; return [u,v]; end;