pax_global_header00006660000000000000000000000064133276244260014523gustar00rootroot0000000000000052 comment=c96ac364dd32b305f7294d550abb1dd5f1bdca19 oaklisp-1.3.7/000077500000000000000000000000001332762442600131755ustar00rootroot00000000000000oaklisp-1.3.7/.gitignore000066400000000000000000000004061332762442600151650ustar00rootroot00000000000000.deps/ .dirstamp /INSTALL /aclocal.m4 /autom4te.cache/ /compile /config.guess /config.h /config.h.in /config.log /config.status /config.sub /configure /depcomp /install-sh /man/man1/oaklisp.1 /missing /src/world/system-version.oak /stamp-h1 Makefile Makefile.in oaklisp-1.3.7/AUTHORS000066400000000000000000000034471332762442600142550ustar00rootroot00000000000000 This is a credits-file of people that have contributed to the Oaklisp project. It is formatted to allow easy grepping and beautification by scripts. The fields are: name (N), email (E), web-address (W), PGP key ID and fingerprint (P), description (D), and snail-mail address (S). ---------- N: Kevin J. Lang E: langk@yahoo-inc.com D: much of language design. much of system design. D: much of lang & lim manuals. D: bytecode compiler. list manipulation. much of emulator. world i/o. D: much of runtime system. bignum division. much of bignums. S: Yahoo! Research N: Barak A. Pearlmutter E: barak+oaklisp@pearlmutter.net W: http://barak.pearlmutter.net/ P: pub rsa4096/125B57475E190D18 2010-10-13 [SC] P: Key fingerprint = 64F4 29E3 6EA1 1CC2 D966 546F 125B 5747 5E19 0D18 D: much of language design. much of system design. D: much of lang & lim manuals. D: most of bytecode emulator. call/cc. weak pointers. gc. strings. D: much of runtime system. I/O. much of bignums. rationals. vectors. D: interpreter. hash tables. symbols. locales. macros. delays. S: Dept. of Computer Science S: Maynooth University S: Co. Kildare S: Ireland N: Alexander Stuebinger E: stuebi@acm.org W: http://www.uni-mainz.de/~stuebi D: emulator mods 93 -> 99: optimizations, ANSI-ification, etc. S: Burgunderstrasse 3 S: 76829 Landau S: Germany N: Joerg-Cyril Hoehle E: hoehle@tzd.telekom.de D: helped alex spec out his emulator mods D: perceptive bug-sniffer and system tester: found make-lambda %full-gc bug D: ported SLIB and GAMBIT-benchmarks to Oaklisp D: scheme-locale mods N: Blake McBride E: blake@mcbride.name W: http://blake.mcbride.name D: Wrote the OaklispSummary document. D: Build system updates and documentation. D: Misc bug reports and bug fixes D: Various tweaks and enhancements. D: Motivation. oaklisp-1.3.7/BUILD.md000066400000000000000000000161511332762442600143620ustar00rootroot00000000000000Build instructions for Oaklisp ============================== The build system uses autotools (autoconf/automake) so a simple build would be: autoreconf --install (to install the autotools support files) ./configure (to configure the system) make (to compile everything) make install (to install everything) For further details read INSTALL generated by running autoreconf. Bootstrapping ============= The only unusual aspect here is that Oaklisp is written in Oaklisp, i.e., is self-hosting. This causes a bootstrap issue. There are only two files required to actually run Oaklisp: file | purpose --------------|---------------------------------------------- oaklisp | the executable / emulator / virtual machine oakworld.bin | pre-built oaklisp (read in by the executable) The file oakworld.bin contains the pre-built, pre-compiled Oaklisp system: the parts that are written in Oaklisp itself. This means you need an existing oakworld.bin in order to run "oaklisp" in order to build a new oakworld.bin. Oaklisp *cannot* run without an existing oakworld.bin file. You can however build the executable "oaklisp" (which is written in C) without a working Oaklisp. So all you really need is oakworld.bin. The executable "oaklisp" will look for oakworld.bin at a compile-time-specified location, but can be instructed to look elsewhere. The ./configure script will look for oakworld.bin in a few places, and use it in the build. If it cannot find oakworld.bin automatically, you can give an explicit location ./configure --with-world=/complete/path/to/oakworld.bin See ./configure --help for details of these options. Alternative Bootstrapping Interfaces ==================================== There are other ways to pass this information to the compiled emulator at build time, e.g., make OAKWORLD=$(pwd)/prebuilt/src/world/oakworld.bin or make OAKWORLD=/usr/local/lib/oaklisp/oakworld.bin If you already have Oaklisp installed, you can just use that: make OAK=/usr/local/bin/oaklisp CPU Architecture Issues ======================= Endianity ========= Oaklisp is sensitive to the endianness of the CPU . There are oakworld.bin files included in the git branch containing prebuilt files, or available for download as a separate files, for both little-endian and big-endian architectures. The subdirectory is el32/ for little-endian and eb32/ for big-endian. However Oaklisp can easily be made to cross build an oakworld.bin for a big-endian or little-endian architecture, given an opposite-endian prebuilt world as well as access to systems of both endianities: On machine with endianity of prebuilt world: $ autoreconf --install $ ./configure $ make -C src Copy tree to other-endian machine, and there: $ ./configure $ make -C src/emulator clean $ make -C src/emulator $ rm src/world/*.bin $ touch src/world/system-version.oa $ touch src/world/new.cold $ make -C src/world You should now be the proud possessor of an opposite-endian src/emulator/oaklisp and src/world/oakworld.bin. 32-Bit Pointers =============== The executable "oaklisp" currently only works in 32-bit mode. It can be built as a 32-bit executable on a 64-bit machines, assuming that a 32-bit-pointer executable model is available and that an appropriate toolchain exists to target that model: compiler and development libraries. A 32-bit memory model is available for on most amd64-based systems, sometimes as an optional package. E.g., on Debian or Debian-derived distributions like Ubuntu, the correct package is gcc-multilib. Compiling using GCC or clang on an x86_64 aka amd64 architecture machine, one should use the -m32 which builds an i386 architecture executable. A similar situation holds with many 64-bit architectures. The appropriate GCC options will be added automatically by ./configure when necessary on many 64-bit architectures, thanks to an exhaustive list of appropriate options for all applicable Debian architectures provided by James Cowgill in discussion of his bug report https://bugs.debian.org/780353/. These options also seem to work, in many cases, with the clang compiler. New architectures can be added to configure.ac as clauses in the AS_CASE([${host_cpu}],...) statement. On x86_64 the -mx32 flag, which uses the x86_64 instruction set with 32-bit pointers, also works provided that x32 kernel support is enabled and the x32 development files are available. Initial benchmarks showed that an src/emulator/oaklisp built with -m32 was slightly faster than one built with -mx32. To Do ===== 64-Bit Port =========== It would be great if someone were to do a 64-bit port. In order to port the system to 64-bit pointers and therefore 64-bit cells, a number of 32-bit-cell assumptions need to be dealt with. - The bytecode engine has 16-bit instructions, packed two/cell. This becomes four/cell when cells go 64-bit. This requires changes to the bytecode interpreter in src/emulator/ as well as to the assembler which may need to insert extra padding before inline literal references. The compiler proper might not need to be touched at all. - Characters in strings would become packed seven/cell instead of three/cell, but that's pretty minor, and they could certainly be left three/cell until the system is otherwise converted. This impacts src/emulator/ where Oaklisp strings are converted to C strings for, e.g., passing to fopen(), and the string packing/unpacking code in src/world/. - The cold world builder (generates new.cold) might need attention. - Bignums are stored in base 10,000, the largest power of ten less than (sqrt (expt 2 (- 32 3))), where the 3 bits subtracted there are for the tag (2 bits) and the sign (1 bit). These would become base 1,000,000,000, the largest power of ten less than (sqrt (expt 2 (- 64 3))). Also the arithmetic overflow code in src/emulator/ would need to be looked at. But, bignums could wait until the system is otherwise up and running. This would all be facilitated by the fact that a working 32-bit oaklisp could be used during the bootstrap, and due to bignums its word size should not affect its ability to generate 64-bit bootstrap files. Binary World Format =================== Currently the system is started by executing the emulator, which loads a binary world. Different varieties of the system can be obtained by booting different worlds, and by passing various options like the desired locale. Another option would be to make a new world format which can be directly executed. This could be accomplished in one of three ways. (1) The binary world could have a magic number recognized by the OS kernel, allowing it to be executed in a special idiosyncratic fashion. (2) The binary world could start with #! /usr/bin/env oaklisp or #! /usr/bin/oaklisp and the emulator would recognize this situation and load the apppropriate world. (3) The world could be an ELF executable which could be executed in native mode, and the binary data for the world itself could live in its own ELF segment or even be bound to a symbol in the ELF file. oaklisp-1.3.7/COPYING000066400000000000000000000431271332762442600142370ustar00rootroot00000000000000 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) 19yy 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) 19yy 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. oaklisp-1.3.7/ChangeLog000066400000000000000000000012631332762442600147510ustar00rootroot000000000000002015-03-13 Barak A. Pearlmutter * oaklisp.1 fill in paths at make time * configure.ac properly seek 32-bit memory model options on 64-bit hosts * documentation add more build documentation * world include prebuilt for big-endian, tweak location and search code * autotools minor tweaks to build and use standard constructs throughout * system-version.oak to pass version from configure.ac 2015-03-03 Barak A. Pearlmutter * autotools build system * rubber to build LaTeX documentation * prebuilt world on separate git branch * ChangeLog file created for automake happiness * AUTHORS file renamed from src/CREDITS for automake happiness oaklisp-1.3.7/Makefile.am000066400000000000000000000014441332762442600152340ustar00rootroot00000000000000# This file is part of Oaklisp. # # 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. # # The GNU GPL is available at http://www.gnu.org/licenses/gpl.html # or from the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA SUBDIRS = src man if DOCS SUBDIRS += doc endif doc_DATA = README.md AUTHORS COPYING BUILD.md ChangeLog NEWS oaklisp-1.3.7/NEWS000066400000000000000000000000441332762442600136720ustar00rootroot00000000000000Build system switched to autotools. oaklisp-1.3.7/README.md000066400000000000000000000033771332762442600144660ustar00rootroot00000000000000Oaklisp ======= Oaklisp is an object-oriented dialect of lisp sharing the standard lisp syntax, including common lisp style macros, first class types, multiple inheritance, and multiple namespaces (packages). Oaklisp is also a Lisp-1 dialect meaning functions and variables share the same namespace (like Scheme). This is a portable implementation of a lisp interpreter / compiler for the Oaklisp dialect of lisp. Project homepage(s) * https://alioth.debian.org/projects/oaklisp/ (main homepage) * https://github.com/barak/oaklisp (collaborative development) * http://www.bcl.hamilton.ie/~barak/oaklisp/ (ancient history) The compiler compiles Oaklisp source code into byte-code for the included Oaklisp emulator / virtual machine. The implementation is described in the included documentation, and also in * Kevin J. Lang and Barak A. Pearlmutter. Oaklisp: an object-oriented Scheme with first class types. In OOPSLA-86, pages 30–7. doi: 10.1145/960112.28701. Special issue of ACM SIGPLAN Notices 21(11). URL http://barak.pearlmutter.net/papers/oaklisp-oopsla-1986.pdf * Kevin J. Lang and Barak A. Pearlmutter. Oaklisp: an object-oriented dialect of Scheme. Lisp and Symbolic Computation, 1(1):39–51, May 1988. URL http://barak.pearlmutter.net/papers/lasc-oaklisp-1988.pdf * Barak A. Pearlmutter. Garbage collection with pointers to individual cells. Communications of the ACM, 39(12):202–6, December 1996. doi: 10.1145/272682.272712. URL http://barak.pearlmutter.net/papers/cacm-oaklisp-gc-1996.pdf * Barak A. Pearlmutter and Kevin J. Lang. The implementation of Oaklisp. In Peter Lee, editor, Topics in Advanced Language Implementation, pages 189–215. MIT Press, 1991. See BUILD.md for instructions on how to build the system. oaklisp-1.3.7/configure.ac000066400000000000000000000165741332762442600155000ustar00rootroot00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # This file is part of Oaklisp. # # 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. # # The GNU GPL is available at http://www.gnu.org/licenses/gpl.html # or from the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA # Prologue AC_PREREQ([2.69]) AC_INIT([Oaklisp],[1.3.7],[barak+oaklisp@pearlmutter.net],[oaklisp],[https://github.com/barak/oaklisp]) AC_CONFIG_SRCDIR([src/emulator/oaklisp.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([foreign subdir-objects -Wall]) # Process options AC_MSG_CHECKING([enable_64bit]) AC_ARG_ENABLE([64bit], [AS_HELP_STRING([--enable-64-bit],[use native 64-bit mode if available (default=no)])],, [enable_64bit=no]) AC_MSG_RESULT([$enable_64bit]) AC_MSG_CHECKING([enable_docs]) AC_ARG_ENABLE([docs], [AS_HELP_STRING([--enable-docs],[build and install LaTeX-format documentation (default=yes)])],, [enable_docs=yes]) AC_MSG_RESULT([$enable_docs]) AM_CONDITIONAL([DOCS], [test x${enable_docs} = xyes]) AC_MSG_CHECKING([enable_ndebug]) AC_ARG_ENABLE([ndebug], [AS_HELP_STRING([--enable-ndebug],[enable high speed disable debugging (default=yes)])],, [enable_ndebug=yes]) AC_MSG_RESULT([$enable_ndebug]) AM_CONDITIONAL([NDEBUG], [test x${enable_ndebug} = xyes]) AC_MSG_CHECKING([enable_threads]) AC_ARG_ENABLE([threads], [AS_HELP_STRING([--enable-threads],[enable thread support (default=no)])],, [enable_threads=no]) AC_MSG_RESULT([$enable_threads]) AM_CONDITIONAL([ENABLE_THREADS], [test x${enable_threads} = xyes]) AC_MSG_CHECKING([with_world]) AC_ARG_WITH([world], [AS_HELP_STRING([--with-world@<:@=WORLD@:>@],[for bootstrapping (default: searches)])],, [with_world=check]) AC_MSG_RESULT([$with_world]) AC_MSG_CHECKING([with_oaklisp]) AC_ARG_WITH([oaklisp], [AS_HELP_STRING([--with-oaklisp=OAKLISP],[for bootstrapping (default=no)])],, [with_oaklisp=no]) AC_MSG_RESULT([$with_oaklisp]) AS_IF([test x${with_oaklisp} = xcheck || test x${with_oaklisp} = xyes], [AC_PATH_PROG([with_oaklisp], [oaklisp], [AS_IF([test x${with_oaklisp} = xyes], [AC_MSG_ERROR([no oaklisp executable found])], [no])])]) AS_IF([test x${enable_64bit} = xyes], [AC_MSG_WARN([64-bit support is experimental!]) eight_if_allowed=8], [eight_if_allowed=6uuBsNCtBTXDAYKXc9i]) # Check if we are on a non-32bit-pointer memory model. # If so, try to enable compiler options for a 32-bit memory model. # For example, -m32 on x86_64 aka amd64. # (This is easier than doing a 64-bit port!) # # This should go before any checks that actually invoke the compiler, # so those tests will be in 32-bit mode. CFLAGS is passed to the # linker, so the flag does not need to be set there, but it is # included in a comment in case this ever changes. # # The options here are for GCC, but -m32 and -mx32 works on amd64 with # clang, and others might as well. AC_CHECK_SIZEOF([void *]) AS_CASE([${ac_cv_sizeof_void_p}], [4],[AC_MSG_NOTICE([pointer size matches expectations])], [${eight_if_allowed}],[AC_MSG_WARN([pointer size of 64-bit is experimental])], [AC_MSG_WARN([non 32-bit pointer platform detected]) AC_MSG_NOTICE([trying to enable 32-bit memory model compiler option for ${host_cpu}]) AC_CANONICAL_HOST AS_CASE([${host_cpu}], [alpha*], [AC_MSG_ERROR([32-bit memory model unavailable on ${host_cpu}])], [amd64* | x86_64], [flag32="-m32"], [arm64*], [flag32="-mabi=ilp32"], [ia64*], [flag32="-milp32"], [mips64*], [flag32="-mabi=32"], [powerpc64* | ppc64*], [flag32="-m32"], [s390x*], [flag32="-m31"], [sparc64*], [flag32="-m32"], [flag32="-m32" AC_MSG_WARN([non-32-bit host CPU ${host_cpu}]) AC_MSG_WARN([no 32-bit memory model option known, trying -m32])]) AC_MSG_NOTICE([compiler option for 32-bit memory model: ${flag32}]) CFLAGS="${CFLAGS} ${flag32}" : LDFLAGS="${LDFLAGS} ${flag32}" unset ac_cv_sizeof_void_p AC_CHECK_SIZEOF([void *]) AS_CASE([${ac_cv_sizeof_void_p}], [0],[AC_MSG_ERROR([bad flags, Indy])], [4],[AC_MSG_NOTICE([32-bit memory model achieved])], [AC_MSG_WARN([bad news, pointers are now ${ac_cv_sizeof_void_p} bytes])])]) # Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_SED AC_CHECK_PROGS([INDENT],[indent],[true]) AS_IF([test x${enable_docs} = xyes], [AC_CHECK_PROGS([LATEXMK],[latexmk],[false])]) # Checks for libraries. AS_IF([test x$threads = xyes], [AC_SEARCH_LIBS([pthread_create],[pthread])]) # Checks for header files. AC_CHECK_HEADERS([stddef.h stdlib.h string.h sys/time.h unistd.h],, [AC_MSG_ERROR([required header file unavailable])]) # Checks for typedefs, structures, and compiler characteristics. AX_CFLAGS_WARN_ALL AC_CHECK_HEADER_STDBOOL AC_C_INLINE AC_TYPE_INT8_T AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AX_C_LONG_LONG AC_TYPE_SIZE_T AC_C_BIGENDIAN AS_CASE([${ac_cv_c_bigendian}_${ac_cv_sizeof_void_p}], [yes_4],[worldsubdir=eb32], [no_4],[worldsubdir=el32], [yes_8],[worldsubdir=eb64], [no_8],[worldsubdir=el64], [AC_MSG_WARN([no worldsubdir for current endianity and pointer length])]) # Actual scan for binary world find comes here rather than in option # processing because we need to know endianity. # snippet of code for other ways to find default oakworld.bin # oaklisp --help | egrep -A1 '[-][-]world' | tail -n +2 AC_MSG_NOTICE([worldsubdir=${worldsubdir}]) AS_IF([test x${with_world} = xcheck || test x${with_world} = xyes], [AC_MSG_CHECKING([possible locations for oakworld.bin]) f=$(ls $(pwd)/src/world/oakworld.bin \ $(pwd)/prebuilt/src/world/${worldsubdir}/oakworld.bin \ $(pwd)/prebuilt/src/world/oakworld.bin \ ${HOME}/lib/oaklisp/oakworld.bin \ /usr/local/lib/oaklisp/oakworld.bin \ /usr/lib/oaklisp/oakworld.bin \ /usr/lib/*/oaklisp/oakworld.bin \ /lib/oaklisp/oakworld.bin \ /lib/*/oaklisp/oakworld.bin 2> /dev/null | head -1) AC_MSG_RESULT([found ${f}]) AC_CHECK_FILE([${f}], [with_world=${f}])]) AS_IF([test x${with_world} = xyes], [AC_MSG_ERROR([no oakworld.bin found])]) AS_IF([test x${with_world} != xno && test x${with_world} != xcheck], [AC_SUBST([OAKWORLDFLAGS],[--world=${with_world}])]) # Checks for library functions. AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([strerror],, [AC_MSG_ERROR([required library function unavailable])]) AC_CHECK_FUNCS([GetTickCount getrusage gettimeofday clock]) # Epilogue AC_CONFIG_FILES([Makefile doc/Makefile man/Makefile src/Makefile src/emulator/Makefile src/world/Makefile src/world/system-version.oak]) AC_OUTPUT oaklisp-1.3.7/debian/000077500000000000000000000000001332762442600144175ustar00rootroot00000000000000oaklisp-1.3.7/debian/.gitignore000066400000000000000000000002021332762442600164010ustar00rootroot00000000000000/*.debhelper /*.log /*.substvars /autoreconf.after /autoreconf.before /debhelper-build-stamp /files /oaklisp-doc/ /oaklisp/ /tmp/ oaklisp-1.3.7/debian/changelog000066400000000000000000000106351332762442600162760ustar00rootroot00000000000000oaklisp (1.3.7-1) unstable; urgency=medium * upstream release * bump policy version, no changes required * dh11 * support build option nodoc * install oaklisp-docs docs in /usr/share/doc/oaklisp * secure some debian/ URLs * swizzle packaging repo to salza * point at github repo for homepage -- Barak A. Pearlmutter Mon, 30 Jul 2018 17:02:44 +0200 oaklisp (1.3.6-2) unstable; urgency=medium * tweaks to not run LaTeX during build-arch, should help port to 68k -- Barak A. Pearlmutter Sun, 15 Mar 2015 11:12:19 +0000 oaklisp (1.3.6-1) unstable; urgency=medium * new upstream version * allow build on bigendian architectures -- Barak A. Pearlmutter Fri, 13 Mar 2015 19:40:05 +0000 oaklisp (1.3.5-2) unstable; urgency=medium * debian/control: squash continuation lines in architecture field -- Barak A. Pearlmutter Wed, 11 Mar 2015 06:36:14 +0000 oaklisp (1.3.5-1) unstable; urgency=medium * debian/copyright: update to modern format * debian/oaklisp-doc.doc-base.3: add summary document * debian/source/local-options: enable single-debian-patch source format * new upstream version * adapt to new autotool upstream build scripts - debian/rules: simplify in light up upstream build system tweaks - debian/control: relax architecture to anything little-endian -- Barak A. Pearlmutter Tue, 10 Mar 2015 21:55:46 +0000 oaklisp (1.3.4-1) unstable; urgency=low * debian/control: priority option per override (debian/control) * debian/control: bump debian policy * debian/rules: bump to dh 9 * debian/control: build dependency on gcc-multiarch for amd64 * debian/control: update vcs browser url (closes: #528298) * debian/control: longer descriptions * new upstream version * adapt to new autotool upstream build scripts - debian/rules: dh --with autoreconf - debian/control: build dependency on rubber for LaTeX - debian/control: remove build dependency on ghostscript - debian/control: build depend on autoconf-archive for AX_CFLAGS_WARN_ALL - debian/rules: use prebuilt world or installed oaklisp (closes: #534078) - debian/README-BUILDING.Debian: remove, see upstream BUILD.txt - general simplifications - let upstream do more of the installation -- Barak A. Pearlmutter Tue, 03 Mar 2015 13:01:02 +0000 oaklisp (1.3.3-5) unstable; urgency=low * build dependency on ghostscript for ps2pdf -- Barak A. Pearlmutter Thu, 06 Jan 2011 23:17:58 +0000 oaklisp (1.3.3-4) unstable; urgency=low * track change to Alioth's vcs-browser url * pass -m32 on amd64 * bump debian policy * dh 8 * latex changed, build depend on texlive-fonts-recommended (closes: #608376) * swizzle Vcs-* fields in debian/control from old CVS to new git repo * documentation in PDF instead of PostScript * update/simplify debian/rules -- Barak A. Pearlmutter Fri, 31 Dec 2010 00:07:14 -0500 oaklisp (1.3.3-3) unstable; urgency=low * include home page in control file * change priority from optional to extra * modernise update menu section * rev deb policy * new section: lisp * debian/control vcs and homepage fields -- Barak A. Pearlmutter Tue, 17 Mar 2009 21:38:03 +0000 oaklisp (1.3.3-2) unstable; urgency=low * rewrite debian/copyright according to the arbitrary whims of the ftpmasters without increasing its information content or usefulness * raise debhelper level to 7 -- Barak A. Pearlmutter Wed, 23 Jul 2008 22:15:36 +0200 oaklisp (1.3.3-1) unstable; urgency=low * tetex-extra build dependency (closes: #136821) * remove silly build dependency on etags * patch from Len Sorensen for ARM architecture (closes: #306810) * patch from Ben Collins for m68k and SPARC (see #87535) * patch from Barry deFreese for m68k (see #65886) * general moving stuff around * restrict architecture to i386 (closes: #65886, #87535, #122117) * rev deb policy * back from the dead! (closes: #328597) -- Barak A. Pearlmutter Mon, 14 Jul 2008 10:59:59 +0100 oaklisp (1.3.2) unstable; urgency=low * Patch for 68000. Build dependency. Split out documentation. -- Barak A. Pearlmutter Sun, 31 Dec 2000 13:06:21 -0500 oaklisp (1.3.1) unstable; urgency=low * Initial Release. -- Barak A. Pearlmutter Fri, 7 Jan 2000 04:29:57 -0500 oaklisp-1.3.7/debian/compat000066400000000000000000000000031332762442600156160ustar00rootroot0000000000000011 oaklisp-1.3.7/debian/control000066400000000000000000000032401332762442600160210ustar00rootroot00000000000000Source: oaklisp Section: lisp Priority: optional Maintainer: Barak A. Pearlmutter Standards-Version: 4.1.5 Build-Depends: debhelper (>= 11), autoconf-archive, gcc-multilib [any-alpha any-amd64 any-arm64 any-ia64 any-mips64 any-mips64el any-ppc64 any-ppc64el any-s390x any-sparc64] Build-Depends-Indep: texlive-latex-base , texlive-latex-extra , texlive-fonts-recommended , latexmk , texlive-font-utils , ghostscript Homepage: https://alioth.debian.org/projects/oaklisp/ Vcs-Git: https://salsa.debian.org/debian/oaklisp.git Vcs-Browser: https://salsa.debian.org/debian/oaklisp Package: oaklisp Architecture: any Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends} Description: Object-oriented dialect of Scheme Oaklisp is a dialect of Scheme that combines lexical scoping with first-class types. It uses a byte-coded implementation, but is reasonably fast anyway. Complete with bignums, formatted output, transparent delays, RnRS compatibility package; all the luxuries except floating point and foreign function calls. Package: oaklisp-doc Section: doc Architecture: all Depends: ${misc:Depends} Build-Profiles: Suggests: oaklisp, postscript-viewer Description: Object-oriented dialect of Scheme, documentation Documentation for the Oaklisp object-oriented dialect of Scheme. Oaklisp is a dialect of Scheme that combines lexical scoping with first-class types. It uses a byte-coded implementation, but is reasonably fast anyway. Complete with bignums, formatted output, transparent delays, RnRS compatibility package; all the luxuries except floating point and foreign function calls. oaklisp-1.3.7/debian/copyright000066400000000000000000000025301332762442600163520ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: oaklisp Source: https://github.com/barak/oaklisp Files: * Copyright: 1987-2015 Barak A. Pearlmutter and Kevin J. Lang License: GPL-2.0+ Files: src/emulator/* Copyright: 1987-2015 Barak A. Pearlmutter and Kevin J. Lang 1998-1999 Alex Stuebinger License: GPL-2.0+ License: GPL-2.0+ Files: doc/summary/* Copyright: 2014 Blake McBride Files: debian/* Copyright: 2000 Tony Mancill 2001-2015 Barak A. Pearlmutter License: GPL-2.0+ License: GPL-2.0+ This package 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 package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". oaklisp-1.3.7/debian/docs000066400000000000000000000000121332762442600152630ustar00rootroot00000000000000README.md oaklisp-1.3.7/debian/menu000066400000000000000000000002141332762442600153030ustar00rootroot00000000000000?package(oaklisp): needs="text" \ section="Applications/Programming" \ title="Oaklisp" \ command="/usr/bin/oaklisp" oaklisp-1.3.7/debian/oaklisp-doc.doc-base.1000066400000000000000000000003671332762442600203700ustar00rootroot00000000000000Document: oaklisp-lang Title: Oaklisp Language Manual Author: Barak A. Pearlmutter and Kevin J. Lang Abstract: Description of the Oaklisp language for programmers. Section: Programming/Scheme Format: PDF Files: /usr/share/doc/oaklisp/lang.pdf.gz oaklisp-1.3.7/debian/oaklisp-doc.doc-base.2000066400000000000000000000005071332762442600203650ustar00rootroot00000000000000Document: oaklisp-lim Title: Oaklisp Implementation Manual Author: Barak A. Pearlmutter and Kevin J. Lang Abstract: Description of the implementation internals of the Oaklisp language, for those who wish to modify or extend the implementation. Section: Programming/Scheme Format: PDF Files: /usr/share/doc/oaklisp/lim.pdf.gz oaklisp-1.3.7/debian/oaklisp-doc.doc-base.3000066400000000000000000000004171332762442600203660ustar00rootroot00000000000000Document: oaklisp-summary Title: Oaklisp Summary Author: Blake McBride Abstract: Oaklisp Summary Concise user-level summary of the Oaklisp language for the working programmer. Section: Programming/Scheme Format: PDF Files: /usr/share/doc/oaklisp/OaklispSummary.pdf.gz oaklisp-1.3.7/debian/oaklisp-doc.docs000066400000000000000000000000351332762442600174740ustar00rootroot00000000000000/usr/share/doc/oaklisp/*.pdf oaklisp-1.3.7/debian/oaklisp-doc.examples000066400000000000000000000000231332762442600203570ustar00rootroot00000000000000doc/examples/*.oak oaklisp-1.3.7/debian/oaklisp.install000066400000000000000000000001041332762442600174440ustar00rootroot00000000000000/usr/bin/oaklisp /usr/lib/*/oaklisp/oakworld.bin /usr/share/man/*/* oaklisp-1.3.7/debian/rules000077500000000000000000000007101332762442600154750ustar00rootroot00000000000000#!/usr/bin/make -f # Uncomment this to turn on verbose mode. # export DH_VERBOSE=1 export DEB_BUILD_MAINT_OPTIONS = hardening=+all DOPACKAGES = $(shell dh_listpackages) %: dh $@ ifeq (,$(filter oaklisp-doc,$(DOPACKAGES))) override_dh_auto_configure: dh_auto_configure -- --disable-docs endif override_dh_auto_install: dh_auto_install -rm --verbose debian/tmp/usr/share/doc/oaklisp/ChangeLog -rm --verbose debian/tmp/usr/share/doc/oaklisp/COPYING oaklisp-1.3.7/debian/source/000077500000000000000000000000001332762442600157175ustar00rootroot00000000000000oaklisp-1.3.7/debian/source/format000066400000000000000000000000141332762442600171250ustar00rootroot000000000000003.0 (quilt) oaklisp-1.3.7/debian/source/local-options000066400000000000000000000000241332762442600204210ustar00rootroot00000000000000single-debian-patch oaklisp-1.3.7/doc/000077500000000000000000000000001332762442600137425ustar00rootroot00000000000000oaklisp-1.3.7/doc/.gitignore000066400000000000000000000001121332762442600157240ustar00rootroot00000000000000*.aux *.bbl *.blg *.fdb_latexmk *.fls *.idx *.ilg *.ind *.log *.pdf *.toc oaklisp-1.3.7/doc/Makefile.am000066400000000000000000000047171332762442600160070ustar00rootroot00000000000000# This file is part of Oaklisp. # # 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. # # The GNU GPL is available at http://www.gnu.org/licenses/gpl.html # or from the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA LATEX_SRCS = lang/lang.tex lim/lim.tex summary/OaklispSummary.tex LATEX_PDFS = lang/lang.pdf lim/lim.pdf summary/OaklispSummary.pdf pdf_DATA = $(LATEX_PDFS) EXTRA_DIST = $(LATEX_SRCS) .tex.pdf: cd $(dir $<) && $(LATEXMK) -pdf $(notdir $<) \ || cp ../prebuilt/doc/$@ $@ EXTRA_DIST += examples/bank-example.oak examples/change.oak \ examples/test-bank-example.oak examples/unit-testing.oak \ lang/control.tex lang/cover.tex lang/dynamic.tex lang/intro.tex \ lang/io.tex lang/locales.tex lang/methods.tex lang/misc.tex \ lang/numbers.tex lang/numhier.eps lang/seqhier.eps \ lang/sequences.tex lang/sides.tex lang/types.tex lang/user.tex \ lim/admin.tex lim/boot.tex lim/bytecode.tex lim/compiler.tex \ lim/cover.tex lim/dataform.tex lim/intro.tex lim/language.tex \ lim/methods.tex lim/oaklevel.tex lim/stack.tex mandefs.tex \ oakman.bib CLEANFILES = $(LATEX_PDFS) CLEANFILES += lang/control.aux lang/cover.aux lang/dynamic.aux \ lang/intro.aux lang/io.aux lang/lang.aux lang/lang.bbl lang/lang.blg \ lang/lang.fdb_latexmk lang/lang.fls lang/lang.idx lang/lang.ilg \ lang/lang.ind lang/lang.log lang/lang.toc lang/locales.aux \ lang/methods.aux lang/misc.aux lang/numbers.aux \ lang/numhier-eps-converted-to.pdf lang/seqhier-eps-converted-to.pdf \ lang/sequences.aux lang/sides.aux lang/types.aux lang/user.aux CLEANFILES += lim/admin.aux lim/boot.aux lim/bytecode.aux \ lim/compiler.aux lim/cover.aux lim/dataform.aux lim/intro.aux \ lim/language.aux lim/lim.aux lim/lim.bbl lim/lim.blg \ lim/lim.fdb_latexmk lim/lim.fls lim/lim.idx lim/lim.ilg lim/lim.ind \ lim/lim.log lim/lim.toc lim/methods.aux lim/oaklevel.aux \ lim/stack.aux CLEANFILES += summary/OaklispSummary.aux \ summary/OaklispSummary.fdb_latexmk summary/OaklispSummary.fls \ summary/OaklispSummary.log oaklisp-1.3.7/doc/cacm-oaklisp-gc-1996.pdf000066400000000000000000006644231332762442600200140ustar00rootroot00000000000000%PDF-1.0 8 0 obj << /Length 9 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.)V!+fKqZ+9mdX"K4TlW!sQ*L*?YSi':6t"%FLITX\r"JrS]M3%7[[+;dPkEeq@J :e*40N(+CN:t,pm%)p,HYg-Au&./j;=h*UD-\2[1P[^Gi:h:1Lc/uoPPf@f%S'B;i 8^Pg,-l^DXj.V^uEtB?$iW;]]aD!^S9SZOQZD(p1*9`LjPYc'1N/e+ZiL&bT/K#"l oSHQNKeY9MlipULYhF4\=\`&.N(u<^#)bqqOj&&j2\9FQjQ4CcRDoAFqD)e6FjJ6Fp'GE5Z<]Vc4(I3iuZE B+Q(YG=nRi5]8Vb\JWuS#\GjUioi0i[,O1f0CIIhZEI]JFrDQD&6QWMDT!1d+@2*" M7*s7BFm)H^s]Ru.b\A-[L!!>OXT/g[\0s8P'drjK'Fs7!MR@7Sj]\qHH(XLE8EAR !ugYe%Uj+Du'!tq7`N:SIY15q=s/oFa[^A4ndl:@GhOq"aImA3\`u!S42A'_!sh[7 `5+[=C@c2_%MWr$)ob[k'^`<%WrEEbCT=Bi9M4&!,9]bW0UsLk<@"39_g'*W.`7ob BsZ0\1AeiR6j+u7@AHHq2N-3kV93l'X;K+ji*mO!8e&IQ.dK@@[EPD@hc@lp\8PTM !C6#:Um,1(ZOMo,K\6bY,2TCO[M0O.pl+o(/n"hUNDJna43?\hcI%p 1QN`bODl1DD/K(g=fS;(fr>gYX)ehb**:I7^Mr`W)VZ0JABaD 6j1ERl.-u@)U%j"uL_lRsD>Z+k/<5oYtk*CZKV( PVXYr"DeKuW\Y4OTS4 bm+72)DK]TIo%lG@>SM3*XBCt>sa/PCfE7&d*B!oF@/1U[=+_"\C8>'n0:HU_*,3- GZ,k]/'"VD60NpT>C&UCE)mWBkWnDX;up\\d@HfcB`erXEaNDk3imtF%7r*qD(Pp( Zt?m_(RR'6@*fh0ZlkA2?tiAHDCq(alks,L2`%afCV@RhF5GP'AApO]*\cLn9,qSl k8i`['*e1I;N-W3aR$;.nBd''=UiT$;NNed-&C9?:M=#u6o*1jK0X;`+iHFNoe(-Z n[Au@V.R!Q*6ns*FHr`3;Bpk7l\IS>FD3&A5r^>s<%Q!7A8MO47\7Y^C3>O?:_66^ p'c`ib*aOV'2V4jg(]\7#8(g%4) )^R7![aAN$Gp[9jPlU(h"!ee]V6*%g\1jqefR'0[4EW6`h%`rO%ZumO2&1MY/B!"!5m7ddo3FgK Ec3AXHR+qMl6)?"-lLi.KIm530V7S)PA=+:?ieW]($IKsMM4L#YlSMB,M_fb;=(2l Rbj@A:;Ba=7T/CR7%>IdX&=U+0[EUD[0$%sW;M`4MPbURni@7&[$Ed1Q!ZD>.,9Ui*=aJE@Ce5XiS(%0ZaM^$!0MT;A+jU.9>E"'bOl'Obj5nOYk("r\1%?2T^"Uq4*I $rYf-Oh$h2Xg:(`io1pl.eO79"sUVuM2CX_@C7pQm,n_`bl<:b"R&7emSet.FlmE? Lb.KM4j5R&VeTS57&<$b(V2Z_,b`%]=Q EFF3VT\1:/LH(;R$mmP,BrqRNR"il$>6a<%ck1@n%>+""3NdD@/^;#QO#gs:8OX6A 72YkdDZ+XY4L4(;RgeHpGQ3Pb5L";e<+=9F-\5qEml4KR6Ui/aiQ.+lf!p W^Sb^S:4RT:>7'H"!UIP$3LqQm1WmEUP%>?!srt'l&Uf=@++i/*(Ffe!Y(DbDWCDQ @AV%MouO"p5n"SiOrXt%S`oGWWA?+XnK-l3P1O%c&9!P]E9@=k+bG#5&US4\qkuBF i#EA>^fbQ+!X;%ffNKSqX?MRWou<4%WBjgSD&=Il],+Y!e8A,W(Ee;W[u*d76E<2g o^"=$AJ5FDq2"/k1'j4[c-6@lPWU,!2iU%(GWm`A)Pb>Y)\>Bil>O_r9o^RoTKnH, aGe,pJk4JeUJ<(pi&YQ2bD>@ak"))B*^/^LVs7BoUYNuY`[npn6Y^uXbCn+cI+o"8 QG^H5kGgV!335nJT7iL]BnC;7OOcpfo^FX5cZk0/"uLtDlNdud%(J@8HKUqtgr303 `?Rq%C>UnU3ijb\7G`@5c+@89nBjCRr X@lD+4=***j=n%"YPpdXp-XRf/h@3_ le3fih@.aN5fB\#&iaW%Wq4.33)0r6#_K*$+t(E_,9ma),U2!<'""f0`UTT)">8KW [S,Q4_<-g_XLu/T6tF?>:1?X1A$W1(/s#DP.gO(r7)j_14C^gSr\5Bk/5Z:8M\OK` 6;HhUWKcjK>%2J\W9W5h`C,dJKErdK\Lh".LSA.7P_(A*$Y)d5mRg?>'`Y!H`j#0G N69cX*9]``%;IUA88LlWQ@Vm%qZO9'#OZ[gK+G2ZS&!u5,_T0sifae8[(mS6EfOsD @/QfM2N4kU-Pfl!/o?I=[Y&h/-O_t*9F]7"^6-pTOoYe##4h=m1slacE5O?7*%'^3 40g&-Nq3Yl(f?9aAoShFA'V:lP7Ve#hI`A"P8#C*WlO]N.8%N2.#P2s8l*fC[hE+$ Y]M(E3'-=6$h*mN1i(8A0c%>^R6"tMr\ ]Bf!F#iWphQ;#+X.,=JCq;@km# 4G2#A/P3kmS?!EumZ$pAh>JY/GS1%fe.m 4U6g8;kfHKL/1?Z=u,?U7hZ%j8;gN4dU*Zg-LMeH#Sbi($Rj'&muioP/V+#O`l]X[ :b\n>7!K,ZTF>]J`3h.9eM.Ul`>PfJ:,P06OV2,EL*KNK39[GEUoRZ$]cRl,2F7j= je,bOe5qnXS5,MP,N,p>n1\[n@DG\Ho*R_T@`g&"FL65ZBr[s`m#/,T/&_]B"]d.k G8>lb$q1@U0Oj,pZXkpJpT+)>n@^0(Yr!u\a7DoAocg#C>hB3LF[p@*FYd<5Y]n*X 4jRVI.(EeeUL<)k/&K^Ein%_6cFJ[KonD4+e:b6VZ7X)W=[I;mmd<#0"H;dL%>W+B N)5.LpG.?G%YeqX:Ko7T%9Kh6j25iYNu\>1*'@6,.s6=ATZqI4.!J0,SYLpq,LSL^ 4)N?k<$Di@j]Z`1SC(iU9]/f'"0hSd;cTPMp_I+@1U:>b]2,b0.n;r);_D!gg9iY@m1!mF-NP$$M<7fI02:pO\,o=(MZ0L/k'nc9rTLGM4I[d84#Xd`WYAf Jj?4DC;(nBEoY5an7%(F3]IT$;\uZ#7"/H0^,2VR5`ekI#1FT7l8)Gj1ZCGC/cU"G ED9EbUOk=5'+Rlm/u@Le=oc&9"4ilPRg>-Z.1=Mg1Sk<@kbh3-0rt1Ab&M%Rr+Bi1 /i[B'`"-G#Y#o7P1dl54i8b8r;eo0)B]CCaVq*]*8Kfgam5I'nJAhmdi]>Q$s*(A$ El_6,<];/Hl'Gr:O4q;@CBm>=j/UWAqc?Q##i8UbhC3;`n KoT03/:>%b.uD8.S,5O/>Iri8]Wfm"tQPS Kqjog#cA6aS2nl\Rg,BLT^F.<7qo D:sLt!dZlU7VV+b-eXtl:/4&I-qDVlD3-fPMYVfm>ChL%T]p1qW3X5""dn?HdjC1' .3L,E=(5[RH;\YCUFDA)b"q./>a0,rcQ+VF,/<4WLL;&Ge:QRHTRnPLVp6>YZKDq^ rlJ!>BTVP:8eg^dWfTnD@]:*(H)UL)K#[8:a,0(Y[s*5:Fehcm8"fF3@t[@]pN9r[ UVd-o^hBEF8"mo)7TRm2,-"X[O.u:s.mqpH?tZU_k-H:&Tp`F>!rJCBC=%UCd,73? U--N;\0J*s$CS5iA,=X.&6ttrRPYKuc0Ed_)kE.[@VHm-eRPolA6Oh',:T"C)Fu4P 24MhkZqUbO],R2#+#g&40Dd,^m3'h];usUCchglHUC'9)ngN6[SAKn>G0`asK"1Iq FB7IC:2@(4H<'hOZT45ZgD.0a$(:pC.;L]NH[i?50A>WR@hGDPnZ4]$P&JW[m@I-nSq@=_ 5HR19:`Bd]*mBa^GrY_XlXXm*+=D6smecAfMq!aQ"+*$!VIrhLp:D*LruIshA\cq. Y=FV#XM-$g=uJ]*QFcH\B!@\.6>inr<#qfJ;m8;U[>Z7=_Ks=.A%9`+Y1oa@M%-$* mS#S3EMhgiQt]@-#2P^UXhPPjMhO)3 B68#i7Q[_P4/d;RI+1h6a46DT.sZ0hNGu"&4J6Z\1jMO$#ptF-@^=(ZorR.)9sZ"A+`gnrDBs;q=e\4&n5Z+Tn]fK3IW=8-[X) Fmj@)Ahpha_MR:l>DRZ-FtopB8Ek478DUGPOg6<.IO6JZ+='0c`^5#1?#F=oGY1E@ otI6&)hDOQ#cV0PeZM7/Zomo(T5t-CB)3$?)N#$F-5B?*4CKbpT>lOlP%$^g_q_\f =,q$Y%\VNO`5A6k'anWkPaA-Vp*%cV:f!A$']i^YpVK@j$DQ'T endstream endobj 9 0 obj 6614 endobj 4 0 obj << /Type /Page /Parent 5 0 R /Resources << /Font << /F1 6 0 R /F2 7 0 R /F3 10 0 R >> /ProcSet 2 0 R >> /Contents 8 0 R >> endobj 6 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Times-Roman /Encoding /MacRomanEncoding >> endobj 7 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Times-Italic /Encoding /MacRomanEncoding >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Times-Bold /Encoding /MacRomanEncoding >> endobj 12 0 obj << /Length 13 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.)V!+fKqZ+9mpbJC/WZ@NZN*b(a;;^d(jRLa'f/37MUo)2ne%!PF.>6kB\6@ZmF` )Dr<>7Uo!=Shr'^7H5SE6%m[(&/[e?,71m$D`3C]`Y4K1_^q-Dj!0-!`+9I=aoqu! KY1PI(_!:<9$sld>oS]W,>,o,:b8c/VZRH]Yn55 )GQRIaFN,ZTp\SdamlfgB;"1^LI4Xllbkf&G^N\B[OZ^MN,.Gm(94iLQrlGVBGR?8 XqY>g`i^'QRCUCF`k#TOh_3h%f1!0>0[+-kKrL9WS-EhFFuh%/B\;1$K6e"^2kub_ 3]Vh6O?/C&!6R50j/C6[";#7d0Y*7&>Sr4?0QN>_%/[iDX>+M5)CCM4?nnRYqZ=)4 ,9r5`NQbU9fKF.hJ.N28W6.-2K6Z/f5=q(8*3;sE4M)_,Mp@lM.KJ\c"9Nhb27I(c 1-(CN@*5:'@ApcI3mQ^g)Ds2c?lR+bg5@(FK95@V_df@^1'@\@hWh*kfQ+!H'>.K_ %.S\`)($N.Y+2Cg3Xk[O_DD3K<'^r&61pZQb3[9)*)iY/*IjlT?n[<@ilF gKs*&OIOuj\M:sKTMu#19+rNuMbL@]cLk)%5B0k:'Ef&Sh(R)ppuF3=&JRbmXU`gj B!'UP?!>ede<`-@bJ7@%#08B6S1TZO;,Tr$&DocE.WF%V2QTbP[Mb6',or?4AT+Jr51o)AEB]ms]ta W.-d`J\I]4)?^k3W0BETe'K]N/5q3Y%Dtl&fFHpL")Z)?PmNgqGQ?S<"06Ah$)'3\ e^ssiPKn8aeLVAaC.+957PF,@2]OO:Y@$!i9EE?kL="jf>6;J@%&jH?^g`lQb2b1p BG:\j;Uke7:c(I7dLakid)_pXJKVJE\lYD+Jf.+3iKQGD^d&GuF*C>*!S"gGC^X#e 0Q`u+OfK%r=%]DLF=L,T0iVtfam,>u$3C#/4S1Midok[KdZMM?n#,lBK#;Js--9-uoco"].G7dMl=eT/[/Y@g=6)b_$g,6:&l1 !mkHd*PaK9ED7sKUE4QK^c?U33@).H#$4*ZX\j&9b`\3a-]G;ZMX\j<0'K[j'oOT$ /,V5YF?(5rl*Xl5Nm;R#"gqD=5o_sj%S"P]Ycu@"OE4-)X+"ar+C(Kb b82K=@7R`EL)f,3Cb+H%Oe(\%W+9GC/kRt3Q)W7u_5u=P1NEA\'i5dmfOlo"R')'u p't`7DLh*KJ[?4eim7O?k8n5aU C@rba\>BhcO(tLN1::td&8LSQ>K&?MOIS-4G4pH"E?PGki]Mg1nKf&,Vkb%&Q6=3? TfE3)KKt+3(relkkob1G2T%3BN)`07Ml2B5&4$-n'c%E?G ;TBaW)AG_0^jEJcn2_3C%MZ,iYH;4/Y@8S"'eG[[Eb*%m$,1La1M/RbRF%-6Q?T8* 6)bR0Y9[+/_%4mLRZO'iZo?@FM_Z&@i.A=!ngR3KUV!?u"t)N2,=!`g-jkqN)o.^e C)"3-%17nG/[WO*6$tK@k)3+0;*m* 'SCcP'I%.$:!gm0Je*s=bU+U2igN^kNB],2#sADS+[P[VHa2S,I\Fk*0QRFoe.efX .%^.Jp_[&)4Spag4JJc>B7X?p5^[\oXZOa4K3n]-/k>H*8lAQKRp?mSMnBp>FBpco Ra+7>^qPEe#q@DVL-+$]lPD*%iQj+/4UHYb??A$JOT_)2=p;W&VPHt*K3$G43NXI/ cEK"]_@/#s7Mk4R)VG0eaG0t;Qe2fTbE]iZlFhO[VGNsuC]1pAD_@Q3IsJqK;D2V> Wp!heITbq5-POrmX`ka]1$M8.=Tg]p3Z:[#Y"_qN*1/lLqJ+l_&Q"r7+U<%VTU3qn @>m9di3tlZ8V/CUKtBr7$."HljhCaK-C8^4RDa;GMc!234u:.>hdXq!$0 kB1EDTugsNfgo6+^R+?*O7stgf_at[1K71N=/k&,pmW*N?/>oK((BIjR]VjVWc8X] =UnXj+6E-I,"rK-CM9' bdK"DOWLki-5d1X%m%JQ)*h_/N7\=\p4s%lQHVE24l9c*"H!iKDi22gfpR@@:OW>@ U-GFPgSJ@nik1u-3/(j+/F/*Dj$GS8N%RG-s6\b-_GX_OD"e4T9l%W-bK,laNcM+j 9F[::NLEBITVV^?qh-X3KLg!6^sl0,ri=%tb!HQU(,s3/^BT">?sp^+?nrj%")i3J @_+3AcGll5/'`C<6nJ,Vapr5'5U9,_52j3S()n6^eVCaklNMAirRW);K)MZQ096bHr^G2J%kmHC.]V;>lVWs_\(E9Nr[ K#HV]`[IU.Llj+?ir\XVhPnYj;!:UH@UbQj*igU6SZ9DbjI-P&f["6,;F3/]p). "%9]$C>.c7:^QW; bR"nRA1BS>_\>J-"bI.MXFU8/NX;AGdD1nucYto+#\?Hs0WGo?@,MNhr!S?j#">s[ $K/'R.\HiXGnUIJ7']Sg5Z]-:YNQNZ7.,,69IrMnJH>s!_J"gY^9s[=,bcDGVY`0L gdMKnGt&>g#sTl&1*bjV+L=ruL+6Y"/MecMDr!O(UIoX<_Ft5N=@@j`3"O?J#p/;PgEK -7_#RALd;u+p'q4TPStu?F*?WX/BpC,<\1VdKZqD3YVBGF3Z*`&h<"?@^F(j1NYFR 'Qg\8csuB*5]"<7qP^YWnd$`KV$!laoQk>s@F2 WLj)#b01F%>5q;)VFD3N_Wc-(fG:1&m!_G1_rA=\aV:.2FZ]9fZr4&P228rck CB?p]0f9Z:#8=+%VoXX+ShF#!`b9NFo4($!e0%@h2BpQS"fX8S,X,kS9]`4CbUOaA 81ud!,NJ)%%%/iN&1.HI99VF;WM_^#/hJC01GC6%C5R(re0ErY1WOGWPiPi@/NTln -A&7,P@ILsQMG/aY_2'bMg[oJ(7a_m8#J[/kCtb`F]:/t*(GN3-r3R9GtmqPC18>\ e']BIS@Sb7H]29S_]k="@C")-[_qI&L` =Ru@uZN*&,I'+s^0T,5"Paj^p'M[;Ep 2*LPaeD`t['S^k`NDsu3";ATlZjpQOPg<1iKd729FH;j9\4@eO5`+3Gdb$ __4GJqaHh>7IlZnogMA0%7]J1E_@$;Jk&ZpIVMi6TJi!!P`0a&_Ba5g9%94Z'V/3e X&,!s5r>W7p!ZA6>>'.b[C0".oYe!LCJ<8j@^OZ`<7+b@HV'I]+q41NL##MrR0YYA GguN!<;s6^"\:KYGf!rf'R`&C(qVXHhuY'"7hRm`5.;qG1r'ff#h2-#o358?ml @\9S+Nb24IS[AiN5emaY.=j8e?+C;l&%/oC.O.sGX?#de&43T^frJR 7u\-L:+>71%hAJip.(ktP=tI3U?8YJ/U('`6/8.7!\d7Me18dgc,:Q)bB^B!"?\O3`0Hfg7j>=NGqJP5BjeHim*mP-6RHrCB?V)eak2P _MicnU7t2E9t3:G0CQ`$V:JYUP0oKZ.9>RF"%j5FTI6 O.oo;-kb'E@k1?cU[58rYY&;8`"#.J0E[@@D.j?qT*hVD:lUq<>A0i&P3^)[5d^<6NlL:7M@B&/ #rff0B^ZFBSYOVZEi1Q:",JY4H*7JW$A>-Y91J8UNur])]'L*B3nKsVW2n#<+jmr: N!Bg_PF3@3!l\`Xm8f[$mBq`sr+8P0Ac,sAm>*%r]nU@cl.5@p!JCQt7>UfA#lmp, #%*"MDX_gL"OtLQo3>glhno)/&;$Kk#$*CIq?aH$")p1iN(?R8TqphKZ%oqZm(Zch _ZKcT8JB"ZHc-'k`'jQrD'X3Y$l^+G*U,r*#j #KVYA`-BLXOu&J/S=4Qd#-]Y4JFg(7='d>&1?h(O>R(/N##*"H"Xu-h;(n-c`*i"8 a\LG+n/)]n*/JfOhKkVL&Po\)Z;/00/U>iauJn_`K< cA*>dI*(0$6Hbahb,H"5fQ]:b`)rj.2AQ:2LRa8K*qfn:G:BgX\A7YdE]Ek*-4\"W Hg7[[0#;>W7P;a#Xq)8cBAo@gOBngE*5N9EYnT Us)fMCtn"BBG@(>b$irNB3u\9rOQYjL:f3O9o.GJ?`;;SBM;=@^RML,G6QpuRdgP+ &7N7m=M#J4btLQE%Lmk#5U`H)Qsfjg4>p#?\F2D977HeI;tEE^dD1ZoidojL(eepZREWfp&0.Uf'1od"E&el_'Eb&)hJP$: ":%;BG%!.p7ffjBUpOYmPDf^@M'P8//[>aRK9=*FEGcPNATn/Cg2T.b)\"\kR*n5Y [ooF,K=-jP2&J[MOVs*]0QS%5"lsB'nf26Gh'D#HOPE)Q)%ECH&daNJDE"-2OY],l giPR>#f@5Sa*^k6>4m3(NOo$`0UhKd1Ot#D@AOl:V[]fekn=UHNV)h9Z@mEYbJXOq +NG0K)@]0Er+VJ=L`)3uH!GJS5YNl$N;.)`f#>%j68jE<_/gmZ50jjJ2iaZ.TJR,C 67T'sA#&c'N2(@4#*)J=AfCoiaCs'e_[H>CL+,4Heiq4J2$^m0T^"HE_dL?e#3e6l p:eF,:kH1`5[aH(8pJVm7KYp@pkC1^Eur+iPR=uS_/O#^\BF/2o`bm5=qhHV9;FJI "%o:ANXa2"W7'$<)6-u.S&HMW'D<,!M_pW$B$/r)hq&m:!7 endstream endobj 13 0 obj 7769 endobj 11 0 obj << /Type /Page /Parent 5 0 R /Resources << /Font << /F1 6 0 R /F2 7 0 R /F3 10 0 R >> /ProcSet 2 0 R >> /Contents 12 0 R >> endobj 15 0 obj << /Length 16 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.)V!+fKqZ+9mpbJC/WZ@NZN*b(a;;e7^HQ%>KH8\BJ>'.M2dqntD(6+G5OU,2l*i e.!7R`PZ\oc;,Sp$4&E?GhcOa)FieN+[Np%AMsoDJC0Td@Q>B%k_'OeJ<"%u(lU;V U^Cg6S=/VO;/k#m19a#u",R/J:h:1Tc/uoPPf@f%S'BJ]8[q&ZL>!h,#c*VW2B9r\ ;ed<5WFH`47eQjK]\mKYSAYW$nH?sDJOF64d6ZKr/fY?L;@4S#gg`+-"9cthSEjCG "%L0[7Pe1Ua?_Br97\ABE4VN4VW4A)nTq$L@BfYL9H#mY%*%f8+[]!_)!(=S;IPg5 9,VXPhC\MtUG!PoL'%qK[#/CoP=[&d!C5^$NanR8#);=QB_Ee[:i[P10Gn!rVoi`q (8`a"N2hX6aLE+B:S['<2_.dX&425\'&G'OMIr<_Jf)kr]^UJ]fJR-0lflpr5@T6^Z<,aaotPdPT4k aPen4JCl]=A"qsA\Dmqac4&Y3_DVh_GiU]AK0\.jYQ?T`M'@M,AGCoN)qlI\")-sY 1CeHr2`!gGbRdRNKMiXA1tb1qA/;cE&NgiWSU'M\OC@XRf-B\h;9Sr%h,7!/@>+ W*&&4+@m\OO5_Q9A/s;SRh1@6@qoEX_^L*A%KllK&>t5uS`Z3BCI$R:YrP_cR47Ko ?WZ??]%Ig1Ta#G#+F2BY1YoV8@?fl"+s3<9)3@-%Z8&MAO.^b.TGZrtAjIdK3``,` 6]&7_J`sYY^r=hTLi]%rqVK\mk4H/%.%qK&)iEWh)?tegeh)[h@r%)enERUI7^Q^J L1?MPDbcUOD#5#6 MWHohH-(2;Q:'Eu)j]]@TljkFMF3OLE.[R<-pYMMmZdrVYaV5)U9ol+Ef7rA6AWf@ %+@0I1Wn_k#$d$2b*Vu7;^g6U%?kHa2U0.thK]&NJUboS-^Nf'/mFd\Q!"TC#?g;s OE.9/qD\W`Gm4qF=HETY6:']5aKe7'JkmjN-/c`:X0X4)amr@^,RjjAdW0c^ann<# r;a\9/dqcmp+XGGVkCs4`QsW";+0B!UW?,+6\/5A-dc?E5\>k+0hZ%N!./*&7S,hO`*mln2u:&VAR39D_>FK9,+`T%L@qeK&he, JqY%]_l.YcTuok039Y/$KVFV:5V]0U5eIQJ0d&uh2\\g.qIBkN:J&&>K[?_,65WW) T]?q57StIgMOf/nCn-W1TShi\XaD >?rfn,hEt`q](^^W$c)g@Z`]Nd(@^O]b^CfED \u6aFp)=r9r!g?F#/u`BQGXXCM\Wfcp@VprZ;u2Uh/t]t,30`ePu]?N"FC]s]c)0r Gg2Z=4U1FD]rMcV$)QF2!.b"i_u,$#dCDN>7fBAL[ggIL1l#WS$]tQJ&Q`gn2`0fs TNi+`:eC2\#dD_\,L)*;HVaohOO?rLQ==ct:pS0>%aQqeS!1F6H.Q0a'\U^[SuhXh \9J]m;tq##FXFs9%,G@4Nb&;JnHR(edK]?RT0WL_>BATe>AJ3/$U?,3\.FJ;#S;Sd \T!UDI,(F8;cD-g_7c`Z7>FGR-c:V2P]E'gRfG^]6\/>LLFD:fEtCeT4t\]m^5OUF @YF:Q6mpXtBS(cSJJ%EJsa'E'9[8]ou#<^I(U"*dX##rsJr1mc[=fSZ/(g^/hCKP$&`B-XQn :AM"n6o&;rF,"_\LUT?C5gc0!_R_:O`u1)*PkEb0PRaCm7[3C]9'!<.0fSPCU1lT7 Q'@+/i2A,1o&(?N"M-CR\P,E/>pTRaC1+N>8d<1E6.;/J%E?IM#:!M?jk6)$4N!R' G]""6G#gQ`W2@K-SRBp>+:bb&O9]g1)*3g.3Kf?G=nDYb6^!O[$//$,G5Odk-F"oZ ]<-+hkn?)tAg$X'E!_qr!p_t&WXc#t4^j"fU*mta7:+cm(U ZB$%mI:!->//0c5i6IsB6F[8@>5aao+5_BOPXNL&Ob=A35>H3;k8JZmL>GVc+Pu3s 2XTS.%'Jam%dX<.nFW0FAg6?/`"O?'9@*Cjnb3bk5 rD+d9N]K>-69NQIh1-DPTGh^fn7%.E@RLth"o&:Uq":NjG=N)"#82%:"EC>#Ba/0d 7kjXl/I;Y/q($o:k7n9BL2;sF#Y.X)0:N3DXE=b=C63iNB3]6@IgPV_q<*!B`n_'c iZSPV##@epO%bYpas1kI-I5m&:OjW5D#";m+qJkjmsPVkrq]I2p+M(B&FfOn9+_`* -#]OeVem$lR1]R<&Q%%rDmFU@\DO6(-mL)LUY>XaqYb5R-AJ6HMX'86(_-ijk[NW= A!g/qT%ECp5q:)0Lt[Msk"3Z-dq_/3m\K-$o]j6QlOLr;A@h3so"?_(LgtZSc!^"U :sLX2-fsL9WCU'l(a\Z[%E9\(%nKPHbge"%12u[gd1$\+>kYE-&s3$CYmCiddeIeY &Q&8qm0aNpE=C5@*[]8Ic`[e?1AbglH6a=YXe#Y-auuD*#@fXsO[KWk*?/s(oLA9Y jsK_T\g:a%#3)C$E-Vm?)[IfRA53.2VO\/n)%X#Q*G7;0-UeE+DKO7"VVA86[:?pN9gWD mP#(M&-NJ?Pk&OOrWEkcV-]\;#<-a-![,ND-&s<><%9^r7*d"He5A^Z<[OohHHN%Q MC^q[]XWXI+N3m]@l+Tc)@W;.3V*23BF'P3q)'0W.*hBbtS8DOao_lPd3EgrCfd^PXFsA;3iNl B%X7%@S5rPVt/brdPaQ+ro!5BWVR"e+\e^/nHeP81ESVFc8';_8CVH(O<>$Hn69@& =)>qfo:*@!A@^,Sho0YZA ZXT60@aiY=oB.ut=a!iKqNLXr2FTj]cm"'&7:Mu\@L>CU?Be;s2m4#X$'<:8)Qoa] ;XY2$dj$r?#&b.>as@PjL-7_DWW-md(4M;])fh6pT#EcG,MQo%\S3fRF683h-%%/;STM@6 5$,:E(VPS?_/#CVG/n]E(X%=fB8BW)J91U-"*uFjQqJX5_SjB"@YM+".+ ns#1R7;<=Z!Xsd%mGR8m&(>e4Fu1`(8@^dh[UQ0/K)U:#77F>1$BkN65Ru)L;J@OW pGZ,#Yj&J.YEKf_lK431h+k-ZQYrN,n&@!C]Mdt;2?X(3$Y1S.HoqhY7nt0RMUXP' &L*4+-?`gUjNhJ!5/NG.kX_*2-bR!-Cl,8\s+C;Ci8.2]R-56'MjJa!l+2F2ktnL@ "f-UQ-mhXU0:!jD]s2lA<4%MsWX__h0*oflGufO-2!o2\?273['7F0\Nrb#YDfY_Z =ZqAGS2.6a"'"jQR8[EI0!92h0tLERQ0+%!qbfO*-e0cB^65j-!3eKI(&<%omiq,"\KN>^RM?Pu> =Qha_j4A3`r[o$0W`f&bZ_Md;J1X<%Y"4d0)*']De-?`Po%5O5RTlet.5)*46&>iH (QEHC6!UogE:qaULVK*2JHc/W~> endstream endobj 16 0 obj 5703 endobj 14 0 obj << /Type /Page /Parent 5 0 R /Resources << /Font << /F1 6 0 R /F2 7 0 R /F3 10 0 R >> /ProcSet 2 0 R >> /Contents 15 0 R >> endobj 18 0 obj << /Length 19 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.)V!+fKqZ+9mpbJC/WZ@NZN*b(a;;^d(jRLa'f/37MXE*"@Q'EL^j$+;>fL,stKc AhG'^7T$+sS57Od(Z*0cA5I#MK;[>VI&>kk(%6g6jLi<%:k) :nV,E&/5O#1RXKK+>AT\L@Z:9k\6oR`kp]=e8mIHapuqKX:/l#P=DPGpq13V+?CJ/ '@SD7fndTaN4=M&K\UW.)pUrH0Xs@t(XkgJJV^gUFq@X;;7nWE)iqCobNDR%?Se/_ (Bk`DFS*'lVSIpD%8Cm6-p?de6Qq9GMc?0a1$7LFgrE,5_Tjiq>S\pK^Bb&hNA0F, +M,e@B%_?lA2iZ[7cNWk,hiSBqn)[qaO3!WNl/6l4>-L6JclWp a;Y>GgBdJ'YED/_]ul-s$p`2)A;D@LPQNt].@Q@p#9g`Rr52VBB@@1Nbsd,h3-B4 rI"+EH/"i..&lOcS>$n-mA4#)rctL.);IGWk\B7a21bs*=5W]CLOQJC[@0#/B::XJG-m6)L pPoUgBlaIake&kWkfb,a+Yc9i[i*!B6%_I@-_PuHLGM%*?j%HZjeX%7o7Hj=R3+Q0 M;tC`>*=gfJN-7-N"Uai@SBqQK7r_QL;M5J!su,`nC6Ecf!6jP:S.L&6br7VHB FFu1%*C83;)r__QAcT?(*dCjq*[!..K\3UK"%3S=d<$VR4KcG4J8:h;/NSWrZ96R( %T$D$"Td\]Omm8t9j(6rd6JC3pd5dS8m5_d?5shqr"t&_AING3/\gLs#U=S*M^1U% ]LUWUirjjVdKHKgk\:GKPSt#%6:j+Tjr+>HFct^:2C3=Z)$@r&$rZ0?2a_Iq"!O7^ $qXlh+DCFT..Bc'a_h_dR,:/:\;W=m0'%ro^-GE`Ta_Df1,j'LNe^(g9YjF[ S^2PPeOKsafS)=*^SQgP4`7^V\l>A)h_#^49je%sRq4JDb.q_0B(''d? A>jO7-+rM:-M'CCH[W'i/q6e)O$O.5B4PDDOte5HE@0)TY;:?=:fo__RkQOkea_]% !1Y"fP$8@aljuYEi=J\MGp`UUVNchZm\A:L-oTaD&G`\uP/QR(%%QcAPJZb41[G4u\<)7F b93]&(fqh`7tG\K\(#i:>>n0YDCKi=A=tCRQ5'#.86mFu-jHE+j)&k&g#d>Im%&.?,;UQ\s[!)Hg1DSVa82^5\4lYG4 ;i!M9%@<8JHKteU2s*ANE"^Cu9:Qna)724e [+=GZ7VFB<]t@[h;d*OCP-JO![ ^eMc)W;H;KqnK+Vh<)T#3DiUWiL8T'UQIV2bWrq^cuqUtflAGFr`uEMp:mEWbdcYH N!@-?rD#&4.AEb.WoNB]j?i!6mDs01\1/V7^ncQ=WZ3YSNdCh2-/`Uq$mNLO:;WcF 1&QSm\dip.l7N%r0_BDY#N%?dF,j$_I,hK(O$W>d$9C"[F*q!Uun cOfnHG57)[q$-+Ooc1]44W6"+Olqt"]A5Yat'`TkohpAlUld#/ReD_e`3+gB&;5d!aSDu:9 j,MOk&/aIPK&gXMY@>*(mSZS%3lUMlL(%BuY%kAIDNc2.k@pB`XC`Y-m^Zm3T;j1! $Cper:(4!`LCd8kOAuI:(bs[jDf!X5G2mRJr2]] -FrW>'[aAgDSl%-XD#lbpX.9";NAo)daV-8!"L:B"q)e&]"Y+&mc:P>.LPWr>49mO l=(n*7Tpu+V%]sq'CcFVECNaO!6?qHF"pd%0iZRU'bX@V?&q0TnS$h-AJFYGob*W8 &M4mf:-Jrn3MagR'$/`]bgoWZfr5gfps!,@H` ODN5&,A'+kVnU)7kRSfo%3jL\a`9.-Fpqoa%B?FeXC;Tp,t#%'%#Hmp"=YOhPe^u? "XYRW$ja[#(/:mu#381h0Kt(2d#,W[K;iN9@.&\_\db=dJ"Z)&:3M"9G`.d$Z"F+A 'DUb[BSU7PIu#_,mXW2*BIa'l_J?PJ7%3?a><@U`O&X(9,gs[(/.F)/P8#,Kb>`q+ ":h*MRRnKZe@8HaNhrf[HJl\0`'fZ.A."84:Z=Jsa,Z8*5,:bf%"tc7Pi=Tc/.H8^ 9(6@HFH2/^b-%h++V^9.''9[#T%r1_"SJMh#_ALrbXP9aA_!%L2?eN+U]M HKD/p+QtKg+P8GWk2S]m;^b(!@,Fi^`EXp.3J(X'BgA<474$/B;Upj=Fd/(b6mSn[ XJq@B5\bM\$nW\XP!IH]J3XQS[Oh'U!cs]94A1q=#=s[+6opAo`Bb1PM8G@S !`<2X*i1bG,9USOV#se`q?6rp:an51@Zgm#&-g%BZ@iN\C`%@2S>el/2!?+n#P*Ki iBcTb?NVcNCcF.@d!sO2QRW=s<2Q=do1I($7C;M$#6J<>+%u`37>!(NQ=u+5E:IR` "%'Rk^toO!c:9-@0!32)io29fLkuK&.Ho/L<%OJ;V@I#*?PXn7W>nOm1m;F(eKlSI M>]^i!H+s*^1sC)Q#$md6q`V@QSbscF`Crd+MpJMO&^SB-akP)@p!j4Q#&/[!'gkN W1BmT0;=QF!kVf0Kj&Vl2($PMa\E<\*ic#bJ$L)"E"\;a*!TFe7$]9@Pa7dR?6p@G EAfjJ[q)XX-@AF1gm(>TUkDPY%^EE>L=R=KFkYoB<$p2S.g+pqGADBr*$ko#P3;NJ T\p9D1,=',`X,b1?s.gH:5Fgo5M!?LOtV0VDOl\l%5Er2XRUf4=FgZ',_Am2$l)Tn ]IoFV_BT>NoQL<]Xpg/\,F*"!GBB$^n@:Jc8[Y@0pM4>qq+0a(LS3oaju*C`_T0jj ;_;Zag>XE89>[cQiUl;Rf!s#P018'm.`Q/JX!C!6DPZ@UjXFH+;18:4.g4 (<0tg\SU]N8sBJZ>)_L^(p1jhf-Cj7&I$fu2F&0'+9~> endstream endobj 19 0 obj 5192 endobj 17 0 obj << /Type /Page /Parent 5 0 R /Resources << /Font << /F1 6 0 R /F2 7 0 R /F3 10 0 R >> /ProcSet 2 0 R >> /Contents 18 0 R >> endobj 24 0 obj << /Length 25 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.)V!+fKqZ+9mpbJC/WZ@NZN*b(a;;^d(jRLa'f/37MUo)@U#K+dh=q2hI;#JcS.S ;H,LU7\\kWfP_[db/FRK3Rm,$L^U'N&Yo\?1n717Kh<1=D'0dVWAC;SNR!LTfpL8t;R"/pd2>Vg;*Zk*c%a+bN9G1?#Ri(O2;m%<&/=P%P9>D.Bf?o) GH(@fi,?OS%&YX^gd#d4)Qou3=bPUb1)nN,/1J=IS]9^\3BX:R6&797BsG1m'P&hk _sJY!D)>EQ*7ooIJ\Ze>0cA8JLMS-`_JBc#bdTC!$=F;e_Ve6m3&KY$)NEhI;5hZV .#8;oius*4ILRf`%FC.11h/rj==41oN*'hmTRd3f(qaaBg4fn^G_e;0W!E~> endstream endobj 25 0 obj 390 endobj 22 0 obj << /Type /XObject /Subtype /Image /Name /I1 /Filter [ /ASCII85Decode /LZWDecode ] /Width 276 /Height 413 /BitsPerComponent 8 /ColorSpace [ /Indexed /DeviceRGB 255 21 0 R ] /Length 23 0 R >> stream J,g]g3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H >oOca<(]0Henm9B.Al^IjS"!dTMT<$3[EBDUJE8%<2BY>P+58q'8dLpBf;;OW+u^> ic-`?9ioe8<3f4PPtEoi?bl3r'T+?_LqRl<6"UIphp00\Wf58"P DKfgjcat#MEig@:aACX#`s?k,>bCl#o%bQ(8W0L8<\`>.]=*$.9]O\B>NX:T`hY" +=6NY/ITH%J.Qss+L2PR+6!\b&]Be]?3Hk(l4?3K0f3/P`X)>PH::@b.i-,Zb]Or" ^e*[66c_8F*(Q/CN?1M#WXM`HiY7G$aq8_lGXs5=@hDt0r0u& ]RiWD`5sm]LuaaUTOc!Y2U7Md,<);"1ab@\PNitfT#Z(*KGB^+rBns<'``GSBKZ_1 8`N'm7+-m.(Ik(:D%.]r-i#8be-Jc$KG?>t<"OssfG"dP5T0b?$f[NnJdJ1kPQ1aH 3W;%g2^nM#F%7KuA!.Y%lN_kSJNr?`M[)*/QE+s5=K61cK9?ki]#6hL-*GdCZF=@2& CDpfOD;4e*cZS(;k'<`V*5__]/asZ[=HcPk4+&u3En=a[UnC?0d3\J$\J< ?K\T^qnEZS(V.7rZf:[5OoA*$5T0P\r6gW,RX,Vrr_i^0J)_qr*=(k#hNR^[0=gjB [#Y/n8KNC8joW>/MZP!r,(X\BrBTQfk=@u>-#Z=O5fbM\fC9(]cm4Xb+VFuF1b",T Xqj@V>meCu?Y/_T*Ol=$#2 TKIc*i$nam!"&fn0E;)l63b4*)$ZbdGRji%5J_k"'O\QVbI:h,81;!7jC.:(Qm`mR +HuoC=P3mM]S2uHF*RlWCC6bK/B*^W(8C;&$UJ)NKtt)3!k;Kmd98,UOK]Hde6,V1 ==f/^Z(^eT'#\Ia)O#4,'B+eb-3Md^ud"k^a!i2dc! :gOLE0a"\V(]aZRWYFfgA[8*M_c_m36e491'&jHTegN"7_B=hR?BiSsL'VK)60pf@d/"nQpjisLpcjQ7rZ?dNFq3Ko!sd3T *eW*_%7/c1LL@b4Jkumhk/_k+cqHdATIBk"Nr70qp=\k%!/E8lh$Sim42GV=%`A38 @bBq'^]]D,`/F_NnAg[^7S1^)0.(5Ve-WnrN$%)BD30iS4,2*"a3t,5A0h'Za8"Go ,U?9H!(3(BFbIF&`AO@ic9hVLWQbQHVogRCR/t+s+$gp5cf=@K^[*'B-e H)X>hSfi=o7"\qI2@*-=+5r,[&H--)[/u-fUXX,lVkpRSlB]rr8Mu+)jfq?Q/u/:i 5NE+#ZP+H3*d^/*KYcg2[\h'c(\L1JU#WU=_a*!,M]bbHYaG.8kTK/5K'ooVYJ:@L 7Nj`nMa1N5!2-8+ON`H3!V7k`:_!gN?[E?$nX#Ao"WM<#Jtg(Z6c(04+^dQ6$P"(@ pVtfQ^dVCf23-Z%-B$mE3`tZ6&e@M-dRR'&L@[ps\Fi-;!+IX)N'Y<"8/EWR!*EV= iPmg3s!o7C(k)lR\jFms:.?F@EsaVV3JQYP"2b+[%M43qm-qk*K(N9*d8VZO0Mb:< 5FdmuhET!c!tU%aTQDHp0E[ENkp/<5<,r`fJl4W:-HKR$+oX\EEuY_"E"SQOrX-;W ;%FXE"69K.gIXYa+6$Rt&,@uc_<;XS"91=NU)F\+H9;=;0F_oFpD+C37Lk'Z'WoAf`hJoAX;!!)lT 'TA`uF$^cTiVj>jEquo1"$u&kTL'_>YJ6A.2*RDm/BL63`aZ>XK#Y '6\emnh%C1MGa!!*,:ncBrP+5uhpM)5G;!!GU1+5mb2 #2%94esldI(l?6X5XZOLjq*)g*P`3kU$<`Y0E;Y0)(e5uiO/jj&e*as*KO5E^q^08 Eq!N$#=(+(7]!Zrb`#/V].O#Z1Z#]L?G"D"e=J1_8HNt+Iu\"Y8b&SDqL 'c*GC&5&<6TH"@_`XKY]"pm$$%"Qk.^ci2M`!eo[ #XC?X@'XkVA/i>X!!$74@*9O/`(*'d%7&2G/!^=aCE:\!EhL/i+O1=g"pP(R*'i$U ^]4T-C(4^D+@%+[&]>+Ie0%#8%)B^gJAuD>GoDeK&;!(K0;ou_qB/GH2JZ\#!'3#h Os"?^+(=pd!(J(rW]#FF(BM$(61uA9nf9t`+A^oR5b`:l'!EJj$A#0),$,#CrYr'N .mmhX+p7q/GopK"7cS)Y!'hN6B'DSS2M!t5Dq[*ac2_Z_--$$)_EcI1JbU+VFqij_!:p99B_VTA$<=nR+7YjE9l1)d <;+*W!67P/ErdsF2)$g=+CG^;+;BlE$j%)!!DMPS!#meZ"<_c-!CnORJLEkumgs7O 'P6n\!-/NViY*J5'Hr&dJb0qu`#=1j$_Y?BF)E/;-6M0m+b3f>XemC0Z5uj?6K,Eg o7\KPSfrUr/traV5[Y"O]H&0c.06jrTuIH_)?Tsn!l,o[!#[KM,s,lf7GnRU:2E8' cTN[C+OXF>J05:e$lQrr'`dA,maNKq[l^<"!s'I07UR0d5R'Lg&2>gje(#b]4ohqm +@$&2JJ&tHrZ@i`'nCZ7?q.4A6kBCe$mHMm"ls.n&d2Sl%'RqsmUJZM6Tm\^,QJMl ;J%%Z6S5Ni(1=X@e:C2cYJug&s4e6N@f*%\GRds#d#To'C$JJP;)g;Bu5h)^3uZFGq=#?E?DH #sad^i0"BHO9hMD#saX[@#tYERL.o0$$A98!0.>XNX5]?#Jc-$i/@qLJ-\Dl#PDg< 9$#@EJdC@cXPon!/D@i#1u(kM][69G@$ g`9i,%7.oS_">#^P>L:\"MtKO_$a2hdKJ[cPI!AgG(#R(p6JOUD@Fr*Gb(1DG)JT)GLJf'&t(a4VMJU/.+.MpY_(nlNu Y/hE1Jf)=RA+9^R!Xh(tfHGc=+2Q-+eUAh'S/%2B#9j9TU&#ZnkT3I7?^)HOZlUIm Fol&l+$o]i,nqH[!fc1G4)#l^?l0;[X6VG9D>1U\=&:.b2IX^JO?M78=k)(ne.=q*'.&GGi!^R@l2V>A%q$k/iSd5-@m*\l,(M[C8Li]NFKpDr%`0b) -p&q&s%,Ub@R-5%7q@6'k"HX5bDn)/RPu+,F,Z@N^+]F'kr7F !$OlQ2IK$0":eNqKAm$`5oLl*7<66u>1KPr8s11]mN8-o&q[>#K&RF%-kaD?k<\GL'_6O$%R%%i,f6TX:#$>"Q5.BTUH/e PQ8K7!W]M7TM>ZY\,eiD.A2cd_?W/>OG!@>+lJ:m+H.FN":O09B%L[3&Hb"E5'-d 9 RE[[B@LYD:J0BHY)mlb]g$2!$$mZ$kTX\KQi]h:UD^1tl7@F]43)h3X,=NLO(;^$% @Ph^T'8AImUGgBt!)95?((:6>5b_-^@=sjK0F6'0SeRP;#6frf=b_TTNTXSNg/'": _B8W.I6g/tJg(Fc6jf=;?0?uHfNKMEPF96*"D^Z2qSB6o`N4C&"lNs`&tBbg+_?mXU'0u;g`_4++7G.7>*j](YrGF.Y/3L9 _>NAjINO-D#9[3WTO\;#?`YAT#U#oHTW,"XA-Th`ZX@/Ei.)$i?`_u.!!+8cjt7g- +9T2s,iBXGQnP7=0M@Km+A$>IiZuoqHZF(%Js[tj[kJu@VG_^`[rUiV#._5F+p_WR *)`8H@;Sf71MsJ,hP(i+@@;BE/#6oIZ*jP*+ClEO8UX6MT`PQ.Q-:DFYT'l%,iC]i gU&9#2m@#T]\B5*i"hWPr#NCaH<].#gQ!I#Q3ifX,l6GA%IlIUrZT&a(?*JCTl.%r %DO)>IFF3#TI^4HXsCY$F*o2q@MMb6dK+:?'8K2+6#4Ai/:Gm*+J;X[iYi^9pCj"Q WnNKS!JR?/5Q[Xm;;aM-H(/M&@D0M`q]N*d`T+L\;8f7[(?$(7RsG&JT1)(/#r!%n !'VAGkQYT4+2O$Ji8ICXe]iKp9^lPW!X3.%*":dTY$t'0+YT/b8%aFV`;Cr+@&9i[ 4olhWP^<6c_)P-"%t&>G')#*$aB,*q\_?^e)TlAfVn(:Y_mbNUb(N Os9rb*C8=$!!6H$Af]]F-/^HtJ9OgqWa!+5,QLHN?/\VtAfR?@\mYRC+s#8uoL+5L $(S4p!X6G-5QS]N-Z20g.3:BukFWqfnCVt/Yi"611YR9N,s?LQIJP2h"`7WO$&%q/ U#$2#V@*<:k.Y]prc.)YZ3W9jnCh\H^]V&-FlDkQWOS\2VAa>Y.bTHFg.7ts's\AAXZT\XD#'E_eC(A^?B i*m8t!^ct%#p+mFrer)a^)\)^]0@8Z^^(#@W$D8dB\h.Mi]I?Pq09DY(7cEhQJ*NJ ?4S,q,C`m/+(*m!0AleD]q9Tc+efg(p&Vr`o3r5ITH"&_8cV.\+5@gRS:![(/$3Gk lQ+UPIK>0_Jg'0A2M!UjfH;C&`qr?#Dg@O'-*e67)G?"RR`.UWgL ;*:m@2VM\RP,'O +LWg0@mIma$tBIl0FVFs^bCYdpu%*n-hr(R\uK=q10B_LN/lR#TLNpbJ,s>5R38$C =5gZ4+,F@m=tg6c8SGJP"RpZ5DPXc$)A9""('-6d:uR]?#Oa*k7XtIf(eKl9Sn:QW =d^_-&t-aRRqA)^J")Y2`]nj^g*VlD;gC/3rg>0J(f6jf0fB07H9+/3R*u0#)J]'f c"!AsKK*QfA#ZndS^P#=Ba%=X@O.eF/L;:ug)u4od^i$tA"KAuBG7$"nh:YAL[clO RmYZf8;5bG6b9ukrV[`)BQ9&\"mqre$3@*hG[OsUX6!Z'aD_[tlJ.h2YFW&K-=\.= A0_7K[N `!12")$;9uWkjoT###OF.^3I!kT2LPZE/Vp-u+H6WWYUj\3<4s].s&Mf>gP>,GQB, Js85N8FRE;"8mBP!NnT4YhL6gaEnU[d)8S=qB)drM3IE3%DjqE4i*^%]k8fXa"t^[ ,:%Ga<&cO%n7*R"4;37,4:_JF1BZS%-NjEg$c1IU#2o7u"42E+!Q[;,T`cG?!.#,@ ^bl>SmQ(HXk!hTM,p^87=HD(nG$=2/!-'/kO)`J[#f+P&d8BrROusD5ph;[ek_BHN -qZoIe8d,\B*m2]';TU])+0c&)aGSf$lL&nEaDG6OrPg/.4GLQYQ>s:W&,7,7!f21 "HRQG.EHJM*C,SjL8e^$AC1jP`2!EbTFQX*4.^-W"UE72Sk"N+jTF^?3_\-a/LH.[ ,iDLD$H#P_G!IU RUdXrOGsi]4A+(R+=&DGN=k/$7>VTd,D9`d&E4g&#XK(EA*kHh;(edh3JShknEFE/ !?mTPrsu.&?\h-I'bBeeKVUb05#kWn&D9u3hukYWV^PAq0Z.13[aaY;Hi^gn]%E5Vk"32cfZ\9SG^!$_W.';)^HP5mmrMK`_H3)$E3b4Nj$1F24"]P(<0h`$uE,U;Ge<]t Th+1NO9-pEf)ckr+W1n;r+#g06`I3`nh;sB@1#\_lX/T[)'a%?)$!nHM"#At7MWi=e /Rj>rZ6PGV%-+m+nI, #enX="CR*!@PC.TMM9`1Ll)c>glDH/87T`.>p&(X-gI5"eW6UXUr,ES(h$1)qFV-ia>Or$[\i6p6Qn@F[r29*ST:Q,]-o2Ln&'cpBc3a7ubE6%gtI@+6(3 cu9H1^c2PUE#Jh7D@PR_3JR%Y*Q-6M%Um]?#4I9aK5#n?`(jusQ't/Cabn(!b^;p9W,MmSm5TgGXlBL.\Amp^)E^kNj)MAcF MTX-iLaNr&=^gaR([Vs$%@S!"5]T!9Gc9_^rSs#07\fpeZccWIe541;!dJ X9Pu/H\WjFLr97PTFM2t0F72>^ItF0^lj\52@*t(#)HT9b$PE__-T];8l!f90m glLYZ#k1>V(*E_f_a&^)a9Ve`)hLlp!OrdCp]l@@%fo3&JERUH ,('A%$%U1WJ-Z>Z4?*?2^hX.qD20NWLCe:/fPWP0!!()C NaPhA,\RG@GIe*AK]G.W#],1J;SN>64[@^%$`s]%0*Sjc"e\eJ5YqV4;3TX1"__4r &5n3Q;2*@sL,`@j?rBEQ>6Y(9#$=iYLf6fW98*(>#H17bE;YK1!(D-FJ7oSs0s:WY ;70h@5r1h4^i)R7M8R0(!$]=28-&]X-\,;&J4KtH8F)jd*/&P[J,jNnph9^.-3rJZ `8^AUT^9bSLreqDLie`=^_6c/"b;+I![&V9!5>`5+p^.cJ3]f^Du^FlDO6V:``"OO"KcsQuI!Wf5X"%W^uW(DW@?A-CL S]$si3(!i((^"8:96ffX3(kPK02&7t!+7,Ypj!,>I"22TL=hE7&-`,S>QGZg%%%>% \.eo["+dBbOMD]aEn181*?/rKL-^+dY]9sk/HE#&]m'M]83d6lL75=I_U2cl5Zn

[AJ=$h"-q4^B3E)b9$.'6685+[# P__D1M!.MpQ!Ti+>IXi8R^`DRS,>p9m)tr%bHRN!WtDI=?/'f9Ec-GIYF8\Lr/lnTF$/d%hMPE#@Lf%_#BhEN'uT^ fc$dhE,Q!;jQ@!nB>:5V65=nJs;# K#O-KeVC$V#@$l+M(f)<#^P0qd"&nFh-c7s!.TdnIL"MQ#JK*Q+FW)mj5(W"#I&Q1 XlY>7k(fm[#>uKGLiu79L0F)a=0nsO*S?5D#REc7JfoCC]!ht?:5AUEKG[=886?%D pP!ioKY@+eL&0]7qd4;<"K5Ip=V+oYm#37XO/&*rD:o4)PVD$PJZsA(pbmX&'*-s, ##H!7*GS\AJ))dY!!iU5jphA.!2N@"i>*$a+P\40ee62GT2Ak0`u`P*WQG##^p0-dR$tP A-drqd$K9s1^KH[#&kN9aD(]_.fhLRJ,m6S_L;U.".7Fl1XT,dTj[q'D#'&%I#S[:^N8.D_FimqFOT5As AY>'6E-LSLN$S@/C6\jVa@Ctu(PB4-K,p6B&^hmh2MuX\)=]c7? o%o2<;ht-3JNt.>VRl*%]BdJLl`_9.]m,?P$EJ9qgBipk=B:/l]i=0T8A^`EF+;!YB_aij+sH#DX(5C?Uk4Y-J>)a,0`J"qF"_n;d`lJ&-l` im8`u[#F5LDI`+^M#ssI5\t3qMuYPE)*j5KW/64W@;O""<@EV&J0XHd0\`bcQf&\! ));6$dq:#bLqk'JR#Go2LMf<">0@'TS!^U?@/th!D%Vh[J:91t8qLj[#0uU"Y]r^; MuY7;=?'?:rh/W&e8I(&J.N0?k'iGk-jTbJ$qlLGd"_h?"UK&i#Q!ipCFL(VnZDkI !=2"iIbb;!*f'`UP9;6g(=W\I%3T>N"c.Y\+9;J($36G$!2'Z!IQN(I$36.oJ=$Um L^=';#QSfL!-e_K:^)A_"ookq!((FN@dpU(!G@`0#m_\>l$`_Q'(CF.J7(0.pkJj* 3=iWY"^Kc9fQ.:"EsIMC#>7RB?uq*2E/-,fLA5]m(iP/p!/A:(L-TAUQtZ^H8Hnlo L!W._lcKKH/pcP3K:UX1(LcfHLA<7Q]Z>DOk^*QmErp:enQmL0pi:lj#_F1( FpVRW5(O9eVO@U7F8-7.%K(ou^BK_!h )uqr5"@eu=GKmNZ<;UWu!l0rf#!#O,SE1pE6qFO:_<_)K4"^`_1VeX38/mlRsiF1(:W*mE3`L5 oG.h,n+8jG]^/^M"C^4&%5d7=gLYo4K8^C[\j;6-o_mA5G+1j'PH31q/ft''&'+aM '#&Ypf@GHW48m(t=kCI0.er3G`HJ3\#DM.W3#Y;]L_0Gi#?:pG$MAUA;uJk_S]td9 LB<6F#"H./?k]AaJ0f9K#p99$oMPZ(%gHDAkjWZq$4_c_O8r*8&HDr"EnsLZ`T*7& G$[aKlMCj)i&66%$-3[iJ$QmV,?:Yh%9PVTDu9Td3$dhlLQ@L"%WB&*:^@%?-i2I* #Crf[!W^"e0EXZ"/2[o);#ENg6ZCZb!^a[V"p.-l$4Ip]&1V36#4[:7&IW$3BS6n8 64@_ICT&L*Qsc"dJ$eE"6@GFqRH/Z8LPaT.*bUFtH-40lW-FlrPdkq.-\:9#S`_`G GFiFJaE/LjluKQ9VU=Dlc*Nj44NE7.En-)'q:ZR:-s@0`TBDoc6C_Z(cu^9U;:ot2 LLJ\WT'(t'8=gIqm!P>$C!/%K#:\;PT;VJ?3[S6S\VC';[J !/$QWps9(o@$i>J!nJ2@$\HqX/e!A?a>aP02L$td"+[$s$A0J:0FEEicocf<-nm%[ 3fl jN7l7#WOjSV7](mEe4@HnXZ[&5enb1$toAREKIc]'Y4PTqcnfHiM$p3$]c,r[%Ms( T;hm&EGYSY@#1Begj*JbK56=r!Xf"L1),IE8,2E_L)h@-de)?[;::.c62ih1a?Ukg @,64pb$iqSFrc\GM@\"+"_,7)pg,&!iqV@>9A1M]Bsr=_?;tX?o!?AUR?CPtHX*5o f]Wrj56&IJ"N3N.K+GpZh:VFF3#iK]=!+9nXi2BdK*n@G"8-/LILj2UDJ;+'+q9M40C]]pT(^"/b%]l<_#3;Er"%u*W!FRo4 5d2)0CD7-W:_jll/':THat-'SpE3!hK-eB.Iu.8W5b7EMGQ[;W%cQb:8'(TMUX4@K _=BbpaSIDsfQn':juUQ(m2gnmFcOl#4\&\8*2A16&+J506Gm[AUMtClFp&4YEi,+^ =uI#O1cL3=I?oN`)h8db5b7uB)oI2G%<9NL7i:>-K62'm0t90^FTEKb]Q&t*coHkP k8beKGUX6YU^&%;I\[AYN=io$7jNLj7GKo=\CAo=8M1,(*$kq'R3BA5IKlRK4+m$K NX-8LS"KnkJ1>P6kEPN;'?C1S3cRop+9JLl*41LrM?V#,!c!6*7u&Ef5K&7"IRXGg O7DiF^fZR"m5D'W@FQbp2uj['K)`EL()5D5O;]_V3TNum;F?,qrsbb<((W^=>ST"U%opu/!&;p6bKqkA_$k#g,D&," ptHg#Hs$Gi8dERrZ3hkA998Sn5sVYpW`DtW]"j/7#VbAHL$AJf_<=+#3;XP%ZjVdX s#3M'0cC/XI>bmD/BC5`Z17_sN.HXef/O'>$_DF$;9*UuW$mZN)O5[=tJ9^2e/$:D%&9\O, oIC;sdQp/in?Qn-!.`!+^lUQ@M:@Ia>NBjQK#oPE@H^/dnKp,1+O3Ge*(ph9:;$n( O2EB`0]k+p3O1qf!2+@"OE"?*!(\"2^p"R?&69,>R&1rm[!:r"k3tlkh&:h=#*@4u >6l>s*@#FQJ=HDGco>4[=fcc_PBI8Qa=\T#E&\(FmN"ZnefWpKD[q?nnOA%b'gu"j LlgO7")oD/O3f]p@#,WRDugU(m;mp2$iq1g6k*%qiDf?(iVj^6 T]cm@Yjq;E+g"=t)Vs3X#QREn!&&?PjL@m8L)]!q5]G[#qe]@65S]"g?S2B^^R5oM E:?/=#eiUS'SC;bh#"!j#(Y>E"'EJNHakj9JC#0d0),mg#TXU_W.KW[m(dW!i#(0B EP\2"N&ju[2LlcQ*c_j5LWZC7"8dAel$>Qak#*:Rn'lXlUcq;%g#++e(APTN')QGG -D5R$[CcW;_U.fo_O)#163\[Sd*inc:ZQnqQ1BAgbo33=j*^m#o7jL!)[nCP%p`Jh &,:SqHnph7@Fs4-:aIlln4\*1l'?AIgcu"l(42T/G_#"+*U3&L!<'>,5c!L+i;g?! VuT(D\qO5q_:X5ib%j^b4@0_d!"KLT`[g"7$6V/*!/)F([f+(s![6\:YVnB,>QUV[ 2IgorTKWW6/0Eit"lPOciU.AP/Hc./!NHFW0P2r?>Qs*aAOC.L!X&efF<9eEGTieq ,PD*[A-W=o!Q!4M"jR1"@/L';"6&\OY^Cda"os0I(.X*"%Mh2-80&3XC1&/*@&@Ib i#Ujfdc(f?+m03m?3?m#aat"37u.q9hE51R+&L$kTGSK>@UMJ!+-6=pDHm>'o`q8o !o^)&_9*?5$5$\a&qLo5E@VZa0+uYi'*/^XB)qf^[g*1nqsD*!cq$YQn/Xg))pqh. _7800###Jh*j(VAc[?SFmN0bg(;\oN9CMo]A08#0'Ou:s_>OA=%VUAr+0cS=?m6#@ fYIUfe"R0S!<%1Ap+Di#8a'Jb+<`Os3_"+?FTMH]J _utXs6`2(des$F9gX&lp,gZo)8`2(8)=&$[csB'$fV *]%XX1N4I8F>Z?NNm"XInt.lcAED5I/keJi!!,)I!ut4]+Fop_b]k.(-TWFkjhOM$ ;H/c,Z=?g/3MH]\_:BH^\/id->[Z2)CrJ3I#qdOt%^EBWZe@="`A3#J"g>:Ui33AS 8M@F@+E2NQ"DCkEaoL?J!h^kA^aK87-3>;6!^J"4?mGdr.mqfI!^IhpF>a0l;?@P+ !WW4LPNXG.cTG\>6#[O6?u7:];BOlm+$o*3Z$[U(/f`sm*F[f&!U^sohO6a]*$NP" 6-Pr%`C`GG*5Sp%Mj>KjKdh+U/[T:@MFIfWEnkW\GN&NC+mL,JL`[>^*s)!U61[hc i#_OJ:*K@,Phf'`m$OhF9+k\GX4Yi#'/N'X%jCYYoGA]M_a3AQSs&\Q$S*<*$@cq'r+j**@-9ok5[O]ifHnp'Q%)5$8l6-If^0:ZL)90N<;EG"HqDF5TCM8 &mSgC-M7oM(%O4jI6-:;&4%]UJDLY6:'Eo$%H-(S+Ueo)q@N`@%j:iaJ=[,,-4PMU &j\&^5p-g!()$]o&iQm)Tfs%\m!8X_+5iPuJk9E=`='(rDW4;n27ILu%rW\9(fRS3 TEkd&b\DYT+7&3"5Tg2pLLq:kAj]N.!V649c3>Hd@>3$FQL+=]s"q23+P)W35S+(f DH23e7RjsL@H8=#![ZD#:2B<+Q7!rP3#S'*@DVhD7+r6u9m!io 0HbTJ<\>MF8dAaAn%`Uq5[jp_@djA,#&aPI5\GFoAUIR`"uif62p$HV\-BPXqoZ:"eF=? +APRpJd[\b_Dbo;+8JeWR$JAXg^^"H%tO3]!:UM,p(%0"%q,4-i:IOFrX[rb%sgO; JFX4Yr"$U>&-2J9@,S9"+ori]EQ4oLAcr;<_[sc?'Cj,,H!EI4Q'Pkf@RONbh?Ou*/IYHΠn6-k9J[kZ(_(,6cGI>jo>T3Ql?'ua(_FH 9oRh5!!%HiT`@2@^`Vp!+QMYrTQCI4M?KS3!8plY^g83M63:l>!FTLApuiiN";i(1 H5g@WYe,l4&[qRX[pfgL6*PTBef@_k)ZfLO@A4d9a;\QV(u_84!SA8UPJ18a^741# `#gq2!!$CGVe+2c`E3,f^eLlk9S*_^b2tWkY@bBV(?&^<@:U->C_kuM(;)%2@<<:$ E#0[@(P-`FJSZ-m6c<5"`'J\c6"1S%D+c&@EE[4:VFV3U_7udZd9.G35^jf:4uZkk $Ze@6@QAOBH3#/...IK`RhN!$A#Dt_0-W7g]Bcn'gXqui5QmIi##ll(;V;F J/Ap8=qi-*Yb1t(@:U$;65VZ6"!L,Fi;OGeWRQLu&E&uai33Q#%L1k!gYfEETUlN3 ^'Vd."ou4ATVr6:Du]kP$9d5Qpp:*qX9sKV$Lj?(5^!M8U^CM;%n0S:+oVaPmN+69 0Hbi.7tM[]fX(Vd9EjdWe'H4+IGN -\N"H3-ZV/_\Qp12#md"KGWVQjJRSY@Kafi^U6IM(ZE$3@KZs&cc&8i!5KcB^`WZr =9(T2l/3h=TE52/T?"_]![&Nd!)u0J$0m$c/Renci(sHI;HuNk!8og<+;bBWFEW0; %`([KiC@RSDA9oN'>ZWp?iUc>8/.ao&o>i"iDpY$:):Wk+@%%`!Fcce=qG-I!s)^C JR#l4"qP-a'u=,kRlXPXKGbsQcO4C3^J6p66m84T*E]`B+'ph`IN0>T+J=N/s'bX( ?5PVA+TR09*E2\sJh<[B*J4V?i.N)]L\P5B-,G*N=7?L&\+uYn,_:Ca3.<".RbJp` qgqE6IoeE*]DOu6(dXH2TPthB^\iT4!$>/`!-B,dg&=;ArPB*E+6WW1l6*l`r]frO @>#a3O9?%""Z:8nAn_IlkP eS_oSX2.=a$LNkqAX1<0AS218fkn2bC[a[FMViQg=)K]Iqu6D>^L-II)tWq.qgLaO pe1MY'9.IU*tQuHeaiTa]O)1^bK]DCHFkto#E.!ho6NI(mUm3,`8,OGS1V2H;7bS" \(hGTlV48(Cpk7a8<+@@ke`l(%VT^ b[I^kM:?Q[7&*>L;TRpN4U-X,r6iZN&e+tt6BEH)!^Vmbkla6_6hCjQO<`]]5EFk: qEL&QHmo+`KDZ#^%kq\n5*#g(q[ef"oK_Cc9B=PuFP!g'Q7 MF-g0/;YPNNZeXYcu^;LJ^A9WS;%q#'b8.&nL7(NUoQ"RdM:gY)0Z-In4!rki=JNn"5t9K'EnLS9G@Wg-r(L_iD<H6pdPl2 KqSBkLLKt02A;>[>K10@KNK2pTqa?*>SWn]6i_aIl(D/pAnZKo"mD$R#Qb!^"I0:* Bjb6b_Kbn[+^bR&#Q_^@0F36f$8+E+_&aenJ7*))J"J!RoY(q$@&/:@K5(<',XC&: J!5E@6rBR(piM>nL.7aDV#\VjJ!M3:MHHM6=r7@3-i*s:TBDRSM#\bk8qE>lpoUA@ iW9%LK+$daKpN^fQ@/u%&NYE2=t0_5CoEaoJ"'i':'6gFq1JpEK^nVfQ07sp!!B.p mCshi.K2+G@r[5-nELMsC1o-V8qDTtl&[`<-DCE^M1FLa',Do\@M8_C)2(M7"Q9Uh !$Rbf63^SU#Vdua&def0h^CfBQK8*\^C\AX?4IF@-lbjOjBuFSMBJht"p9uG/qT:& !!%6u$fP%p_?_Ce!#S'2&9J![-m:a99:83/@9X%"g)M aKQ9sa8!p]KFgMj^]4@#J1:\0F:n_!7"` E"6kQ!)&CB_up>?jU'uFCk=R&iW6@1[Jk!!&9j"onXJ+6'@8N^l*?1AEU1=*aK@"oQ!54jDi[BJd]00g-!6QDB /^"PN7QMHlfa'l#*WbS42Fnr`[^Ot@Kg@gc`W,u>c/:bk8G@,hKu>3;)W;069K$R[ g'U)UA<68R!!".jVEb,mO78qM.n+3&_ruT'GPi/*JH^B:u 5ofCB!?c!]"1en+L8b+X!!"ba0d8'`(]XX3gdVi/Ip>M]#T%M^98g#7N$,Ie)PCV< ]%f%U#Pe'#A.0#>Jc6QY+A/QZ$DB=cYQ+ZZnfQf&7:R9jN:ESW!$F=i`df3&F-p9J ipJUVOeb4bTE)ou#)E>2Amtki!ru)XGRIrI2F,Xn#_U#cZ5AZe!9T@[3V7ED5T*UR ;$:UNr!hZeFp3!GiY(;,ItW>A49oPR"V%.CX74@j>KG4lTiUd`_(]jhMN-3/= N!D`>rt.%bY>;Fa"@_PS)kau@NW9tKL\TX6@;&O&!7^DU./sVSE./;T6j8A@jo>HZ Iu+^:-3s=\e7<(nLf&aP7?Fqm!p-PG0V0s&@)<@R80eq%r*bKqFt^^G6PlL#7opjE.g:I3(4cSg"@7nu 7C]fCU/WHUiV5IMBE8c6!+:cd^dlr)$:^1a>&W3LB+mhi%S#e!K[eF5ee,. f932M'mPR8$l8qP.d2)07"GV?"C:5C!"]Q+!!k"!6kC!Incf0soLf1CCk;XpOd$," %I%3Vmh()d."KYZ]9l7[rdSem"C7cCi\W4cO5]h`n14:Ka8:@9nc"$iq]qs?~> endstream endobj 23 0 obj 23558 endobj 21 0 obj << /Length 26 0 R /Filter /ASCII85Decode >> stream s8W,urr2lprVZTkqtp9eqYL$`q=sa[p\4FUp@e1Pp%7nKoCMSEo()>@naQ&;n*f`5 mdBK0mHj3+lg*m%lK[Wul0.?pkND$jk2tdejlGL`j5]1Zio8qUiS`YPhr!>JhVR)E h;$f@gY:K:g=k65g"=s0f@SX*f%/C%e^W*ue'ldodaHOjdEp7ecd0q_cHa\Zc-4DU bKJ)Ob0%iJaiMQEa2c6?`l?!:`Pf^5_o'C/_SX.*_8*k%^V@Ot^:q:o]tD"j]=Y\d ]"5G_\[]/Z\$riT[^NTO[C! L5(D9KnP,4K7ef.JqAQ)JUi9$It)rsIXZ]nI=-EiH[C*cH?sj^H$FRYGB\7SG'8"N F`__IF)uDCEcQ/>EH#l9Df9Q3DJj<.D/=$)CMR^#C2.HsBkV0nB4kjhAnGUcARo=^ @q0"X@U`bS@:3JN?XI/H?=$oC?!LW>>?b<8>$>'3=]ed.='&I(<`W4#r',)#l&eYcg&J,Kb%hB0\%LrpW %1EXR$O[=L$47(G#m^eB#6tJ<"pP57"U"r2!s8W,!WiB'!<<*"~> endstream endobj 26 0 obj 976 endobj 30 0 obj << /Length 31 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.tBOfFTn"!ud0<_f;W*A2kEaL/?9Rb\SndN.qphBunF+.u4Y]3&ia(1ke:d!XVuO .NfXgi_biJk%5_jRmEe>8B=%a2hPK\~> endstream endobj 31 0 obj 98 endobj 28 0 obj << /Type /XObject /Subtype /Image /Name /I2 /Filter [ /ASCII85Decode /LZWDecode ] /Width 291 /Height 419 /BitsPerComponent 8 /ColorSpace [ /Indexed /DeviceRGB 255 27 0 R ] /Length 29 0 R >> stream J,g]g3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H >q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#-.#e@K3LSPQ1`C/j[c6k0G)<\!d" c"mu!"9LkI)\=8'(c2F^J:LHKg'Rt?Ku.ebZoB.m\)DRWhd(CPB.j(>f+ XnN3gb3a5\hQF@]^*<0)]3]N'>eXi0S^6D<3a?Qh+0F/S/JZ20\c)O)J,"Ct5:;fB kOa(J:ZqWFr:k\)+)b6(nacR*^0],UZcV?U*TqG!Gb+#Krr/Le@E`b^-UGCdSYm(F E1BDN[VZtC+ET@C48;iSMq+`XR<,EXG dM.Ze8^YFHdmf;gB\"tu,<[S5e&+`#08q+=]ISnLkdDpu!qSI>B9sJQi(;77sg_TZ\ ESQ+);0(J/+A*/u!73>0K)l6+%fme\+:eLg?n;Sai%P-3J3Xa/JJ./06Aprgps4NM QtfKMKQof^2tWpe?TSR(b_EU:A9GM%,jW9p;9H\c"mifM5)(Af6I2N.i,2 AXhcaZ2PSPfuAH$B0i+72.ub<.SLo!NeaBDQl.Z)?eK/nU1q3=M54ihQDpp#M>8uO UDQb8Y3_"m13[OqRYiJJHS020Sq'k-Tn?u;Ogepjal3?hBil8lL4I?!)Zf.680;5=75l;U`TkBX:\)r\WuDh(,frd4\K)?*/,I%]s4*QRrMh"KDU0RX$ddSl*d J,lAXLaW"i!!>a=r&9s4q"t+$#Pi$5*;SKmPEQ6m/Y8f+aU3UjrtmSA7D[mmO0SFD #NYg9"%[C58XI2Srr0tPrHs7aHirnb5K!C%IIG.H5__HL#K)mC6*utCU';&spuhff <.BsJ!%)&L!.?$m!s>eP%:JcDF%p2&Ya.=B^lZ\\j(7S=+LFAPGf1]_a8c3;C-T\! rtS35D@c:.07ceW@aA@)_q*=1!8qZ#6'r&l5`d%>a?j9"!!NQ>t_s5Yo:!& R^/e870uqr4]Lj@$sI=="M"@4'!ROW@E94:,tY(9/uDV%SPoU*dX607R7"PG8#X*D WeA#Y%p't)K:Q*f_*e9R:r!s!8,r\,X=h!!%7Vi#/ns5U6kAeO=GUYBJ7I5]M80-* a4MjOK?/7m:c`J!W5\g&GRQRCi_&CXq]`lgItqe.6NcOG!!4!3"u$#qKZJrL!?B;b +Ab%Y#hKl2*#\fi3Fg/rPonrl]%LgJ83kfV(P?O!`?6!T#2"L8"J(ZV='%6`j_5i& Ql6%13XUFg2[<'M!Z46/T_KX^d!?2<.)6`d!!@`_'ItKn !"34)4PV\Uc@NS?M1i$5%3oUMs?q"5YP,+]i*HpId`6ie'r<8V.O cCr3b-%a'bN7>'hL1&.A@lS%YUrkI4@*),W\N#P!N\Reh`>HJu?]7j,4=5%Q&He+q JKT/B0X2U1:iqSnR_s"+q$DBk:k+7*K91l`3$R>bItrA'6GOEX"$gZ2\0*Sn^t9XN 5]@19lJOt`q#:_I4H2.iBlUGh$4:;)!=lrs3eq/r8&tO"#'$S&"))feTtCh>U'M6] Ql?@BY`)qHl]\V?%h>Af)'^D.V,;u849pst%cP&X#0=(WTI^G#J,gMR[YuESkSLKR n"`L!"4gZ%>&-q="GPdr$j$Q"#a&LH"fS^JLPU3`_1m2RcDi'_#(l.B5FKS04psY= 5``h&01Ce9!';TaZ_2GXF,:ji";Clen-g%#.'4O\Lhd<9a(2X;$/'u77)>$e/I.,h &n4[0M,!`Y`26poN-3PHQ&HWM1#U(_""<`]KLj0=4`"k%_ljQ+taBmm0 $Oea4hUqskS1#Bp+GTmnJR"(,mgDk'_3m(^_J)kdo-,q!\+i%VL N:Hm&F'Xi>5l/'IVVD9(cd3jY?soQ,FptF3NZudt4h#tn3(Tu8'Z9is$,As/Nb\,n rj_+5'1(7pi7K&YrYoe6VMesjNrlVan-u(#,6/>gc^5;_!2D3D!\Z%++CKXArX83T +7I;MDEK;^Xq3k>a8uJV5p-Kn4osW1!.lg'T[k)+p_]Z9S&t*,5a;C!+=DfS+04rT BJ(?8C5Qh*Q3;l)J",]VLTFq95&ck6)!MC81?o!fFL<[Rf&.h_di3X$1r6\mP 42L^Y@#,<.h@a8r*,rh@@#AVa49ND8*pfmO!?N?Ajq(sMm13M)_&siYg^To/&0ZoL +P7?9FrB7j'bNVXO9-WAr#al%-GVGR@IOo/>m<[/*hZ11%>Glho*c3`,=)YOi&i7b W]gH2n_tes60Wq(8)Q^ OKnieoH3$A&:mq3b@Cl*,m3.@'VU,T9)&F;ocnte*[1Lp?iUlArYr)q,Ctgs@RL3h llDf!(f.L_&/8Vp*!i3:4g@*ki<6K">Qs*`!F_XZ1"IH)EahhG-=Lj8nkK3/l6"qr %h`"G5k-0ErYq#8,@F+Ua6k3\;W7_o$h=9@Ee49(*!l+m*+1f.n9b6[^`VOJ$?A$? d$>lK1(9kP(#Y*[5WT4&C(Xi%!!#7s_6+859+E)%#69>WTGRrBL]Ls1VU&d"TjAi+ Acg0b!A[[m?o%P>Se=?g)cFg'5UI'2_B`M/%thY11)BZu*!nku4=]b&T`/<7O<^e>j>.O;f[)r^K/i/Su=2^Q9]#47-PTE*,c n/Xg]A"[`f!FQs<=r+PHf=BHQ1s!!1dmJ8cUhOENqhr4o$h+H-E=jXLm6ibA]a5!0tiIc-(r_(5^S'ct2Q'*3t&TYMfDneRrr!)@JT5i`$!)@5:E&`DpW @0R:LmL8&&'4A*g?m6+oZ3\7o,=-?5T`bK@(GB2*!!'/)^^^nuWXS@/r5`FoJ,g%hNUV[!"9*?AD:Q'"CNVX0RP,'3#O>F,esV(@)XX)LG>G%!0=Mu?km\N4j+7B]m@K+ODm0:Ek#%PLd63_^&`?aFH6Y"&eTU%]^j8]^6_"GhM!N8,' (_+C'4Q7%X@K->e9SENH)2=@f"3;-"":=HRGjA^MK>ces`C@(:" b!l@S+LWBMci=G%"T\*8iT(GUr"WnF*s!E%dZ>SZif!Hk+5gWL_Eni+Wi!'4I/0LT0K&ack O<>g!65Y8o!Dd_S!O=g>m>020C06]G+B/eo+sqg]%aEoT+K?,B:'JJU6=L=;"3;Qd MBh%9$m9.:+VG?["qUe<&)dX%T_]3c "qaE8,;j?_X!njp.?]9p![.`,@MOY6Q@Rs%!0`2&\aV^;Afs?$&^!-7i4'5?EIqjr T1\E#,"3L)>TeRp']CpCqB-G;3MJer'B)+g_*/MU4;2."'u<9O+\3AW>SZ9G']ER< JT)E865T_h4?rp3+`\`VjrRZ9+VGb1iAM<925:2"*.b1)+Z'l66o.+tW*4ig@7R'n 4;51D&`Gb^i>`E%n99D[+K/.n!X8]k2?n)tN0#!5=qDr%M@l'?+Gt<63D4_Y$\kAm "'5CH^bQER?6J3U+&Oj;TJKgs/cd-Y5lq@HGZlH6FfXLMk6KS,JZJu>@Bk.sZ+D$] q]W5[6RqN>+IFo-J7900asEa3*k=Z`qY@>3#I"8KAO\S`E$X,R4;C0H[//@$65U2` rY/gN(Lcfq!^!b5$3n?G]jbkl:<"L'4&*RY!$Dq4l5V'8:*98;MLfT(U).L1j*t^Hrc71ccfWF=6Sb"WIu3);$'YjB)M\_!O&,bj'B+7[kN!+`$;((Bb9 ,cFNHJT;YP1`L*\#/C9X!P>[I('L?2M4ts.B,Ch\=hPA@$QNSo4*#1jj&8!#Wpf3Wl$7"/%cG8[JTu/d)&0dm,qri'GhB6.B:0 e/^jVTjZ,M^LY1u"+b.R@QXWU0lf#8+5f"n2OXi.?@=!`4i.*KrINTaJffR#g;3_$ h1aK^\-bP0"rJ0!S5LPK42$50!5Q4SW#Lii2Z]H?E:+^h)fp\Z7d$3DA-#CqgV iP?GJAC[C\'Y!3K(BbMD8g-bL\0([\+M\_;+qt;kcb2Xt #_?"lJG91S?4NKI+CISQEM=THXqk+l+eZ#_4B9%a(a&aq,-Gpe,!ZDS*U(@%^71c> TO!-.)ur6'&V(o1+o30PS,hDh+@o<9i+*(cE"'R?)'Q@,nhqE]?6Ptr;-t!D6@2IZ 0=G$6b8b*\,"KA6>U"`N%"]sbiVn"nOn2pRKq\Je+[eFY2EcW/[DF$ka'9d<&0>o$ -h9SJm84;IA%k.V,KF+!_@?X@=X6A 63--^!$IA*1`d'%J"pE`J4%\g#6Ul(&D4?r0c>qH?fYnMAD$oJa5i@kS,B#e?8?&s fJ7UK@"sN1m.gHH0dHag"TioFrA-&E^W/cdUH)%57t;Con`77eUORqA5_lF1%4>l> /!\3:HFj;?5L5W5+GlaPKIgKqKbCM<]j3;D9GQ:gP/LodR#L0k0q?U%Ze?uhX&5nI CLZ#BG(Zpq.>1D4;=VG:1'[di>0lm"7"RW39209Dn6!LkG:gp%+9Lg,i5.>)D'kHD VU9*72U*"[o(;s31RZJcj$fYmBOMe'2u-Ve/q#T.h,rG0O4?3Sd+rI%c1%T1Wn"gj 19k#co_Fd/hfliom8Q(fjnYDELEB\Aio2/E<&"P&=^nT\J5EuD(!#ho#).hBSq@L5 nLdS#71i'e'EpK`9U"t>1..$iidQ9=KAcf$&]CY.9+o0G.SCCB\J@hu5\^cFT5LF; *[&W&W\^:.4F3>?EZuE"TAq0aAL$?B>_[d%"G3)=^^R#8+6T!q)8N&XZjEd`\JeJ; 8,:dl\tNj/BLq[[I^9JRq%Yh2i#kVpV+G4_Js;&ccA$r46ElEjkVsDcT&nC['Bi9H3#!(9KeTLo-3:l-;G,_-,&rcA:a3eeIr+RpXLP(tfBDB0u&hCO2B mDb=?C?Y)8O;6tKPZO-\5(D2m0]k.mTZ`j>K>?,".Ehfe;6AAP!V:pRCe[hP:\u$qUDZSlHr>VQ,#ju"" UY0BEK.+GD!tPLp+)Vu"0b?6N\C_i]:`/1rF";m:r^^+`r^_ZPeVQDnKd_BH2.GLj@p ._@]9Q+.;7Tr$G.!!,7WJ)GQ8(Pgq!'Ca`Q^F1e;A.X7laCC$skY@1h@nCh^R:l=t P(@/Kb($"8B;gIo`Sjp%Q\CQ4>8IIREVC7Qa`:W&7Ib[!(M3De>aP]I\JQO_@#O47 0ErKr#U`%)]+QsZM/[/Ni[*67jgbP&Zkn?+Ad\g!!>nq OanDa^]7^`j6S$Qdp,DYR*$N2<&FXjqE`AXa<%,SIZN,651MXi*!h_&+>K@$hSW&53BQj;rt> E!:eP7gEGC#QfO*!l7u#!+:T`!UsV(eC[#.Va,k85kYuR!>pb`PVP^.D?Ya1C6mp# %Z&_],_jC.FG)JM#f7&U6(jJC!VgmK&4upA3@tNSm!ON+`!T!!dNP@GIt^m?6eq%E A$4%Y9S$YUT-lJcE3+;j,S:Be =W*BG+:n\VJQOg.J>3V4/<'YGGrn;?_];$R4UuaR=bUPh($$9`OF`3PiGu1Q_.83" (,\Djoa35nQ3bk%i8;A$L_jGufE`T"bCY!])<5N:K9?-cBRsb""42Hj;@?+<0UISn )M8Pm$:+[]hG(B0K$0b?^(!YWu( h@_D*K7ad8$qNX]+(OMa*#=1%E#EVK=`Alm$T`J7,:^U)j5jTRXrc4''A3lD`YcLidO+nt0A;`-%%_r'H &+O?@%%6l6!D!1rZ@9qa!_Z(7A8aK&2&AcmnfQo-)bsSH6,A*M\.mRefg<5UKLdUDr:l3i6?`."f$W &VC3Q#JgHn`/oW_U&.Dq4Xm4LY^R*LKa:pm/4U2lAqC1<>D09,&BI2$!^M8GJZq59 _!i3Ci)C!`0GFaW?l]>7:^\`1'E\=`X<6Ip;,^?u,7"!a+eV7CKYi5E!IJi0^^LV6 A:%5Y9*QL+1ej2(^bugho)@6AYXS9(WJZ-S&=irCTX:II/jqn;%]H238WXb'1;d- 0j6u6]`k2/-naL_#m.#-,6B!;NBt8p_3jm- 5`3sMnW64jQqXa+*'B;TCdEVSkli=GVp7OK04BeGV?>[,OCP-DViQ3LrBF.0&./P< PE&Fh(`NQc;Er2]cq.V%!K]rF7Y+NZ8Djnp&'Ch:!"]HkTP-dpOENd@E/YgoAqO=/ ($hbfYTgnaS\!ZIO+.etK9n]4F)4=._VkIN"<7r.[*f+6;#_=6PYVSd-i\\fs1ea; ^_?bOTRE^^a1,m+*BSG$Em#J:>m?At!@.ueU^Fo9'#:FZ5eIL+&4qVT7fbkm+1Qg& k_"ETE&%u`L?k?^bA0/SZ+2S.'_A")I>TA?g K7H3ZKd0>J,>X4'0t@$]JcJ&"BS)nO%77uaTW!;S3&(dp%Knm,OuOlqpj>3FPCWF^ "*"p.n0B]LC5j*5Jj=fN4,jM$[fR.C#Q)9$\=pJ`jbAT2L:fgj,XTEh5mFi8#*<0r =D%j%T8-fbL7i16E+Xi<@g>@a[oju1EOcDn*e63\!hj--Y[RaV?A=qjWnOVnYQ+fV V[f`?4deJ^Hbp).%"d\AJuAnZpg0PRKH3-4$OCK3Bf?#H56a(LJV#$Kn,n5T:5(-6 KpmIB@WI79N5]H1"FO;Z0J*P+L:IFk#p9b/3$\h*?\#'uJ<5[L5W8s^$O(3.#l&4* .5q5D<&mJi$2@ebcm].>I#%K8SAJDW1i%n,'*Y17Y>fBI$lPLm5.[DR!9eoekSAhr /[b.S#Q&tQGp\?g%u$rFQ088PfRF+pHj1K,J5B[1kT9mLB.m[t0lW<:)8#l%E@;*Fuk-O31&!72:-cjYFA8d?2A#NNB.,0)cS \uE&6c9&"!mE_+>SQp o1q>$cW'R5*;!$/0E`LdK,"!2#Wi8RfT)qaQ08:%#U??XC4g5cUECfeR!o2=;M@)/ "[*%9AHpM(#LJ//Mfd4`b@8c4Y(nu2($H)W:fG6]%u9fhLXO-Hn:&74I>;ce6$TVe N5_'l%>X.ZJe4h#aFsj)083MOJlN/IpdEK=Vu^je6fD.dW.TUS"Fr`?;F02<9dEV: ,gqApdVo<:V(0p$.KD8Q!!!1SGTN#ia:^M2K&#;i&:]8@'F-4@gWO%U?oZD 7+b3VVuh<,($Go-oK9+WRS$\A!XU]KLcu"L.00EAK`i3F,X$k.A;3?mLM2*mpe346 ?CcF<<*`.RE$@[**YKTa+Rk?ld\E#f9SY=H!5Lk!W"TD7'*p!#&#!kFMk62l]X6T_ #Q6:`1n2tM?kM=cCfn&L9"&P *Gph8&;SV*f)ZomYYU><'8Bde9#?tpVi$SUW :/u.K$T/?XkQln8?;RR_Np/J&OD38`Eg!OqkUE\gSMLYUJ55X4kOog=<=Zi%*E8Y(UXLq&93Ij-WU47=7GM/Kd&$H/("7=T[_X&0O#qK2ZOt%!Or+0@![UQ[2,\X cEMpEr%3d'inVri'f_iAS1b.-!o"XR"2K@g&?srk=t5F[Uk0.LKP5df#W)Ya=9eP% [(lYG5\pX$=2Dt)"GfOA:bZ2#&r5RH#UgEhdnTu6GqIRh@=c2OBT*-db(ftHLCaFu 8:Q:Y.L*BiTtkpSdsq\u/Hu7aL&_EGaE<"9HjBEQ\#:TB>L!3KT9NL&#'Y)!jH/K!&fP")1l7(KdZp%=B'r=#(U)FK^p"4J11N_!rsI@JnWD[W&oWN *!+,C#=(*NaF(/ob(mc&j\0)n7R[S*$&.#;[,=#Xp(s"X$\Ie6Lb<\'[+>9YIaZS( L].Pb5RF@8N.XB$3EY_ME,#W7ec;@?!K_oZ]4M8?*iel5X+I8l@=t<5=m^59e:ep%gR(pJ`'<)laDULm-cOR@YZlnX97p&#moK,MB(k\:p[;KL"0d8MR">>5 9$9ieCL3VZlEs6c*^UqK_>&-X=ETB1EsGfhLKJU&89TbDn6WVW$(tmdp]uWfZ\pXq #ETaP!&fUDgAko+L&`9M:_nTV&0pI[5[b^a3.D#aK?:f!-\sR6[bL+cac\UgKW3O2 WB0A\4ie[;$[%q-4kZ^coR-$K&#m.Q&]Wl_p8RqIBG7_LX-nHL:8#^ U,Y.q[ir).#R>lg:B4c-(DK`)-j,!^\L<_1"ipjtJNSHmAKBt@!.cYN0IDK]"b:Al !!!:TTgsW@#tJ)#hfo/%(^U2A9n52Bit)=nVuQti?QJ>ZL0,]$E2ipMH&'IV#=)^P F3oe^&d\7HKJ3E,Lc^ 8d$igP>J>g]m8-knVUW1;.LW42+!&+YM/dZ_T9KpXUcrl1' 6O*'/"#tQ2+sFkr\4dg7_Tro#WN0G_X8t:)$^JUjH4G4/@0BtKOhYYAC(<,E.)\/9r3T7W^h$2@F#P^ir4!)0&,!!>q#p^&CrIKst9#Q/iPG^kH=!Z>1o 4A^M0-l!NQgok&NjnLA,n9kNIHA!,PLVHLdi+%JVAV>E!#A&2aF+juaY^r`'!gj&j &1@\`kt,9)!=1DOAWMX,)5m>k#)sZ!)-_WQI7CC]M'+?%O9C)KN;t@28B;&:Bfr)? >6%GT!"]>7n-'Gd#(3?L!*@3k!!DH#!.Z0p!AR\u!OM_B4FfrMI#%tC&-RMmCP6)O J3[`Pn/[#Z&HXEqJ4K[_pa7b`e$%0a>kc$oWY9m_!J)ui"07jlkRfAr$AOheHnENL B4;K$V2k%$n;*B]:e.uS#QmJMQUL(q(ab$rEW_[R^)2H?2^oEuRKC!4LLhXHY\@eg !!iQ+"Ts?B@)*".C(C],6U1ZBq*ke'C^EQCGf3il8LtHD7)LaI&r&^p%R`Yjq#[<[ ,#_+18pMn09#&\kE#>B@%Y?7d^hMjH%bcDf5QV!@C_-RW3hPMi(tJUA$&"tpBDX,u ^90-TMrjg.K#D'$=8$eN"bC2l=;U\>$RLX?@5$O"PT-="!X9(Q'l"3`"[Qi9E,`<^ *u,?D5ul8/L.C,HkA LLX+%VpmR>+D/u?1]>;p^k`.Zr&>[04:;,m#AO/VJ,jq$JqZ\XH"!h`YficKR%JB.H= Jdt9/]ctZV=90=#0soT)7ue/-0n999^>&aAGhf>._i',p8tkb.2M>K=i#4dG(sja_ !r1%s!!7E'2?CX%i&CmQ&cOTm^aS+qMgtf#4H;Z\1-grZ^]652#N,_2&;C0;)3?(' _LI^N=KVW9,adis$E&I!59G[&rbW7iE=!pd-ksZ\TR[k#;OeMMI5a.7Ks69VCf-@( !!^"5EW?5h+AMn@nc!QZ"VW!h&8Zlq/[>TNBR_,d(]\HGk?%^`1'*3`a:/1!+D$7M 61c=h#Pmj+P)OqX+5$jC!1L\Ib9/G@XFVi$*m2P(B-4$K=E,?/q6G4:kOG',gTqhe Jd)J-a:$b-NO7[!PDBiEL,%J0`mlY>Z!Ap4e"F/J\d%hI nFD)$#]rmaTL!#>8H8`NU2pFX3i!i._?(-MU-;HR2k](gXpk.:,7PQb9^V-W6$>&G (_HgWM^uua?$!e[8?nNrtM2)'uP])-T *!o)Z7fWMp@#t'?!C3S)-Z?5=Rh?3a!r*V[InbsO7?o*QbaP07R')@>+WA4J)-Q%*$@,d>X%Uh[S&+S@8 #?^42,HQ$JTue_'8E1]MN-#Oa]JtZ(i>dK/Dp&`u2MTT6)ae.ONIe)gj,""NkKLmL !IU)e327SS,_6+a63Tmn%h:u]"G?bA&O7d<+HOTS$aEY``Xp-,_[p>eJW)8e0ZP"s i*M=mF>!h0\",hO9T'Kf)+=Or$mDi2#BtWb819oKiS%a4'+"V:HiKa,#[Il^!!'eW "9>C_L="Wt6NA,@U=buC.(i8T`u2ufFZDN"XM;+Q"P#DCaF&s6/k/n5)(Io MLlTG!gkeE!#/]L`LI/5BgDg\d!,jQ+?G.b+r_d*Ydq!r6%hf/)o-?f:c)`^OcT\N ?qo,fTkGs,"">(;!%t;X.u05d*lErX&#!%dhm!=b6_Jo1RduF%j$'-Z@K;KNTO=)l!#d*[ E<$5c5K)1S)M@s*Y5$QQ";-_&+Jd'ahuOf%-ib1/qu@(&+:Q."O:]4E2%*4n]EVI< %n$8?JVb@2_C..MU#5nVZQKI(Xo8EH+OppP]I-C'`>18NG7W*T3R!#JILBTGOC6WV hL4E-[4oDJ`++*a($dOrMPPgm=p]]Z&d;[IrdmC>;HW^Rae6-ZJC"c66#/Lb!439$ ^fjLK\1IkL&-[Z9>Q[4s+pFW9JIGEJ%M/%K"+s!EZ_6/>faKMGO4XVf:dtM:(a&rm =:9ZP'H2bjnIhVDD2\I2!_)*UIZ$aK!qC5;1%miEY*/CXnfT'V$e_;n'GE^+N#(`I "9Pj\!!hKV5_/?F!G)D5"qc_="$m)@"udM4r@gLTOT,bnFGFB.K92*a(E`.3la0[' !;/>S!s>"oUCcQBJN/#pg!['U#+tqu)0a[<"lbVS+IE-g#i39HGAcma!l.k0!IN:C Da!@eJ7ec;^ao_OrE=UNb5*%\"(VtVPYX2G`WLh*4k)4i/]Rib$N+7iELo&-pu`V= ohINhWig>pM#S4aga@UP;DS>V!WaOiJ(0X+",'%J+QD^"Mh.`_7_%%i6X4>bTrp=D pu<>=HuM^J_Dt*tj;[-@E/jt;3JU/jPMK5DZV\.^5]?]=_kh!bOq#:LG7@8uZ:/r# 08Klf,@.s@iISh@-O*ta+@9=_Lf+?U_K\f6#:*3.EU#ZAGjb(=[!2:BgcKmcmIB$q G'O,>3sS0C*92]n>EQWOJH,icj61g-d5F5]s'e^:Q72#9+p,QA&cmMJ#QYJDm/U]A !GBasJp-JpJTqS0!DFYeY]:K[+:O^S,?s[^#^f,YauDXO)%0kfI08#Q!!"ucM$/2- !,hc4]DM'qmJI&N&*3Xr07N@T(]aUr*=JVr$AQr[!mL/3+6np9&73FFHT%T@@*0.u q?$`u'4F32i8PCNmLI>A+6u23MrNn-7LT&#@71h1L]IN?'S+??5s,Y9,TU:` &&9:f!%Oa2'Z00fqa(Je6!bYk\hIM=!@mYR@6?:TA0>97%Z#$&+pS'V)#p?F!MQ4n +92Rq8EE.!)W9rcJ`7b@0Jrm:!J(@p_<_D7PSuiR$/du^6!t3G!"si`KV8#RiDoq$ _B&aE#G?I'!71atg`E.C!!/r<6$`M;r#ajW#U/ITJUd_$1*%O0!"p#n\i9UFE&0Km+!PmDE!0fnQ rX^1P1')K&@K%0q!#-UU*h]kC!9an8VuQg@%Y/XKJtr[k\cDf^;FWVfi4oW7Xq?2B (!;jY$C_f!A-,"-"+caWO%9Y0ckW2V!FU-VcJYZe&F\Tc!FTRE^]FSqFpGf,!FU9[ ^bu3ZF:]Rf$)&IZ6$rY5*4R/F$"G(p!&b_RrZ+6H#u<;_JC#7oS."7Y(r:A'!WEhM -5'%o%cA<,5Rmns/c`Zk"!BSI+DM?RliUY@e:>%C5tD'-MAa79#p:ZC+jL.>NZ=a% "+U`^!Z1of-j#7-*jC5N&b7os+qkgfih !5\(D,Pr8a%*rA8)$1``5R%N;NWt'q'gS3A^g[Z/WW8\g(a4nC!#?V/0Heje6.W.=oH"&,\IR,O.-)MD5T`;P3+EF&iC,9Y*p\=V&#&t6iW][^ rYG*25/IF9+oY(iAf=NqTVIGH+dO52H2oZ\0I%VY@@.tLVAd:L)M+\%iLh*?Sf,Yg )'O_OTp-ApJf(2E(]eFi+aOs@F;=m\(#`70_+6loDBQ_Q*.b^lJp7<)YTN5i"9FSg c!V4Dg?YZV)<%q,JF!p,790!F&0ZB8Z0E4Sk^UL'!2,,M!5]=&dP4%&*e74&?l[mp "p5uE3+=!K`#QOkpeks4+OX./eHd:j1_EH5:9e%A^kY,VKY^=H-\*irl2+%(V]!DNjZ('['=)Sln'!Fu9J!&MKf:;F@L.KXG.DB!#p@s0e@ J[h#^[q%e5)aU\I!O%)X1i@'Uk>h?+m*OQY[E:eW!IL_YJ- ']D_"pVP(q*F\XG?iUBSN.`;R'qtVj!eLVr dL3r8$P(r/5Z/@0\.T,/#YPb1Ap+>Dj;UDm%3Zfg[gu90!Wbt/OFmZ[!K1(FF<55: Em?j@_;lWeL*9qk)!q+NYGoF1'+6W!1e;p\cneo)^5V( D9Xt_J6R*c+J>0/\$Rh3)B9n+e>9EWU(.9Vi#Yk?-oWs_!!jRXC VHcWbKOs-!%jA1>!FTsLrYpE%dt/P>6$=>P@6R!sK\0*DC&A=ell0XVIU`EfJM086 DAAl!%\WM,@1!Qs%M6Gb&Kqu')%I5:&eP-Y&YTsP+VkZ@(Qq'%P*mh`_$hFDp`SKK *.d@)Jf4[kSf?Yl#3"dui%,Fji#,q<&4**)TKXA(n7*d)-K:U!_]TT9/.b(f!!((N +gt#M1_4!Z':7-$5T^9jj:sLj+Q-EE[rrmNr55: g+k(EmMr5aiVM\.(\o 5QR)PY[AKe@kQa2%D_BRJ^>$[#T'21;8CBmMWOs_BEfS!!2*R$/QAe/4t$ji(EkIB -eEOci%[Iu?bjH#fq"Q5"p:N1Fn+`9'C2+H*#bMC3'[NY']'t+;BJB"#CtMou((8`3L96).U%RB(WBac*B'Yn/V^pE`B,9RC;CutbS %)E>c_);?[@MM/\!#%7Z6t@c5?2su`AtfR@RT)",/.cE8+eVdU3b*-%!#nFRGTn(t J8_7d%O(qq>mguZ.f_9]l<6I&'%VXAiJ\[!DA;'.'J&etJ0es.O9EDj*X\b]iN'>Z 7M0=&"X&s5j;\@(>es-\!!(WJW?#/1@Z\En+cD-n6"h%-G+E&d(P-`Foft+']Ii)s (h%M'!FckEdMK`a)*>E7+d*\YVB=l-Yp';i<:dAh(^"3tYiCFm28?(;10b"$?q]Jg _;#jgJeOiIRm>t*J,fZo.KFu%!$DX"$@X@RAfIOf$3C,?_?LQ;A[3PD"sO#VJeeTZ au5[().EFbJ`Ie:Sfbdt(BK>!6-^8CQktSQ&3M(#O"_[V$\A=*A:+L\NMm#l !.YI]pcp3b,\!I]*;hX*:(eMN0tem)!2-qlJclf^3HlI1+J9ns61**P#e-Zt"[OQ> +:9RRDm:GO+8+P>JB/@X*\sFN&O@euh65QRZeF@h&FIn8pufZV(]m!7VhEV7f[=DX Dpe_g*-jXoJSH)2`"30d+CLC<>KS'SOrsVo+i+4!+mq,%g)2':*!*>b!Pf^)=_&"u )Zd_nJZ[k(cklOn7R=doR-Gj14s'@;9k%iCL3<\_H(H0o+'jI@i@Z4Q_utVUEF&&V JG9u@N%cBU'4Dpq&Pt5G?J->$gcYo`!QE1_%KM%]gj,X/!LOc(PNcD?l(4C/hNf%6 =%iZ&"24IQ?q;1(n,ZojM4ahX_>Y/0fE8s:e)e0s\CN?A"9kH=$fR6i0Z"qtC`(!% (r0[Tr[m<-('&a^BBB07!X4sbVA92Jn=L*Xh[f6!'C`hS1%eL*6('RF!!TOrmpU#S SghiUi,gLHO!BS`.]rbA0FC7kT]*e5]k/F:>,:A()^PS R=g_G!RJ'Jd>0*Q"b&i^Bqbj$YQ=f^"kgBsiCo9I5TF!#:+6SkAp+8bO_>sD&L$J] ?iV;L#S[[[KR^b`JUl5*b%4J_Lu8@kmIGW25`_!#Oh(c6;h3?]FBDu]oqiKtMIrgoY/j.b`6MP4%$'rSHI !bMBOO9NpJfD7mG#];laO14r'Rf>e)(4ZKkr<._%S*Nr'.JiWWPLIDR+Q.^UF[Q5) a[c/iqbNd6A*4[,$9eN3^Vp0R>Q'ooJJq_n*,MDV*t@Gq,3R/5LK^i!A>#9qr&OfZ Xe4kiOjFN_J!Ppep96m/8h.U0J=LD:q5=:#l/7;+UJK0'5Kt24:-M74b"$t0KEsgC ^42t%6i\lUfiB4^0/^oEK4VCi!SIZ3^'7O+tW(7"L*2Z]qo8ON^Uc#m/`p+1Y"k)Lm]?Me:[njk9W, +@=3\+TehijT:0e=A81e-Rf-&V$__S;@/ur*7PQs]MsoC#Q"4W#r1-t8>#HL*&.\s )'j^Jd]`]TMP;@o.N^&0aY^`6W!lqO8/lqC+@<"jB1efs[M:Np3=@.:,se'sV''JW #l[)Nj=q9:OJH#"uh$ jm!%2ROOcT(n]t1g&_6Y)?*"J-kI_P_I*?tHCs;F"tD2.nT\jO7=kGd(WFdZg97D' !CNnVRJq?Mko_=$*u4&F'-@JLr.EjMV<`INkL'9WRg-]fAf[`LJmOu]3iiA`TEkO6 TAfhN!/SGn&S)'Cq9&()_3qr3JmiMXJIH,kH:7f6Z%-6mkie1;RO!l=.iDr0BRhZ& 9c;;GB'[NABtF@2VGr1u!$hlD5^iugS0e9P:^(:4n1!D5e?Y5K#A+U"VR;7;/KeV- s23mLTubW66_NE= k$k:;0D&AF[Q*uM_M@A#B.PX#7q@?1EPG($"&Om$PNpRt\? K%!7j[A3qX-@p_[3S;85raXCqDa:9#3A7KpI^B0nNE,n1Ga";2oS;M9Q3$ci$WA&'E6&b+")R$'3LJA>M[@KdGOMo#JP +I<0!OoPQ/#7@+,.0DGh*(CU+MT"S!#ro;=5U\o4!,MXc(*ipU)$44QW!7e1AdLbr &I!\U'`jt*%0&pjV?pE+1XJHMVF15-"7(h/_, $o+&(#MA8_K(O5F+jr-$3;FX!*.BK9j?+4#UYWQ3JZtXEhU]7M31scKKt5(,#CL[nIc]> fJ=!\-k:tsAdEpS<Q_14TA5)WH8I!2(\kiIDdLCsJ$'8igYLqGqYoNjk/?G-T#2p]Y8C I'""a)9+1?.mRJBJ1rQY5QGO35em@(JLDbY0Ol6a?kJK?/-#dnJI49i!#VVHB8H1^ RjVkTO#ae/5k#9a!,)p,^c2VEW"T;!L^8N=4p[.HH5H_1!\873$A5R['k:3mNPSL4 JA?CG_MeI!iK,dEpc]O)-oD)m\hs[W1`:pBDM2FX4&\+e+2dGFK,>Xa!!&KRTPPna Tl(2;W6lLfMU;tZ8<+@GH?f?jO*XDu^j; r,2Q91dT'Q!lD8`;%R[n)+Z`)#"0G<#a,Z]9q(2E!hg\?!Y-Qn!G<98BO6bifF.k\ T+h;W.>dRX!!@bC#ZpAjP-U(0L_]kA[E`OfO9c`QBU0F._uMBOrW5]"s-;5q"-)9= 6:=Al('"=MN00NF4q#pO7?=V(Xe2,m0:2(IcEgGJk#uZ/i-TL_q]bU1%8W 0G"O](*_Z.BKu204d%na#=Tb?h]G!d7t<^c=V1VP&0[i6_e#0(U-&?BIE#t$[O*Dt2)lZaQW3@G#].Pp`[iS"=Cm#dFW&g9YeKcj`F1qrk+ -/`6g&1%>_JZ<`.X*@1I_rn,mRL4\:$E+L@#\,ccJUiQ%/P(o:nMHs?!/4i2J]N=q 5_4PCW%5AJ3m7f1'F0MC#`M3TUJFd'_BUln`S:pB] U6(FdE-&jr_[!,`L?(?!fPq,REj8JQLcBU6fR=2?H\_EA_tc+m'EiqW"pCT0ZZ(>I b@;sU0=!8tLX7]egTV00&I2PC#lG)re&)F3BSA]Q70lqJE)qZl;[#]k"ZTM96rl`J !JN@3Keub_-rMEH;2$c;\M+O!F#&7O6t92 !^J+rMuLQ*%ZB7)#PuIB."?sk@"EPq%]gDYR'jl*`eQB\Nm\[LF:Jqgdf:h'KFiBY pbWW,Dat^4M-9mK:t/!#k6'X<2]/J`Bb^lO?3N;@M!,h/(qGFsGH\B$+b2obpb9`B ^5!p>NBqB4G`i%L(]eua$9W):Y]Ya]5G?_2L#@N8LjB,crIa$D_Z1(F;u$k>E!A,c MQdtRE&rgu#m[h47]YF189Q?dX2a@S!4fBj1e5WENC+hY#<5J=Dufu1$H\s$J8fPH FJ0Z#I0BX3!bclk=:0eg^b=K?b&ThkJR9N)+.=9Vr-"b9d1W*+hA=p:ZNKs4[m8)e1pG;<'QaZP"] (i;n_m0,K9M"h,VYYdWCrh+X'cA_!_M$GMM1]^\dOqcb$ciT^]d0egE:)M!*k\n?M p&jMY"3Bq]0KfNB-4'06"V<0d!&+K<0*;NYK,"/XfIqj?0Mh'8:TuGQfI`P+XTFS6 Jm_6XgQMXt3!p3,#9[B=]^1sZ*sYWI"@+AdBpjS+@o0!0+b5i?7%0'JCkpd=O'i"k,Ejcg@t?U]#)I\^\9Nfh @C[L<%*5>ufH1HFRY9mJ#B50IJ-q)D-&)C2JT*eH&o.N8S$F^hKCM7R&AEnOFM*_N !n_&gE!_-+Hj'$6#KV&(!.Ta5>IeF;#*=7e^_=i2JcPR!J5OQLfDl#((][gB910Ll asG5=P_T6Ke1gTLX?[S`Itq]HL,a[POJd^B@L+qn2SbB(-s.Y>!!fH2+1Mdbph)Q3 _Gm5f<3VO?aF#BTdYFKFL,`6;i$\US$NT9(M+A!U0OtKG=b2GV!L_2i&:+P,ec5bX )6j"blMK,C]7=!0Y8.Yb$+A[eQ8q6mB!,rAI0I\!O .Di"`"=6MC&g8p<5:/H::rP=#c%B+a1k5i2!@])k`qifLTl".aERs:Fsj6o !e>cS@#inid/ZUYcM4QhaK&2:+JMs?#O#9BE'.=+X'33;K=EmnKrtN&2Zl$L#P`\! coMA]ItW&,"3G2C/8To\U7f2))pjk&`MO!D[nDFR=D3crGR?Q`1kl9F0i1s\5Sf-% Sue\_:K!o1kV*5&Ip7aE!Urpm@f=n$OB=;A(-hs(-oWZ!G;mTo!=1[f\2r?J3/958 "\C*B!$95>JHF25!FU*TBP<-+CUoNL1/5hibM*EgCPVet(.:lI=98K!irEI?L\P?_ (gdJ\BEktbL@B&`&UO^)`dj.PQtqihH%^sW@*\7m!Z4U0 ,!t4FCBGtl?$1`,b2Zm>p4LG=L@BZtcjg%h"Fr4[J47-YJ/JB/Zj=Udh-#j>k* rcP97FGiD6L%$n?TJG8@^5S8>!O.$-G_(Ct.aL#%im*%9:4S-;B]pV#!-iU@O-];V4[Z;>[Y&??"9O;:(d#!ccM U5&_f/Va7*$U?6MJ.;gOH"m%QLD)Rr!(R8*,mhRb/%@MB'.$W>*\oX6L_9Gt.Js/g EYk['KF:2)^`NeId=G\P"fQtQ/T(ki_!'Fuj6?I,(:":H*:.+m=eU1sWO@?Ff55uh !:Uj28M+RTT_A?r[r crKE2:(!q-lT$eP+@1\k?iVm.#.RDs`6SSu:k^<8L,_t_&5hmIcdb!nKQ'AG=Af:K 9a$Pa"W1#=-qf83"RMM:!6?8EqB^bJ@I=m(m3no?^=3[,#R?';_6>eR,?0LB"9lA! f_VY!!#IufWq?J"C8JX@OArjgm/QU3u?n/Den8\cS!"ue8@5VrmqMjZQ (URjiEYtS\_JY5%2&Bi7I%u$gG#kJDkE0%#<.`uBV.+&oJ$R5j70aY][ nhB5,#T/-#RIPNb!(_O>a8c8Y8>n5'L@B]PW/dm"MQbY?F/&W<7,]mt?h=&ZF!j6e 9S*V%1]dr6"pfIB/dh6BVu4"h7cj^g.,:>YS%""i,Eh-ru&c?%r&])$jQ0oYu^Y3GED7$uBbAK):9E:^KZ8 o-t@?6/:tYeK!6_V\17Wb.0>S[JtOB@R!XLr,6A-U$LAu=5U1k/+bB,'!a*YKbepB)]FQa;Yn>o<'-#Q6:NaMru0@/)^E(gjt4o2m), qgrIs0=qpGb5I#A_MiENQ9Yb-P`YcmS,a=WqA>;%5>;FL=9O,LMob5^iqnEGc\q8= Tnh)'E!D!J-&KEP#QMpEE8:DJXV.Pc/J)+[30O6dFbfHcJ1q$^8*U(.!e=qn!JhJB QkBI6/-(bQK*XYm-mO>2,(jPiKVslGis#Y`3@*i:('F>"s_4Zl43"-2uJNs3(&WR&!!PrG'.m1icYCWETjF)aG :(u@3%RjPUTiPKET17OEu0fRl?+6hL\l j-fm6_?oHZrhsc4oE-2S;c_V_/TM3m'QC-I]oYb['bdI`/23bb:Tt7VQH^(a&A>8p =WOG.$(O,uLhMB4YAoI5'TC:/#Ql.qQl>.VN`$2q%:RJ4Jr+$-E@]4hY]V-DkYn&T R-p+cM]-2QP\-V7!(1=N2MaY5KAd)"%g2OH74k1J?peg) NelL\JOV_V>DeZ']3huH=fd+21i(nA;(d[j7ZPidFR@]&>B2S?!A3CR;'?ee%ah%G oimET5@FDr!) anE7@iH]Gtl9$1<\U"e1JcMH9I8iaW*?dR9!ItrgJY9AWV`Y"g@j"2FaO++EeciEMefc-Q DLU[*eeeEM5Jl*7&3p6>!8nn$5_osPi&Vj/&1.P\Ud"oG8g$LrJJ$m,'EUWjnM[*? +Q5p?#6K&XSFFH]_m3nsUBkOnJ]p0tR-kt>S9PP&k!)B+.3IU2I1ig_hT9RB+CL!\ -"R_C`'TFeTo^EP,od:_802I-:eZr>bbdmPCEJ2uHk3b-56pEInf2R/ IEd:S,hIp1"p'h#W0#r]HTmTl:qF9$eg$s$?^uCk5b"D++1! %YRZ*c^Etp-[> ]IS\4g(jg19`gu$*/)\7"@:Ba"(6<+>?bnK5k6fUTmFV_-#Pl!@_/JErf5I5Ioe"o `\mqC;ThA_#cs<6-D;u9M2S0N`.14\((tq`n4Xh'A_/g?e5)>K`,9A0gh/KX_$/Fd H-@0$Q?U-s!ho)imYQe6_=W9Z";1\7kRTNND(U9W49<57$b?HH"+dZ^!.`To+@)/$ J1qfF;6Uc=^`Wr8[;8*YBFk5QF;NV@K%e1771'&l+:p5E'gd^R$D9A0!>(V4_MD+s .hE!jCgn-D_#anPi$a9^C^BQ];$u6?JV.@/'LImZ"8,WC?De<\$j^)[j,d5u&Xk:B (m>q,,\)l(S3VX=mMTLOD$pCL+%JT:(rMbgOn5r*AIpS<93^UB*lP:0=.jY.?-R75A+G$QU0;h-!!3n2[JhT4;-n1_M%'Pd D[it]0F/MB*2?bT%O9I'!Bd71U.Bil+h+QXg++:4?;h;A]9<3p5o]u3C5s)1!!Xk) )P^DC8*%5^JKV9:_]WQK!X9Z7ON:.A9S!IHUbKdWEZebg@#Dd&-g9KP(8>&4KRsC7 `>FdR64)`R!%nKW:bi+#nODeiol4oJ$/n;3]E7J!_YAltY8eVOnK':$JQ>e0r*PIi .e!g*h]:cVs,$:f8'0X:-Qh9uPB)[gb,9bKjh/?s/#hJJ\48F>9`fPAY%Q&V!^,YY s.K!`/(!V>7d3KcUiW,oe'Vf&ik7^ZFE.?,\kc>l;noC*::Jit7oI$KKuIef+]fC(6lWe-<_El%=5$%=t`B LB-NYK:$ck+i$/E5is*)d!Q?G!'LR;p)\k5Gn1uB4U;&e++@mO%tXpN#Oqd:6i_`K @LPMX&I%mH(kN;c'LE'YbP+CIL&@RA6@N:jqYteo&:]o;rib_fs2Xs8?gmuDhu*ND !<;!Z*"NTl$O$P"&HOR#!H8lo!Vdsln/hqe-%Yn;cmg*1oSoR:<<;k9_>#)24s/bP "!RA<"[*"X;$AXR"`RTJY[%G%?lm/P*C8!1Jqa>X2A75j'/4\:Y^HcGJI!r`#]PV* i@koG//&%?#r%MTTe$hm/eTm^cDiG-jp%5 %4MD[7f!3P1^[VC+@'<7!%)/?$3]8i"X$LbNscWk5e[4PS>$8h5]d8?,Ud%g#@L4. 5Z.cE(+Fb8#Af>JJ+p7oW=@U(= 8g'oP5TH*L)?Cu+OQ$BC+M&,B_!U*F-"1a8?r/,BPQ2h&*F\pf+_H0H<#oD)"!AEr !PT:V:)G.Sj8ol7iT@,FA.S#&)'P(WiMPeR'GZ2)(]hus@4ij7n.';9(a&efJ\W1t S/gM0-(k5>_13I*KGpPq(IA<3iPH\qlkQcP'>`NE@E:tG^)Z*T*.dM_&X4@-Ag"m0 )I`1VJbh4=!!IkO*+ARfTUHeXZl^I)-36L\@B'e[g<*9$J?Nm\*iW"pQU)_)6r!.#O!rZ&^c!4(/oi>;h$3$&(j?/T-8+tiuZ O+Fjb^8?s80rW=8s*?hin B/TqpGTYjC0;7)$J3Y*p?2t:@Y949=!B'oXoH(d\K>=,_!WER:NZ[W'#YX=HTc+DK Q6fqq+CPj,!X1lgWD4V.!!&0(iF$cDZ39*%#c]ia!YQU6hA@X-,QOnfiLBlJ6m(CG !!cc+@-A]n*D$;Z!eNsdJ\3)_MuWl`+5k9D&e"a?$6mn`a?fi%?oj9T5QCemY0A!u +9i+Vlic<".H1IR+l6Zo\f]kA%+R$3!5]V()A%JB!s&HFiQqYA'PUs&!!!QM_>N93 7N^P.&0SCe62hs73Y\p_#f6K]6"Up`s'm/jciA^fA7N0'' "YhNAFoWZ8%LORW+7];`0.X$H-k#FlU?nr]&\/R_i#Vf3W (.c4S@"R>p:%.U>^gm_IKGm`"lX?e$^]FLd(**GT(Q.,miGEA/W!UrnG(;OVQ\B88$W,eG !"oV\i7J#0Fs!Ef!>Tt^!DoXo^`VM0!!2%*i*$9#;Ke=WkLTJ0!.Z!g5c)=,E8V?F `,ltbrWZD)73W6kZu.!O5TM#`"Cog1P3;s4b)Kf;!T8V86<4Ug@NE6:!]D_A+@HOb JEm2I+!LG.5Y5Gd*!F'!(#[:XLb_,(af.3[YE2@Hko_873Y,Tku_!!#MX!GNp$g_QVd(-rd`$"a<+ cl@T`+/4bseJ')+`#:m>=VY^n.`b9+7/7mTm@\F"pgrp-",h3Tfs*?r"RDW lTeiR_4>+%r#A"s).AC,!H&h)g]9]]*eUO)X?EZVS*NY(,d G(;03!(mB%:IeeR"Q3;]^a]L1:67dF!qB_"!&^3Q7K>[l"X%ah5Z8M_6=iCr(r8*= 5hlb+TGopZV.+BIJc6MFAem[W)cp1=RVX.`#Squ!'_k%mqL,: endstream endobj 29 0 obj 33001 endobj 27 0 obj << /Length 32 0 R /Filter /ASCII85Decode >> stream s8W,urr2lprVZTkqtp9eqYL$`q=sa[p\4FUp@e1Pp%7nKoCMSEo()>@naQ&;n*f`5 mdBK0mHj3+lg*m%lK[Wul0.?pkND$jk2tdejlGL`j5]1Zio8qUiS`YPhr!>JhVR)E h;$f@gY:K:g=k65g"=s0f@SX*f%/C%e^W*ue'ldodaHOjdEp7ecd0q_cHa\Zc-4DU bKJ)Ob0%iJaiMQEa2c6?`l?!:`Pf^5_o'C/_SX.*_8*k%^V@Ot^:q:o]tD"j]=Y\d ]"5G_\[]/Z\$riT[^NTO[C! L5(D9KnP,4K7ef.JqAQ)JUi9$It)rsIXZ]nI=-EiH[C*cH?sj^H$FRYGB\7SG'8"N F`__IF)uDCEcQ/>EH#l9Df9Q3DJj<.D/=$)CMR^#C2.HsBkV0nB4kjhAnGUcARo=^ @q0"X@U`bS@:3JN?XI/H?=$oC?!LW>>?b<8>$>'3=]ed.='&I(<`W4#r',)#l&eYcg&J,Kb%hB0\%LrpW %1EXR$O[=L$47(G#m^eB#6tJ<"pP57"U"r2!s8W,!WiB'!<<*"~> endstream endobj 32 0 obj 976 endobj 36 0 obj << /Length 37 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.tBOfFTn"!u[+g6K+knC,-WaL@ETHb\[b"%#,@=R"47/#*m+2kStQ\0cH#q:sjfF =u$sa`_b'Mi,&r@_Vq@JBJa$e)2JQQn8&4~> endstream endobj 37 0 obj 102 endobj 34 0 obj << /Type /XObject /Subtype /Image /Name /I3 /Filter [ /ASCII85Decode /LZWDecode ] /Width 304 /Height 445 /BitsPerComponent 8 /ColorSpace [ /Indexed /DeviceRGB 255 33 0 R ] /Length 35 0 R >> stream J,g]g3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H >q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mf:<0^i)?'+Xnc]HH@)7/D`sVc0RZlBN9-.\9M6PNd17ocAiH *);=;fBr>1IXb_>U[QS&+,?ihJ"LB3P`gtqpn/Q/JV\OjL;CZI *s[ATINAc'n;JKFiWsKC#U35),RC+]N[>(lGa9\669q%hM1T]4.11["T,J'RR%>]4 ih3A'MSc$d-cbcXY9V+$/<(oHP&-[:aqBZ0.E[gTXXhR-aK@Z:;J"b"+nJM'30udo?`?7an=S"&Mrs8iB=AW>/3&;h$o DBiO,@;oI09uguo=#J?rJg#!ZSeO+-20W11#tR;;C#/)u,WESD'h"^&:a4?g=G.rU +A)hU#m*(=!!'o&r^R#kl>qHNQkELS]LFX:Iu,:.?@SQeq*g&H8%J8ARR#eGoH,E1 Oc:^_jf[jD\4=IKI,=D9-7`d1'!:]_(]=< JZo/lTBB%Kj/,"45NS^AW6-oNW$oGB$j[u;3K=,,";;4H:l4aj]S\?<+6&]9`-MDK 'a"HWlieYC5\H&gW\k"%ef&$pC-ag/1kp8'K1XR,NA7(_@*m=?,>J[V_3d#J:r=-f 4?#N77047jY9b@QnILc]2og4I4@Ae.T*,(?K]Fa20YqeI,#B25pn\/Pe-uIuD@Ah( 2?lF^*?aid%Y;,O#091OK/>'2J[dfI@0e$0!/M6j;#_/j#`qGCmh(C9=s)`\O[ghO )[Q(RD\9dK.:FDkOA'kZ"EHXc./6A$@/ga8!]\,,Qe$5$NZ+s !l.JCJtQW^JCl1PTTfib^aqa$YT+cc/;&W7rZXXAD#aYLIuf\`;[?Au+k8iCWVYm@ #GaL%@pjMA+nRq<#jrb/Y\ssO\1bgGg`/YjbKT[gQ) QHp+=-4;!?NjRj[e<%jS8laefSJO,8!s*Wf!'!*PA.%U`]<4aAAMbRg+:s+.3!TH9 )?Vq0pjnM^"ouFV!"K]3OFRlEKg>;<(QS'JX3O;U0`MMk4:)B]pcF7Umi@%VF:R(P Ka0U"*.t%O$6fC%"*e)[i#%(q1&leP#o18:RfqY)*!hjAZ*>>-P_eE`k7+P!<@C@.V2k`!.Ymf!'u]rML_KOKc%$0 U?(tX&ZRL=\EBuYf-QN;RRnji&Wr4RJqXo!-3m--(uiJ"!&Y'Do4\HSjGeJ9,"1C+ q$@(P5V.b3E\[j8iZ-tq1'@Rh0Q[U*cuY:OO7>1To`h,>>)uQr>t?V=pmWGb3(aEP n2h.O]aV3Y9TWO<8,s3i)ag]MCYaEBp'/@c>6Ju,&I(VAW;ct8!"=Hf/iF_0itc&j A]KdF5rH2BGf2^/2Soe&KG`49!T4R0c)s>*a]8D95Tc),-5"6jV]LG7$F&^r\]>QN .cEW1&aQ^b?_$f$;'Tl-'ZYdjV;*L*T:!2\-Et'7Nu4g1gIl0*VgW,hZ*dZoE)H8K?j]F?lVZn!L+3u%pSA5 33IfB<(0*=iZI-(!\GJ&^jBKo!J>>h&V(9)`^p+L5o6dW*UuUV^tojFCf-cIB!T#( *:G/o)MI$V"UH4i"ouPXOg.+-8C.A@K.Ypa7OG:J4pgdj`&=20j?XNRrs,@l0!kY\ $iNRNT60:gJoen9L_roQ@-EW&JWp]On3S#qr-=,=8?@$N";[PQQ3(I<*.o@[!!'VP ci>O4K.(*Q57ihU@K%!5!-B1?r*=t"0FYi1@K9g&0m[d=!(.ti.R'cq&tkI/+mKP' p`(DS"=+0\!!!hOrZ=Gqa03Q/?mZq&QmXT,_.'KUVmjS*[5Bf%Ilal8N\#e<#20*'0lm+%.Xn%TH#,N(X)Y'Xmc>8 ;%8+P*+AjVnDXg`0*,Hsfe$/1K@"t^3>Q'&aWa=b_4Lg[Xs-\)IaLIgaaTn7$5q-L ">O"#Z"k6hclq<[n1gje`_I.31A$*O#"-<;+QPXM6sO1"$_fZ^5Wl/8:')b;+7DH< n2pp5!#J7d":05\TJR'CCrCj[+5s@&"ZR$SbUAJ?!:VQ^i^s7Q-9T+h$U=\$_3>k# eldS#S"Z2]&<7t8#R^XPp0pi(9jeWig**,:4@+c-%Peb!$uhu[*FOUE5ZAia$31'. *KZa:OnKs6$I"Z@,f".$Y!rEl.3_"W#lnrJ9$Vu:4Olbr#%=*b]U?-Be!G!(74# ^*LK2'1U%bU%f)T]G$u22$!=m@.Z;Y;'J8F2F1+Z?iU18.lP1j+CQu_5s#Lj[l2[# -Kg'r_EIutdkd^:$c1+/U%^>np)e@S+(;fk?k+$)j<#Q=*p^05!"p=RnN)6.+CRPs U%IN@!!crl*F[YBLRoVS-67Zo_TPUrJ7oWKWdQ&i*2,=nnDZPrZl \GJMk#uhTXLK-8VGQu>L 7A0Pg#E/YufGB)O&&C0:5QCe8%MCU%Kq\\W1gCTme-"Zg*T>!Xnh(?eef"S')??9- !,k3@&4%I3,sWqG63I:=jE0dL!!"rM6;SC_k].>u,L_nl67<4m`B_9WhSLfEbM!'' bTK/7!^JMN+93:!Sfn)YgVQhh@#+?^mB%KM$P(;[RF+o,>/\DT6] ,CgWZ29I&_O;%j"!b)*f!XK0b";"u=(us*]_$Ubt).Ib<@^[jtp*pXT$T)=9SCRH\ F_as.,\"iH+FjM$@;$A6;.X67AX6D/F'CQ=6khp_AqRR+jM%XV%eR$C%eZDp9ABkYWPf'+Q2\VU2&U3%O>rc +*Cm8#nh1Y#QX;RR3UlF@La5@$mB%o*C)e7+=.La$lD9\+Q0I>@/(rqlX9i%'Z&WQ `NNe22,lm7CuRVa!M0e\$38Ws$%R=,^jZOhJ-Yg(#G?;H[ki(a20=%6FLOdGl@ohd &0$l_+Q3;AG/bfc"pX!5Dde;B!!ECu1LSf?\s40\V7u=365sA1?m6%+@KlhQE9e]3 $Ydm/iMC[kFr4:u,X=q/iXo,KC?+dU(Q9N(`I*8'I+JEBiI?/?$LtKN,iC-W5]d+D 4:4BE$t4b.JY!9Z*!B\55@PR\f6SQIY=[_h'pnbB!#utErI?'r#9bRG+pid/7=`5d !WZ7E@"]WjJ0aYe+5oahK@Cf?KHYuc557'cidH%q8-,F#Cr/RM!WEh#-?g:4,PTEE @O_G'QmA>h*hhF0_9gUR*Z.2g(8;oQ@BpoHMBV_tKHbNe[tH"l*#sP!!Q%66_)mN_ s(J,jQ'5OAJD"Fa7KXe\'nLR2iVjQ7>SdVT+pQU;+s$cPO?l[9d+Q*A; @G3'U=`Hb`!Wh&Gi^*]sX9P*F+5rs(JZp)e\5!(7)`i9`iP6C@]GmQW)e$;t)Mf?K ^)Q%B:>s&0!PfZu_Af^AY2Tp3T`?6D":8\C,U!G6^_R(RY#+$V'\V%[JVFuX-Wp/p +b4WsGC1a^PBJ-:![68=\EkM#_ui75V4NqGFj(Ye(4GV&W>o'N(iZ!0(h*+W Pe,![efXWc+a]_%j0s"48[\Z@+#b/aaV#=JonoJ,I+T>]5QhUjnP-kG#/Lufi%!s5 !$Pa3+5omP`_moDkSrIiXF_RT>Oiq!r[6"':fV0K!V*tb4(Oit]@fk%J-@ag('6-C SAF[ui"N_3'N]q8:I,@N6!baiee-mZNN3#D\#'O^2h!TXL%F-31B&4-;C@Ma6?&.sJ$-Ioq0o'_9a "Gmtk+Fje9+oW9DDkb-31Z;c<6TM(Y Ag"qBUd>h-6%=]"%]5=%+5hYLi'5)1(]f1OL;5T#J^';Qo)tW45$#6;f#YOdK+kH)e#0XTTfo$i!o[Rl+WND^sD9g cU3M'%E!8OI\#dgQ4;=\+P.''@R:)2*S^].iPGP"JijDAs4tO#)]083Td1Rqll\PM #be7#):BHHFs8&1L>e@=iT*ihljPlW+\V;-!CR`DX;c_-%H9,Sf(sN[\055jd2p@O rlr924+,mo+G$HXJe.o*E7mPb'r/]R<59[)+s5`R$_[A=+p7p3oE7K!!8us-^$7a( +qX[Fs*l@=5S+dC3$J?s)-M%-cn4iU3IKE@\Z1*%@"908*!ChE)W9rb+_D/]oH?I( #[qJTe0YmESfk5\iaN/pTJ-Tnlk88mVpN%:J]8NM-jK`femb`dpXPsEa U&`&[K`DZd1`d58KgJIOoMdFd#QYYJU#WKXRV7MoJHCp#\c0[0J-'Z[Hk_rR2*IT& fkU%^X=VHTP?G9LE=5W.a`Elk.@C,@:Su-UqL/tZJO(]J889K-"otE0V%@''&N0W> %IH)nB_$`paQ0@4>4PqeD5.Fa&kt:B;`J#7OU9h:lPg!aBNLRPV>d?fddPPoHn9dm Knu#_1&2R``<"6&B/VGkm);k$,@[B!U&P"$UOiK]:`g'5;`f+\jX^7oXb?i1QedlC _#I0X=>0/k*!r`#^X2JZD*e^H8:s_odLaCsY+#qe%%1eKC_9-!jf=#!j)8m5\i_nT ,Q*\cK*%J0c2X"@*="n2c"Hq4m.^HB?N6Y@qKkI]'F+\)WF>cr+_E_;JqIH]qX+m0 kf+,5^`Xa$VLs`DIgMgZ7N85@JZsWnjH*+=+[j/TBGq)3TP']JH(Q!EVKn^P7krM; *LWf*R"^bP44KuP@Q]GH4bq5<,Tu"ni^/c^nLZF$ed9&rPO+]r=On=>Iu*-)3.""KG+GU2pNp81Bmu_R\`38==X"Qr*1) $>S_j:32-i`R4[!J-+)@K*.#M2A@*CLf=kNj!+CIT-U-F$D6>+%P8dT!W^l=QBCBfYm)?d38gfg6g4(R[5fD3 RK7"Lrct,iP_]k>W&[-epW,_Jff_T'V6NRA+ZsD+7[.4l)5^i.Af8U5aVeSFB+/4+ 1'URt(rJ=D$rMa47JOb;,7&4I0l0KPGe=:b/8,;%%L,@Pj9gHkE,J##^$2"j\7ds;Bf,rA)7f["MTHZ3_:Vlg[NAmRF_>mCY Y=+!KZ-EPJ8^J7VC^:GXj<=aEnVIj40a2#%.`\VP+Ro'U*`*h9T8A!sTJ9O[?j^g= -ohLIbSpYWEutFu3X7qB*Wpq;%mf!)#CtGNK>;Rk#fM:U5kH-#nHqLuaU8lXj;AtM p(2eS#o(S@e:U'e(._72(;T-,P0p!N7B#SmTemsL;"u@@Lp%RmoV9/B+R&(F&?U$fQ+Y7F8gdK'ZkPpfS(40ImCUTS#V^Wd-jChEAoX0TTX!@)r$K ."X!n$]k?8!m/8%+`)YI+q+ZB@-%gT9OS9]1.&ldZj9-s)3=KshZrpT"bP*""[Td: `>Hu(Ub&Wu)CPRc#QgaY$B%c3"\37&)5?$h$pJC46AaC#;+#/JVLrCt$9[H,K[`Ns 0FBk]W1][a5_d+l$37tW**`UD4>=n^0aLu_?Q`%(#n\XO_W*5DPa$hn(tNps@+ZQ` #h]o%G*@k.2]nqg#_?.;:5A^_!!2SN%0-eBBuqS2UNMcei'o`I'lRF;49l<];?OeO ?5On&I\%=`6@_Tb@l0EP&,4g;LA:F*B9Y97nOlO^^f^n1f\D9[-l`9_jqL++Jqh4p 8A[@d/nUnHeERGVB99MDZA%i!$*4+,OO-h2Q$q<6_?7h9O?GlTD[>)KCk*'9"=tgJ NsN',LbSE!ul*#:bN0'8Ma6M\pi(!-mTI <3[d7U&G1S\02oH[!d\W(-)L">o=BIKn3f1!/7-@(4qP$U_hK;=(;h!q:p:uU861fE]6f;mp9H/3 3lWS05"E]l:WMbeOC@-h#oN[SB#k&iJG+BoE;pRor+qFVB7)P ;f2eoR-5!4*!YR2QokSOQPbA3foWER6%M*b!!!Q1J1sq1_'g0(+93&VTQ1BjkUg=1 o(1BU$7X$j6V.8;EY"\WD;:./8](sdit?59`1,$e@heDDOKq*eRs`K`4LV>7"(2*?#C-7U5R9*"Jm'E')!0b#'7K>n%M-uQ%ikbQB-%]e=%G"Lk@ELt $IAbcJoD_TA2g:qTL2b9JG(t#PWZY[bSH%K>6$tYDM:s#+@WN]!uB7;!"gpQ.4Jr; Vl0n46,]?*.=e_"+1)S7E$9ht2Bf87KhjI=6]rR=HiXp9M""@Qa8""-%M-MiO?P`r ,uVF@#FUUgc+-Uu('kt>ZhBU+d4_a3*I%FM"_I7NJS='cNZ\<%;#rR?:i%6I_"@b$ U&tSGj/Q3'J6q3a4*qr7^`Z>D&Dj]Z#DO^f!17hjd>Sg;a8c>FBRYjO85a$^%"V*gZ+>#0aIIZLg+SMW)ebC+p;;!!f/UeaG^*!%$;Z^L$3*# ?p+V=49L[(K6T?XLc5Ed3!3PI"*ceXKGak_1P9X%K(pmL!&=W61,\PL!luhl;4jth &I+sD.4ADU_!E^nFpB8rNOTAtckHaN",[A$LDY&e3-0itFGCuZ6L\t"0QIC(EJG*F _a&/Fpi)!"DMJL:#6Zsik\paaC'Kc=LXXEP86Z00d[kFN!FQ0DQiT6o9*![t#HKUJ @6_F"K`G'CU"EQSi_P^[#m\7`6f?^f8EgC>!JUC!??MXjEuM&N=2blNOYtkYcNCPoFlad"n6I9KI[$'eAe1r7^QtoOF9HR Rtpo[aG>h.EOUu70Eufb!>'>gBJK\ue-(k]"R/#P\7*7:-@dd'!ue.0R3Y29GIT)T 3?kF+5VP>L8Im3T!'99E.!Go@."D:LLKIdfE,,SQEsMJG38$Y"=FZ*(W=)+O%k%_h \9#TMeq,;LK9E2=qe?G1=bG)jJ;atgC5Wfd!ItFl#Lid-+>O$aAWtbOaa!IZE.!Dg Wt,QRU_%:YK[ m*Uk"#m\gobWOC5J:/-IRKr]K%;5nJ82Z2W*WrVb!&uV7M,&jl/;7L7PLqXRBHTn; P0FRa!184i[,m4h_DLd`JM7hbV#&EEqp34Ycd3DX9RmC>%mNmZ#&#rTPE:OOi.1S6 '1eFDBW[(E$]!,rDOQuRt)Z-Hb.L,aUk\KVre(_9NdYY]t&88Uda';mpY%EgAZ !.TPlgDElOLaZ7-?ol-")T;uK"E6J#jW;hB+4:<6K=Es3SE<'cWDN**\7!mu_"n6h ItMu#""6M>(dnK<2MCQiKJ6%%i)9eM:'9uL"COS!TKWK$7YF#jL!WNs-p7^h/d1B> #3^H\E12F]\VotQJ^MMtdW?D&qhR@M'A.d>R!$n4FgFLN'BDZ>5QQD2#sA^3J]Y'6<)A_Mi`[n Wi1'cqi.)hXJ,fTM.1C_9Ar>4s#Q&Ol+9O"YCBpe* $iha]Ort=9L`D3GmO9Pr:ut 9N5p@P2m(D)E#oF/-PM:cKH3ZD5"&OJG6aKM!AJ8DQn3bYB8;r8"*e^=R!=3:]kV%L6B[=YP8ZL^69(Hib]1#FKoAYQ+j* h#IJJRn*a=IBMXr3.?AZ8r*0VJnUI&+:*g>"ZPpi !V1euBN!X>_M%gWfJL`2'DDQ8e1#J#1Z9tD,5]*YtJ!4mu: L^k.""T[0af16=#iB.B[;np2*J.N->['G4\&.Ll4!=ZDe?kB8m!ek$'<`fk5#l1Vi Lk(j(]7:,V+9MU+E_C'UJI$i.J:E;WMZAhC4@fh[fQ%3^-O2mfL#@@aphBk$&;F"i !5,:jQ/4b+BhZ+$L7icc[CHDt#7h(M!m6>KeRFRFLgbJ'%s.e?IN6XZD:U 0na+p$6URJEI1)4A!l6_qTKiR/2?Ejp JAsb4i!b0])1a\0A.T.OMlj"@C54r7%gf6bi:;LsIt\&8",(%BVFopX9B=)d"SdE) Y`6iYVPI=H![qeGa?KiIi1&pZ#Yj&Q;_g2be:tbUY'%9d7t/csr[B!uGdd'PC'&qra2 VU0%4e0eId,E)-7N#!%W!tT$fGNXVF9K6ja\;ch/Adc_VKZF,n?ri&^f`>Jd!pYaa kTYgR@G2"[%"d2lJ8-QqCkh<\;GMQbL\M)V\<__;)[U9Z M$:I6@!hqWb_^!lNMmqLbnbr!!626F!!:]1K8tWk!+92X!!$YgBE5BKIt;8_M.e^* .):?6C^,t$!sq/rW+lL_D$CuW'A.2UA%N#$PjL_BM.d&Q)"[hO8d$Z47@Mq]mKT\Q E9*"5AZ59+6(u"8RfGDkVT::i#TEal'nQ]0J8bYnGTlBl5)8rS!Us+#n.:5>.L.pk Jab>o0F!3':]cFQK5a_@+98$a7=]%X"n5gFGY\O2,6.^*#"Vbp#Ub@?>_'U%Kt(dt :]c@GF0GR5L1gPffO'>?#fOf+6#TEsdPWM#Ul58*?r?[<)!XB!B Ds4'M+NT?e%b+m=>qgV[aCtg&9YXD3@*%)Qi-U;o/-9HI\SuD>jL3K0Cl_GhS=6Vd p^R:";tWX[oiG/dB3!NIe-r5G$+N`aeqjB_6osfF3)d!j8:LbE&5WXaZ9SP88-F)p @t6NAG#)TJ5A#F7qZ&SXG)ue!KoL]1TeBHMq%`eklTLZ!?fJ0+rV%L=T"#Af`qTI1"9>)2$\1GF4^ d!H"jH&&SYg-Be9Q&\TNG)(<]#=rtB">^87GJ2pNKHNg;-scF@fA\$]Jc-i@ctnGl 9atg:"kRaRPn=J`Ig!i*#*A:7i!*.L2_.P&_<c$>:0)W:tn8Q\[%ML(AYJ\6a]r1brGF !14)nTAG*s$379eJ=m9us5!Y[$NRsMrZDSt-fffUkHH'8erb?1K1Z\KbktA%L?McN kdh\1YRaPQR1Dl!<[p>@*j-d+L_;#_$5ofp],F9Bu4?,Gf42$eTqTJ;>@@n)'G)35ccp>;G%pC 0L,nEK4#a'BJdc((5kT#!+N^ihujERD?'u!R8:/PH(HPq03RCe$5oM_[g coM.CbnW2=4OIel%IFp]LjIO",!rAcHVA+3R_9]"2MmXu^hBTq$:jY1K`6J9bjC1< ORONYaTV/o+E0^h-9p9Fgr,JlXTN0GOsk3p49].cA>/bpO8uA3\:KDd.-P)n3rgQ5 =p+`G!!cq>k8%S*IN*:Ac@@eG(#i)?^;WttrV=nADf)_O"EkJc8&CV03*++WT`8SW 8,-%+!Vl\.!#i#\_m.ko_Jbd=*>DmSOFe;+jpL_g$k+F4ucim:jQJj9<*,/YOjR!F[a G^^M1!&/@7"98F,+2pN2Hl[_4t`5-/\6-+cmZiC*"pj=tPO1msTB,ADIt:U% ]RPJ`BX1`sN:>8FO]-7gJ&OYQAp')H\0c]^W&]T=e\bB^JVbPu0ERo_'f(>j1NF"F 1FEJt=!2X>%9X@0W0A;.K?2arQK+(T,mPU7Z792>aG)EUiRR[LLDSeO*/?p:qd#m< $4mc?Vte]d!-7W7J!=d59G^)f\2o+t83)'.L:J?sP2t:[;3Y-6$46eQB=U9\LM(%K Eh)'$!)4B/TiXYqL5Dd?6QuQdBcFs'Y'//cBtRa$2-nTo%>Xa^#T+rbhKkcKM<9,U B:7h/T*N4'HQNLLd!MAidI)CS],C6jT;Tg)J"MMA*dcj:3BAZ6!3*jt1B:h`4WpMm JcGctEVtkAi>KWW+Q])@b4=?&1!K4CndGPga8(aKS&Ug06D*3[+Ff6#M>g<`kP6ME *CgB1$5?/^7L^:=F"hR-2`@EoJg"5Z>(o6!O:DACkVs$(hHuia"5]Za1a\-2lj ,R&_F*Wh1`WW5BLs&qf5EXo?H"Mj'b)h7nrNSr;6`j/Vk!C[Z^62h9YR."9JODp(7 bQ&[m.mb@A>UYaJ5Ju^i!b3@#!E2+T!\jd:TT(sg+Ikne_1`W_KJ3NtDD'XHU^Cm: !!=DD0aLG[+6-0D"6'5;#V[8._;K8CnYB`AqON*%\e9+'WmjoFF%#nd4Z-,Hec %"`jQ!$H_<"#pGdJj_a%J,nm9kPtbEn@\j1Z>W-]%fu_F!?1S/!^L:J!PgAo!.YI[ 5sPhY!&,-3?kk!o(_-m<3!'.IrZm"r%LaO(J]Wa,!rufBQBHJ$%rpqrbUE,jJlm.' (3$5U,Z#>Qi*)5(+rh,\o*PTtD6;/s2od%?)c;H-(f>2oN54?d0sW2Sn.(Q$0F'Qe 'T`AQc2\$IK`Rn"_LsUP@7.g1F6phUO7Cj&*I.T)@WZf)n88SgJH$NQW,7Uc;ud*< Ka2#4_Q-992a@A`5(Hm<2c*<_gSe?YAe9%d@Be;`&9on&qu@7Ir\:@MZlJ(95<4Fh TnH=o"_7HkW1jk_^]b#K_eaf.YQ+e-Hsp'.&:]?W"pKaSrt6Z(E_Zg@Tn8B\%J,i@ :4bY2K"sqX!:2=W2'P>0*eJ@@'`igb#bc>HKTZ6eU!Q+6 W@/Mcd%CA(0O,!ne0p%)PS#GX9-<2/]Et;2-34AT&U$hJ"E:pac/;k8TR6_C@(HjU !:CRgk\d8;"u=5N*!U@l`@>&"mO5[O(N::QP#T+c) <-@7AWU4_)s*,5TDu+ibf/+3";#N,X96j.3QM2?7On.S=O'H"6&8C6F&kW DKSlRb6I*j5RfnCOBpUQ<^_fjbUSLN-6S\XpOT-_:-rl?#_>jW; p(.@g$O+BZ6Zg_i+(OqlO)aGJa*@>qK?SWP;=$:J..8)6*(WO5*XKZ&4TV6!!!AA_ ._q]_%G/ZVB]:V>)MQL'!(\*c_?^-mYWrHOj;[MpA./L35i#hd+9PH'%`.p"#f-Wb "2KEu6-)7pi92)4!,)cAJ3!qn_RC(a,sFioP;.k%(5=MD!!,@b*k28DK+5b4KQ,'O j$[;a+egguGg..:5\1AOX>WP`di.7SD@L$G2hphT)oJmuNBt?@7`aI-"2K,@Oa$pn =R.'g(]XOi+_-9ef5dRb7fa*reG?(C!ZEosmDVYmZ-WheJD_`+&-*6X=@3&ggh7Aj 68'1c$59.u%&,HW>sYtn$(tB#"JD*+!ROjSi2@GnZ1&]/+@>$0!!eCE\c>baESFQ# D_:)g!'h?a>HT@nKj^JZ7_"K_`k_Fd?"uJC.LYQ7)m1Q2^_$`@DZE&/RtP_l@7C4s 5%E4F3C3WFYE8bhDml/9N2A)?"'6MYR:_NMA,pI;rsrS5]oOnP/Og9n"eqei"-=3D KF3YC![8J'O9W.L+?psbb^kJZKL!=$rtI^LP(>)"(WGTnF=mU)O-A)e%G4Z #\`-!Z!+>Gm^c!4lrXN<9(<39Q !B;t[0JK?S)aW*o+93/X\/0Z,!h`3iMo\0a-3D%`"$fN^JQrp4@(ZI\)*tPaj;>*cTqBJ6j%3U6& @gX'Nk+P$?Rc1[T!+6XPF9:A#%`&uQ@(m4\EW?)o&W44(!Q1(tLu(&ZK.P_[6I"VB=`d2IZRsTEHsK=MeMG %$*\&.KUZ!66&?"!T<7#i(aM#AeBa$,N*#A!:UK\*cg49%eHkce%[u[m5qYm%`%GF U^8[Wh_.;M!pW5m+;1>T1&t\p_I8Z0!([>fCAs@d+G'C>j#dj'ggVC:CeI%jcs@p8 `;78S!.ZC&@?Lb$&-kIBGchCm^fNj1-3LV%]DuOK5[FEj6UG/b!ha6aTGW@A1^Ha5 F$]RbUZ`d2#1G!@"#1k_EpP"N0F;-a!o]dhJtN)D9Fq58!b!o"i2lp."pk:*n%c+u e=T>IUInL`8jK:C+p]:U:bs4"LI)2E_.7ONr"&DF5D8H/i3!lO0FWI9!+doR`P5-3 fEe,m!+;H&!,hdS9h*H+7fk4EcC?!7/d"bf']K$41HZf<'UOkL;26q>U(/:3(,Gtr )6?^9+^nj8''VQj3:rO!g^]5?>i%lL/ (>rd)!/)Bo[_)YG$noM*@>;bOXs"o]C#TR[iLO>>W@mi;"*FA^^d>)Bcg.Uh[84@)uD9&d#IE,N&V+TL35)DAs5@!,QL(Fl(A5G $l8r?#,(N*Db:2ldLqDX"b4CDJ`__F+]2GU.g04CQqs;jKAYBE/98'*4>i?uR/QIM"H4.R\?U>)#BZ!oIp/a->-c/CT@6P<5#R'SX7,_g;KEqS9 LMYL'#d'sI+[A)TarfSK+G!o]+KPmbJ-/)I2o)L#J8'I,,>Xs:%(H'W^^q0qFTG/cn9D1SG%V !YJir!TG,.g)`PO)aW=%@GVu4\/g.5 )r\XR@BphIA/A[%(*WTo87tge1l>633FH#5?of&]GDq434+V2k-R]sfg_umdHmF/L iBe,BW!eM/+/';[J[J,:GE5\Q:S8CDi9cR,%M]$<%:qj-qY2$","?E!.\oZ=>otZE?K$3!D8h 9V<"+/QO"Q?5eBf$6XR2_5J2N&.'MY*+?c$^`W[9rZ!*X*2&.B0d%_45U/^<+6G"` !A4i^4_p\p)Q"-IBH(::$H'_9![3F664+8hIK0@/Q]0!NK:/T^Akq8#Hb)F2nKUmS 7%U,:"b9n^@@A(%[P4Nh)?FFT6,juAOs9!Q!!!Q3Ktm_t4^#iS\]A3#Q03 G/8(>A.Se#q4lYtY(?m`A-i?lW%9,`"*o&1U"16)Q8##R\AA"Pp&$'9W':<3*eJhM +g`.QAd?,m%"OQD^m#HKXu&LR9#(kZ7OS:G*lK<>!ho(\=_7_/F-_.?5]A[kJa=%[ )?N0U&>AS7U%n\*H6;,<%9=)diNUkka<):9)'S\oi(t#\$4+T^+5uPd^k)Yep&R$i ,6/>]jY@n9&6hF%(@p6H@!3X[c'Dan+7IghH'_PIW&#R5T@[6gTlq/9L`SkKr.707 A[I\9"9@?s?F*D3!Ne@$3N$mU%f3B"q+JkbCS:fQRY_fg`N1Q&OG1^^^_!ooDfT2 ,9\CkE*sESaUMfT9%rQ+GUlH-5J7fR7f_@s`s)W>0EJ>9\qKcV`8,!FbRls]Pp-hG iL[[a:`o!g!!"PPorZ?--Y+.a6:cJjarqus8!Ju%4!;6r>"j\=j&&A"eJGKdb !"ZmC&"rUBJGp'Ep^^d,)nd!s_!hi]E"50A+(k3I!>$2D66Glb+X!TiM+SZrO=1.' D;hdAH nRB;B`?Q:',Rtri(clVN:r*<\U'_']$Q`ajG0,mJa!e9E!!h9l:r"ug4\`Tf=k05F (K+'Sj@Bq#O_e916%%\7^f2h2@K%5.DudZT#+'p;^bQs3-/fX$c.:d? X2X(M/jtpVnriID[lg,C"r[q9ZQp)^`X_'`Jf h&[7T+b3^)8.%YIL;%CC?FET-FiPb.-GR+eR&/-4\]>.IL5U:F:@J.S-mQu]npf49p0ED1'$m"T`+jqH_Wl+n/ $(n^(hnBF>]#4TBr*Ys"J%bcqN"YtmMZD`PVEXpOmMdF+#f-l<_b_*J+A]cc#s\*# 5Z/^2Eu4rb"bT,"&=?EL(?&*-+qYYG;>sXR6,V%CqHbF>>o6u-kCdSA-'Lp^&t%/# '+,nMhruODalrmH^DoP,./XYnT0c%$U"oX(7AE`DnENF@.2JY@)hq4XfTZGkRpYIN S/;stIk?sE)\nCTA[>Li9.*[#>7)pc$d_]mX:,+0&ROaA!#Zo'%FXFUf5TIFKu7?Y 1os(tRn"'@(6P=Vq%X4'597kQWQY>FCHHNTPJdCS$`cQ.N_m(sHn#+&T25!#L(kGG N-:\]eIr\0Jn&Kq&h>LeK7CPU!3rKP1]Ta3>d*l`IK&N`DTeJ>;'!f[Jr3q!cmSoY m2*SCopt^l@.*X_k_&%ZPMnsen$j33dP5]#+/;4`#`Tp]_&.BdL\XhY+6Q4'4h!f- ["Ot4q4*%n"e]B+#7#gc&KmhS+SpTi+a1W=BXj$)`'G#pa.L>6gc1($[04h^O5bNXar^;9e!Eai,a<4H,'6IM`K8<$c#CNE"Q +L$M/T\rtiIuE)YJ!m-PVLk)UfE"9kJ,j'60$upf;Q!N` $ip@S*Q!G0XefpSN/.3N?5s8Oj*;pU[7Gl\"[HTJ!U(qpNZb(.Y$2pne6!KYi]YP? +gW->FYOQ?7"^"4O=?)spr5+L@sHo[!eI%)!'VVnap\\"L\QT("[UQD/>)'hit_^Z (fuFRkWR;>iTrPNJ(9c;aCH?dLlstVLbMq\OamE7FEM$oO[=68*4]5QDLM!3JE*&;2bL3Y6s08G[1lT]&"V*-spY!0cCJ!D9\rq610? 6FPDuKZE1OKo%2QIBR(__CG5:#9^I.!b.h,#(_CdiZ3P:khXJp".mY$%jaJ'+qb$_ P40RS5QH/'k?'Jf*MtIlZ_6L?QofqV.14a]`ju,bbTNR\S4hCuDm-Db$OQt;BHR@0 (^%P\>baVf3/nSPZ2SQi&6\&o&uYR#$Tfa*O:IeYGlJ5/!FPm.KU-'[FH>tc"onWo (ZZ8iO7@>l=i)_9%SZ`4;ZI&STVN2CS;dr-1akkMVZae+;@-0M!!Gi]!j+9[Q!a^p ^`#q$6kU3GnpEM(i.D"01m,:g#U"_`$W1=\IuDAfR2iKB!MV,/J])j^J:L#pTR!E* FUgV=i<0.updZAZW[j*ELB>;@(b79m'nP^;@F5M;%Uo>t!1:5$X@s-+&6K9j5UZc? e.[F19c[`fFcV[Y56=YP$%Y&]O$KAeOC/nWLD+D'^pF3*;9D#IHA2VkiN0r:(A,g5 &1E+:#)?%S&fV[U=+aIs%tWq,7u6LPUTes&_;%*uA?qMac*KgPu6#8j5KBgQ)Zbh/Wn87^j"4"T#D#""E#q25gXnGM&6Ynr-kucU!$+H) CQLeJ#f/9MXQgWJ&+O:2-C&BqeC6+\1*nl7m57SSXX"!FZ9_!*iAJD!Cla:GXM?S= @:7Go]3<``9E5kGi]r3Ld-*eIQ'=3M"B-HdH9K9Q3XZ&f.OUqh4=#6Z"liIYYdNk5 Cfu:a,J8`=0cN&A_#BGXj@5gcgo,`'&fANh'"4KI(#o(E"68Xd=B/u\N&7%J@$Gkk 65CJ0pn+%NfRJ\gl5g&SGn-P'49n.B*^e;!%RJH&LLB6b".49B_:UeVnEYXE:i[&> bW:b-oP$X\fEX;WJd$]VCtC?W*UWRm.biH]Dda#H,V!Yo&k9P(P4BZiZpK`("9AKf /W%8FCCg';\Uf:M2.[=$f0aQf7P,UD1IXf16AcP3$]6)R@5''+i]kAcNtJ*?8-n/u ,m9$dbG%O$M.%_X"K7Ru!^K?a;(s=b\mN6"9:aS3%?&/(gnab !jF:A`spR!_*i*kP)9L]Qn4pX0#Q>2Q':QC6tb*kKEL1_(s"BA*i&U)RmD-\cPZ!X 5QDo;EMN_mpkJhM-#0Sj#RF$f."u9][,fpGVTJUB+8Y2TleP%Q/YTNO,&D[Y!.G%c +@$s)Y]l,dBsR7iL.fZ>9WN!&;#k!%\KkDc&$br=NHH.9?M26F\oW-nlIY A.YuR35TqG!X&/SkM>'\FLVL Y^DJ9W\fKeeJpr0@uX[191;\W2ZNg^$NZ*p=AU:bS,mT]EG`Ga#/Vd=LjBTD(sfKr "S:[O>`6FA07O8A(S^\1Mt)0KL'YR2K(NB-cepHFpq[dHaC1$9IP?K]q%Z7F[MH)D $Et9HkQZgr\!a`;KDXaFR4e_Rkrc$3$6U%;\/L!U3=%=+0;FYqCX=pu_u]p,"^lco +>0_I!!VnWLQVHpR7"FL#FX>i$8;\c')Mp<$34`V"Ak'_@!.5i<<8a%#B5!Kck%tR G6`pVKA#bDR X,8#TT4j2hGYA5G6]S48Lk#eai*_Af4"ZU>+e4u@7!/Bul\[kH8^jN'Hq"9r"?La[9IN!5WZ'*[0/7X3f[ MT3NK_^J_m#VZJgW,rA35_^\:K^")Jpe_--VMBtT$"sD@E$gG[VL_-YQ'a_FI!5_# 2)s@ccuoK3/'C&^!k9_3UpYfE[h]f/!b`k]k['(l:]bl0#P`'9a=j;R IL!GSLFUr40RpruGnD!&QrJA=/8:%C#D_5S#`o&e&-W&Ub5qZPL6ut]&719.9u;fV LF>fNkQCn<&:fRhL\O+Xi@('r'a5S\Uti26d!c2g$%fZ=!n]2Z0J\8/bXB!0j-pkSWK!#Q"G ^jR(NiIrs22n1RPo`pP2`JPq\Lk&-T-t@km/qT`AJ\VKqcu+e%$A-p(W?>jtaFCdg (:(K)!*D9+KZ-cH#S"jCL\Pln=CMdKcNj5[W/.:%1nTRH"G6NkJ7*&g@"a%9,rccr KHOQg^`]*lfWSQ5MC;;Vpb[L$0SfEJ3?WeV6k9VQC^9e6JtQ23!!\5RHcc>(fHC6>'*pm#S\T hb*9/\_Tr:+@+,Wf$EPJZS5*S*F`&$@obQ`"nL5tLe@l\Ad%$bKeRu]pgXG<6C,#_ eZdj23.HXI>e7=KMBEspKeNVj'+@,eL;PJkUp5^Q'*qQ#+BSeG&VU6fD'@^(c'7aU 5R.JFN@^:AeID"$VjNGJ\4)3% 2?ap3$:&#&#QTHII0PRTJ,g,&gSol$=OtuId^2:N>589q$3a;)LTiLaTOEWNH6[2M !RM#YYTO-@2uip]"TWRAK:E)0V4"gs]R=_;F`<3fq+&L8".3=!e43[25?FM6!%Nhs ^^ERbJggtN`DdTU^fm/A+:#^-=3Wj/fVAVWG_daLJVp[g-tf8rDT$)8%#J_M5]%@" Lk`u.TNF>[X\-*gM_8,h!O,,'0S4fpie](.bufdP#Y1N.!!c&0(B`h+A2r7mh3.FZ (H!.hAZC\C#Zd=W"VNeFJ-Z/E%=is[JGn1'@%i*Fg'80W!,)W@89TT=g0Qk[bUq9Q d1of4\Q$PZ$s3b<[&/[Rq%o-6m#;86\\)?(m&3L2GUT1hR L0Gl&GUH%$H3RMM!E_;42uj.6FGNHn/fC.4TO-L5g0IgQ;94QD4eCRHo*LEILk%\o Z:fee@ojpe!!!1WI5X$o=P!0Z$sjVR^(gp(!7T[9!!Vu0fSb9iB*\3n!iTpp3%g!Q Y6s3#@/Fep[NHDh"T^IL?qgq:n5LF'OpCo]$1JXbYQV!7,(OVf>bs5`pk8g*p"U+G'#(ALJOLkT,5Y++W8O!O)nYW!&H>a+-tnZ9V1jogi-/ +H.kih,Tk8.75VAN<`alQ].jJ0P1Q9SH`b1L,b.sE*u$UD[$bZ"os,%IpNWe9ifFW\ojIcTRQ5R24U'>Op2BdmB ,)BV.[7LV]J6>F!K`IbXJ8&m+aErI 2I6Yc$VCG$"cT.B=;uumL?BUBB.0AP)=N6M1PI.c#e0paRrnuj"br&.)t85?\XWbX 8=@?4lG7H)!/PA$K`DZ*!fbN:,2W_j7Ygu[LaWI^^8fFPbo+C8(fk&2SupVl6XMf= $:%/@aFsg>`7:`dN!@h9:=e0kf>N271S@J1*o_&[9SCbemPmjmYXjGW4p4,BKNLhL gH2`<7YH"PKDRj^L=kn7U_-O!@hgMRn-.7:o1F`%mn@a,r0lnIE!#k>Jd=^]^]XZ* d'6'shLOJ`3)BkQTPWOrJZ'oI(aaiJ-1F,#n2M``81"B]Z%Y.^!amBp2ZnYN-3@9r !amC,TPqIcKE)l#TNG`?T'm2ur8/(C!(;?DhA:nXU9WKI#VZ>b^jYO#*X/.WE@?b3 TS@9eKWDNB@";bG&;^MACp@Z0!,icqZ3?.ZVh5O(A*eO-d#3E>A;C)SCu@Jd.g<7DB8;?DL7,gX!)H*!2]`B?3/EY"L0/pbd;o9n,$JDr#4E0@0H^V* J+Q3>%G1o_]SlS6J*^U5K//WbE:nAX*-h77J.O(3#B5rH:nd'HP[##Mp"":#k4+rA>jE1[*X)OKc!ho2MJCqC"mR9H]N;^+Q!0m8kd"kV@SJ6`%sgARsT IF#_,&)@-)>6VN@Ks4fTY-tgLB)$SsQtM57a9H+qrnfn2NR2P8_ek.CQ'Val"Ws7J @u_#N#Z.m5h`)tmn-=^R%gY?hpN_IHQrileJ,Vt+8BBV;82gX_j^16M#_3/8&+bT2 !/Kcg*5E+F,SggoKL0*DY[G`m%u8M`+7@)$k?84QGL@3desrP:Q(BClahb0GuXi? lC]8)*f!RW4t/0n,HRS@Ns(*DLr_u70XaG#oifm.%&7cn+P$=53PbNs_*H!JN+Jrq _W#5f3ec.T'6HIC+:I9j)Vo\qYu6=fgGbamj!jcg-q1au]tYVlkPhqor75YkYG^^b p@NUChG8!(q;h'k5+^(ZUZpq>EWPeF2RXis#RConSG5R2SYVp3>]8Db62^19*^!aS C%'+%4Ji\1KY&hIZtlfA8/A7WXIWTQR)u4potCMSb%mr/)l;$gK.90,Ub+A!*R0a`<\/>Fbl0]Po1\)r+cM8+KT\'ZDoBRH8A)G:jNLI>a23&dX5r4 J^U"q.]=dnj"-jr6-q"$E9(IE'dIP5ZmnZlS,n.4oZ]4_7srs@!9GUZ,n`UF]fW7r *<)O]7`j1Hbn,HEG0$U1"!:*))1=rn14jg)dHT"%E&(7_Uo4:5n]_&5#W%rP_0$B4 /_$cC9[k>cq.rY30K(<'c>fNJ2Sek7]W1dIn TUFA\Z=&#jF57X,eTDRjiX?nHi,"WDPd.0IJ!G3BTH[VITEmRrrY]ihE(PSMa0Pcl.WE9GE1(=<)mB4'5;oKEr\Q'nj2f]+BYS51U19J1+5,KRkt; %YTBE7M+kc-oqZd+WfO=-mZ(sZ`3B?r.OLM3j<:&j&uWi[RVMJT/G%f!$*sdC'[9e >nR?UTBG20Hidsu[!.uDU&$Re>4QDqTAkaDAY/%8Q=lXT=&*Y%h<80rN/#0MCE"N+ #[a&J\[62G6ZKJL)Wo\XJV.Pp\8@^i&57Y6#0F.D8^^F54raL;ZmHo'6)li_\DB6] !(RM"Zo3\!3Zqh[EfKV%3Q.To'B>0oNe,>H8/T2a,ER!VYTQ3K@-\gXTQHhRG$5$! s&EW\+GZWD++umH+G#&>M1Io;)uosAida]/ECgMQ!.YbmFArT(:_&1ETbE$Z*Y:". (WC?o'uBRE!F\MI7:<8-/p],b#D>eSnGc5qFtuNeC*N]Ti'3[3SuUm4fg;\>-O5LK\8Q;NfGOb!;Sjd`l%K_-6NWHBlI 7("6(OlK+AN2#GH&dVA&A'EVL:5Y-+RF=neQ@Qb8_F2nC9m0'l;"Quh4PQB'^2B/I $pWQIj./W5A<@I*3%%u$.^QL<$IShbVj.";o9>id&=m$tONnaH1h]iCN%kN]_&;8a@uPu%0^=2.)<0ji$o)!; `H]TF,1K6nTnk?*+IX'4S50E`efVdhJJ7%Q5mCa_(W+O)$fXi6"VA*VJrP&Z?br]mDZWF$>JC.4@hB\+"?;b\ JhT^T&Ki>%fT$T]>Y0cl/gZ1LQkMf*:'q"c.Rg;8'ge'6MP3iq`CR*I6M)m.9YHe7 cijP%A,lT`=tE!,+=)Ik+p`^&#XJ7g0gJD?'-KUJ)R0nW5d2..&gRXe;7`u.7tqSF]mK7Y8r5K@19!os3$!!'e< `Q7Vtj:DY1&R[i?klXF!"OI5+cprb.ruWAZ<9f&i$:jk0+G.O]MWU?`8,,\!iS_Qb +<3/VhWuB%'\U3@#8ftPVZNQZIua%i,sVHI'dGD8K&@+dKh.^J@]3%8&Pt^3E2X", (a3b#!%%kOW"WQD"Gjg^! W>+/f7>'Pg)*eaR'dAl=$SbQGJ=)rCig`mR\RGO>R,0]ok^eC>e1(P3!"C-J`$f;+:%]<)I#j;'Og!:8!(#E !,uEYnA$bKpdq%9WGdijD?n1#rtV1<7$$g\aTNT^&=e,tNZipg6=9g26i:0`gt,Tt)aTYf:]Y1c2F#GL]1i(=bnoPe;D*WoLUiWoo:=q2`K \=gk5Jc6GQ0Gr+o%O(fjJ5-,R'Ha"_(d[3f+;PW!n.[&2*WUl_6,j[j.M+o@&7LS: XM>&AH3,6:+5sNO^]4IFrZ,GP#EBK'huN>$?lb7O-L5QKCYjp,@n%nX"ZJMI3*5i.)4V!:Jd!OrEO/iB-iWlV!(P2ho`-_dI^))o2#Qb2O$"+Yo2\a*P 'qodi,3u< JSG;UXq$$n$NjQA!X]#a((Y@XItjWcM%g[I!%L:_'Z"Z++^2:jDuu\+!AR8>^a^;^ rZ4?]$gbME5opZ4+rp^`*2ETXiTeh\TF%7t&RbkdT[OiH%MbhMg`at*B[mNc#QnM( )h<&?Ok9XFdN@EF!!'_TiHcWh;@l,rZA*W+]?B& _.K8/1a&JM+5tMjTpQqcA.Tp`%j2)h@.)aj!!P(u+63jR_%7Ic#hjk01#P)MY7fP4h?O$=rpR2sThGLX3@+_: (*R-0O;>W_rZ7`.!PkcAJT>BG$N_GaJSh3Q+FYE+l3i+X!^Q;V!FC#Q#TmT?#,/g@ +Fs<]$lD:u"^iZ!iV[rJ(2_u%*l.+I!(nBm5ink&qk`ir62hCf!4\]e+VMZ;U'A$A T\FBG#XAD.1]\hTnkm61:S8C(%qHQp"p$t#o-#^d!(m\C2@JL5)2^uQ/`>Ca>6U#E "b=`QUgOHQ=s!c+#JoOEn_@Fo70TUG+N`sa5ctLRlk\L\"48/3a@6Bm^`VP*7\Ten ->We#\f=$B%`;Hh!WEg!:Iu]P"iFMg'1Nq6p^*[($6r^^5`@Rnl3;lECdG!AiL$nn Uu.mPS`0QcTW9F_TGO<_#=(ubTaDqd:I"#_jFO38eCkDj*Z.3:d(n!Mnk]Ht`#mr? $K8'#TOfUH6jliAE]6#[`mU^08Z(-lgCiM7Bd75SLbMdcr*J]o*Cec5^> *hi?L^l%U^arJ5K+WqI+_;Z>T!YBG@+CRSI_:BI^i8['(g4<::^eXd#rYC90"d'iI T[!VSZlaku'S&Fi!PfDc^=Y&++m/J@?jSSt*``7`CB=hD`[h/P@-GH3!4HP`?lN[O &-5)0']>Vi&hkEoaoMi1!=#b/!a5W`VA);T%"PW*T`ia#(]eA@!Pfjj!#P`qnfV[%\".g=QlmL~> endstream endobj 35 0 obj 32290 endobj 33 0 obj << /Length 38 0 R /Filter /ASCII85Decode >> stream s8W,urr2lprVZTkqtp9eqYL$`q=sa[p\4FUp@e1Pp%7nKoCMSEo()>@naQ&;n*f`5 mdBK0mHj3+lg*m%lK[Wul0.?pkND$jk2tdejlGL`j5]1Zio8qUiS`YPhr!>JhVR)E h;$f@gY:K:g=k65g"=s0f@SX*f%/C%e^W*ue'ldodaHOjdEp7ecd0q_cHa\Zc-4DU bKJ)Ob0%iJaiMQEa2c6?`l?!:`Pf^5_o'C/_SX.*_8*k%^V@Ot^:q:o]tD"j]=Y\d ]"5G_\[]/Z\$riT[^NTO[C! L5(D9KnP,4K7ef.JqAQ)JUi9$It)rsIXZ]nI=-EiH[C*cH?sj^H$FRYGB\7SG'8"N F`__IF)uDCEcQ/>EH#l9Df9Q3DJj<.D/=$)CMR^#C2.HsBkV0nB4kjhAnGUcARo=^ @q0"X@U`bS@:3JN?XI/H?=$oC?!LW>>?b<8>$>'3=]ed.='&I(<`W4#r',)#l&eYcg&J,Kb%hB0\%LrpW %1EXR$O[=L$47(G#m^eB#6tJ<"pP57"U"r2!s8W,!WiB'!<<*"~> endstream endobj 38 0 obj 976 endobj 42 0 obj << /Length 43 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.tBOfFTn"!u[+g@KDSKA0;_J`hMG%eeg)tN2"?;-oA(L2aH6.\'T3A&&ttE* @jhmTAV5!<\h%>LK14j`TR_i:#/EJ~> endstream endobj 43 0 obj 97 endobj 40 0 obj << /Type /XObject /Subtype /Image /Name /I4 /Filter [ /ASCII85Decode /LZWDecode ] /Width 281 /Height 417 /BitsPerComponent 8 /ColorSpace [ /Indexed /DeviceRGB 255 39 0 R ] /Length 41 0 R >> stream J,g]g3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H >q_R=AlC^cenm@9:1W87PWpIY$,dH2>_l9+'+.1V \QljY0UPST,Gg^NB=(iZl(?D9'!Z'``PD>u6?qC)%;?8>;66"I`=>KhWpo .E)pJ18%Mq'aiK3[8d,&](%W<+a^XO;RXJeW?*DmsG$@,,f58"K 0U5K-Zi>Hgi,EpG4sq/+a5h8d>eX_@o(ddKgi%oT3Lnf40,KUkUK+kYn9B=e5:;fB kOa(K?G@/1r=^5^^pnX!PjdJ%0OA?!5SUBiq+!?$UXWm /rRUQZn74Di1;HVK#jB0$=[\=-4+-POrahdY`'HPTs+Lu!.^LB#D#-J.%M\pH2`Se 7D*U^a:\h.4@a()P$U[W9U-osOs1tmac_UYSOq6dOX\Hdb$ccnZ@oV=bR$DAL.fu( bql-$)Ab0R'5ZH\bt(ge2pRVe'0)[ASF&JcF2AMP:Qu:D59TS%"[gKj+q6n:'Pt$C +LG[.$\ssh/LJQEm&q^cV4iT9e.dK@8L/iUFr12[G[,fTiXdqu"+hAAJH/&Or_M#X ]gRG$M&A:&StqMBHAJ3p']0hhU'*=m%Im1/!%ri<8qWDR)dT+:l9l&OQ3""7N.^*g 63N&mr\]9tl2D>-8,5m`Rn*9b*.`:@&SqF_dR8-uihui'!!PC^1Op(b/kM\r?iU`X BDA33TB,D,CXY'c2O5?Gpe$)<"o8-I!!Aqo8EJm?+%]974E>8_\"'tO6QV= Qhj:=ZR7"P%J[_g9J4']p.1IH9O:q[N*!jWi+p90-OTD+-8V"#b"2HSp!!&0G 8((rjaS6:!UkB5=pn]@3gf7/?>`jPkF@69,f`hLsBaoT])$ZJY&-+\)NBpYH"^lQc /3!dTJo)nAn-PB@4C\i9==a^PiWi,4G_M5c294@%!!B%SMfFatgiUQ"nu4su_F65M 5n4"t?iU1WD?iE,!Ub@a/uDUZ ;\23Q(r4e&+1#^>&rJ50^e"3FU\K-G_72MG:uE:X*-,#iS2SEa2'B^pBFYRR"mP7u VrVLoO3od$K.pFZ!JLi7:pq.VaB8mZGccTP5,uCX$m8q#!>&XA-Wg'T)8[G(eWN@% aNVf#7#6>H!Yb[TP4#O(rc0EtbXcA4&I(P$b#qq#A]%&A+5u:7K&JBoJ/ANrA:D<+ M]tOl1!HR`n7cek`[%q$WORR2pUs6`cr=3IH&f^1%U@!8,$1Fp9&R9G^_d%P?mlG6O;\?(^`N\EJ/3a`5RKdO.g;Ti(^"_f %tWq(#JhZ."Fs;`X2,#Y`qXkLnKWPPd1F'G9F27"n2\NKkoHOpG`Mmn49puC*lI&e O/%(dNcSA`l_o;e_B9L^poOYVW%/>-e2N+I5lk)`L17G6#=Ng&'1-A+jj>fLo(\Ob !ad\h@4dlM^1PVV=A"ETfpbC.QP+m<(m+eT,\s@]"6*.$S)K;FlGcdH)-JX#+Q]1c &1%X7^jH[_`[h,`JfrbZ09,N%7*%%a%L^4)MA?5gL_c4J6F;3B1(XV@].>&`X?-DV -)d!OmNI*+%LTK%5K=0>`B(gdK4,Lf86@)RLA4EC>P504`5;jk3!Fo-<,[K+,J;bS .>Eg_6pg2N+6#K^fBoN$J;>mK6pq95L2o?YkRk(HI455ZT0*C@!>$tNBEHGl@oSGK ;66)u&MS;W#Pdp+5m!YG`1e8Bpg,/[";hOjr]`aiiL&C<-3I)f]El#]W'_JMnNHB? pX(\ri/A/fU':jR5T_6OA.i8_0F#K3/e]"X:N8]T*=(6`cD1o3%[F%aAJ"kC"Dg.V ;09l(mkuBJEdo:m"q4#slKE=6W:$B<#6RQ3(/9r+oV*Z48/ju%U_6E41-P]Ui1eA) F=o8p]uN[J*"1_E&-IHm%u;&F$t5Y6:Om6k_%8m;_"\YdDUsI&`?2(8,2We*d!8A-.FmFkjMiNS8Jd%@PrZQ1EGMg?3R%j 4i[7T++kHlGa5VpaZt2^+C[KiO9+GDJ/B.KkUV;MU.>?Qo+Aoo/Iis'0EKiB'-mEb !tj$Ieq]IjTX9(R5S,pnBEMX01^]0aC%#:=2?Vu-Iu"X9'\`<%+5hr.&+Ns+#1ab\ 5RV?AP^tMI_!3,;/0F?o)r^2b!#Q`mrY7^M*PlCh!9,*Z\c;bQ+5sL56(.fbi(Ck& #@i.5C*"0eoE8R++7LleYFZusO;`Y<,_2g7+oWC`hBGFb%q#AW60nRO6lnYl$34`B C?,M+dN:cJ(G6aL5ep!0]HNqSM?^#-iI;#EE#)g]##0&0+D)JLrZ'kAk(4WeU&PA6 dN;jl"O'K/J,om`%QD1>'2Udm:o*j)o(W8[!5T]uiROG'e^7#8dS/G($RPj]"O-NcJ3r][ B^K1J-3/,m8?!b!63,rV%$F(&5S=OAc4*&"mfEV"@.k&fp($"%+@'BIU@JkgL`fDK &4$F1X/#^q3"R5@/?.&*1*HiSYJ<"qMm.*=QKnJ,g@9iZ3U0*UTX&!4!Z^ j;qar&-;t7iPHY0l5mdqnDK*D61$QV4obR$(R&;L_5c3S(EL@,!MWC*V9[L5"9dXj 'Vg$X@6G&T?j@0@!"rok!-02i2("NU@<-N6;L9_t#RE_f""@.s69kb;<$7/3,B$*r ^c33/iZUQ8$m8_!i92/d"sC_h)WQA7@S@,[ru=Uk,N;/r@A4"$C'd3*(8;YbX#MB_ ;`s%F%mtjai_Bh0s#]fj,X;Z%Jm\kXrY<9e!$V=P6=L%6L,]3Mi^-(#;5P\G-7/_S +7n&,5d6i3?jYf-aFepU@S7G8;NK<):uH4/5r'U6(^+lZ,f&UUoLpC#"q9t72spGe +:nVgasLu>!C7')`0^WMrXRp_'uBlf9'd*T%M2>c2rW6tTah[!eP1/=9si_NJJ&Nl mXb"V,TnXn+9DXQ1]m_/!rt(Y<<*,O2?SIk:pga/oat%Y&FEpVZXQ\l/W:gF]#DMP *s#0O1;mebej*VRI%8NW_!eq[;^_Ag1rl@Tu3C'em^]Y:U3[DO4+6SS* ^oedL/g,[:'*28].NT0'$j4;m,4p.C!^6\Y:*?RJ&`AZU!0.?CNEST)#f)B)[BWpn [9Ida>9KR\eQsB69GV$g-G`@tQ"D/C>=bIsn"MN?YlZ&Ghd+`3<.[=hkSbS#PfU^0 +%MnF^lBMqL`q9Q*l03I!_eWZU.-0i?f\s;*pDT,X;\EPD*@8Q6Z`?:1=Su 6"=;_UL&OV=!:`V'JLas^`VMa@T4^>[?)["e0DC_+S7K+_AE8=OplLN,X$+qOQ^U'k$\8P598Al^f7i#Eii4B=S+'g!"oDlG&>g5,JY7664O$H=#8hM!'utg &gATP+SUNF?P ?fF)OJM` !P05d`#CYT)hFShTdh2#$3Cu@96R<[[7tphQlgl7/%?%=p^r':'nJg.?Qojpi`lT7 hI@dX$>&39OD5n'Ys"+J;gT(?-KG!"_'R,@D9#@B^OJ!"=D5$c-KZi:%DcC`m\#,'5XT Jf9;n/S3RHS9Scn@"K5gIrrO)%KIr:psG'\eW"h,NF4pkf2Nkl#T=C]]jrL0F:>ot#_@V.S2kN)M,HKL^ p,&p`3cS(a8#`_6a8boHJht+72688#\up O.)>,=`uV1^^$l#V5ej@WaI^i?m#GWA-Dr;#,&sCJD(FIS-kq?%tXI[+tO+`[X2A0GS*(_(B(Tu%lpljOIZ;L;A'Pdhj;5jOn'@_tUJRAF7Vp(ZI* &YUB\_(lWh8e=9('-S,$+RfmAj:48m%Ns[>S&c'>iOlt`]qF3l)qke.#pK9e F?1#MT.OLZ#[n2C`I8\tQm)N>'(;\-J_1I*]E3YK+&\+A5YMX&`!bM3%%ta,A/5Qg YR>uk$Xf\A9c>,4a:2Oa$UD&9@(!nB;oG?6`6OGeZm@YuBr%I_!+8Nkad'Sl5C+L` #\j&WU#7$bYTVO5+5k?E+AK2Z'EXq$!hlN3JP$cqqATIDT>CLFiKOQC(16oG+FkpC J>sK$p^$a@,&=QH_UV5&c8:I$pdcQRV"lh R_gf\Jb(EBD$M7/7_fJ0GTh]GPU<&\rJl5X0DL!!496"Xj;s h)6AAHoL#:-fA_C=cajn,R7N;c(&Gl?jmB%+93EU,6/Q&&agd74;7eP+eZ+M5RI[, M@%'j'KjqiPMR'"I9#3_g#9A>'*99O%Kt^=$:)W56\a9*/DKhk$]poqUB %L,fQiA;!$DBOI4_k?',?5to_4pL"%"EZ=(@G-TbVs?2++8nDQ!VRBs>SI3F(FOSH JW(J_Or8h:Na\FrTsPaEloW%qoKfpFLtE[*]Gq3m+1u\<5^46t$m:'W"aYk7JF!79 GR&FR+Wq[3!PeqjYT!TZh;A85_,MLAe0(DY%`.oYJXciE%LHRDQD(^A6\$8pdN'LX W?8Xi+1N=u\MD"Kr'AgQJ_D,1j8A\V+Kt8;T!?ds6ifSR9EGJ#>E1]lNaq&Y#bHbN !WW35"@V[uq@!@>#QOiW(\jX(&W&o-L0t%Mrr52Nj,']1VDq8.UkZ.qiFW#R@C$a8 eft>rZ!af'm$<8uKZ[sbRS8H_$&m2CZ<<+j.fE\V?R$@_oe`&1rs6`HQ!1S%YnK5a lS0_Yo"/>2Ju$1*R*]S*)HlH.RoQ+l0H#g=6W'5p?Z[+m"esshZr__jM8fP\T`tG< !$n)Y&>HDY)MruHc>aRunDJed!lIlX=IfD2#\%Acg\Afl/&0+IOE_HP%L)n5@),ku )A!2V6(njO8/Mm@K#.NgBK-P2"2oIqQhj`V;LaHQ?!ap:[plQ6qjlU:FDChbJ/iS. W(=R2(`;/rU-3'os7aHhDth@[\lO"/M#T&d7d,R0DtO$6S8e9WJ2*1$!V6VAP2i X<:%JI37Np!Xtc?\ZC:9W0o@&Ur=5N,9gR4jFq]4Ahj:4*(S9. 4+kR^DNbE_ph=b0f(-"`8O5Yg2PYdf0p#p+(.XNu\HmElMaijb;[Pfg9I%s+i"?M# PTfsX"t,="mJqqER#W+u9t,A[p`3*DiQH8qkWR&[cVWn>OR+/H_-pl+])(C.fr]J;9E Ur!03B-Lb5Spuh%0f>Oj!DC!AEJZF474U'[gBmBJ(IuB-$A&5hDX,74Wpb-S%"8gU ?YA)9]shq6$,_VEq&F.'b J"=Sf\3:shTU7!K+#e!^#sUtB,DcIUMB[jbpj,.Hrk@TGLRh>\egd52g]8Yt/YHMP 49kio#2om&J-#-VMP)OCj"(0?62ihL?ihUh,SMA#\2),%0-c+^;Ok$P$pn&1!!#,\ %FR!f`";o;8_bO$nQ(\R!#:!#i<6'SLn2=@O9TZ7Itg>%#/l%a!.mm_L2]1FJ7/73 ,]EdAZ2QS1!+-+e5cTIQl3P]!lQ(L`P74/[$OJMk+6b&,JfsVKa"c"18_bU&nRi>, oDKr\rS3'HCPo&!+--s5!)Qi3"$cl/",'+.fOkt[ZBc%u/;V81 E2HUf&Juag%"WroMZNs1#_W%Ya()_&#ip:tMRCBb3!0a&W/_tX]Io!?^BZ#Drd/b#1fls+gj''"$]\*D!_D;?8K\F^"p-D/ #5J%]aXP3Ri[/c7UuO`GC*'90qA#o+Es7,>0:ANl.tE`q#\3dG(!pJ.=8CAQCF#p8 !WF@#i*R,TW#rO2^d#kqJ0)Nl,(t0i'#Hn*#luG#"L+I2!cUg>@5oWfd$te"Rol^+ A1*&7p-7%]*'-pUN#d^tjIURW=\Z0#^(Hos*,%N/rP82b.!=+7\u`(kJto5\NQU 7oTs/Oi!WG\;shSE%qH7l9#6kg_,8+GH,9lF\%lX&I*^Nfh+*&!4DNdKD7I4AkE6B ]_MWe49^:D2CV2<7L?nQ$37j]"G#_0$Uml,%&#(N5e&.7"c,*ungmfA#c8^&k_P)s cNAe*jtE/]n.5$ihb3^S`._lOcL!+=NqG+0k?)>TKb@DeLs@+$dkD0^0G2@pH4Ih\1nQ&o(Phd`/@7nnkF_f0 ``;P6._:\3;$9,"cs[P0`2isdqa1kg)@lI3XF`aZ092t?(ec'%fJj^4^tB;@KAhP4 0YTciq'H>5b%PF5N=ZWeUo,QWaI/<\#+^;^^:KfU&A1diVsgMF>],[Als[c Pq/L];%\rE'Z,eW!hsLZLU>-q!SIFtn)7O7NY?VPE(6p5O=mI3"@"[3-:@qmY)%Z. $&]?((IR5%(!oK9_g"dq47H,Yn^CtOLoV8"UfR/>:+AO3u`?LKO$c6We79Z)fn( \CMTDHu")DGVt5ScPWA^P6Fh`(Uut[FhR$A.bhr6>Si5@@*jB3_R]lcajlc2*e'Ao 8j1"@9bDV40rr^Y,DGX(+s:8"blB3t64c:L5]@ThE%2*:M%O[@Co`.!h$H*:j<+!T &7>]qqZRW]7g5h`K'5N(TJ-K;?A2KTKWnG[0KOh?21[Ft!^JpMQl?)d'0ua4_%[J8 J;Jdn&N4m8K]$u38?e%<7h2IAL[])0TN;BnF96bfLra]CgEV5&&%:Iu3NG@LpaST9 Yd4p()cL\N6I!(_lZ@L)[5W*hOhpe/B7,F9WU#!cS/UN!W*0FGT+ !Lf41#ZN]aYlJ/LQha>uO8on:uOm4+WbsL[i1`49#up-jS`h5PXULbT]#n "g;CfLYt4O&9EN/Yl`k%N%c[cQsC;#6%quFLH32)4>N+fW3iWm5QX'`&HdPc*Q%Zp \d5I$"1aVAp0JLE@-?u[/'E4(6C(mAgU=ToOD*.SE2PIsMDOdLm> ,(t2d`A"?T@86fc0*!+.5%9GPkRRZ\$%`.("V?'O#[]k;QcXoJJM\'sQl(O?0g7S% $)pi'3&\'%M1CCh"JAKmm%T0k9SE&58jH.)n4eSKU.T)las^$ge>Z&J9ZeJQK]#`4 5X[J+!!)LWK(uL"TP6q&X+VmHM\'U3GYf4c.IteYI%^M>0Lo^UWEiZFG!*BMX/*h]c9SSoC RJG-b0\(b2^]QhC]I_UXA&#>MJ$W)3Y1PYQc8 #n\2M_R[]q+dF_h#P]dVR-K69+96WlJp8F=kQHL1+=;U\"1s!_."$d]fnFBS(aqt1 W-/==0F&O;![r-oDu]mZEX)^i"k[f+#YbPMQ%K?dLNj>]#^6Mu._9;BKD5ENE-O8p :^O>-d?0Sp:(S4IB9 'efcD,4&%6l@nl@.7fF@$9A\?ItqD3&YQ*'!-Jle!#eshKu,aV]Abfk&I?Gu!!-O4 ^]4P6)h7oKL\Q:K(_h^lItD)q#7)s_!)3^fVh6sN#%.smCi>mf5_TbX#*:Qm&71$_ 3sJf:"N4&jaE30aKEN\X7YqC"Mc:e:2H,F5L,e^gJpsPpl[YoFJ3X5<#S;N2!7n,t !72:;TEtjr<]!V_RG\I6W+Q*T&>;>mJI'?t+:uBi!%EfH1a7>J/T).K#6>)41EB$m L^oO,#De:3,>\u&C(pXJ5)8nCL/;Q;G^Pm'%"UZ&#O,/3SJm=BqStt8M\'A_66+R( g_91W!Q]bFZg*0+@>^^eL\jW"YRD@80`llPd%H2ILdmt,708Pl*4UflPPl&%<6V:t !^LW\e=;F&A-O>;&;76[$SmqHH3F`!!AJ>u0X01`X9LY6JQSt'#T81c$kZo4J1qB3 \31$o+GhfN#+0+]jgNod\(cVEgLt;UV7Hl(C5067#:QJV0EidlUC-3oL8!+[!!@o\ +s=sUKQ&5hBI8=B`e%SF)Sda&J1-"o-TNs/JqD@$O=C=1.Y>/\!jF2,\1HGA0*g=2 %erbRD8=lPWrc*ZS*30nci>;(3=a7!W,W&BhhOqah?DkE%H7U`FU'UAhC*IN #]g4VD[+R#L(VL0[+L1mRb@35PNd(TR!VKLk?42@K]mN8k]I%kM?o"B#38L/YZCi- M1p2'!C2\HfW#"gec=V?hp;sBjo+*(ra5F4!>l>u"onZ0%=n3_JA;L?0u\h=lX%58 Lu;\HA=pe4%#;o;"gD,5^fpuH>_SPMKudL&aBRUO=G*c3ri66 ;6pEC9a&71#MVaCiI)'SIflpU!4[N5fY]luD#aPsi-VGU^`n?6NX]6QOoZQL@#9E< ,1h6RMSNX*4;P>`70nbNcNu[g`$8$M99VoN^4<6hi&ln,.%uXnc7f5$'"*Ej^k_D: "Lpu7OS[t!)hH(YKe;,VmD'(M?3g0OPILq9/IICI%KV(^J7'3&-ieg3(cHUO!J@./ i'OeI'S1e?!<[(kfF!1[l2Z9-Lh97&5Sf$**.[5i-@cP9TEB^f8cXZn"L^u(#"u(c &VM9E!!!:8TG`:D'`ihHL\O;KTF:jI6&*I']g-3Nn0&qTY_@mRJRBZ,89KOr#e_ob _lt07?kS6'diZJXcGg/-0PXWS,lfVV@(%bu.-eat*/m7_;s`b'^jh,A!_i)2R94rlk(kVa!!YuDLTgbFi.&"H ('jVP#.TVB^bQ.f>Q\;]LEKf[d[pVam"je8!GEU23,=.##mT=!"?);G+92J<6XiEo #Q:^Ud'/6)A_B@O=SV0785k%X*="Q1!71h%fPN7V9*YGd!!j2Bn8/tT>DD[kKH[1H -k$6_,QIfMK^4(*YV)[^\q,qG)G,edpp>Q2$&_=]LS.5QO]$"E9DK\;5]\:;e(;[:T-o.62na.@:`4&T@c$(]j[[ ")SkWm2,tC*rUUS"Fr`>et2pB:BL#Ds+!WHLOj]-TG1JcY(TqeMRZ^ld&I3[I(@l0 !"]Fi.Q2qL^6;YaJidBM=:B.-'CeR,nQ-HU:;hgi'\+lLJSgA,0WYHIG\4K4A7dVD TR@$[8VV1t#.SCQ&93IbEsFCCLOaFN899PoH&$Wl#H2j%jMH]1IOnpE#P*oe0f?Gu Ws([q#iH*r(jhI.#R32/!!$>\50s93Ol*:shYZH2QiI+X9*Yt%_@'BJPW-jg1Spr: :]PbG^Hr1@N/->6#AA@;PL0VSG)&%rL>Z5=cuOjpAHpLp"ZTb?5X9ru2$imENqaBB -?TT\0SqIi"&0+&=UD?HLucpC3?1OuK1tq;>P6$Ap"*LBa>ANG8;I11Xm6K$Y_I5U FpO16L<^kSSjkXUM,*h,JD^idW!i'C!\EnE LkPRBM)>kLkZ`bGBF!0lK?oie;$-itIFP3U'PSM+W2kW&Don\!!$E+<%]P?t6O&pa L8\g=!!EMQC4r-N#.7'TBRL-,Ku<)2"IrnT!&0/`-%[7V+fGkTfPH1*!!\6qKZb6f k\G\K6&+<7!9bban88JUHA6BVP>74UTML<8I"VbJ#1.";i,/aLDlHi*#5E.fJ09Vt DMC,nLS0!a&9)U1,ltf1'e"orN/RN\Ws+#spR0QXE3R4;)hG3<")nmF!!/-+0Na!#pMgC!fcXs) F^0g;%A%2l?&9p2MRO`15qk(+r#p^'0A#^59@u2)g0$%p 'i!_(A-fr-Yc*,"G7t!m43g_=\t0G`s8QJcl_g8`0SF *m$r")M9GX6MNYJq1r)kjoKd@Rg1[dE#e$A[Vm-5+i8)ck0`!"SS'+oEuenUl?aT8 _ngB#TtCBMJ`I[k"=(7Yq4'rgR-1+";"c@TB)XF 0V3p6"rW=i&AEX[-uhq1LWET!J!>Tu!'lW6#lm2O'C>`acr9T;5L@n>r]a5u@K'H( 6+N`[8aY;tZ4og]EClg2S>?%C_-K?'e5[M\;Ue!/;Al')=qhbkV0`CaTB$[nJLj18 !-B^I?5V]cU+[W1--lS%U1tGR'R7_o5QHa_\ bK(o\Du`DDnqDgrq6n+iEi;$N#cIHl!"reI"@SmC@KmPXCFP!fSRo'Z4,fkXP^h8k e&m@O-i'WhOr"3*D5"otnf$M<.osG0/(bI=!+6W\"ouFE*!RekBG^sS@&`!l0`Y;m V1Bf[r+Q0,?iU6/J;=l'!Xc:U$31'^+:3f)GU`mt+@%8C+2K?B"mEa)BQA`ULoal; "=ZGG!!>f1,QIo1F=_rM;&XqQk:E]/R:lJ417or88gBiRJbW+b7[F*nSu%MK5rjV.N-:eg+95spmkHkM)dl3AE#o,7T7IoY MjS7DC0`.o*(B-,,bLfu5J-FN0*[.F#PaMUj3/.s)iLB#N\6!X#c]N++TO-J@RN?` _5@V@F9DRDGSS5[df_sQ(B=Ff(IA*%!?j]QT[TE%Jd0m!PjL8Leop) JU+1):jH<%o&,6i?rSfATRX')1bXS$$3L=^HH94t>X\-$>:Du;(]jOT!3d.=TNDX( TJ?a;i#;d6GRso?N!I0%ble$$BM@n_1o>rQ"_4P6XcXnCK#pA&5_K=Q2iP=@/+65D .+Es]X#fESm@D_=&;@CS0*iC4%&7&D!9b(INO4HlO1k=jOS/]2:":g4^j#J59*JVu@#64bGMemLFK$]&1Lenhf p&;`/TPb9,!':FNS0!:o?k*5<1'Ra.+9Ol:%)N!%"ouF\KFjLb!UrGn_gFh%!.YDX R45%%3[kW66pKV0f`:"m/>OBk!,\R?!$DX%QLY2N5R"MT,sZ/aOAmVYYb;$t#Z7c: N^&m-'EKNYB)j'+&WjLc#f*A="$hgB6%DW8["r`5TWAHSf[=#@4H3Nb)eqnpk.OaY FcA23!sTnJ'5Tp0aT;W&mE(%9-HSlp)N6(#`\qCjoa!1)h?QCSRFQc JA=.O`-<>]nZ2fpEQeue,]Ab6PQD!Oq]12l-&j(L&A[5D(nml.$_`H"6u^*W?iUCf Y_Yl>#n.(!'G'3/'oC!KQ<9QT-j2NZE58t/#m:*LV-n`qV`Ac26i8,3;'7]H20L#` !"fHDn7f`V:b%!G*eCEO'Jj/!QEh)s!>2VbFID.s")L&L!lPV#0Kg@RFE(b-7R+aY Frt-D%>&EFVfPn(_\B4hWQ?0_%B('[j8:G.!0TRbB`jJBs"B]MGVr"d49U6I*>$!n PCNWH"JAR'Jq-B&Jg`njYgabIOF@iEE)-gl0HPoJU_JEb=URN'.tu@($MEO.T>XM% g>+PN1meJ6#1-)'dKN9e-isG-E$l*WMUB58q]WfRk!?9[&;DUZ)T.A\NUa52#>k(6 A($+.EViEBaCud-SQ9I\Ckcq-R[4.*!JN52bk\.ok1nH;L#B6U!k;nRJUfV6E9nW6 .")S6pdL&/hSR>F&Jt4=g&te8DM3iG"b^]5L>.#YgOQ@*)pj9=Yr!32#_s-L(kkl8 \1L.:XqlW=>)OP4gkC9_'uIGm$LqEY`GhpIh>=q\iDqGI=+aA$N.S0!B<=%qMNLP^ #S.Zi5epGHo#YQad=;3*#Pck.JTu["dK[AYTR\-E;V`@%f!L-U[L*f:!!$,i1Pclh 'd2]@qNgs2(BdqbCd'gm4_u:^pe"d"TE:Var$Xp_M@r2p/dDA]$c=ql$NS6fJH.k: 53Lc!hgb(q_;I.pE7ai=TAGDBTJ;U849]AL1C\sRX8'l!'lVbM'*_1 plSqi)oJ$`_9rnQL'KudhW6)(+p_WBpuP_"%[qi#eW-lCn1n T]U+mdLa5-'uBb[io1;QDud*N"X5<*NTqX'C_bpd(TA8/Jd3+QOU?Z9$KGk !.\Ye7fX>kE0Lp/(_#".6b9[Z^ub)3>;3#Y_rM16YQ,2i#_3s,_>Xs1\.7Fs)PR-F ^_n,#ci=(`(#^VBJG('o'SXB[*5P+1.SV#EiW+gM(BPKsi6!183X^P@nWHcmTdUe_ Jk>&`8nL1f"gS+ojq_l5+CG<^&\p"a-5FTG$Xm9P!2^ApZqCDU"p)L[UZ)KNU17$n !"VaH5u&LEgq*Up:94j<_-du9=;Bdo']ET?5>ua$Qu)LJ>5HhQ3b:-$"/Vs!4&>4!XQT##G?;Hi/9\#INS$1 c4+S)U"TY=1*5E$)`2:JiN=*8Xr=Zd)To*N1jU(VW#DA.)M+eW_5J8;\Lg<-Gg%rE>j9m+:G%p*[.fh!Dr!T1=9#9j+_&,AOl4(Or 09f?W5f+W%"sA`%!!'NMTdh#@j:H8K$"3B]9dU$0$TQZ2Vh+ir#l"K5Y8JPD@t5[% ^]X`>0QTO3=u*ZLJ-$:5e/][#6DO3C,2k"FYeGZt5bV^1THY)7\h5-8!Ml+r-NXk\ Pu[ANhSS7cJaG]k-9d9,>a#:C!(IB)0F+;o*.Z04UR7X(1_f1B!b(d@/93[X#SXO0;RoeZ i&;kNQK.9QK(K.r'E\P1/]&D,U$TYTXl1WL]@F("[i\/+oW1M"_M6) %P7-=1BUhIe-Vi2;_i)H!WQ)P1d6nC@ka]Mp7<&be,TJdo:j;+/hg"5nf9FX#be,Z TE#_'g+GVn4lApT@$1s#EcBrS'"2U"^n`(CFV,hW(%ME1+;PgfEZd[kfHnJt6Rn`X$3;=D(*NfV@0:oodsT+,I/sH^ GK^VBh@O*$&=;F+JI?rDn.@tHFTkqjFRUHH:_2m++@(qtm3DhNs"tu+++XJI?rJO@ AcTV'$tt2g@Kr<1EY5#!'*/j^@;HZ%+;)F)IlL)SfM!1akReY(6T08t(V+D"i/oH) HpR3`C+(0jV1ug4l$ra[J]&_I":a>h3tL3M9CelF@b!#/n$ZYcUcO#!k>;$s/b@ Mdk7sSM6o^!OVG`(_A!4+^cK3!O/(:efWk^07YAMT]Ms,!<%X/"@-RN+K?6oRKF\/ 3WSFI".0e\!#Pa"a'g*GU&6"ki#fK.$7ql]+8?.[ 62r[-_%L29)\B.WU08_5.kqf!3'\5sFq9m(j9M=X)WCZ1+937rQiIH$+5gr=!;mA# A,q.M#j*rdJ-Z@1:*3lj"t`da_>XmRFp"H;+#qq%[EN(L"_]+'0Jt7_+9i#Zs)+\^ *MLf"8?nb>`(_2Tf#9fZW5bnFc`YT`t(a8kqhuF>)`YuW.""Q$e K#e$t=I_\V&)]Oag],&/"2J.>ZJik+)uuAa49VrsHYlbO\gjOIc$VhV9k)r\J;=LS Fp\j%Dh7lo^]kJ20`BI':.6LcQu;Kk;BSBnQ963@0A12"!ZqHU)'Q.# iQ+X-q3)ek9*(XKJ.;baoG],L!2-&&_12sH[U"qZ*l7=I^r@4!M?70&#e&G0J5RH] $oWVNBqc@Fi/>u''@C)"#ZEhk!0.@NS-``[+/$-MTS_&=KWouU#QTaX+p\7cM?MPB /h%GZjX'uCUJ3&U*s&GZJTM]:EA+"tmIL)h+_2>(?LGX='qnDT+]oH[:__kV'VS8: !Cd[[2A8A1*he;j!29fCJcVP>)dsQhaQ=T&g0l/i)$!>@JM[hoGSSbF!b'%567*<3 %Q8l?+!>g(+:\X`VCt1;"s@jd!"Kg=bo?aB=IfQ0Q!2/Hl5g05D.K^WS+F4`(!%\tuiZLM_)1Z*GJCG[7/hR,N $UB@I+f%idHlWTR%Y;V<+92_Afr+A\-)<>\+R;2kC`/q7VKHsJ@cRS5CPTK`U9!ag ,po:*Ha6!1*'lag)@oK7<&oc7%Uf!^TF)^5[2GW.l%#=;]7(=."9o`u,%9'!!ltBj RN:;j$,HB@/H,oa6\8uR!\-/0!/:kjJ-CI^%_r\Zi(sZf1cT%3e,'h1K.GIN"s^f12!-NaIe @'EHY(^pV$JY;LG2]<1LA+F%*YWs;$#D=n$r:iMd#:i$W0YeAp=]0oOU5Co*='[0V ^Ja2-U!U5c7%k>DV1O+r``spXlXaPa?H6S2fZ\M#(So,`1>+4tZfSNqK*U26\1!n3QI!#U`O38Q+b+IKYh $Gon'/;p1tMV'+`dJbQ&W:1FH+7`s3-V>n"'L>*LJbX_eYefgTSnHgoGb,.Ke9RX`J`:_j7p3uSRqG=, Cn$4T`f?385obB)TrI1"&;U(E!>Yp5`,d$]E$h22!9).AKG"nMMA'XtV'I3,ER#o) &\qoe!gVkl'E\?.3Ykf*-&Z88i/4[j!6M>oA$om0pk"Y6q!a=E6fIqN+b4".A136g >^r1gG[_3c-oB"-fYF'4G(Mu8+piiQ"%.SA]BC$I:NAW[%h!X?c0mi`f>6:Cl0B"V0: kD@9!*3s#DA/0gGs.lB?\@R]O)JT["(80Y$&K0#*_>k5So4W^U@A/'US;7*V!!L>f k]@9650ShFpb(>%A9fhMPCj$I/:6`>+EW2Y`N"qtaN0_O2NabB!)LiEff!Oc#>tJ; 8\CK;!Zbp,Jr4UU2:?u0BN>Nm(Z!e::]22:V$$_X"i%M;A\`Q5Clj:D_+d"#$MYm_2=rEI5)0LYu' f-UV3'9A645m5p].,ZLi&+G`N!g'GlTM0e^@Iu4,E6AB[&0R&'dRSh$cQ+.hMD,YQ 'Z]u(+b8L`OAIG%L`e$];G;eF#aH`-+9Db?e/AESAdkQH2?rbl*.r3N%RJn0#CuYl :3k+qB11ng!2,!t,g$,gcnGM)Bpo@VU_eg]THSj,2?gkr/;O#:#6?q&Uqnkf5WJuV j8;K$n:iY7M\ lY6G%3#E8_n-`9#n]i6,?SW@_7W"Q\-**=A,n&d NZH&KGTa#,SlPW3^o;EG,(aodK]dF\#P_CHA)qcl@B_PBLtS)J,oP9+>r!Yt)$3;7b0ZPl[ !!96;"QS8;"XsBVA1.clEEX^,J:SEo'MJ`4&0/TlGn'hChcoSD'$!!3&-.mO>^Lr. 83e-t_#RjKlGc/iJI-0-c)!0UU-V?n??\X?F,n>F*J1Wf&SeNM4dg&#J.VJn@!FaB iAXV''I+bHC/D3MoI3S(*=0L.7#qJ>.5$G`\mup^Rl>HD0!PP>Np$ZWdFEJ,#[&7e 49YaN[%'Z0H6;-X.hoc/"NI^Q+629Q!!$a8#[OK!N0j_t1tk?J3$e`;jC6T&Si)2J V\S4X>)Mi\.tr5T(?3J*MkOr=7HhT+,8=[IEFXl`Q3AE!iQF.A!F#gn%;im7Fq2\: 5l`.Q$49mbNUdDjKchfnJ8?h<@N=>nGT@u9ge]U-9JXZejrtpu;3'/'4kRGU8V>h/ Uqq2b>s8-O7/3skXe;8-j>93PmF(+ -9s,m9U! &Cg_K^VV6:lWrKS"#t.Q.!c-n5mSr+ #UohJ/\r\F_*emO#V!Sl.7%Vr!iQWb88nP0:*Yi5#/T:$E.I].eUpfS'J/I'%*.!#Smp ph)qgO!YM3Lf6G<5\gQS70ne#[[;mg;o9PN#6l$V3dNis:iM!L)i\MQ"jeCqpiQ_L >(@_=![%^k#^NEm1]V$E%B);mpi1k@K`F@B3rl,Z#tP4e3XRW(LfbCHk^S7N'SAAE KV0@j&2K5I)[,YDJfrToTJZs6/\PSu\j2()@"5Jmh*oKR1pN5E@!)^JMk'!`+)l^` J1m'n.fpPF3<>NTHmfuN$Xoh3)H!q5 d(7+4OM.S3LT#23!-Ed""Ts8Y9B]G:&-[a?-&1nH!6@>3R#Z]90a6Mt#@L@R\nOKe W.D#<0[L:6Ljq8V'a#$BXEY(,ClX==R8+'P!-irH=Ls:'D$CPZL&bW."TcsZ"&Ju* "o)J%9a/m\"bl_Y#+/["TO%fOU'=FQ^@5'W-jG>KV77'R#&,Ch.Q@K3XFL?[6b!/I +9I'a#m@bF'S<(^4$47F%=sFO#l3kFW$N'c?O.dF#9XY2n8n["A/Ls^LEVPq#`L%1 r(]5#cenrPn6UgQ=9ZKI"k[+7k["Fp.g=:-L!Wp*86CS-J56 "TW4j@!7BW,bK=5";i/0o6E;,!J/m%"mI@gi+@\A?\N/>Jp:BQE,#U!-AMS."Mcf] \WDE!IS$Jk!g$OgTL/\Z1PMc2,A=.]pg/Yf>+RE"KqM]TLe:ja=GR"YGR#@'#>:3c5U$:B3N:Y1K-2m-.KTlsg=BAX 5d8#F!L!L;9h]D.7oD8HXY,u!m#WjOF54TC^<96JAlq< fF.c,(g#6%eu4):FaLp/93%,V9"9`Y+CQ+;!!?Uo!4[Y)O<]LYIY[]+.c;9HLgl,# HeA+HVA*uOrI[dBKNA_A"rKp^&82:#8eo,M!0@usaE7a?EX:S*"hdZ]+C^++O:p1U \i":*&9!AYT>7^H=@>CU>J&*uNs&WkLfb:FTQ1F=GR">05?Lm@+>9@@O>"#6gC7u> &;E^bV%%AL#OP^89MpeJ3/@96J1q04E-f*71P_>\gCSrg>UNb+Cd>=Z><&T9;bF@C =b*_NZB<'L&/kR/YM8[rg\$XnZ3T.rVEiZ\#KU?X&5r`qcNPoH"XVIu3)\Q9cNQ2O h&Y#L3)TnC9n]`JK]q(nn?rPRCrq[A98*.B^_m:B+5EEm#Zs$@rGEJZOdQAW&m7$q i,/bgF^ApchI-Lm?u?2\EF,L.?=]4*W?ql>Qm%PgN@9A]=D$7]56aq'f`IBI9r$PN K`iE[)c-cpD+lWkIYAcm!!4[XTRn!$MBI<2J;AV](q9V!@5j8W#,&J2Q#$e%Ye[Rq *RFe:o>*pjWet0j"EJ)VfYRjnBRtsY]r2_Pgs+bgAV-#!i-k>Ec1oBiPR9)ocQE=C L_^4$Etj=jJEV'/ee;(d-AVPV?YGB)e`)u&"@$r3@^7EJep5.D:7#dqh_=9o0).:Q,6L+SaB !"4=u#qU<+LWFa%Fq\D/H\&\:2mnfW=G0H+8W#V>?9j*m3.J*hV?+JYK\1kZ\7&_[ 'F*A5K#PCU!Q3aLAWn>s@M"Dj:03q;F0%iNh?q>sT9kV1fB?kpR`&Bb9n>_jd:#&H[5:g"$_T7P?>@L[[83'uiRA\bQCAn[q?IUniP&d>6m \FEC!J"Pa^^pa"Np(XbC9hP= ZVKaMf3BJ%J2E#]^]4I7BXfa0C::M8;G9?\,3sBf^tBt7E.3Lk"9>BB#Jk?[OCR0= Lk);5=SQ"C*KU=ND!!Uij^<_^%_uJi=r!DIL`e[4[QXam>R4^?"or^Ipb.;(Am"n< AQ=?Kd">>WIte`_!&.H-Lerdj=p:9hKg8Uk?r_n_NF\,fkaH`n?0`6fTXi#p\qX=F2\,K/fIlUrm*r7WsTL 8aetn!(_PAa=H`Is)7Z_Ol$0@YUBS"IKVnd@t8cU0Ih[a.)?`HJbUC?M$.B:M[*O[ MY2M1+&J1qe&YSMrY:PB'MLd6*Cdni2>RBN'XZ[0CSuiWpk8`DKIiG6`mFgXa'K+9_7QP),8NEqJdT``[=9UEZ@; $)f%WpF-Xa385!E#QH@-pa(^or:0iEg^FV:1T0dlMu\Z;Ob`uAODe;VK82F3n?@Lt !*NJ"3/9X\iAc=gmeVa"="nSjR^BR\cFgs%*^b(/r/qW#+#"UE?a>&H8 Fn:DgE5sP4&28)(MHDrV55+Z4L2E*8FRt;bkm(dh:b&C#B*akGnJU3a8:?4@.R0jX K.&7%E%;$0.=tqWJoE(2QmVq\EWs6,!=2qcclI^bqY-V.!D%=o(khV/D4U/:L-RcX <(r*WKCdHh#pHp;3&3[rBa=SILc>MB5^@F,;Jf^$"#rs=/UR8289;gk%<)IT7a+t2 Kn)ug#&r.EJ:E4n7L1QHgSfdUQ2Xn_hT9.a'a=0n186QH^>PAAiP9n[M;meL$;Zp#c4p)9]Gt@Fp#gB#=*`Pn5X21 O9'kXo_&KEr/0BMZj8]sr()Zp#TKLR/Viq[nj!ih#T!M\&qO^4!Pfn1GT6aG*!,7G [R_JA&r;+s,_nmrpb-K1\KhH"62()1!8jOj:^"uj;hY27"_^^8s654S;?j(ALCm5c 3Vuc-D1u@qKeQ6WBN'VX7"u$(JgF_\q0iOdS#AaA%&7A0`jr/QYX*" s%1DcnNb=rEDIJ(8cpS0D[&s:J#53RK=h%3-P,:@+EJ*G]O0L+E3ZeYLR6o*P[EY# "IGPcPO5fKC$Fd?NJ]a[Z-Mg)m7StEe,O[eT/>dl+A)KZ&nGM^"2POB'a;ClYrG2c C]cq[Pg0C,$`(U!$mn=IgR8I)03[97"<]0P"<,;ei-<5'Cg@js&WBh7S`bjfDjXp1 3'.h9l7>=AJ]rNcUSFgf1dilk+FTD<'T"33KgSWa8s1ma,d>(0j@fP/UkmJOdMN)j b,>%#/2CkB__4Q7.K1P_JdLKeaode*43\.h*e07aGg8iOjMCg,)F*DFrq#WJ>+.n!mn))$f[h\/rO2katX;KUYq+H B7-9t%E],g$e6KpEjUAXY`3!6TK/0b)oe;%>F?i>JmT=+_9@-DV]j3(*CfkAFIf=D `-._bOn*k\h?E7PqY@:3b" "Fs$>%=n8q%Kc_35Rj@K?ml?`!1F[^!WhI-rs?r00]S5/K),C:jGK]r4&s&T]@; ,X48u^dR?X[t/06;XS[UA%tAJnpo/:Tr'gf-)MNLq%Lm$pU$&/&B[aH?AGqT4$b[m7['Ko+m .>:U$(.-YY?jF#G8qM<+_:+\hL\Qj^,e+)?&Sg<.;#;3J\2B"[cl8]ECCQC;1^7@0 &VA`d$c/JhL&ee$!n^ZaJS6in:nAE=OAm5pgl;H_&UF")b9[iLLdat O-.U'geduLmtL:o;*$I1G^r=6&H%Jg?pDT:F!Uf3=pdeob(oiY0Yf)Ta3l@aa##\6 a,!rr!7jBQ1lQ!M+n&03rF"TYs*:bRE":5&.,Qki4&XUkd -n$3l4cN!8+77%U+su),L/a3XK[>40+l>f;=u)mEY^%qMjuumdpgN:b#VL6&LCtF6 "^m$4"[eJ;M"EhIZ`F4a&Ia:A"[PDj/4KoVN$?1oJs@T`-AJn!.*)*aDo3_H"Mt)> #qDT@,ID43jG#1?RSO%%-k7LfRQndn:ngrtOB&%a%Y6**Q1R>OeS/]\l*?,>[Et.> 3qum1;#_D5WdNF0r^fOlnk&olmj'S0-Gs:hXR6/-(gq:hdWe(dM**[,p7Gd:LeDSa i/W?HdPL"HTIiU;oie*I9pF1n:IDp5g>^X^"L'cjTn"ji:eDa\(f:\4HiO-XXr%5m ?4-m8!sVTC)T.XP,,#-'#!hAiALJ?+!RNn673DR3W,E,RcoKgEM+r[-Ua(CXIZK%r /]GfPXrm]a%"WRSL.Z)&Jja%*Tm/4VGnh'pn6_('/fM`Ur#$tL%1GO[0ue$M,(`X' $mCWf!A[FS_bbifCcZ]h"Sd["huEaS[Qb#Lr>O%M/Ilda49oUa!!"QR%q3[DLH%LB J@Kn8iSH_O&JZ--XE>$3g>8!@B?!q_[[*R%,f`k6#,G."6CZCl#0\P+jA^FlW:5IK 9_APXW+-E:FUG+":C89[4:#>B76sam%"\DW&Ps/S!bb:0A5t76W`m%8m9V+,Kc^Eu rKZqb(+oTk-%qAC'#8K$!kL36"L(oq6,&QlBI2IW!!5JP9$uS, MLk8_&].(/d$ED4MF6]D]G3QV"^.-.1GX1f'BbK2Hf($7rqOp%;=J1(EuD#=A8O;7m_8-f5= /"cGDJ-(77$itl8"n^.["?M&ETcHY'F^D3#qSub)?#QlghS%P;a;Y2o>S.%1-kAUg 0F4@G'*/*M)FCqWl2Z2a!h`!j!mj(<5jTnQcu]g$0Q7GOW%J8t!$n;3?4B2b56u6; +p=R!&E4s$LsYW:"F-7FU,Y`$&LJcVJ<:I4-q=Q*&0up:N=k.u71#[QjqRUh*20_i Ko^$c!mm&<64c]q!GWoLOJs(k\6b,VQnq4YkSo.rCCS\.3JR%W)ae^bN\T=Z0`bGG8gO.kg#7u6=I_j#/#dEEU3 a;a*H*!*PfiPZ`;\f2fs)M,%0Ts>Vga;\Qs!C<_)@B:C+Z5Nb&)8Vg]6*(s_QlA>a (nm04!MgTaL)?VC(nl[$:gF7o@0SDs"gDPBTnF6`I0JSe(L_J'+bUU3H5JqM(#`mB JRfMs6kr!cK#(t3+^u1[?5N]N(-u1?OK'%H=q^p7(#`705sQ-X;A13)'>[!KJO1!# ,S;1J&7E!Z^tK/=XpX9d$UDN<0^K?Yq$tdE%rh=TJ?0*nY7KQo$F'O@jfAg:%LR`d $=KhF;&^*tW=f3/&of930e!b*/J@!C#3&AX/uSg@5jE6_l2Vaf?lf?oR-A662U@#tT0-jJVR%D][YJ?U-SC'#fd"C`b[!4E>%\qIjE $\65)!QQO-C>+6L5AcMi-+5fa%Jc6^`-ih)m//&aQ@K%@!i"QhE,(V47huF2ErY$CS YU]n\!WF+t"9ZXp'IgdGiHP>&;BOlC!!.*^iFil*S0-]&'S66",YZB;'/ltG4@/`d JT`66"A&U+5OSS+o[Q'4ZM@$#2je4_'gDaOZCma3^9R'OfW1@3$Gs]Wg<\ #s`_?@$1XZ/-XsV#(QaW^k4#-9i@W.!!%$EA#olBJdNVY!!"JPTLtlM:;d,4"9>/B JgpuP3!Lr<;Di`$[=)-LJQOd`=ETI&[>e;]O=fGn~> endstream endobj 41 0 obj 31788 endobj 39 0 obj << /Length 44 0 R /Filter /ASCII85Decode >> stream s8W,urr2lprVZTkqtp9eqYL$`q=sa[p\4FUp@e1Pp%7nKoCMSEo()>@naQ&;n*f`5 mdBK0mHj3+lg*m%lK[Wul0.?pkND$jk2tdejlGL`j5]1Zio8qUiS`YPhr!>JhVR)E h;$f@gY:K:g=k65g"=s0f@SX*f%/C%e^W*ue'ldodaHOjdEp7ecd0q_cHa\Zc-4DU bKJ)Ob0%iJaiMQEa2c6?`l?!:`Pf^5_o'C/_SX.*_8*k%^V@Ot^:q:o]tD"j]=Y\d ]"5G_\[]/Z\$riT[^NTO[C! L5(D9KnP,4K7ef.JqAQ)JUi9$It)rsIXZ]nI=-EiH[C*cH?sj^H$FRYGB\7SG'8"N F`__IF)uDCEcQ/>EH#l9Df9Q3DJj<.D/=$)CMR^#C2.HsBkV0nB4kjhAnGUcARo=^ @q0"X@U`bS@:3JN?XI/H?=$oC?!LW>>?b<8>$>'3=]ed.='&I(<`W4#r',)#l&eYcg&J,Kb%hB0\%LrpW %1EXR$O[=L$47(G#m^eB#6tJ<"pP57"U"r2!s8W,!WiB'!<<*"~> endstream endobj 44 0 obj 976 endobj 48 0 obj << /Length 49 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.tBOfFTn"!uVN%_Vr#S5W'Df@?BH(b\SC>$jQh9Od$bc&0%9]E+m1'1D`E5!XW+" ALWQHV%D:(`,[IJ6]>X(BY9N=+reA&&-~> endstream endobj 49 0 obj 100 endobj 46 0 obj << /Type /XObject /Subtype /Image /Name /I5 /Filter [ /ASCII85Decode /LZWDecode ] /Width 282 /Height 418 /BitsPerComponent 8 /ColorSpace [ /Indexed /DeviceRGB 255 45 0 R ] /Length 47 0 R >> stream J,g]g3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H >q_R9!$E[\&-)_2JH.qp'[-_=Jkd]b?l[St"TV8IJ3XAS$3m'MJA=3j#Ra\/!'jpQ =;Il/!J!GaHB82c"9VZe(#)/D]hG!Jm1i695.Oo"?,1RjPiANJVpd!c\YSY3H(`IH e+ohrr(^5:a#aPXnBN^Z+$#Es8E1q)Q(1k$r&sgM9J6A2WZ#j!27I6OF_^3-$<#(N= ?<'Om;-,.\7%$#5'kN58=?ctGG6A[miG;kRKB\1nQ)-c9;8;319NOJ)q++U&j^CPa QJb(N>+bGh/PFP,br&5EPjLV0e.iE];:Lj_9iKRVl1POL'gNUkPt1Vr#Zd4mD-PU, c#m=DQ0j!,fG4pM@G$ktNFUR*GQ7nLUH/?UTuCaF+/UruX_ZYs0Xk\gp5k,Ig_UF< PDcm/**+0@/]W"iQYJ0og'DPk+^N^%m3Be&fOcB ihd l'Q*$'G*^"2Rj[uMJW_DV$31Isq+rK3kK$0o(Hs"7!ljF(*$?+&UU5N' i.gn):_S9E"o*TQZqE]hpj==q!K$pW)at%X>s]6TLN-!P_l*PD8lU"k3#9eIC\&jF n1TL2`'FAG>nmCA#`pa/)oIJ5+@&=I"jjJO+ZhB3.o%5*`%r.1%.fM!^4t_E*7Xdi+gq)^"F6Q&!3U,6sI$P>Yq: aB9B-#FOq>UTQfkiT**HA:>PoW`0Mu4!WA\8(QNe#F(E%3G9N8fo TrM0e"ofL_@a9.-KN_&PN4pJQ5a`kp'+uUf/*;0PQ;UPE/Es0*<2A09/(SR^3PJ#f jNa92\oNtAS-[4JYan^pJB8Qu/E_!P#9[+V!H9Rn5bJg`PQ$*Z&1^#]]a:=H@YR\C q??r0)0W?DH7lb_2cWEI;T%jL&!\b2L\UC;Zr2da.P==oE*`h/+<^lda"V1AId";$Y*6/Xd0@2L/@+F"FuS*Ql7Q#K,FO#5p;+VV3-VGu786UHDOksTG%B'It='c&aT5t>#RtWb?<+Z!,sarTE#4L ;+;260_\J\bR=L;03KjJ#$h6`Q3?1H18Gi"L+u7EN)A 0'6E%C__a#9b\h&!snu*")@eL-#b_r0O'@5<>s!\!5N]fif/,ah6A*'TI/DjrZ8s' n\/)MqHmIoI7/2B"[S(Y!s#0D01tbDKDsS1qXR0C]jc?jA.DuK;0Nj'm^(t*#D`rp +D0R?#h=_=%.X<+n8dU'6kNOTN$Ld,!gXm;J8jMq_Dd/[EsV;d%KTra'hA$.+Q,X' !O3!;YmDW_R,qE\n>D,aE"!/KHnYb7W[Mn<[o4NeEt71.*eQ^gZG[G>&,8k\8JDUK "90$?r$Fiun3tSf'I]!Hj_C$akSYT*)?@Pg!C3'?F_]Z9`_f0LP0K#[4mLWgFY761N hBR[bKb0t$5R=&%+bV8$&AiN_#dG^(6o^/<+qR9O0b,AFJ<^[t!'plV()M]W@P#<& .gqK25Er,/'nIVDl@qa"L_C1(`3K8I"[WHM?pYAIgi+]>ng;6AhBKE3-^)8;$MVR9 hcoPuDr(B++or)R!2pWhOhRY]n5]Y<.sWqP"@DLF\d!fb8<&mAp5_?"BFM-(*P6;$J)Tr5#7_>h%%YT4Z* b_H00<\S46M?LnZH!q1M8O8H3;PN)(pKhEX+*\A4U?IGd=4ZoOApf00a,[i@![*9n 2Bm\NY`I`.VJZ<"jMWt5F8'bra$;C(_8Lb_n\cJ$c0,O<&;OK8L:Y/s5mSK!JH=\d &2F8'!8sZ3!E$%uPBS$<>eg(,b'c00KN:A80/*(!GsYM]_pUE!7Bb*m(>;+6#D6"/,8k7F:YC /e?o=i$'od-O:J`kT\qM%m]al?u-?f\,h-V%>J-)%*DcS!e"Lo+5pH)TGm_=p]W-8 )SsM]i]%&Hcm)p\&B-+/Lh\-l0N+V5"/4d]5T1Htp)N%U#9_A16'N-N3Z8$`(?%Lr @:o6[rlAsu+\!=O-*@V!rYLIG+5o*YcoQ1TGS4Bk(XPu'5TUi!kTdlt(Jd`mi[=d[ J/ggf'&ig/J,p+pOoV3T)dj*`^siBNL*,@W!?n`S0;;e9r:=A7b]!\gVsJ4B80).4 #KMF:#3H$G!1ls4,9SHXmG]Al1/af^F+Pe?Dh&L/!;aNp#9h53iC'ajli7% !/#iB$:2TB5r92SqB/)R+5na]@=B7@b_>0jo0rAgKtnSBrbWdf*hcmA_8Lh2!-%2\ r/_\"^m]j@QF4RR!.gdbiB.)FoG7LT*l5qbJd<6frZ.XR%q`0nYM^e&8@U=->/4kp iQ)!-`XSRA']BN%%GD.SC;[jT!l?bo@'C?*kTiEA%q4N*d$c+u'GV_jlc4$H+[-(& jr4CLEhSWr!;mqs\0GAa$R*;$6)5:U";$-U(h%psTI^eNKGq[s^Yf)hTmJ#8L(k4^ +q?kC!!peW/02Qg"5nu5Tmd"mC`hWYE9ob55TFb5#UD[S*C5N-_AiaF<#X1M+5uu# ?uR+).NYjX"/2Y'5QD'UYo2OX!o`Pf!!!6IQ2h?)%ZLl3!1)Ict2%';7/p JLgjuq@g[n'-TPF6Hg#"3YF_:&0i_+_'BZp-540u+eUk-N!pi- !?qXH@#b@UIL*0ls %j9:0TT1G96k)E,%A:C(+9W&PbR4E]1r')"+P$sObQ8$3)(ManMe'CC6j/_a>2\<\ p'Mr#?5X9l,iCL"_29A."V&F%*h_(1+bgrq$j#9H#sqcOVLm"#'1-,d)IcSHoO8qb e5J:Y,iNJUiWqDMXWR[Q_@M`@+RU:hGTe?n-3-@rRFpW3#>+buue37+;$k8n8*ec-R_FOq5A/t^KU]iLo +gN']jaLXP)hG\OQfoGhH6Z/J,XIq>i"fZ"ljt@;!"M7B&WP#`edCa;<"(d\eS _!VY>g(,=q%H-R_JERKYh@<8[LPhsL%>+ArAN<"6\DDo)V[fess\hi!:F__B`NU*9d%0$-u68JZSS&.T/Wg3oUXdt&q#uob,i"QoW <#tG];RamX_Ai^+]:NISH&Kc-#oW.d (Z?-HJ`7EF5IY(m9=jjdi@05G/m=+Wq18 i:&#M//s-?$A#i2+]&b^/!4954@0ed_7go=Ca"=u1TAI^d1.CPKGZbe#,!FJ5X#:c 3!6r["5l4t?o3aK4H(CG[Qm$6J313@Bt&,U\dJ38\/ZX'*Y0Gi#D)jp5^4=.G#b6U $%NKcJbTbk2?W=l"<2'egNEa;g'Bqi]7<2ZJ3jB#\c`u*[_(/p!'6FW\t6KPg`c[D ,![!S,I%:K)kk%fauUS0nfL0i*l6nY@GATVn/gQR*oZZ3+m:"6l+rkq*rIE-U$Nb2 k,EWaG@D*`@1J9K7K>*W)o)GZ!N$9I;CNd1+2R+3U&H.Mo8s(C*bn)@U!t,Lp`H4- +-!L&_>VG1rK/(O*m[Im.G3cR5G*Nk(1D![.,l92n/]?tNrd`N_:BX^ZlO_I*IPF= _9s>dYT2WE*F[;7iPZ_Pg)Ud:X@MquJm&1`>T,8_>li^\!)=S[#U!L\h4_J#@CR:# \f7?O)pgVfiTM3=\/[fK)kjn`>oXh-`R821)o90+SHIJT$M"q$Z,esNK#Rrt.o[XZ'>gmq62D"a%L`BX*1.9]LRF<5 !N*iOolB1<9ZO<8o<_s`aDY`7@.Y74,UT4-h*NRnTe7BomK(.5&fjjnTRI/TkT5nO +G`K-IF$^MrXNBFh1`0B?/?_J7icl,%9g[+Jhde/rkY=2!20Ar'%R\a,&6&)'*09j =V3]ubTLRF5f*p0_@0H2$t%9Ws3^d0`VeZ6%!k,+^Tns[WZrWuUXi*L]K@A(a"d[+++^L* U&\['!!$mPR<_@'J"qq!6Q)%-%l)#^O][iK,83\ad;V)8(ni"58E>q:1nIPh-bmLg R1bMYB9ubl&?$d&cJPt:#ljXNtI?k>onp&JjB hB3E"rU2=hJ=2J.;r-n.[9DNbZm:Wchl9rLP&cc]*E5eKc$*Cajo2km.as8T@XVFS :b!1eohqJcTh?_rl4hrd8t8R%'WEA+Bdf37U_o0_/Z\L=P0!+iq"T`A1E W"0%5Sko%+!'Y?\5h/81'Sm[;IAOfSE0s0c1),NN"7]5"Jl3JG#NOe4e94"jNsDII ;".RY)imJJJT^*C[:eCrQSLqd+]M<'bs,R8F::CU89035#p@lMKrIW^IuEP7,^Q)5 !1Yks8Y@b1)5GgeD\?K)Al?+b''f9\EAC'4+4.m'=^-jg#h+Atps!!.mjP,k640o7%;rc8U#!$[ha-/ni-.<2Xu\BAkS;\c,T;>r=D aRPL2JIDZs1B8$&C;5CRa9O/q`Y/7dSEK]E!t(])W"Y[kq.DU^,1:$h^7n3ir2,P0 q_jfg8-q0#Z,!*KN^roTBa!M-`)'G;]7S-=\!RUuh^ Am#TDQUS]u\c^"Cf&MWX_>ZD=_"_SoK;f[kB-Y37ZN1eq*[8.O-cRX"'0+"1JW!FB :U"Xs(<<^s]-2cUKo$pd["(DdYQ,Prq8O-off?'sK>?,KKb;Y(3.@B*!0q8k8/MVH Su$.)EKrTtKQ.ag3GMb:-4[mp('Q^;=VaFj*O:o_kSTHQ]&IF\lNo(E*G^;?cu+"i QY5#q]sh`lR7Y7b&te-63..(.!*gki@T!,=,m=1D"cQqF)YsG!\.UP=LWH?T!/G&t D45(iZ>COmiNR$c7cC^jR\n,9D1'@LhJR^H\$cX>EA((R#Uc/]R?>PbBR^M^.^*eD *//F#,bTZJ]$`tZ`%k4._jEY-KLQi8:eE!@$uZct$5(>U]-G2RC-WD0&-n@t-A$Vp L=HVT"F(0)KFACsTH7FZn/h_)"I"?I)$L!?*B_MmB1iJEU ,aX'!Z6;T#W":YG360\U-HL`%#)-m8Qrl9N1I;-[Xn #6Y#2.S'9p"@*@t8i0!ELG8`F,M@__2GPMf5jjml:+FE'>S0KN$])O78SEK#g/%JTuZri_1@^R/[-e`&KL$]F;i"rt>B+H4H76&u$6C*te04b.&AF -K-/,DQ&^(M%Z:FY^0Smn/YB;2B;ko;@J*>+9S:>'>c//#iXPa#U$8c_OsC,@2L8C OH^6.@*T#ZE.nPTW=Fb-0/Z.B%>1>!"[r^D'jq#0$cm^TKZO*4+ZKH&U&I8Wa^6E* oMhcRE?BnMe"PiY+:f>r8jle]3,MJmQHIlb,=s*a[02&=U(eB"'flO*C]b=O[\uFk $k=GlT)u9*.`]]n+6(3rLJ[O^6f<%r_?;q*5k5nI\:5&5kW/p@p)eqNIh+j'6.mCG *pgC^%otMcc*BG`L4s%\^mo8_&l'[lr3BcUR!f/]Z5A4E%:Qmh "OQ'5K.'"kTeI]'Z2Q-R5bnWMQkKO_9H8i?9I-H^'8=hs/jPM/(uX8JL[hMX;6V$6 @nA6jM>fO>OP1@XP_BW_gODfYrf>C^fKZCY8d(%-C4`O2c'%9$K4l\8U\mlV&kY;. _E/SWHsFo%K"$>G]aeSG&rb5r0\,*O)?]%dK#!fg6GRdSTtiYmnCSc!Y]:2hlP^"I cl,9UD@F@g3O-=D[oJ,k'4)+Xa)&ubi.,&J3-4ZX31;Eh"P/hl"8c:'/eh1'.a0*.UY8kj9W\_J&nB7#rlI KZl-)#pn'3I$t(uk6hTh#9P++RBQ_RGRC16&Z>s8l]LBB8M\n2";,[[:a@C.i7lDq g4jFl6k2_!asM]UZm\e'1?IaEgEk&DbS"MN91W%a_8d%7U;*A,MZ9!''<(YoT,eW?dLb1!afPVCR=kS0n%cm1nrllL`B&!A8/ g50c#9h3PQQ=2].8,2RRq>XY0n_,uZqIU&&3)^66-'^F2-_+!62M$hT8;1I2"@-K* J\XGT5nG1A^jHXnco)+/cl<0/j:25&3!VO$)$=8g&;!_Z#Xc]@%`>]5P"O_2a`-DS "oJW6#3NJ<8/N7soDepN]\FaAru]/B7fj1U#lu_)"Q5X[!`2PTrEpiQJ;b+m?r;*\ 81+!ng_5994pSthNYa>r.0O=o9a%n-CP3sVNa]ph#H7G?KA_"c;:8NFSK!I/asY`sk=& #&n0@OCgidKqn-F#.$l%Qub4eRBScX1gh_s:lto`Fhb`,NC\PP30L`N.1bnYW6'XL fQmTQqAWghL-T>SfQ.:rCc]*[(0Wp)\5otu+JCcp(F_,'BOqGD+p$%9!S@I;TMl)G f*eMrKm7/1BFKP".$9US!)R^>E;GM/WY&a:a?VB,6;f!(_C9 Ge]$Wq$BS%Kp[PrHlS$:&.-u4L_q'2@9s#&C^5o82q)@sBI&A^YDFr3#Q/KPYV$2X Bn?UDZ1)uEfQ7/P\]=b>!6dS46WCJOOoY8MYiq=,GXRC-2^$aY6pSKek^Ed,_ZG@2 \H"Df:j[rGBTMb5\);h'>D'ZK^22fI%Uc8 H\2nd#)Ia3@lF]:;MS(:8DnuMlNRq<"G_q\M&SpsE0Q"m57';#QC)=dYl=e"Itp:? J1s%eWAb[(I(.")U[VPEMV%u(i+oBDM<$K93D3! X&Z$k\HtN@"UdbT(]f1Q?jHIJKD[umphg>aBRl1*#T+_C88eaCAZFc\0G:UP9VVnR Qo)HoUUWOF-rgL30`nR0K*$#u:gO58.K[C "fQ>?#a#,1ap7]D&ND8YGQ9of.0G*MKlcj?fJJD<&((OlLj]i^,ndpSl7I'K,,Ff: 1ZPp;/V.;O#C&?;,1Wmi)i?W`qXb[f!"Cr[1LaBPjqLLV02_Y48\7ksD :57D9`@u[t2&oK'Hqp>>4qtJV5Vn+0aIs_&c%Jq#M*cohK`s1GJs\:p#TA@=5D3E8 "=QMLbD3JH\Q"(a?G.++dTo#?]i+-Q,7F>5e^o`sQAR"lMHa^g@B*Ar$/0 KL)#gI;ArJI>57,JIi:pd!1`TOW[H )&c>_JaDG'(^U82>)'P@"pf/N\MF4CZ\0.q!4[K5.0BPM4bo/,!>>O#pds8>#m#8i Kd&4+HUrr01^6cX"[mJI80>eVRLj$%QM$CIiW]^^56UJI"B[FoBUT8Z*e45="&Nun :ih9.Bpqi+n/t'-Nq^#7+[f3.HSfL4ErD>&]_14Alsa "^+Zn#:NZNQ7>AoI#P`3A0MI,_0`]9!!+5t\3!4\#!e;s-!*C6jp@'%d8;\SR!3J&sZNKmb$b`:8[40NqQ^L);ZG@ESLqZ^J`p/VfUde]iJEp&!$DFJ?sHaJSVP:7#Dd2N^i"n:CPIXbLSOMJ:j7WO 5_(Ni@>_&*&M8UeIt\Gp"T]DN+D=uADhYdSM)Y[4:h^"#'Sa,DK;]mt^dS5'$l?EW ]PnH5TK(/o^B"%Df[,g2dr,mR4,!S@#T+G2i(#0iSV>UNMlN(pfL#l,Eed285XY[/ OEcQ%:X@B?\Tj6eJ1tIm\q#=aOAH!+J<("jI38epL+nhl@1\0d2Lr&jL7=Eq!*fc% .gH?$U,[%FpaZT2?e!0.!/P1?Ga*lVJWjb[#/d6n(`u6bSd,g@L;kV'fP6/&CZ8`< B%cZd&bk9mCBd%6L&bTci,Ao4IKDbC!5Jtm\KFF?M[0/i&U5_Lci=,\H\Hu^"gAdC Qj_>'!.]4?#nSVBpfE7k$&+0FJuBfdTOiXeQi`_aKZFCQ#_&-`^O[MBA/LJkA"&SP CC)g(LU_YcG]nj%G_a(a#OEiDi-kppHt;_o#Io3fJ9?X?HA@#qLOaa)Que$"EsGNc ^aqg5V/$DU'7c007Ha_?0KKH>l%RDn\)8tGpf[q?63p\S#/Got#f)'>/l0\iY]Xlqe5niZJ62 %(l/XK_U]288;J`PCa'&jH03<0LU]qabUcS")%uZ(k78]KBhU%"jgV3*@6X5;;=bB^-So?iCaFU!%Wg*#q]VKG^0p`!!"5QNGoU; i-I7A!9#YXKMYX%@U]IB0Nj*s.gQt7"^"o]V#q,#=%.d)D@q]pBm,:, :n(R9A,)7C#,VtM":EEl!2(hUSrnjQs(e#A!Djh51Z+ph05bg+ M&69oV8%j>/W]BdL):O'!$?tI?jISNK-]*:BMsS#8HAIH$DQ9raVT\.FDmfP4o!ud EYrn,H@S6b'4;%FcjG@I()Cj=!@Siei#r,?(BKogJq,;%TF5T*9TPhfKRb<[0FP8? "Jl>^JhTFkIda4[&$Ve\!%;!iW0]9V09Yg5Se.'upjIj`?3Zd'l_n-DQs59g0npNN "n6(.\7Z!?=pCX1_N8C70P/-mAd4W;4NOm_nG6n][#a\c#;j6d^e=sR]Y5M&4^!!!Q4"?V-:D!%CQ'[j+?(^pMD hh^b3#=>C$&gb[kOh)8JRA\83)?_s !.Z.5OhaomT.u0N;hq4'$_TGiGr5R59*REo,,*rq:c&7*6m3p#V-jN3hREkO6[WUs K28u`TFhBQ(BJ%IK@g3Zk]gp2(kM`10:3u#pl]rJQNZs-O76oiYTk=<*J"$W!O,q` .k,n0sElD>"%Qm.K3NO"BnI.(_BLhU/b[#'Fe6R 'p$BH;EET-NlHnhhr1UE)*[FX^YGaF`0gE$3Rpc`p='Yp%0.C*l51@XrpKkkE7fP$ FuD"'S1tRE')j.@J%/^NI)]eVS'GUb9um-Rrqh,&!b$<78_9!5\U7\:2l?.F/I\Mrg^ON4sY,Ce8!&]7a ,,+4[&0D&%kY7*^j$dL0KgV"+"(@5n%l/ZWc]aA"4[G62jEJ_4o;CO()Q&@NXW,!!s_pp_2@*Up-s5U[NZnrQM[BH7?Y)ut]or\0[0A.o)N$`-Bi',:@A !!$<[R"9r1,/cGpb/@?m@/N73(]XjeTI!)`.Qj1VdLr>Q.$Oc34ik2\7.J['7q2Bf %N*>+Xgf[;%Y%_8T#7qho<`!f]XiQMj3=;V&@ /1R+*IMg'\VuoC9oai6XeqgOO+60Y6-,E>0@Y??XJU/0*OMX6&d/5_b(t&r+&OGVO r#\;kLr7=m)LN)C#5N9)ARp?9HrD*H4BV_ a2P:=HL40`!19^O!"^@Wo_tL_)MA@2kR[e\GRjft+pUC.'*3Vo%KPE&"G#DT#[m-2 SFQRn!#Q"E5ddbRpbkp`39)$P7"GO#ZJYcIrZ;=5Mgup4r)j.&4`Icg,#eLg!`MAb !;IcW^igV]TEG[SW#'scg,T/3=:p*d!!"/J5D4j_$Un_jO7?\BJde_'7j;6^ng5pn BHMbGpkc5#L119FMKRhW"p"q8'Lau^!+=Sc$Xe>c#'eH(huH`8q+i-Rp]=uYr##U1 a?RXW%N&^RB)s^/-3J9\#NB\@J3i`aJg`.HAIode;YUV)X6orf+:.;T$[/!7.%uC']n&^."h#KRp3X !!*!?j-TfQnY@uA===LW3!KC[U^W*)!P-<'U6!J@$GJZEiPKXJ--3fj`,kQFs"gW ^!2Hf4"U7%NSm':s_J$*R_P"&Z!&h4t@,`3N&A#(1tE 6.Pj_+&qF,QZQE^041Zk^'KNSbagYKYi6W) ?U>6R\2K*Bj;Z!MD@U*j1j"iC)Zt%t%Y;8OLB-NYHKSQDJ^E,4=#7jQ/.ERe&3629 #KMZL$kQScW!`XX\/Yp#!#s:JUg_+@6@dB$+Cl8jRcm%\)eAHp*O(e1$@*:n0+9), nGm!!gAjd#m$bS>$XoAd8DkNW"EYCgJ3X*h=T9!AN/=@h5T^,"LCh<=f8&l#*st!$U8:9fsQWC)J_.+OApCUCM'jMJYj@EXr=Q[)ZdAd;1f]O[2Dhf)F;(ZnAZT, 8J.d%+5p2)+J]0k;MB\I=!FXG_6Ss\5ScZ:F0=gC@LPaW<[4:rYJLDZ8+%U?hDumd *g,_K_mjpm$43KM,G8Q\WuqORpgX:(!D""5_Bp%lR/k)T$4-4b/ms&mSdMb3!"08Z `o(Q`KEgQM+M`@Dl:`D<"Gm0_&Y]2K!"=4Smi^U8(P1:8P4:%IKG@D!+GSe`JmJ`AON)f#"/=0jiIW,$dMSZC)1ccQYgs57 2P.^="i8\.JBe-;>Qt=#+QRS^_Q3inW'LHo;Etct/g;fV8flAA0d93j_1;M//.g6A ,*Nlr+i"Thg_M'YCSAHW_;u^>2?Db<"+W9J!WEO9%VqbU!!(4STa1h[![IbnPemh2 5lVKA.Lq!G+CP6li>/j&FL\O>/^nu(U,j#&N$(rl/4)<&@FB%F.MdT"(P2Q+6,X^M a9I/sH1B$%THFDG+93Nt#iMQ[!HoO#r!K)0*2-+9Jc:;=$=N**,)E*2K7X0_`aGHc +5s=0idUL8bs'#V&4&ZQ@u!8m3A*#Z,f*M'i=[?M7L5[Z'GA#%U&REq[Ri^i*J*bo iVjWg%No9')Ia$c+oVin":8J#F29FViiJ`k3be\4+,=MEe<2#;2a=S,*ce2^_@HP' 5SE$2'B(b]JNZd04;6[6:Ot`+!C'>11_ZQF'*1*heFF8=4;-V)*>ElCiPs&M"\O@r !?aEd1%uhV!Y#/m0]3G@k+WTAr!5e*\DM]1(iL!hk6+-snrc,QJtD%mhfTJ@Zq&A.J[Z>*Z-leZW0l ZWdKqB:pLkU&MjC-4E`/,!`#CoV;^9"@3P5=98sJmAP2Y0Gr2(,(dR0!]gN/qA^j_ ,(YUjEp#N^GW:jEO<=Z0!Lc=6/dNVe97R![.,H(S.]rj$!5N=R#,2/H&o]!dV8=lK eCGi%%N.+W,,'aPOU@!k&N.E0"2K-g_#FrI$j4Tq+@93Q+JKFU1b9uR*cu=+U*u&; pK8[c"-fT*AkrXI;MQFq-K"ldi:=aZ$3;A>>[Z,%nFd)1qAj(70^h+D[XDfJ,S_): ,*KekJ<%4KqAO*drRR2e`,ZUp%%FV_+D/,!X0#+3!(SS60c%H=!lB8>:_ho],DcY9 !]N)O/g=^R'efb5OMWtFEa^.!TE&tO_?L(XL<4rO)r[Yr^_d.RGADg@P1KU_@9m:h BGLTP,E7['69*i]a3Hg%215Y!5E],$)3ZrrHCSD":Ti+U8J0(!/CbYue a8?YF3[2pTE9d!9iJ/X4i\4fuJ!^%^fDg@<"+UF4,f0rn+c7,D![(t?5sPDRi+A:J 4;VDiIA/&(_5f9oNWAX[,W:EGTsdlD%m/>*!"[p,iS#=);h[NpKihE1\6'd'q1Z=g KgF92_>aT=2?9E0Du^+p`X3(U`Iag2'k*YY@_r6kY@td'BNOIDJ0kE73YS2+&-8G* [SR3Z22bSGMjV,7fY+ T#'6=pY#]mTa\dh,ZpQ]TH"1[XpcEs(a4&.iE0lhjq[uT%tH?'Xc3CV_FHMQ!!#J* JAMliVB'20!?jr"J.)pti\C0*Lgpnr!I:)"-n/0a.mO.9+AQ^G/e\p+(4l*nU#H>C XAo"9.qE^`iW_[UkXMF+c@_S&p=YjTl=pt!rn:)VX%tb6MO8LtF4s,@)=CjZ56,TJ"@6[!W%G:_- j<>HbZtl@9&V6/^To3d)drs^ZhW\DJ&>NP8-":s^!^h\B94Vc\?lf(X<+tYn6\l,H (^;,(lE@Lp)Mfl=EY_/s+5u?Z^lBIOIK?-I'h(t\Gh'c"9;+I!(6rt1,Xdr)lNNH@DQE!_B@fZ*q[fhiEckc30^nL/0Tfh g$f:+rX#6J#^\)-gFol5L'X8)ZWfApTSNl(HpOH@+Fk"3+iR(s!#d#N@mGnna,C"T ]7*,'!5Ok$k!08Bid\dQ4b>RY3uBJVL:tG4:*KF5Nt04M]t#`;\Uk-L<%L$1GXe?f #%2(ZJ^=pr68627+"!Va6GaKl?6a/B3/I8P5Y;`!5J:%s']D@m+[d#Q5SQLP'B)\# @4i/.(_\&>'L=$A!@/5m&/&Ck&KqKmTahU,%psiR$\1P]T_J]K$3e7r?!GDP-j;q`55f:\QBU/aoFXhnm+5s,0,OT]b4t(tX;AD_H [Q[,&"9G0%\)=%o5r8TbH4o0p"Mc])+Ydqe$52I["$m2%?j$Jfp(%_;%7(C(^d8T@ #R6q1&UWdG'BC7nL]FXVGX`Mm5fVX^";@8B73EopJVT9(`"r+(Y6$Y%_h\:kcmmJc5]Nk\Hi7KRs-QJ^SdN">4-^$#c^i!!"%XT?4nB!'rLbiKaW),r2q_I"6s% 7^sFJ=9Cg-"5I]]+;jbU4r0iaXJ._RiuSH$C29NG,iJu2TVN,!GXLEg#cI5%+P*ZF r\gDt&-L\f_#+`jJdl,g%,_*m!<>I%@j1t"/oFi9L(XOXeK):d,!g;hLengZ4f:M-WO?FhV[/!'g_gA9/Xh"rH7l#/RAC+IXChHj.O%gdLnW+$_.2;iuY^ <8JN;^t&hmPDDO0(a6G3@L+O:C6.nb+CGa&TqX;qoE_OcKTA#enMeWXILY[HJ&,60 !!",A#S[aT"#`Bgn5rXB'MO"Z+^lLt%MhZdM4p'!e1?LW;F)1RTc-7ccm\,UXlA@gq,3nWnJP1$SL&sCm@2K8X H@LucJBU*8,H1/oO$fl(4HApXni`#N\F;Tk6ceCM%n"_A4H9NF1-:DI&cOO&kP.Gr "@U@H"U>:3TF=)a-ougJ%8;U)2QqF/2Q/(W<+Ld*d@P.T#i_a6960+*02(Sur)=d" GQ7`&UR4f+K\ukp1eD@#N-!)sJd)mBo;XYMV.#;sS@8T`1bb/%EY]oBjEUDf;06@g 7oAnlpeN!k+OlYVk@spN#,=hD4G2hp"[&H3gLjBWAOnqOJ?KT=1`uBg1]ehY\16)7 8,7mjJM5)8J".n(\N589LtMCMhuaj-+[npYR>`nQF:F WFajm!l]1&AQWE0Zg2(D%hp8J1^4!PU';t!$reKXbeg?0'tN;=H4es+6%Ei\J,r[g -?]"8SN\D.1gZXeWYD6d_W*l]!p?Cf!"'sAlT0S44chc<3'toYLstp0%iiW_L@c>H @#o[i"*)\;P[FJJIuhYdF;J'[R>+c'\4)NCUL8LRTaZL2#)/F6$5h+?bX`:WWah\K !O1J_o6Aq'!UGk^1Tm%'!a9Vt#8;nc(1Yre=Fm$+HcGZjDgUXD]TK&'ZiH)>Fr#W< jq'1V8CBuTAaN%0)n)YPiV7oa#Z43#+cIT$G'!Te6d^"(-U=Z$-OK]7S]Auk/K8Yn nPcf-B$Vce-&,>FV0.7HV$ojZVBChkDPRg]US-5<+AL[$\sJ3I<#2+dObc7_kERlR ht8rgHQ52UP[,3@dUk1:.M)t.'W:d!$iqKD-k)W$q4;==#"X8q1[ZGF!k1B__$0Y+gT[K/eSW;tolWIt96/;)<^*lGd0M@i0/ RCO7n@O)JIYlYV)!I#O!5QCi#TR,)Q6ZL5`>7Ch[91&O>/:aNQ"fOO/a$?OCA#+.A \,&RE\F)&Dr/?>,>^`<5rtn!$"cM@=Q2k#[!O25V$PAX88RN*MAft:m0bcjmTYUmV 5R8rdU..BR%MD3(-E5u32i%/k+@+S/L`c\r#MN9bO;&`mK^o3i//3;=C]MK'lPmc] FUd9uJd,=X9*2?G+6)i-O?aRF"o&]1!>J@knIP[#+ES!35uW@Ir]XXnAk?r@KnZ6" )i\gQ(rS*aO7f#E]t@cG=8:5Q7P4p:YP)+,ZFM6Xu``K7;GiEnl(D7FU _B:<4(GmWP;6i+#5j04;E,^gtOem,M;3s\-@!*RMXMbP[r\4I&3<]O>5EG?-0uct@d$bYZ ^PrLS+2Go5Oh?"!&W<4b@)j'-^f?>er[S7S-!:4]FpqQWP/YCC>_$d+efn1f_b#Y+ U8(PH0_R(&!5d^+U)E7*>TK40?5!O%XmARsNVC_)N9 QmIDoM$:fMI=M=K*qta5@\b[XJLoEab0Z4pl^SKF%8]O320p]:S3n#Ga^n.215'Q=ics+=IA(a'Dae &G?6C8:2(aX4$4l#b^MTIXf]SK0]>P5nEPhJ:7qndLm0XkOaD"<'mB:ZL(+3m1re+ "cK45coX=>XTKt+#Uf_,J:4jEO$J#P"jhr'Qo[0ires*K#.]Bj6aheT-96md#&%j9 fTUjd-R9NY"mBcWasVtk,QT_=6&60Uk^9CT'*=VUJM7fC=F[Wh)$)I*%QU>8-kcV+ gQ3fmXW_\7\ql31OcL@"25#[7CQ/T2$A4."5KJO<\LJne6j#+C!'l$fZ#U$ar&:oAY*Q)#+-L,Ne @+W3PRB+OC$M\.e!t'i-Q6XJ1JBLUf8,rZm0>tYdKkpWMRj!qV[#KSO!P*k5fU7A6 !t%j["*@.k*(u.1]-BiQ##$(o@#g3PK"d`.,Eu,dGZ]]?JcQ-kVbiYoq'$]`9F/uN !(r3$BR5D27L2i-7IYmu!E4NQ?\NT1NGr,QEH?Xa=@7=f"'eod8I7^[Q3.+q2HUg+ ."q]^9ScLaL\kZ$@'W#mA]/PR`H4Y.fEsToJX4Z/#Cq&SG]sC+FpD,m#<6g\oL@B-e0Qr4jG=Z+daS:"8=t0p$JrB^N8)U\,piI3"]0PS6.&;EOcr:3KQO#)_ "UIeTYYYL:+70 a\[u$i.3l#R>OgPL.S_94D1%cALKN-#DaR\=M)N`Jq6I9/!IR$GMLtmOo,SSF9Kn2KN]km6Er:;]qI25'K!6hncaBHS)r9/qb(C-\Ubn.)_]6>&N#)2BcM-rMD@%)bI>K0Kj_)Q(^ BP(+LAqk8:d>2F4SJT[]AI#_p#*g''Kbr.5)?raH8MG_r0GC>>%1aRj(a&p7UR)9k 3__T-"u(**aFsZE#SQEa;Rh41.E;Er0`pG0dQ!\L)SV&9.]so""peeOTS5,Y/qL5H J`%Z%aaere3W[#9!RMbddSL%"3rui4J[cYMclI\I)cRhD!O*M!U>;81PR$9rdhJ"# `;te937/k;"rY[A>IVXmXe0enDA@ 5fX/sY6ZD$ecf%[c$>Qk#_kG/Lsf+$d$fP?+GaPAeYpEFrH3o5%"u;i=;[<[\Ujg+ @ou9\^'05tTOW`b/I3Q(!K'GKD3]W_QW\a(=`=SuAXV52RG#(S_)r#C5QP"rEIioc ;H5%MRu>HL`.f+=)`Z[%eYWu3>9%SmLWFR1"cWh%%n9*XZi-#CSAtn;#Qip:gC:Ak %C01iZNAse!nFR14g9OZ/csRS!!!7VSWH66@92bq!0egeD2!sgA-TDe'?kjLkrP>G ]F,hk_PqO*phEYkN<8co$"ud37<+O8oM"b(LNULm!*%<"EWBKUekh>rZoJLB"2Q-Z gpoIraDJ+XAVIX/(a'0?9tH-jVU3aY8):2%SV!+HJ5\>HM.#N`(_h`d#i4.$L'?5R :mJj[dYf5DL#$Eu+9[9=*Wb@a5Hl10g[bI0*.cr5!TcXS\/jG^o%tbbhS&6MW.j$^ d0&EYcH)@*:oF`XZD5%q+mG#P_GX=:Io+3gBfB?9k%]9qdD\-]N(S;FlM, I1V?/Q:)jH!?c3qe$GuIpJB3TLIID_fK*=EQ%f9Wgi*6?4pMEkc\2@Q:As!)6J#Z@ XTUK8(Ean,Zrr437_\r/JkXjup*PY.j%hg]PCd\-N[kH5>sQeYJl$mDTU$XikDb3C =%shD)`&6p!eIVo2M$HbAgI^j2rZNbA'KIie6gQ$'a^:>(HZiE'.=p\bj=9rDM XlQ'GLsRm;5mJ=,Krj3*KQ'HD?=ee5AS+tTAr^R.IV<>\7Kkd.6U^'JoL8hRAS%6\ j_2[=)YspZ!T4lJ#Ufm(dY'A.;2LqZ#1Zc\=@_BOZ3Ej@@Skm65WTL53eOXtK=F"* -@]\-K'5+CBEiqg[Y=m_30]e"MmBkUDJfd-,(dpg!P!8](l\[THOBn5hO&kk5&^kY n%=ZE@n@u9/rGM,>s6STJlmJ3UMB#ffAocI@lT(?M.?UB9S=j7U%s9A.!t&XL'4BC %<:-W+#sHEsNUEL\PeB`n#!Ef55uh D3!6mGZBPr1PU7p@IA=S3!)u4A/;o+#h!;O(p\k*BBBI""6ai^&9A(/k6Ep-mXFAT 0'I1rl>F&rm^DA8-ufJc0M_=uZ5tK]=?l*PF/nrlLr`8*E1m;%gk[?[!E]j5!"\P$ qes4GDl3I$^AVuQrpR!2#U:BSTd9^6HNtjs&1X!5+=7?ea9ZD"=OBM*+X-ml"N1UD lBsU5:jm;-KnOXC5O0A"T"G=UTl2o?mmr0m\>'IQMr2WRJ.N,p7hUV+?Km#PlE:^( :eQT=2CCJ*DFYUqBL%39"qJ^#kf4BK&=)NMi_rR4M+A#a-jTgo%"Q$TJ=$]EW!t!P !W^j]!:H9UcjG)11FLKJl' kV.e0!!i!RQ1Ld#HNT0!+,u/AI#1.K-5Ip3-k\+AX*7FL%fQjkkBZ_@"mfO "m`!2OAbg+08Cp5 -j+^-!tn-*G]XPu%u5CSJUeht*aaf@+9HeeA,)+DQ<4Cqo;@c!DLpGaP0dnU(]f>I /I1R[#T&__QuNBK9+p"?J,gX`\>(hbYIU-kh1<*J,Rm J5@EjfH.U@*.d;oJcHVn(_Zrkm=Hdg!#QRSp`4r$@![$uQp<$Sn"PU\6=qU@H\f7b \:='WNJ])*qj4u0a=.A_=9qrDHdBD'*;XVnR=s06HmclE+=RQi^PFNKr*RPTKG45r JV;>\r1D4?cmEJ!4abT#ra=7%+RJFUOrEn4a?nCh=RAh"= I@o=HhqJHTiVhZl$"tpfW0r>]eG^!/.Asc`f>N)ujF.PFF-qr92s5X>h>OP=LsOR] a6S,<1]2KL%kW&*n+%e1m"f+PrQk%`J)q!(a8OGs3hlMlpm/EcVi8&YGJ kCT@W5Jb,@,Sggo;a8Q8Qt/)q%u!M+H \R`-S0:5FF;`UZ)D)[t[B2cA%p3eb98a&Pu6)<%$Uf(o+\n*dj:T.6-7@dn-@NAiL_;2Z^4#Ir7'A%AE)i36I%RX:.p%BcsC5K9$HCbT=6!B.H3n0Q]DT 2#fjl$fh[m[T9JT5M%s>83ki29>B##df]OcqeLj:+XTST85hT7f4$uFl0SF2acp`9 I@rV0fD9Dn1irV@"rt>6jL7_u7fOghcu8R/!((EBjVSc?!JS@GJd]U,Nj]iRpl'>; i3L]5(_7JK3!=j66+!3`!QIuX%:#;73M#Rl?95T0n<+6U-PJq2c1I2,V; @#f`/Vr5"8!@k@6IZR3nnD B9rUk!]ce4l*=lOi-J@IRj!WQD\0\be9IO>=k[qS^]6-!*JPHeF.GWa#R?TLdJdV_ !!&U3QGue5%=eYNc=e"!;'po,.8Z1[6)Shkneal2TFZPRWQ&ie+92U?RjImE*<6(: BPA@h\7/Id#@NPq)23'hFUBsC1pe-2;24gAhuK9sS`:gm$6,oI#QeIK\c-l98&8kjJjr?2G_P?dS(^=:dZAC8:QX7mMuQX*t(=7bJ3T:56Qe/&Y]OK O7b1m5mnr75]ge)TrA3+!A!L\U%(iM_'_@F,a> ]N'>61jolW5QM'+q[%&X0+`*.8qN0/"_4[$!!C645X;.#kI<,\S$s!F!e7[5dQbc#!RHed"5>5e%be^]Y1!5UZfOn.3.Q!!!&iC(QFk%1Ro\$%NE% "VK,e"5mAO!Up-j!/MS- J1O6L=+1=,:o=Dg&-2q8Cm)\,4qtmUQsFO!PK>en*<>FL"(;NpJMF8eU"J)6S=u;@ !H&N[BP\,dXt[b-XpO.$H4@\UN&(r`c:+*-#JfmOE?VLi!W)*E4T1oE#(b-)%mjr8 %AED`M:#K[7VLTtMMMN~> endstream endobj 47 0 obj 29787 endobj 45 0 obj << /Length 50 0 R /Filter /ASCII85Decode >> stream s8W,urr2lprVZTkqtp9eqYL$`q=sa[p\4FUp@e1Pp%7nKoCMSEo()>@naQ&;n*f`5 mdBK0mHj3+lg*m%lK[Wul0.?pkND$jk2tdejlGL`j5]1Zio8qUiS`YPhr!>JhVR)E h;$f@gY:K:g=k65g"=s0f@SX*f%/C%e^W*ue'ldodaHOjdEp7ecd0q_cHa\Zc-4DU bKJ)Ob0%iJaiMQEa2c6?`l?!:`Pf^5_o'C/_SX.*_8*k%^V@Ot^:q:o]tD"j]=Y\d ]"5G_\[]/Z\$riT[^NTO[C! L5(D9KnP,4K7ef.JqAQ)JUi9$It)rsIXZ]nI=-EiH[C*cH?sj^H$FRYGB\7SG'8"N F`__IF)uDCEcQ/>EH#l9Df9Q3DJj<.D/=$)CMR^#C2.HsBkV0nB4kjhAnGUcARo=^ @q0"X@U`bS@:3JN?XI/H?=$oC?!LW>>?b<8>$>'3=]ed.='&I(<`W4#r',)#l&eYcg&J,Kb%hB0\%LrpW %1EXR$O[=L$47(G#m^eB#6tJ<"pP57"U"r2!s8W,!WiB'!<<*"~> endstream endobj 50 0 obj 976 endobj 54 0 obj << /Length 55 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.tBOfFTn"!uVN%_Vr#S5Va;f7DgNm`+Co_N!A8DOd$bc&0%9P#b3mC"+u4q,=n%Y ?m(epL,0F'c5@*0%EC5$!K>_A(Qr826[1Kj~> endstream endobj 55 0 obj 103 endobj 52 0 obj << /Type /XObject /Subtype /Image /Name /I6 /Filter [ /ASCII85Decode /LZWDecode ] /Width 279 /Height 413 /BitsPerComponent 8 /ColorSpace [ /Indexed /DeviceRGB 255 51 0 R ] /Length 53 0 R >> stream J,g]g3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@WnYi%P9<#ljrk5YrjK %LresJY;Lo<$E"`K`])@^ec-j$d`Qd3[GQ$8#/soPYg"S1`d26"(A3SF>t3KLVpsD i.*p5&;^OA@1\)d@hX\eetFLn:*UKX73\EbXB6neMacXA5e?S@(Q-37&TGNl1`;7, @mQd+A2VD:ET9?f="Tc_Aoh+fk'&:3!CI17A5Y,tM++0s>$Y1!:mruJ&n9@$cru6=0 k&>N,rJs12^>Nr,S'C[pWQspW4<6%m]<0Y+*=%/NFWG+WhKg5Uamsm%VkNm5T;V5O I\19;pj\pV_>an8nE`:K`"&.I$AiGVd\A(aer:os$+P'#^/hgbdB$n-V;I")b2EcCn1e# Y\b;V;7'[KVE&g*&4U*0BpkhA[UpB=$(PLo-38'VQUW-%@$?/OefTX_W1kI?iOE_p d@me1*RQ]7C;r#n]eN69JWgqiYsFj)aYG$$A/Ni33uq9)'l@1me[:*:=k8k?D-PU, c#>k=^g\-YRfKHY@G$ktNFUUN;?'uHAN?;n=Vd!nC"el@+(_."0r>-.[dCbHg^'l( Ca!@5`Xc<5:"=CA,Lskh'd`ncG$^N;m#dA'H4j,F^qK2di"ueJ45WRtbRWQ5:)/JU A$-/kP_TN'L16OPl8%>^0h?o+@U!aT'2Um)G=`D!ErafU="7]C'^LnUm9XT(^V'm*i#j3"\+YU QeBo`243MSG#FWg=B]7(-88JONFm0t490m4MLV3$84Th$Lf#t(Pu`=3-UXf%3_Y9@ OgIe#VV#\b&'+K0=!-Ok)Hgt^=C&Z4LbTXJQM0RYIuT$kU)<46GQ9IjjWL.EStKa* C7jJS<.C?!mrX.op4.l#lJT?C(tc70)B<#oH[Gm+6R-&2cK)Cl(7%Whsb@3]"W@bmi;61,/ITE-0#'SAfj%+q9^ S,cBW"-?qd37pVrMbDV'&A_+$JE"uZ!;IQ:OEDF,b[q)&mP4m;Hk+!F4U86n*_.?% &-;8a#N5M'"A&G%63'C[/,Cj'JKWB0)#4C%84Okl*/OahKk1Wu.Zdb2+VmE)*+Ls? N7g3=AGi!_6Sr?_d?c9d=ND@)(h8MuO",lL`>E(^Ef]_#,aedjP,&XeNu/qF6n&'C jGB[*H#Ufnr4@3Kc-<@&&jOe>"j`;Os*%I-E@jlN?skn-)ET= 3?f-cJoIru!nX;H!Ye#o*N^^3)G(U^$Zi_5$+?!FLYt0r6#;%sJjVT^h#(T$:kga@ LpVeJrsPWY998o_6C:C*Sfe#1&+G+VK)kof@Q'BI>"qTQ74AhC3gL'A*]=8u=ecBS j&*'N5GtO/"s`8#e'pT:WLEo&'E-Xe+TOaGTPY/>X>gFrk>R"hD@Q]_2[8d()ad_B %@(`fL;;@Y_an>IiM814+NP55;jaKu"b4dC2a`mm0S:X-ERq_R]q9F*+*?UT:,)B0 !cVEG!,O.hE&7V_\5rlb!%*BGJj=j^f:qroH@Qoh7`?*h>!\7"\tU6/8,+,589?M9 ZoT\P!Z`6dQbV\<[>+NHI5nT:r5!9%R^.tJ79QEKkLu#U=;g:0H;En>r!#O cqAli1,;A2*sBAM++gP,\sBi5+cQ=IXX@5p#ma.Q!PCCB[?Nh,mFPSdA:K02[Qi`V d/tWc9*-5(#g6$l"TYJ8!fQ[WYM^l67F)!B+BO-`5V!!ae.m[Ws*%!F8K+@g0*77m #d7.^U*)r"h\D4Qa,pBS4_+49n.7*$^ts %`-4H7k!.4@sDl#Z*ZDY37o*Y3+n19LbXW<\etQ_=,W=H'S=-\SV.OZM(u4AJ=mOo X$fFaRFW!OOA$bfFHEdX-:1#6ruU.T]&kl-_'n&&$0t+pO5Y5P88nVVRL__uH`20Q7JP_]9k-lkT_3 CSR17%aQBt-ESCc5K1@(+e[=S#r/e1"=S!o6/YOnWjAp^ACEr!PY?pr0FLD_ruGdV =:u1TdTW#;>!Q2=MerG^!-o$tTtCm':r"oBLsd9!I!Z?=U+Oq3eKa^>"-CXVX]C6+ +6'RP&da1aZqte223gc,(n6l&L$d.M,>fE6u]"7Jm_I_ +Y"MMi0"ZR,YElTF.u32EZ:_m;fI9D$99OLd2-JMm?OI]nLZpG_2*mIiHQD7&2so* SI:JJE#UD'=X!VcNO:I9["*+F&HWptL*5+[_mi2D_,Mk:&DSI^+DVADC^bkk&kkPd On(a_"Tc@b!d2m"!$K'!it)\&"F/3ZUT?(753,'\5-s?j"DEkl(-qpS5R_-W%Z9"^ l,ZD/dNecT`"B@@_Dql&,$!>-nVRd'caWr_.ZM`e-P/Xa`rkBN!/49VLIK!eq*YhW r7u'&J@H79J-ZofdJbiZ#MTgHmgh`MUcR`8%1,A;%Z1.lmQK.-_@Zo,O7@fG!/):: 3YlCjmQgX'!WMNNU'=>@+s7's!KoeN"9HfRs!ut#W1o4p-357o+$olDBd2N/]`!Yp %Y<+:i[=l%>.![ig7Z[k!2bZe0FX[,$"_*ui@NrH>/fpp+7N*b5YrCBWZqMf*%aLg bj>.W(i"#=hEV8V!T8*nLpMaSKi#9QEie_&(!`$6MJ-$$cI`t,6"sMPbTX=ME fa1Eb+7P"li6EE1q"E\M"+d*eTf+.2#__+k,@CW`05)21?G/fK$Xsb7d'3l!"<`6I +5o7*i.)o"0I*5/'nQ?*5^4Lr!W[sM1a3;:7T/tWV[]it>sLpe@'U-_g].AX+5h5` 5^E^ORV&fG@3I,.iFiB=/d#OV*T;#I@Hn]mjp&Z'*FUQ&^haKgJF>bc$,I/Z@2'AE .\MlF+QfO.`RY9FbT)0@+$luGYQYd"dN@GfRdh@Bi'7mil6H@')=]>._C>Q*rZC)O C12u"$TJ]T+r.ms6_TkT0E`%3U`\P&@\Cedt.H&eXUTiDKXe"9tM3V?#6K %*KE\3eQD$,Tn'7b:-5drn B,_$&!Wd9aTE+7b"e]lXTuM.c#pVbr#(cam@R^R)WZ08X,!bkR!!MWhIK0UB H%?A8i)Tq'n/d,&)+6@s&Yrm=/9iVj<"bmhZDcN4rQn.].URLu1m$""!.;WF4USNT/]GR,@1PLeY4s->ae6!@!2pa.g)+7e(r9u(69GuK rXNLu!2,:h+WCTZ('5X/(85OK+Z^B)C^1V7(L`=>KqK)%a8c3.((=ZB7[#V3kQ;r: g4018:&4i!T]C\S#CsI3KoQAR-PGm"QNc2)du]G0('D>`U'*LaU/6rYIkpVUP"?Q$ `Jag_rX])/"CS%t6$a(6VP(^)$c)fS+T`2T/0I2H9JjTqn0e8:7n`KkiaN$#Pe[hQ oOQm>9n<:]jm)p=J0Z6U"/(5PnN6h[kR&H"&YNrNi0G0f8f(o&hB4is!J2*GJ.5rl &7M(GJWq!m)uot>(a5=c!M0gR"qb:8)8Vs_8>*sgrX\+L!lR5Gi$&uU4rcfl_iI2Q cdE*[4rl%PE.g=g63]gelFFhsq`khs"k`K)R7JM]%`CKIJ,j'^4<"]^L>%KQVAJJ-3/"9bD2%tOKfi/f'hljpo,%tOf-TRIIG!"k$;&4)Ib M8m!mGU+F&pqW,N^c,V#og1o.APZVT5a>n\2?3_aAO)?s+=C_cQVRS]#(W!G+H?`e 9H8U6<@,9Z@I0N$$3l((++[JeiO;:.1_ZS6?%FLp1n#ZiPST/C>JLFbiCucc'HLT8 =MOt=2N.XuVF//c=Q)(Vjk,o"QA@j+&Rl_%_#\@@W0$((&=%uP@6,DtfF\n(-\eC3 iF:R$&fi-=ga0N7c9+Jpcrcta*(AOkZ]/qDTE$,`'%[%*5]nFXL&jRJ#m(M=B0J]o <[;'='P5dAZq_bn^KH.H$j!>EV:T]R&f>$8BYlu6d$c)-'ITQ4l/XrJ+Jo7667O1q H%8-^ik]q"V0[?\'kRNGoHeZ]Z6S`JL'B+KiQH=07:%Y@+I0l56oaNY5T+/H&9b=' ,!+-Q7NgV!(*Rc9JTr!IHl&K&3EPhi"-aV\H5FDL(kIP\iIVnTO;Q33(r:`f6'<*/ Ng50;&sE_((bQsTe/HrW,WEdeo/mDHK%,cN%A\dcTSs0$8VK-$Kigp#pgDU%efV<. +McVDjk0NQN=Fl2`Sj?1i"AH:k6&Xb*T=XL@JCm0a;;[[)aUhKJ`[d#n/$Y;)8VE' (A%T8Sdl>p+[?/5`Jt#(I=qY$=oo$2f#f3;@NXQf+Q5^0A_;9,l6Il?/KtN&+ncV# S-]1;#N1CD+E@_&GR*/-#%2lb!.kJ!:',qW#,"s2?lrMeGT]6S!.k+\aIXL4%,;RTKWp< )@aVg+5oAHJeA-Y)g]@?PrY'OJNt7;fWQJ9W-?FR+ncc&PFB%b+I9_X\YpZ::'\7U ,JXEg+`JAC_AMGE8AmOrQQ.0!;BOl(N5?I'_@?Y?hHVa[DIPj8!9m51mN4`W$hF7g U':T_j)i-R%"Q0i_F+H94Z_GUA&joHX$*E;MR^]je3$imlO !1M[C9]KXF"CtL*,S:uEHB95"Ild]dQ^XEgUa%Q;7LI:/(kHWB6%aZ8?&j^sM 5_^4]s"gAJ$ihHcquORj-3H@4^b)]+5UF4Y'ESLGQ!t.86.N[1V/mTa,Tobie\S%i C(=JfM?S:a84B&g0)b@El4^"9SJ) +EK]D66H=qW#f2!+WticR9=D2f3-g`=u_-F,"*O3&!Je/+f$`/@P]aSpd7<$!?aa^ U(2hLU`b`MEafiM38,Lk9HQ-U[To=EJTJ[p/#g'7(>Rs\_#Xsr/.+Zm*oOC2_%mTN U*6Eu&YSTe+s%j!.EqX=+Q0!]"kNqURNp`%!umAgiV",%/gHnNRfUA9H3tm)"t+p@ S)NZ`@M/^8PR9a-(ZCf#JE6ZM]FYt_+hFN[=te:#"P-P?RK>Jh@24S!p_Z/0dujt\ m#RN#,p/i['HdAeJ5s+2#E2&5($$i0V[\lB+98,8f,Ya--1C+m--3g'g:IcU&eT@)a@?B@fHZ g-rU$&:<3,2%$t1NoBPQ4JU%#$3bNV+^o%$ftJTE>R6u&$D]]pJ-H%F66LdsFlY4f @7[;eh(Jc&#JboQrc.*bFH7Pj(IA$4?>\k3EX2(1g].<`Tk%Gf*MsFNN+,'Voms(C l5ft"'HXCAritcQ[Hi:E'Oama_(m.K"<>6Tl%0Lk64O?\5SP=r%5nnDi:C0h/IEY+ +$f6:=3nNi9s-ei'B.YNN=fQ-'VE1F,TrBjoi\p.p`"du)hcES/;ub9YWDli3h`Q7 _6P"E/fMR-)S\BQJZ'K\YSr(ip7B0k!W3e*MBLl0)Hk_d!,`Pq+:8/3)>&4u^`Wh[ Dg),`*k@=]\3!!Ju`'d60`iD:7t3Y]D"'`gQ3_*S`"-kO22FC[EL@/^[f%M,4I %%uAe!?MgQWX]$+$K2Bu>_!rJ1`XKepJtoSPeg2H@3INPsH(% !*$+00ptJN;RG3V[kaLH_(V+A2Kq1d5LWH%)uYQuQjXtP8/N$p\::i:K(4AGF:_S6 `T)-7pa\E1KYp+&l*[JKE^SaPFc:3j'hc/h[i;]q])N=9V\a^L-1oCbhka:5///5k O' ;A98-5Z(&U+\5a/"a$D;9*HJ8<#,X[#[Ge#V"+Elb:2)tItO_'3.JpYf[PD9DCP9j OQ8iS>utQ*F^E]8rHVaPFnL&N+6;F?WQAfb,!-kn!%9o>@B]_>O&S6%Aq@);_$W)64JW>s]5?#Q:Ar 1`tb)I0'M&MC7eaJC(/BJZ!em:Oj*>63dd8(]Yod+Qk:R!l-QTTRu;Krso5D#nN,h 702oX'.Be"]m%UoK%U)/Y/Q/o_&1RlMEaW3FX)0Mfm#.W/[L#A&fE+?LAVa9H9S1Xk#p@0(N-G\H5^SFn KGG>b:_XGb?lXng,`2Wl?O[Iss*eL4[ie4bm(i[@!!:,iJg[9dOpLPBVZ72;nHqU5 W;d2m&-@dKr\Xol,)[^C9Fnp?(Pj5[8nkkF@Yf,eoCsBC"7LZU5[=B\ .K]jqg_AZH22NGLI)P7K#%T+fN`__M!.6"5j5>5O;t^QRkfP*$BQh&A$ig[X3/g6& r?"jH,332_!b'ko![2kS`iq.VYIK(?W7h\JTPXcU/:WD9!"4SW,?h:H9fZrjHq_4["*.>0uf$t)IlZu%5FY8 #(Y*pe3msYg)Mo'D&4("'Om$,ej%2Q5osO3;h/Kl5)$'+!MChINA:DqJA;UH%*c4# !OOs8.3T:4]Pe0DU-=tS5H"lJ@QKYC8LNbJM\+m!0`VhNa.T@FJtQ-O0hs1:(n;86 HE@M-\0clJRM3P/7#0/41e;ks'4Q>ULnP5#"29L&j[3G31$SI^N"ZOfsS .DXI3Qd3_n)tW@p#Z6*j"l'[rYQ,V4i4X@\&:`G$$33PGaq*D1Cle*-Ss<.,*`UpH !5VR@_5Qi:")N#fiZB1;+>8ImU+a'_5UIfj":50l5TEYj2Pf:e!l4.&$DJRH^c2mo -l"Iu6nU?#+92l_S<*gBhVl`[i?)^RK#_i35_*60&&^W)Yk/5'imla,Vqi0[VoiUJqO5&/[Wb3%kS'"?`?He4d-#j>[EU ?WY)IL-e-*"(UD@(C#X'EZP`6Tccdi)NI&"gYb;):k+@]SVGIm5%"A<()_Yf)BB,6 !^U^3)k[lqA>TGNi_TW-O\-k6!%&Omb]hR#p>iQ2";?FZ!DCeR5O[+``;E*a?tLB--6(J2KG"2=UBpuMj1Ga"EL8Ati=@"tqlP"T\^u/^#jYcKYHW0[4t64A+]=kj k?''%DY6Y&5U@Q&*pCZk$]#nb"*9V*4=Bglp$1Pro70)`"@]8('r/Du#3!Qh_)Mko *_4=t5:P]ATKjUQI"?uk+ad[3H+[[f;tgBE#m>u@+Jo-AL9FbG6VjoZ*lKm]nB`#i &7Z.Ne;&jAc5D6_>7=qSmceM5(p6^c"+flD+#"fn#PaG*YTNpROj6208Jl7\i5PncBANR5>DC=e6^C,B%XJbVM2!*b6R=YcA+$5c,= ,8`.t*1@^A&o*Q,3.6GCsE]h"b\aH\IC !.ah]/TOUAr"993%RCAcJOjCfOTGN&Tn\)INM$7TgDg2!'*FVOZgdfWY_iR6C;Qu< $d1no!E6ZSh%>f?^p%Rf=I9/bcS6P.Q=*uN0T^gP0f*ea!'j\CHO5=<8YM%gQ"^t# /$t(YN1lt6$!]D2#UQY3JVi_S&0R[#96m.KI>)c=#cYopR0!@bT_oab(elC;e-jHt_'a7+=)_OQC75= #P`HF0UrZ,CW=;/`mekFfK5:)M?MRTR%doHj@R>L\-r@K6.#HXBM'%JA$*h6!K_Xl 3;n@E.NsTZ/f8U0W*oqIot.;UR.=Jf:dp.-Gf5O/a#"lu8-+9VEsNll#^C4l&9!=8 EefHlLM1pfP`CN4G)+.a#AAO@d!UW(PD@YOa]+O\fn+oW:B1r7"&*21W!@oa>n<;_ #=8]M:a(AA:C"CUK=F,N\9!eq4AnC\,c#*LJj`Lpg5uL'*a[a,_TG_d!rO3?-$F3!fJC"!0A(c'9Q0&L_'k^ R5b1+?kRE="[IiqWO.?dX6iD"ItJ/N5`jcPpf@QTIYp*l_n^j)E,m<+qLJ?] L[ZF:!"B.RER"Oa"V>=K3.Zhc-UMf&"P@`Id(I^&c-=JhMm*5;kY=NrMErrpJB1ss _<2P`8tZ`I+\@AaaV=s2I>n=iX;I&8oaqY\P6G3[;+/eBQl1PC."`(?N#3H<=B^M/ 2$OV#LN+[E8Laj2H:>W!ckqpe\HHqLHfp;TVhSC[me-5.L@jKHM]FLaReJoE([5JrN/"E%)ko.=u+u!gkBf pc\cK/qU#M!sM&E3&^sO0S=mI!gK,S,"mcC"G=2pO.[PLfR"L7+c#hn JCn[hO;J2F jamJKLB)K&&8[*;Ka20seeMWE-">F:F,%obc01(\7*X0Li"_naO9C,8TSJ8DEJo\& a/Ier#aBiY7g%ZM/g-$;OE:VrF+foM"C6/'=@^t3GLqOnf8*Q7ph!Cm0sL-%ac,K@hbX"E;3u4XuI_'SZ]N1q6\=R3m^a=ojut-/kYc\H4,M "HY/_V3)kS[+b2gWKh+(O!(mBe4tjmg!"^L]86#ZZ &mQhA!'!`3:c-/l#pluCU.@cKLKP1DmG]Wr!#^E.2Lq_6")p1" =94%.2]b4<#?gMKnS:CSVOC-9u =Po\G!`2LEr'6=Ff*EKpLOBYfr9hk)*61!R[lK^;LJOU/#X!kI!C!+t7FhuH))#Z(O) &2@=].Kn+",ii^;(_ZnR985NI*ftl):d/H6=650=jd''2P4'tBcjS)QL`o^JGhiEt AO,8,LYuEfW!R&o@t:.]!14(CTF,:CAcSJ2k&+kpSn_kZo7U5_!-hCqYhXap$_7Q) #Ee'I-sY52*!i7ceu`[K7,EjHS5$g$:"WL,.!c->F@cCYLM1mEaERr/GDDQ2#C(QM J9cp;I#"\FLU_[9W-X5dHj?TsBG@t7YQ0?DIt=QPiEL7$YRZb6!pI-q!188b:kG5T 5lsS+JrhD_VNoYSQK_QEBm,nY>smk"Qi`p,Jj@!,9C@_`#RD.0O4Yo+in*C=I2D%A 8NSeE5^\@&IVN89LT#J'Lj%uAG6^reLN\4R?!rFQD*O\N;V6SS3,m01SUa>=&@`+& N]DdfI"LbF"I+%b&^eRRqD!_rK1JeuL"Y\.F&?WLfg&[M."6hG#<]?9!+*Wp=9S\, "oq]FlupJN:^#&j@#,p+#3\;;)#8lq-5#18!X95Bh6_]S/;LH!"W/Ne.M\Kl=$`uX L`fP"oeX8UJ(ccY#QDN"W$7"1n&(aPNR.b4peXPU>\296JcJF(R(Io_iWpAZ#6I-j &9lLrM$Kf5"A!Zjph0aL\4D0kKTHXnW(7''e-M]c2Ukr@-KNV;1_65\AQ.*6ctHrT OFj]V!K\"MQu<):",9WhTL`7@X7\F0I/kZH)Mf;^A^$5h2&HAH[7Kj&k"COQLnIbtd8d*46"M_0opeaXs;2'6sKm6XP&5e-+kmaRFkocXL )XfC7!JK%M`. ^afJ:.j%#(!a$\!BIJF6+e9_%LaYH8.$t!YiJ@gPOi'=<3!+aX[>6"gLN$#ip6,aV #)E6\"Ts?B@*j-PXo?Fo"Bf9BU\mglMFD"%GTh5/Di:J7jiGAp$r;ANT\u0[2FT-J 5LU_l1]=$XQ',2LM-3j(9nM1P3U2*[U8dF,T4'aMiIq?Tra$J]WOdSL-\I/!QlrH:K=PYL%T]4^ 6u*io!oa,0U@&(K+!`K!]Tr]]Ldh]5A;Gg;%Rc1>0bIo'!!OI!g8$QeT\og5*+2TP 3=Z%.2E$PGJ-IfgdYO\U$_RK9+Ge1%F0Z8Bl;_%VPR>!!"-d&elYo62m,li+["LSgW0<6APW7!$7cjm8AMbW%]9" "?,PeN^Gl4+\4a^pV@U4@5*?Q_[l L5C\@=_N]Tm$\B;\9sntb4=?&0]ACT3<4e7HAY+M$#$mp=4C]ar`(6,RJqV"kK2k/ +6T?]E?+/5^31LYJ\H7D`UP3C&L;@64;1-q6pHiE_!jQ1jT5hk+%:ZCQ&93g*/[*- _?<#U80:Ye,.Je#SNktDdIdBE5k"DpUVQ?mrZeZ64-A^\n:MAZ_%H3Z"Gn651+_Zk +>atq!0`JKKF#BG+9TDu%"\I=#6:\="+XVaJWMJd^n;PGD+oL$@LtcB\HW%Di+`ol V?fp6+!C`:IhVm[IFr35#D6U*&:arlL1ofb!k^Gn5XYSf@kq8]W.']"%O;N$f734A J$:+J,ffb&M<#*5%>JVt5Tp(@Ca=TCEJRSOi.)J[jFW%]O?eIIrssbg-%b,1$&7ZH +6'QILUFJl(inLVO\gO[.'?#P!ec)@=sp,#r^HqXa9Y&DB+1I*!lfK3'-Ius%8hc[ g0!nG@)MGSpZ>pr&o#a@$-@#\T:!!MAV!!.=R$rB>"7\JYDC=R@3hZn`'[oI9pDTbZM4BFSC?#XpkL"s0%@`Sn5Z">LPJ8@C,,Ua#Y>T*Vk V\ET2!76j5$:-NV$=Fd+#I"1UKlXa8oI']mj;&%*BW_^dTRVnT=9sW-cP0dn#YkBN %&d!a"CdTs$GZc]-r;-#V[R0sJb21I\ElBTVR,EdH44) TUZ4>Kq"-c9FJY/&-.@h+g&9N)`>!i([K+uCQQ mQ\R=(`B#$JcjF(I"iVO,0\hR^1B^C!M-S?5[6d3d1#Y!aTs+jBT#Y'XK"T;*[Ke$ E!1.t'uL*^"h@3BqBOrtG^C4QQliY4h;h#nr*@#`O% +%0e)(a=W+_@Zho7>QL),7V/3&0[DTLS3-#7Sp8g_GkhJm'8oT!I'EHGu9,(CCo?Y 1'Y>)=DJpgXS&Hq#%5drK.q&L#Ufcs,3H9RTR7IYaQOj9rV-s@BW[#%Kc`J$)*;2 !2)Fk_\aa%+cJ/Yn,O9D5g9>HZuuoJ*[&M]rrYPpiJ&H^,/aq`+EeP`mR2Lgb6U1Ep"NGrr!^K9\$mQ$d"s@59#PcaM,=(4>fOd@c E#UcGU]:qQr\X[X`-),77#u?S#lrmV$#+pBK!:Q4psME73hH#E0J!f9B&3MS3$M=s Oq/E)"'B(2;Ls@C#(Wio,ToX&$h+c<67',3eK*d"2O;X*.[SuOamd= 69m1BK%48sMP:;@FiE%TTL2r@MN'r9s0t9AY(t2f?O-Ah+CRt[ihAd)#P_.=i&hOD !"\#S%j;,ei;O9R!"^:V&?m&aJHl4[,6C[h!eC[hi/Aep/g'#+j5Mm+68#r?a9k64 (.&K2+>s=P2?QcU"`RKEE)?cm@Y/Q2Jm^VAY\OHiEsEgCm7]b^iG=Wc=9:`S"p+q@ VYC,kW!Hcf$@u:]Tn"!_1a7HZ#p>`VTu8qm%/ln!*b!nH!U:]ajrUF6*hhs0_T>F] +@%=e!i3ed8g%M:'`n:L?mlG6d*J`W)BnGi@#S3^$42;BC*ER0@L]F32%H;e>k)31^_.`_C]Qd0!5Jsd dOQNi1'!In,/=L0^]jdH"XF^G!)c2b5QX(7-J+s^)\@TH+;Pa/ct-'D)^5Idi:I*q %KKn@(4cem+Vl0YbQ=GN+$hCJJF4J0F5e[HKbT`]p@j4>aJd`)3BEmlg 8-n&r_m(B(a<^kl&I#`H@K%+'JfnG&*2q.6J3s"/B-,tH&^?agi*ZsZkSF7P+2PSi $rS-t:_=j1)klm>iIi&cL*&hm,UG4I6:36ki#l_A+f36b6*BuT\/uloYU)b?!L!@G !!5hB.UY4Ui63)3as[$o-F)<[NPjU/0g<-YECFPQa;r!.d0HTc*n3Fr[3a!$WU.+>a@TrY(qA !8pl]?n;@,-4cf9%j4gu&Oti5V@;EE!o\+'BLa2>#Rhk8/?n=[i=[@,#[DnE2Pr_X e.tQm!+\D'!$Mgb#du!Dh'XBL$_\aQJD(IkINF,r?6b1E?iU`];A&4I8gOZ`iA;[Y ;BOjL.q/cm@)=IM":.Kd%ulMKJ>NR%;?/tC757O[K7F>)5"-*CTgg#<_jEP+:8[ROr9no,_Lgh @B:I61^B\([,MW,Jc8O+#QUNJ#6GE:Tq>I&P?CnK)?HQN@Bis$f,+`>*'pI`+oWOV [Z<-%rbf:hn'WDr3Dm\k!$H2&8?a//i!b.>?%Eb!5i)m!\-h0`%&!M1@+#ZR?5J0! 'gZ(A_0?kAMA\^7)W?o!eXd\q[MC%a):_L6_0\!o[hJhF#2l@!_>G.J,T7d*&L%,m 5UZbCX:4&c>8!_T!09DI63Z=G'k(lhemE#)@MXN/AcZ9TJS#Vt:-p+e('.;JTjMF5 <#$O=+NCE`1))si/ebY5/4WhS2P+sJF^3i)*s%#p^bQO21'<(g('4+7Tp"WtAfX22 %"Kf8TX]emfeYFW+I0n,e#@3OSIW#h/,#?7UUV9D8-4<$#/E2(+>G V?e+WLfGQof9Y&4&F0hc/3GQ%8B]`jZkH$jV?F[9!`HVO<#K\!MQef^]9q, A&ue:0F.[$oFU9t_CcGInjgKS^!m^N,"*#oed?pM#=*A9?lE9Z$s*Io\KD"e@#\^6 $j+8&&:t#cJ3X>`E$U")/;)4c9gesc#T@rh8AJgYfa&fcn"]sX9/:\F@i8c"g)AI8r>_7DM+sIGU5CW_fP6K#0 5bg(!\0"is+CU;@+9rj*\ffqX*/-ciU&GnKJcHoTBS2HKn,*W>^*$gOC1%5Z@9sa9 F;CQn(L_%pJTM]ZGSbYUSRHf6H./?&i"n:mS[mYneIj"'W=P^7!a@$.D-ih$a!FS?@![pJQkT[OSP:!")+nuh'JYQC-URF9>g-;@\!#i,KR/rVb _@Q_jH3MdLVUrC`K-L(.%[j!6-$f?5oTR#%4;HTj/Idee;F* '4KT8m,f#`V.ejh$LmC+i.%:Qsj?k-C,n-38/*I@&`Y?3*>lGR-^A%F-O5T0fDZ$F1L*u9/:iD^PN*#.@, 'd6HhiD:7t:)08)B03$&H`Od5_A+Z@)AQ!I+\iFB4s7pZID?C4+hE=liYn2U8"_10 J0$[]L(SR2).6DH@Im=5V?1ml-+cns$^MlC*!5%.Kn?`B6!=E-/fM1GJb1&#g(Qd! *eF5+=$/[_5EUP"#.\CI'E03V:)mcj"Mcm)_?pagZkd*L*+]6Va(,n#PrYS9iW1SS nq".XLDU!\=qPnj]@H A,+;@"lpc!ajf<$A#D3bi1mGbYSC8>,X=U'5fNpoIBoM67KNK(e[-FW`"YKu'1)C) E-a$b&lV_"+FK7N(rHi/65L7OFTD1;!Ub(QV@<([7saYG7P_q+iRnb8=#e%G9n[*l ZdjHi+2P_:5QhgQ5M]_aB)hoT60]S#<#Op/,(K^pi!`]&V?Co,%dn9;F4_SmX9Cob *e>jD+h0[DNZ6sD*S8X$G$_sd'U%fYVb-g/@'>[!?TL_%T<8k/k$D>lWS5:?dO:<#G+JIoHU<'lR n+I>eImO&CDE\E%8g<=Pn`<\pk`fMli#LP&&AbR"oI.3lneGOqTA`$Wi@"[L$6J0q "@/b(6,F!P+;]T-;'7b!^@k%'`ZGcHrK,ML6,h18M>`RR+MdIan,*.c('Xd8'TB>? !CS%1#S[aT!_#>sYZOjW)%D<%?OaA'(+BtbTq]qV1i>;lN^r,CFCXRd%tuBr!14l3 N^kN_fZBp>(Q.T)Q%-/B!YQ)q'_M&Um$4kg1<.qm.XFmn6ZA: gDLK`>*/+"]0:Y/p?]JjnjXf[s1"J";)j!e6eM(e1`pl:MBj+6R_/U'AC5 \pkf0!;_-Z@!Fpo%71==09&8B!"Otj+?fdb"$g;q$tE,8!%0/h$n[(uaStDCn\fJh 7j+$9Jiq"5Lc@OpneN.9j[7s?JZkeI!!,>m(]aqSd67bm-gCU388"T;"r8N3EW?4D -rPU,-i$"1!(9Cp)B_BrjtXr[&-,n$B'95,TBF8s5otgN:*ld5+=)0'k28Km-DMEn R[$,>C2nb-Tuo3BO!#bnLo"PZH_.LQZm!n@,th09U*VNT8.$L,,#3q:FX0-TW#XV# +]p'^SE.155Teu_5+7?P1&cY(?kA+r!([[f4TNPOZr[H>!a]Qo!6>mggq;'-L-sMdE.3;b#Z).]euO$HJ!D3%C3P?LJ\3fB+:uK=JLA"l#b[h*&-sD2 =B:!--NKcVR.:]r!u,IJH3f.:&-sot(iC>i&nh.)JH:B7\dI[pHI7PB_N$'_!2.>E N1VH)CpsG!G^]`&iHQc%Ce,Z[E$#\W#Q^O:=;ZUBVtl_MKcugCJQ>5uPV*hJ^8[rC N_^)VeVY1SX`6lY1ho4%;KK5gJ.^jUDTEDjJ!.Si7_8n=&1CZaG]`De+WZ@GXT81]d[Nk-AWGkTD%5+b]Yf<;ko]<`Kl!M-*dn7:BG&(+!s$Dl)U6]ceVf!muk8H0J.S:-/XTX+Uup(*1fI#:f;&'l60/<\jp \6rGm$[V.>?jm;D\_71ZlKElW](0%pk5F+Gn0q]1r]6E#=.QV'JYh0^fZC4,R=JQ+QNts!#ciph(^nr -3;#Gdi&3k-T@/u2hrg]).PAaNj)&WL+rWIi_ihl1$C@V.0C5Nr&[fNM)hPW*(Rf7 3WuaC%tobI7g$t9LN)T$"3$'+p+ST8Z)TMjaP7D;6p6XZ^+ml']HBNV=cac'5K01< !eVL=*iZaB'-5GR^IuRk1/I5bU)2u4[$" ;'LSM![GXH2]ffn3sfo=5/MiW[D2cQNY/GE,"C5luRp`cs%h@+#pFg7SQMM(jJ\TWV9"d+&U4L^4#DZ'GB_'*=SG04k't Qu_C#2uj(""/.2$AoZ39Ti3Qq#1ZeqU1SC1+9@!Y:bd]L2AW'T;hP`8361fj#=K8K %:IU,"5o(LRP[Ki;%Os?@"m$41e%bu$m%^-N[CN/6O9eEUI9oE*[?.UPWD0`nj*Z* 9dh$_0E;JPT_T7oTPG%bl$Ztu]156Qaq-8"091kf+2cXZJ,kHY)KSjY+Zs?Di"e#% pmQNfKR\WZ2Nrq>n^j7Q*KR^H6UDo%(-nK:0Bu\#g7U8EU5/dT1#P:983HqQ'RNls e%S=ClJGh4F:M%93X6Mb0r([gNa]pd`ph_%@rQ=FZ*ZAXaP%uNUk+9YWZK2Hd2(^U #Mdhm!X@hT.;gnLbYHO7=m'819)EgN7kI"H2G6-_FE?^jcm1\$h)) &0$US_Z]tk5a\eU);m."O>%q-_PeCUiRD7Z;;*l0cmtMp/.hld*]V2:^An?9@$h>] LgUeqCZQNi#)47KJB3Iq-kLq0:,t[-%Z#Oc3"UWh0EHD;J\W''TFc_--\?R_!Z2^S ?l]7r&AV.(5*1?0Td#,G@i+BgLU_9,0uFpQMZS-&#""^\dUWH$_j'ARL:BDj!.ob- 56p+MJ5BX.>1tnpZ2o3"KF":SOf!Z5MDJA^L_)9oS0B1''cMD4%p1.likPqpH\W"J )Pe;X(d3TZ$A":M!!j>G&.9=ZE/5nZK.pbi=FZ+QAHbUMK7IM6TGNC9FG0DiJ3lUi E/+G?DhjFK"))cY@"Ek')M,70">G=Y3r^jL0/lM:WI\.O;BGt-L5:@tYd&'IK=1fR HO!XeJZsWVUZ`c_>pgJE!U0Oq\4IIo&d&`ASR;U)W-H%,LHm8>"mCGfO?8-D\Xe[4 J-6Vu=96E<.KBH'EF%6!<@T,"[FO;9?.Pc1'd^+SVTE6pdYjf(5DBp!>lOTGZXu; ."uqqJ@J\bKHCI23!H6eJdd6hHt^Nene&*3J,gR[TXkB$IKZ<+!a%,X\0_8Z1Bdb+ !a%%,O>2>p15(0Y"[GBXTO%[gK&hE8Qj*\d&JeaVJS8#;R$rf/A:drCO!Bu\l)HI?7E1u\Sq(R.cib\7 G6t3\JIlUOp`Bb9;h0ZnO)S)(np_[E:bDT!Mg-!Ak]%7i'o0qB+97+SKI*^RXgj,gJ9uoNL:^^l!!'#M !!<5"E'GIG"dinU4(Er*S.;\I.Y]iN5=;2SS!K^cqQk9Pt ItlBQ!MH:i-pS%4C4]k!!=2"Q4-TjZY)4%sK*X]eU"02d;MV%';&Fe8XV6Kg'U.>) !Dn,ur=]GLR0MGSdF?4@FR+i5Y_$P>J63Wgr%eR50u9f^7 ISM$d`)s?CffB.dIRN\!R:(.sZ%j7=FU.h?!f/%RTM)DGk5al9S:E,Cdc-+^<[g[_ QS;!g+?bMVbD9P2L\NJ-&8MOG7AOTE\iWLha:a]h?@u?]L(uHOF^>\/22CrJ$Rc.5 Y]dE:2$`o*KieW]@nm__,)4/m-1D!#37%[TO`f0E4g-9LB)dY1-gBZ>rRR<0GNg$gEb83Tn#s8LZ!c7La]9cN7'#% )GuTIOCC-,!JQ=hJiG(*8sKB)!s?VN'$,M,BKUls7#/`DR\0`d:k+,^*rn)Y!+5eW &-B2JK$(])b.:e[UK1O%LB/:*[7D79R"^&UGmBSF&b%f=#QOtBFbE:;!P![`\::G= F+Lh]#4m2FXXkK$f*4BG6tMe7'g>LQnc9#Gc1lkji-0lWKn).(#LF^sW#C5[)I4Z= >trjT?.B"LCk`K>Oamag==j[.JUrFobsMYbGROWr=NH#^#(SK1Xe:gG"=!nfd+GW) AR[uKHB<(T#Q,pBG]fc@K`FK"bjrOE?qDMal`&Y8M^So4GS$`# H%ALTKE-UU:iEe*6NFY[LE0)u(kmVk9e#$?Kb-4rJ2DlfH%g$l:KfQfU3Z@IIKK`DA]pg8U>nGiOr>n#kI:geh[JH=MML:mlQ +GJ,q-AF3bL@QMuLi,h&;a''-LM19&ot_sLItP`r%l;htnK0";B]L"ULZB-W0F%c; 2$t0)Km5P.O3WK-`Kc#'q2GP^&Dup#rKj\*HSnWl!49>##ODl?H81A,+J*!3A >d3.]i'N6"Z&>JahGIAkBRq)CG6FW1"!CQoE#=?.,<%S$"TCpRCaWeXFUt,RLA5OT -kZa/gDJ+O4Xk7N@!sc7XFV7$!6_s*BEDU17Q.]5BB'/V0_a\&+!pu>JS9F;Z5u*1 KbL*iL5:67a[*-b&I1:.@ZDVTSrI*SIq\?W%o.bg!-%0FJcHpn7X7#s*ccc4M]B5< !>XVYSDIVG#6jL"BsqsCq"b![EF9d>(nlI9MJ]m/!!iZ-ro*pnHNq]HJZ6SD *ntPNqHBcC/)+Wu-ijEe:g2/JD+Qbk:gos*$\2)?PLpQT-G;d[n^q()2`N>@Q-!aQ a9(%k5%$m2!%_tFY:lc:O/'+Y#U'>9_&CCEL@pN+!"WEH:2%Z56tZKnc;R("XjKR=B!\A!#ip$JSgiBa4Wh,TU0(f,!8@jBiu8frjS.:cO6WIYGKaJ26t:^p4'`AL9A;!2p.-kZY_, J\^-e`*b=HrZR#Ml/*Q=T\U2SHp:s#P^4[#VH2Z0S7A#F3$%f#<_VH4G+J* "!9gMbpNX]0nj:jKU=?D&n#bLJH?[p*0]k`;j!aJm'i5 peNBL!m>2o[GZLhc!g_abAhVn#)Za?kP>56PqIKWmcFYSID(;Z`%(Kohi+'C?&A=)>WR 2`Pp^c8%gsg8ik"UEC*Mj.hAh4lihu!V3"DGd\qY!!5-2J5^/;."ubuI!83eLBL4Y )R%qmRd:X*!AdU? >DQA_LOaUV&_C,U!!"]>"A#5;G[4omaTB8(qYIi0pDMka1&?RE"uf0gTFV23L59`::_/4+?&3Di>`J9(&.*df"c$)rhkuk9I)lLeI@Z02"W15B l7HM=k_:hjIgB*ZBMjI#UA l[Stc!$G)t,SggoK-DE*-KI%Wb(rGi&D3at_Z,+pgQ@666+5?g5$DqrA,Ih]+@!du M.F�:5FF;`H#T#;hrG8WWP?]GUZZ!Tu:!+W^OnS2XHP-G01S!XFKP'Nb'-$q5Z$ k`r]'Lron(=CC7<ic[VbkE(iu1 /X=Ed0rS5e1]2q3*bf4Q)Md:m L`Zm,ao4]JiW/c?TSZ9B&Z("#)?@kb6/"UrW&TH[]Wjbp'u+M#0eLS3m(G'r#fJ9F aO6$kR3(F"c@Q>L1>$85&&PP6$\M:)43nSanh^cQH2]K+JdLoqM$%;V15nS.\.]<, +pSNNBHRos8X,#2;[RWN!8l&mM]NW;a?m*=-NQ3hJI\UQ@$W0])?^Y7E+LjTSP\u: 9a@TlI0*?jJTQ!hY@@-l"(d#c4F,C'Xfie?(qI-A4%iYg6mI]nb`gTf-#\? dm5,1\'inYqV/_/'X2_[VoS>0]<270B8u,JdV&[tL,SUgM>4d00PK3WOh"YpC49o= $TXr2MHGID@+ib]jfW/kU`Kdd-.nV@O[q&l=Ji:mcPT;M"g!T&"H*2 /%[_%+oWh^a`p-d'0^jt'U,2LDq&WgM>g.H5iKFdEi-T\ZPgg1JafMoF2IA_\QF9[ 6lq7fG0X#bP&>0IJ%S-d'isAm/e:2I2!9CQ7sKhg5cAjb#DVbE&Qj'#=Z3YSS.gK^:'tDp.0SRp &43U]@d')A_LtB'eB43r""DC1")\f>iNjZG(iTl!LbD5Rbn`Z'E/X7836#X_)PbN! NIef+#FOiuj2cJ+&`>cAW:M'_`-75mmQJUX'-P(a,J>q&&I$Z,MT:MaNb>a-iJCuI 9?`"i0d\.JG\IY=\4$K28fY^(-Oq<,)?R-p!eA'"$Gfsg!1@[U^d&3m+=%*jJ.BjG !+L&u9\t?:_$cfQrencu@BI(rL5t>_RH@HR%3^]IAs$:6j8:5Q?lffT!g,Qqj\635 r2"od_AO"qL6(i&V2E&2S^3[4;H-Uc9,K,Q5>0/ ISDS35cA\V*eHG#N>;X`!+a6A1dlr78iV'N&Ng:^SQnDkkA>jb>?S8HHZe##MMT>+lR0*h8K4dB-m'P5@rcK!h\_6b4Y RM^o%\[NCXr$\/Y'c5N41`IQS>D=m3/(DrCT+m@S!,R?\k4_NE;OEe^^X Y[ZPgI*X9M!ItfO&hqbn\Q^[t6*Nc[()Yl-dL6,kA^OFB@!SIsJn5,4e@O5pS.*75 ((Xeg$mCr5?X)oGn&>+:_/MJ024S2[h<-PFlt;X-YCPqqlqBAl"ss-6[#X7E9jhh7 :oc'=$2t/aiqES]Te%BB"sLoeNtPo,81W?&'ajLl,T.1JVM=Sk[asII&,\7h%oo?8 =0S1t2D.U>Eg@&bS27.ZI=q+[j [SJGU-H&5eZ'J$Bp_%c(W=mPn4tCXQb_B=P>R\t]L6-/B,=*--J/1=iMHOM&;@3Mg mcP:?/J=s%94Sbg/k4-7+Se"OMIFgY/Uh7R^^pk0,qQD,#'VWXlt:%t0]fVQ0c3:W /@8DfAW'4HGRJmpl6=G)7b1oh\\CDfMWDp7.)?`f#\!'oM6V4naV]@LA*e&fZ%a+2 2?9lfXo1S_KkOgoq/hsRZ1"kiI;mg!'`d1Jc%AA,"p7/cUoA']/!SEVA4gN?NQEK1 Es];l"4(tK5UI(0!'s.<%t\acILsh5,Z`iB:P349QIN.K)uI(&Dj)^QDM"1_>1fOT V/@nTg$$r_K0/V;3)0^BcJG#NQN4;baYQCMiC_t`VQb4UGkg-a5U^p%ZRQK<2;;"O E'7W0+q;QEB]S8o>E6:%S%7sd-5I'EoWj<-L!NdJK%P="@U&tiIm,WAi$*<:JBhN;+I3cEXB,`A"r.<7X;+(g*0;ku0#^Yi(1'6+ !WdNs7>SMdKFCE[^MkgZ:b``;fNATe,G^M_8/r*VN"Yl$n.mNoX[*)P)pnI/Su![XKF (h(#eYn%H,H5<4B"eo<6_93G<+VQ(M(8:6kJm&iH_\3V>'Oo<#OZXce#SfYA'N%F: U59T$?4W/O("$\ZnR*Z9!Yl;7(9r*Gd;C8'RT?\?(h7b+iXlt]G8QI,1%C2FipPu, QPqSO';AeI0pa%n-^=8q&gja(6POA^pkBS>knF*ismaCnf4"S%3`Lp,&T*$ +;C-W'ELH7!C.J&?l:3[5pS3S,]ZI%Z:uV8;'dtt-#u`s+m`/P>Ro`@$NQqKZ>CrZ E@3Ma-ZXJ[Z@++kJL;T"$W;'V5hm5BiX-gR'B$G4_,q,=g)7`")<%;.iMmgTZl26' )W@b8JXRImS/O]-*9#Jb1$-l5me7/`H7B62&,^_kPJ4YtVOZe[e9i#':m4e[p#F4EC:kS^('mikp8^aVM?!C/IF5]d;tZjf:m &OA5g6$*G8?me22+$_Y,!am8TJ0dOH+[WOb6,4d5i$h$$-3?"Y6^0Z!i$JL**bc`@ !Pf`WTI!%"*!*EU!OQA-+nV0o [%0e\Th7/,"VLu2UNf[E/>)t["<^+?_`@r$63JE#"JA9g?papE3Wq$V+Df=G?jtTF @K?Hi!t;mH@>#.6:^Rcj5N#!Ji,1=.;?S+[$?XiLJ5.!OXBE?=+$n*gj?,MTr\3>d %=m4A@U'*\cqAEs,6NH9@K$KD;#1TB+Fn\V@2K6dA-ucC*H(r^.&7OX1*&[[#D>Q+ TYMs`h"cM>$"CaQ@$Dd"S0-\->i70P!WEeOQi_hj'ZpD'!;%AlaF$;-+5j4(i(Oi>NQ@7i`B89kI:!!iKc+EE%-?l[(Y!!$+)@43'=#Qj[f+TN\g c"%C%rkK]b"037]?k+[4`nNfa(.%qn+W?p2":$'?$6TA`;q\+J1:\P-3-;C"!Cf^TQ]j5!"+8!Y;rJRCaY5T!ps'f@dL@Kp^9rY?Y*!^KG"+\F"'TEG63&co]f6(AYI-3W;%'g\2p 5]ds]'EA.T*Pp5DT]uW29.V7c)@$UNtk+`nh!pcCbk(Ee*E+iXUm64Z<]$%_de !'hH2Mufc<"T\NDiC3eP8g!$*0n>Jl_>Y?\%/L#(!oOV2@.88^;@A$E+5">:J^tq$ C'&.g)ba'LTE#!:0G)#R*eBCS^q^s5!I1>9L'cq#bhGW+g_4d\eAID*MNB#OT5e6 i2)^i63=Pk&OHDK7/R(Y+]^lQ%Yiu,I+6giH$+HuY!3fkf$UI;a 8X^Lt+<"\f'-S,5iNa$'audEfVR?k`K-sU6XqkH-)M"[c?sXQk[NFnq@H":1L1\+a #%D"e'[;^)$'dQ 5op(Z"gFqun"Q+8WlXkWB2B-uf9T$56B)63oh-gLd*h,40+H!W!jB &0#1s!'j[Kq,6AV3Zn-nYhTL,5\2er]EeKc,bYhT+B/I$-32BM*>'`W8nnA7g`JoP Y"[+ITm@?K-JfP#RcMO3ldPn7L)uO[:)Yl0mM$.jC*6`,o0BediTlU+&R&Y*!8EQg huFoln418$#9i(K8(nKIrZ)@`(1I6T5QD]LX8i8&+5g<,P8R7`!!ND#*.V?E]P7^b !ZHRn"IbHSiWl8%!OALh'VYLJ!O*(:_lOcqF2/&9-)qD?nfE?XAO6Y/'qfhG@IS0Jsa!!AB)^do<;f>Jg$+A2r;5U36/U&r+6JRkDr@"n`UqH5]j2dmO? U':f!P`\trP$eCu_#M)M^p3V0+5s@FQT?$/"9=!r+5rak+9W].s%hPQV0ON&4+,S/ /g''3"[E>7@K$_/O;C.f"T"2[*CfrMjr_JGW<$H0J2e?qhB(YN#='Of)L&G0iET3< +5g`4p*:4--jnm,Q_5GU($G[%Wgr$PaM:+DTmR07F:5ki'-[AI^ig_aM?fe\]KpFY J,u%2XoTZ0+5qqS@!!ARe-CLLTYLsD+tsFu.K[):#bX'tiPGU3M@JK(>%,,Ji4]J, Or<14TLKu>+T_g4W5Sbf\f_26JLVd3-68ae#N<#t5sc7?OfH8d"Ds0<%*e0jYDZ8.l/%C$)J6dE8Xkm,/Jg#a[D^8-'Up(1)Xcr 8V.W#AHHj:Sd9oXAnX!*9J6MjQ-.#F!)0t.,[/?"BGct^"U3,lhuMFuPY)/l8VF<6 AcDOS4s$ouq'_V3"chp-@IZ1E(_8ddn#)AcrZ6Y$MBlXk,a:kI%,cctYtR@b(R,61 +E8Bo(BtNY?n_T]RO\^Y#NS-,&8qahP:n$Z=Y-RO$pqOr=@`gI!UFpeiWhe4pq6$> r177ST;lLQJ:IVfZi$`PH*.0Se3eU8kl#u1TAT,<0-B@SdNUpF1_0]rB5p%.'PBD` m>\$kA5*ab\5NMt0[r#NJRI\0d6j$17YH<-YZquu@&q9TKjf4*#"4T endstream endobj 53 0 obj 34813 endobj 51 0 obj << /Length 56 0 R /Filter /ASCII85Decode >> stream s8W,urr2lprVZTkqtp9eqYL$`q=sa[p\4FUp@e1Pp%7nKoCMSEo()>@naQ&;n*f`5 mdBK0mHj3+lg*m%lK[Wul0.?pkND$jk2tdejlGL`j5]1Zio8qUiS`YPhr!>JhVR)E h;$f@gY:K:g=k65g"=s0f@SX*f%/C%e^W*ue'ldodaHOjdEp7ecd0q_cHa\Zc-4DU bKJ)Ob0%iJaiMQEa2c6?`l?!:`Pf^5_o'C/_SX.*_8*k%^V@Ot^:q:o]tD"j]=Y\d ]"5G_\[]/Z\$riT[^NTO[C! L5(D9KnP,4K7ef.JqAQ)JUi9$It)rsIXZ]nI=-EiH[C*cH?sj^H$FRYGB\7SG'8"N F`__IF)uDCEcQ/>EH#l9Df9Q3DJj<.D/=$)CMR^#C2.HsBkV0nB4kjhAnGUcARo=^ @q0"X@U`bS@:3JN?XI/H?=$oC?!LW>>?b<8>$>'3=]ed.='&I(<`W4#r',)#l&eYcg&J,Kb%hB0\%LrpW %1EXR$O[=L$47(G#m^eB#6tJ<"pP57"U"r2!s8W,!WiB'!<<*"~> endstream endobj 56 0 obj 976 endobj 57 0 obj << /Length 58 0 R /Filter [ /ASCII85Decode /LZWDecode ] >> stream J.tBOfFTqB~> endstream endobj 58 0 obj 12 endobj 20 0 obj << /Type /Page /Parent 5 0 R /Resources << /Font << /F1 6 0 R /F2 7 0 R /F3 10 0 R >> /XObject 59 0 R /ProcSet 2 0 R >> /Contents 60 0 R >> endobj 59 0 obj << /I1 22 0 R /I2 28 0 R /I3 34 0 R /I4 40 0 R /I5 46 0 R /I6 52 0 R >> endobj 60 0 obj [ 24 0 R 30 0 R 36 0 R 42 0 R 48 0 R 54 0 R 57 0 R ] endobj 2 0 obj [ /PDF /Text /ImageC /ImageI ] endobj 5 0 obj << /Kids [4 0 R 11 0 R 14 0 R 17 0 R 20 0 R ] /Count 5 /Type /Pages /MediaBox [ 0 0 612 792 ] >> endobj 1 0 obj << /Creator (QuarkXPress\222 3.32r2) /CreationDate (Fri, Oct 11, 1996 18:22) /Author (ydimac3) /Producer (Acrobat PDF Writer 1.0 for Macintosh ) >> endobj 3 0 obj << /Pages 5 0 R /Type /Catalog >> endobj xref 0 61 0000000000 65535 f 0000221990 00000 n 0000221829 00000 n 0000222153 00000 n 0000006736 00000 n 0000221876 00000 n 0000006877 00000 n 0000006987 00000 n 0000000010 00000 n 0000006716 00000 n 0000007098 00000 n 0000015092 00000 n 0000007208 00000 n 0000015071 00000 n 0000021053 00000 n 0000015235 00000 n 0000021032 00000 n 0000026503 00000 n 0000021196 00000 n 0000026482 00000 n 0000221512 00000 n 0000050955 00000 n 0000027150 00000 n 0000050933 00000 n 0000026646 00000 n 0000027130 00000 n 0000052010 00000 n 0000085489 00000 n 0000052241 00000 n 0000085467 00000 n 0000052030 00000 n 0000052222 00000 n 0000086544 00000 n 0000119317 00000 n 0000086780 00000 n 0000119295 00000 n 0000086564 00000 n 0000086760 00000 n 0000120372 00000 n 0000152637 00000 n 0000120602 00000 n 0000152615 00000 n 0000120392 00000 n 0000120583 00000 n 0000153692 00000 n 0000183960 00000 n 0000153926 00000 n 0000183938 00000 n 0000153712 00000 n 0000153906 00000 n 0000185015 00000 n 0000220312 00000 n 0000185252 00000 n 0000220290 00000 n 0000185035 00000 n 0000185232 00000 n 0000221367 00000 n 0000221387 00000 n 0000221493 00000 n 0000221671 00000 n 0000221759 00000 n trailer << /Size 61 /Root 3 0 R /Info 1 0 R >> startxref 222202 %%EOF oaklisp-1.3.7/doc/examples/000077500000000000000000000000001332762442600155605ustar00rootroot00000000000000oaklisp-1.3.7/doc/examples/bank-example.oak000066400000000000000000000145221332762442600206240ustar00rootroot00000000000000;; FILE "bank-example.oak" ;; IMPLEMNETS Bank account example from YASOS article ;; AUTHOR Ken Dickey ;; DATE 5 aUGUST 2004 ;; (define-predicate foo?) ;;-> (define-instance foo? operation) ;; (add-method (foo? (object) self) #f) (define-local-syntax (define-predicate name) `(block (define-instance ,name operation) (add-method (,name (object) self) #f))) ;; (add-predicate-true foo? type) ;;-> (add-method (foo? (type) self) #t) (define-local-syntax (add-predicate-true name type) `(add-method (,name (,type) self) #t)) ;; (define-type name slots supers) ;; -> (define-instance name TYPE slots (list super...)) (define-local-syntax (define-object-type name slots . supers) `(define-instance ,name type ',slots (list ,@supers))) (define-local-syntax (define-operation name) `(define-instance ,name operation)) (define-local-syntax (define-settable-operation name) `(define-instance ,name settable-operation)) ;; @@DEBUG ;; (define trace-expansion #t) ;; Test 'em out ;; (define-predicate person?) (define-object-type (name age SSN password) object) (add-predicate-true person? ) (add-method (initialize ( name age SSN password) self the-name the-age the-ssn the-password) (set! name the-name) (set! age the-age) (set! SSN the-ssn) (set! password the-password) self) (define-operation name) (define-settable-operation age) (define-operation SSN) (define-operation bad-password) (define-operation change-password) (add-method (name ( name) self) name) (add-method (age ( age) self) age) (add-method ((setter age) ( age) self new-age) (set! age new-age)) (add-method (SSN ( SSN password) self a-password) (if (equal? password a-password) SSN (bad-password self a-password))) (add-method (bad-password () self bogus-password) (let ( (message (format #f "bad password \"~a\"" bogus-password)) ) (format #t "~%~a" message) message)) (add-method (change-password ( password) self old-passwd new-passwd) (if (equal? old-passwd password) (block (set! password new-passwd) self) (bad-password self old-passwd))) ;; ;; Just a reverse list of balances (i.e. newest 1st, oldest last) (define-object-type (reverse-history) object) (add-method (initialize ( reverse-history) self initial-balance) (set! reverse-history (list initial-balance)) self) (define-instance history operation) (define-instance add operation) (add-method (history ( reverse-history) self) (reverse reverse-history)) (add-method (add ( reverse-history) self new-balance) (set! reverse-history (cons new-balance reverse-history)) new-balance) ;; (define-predicate bank-account?) (define-object-type (master-password p-i-n balance) ) (add-predicate-true bank-account? ) (add-method (initialize ( master-password p-i-n balance) self master-passwd initial-balance name age SSN PIN) (set! master-password master-passwd) (set! p-i-n PIN) (set! balance initial-balance) (^super initialize self initial-balance) (^super initialize self name age SSN p-i-n) self) (define-operation current-balance) ;;(define-operation add operation) @@@ defined above (define-operation withdraw) (define-settable-operation PIN) (add-method (current-balance ( balance p-i-n master-password) self passwd) (if (or (equal? passwd p-i-n) (equal? passwd master-password)) balance (bad-password self passwd))) (add-method (pin ( master-password p-i-n) self passwd) (if (equal? passwd master-password) p-i-n (bad-password self passwd))) (add-method ((setter pin) ( master-password p-i-n) self passwd new-pin) (if (equal? passwd master-password) (block (^super change-password self p-i-n new-pin) (set! p-i-n new-pin) self) (bad-password self passwd))) (add-method (change-password ( master-password p-i-n) self old-passwd new-passwd) (if (equal? old-passwd p-i-n) ((setter pin) self master-password new-passwd) (bad-password self old-passwd))) (add-method (bad-password () self bogus-pssword) (format #t "~%!!! CALL THE POLICE !!!") (error "!!! CALL THE POLICE !!!")) (add-method (history ( master-password p-i-n) self passwd) (if (or (equal? passwd p-i-n) (equal? passwd master-password)) (^super self history) (bad-password self passwd))) (add-method (add ( balance) self amount) ;; dumb checks elided (e.g. amount > 0) (set! balance (+ balance amount)) (^super add self balance) (format #t "~%new balance is ~a" balance) self) (add-method (withdraw ( balance p-i-n) self amount passwd) (cond ((not (equal? passwd p-i-n)) (bad-password self passwd)) ((> amount balance) (format #t "~%Error: can't withdraw more than you have!")) (else (set! balance (- balance amount)) (^super add self balance) (format #t "~%new balance is ~a" balance)))) (add-method (SSN () self passwd) (^super SSN self passwd)) ;; --- E O F --- ;; oaklisp-1.3.7/doc/examples/change.oak000066400000000000000000000050061332762442600175020ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Number of ways of giving change, Barak A. Pearlmutter, Fall 1989. ;;; This technique is covered in Concrete Mathamatics by Graham, Knuth ;;; and Patashnik, page 331. ;;; Helper functions: ;;; This computes the number of ways to choose m objects from a pool ;;; of n. The arguments are in the usual mathematical order. (define (choose n m) (let aux ((n n)(m1 m)(total 1)) (if (= m1 0) (let aux ((m m)(total2 1)) (if (= m 0) (/ total total2) (aux (- m 1) (* m total2)))) (aux (- n 1) (- m1 1) (* n total))))) ;;; These are the coefficients of the polynomial a(z) = (1-z^{10})^5 / ;;; (1-z)^2(1-z^2)(1-z^5)(1-z^{10}). The end should be zero padded to ;;; infinity, but the arguments given are always between 0 and 39 ;;; inclusive. (define (a i) (nth '(01 02 04 06 09 13 18 24 31 39 45 52 57 63 67 69 69 67 63 57 52 45 39 31 24 18 13 09 06 04 02 01 0 0 0 0 0 0 0 0) i)) ;;; This returns the number of ways to make change on c cents using ;;; coins of denomination 1,5,10,25,50. The math behind this is too ;;; hairy for a comment, as it requires lots of superscripts and sums ;;; and stuff. In effect, we end up casing on (c mod 50) with each ;;; case determining the coefficients of a fourth order polynomial of ;;; floor(c/50). (define (change c) (let* ((c5 (quotient c 5)) (q (quotient c5 10)) (r (modulo c5 10))) (+ (* (a r) (choose (+ q 4) 4)) (* (a (+ r 10)) (choose (+ q 3) 4)) (* (a (+ r 20)) (choose (+ q 2) 4)) (* (a (+ r 30)) (choose (+ q 1) 4))))) ;;; Test case, the number of ways of giving change for $1,000,000.00 ;;; (change 100000000) = 66666793333412666685000001. ;;; For $1,000,000,000,000,000,000.00, ;;; (change 100000000000000000000) ;;; 66666666666666666793333333333333333412666666666666666685000000000000000001 ;;; eof oaklisp-1.3.7/doc/examples/test-bank-example.oak000066400000000000000000000073201332762442600215770ustar00rootroot00000000000000;; FILE "test-bank-example.oak" ;; IMPLEMENTS Test code for "bank-example.oak" ;; AUTHOR Ken Dickey ;; DATE 5 August 2004 ;; (require 'init-testing) ;; (require 'bank-example) (define-constant test-name 'bank-example) (define-constant name-1 "Joe Tester") (define-constant SSN-1 "534-39-4834") (define-constant passwd-1 'joe-passwd) (define-constant age-1 23) (define-constant new-age-1 (+ 1 age-1)) (define-constant new-passwd-1 'new-joe-passwd) (define-constant new-passwd-2 'changed-joe-passwd) (define-constant bank-passwd 'secret-bank-password) (define-constant initial-balance 200) (define-constant (setup-thunk) (define person-1 (make name-1 age-1 SSN-1 passwd-1)) (define history-1 (make 37)) (define bank-account-1 (make bank-passwd initial-balance name-1 age-1 SSN-1 passwd-1)) ) (define-constant (teardown-thunk) #f ;; no action ) (setup-thunk) ;; define the records (create-test-suite unit-tests test-name setup-thunk teardown-thunk) (add-equal-test test-name name-1 (name person-1) "person name") (add-equal-test test-name SSN-1 (SSN person-1 passwd-1) "person SSN") (add-equal-test test-name age-1 (age person-1) "person age") (add-equal-test test-name new-age-1 (block (set! (age person-1) new-age-1) (age person-1)) "age setter") (add-equal-test test-name "bad password \"BOGUS\"" (SSN person-1 'bogus) "bad person password") (add-eq-test test-name new-passwd-1 (block (change-password person-1 passwd-1 new-passwd-1) new-passwd-1) "password update (always succeeds)") (add-equal-test test-name SSN-1 (SSN person-1 new-passwd-1) "SSN for password update") (add-eq-test test-name #t (person? person-1) "(person? )") (add-eq-test test-name #f (person? 3) "(person? 3)") (add-equal-test test-name '(37) (history history-1) "37") (add-equal-test test-name '(37 45) (block (add history-1 45) (history history-1)) "37 45") (add-equal-test test-name initial-balance (current-balance bank-account-1 passwd-1) "initial balance 1") (add-equal-test test-name initial-balance (current-balance bank-account-1 bank-passwd) "initial balance 2") (add-equal-test test-name SSN-1 (SSN bank-account-1 passwd-1) "bank SSN") (ensure-exception-raised test-name generic-fatal-error (SSN bank-account-1 'bogus) "bogus password") (add-equal-test test-name passwd-1 (PIN bank-account-1 bank-passwd) "PIN") (add-equal-test test-name 250 (block (add bank-account-1 50) (current-balance bank-account-1 bank-passwd)) "add to balance") (add-equal-test test-name 225 (block (withdraw bank-account-1 25 (pin bank-account-1 bank-passwd)) (current-balance bank-account-1 (PIN bank-account-1 bank-passwd))) "withdraw from balance") (add-eq-test test-name 'new-joe-pin (block ((setter PIN) bank-account-1 bank-passwd 'new-joe-pin) (PIN bank-account-1 bank-passwd)) "new PIN") (add-equal-test test-name new-passwd-2 (block (change-password bank-account-1 (PIN bank-account-1 bank-passwd) new-passwd-2) (PIN bank-account-1 bank-passwd)) "PIN after password change") ;; (run-all-tests unit-tests test-name) ;; --- E O F --- ;; oaklisp-1.3.7/doc/examples/unit-testing.oak000066400000000000000000000376761332762442600207310ustar00rootroot00000000000000;;; FILE "unit-testing.oak" ;;; IMPLEMENTS Unit Testing for Oaklisp ;;; AUTHOR Ken Dickey ;;; COPYRIGHT (c) 2004 by Kenneth A Dickey; All rights reserved. ;;; This is free software. Permission to use, copy, modify and ;;; distribute this software for non-profit purpose is granted without ;;; fee. It is provided "as is" without express or implied warranty. ;;; The author disclaims all warranties with regard to this software. ;;; In no event shall the author be liable for any damages. ;;;USAGE SYNOPSIS ;; Tests are first created and added to a global UNIT-TESTS "database". ;; Tests are arranged by UNIT-NAME (just a symbol naming a set of tests). ;; ;; SPECIAL FORMS: ;; ;; (CREATE-TEST-SUITE unit-tests test-suite-name setup-thunk teardown-thunk) ;; Creates a and associates it with test-suite-name. ;; The SETUP-THUNK is executed before the unit tests are run and ;; TEARDOWN-THUNK is executed afterward. ;; ;; (ADD-TEST unit-name expected-result form =? . message) ;; ;; (ADD-EQ-TEST unit-name expected-result form . message) ;; => (add-test unit-name expected-result form EQ? . message) ;; ;; (ADD-EQUAL-TEST unit-name expected-result form . message) ;; => (add-test unit-name expected-result form EQUAL? . message) ;; ;; (ENSURE-EXCEPTION-RAISED unit-name exception-type form . message) ;; -> test that the form signals a (subtype of) exception-type ;; ;; All forms are "thunkified" by being wrapped in zero argument lambdas. ;; Internal usage is: (=? expected (thunk)) ;; ;; ;; TESTING OPERATIONS: ;; ;; (RUN-ALL-TESTS unit-tests) => Run all suites of tests. ;; ;; (RUN-TESTS-FOR unit-tests 'whatever) => Run tests for unit named WHATEVER. ;; ;; (REMOVE-TESTS-FOR unit-tests 'whatever) => Remove tests for unit named WHATEVER. ;; ..handy before rereading a test defining file. ;; ;; If (VERBOSE? unit-tests) is false, only failures and exceptions are ;; reported, else successful tests are reported as well. ;; The default value is #f. Settable. ;; ;; If (BREAK-ON-ERROR? unit-tests) is true, errors and exceptions break ;; into the debugger, otherwise failures are just reported. ;; The default value is #f. Settable. ;; ;; Tests are typically written as separate files containing set-up & tear-down code. ;; @@QUESTION: Add optional set-up and tear-down forms to unit test suites? ;; ;; Note Also: ;; (RUN-TEST (make ) verbose-p break-on-error-p) ;; Run a single -- typically only used for debugging tests. ;; If no error, don't report unless VERBOSE-P ;; If error or exception, break into debugger if BREAK-ON-ERROR-P, else continue ;; ;; (make unit-name expected thunk =? . message) ;; Nota Bene: Currently all output goes to (current-output-port). ;; Rebind this port to redirect output elsewhere, ;;;====================================================================== ;;; @@FIXME: TABLE-WALK belongs in hash-table.oak ;;; Should define WALK for SEQUENCE as well... (define-instance table-walk operation) ;; proc takes 2 args: (lambda (key val) ...) (add-method (table-walk (generic-hash-table table count size) self proc) (dotimes (index size) (let ( (chain (nth table index)) ) (for-each (lambda (bucket) (proc (car bucket) (cdr bucket))) chain)))) (add-method (table-walk (eq-hash-table table count size) self proc) (dotimes (index size) (let ( (chain (nth table index)) ) (for-each (lambda (bucket) (proc (car bucket) (cdr bucket))) chain)))) ;;;====================================================================== ;;;A keeps track of number passed, ;;; failed (actual != expected), excepted (signalled exception) ;;; and reports on these statistics. (define-instance type '(num-passed num-failed num-excepted) (list object)) (define-instance zero-counters operation) (define-instance increment-failed operation) (define-instance increment-passed operation) (define-instance increment-excepted operation) (define-instance number-failed operation) (define-instance number-passed operation) (define-instance number-excepted operation) (define-instance display-results operation) (add-method (zero-counters ( num-passed num-failed num-excepted) self) (set! num-passed 0) (set! num-failed 0) (set! num-excepted 0) self) (add-method (initialize ( num-passed num-failed num-excepted) self) (zero-counters self)) (add-method (increment-failed ( num-failed) self) (set! num-failed (+ 1 num-failed))) (add-method (increment-passed ( num-passed) self) (set! num-passed (+ 1 num-passed))) (add-method (increment-excepted ( num-excepted) self) (set! num-excepted (+ 1 num-excepted))) (add-method (number-failed ( num-failed) self) num-failed) (add-method (number-passed ( num-passed) self) num-passed) (add-method (number-excepted ( num-excepted) self) num-excepted) (add-method (display-results ( num-passed num-failed num-excepted) self port) (format port "~%TOTAL PASSED: ~D" num-passed) (format port "~%TOTAL FAILED: ~D" num-failed) (format port "~%TOTAL EXCEPTIONS: ~D~%~%" num-excepted) ) ;;;====================================================================== ;;;A is an UNnamed container of unit tests, setup and ;;; teardown code. Tests are a reversed list of ;;; instances (see below). A instance maintains the (name X ;;; unit-test-suite) bindings. (define-instance run-test operation) (define-instance run-all-tests operation) (define-instance run-tests-for operation) (define-instance type '(test-list setup-thunk teardown-thunk) (list object)) (add-method (initialize ( test-list setup-thunk teardown-thunk) self setup teardown) (set! test-list '()) (set! setup-thunk setup) (set! teardown-thunk teardown) self) (define-instance add-unit-test operation) (add-method (add-unit-test ( test-list) self unit-test) (unless (is-a? unit-test ) (error "(ADD-UNIT-TEST ) not a : ~a" unit-test)) (set! test-list (cons unit-test test-list))) (define-instance remove-tests-for operation) (add-method (remove-tests-for ( test-list) self) (set! test-list '())) (add-method (run-all-tests ( test-list setup-thunk teardown-thunk) self test-name result-counter verbose-p break-on-error-p) (if (null? test-list) ((if break-on-error-p error warn) "~&HUH? No tests found for ~A" test-name) (block (setup-thunk) (format #t "~%===> Starting Tests for ~a" test-name) (for-each (lambda (test) (run-test test result-counter verbose-p break-on-error-p)) (reverse test-list)) (format #t "~&===> Completed Tests for ~a~%" test-name) (teardown-thunk)) ) ) ;;;====================================================================== ;;;A contains and runs named test suites (define-instance type '(verbose-p break-on-error-p) (list eq-hash-table)) ; really a symbol-table (add-method (initialize ( verbose-p break-on-error-p) self) (set! verbose-p #f) (set! break-on-error-p #f) (^super eq-hash-table initialize self)) ;; @@FIXME: This should not be required. Why not simply inherited? (add-method ((setter table-entry) () self key value) (^super eq-hash-table (setter table-entry) self key value)) (define-instance verbose? settable-operation) (define-instance break-on-error? settable-operation) (add-method (verbose? ( verbose-p) self) verbose-p) (add-method ((setter verbose?) ( verbose-p) self bool) (set! verbose-p bool)) (add-method (break-on-error? ( break-on-error-p) self) break-on-error-p) (add-method ((setter break-on-error?) ( break-on-error-p) self bool) (set! break-on-error-p bool)) (define-instance create-test-suite operation) (define default-setup-thunk (lambda () #f)) (define default-teardown-thunk default-setup-thunk) (add-method (create-test-suite () self test-suite-name setup teardown) (let ( (test-suite (make setup teardown)) ) (set! (table-entry self test-suite-name) test-suite) test-suite ) ) (add-method (add-unit-test () self unit-name test-case) (unless (is-a? test-case ) (error "(ADD-UNIT-TEST name ) requires a , got: ~a" test-case)) (cond ((present? self unit-name) => (lambda (probe) (add-unit-test (cdr probe) test-case))) (else (error "Unit ~a not found. Try (CREATE-TEST-SUITE UNIT-TESTS ~a setup-thunk teardown-thunk)" unit-name unit-name))) test-case ) (define-instance remove-tests-for operation) ;; @@FIXME: no way to remove table entries ?!? (add-method (remove-tests-for () self unit-name) (cond ((present? self unit-name) => (lambda (probe) (remove-tests-for (cdr probe)))) (else (error "Unit ~a not found. Try (CREATE-TEST-SUITE UNIT-TESTS ~a setup-thunk teardown-thunk)" unit-name unit-name))) ) remove ;;; UNIT-TESTS global (define-constant unit-tests (make )) ;;;====================================================================== ;;; A is a single test (define-instance type '(expected thunk compare? message) (list object)) (add-method (initialize ( expected thunk compare? message) self expected-result the-thunk comparison-op? msg) (set! expected expected-result) (set! thunk the-thunk) (set! compare? comparison-op?) (set! message msg) self) (define-syntax (add-test unit-name expect form equivalent? . message) (let ( (msg (if (pair? message) (car message) "")) ) `(add-unit-test unit-tests ,unit-name (make ,expect (lambda () ,form) ,equivalent? ,msg) ) ) ) (define-syntax (add-eq-test unit-name expect form . message) `(add-test ,unit-name ,expect ,form eq? . ,message)) (define-syntax (add-equal-test unit-name expect form . message) `(add-test ,unit-name ,expect ,form equal? . ,message)) (define-syntax (ensure-exception-raised unit-name exception-type form . message) (let ( (msg (if (pair? message) (car message) "")) ) `(add-unit-test unit-tests ,unit-name (make ,exception-type (lambda () ,form) ,msg) ) ) ) (define-instance type '() (list )) (add-method (initialize () self exception-type thunk message) (unless (subtype? exception-type condition) (error "An requires an exception type: ~a" exception-type)) (^super initialize self exception-type thunk subtype? message) self) (define (warn format-string . format-args) ;; like WARNING, but without the extra "Warning"" line (format standard-error format-string . format-args)) ;;;====================================================================== ;;; RUNNING TESTS ;; Run a ;; If no error, don't report unless VERBOSE-P ;; If error or exception, break into debugger if BREAK-ON-ERROR-P, else continue ;; Result-counter is-a (add-method (run-test ( expected thunk compare? message) self result-counter verbose-p break-on-error-p) (let* ( (caught-exception #f) (actual (bind-error-handler (general-error ;; catch every type of error (lambda (err-obj) (set! caught-exception err-obj) (format #t "~&*** EXCEPTION: ~a -- ~a" err-obj message) (when verbose-p (describe err-obj)) #f)) (thunk))) ) (cond (caught-exception => (lambda (err-obj) (increment-excepted result-counter) (if break-on-error-p (invoke-debugger err-obj) err-obj)) ;; return err-obj if not breaking ) ((compare? actual expected) (increment-passed result-counter) (if verbose-p (format #t "~&PASSED: Expected: ~a Got: ~a -- ~a" expected actual message) #t) ;; compare => #t ) (else (increment-failed result-counter) ((if break-on-error-p error warn) "~&*** FAILED: Expected ~a Got ~a -- ~a" expected actual message))) ) ) (add-method (run-tests-for ( verbose-p break-on-error-p) self unit-name) (let ( (probe (present? self unit-name)) (result-counter (make )) ) (if probe (block (run-all-tests (cdr probe) unit-name result-counter verbose-p break-on-error-p) (display-results result-counter #t)) ((if break-on-error-p error warn) "~&HUH? No tests found for ~A" unit-name))) ) (add-method (run-all-tests ( verbose-p break-on-error-p) self) (let ( (result-counter (make )) ) (table-walk self (lambda (unit-name test-suite) (if test-suite (run-all-tests test-suite unit-name result-counter verbose-p break-on-error-p) ((if break-on-error-p error warn) "~&HUH? No tests found for ~A" unit-name)))) (display-results result-counter #t) ) ) (define-instance %run-exception-test operation) ;; NB: Runs in (fluid current-locale) which is probably USER-LOCALE (add-method (run-test () self result-counter verbose-p break-on-error-p) ;; helper required for access to internals (%run-exception-test self result-counter verbose-p break-on-error-p)) (add-method (%run-exception-test ( expected thunk compare? message) self result-counter verbose-p break-on-error-p) (let* ( (caught-exception #f) (actual (bind-error-handler (general-error ;; catch every type of error (lambda (err-obj) (set! caught-exception err-obj) err-obj)) (thunk))) ) (cond ((compare? (get-type actual) expected) (increment-passed result-counter) (if verbose-p (format #t "~&PASSED: Expected: ~a Got: ~a of type ~a -- ~a" expected actual (get-type actual) message) #t) ;; compare => #t ) (caught-exception => (lambda (err-obj) (increment-excepted result-counter) (format #t "~&*** UNEXPECTED EXCEPTION: got ~a of type ~a expected ~a -- ~a" err-obj (get-type err-obj) expected message) (when verbose-p (describe err-obj)) (if break-on-error-p (invoke-debugger err-obj) err-obj)) ;; return err-obj if not breaking ) (else (increment-failed result-counter) ((if break-on-error-p error warn) "~&*** FAILED: Expected exception of type ~a Got value: ~a -- ~a" expected actual message))) ) ) ;;; unit-testing.oak ends here oaklisp-1.3.7/doc/lang/000077500000000000000000000000001332762442600146635ustar00rootroot00000000000000oaklisp-1.3.7/doc/lang/control.tex000066400000000000000000000102241332762442600170640ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Control} \label{control} Nonlocal control constructs like \df{call/cc} are described in section \ref{sec:nonlocal}. \discuss{Since control structures are not a very interesting issue, we followed existing Lisp dialects closely when designing this aspect of Oaklisp. Every control structure in this chapter does just what you would expect.} \section{Simple Constructs} These forms are compatible with both T \citep[chapter 5]{T-MAN} and the Scheme standard \citep{R3RS}. \sform{cond}{\dt clauses} \doc{The \emph{clauses} are run through sequentially until one is selected. Each clause can be of four possible forms. \emph{\lpar test \dt body\rpar} evaluates \emph{body} if \emph{test} is true. \emph{\lpar\df{else} \dt body\rpar} always evaluates \emph{body}, and if present must be the last clause. \emph{\lpar test \texttt{=>} operation\rpar} calls \emph{operation} on the result of \emph{test} if the result of evaluating \emph{test} was not \emph{false}. \emph{\lpar test\rpar} is equivalent to \emph{\lpar test \texttt{=> identity}\rpar}.} \sform{if}{test consequent $[$alternate$]$} \pr{not}{object} \sform{and}{\dt tests} \sform{or}{\dt tests} \sform{iterate}{variable specs \dt body} \sform{block}{\dt body} \doc{Evaluates the forms of \emph{body} sequentially, returning (tail recursively) the value of the last one.} \sform{block0}{form \dt body} \doc{\meq{}{(let ((x \emph{form})) (block \dt \emph{body}) x)}} \sform{dotimes}{\lpar variable number $[$rform$]$\rpar \dt body} \doc{\meq{}{(let ((x (lambda (\emph{variable}) \dt \emph{body}))) (map x (iota \emph{number})) \emph{rform})}} \sform{dolist}{\lpar variable list $[$rform$]$\rpar \dt body} \doc{\meq{}{(let ((x (lambda (\emph{variable}) \dt \emph{body}))) (map x \emph{list}) \emph{rform})}} \sform{dolist-count}{\lpar variable list count-var\rpar \dt body} \doc{Just like \texttt{dolist} except that \emph{count-var} gives the count of the current element in the list, starting at zero.} \sform{while}{condition \dt body} \doc{\meq{}{(let ((q (lambda () \emph{test}))(x (lambda () \dt \emph{body}))) (iterate aux () (cond ((\emph{q}) (\emph{x}) (aux)))))}} \sform{unless}{test \dt body} \doc{\meq{}{(cond ((not \emph{test}) \dt \emph{body}))}} \sform{do}{\lpar \lpar var initial step \rpar \ldots \rpar \lpar termination-test \dt termination-body \rpar \dt body} \doc{\meq{}{(iterate aux ((\emph{var initial}) \ldots) (cond (\emph{termination-test} \dt \emph{termination-body}) (else (block \dt \emph{body}) (aux \emph{step} \ldots))))}} \section{Mapping Constructs} \label{sec:controlmap} Although these can be used as control constructs, they can also be thought of as ways to manipulate data structures. \df{map} maps an operation over some sequences generating a sequence of results. \df{for-each}, which doesn't save the results, is used when the operation is called for effect only. For all of these, the order of evaluation is undefined; the system may apply the operation to the various elements of the sequence in any order it desires. \op{map}{operation \dt sequences} \op{mapcdr}{operation \dt lists} \doc{Applies \emph{operation} to successive ``cdrs'' rather than to elements, and returns a list of the returned values.} \op{for-each}{operation \dt sequences} \op{for-each-cdr}{operation \dt lists} \doc{Like \df{mapcdr} but for effect only.} \op{map\protect\bang}{operation \dt sequences} \doc{Like \df{map}, except that the retuned values are destructively placed into the successive storage locations of the first \emph{sequence}.} oaklisp-1.3.7/doc/lang/cover.tex000066400000000000000000000026501332762442600165260ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \begin{titlepage} \begin{center} \vspace*{1in} \Huge The \\ Oaklisp Language Manual \\ \vspace{.5in} \large \today \\ \vspace{.25in} % \Huge DRAFT \\ \vspace{.5in} \Large Barak A. Pearlmutter \\ \large Dept. of Computer Science\\ Maynooth University\\ Co.\ Kildare\\ Ireland\\ \url{barak+oaklisp@pearlmutter.net} \vspace{.5in} \Large Kevin J. Lang \\ \large Yahoo!\ Research \\ \url{langk@yahoo-inc.com} \vfill % \vspace{0.25in} % The information in this document is subject to change at any time. \end{center} \end{titlepage} \thispagestyle{empty} \vspace*{6in} \normalsize \noindent Copyright \copyright 1985, 1986, 1987, 1988, 1989, 1991. by Barak A. Pearlmutter and Kevin J. Lang. \newpage \pagenumbering{roman} oaklisp-1.3.7/doc/lang/dynamic.tex000066400000000000000000000303021332762442600170270ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Dynamic State} \label{dynamic} As Steele and Sussman pointed out in \emph{The Art of the Interpreter}, dynamic scoping provides the most natural decomposition of state in certain situations. This chapter describes the Oaklisp facilities for creating and manipulating state that has dynamic extent. \section{Fluid Variables} \discuss{To avoid the problems that arise when fluid variables are integrated with the lexical environment, Oaklisp fluid variables have been placed in a completely separate dynamic environment. Fluid variables don't even look like lexical variables, since they can only be referenced using the \df{fluid} special form. The mechanism for creating fluid variables is \df{bind}, which syntactically resembles \df{let}.} \sform{bind}{\lpar\lpar\texttt{fluid} var$_1$\rpar val$_1$\rpar\ldots\lpar\lpar\texttt{fluid} var$_n$ val$_n$\rpar\dt body} \doc{Evaluates \emph{body} in a dynamic environment where the $n$ symbols are bound to the $n$ values.} \sform{fluid}{symbol} \doc{Returns the value of the fluid variable \emph{symbol}. Even though \df{fluid} is a special form, it is settable, so \texttt{(set! (fluid \emph{symbol}) \emph{value})} changes the value of the fluid variable \emph{symbol} to \emph{value}. The reader will read \texttt{foo} preceded by a control-v character as \texttt{(fluid foo)}; this was motivated by the fact that control-v prints as $\bullet$ on both Macintosh$^{\mbox{tm}}$ and Symbolics computers.} \section{Non-local Exits} \label{sec:nonlocal} \discuss{Most Lisp dialects include some sort of \df{catch} facility for performing non-local exits. Oaklisp provides two facilities at varying points on the generality vs.\ cost spectrum.} \op{call-with-current-continuation}{operation} \doc{Calls \emph{operation} with one argument, the current continuation. The synonym \df{call/cc} is provided for those who feel that \df{call-with-current-continuation} is excessively verbose.} \index{\texttt{call/cc}|see \texttt{call-with-current-continuation}} \sform{catch}{variable \dt body} \doc{\emph{variable} is lexically bound to an escape operation that may be called from anywhere within \emph{body}'s dynamic extent. If \emph{variable} is not called, \df{catch} yields the value of \emph{body}. This is implemented in such a way that \emph{body} is called tail recursively.} \sform{native-catch}{variable \dt body} \doc{\emph{variable} is lexically bound to an escape tag that may be thrown from anywhere within \emph{body}'s dynamic extent. If \emph{variable} is not thrown to, \df{native-catch} yields the value of \emph{body}. This is implemented in such a way that \emph{body} is called tail recursively.} \op{throw}{tag value} \doc{Causes execution to resume at the point specified by \emph{tag}. This point is always a \df{native-catch} expression, which immediately yields \emph{value}. Cleanup actions specified with \df{wind-protect} are performed while the stack is being unwound.} \sform{wind-protect}{before form after} \doc{\macdef{} {(dynamic-wind (lambda () \emph{before}) (lambda () \emph{form}) (lambda () \emph{after}))}} \sform{funny-wind-protect}{before abnormal-before form after abnormal-after} \doc{A \df{wind-protect} evaluates \emph{before}, \emph{form}, and \emph{after}, returning the value of \emph{form}. If \emph{form} is entered or exited abnormally (due to \df{call/cc} or \df{catch}) the \emph{before} and \emph{after} forms, respectively, are automatically executed. \df{funny-wind-protect} is the same except that different guard forms are evaluated depending on whether the dynamic context is entered or exited normally or abnormally.} \op{dynamic-wind}{before-op main-op after-op} \doc{Calls the operation \emph{before-op}, calls the operation \emph{main-op}, calls the operation \emph{after-op}, and returns the value returned by \emph{main-op}. If \emph{main-op} is exited abnormally, \emph{after-op} is called automatically on the way out. Similarly, if \emph{main-op} is entered abnormally, \emph{before-op} is called automatically on the way in.} % \sform{unwind-protect}{form \dt unwind-forms} % \doc{Acts like \df{block}, except that the \emph{unwind-forms} are % guaranteed to execute even if a throw occurs out of \emph{form}. This % construct is implemented tail-recursively, and there is no restriction on % throws from the \emph{unwind-forms}.} % % \sform{unwind-protect0}{form \dt unwind-forms} % \doc{Acts like \df{unwind-protect}, except that it yields % the value of \emph{form}, and does not permit a tail-recursive % implementation.} \section{Error Resolution} \label{errors} \discuss{\textbf{Note:} the error system is not stable, and will probably evolve towards the Common Lisp error system, which has a number of good ideas.} Programs interact with the error system in three ways: they signal various sorts of errors (typically throwing the user into the debugger), they provide restart handlers that the user can invoke (using \df{ret}) to escape from the debugger, and they provide handlers to be invoked when various types of errors occur. \subsection{Signaling Errors} Errors are signalled using the following operations. \op{warning}{format-string \dt format-args} \doc{Prints out the message specified by \emph{format-string} and \emph{format-args} and continues execution.} \op{error}{format-string \dt format-args} \doc{This signals \df{generic-fatal-error}, which normally has the effect of printing out the error message specified by \emph{format-string} and \emph{format-args} and dumping the user into a subordinate read-eval-print loop.} \op{cerror}{continue-string format-string \dt format-args} \doc{This signals \df{generic-proceedable-error}, which normally has the effect of printing the error message specified by \emph{format-string} and \emph{format-args} and dumping the user into a subordinate read-eval-print loop in which there is a restart handler that continues the computation by returning a user specified value from \df{cerror}. \emph{Continue-string} is the text associated with this handler when it is listed as an option by the subordinate evaluator.} \subsection{Restart Handlers} There are two special forms that programs can use to define more complex restart handlers than just returning from the call to \df{cerror}. The simpler of the two is \df{error-return}, which is similar to \df{catch} in that it can be forced to return a value before its body has been fully evaluated. This form is used in the definition of \df{cerror}. \mc{error-return}{string \dt body} \doc{Evaluates \emph{body} in a dynamic context in which a restart handler is available that can force the form to return. The handler is identified by \emph{string} in the list of choices the debugger presents to the user. If the handler is invoked by calling \df{ret} with an argument in addition to the handler number, the \df{error-return} form returns this value; otherwise it returns \df{\#f}. If no error occurs, \df{error-return} yields the value of \emph{body}.} The second special form acts just like a \df{let} unless an error occurs, in which case an error handler is available that re-executes the body of the form after (possibly) rebinding the lexical variables specified at the top of the form. \mc{error-restart}{string \texttt{((}var$_0$ val$_0$\texttt{)}\ldots\texttt{)} \dt body} \doc{Evaluates \emph{body} in a dynamic context in which a restart handler is available that can force the re-evaluation of the body with new values for \emph{var$_0$ \ldots}. These new values are specified as additional arguments to \df{ret}. If there are not enough arguments to \df{ret}, the remaining variables are left at their previous values. The handler is identified by \emph{string} in the list of choices printed by the debugger. If no error occurs, \df{error-restart} yields the value of \emph{body}.} \subsection{Error Handlers} Oaklisp uses its type system to govern the resolution of errors. The top-level environment contains a hierarchy of types which characterizes every error that can occur. When an error condition arises, the appropriate type is instantiated, and an error resolution operation is performed on the new object. This operation is performed by a method that deals with the error in a manner consistent with its type. There are clearly better ways of dealing with some errors than invoking the debugger. A variety of methods have been written to deal with the most common errors. For example, there are \df{proceed} methods for simple arithmetic traps which substitute a program specified value for that of the failed computation. The use of \df{proceed} and other error resolution operations is prescribed by the following special form. \mc{bind-error-handler} {\lpar\lpar err$_1$ op$_1$\rpar\ldots\lpar err$_n$ op$_n$\rpar\rpar\dt body} \doc{Evaluates \emph{body} in a dynamic environment where the $n$ error types have been associated with the $n$ error resolution operations. When an error occurs, the current list of condition bindings is searched to find an operation to perform. An operation associated with a supertype of the actual error type will be selected if it is encountered on the list. If a suitable operation cannot be found, the default operation \df{invoke-debugger} is performed.} \subsection{Operations on Errors} There are a number of operations that can be invoked on error objects in error handlers. \op{report}{error stream} \doc{Instructs \emph{error} to print a descriptive message to \emph{stream}.} \op{invoke-debugger}{error} \doc{This is the default error resolution operation. It is performed on all errors unless it is explicitly overridden.} \op{proceed}{error \dt values} \doc{Attempts to continue from the error, eg.\ a file system error would retry the failed operation. The \emph{values} have semantics determined by the precise type of error. For instance, continuing a failed attempt to open a file with a value might instruct the system to try a new filename.} \op{remember-context}{error after-operation} \doc{Instructs \emph{error} to salt away the current continuation and then call \emph{after-operation}, which should never return.} \op{invoke-in-error-context}{error operation} \doc{Invokes \emph{operation} on \emph{error} after moving back to the context of the error if its been salted away.} \subsection{Error Types} There are a plethora of error types defined in Oaklisp. \ty{general-error} \doc{This is the top of the error type hierarchy. An operation defined for \df{general-error} can be used to resolve any error.} \ty{generic-fatal-error} \doc{Signaled by \df{error}.} \makin{proceedable-error}{message} \doc{Uses \emph{message} in composing its report.} \ty{generic-proceedable-error} \doc{Signaled by \df{cerror}.} \ty{error-opening} \doc{Various subtypes of this are signaled when various types of error while opening files occur.} \ty{read-error} \doc{Subtypes of this are signaled when \df{read} sees malformed or truncated input.} \ty{unexpected-eof} \doc{This subtype of \df{read-error} is signaled when the reader comes to the end of a file unexpectedly.} \discuss{\textbf{Work for idle hands:} Many types of errors have yet to be implemented. For example, domain errors in arithmetic functions generally call \df{error} rather than signaling some special variety of error, template mismatch in the \df{destructure*} macro should signal some special type of error rather than calling \df{cerror}, etc. Basically, most calls to \df{error} and \df{cerror} in system level code should be replaced with \df{signal}, and appropriate ideosyncratic types of errors should be defined, thereby giving users more precise control over what types of system level errors to handle.} oaklisp-1.3.7/doc/lang/intro.tex000066400000000000000000000221611332762442600165420ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Introduction} \emph{This is the introduction to the original Oaklisp proposal which we wrote in January 1985. Although the core language hasn't changed since then, some of the periperal ideas in the proposal have been modified or abandoned.} One of the most interesting language ideas to emerge from the 1970's was the object-oriented programming model. Although this model has been incorporated to some extent in a number of recent Lisps, these implementations have not had the generality and power that characterize a true object-based system like Smalltalk. The most significant trend in the contemporary Lisp world is the move toward lexical scoping, which was initiated by Steele and Sussman with their Scheme papers and continued most faithfully by the designers of T. The major goal of Oaklisp was to combine the ideas of Smalltalk and Scheme in a simple but expressive language that inherits their exemplary properties of modularity and consistency. Unlike T, which adds an object-based capability to Scheme by constructing objects out of closures, Oaklisp builds a lexically scoped Lisp system on top of a general message-passing system that allows for full inheritance of methods from multiple superclasses. The first design choice for Oaklisp was the extent to which we should push the object-based model. We agreed with the designers of ADA that the packaging of state and procedures into new types can be a significant modularity tool for users of the language. We also agreed with the designers of the Lisp Machine that single-user Lisp systems should be open, with no clear line between system and user code. Therefore, both to allow the system implementors to use powerful user-level tools and to allow users to easily manipulate the system, we decided that absolutely everything should be a full-fledged object in Oaklisp. There is no reason why user-defined types should be any different from the types used to build the system. Oaklisp stands in marked contrast to other object-oriented Lisp systems which have magic data types that are not part of the user-level type hierarchy.\footnote{For example, ZetaLisp flavors are not themselves instances of flavors.} Our current Oaklisp implementation takes this idea to such an extreme that there are no magic objects anywhere in the system, no matter how deep you go. This meant not only that the vast majority of the system could be written in Lisp, but that the construction of the debugger and garbage collector was greatly simplified. As a corollary to the previous decision, we decided that all computation should be performed by methods that are invoked after a search up the type hierarchy. Functions can be thought of as methods attached to the top of the hierarchy, since they are methods that can perform an operation on any type. This leads to the interesting result that after a function has been defined, a new method can be added to take over that operation for a special case. The power of the method-invocation model of computation is derived from the generality of the inheritance mechanism.\footnote{It is primarily the lack of inheritance that weakens the T object facility.} A simple type-tree would have provided Oaklisp with the ability to define shadowable system-wide defaults for \df{print} and so forth. However, we felt that the mixin concept of flavors was such a valuable tool for factoring object functionality that inheritance from multiple supertypes was essential. This idea of inheriting from several mixins, each of which knows how to do something and encapsulates its own state, led to the following inheritance rule: a new type inherits all of the methods of its supertypes, but methods for the new type cannot refer to instance variables from the supertypes (even though those variables do exist in the new composite object.) This does not cause problems, because when operations for the supertypes are passed to the object, the methods which handle them \emph{can} reference the appropriate instance variables. Since the names of instance variables are never inherited, conflicts cannot occur between names in the various supertypes. This treatment of instance variable names was also motivated by our decision to follow Scheme and make Oaklisp lexically scoped. Oaklisp not only benefits from the conceptual correctness which results from being able to close methods at compile time, but takes full advantage of tail-recursion and the lack of search associated with variable references. Once again, we decided to carry a principle to its extreme, and say that \emph{all} variable references must be resolved at compile time, which results in both a simpler compiler and faster execution of code. Although this decision sounds intolerable for users, it actually represents a shift of functionality from the compiler to the error-handling system and user-interface, both of which we decided to make unusually powerful in our Oaklisp implementation. Another principle which we borrowed from Scheme is anonymity. The lack of coupling between names and objects gives the system a degree of modularity and flexibility that would otherwise be difficult to achieve. For example, if a type is redefined, old instances of that type will still have pointers to the old type descriptor. Operations on both kinds of object will be handled by the correct methods, and when the last instance of the old type goes away, the old type descriptor will also be garbage collected. The portion of Oaklisp that has been described so far can be considered its kernel. The portion that follows can mostly be implemented as methods at the user level. It is interesting to note that the dynamic variables and mutable binding contours which are described below can be built on top of a bare lexical Lisp kernel. However, the Oaklisp kernel is not a usable system, since we intentionally stripped it down knowing that the lost facilities would be replaced at a higher level. The first addition is a mutable binding contour facility based the locale structures of T.\footnote{In place of locales we could have implemented a simple top-level binding environment.} Oaklisp locales are objects that accept messages which install and look up names. Locales can have multiple superiors which are recursively searched if a name can't be found. Unlike T locales, Oaklisp locales are not associated with textual binding contours that can interact with \df{let}'s and generate ambiguities. Moreover, a reference to an undefined name creates an error, which means that forward references to uninstalled names are impossible. The second addition is a dynamic scoping facility that knows how to deal with \df{catch} and \df{throw}. The new dynamic variables are entirely separate from the static variables, and are always textually distinguishible from static variables to avoid confusion. Dynamic variables use deep-binding in our implementation so that they will behave correctly when there is more than one process. The implementation of dynamic variables is an issue since we decided to follow the Lisp Machine and implement light-weight processes that share the same address space to expedite data sharing and fast context switching. Our final design decision was also influenced by the Lisp Machine. Error handling in Oaklisp is designed to take maximum advantage of the type inheritance mechanism that is built into the language. A complete hierarchy exists of all the types of system errors. When an error occurs, an instance of that error type is created, and a message is sent to the error object asking for a handler to take control. The default message causes the debugger to be invoked. However, each process has some dynamic state which can be modified with the \df{condition-bind} construct to cause a different handler to be invoked when a particular error occurs at a particular time. This mechanism brings the full power of the language to bear on the problem of resolving errors, and is the reason that we felt we could make the language itself so strict with respect to variable references. Since our implementation of Oaklisp runs on the Lisp Machine and the Macintosh, it was no problem to delegate authority for reporting and resolving unbound variable references to the user-interface, which uses menus and dialog boxes to determine the user's intentions. If the user sets a switch that indicates that he wants unbound names to be automatically installed in the innermost locale, then the interface merely creates an error-handler to perform that function, and the user is not bothered again. oaklisp-1.3.7/doc/lang/io.tex000066400000000000000000000271741332762442600160270ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Input and Output} \section{Streams and Files} Streams are the tokens through which interaction with the outside world occurs. Although streams are primarily used for reading and writing to files, they have found a number of internal uses. \ty{stream} \doc{The supertype of all streams.} \ty{input-stream} \doc{This is an abstract type. Instantiable subtypes must define methods for the \df{really-read-char} operation.} \op{read-char}{input-stream} \doc{Return a character, or \df{the-eof-token} if we've already read the last character in the stream.} \op{unread-char}{input-stream character} \doc{Puts \emph{character} back into \emph{input-stream}. One can only put one character back, and it must be the last character read.} \op{peek-char}{input-stream} \doc{Equivalent to \texttt{(let ((c (read-char \emph{input-stream}))) (unread-char \emph{input-stream} c) c)}.} \ob{the-eof-token} \doc{This distinguished object is returned to indicate that one has read past the end of the file.} \ty{output-stream} \doc{This is an abstract type. Instantiable subtypes must define methods for the \df{write-char} operation.} \op{write-char}{output-stream character} \op{newline}{output-stream} \doc{Outputs a carriage return to \emph{output-stream}.} \op{freshline}{output-stream} \doc{Ensures that \emph{output-stream} is at the beginning of a line.} \op{flush}{output-stream} \doc{Flushes any buffered output.} \op{interactive?}{stream} \doc{Returns true if and only if \emph{stream} is connected to the user. This is used to check if an end of file condition on the control stream is really an end of file or if the user just typed control-D.} \so{position}{stream} \doc{Returns the position we are at within \emph{stream}. By setting this, one can get back to a previous position.} \op{write-string}{string output-stream} \doc{Writes the characters of \emph{string} to \emph{stream}.} \mc{with-open-file}{\lpar variable filename \dt options\rpar \dt body} \doc{Binds \emph{variable} to a stream which is connected to the file with the name \emph{filename}. \emph{Options} is not evaluated, and describes how \emph{filename} should be opened. Possible symbols include \df{in} for input, \df{out} for output, and \df{append} for output with position set to the end of the file. The \df{ugly} option can be added to either \df{out} or \df{append} if the user doesn't mind poor formating, as in files meant to be read only by other programs. The opened stream will be closed when the \df{with-open-file} is exited, even upon abnormal exit. \textbf{Note:} the stream is not reopened upon abnormal entry, but this may be changed in future versions of the system.} \mc{with-input-from-string}{\lpar variable sequence\rpar \dt body} \doc{Binds \emph{variable} to an input stream whose contents are the characters of \emph{sequence}. Although \emph{sequence} is usually a string, this will work correctly for any sequence type.} \makin{string-output-stream}{} \doc{These save all their output and return it as a string in response to the \dfcoer{string} operation.} \section{Reading} Oaklisp has an industrial strength reader, replete with nonterminating macro characters and descriptive error messages. List syntax is not described below; read some other lisp manual. Our reader is modeled after the Common Lisp reader, so we emphasize differences with the Common Lisp reader below. \op{read}{input-stream} \doc{Returns a lisp object read from \emph{stream}. This is sensitive to a large number of factors detailed below.} \ob{standard-read-table} \doc{This holds the read table for usual lisp syntax. The \df{nth} operation can be used to get and set elements of read tables, which are indexed by characters. Potential entries are \df{whitespace}, \df{constituent}, \df{single-escape}, \df{illegal}, \emph{\lpar\df{terminating-macro} \dt operation\rpar}, and \emph{\lpar\df{nonterminating-macro} \dt operation\rpar}.} \op{skip-whitespace}{input-stream} \doc{Reads characters from \emph{input-stream} until the next character is not whitespace.} The reader is not sensitive to the case of macro characters. \op{define-macro-char}{character operation} \doc{Defines \emph{character} to be a reader macro in \df{standard-read-table}. When \emph{character} is encountered by the reader, \emph{operation} is called with two arguments, the stream and the character that was read.} \op{define-nonterminating-macro-char}{character operation} \doc{Just like \df{define-macro-char} except that the macro is not triggered if \emph{character} is read inside a token.} There are a number of ``quotelike'' macro characters present for the convenience of the user. \begin{center} \begin{tabular}{cl} \emph{macro character} & \emph{symbol} \\\hline \texttt{'} & \df{quote} \\ \texttt{`} & \df{quasiquote} \\ \texttt{control-v} & \df{fluid} \\ \texttt{control-y} & \df{coercer} \\ \texttt{,@} & \df{unquote-splicing} \\ \texttt{,} & \df{unquote} \end{tabular} \end{center} \op{define-quotelike-macro-char}{character object} \begin{docenv} Makes \emph{character} a terminating macro which returns a list of \emph{object} and the next thing read. This also arranges for the printer to print using analogous syntax. For instance, the quote syntax is defined with the line \texttt{(define-quotelike-macro-char \texttt{\#'} 'quote)} in the system internals. \end{docenv} \ob{the-unread-object} \doc{When a reader macro returns this, the reader takes it to mean that nothing at all was read. For instance, the reader macro for \texttt{;} reads the remainder of the line and returns this.} The character \texttt{[} is used to read lists in the same way that \texttt{(} is, except that \texttt{[} must be matched by a \texttt{]}. This is mostly for compatiblity with code written at the University of Indiana. Since there are no packages in Oaklisp, the \texttt{:} character is treated like any other constituent. Most of the Common Lisp hash reader macros are supported. For instance, the character object representing \texttt{a} is read \texttt{\#$\backslash$a}. Many special characters have long names, such as \texttt{\#$\backslash$space}. \op{define-hash-macro-char}{character operation} \doc{Defines \emph{character} to be a hash reader macro character. \emph{Operation} should take three arguments: a stream, the character, and the numeric argument that was between the hash and the character, \df{\#f} if none was passed.} There are many hash reader macro characters, including \df{\#o}, \df{\#x}, \df{\#d}, \df{\#b} and \df{\#c} for octal, hexidecimal, decimal, binary and complex numbers, respectively. The syntax \texttt{\#\emph{n}r\emph{xxx}} is used to read \emph{xxx} in base \emph{n}. \texttt{\#(\ldots)} is used for reading vectors. The \texttt{\#|} macro comments out text until a matching \texttt{|\#}, with proper nesting. As described in Section~\ref{sec:truths}, \df{\#t} and \df{\#f} are read as the canonical true and false values, respectively. The \texttt{\#[symbol "\ldots"]} syntax can be used to read arbitrary characters, although the \texttt{|$\ldots$|} construction is prefered. Analogous constructors can be added with the settable operation \df{hash-bracket-option}. \fv{input-base} \doc{The radix in which numbers will be read.} \fv{features} \doc{A list of ``features'' present in the current implementation, used by the \df{\#+} and \df{\#-} reader macros. Testable and settable with the \df{feature?} settable operation. It is guaranteed that the \df{oaklisp} and \df{scheme} features will be present in any implementation of Oaklisp.} \fv{current-locale} \doc{The \df{\#.} macro evaluates its argument in this locale.} \fv{read-suppress} \doc{This is true when what is being read will just be ignored, and indicates to the reader that it shouldn't go to the trouble of interpreting the meaning of complex tokens or anything like that.} \section{Printing} The printer is pretty heavy duty, but has no facilities for printing circular objects. \op{format}{stream control-string \dt args} \doc{This is very similar to the Common Lisp \df{format} function, and is the usual way for users to print things. \emph{Stream} is permitted to be \df{\#t} to indicate that output should be sent to the standard output, and \df{\#f} to indicate that the output should be bundled up into a string and returned. Characters in {control-string} are printed directly, except for the \texttt{\~} character which indicates that some action should be taken. The \texttt{\~} may be followed by a number or by a \texttt{:} or \texttt{@}, which vary the action that would normally be taken in some way. Currently defined \texttt{\~} characters and their associated actions are: \begin{itemize} \item[\texttt{A}] Print and argument with \dffl{print-escape} bound to \df{\#f}. \item[\texttt{\~}] Print a \texttt{\~}. \item[\texttt{\%}] Do a \df{newline}. \item[\texttt{\&}] Do a \df{freshline}. \item[\texttt{S}] Print an argument with \dffl{print-escape} bount to \df{\#t}. \item[\texttt{B}] Print an argument in binary. \item[\texttt{D}] Print an argument in decimal. \item[\texttt{O}] Print an argument in octal. \item[\texttt{X}] Print an argument in hex. \item[\texttt{\emph{n}R}] Print an argument in base \emph{n}. \item[\texttt{C}] Print an argument which is a character. \item[\texttt{P}] Print an \texttt{s} if the argument is not 1. \item[\texttt{!}] Print a weak pointer to the argument, preceded by an expression which evaluates to the argument if \dffl{fancy-references} is on. This is used to print unique id's for objects without nice printed representations, like operations. \end{itemize} A tilde followed by a newline is ignored; this construct is used for making \emph{control-string} more readable by breaking it across lines.} \op{print}{object stream} \doc{Writes a representation of \emph{object} to \emph{stream}. Users are encouraged to add informative print methods for types they define.} \op{define-simple-print-method}{type string} \doc{Instructs the printer to include \emph{string} in the printed representation of instances of \emph{type}.} \fv{print-radix} \doc{The radix in which numbers will be printed. The default is ten.} \fv{print-level} \doc{The number of levels of list structure to be printed before the printer abbreviates. The default is \df{\#f}, meaning never abbreviate.} \fv{print-length} \doc{The number of elements of a list to be printed before the printer abbreviates. The default is \df{\#f}, meaning never abbreviate.} \fv{print-escape} \doc{This controls whether the printer tries to print things that are easy for people to read, or ones that can be read back in to Oaklisp. The default is \df{\#t}, meaning to maintain print/read consistency at the expense of readability.} \fv{symbol-slashification-style} \doc{This controls the style of printing of symbols when they are escaped. See the implementation manual for details.} \fv{fraction-display-style} \doc{This can be either \df{normal}, \df{fancy} or \df{float}. In these cases, \texttt{(/ -5 3)} would print as either \texttt{-5/3}, \texttt{-1$\cdot$2/3} or \texttt{-1.6666666666}, respectively.} oaklisp-1.3.7/doc/lang/lang.tex000066400000000000000000000031531332762442600163300ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \documentclass[12pt]{report} % Blake McBride suggests [...,twoside]{book} \usepackage{times} \usepackage{fullpage} \usepackage{graphicx} \usepackage{makeidx} \usepackage[numbers]{natbib} \usepackage[hyphens]{url} \urlstyle{same} \makeindex \begin{document} \input{../mandefs} \include{cover} \tableofcontents \newpage \pagenumbering{arabic} \include{intro} \include{types} \include{methods} \include{sides} \include{locales} \include{dynamic} \include{control} \include{sequences} \include{numbers} \include{io} \include{misc} \include{user} \nocite{OAKLANG88} \nocite{CLOOPS} \nocite{FLAVORS2} \nocite{MVC} \nocite{R3RS} \nocite{SCHEME-DECLARATIVE} \nocite{SCHEME-PAP} \nocite{SNYDER86} \nocite{T} \nocite{T-MAN} \nocite{OAK-PAP} \nocite{3LISP} \nocite{FLAVORS1} \nocite{CLtL} \nocite{MULTILISP85} \nocite{ACTORS78} \nocite{CITY-TRASH} \nocite{PEARLMUTTER-LANG90A} \nocite{PEARLMUTTER99} \bibliography{../oakman} \printindex \end{document} oaklisp-1.3.7/doc/lang/locales.tex000066400000000000000000000231271332762442600170340ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Evaluation and Locales} \label{locales} Locales are the namespace structuring mechanism of Oaklisp. Whenever an Oaklisp expression is evaluated, a locale must be provided in order to specify a particular mapping from symbols to macro-expanders and from symbols to storage cells. \section{Evaluation} \op{eval}{form locale} \doc{Evaluates \emph{form} relative to \emph{locale}.} Although programmers don't often need to call \df{eval} directly, every expression typed at the top level is passed in to \df{eval} to be evaluated relative to the locale specified by the fluid variable \df{current-locale}. Files may be evaluated using the \df{load} function. \op{load}{file-name $[$locale$]$} \doc{Reads all of the forms in the file \emph{file-name} and evaluates them relative to \emph{locale}, which defaults to the value of \dffl{current-locale} if not specified.} The file compiler can be used to create an assembly language file that has the same effect as an Oaklisp source file. \op{compile-file}{locale file-name} \doc{Compiles the file \emph{file-name} relative to \emph{locale}, which defaults to the value of \dffl{current-locale}. A file must be compiled and loaded relative to the same locale in order to guarantee that the program's semantics are preserved. Oaklisp source files have a default extension of \df{.oak} while compiled files are given the extension \df{.oa}. \df{compile-file} first tries to read the file \emph{file-name}\df{.oak}, and then looks for \emph{file-name}, while \df{load} looks first for \emph{file-name}\df{.oa}, then for \emph{file-name}\df{.oak}, and finally for \emph{file-name}.} \section{Installing Names in a Locale} Oaklisp has several forms that can be used to insert global variables and macro definitions into a locale. The target locale isn't explicitly specified by any of these forms, but is implicitly understood to be the locale with respect to which the form is being evaluated. Thus, when a form is typed at the top level, the effect is on \dffl{current-locale}, and when a file is loaded, the effect is on the locale specified in the call to \df{load}. \sform{define}{var val} \doc{Installs the global variable \emph{var} in the current locale with value \emph{val}.} \sform{define-constant}{var val} \doc{This form is like \df{define} except that \emph{var} is marked as frozen in the current locale so that the compiler can be free to substitute the value for references to \emph{var}.} \sform{define-instance}{var typ \dt make-args} \doc{If the contents of \emph{var} isn't of type \emph{typ}, this is the same as \texttt{(set! \emph{var} (make \emph{typ} . \emph{make-args}))}. If \emph{var} is already bound to an object of the right type, this form has no effect. \emph{Note:} this language feature is in flux. Currently, it sends an \df{initialize} message to the object with the new \emph{make-args}.} \sform{define-syntax}{macro-name expander} \doc{ Installs \emph{macro-name} in the current locale. \emph{expander} should be a lambda that is able to translate an example of the macro into a form that has simpler syntax. } As with all Oaklisp forms, the effect of a \df{define-syntax} form in a file is not felt until run-time when the file is loaded. Since it is often convenient to be able to use a macro in the file in which it is defined, a special mechanism has been provided for defining file-local macros that are in effect at compile time. The following magic forms should be used with care, since they violate the usually absolute dichotomy between compile time and load time. \sform{local-syntax}{macro-name expander} \doc{ During the compilation of a file in which a \df{local-syntax} form is contained, the form augments the name space with the macro specified by \emph{macro-name} and \emph{expander}. This form can only appear at top level in a file; and essentially disappears before load time. } \sform{define-local-syntax}{macro-name expander} \doc{ Temporarily augments the compile-time name space with the specified macro, and also installs the macro in the current locale when the file is loaded. This form can only appear at top level in a file. } \section{Structuring the Namespace} \discuss{ Oaklisp locales are not associated with textual binding contours, nor are they particularly user-friendly objects. They were designed to be a powerful implementation tool, leaving the task of providing a convenient interactive interface to higher-level code.} \op{make}{\df{locale} superior-list} \doc{Returns a new locale which inherits names from the locales in \emph{superior-list}. During recursive name lookups, the superiors are searched deapth first in left-to-right order.} \section{Variables} \label{variables} Locales are essentially mappings from symbols to storage cells. Although locales can be created on-the-fly, their main use is in building the structured top-level environment for global variables. Variable names must be installed in a locale before they can be referenced. Precise control over shadowing and cross-referencing can be achieved using the following settable operations. \so{variable?}{locale symbol} \doc{Returns a locative to the appropriate storage cell if \emph{symbol} is installed as a variable name, or \df{\#f} otherwise. The search is allowed to proceed to superior locales if necessary.} \setter{variable?}{locale symbol}{locative} \doc{If \emph{symbol} is not currently defined at any level, then it is installed in \emph{locale}, with the location named by \emph{locative} serving as its value cell. If \emph{symbol} is defined at some level, then its value cell at the highest level\footnote{\ie\ in the nearest locale to the one handling the operation.} is changed to be the location referenced by \emph{locative}.} \setter{variable?}{locale symbol}{\texttt{\#f}} \doc{If \emph{symbol} is defined at some level, then its definition is removed from the highest level. Otherwise an error is generated.} \so{variable-here?}{locale symbol} \doc{Returns a locative to the appropriate storage cell if \emph{symbol} is installed as a variable name, or \df{\#f} otherwise. The search is constrained to \emph{locale} itself.} \setter{variable-here?}{locale symbol}{locative} \doc{If \emph{symbol} is not currently defined in \emph{locale}, then it is installed, with the location named by \emph{locative} serving as its value cell. If \emph{symbol} is defined in \emph{locale}, then its value cell is changed to be the location referenced by \emph{locative}.} \setter{variable-here?}{locale symbol}{\texttt{\#f}} \doc{If \emph{symbol} is defined in \emph{locale} then its definition is removed. Otherwise an error is generated.} \section{Macros} Macro definitions are also stored in locales. These definitions are stored as a mapping from names to macro expanders. A macro expander is simply a one-argument function that takes an S-expression as its input and returns a transformed S-expression. Macro definitions are installed with the following settable operations, which are entirely analogous to the ones described in Section~\ref{variables}. \so{macro?}{locale symbol} \doc{Returns the appropriate macro expander if \emph{symbol} is installed as a macro name and \df{\#f} otherwise. The search is allowed to proceed to superior locales if necessary.} \so{macro-here?}{locale symbol} \doc{Returns the appropriate macro expander if \emph{symbol} is installed as a macro name, or \df{\#f} otherwise. The search is constrained to \emph{locale} itself.} \section{Compilation} All evaluation in Oaklisp is performed with respect to some locale. The syntax of the language is determined by the macro tables visible from that locale, and free variable references are likewise resolved using the global variables defined in its name space. %% % Evaluation is % performed by sending a \df{compile} message to the desired locale. % % \begin{group} % \op{(COMPILE locale form)} % \doc{Evaluates \df{form} in the name space defined by \df{locale} and % its ancestors.} % \end{group} % % \begin{group} % \op{(LOAD file locale)} % \doc{Completes the suspended evaluation of the form that was compiled to % \df{file}.\ \df{locale} must be the locale within which the % form was originally compiled.} % \end{group} % % \discuss{For improved efficiency, it is desirable for the compiler to % be able to open-code some functions. This is only possible if % the variables bound to those functions will never change their % values. The following operations may be used to inform the compiler that a % variable will always have the same value.} % % \spred{frozen?}{locale symbol} \doc{Returns \df{\#t} if \emph{symbol} is a frozen variable, otherwise \df{\#f}. The search is allowed to proceed to superior locales if necessary. If \emph{symbol} is not found anywhere, an error occurs.} \spred{frozen-here?}{locale symbol} \doc{Returns \df{\#t} if \emph{symbol} is a frozen variable, otherwise \df{\#f}. The search is constrained to \emph{locale} itself. If \emph{symbol} is not installed as a variable in \emph{locale}, an error occurs.} oaklisp-1.3.7/doc/lang/methods.tex000066400000000000000000000210051332762442600170460ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Methods and Scoping} \label{methods} In Chapter~\ref{types}, the concept of \emph{type} was discussed. The assertion was made that operation methods lie at the heart of the typing system, because they determine the behavior of objects. This chapter describes the mechanism for defining methods. \section{Methods} A table of methods is maintained in the descriptor of every type. At run-time, these tables are searched to find the methods which are used to handle operations on objects. The only mechanism for manipulating method tables is the following side-effecting special form. \sform{add-method}{\lpar operation $[$\lpar type \dt ivar-list\rpar$]$ \dt arg-list\rpar \dt body} \doc{Adds a method for \emph{operation} to the method table of \emph{type}. If a method for \emph{operation} already exists, it is replaced. The value returned by \df{add-method} is \emph{operation}.} The body of the form is surrounded by an implicit \df{block}. The arguments to the method are specified by \emph{arg-list}. Since the first argument is always the object handling the message, a useful convention is to call it \df{self}. Instance variables of \emph{type} can be referenced in the body if they are declared in \emph{ivar-list}. Instance variables of supertypes may not be referenced in any case. Naming conflicts between instance variables and arguments are resolved by the rule that the variables in \emph{arg-list} shadow instance variables that have the same names. Oaklisp closes methods over free variable references at compile-time, thereby solving the upward funarg problem and allowing procedures to share state in a controlled manner. \section{Scoping} Oaklisp is a lexically scoped language in which all variable references are resolved at compile-time. When a variable reference is encountered, the compiler searches outwards from that point through the nested lexical binding contours until it finds a declaration for the variable.\footnote{If a declaration isn't found, the compiler proceeds to look for the variable in the appropriate locale. See Chapter~\ref{locales}.} We have already seen one mechanism for introducing new lexical contours: the argument list of the \df{add-method} special form. Oaklisp provides several other forms which can be used to define local variables and procedures. \sform{let} {\lpar\lpar var$_1$ val$_1$\rpar\ldots var$_n$ val$_n$\rpar \dt body} \doc{Evaluates \emph{body} in an environment where the $n$ variables are bound to the $n$ values. The value returned is that of \emph{body}.} \sform{let*} {\lpar\lpar var$_1$ val$_1$\rpar\ldots var$_n$ val$_n$\rpar \dt body} \doc{This form is similar to \df{let}. The difference is that \df{let} performs the bindings simultaneously whereas \df{let*} performs the bindings sequentially so that each value expression can refer to the preceding variables.} \sform{labels} {\lpar\lpar var$_1$ val$_1$\rpar\ldots\lpar var$_n$ val$_n$\rpar\rpar \dt body} \doc{\df{labels} differs from \df{let} in that the value expressions are evaluated in a binding environment in which all of the variables are already defined. This facilitates the definition of mutually recursive procedures.} \section{Functional Syntax} Sometimes it is convenient to adopt a more conventional Lisp viewpoint while designing programs. This viewpoint considers functions to be the primary programming abstraction, with objects downgraded to the status of data which is passed around between functions. The key to this programming style is the ability to write functions which can accept arguments of any type. Oaklisp readily accommodates the functional programming style, since methods can be defined for the type \df{object}, which is the supertype of all other types. In fact, if the type specifier is omitted in an \df{add-method} form, the type \df{object} is assumed. Thus, \texttt{(add-method (\mbox{cons-1} x) (cons x 1))} defines a method that is valid for any type. To give the language a more familiar appearance when this programming style is used, the following macros are also provided. \mc{lambda}{arg-list \dt body} \doc{\macdef{}{(add-method ((make operation) . \emph{arg-list}) . \emph{body})}} \mc{define}{\lpar variable \dt arg-list\rpar \dt body} \doc{\macdef{}{(define \emph{variable} (lambda \emph{arg-list} . \emph{body}))}} \section{Dispatching to Supertypes} Sometimes a method doesn't want to override the inherited method completely, but rather wishes only to modify or extend its behaviour. For instance, imagine that the type \texttt{dog} has a method so that the \texttt{notice-stranger} operation causes it to run around, jump up and down, bark, and return the amount of time wasted. Say that \texttt{stupid-dog} is a subtype of \texttt{dog} defined by \texttt{(define-instance stupid-dog type '() (list dog))}, and that we want stupid dogs to behave just like regular dogs in response to a \texttt{see-stranger} message, except that they do it twice. This could be accomplished without the duplication of code by dispatching to the supertype twice, as in the following code fragment. \begin{flushleft}\tt (add-method (see-stranger (stupid-dog) self stranger)\\ ~~(+ ({\upar}super dog see-stranger self stranger)\\ ~~~~~({\upar}super dog see-stranger self stranger))) \end{flushleft} \op{{\protect\upar}super}{type operation self \dt args} \doc{This is just like \texttt{(\emph{operation self \dt args})} except that the method search begins at \emph{type} rather than at the type of \emph{self}. It is required that \emph{type} be an immediate supertype of the type that the method this call appears in is added to, although our current implementation does not yet enforce this restriction. \df{{\protect\upar}super} is analogous to the Smalltalk-80 \index{Smalltalk-80} mechanism of the same name, except that due to Oaklisp's multiple inheritance it is necessary for the programmer to explicitly state which supertype is to be dispatched to.} \section{Rest Args} When a method is defined with a parameter list that is improper (\ie\ dotted) the method is permitted to receive extra values in addition to its regular parameters at run time. These values are associated with the pseudo variable name that appears after the dot, which will henceforth be called the rest name. Unlike a real variable name, a rest name can't be evaluated and can only be referred to in two places: at the end of a function call that uses dotted syntax (which signifies that the extra values should be passed on to the function being called), and in a \df{rest-length} form, which is the mechanism for finding out how many rest args a method has been passed. \sform{rest-length}{rest-name} \doc{Yields the number of extra values that were received by the method in which \df{rest-name} is declared.} Rest args can never be accessed directly, but must be passed tail recursively to other functions. In fact, a function is not permitted to return without disposing of its rest args. Usually a function that takes a variable number of arguments will recurse on itself or on a helper function, consuming its arguments one by one until they are all gone, at which point the function is free to return. The following functions have been provided to make it easier to write a function definition that satisfies all of the rules for rest args. \op{consume-args}{val \dt args} \doc{Returns \emph{val} after consuming \emph{args}.} \op{listify-args}{op \dt args} \doc{Calls \emph{op} on a list consisting of the values of \emph{args}.} A call to \df{listify-args} can be used as the body of a method definition as a means of trivially satisfying the rest arg rules. When using this technique, \emph{op} is a lambda that performs all of the computation for the method. The rest args of the method are wrapped up in a list that is passed in as the lambda's one parameter, and the regular parameters and instance variables of the method are available inside the lambda because of lexical scoping. oaklisp-1.3.7/doc/lang/misc.tex000066400000000000000000000071001332762442600163360ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Miscellaneous} \label{misc} \section{Tables} The types are \df{generic-hash-table} and \df{eq-hash-table}. The access interface is \df{present?}, which returns a \df{pair} whose \df{car} is the key and whose \df{cdr} is the associated value. A different interface to hash tables is provided by the T-style \df{table-entry} operation which returns the associated value or \df{\#f} if the key isn't in the table. The setter of either operation can be used to add, modify, and remove associations. \makin{generic-hash-table}{key-hash-op equal-op} \makin{eq-hash-table}{} \so{present?}{table key} \doc{Returns \texttt{(\emph{key \dt val})} pair, or \df{\#f} if not present.} \so{table-entry}{table key} \doc{Returns value indexed by \emph{key} or \df{\#f} if not present.} \section{Delays} Oaklisp's delays are compatible with the facility defined in R3RS, but extend those primitive facilities in two ways. First, the system will automatically force promises when appropriate. For instance, \texttt{(+ 2 (delay 3))} does not signal an error; it returns \texttt{5}. Similarly, delays are printed transparently, slightly violating read/print consistency. Secondly, the delay facility is user extensible. Users can create new kinds of delays that have special protocols, for instance numeric delays that do not force themselves upon arithmetic operations, but instead make more and more complicated delays. \sform{delay}{expression} \doc{This immediately returns a \emph{promise} for \emph{expression}, without actually computing \emph{expression}. This promise does not compute \emph{expression} until it is forced, at which point it returns the value of \emph{expression}, computing it if it hasn't already done so.} \op{force}{x} \doc{If \emph{x} is a promise, it is forced to compute its value, which is returned. If \emph{x} is not a promise, it itself is returned.} \ty{promise} \doc{This is the type of the objects returned by \df{delay}.} \ty{forcible} \doc{This is an abstract type, of which \df{promise} is a concrete subtype. Subtypes of \df{forcible} are expected to respond to the \df{force} operation in a sensible fashion. Oaklisp's system internals sometimes force instances of \df{forcible} automatically, for instance when sending them messages for which no appropriate method can otherwise be found.} \fv{forcible-print-magic} \doc{Controls how delays are printed. This is how \texttt{(delay 'foo)} would print under various settings of \texttt{forcible-print-magic}. \begin{center} \begin{tabular}{|l|l|}\hline value & print style \\ \hline \texttt{\#f} & \texttt{\#} \\ \texttt{indicate} & \texttt{\#[DELAY FOO 3462]} \\ \texttt{transparent} & \texttt{FOO} \\ \hline \end{tabular} \end{center} The default is \df{transparent}. A setting of \df{indicate} is more instructive if you encounter odd behavior that might be due to delays.} oaklisp-1.3.7/doc/lang/numbers.tex000066400000000000000000000050271332762442600170640ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Numbers} \label{numbers} \index{\texttt{number}} \index{\texttt{real}} \index{\texttt{complex}} \index{\texttt{rational}} \index{\texttt{float}} \index{\texttt{integer}} \index{\texttt{fraction}} \index{\texttt{fixnum}} \index{\texttt{bignum}} \begin{figure}[h] \centering\includegraphics{numhier} \caption{The numeric type hierarchy. Abstract types are in plain face and instantiable ones in bold. Floating point numbers are not implemented.} \label{fig:numhier} \end{figure} \section{Arithmetic} \op{+}{\dt numbers} \op{1+}{n} \op{-}{n1 n2 \dt numbers} \op{-}{n} \op{*}{\dt numbers} \op{/}{n1 n2} \op{quotient}{n1 n2} \op{modulo}{n1 n2} \op{abs}{n1} \op{max}{n1 n2} \op{min}{n1 n2} \op{expt}{n1 n2} \section{Comparison} \op{=}{n1 n2} \op{{\protect\bang}=}{n1 n2} \op{<}{n1 n2} \op{>}{n1 n2} \op{<=}{n1 n2} \op{>=}{n1 n2} \section{Predicates} \pr{zero?}{n} \pr{negative?}{n} \pr{positive?}{n} \pr{even?}{n} \pr{odd?}{n} \pr{factor?}{n1 n2} \section{Rounding} These operations should work on any subtype of \df{real}. \op{floor}{x} \doc{Returns the largest integer less than or equal to \emph{x}.} \op{ceiling}{x} \doc{Returns the smallest integer greater than or equal to \emph{x}.} \op{truncate}{x} \doc{Could be defined \texttt{(if (negative?\ x) (ceiling x) (floor x))}.} \op{round}{x} \doc{Returns nearest integer to \emph{x}. Ties are broken by rounding to an even number.} \section{Bitwise Logical Operations} These operations are only defined for integers. \op{ash-left}{i amount} \op{ash-right}{i amount} \op{rot-left}{i amount} \op{rot-right}{i amount} \op{bit-not}{i} \op{bit-and}{i1 i2} \op{bit-or}{i1 i2} \op{bit-nor}{i1 i2} \op{bit-xor}{i1 i2} \op{bit-nand}{i1 i2} \op{bit-andca}{i1 i2} \op{bit-equiv}{i1 i2} \section{Accessing Components} \op{numerator}{rational} \op{denominator}{rational} \op{real-part}{number} \op{imag-part}{number} oaklisp-1.3.7/doc/lang/numhier.eps000066400000000000000000000273121332762442600170500ustar00rootroot00000000000000%!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Times-Roman Times-Bold %%Pages: 1 %%BoundingBox: 5 604 300 788 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 5 Grid 4 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.9 0 0 0.9 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -142.407 117 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -51.4066 117 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -92.4066 162 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -42.4066 207 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -242.407 27 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -151.407 27 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -192.407 72 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -101.407 72 ] concat %I 324 657 45 9 Elli End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 -1 -66 1431 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 -1 -116 1386 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 -1 -166 1341 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 -1 -16 1476 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -120 162 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -220 72 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -170 117 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -70 207 ] concat %I 297 648 279 621 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-120-* /Times-Roman 12 SetF %I t [ 1 0 0 1 231.049 871 ] concat %I [ (number) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-120-* /Times-Roman 12 SetF %I t [ 1 0 0 1 190.049 826 ] concat %I [ (real) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-120-* /Times-Roman 12 SetF %I t [ 1 0 0 1 130.549 781 ] concat %I [ (rational) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 226.049 781.5 ] concat %I [ (float) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 166.049 736.5 ] concat %I [ (fraction) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-120-* /Times-Roman 12 SetF %I t [ 1 0 0 1 82.0494 736 ] concat %I [ (integer) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 28.0495 691.5 ] concat %I [ (fixnum) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 117.549 691.5 ] concat %I [ (bignum) ] Text End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -1.4066 162 ] concat %I 324 657 45 9 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 264.049 826.5 ] concat %I [ (complex) ] Text End End %I eop showpage %%Trailer end oaklisp-1.3.7/doc/lang/seqhier.eps000066400000000000000000000276671332762442600170560ustar00rootroot00000000000000%!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Times-Roman Times-Bold %%Pages: 1 %%BoundingBox: 11 591 270 719 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont findfont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 0 descender sub printSize sub printFont /Courier ne printFont /Courier-Bold ne and { 1 add } if def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 7 Grid @K %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.8 0 0 0.8 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -140.5 231 ] concat %I 297 648 279 621 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.43734 0 0 1 -195.904 98 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -134.407 96 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -6.407 142 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -98.407 141 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -62.407 185.5 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -233.907 95.5 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.19409 0 0 1 -305.337 141.5 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.989551 0 0 1 -186.046 186 ] concat %I 324 657 45 9 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.901099 0 0 1 -109.407 230 ] concat %I 324 657 45 9 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-140-* /Times-Roman 14 SetF %I t [ 1 0 0 1 155.049 892.5 ] concat %I [ (sequence) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-140-* /Times-Roman 14 SetF %I t [ 1 0 0 1 99.0687 848.5 ] concat %I [ (vector-type) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-140-* /Times-Roman 14 SetF %I t [ 1 0 0 1 204.549 848 ] concat %I [ (list-type) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 36.0491 804 ] concat %I [ (simple-vector) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 40.0491 758 ] concat %I [ (string) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-140-* /Times-Roman 14 SetF %I t [ 1 0 0 1 182.549 803.5 ] concat %I [ (pair) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 126.549 758.5 ] concat %I [ (cons-pair) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-bold-r-*-140-* /Times-Bold 14 SetF %I t [ 1 0 0 1 221.293 760.5 ] concat %I [ (lazy-cons-pair) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-*-140-* /Times-Roman 14 SetF %I t [ 1 0 0 1 258.549 804.5 ] concat %I [ (null-type) ] Text End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -181 186.5 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -220 141 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -121.5 141 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 -1 -30.5 1454.5 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 -1 -65.5 1410.5 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -85.5 185.5 ] concat %I 297 648 279 621 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 -1 -76.5 1499 ] concat %I 297 648 279 621 Line End End %I eop showpage %%Trailer end oaklisp-1.3.7/doc/lang/sequences.tex000066400000000000000000000131071332762442600174020ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Sequences} \label{Sequences} Sequences are manipulated using the \df{nth} operation, which is settable (and locatable). The sequence heirarchy is shown in figure~\ref{fig:seqhier}. \index{\texttt{sequence}} \index{\texttt{vector-type}} \index{\texttt{simple-vector}} \index{\texttt{list-type}} \index{\texttt{string}} \index{\texttt{pair}} \index{\texttt{null-type}} \index{\texttt{cons-pair}} \index{\texttt{lazy-cons-pair}} \begin{figure}[h] \centering\includegraphics{seqhier} \caption{The sequence type hierarchy. Abstract types are in plain face and instantiable ones in bold.} \label{fig:seqhier} \end{figure} \section{Type Predicates} \pr{sequence?}{object} \pr{vector?}{object} \pr{string?}{object} \pr{list?}{object} \pr{pair?}{object} \pr{null?}{object} \pr{atom?}{object} \section{Sequence Operations} These operations work on all sequences. \op{length}{list} \lo{nth}{list n} \lo{last}{list} \lo{tail}{list n} \op{copy}{sequence} \op{append}{sequence1 sequence2} \doc{Returns a sequence of the type of \emph{sequence1}. One slight bug is that one may not pass \df{append} a first argument that's a list and a second that's not. This may be fixed in the future. All other combinations should work correctly.} \op{append\protect\bang}{sequence1 sequence2} \doc{Most sequences have immutable lengths, and hence are not appropriate arguments to \df{append\protect\bang}. The major exception is lists. The same bug is present here as in \df{append}.} \op{reverse}{sequence} \op{reverse\protect\bang}{sequence} Some mapping operations are also applicable to sequences, and are documented in Section~\ref{sec:controlmap}. \section{Vector Constructors} \op{vector}{\dt objects} \doc{Returns a \df{simple-vector} containings \emph{objects}.} \makin{simple-vector}{length} \coercer{simple-vector}{sequence} \section{List Constructors} \op{list}{\dt objects} \makin{list-type}{length fill-value} \coercer{list-type}{sequence} \op{cons}{object1 object2} \makin{lazy-cons-pair}{car-thunk cdr-thunk} \mc{lcons}{car-form cdr-form} \doc{\macdef{}{(make lazy-cons-pair (lambda () \emph{car-form}) (lambda () \emph{cdr-form}))}} \section{List Accessors} \lo{car}{pair} \lo{cdr}{pair} \lo{c$[$ad$]^{*}$r}{pair} \doc{Actually these are only provided for up to four \texttt{a}'s and \texttt{d}'s. If you think you need more, you should probably be defining accessor functions or using \df{nth} or perhaps \df{destructure}.} \lo{last-pair}{pair} \doc{Takes successive \df{cdr}'s of \emph{pair} until it finds a pair whose \df{cdr} is not a pair, which it returns. \evto{(last-pair '(a b c))}{(c)}. \evto{(last-pair '(a b c . d))}{(c . d)}.} \mc{destructure}{template structure \dt body} \doc{This is for destructuring lists, and is sort of the inverse of backquote. \emph{Template} is a possibly nested list of variables. These variables are bound to the corresponding values of \emph{structure} while \emph{body} is evaluated. For instance, \macdef{(destructure (a (b) . c) x (foo a b c))}{(let ((a (car x))(b (caadr x))(c (cddr x))) (foo a b c))}. It is guaranteed that \emph{structure} will be evaluated only once. We note that \df{destructure} typically generates more efficient code than the corresponding code one might typically write. If there is a position in \emph{template} that should be ignored, one can place a \df{\#t} there. For convenience and compatiblity with \df{destructure*}, positions in \emph{template} containing \df{()}, \df{\#f} and \texttt{(quote \emph{x})} are also ignored.} \mc{destructure*}{template structure \dt body} \doc{This is just like \df{destructure} except that an error is signaled if \emph{structure} doesn't precisely match \emph{template}. Positions containing \df{\#f} and \df{()} are required to match literally. Positions containing \texttt{(quote \emph{x})} are required to match \emph{x} literally, where \emph{x} is not evaluated. As with \df{destructure}, positions containing \df{\#t} are ignored. \df{destructure*} is particularly useful in macro expanders where it can do much of the syntax checking automatically.} \mc{destructure**}{structure \lpar{}template \dt body\rpar ... [\lpar{}\texttt{otherwise} \dt nomatch-body\rpar]} \doc{This is just like \df{destructure*} except that, when one template does not match, the next in line is considered. If none match than the OTHERWISE one does; if no otherwise clause is present, an error is signaled.} \section{Lists as Sets} \op{mem}{predicate object list} \doc{Returns the first tail of \emph{list} whose \df{car} equals \emph{object} according to \emph{predicate}.} \op{memq}{object list} \op{del}{predicate object list} \op{delq}{object list} \op{del\protect\bang}{predicate object list} \op{delq\protect\bang}{object list} \section{Lists as Associations} \op{ass}{predicate object list} \op{assq}{object list} \so{cdr-ass}{predicate object list} \so{cdr-assq}{object list} \section{Lists as Stacks} \mc{push}{location object} \mc{pop}{location} oaklisp-1.3.7/doc/lang/sides.tex000066400000000000000000000070661332762442600165250ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Side Effects} \label{sides} The treatment of side effects in Oaklisp is modelled on that of T. The salient feature of this approach is the use of reversible access procedures to perform side effects on composite data structures and anonymous storage cells. \section{Assignment} Side effects on variables and objects are performed with the \df{set\protect\bang} special form, which combines the functionality of the \df{setq} and \df{setf} forms found in other Lisps. \sform{set\protect\bang}{location new-value} \doc{Changes the value of \emph{location} to \emph{new-value}, which is then returned as the value of the expression. If \emph{location} is a symbol, then it is interpreted as a variable name. The variable must have been previously defined in some lexical binding contour or locale. If \emph{location} is a list, then it is interpreted as a reference to a settable access operation. For example, \texttt{(set! (car foo) 'bar)} means the same thing as \texttt{(rplaca foo 'bar)} in Common Lisp.} \lo{setter}{operation} \doc{Takes a settable access operation and returns the corresponding alteration operation.} \section{Locatives} \df{locative} is an Oaklisp type that is similar to the pointer types found in procedural languages such as C or Pascal. Locatives are created and dereferenced by the following constructs. \sform{make-locative}{location} \doc{Returns a locative that points to \emph{location}, which must be a variable or a list with the form of a call on a locatable access operation.} \lo{locater}{operation} \doc{Takes a locatable access operation and returns the corresponding locative-making operation.} \lo{contents}{locative} \doc{Returns the contents of the location which is referenced by \emph{locative}. Since \df{contents} is a settable operation, side effects can be performed on locations through locatives. For example, \texttt{(set! (contents (make-locative (car \emph{foo}))) '\emph{bar})} has the same effect as \texttt{(set! (car \emph{foo}) '\emph{bar})}.} \section{Operation Types} Since operations are objects, they are classified into types according to the operations which can be performed on them. The types discussed here can generate side-effecting operations from access operations. \ty{operation} \doc{This is the generic operation type that is a component of all other operation types.} \ty{settable-operation} \doc{An access operation is settable if side effects can be performed through it. Settable operations respond to \df{setter}.} \ty{locatable-operation} \doc{An access operation is locatable if it retrieves information from a single physical location. Locatable operations respond to \df{setter} and \df{locater}.} \section{Modification Forms} See Chapter~6 of \emph{The T Manual} for a description of the following forms. \sform{swap}{location new-value} \sform{modify}{location procedure} \sform{modify-location}{location continuation} oaklisp-1.3.7/doc/lang/types.tex000066400000000000000000000237021332762442600165550ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Types and Objects} \label{types} Oaklisp is an object-oriented language which is organized around the concept of \emph{type}. The type of an object determines its behavior when operations are performed on it. To permit the modular specification of types with complex behaviors, a type is allowed to have multiple supertypes. There is no distinction in Oaklisp between predefined system types and user-defined types. A type specifies the behavior of an object by providing methods that are used to perform operations on that object. Because methods are inherited from supertypes, a subtype only needs to supply those methods which are required to distinguish itself from the more general types. A method defined for a given type pre-empts any inherited methods for the same operation. Instance variables are the mechanism for keeping state in objects. Every object possesses a data structure where the values of its instance variables are stored. Although each object contains storage for all of the instance variables required by its type and supertypes, methods for a given type can only refer to instance variables defined in that type. In particular, methods cannot refer to instance variables that are defined in supertypes. It is possible to think of Oaklisp in terms of messages that are being passed to objects, rather than in terms of operations that are being performed on objects. The latter view was chosen because it is more consistent with Lisp syntax and semantics. \section{Fundamental Types} There are two important relations in the Oaklisp type system: {\it is-a} and \emph{subtype}. An object is related to its type by the relation \emph{is-a}, and a type is related to its supertypes by the relation \emph{subtype}. Each of these relations defines a tree structure which includes all of the objects in the system. The most fundamental types in the system are \df{type} and \df{object}. They are distinguished by their position at the top of the \emph{is-a} and \emph{subtype} hierarchies, and by their circular definitions. \ty{type} \doc{This type is the top of the \emph{is-a} hierarchy. It is the type of types, so new types are created by instantiating it.} \ty{object} \doc{This type is the top of the \emph{subtype}\ hierarchy, and has no supertype. Every other type is a subtype of \df{object}, so default methods for operations such as \df{print} are defined for \df{object}.} \section{Operations on Objects} The following operations are defined for all objects. Because they determine the semantics of the language, they cannot be redefined or shadowed. \op{get-type}{object} \doc{Returns the type of \df{object}.} \pr{eq?}{object object} \doc{Determines object identity. Two objects may look and act the same, but still fail the \df{eq?}\ test. In particular, numbers are not guaranteed to be unique. Symbols \emph{are} interned, though.} \section{Operations on Types} Types are distinguished from other objects by the fact that they can perform the \df{make} operation, which is the mechanism for generating new objects. \op{make}{type} \doc{Returns a new instance of \df{type}.} The instance variables of an object returned by \df{make} are all bound to some unspecified value. Usually new objects need to be initialized in some other way, which can be accomplished by performing an operation on them immediately after they are made. By convention, this operation is \df{initialize}. \op{initialize}{object} \doc{Returns \df{object}.} This method for \df{initialize} is clearly a no-op. When a type requires special initialization, it should shadow this default. \section{Defining New Types} Since types are objects, new ones are created by sending a \df{make} message to the appropriate type object, which in this case is \df{type}. \makin{type}{ivars supertypes} \doc{Returns a new type-object with the supertypes and instance variables specified by the argument lists.} At run-time, methods are chosen by performing a left-to-right depth-first search on the supertype list.\footnote{Of course, Oaklisp implementations are free to use more efficient mechanisms that have the same effect.} Instances of the new type will contain a block of instance variables for each of the ancestor types, although duplicate types in the ancestor tree are eliminated.\footnote{This aspect of the language is in flux, and should not be relied upon by users.} \section{Type Predicates} The implicit type checking performed by the method invocation mechanism of Oaklisp reduces the need to call explicit type predicates. Furthermore, the two predicates defined in this section are sufficiently general to replace all of the ordinary Lisp type predicates such as \df{null?} and \df{number?}. A few of these have been retained to make the environment more familiar. \pr{is-a?}{object type} \doc{Determines whether \df{object} is an instance of \emph{type} or one of its subtypes. \texttt{(is-a?\ \emph{object} object)} is always true.} \pr{subtype?}{type1 type2} \doc{Determines whether \emph{type1} is a subtype of \emph{type2}. As you would expect, \df{subtype?} is transitive. Since each type is a subtype of itself, \df{subtype?} defines a partial ordering of all the types in the system.} \section{Constants} Some objects have external representations that are not self-evaluating expressions. \df{quote} allows the inclusion of such objects as constants in code. \sform{quote}{object} \doc{Returns \emph{object} without evaluating it.} \section{Standard Truth Values} \label{sec:truths} The standard truth values of Oaklisp are represented by the objects bound to the following variables. \gv{t} \doc{The value of this is \df{\#t}. Any non-false value will do just as well for the purpose of logical tests.} \gv{\#f} \doc{This is the false value, the only object recognized by logical tests as denoting falsehood.} \gv{nil} \doc{The value of this is the empty list, written \texttt{()}. Notice that \df{nil} itself is just a variable, so \texttt{(eq?\ nil 'nil)} is false.} \discuss{\textbf{Note:} currently \texttt{()} is the same as \texttt{\#f}, the object used to represent falsehood. In the future it is possible that these two notions, emptiness and falsehood, will be disconfabulated. Programs should be written in such a way that if \df{\#f} and \df{()} were not the same object, they would still work.} \section{Coercion} Some types are \emph{coercable}, meaning that there is an operation associated with that type that allows objects to be coerced to that type. To create a coercable type, one instantiates \df{coercable-type} rather than \df{type}. \lo{coercer}{coercable-type} \doc{This returns the coercer of a type. For example, to coerce a list into a string one uses \dfcoer{string}, as in \evto{((coercer string) '(\#$\backslash$f \#$\backslash$o \#$\backslash$o))}{"foo"}. The reader will read \texttt{frog} preceded by a control-y character as \texttt{(coercer frog)}; this was motivated by the fact that control-y prints as $\rightarrow$ on both Macintosh$^{\mbox{tm}}$ and Symbolics computers, giving coercion a pleasant syntax, \evto{($\rightarrow$string '(\#$\backslash$f \#$\backslash$o \#$\backslash$o))}{"foo"}.} \ty{coercable-type} \doc{This is a subtype of \df{type} with has the added functionality of responding to the \df{coercer} message by returning its coercion operation. By default, \texttt{(is-a?\ \emph{foo} \emph{bar})} implies that \evto{((coercer \emph{bar}) \emph{foo})}{\emph{foo}}} \section{Mixing Types} Frequently, type hierarchies become so rich that they threaten to overwhelm users with a plethora of possible combinations of mixins. The combinatorial explosion of the number of possible concocted types seems intrinsic to the style of programming involving multiple functionally orthogonal mixins. Above a certain level of complexity, finding a type with certain known characteristics can become difficult. Programmers are left wondering ``Has a type based on \emph{foo} with \emph{bar, baz} and \emph{zonk} mixed in been created, if so what's its name, and if not what should I name it and where should I define it?'' Oaklisp's \emph{mixin managers} take care of this problem. When one needs ``the type based on \emph{foo} with \emph{bar, baz} and \emph{zonk} mixed in,'' one asks a mixin manager for it. If such a type has already been created, it is returned; if not, the mixin manager creates an appropriate new type, caches it, and returns it. This eliminates the burden of remembering which types have been concocted and what they are named. \op{mix-types}{mixin-manager type-list} \doc{This returns a composite type whose supertypes are \emph{type-list}. \emph{Mixin-manager} checks its cache, and if the requested type is not found it creates a type with \texttt{(make type '() \emph{type-list})}, caches it, and returns it.} \ty{mixin-manager} \doc{Instances of this cache composite types, acting as a sort of composite type library.} The Oaklisp operation type hierarchy is quite elaborite, containing a large number of functionally orthogonal mixins, and therefore the Oaklisp internals make heavy use of the mxin manager facility when dealing with operations. For example, the following definition for \df{+} is drawn from deep within the bowels of Oaklisp. \begin{verbatim} (define-constant-instance + (mix-types oc-mixer (list foldable-mixin open-coded-mixin operation))) \end{verbatim} oaklisp-1.3.7/doc/lang/user.tex000066400000000000000000000173411332762442600163710ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{User Interface} \label{user} The Oaklisp user interface currently consists of a read-eval-print loop and a simple debugging facility. Errors land the user into a recursive evaluation loop in which special restart handlers are available. Our implementation includes mechanisms for inspecting objects and tracing function calls. \section{The Top Level Environment} All expressions must be evaluated with respect to a particular naming environment. The read-eval-print loop uses the locale specified by the fluid variable \df{current-locale}. The Oaklisp system boots up with this variable bound to \df{user-locale}. Other useful name spaces are \df{scheme-locale}, \df{system-locale}, and \df{compiler-locale}. Several fluid variables are used to keep a short history of the dialogue conducted by the top level evaluator. The most useful of these is \dffl{*}, which contains the value produced by the most recent user expression. The value of this variable is rolled back into \dffl{**} and then into \dffl{***} to provide access to the three most recent values. Similarly, there are three copies of \dffl{+} and \dffl{?} that provide access to recent expressions that were read in and to their form after macro expansion. The switch \dffl{fancy-references} controls the printing of anonymous objects. When this switch is turned off, an object usually prints out something like this: \texttt{\#}. This format indicates the type of the object, and provides a weak pointer that can be derefenced with \df{object-unhash} to get the object. When the \dffl{fancy-references} switch is turned on, the printer attempts to generate an expression that will evaluate to the object in the current locale. For example, the above operation might print out as \texttt{\#}. The default value for this switch is \df{\#f}, but it is briefly switched on by \df{describe}. Two more fluid variables that are frequently used at the top level are \dffl{print-length} and \dffl{print-level}, which are normally set to small integer values in order to abbreviate the printing of long lists, but which can be set to \df{\#f} in order to enable exhaustive printing. %% % % The read-eval-print loop uses the \df{eval} function to perform the % actual evaluation of expressions. The \df{eval} function in turn % calls one of several functionally equivalent evaluation functions in % our implementation: \df{interpreter-eval}, \df{compiler-eval}, and % \df{hybrid-eval}. The variable \dffl{top-level-evaluator} % specifies which one should be used. \df{hybrid-eval} is the default % value in worlds that contain the compiler. This evaluator minimizes % top level latency by only using the compiler for expressions that % contain \df{add-method} forms. % % \section{Miscellaneous Functions} There are some other very useful functions that are part of the user interface. \op{apropos}{word [place]} \doc{Returns either variables or symbols containing \emph{word}, depending on \emph{place}, which can be a locale or \df{symbol-table}. \emph{place} defaults to \dffl{current-locale}.} \oop{\%gc} \doc{Collect garbage. This does not collect garbage in ``static space,'' but it is exceedingly unlikely that there is any there.} \oop{\%full-gc} \doc{Collect more garbage. This does collect garbage from ``static space,'' but more importantly, it put everything not freed into static space, so it need not be transported in future normal garbage collections.} \section{Debugging} The following special forms can be used to trace the execution of an operation. \sform{trace-variable-in}{global-var} \doc{Puts a trace on the operation stored in \emph{global-var}, causing a message to be printed every time the operation is called.} \sform{trace-variable-out}{global-var} \doc{Puts a trace on the operation stored in \emph{global-var}, causing a message to be printed every time a call to the operation returns.} \sform{trace-variable-in-out}{global-var} \sform{untrace-variable}{global-var} Objects can be examined in detail with the \df{describe} function, which prints the object and its type with \dffl{fancy-references} turned on, followed by the object's internal state. The internal state is organized as instance-variable blocks from the object's various component types. An object's internal state usually contains anonymous objects whose printed representation includes weak pointers which can be dereferenced using \df{object-unhash}. Together, \df{describe} and \df{object-unhash} constitute a simple but effective inspector. To simplify this process \texttt{describe} applied to an integer which is the \texttt{object-hash} of some object will describe that object. In other words, \texttt{describe} can be applied to the numeric ID in an object's printed representation. \op{describe}{object} \doc{Prints out lots of stuff about \emph{object}.} \op{object-unhash}{i} \doc{Dereferences the weak pointer \emph{i}.} When an error occurs in our implementation of Oaklisp, the user is thrown into a recursive evaluation loop whose dynamic context is nested inside that of the error. Several restart handlers are typically available in a recursive evaluation loop, and the \df{ret} function is the mechanism for invoking one of these handlers. \df{call/cc} can be used to preserve an error context when it might be useful to restart the computation at a later time. \op{ret}{n \dt args} \doc{Invokes restart handler \emph{n}, as specified by the list of handlers printed out by a subordinate evaluation loop. \texttt{(ret 0)}, which returns control to the top level evaluation loop, is always in effect.} The following dialogue with Oaklisp illustrates some of these points. \begin{verbatim} Oaklisp 1.0 - (C) 1987 Barak A. Pearlmutter and Kevin J. Lang. Oaklisp evaluation loop. Active handlers: 0: Return to top level. > (with-open-file (inf "fone.nums" in) (car (read inf))) Error: Error opening "fone.nums" for reading. Oaklisp evaluation loop. Active handlers: 0: Return to top level. 1: Retry opening file (argument for different file name). 2: Return to debugger level 1. >> (call/cc identity) ;get error context. >> (set foo (fluid *)) ;stash it away. >> (ret 0) ;back to top level. Invoking handler Return to top level.. > (describe foo) ;inspect continuation. # is of type #. from #: LAMBDA? : # ;what's this thing? CACHE-TYPE : 0 CACHE-METHOD : 0 CACHE-TYPE-OFFSET : 0 > (describe (object-unhash 802)) # is of type #. from #: THE-CODE : # THE-ENVIRONMENT : # > (foo 0) ;re-enter error context. >> (ret 1 "phone.nums") ;resume computation Invoking handler Retry opening the file ... 268-7598 ;got that phone number! > (exit) Oaklisp stopped itself... \end{verbatim} Using the error system effectively is an important part of providing the user with a helpful interface. Details on the error system can be found in Section~\ref{errors}. oaklisp-1.3.7/doc/lasc-oaklisp-1988.pdf000066400000000000000000060452241332762442600174430ustar00rootroot00000000000000%PDF-1.3 %쏢 5 0 obj <> stream x+T03T0A(˥d^Ue`l` - r P  p> stream xU; =; h, @hI^+7L&K:F5#g#zvT`DSCزSCkendstream endobj 13 0 obj 99 endobj 19 0 obj <> stream x+T03T0A(˥dd^Ue`l` - r 2$ÕU`lalg64441P041l9endstream endobj 20 0 obj 95 endobj 26 0 obj <> stream xU; 0w=Aܗ1XhAldYX+Cn)B8,Ww7`l`JhiN/YX`endstream endobj 27 0 obj 97 endobj 33 0 obj <> stream xM1 0{ž yhz?"*&(0\xLjX/dPf쏻2yOь2,.@D͵_<`8ixendstream endobj 34 0 obj 98 endobj 40 0 obj <> stream xU1 {ž6>B (D 3lpb1#?e$ "h>q|ToDIS[+eendstream endobj 41 0 obj 98 endobj 47 0 obj <> stream xU1 {žz?4'ژ)fMF%K3و"DG"cK$J'd.]9r}dmU&@-i{K endstream endobj 48 0 obj 99 endobj 54 0 obj <> stream xU 0C; Y"E/Y2㖨[~S& TgDrutЊ2gB80R~chnyyendstream endobj 55 0 obj 99 endobj 61 0 obj <> stream xM1 {ž<6>B L1l2l\> S/e PfbFF$'E]H)Cg ƻfeU6-azendstream endobj 62 0 obj 98 endobj 68 0 obj <> stream xU9 @yE`qh 4`TP U@5I54|J"n7mM鷟EFRkmJ\sEuX !@ endstream endobj 69 0 obj 99 endobj 75 0 obj <> stream xU90 {b_`vPp(hJS! AIm(X~SEIYV2[BKlmt._Կ\Uendstream endobj 76 0 obj 100 endobj 82 0 obj <> stream xM 0 D{Oq|{(ࣈ%]^qVHnNCDpVpN .pIklSa0aP^w04|endstream endobj 83 0 obj 100 endobj 89 0 obj <> stream xM 0H0 (b  ےep%S3EzR!1xfjDAnZHь |S{Z "fP|@14>\aendstream endobj 90 0 obj 101 endobj 4 0 obj <> /Contents 5 0 R >> endobj 11 0 obj <> /Contents 12 0 R >> endobj 18 0 obj <> /Contents 19 0 R >> endobj 25 0 obj <> /Contents 26 0 R >> endobj 32 0 obj <> /Contents 33 0 R >> endobj 39 0 obj <> /Contents 40 0 R >> endobj 46 0 obj <> /Contents 47 0 R >> endobj 53 0 obj <> /Contents 54 0 R >> endobj 60 0 obj <> /Contents 61 0 R >> endobj 67 0 obj <> /Contents 68 0 R >> endobj 74 0 obj <> /Contents 75 0 R >> endobj 81 0 obj <> /Contents 82 0 R >> endobj 88 0 obj <> /Contents 89 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 11 0 R 18 0 R 25 0 R 32 0 R 39 0 R 46 0 R 53 0 R 60 0 R 67 0 R 74 0 R 81 0 R 88 0 R ] /Count 13 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 9 0 obj <> endobj 10 0 obj <> endobj 8 0 obj <>/Length 138196>>stream x+:{\dee%D"H$D"H$D"++++##O&&mZJZks.[P4MN&AEL*`:PӁTt"0@EL*`:PӁTt"0@EL*`:PӁTt"0@EL*`:PӁTt"0@EL*`:PӁTt"0@EL*`:PӁTt"0@EL*`:PӁTt"0@EL*`:PӁTt"0@E&G#Kt>u}};Dqח`G~i+{@Eޚu?w/Â}\;23t{?Y"WZ?T~bGEV[`FlB,8{Gڧ` *ҿ#_z#e<|S񈷵ݖ 5:|^[=R"|/9.>4?̓FpN]+߷ڿ^*\-w7dUakH)&TËTdB٦?ZwCpA=n1 X^+Q 5C: iVN~7TWQX1{;{TEP>}(t4Xd5Edhe!\"CHtDgF!73yق3;3 =O[J#Yۓ1 sk~|Dё3;*Ҷ>"أ3c2Nz!Sa{Q k" 䟡YE/\jeR -`ZGD_{ 2xV[߫HmO?D CEaޫYh W ># VDĮ˰.8zy"QѨiYߨH!6CUg#]])ĺާd6iuWu']"j4s/;'}#xkF##"o}^AE/Z0ZP8Pozv&M:n[H>"] dDJU]}7zgRtt#T$v=CNg T"qATF-XG=d䍊Ĵ"]Yp]W -#w+7wHk+oO;iXEޏz!*zSߩ/>Svu"bJFQ_/2ZE -p*_wBx&FJ~ЫH<[FIFE"n9FzXdM;TEZR@ʕj@ER2ְhJ@Ew*t"AE~۩AT;t>"H{Ps_RX *gGTeSU_F"]W\>i&$bfHXT$Vb?MlST~z"2i)sł23Sb@EL7{?ﯷ*Wd$No:V*2(#XE=5s?"#M*v߳vގA17U$mx4p)CGi&"~T.ߧ"[mn˄t XT#TۛйJc3Tw h)XtⓂ|,"ߤ"_E>T&9 Kj?M̔G_ׅGG.ܿޛ j%xGXUlou]}aQmTs C4 "_ݳ[mg`;mW%vTO:ZuPI7G׈%zxw_-"\G悯loo&H\X"@EH(#]{o[Q{pHv>S$fwN=Þ;֝ċ9wXOoP#7N\W@udOχ /b z9wv:སk{i{Z]b[tOo6^E:'Ò;#wayC(ȧ*9_^C H$t- T)Դs[ҏ|% ?wҾQٽۑN[?P~_T3/#{/j*O'Uw Txig)A8w8>[e*[O^"~q4Q" o~?AE=q8w*Td9&uD[T_^K?{㭌_8OYxuVs _ғL6G?=Rb"y:*GG=#e^c%7S1BeQoUAr> "KzHcFս, R.AS#߼S>ooy‹|tR /FޜGa6T}躶*Ҋ V~{cȽϕU5$6/lTE~]u=CgaKLL?|Q>.W lӄ&ӈ^+Ԉwc7U QakUdMCi'a <*H輧\*&`_7[][L x+*2V_h }oo; @E_iހ$4vqnJ$cݾUV}KǷ^Ty#BGE2I2w"y۟qv:}h{'kd]^Tg'հC;d ZxPީ5"f>,J徢" \<_Pz#0[Gu׫"Mt/? 2,P|$:7AЯF6 {ѳ&iV%ERu9ߨM?~ np$w̍Qϼ]u%*D߶q}jJsER|tߓ|e/6%5l@g4Ta HGcO 7$cUe*[!1"|Fl#_ V4,^QN0B>utop@EYZ"*Ҷn;~\$XpUި˳vҜ}j/ꋻQX:{X]tn8 |*ePF?VU{Ȁmu~4pp>ma$;z#^y#O[(@EY\M*o:GZNVw׃*~kC E 8UXOv^ƪ&W n*gV8ty߮A*Vgy+}vZP _F/n7v6n5uӣ">|OrZ;"*{bHk >ct/W%_YG /OPzQou!d|s#~W+mUI{*#.0ژzN-YpA5HEVۮĈ\%_sVdzm5[*^T$q w/2^E;+w;*)} =k"g~Y ޫHߓ!"xF'ߍVYXsSU0VEBN$: :A=c"*SU$Fw*~_JZ֗w/W:P_?4WkkXFT]M"W_%HxaiǫjGȐuЯ"9AXԠ?"`m6|Wςs%u#TYZo]8}KDUeFH?Wt)PQ[MHˠ~*T}hS{T$~TX}s*_*vj!"*7M4*PGIΘ |"AyFiLEz:QFHb"Ȉ"aڿ~=*2(SoOگM[*2*58f#с|.#P-I8FE:'ydSHd ͫ9CWH"}}}/b}"]LE"qx*%T%8^E}8>UY 7T$RX @EYӏ#;t^ Fzhg_WW;6 t[*kO ^`ozK*ҩw*2PA_U]*c~"Pto4[ȿ d8kU$&#S1|ݿZ*KsV|#;~ .c}[]ΪzE":PGDa=qN;*TlT#y"j h".;U2FLt7;XިHȝ!r__ S$\w)T>.I#:;DU[]T7/HG ;ÁFk$F.oݟ " \;E}'k@,_Tmxw1&;:WN!G.4]ö7KhitԡT3=>UUOx鞤WΡxw3{PbGH#+~w:ރ:y,{WG?1wwO-t`}Zֹ"E>I&wU.?{7*Tz*h?S=M+o]~\֩`jsp` .6GTfrn?] Ɉnw+A0ZE׫e:,Fۑvo"jWba2HIv޵#h6GHS*EpKwp!=Vۍkk0=q(b"8ڿ×E/r*Cn#5D ˺wͿƶ 7ycsW1]=L̴WU7~Mmո̥?:y&Y,_ߙ.L^&|]EDM8~5_S>>}4}UoUWTD LV R+~UrVV\[C#9ubKO7\_a O*|X^TUz^_"_f_!;2MgN>wWlDo<[/l"ꆾNkp-K\LVQSK|b!Du`m z<ZW_"#ֿr%*yeiy }[KT'">o|${N6ϙ(Jw߾ǿI*"X)klj=3񐽜$WU<+ٞ^N6_C_E( Ht"WYp޺ ;ulw,*CT BUYT*qtS{cCӽɱ!*Mhbo=CU<ɛh esdW}@&`eqj(~\>myU-]VxuޒmMWۗpw+\.kv*01[fj_ uaƩ%7-&I>e5,~+y{lcbvhF&sWr{&:"5c\BBpg|*귎va;Qzn6ݾV7*o@Ƣ4E4OWhx2]oAU]A"E@㐔[iRJvHas8tlO_晔GQI$]ocV2 f]au,:/OY\y^/c'OڝQ휯Hی[S4;G-Jv{rVesR1Av s7^$_m)nG{g%E+MyxJ.l QsFS܍ISK\vX߰mӯ/$l/\\&Xy6Vd~\vǿqt3x;gQK;vJHY^׌ehծ## Qo!_<ABu'N衏|9"_x{ڙx'L53OFΣnSe7fe1/C0 MN$Pd'>efMꫧo p="xLԕ] OQr7KSNŐq&xfKQQ bʳŹ [(TyT7|uȋM{iYiE{׆&Xv7HkG_%*&_o3FudI9V>>Up9(2v؈X/Mw뮃v^{6x_7bz4٭ݣ3} ;aMkG\l();o:f_ *:=՟lqkG& e~=t=̘˞Ҭ~Po)#MP2[FeX7.#8#)wrv\s)lۼ%;)B9&rt@ESQT4 a5uI_%ۓƭXˢh&aFǾ^\fTl Z tC'h^[ ?wwL|"Gzr ^ѣK?DkUqFv^̼ȸA9#J.H*N=/ k&ƛ+uIzڔ74vټ=]' y\jb羈Py|%%OlK& xD_x*{uf@Ϳ8G''K̇XBMz٣QAmfK)󤧱ITF*h{WPodq6r%M䔤f!3tlE6vzV@,Zk-rQ?^O"Gv1`a>&^_N H:% lB鑌yOE_v eciS䋢p Eѻ (,Ͻ1һg߱^<fQ{û15Ҭ /Y0A y De/W('W~=F *^Uu)4XniXzXѤ(J"dٜTVO{n%2U%K^Qki(B9k?qj)cz^g:tV?՟uM8?_lsx@&њQ?o?|q 衇jxRzoc*w^{. %jL`yrVsaMl筟UzETetf1 RukN9QfċYu$R@X5_S(6cBGE&*oJݫ7I]E ;-AJz%q/N^}"{xؐ٨pWd@2UR;gH#ZR6R )׬ךOhX& 5]7Q팈%҈t5VǮ3WAyLZWv,2&q=ZFV$(@u -|o8 ˖#ڌ7zCЍ=գ1vcJQsۆx/uƫ36YDeIzT&p^ XVn|r ?,|+iElq.8ڦU؞lQ?^O7rq b .$csH$.)W{QSr~Yw EӆUSlj/NS~?{2Y|jGn#BʙAU:ۮmX*67i#ȇʸ!5lu^ ~HiI?S>% ;z..眼Yɳ.kU,{͞Uk'y/31˳|_խH*,- tBJrfr3!>&5Xfjy`?cUeN;~vUD$J|JRJ̫ZVtjuMW" ۪,EmaTDndp^U%[K^r9ҮE)83ejX*#ի,ʢb𳍳)Ea,őf f{٥>`⦽˂[VU͓JɷTW vR7צVYj8ÎO)ldy6;蘭4m7lY 2v:o i&F !Ϥl0Ϸh']ƝPk7ve_{lyʛR [9omV-D}|xd*b ROMʒ}^-l)Ӳ~^́WU3ъrKX_Tx.}tȞخQ o]]nyq(wr6_YKR3,I@W&1ZEFNf*Y5)ʝ'C!8חMgvQ^'*ϲUY^KLUyvSBg$s=1iUފJӌe9fz$#\8c.Nj>fv==-86)N4KםDxjZ/d/k~lpI?dѦ,bg7+=ؘxluw*_J"pz2c%Bi;xɀ"ݥ4|F֬|ER^hruxfmS&ۑubŅv ahcj'C aݍvC"i&FNk5*0l/^ajX7Vu #$玊‘ht7 IcωrWغ~\;bRBhgm6۽.v^ڥkeRq~sۊ?nVeڮ5EQEvza> CIǧe7]Fj}yܥal$mo;/FD8S/GFdG.hnj҈x,S[bSc7'kE-(3s 'ϯW/.Mn- EZ1hr lM6-eU: nxlfYDcB\:i\ȷ\md5gܶtשt/X:IrspY!Ξym_XWBݾ9NDz3If^::˽M:p! 9[,2Q^҃WJ\ F,Y-7?ecOvZvoK]9B%uNV9Ct؆%[.>f,8ߕ4 [&4FI:c:@M3_-3 wJ/ǼN&b>7'{z}J# o(6ףyK)V 7im^8":[ӄ;/U~Kݱ~.}ծ|(IlV9m\mCN{l]dEqB$n23 :oJcbŶoFyRݥ6=/Ns.3s_azk["NN$*[/H"$6ImTVL~<⥟_zWY}BLrzj^^!ϥ\-]n.űt_`*LZ\.Lkv^&xSx]q2 wr85D]UwCSSfߛ:c %nb6kdo#^ןߌ' Sd{+9 VA$]nnR#D-PXKY(lf4E0`l`?RƄnfYǩP3'(?*ʼn9qKIh횧7nvM qq73Ó{.HCH vU6]2MD޵'Li\RL+9SSerrݖ%.Ef.3v?.s첢2'Jdl|Лy7 Pu i.N5Y]TUDvVWm=Z3l5l3Ցz{c.y{Rn7ȾR>KJTX P8{؉M Ho(|r;8gdJ62.[M} #cjEs-!L U$B^Ǜ8ݜ~l+ks:K7hMs㽕z#fʜ1UpZ|/iJ)6q*Ԛ+.̦k=ue߇f^*bS˓^"+tEeNH#L kv^$CY9O܅R!(xfQY*[Ԣ44z"CD5K}EV4I3H<=J`SJJ>Dعp=jbږ/ qk>ȱ۝삩ȞV1|g{R)&%~ (* EE$lBuFEը)$+6q'R:s8fe7 o64b2gdļUnt3(k S_;aܢMVxNs/K%h?ū [9.[҃Os|)SfɌqQFϮ dm-KI5. '6H˭+}-8X}*j9H;w%-׬7 $ϊW[r+.Vao&\mx()JA;=av}}06&VȀ1фjw}JNNz\"7WHQjTr2EsZўפ <}h̰hs +^ˌfUd%벾G$YÉ]N9nZdt^-?b}-N3+G0 BQ]AY.W[HQk \kS1P>]9Duw3f jh>Z.lEyfOgxɰۍ Y&ϳ[J[sL>gh3nnF2=ә|N UjYӘvz]47JU>Hf&(g4y|nS۳zxr4{YB0ZlxSp U4z=qvj!PgR͋U3e1ZXhqTL?"+ε3xyFu (.mf:Ƽ2A#\WB_E~.sO}GN!Hkc=ҳA !nI,+ǛEQV3^Ww78um[+8*Ek3n3I"NƳ.8w*V'6{6H\T4HNd׹wR39º_[I2pС('pr bv>-жL}E#TFIl,I EGܖWj!jLU3GljN*+ {[_ 5[!V ɺ͒f6]2?-,+ qqV~ЊOBԏyn<AIV [}6!^iGׁWX̔qƓQ#nŽIGOʡ~{nyt~[{8oDF\=g`gZTƃW|f:6! oc :-ekk'p&'[= syG-T#9 ko'Uyֶjnd9Iy[= ` 7aw͹ijY#[rQ7=SJ{1ݯQ^ju ]FHsM/̟U|FEΞЅ:x}33ƼiH3H)L0H+wq?k+Ue0vڕڇZ9zv>/U)U6].=1ɪY;b/1yق&zkZ&|Qꕥd:7=9M|pypCfAb}ף*" *xåh\e=Z0[oSi &'=NqnMYh=m1cFZLo--33l$4V-*~kV؎"_ :j.`-U0/CUP?Vl/i ysÌTKmTuA d2u!WIp9 ͥhV9r"֩`Es& !KhyܐЋ?6%Sʡܩ )!.Y{&U*cI3YqvعCl1t~6X!ih'ti\et[o:Um'4Msg;j?)Y̊K ᢸ=iZ>YrT3s{}c5}xos_dQjBUthe[.Џ( /l"s+kaIqA0_Tw" Ϡ6ִfM-d#-۬TWӊb)+ nW#݂ri^vT2OʗsĨK i.'[`6cXYͲVi&X?uVu6:}fY{̨q=y–$$#XiYl.+ʹ/&\u&4`CN[X ; ,I'0ʭTrBFpT3$e|6Kἰ{/K|imHD*˚܍.M&i E,<7[5l47F&:_+I^R2kmb?誱KA) IyOIg'x1Hja b&_7tό5K3"ƙ>srI3H&.7T-WsPx*2ћ˷[uGer湴k`z a25*eJpvDⶏaZL r+Q ],/7:T7$i6^; q@]jqrh+jY|oXkfD]\WDǂhQsE=E  ܾ6^uoGt.gT0EҿTcT0uUm Src4ڌ9J9f:Ꭓ|/p!']azJ>Q]*vte: 5y8Wf& IY؍31{T_WcL{y/+.U3uQ|Ҩ*BPtƹM4Y5NAqp3N/UǪuI.,RX~X]L3 m[?n]-a$3@V*օ[ܧG?d֙}I(L?}c69hY(KkȰl-%5fT>vLk|FrAh#UT>X4zS+ܳӒDs]@5ygc{sͻ(ٳR͚ߣ]gMת5GiߞHHbuURFDJo;wr=U(EnL<}۵J*[/t6UQ_'V[ۤ|D@VrΨ]PVΈz֌Βf\E뀍!RXqhM̂VBH &3b3 ;DQB,LeS$NHSΐ끹sYC_Mr2 7+n7Qz{R+`slY`KB5򺪕6Ҁx_EZ֚|TDPc(e^U 7M.1 g&oisrXV3m'cn浞fltLuj3(g|[֔Hc'\QK=Lmi\WEy^?lX37#f',)nb[ߺ!T/WJ,NƿPwƮl~.&+X`([[?xlnU!6|MT1֡6nTʾe-Ϲ"n{VOg.GC ӦeҿAH7 ,m9LhW{܍><~'lcol>ʍQQȨ?0۴Mή̭) fB,!6>dqMɭ{;Uz^=Pscrw]`enץZlrB07/5/ 83SiYF'ję=\(F7~k~^V8ANieZl|Y'6eDsh4vR1&Sf^[ߎq&EX8S84N=\JEitr1 &(:VF>zusQ*}dsNӸ>W4M9z({vT&`dsM_wT Qaȵ.MB>=lv.q&fNfx_ٸ\RX{ ,b7aۊBs͘9]3KYS.,Gfѓ˷bW3Q^v2Uum]SJx-ٍ+{c h4mb9Fgw&k0~,b$aW-L,/ra^qayձ6ڋjT'xa4Y'+oaRufV>BG|53fD-G[xjgmʔVvJ2ؽHHyē]|i`Hz2=o;#"nל›q&$Q`?]?8K9LdNs]*tio?*FwIdzPmgd̂Tʢ6=HVzvje)*9Gs۵O]]EbN(84MGO.xiƫzv#ޖw>v㮦IJBOuB ̬qa,vZ\nf"%iَk}؆wƶãk?蜾wuM5p6[~Aqj٩q~y̎9UoLԉzb[3V**k#gS3xU|_B ݏUY>ɌQV11mr6v~ n_.]&*y͞3]tj /6einQQapJ\->&R=&'FW lo%qC86fѲl^>ﻌ~vR=3WFKs[ns6dmָYlWj4Y3 Fe<` A`)vYSOe6` (cΝC#_;ol%L` 4cmG[IY&Y/b׀5Cd]ET.6JL3k)EbUϓ4^2imP\rе=l"1NT?ׂ$ NFGZEe:lsk]M6*Nq(6K@Zm&%X}ֲsxS up$o6tpr-T7hV4߳ P"b6hde& l,m|ã!Q>!S3+bџ6{MTYdKG~љSA'w&se9?wD_ b_t!yoyo27?̓B*^O}i-뉡pAmV.yJ\ Wwu.< ՎQTVw/c]8S(DF\mlvo) GV'5sAn uxvJu7mob{լ [`Uoc){nlPyPjzϵ򐛩s3"!JZ8R`Ei5asŒ:)(GmB&)t6  ;Y#vx8*^VT^Du'cWomD F@ngz״#k1 0cZԤ[gpm*]߄σyFƩJh.zfA96Z6P<6&I[d6/`Ztu-s#;sVf1a:3Ƣvd,Oeksm71B#?)s\\jl*뵲ܫx{/d@~Yx@g k.Z7gKY;)Rw!\h7!ܵuQ^F"-Pf'q ,1I,pҲ2s5QR`ar] ] rv\5Vgx(^>mI`VޛU}pj=ћ]1fۍz(gsi}" >0;,īWb0]V;wl7i!VVn7ĵ5;ɥL^j:B<7}cO󲶳r;s 7gi0^|K7T 3N?6Ӷ&bmS-I<$=(,|鬚|M]673qdLwjVe pzƂqRiWkObeUy-~Pp[^7sg\^SW:p*`ev,"GU/4ݯ!,*v4iי~-X%dWe,FR%5$lcz#lC39ɷ+ϏOXEq>U;dfҬuɫP͗!vaqb}7Y^'vϴ !Ec^DYJ⯧ݳm *ǘjL:7jO[𨞼kN>=vl7cY_3NLvq/:6 5GX.3k3pMx 6evJO#AqlJgES5 )l&. woB}7[:^fV jO%iyPoNܺFiev<-Y 4&kXiCP{Ͱ,;9 KK&ҽ6uj2І8HjڐQM>Bgn|" bY*{NbjjB\7$ _qzNe(^M^6*kzjj,_) ѽ[/ϢTsqfmV͵8ϓ,W?:^Yz 뫻z՗=i,(im\ㆂ .\XXXXXx\iF_~lm};ՆW?t ֣ۗͧaMSӏlB~z=PO+}8-g܄&umצBEM@_6Mzk+tѩ] !q7NtqN2}Ѷ놴ý˟/ `B+J bB \iyx-Dtj{bq| l6(t+gkVU߿ǧnv!qo_S_vXyRv8],<g/a5m쾟7`}'#O6~:>lxlڎ%_<~z~eN:(_%o?vp_MԎ/oC ˞05m"ߍ?~6[[mli=t7om^FǷݨ!ۯ_䥱Nn}[ pv3Au?m/i~o~_;<ݬ݌ ڄ>]p3'qW7^ŪǿW;8uB'}pòO|~ujTye;;6.yc;ׯãC?w Ovw6E܆v{Kֺq^|Be/{n8.^KVa߽p+鹿2\m{dw:븴;OLl>Ⱦ?QljAK4sstouwOβdͦQ#UIE~&N{x9˷l޵CN1vhۯ%Cyؼmfs:Ft{jFi>?=eߏ5ෟ=7Oχ >=?}E۶#YWuKrsd;h-9? es WۍŸz8X<̔WOW אnLmh{MŰݶ:}?G<< ߛ?1קM"/?_u?ݖ/ۂv)pTՎzV;^iW4:Cl?}?5(ySa}|߹ Q&U*rzv%u&wLֹy}{^Q1o1y7mC|:bvߝo7 p{u Ǿ_w/vi={_omim)؇O춟nB]$y{wv?l#%ylvv_Խ,ji߮ÃmyR]v/nEt߽53;*S:{ hyA_W<-{Yx%}ou~^Ux9KhwoIMZ~|zji?|n1[; ;5 vĉB$^bx-6OS?_4\ oMp7:cxDa]7ݱOϛ/3`f]G)"+v4>xcL?+_Owvӧo})|ߧFr}PXrOosS^쀮vtdw >qzrAwLQNߧzz??~՛~Ŵ;/zZ1x?i>w;TacyEEQ&kޚ-[d]>@}D᭬qmw]BOS 8]PƷd~| v_kU/ ]{hsxq+lwvnں[ݵۮB70xalnZ%u]S77~w6vsqLy=<%xh}isP߿-.v+ȧ]O^}}랅q_? 'vO[ Z뵏aK vӜ姿kC67t==ek/gImZ?ʟ>oϟ"ll_/{-"j/>K{ލݯko1ocx9t?9pKbv3EBMor綳ǯӗvxxw ESqŴ~uSGtbߘ}}c_ww#nS`=uff{wϧ;Fw+[NBY*rxK=tAv5aonStۿ"{`yZswivm7އvxipKpբ}hyAaЮZlMc>71Os i}PˇcLv3 pчn7o7ey!H%STvfN{S_ST}/v{6ۯ_O+kt#ϷVۨ /OO[=nu{dNdN-~x=mX۽y8^pɷp==y.;Bƽpm$/Kп-ĴuϹ?]5n>n;fټ~+>>OC7@O]U9_Er1 /C>LxzpME_y91ɤ)^=r۵CD6J˭_w?=5i={_@?u˗kGv~[ l6*{wc#joo[xcU]}ݪrwYذOn3҅f,:nкg߼ҟ8]DCT]iP߀t2^, 9|?]?}]줢n3r-쮉?7v^ H#Va@" ÈNVUPt6#{G+jL'HÒZ5hZt"L^9vc+OIELDՈ͡@&罳]H?*wO0aؠF?"[pyY382^2uT/Ɩ|uQ8jRۗs܅FX1 Wz/wIUYRAVHbB >x-C7[.T2˾9޴3V3kv o 2;4[8x^p0k^%қ/ܱW~^Pqkk 2/o8:K8&+v_\ۋw1VvI\-{L6}7=pxV [܆}qR~~9KU^u7 ?vq'~/+x{ZT:abWO}ː?~ aϕ~7rm~?ġtq M1w3;r|YUfCa%j5>0<7 <'g]t'߀ir,vyiʿ uՔ$Whzg}ߣ%~e Sx_[x lCΗSo]rQ?sV\us }r*"Cw9l͝7q}m{Mx}fܘj~>)Yu?G=ŝWw#{=LJ[[QMU?8BQ;O!Vdί?^}+Z=ƼC{5}CY[2Mо5S`@8 fQatG-X^$i@R608euVQ"/T8%~4OS92*",xb8&Lm<r!'-Bǩ^* PETa*84]tWFq[u. f}8Uƌni-"b'!S5"P8\Qb7j嬓e5 넊22U^cBdLgZ`nIN %Ҍy ]PRFGJEGERȩH'|͜FW{eD5F%΄ .TVōE"2CEr2eyE2l|'$ 1z;FEo5=q *bU*b[|9dĨR3U_`v/6d#-LpѤxEM;BElɪ8"J\ /U0QحϼȈ)74Nz7ɾ:/;fJ>T9"2[EDtBZ GjB3*2WǰTr|*'Y tTqYPEYqWlD3cRElElMЍ:o/^kKFEW5_taK*E2G Td"}s/x*2Ue4GWH0^)QUD*"H.p"/ ^'`,hi[`_'TD*XZT)ff^|(TD͐"`W涪d1 "ҥBBUT^)TAZ"N0a#ZVT.y)R([@E*pBJAQv2Soa`"^qK*EYTQ T)&K|Obr,"JX 6@x+)>/T^tSx\@Et4Kn$d$蹊ݻx*2;67Mz/bMm g BRWi4 6Л@ /}sqk.-FmVp8˄sK!MHOHbRH"#CE 7O.u@LX4j^ؔJB_nRKkcrzwً': ^d!KoכB!mRS摊zU-ə*]ɶ)#K@n7a0^KUt2B>?^B*Ni>ET]\|gnK!f 2ߤO̢ ԩ vW,*U2dz$|2+87 M.+,")9r" 6RO^"|P d,Q'JV+Rxps^9oj@:&MQ7FUMWN2#UtB,t`**]"vȨH8DY{ E[2&)؋Ll?{cX•t҈H#yq})pBxr}^{sU[YMjY"ߖێJ~b~F$H;9[MV5"|1$Y/%xQKG,S`BIuY2ta?}h{ET$)#C1_ETȁdN煮[3|˧SdJw0%y l4N*AˈScj B @&k.F6_"9Fr^D2ӈ"ءШIUgSF<hAB}Ϙ=E4f6)1q?h;^E>,ZP{MP"/iA-!8F"p%(1EdlltHD6v4Mi%T2޳{æ4#.=Pk}E,"zx2=~9I"bBH,G 닎*!!z"BꡊB*B!!z"BꡊB*B!!z"BꡊB*B!!z"Bꙣ"e/WZ;R!Vwl/Fmٛu ;!D1J k/L{EFovǣgdOxPY+o2_Ewy5/w_KSPwvg"r_t=Tcv*rj^=+JyvHInUUDBŏE H[hoZ(sg8uM~jި9 a~D/?走H` b,zaR^GXT!}r?o/"b^CEJ+\KȫUk1[E" eԅ⼂9=O.VӭB#1,"k0- jU"g~-2CE")Iv%^3Y;8r'TB+kF̖*g_]E"EsA)ܕ^C:ȋv=sU<3q%ED8OEd#D⊃^clR=@ |ȁq$U-JdR,v|֫" 1k ɋvz$Ged3+*28ŞAr 檈|y1q<6rz'&[`R9)kM:U%RRO̵[]F];KQNDhNgDY٨P""nevɓU." [+WQ{1CE,KiXIOh&T~5aϠT5N2Gm IlMz8+4YPX&O(J:/]kQ>-j*.]@B␪sJ}T*ܙ*o@ΙYq4z !2iI]EzBp,2#/9GiO͑6@jEVc` ,xeRGn ۘ(+َ`Lz3 @U9mh>@T/pL'R )WT .z6-Troih(>aEH2V/^!wK ׯS4AֻSuBEEG'j֤jd,?KaW+7̧TEbIf"wń}E2խD+HRU+Kɼ-3)vX4 gW9Yݫs2L{U{WmRMy 3 7hR"aؘX AxӽMUD^ ΩW>'+{uV?p%w /~w 7jUUd١ F~z>z2rFU{OkȌJ."͹c8`j 9 7Mɳod50]p1v7jnYѹ:kqHF o&.?9*XmFV"sdh.!Rcˑp9Iqgou\ dL0|)$Ȼt^g Cio.Qv竎Y*r9*@RE&!,T$I_6yƤMd Ycscz(Av9b X?!~&I/t[U I$iDE)ʲ(d&p-/q(Lbfww"_"ziq4n6p:)>)K %>ʈćuT0 ƖѢ*+hY.*bKr pӱVcEB,%rD(R s^OAUaɔ? ?f83LXo4Z'캽Bc<*Le UR -DE "FPp,:vѬ Fu9?XJ7U_y05Qz45s,8bϫtURޤ::1ioROGu :AMD\CEaXETjҩ'8. Ԛ fpd=I"`*2gH#Hu :!*uND[jTĄ|Ѭ(7ڊd *!'&넬$bVl׺JX2( L"C% WN |(`tۋ$i]P!^tUiZy\T䄿BY["FӴDl s97Z~e '=U3 #1+~Z!(ctбr֭"w-"a5$&mYQ IQ&[I)\T1@aiI,)0*FdR h诣"C|Ui'n/P[acvPb*pnç%SYS[YHQ4t/p -q|l%ɚV%ߋik1vAnEF;Hln"eKAU$ኝ|񤶜Kg_7I2Y6Ot GUŽ;V~*RUnC >DEM"Õ6TֻFAx|Ul~?]܋\ قv4_Qz2[a-#=Է`r֜ɢ}*҃T= TEӬZ1־x#nu]5_=@oZvqEE \|rCI3-Z\_כ1GOEF><Cp=fmdtV3Wҍ.XREEduA;|~#Kqa~I!8 xiU /@uL/A.W"Rb<;7f|T~AIp/mwaЉl ]ٰxEkE*NgQ ΑU¨P2]2A1`mNjߴlWA"׊"n*ISkz^/5.pϩYNdUr3XE'u:6Չuh(BhI6yYYr8Q$  @QuʲHwUa]rע*rE!w[q]*b":d$ܾUy0M_$*̖-rZc,mt "d1hj+S(He}4xt?MtI?k Lt˒SqV/]]b6A8Lw"QEQERѶ49VHd/UFL*xQK#"i<*減1V5dKeT e20OEdZDWIH8feFq0s:e&hBcF̤ȉn{*MW}3+g8҆Һx6I R>a1fGP;PlXuRyqP  ?ZV<Ր%h A*.V&(W2imTJ1٠?;AҮҌ 8\hg;.C̍0*/^by_!gU@-#`m:  FmPϩ Y'khD@gIX.TD}$"^?$lL&65lRt)CuQ"ҝ%&sZ4JPH3swYtLEEia9@UzRB:B|"iMU 鸧bP4OIژl x OP ͨ\B_iĢY\VEr*2h҂g##sU$M/q >:R&j]橈_jgۚ/b Ԏ|/!rkT!<]cJTď2*C pndRTS$ HDW%PZF[W@u52.N^F$C`.nx1# ~,bDY|y2WIc` @fs i `he밎c5QE+iJExĶRGU`pUȔ$KᨈJV9T"%ڼLNL"2ƨDzKTMF OFĤR@E edxz! >SuDET%0D6)43UĤKLL@~eHEd\Kcrq _Rਟ+y˩hFgSLv}]DEQ$*7[ ]^rG AoOVW~l*vH׶B9PráBEPڍeoY~)JWWzX;XQ,QSӑ;"*"fF-}>@4"#M $gyaIcu6xkayr*"E'pDbqXڕȘU-YJ_ 釴*V-O&q}m/|%GP!ɌqJ饱Bp:Aq*H*2`TU!ݑHc`&l v}rD{ /E5ԘAxTE8(˄gLQHV/DzO"&[7٢ F"@iA45,iWZy]bLl 6  0sX8͌С{UiH("C+&YS$le42Oy ]T"ɄI*R#W[PKT<ʄyՉ}6QN;G{P\ȏ$"HJ&EO6F?PC*$Ψ8t F>HDع*"!5tPd2*d0*r+Y\F w&#XGP*頮Rb<0YY>3}2>~e%d(>h%D+./ZW%>U䃣%Tj9K˞Rk4 m(2+Kquz$ޖgU oTK _A#5-INsU^Kj&H$W]E=MݜA""J1k)+1aKkgxT&2oTx1<rT7.GRZg UpD䎧#)f*V[g U0^K"9>XX_QE~{Ct/? tO 5!?AοJZjUB>.E!PE!C!RUBH=TB!WοAo'FHBl)]Wn܌~?rr>ds吲؝;x:UoVs5*NȻV%^њE\#;rX!wUţ"5*ce;^OURwhJ"1Txc=~0|JME`3Ɨw-"ed,ŞOu=9|ÛM ִf6ybE.ٲ+M"k'ֲ_[T>T*"RL~ʿ<˿H6^IN\B"߭ƞUL"K3흧"`27;Q;QT*+ޙuWJX[\=+1M=`_Z"HI6 M\ u8#V[YyJw0qUM9T+`R #bCJw-T:CEH脊/.Iw6&I>X'<%xF7;Z'A_W7h0k+eFa8/\'"8*RZy/*Rb&f*fG{t82:bq(;2b"Rkˤv枣$sHP'!,9Ȕ{M=`KdU߀V K,%vӃݵ+$wj?6( ڶ+Q͸c/"AFGtŧzYTDN1aƈќJSIbj0zĊR ur/lTsNin63((:${67r(Xq*<ٵ.)dZ}7NrWTl~4khw^` o>M> lfq" Ow3U$GV"cr7z+^ci<2]"nQޅ(4kl`2DְdE5-/=XAΜ&ahr]TSdi+]pkA'["%pNF̋)'}UوMp f9[Ԋirp*aHgUlTD ")Q-kU E\[]M֗2%)4غj<6+ T#ZY8X˗R5T`"Af.SkTD)hLkRxC/ikU__u`Q=qwiZ[ vACbʕ1#Hh(l!eWL櫈 AZeU0]t8*,v+SX=ӆ-DUcnz[˟c_jФ'f&50ە(@-h੶t.%J@x.SAlpS Ӵ 'Lڋ St,Spi*XM̤Mgt\dKg,!9%ƣ<I8Q*2&ijUE\bSDQKtG)ms<]oú6&ug:/c!M#U50T`q 8%*HGwҩ>Iih4IctHllp*\ Ayz<ePPI`w΢MlXY"51;9"cgXcUĶ=9 #JwEdQyuHf\"y9pوo&;Br[ք "!7""^ms(1 XE4r'>EUoF5"pf⻬'rNFGOs62~ȷxJHBe~*v%VhPEly:#)_0c_%\Kl+R4[쾩x]dFJT 8 %T$"S/"A婈A檈9^@xUGMiYadeQ ӤcZW"'}^ED+LYǭc\p"LE(LLO먈98/Lʢ힭"ؙ2ԦX]5RY*2؛Hg@⡒2a/l퇃?AIsdqb"*SK]2P  R":T:ӟ&y1ɷ&'n>*σ)ЋS\": f:HPܬOdzU8Q 4)4T7љ'UGSHl*w 5FrT$)_ L)+r <=[VQ6 5E`vZ1j48efjRL6kD&@ LXMZh$ZZk#"%96JmI%Na<ԍ"5\W-kS+/$m7Pa:=;XIkc"^Qt,e,|3ȨȂS0DI3֑ɫ|"6%1L5T{ "F F?azj@S 9[5ӔғS YgŅHxbhZE\ś!ܤyzxʿUNvP%j&#Qi( myHk,*4$$մkډ]"Ǒ(Rꥤ4x5ؤD;杪MXyCY#1ȤkyvңEWb+.O0j \KEzV0PpVe#.lV%DFzo{8tĪ?Xqd]BfTVz9k23o.z&@7mw"䊬+:J5Yy{n֥Tc_XqK ;6PEe4!`N撹PEhP5\B*B!!z"BꡊBg,_G|!sTd|~eX&̩gR !K1CE8nu^Kd/̮wd|!r9=t'p/"XķS>]n1pqt[yUm78xVGZۨ"%6ge._@>p g^"d|O:s{U\V~+KؠxGK싩HYEh$WU^(!qQuE" ~'sXEf0]=Ud-yGrT;Pbd}3f*"'D NiO je,sޅX0V=151UR{TQD:ې8xA1ng 1=z<4MnQ]YI9Qb (dN)qn8keT*ݡ祂tp'.ppg:q k*rPEfUNPg9@qH#m} a)2>cb5SiL4eH9l@)q.SI*HFPt.9庛XQ :WZ3˄\o8;zPS_᭢U^ZDEbbR2d!b;#„?ز4`)#d^Q%5 "SclþA7ǘA+yឭ*K^Pf甝Il qF$``lƴiJ_$IԒm(fq+'ds2,&ԲB8D p3=} ޒƴT RY*GZtUD&18t8TVPG|Jy@6CJ6E {;9@xRaJEyD5TTUL ̈́۬F]-W8PcU`dlǨ'AhGyeN}L1$v`1``GY7Bm9Ӛ$ez8fvY9`-ԭTvLz N%g*hbf6iQKC4UKƷT6U~Ppx YUQ:4`q#]xc?4i =Tf[2+b&Gk1Y.m II|v =Z 5Tu$z@јuqzB jQ}yC6im5d&,f^ĨJiZCC($6ET6x(Q瀇`6OQ|F[Dςm#LZ,EPE*rIM k[i|NTD֩TC'8vJe="AJ! 0ɇnT&A<SE,-҄JV"91OZё*"gHܜf[}q/c1W-PNU#LET}"0 JGR/O ~2'H 'Iȭd{cRE`,1# n*uOQsd\,ZAslhWV`\MTKNF`i` ٣\PHn)aΜ"4 DWEp UD7mP^El E*0"jDC voU*dďðUY/"^ɩB7=0MwIm%_"~A* KHP2wY"e(`k8W,T gme&ΛvD .UsdfBEܒ^0/Y" 4.Ά="HTUEoT@^+) &$اÆ$*"l0r[5ʴIѓ V0C*bph%zis7P4;WEJ3C2]Y")sTi4)r{Q1  `6PEKww+R܏:A?SEBIL)Da7I2*N p0 |Nx_O &&s9#9#eLk48{˺Dx:mݰnj" T=}>ڤ3* i!(>=;`]IjYC͓U on3A}J[ט2Ѕ')"!c hlO5:nKB2cu3w+oĻkD&YUXv2T 49!(Ǔ*S(ck."HشM6W!ie',S.:{.@EBގv֯u T z;$JAAK =fҤʂGyƣCAzJlkj^A" ]q98w"2M_ }'\׼ΚsSIEfW7UDK;͕κΚsSNE9ꍒb-95~ܔ{RʪNJs"ld$՚s*nn~;2ֹ;kmB&؎;k΍B;UdI"BꡊB*B!!z"B깘 B.ϥT$qcK|_ BȅE態? Ln'Bȥ^䝫9Ͽ_n p,QE uq7s]τ|/UREslUGZ'TEFc,\YW X6E.),Rܣfą"WZ<70chXx]u@snh>EYbaZa%*rY2RG-9|7ES Z>ea|:&[EGgVYEnﯢ, 7b"[Q& v,37# +vL2s܋NEf )Twz9p614̱Ows.*K>RE,i¸%TeJnU$U ^iO1h]2I}k7q'lByLwe6@I5mBJ oQ-\ek շ9iP9܍[2]/2UT$ t)Yc)\GSǴU:РYmp."2e."Z vH]aû+,ܹOi r)a  s5PEP>UDF*r{! ^#$D'I2v&e椩#wt˲Eٱcg6d Gs Nݏߣy=1*bFYv6p"hi*3H^-gzQ^w?5M^ /[cێ֪_Ne^6+Z*ڎڡK)$"i>cY V6&?\&7gQ3Ksh?&CpxR䔤uۚS"q`?TJe鱗ҴBgA 5VG%&ieBƐj66.~116N"tyKM^/U )תۭ1kc:>:E܎ 3Wv3D,(.K%ȯ"v8oguۿ"U0KE.t2"B aTWniQZ tkL"}PLFIx3"2GERez$b[ ,qǂUH(t"ePP<]BDPQ3lԶxRǭUӮnHN8 VcjUd"غv8cR#^@N| 3s,';'>*G8csU]ϭ&bbX71rORZ Js"h&t̝n P;0vt]XX[̓hΦDE Mn(aזȝfG}uK:HE ;aܫAcl8%"`4Fb_ic'8x2-oi#{eSꌊxTM:ɏzDR4ƣ NBI0(@S\dfDIj"p~T[\QQr԰檈.@5P s*B!*b.UAW #TD;(FEga^^"&TĘw8quCgIgbN"k\8#fʪ*Ao UD㫈vB*bE3P>0 С iQALyk8r"2"5۪H̑Df<˩ZٌM]"aq-œP"26Bu*bI ME*1SEpwLw#\IMK)7pZEp,"`ڬAEW"`EY 0|N6*Yt DE*{d<oAQ&WU3̭+RNgmkҙ߀g@SJjO5YBi/H3l[CDV ;%uQzd u\}lHtGbeJ{[wmoE?V&?fn*NSS %wצ^/? EF'4ڐwBIe'(DWJtTѭW1EZw{oMVocO ޷,4n+t) Kjv(/bWm@ ®0(64\R#tPCαC#胇 pBAPU;h ;c^w0KNQ$x6k"Թ;ƱG)ލ_V >Eqz3| LR dX$NІPo5X +E@O-lǦҺ$J\Ǧ]cxN0vQjiO%~Ґ/B"[x1B?2b+(xj6sW)2!n FER܇B%!FKfdq4Ҹ d#oԲϚv\_n$=ZElY䢵}6EV?-4|F;ϣOZ|-D>EBٙLNǾShp?o~}"&qo,kޯ`QG'ZY>/tDZF(v=w\3ӱ6AӜD)hW( (rY|O^E_=__ ҽt\xyS"(&u|/YRnȗPyBCN?&)R ˢ"AY~\x.ي+i[@ʭE\\.Fy_w9n7>_[$˅c H&4#پ|L_ftPdiÞ7sA=i/;2r&{">ϴ㨌_5+f붶VFYo ?XV6m 3،տuM/3W[Ckd~%!c-梿n<3*Pp4f %Ǔ43޵i5@(RČ#&e:ό s !j~Q;k(xhi lDsBF4x(Iv]WBnK.0FVF 4F, 5ܕS$Tx=% =,චm!آ-S= pc}[m`*M$MRҞM2lkkpkݙL)0(A8ZrOs 9Pyu=3f X ěW3Rwؔ2MC?~gi_;|Z$,`FLߣewyqk- k6YFwK~0d7 "h"xWȺ^\Fe[X0 VpRD}D⛞ E)h3, O~Ǵlm`Dz5MR7x@N L(zgU$kѻD&4;C6wAW=jXkwmɀ$yh,>Q%e_v"e(}e,.H;!!ag?S ۦ( ءfzo䠋"sJ^If`$$"B,3%(t"Lv£Ie"EF`f|& #\}kCGG.Dk~Kfz/.3:uEE hEsh$^C`me|l&[(BR\Hg?d^_A[hס:siX5+U1b複<$w"Y}W [}1nʃˎStR<F6zڡtTB<0Ep@$^LglG̽4,H-R@ 7 T?ELmw֪惘 C׵l"d> (bLc(kQBڎ$H@3^LPs 'UvE=hr̋JSbmS=]R[(dlkE*&y!8##("ujpڨ ns |wF7OҦEoq0A[ā M_ٖZ_(S$-Z]AV*oT6u5m6uoH{1\kR߷Vآ +ۏa@(B:C˗{|S߫vV`i)m3@ e0$vak1[H p`hE2l 4vi)#l84d5[̢[ mv&\e2\c[rDiݛF7{)V_C w"7}]^(Y[~3-0ma02,BṰ`\I^7oݲI[T,Ojo\}K"jcfLC1,JQnP1{uoJQ}rw#>EPs.Gn.IϤȩ2n/+;xۃw ysv\Z= Gn߱[Zqvƍ-C#4rr/%LlrC*/PۇY;n]hzc.zgkR5 }s;#ܲ-?r.A0r63Է/,$|NGmAzLwqiٹԜ}<ú;!0/͏Jy duDpҧcAEgS~2a(2)QDzD|P{֫ "EgHy' =`u_ C> QE>OڋDG¯")W90)v ,IK8 '}B$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy Sd]zy}s_SIaQd4aAW_7!I5B7f0r]^$IEpIšN!$IS"ө+(Nxw*H$M'Z<\~5ل$IҟЧUֱVQ C$IW3G(rSI$,R8NY$Ia}"pmQD$cjoƫ^ÜOmA[){E30W G$i׽gG6. J/⿍K$u}">o~esHmHϜtI?< 2Ҽ);'L8("H$}"8ACHLNBoYPE$I:]uq"pA`l"$IFO8JgYe("IyM>sE$Inh?YD$c.}.H$]'PiE"\p"$IGt"KV"MYg)L%I4Cq_eVr~.1"H$סoc,Ny; 'x @f(RĖ$IM [{WW[5ezX/{^s4?vE$I^H I ”"q1b:Ɨq"$IU Pm&@w` r"$IEC*gkO zl!ʷK$/jsOǫ ,NY9!I5$I(QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$K$I%H$IE$Iy"$IҼDI$i^$I4/QD$I("I$k"Pc;O`(I Pd5xŵslUvQJN$ Nս TL&=*3%*Sdϥ=J2<+z{YIFQd{egCOdwvCCQG:ß=y[NJ;N޼n|Qg-'Ҟ޷B"qTRaM{͡{E޼"gu}fχ??®oxXjO}{01y3/yqϤH*]IY]G/g9O~ׄG\ަ>2Kf~aCz3͖{0ɛctO׳GKކĕ:p2Xν=?|E:R 4]ܜ{A$inL,yƺpɝ&J3"n|FaxS!IYlH78 {5`=\pa) b, S?nJЈ%[~kcmzp1GgĀ9Xm3>pM Xy0nI9(jȶnR톊&5iq,"?Lm SBLZqe:gi5pWWCHlE978+е; "M;"wݛ]!X} ؊W72LRKё3k 7`5܁ᐮ:oJ  o10|m4"ޞWnFMC1P 0ƕv,G/>0Åi 6&UE}1yWlS$1w~Rmqхݎ|[ L rb)ň1l"ԇ(pCC?|KSG#okRc*ϰp܊}uM9D9vav9̂tp-nqBᡶZ ,CZ}8f@1GCk׍mW=yiC# 6"*Sim כ0:_5`$ifP5.q.b5̱>NW?@KStC:OI"a@CKn6D8f9Kb~ phtc 40 Ry6۶QO}">Z>!)@3Ov74A24 ~3M`1X?.1 6R(IxQaUb+b E0+^J /v\wĴg4@`JNuYLSC'R⏜!:!OA[iś75վ"Mg"pAtPK; X){gg6P6CaRdVNC#f rRd-uk=dS})BWRk~G8BB G<4N[Ӝf(?DƂ )b,`oS'Di 679kʤN0W)?l(PU/QتNrs45BKŒQ>| E|ٔ"ic #-t1eΝW^Xs JCCI}q"߅-RO6bBYXiaHg)Zf"^3_s^L 郔HZ/d"Dxhoœ,[`jB6F{$FHϠHK6t2w"m Ƒit&G(R% S7']=Oz d_eYfCE;[)(IR4idڊ7ScI\" E>>Bj̒,wvR5R뽂%'FrnH2Eyp"#bR$T .EoIƠ49EU62qE?J4-c| ӌz v+u(Y`eB0ӛKn93bG0|(!L"dx@;iQKk9ETֶa/L\%aaN!m~jA|aN\*mY5e!C!DJ&f6!YHexE,BK0qQU"cWIcG0qA5=ܕ=duXS6f0PfG{M h.yk|<yٵ,mz5`HLofBG l%mi(R')43-ZX+OtGNP #q8aŦxm{zsMSXPdڈ<@av{%1I}-)J{4ȈtU<ю&5,b3<{[6io TŦ|hk Seel@@_'f붙:.\] v`R{İ}hLkE{bN"E<֦3poƌ( 0 :!uQdE2 )% #h(йmwWmp`*0fv62f&OpE(b@\d-1@2 A}18ip>&=D)nEcwH=S cV7N})E%:ي9amAOg| t!7 ^Jf82 (Wx G~+w~Ǻ)5BcDYЭŏ2)b.( u;ȃeMa<m+xX0UfDԃt }rB$=.k 3I.AS2cLmJ1 2[`90L03`X0\f~\ &Hv\shB`%^C1+MhNV"]yS+mjy$%ܦ'Rd@)A46s\v[x$>W\!fXs&aܹGȏ690$[ Ee͊"Iv}3]l`Dw|c*"\|o78i#DhT-EbL ۩o("}9 ϮH`%[%,,&#\. 뗈~)I&m'QϳD7˗ʞhMG^oKZ~˟*"wwWzkoDI~O_*H叕O3*H$"$Iң$H$IE$Iy"$IҼDI$i^Q/$I>!cO[o$b)~;y]gj$$=Veh7["WO}Bef#I҈izof~q:;oxڱR3M֟^X?JuJRwk`~X~9銐'L LuetqkJjե #Go>E_Ia"x3GvXmzµ{zA._"3gE;SdX~Wi÷Sf@dzAF$ٿE+tEcjFI/?c  ~ޝd-ޯx#l֜#hgqLSr{v ؽuS;6uÞb`;9oJz"g" (?>~c/;?D}:E~G!ؾxzUSV,ܮ62s.$>@6'f \YЖؠ_bw `*zn~+ {/kT=LWeOD_A3ɳiYfw>nF,EQ+)d b,ZMڽ!zcxS J)I1vu5R SC*$~i|EO(Kcq]yEBg+;MFvkI>]D(g9%ۣ͔"83~_QNSZ| Ɣͤ" niOVkr%" mb j kݶxbnkEW+RD3<ּ/ol(;"8gi(W}0{jV=kzL'1tLe Ck5_ntB#rEPbڧȘ6 =p=K3nH:HrytjmnJPS{Ql^¢Ծ )8DiRGӻoK'-Q(ЌɱIxFpD[Q*|3,'D +:ʔHyƋQdYNv1㊡QMc!AuxELIWP)BvR/l2N0E:!ǮT0VQ$JJR^}@mɔI#fݧ]fܦ/c29E6w׶Q$94 Pk)b; ke$L/H)w;GG)$p(4KN`S$)RɧEky[x"E(RK宗-2XzH(ft(RǟFiG)b:+&NH 3(OH̺̒e v"uE`"1KG>nt3md7kXlP<Կ1EH>E![[SL35$(s QRs36Nfy<"ie<*,ɲ(?tgR~"Cmçl5TRyZ@,"OH똘(Ȩ$:H4N+PKcObnt`@UfĻ5!5H֤>>C=ٕ#BN =uD=(EF>HHU5$EJf g@7IU(R2naD="GA)E|W0ʜA^ 9>:B$0x E6hyD@NJ\QÝOF!hsc>ѓ˔=Hw]{9Lچ-:!62l)q| ̅?Xcg!K"מE.adG0Q'eu0r1HG+?ҍh[lx jモ+:`RR pA}Ѥ.E,4\uHXJȶ.1ס"nE~bZ=y4&CG*?,nQ>RJO4)1` t*?aFĖ| @mF3d[|LfEC(̃\w7iyTڵ|I3iH47gp1ǝDK9"SĎW;"jҮ-T YP]=PϤ&5vЄ v:B$tgof7z"&gL~n} \A3[8TjlS16i(6`9Qo >u@@Ot"J"yd1&g}G;P@SXhKH6yxgZ.<9{FDa,EPq0ֆ%i1-!b m168} P$༱L3av!)bñ^A2_öء{B<՞eEb[t2؂!/ ooGLS%x2XFNe̘Xe$#zkYw)-ZE&4Ս hDdl sQuqK@}"I9Ev(B0z&,QqKY N$gRL(҃ w?dJ:PC^V. SCo?o^. FWy/Pt_H(bO 5~2H9YERdNJlgws"ANΠHF~,8"4 SbJLm`*ZLFC2EPs(YSz"KqOp=$'3ߡez3ǜE<dN^WBIjEܭ9d]7 E"^Q?PQ8aNhm.).8EN{-"EM(I)G#2k!wE:e 476촹ŧ c)@xf̼K;Jҙ MLdb؂  `wE;Z |c9d󤱜 1mvja28$]; H@b b?dPr.)slQxd"r(K_4XVYM遭z>*?Y)={Wޠ;s?i e".="_#$÷$=Rs)rhY"ߪdш"oՇ(΍H+םu= HU4gNF3@ugf{YEΐn '[_kEwHGiPB[׊Sd6EO*JWoWEIҧlQD$HgI$IE$Iy"$IҼDI$i^$I41[_$I5@b>??KU,Z8YA6Bg*Y I~~wG5t8M9 twJ_w28Dg!߈yT=V:@xEɘzO~Yو{2obK0N4,?v>n(*ILnj{CG<=g"ԇY)yr~EN{lW /"IC>;1R$w"t8q>@zH8 xЇCBI9vQI#Cc1Q޾"02bܳjr&r'03Ω/+~szdQ4O(B,g&"w|*v?N3jsJ>]50N~s}n'EPi.lt̓[( tYa~p3r_n}5}pE<01UvLN1I1N8t}>6jߋ,}KND(jJP| `6õp{۹j^dx;9:~hL'чׁ#?)E4Ա'ZiS}g_ +;uhozO)0EًY=^BhPx u8Py@1;kMl9A붶ۂ'r'sWȺE̍CcQ$Jǝ;bĩa$g;_2;:wk]͋Jyo C+` Qdŭs$ٙwcA֭iPmI@44[/MH2E/M 7VA_в@%ް.vɘ\<_0E喐3CM#ɔy/Q~.;* °>""|`aŶк  ]'[>ڱҊ]$ex!TH FvAr+"@`E򻟗a{ W`i6,ˈy1R/%,EpGa7?A/WJ).GbnWWi( (C-{ǁ!8H~Y3 0&>"H2֜t59%LN;^*\@Xx/GoxtT㿻cb"bIQż^]X[IYSIJ"&4^ُEy%y@#gxc`y"HBF0I#d7WP̹1Ϡqc/cEad"MN&^O (ڙQI%1c$fV3)E2VqYH[Nt!!E-7|,S! BED}4І 6a.9j^v2'i0vli& [[%WiiKr+B wݲ&(lvsuZkKJB"qhdi<ݱDK^„3G$Vˎ^ۊhȊ/W)p:F:zE(ҶQ(tå:It \ы븒f(60Ky)Brhde:QEa$~JÐ3 R+8۾"'Nv{ed»es)ߒd%Q$4x}I\=_dWj3_E?aG+ƻOEpS$9U+h1HP$ŖHo}T(sLMO<(p_p'ty/E}1TÕOʮ6/q$1yD.cIG.0Kb"_q;HoqK,ƒ)K6di4u"ק( H>zT=)_Hn,l!8wm{XBad}nMyߧGo;3qB!!c Kae%XΡ!(y _FlDp,q-z"MR,Es>|]V"fޯӅFĚ+v?m-ܖdS c[Գjt8 E{~@:FFr`qB bhD"#{a+Ut_{5v" >o76GTl0G{֟@1V[ $ߘ]FIH?n]`(&|E EFiN_5a_e$HҰnq]3u%HҨ+)I_IQ"_0QD~)ݫWDIT7UE$K2}Մ$HҨpeIsUH$w+"_a?"$IҼDI$i^$I4/QD$I("I$K} $IW~pv\sgZ/s) Y~ğQ[o#M=M~߇tK|Q$?+6GB'+k&sdS__E+o' #Mf?%퍟UZ`g ;1\qÿ;>/"~ѮO ݳO1;~B5}[~y( ̮~+\ޢm.'룧9'ygh5Ҵs{OPd[7;E|>kγH<`ddԳAdXOJ"G>' O&|" 4&c3x=J_k9oS>@OȑHFϙ9w>E}=I)L@9DSt Ec]oEp{X3yW?(m5笳)R?;6@>k͇!0kz "?',goiK9G^W8{`~oܳtsPV=,,>cٗE\P)5l@غf!C9}jN|8)i7]U8&~e|ߒg7Oԏt69`pZ78/G(\@ >GY$tM)|,$Sύߎ `Uj]dm&HpFT(<" ;"Em-zkvEl72Y~;^٧iG04tr&)BA]*P9%0sHbyȘ m5F-MR2,ׁ[0!p>6ش⯩|u !芵.ɀ}}dr2EVKE${"׻1WdQD/,&Pg^, ;'PC)CȰbdi&dz-\!w Ul&TFXfHb"+"5V2[Ll5z |Oi";4$ݾIEV`JPNoJ>Xo0VaD P'/OؚpK\qdS1Sx a"6R?3l]cns/Z:VdgIkS`TU#'ĻY,+~;V0(0HowEbP$C Zb`qxHL3ؐ]hBUq`V Wnef O>> :g3vL%;O1WCl~3IBxӘpVH% wnbV0;)w0=̔Hחڥº@ Nͽ3-l)B6g "ѣ}A} yVϜ 4Y)E뮙nRvs"VS+ ӬQmŸH[/E:'.~߯zx)FHNص81sc%.> M06%.)EZ![YdXМ-dl!r"[H:>u8'Ul!pwyP"knH˜"4k1j}6JXm(:`$d(EVc>E aI_c-kI8ḒE8i뿴:INӳi4h XE$p] 3p\D/t1S!@Ef(4ºڪ W;g%"9ƤD0oLJN Ol)Lޭ|5~Ek q=v}Qđ(H(BҘbX`HQ~k}I3N?xaR 1xEp>Ho_x_&I"%puu{ٌڅ-MsL2L=P$l#(Iw^(EPpvې (rPiƻĂ>C8Eֶ〸4 po` >hS66z:x / fĬ(RB""]big6bbvZ >EڼAI J 4 HR󛙪-veC 8 ԉAmȹ{^R$:q5e|`_H8BEv`ndQPHNQ"K ڍ9OG2xP-R{ߓ 7=Hkf%VG&,)ECb8`Fa2ظ*Eޯl0z)p_ޭ Նve hH [Bri`ÖXbL5sz; PļOe",@mS Hx癭i oc%OՑf^ ) !! uh8 ͗΂zA.vWadSMlٕ7`bsO&-V39yu7l;=a]ZAUe9E+iGg!P5IkE aiZC4!n28ON{&{_?Y]Qk@,dNj@qJ+%lQ҃"(,Kmlhy|}iX48t4eN*V[~u1aI}MtF@+(:L}[Q`cF9Vh1HSuoCŝAU@ѿ`4^?&QD} /7߿ށC HtkV/y$|k(͂@kn;3(1As.h'P VgJQ4yG{p*MJu$HOTvkJgn}Л1 p^/d O{m ?3k| 'C[bv$7Lͳ2XMnR$U\(\IF6LO{W2 ۲]P{عL_"T,Eҳo\}@LϱINtsO׃R7A."T(RӃR"7IDd("I~(IpqgO?+Diΐ("I%U̧Z ;l4!,QDJ"Jmc'y"tZJmK;$H/("I$K$I%H$Iȳ\$Iz~1W$IZ) =/1>gn$IE%9[>6T>EbOjR$&9Maտ BsEUc.K߻Q>٧tt"X~.xMR\k)r۞ȵCYxEҹ켜TB!y)E_ft})М+(r}&r]I;[R~bǾO֩gM9.=>_C뼁"Z^SrZ&r]5N p&'Ñ[㳑SN"U`ʦѓ *EOkl~,nz7t7> CRtup‡~VI7G:QGP=w)WCH͟ckk6)R8m^" 2GE1!;W#[ [h)Z1A4m!TE"4Cצw69Eܥgߛ F!ljf⎓Jt:MǺg8TB1+P$O* Ems󇽒S/|L,fkiȻwy*g)&Nbtg@"*$Ǝ蜋wb*t6ʆ$Y4ڼ"n1n5X%vk֬* V + %]ǀ$KCV}Gyy>EBgrj5I-PM~ĕwE~A1+P-"iS )L719~c3Mr>5Ϊ.ׄ-o*SQ:/V" EߙgW$ LEdqP=;.q #dn!(#VۓҸ \ȻȜEgt.|{dc Lf)b{46eE8 ]8(ҴXxDEsHE BalɾԏCf(RȭB?྘"6v3NҮRȦ)P5 vx>t4iT~<ϗi"hAn)*HCgR^ #|v'EP`)҉EKL_B-A,@{`P@= EIg㿽THCc;ďPJLd|;4%p+x&٘,hE\HH<_?]иXKc ?"84+I.ÿ"Үb%I3P?ȲEgEn?סpPtH\Fnc,E2PD=7/6{ (J~Ż„sJ&FX~YtW%N4QQRHnқP [\w >P$ Ė128J7lۜIb'-_E^P ߀Bp(sE,V8!lP$0.QMS$DEGvKI&}C8=i=P$sE\z\YgP$IP}F#PVTLR$1j0e xZqP:E`]4`H6hO\ ]᱖/BcD)@cEB"S$.P$xL򭢩=>"Rd!l*Pqx).۬c)G?bOswOi"mv6c7|OA"֔,%R^bv0#Xj<^=C*2+ V4Gp@܅ISNҮSBSĦklQ֬VH'^H3d5k ^.R5}E LQ$z{)jsEĈIW8H9͊.[O90 F77,/,'݅ӊrPe'pXls`t/$af5 psZk}'>)!C >ڛ묃w6 gk[!͞Ez[ւ!1hg]c <~E up\| <al!kE=j+.Fc谕πʙGvfAf5%2gyث>tۘn7|J,(Ez|nZ="pf58nZ8-`*𔤓@PE?vO7tۯ"4ltn۰"4> ӟ=Jb`E$I~nV$I[GDI$i^$I4/QD$I("I$K$Iğ$ITS˯ȓ~K_9,I0E~4"NG}WVW?ѲiםEbie{P$3$ƯfEo.'DC>z6gx|7Uӟpȷ6*upt^lZ(r.yOBHIx|GD,Q7Z(r.UWl}̝eE8+Dt9߷* ~"לDsdylޝivE}EVT`=B~T#wz 7E&,E&e-FHoI@pi Ku"I]j`zSQvK;_U"P7VSၴ\SUHDF7[옓a'0bXW!uѷ BQ^׆KSMClCY| %~͊Mma4媳(D)ؐ͞QduEbup[b3SlPy*P6EK@5wȂl *'P5hП&7rht wҪ.(A ꟭QBm$!]@NĽRyS-(=l3wszsoBzCԗl `ܸsG0xXnvx8)*S ̲ wuLiY;"& ^7?IP:&j^70hF5ԼsP&3bzF8`SLL ΗZP_p|~`|fɣYiYǾ 1!łEjgC-\YC~mIl,RY>> 1i|~ O/ۑE|96r /#[R"#/2GpQ:~w򹽐:vHmMKU{-X@r%`j a`&ADL4jw'h* 'vk"Ɔ$!˰I ,#QU3èH/f =q 6) u-|n+36R9`qO)yD a$5hY'rfgwlw~wK11 8=h ߈QQCAW1QdOgRUz"T[Õ@-)'5ejiOX[ =S ܥ<+Y.w! \N T3hAxZpb!SVCv`*]) _g1 E%Me>K)E\>F)MpsSn*"I.Z1W]8Ig8#HugVTyt"8|3|i"|g~y+5?ۮ$oK2u6*QH}>VL\jEPLdKl4EzI*3]LJ+ա# <|[2ZS]pv"h>t7\ V;I"t>7$2Z"E~}U;v(2k(Q8% 9 g!Yg"0)RdѰU|g(B{M#F-GaC"&0zY0dcI)bf*#ج!Tw/0^EÍ+4TcnKTz"!(xqVqV@*¾CPшAJIsm O,7P7|"ec{؂qjN_$0q{7d c4zS9>Ex~"yjgd@ˢ0(gm/8CuPĦ*.5'{"xx;3)̈́B[SĬp# WFQKq"x^D2(R*ߝ@7cYpn80Q.jXֶ(&bWRxSRIFn;T cr Eu`S/}] x0乵):iQ2"<9mB"`HoI|oy]߳$Y f~MD"Fpn\A9%u/Զ5G tlju(7]36erس*t["_ȶC#83""]͈bÒy}|S1\>tS;$F"s-ExQ .Qϕ쿛$EpÕ5N*S鮡<ŀ^o`uۗ7cnrp EV#"c9.kWĮvVL`T]5{"8L@MAa7vRls&)QHS>1ß?I-\ W6p'g@H$`D;-Wqs?-XR$CHZYN2Fkb 0"›rI&Dh¼B@MpVlujkVJp ) x(E\ϬlSҡ鸓"xv') *E^nꘛR&zRiz ;{iէ KUU 8ܡcm>JE^qP^nTCn5l*Xx8< .bG.WIRd5.)]#٫. 8_"t_0"A*(,ܜSߋG2мA>UlfaYDlg@5cLӔ^Wx+8 v"K< p3AxlV[*YixƑͪsw0*!Kpg(A['PD!2|ENĪoXON X c< c\-:oсnv,QD+Q/#o TN- ѿ0FXzMtԝoӟ^lPDϖG/P0jKI]ݎ/xgA:5P> <&)b2k~DҴߠlgVHp3dƐ){UMok]nX\xÖ ͜>"4tJ(;p \:zӤNp]EhNbw9fW{y9RyvN=OOM@o@~OS("]|Kgdw)R;R*n?@'O1i|Kgd ԓOWMC1KO!H8O|" TG04*܄O|SbTy>")}: BuC4y}EwJSgOzR* (EJR4HT*U)JҸ"RTWQT*JzE}Z} RT*Aoֻ^aAT*G?#:J>$u֮T8ENwy\wYwR)Pdv{SLȄnzt7 秗zȸ;L}$<ɧ߭'mH4?fy"Cig8CSLȄ>#@Oȣ0nyOsQPy~"O)Aޟ$EݕU>"m{w GOQ VO12QZgS'$( Ʊof69"uqB4?)=x7nvOQ>$3ܾkﭠdΤ4,OnI="3Ofߣ '3(ScNc?5j!J7V[ˠ6Pt7 _p <]`mhHg>\qz/JDQ$HF}O,s!sEYah{UȊg0 E`'=ꐼ3nl|NdxX i%R:RIEeO2yw]<+_*royc4S׶gUEd릻}]hM`,!!7{h,~p;YXtOܓ=*fe:c\?"= w""(p wި\#;Hx#bmk!7󩍫Jri Q7iB4}d<*'%IKvn>M4J)KQ3G" Z.(u0 e7&MmbãCzV{b;[6" 1ey5z C ,]0@q39—kf>5,Er #pa՞ե(3ulǝ]+)BAmusƻ'5Pf}'xW? +ҙ;@!!zd:6ٚ+ 2S2R#vPԤ`g^L3 ą9AGC1oZ*{_Q5)H~ I>cQLtGσaނ@()bXnTS"\rd,%/߳?"$z^l^䦬˲7KhF[8H/{CzGaG]xQMC`w>ōtL?ixdv {!DXj @3D: zav`9"(eKk#(ҷv7 P%APY, pMT /̣lF 1"\&MA`ލQ!%ڰ _avn*)&&(@}!~'EPb#X%0;vb~%,ݓ% v`ȲwrBi[)%HTvDJ>bτIb}^6b22pȔ L(_0r B-o)^rqa8QpHwt*2MG< zTE]\Pe6b4DDܳ⥀8xr% NPv mI PvK!O>r54[ ꦜ:IWϤHA4MG Fml a/wUeGA3dج TIv lSJKNR!s{`.Qh~F((qKP4G,{j-YF>I?C,?"S=:RV>SEV?DHJT)<+\ERw"/WQTrt]H黕Qה}7?PQ~lTs8"V#Ӥ[HT*Iz[)J?I<)JRi\ERT*(R*JqEJR4HT*SC~oPT*ޭ$ENbN拊JRȤN5S_|T*JQd_JRzD+L݋J(*RzT*JWwKRSDԽHT*}"RTWQT*Jߡ( )鬰R*JEdi.BjOJR!>BON#q^CFJRYzH#{[VT*Jo(E6xu<ɒoj֘F0$"R,ͣM5m@yR)Jk"ٖ-PԨ[s]ERT{ \"KHT*=O'(ݥFU(R*J(E_q\HGRTz( ۫(ƱT*J߮_v2"XRTzaHN(?>U*J'h" ߅P?LWOJSOOAhOJS5H:(h*JԽ#" yU@)J"ӧSSii!?%$vX%R %)!{co=61EJR꣈+8 ߚTsJ EJR{8E(/16yr3EJRRDj=ţx_xV )Jh"RT*HT*U)JҸ"RTWQT*J*JRi\ERT*(R*JqEJR4HT*U)JҸ"RTWQT*J*JRi\ERT*(R*JqEJR4HT*5"ϬQo~Ddkw 5JRdʶ_<: t] uR~@T*=\s)!4a=-zԱ4` 6(~7IER顺"dŭ9{><"-46}B bsNXDRآN+'-|,ճqW9f$&<.[Hw[Sf>Q[<+C~(+un6ECyz{%#AWe"- m Z7Qd,>"4UB=ד!uEt{V"S彛8XW.z_#h=+ p7Rnφe/_O6%9e>J|k/@MÌ"Q<^|cXZQXP|E Z{l1s)u$Ee ؤ'6$;x#8C0}awe)Dj &3\B ]Q,\ 2304QH`xa & ԃj[@FGNXmsAj#b\bWɠ`M8zo@"#$*V1xq/E\PĬtKҬEœ/KEPRDzқgxl;(rq( %A)a[Ӧ$;5&k"}E FZ "Mnv!8>qiIqn"S8圐"0NDžY!9'=2[?MC̓H c9[*3A!m?u1ELg)1,d +;IbusRɅT]5E(.<"m67P.(SYm"`)Ȣh\L˶t fσSIhYm|spt ەH涶Az5t)JQ"\/ƥv&P8ٓrS*.i'RuL5e)1^jګ9CjpG$F"~P$ƌrt+fq$̸5a"681%,j6-BaY&5 aΦ\5mx̍ht)3>0lX_a{ ~!h^G^u * ɹ!A-D v&T(Rg x5 VU{Dҽ!׆,/!]7*$hmȡM)tP\ͷQ2ڐ 6v6["fujEx5+EcLbM!x=QOs^PLOߞP:("g?H{Ү (r-3_?DioTQ]];Tkġ(rF-7SsR"#8|WTQOz-,PONTz%>~tQ5pr[;OcA$RQT Ob!6z(R*)%OKERt TQT*J*JRi\ERT*(R*JqEJR4?FHT*M12ȲȿYT*=A"&1#n'Z#y;wJ{lx*Ex7wFx:l<-<}o}7E/Eۓ3/[fn&خ{i}#5{֩T9^}_׭M]jNz~ x;h.A]/:BҏSֽQQ|[];΢EV{jCW6}†UMqJWlAcm+2`*~cicx{|>e2GP*'H8Imw琛JG+TfA)hNѪ SD@Cn .9m{TPܦZ{颈]= E-zrL hͲ6n#f"R+<" ]H04i]eEz3e |60MsM 鲍AG.pݕ%S${ }%S^ލB> 0q9`>ElMVXY_f !u0Im_&=lQ֗1Xex~L8#1Mp2g.̀=afbB 5"Sдw 2:d QP4}^:ha(ztNU MF$M@]xpFeYP6@DVmKI*WԇƖKg87#Lq0')FE}G2 D,`;E'Ox,{Iy6EK ֕&  l<~"ij 9FqGLO@T" D+ 0j&\&ގ%SD$゙TMnJqo\bz;ּn@' O,հd@7v:W vf!8 y\@n`1EDNw+ETyh8Bh7+u 6cbEј JsW& =$jEpa+mGM{38WSĚ<kϝd69SJYpmh}EH3M(<,ExM(G%}"~*a\D6mܩގ "2l)u` 30 ^in"놸LGBk  4 %tV=H ":LQ]mZH<IC; b$pa2zEA#m1E@ C@H !)cӲW%LDn@$!.GA R &eIbz3sa.B;s89)9$["[[cs]/˸ωm)""9Rfg@\5w<{)25\4)"RDelB\~T̿R$ F(bQ.P~]ЄS$Ç-gy id.$4W#%[3Ĝ6}fS$\E2_PL"=ez$0h@~Q(ꢈI& qNDD$E]SpP$=P"AQ8$EP" )lI~l,0rEB ":^Ba#14eg")>dӢ5I`TF !0v/1TwͼP^-UQe}Et#i)I P$!\ KlDI *} per'p,r)2"Su'@lSu"lF'k\-3Tr*p7<^}OtM"k-I鸜"*;<ڟ n@')7Q=[t\=L|obI.'ݔCWKE3ˉ%K8GDr [#0aQkU7&ds.ЩA,(/O!+/S0FF<ݩoc<#WҴs-4&?@m X?ibIѲ6&jc*E@\BJJÍ|)XI}XP6ߵoV{yaa-fZ|I1e7,QTŴչթYЅr(eڞaP|'v\S25r0v~H2 ]f"RxI xo{4%a bja_C 9|G7^)E!SժΉB́\jئspE`^r`,^fb^Pe\W5)1\a9 \~"fWȻ.N7(1k8g0Y-DnD}<̫wRc ͻQl:c- Uwފ<7~< קQd;$1r[nNVYX)(4WDkVw u?FǦfOҬãg:Eqz}'̝kv&񣳼q Ĭl^8szELyH"h% ؟)hփ'5DorP_{iX#O6oҕz=Eڴzf0OJB>pgOjOE/cz0E mS8Ekc懾+{_NV"68$.rɤʺt%^F̢otˣ)2`_ߧUL"Ro_FGiG߶LJ e(P~vv_}hTwcEoD驟K`y %`|EH/EDFkLL~rzözOH=Gf$n 7}?e n7Pl'6u4I2݋;(3Iw{ΞD̝rsP${c~y56TlǺqK:9A4o9<2`"JTkY7.ˢXw9z)q]8}/b^qkg-O}(E={ⲏd2&j`p018d@hk j'.Ib&vp#kKee3>9 W+ kB]gRD/t`;)gAo^%Mr,$҄3"-(413ոs|7ow fORЏ42uWn9PYz=נRhcF_"O*ګ&LMu=B{dml6~ E9}Äކ J@yu͆PQJ34 w)~1DD6Q̌Kw[ucXf蠛%y|6O8:iúr+;՜,+*NLmZd* crqHzsvsP^ǘa&FHx9{oQElz اIҠjN>@%zhP6ی:8L^`o #7mKe3Z(XXI .浹lptxAb>iǰ}ȚQfyu ;NWS2nI+AYP=TgxRꘚl3k &Fe3}ClJ6v0N22Yft?NmKYӚ‚vZ֦fV,7uņ 8bkX7b-!֨>;>wE,quU0K,c`U]G ? ,*n8Eut9gMnD@L SY E~1*(RlE g(i'535iN.dhHBQLc*Z `Td-AK#(s(\"gA.݅ t")}XS4Yxo_De"B{EB8 !1LLtM,.m sE89"I:,UI6LeEqQHa l-N28W!~VBj!Qޜ!~@Px6"(C&z)Ggp)bb"}3)¦~7@\6ri(E,{u!4^)@73K[AfmE,J{&[Ʉ"*]v 7i#זu" ]iωܣ̀/A jDDl)OᮎUkc8M J@tAnoD6ԉ!,9uE@S.-@W@o\(l{`ihdQF 69l˽9fE@1``NUqaF#3A#8̒-Qpq;nFƇkؿBOف̥%LB)(G#k LzEk+H2"(L&ũ %"ْ 9{)jnE",@w^E?4X(εgsZwG!2o׏UЬ('$ nfUѾ7(y5B; "fcQ",qp<" F(bq92E;"*$I g1!Ku\>p0Y>QG`V!ߑlk0VI`LF$)f" hY$)WG/ bIfB4"3|gO! BsEBX<к3VAH3Kkke]0DfueA@\Deg}IQPd3/NA"FFik'FHUJp;",2p"ԩҐ"<8ͼƬz|gɚ"jiRX`@B#=%.uCEgt,EM<.t9!):W8"$#c73T~-=ճǤu1 kԢ5k(EE/`P!*,;!f\;4_o-Qtv4 Ny7[Vih!Z!FAY2wӈKyR{ Esir {UVaɣ4/&I4f:)BS2{ڞin"yjt#i%I Ql[t]JFF]4,L eK;`3]6jxM 5~R@֍4e4ѣyl`+3^sDU,<$h &9<-DƁ9N֘",!+.^@3وF ILgر \TMfTL =UJ֪G킖p*rb^[8&9sNj𼅨s1PҮ< C#_vsϢKg@Pyc=7sDk0V\PSG$u[!y^RMsњ9WVa!l9o!DݠJ,g]MW^ "fe:s!"Ӎi[zl/=E>K"Ϡl]vV G+nrm]Á`E E gUes//ں4E8&͈v$k]h:"Dhk((d|!n;,ߧ SȎѐ6ܔ܆&wG7?*/0K(9-N/O_(J@ET}GH==WPD>}JZEw@'V=W+xo&[? яЏv{RtRCx}*OOW9șOimT*,EJ?8@_jo?UJoSQT*J'4k/W)J?HT*U)JҸ"RTWQT*J*JRi\NI=Y*JH_Nc҇f|J)rU?߹O-4#IwP+rm3'l9ZB}y"c$H.ܶ&GC|Y_Bc[t-5ΐOBP|prߌ|}dx/*}1E/Id{)pamkjkUQI>ݾtJg;("IM6i2~ʰy{go K>;^z|_E"ǿ85͛"Y<\Hv^yJ=J9Q}~@LZr?lSmS@m`;#)rFH7J{oLbh&E[އşp;,Ump8ћaf^~P0߳H)E= VOL;㣞{qn!yݢ˫>L ۈlx#гӛ>FI>*jZxL"@ FIxP>w݊h Z*ܯg>et?ENMtK9)=6W~(D nXܤlg)E^ked XLLٯmh +9m o |ÃoMtpG*gU-gO9;JuSD'mjnl EDuӼHw %^moR {ëa;E^"cнuaӹU6tlLq^UlMSZA /yfC\9N<5 !i߈凔Os%|e? KH3oL#s]QիQӧLv2@ԛNMZ$Rh(R"0(rU\dž(J ҡww?6X_TI+/tb%#FîmO9h+c 颈IMR5qxQĒAQvIQٴjĝ1Jc~OC,9t֬of"1ؚfMp,N1:6BX ,cSÌ]UDP6n.EP'Q$,!=ʢ< !y>gMؕp"T>ѭ1T/@KecEZ*`B[&ef$ž,w6_@3w q7Hr CIvM1뒣d iaBۯ*񧱂LZ.O1YK ަD=܂AӪyΣw>(“*y",(ZߛdCҬ}jG^GtQB N&Fޤ}o:AG`137ʦ>rd}6@F QSSL5G)ҸJ6(VqJj,:~(ԩXlîݨ׭)<"8,Vll8VX$),I"l{pD3SĈ̂ >Ҁ2h^. ; ft9Im!;gH6UbYkPEB) r5pMrK( (kcR}w]|Men)̾pE|ISc{QQdI|K2ԍ67Y]ͦf5Kg:I6#բG`.U@)Ԡcѡ50B!ՀN4"K/I #*CP䷪1WPdGLdlP 8ot򚗢q'KRt"ZɈasM4$Y)7z~&]u(W-p+E~l^MVSQ0?{)F(u)q&e?G{l^Q.ÉbE,?EH!Tr(GEHAKj:2:8B}iFCYq\ $[>nBݵ<E'dm}a2PK9EYl?яu"Ɲ)$#;.ئSIPD7 fa$AQs2H0f(H^PLegEL9 q-_ nۦjWϧH&AY~PvHQ$"Ya@a#PEHX~)ǚh 5dU tQ(;h.3f7[u IYǛ ~}icx/@@p䡕 1_٦De(;(M4,(sG-+ei"r6jjd^zeK[qР)nP&G꟨PGOޛR(D =QQ&EJf9*|"S+ 񿴈>FKUQTk{cU)D=SJ~"R9 Kת(R*JqEJR4HT*U)JҸ"RTWR_P*J_/қslg"~^T>}E% c3 i`STZoY"L%PGU~t˟a|s6w)Of/(`*E|WHpS܊"ySh޲?ECc︿$a˫C/)<̘2s>L="Yklc'ZHW"Mt/sRՏ4Veto %.v8&d0 ,) =}߽Ez{[d~H s]^)?Q7`kܘ6ƿᱥ|ƙ85AO"f>)\KicΩ?Ǻ"U{8EzxmBf`mRMi+cbmbԖ~y3NsVxfL)b)ReWL-{!~mb߅ dB9 zS8ܝSw] )r=t ̴uSmuRIIt^6ș%ia%.E^CL&)@.j4⺐ԔHb¦)˨ 9y&$YXcTs..ďlC'q`]$klgϣjF=>U9y5{Ut)"[땧זf"CcYW"z+iI%,%+aNKem-LQ$AUT!QTFX$l ET5\wA,UUzqF}e[R=ɯ qD5aۂ> SDyžIC:Mӛ9(f6Fn-Se]@1X#[56CF6Kڒpծڵ0O TVptzvp"Ch pESUfEn :`WZ주v k?"N>?'4(Rݞ< 3}Hts{PHޫAJ@a(Na6kۛ{MHlYmªʶTf "  3쇽}Rоh7kj;Ť^N'ٌom1P.`Bt@Q4Z(J!vd`SyxY9?Ae~[m҈"h ,X"QqͪNn#7[mM~,j 3z/ED)*.L"9\ Z1EddԵ$P`=zv4 asGˀ< QD'jVwl=B;n>p FVv5-1+j@:k] 'h dC&8S^INW"PWjؒ4A4Da2H+(BF)E(N9A28K^M(E=Lp3oDIќ^j EXD_Rc=nwEZ_NCv]o$b4Ȁklk(Sl;n!HܙQ"1EtKi=UQKuPߗI8=DOhAA>9١Yod?"K{"GU E+bG;I5EMoUAo_-z'+?"uN^'(k-< ٝ@1bڸۮ5Q1fJT̯ $d) lKe3ٹ-SKZtE Q;Aw,6CwieucA}iRĉ0 EPۺG]Cď͢Mt1I;sP E|pogRd3/$P$vnY#E$+윤{9I>-\K(L袈r"Зyf;M85z/Py ![`@ +8j'V )Dp_#P%[(MEA7EmofQ.$Xz"tQDq[2Ni<_u)pЏ;9^So Eg(NDYD_(C 6SLh~"I+`:g9.̢lqQ&KlydGыfeXÎH;3k9g)b{5}(n/8RɆ‘R$.B6tSPXz"$cS9`/1ev^M=ȨEX,}i3na9шY#_#.gl+WY Z(->u0⤞hfQ?E<㗤/?i Ѷ#Lk:б,nXBю2V;)2o(*~+hvo\3Qd, "*/~Q^j@>sw,aGG< 6|prm/,2Q(ۮs<|j`Rso){t%EZ)al (i" Bp&O/vEV{ZUPX.+w7SSstd:ؑeW;\غ,)-BR ]t!ENw~Xy-nYTg BOzM\l G`ɓs,qBWfd]ImTMJ 8 HȽ~qsfk/cFiBdmg8`]{[4#lldn"NhF'ZL+:̭0d!]QwxTm뛸₳h"bnF'q>P@C(@6¶34}b+\^cؽ8IDG(%avpl|O2.6>,a.ilPjd%`òꢈ Ǯ 15yŠ ," Eb$e963nۅc7(HKrtΥJrC]xMeOX{ddc B 6vnۧkL# 9ztouI 묬)!Hm]KXf`Rm!cAA.Pp! QR}xB0GWzAWbOQ-,5΢ 5̴h?0]ڡe^39龜^vFꡈΉ.Eآ)Bۄ5P54\i`vHڜBs@(  Ǔ7H +=2PAۡݣ[ ~4ݕMBc:|q3DH"v7!:ݱ lѨm1h8Vȋ""& 5",@(RmQq "wRl *,EX5D yQ3rY~IciM"8mwJ~:I#؏U@D mv$k/ZzdA:jis33Y"l"H$½8X,ȸVH\RDFXr"eEYtQ@5*فXvjBPG[md9@dL(X"A܀?3y2D&@ꥈ vB#%OZN> VB֏6XRb$IJ1ih 4ExBq,]>"toH؞ C?ew036yx1˺+Bc[4RHm,)4AleƦ`ʵap7E~aE3Xjb+uqEhG8EAacWr v9"`Uf)7aAZ X*/)e([b'j< n'fif"tT 'V5YW^j5"l Er{%Y{EEҠtlH&f@HZaaɡ1C'ERczjd΂#b"|-Ko( `+9Q5fWb;) .Qzm:j|Пq NSCQg"y2wPD)dg Qi#§QP$xF2i0^yY HuBuן"?>)Iu 26>ntX0.E1|"7,Jo\nm-I)6(B9w/ET)(Ov1"!0_m3-ńRDmF+l6~b8{[(dt${-{ "r7a9 Zs-E Mږ?"tNwtDq߬ĹƩ|&[ Kۉ0"|[,M](F0/4 ( CwS$\ &!Bk2Km%Zʫn.mklfAK&i/'쾙")[YBQdw~Y%\8)j%6'')⯮6Yu]| [pa]f90kC>X)Ҟߌ2YA$C<)1V2wIN:G(nrCM$=MF)x^%"CH/E NK:ů6}%a m\Y]s=lMA!؞DB bҠQnkmDS`Q]l`2[!Gb,#J rį]ZP@6F5$vFmYdxda޿"QD:.EdF:YOTAV#/ڜr*|d:FCFŲb.?6RD ="oFXR$3xErU,?)b5j4"0 y"$Vs~CtUBx& j/9^>@0<Џocf.10rj]t#+Kb5 M2_-tRUI`Vjs/XԬb&)==J(\d"ېYS~pڄ PrD3&Dóٱuhli/1-Wl̺cs@ݫٴ[JQ0@1] .}nvu \?xg9Ҟv5EmDл +6lJ:Cusiml;I+h7A8[6cQToTz";ŤE$Ӟ(eEߴ?G'DsS)4 y/VQjN P:(bl*HuvW]޶)2< }؊Iekmx1] djuBzEAH _"+ܕ޻]K+%G!)BR7~'\s4p]u"LNF%FT;3x_! l/vx6 &"O^1E].[ ؁h"ۃ}ehkF{Ys;[eؓۈ\wpۿ"C͑z)"F*|ETM7k\b hXQV]7Zq2Ѯ^ aH&nD:(pER֞ cQ4K'l_.XTWE&PcQx"!}8N'lZM@Pts CbܖՋ *m.6@! 㵱 H,)_k<pflb2E{cl=뤈ZtEjPp207Ta6N]m7a%0CuĬuaΡKR9t ܧ5!W{THԶE͈"b9Yg'MYvMdO49ر7-HK}]iđk*< !`{"Κ"Q܏%' NSMB(M믟Ri;(b݊ʕa4`s2Fat?ѢـS4f fAdOx!A f(Bn'_"hA{ŧR$YQdE{)ba˄kEpiuPd!_Ҫ745n۵bP WfRfN U",`JR]I۰8Ү@V\KI"H0Z"l6Hc{tR7b?BDbVښ^?Qʐ70)/QG!lnzFˡ"vt&m" WD!鍮\X+1EV1Q/Dm>E!2Jv VK] PL[E2CDj>j G o.%; 0@k`{ (I  I" &''(Ȥxq,S Z@̥)k*bU{thcKQKYGښ܈"$t&Xmd BSNLҭ(fiǣN{*MX<1i1A67 E[й"+x)j;C>M)29+8,Fe$?nȿ΢{j:"Әu^")` !slmadn؍,8[B] q Yhl =3^X$YүU!᪆!Qp]Yԣަ*MJRi%u1~L%|-)H8f)Xv \0+o,pLx' (-"(iW\ 'i-Y Q$)G0 bp@;~ԋ-E-2:bq`I @~jj+]qgȓ~/zEfc* 6-$II* f 6X9ŝV5e`f)-^2m= +PZ#N]Lrʣ.e8St(R@lʋ)s^U)=dӮo T[RCT_uZ|{6U|G 6,5"Y9ӌ=@(R*=N4EcgF(R*=MEߝ=7i"c ?}O26LFER)zOun`Enc*JѴui:)֙{"E|hRygEJg.N3vşC`wsCERTWŤϲEJR4HT*U)JҸ"RTC(RTznXW0“T*ޮ(BeڟD}O%ObT 9çPĥ֯}_K'TJ"g#lTvw6L~lj [(WrٟȜEՔ5lrlK{D^%;yx"w=zEߧ#H-"O,"A_y)E/|Lk7=@ꉖ;ܐfPd=M<^(rP2~.ϧgUCC#70x.3"3M;ϦʊY̜}L^7tzENh[(A"(DhIҚ*Mp@ݸ%D'򶀱{/^ F0ǟNɸp"ȯDIfU`HBy !9w6%hFo/<0@FάP^f0ak5`o~G֤}bWQfYjA.z3E\",(yETCdb'qK$lS>Eו <q 87ttT7bU7b'kf(eGG.Y :h}&3\^ `0B9EVU(Gۮ9j \zԕ0B;uE(lĶ̦q]z DV~82Dbbc4LM뺈xʐ _g22CvM6!UhL g$Sm  PԖNTiuuFKmqrjqp蓇uDk(Mw"z)Iu`o֮ EL6vʁm)] lIv`C|:ito jkbY0t#$jF&u2(B&#vdZoơ fEVh`J1l4P@8FԆLl4Ěɣ cN(qLS)ɉ1C@_{]+Q279`IUlR{Н6prBً92H]iy~ҍHL%`@AI`C]xe"i晬,jgP/I;nwLs4P60 !`TA|O0KAqIC;rK-EV?qc@fed+ٍ"i<P\PdNۨRҠGg[ W2vM4 )켊EX|n 7 MX?xfLpQrp /L0hrFKZVD,RHw',B(jT 1XɲE YWv6-LEb,%iל}!ݱHd]c[Њ%m8V1Z&PYdwp%q[2=KIa=Ć- ~_Hjw7[`"&3ԵIw|^-rD]r+Ot&K@KoӒmHX,L^bWu7צtbE[UܸEJHfv?l .r?̉7`߾6,I$- [ .ƛ Yvz{VjHVqEkjtMa%5x՜pE7ɓ-)ꬫxmbŴQd5gZ.[ͤLe&iC9_&:bW4{KdF,r ֦"k2Rf""bO.BFЙF: 2E7̇0DUNuOS8\VYG(iӾjYVزAc%+ZDw5lZ +!-  QSQ#"cP*DuBb`$Yx@!Sa"Nn|s٠Y3U[Hd "xZ.BZ]k"m˯v\ְEҼe[ iK%il%_&E-rDfb/`31F%d[:O#;Ƴ0iؚ~‡y /ɼ0,qp"ntc> Z"VjI)-[HY%vlX80܏Zbʗr"(pүyB[ds]2a'h- ɝOնı NAi0dBou$+_QK|ӁʰQЙhwS?=jix#_džq~vO,7>'5R$#nJ_SR5d"U]4+{tI0=5U,ˆ=qrj] Ij [R3R=7ƅWx)ܥ,{'{;@?2ss-rު\yAb9EÅGUIKi-YeUgBއ7"^8tZ3:f X 8X!QJR}sAi]SnFs;/f75=6Nl ZM !\͍ySz2o7$ΰ;ŘIPʟE!l @YvGr1@9-F*Z$ܿlKgo߮FؐTa !] RZS [nYjE?@̂##q<024#BЗG7wI170mM.^vgEF ]ݑx-g9]4Dz~CEfZ>EG~:Ű?̟HC457#\KFpϥr֣"rˇWC)|+.&lndkED׈w"qlې,"ĝ蓲gC) YDOF~.Byd!"B!EB3we!E;BDd{Ѹ !YNtW!,\FZ}>7xW߷s"Jgt:O~)~Cy_쏼}ԃ]>jj߆{O} D7Q⥖s}~Ҿ"afØ$Ed5E3ʝgWzπfٷjW-O̟ 7о;}ȗ[sE柯׮Ÿ}^7Ю;}-vo}JmOY>| v..~_|ϋOeߋl#myلo/SjCmE.x9nS3pO÷pK,b?0oHrYc ZIHAZ"Y~d m"gf`[%>_hf,fuslk/4uBeeB4#MZx泽L>&m%@4#&Eh1x@K[O+/N,fh&oBT-PĖ?<ldfD,iAYxYLYk4: \n e 7$ !DqÌ!#!W|HVԭ9c$} [t,3F {WV-WXƌ>)+6_H´%I*ejVEmqU-T<,nيj,ֻ؛P}~Ը`vӛ RS&>EK /tt+J_4^sP2BX}wd1_&s X!cN:ȶ;(ځ̲a0]w8v;FТ+CX(!/spEKE-oc Q"- 71z˶l-D>Y2$8JYFڔasK?kD֊_54}gXd&c0( 2>Ϯ^ !7o;(cWqA6lq7=C-ZVE$0ޣM4MY^[$k?{@2B 8q+ܢe-9omɖHXne50Me~!ƞ8BcW[P1nvn$Xx\ M ym|`υ䃪of>b:uፖؽH%]&޷A2U7HStgڬ;^y[da0iֵ/n`s~?'o˘_Y=5̜ȒtX $CL,1DE5_Kov }ɢG|zHm_B_,*m]Gٚ4[+,Үu {)ٲ녴:k}Xa"]+q~3EYf%(? Ue䊐pt~+:=oA/EGlע7Wq^@/E~ELpٳH"i a v)y">,b?@"Uaj tS' 5-,XdA*]!fhtj,H;lTVp^f-::b}"-ϰ7٢[9Ep ؾ"-tI][3O~5N#&PҚ]ZE+@8uh~B͖1-HSpvNmaSLY\ܵsX/Hq'7Yg,RJHN[ʀ"}]vqNE^WݙdUm5EY:NV:ퟁ퇃JvҖ[.t a7VwD-xcFUVTܬE7.7Y4ߴ/H:4M/tElJUh) \{|C`="u,N ~mx V,qJf8sLZ  ,`:-6?/;-GPqysN$!1*VH/E:Y6Y{!pP501v;cFo5e~[ڽWWW"&0Rv:^j(W-0U: sEtaA="mq+{Ccfa)fΐ鸯gRk˥Ȍ6&pP5nzAqN"$-4@t\^<֑!- άO\5#gM+Pk*kZ St"msQupm"yJXdl{rEfkH0ć-@-Ti$lEŚ}fg,|c6xbAJ`740J}{4J}Kqp׳eE@|XMfQd/-dRH#/³/1eN=e1̥)L#o$'2J&: X$\   .T.j5Y 4﷽-oI1 ֶ!2Vwr7զɿNI{5!l~,NY%Tf\.068[C}Kt"h2 BL $xZθES\Md|ǃ)k8~4̳sy: Hm !B?ʚ$ՠ+h̠l(:֖G}\H#pU{Hnkv= 0k㨱EH. ч-E(S?(]#hkߋMkq"ItP鬙E$ jv _g0['$Ǭ75fOTMXo%l' U4$ sXۡVV] Z+;"e4  k`BIS=C~#%|F!O-BCFf UWoWR|"% s{tia>Jƅ'ݡH(}n-A8& >B@۱~cNc1Cuǟt-4{$R,pcJ7-kclt=gaeG;`Wp棘|# "AJ: A\cͿ_`RUȚAvfhtpWEE[_.a-rD>^g%s$=4G RU"u>µ9՞:"A F?} I*1T~"I, __K޷ϪDxG=J-R6ui~Ђ[dÛHU>] !h> 1+P.0.B Ӿ?e?*QӔ+\BŊ F^m"Bq ةP O"!n%@@E7M~Xl'!s݌,"bYD!<By,2ۻoS+OVGMga&VBĸEoݯ, 6|IO !E|EDZ[K:v9gsH"Bg'<47gzc񚎕_.&1=U~,"ݲo7DgE@4?zLtXm.`^ݵ;_ÙN%|ְ,b~8x"w,2p;ۮܝwz<-e C! ;-\iƧzƿ"ϟZ!g-NߑKeޠ}Ep2:77 '}I:;Ħ!Sh|,5>MVwu2NOwȟH?lgޢk~fg^B"-&‡ J"7P"d{y>Ao=F,`u& wAL~y3 c çA 1wYY#;` ug`SQd\.# '!5mMK< Y*ryVE2*܇$./5^AIoQCd{4, xEAnc_ ײrW =^XQ?Sf`A wYȣPfDˤ.!@򻊞E6Ufm:9%]3e)^6b+u73T$.qqL0=P w+xFK1k,&6!:c-Cn{(WBG[4L6h- V%x;,f4F tqiw1Yap$P̩Zݺ ",]ѧ0YIs vm h6:h"wrkE,=\ht:ɫK1H*GCĀc؂fTyF> <++j\cOtFUWH®,Ȏ3YNe;>a368GqpBZTE8Xm) z'@pC릗k; E|mI"DLXSow77OwE\닔\SnYu?XDnH?Y|gQyvSZd{4vo[1 ,`>bxd Ȯ]mQYkdFEX2H~OHZrh4 E)Y" Հ77ZpEE}1tֳ_1?iZKh;F9*3Ք2!]6.EL`X[lyLIߎoEp) CvgG Y;{:[cEm$Iì R+ $ty"}br@',g4{Fi YĦϦ/9!X*́p@.o. YOYTSKk,BQ[q"-|'-6q,tuDƉ[u9k LJr >({-HW6yT粇y:lIOI' m"F*HКHFH\}."'" (nkQs N6F~j*O-xo$f[KW[ԬnCdqpEڤ 2ޘE\YH-~:Z"EXOqb4gkۓ\xVqG7wyզ*&AU04RVtSzpЮ(YzΐHIR$ʕҜk֒˲%Φvm,=mZ"elPnܬE#As9e9zEP^c];r.btt iX$*o ȶMOA1j K,\a {v6#Z&q5uS,uyT&Dy04.EE5a= |)կS=씷k^`.%tb9)nHT̥Mϐ2<!YYTfucbhT߉ȋ};Yw8쎁;޳<"a|E\zQV}2V( ~S5ƤBګs)U!wϬIr.=\`DhҲkCO4|Xo~=?8,!>W|qzD>?y~H?yE`@ :|fϞۄ.^`'IwTD>Eh<B|$x>RS !GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EBS mCBT,$*֟oBq"]7ZNA#EspB;(Zdr|IEn|,Ҍvz}+|@*^GApq]j~?E}c,EU|TZ|3Ɨrv/egB{?/<ˑqn~gR[qȓLOZ5Kn^kj;{+b9mg?:޾j+ +2Gd/krh{3lm/SζX{[ ,g7XP=>4cnvd_6g'8~Mx\PXe{K'j.mk-2[Ug;*k({y3҉h2U9^sXJ},R[ [KB \ <6:AƲ؝m?S+qnV.hR<"tſpؚBݺdm/_cA:qmu{dUl5f:C-T+wE8R eNKoʞmhR?;m|Z ~/ϸ_)ګ9p\ j;-"5ZbNZj-|`jլFR',B5X5۟VhΚ_OAH=.XdK%]3ި0khoBi| O~,nۥ;== :P&&]";̘6ݓHZE#۶ W`8L?-{(FXX6QmOcrgd@Uh|xfB&Lʡh3u9ŇYn8 gIGӏ <i>D.Gh~H:mYy{`$2+ߕoVI5짶A nۡZ|E6ET["$\ꂎS R OLmjA7tڏrMsh xl q-L;YA"/~!Kś;L[qvpSۋP"w>5S gXY$$<`"Vy ²O% Γėf[ d 'ueq',X؜3+g۔MYĴFHW w]ze'eYW^H3^bTINrE|lwE:d"ǗkQB Vim,U[Go^aRm& HMds6A [~"vѥ qpp} Ymyb[-.aұ,4_7]NXY:mSY$~kZGMYv,X&Y"pEAS):ݞüğ-,b79ʔ = *T-X[P<$#[[ixS+m==HSѭ\+d }:%EUa?ⶀ^MZ$-{fpX.Ed1?^@o w؅sՆ,f|p][t"ɴ7*eMT,Ng픸ߋtg 1B<l{mD"1٠-K+$.NXMh,^7D@"2S- (Yoxx%cϵ M嗢E@ueB=2ɀERmH)&}uƖq}n7 Zi[]тE`r G[J`x[QyX ?^Ek $Zپvw?f!|ty"0hq-bmS 6#XF&C.Bofp3-,B3e>c7Z0uPpeL.m!3֊մtτ(-P>NC!nf%O[ju]\sҠ՟10(@jCqp!;kz68.@_ l;4(3?Rko8| Xm"Crd6[FKڐ3 d">كv[ڶSH-=bL F`gGQ86w}'s2W5 /h`1 rFd!"+ WGy3?DJn7u߉{Z\PV?^F7mX%m]yGKc@h6d)ͅVH0djx &V"CE!E4ͺ)|pc49޹>cg.h'FC59 Za傷OK=tLJ"CЛW#u/k/_^Ȝ-EF@~,~+M`-ȟ Xu{ ` |d(߼\,"C-ڼ*s?Tn|WoF/PE|W,"'+y[aq YDb!!GB1,"bYD!|-˟Ej@!^ʸEs9LL95?j2YD6|E< l0j byPBagRߋ?,Q QIBg-RK_mmnWp# ?{EjAYD{%s%}>Z}@N?˳"P 6H'!ށY_n[=?nPuc-~ijA h,b9`BnXmZ+,b ś]+.MgO+QOQVm6'es> Yd|ѳHLx OYSEYd/|YM#kLC"n<^ !y,K-Mt%c"mtYfsY]&c"i$Z; /(!a"u9LYyȠ':-P 1OZ,^V4',jR'ϤQ'z+ [E$!]ulE؍9LmPs1E|+"RKB_EGg-px`=Ƭ""$cYcˏ} eW[=ƜEȼ !eYjHq~E2260~".m4 /> "zz%h ƕ"!]ֈE\Kp ˭E!E<մ_* ?FYdI+@Q<%,"-|J|5 hn&;*/ AB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!EB#!GB1,"bYD!<Byd!"B!1!2 endstream endobj 14 0 obj <>endobj 16 0 obj <> endobj 17 0 obj <> endobj 15 0 obj <>/Length 115092>>stream xۺ:wr{K`{>o$I$IC$I$iI$I($IQ$&I$IHL$IF$I$"1I$IEb$I4$I$iI$I($IQ$&I$IHL$IF$I$"1I$IEb$I4$I$iI$I($IQ$&I$IHL$IF$I$"1I$IEb$I4$I$iI$I($IQ$&I$IHL$IF$I$"1I$IEb$I4$I$iI$I($IQ$&I$IHL$IF$I$"1I$IEb$I4$I$iI$I($IQ$&I$IHL$IF$I$"1I$IEb$I4$I$iI$I($IQ$&I$IHL$IF$I$"1I$IEb$I4$I$i]ä$I\0 &ͯE)I$ L?%I$LR-!x$I~^0-$&I$Ig}z4Ï$It+(I$IFݙy_,I$I?f{NL$I:3iE$I$Ute$I$ԗI>$rR$I$ʤub$IԠL-&I$I $$1I$IȤ+b$IԠ~L*~AL$IԍIIb$ITQW&9-b$IrOL_Ь.5HL$/1vP~XWݽ)f`1G>ɋ:#v&ipH P&\^!>41-( x'-\w%@"@i VmAT<ʝq*`b$ҍz18+6qV%  px6#`3$}2n75VzJKH8cH,4y1⸫~qH/יLe%Pގη >x8|TDL'ë$)fnG} %IY-L!Dᦽ1eHJx<eMCА ҠI}LzI;ϤD4LV ' iJh f/(H:F((suc$I%:ǞPڶEȉJ[ķ(!akt]}\).7$b 3RLpey*]tp$II,bALˍ5b dRۆL"'1I ~o"xI+Ƥ peh8)2incR/tI$u{;]`s>ُP?s#x›El3xsr1<4}/1I0˧a+=蹋ICjVL'054Lvϔ$IRo^<%·P@$d׆ꅵ1LZL Η$IRg';d_b6 0^A%LJ(0)2=&l%1yP63 uJL$ ^hsҨ<'^mZ@ JAcSML %1I΂ !H$i'Ahg[Y ǃ'| 12 $uu`RW(I$][<;P ?u&L>-I=(cЂ=X ;Wb$IOU.!F̘ JGÅq\յmNPyv$IQw/% >fp[`7ms3j0,db$IWFZG9vmVCrj mIۘ$2)64!PB/O&YcՆcwvJ$LyLKVΤW4ɴL$I҉ɤLEqR]1|o$IUG&58L&euva8hp䆧h$1œG&]촒:wЦ9*ELP&*uG${B^i &JX19m`=U5[|ITww¿i..%LڱlXvimLQb1!I&ٗ^'TI_͙w/fS }q~;DԞ;N2`_g7]Lc,<1a3 o:kw>\u?Qn1ܷx_7b$wܛY&h$Y'Xt(]X$᝹5bK|g0@`nD&mڑ~ЅL Lrϧ<f$چ>M1 'AAө9:IgJ#1 43iK~t$ߋG0x 3ɐ#PzSvQԇY` ̚`p6"'0\'5 Ñ>bNLv'ͪ*<Ѡ%=BXSh _-4U@ 5&X=d H OBb bdp@`&xp*g oXv)B~gz" k8Pb Qk bZXtU8t)l Ld& 4qR3V2Vu&Y L;6&H# T @JL{\IkEIǰ$W)̸8m#dCQف:"K3 UݙI o(F0h֙S$tc$jo\.B1\i3̬"=QD^ X@W /EV10V3)0p<8Ih!@بIb2Lj/u= aab .SXˣ%]>S, Ae;.zs1[ 0T`'%1ɺte)p'.w:sIic fo$ߨxsoq''ŕn~ t\t+k[3{>Bݙ!Ih*2(51Hfu<(Q"L}Ì:}rD "g%p3F3:/m8C[fծVP?NKD\S$@R~S&aŤXɤ Og+HjhEŤ}6/n#MB;ސPP(!pUw2X,I3r7T:WIucRBQ@,&᮷+|=8Jp¤uin/40)19:l-!dw$y."h)I+Yw@\vgt5<(cWճġ$CΤX7T${DA+[$5lE,ʼ)G2i3~ Qu#֝1ߏmL"t'=Su&ya3):lq԰; 2}Pb Ӕu/J7l#c/r񵢼2a1Ipn-ERΤg:#J%_aF&A2#K>T.u MLJP9 7{3LNkfw34jҘZVpeٶF KHL1L(l8_|x&^֎%vW FLZ-K!=Vl,h|TU&s$I[fdq޷i&|9I3&q^q$c$oq~]~IZeXRfoۀax+4't O:L;KqRML8:2)LژđDV&?[Mb)٤q)&v2i-m]tXL72ۍK&V& fO,<ɴa2|*]n^0Dt*NrXo OB~-~2 $l1'"+>'ΚNL88!$̰ɂ Iw0Ob奙,*h fK 2yVD71*eq&q|Ҁj/8!oK?ʤܭLp߫P*&b &YƤ8{Z0"9褶Z[FbRv'(29$8IaJ7w:1낟#0152zKL0&$dBٟ<&0 &开 a,eS{>w,U-LaZ0NLJ>oI̘>$ XPZfBg3) 3TʅS ު35&JtAVRp&!V \83 NO8e\*)۞,f&مI58laЈϩĵ1&CL"dR29S&ȐsR6Y>!U@&I28E5+q>*&I4j;s0ǭL#"&hAA#_HB@y(&IQGźO ?BM 2N $I[QI[yBjלiKL$I޺#ILz$#,-I~L^$ƖTUI FuKt0mĤgL5GH$5L{g οwoJ$mT^c$?$2Ss|W1$I ~~>ovc>I}|%1ܑs&t0)~z2T5eh|tq c^ (6˗Y.eqcR| x6rUJ}_I_gt$]^ϓ_xO\gc H2xQDvn9yB^>Ĥλ!-aC1\ˤH%٧[CqWxV w7#)Pzitն|k,Bq\3iI&:I+$#_NWQI3TЀO2dCu%[97Z| ekDŽM 57A3չdެ7L1}ĤT~ceg3Jӭ#Lʈ2)_pİl3ːC=ϤIvU68)X;`N6jLWOӮ;2=?mt ĂCyC"[>S3kAOaJLf@4AFnIlu +|e5w@g2ɔuCwiLI2&%u"r&F\ ͨ_`HdmtML纰8ţm< F.?uO:]'] 6Ϯ'!Ie*NS^i`q'CpBnL/6ryLl1&9z3xkKv lǤOj`0( "ILJ=d Id0ѐIU@M|VǜĤJLJF&4c]DJZ8Px&ed~?eʳ7}\ -rC&&ln"/h%W0Ҧ@BqA M:CbP72 {I$L?IUaRnԘJ uQ&g^8aM0ldR|9CrEa! hOWLp5h"ZnvŤUxIjz1|I&9-LkYGu~ڥ^tI~2vO n\&eJKe6"p`L0B`\xژ0 9v1Tk|04q Z9n5+3_.UI//|OnIP5vVeZYg^uSG.9ˣ QJIe/-t3.JiQYä/$@)gXaRJX^1--1)@Е&AU tD&UK^IboU'LFmp$hy<;$%&{Gf y&<;In`RR ԑeb\syu \aFL©t :h|jX_.MΤP]aK9*L͜ICAIx3-?=w0XF9Rc79ӺeR6}LrI.GtzfL8g_4 kJsOĀPڤ&nk+LjJETkn^ cwTI!ۙ.dI0)$xz\ꏥ?!i'HlqN2gFb@F#gHrw/fʺh7MKLzc&C4-a!]y&,tޞo< ɁƁ?2y2Qˮn;OGEO~g$&I+}UQڧz=?hawf$>IWѣ(f$I7kI+{edS!X[tW hIS'I &µ|a7iI$BXå׍FI$<Ĥu7^=$tWw!0$qtMf$;޺Syy40NcjEȇ!}+$\$m,Bs\ $}q$&Splg%{IJ?_#8kLr+/b#>WXB~d4xeV酋*jhڮ\,z5%gt7V}jշ;n1iy왙8IItcQT*P:Biv}$=I=:ç5j|c>O3$]% nI~ϝ&?u}3Oi¤4Jn&S&FgRiXl.|2[c9e+/ä!^rk:% o7[IǐOL.}mKԿ [E#&){=)5kl&ͬA%z|]Oji*jڒ$<b/pR3[+}_@|h4W кw(s]I!IsN~jtj'b ǕNŝ'z^7fRĬIE١[1r%pވа%Yۼt< pq޴4E6kNf'N*,l!L*\ȒtX6*P{1$f Tnr@k&Bcn|wzhӁofF$H%L$V5iiqI1 ۵wgF(f/Put v8(S_Wlr_$agr/jÃ.Xʇ%L*K$PmoXI 2ВIT.'b C)a4׵$!&cLM qf$oJa&R>w,ssIYIU&Lj%8"yMȤMaiJzGjXSeR{$ 3E}'D ꮦi?jysIb˧y͉owPa,Y0208(2`- Xb˓kѱ֜[K5:QJMpNLuICg[:-ynq'0)&qAXEIU *J^9|tkNBA2nzAM̐^q }LéLB+)1?Ot J 0 ؑs;h-o{nmFI¤Κ7y)"jqƢFpB RXv 3 L[bYIɢD$VXFB&3TgR'1[CĠ { 6+mLBㄥ5)%kmFd2\K!LjYMvLxˤkDLIeR1 $X>2m<nzƤ݁Yǘıϙ|];I;Ry38ǤJvxIN nL NmLJAS_[ؐ 3[RPKs{˘7{@ 9|Lj&yIɭpn=;rR^3I :%Xs*$tS$> gL(fzLC_/18v2NcB72) &UF?@P3|eX]$TjIօ+;~#l5&Ƥ `73)A.k S)Tag3nMyv \$NWYOJ 5EI 6 ݁~&%ea$\atѡ#xiՃIɺ(i0g=&N1i#܌;*GSNo_}*չ;0HLh2)z6&V,T&ED;v@D&فqIlDŒО8ieYI%28݄&\G̤J> 9mmvȩB&eupſ$'5@IȘJ'qF%5-IT]ʤ891cx!je^g:dI_=1~ؘN/4$| X4)1Y7N~!e-dߺ$YQSzuʤԾ,0iM KoʼL%1ICpR  9 `1&!؂+bP-~[9 BB I`Ԛ [⤙[909q̨uIԢ8<:br7,-}kuJILDk8G0O;rۤ!LI^&u$]>+ y<IӠ]@@9P?GJL yH<imLs%&Ik&z_wEriB*8EGin H9\ [_hE|du62$it]7uRȋDbdWׂ!x͛P8NP"hQlat޴:sف @0u(i p2 "ؖ#;`XЭJymclSISiM:V";ܬ$/0hmfҺd$wPTe͟bq¤e@ɝZ?0 k?t5Im00aDYy]t3~WPg3Ju*Sػ4ߴ1bal3'?,0 9gODNPOLP 4ry@邶$0Etl<9N:Vf~ZoBRKsf Q|L -LBV#&E6qt@9h-Ң t L2 P5L/&˱4p $X9ޭw/dRGv^Ll*T&)R-Þ&٥iA&!'9dDL%c)cyp2&,wPq&@3v{0/iL][)Ph6F- {*w`NabS0kCa;-&M$=$ CdRۺ:g]13Ife-N6h lMAo [R(r:[𱓽&rEsUxFeo(eJ&!Ԋ$S~3*N}M$V&rIbZ4ILZI\u\1Pb}11iv)b"Im2R1Z|wR {x {||YsL[w1tlllWW`] MN9`'gwbO uĤ94?pVU&ErGL I8as(Sඅ+OF6rx(mGZRvʻx7.~R1]CԸ%?IfVgI:3&@lLzn;]cnFuCÓŠ2 V&ˢ+ 7lyP1̹@$?]yupa5t;(&腔iK:IS̤se OʘTaFG:P7.~&mHC}6gaw=)sŌ,Dy/z#gXR_=x~Z&wgRC uF6*m;m[,0JȰ `wUxƺL'bBұcظ(|d\jT!^ -ݍΑO$3Xd|d|I{!;:*̋8b6?YML*nO0 ͖Ͻhc[K3md73&QK3kq)uP}IpЊCF+q!8J,07->2)-%1Wٵ3D HM\8I!S\م( LJKTs?sǁ_q?J|;TaߩC6L6ij8aR?w;g2JgґJqܵS$WDr!XZ=IF*=ç:~˝$ꪲZ5]Tqq Az#e7w guȵpI0N[f\`+6 gl7d}i w}1tudѱ󹘻#3v +aM &ĕJ)ܱ@8fsK*LIxPdL?ؗI<Lj<`z޴0S)dRD~bi lThfz:8ݪ;bw%xr)rX` .c\3)|3g>n ~`!&e, T3zc㦀I ژmg3h\$m@Sʚ:2ޭ0-0Ĥ#6(b># ",@*a& ϕD~9lNe/L $NF&0 ۙD(;YúIp0>ܕU6mVZDw7aq+1\`fXKs#%Y2[cBX藋`bO#$gu͉:24 ɭ$k_!1¤շ &9$uM67s$raLiMpeoLq>at_Y-aN;A}ܴn3h9yhJЀk|.&ٱR[\0>t鮕ir&*˔I5zĤIed>]⒒ GH1)b^aR [R5#X\ x!TB!#`׵?0 M/HI`VbxH}L `9Wi(Qs)p3)i@p9Z^a]0#q =ʢ\}I,ddH*OȤ9 @Ƥ2ƤdN!kLĤC_{49ΡD)'`rEF#U"zDLmr1Lw}s!` p'[BW4DF's]1LT>Z=Lz:B]M71ɍWRrK]y(Ky4I '֥$y]0I(@V ͒[2m2Ϧ)zD^t鵱q qX]FobRmd e7- vŀe. LsnH[1 Kl2Hi*Lbט/~%`5Έ{1Zٺ`0YLuƘ30P&t^FIU&a{$lq<ܹ`8o[@'pIgؕo\մѣ 'U9@k8c9/P&`oX\3H̊0zl 2%c jɒ)\7=fNṲ}`O瞮Lϓz=^I{صI UԴaL"AK#Zd&4D(8wv&bO ʪ3}UyPTڗrjŤ3tAׄIPz2H DTqڋI#U8 “,=LzRbWɤX)hwmP[@ {2=HiaZ-$|sRst 'Ȥ$ 5ca\N ,@SL*WCLZX*:M&&4-ݱu?Eh%:no3Di6JR& ]:emD[z{}:X4 e[fklh'L$8Lrݥ֮9Uژme" "&V|7,}po:e PB)(I2#NWEhMO0,KgX_KJ2 /0 L9,PI8'2 _fV46$V.sSLr Ye47ڧ4CmtI⑋EŖ*sLlEiaK'֚QLЈY3)ϑ3Zg T#½I)27B}>)82g^dJ&2 QNNdb ka 'ZϸkLDEL e:lp?I#BOhq#5(U&Z0).ͬhO0)N*gL8֥32vskw p|icZ F\җ-%Δ1iƇdp `!`aW6/w;uߙM/GbdLr3Cp6.-ţ%@1h3Ղ^ޠ3}hw Nf:5 Lz'Ig \I:'#+~ Gw&:2 C-gܮkԉI ~^%0 s!^H}w&҆yhզ0)PjΤPmfR|K Lqa>еqoP:8m+~U&sԊ;X/PT2`&a&DqqBC] Y܁ZNroUpzk;*k1ԗZeO LYgxSܮV&lbR ڙ仛1 ޗL+TaRsʤR)pI1 =OBiMmMIx0/ljB|&gR?&W>+I :z1Aye.kB%\V(0yv9>ǼI9[i?&%~_ÕCu`&& M2#'OK<>m`$Pr1~#/g$O: s&58me*$kƒ!ӇIɸieI`fRC 3[ûRCLvx>5wO=cR$C>MpZOXp$hbeCDO_&h^V1q@|L ￵3RŸmA$$^x$$hܚ_vk暽Xob<4¼6@g{&2z1 =LjXdLB P84vr?̋ۊK=Abt^vtpX*bA'w%7Xqv.;^350!Z7Uë%{M LBo`RrT&@L:' LI9jvgJ%aN,Gi+Vk2iMj 0y4Nx#).}p -LjgA S&UӊIҏ : 2) X6F&a]ш<$~{XD$Ŧp|wv˻3ɣ$ 1NU5$_>&sX0#݁A9>aCAh{J:sb?g 1 ŹM LQZI5,@'JLnO2ifU y\PH$}T,/G7[eqbE,.a "Ga;ECJ¤@V&ٸQ2iZ]btFc<@IUmOU/ A码I uRx7abIEa)l g*L溤b3PiL/T{b<I;1feh}0s 6 }JCjBK.n$jj_#&]F6~IS #K"*Q-k-&_w* 13zmwȵ'}t1@ @lp}Т2vyË4~TL~E g4#S|n`Ye1v)^ g3Y#|hq$IS=) ItXxg98\2 `Hz$I*=* m&#_-ICQ!]1'7~&5EvKҐzrt尐4$Ɛ$}.U~gRS.(I8 `R۫=l$zKߩ17%I+4޻$IO#0kOaR绥+{ IOS4CZCQ7~?E&KR'c~4mCo:,60No7Kt0)+ۣLcDk\$͢9$?" !WՅI/ ϓW߲ߋw9K:Km5z!|4UL*L¿h%?N-K!sAIjmc1k/H%<)u?D?6|9 %%%6V9RwQh:Ĥm1IqeR@gRE*@@7qVXWGBI?~Ӥi^"/A[c.i˛#}clx9]xc&Mk?d >3 ɳ+ {tږX-Νߛh2 6Ʊ-F)S| .xp(\ry5&`$($V L}+Ƅ̞o9.m08#'[+KHcA6b0$9J7FŤA5N &-_œv&?ǜIpr2 jh\w;/HbVO-cPJ[Z;-L:IEum B -`1ke$P*Is.C ,BU²JT{CfHRWs\@LǍ48vd  +e,+b2Q#k*(qkmJ$30dL HL247+&wQˢ~b2)[cw*ݿYRSMڸg38̰/QJDy)f2r>-A*$:+ۜt.L5gv_GT!t7dbA~.3RnfR`S&E\FNB1W0w aRYT\OIRHpg͘IE֑2 U_*XȘ@+ z.^U#ߎZp\q "7\].ISm[{G2idʤS)\p;f\Ev1Z̤1%K&m")g'0c6]P< 1 p/ڒm͆}ʗyZ@򜙥bg=DkL,I|&' i܊Ǭ-pԵrI$1kQ(s+I+gN(idN$?MLވ;k!JJMp)q%.3ֺNzZ)Iu.m!9g-W\,¤9r+C}Gu`VPK~f3/62euv'fn-L^ &ґq[4^Pfg}#M`b1k7 خ[djW~?8I0 ؠwML. ׃әDIȋ$o59BB_jhq L+F3 XK>/CljYaXLy7紬]p$SL$|H,-#G|OZ|&w$p:s7pLºcLHJ*RWU+kbb:3vGoBdQ3'wqa}2CƱN:6PycZ2 ^^0-Hh=.S9YII~at 3.&x `z([P^0chF&)4,Ipk'J" ḬIĄIm`RL 3aycb.7#4}#'Iq}3 />YlkXp|na,{A`Oُ7260)z~s6.CL gW8E&D#NWƤ(gR'0)!&ug0(ۆK'#Ī g*|`R=p7յOMįO`/dtP{}^+n]`)p7% ԈI~&Ix$@rL $KP[Jޓ=]e&E$=Oy3, GPC"tRuЗ3rסm2' a.*v|CRe| %1@NɤlXLYn5${v3e9JIguz9z|%qA@)3fx¤ \*¯m`RHI"On$ >61e+{ D9&ɤf(5itIj ƶ"1rqH S gNf.7YHp[JَD>XL*ݨ|G>I9$$OeR=,WLy'3).ll>UbR?Lrf7n6"ve~z J4Hd]tM4nfiM6DLOxst螴EDtE:cR4%L2%p#2xmeRV$_a̎t(y8ܽ`s6=OgEFnbq0p(eR8ØvRb?# j(^,V6&v8-ΗKxu,& I; >%  դhdR9T=fE..)\K^w3ɜN;454BHӑ8|A[bR/A{Mu"6W]qa18#+@FcSNޓNYˈmoSu{aEΔ6,&!`9bbOcfȤs\E82v.aRDM>ۚ>/sS9`A)k :"W21)D4wI_੾I5~΃lmu梦2AYpϟ$?HOT0? 7ׂ┗h1IO$"1I[-R$聞<9b66lvB< bqHfOdXm?2$i@}q$$=n.AOP2 ;e¤PpɒJPd )oSItZHz`w<+[Y0&- ^We!|UlwGm4vྊIү5e<vD | X˷a$uB=y#JX0߹MYgn&HҷH;OSˤ53_s6il;.a$}RG1!ę"I԰U\|Wm-ۂgn(Htl^0]9q $iD#~58-&$i>I[׿<*I=9s!%?*+5+wLԷAmMUIԍIiX< m ;c^}F$Iȯt/JG)fŤG$mXJW&B_) %q!􋋅ڜlϊwՅI+WI/?n5&:U]ܖY#l2ؐ2S:c>q۟_oPYKߞ| Zg4V3?Xy2/_'@1iϢ|n6SIgZ[K:1} mI9aRgkakf`LrBf/2):YԀjߔSaRr'|*m2c/gOX ςNj-z1b:/\aKĤݕ٭"w31E9eR-L8]L"hLvT$ ҹLy BL"J[bqcG!DI̳:mϤ0ߕ䡺IpMLP~[ds[}sl0(ϱc0i_lLe(sZQ <+Ɋn<R k3Z2)soaE2 8mNϜn`Ouŀ]%r^zUP6̘q2֘'lLm1-ZyǽkR@U ET[3 f7B$]ZW$4Țe9π#Lb%EaP>$ u.&ArIo I 8 1g%V5vaĹ: #\2s56k ,+=P}s7柳I'Iff$Ħ*hnssrߍb "D&Վ?̤|cRJ o@Zod}ypk,H~J"S2Aqc2UVupU/q[}IGF y6t1 nvN&M~c}L \MFF&%++C6NlBF1 fZ+gakXmu7Z_wM?sd뾘ԩֶy B [dZVgjijǙm0r4&TG0x"nbkY[6HXahFmgR32zxmk n;18xO], lba^&Ŗod4o2:zP?YdpLBf =?fֺe:d򬯻r6y.umpfp Rsv&%YU(D&|hRI1g3 ɅmgRțqRI T¤Ju$\pC uN m !PM =IU*O> <#dgZuWzJ`Cie#m^o frĜmH@G; It% h0&#72 ML/yv3"Vz6t$pCǩP}s" (&^a-g9~ݍl,KArd!A_EڝLr38e&3$LJ|Nڮ NBiLtNЀuN1Mi1[K.lwAE[ؼ!SRr5jʳX6-Zu-9r&[4gRi*^ڴ1 5$c#q)ijlY$l?Τ`[;2i]ŹPhG~ X"&]< n amfI=iRpp7I x7ùMe9~&=ӁϓR&}FٕT e;8@fF&J,I/cRI=tڮ J~70ұVpHj,@)@\(cR c0а1)sUQĚ&&y{3iWgŤ6&U$`SY$&m^쉑; ]DITƮ6٩4/ SmKT]St3͍A닁=L9&5y:zXxxHCk5B%&cy"vK0 Lb|zt)DB!2UZ(^y(רT,PucRg0)h&ˑ+&]ݗ4xTGIqݝ0S@{- hCfMev50 ݩ˘@cIR3q#I VaRIۻ 8V%Nd$t\F@>*Ϥ^(0geG)2XNwĤ uI~ݫ6,$騨h]wK u;IL}uZ&h싿tb3IPIc1] ]B2]'us-M{_AL~F}'M# z?+FQݗL>_0)lk4IAn5.$*}O(gJ=*NlpZ{fH=ݥLrbb[H~OYTݓX>Q&I;^=ڿV8@.ձc`st=jvBsaOj$u1サν5|ށ$i|}7'PΝ$I%/)NiA}*I:y=z:ϒa0+IMwI|b:J$LTG//Y߳(oD$IԮL~/ -s.Pf\bz %U$I$M3 a*Hc){,e⇉Gz$I&]wg`wQL,^0h=Z1ғpY1*I]8(1RR6~ ϑDЖx UbQt\$I߬9T#P+$EA)C=Ƥيە8;Ia4,YL|sM8 ݺADMѩjlx&ItngR53 k!,t|q'Q,h[$B}wf ^pd<NBB)BsrZct!XItN*yF'BHNkNJxv{'g9r+ 'ѣ!$gq']Ctz/"]s!F,t!I_sOI"YuTLM$BYI#dg$=RP(dU$E2yE@:r,qV<0!ARxʵS?SKx6ڡo^XmhFiFF`$LB1NݏSxMV$_ #ԓvx5NJy{;5775EUډBư)ɝfKW1u g V:)w E2uRBNNJ$T:@xHh圄o5(۲#*qh%ctT*cj o\>x6efgIXI22=heS GN®El䤼:ަ'DtR;)p$>֯5h"NUD%ɸ( + mV[wfV$ End'zK!U,$' }ENrôlF'@'z8xiPBb~'i}`*nQxQV wjE%jU1"$(5.!1I;umzt𪢼P1KtL^jf̽s4r9-9 زz )[T]&qL]cj/*!LN*eH'&NGeS%XyQ:I:$*F%B.g߻KGMQ#裢sZ{Ip/tΒ9߱&~S6>N J)B.f70H}%s_ENYI2yή R!Ӡ.d|2 jUtRVpxEs<Qcw)Bȭ'{*Hy/ޢSOuB =B=NøCΡZaN$5XݕbrSrRvCmy'KQ܏{ qtb5p'-3R']pc(q=9_p2+8IPnU`:Z\I=!˳@V~q7.~2&ٴ_=r‡.=x>ɶ'dytVI$u qm>|[9X0.u t`ݰն/MY: S<y[o퓊)3Vssbut`ݨoI4Lc'-̧IJB)JbK2 k ZU噧>=&/-ԋwQK՘8|MŜ$*#s$XI-\#: KUXPM쳺ڰ*l^Ie9ik/:¹s>^&w"N38#(ѹ|W~*iQ7s8=7Jsˢ$:zfv0-$?: 3^A[cm,᤬瘮Vg p%_hP$hʖa'B'k{tm+T3}hvTv7U#.X).$V^`dvd p=xNyGN]NaŇK[\Bc]kb/gw INw5g"r_y-p! 8 ](&\0Mܬ\$#"$E6X˘..t1hLt~ӛ"t:}Y?TrEu5d7ՌݒV6WrvS9t C4*-*q1wJSE*W=<_|O$:]wc(ͺ6K >8 6`}$Y%y '6NJrxLkvI&M4I繸oͲfe%TF3&N. *,ޙdzR]nP27'2}u\8W10uҊFj&Rg6MqRMt'x*뢽q6:Il+)v!},C zp!I Mڛ<`$eI3w+7I暠toq$*yI"8N=ku[v~'&9) <#-=PLtJ9#8.I$ wc>{`fR~Lsd®z5FFYIp~umfk_IJ7UN‰PxFR8iNqi3I(>kOI%,nЅnQl;* paE'A'9On×p-X]:8. NBFkNqu¶qQ::U:ɓ?я- .䏍 M.W4JN(G&X$I)`g}{֨W`yA$~zֈNܡ?ITNRPZz/@UOU؍kGPYqĪs BhP[a`D"zBՙ Jm>TuGXVEӠgfЗRjPVtTPieNReV9-cF'9%ffGknJi)'Ea&Y$ߎqR>M<1y}5c-!X@=ZfwBI57EN: cQ{ e>V$@yڰ $$*,>~+!ZR\#K4S!z_IIgGN)N&);qIw)W؆69 ,$[S}%ϛոPeZ"b7 yIhIdS9}uTI\䬝MJFb'u[zkN靅K9$}B:N'!+$c>vdOrjrDB!9 rRg%3Jhc\5`4(9s V$dIˁ;Q'PCN4M>jhLdrjO|@(,Bj>Ƥ39IdVqRAWnEe\[`ՕWtd.0Rf* j'9 L8F9m4{uL5t%LBb'-mESpy"]'E౓a99; vZBVv޼Oc QG,ķf.%gG'%$hЊpXvL [7' ;^YiQb[LPe܏EXcNP0 :): V~(vĽ#/`pILw{={T"t%N;Sڌ 7a_a@6N  NB.C@oCE݁﹎u{5NBNRD$~'J^p}LFQ@W4UUSyIw#DΟget]BbfgzO1+qsr^V-8wRVfWp-K)tҹZ8wy˜`ܦns:~0k5oV@rVGj\椪՟je]TaGy:0`Uk68 {fG6N Hڲ`i `wE6$'!GN+Aoe+3IdY0.$Bȑ!J*LTwC ZV^>xT!=84(2I#t8͔-jlJ /EN")Q'̓GAxl[%!W$3%69IKggr%!dylNIMiUK kpNƽOBH p wUO!#hI'!I:?$Рf[qkfcŖ#\&4C(d@cZ7OLylB'\m?ݳ?z"Gȃ.Y ])V 깨"<;I5F7OWISXIo򛟎̞;k@BvRY39>8`k ;),jΥ-}fy5 $7987jz|ɨ&7Pm DfI|߳.pE'qEFVNW0vՊ 78 LBJU=l-sEUz-St#N/8gE߹JXI)4@C); k=+KIㅜ)nsI!Ff\8\uiWqg+}͕-R"pu'ɛtF8M?<3'`e7EB)ǻ﨏 @pq. ^ZWї kz#"'c>hTp"/)NBw({~Hr^y{c^o]f)A̩^Zue)}3X;u݌FP.Lv!oEj{% 6m"Eݺ1fY&]3wi$n+JJ\X_X#Ryq,ܝ$'Uחn$"u_Zo $O8Im=紁\U>=DDǛ}ANWug96'-2Z(MFF:iv.2srOƢdӜXp(VP((PZu?9sY@UhlC2\UZĕ`ZRjX(]T'L'N].Z ix'tVwRwIF?΢. ;٘UU4;&НNonJIJ;yf&pjPdG Hݩ&zeNo:i4cUԥtko1Z Ţ%-Cx E3qBI-$oH'e-XvOa%8?&ζ?umRm+ X 0 X(ϡ\NR MqFYIGj$VvJݹ['kT$|usP8Jn }gZZ^˼;6uvb 'ADkr#s-uR@ySI= C4'ED=DD(ʒUxsjvϹ0saTJ;!}N-qƴsisݤ-7 mfF?@4^\WY&"'ꛢ;k̻*: rm.xFq?BfbCݩm%(z FR73qNRſB]8J%ӠBSTkN:X(v>4^1Tzp>S^j'962_Z4$A:" :5t$ec9q9IkڂAS#y!'87Q\PSOA9tz~'HIv: =rlI ;撱b'I#m7]$;ȡmz378l|t:s =~ =d&(mpIXUqx,ZqUP%|N*M/J`jrTtz'(MT֕o@4Զ8 u!r(}WuGTRSڐzi!}iP# $f4iv'U)9ڍ.'ѕYݥfqS@UVR!I0zCMU$ ˜Tq#yu8mݙ /دu5ԊiT*s]t`yR WfשNdT;Gl*S Iª ]!78yFV9{twTtW6I$8znu'&NjvliG:Sum 9hZIXQFE-Z4S5Nr AV﷑~XV{EEY=H8@O@2 Q37ݫV?&e`pd j㠓l6( 9n8&Nc'e3$4 =QL:T:GZS}mUyCVB_BaR7Lzt.͋|%Uhw0yƨXkY''*It!:*.JvrҜ;^meCtEB$ou':^7Qt`M\rY|n^_IELpҲNjҌ9dqRJ 8fm?{XH lu6&u(Pn: IY cE~ +Yh+Oan()@1 ^*ѣT6Vɔa$0[-M.LJFdt듖(S Ǡ& DT{DE@3^y D(Ys W1*˘RsRE:)CG\p1 t!d6֣$Ywgv5Ihm§uۉN"<CI{щ^$BȣQu:c8}{t miU i%;U&:Čج =aN:2fsMXcS@k$kGI'i}b']oOZ  3Ntf_7D}u.IKW9eE[RձV᎕]eunNZK&d,$p o\; "9r[㽻*$OT2SV@=8L:$7ƚO/0NFV:O~=':w%'ȪXI_SE,@_/=pA\}^ޡ@3"yN97"!O@(%$#;$KY'>e يc/70tw8W-7'Ș![o/Y'N8o}IBEgA'%#֓YSg𐔄tb@G.qcQAv|{F 4'sn㤫|KN:8)vRPw! !J2쁠1w14壷0s\Wu&B4F~'p UH) -ɆXI`^:yNҋ}Yǘ)q{UCInmj5L-2IxONi8h% grH.B5UI^^{sUbcM[2QkP}o POM8 N)$%\N%L܃tDW* Wp(M%;݊ԨzheT-|MLy\C& UN6TPѝOgtTIo^㮻4+- z='טpOm`n8Hite(SF F^*d^x#'&Njjd9+k 9]d2JBE N *aüc`0T2$tX}O39!]Xy3N{M:B3vz:[n0Jp şXztu܅ 6yA=\Vh5~zKI1z'bNum&,ܝ ӝԃ)K&~q'mҝvr'Wfo#8;I/CL,9ih5S\>q4/^!^T,Y޺^$ oCMo'^ڊI=vL=GQ3 :,Nާ;)ۡMjTvs(o;>/G$cy朝}< ' 9Ѳumt' .t;ְ8_$ (l'wp0w{xp=+pM|ׄqNT׏{*P$(~@E)]Dcg_ pjSh"=ET(ehN'ǩ˨BT<蠖VO=:ɛEͬ/$h 'NyJ„>2'a nvX^qMB4$ OT"r{;3~ y="ꙮ۩^ڈnM,eNB})D_"j BTb !'U*m]P-ޟ6Iޥ<5>V;$SsJpxQ]60"c?oUW94ܑɏTCWܪ953x=gU!T0N"tmdXt$}eb{xqN;P B/>:}Iu59 yEd.]ӄF~b:uMX[B;uCuyvv5tߙ9t܁ 0';NǑN_:T4:j!qfN:uP31nW+9IW 7l(U &: FCZuFy NMk C:-X;;tJ F z7+bUJ,NqiXr:AO0hϗ*$?? N2Y{z[$U'1(WPtnTNCƭǥNr"7yYEgt;Ah򯆩yuqÜ#J}.9yb~'1ZXUrU 8>Y J*vJvN&Nb`ruTN ƒQ&CUI*JN2~ 4o#]TIK3Tod[aXI`r0bdebhxB#^5:iǠ&Pe=XR}i>z; YP+ۮ@N%Gč^gfaG`+*lxN\ 1UV-fjx{'U:/1^'1]A%'p4tR0.ArR[ٗIRjISG~jnm |Ƀ\M=o?TbUR~J F_5}#vǍB W@kjvz' Pv*XU N;S侓@/)Pt}fQ4:<#XbaF+L@c(x2' ;8>'PBTF܌zwb p"y~N : Tۂctw+7`u9IrdEP1ZpcN"#}Î=ղ=Y Ü #V Yzxg2AN#'H[ɊeݼI/=PGLe)ߝkvN$BY16 ?2:$B!@e)5;?BrNR !9z #u҉5ZBԫsdV__& !ٝdPVտr=B?v8E_.ey2doRCh =R:JE'By~pB׿E5_.uTo{wGaV'%T%IU+ϓn2_&QIגNeG9gs<)U9il}VE"NLӊT◗o$褻ğ<]v!ydqRRf=כ\K_}c )]I7 9*`4I8dEXW"kn.45-U$pWr\-I3>}Su<^܉xX(Ǥ^E| ;Jzs 6oHȞwp 5cIއZςe'%}P%$uAG.K'q'; F.h8q :F3C(W;܈Ϡ/[ܷcq'Y`.I`%uE'9{asmvR25X'y-qX Q]w~:|lhqx\硅۾QlPΨTwU$Bj'9ӻs!NTQY+c5 TRqܰ0QLcjnٝ袲q }`XmmImT X/ Nv-'z"ZVIAn~OwàI&@|T.RIo7,Lbvg! =:j~.1bX팕FXI1´; ]I{Uem&^Dm6W\֜r,8RkRGN2qT2rwi{špRi%a⚺E D7pFL]*'w_oJ]ɯN\ YZ1;(WsRSf_'{WI8p[&KsP*qIh,7Σ]S8N2'0赚- Uo>59? QgkS$.I [1 Dgvm'U^{t.hI/ctMxE; 7tF ?h/’@źc{&2&|'3v!U/J/p[9S_ptm4~`~Q^"޾7rRt:E.q"')-tϼ[eN PQ'jgl.gUͥ̓?08|b;1Л tdkUY/ -e阫vxtb?b܊;rߠiK {{:FxR${vus&QOZIS{ZǓ9_o| G"mel>.sr*᭞ϣI7;ˁR@':gqR^@;H'\`GN: '.;I l;3n+2{ lG5jױ8iIyEC!3sN}]# m;jfO[#pEur-;‘ KUW姚` 'yE#$:I~]jX՚"qFٸ.:@; b́ÝsΥ zS^,760.8dC <[=FNrBGx l GP؀ &9^=pt$M.&՗:əy݈tP!B`! O$se SYI;" :Tq΂U£NrE0mImrĶQN xhbB`8 -ptl-B^ܧ/;Qg!f@ڍ*V|X"pަ*4;ov`8E` Ǘ'ֳ]6IYaIM02d@D] RI]W N:P0|8v0&耤R Svǀz xY~n."P=vSemI):eLj50bp,g|{E1'/&j_ʕCJdJ:V 8-S@"=Jk=W; Jq)eIjtuNWuupM?Q^bk՜m_S+Ɲk;N p kgd?@:)FTLLV${ d^8 TX(yӇ8 ErיG}% $}Mu*$ U: 2&8@>LjU8\_g%\oؔ^ͮI}.9Z ~R8MPTTT'Hʢ$ Mߣ9ܜ Wppw/ٛZCPE'a}[(u9P7FC+c9F瞧dW$YN{f;as77f"زfûLRr|^W{en"}9R,`줼>ډ8)O~(vٱA' Gry[wHM*yU^#&{xHoRy9IJ$9i饂utYйI<܊3q ^L6-:r_T}tmU-<8$B̸xD Lyu=F'qiGHkn~WרQB:I|2ݻ"mb p !puUn{k\i !K|[ /};T:/9"[➃,!pRMn~ZNje2L;E(S' 8⨬Z3򤶨5'Qa WVh'¶ھ}'R\dIttGr]JfNԇ숁f?r*$IqxC$5+$BVIZJnЉ'qENBq.?+w5bLS7sBvHvgv )[IxZc1&nuR⤚yhxtNuVc66.\4$5T𺕏➊HmBV( '8(yEʅ`^UǪEIy 䘧y*Eb;fvR3E*ggO/ɷf:F\e vI%[y Ǥ3҃8S >ԙwS~g.L㇉rI2: W`z%w" Ц/n0A8vsdS"<VrP2\&@ CS*@ 7CSWLe=2j}pR)Ue;** `3Sgw*^nPykN& "bȰ,ǥcBNCEv7d'GlsoN*h'Lr|­`TA''PN|I*SILX{ '9 Y#Px0e\9F?XkflRVt].8=kx"{h 5N:_H "+>8^:nNRyUs8 UT~NI ; ֳI8IVVTN]iP;Tk;~va*N^QsR[|3p$LlZΦ:(['ɞg:6AN_d'/4I%Лp-XL`` 2BG͠IeY~þk«sl<0.]q-M_# Iΰ*m7+ءA;ͥ!È0mT GLfrRlh$z'*V.)INu_:'_NqusIY]),K#X7a C)MȐ^U`%7q=`؁ðs,jf}Qw]?V˪o=LQv @.__W'3骜$Wxfq|vcp)NAQrʾ !߉kn3?IRNIC}*/ZTQS@ ,KC1xN У-Yc/-&08@ATɂIoCMaPG$/r,=N,/@ lBifđR=P/zsZv'~b4x1>I2FN5tR2 㦤!`W]ө<&hyt(d,ɵ47Oo ^&;g?pR V@^h3vx`ȔmTŎsRUKN1I~8 Iiί+"~9.]X:rq;f$I0h tPw8 0J'9t(G VJv&Ib/[_e60TrIyTA7N.]4$UeT5pM>wXa;}M'yg5_NmC%kBB=%^_Ir!kf \& I`iO/ '~XLX784ǻED'%|L3v/Z'C9vm9;Ng8 $4k5tuUouB6 a8E`FpdTSt~nCJâLet) 2E=݁blI)!Nj@IЃ枋u1lj :]`%DD@P;:C`:;p5J6mI:ɉA?NBmoC.NrIfg塜EANʩ;@n\ h<)!i8r[@6"t'&xmp,5MNf NHu>T$wTS-(|^5s %#VS{Ze2*K(ɮ(V/|Y_b l`ebgJ8NM\$B-#9~b6~]N?,UL-\mN -@՝s@vTªtV-EiQZ\cENiTIhJ~ց0XPxKD4 ՜L3R2+2|~Ngo@ԩdZ#O2mIJM'+%;N^Y#ᎡQN2Mpغ<:}h-]o)8R ֣RӮM "?ꖥcay:T+EV ~ <'U`)2 9I} ߰ŏZhZ)5:V6BZi떾m`/ýYsc|Y%]AxwKMs A,F]p6↧XZu`' $s}$B&޿5UR]s)O BՉx7[l֬&C'=:`A9SւDpt'vc{nwGRCbQp*z+2ֺ'Y!nat2gt'0"bYI<Vz䱞%beN3X䵟u$Yٽ:7S*rlI]IyvR\"Mr4]8BbI'-Axmʽcu'!m0nA}l=$BH[?-0IRJk=\Z-kPꤛǶ󲈿S͖v=I6I <.P򢶸ڲN"N̏w`%8X. >ڕL~ݟ~"܄Ŝ~N#y \ezA_fV/t!FyRHiE>@tr|o [9O`aBqH]F.$;'܇NJ0i)#Ъ7ެ_6?\,$Qz#$FnGNtRR1%(`c'XY5a@vu$xo[E2Uf8sNbVM~z-"S7"I34Ģ |:AnJk9xY(Y|:ʳ;#pR|J[IO-Լەcnb:2[Ђ4T\ԉe.!wJN: ?H1JA7 &2&I'7ۊI4C88.O|IDJyMK'!45$NOlQ7Is}B,~j0nIw|N|;3/ʇN".f R?9i;xb}N}+MM҇oeBVDAE Y?PIHI ̷`rMyDN"W`v'9_Ab%dIz5 DȽ@';~;3!kN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'Bi:BH+IBZN" t!V!D!$B!@'FׯO}?/N?}J6vomҗmҷn{ߞmmw_ڋrﳽvN:Vgoߪ02E S.t!+$f:QviX:"ni0^z~;gH_iXmb[=oe{-OuȣlWwiH{aoޞMVpoRҷm5I/O"?߶y:Zz_K/ukƧ݂qn/NXj և23Ce:rS'-~5[m;ڰ({.E]zz-_l6/#=mk/_oXӻavSz۪i뷭ֺE թ-9-ӹgJ:=Nw/OR?;{܅DH?IПhgu;0nkT~tpVfo/]ս럷_C~X ˰an=ny;i]mS!$.uG}oKTtˏ(&:~|x=&)7vf^32n]ܿn߼>=w ڼ~3~=4Up#qm+}pr{~AޞwNKt!#u>ؽze;?gWṄܧsi !V OÌ? g S8܆KYKWhEl~ԟ}y>>{o8[B'>NNz9\}ؾfx8n3yӰoһI!Dmcpc+ 7~=v/o1v2<|o~{ݧijdx{3ݽ<}wg ^;X[mwm}kk z{򖞻םӮ6i,ܶ!F]GXΑϏPYc[j)>j~-39|ܞ=vf˱O:o[BfHOlv_w߫}{VaIv_z5>خՆu)֚K޶2=:]M68xx>|݊q4y26w7*gR[.dE/_?'Jt!+dӏ??ͭ">G`} ϻOɾ}Oڥ{vxuװ_}*Tɏ 7oOo5mWi?^o7~=kXm8LoΏX ?q?i}w?)iਘt!qKOl}5>n֜H`:Tʐ~UVz::=Ҥ7nwAoQ># y: a%v&vߺyga6,#Mo\a6|X.+kwOru<|7~Ezz{~~#ONIFſu_+O=>G}@Ӿlމodv~ߎxtt;ߥ8~yݢy`z{Dm?NN"dm WOĬZTZc>g7Ocnw{pĐ)*f'6o}xN"NzoKe~. t-%]~?}iG5޼>wǧ"ӏoot!uׂV{Oﮈ~0r {~ɚ5Dwҗ?n]KקS+DivhwvRF%5'=,]zRۣ:$BVHnwE8?;|FY#?ПerKX)~qo$BVHGX;|0u??u!yҿ_G߿R 6S^o p!+߿_C{V{9Eq躿?>t!k߯w F"lܺ&WN"d=5!~LJ׮ߗw7ͭY!iDogWKm.*c-uBZ'u? CO/iCiYpB*k%7> j,D ywNz?.χYi0t_N"-ߛ'<_V@'>߾'sӯ|^F'BZ'}iD8 )>(mIIY!ݽ|8MO;HA8t^PY!>m(⟞{eImA'BҗO~::ͯ)c-s$!}!y_^>u)}˗G:޾wO ?=_=o UJ&Ó\'B?mhP7`GRo~~랿!:BwS+/N"d~:GPRUzKO!m H_!{o4CII_?}5!%jw#?D | m2+?{)N"d}my_nVG7v`Ik.XI{9i3ܻ{;q 4O|M^\'Th9~h]5t!#~>|?j' :O/ftRz9Nǭ6}wϓIm6?6ݟg׻G~|էJx+I|WCao a￾Gk __ݤ˻Y8%]'N"Nׯ?gQs?960!jSm2ʼn韏ox\=o3W:V0}ٞ҇Ӯǹ1O_o+B':Rxk׿mx]L^{ن*#׏?GR$o~"`Xo;׶N/.,u.|;xV׌I<}NwHO~}}}[zV$8ަ?݊1o]ho_m!2鿿[&Iy|-<Dh4h4Fh4'F#x C'}ϭc|?ƦЀzj7N9FE)ؾ3z <9,ViȕNm}y3ey f<3 WxBNQ*DJ:_jW!Wol9SYmYS8x<.@"$vQN,ޭt/ .J m7]OꕡP9ҏ\I\KQ2mX[MJD>)S>xug4[-1~1# BNި18l4ٌ}6O7dJx$f|(RmwM֌Sk vRN r~.?qZ9p6z'{].KW6/#dVn9&}T$ۮ4HMMø_{/i1Nfvӵ!a&DH| *OnxNo$&Q:|WRE,MJv~w8 Xvmj6G=dFDW#sEȡݸ|/ _Ŀ+L~>fH|wSQڈ`Q2N)t<ƫ{ץ$ ZN'Wzeûza)َ -d'd#֋@Xx>jc/;-lVN 4E]Q)boB֪'1;mUI$܆mӾq?CDx,LBg@`.SxZ| ImqFܝBa'ʟwR1XVv8Dn\ 7 hASh(S~[$Nv8 #ƻN[ DIAyx:_W$ 5KL4i2a*{KUm盐1Z fFr|Wtg| 2}rvMǃZD!wRϮĮJۋHc1b= 'U 6H~jUqX-4$? Nb.q5R2rRIT,>侮njصd*wx?W'+$닌"՞B|EhG_y;pO~'~I/Ix w#9t5{i_5gaw> -VkQ]|C.SaQKw=:lxWR*g3&!IȌ'S$Ndfoy' ٞW!;ܭ?şK,d!,B]H|v_"ezIe@-;F B9`Y|95؜qz3)NNu%tx=WID$/V^ {_NkI;C!TO&ϸ.3&/驱$IQ+azFQ85XQ O"uOE~M~&NB?;5(mu ̓1H:Vo!1bVǛ#Q*vzǁ̅|6wfErӊAW3-#Mַ^_%TT@vNZrMm<^Ä7*zXv$[ʒ6F VS|#+Sqr׈?â8֙r psx%6A5˭VC(iMѿO`Bubzpc)@5,^9LFwVgcm`x 鵅Q坿lV\s/k4A/MCt*SϪTEKE$iY.% ۜS[˱*ؿu##vۜ$"J~B|GRTp|/2:SÑпmZ)@J[Ȟ'EǾ'u:WŸ;nU] r!V d 'uw9lХ(/ pQPO.'U>~R(+&Fcl']~+oIZ"m$@Ե(uɝviP<_J>dFDMצZ2>ϔ%M)X:R/ ]6jzz,b0l(/u4gx;NX$ɤI5},@_:S'-=dQF,q Y}O$JӊGjŜT:V8[qZ XXJl?z&5,;O̞jQkS?#mՌ%?Y@ 7&0xMdbQFC?`zs +ŴzZzX[Vd&mR1g 騮0ɕʑ) 籈&;B8<g]&9 c4#!'Fxt  8ŁX,#ZiTkh[ڂ˦i?@Ԫ N!9؋u#pv]G4淘Qir0at qDfOixV/Z?;w֚9yrZ(9=Sj;k;=QNB[64v]8 e:H bv#Ɏɴr?/is48':ʔII>~C/ݼjmn_\bp!o9 w_bHNcK@Bm'Bo5(=N'*~$P |n' ' ϓ{yd+v?R46Xd ~I=za}$kYw~K[͇0v~iEpI*qעaC9\`x>' yʽ!35~mG s~~ϵ.rl/ xr|m8N@t|~۞N;i RŻrүICrRwBJo'Q0caqx{ԧ"!mbO} O`\3seOx?rJ3kGNu2ܖ~'I%w!_y]cU|5Sm*r% 8~'#Aw{GxPN|P@6Kgox\<D{۞8?V4*PH7>~x-}sXxjϤ;&ؠ-? Wo'Lʜs嚯Gulx ''?Njo߻+KF+gޭf %V='~h7V Ih|ǕR{oo&jwu߰ȋ,C8{W w.6I{%97j -cV9%HxhNPy߂߶ .c'}s,gU|ʶ4O nSXߒ[g3_X\@{j%΁>'tRYW^rr]_IS|awI|B_F]04; pFal.L6h0>HZ or}Nn]p,XP`mwd|:+'jwi۱ /&oh?[X`Q*;[5D/5D'}e7 P-lK)Mݍvϼq'^WJ~ќA:R7#RNڏ?&Mȴ%>o[ 9#a I3ϔ:l')Iy?߀'6~m&/^1ޙ W<~m9H/8=/wtD'Qk Z%?/!oT6zLW[Q&eLN]D,fpw>]DR\ImsR J8uuUx4,>`%]U^i洐awfoxSrKM-~Z 'ןxbY&UhB|<{^wik~d#q<+l{o-ɿϓFA;~A]5ɖ&_KK;TB6&]8>~lil\lgE4١QSJbZۿJTAڰFieVu OʁjK}B$|3\:p'ՓRG7w)uymY[ľ֞R@W[p?60Z8 cR\rC$'bѾbp>Z+ws -zFZNmQ-\ˡnںPn% 6h_oy ƙi<-St5^yn =k+NRط'+>7-*>7lsS24x|/!j)6x~cP[krڈKdD[Al@mtDVUc\_8r+>^8PZ\B[VO8Qg+FIoԵjʈK>vI]:i_UC9Z{8;lx@KN]?Yzlkz}R7촒7˟k(<0}It#NzmLU;J='}]t;qMQu5i/KfG~I%RIKɼNͨbjp0z?iVY^q/v󃚳 ֈQG ]x< .-~+idnY$E[ndZ'w=+*ܸtI+|o'u~|;nmXk)R=N^)'NJ^$iٶŖ•|1AAWQӮ}ԧ>:rR'ת?G?]{} +cdUftɿ1oҎ 21![;[7 J%}qY&$8GMu/zKQ*ջ}=mւv\elV?YOn*WĻkBYf/_2XlUϣɸpN&7~^&tY۱;բ[l8Y'䘞E^h5|F.UKwYh_7\˜V G6یPꔽߠZJ#CZbr9jYRcY+TܚwI㰝u}4p>[W7ï*Kz^]n|d>5n%}`6ⓑ$YvyTey.;_sǹv<_ _.]Af/]hczA`* Qm#đp*fIf'Dx%7+S3{'PthY@o,n $;:X~Iut~}7䖰lFo'uyI"V.;-3o^n˪,%t?U?"Aei7/L)L4U\ua41Nz(h&>ω؊`:Zr|]'dL[%%7DǔG4P.;Wv#$;z'U(Ḽ졨H찖6:E97!Fa }q^Z nEQ}X6fPu}Y]c?"#%7GǑH>"RdZ3uq9݃p3#FqdUl:q\b0Ȣ<⡬1IoXBeQnj?_K|.Y-ϾXяC70ILɿ[L`WG雬V4Lcw.oٻOׇUk`ƪqt㿐T nB!ٕ: F ǛdP68i{Q;l ,G-ǐ\1]oc+6\Njd%N$Ö-^gO˻8E+EAgqr:mSfp~Y!,Ҷ,׻D5?n";9hq~S3&sϗ1mAc+@uu#l4ǽH=fa^2:ɰlu)̖1ē0Hm/Omjj'bcΎkW;Z~I6#&'iQِK^ F#RZwWi$Ce8fX7R1_i62pD,2fZ'_|ziIDW*1! T(1qy.Om94A>ImlwUmr'HC!"zhFǭ/ybOoΪC&.$/$):|4+d)wrN[ζ;oFSo(q9'S CKds٫F*vQ!"A@JKf&Pz]^ŷd'S_Ɣd'kDuY3B%f?h!8ɪ#BY4Jqf^#G, (H Ad"NGVnǰO|OYZQj,bjIk.͑a2 wSN>EqQ]㍈xF'rl"?˱u(^ *:89|G^nf&&laiaNDin^0R.1%Y¹SGzylN6d ;[Rk jvg퉓ɮfCNG%xh/En9)eUG8>~=JH}3vXn{B.{U>6 &_>'X{>ob䟴!qr^<\E4d{n!aBn*^v$Uw?G;մAILƻrND&l4'emtisoA QOAQߦ(8Mum#l 0dSd9F9'ڬmbr.\.G 8-ܑ,cmߖ{P UVg᣾͍j_]+/\Ȃ&ȎǙ|Z$Ѵߡ:dQ;(pDe} ǒ%ZHOPj</[IHot# y;ًQs"$ֻN) xrJ__j+ht7hZtgR'~mUJ>q+|ȧ*h^py![OyďŔ?x"2q|~C׋0zUi"DjMIr^XOy#*◅pRZ3.+(:sY'rc}Ùl_G&ҧTONunwZȷ"Jz>J_Zkdx+o7:Yz:Nʽ˻O"?b.z4Z_W͕vZlưD/[QGqc"ʤDJ 7Fܻ"Fmy~`!~۪@IZ,vpऔc$6"T.glG<8%:@C18T(-7kʣ)I='Ef6q5|fȱݍxkJ4?[5f$E֑X UI1B{6؟kPXrߜNIJsN_Jذ$5fS5yUx'Q%b) 'czdTɲj*."[+OG-l)$U_ab;0;dƻ0Uxb2ik!UǭQKǁ?a38m*$vڮ@<,]R/t8 o W#hT J=O"yVF0՚@= blTP6jP9}%/<4Zd@BcX绯{A_J`(2^*Yʽ&Mv@F^|.F[^}HIuIϯ[ӯ885NbM 6%)Xh3M7v<()`Tc'9ퟎgj,|̞!J[:b!Ζcux3b6.2N kt ?4)V(-?0ѿY/Xm>6?(vhu_IWV/Bՙql:1AGMB|(b Mٳ".p|vpݜ J'䲺5YyЊQ/w#fz=JrPfowIIќ霩yi0DѠ~nÝ׀jY٭߯u 'աu'RMICQRkNzT'qn˓5䑬&Ig1%!kpW2f湦@xuͳTؓm7Y"bl;KsXLUJY" [W1=P ĕDC’!Ds WĿ$8:xa:w| 5/>c$zh-(PnT aDY)]Iȩ7.RNRZ1+v8`7}ezY=H*\[Ȥ r~;\)⫶ xڇhV/NC>!?|4L'W1wӴlrQ8)1?res,yh> XBJѴ !7Ų,{\fP;&#s(б:ŸW;(uXhI7oƪ.ZwEJ<]P'il1}9W}>Qmdiڟ'@UD|U8xώ6WUbNVͳsZY/_枓]INEM Nz鉇#'_$^[yK$?+Rfɖe$ɧ<_zO{– yڛ'բ['Z5mr[nImRe^wR&e {WEҎP -gLozb3T_;$\D?$8mVYJ=hSrRhmЎ4oMۛi_UNw #N)T =^. ˒k(}̝qH~1Zq\'-Ƚvj)y'G=VxN.Nh|iKI.'Ym?3zn%^V?qRZ(ݽ3vOw/ˎ\,Y k~=B֣$8JHga Hҝ?g|._ ZNqcuR/RnFU]%{iW p^'Wc~G oOG;?Z TߟgԩLh%hS'iH5ќdlab;_7wKÌ8,ht;6;tO臜q-u+U(N8sNr5g/[hw?O*&6W?q#o /$ ~h[8 -Kɪ.U %}/N2RIXٺ+tK'Eo[6TyqT Z8]DJZc ^ hN2D*FVImʯ-5g;7u+ēFEpR3WFϰ~=wwDZtMI?2z HLf{ Lo\48 {2eϔZ7TxUHNoPp҃go0\ ī3otZ3iABR8/_,giV7͉&=ZyF0p5)} nߚ $PK^ͣ*IoK x啤5;9~(nIv1_Y} 5M'wԔKf0*E'w)<ި{SsJ9]/7 WJ+Տ\+dUֽr[·rruvՃ#Q^giT]ڽ*){gvWp5ľ8u:-i#\Ff+^ۤ!Xv_w8ú^V&}?i>;L=OOgW4u)+u^[EsӺXJSҽD~ٕ-z#4G?أmʢ ZcE4]%o!-'} >X}#gJ[.?r<9nŪ:ZGV5]Jワ5].+uۥ *kl g8@whyյo~Z~6cgݝY^B{59UNh0ch5V;VsVE`ُêcxITxd jK%χ78n͏gCx7%-8]-+8#}}a J~ V !vz >i{U 3lmF M$a>t!N.8L6^TOv{Bz8TsF'$غ}I:VEkj5 Z NCvI[N@_Cjz}J I3f͛ _HCE.8 xO߽<8o.X.-ڦ&'ws`Lj4*|NNdߵ!Q ^{TQSM#GOJp.Vhm;t7\#p[a6O7х9*_JKmws%+oNӖzQ q'L/7{k(]̻{gl㰟^^.T/aGd[Ipﱉ>enzpU1b0k_nqno$tZy}Y Bw0QWдæ3~o_ЏܤךpQg(UUj?.2*͓݁?prڽjz찑Qar %&= 6rBo5z5[xe{b.M*z{}XT^J=-,ȶNKy >V -8ptbQj(QA"T$ BJR=B\<M<?q *#x! A_i:X%W+#lSiX|$ϊ1aqkwv!s7>m8!y +|Q"S-pU'w! T tR(d$Y2,sVZUO6]ZTnəlaۣ/IRn{JP3o/-x;zl 0ʲ=UTvWC E ]^2"4-0"Ί8ec0 QQD$+( o2tbPŠ#1!io9\FdL:V. T%Sb"@>>"eXY4kzC9=R+T|w_fS{6.« %8MV4a0 +`BnI,L4?%2 s5&½&%2J!WiNFMVX2eVNI%QDp*@ 车2}q|(I" T;5QUEavB͛m,|a|$b ķ8?nr0,hEћp%*FA8H*0I @uFz#RSW Y̧b-aC5I>xqWo|4$g眜Q6Nf+WHY]彺>qZE-FX."W$䉼_pQ,kd V֠${lc51a4 t$]kB"p_ k<ݧR, )SO4;}j䝽T <#Tf1`[x61QeIto-&+X@ e UR`D&[$>^`16 `|}ڊݟoygV˶RF&-$.8-뵧j o> Ӊ KYM6z`A$" #F%GlisH֝#ktwfB7|̮b]c]=6<_~rlχlB,m6GuH)kǝjM|#JU^ʧg3 |.-LO>RSSPYu+e#<)@Z*I"&fx7 '@?t$Um%^h.G}Oõ;A#IN p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_C?\x 4x1͎<Zn5ڌ&p:YD5XKZIi6dWN4 UFnO/;ytǛMk^~[;4II"tRziN[jPYm>24@ N>-hs]ύ#nyj8IK[B~8iz VF{rR͠ϕrkŽN#EGT2kZݖ ^dNO;znZN]u$^Z*%nLtv; zx4xuJ4S^xCIDe8$wahYʔtq]a -fS#~7+Jn[J' WS(= qR1/Y-9.u+kE!v'i>U)޹g$sXjfkhsv- 1~#KI&+LNjO''wqR,VB8IfkeeK|/9)N*iˁN4KZ)gol+^?R[ԅbU!l0UR/Ԣ]klBa Iل±j}UNrްXַ:N2y>8rߒ  NrE.rXRm |If!2~L+dݖ\Y:ɽҕ9ɶटN.[βʹU~Ɩ3m~cb& 虮tљxaQcrGʜT[Q%;߲T0.pҀ1KԢ]J*)`VXHM'RrIw 7?YroVOͿ.'`/qo}'N-,ќp1_z{j己ynTIYkeڜIG63ffϐ^ueʸII'aY"x#Q6JzW`fV Y*LXRzdUW~OMJn%zxל sk-w#1Ҝd ׬T38 I?y{ TsJٚᛮnTXTSwƺ6-8 O_T5umߕ[1p#FrI 2@gI|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'D?0ƴ$zL giI4ٚ2-ўNE ouRQ%([Be)ևIeRZmN9(;iZu.ڻj_uwu CqRZYHI0'y64T"f968 Nl!*ɧ ^ NI/Uݽ]kLGT4?t'ݕ\!*QT(s : IV9?+pwt_,vKM`htZ )$ETWwG YhkAp>,7`pt[{'EŢj#f4U.m=H#v˙k'+e .T խj$gF:KΑұ,f89*̎lۗ6d'U<=L">wbḽ֮$5/VH~ZN*o_+\wZÉ2d+=dLvx-+_wl t&GdYcgmIn~iIPM'j;(2%9IUv,r=%{dY-ynt~Z̎ WLNr䯤ШVJ| 3۶-NV]&2C#G5u#NoCŹ)pKh}ٲ^.=XJisIg Ofl1L9*`KuoZtRqIeN2äN\dU'9äGL` %hIZlIf!Ymymk(R阪znVulTce#M'Lb88 }$}/?gy7L"曬,' ڼ&$vv~qaH E$]IS,;鹪PpLik:$s_IngВ %NrV9r9XY?)͡TSO/9)?F$[bp{IG: 9'Wc8Ɍ\Xb}NjVugF@TLЪtTwxv:}s89K&B`֑aqGJm#sV'QˮiY-5&)Nŏ&jU/jrVq-D Ow(nVIƓfЍtR͝8a- 1S̶=r2fSKnjѬeO_W9-Dd 5 Me1lўO1˅kZ34'9xZ4"y [98 0l$* N 8KrSqN2%I'8 0t$NK?up`I_N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'8 /I|N p_$'ޜD іUݓ`$rB5qe4?Bq;H:꘱ t|K;*2$H ='W~|5&p t{CKX{Wpi_ Ү*˃' VȿnG0Οf$O{im K<#N 3#\Vj sg<[>MOby؅̻rRgG@dV|W'`Nu@-ܓ)PiYXVD`ڌm/bIz} NjLSi2C.K_wjM@[\IzjdlIH)g$5on'v7:rh+ftS ]Y=]V>XYE:rx< )$ȑ IRX;7: FI؜d>$\PO9HȽ[Zg[$Gx6JMDgLW:}n_T>ݵ$6eƢf RГ#ܗ鑔&R3,1wKZEInmqֵrY}tZ82xb)ʝw՚IZ l+):` [pp3GI$cj#)ztZ9֙ϏE,:juĮ҇[a;tRk-;G[ ?4N*nãyIF T<\Y ')-Y-s[w eϏ7点̚aLm_I>3ƋBݹJ#yn㽓ߝ1Nr>s9G '9'Yc)郪2b@sV;ȃiʼC{F!_csھV8Ifj9#Ek2lޗI].2횰$68$Z*myrjͩ6){Q%Yt$mFsYWalqlru̽`Y1pY$L}j)鉘;,= 5ThrzngTp_뤶[ ˡ|}9>'Y~[l5ݵ,QJ/mYtXVoYiE`9H{._ÍYeg?=Z]fFAt1USc }>c,<6<DerJ+~9Мd)򋘋; 9b7Mtϋ?`[ s"`k$[-$냴*'$"$Ivܲ-2wRu1Y6AppО}W;UNSX_^9I %w8NrFE'h2)si,𒓜eR'u丞J}C$Z!8NI9Ӽ,7_ƻlS('>1J\?ӷڐ:gZTl/ 1;~K]` %wKmIQ?N2k;䪪l}smηdDE9ɖq׮;evvV[p<ql=b?&ח%=#sŬk[z칓GC$oyU8FYU<34wv': Ks_rR)}I6%vRNT1sC'U\}evU61~'tYd;o2A[\Ǵ&ťnYޑmxZs|nWp-жJ O$7?4H2.I¶qqRI|ct'`R'9wEE)8l%Iz_rRb=vq9ɼ(̬ʃ_֍w-b9+RgKsi~dj `(JKQ˓З[EOȟXN8Ԯ GrNm}fk1'k_NI$%aɫeˍ.łܒg!_%8RvSIM 1_O ZQm_DYYI~vee+\ت}tM&Ͳ߱^siYʝd?%x?I>:NH_X}&6J kqd)OY1t5 c.gb\#'ك7}fbuҫmID 'AµQgO<34)'(w8w|vxqKeZN(_/5AzeU\ֈy( <- .vpR uFϓ81k9Uߗ3 (~~egj?qEsrS7\MacbEuqm|IlKدeg!ۇ|hYAu[sRIѤ 'Yʬrt_k&؃%Ov=㸒MşؖJ~]D%P<6'ݗncX[VҚeo UM]KqR!I%\o~b9~n`?U%9ha)]d^~T_I%emKRI '*9JTNzN/uR鎴 ܧ7ܯud=]KŽ]͢ʏo\orRX2ڦUSd?8{~Q-KbYF?:d&be5* ?$W,GVX<55vVٖ*IQZp̵8q;ɜ$_6Y[>[h$A$˹]73fڪ۷ NҘI;̻ k:䝶r%g䳑YkԘΛbrv;Gl\t#GEg8g C&>;a3N̾aQUK+`u︰i\myjIE`Pe~WJǽdp ř(0|kXF]'gY˗V}*Դ(|8NkNjkRKR#%2Nu`-ˋ?iV3RnLyyuӖ8L٥wIFF^rmwEJvorY7͜䒏wbF_rw {k-뺝wd'yIzIֹ:F8K7.򣹘-%P!3 YٶK$MljvΘ_57V*Wk_{ nkdÜ=7>}IԪq[.͒)Tƪz+$; DdN8` +\aAX]71YhwmCTŕf(+fKb 93B6'ZNU$[imVc'4c9 Uw!jM*I9}'ջtRR4r\|LnI:R;-ũEoUNbnDY3+Wm/sg:xi$ka /8v0"rOc$Q =v!'V_gNYJpܶSMʐj5TRҔXP\w-vxM91z{k a4=׫T8 e!Kmeemz4SحXԋNwH3'둢-|fvQX7ޮ$Kio`Nrǜn6s]INdŸ˭]c#2I~s >GNzIKB+;{Ap+rs/QȖ¨" W/3rUUx݉TZ*(I99;QD Ƥ_odIlm߄iN mKJrl/}F@R~#S^6iÁ<$7')m(P/NkpR,Eۄ,2'zs XuҺm#9?Be `øh˻p6?=qy;C7۪NZMw'ēٺU0|H1-b,XG 2ٯs6Pt?n\IANeҟc1?8SLy{ݪG,^Hv'!ۯ7–lx^Tׇm}I܉$DM+$>w")>(8閖IY(!8J6%^'" !2go* I?0&7UORqDž0ࣝ-oBd|F`Xѣɭz-k\~3~}ϴ4I/IsF@ew?79ܮ<ëWf>B|:?>97? |]:WtW&ǎY|&ݤB ::),Rb= J|mlQJ-I}=@$3w&hZ,=/~Ud}6lMrIӄndήτb. az9)i٠6LL -G @3Ow1%3ĸ57.(`>voNz!:l܏0;hGMv !8݅qg&?Qs~6gu|S!$ңxC7Z=m$[L jD?}N_ECJr{d⳶O 44ѧbn7S.B3qAD_6hk$ _1J :0_MEpǘhtNg! Ŧj$}NCo0g51oH:$Y'Q'QL; z1izEdsX"D|kҮcY'`w/׷38>e&m770ut"O\H131c c$˺R6PoV|>-sXXK{&VZuv꜑&u1sҥ_ =HN]N k#{; \ x@]E );.\5:;,\|B{|l2Y^δᶸSvS2ҚIn5L3nYnq Ƹs1 9]o }^lNZdN-z? _I꠆L|ck+ek;)&Zݚ?<:Vic89L/ǠxIKn{V#tHIlo|9$r 'a@׶el5ͫq Φ ѹ,c&7wwDw0Bu>ĝͮ&*:Z29["o z.oMI.㻜*uIpGD1$YM[ru*Kp)i!cҔDI+c`{w=lKq $-k)J|n͠<;8\JM&IY$6 ˨ &l%͞hhuVtql\Z!\q_#%#>{d~elW7pC''Xܽ@յ3g+oqvRAs(J$sΌ~Rёe7r'8O]uR2<$3ٮ9)eߠ~,;)6B$R2ֲ֗P5'3wC'a=e'^CV|M{f4n;pMi[$V۔nER@']BnЂߙ[$ꪟPEՈ9*5ޚ4p=Wnk0 4`w?<Gdy6%Ib_Iv@ɲ甃_ %mEw!i@Na+n8  m2#2Y$ 'է7.<.9h_Fǜy1l&=5z<4_243 \Tɘ}rQE3x%hCsR(3.i#j偠ʴd'|M-zItLn6'ipR@/3l3lTJ6" x TTk.ҠJ.'w&q|3t`;޿#hrX@[]0+͝cE!^' Y-b6HTp;Œ;EN"IǤmaT]' ;ɛrם.Ǐ7¯8)T1y M01zclҦMrב@9LAmNrbIa,ikO8u3aNI[njp[AvM:TèG99XE"C&]N|$ϜBs6c tM6ڋpΜ[I Cp=8|ѐ#+0(\b.:^cloM*-CޓO}$dk٤>F%FJ]d𔠡~=z`uSF3bډA2ǵ|fTcy Ŷ4c$c$8=$p<t@wD`I1۽sjt`՘p!S ]N ;)DNc#q-{Nȇ[_Zp˶$9P=?m 84H G;8)9Xxjf`19"T Ch{!dZ$|Z6$vBGrXE:^9i?_01,Pfwo 8\$l3JibE0r<*l廋N"x XTd>?hmㆷ͖U$ ٰ9 8gumҲ}W'KLh/ 8fWQu &bƉD7qR1I6KDf<Ƴ=r')|$Tlp2'(%*/sҫrgzp>_Igp23O2ח8׀N*/[bnrrPәHL%f!ۇ7x q'=qDiʸw#\uw}o8^֑N&$&&Y&IJ;6%N7PbXTY`b'K°Ry]Qln3ժKlCO:&/ӻp9b68 F7f!F %[ͿeU$Bv>IYG iݤ [9).ۊu_Io9IM=11'Pҙ2=Ɔ0,/V_L5ۧޚƓOt}ɻ oBء2+teBL{8, wVqy #[+B|#19gE~JzwQk':g2f2)J#_0Axg×1#.AA=k޶,{ - _ 0 IEtV->| ~ <[iIW)d{w}3afh&/྇t~Nz(rS|IӕeUЬ?^=UF/'ůcZLeoZ+Q+$*:9Escz;NzcyPaqwpBQ Wu5k S-z.ӧfF:nI-l:\=bOwҳ'=KL5wꅆ75+Tl ~% `|Y'Jq#q((c K*,kM>ȑYD%F,DdݝtO9r]|ݞ7QV'߶T@5$x-m} ?MR3)s]fwO|݆cO*tR|/6{$$;Sk"͏[3(";힣Iea_s|ڱ1@ GbNr_}D' undUu򶛷dcrlJ** Σy˛4iѰ 5 a4PI︓xv:na$3rD3K{<έN ἈKte$߷q*6,4]9)˭XWeJ݈ Qm7;4 oaR~Z^A+kb?}ጓB_lu μH }cCH~. Vk@[fskD^A 2lq]Q=P h˓94nO"ʼn\'7z'}R '" .}A˂I2P}o&Q4^R5b_Yy+:snui{pT>OBs% :Rx0xすrr:28 GOo.hCB{NӚNjSIEĥ>phevWTdWq\˳y̰zLQ!O:B|F3-6+Yh!S"tOprb^)P,p&kfq܏}ZڦI}FMmdFZ,;<vf%YMߵ))Kѯ.;3Ic?pȸi4#;l49qIftvsRJPƆjqRUWxJ0]J#µ;Y5 ˤ%;$Z|Ii\Q:yz/پ'=JpRKFog{MRI!hqpR]Jl(=$[ڵ?]ZeIJ0b̰Y;#9op%A-il2|cas0O'(%at:'uLcA0<ςyw9,urR[(qC-Nm5VڮҒ&"{|P E A{#7Ɔ2 \x QIqPdemyMhQ<-lJ;G9𑬃$CS?#č0o[@'դtI NbJIČ&(WqkJUi5*gT)ci)ٰ=:24l=b sSuumz(r2u=WyS9R纓ҰF&IAUWD#!'ņj"tI͍a4vTN\wm}M5r젫{ϏAFً~o[tF:?AI܀DEKI<*!f#jm³NI>ǚAN:$l*6JBhE`L:xq¢yNE?% cAS~ݏ,<'>zsIE}SvR^,uRe3)7;Jţv'FAEhj$gX_bxJ  cmϔr ✓!JLrU}gusRqL&ۥB7xDJӯ8$/DCI9 ,7;Q(lׇ9 i{untR >GD*Ehu(֬`4(.)(Y'Ɠa$eA0q gPO|͘L(pq&PYyb"=uWNՠnP v4@N8iX̓TI/O8;[*`Ӄ]EZj;ncN '错 ^P[f|C7L:X%)=V|WDE=/XVWl>;<|qS^dLuqH@ A~I`\5ţ%ʣq'U:ikS-[l,l&_gT?Ir`P%N#\Dd=י):Ĵp ;Љ ,LMS oh;Eg+NjbZhuG)_1XlB C2`ٴMN?[M*[d۫(;8:R'!UFO~8œzlZ`Iq.aכȔKiANtND҅osj?oLONjmvyE'rmaFO=`Nʣ8@p>ϬOj-p䑆᪓X 7M9{YՑmTn՘q*%z82lpb?JEy,s'.Vb'r RB/8 ڔ$؎FTˣ6I%r8 [֧_ Ф;*: gJlfh6I\`͖Y=SDNNrpRuI+ib~ͿY@-H" EX-mJ?\5@~D̔k9؁DXwAM=tRw;EJC?vr4HM-l~W@+ފ\2פUߕ˓5&0G-F/;%7H49 Vሓ\ -NBVI-NrxlmC::-VweEkIe 8 eX+md5vI4ʁcĕ;sp&' x h#읂;)y}7Iv+!,,*ȳXh 69iOssl-qiNx9Ip9xd .?UuZdPI"X^JC!'96guI\i\qR1$.}5-6:ߣ{S;!CCNk:z0+$4pzM޸cwK'yJIBLpґ>zQĮ[g\oG,8A !oWEΉK_36Z%ݐ;8碌G$7>Jzf4~ 7ǐlЂ]eI=̪Z5rkMjDwEGm,rRcGktF.*좛NEnsqU$:LtX54rRckt|mo]KԕmNq&6Ӆβkÿn:vrZnǤGjxf u`g?pjsf_s`7s\˧BT9LKT Oj{ɑ1($D:h"g)*G?\G#' !vҤIBћb!' !Dgi$!KS܂ ' !D_L: NjB [gIwdBM?uIB!fy' ~!?tuҙBK?''MEB,dwO[Cc&L!^Nr?iKR߿mfIB|#Th]Ҩy? X ! z;Cs辰d'HJBEtwW''!c6ݽB^NZk9iJ!h:i1B$ ϑIB=vuJHdwl> }- ,8BO#' !ğgwf~ ϐ֭<9I!~[ز󩼓@u$!# V|cl $!/ !4^XP^\NBsw+ rBNrN3d֊$!2}? ~(M';ō?= .ߙ_G~buN_P?GT$ϨUQ{L%IOZ2 !7z_oNwتJNBosVIgJ !Tzggǜ}Tn((gs |RE.$!t;IBx'IIB!$[wB!c$!GBh'IIB!Z$)I!D3CqB`wfBV$! ' !9I!,IB!fANB1 rBYB̂$brJ{B|77;ie;}.⃘Ig[5r!duRU*rtVZl !3  6[z,ZU&ukEKxrIwWV?ۈf Y>I ŅCdFeg+:eǗRO8iکdl/ĆM|mid(fb^%:UE+7k7`&>* Nb|,>DdrIf1);9ǫn|:tJ?#nC lc+΄~gǛt!Ȓ^1 %fTC '))z : Zcav5rX"4[V)4l)fL#E+"凸$>Id|L;)8 ǟϱnj4IITZЊ /PY`X,+ͪlKr9ɻW9|+NN:3oH 72~ޯ'4hijNj]&q 8ݹQm1{BqׂZ ,8Jtö_B{d$tOfskx1{C'WY]餳ŶQX>{NON/up|~^gNr7T&mX]sR8ISsT,'jNdBrGGwE]P@>ӍolfL$0iJ]<:' }X)8lNUׇldaf$7|dc"*Ŗ=ER8n?}Fﺾ^te,b2D<{X&6֒*yՂ(3y'c_["[-nv@("jAg nI )`%k4Av 쐨1G$7@\*K#V>dbXf/Mu'yYtU+kTq>$u'~IɌ$fhr^r $I!I>r:,$ Ujds''w?%_6I;$`$350U u5(x:'C:=Nʷ&$NkĜzTRC+#[8^W^2NްGNZ&g}CO *r v I6SJ-v55j Nj|n _N*rIE!15R '5$:q $sW:Oip!ـVؼj5ftw^Qd l\~Z(<\p׍{r-'u)' ~aP HI6FsN'|I*>i3i%T=&@)f6qsM}N|0npmNW_<1'5nw~E75 |74`lbЊR)t;ӆjzuȢQ'h ᤍw )rRc*]z}blkiX5lr=-暓: ޱzCNBe,%tI1>RA6IlIq a5RrS-\QxD+:Т:ZX#s m U;e}d[Q<՜Dښk8i .E= ]&8PV:j78)RItjyA7nOVw= ^+Xb3:$׽i ڡ6a]"S'@E4x z5J\@de,.h`א&Yc0; M6BDվac||IABKOe|I`@e5;Vï4;%s0NJ[LN9 ^^+f0sw;TR&!' {(q1{wA7Pȍf'5N 50N"Q'6 AI.wX* pR I(O$(0]<` ]̆<Nu XzDJ6z*NB ?Dڽ&̆Cs V گ8NNmNB:j,(vvwҲ?$֏~_cNl%//ԓer.¡K8!->u+W! f֘AGZϝCQN\H{IԚYpAn Ԯ|gN#YWD :b&'MIe&#Кaw 16o`'9\ƧfmN'[(lV'1$N*Rwv(:)\N:`Z"IA'xkǧJ"%w!k{'=4~(_3CC\abaώFg*)>ɃPH̦BŸ;)-Bw9);'% 7: 􉲲kjT:7#N O '}+  ;7E 8C%=C0c "RP0$I{I.NOX@8(?9:"5'-@'HF.{ SpҶO`sۆ"'}+IG.v:/Z]9wj,0nn7I$ӌpS2Z3+NB$3N:Np_sR}Iql8n[}4cÞ+N.eP0(DjuRP $$IlEW@:hd{Ig9?tJgQ; NJ[Iͺ#'})9hI<ĜT|X l&N *W4BTi~&&0yurAI, ఓn:DNW}[`;dO[C`]S6.Cd+U܊cp.!ڦԛv^}ԸŐmȑ$VckG"'}k*yFL" KGT9(wMUYUDLzIu:pΫVqR %'},X4~;(p>N2d-|Rf"uCN;)t8)Y'klB'U87X㛑 8`];O˅$.RT#c)q~ϒBkwиobFpWգI`/0GN6`N&LzS 6']UU_e2 o^ʃL:R$V%!V-HRm?ޮ+v¬@-$q c/W׸=<& ˶;{ŏ˾ĕai !k_'+VMNos 椅<sOϓNpD*ߢb9itX䤂Y!.N2dN*3&w ʚBtڐIkݝt).Lc~p8?Ԡ).I6dߦAnX\+IЙdGj@yR܍LvWp3 wGSk}Lo/}p+].2C%6WiDh$)VcN K+Nz<]_BߢL7:pGIa_.icۦrlE 6Ā/9)*|sB{B~붆=Ǹ ڙS,us|k~f󬓂8 ܮb; ˽n;/|Kc]6kLbn[bz!i(J)puewfhr]TznkK2 :)[ME?$Ie;RLxIXa[[G]3K6 pCy)Q1tifK-\wEξOI(5:i[|hsRR#N"U 1Ury^ ^e"%'P`ۼ}v#zl8"LPM 㜔قnl-l4j^CNRڎ^. M'&w`qRK3VlnuvdoƴXt9Z$8-P[ՕDK$8cJK|$q y\prhqR IḈNť2ė y`>᥀. ACv]ޟ̃U*ɼs3ԁ3 {<(|3NJ)I: 6+U$߽BD MXqu\raq-8)T*sRnMOQ`POb_p:LuIYANj r J'zĩNrR,"@x!AolwS)meJ/^Jdmsx]->_;0uN'Vܽ;h#&HQU'%WtR '\U^4H] X%5*>']ᕘl|رgFu`t@'I?=X:ϕ^4|W_+Ϻ5: O9 '(A$7P<6VDIڦ?QQV)R'c4BKH_AP4:$4+i( _t0(c> /_M&%_8%ӏcIIeS<${m0jgAr'!Twli$vI\vzCϿU']%*%[[P@"H4{ǶBU{Nr:.VqR1 LIMN*{@w%A4'uRX;)\|vg\r"mq/iwN!D-NrZmF'Ub}Nj?.; ج4W;pPw?$Zx69wR Ů ΅ZIȼG%7hq]}wať@lT lU0=8UओR[A -NjNj0q$s , "H;eotJI8\˼ȝ/#Z~֖ԒQ_$wWk,^nkK VNH['8YuR{N׊F`}zMsIStG48W#|.0=Mc?Nߠ7)' :zNB.oIe״Jyp&L`<#%WϜn|*O;[RN~2'xV+WV1e<6z' >Eou9E?X3V(^I։䤻Ny} w$I1 ܱm+}k6NZ@ks.2X l$V)GZdkN"YQC4N&?E#I}f 䤽'5fECN'N 1컔t(zvhNŶ%7%ܸ-\IPqͷ;[̩ݼM S9d5RNJ.tE3Y-0}c"ںp; =kIkyI:R>do Џ:\R}~ְnJrE^& |CjtA8"5䘟Cj7TOB Iwb@m.:Sp>a$MN"gNtPq{ixo:J)C0V7Q%Au:W5''+In׊9ds}؜IvRpgEN:o5rAg3IaݘtckJmaM``M\V,$(UVT\4SYڠ睔ȅ8)T8 ,I- Nj-tuLeST"'MN'YK$  7fa MW@{p 40'!/A*T^NJznuJ Im$e<ى3&K܇DuK/4 Zā%Edm b? I!i':)RCJ:JrMש;O:#dnBNfOW#x*'۩9 I.R0.wL&k(KE_xza/\JEhTiXVnsq͕9)x䤏dպ~SNZͦ )b U&bI|9ʓլ+Iu̵̩r#'}(@aNJ 4x/;r3qyM$k]b)ĖxN%rB[V/P"’6$4UM~[1)2}0:A"'? C<JY*.۲̢v)$-#I?:gep}% qu89Is#92 d#tS5~PM`'IIov3wǙޮ !2Ӑo2>tuZgL7o2l~3g]6GbZ XoE9|{8'eж{ \=! ؃s8|%:9( :P8u&cK^N*:IquRsi%!DGNN*po[fGٜzD^'l4UQXc|g [o:'{2O$p N2BB~C V0DB)߉{wS8R'B|6VEt ]Ds|b|[,VaAPN{ܗ[mʖoO`*zV p\0;I[2jyp]V_p֟S%lͼmM7׃|cNjڲ~uN>Oz:ͥ,|Q~H^|)۴[ff[dvY،MvR*N.Fίڎ #|b>I(oX{Vc[80LMI]7[~m?f-%,m_ f'(C?I? IT:i.a N' >Q52w3^q(/y*b-I.pɢAI{'ͥfs«p5ͩ[Pj|¾ÙbͱZ'8@!wTꓝԜ cxI+T3-vwD9) z Hv1["lBɼ@]$oW߫&Aj]PV+\TMCw IXh)vKIM5wS}>8ŭ8 ^NBeYy{-9'I~em[NgXV{s&v:bQ]5-AW Nh m]?4I=Z[gy0ZWH飜dFiF:'Kg=]nãmJE^'rAmŇkOUr-(9)qAc<oe/wH%1 JB3s-r$qjNN g~BSj#'1^-99u>EAםB>Xj$tPɡur$X{s;$S_]_|0g/ᔋ@A'dѻJ} ^z;k7lqN#G]ޏCTr'n 6228Y2&r{GƊ?$o<a[i&XVB_x]2'm5Ca 2h5>FPHэ($;Oy`+IF.ފ:'hIĕJ*iU;՗s`ٛ}{䂕ztC,)y/?r/.olx[BE3F0vMeMI9+N'vD' 0"9$_ǫu'I1zwwkjiIi)FIMm>J~Mǜ/-!ltsblj'%wٜZ-e4 Y\ХN22U$}֤w;Pc_D~Z1: pJHLĂcU7'yB[ kŽzx1踐uE]L;Lpo]}WM`Xޥ/vQ !ĀftR$o>Re0b 9tRaf8o_N2eg9KG7yQshǝ hDdN¶(TEv:uq=[6]tőAD`aÖExė;Z{S&M1霴f > rΡ?-;Hi7SN_i|T A!W8labv?/O;ɽ!q6 qRMXt-TlZR[݂^/$* M!\c ,&:ܽ]O)'4pD,0N5ITQ'P3(Ttw`'KgA# ydqs];$(Y6SP c2E Ff2QiN{VRJsgZ_̫NsoN 3cW~(0dm(>D3X澗ΎJxr#v߉|_8 =QA^?w$nN '_l SNM/'{^|:.@ו~6An(ߗ .\rFNxNb@eG3J'FS (%(R9I|9<| OʔQ 5Xl( W\bCu“xC}/N9)(-zNBCN4 pb NzS[ٲ֘^$_J~)TIqQ_58ɾ$0. 'I&ǝtw YK[MKEiQ4Pe&rI S+ iXzI6ւ{cvX'; Gg>w=*_Y˖B  4+X4_Ț-_*s[mI -,#}(I|i59IՌ;:߭wsߔ,[, ~|JhI:{VB1o6bocۖW0D>NJ?HBa>rIlŋ5M$cIqQyK FvL!\i}n(:e9܂ڗwuy{'g-D/F y{T! ~nvID*x< %)'VB| ?20/ $s-{;!і^Nb&W9)9GOI*>Nr Go)倏qRx#j-x.Nr">Oc󏊞x=I$h~"ъsg(V1ŧA\90fq/,wҧ ' !wy3u1D[qypd &s};( jĿ|cB/ຓ엏 q{W8:G7\N;J @:Ζ鳵]\٥c>Zl0iv8!Sq;|7:)J)3^",ೊ h|4 bHt=v^~vHe#' !$uitsJ/)'\noTwNJ "O)o3[rIޖ,}vhݻB40I!Am""fF+upʸlc\~iv"TWk\[&1oD|S2& Ĝe)!$C:)TwppX2 IZ&[]<ӨcN+R!_LLRƚNqEmcN MÖ4MN".v'RȝVm~OFDX*bWu$sw= 5.ؔ9 ,hqv\p*"#' ^42<$ }$m;mIH vq:>@ZNNBjzd^IIB_z9Ɇ8nuR9) u4)ʏk 3'`~o3LBt}v}kmN `6NR9?ۉI+((TV)$!/n/_2o☠qo4f=+s?2{ z2Te#N2Sֹ$)Io#)b^f$Y(rVa}[$Z],'Xc1'e}IZK9iW$x'ٻMM+|^,> A^' k"YXIĖdg4+ i3H2BibUލbk)ʠb=eoKl{INe}|9[|C+9Aymt*XrN3!XC@{g@&tNB؂ xh1χDP'ټ|F5'W`Q=*' !IC0+WXk~Y `'9"a㋭2Dz{,LT]'BUIJ?8'6M٠bUy;|k-7%e @2k!ğENbMmn'H$0Ix2,$!ENϡpBX$3!_GN!' !rx}_VHIB$@NB@$z[B̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBYB̂$b$! ' !9I!,IB!fANB1 rBY.J endstream endobj 21 0 obj <>endobj 23 0 obj <> endobj 24 0 obj <> endobj 22 0 obj <>/Length 83869>>stream x-F]&8p`a /^XXXXXX8pwınIVYi$~kIa0aaqΟϧӿaX?CqX,wJrd>}dt* a՟{ur?$I52bNb*ḊkZs%_.So|dx^,$!NF\%'9bpo,p XR_q$ŎX/|~9i?.0D.GϾ:urLr4Wij̐'|-a1|eHd!5ao=[r8Rhy~!֯%6 {sxe )\|mYⲧ#\(?rk~ܛ>!Ϻ5\2!4~/q!ӐEGS! !^TZ و$H(DdZs6xkf~cՌdjR)3ho"jeZs3,!xcr8},Y_ϙ8ODaOjKHm]5C?2P?1 c49ްȏRDJs婔0橣~zTf8MAѫN#ۂ/ fOgޜ0\ɣlj|q>L@{[z ЭBgoapoN!'P-ZT#mvU˒|*1Io>%T沎q17YAinM!_{pVŮ#ZZob L/9]eu<.2wM'ۮo$i] !_Pm<8|:$~Dkso!ѵt,[?yꨧ?4"k\NLCTę\2KܛDzFe4db'2|v$}R7poNq*?|<}^;ޫ [<pNW˯A]X~6U:BKGL po.gSoG/wgyyWUE9QtD}Tl" 'Qx!,|%EH_],-iĐԔ${d1B=T5E}.ɄYs<Lkhކ=,"]xb"!E} Ot#bޘ~ӏ/cэj7$,g/Nor=UW\62Xo:|~\68갾0~xğ|f2ew^ϧS:Sdr96W&_>=:ݫ;׳;a99y2Y?IQٮIlL_//?xyY?N8}gXan>ah{?.O\n=9I!.f_?4,$2WxLYQ.~$& _2,1e}|J!c hFE2_ [ q[LZpV,_sn<&o~]8i9/9f_9w'Ÿ,}7<xx;25N|ƷoI}'7@ jѯ# yFyIG80O N/?朾&L?f'y0ǔZߴ50o{Ixy1pZC?ݎ}x|צ>,KI۩S=x8;I̤ S&efe:ӷ<ͩ}3$&L[lxږG?\ޛrGlt _%|ӏ q@4NQ'0oD7 '1xg!mO&I'[oz;+ c/2Uf~DϏy]~8 ii{;Ǘ| D?;J4~uY OƟiM{oqo֏[y[YҘT GtUx\}#M;oiFNOuM1-U Ә?~ 7?Nӏ~ogyc}31hW,O`Lq쟷0<9̫O.1 Mov~h#>,V q ߅iuyrrY杘7|1o6F-WF.,Do pvaMO>aZz [6?*bw2.O^n=>̏z|f/˜qᲵ_cUY?1|5?rя[0~P"B-G 7~?3?iGtysϓ~,*tя?O|1=?(ߦejWG fߢOߝw>Χ<[?<_ ~Lof;8}xez%az70?800N ~8)ʤӝZ y~G^cɮ֫i 7_O12Ӵ?1l"󫮾]h㼄u|~0:?~մ΍#yEGNOϧƯW`7!̧5NP{'"7/qZN<~9LkY+~.oOjϧ y?amyϖ5ۛLwLMF=^\7י/ ˴g~鉓 'q.T+Vv}/pE*|;.1Ri$ o:E?׾~?Ǵ;tȧyOZ109yeqò~4GڗW O3$̿[<kxo7N;9Տo3Sy1}͉0m2kNN1+*I>|ֿ8OS~|.+FrܚY@Mᅳ2=nnNI? |2?緯OaEizp֏!Ky_MOc^:'^?¹@#T!:]?N=m~y1dY'?gǬ9靻|3힜p&a9=LNN Ϗ|= s7qN cv*dz~= I۱[uS1ӄyl$w^{q܌#?_#1Y.M4czULr2,^np~ެ"s)IO/F7x8d~p<{/?-_ܛkGo&UPcG?pq'ۂ~<' Y*VL{!]ZF8Nzޠɝ܎`>rpqIo>ؒZ*3`iЀՏD!rXNzrQԏ䍖@ b*^>EiЭ ϳϘ}v,GqnIcVhO?\@?n~d+DM~E*xm5kpdG?v0KF:pCyCUgyGzUuPWbjaW#|J~ЏܧGrxNgf l4ҏ̞8{ pOWJqs1LY?sM{$vVygu6Ymd! A?Y? S'\z6`_9^ W=`Y?l~a1sy,YP3/@>e쟯֏lUJk{kv =aL/:A>;#$x0A,SP!pk>~Wo"~<}Ac~ x&[Ns8¾k@?^====ި,#j#Y3? T_'Ӳ.VޜG3P|/Sz k-ocj@eבi Nԁ }&ċ氶%ԓG<v׏B%=Ű[z98ٍ,lOEYԺ}y&m]yKKg{܄x4wCPxtd<&v}~,x.hu]Ӷk|z׿3:~lj1>QY0V ڥ,7׏{Ca~\iC6:uWxnjB?Rok&Ne٧M^W?]5#Poz;׏Mc[/,ǗǵILw8 p'w1[cǵJ-n@;<\h˭IWޠݖ@[d/`Z@7ݛ Brk'rsrsp&?dNBJRM)LW$R1)v6UVjO/\FW|Kc'>`5EGe"c\$Q{]`ç:\E?T8MEԊSVG4W";CXI/bi?]l? f-xU57T CL2_(\:K\dTsDjK %OMj4uN2|,ڢG%{C#mT*X)[NiV~P^ *nsP.A:B!*IRZ 7}Fi-*,Uԕ%9H>ZO;lsS T1&inEUʢAe9$Gzn/+q=Afpˎq l&j#'i^vC5QnDJEI?Ýa*Տ%MZƴ[yW^ndVǖiE?dDn7caVs*].$eL!'6ZRbߣ0CkiCx|rCa8TDX-_x[yQ8Q&[ON׭~x&=@#(ߤ[ʢݤ\0䝦4j+#S?n EQz_S/N"J 4>ƯV<˼:`.UI4w1ipm'MV:@> jMC+#n480U8SsBum^z6PE?B?r_TС}Vv%e,Y9Fwx#G "nmp[iKLjh9L&b6-V9~hTb zJ5S߇E=.4@y,'Ԫ힛)OB^d$٨2T2\*`ȑg(g8Y! ȪwɊ9NaE=e/^#.(Q{;5slA) Pus-ʢ H[/~p~IŤ4,QGgiA+kn&iqr ,_8}…eœ-8ê:g% n&:t*wJ5 C[6NxKo{擥fv9^v*ClzxB?Ol|WOD(l'x&*a<1Dr8(w G{¥?G[?J.QD~뇌w=.q?DԞbːwm(ǭ\/ie3&ehDזSؼݬo ] Tme2lQfKAR?0c~iϫ~Yt\M_OEj~De)E@mS#>ݿ:y9ʏ}qm!Cʙ@>ϞTdG@LR:K)V~mb3sMf<'9[Y*\ZBo:rǫ[Gu6t/בfMJ]/<Nm"/vn idW WL-7DG6`#K>r{=rQFǻ/vc _%yU0wW׏-^EKWA>/=&iL]yY< ;xVs>xR<ω/Ϡ12X2vf/O~c[Vyҏ1?|cnE?RxL hL?܍A?T?;&~Gͭ۷M6GכG?="BE #>Ooޤ[mlӏ˧{Y֌`”RB@6` q%yиaݤ,釰,?~!R?$o۷$G^IM hFnDX$P\Kt9rl~qN>A_@' WBd9~d_)Z}9~lĹ{ӏlѿzuw4ТhEg{"eoHU?#wy$d~,;b0LVܮR۩ꇽcV?W?uHM?G?čɮ~Ϗ}vj=s{+}:>ε}b1VFncwЏH+6ӏ\-Yϡy8~8q́FtC<`#sL4FhFH=|_1yaHeYH읞7 9C݆ P4;k\yoQC% HYH ]?ljt~Z&8at3]~w~j^јK0jVXpW~nx0RѳEU{p%r&C?ne'4j^{4bǯxunsS,===== q}IϢnc?m U^{ mKU3qg =Gow#DTG1g яדvOOrQ~ڭ qJrc ]jg{)92尟'z sP֧+.~}z,^u=wه#ð:=։!x׽޶wC*̿ͦ]o%(}Ȃy XW/̘cDf[J~ܬwCȰ~;HkZ 5kҫ3ϗҏr*Ĺ?mm1Ncuҏ㾥C?vEkc;|bC֦Lmc)@?5w-C˦]=c7|m|[Be%)ܵ F#v["*nHnGyc>Oo4F]rAS'ՐZ8[RrBf-줵uDå'_E,CE@!7`Xl[LSkHΩ6kCCUǢS9I#;4a̳Q3CR:]9"g%JNm3{vQƗ]"r旔u/t ܣ,GQϏqquRfx!3eHUpk)r}/Ic^maD~J]kZ2tq4+%6hoY?MiQB\4q9P(4+ me9yiV%DOݽ),Yk=&Lh+L$ɺDڎ[[=CQ# hl*lPH"*.rZGS?N6w:&SՏel2zH;HW:`Sǘ7m4Zw.toݙ*J%27c!ɴe{I1ZKq]Q~'4V>%˓7FHϤ, f܋)KQ*n1 B[WAc-vh*%ӳGq&iY>&MӪ6`BeCZ6L`C WzCo]z,Y>;L1p~h!rU1mxLЙE XC4GcjpŲdjZD-`UJ~H1;~\x~l~THûqRr+F<=ToM~8SՅŤnxhg$z4]j4 `NE?dw_֏{~\_L?d;{v {|=덪$l K!}?bvTn]G?UG[:}I?F<~pbr!uE.纺PQyF?E nPU?L/[B &'w4\>aY-tsߢU?AZrxz[S);ijaWR?Ҭ-ڧ~p-yR~[㲔Sof`gh*7)3Jg@A41!&+яN5y!b\% THnՏZa~RDʕjCѮkza0޼LL)G`3Ϩ"W?.' yڨkCF0].7* tF}wIg#%Yݠsʻp115p Yd8 JۮS?J2af CÔ'0濞ݼt!-HE?TQXVVֈl9#>D)\ &]ӵĨ+"/Bt*gBINKc"8D]5Bb.G  ny"ʣ˔W?A%՚nfip-BC]2+pRY"^`rBTᨵښ%z ]ˉ0|!"u<2a&WuE) PMZk|KWo\i!(x-B<5KsN9_ȼM ZԏVjWvGv<"MP|œ7Qord8U_=B,^ʹ/CJG[tr]' :ˋ'*ʹxr%S\,&}lQU0jhȶo/>=jZ6l\ӑʹL5a>ak/w;);bΙY Jjpq#N]-ADħхz]v?dghw33ǝP=V![ohbu㐾x$rR>x/~c*Zgz  h 7sH=H/  -޶b~8)ߟQEA^cgp_{4[?6 yF8{{|lȽ`I{wK<1H^zaUG4yyAxJڞ,y;j_vP{^t{C>~Dx^vs~@~@~@~2{T.,omګsC_v$@?ZY;qc[s/s9mvB,go'8׏]}՝}Uv#?[:v.eKN*WWf%ӽrMн9:Lr9M뚕ם?n0\@?I~t4ǝu_jɓ[|ǎ?pR'w rt(vըGǓpz9Ԩ޸1t~iA?n9gҏؿ_!>qt<Ʌ1 j{L?/mIO?:@o  dz\E?_CVFo⧡ǨmsޕF)tn:j4q%33++yyI9UIh)H]JUU"T;B?TDyfWf^yw=WHV[˫fI^阋IB{СܰyRKȪ$k·LݾfPh@KsӅRq敵 /ĶMSq}!wȷ)~,}Ǽf"m|4Ę[%UVV+M5Wep^N0TMXcVl ME,G%^?ЭYi:TyTS̖7f֢&f4,$=k|qKV;/|bn]kỌV(9(GZsukE8iqR |;Rnـ:^q<C'/ݩDE.&Z)-) }X5O?O7` _H)H4I|PrKl08>/ԏd$a) QG~6񓞒Gaj~qml]&-'n^mFeϗdяK5k^>Jxcݴ z Q`~W3&yuV7Gܘ8Oʭ#@HCyn3F;6ݞw1$ֹR'J+fÖT`i5T8W+U~Tlяm)zRu[}CJ2aD!sss0Ϋew!(xI:+CURǓz bYdC^֏CY]_Oo|Iyes~TU~ ǤЫG)+! ZU9*|HEBUCKMM1:TkLq8my)Sky:wWO? ѹ*un{Y`[] 4Cv\T69ܲ4GRLM3a(BA 55g4_Կ=4we(D<(a5e[OɅ ji6' QbV~tQo<n^K[Raw[-^tD+$Xv쵎Ĺ{Bkz I8k:Pn 4ǿ,l?wgڠ m^=\ `6W`;my9]~Z/.i^@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?z@?Gnug~:^(_lBQ?V/6=ɷ8'#_?3+Ձ{^q;sqxM?3MK:.sw;F>ЏI2Ÿ}HfE_'p/x\xq~6-%Ujx>:(; o7y%}J 5F{mbӕGҊ[G%Кcu5 МŒ΄S q%vqr2S0D._̞,0ȐvՂT܉eh#q:SUzB?M>mi&rDqأ镇5~e/2eyohd֬~G:P_JHκgh|)s,'Gvؑ~C_^s\57 SYKkߝ>WM%SXVҥGm$_GP YSr* ] )cSAIM,qjC?`gz*huIogFO4 aGf.qrE$:1KCGz~::8/y 7N|g0[Srf1Kb Rp.!`}]OtBL?'>Z4acj?KGMB2{G9BM?KF!meZsUN~\#ҡ&>N7wF.z}Oa]nR1AƈoVV> \bVI+¿VI)j4++"ic%Nlڲ|뇐;e}/ mV]}s.Xpهw*N?lE;#?ls SƲ~0E?*Ӌ&\`}$ki[JJja͋uA?*p=#җg屚~f%֔:f1KVGR,fXޓ'Vp܄F@{Glݨ5l=Ul֏ŝbJ's{qbE+sH,+J%ΐ$WS旅Gi=GגrGYf<Տԝ&%i>G-viX̔KZ`/я;;[KK-\NIY[h- -2+uSsTJXya<H~dlkbv9t<[OϏdr[D3(w/Rcj!Z)uUEvkB[WJ<ֲaxQnrpU)9ъ&R WT| 8$\MC~P=PuJ?Ԏ98,`p$(\OX2H|[4Vke[{ף֧vG+\qwtW쟻[{n/H6R:4]W+;e~3f9=b7j8F?Zbjd[~ xC.Z?@/;*M?v6l<~0S76f_?dW-Ǫ2Le!mjkPӺ$`aK-jn,?ͤi򪛻6hvmw{q[nQmYDߺ5͜w 6G`/O ll>%YiFώӪ nro0llTC'Vƞc}̓|4sT6L~y~r.K*fpNyBb 8`^t!d#ć؃]ùVԥb|dnkӬ+q\wb|%z5+ũ߈ij뷩kZoZ鏗\m4܆[ UG.EK=F/Y(CʤzUSݭI?֨n w,q}߿YGJaS#X&O)~0M01nchWWZ+ɖRMZ^P"Ԧ^H fznOU.Wz`Vh`~$.i.ɇq&T\{. uӀr *]z]Z^Uok5ԒrM)*Y1m^la[!M:ұwA_?jé^b6_)ի-y‰_gKZ>?XTFݯFS[#~եUw4E>IN~:̼֯w|h2 s mPȌOcTf//dQ,J^sɔ6 Q דDJ`~ {44u!WyzGKj|w?v djn cB]7~pָD/8.O>r 7pIXeݼAc~ܽ~hGౠGDv A?JF CA?*4= [P~Ѡ===================================Fz #ǩ70lL6v &_nhT(WLJ.;6VI?z.8Wǥ1Q=#( Kx[-L} @ۣF?:lGC))V^L1$ ӏ;.򗛯w֏^KX\Џk݋q~CW-' >d~lwt+uWiG:q];A6nO~\.Џf,_m$w.SCbq;h~tZPqU1xYݬm^N-CT۬~ GE?\Y26d7%]9ĺ6:ÊMcK ѐ76z6MF[rbU7D%)/_%DOIOs9#E8eP/5zZ,-qDG2Qn"/i?& ɓJ?rcrB%ͰuQ?Xc:J=-UBRϾs,m7Ĩ'|M\ё׏U~qAGGuRnYВm.֍I(c&K3(XQ1$t~:|Y+7qG%%xVm`mviȒ> WGHu&UeR_6mW. Cj⵪a O?VIG+Qt۲i-C )?^cSGz#Gtg}~._:p/5#@?^C-_eZME~tÛ5~Kh&hvۙ~DYLIlאm-~V?:ԛDP~dWVڹ^?L ?~Ϥ>`fN?: c! N%Q_Տ*>͜k*ЯR ӏmT+BXuz @?_H,zF(6(sd=.y6z7ޟ~ W<ȗ i֏Q| " rkȖʜyz&('ó%g'al-!eu3C~3 ʴ.5g\&Gv$N tATlzqBѪԤ+u7Fqt E2<`D3`#r03]Yvu}ڨ 9mT{JL`GM`+gv(gv\uXh8\tk|*p«|lYC5D-HU M?EyqE7$g;f: I1g#Nh֏B87["0xq ?~)UКl͓4YlTm*;.fG<3= }P\Mf&3øM?QϷ00ӏhG#ۇGwNх# ~ <ɄRZj>ha?>ǎEklX:qCs z@?z@?z@?z@?fu%Z77U?7n[\0R]~nv1,;yŚ `':3HxIrJ?%wrN rqYG@Y+SsUtM8PE6F cY‰C&ėNP)'M@)ó¾PD4 2j,{WӬ77=5ԵE ;%vb&dKgqB b_C-𪼾~`1su#[r%gF+rI?Uk,͢G$<ƫ M&vq7ɗpGm-M?⛶ cw7E0u*}H$~cwJr9~@;_%ge?<^8ʋz{o8n )XxV,wo|>2:Σ깒Lhi/82,u+,+ǑH1N2G-{W<*MOEe_g ij:, ť4Rx8?N~dg;zpA#mNQRYz#A8?NۯNǑ *NC7jraokya7Dw?]\&+ybtLԑJa<_do~[Z滋"v!$֟xpYlNa +_u).k~UmˌƩruU}P&o[Բ_U6?-.:tz N^rTFC?Kˬsѡ\/SY%y|%PJr[<-rzGUj cl03-Ɔ\:a?CUc/~򨲚 3+TZ>0w`-s*ڐn^Ŧ>S ЮQ |3싋J.9+HȾG}=ϻM؇ɶMk))^Nc>"l%|H+8Fv?R{G}`_ZXzQi8r+{UǓ5ݢ7_ClW# 6㫢]?y_8i?4#^(=DV ]2c|5}3W^躶nv<GBL]~Ip+KoвSpj8t[w+UHC>0*4Cv/=.w$A;+<fˁ KRF#sO}NMB:I&1߻e{_gϬ>P|ҙCw6:c_ÎLtP <]l[aOTPQ}N#UU5ԙ|x:? ǾJ2k)rb[ydxZXm+>`QsMQu_s"э?q~9h?ӄʨ[9z"ReMjPdΐTJB`lX YDh?!KdE}3-\O7}"4y4?LqV EU&,!.38K~41FC=}z|};Ռ\Z `W0 >~LG1X_d9QbM(&*LG߷N?>>\$_ùsqEޝއۣNwu?.QDOǹ\# ?`f?`f?`f?`f?N_\}͇~2wڣWС}sjh'o8ż?メ}fί=37(/??ww]teȄb{vJW_Ўw"0pD\?81 ϨA1hUȄ|Cy~%@-˰^.EXpC 2O3Y>1t h>?.S׈j{~<+0 G\m)7" ?G,Z_} $y&P`{55/ay\?d1^mcj}kEYxv =qJ̉̐5qWY0Ԙgn?:UW8=[LKd:d6cQox"Z~u(_ɾ-;&+=}ַF*)S*T FNE"zIhNM/bmq3&Qgn*N/D yU;ި8#l2Unc1Qr(YTG};9]N23+Q\Ռ6Z閛Lh zWwg Ö/;3#βˣ'r23QiE%{8ӿv|嬶]*Zwa waqUZ5 rHtm?9eXiLdafѪ}Tnft\7S)YIe?ʥ̎hC.k W\_/mrMê#8w~Q:9*e,=-U_?*a_vì&0pU9Upyrk5G3TR4ZnXUjbXw!jIQq "AY6CBn˛DJcYr=?z&j;^v;By0~*HV9TRZ.DE;`~qfu.I^ꊔ@DG0-mi^T}5<%h9^P#MםA,pK{BZkƘ 9CFϦj9+3c~x|>Zz{UGӄ:*'kVq?J64e~HO=#RWI:ޏFfa6.hFUBۭ:#Wqt{#Jz4Ȕ }n'i!W|J8 D]SY͌, ;b.d-6Sqc7]?'Xfl j-#`\R'l&FÂV٩l'eѺŒ}Ur8‘?-~a*HLUeR1̋Z^:}2/϶ccDQd3B7I%BMU~|YJ*;=r3GV"_&Jס,$Y{GzmbkL=E('CsyEuFq^hYXwSpç*(:XVkcnkx?kG8Q\:% R.7)y6Vk\,lTE[dIʽ(FW g՗UpwTo;S);MjuoG\V-a󘀶)0Q^+K] tq?س}8F$v%kdf)qS_$Ư%/"V4jbowɡ+/E{ZG]2۳5az]r!ѱ_R%`KH0a{hf>?`qՙ:_or|Ѧzԙ;q%;1HQ?`R$(1H{~-|$m-F^[Dqځ>:NC^1$ G ̀ ̀ ̀ @Ğh"ggF96a?Pi3K` /ZNĩQ ߩ_aen-]费_zwwb.ԡG}u_Q'Zd)L7r!j΂=ziݬ?lyo6 mpxWuxmpvmֻzt~r! 3qPN\}L||~uN~)|wjkS1W1mۙkn|ȡBtoy'&{.cӖGo'x /]Zs˥SҗثN#/hݧW{ʲI7ѪxC*lWnl -+/3iGS7Yեŋ˶1_-P:?~DOsv5^ҿ7Yy[Q]a|#;2xfI!rl1ѩA-oY3 2GX M5\ kby+fa%"e\Spu[ySVqſ)ʜrl==#KgNnx4kRplqED+ڗھꇠޭeEquc,f$מ\bM$JǓi_6 إ#xVkm1C!+JFQGVB̙'G /&*Q2ڳ(2-u#iOk>oۊh )m|x]Sع{aK^/*k ١^֢\F2-!G. 9[i'C T񊯌Z t=l:RWH9*Y VYk+u)XsŽ*-Vtmģƹ@qFemSTL,^U?iNqo4,kx%F4H˄"()QUԂPFWt*u5dq%ͦύs$[w#iU R(J 2gq;51B uZ+m\a$̏Cg~V:# %6Si8u[RQe<|ZU_&Rs)؆icUxlHk"XZuV,s[8菲k)bjcbjH4 1hi>3_]3COxM4#ZBp(X%i7Fj`bITm") F2"6ɢ}bLA@v)H:f1G ]xLUeܸ^pq4&\T-#`$,"(¾yTi?~F0n-EGj6u¬Ʀ)zJCP?H&I4_^-B)(!%r>hy?8-+Q]a I,w=S'2-b`2* `H̦Tv/0Ere@?XY9YչlfqXZ !璽]Wo5#_}?|Sנgi?ԳzԨ# uQM;jS,'. mSQ%r NƚDN)1@ doZwt|]?p(M3L$H& \^#취#RD)oS1(/ <)v4O[V6)j7H#Q!Yv,2˘ǢrDJCg?;5es}6o#yq/rs(#jVb]BLFQL, uЧGcps5~kj)[Naԇ41cCa9/e\GmSd2ĭz̭ '̀liVyqfSZ7Z8J-Ⱥ !:mzG2!VcCa{o:}4\?7V:cHf̀l-?J4BFcM!G6%;G49€^!IirkoG.vCx2;C6 {[ALEG讹VW#(>DQ;GLV_W"ח?םAY {GF􏆘/U g"\b)sn7Vq+G8(jXMA 蜲7 Eԃ.U} ^)1! 92Gz?nlEdvl_a{[ V?MZ*jy l!u1_Gs G2W}%_C0V-J'O☃ ,BE[E>_=Nv5"0-Q77sUE>;dY׽bzڥ2v-8%":gl˖P唷G,?oNtGtU;JJU3Q,Ŗ-KpgYHO7zvVVF_ž/Cu{cQW_Tbے5^r [Nx4c6vuÜB%_ǩ* BG%uQE] W -8fvlox:jS)R)~˯s1Sd5 ĔGg}6($o5~ފM..?R*ajT?%i(0a%*J4Z[l-U5腢5CU;rXz:եb^mnU,3*Q_#p9QԬ&lYZ[vEL̲VH]}Rݰ^kG'`gW(!յb?j 'sUU}xnKk/#BdhY=+_A%*nb#g,ə_}f.nښ|!r-Kc= lb[/%,%Efzdl FkH%IKlVѝqkj%.>P'uvWMGU^ކeSYI6zfw6c/kJw|/su|>+H=!;Y,>\-^zwM1}g l-*m%;k(ow8?Nc~B [KN³ۋ_Z?g&f?3Ѱ~j#MwS&N]:?;5q'Qu?Ӄ[h3si3h|;)D?2MD1ph|;W8~GJf]&Ǐ"L2WX98j16-f̧?;\tL /k5~`oT:~*3qSh`*o F3K7rxSmSw|߽?4JwWK=Imq-!No]+luc_þ9Yq3X]j/ԂI*AB^Ahߚ, ;pwW.MBܥbWPW##.µ{sT+וR|e%:Ұu0ny!d?-Z4eOJ(:TBW?F>>ҏnu"uQ>?ȏǾ+9%bY^kc_jl%%[)HX/޻o^Is7Cv܅珞:J[F?@\?"g0߶U&tN7}8[ҟ#Y1KWi7>(C#UEXKX[}*>\?GLݴ^4yRyI30e \nx䍤[)w[alCꓕ~AܕIC}3س17}\᛺T3g~{-d\iڇBJ%ߦrIzզy_ߕȲ}½o|DI@EU<ϯ&?T>#c \?03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030çc\ fǟG߸wgx؃a$_, ]bޟI|=81(GW=?vb?#ϻvl,$a?vb?z m)z,gSj~&0g `f;DX.|rlǐ}W~duR? [1i})GU F`{0>*c+ħ6{g;p"Go9d?0LE<_-&㓵zzZʔu\&iG#%LuK5y׮Dq任bP>5,ʹVWg[oYRe^E`'~з\npOiYxE]^o6'Q__6ׂUŇ)p*oG&G^~'M@r>>p`GYRpyyVWG$D08!hCj?Ī$a{詖\7C>ywQAGq8V`c?gJU*)Z-~0 oJ}[ɌRGq]ߓM<sA)ݔ!en*Sp%IJCG]?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`f?`~wdy|Z,|7Nnn?wW}@GdUq՟9 S-Oρ \'k_$v;]H]{BqVu(l0'비j15=Y4TbA'o"{Z.Ss#_>}p,1q5Qk_;?/1×?J 62GL"2~N8i+}t\=rS?x?Ea?sqz۪ћƣor?.rk؊?V"\06 qUZ?9 V7û J?JLܓJkWP[֌d?1!Dlj& Ø|C K?׼=||Q́~tT=aG+ɇ [DAm{#U=sϙkfLA֓3t=ִ%3emC^D쪲 n'&J`J.*fZu\Nr(H9(_j}LyY>V^ffjRCՔDN")+-JEAQbT}4CEo.E?o^هMUv 블I,ҭեځRTܦuy[wjaA:{s69+*H_&CjHVoYP4YTXbNaXTeaptQIj2Y,.UZYBnBS"-M8Ej:ڛ\{Q4 jNw!TP*l/s1DIC%6i&`MQYŵt`Q(Ҵ-" Z:YƨWk'U)-K73mXW*֭LtJ͋etV'XȐS{&m%SƢFHv*f/3Uᤶl,N_boKf!-ڏCecp^W]~~)l)jxfYp2y% \j|[pȀD|Ol&] Lz<;hm#"Ux]RE,Rc ^{#lgoG]kh?˔#mM:ԉ)+c]b,նuTؗfm҆Vۖ5W&ndS6(5$gQdSb01GUgb"zfAR _,}0Q)br^dnG|xƐīY"k,vch |xm54-qYuK]]$x\:h<+ܮ̘|?Z4ѭ7)i-}+B,[cc!5fQ INܷŠ-.k4QMH j_`!z#./d?: 1%uS8ƶ &G(F,1ۉeQQrVpk}-PMmу퍙*7SZF7 ۣJDmUC>:lIh|̦?ڌf?~ )1`?. GN*f[3l'I+'FaW?QFq(vz:Bӷb6 KL+"o |[)Eُ: N. ..EJki J\U>;<ZI;MZb? i?MgGLM\|? tZݹR;D-}q"%F7 1 BSaJ m_4I >?&f6ZV7A־~cHw򏶲-q;BK:jԢUOY{y{QCPbd )fM6&l6^͊,HurXlU6^upAE8DMCE[kS?Ͱ}D{iWc]==w}u}=TjV$#g}Eeihs|ŋЩ#l0րJі7Pֆi)ѬCd!0?th;{۽\s?z둓>x2j+kd4HyEVf3p_\ٍ^Qfm!#᮷r2;Z"їc>_0'ۄNZY,=k(Xu96W M}{'|J򡸜e3hb0odZ1HM?GkFon6X˚ غ+W$>Rw?r ވt,^/}ю(LS[2fpD 45L[yS*? [S󢘂AvN4c31.4,R=re9T;**iIšTZJ<#!ֈmܽVʔDR#0 GUs\[4n::q3"rY"lF$$p8mAҠgokjb!ŕ kMxX[[.ƕ|]ӫ:y13dw mUȐG[Hˉjjpl&IOW-zl㗾w[ ^ Ī% u64.9B"V"R3śшa8#? ׃/y/[Rա&R.z$^j}WZ!y uż[QV3~~\2`U(Wngr)"QYۮ`eKI*U^yB*tqI:uY?;*rqo QSv9>WWQOVplDYrwl0 }vL_lD못gS946m}j7Qd w.l\6{VUM2XRuIE~!DA"$*/ռVr:R*\]lS愰u0  EXq8gZzp* ,EURf">ܨf]juv~l!-Vkw-֦qW}^jjz W񋨚%F5ֵ3L1ENсwVV(Fڑ?ʅcg?\hqJf{L|5uu7 Y𪜖j+nQ{/vB_avӓ>:fd~̊arqעpkH`nD|+xt3ɷVKw }ET/(WC0nڿ\3J\^Bպ;? G¤qEpϤtcK.:Soތ]-`]cU}?8lTW`֩$pR+yoga$4c.rkWePm( y h,5ٌZD5h#9?yCf%d2ҋa?i+\Z\,'4*ߌRd֢^R&?|uLe?ݳfׅem95ZMpTUXn mG8nBA^Afi$?#?lxk$t1p6 =e{69]I:+Q*aAlLxk%S䜦ƓOToCew uݫ۹7I3tm}\?IJb?ʋMx'^&]Ȇ1RE3-lkG(W>1Tcz6[5[Mo}=k㸦\?5_Jn5C7?5=vUM5?kFCS݊vŽ!>MHLi$:mZo܉ 14ɒE03h!?TiE)ЗBk56*?l7t %CS}M-`:`BILEϿ/|E (sNGim>S#׳hqԔEߕ?z7ʚen$s`?t'u.}{(/Ψ)KW#֊vg®hD=ǩ#]:HPRkͫin35}!m7z#"¦xjj}tO6v]?џ ĸZf-6V|rWZ_G5us^nvZȳPa77p0Їc/ơv-H?Rݤl1y~,>{Cig?>!]ҲG<J1 Ic1Q!, FUxgS|2CHX-bBv[Ⱥ#=A!゘wydCm?d-MuFkUʈoZ}j?b% n -s3,%K7 ,!g?:8?Rx?GLWƫ˩"Uҭ- >^:}0ba Y*(*!t%GQt] SyS8`Dy*bbUho*hn9ʑ}LYjWO3Y&T?:WzCUͬKqq z>hΕRf&^3ϻM~Һ7jCQl[|~t?H׬j ȶ$]5 \u9V-Qbn7Q" LUM7ÿh+ߺ=m*qgh |q)Z-Lpz+'8D열,\ZuioGjg~y]P];0-]Wa[c]ЪՖ4=PKhK#saEnۖ?$ e9'Zy?yIaFȌ-IAuV C-yE1~]V)&QST,xQ9g;:w !.}Zќ!ˢ3=g kr. QWRe"E4HMsTPypi}m26Q"T)"*ۨU8\:IF:DO_iy-:&ߠɜbk0vI/w,Ab bJ)#J\R1S5.;«lf֫l6devJ]e\n*\0~mʖ*p{[k .nSlo||wFӬzZhHzafě`lu]`ex솷GG[-jT=iL8!aͭ}r ^+jT‘пWPd;ᖥTa Lo4!:zǐ'Ys }ߞ?/CBߝq Jp-P}ܣ6>}A|_O?&D Ptu]u#yF }|u%ɉv9٧a#&7/&\h7l+pMİ/{Nx^б;Ǖ{sVqX7no.h7Ow|(zsQ(7xB r#CwYnv-1疶]303030301Ʒ~?,\ ?b8 ǕZj/#aM3!{?N¾<qd8JHZ1^ 6} qs sm9^ϯ֨jr` s4q4郡p3h~{x]F-KS4HIXVPbJ-. {Y[BͶ5ckUFmj?Nd?o.U]KTdޚ\)tu)KumzWO3澮դʈŤKuơ0]ֻOody͗hzH{bJ:W$i ǔpTF|Te[դvXjCGy-Q> *b7l[xY*Ӻ"m ˛.4}K춹Q]-*Z6aq=4ʧuFu{Qy|\74=?¹tJRVRfpz%U&ʡ54*xؾUT{ѻ#m-lq}fGSHsFl2<>ŘS^QFfK O?X)'c/c1,"ѐǢŬdu/J3:hpYv;.걣l5rxղpC˳:vsQ\?jwYrBQtߕθo?qwEsK搌GG1mU~s{y?:#zuUeԯ# vraP Kxs FGVr iYԗtTTtFߕ+54u)`H_+w]12C2C2Doy֪$sk%JcJuX3a QU['G\WmxGbGZs#E^miuxヺ<}duW`7(m^dMhX[d=hkQ::pScaVN"q:JÍ=MQ_R]z#Y TRfIRN[Z7CMʫAZE:YDzeZʉH T]reR4ZEe->GZ9U9Euye o5=,J0 H?zWvw5hJm]l#uRފi{G\w_S_j=Q dw]dGA򲳀SoŇn1N[ەFwhn.fo.5A1{UKWw՗)nk\._uD}]]9 vg?µ.dLUckX5Vvv4[p.{ALNn6q"9)WNMp:p_?I'+Ǔ>g?8|} i9ÌtpG>?>I=iӫTz9Ccoo:`s66?]YxOYO*kYCxX^/I,3w9c#0@>׋se@nSHfc(JZ{3^ x8?Ҋc=ISV|aiR1c{YpO禇}zw?U,].u)u7`_`ʇSƸZ_Yn?u;]ӫq` C ^qKʩO_ڮ-6۠lS+Zl׈ ֵ\GdscvE4W$r#R60߷Aj_5z&)P!r1AnD?Ҹ$\ndb$8$QU}Bۂ8ŝ?6Yd^։F%uߩB>+;PV5ݻ9ܐN0^KAR_vSP}Ԯ.IZ&-l˴?'Hagh2lxwpWTTIpJ^ZcY䴲n?pIm]`/\5#@A^\a&;GĥZ*[Vd^ܡ(=6P>F 6ڃ'Cvh͗GɫnsoFjһj EGpx 1 ?Xp]HZ$*u~hip{WSFq]a4RcJ~C>qڛ+zcN\֚4=2>Q7wh5qe/*#A?*#.K<ۜPUDGzxx<>CEȀTAfI'&vp|C(#ia"b?j]TYU%6 Ú&GaL6a_L/;苩ǿKTMH>cBՓU"G*^DvYJv9~,f>}zUE?>:GV"p?^(_?vQPTldMQc?;Oe`ԢpCt:*!M]cjxziW=Bhf|?">Q^e>YfHXݻt?^BS[gVC|5׫a?O"Np>QF_g$Yv? OZ RxF3ßDأݶy8Gw]7$@:ֵ wOBqxe*ƴ!Gk5a F[5$uw:t4M*p |m\hV[Aע(6սhQ~'jEHVڪܦW@ ZҶ;w}^;0R":j/IHm]UGC Zந2K3-~x_2ݫ [c6Sno &RtcO]2cZ#Vb3%tjqrCimy*I8'@Tqo;@rWsqD|;`3t.?_ DuŎ_Q|sXCZ) $JnĤ};TXݫ9LG|!:e}QxsŽj:*5=^=߮܏_YQ/>?8C[@s030303ׁ;|җz ]u /\?̿>{ og{RaQPE_TxR74zr$U?5#Q̍s>R7qW밿xGG.r-RfO}zjkuky٤]p[М8|kFkk"cb'}}ȜJ9clՎ^pWj_yA)[q_;ax/: p7]Qޚ>A{ ?`.?8qx\UD:w$]uDf\?9<ۗƐԍw/.;B°>P5uԾ_8u}U!U%l[Kc1Re}0 忯 \Z2LUUH|Xj]s r'3W,ccoWmi̵?Oל"N10ʅCzuoks]Lk]U*/qYQsUaRʗHwB}5}3dA4f}ٟEnVO[n`߀.\?IEJhuŬUDuV}uYmZ}X"wSYRz2gHz)(m䤡kow+IyO}!N)ĒG]gڄdBۧ%]Vk F(}Cb{V[SLT_T!B:^ AuƋۣ5(u4b3YH4?c%s?iB3gwp!0 ..+[̥3rjULun,\+a(]぀nw.>JYp{?t7ZaBC]#eRk7Œ8^qRթV hCM (XSfFWl#2ƒ¬{]zRSt֊^B#خTPP G 1drflrTJ|ѣ̮"ȸ[3\I]Gnt. `,NtPidkRf,lDcNN -q?Pcz5` aWG|( y?b6hOz"^?#"tZz7~IdKa3%!O1c'7Be>#Wܩ^3(#>nM0m)5Zqe(ii8Tfq 6sMgv.F LۅA})<6iQGX4!.QCL4s= -y9??љ1e3h'C  (V&Yi.#0cF0Q?INos!kt|SG!`ݒHGdmyIvteN[17J WNo8 C~H[ΠBZ>`gԖ2o[{7#SX[5v l3҈j0}Tϔ}\g7pu(/eU7@O2~X\;t|Vb(?WĜ5YN mLmyeQκsqի );Ϗ8eILvhZ5b xG#;L*e՝~Q dB!&]ŻJkDs,q 0JXRQߤӉ0H*XD-:DGf4YĄZ]FQw.;fϰe&F|`KV:R>^R!(m$wFJ2kP#;^v$OCU"[YL2fFȀhȜ`} υ#v {^.0-h:M>6{YRx?DU]RgUmR5 +TUpw4u-"iU9YHqu#E!\v2q'@`^U%G)Gk;dAiO~?N8.cbqf78? 2ɒ70J"}B_aɿ؏Ӆ\ g]|6˿e1uZ,v`~BWDQ3k*#+ާJY^vm!sfZ/LE_E(Н;~Ζ[XVqyFWJN/9/D!>?j0/Q˫-EqL)4GUo;?ng :=x>G?BK:W{e?̣`V}<_!ل=s*G?GԺɽei [Q׮tȐGC'-گnf0[물?&;i||~|d7jCnՎcZQo[ۻG37_|98{}ξc vU]ǑO9z`~EFY}S=]N՛ypc3O 7?]~eQW~'}<=^PX~V2Բ`onɽ>5Qf=g[-Z(*iW_-.94DjOѲ9--K:&DW 0Nv0+!.6*6J܄[{xZ:֢sj|uP)\U4[Aej:))=SGm!U*er4jykzUTq\^ͦu=b11a仦TQì5(?\WE$ .DފLPgf!-mHfzvͪ UK3pEWZݟbB쑋7jc}({lP?!msHz$Ps5mDhH5ːXO02Wq/-/ztKdcS×*l  3L܌\Dic۶F:_L]]橨TE>ǨW e ԾIq]RL˅,X+\? >XHnVXU1;"qRSj۬Y5ՕĚY.؋Qu!FlmTYYXKub5ǫԔ015ƽhxT溸PnH-A]u] Ĩ/"0Q5U0Fd q!j/eϯ 6-GV>!= 7URhj W~]mCS) LNuUɎ(%i]PrK3!|Wc MaV53qv 4Ȏx#F=֥aDw9ɂ-Mb~ݻTv{lv>)7YXjbi|RoE),u5Kى6S^bj]Fmݾ Cxx2Z{jԖ@>"Ь\0x?O4L7*}陡V~\jsV9]R*-.vRq׺\"gD0K "XA=!뷯^lp[@}ݖ¸Mrݕ5F߫b?]j_zRJWE#Oz 럚 DUd45kPCvSU#{P~"g?mam8gy'zޕjDX^蓸P|͑z25U> 7*-saWtV,Y.LFSkBu3nT'V-ב[=߅'JUgaUɜ0y:%\~? 3LsYT0üfx{A,JMo /lLe.Py0Y6 hU @i)͉ά>+$սE~Q2y`A0&ϖx?bN?8CCbPYF[t#ޱKu_#R,Z&־LVU=C f3TԺDn5t0KǣeHi-Μb=?F"$k#[c] E@q0(р$zJ5 7_??::7UzDC&/m6I,l`C߻KLd Gr% .kynwdxZX+X(e6 oNoxܡoĺ;k̎Aa4)vƘ$b^L#1wnycb2hu+9P{@[2mwcP&hPIW{^Uχ~*+^+ @21U08~X-(fӂ=M}$l|9?OT&`a6 @$ >a\Jzlq%b\\i ;xid,88bE`E”}coBcamvwIu`^M>|?rmMq&S?pex>w󏊑sW[M4Ga{˙%i2n|oc>he$EP#[3vi  TXR"a+OD-6=#?k7]xw~^U]6xŎh 8cEE yKXK^XeL%CRRkg,jV?{lm-GAm ek)ׇYT=}h%"d6BlD$\?’mywU6_XT[#?Ts#X0`uboi1pW[2TVR{ H?L?R䨌_TGT:'VQ_W˂nFifZ،-۠\?"?^*> m`I_%!u$?r^V*aM^7f@K+<kiaa=*}  3&B* *m>cQWQn.t4=[S:_m44'Um?F` xF  QӐU\ڼ(2yW18kdJ`en@_wjvwlM^ cV7rlYQ#iJ vU/ 8DʺM&d2ϱ%G.4PZnyrCfѳXH X:.or#Uiæh*Пh_r*(nlx#JQOXw5i Ծwkt߭0#q 2b@8p:|nfj2X_p>}Y=:o] ?g?}E.S#o_ ~5fQ v_+9 J+Egw 🙈KAze0>_nR|I7$g>?i7?BܜA!wF!bBB!f!A!bBBO ~ O3oѓeة*Tքlk~R~ zyߛe1۪ˬ9I̐"rBRggkU7Hɿ]-,,O$_;wٹIOyo]f4I-'3O72;}`dJN_p8{Ovwra쪟{Z_p-ʝ'm\?>[ssv ] pa;Y^_)WNX,B[es *gVmnoBטǫT4d/ T(EH㖿+MwUFksy7ݦ![{-ʽWf3 kzL(O%cx,T5kKfb$yfF}np׸ TX͏R6J|en)@ih-{u! 5n[4wS!1 mlF3\>l5:3X@ek-L1SP2TX}JJ3: `ލ(W膴'CK0Im|@9x&B,q:WizaO60* 7WpѠmlC^FrOż"4_qE,8Փnrsdڒ r,:xHn?}~Y͵X'KTӟ/dS &?_pڹ#mxes h R{xH/ "l@sM\;z4\aK0/;2RoD*_2?Q* ̜t}㋍:UדPv65{D.sq(#A!Q4aC&r!G0El@fu,ȡեA':]N'PK(.鸻4}`OG;-F:[l? amY$h2ܕg4|i#\oą5ݵz/5I08Sd?Ɩ!ESk 3Q%N{5CEl8q񏾮S:x?|5WA[|x*h )x\/JWh,4]o);]6 qW>.Yu=ɜjm̺=Eg& t.zg[ gGm9w:)! =?tC>v#2-dzX~W\VOu!h]GE1ISvj`+BۊIboAjy& 8 u?bBƫϠa?ȶ")%N8?R9?fkGkX?iMf!g5 w%F38tO$zJq  ~A6љ4Xf7]DUހ1![ab.ʸYP4AD Yc]BG_ Az87ZE_t>KTcH.JK^ O ua<˰rsBZ,}y'|3uIx]: [K.C)MՋK]⾡Kˢ3vTu.z#ӿUNAERl⸓٦+괛(e׫N #7|alEM 0g1%J4_6g]8q,v,WLsL~& f $nzĺr5j@1Q9\*myI*nN`7hq,*n)$Ttcva~?ZCGLWOX~lڅ*gvnoY1YU ӢgfWsπ4v8iߞX"hhOTB kRe!Xw#sqS?0zo1,*Ŷ"F$ W3F pp>// raPeTT^0(Gp+@F$n}ndn%f#30k$ ֟xZi%l,M8l GZahT ,[ʢ A+ǶThh(j!*>8+?K [ e>o^ċ)x=v_8]?%}1|}Cp~ {&2}zAQ6vy~Y+?>!א!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!ĉ, +BX'r\=!8Ž?A~#!)OuUcO<( !nCUz5X"Zâ?L!q1">jBܘg=:9__ibGicX&FWB!NXՓ>B `i;M6~?Oۣ^&yMh3zS D@^^NVuf^n65Y_|(KDrC@{5/_X]w?c=cmIZ^6s_%/{~.B4@I9DNsHy4fJ3iVnG#A&>ucS 8666B!Lڍw {KWL9~DOۏI;3lkd[C(b|Nn#:%]xXմy!Ї;5 ƞ#{iP8?/cu=KPϘؽN?r-N?>ac> ոʫ]3gG"x;~D1{`|`_:Ze/Xݍ~9'j?\uͰ#Cd?} |9?ǧM9ى"SlڍSn;vW]vayO%!\^DIʎ?ǻ=I %]?P䥕HΏHQe?1<~nB _L"Bٳ[?B\ Ǒ Hqt !nĭ?4>W I!. C!!A!bBB!f!A!G -!~n>.0BL:9cb?)_~Xq/~.OQcY۟)N\+~?6zc2u8^w,4;qsXv?_xͤpLCn 2  ?[r7ﮘ!~DO,Ż7sՓڳ W$ o^ql qn=bjQ?2]?ru.W_@k|>УDl!JqGurT;&}k>\u8AR몗A5pHt4f )V8.GL6v4\W"Wz6dgv^ *o^6+XseRmZ.QXGQ aW^-n>A \fuկ $F";7?/ V0؊`>m| ꦻIJ^lXKtRb}{mGf[Г.WTn]Xi~,h0z3 7ZWm jX=XhɡN0PAt"5Sq?`1\{́_MŶP@^>TR/M1jhF_@nW?Oc5q93y%$aEK m;0CH lr7ֺ\x"{VkYM¥[`"mR7GІn݌p|qD7)+W0}.-&7T ,'t G3_1.M夝zA8]f:B'h.3)Uc"Mk2_-`ms R-jA4z$>+d9t'HOC[Rdc_#87IBu k%0`>lIc'm#u߷"Ji?]+?Ѱ#SrfV: [~E[?lU=ikY[A;cm+,N/d ZhsOw*Sڇw-(=qTuFrn#^Z?p}\kE| |2zӃZɈZ֐I P\ke, C?+e/>ثnztXc㉕Tňd+a bв]#%m_ nsQ#&kԤ9(սcKԥL\m*Wd#80 ?l30(g#ÆB?>#=dUؒx2o' 7~|?}X_F@~qgKi?ش&4fnlkb1J<;?U|Mb8(F}mB9!Xya]#T s> (oܚ J =G gDǏyC1 |櫑K`%v/so nqQ Ͼ{#/͊~ŃY -/nѹq WWB\,CK#B1C! !3?B B1C! !3?~?ڿ0mN܈ɗ;q\y9? sWn8,GpGwTQv_k](&NWPFw?vPzS"< ~tf'Bq'>pGI}Ln3\Љaؼ~.{6?0/gWvX HӋY1 h+hwh{mJEpG+8h'3?'t:"VMh,iϮo[?[hU>csJo3"7MۊǿH[Uƻ_9? W1\?Vt.{gﴗ` Yͷ^oegupQ*|M3q5伤cپA{55=mx2IyUv.ʹ8Fn uZiV"Am'j:iYٝLl|ױ+iU8lmSۉN6'Yd~‘db/6*?Uj=oX)CQb? Mx~.^pa:XF [fRL"ZmӲRWoo1rѡd6!_7*R@W>T| \vh_pOVᙄRjG"ѩf`G͝ E7Ε#%xdh5 qEw2~K֯kP뾋)6f+_ >r׿^)^aڂܰU1nJ%Mӯ@1ɹ߿ дr:hagf +$iX@-M'J9$"rG ǐ Xm(ێnFWBr߫[<>siSG\I t]p-NtBZ@IGӁ0qV#Rq^v#Wd8Ɓ';H!d5 //QA"r\DQ؝10dkJk5&.DmceaC %طj`B~?J)E(:!.4/%5d$*l .8m? tV%& *ȗekb+DiJ0dV+jm52!C͍AHVxveH s~0rc|3;>0SԱTRGl%mE?,oisVn_3QxcfJ0)cY"y 8)&p@y?X|U9/uVи$8gd*ow/H5%e [ ͧn|hNlfzQ۵DG}ˍEks+YgmCE‰çVL9a@>poF=%y ڛc@ TLxab,QQn"$*"dt I2*|Q:ͮH@E!ӥEA, ~s4`jk]@: ‰}98\IסN?ϔl0L]{*!$&|oɺ?Y}e6:­; Jˀ̈́3F#^q*{@HFCm9/@pmvt@#]&m6BnQMx?^43+Ɔp<Ƈ??A?6VPUk{0Iwv/6EKȈ:F(;ͅoی*aoSA -L~%QR!nxUg lu_G9s? 40V7:j##/!|mWʛQ5Eg_{)#_n&-dRXqa-bqɌo?ԽIl*lQ7}(.dm+f#"*m%xAS~lWցgs$Cúo$DdZc\|{vÊ]pfy'gx, Ⱦc.]Gz(_ U0_춁GcJ#?$7qwꖖFz(4bY 5hKwtmh/Ae]:v^ `L8v[@AqБh7vl3` qa^~< yh&vW6OlWB^tz2{(1Wڢ% ^G'ɟ!1zcI4*X/D|}WP1 v *C,I񩚔Ͼe`%_3T4J8?|?_塮l\΀<Lz qG+Brc|/Gq}&7F1m&D?zQ?._QMcEDSQ)o!x/SB|/򏷹!?B B1C! !3?B B1C! !3?BpT6P={ W~xMp?ZSw-FE"WYW]q~WOS!5V4#l$8gW|Ƚ珶Sޥ(/ /s_vpWo 9O_`q_%B ߿*'&֫>BL}QIBxzҨvy:,(pI7+qrGYXC/\8bY.H_?l cx^q,!qпWp P|6=YWL[T#[r<wm7A&aT'sOVȺ]0bӞ&P@%ĕ?(6#+,k35Ah|WZpwsOωQȊksֿ۸BSjhqωd;"- H>Z?Ll70k4Nd~ݔFO!ݐeZ 5m煯ك͙LSۇꪡˡa8g (w? 3/j13.\=!P6EuyY‹Bbܮ4SQcbz*dGbm`倛uSЇ&Jϯ d7^rߔl" ;WY5`GK*}$m-Pxh,ɃTߗKfxߚ9KE7|34|q*u_pvPW!ra}H 4k%tHD.D 5V>y00r?WO2uvJh?\b?rOdT#C7v?6"<Ԥ(pc'0O|vh?/p}=p+5QjT1 ~?Ѓ0~?])Iam/*$s)+;?P_e`23ϨG;+nTNG(:7>/$sH2<ԱG7.%3lz:FD zAw%B g@pV+ p-o$pW}|.Q0?Xi,JlN$p+E.լxG~Ügʏsx+O?. 1WXy:jlcyOJz ?Wsﷃ'&dh^KTvDKB\kV[uy+Qyj()X)C 8-įp+Gq(A~DЯB"\צ}jq!߁C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !3?B B1C! !8_!8}s.V#oKBYe9GG i䬝óXi ^ub+&'%HxMKC*w\C kAB|/*J&uSD$g$!~9p4w Eșq mCBQI􏳞=Lǚ2Ɠ}׵;2!-)'}[K"%fq'3Otor4ğ([!@Oױ>s'[5 1PÊ}7Zʏ DO6͵KzJb^."UZckS[I TsXV|J/|>^|^טt@ t#dR?Cl2. ,UGτ -%- RaH;C CUTc46Ć }8lUe|ueYx4[U1x?2{(GR]%qC f)hƑ?(Ui-3> _XSתuF+v7ٞK<~M>BKZ9+f/VXh$+j` q#@+S{wAePV(@Qьտ^{ZP"h[~55nIL'E#\&*GH%Gl;PZzD5#yNmqg# X v!@ )Jf>S(7W xW35XC v+l.<'Xt"BY -}$efF)H"#SwӡVl[A=a0$ xXW{v^C*gPSEoK\pdH~ǏGӋa.u|m֖A{} !v,铳Ho>QwV#Z( &? [Ï p@qBtGz|չBe? 4}.OMI=B7 !#Y^hR8hd}?|~5\ s$}| UfܴBG T\T^[ao  {4 ĵ0kn.8/y;14 f, =Oyb1z>B>H2yO,.*-PI{{\)&mK@I%I$>/g,:w5f]:~qFsxdd&j.YD4K)4gd9.,X}e{)(/߉Yاy^B9]Ý9hu!ͭL/F;|Eq\@Q rwX~|5?Lo9(]!=I׭Yo?6HB܋K=g?򏢿A?tBW`ʹ: !fTAH!8GK}-!8BB!f!A!bBB!f!A!e#od> sx!~Z../=B^\n\p#%Q_XN vFA?u>=kEuiE\~?7\?p284~C'Eǀ|A R~ggg$}F ?#HәOq:ǭ $=~v7 + ?SSׅ?9 1cr66|2v_P܁cW1OrǮUOv-?3yN;a߂(>TC9QQ#@ 3|e9x pI?nP.펫WPsikv5Eyim>po38iouLu~4~IQ^tcB-RܡO_ƺRk{*ފ xGp;@39m=k>ioIpw&~G0;4l[m% xv ;2^tv8-[:'f(Фfz*p W ZT 7Ĺ9ގ'aBLYqWXruBt{[ëD6WTz)W-~; dCTeW4D7?@4R\i1|Sdţ6$&]/B:wWu#W4$`ӍQ\ as+e]"D%+Mt1MAomQvvuFuxWnG]$ћYNWf% PJ6f@hYWy[DBCх.NtpyվPGoREqcgnJ0iwY,o?~MC/IWNt4Eh)˷͗0GŒ{1{D3pcdݰTOW g o GĊ.iX̚ϛ&TLY}N6 fk Zh ΗRh--P6V:J@2l3hm6?CX٤Dy;Z#Aj{u[W;\G֗Wn#jV ݥ`:v&/5 x?pX)'lw}#J軸MM\PBZiƓ ۅWR3yRyωe?BY }?}ԼM[˺ G%*iO<έ+ZH* DB4'~:Nvi;^r ıf<_[Iie7 GVu_@ S]:()x`zv>ks%e6pdʌ >8[br÷՛Mle" 5n ng}9jgbyF\CH& , _ q1%G\nMdڬ + >6Џ||? +HAIV2cfV"\?ec&XO-ě]5x](>Ag?3u12.7V k(}K08( :}a^`X!ځc1f+ a_Ǡ۰apCKneMVZE#؛T<8@J{E?Vf] ^GIH S8)_ bz3B *!;nOs1p4^\HRŅ )eVb9-K\,-EHy.~^󪛍O-KufP3 48\}W6 ]orIS=l`$|~[[qRSu}A^'jNo(~/'~ZvkVE=/qؠFT+YA1ĥ:dKv W$?hoRi uwVH%A+:U)iC+fQtJ_(qdxd: ׉䇐&H"CAm'$ u"d 8=m|^oA/CaIv{q@xǮx@|.0,׉D7JHtu]SD|};\\&!G3}>B;@;!A!bBB!f!A!bBB!f!A!n c GpTV/MOTN/n`68s'B?ot'ߋCc8?J+~ҡ5?÷cP)UCkiucku,هs?6ͨ}=*7([EfM ~,BW{/B#?OzvB9.v?ZjRWz]`c-6ȏyb~qߔg1m8?>lFު_ 57^RCR Ń$r+KEdR+4֑7p[3K{uEf]!lvO4I߻Dfg={HA"n)a *AV>+ԓŽ_a8x[`c.S߶}|cLe=MiB\34k`&S8ȴGrQ)l yU%>ttQMC{C h V67B=@TK⪜R ([_l7Ai#4aJ=4 Q?`wb7@GΧPɭԿdAՇ<E=78{ cOgxhӭ(Bxvlg&8&ώ"hnl>:24S2S6ni`7q~o&,(%.HgUܠO.G\e}p{e`z΋mf G4L$id]YHҮPG2YH QB\.mJQ Xz*ah-$,L!qVK$f]63P$I>_vm+3 S[o?-^Y!>'=2x'?珐^[_8tA;Ef-KfioDq?.%,~MG'ca_n]?͘W8YU?x&>?ĵ\0 тGk1's`t̤tf!Z&l-I?zM70;Sظuœs q)>HٖjYڰfgC#0N [B[×S90ZnC6>LÚ!{ѝH59ߟ'_T2-k^#|( /##Kjä=NUWb3Puxhy4Du$0F`^7f4tn6{Jh*ܺ`Zq"Pu̐A-[IӳiRڷ2s@7ģH4[(' `01.I$ȻƂ}e@\3L FA.O\-\ )3tlc|&i.CzL1ه&'U_, <&A:JqIZEτ5%'G۳{ ʢA #EMVYm&ą8׮FF:.li#Q|BGvp0+)HZB9X4=ȇlrgyBȉ"n<|"/ŵF8zLBN!.)l{e*q >pC=lG+a߄ ~?n?@!{!x?/KqAB\}JF!>C@ϯ !A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f!A!bBB!f?DES endstream endobj 28 0 obj <>endobj 30 0 obj <> endobj 31 0 obj <> endobj 29 0 obj <>/Length 104266>>stream xݖ:ϬgrwN*Y!3ZF I2 !!!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1C2˔BX-d!AF/!cB_fs}E~Yz\ gܖGg\3gj, T{t_EW<[V́CDHBx0+^=O0yStW]/[@WLb'X5 /vkv,־"_H1p(K}FaY!Rp+ ޯȹ,Xs,9 uֵ*~o\76NMC.kD6r)gPp7w M{NIصuY9O\bp+.xE"ėW,ĆƂL 1cIfBUL|[;rY=ڜYÃeS!LߪcbLkgmQRk,W(Yτb]}NWn)Fo}.m[i% nXH_+hV|en+B|7ozƁ=WP~%zӑEM;|9+B,}Q{<6Փk);UzWoW^!_gio=dw[)+ Z+-W`;|ݽd+B|9\VWoNϹOWL3m!@X.{ukGG _Bl&+'q_ PBM=cZ ev[%J-|eي?A+VF2Z`TsJ{UkWWb29nW. #JoF ;|% o%ThoBR_AGh|Sx+V6W~)>%xVO뎱Te+BT(%ĞePs+ m@JD-VBfY]g͞YXc+!~l#|I4 ȱ=aMi.vI7[xBj&Y[8[+7X){ _C%#5&Rcp]_a5ʠGypYLmi,c|%d!wW"6F& f+Xf.S@qHA& 非B|+x7[8;II F+B!FWM!_iL! _B!C"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!Ƀ}e&/^_yw.WE!>__?Wy$LJB|=27?gϥLVhnB!N娯$^xTF`+!';|e/Y;0@*"_B{WA궂!(>gᨯ<@dwB_ḯ@ ,V|8!ι_9d_l˥Qge+G8Ww7ʖK"N!/q4+/a^ߤxlp!Ag'ۏ2se?s"]!na_a1Xf+q+}wbXׂn3E&F+M=('eBrW,XbA?#q];_1y+309-l{5B{a_YZ/_@ϸs0gTFa&S xKEPӛGn{W倯Ryc}) l +̀9>pOb? !>.dxfvXVV /kRx8R!ׅx0z 3#!~_av(k5u 2XL%%߮`?B7'1D܀\bx>,EqsvJzR@o#s>T]hPx y&e~j>nS6 {lcT?6B=Og&`d+W +|ܬpb4C"x;} %nnOևZJ豂=x`L|ޮ e,BG'{ cC +%_@c[I4&,s+vJQ"x|>_q +&c,-%s%7Q1R"3;1 =Aە(Ȣ}&s11ۼWVrg+9%!n̑zc)UYr dX&4*,PmW!nf_iU:+ӷ+E}SO2'O\YQVzTV!>V_q*OV~?78w:c򴊾jʂ7{.R!3+ .T܊~`)gJ!z5xSfo4SGko+$wNVf屯m= #x@ޙkފ+vŵ7}Iيl ;}%Gw`""W!n6eY{-|%5.I@!ȡf-Vdio_"ۇP} Ŏﶷy~ \`[ [7θ ~[H6yӃ)wlER@eՐuq1R_㔱WZ+i_<Ϟʷ/PT#_wʶVo0U6Wl#W'NoѳC?ȆNb!_mmSe3}9*_"W6`׾_pV_ m@޾c ^)dPWaRR?,Q8>Kmߔ^ȁ샦kޝ<F0㻢agmu:.5Xk\B\ i#z7ShW)ءf^ن^ؚcq۷CKl?Н7R`&^6Q!Ӵ+lepG$=/i"ߋo TwHPܬsa\vg!&rϖn=PpNM vkTl. gïNYYFS9 .Rl#|ENDqX.N_M% W?6# 5&aZڕj㕦:*2G5n7AsF Ȓ:)t!T8ɯ&\>afh[/[l½V@ h,sz%9]^txMftO2c럭+OdNmuWd;wa(JGÊJE*4D722lQ!CڀF|#H氟6BV9nSE 3@+ty{H| ]m+Rc+=_H+p0Bn+X-&zi/ :8v6u 0h&Vmce)oά=7 9[y \!ԝ $K{Q+dq@E p_\?ļ+1j+AmX+{Q4if^6Gh:1{Clfbrc2WOq4WinYB̙Mr[aaHsYgT E+I_1w?2$Xo-I<5lPI+]YJڄ#\ ,f_ٴѥѦ+}13;XXx7֕iM}%͍ʰ 6h'F$dtwKx_ot_q5rW (KmW 4Ә HfzYA!{MdPSe#D"2dqr )|b_I;z0W-56b;#|EzD͜PW!m'&=`VI&=_)kX2A|4 Mn73+mنN+Ǯeך #&tm.,-.n 2@ + ' 8W5Ѹv&;jQ+p6T~ټn}ׅr!C~6VHT] =D_9v R_ir&Y8ZϾUToeYVV [gO M+t qfS+ LWxy":bϵ@~IgVΚGt'頟c+wr/I4F 6 %7Se.eP$n>ۿ@&1+Ĥ WTNќ^(+ܨ5(ҕ]3LVH9odbil[cħx kf?W"D[D`'8s,s\q^ٝX&},}%_TUL* t͎+⋾J!I{-{0}zLΘIP^mF>И?p}%!;M&6P$yS e5N|5,z 蝦\/TA[p,E;ezՔFLw|g0ߓO_WPz-W]-a~r >$gBVayi(PڌX +H,3FEq?IB}wx\\]M qhq_foGXRl8e~čnf'`7;^S?SҴk:l@H" ReG_[T3_A8(k>dוdQa$Qf S%De1Qv"4̑d*E_y/# ~CʛJ~H-V_۞L㧵]Wa7}pFXR1J֎p6٩i^Η^x@|%&L|MP6!dz@5&M8 ٱN$M]Vfec=-0,YZYMOꅻ l˳->nl3$r}`jX1n+w÷a=z> cŐ$W 1!Ms|Ia {W$䑾߶|bC8W~sw>|~'Aٖquѽx:?ǭ})=sǮ[ t|E| w6xc+fCTRY ۟UWn \ ?!M_SZJr'!n}K+_:ذs3%e?&~7|J! |TMG&^>e)=ڰ9^ǖwzWpc_t?9~Hҫ|ʎÎ _ŝ}Fm\GDHTyl ;-+WS,C>{W?0O|{Dvc_>39BxlcZ76&}p6NNJfăֶ-}?ȳ}17bk<  t-|Էwn.Pmo9 z|2=o* j˺q5Y,)=W1h/]l1أW= ?1.Bᥑ/d5^M*S, V0 ؄꧰W=첓g-cI* &p-Ftv) l*q͢@Drj7 ;k|w<͵}i69ŵñKU~ѻȿUVŝ7 d.5x@YČRl X!S@,}t6Ϛ厷~fPS^BN*R ܨc+oXZ+XOuRToXGM{}\ XېO~ m+֯!2&H_qP?~_i'F0½ !i˯SL"$g ݡwA +iM"9WZ iC}{BE\{_1?"s^&3ކlWģ99~N@lX꠯D+8(6:46!?y2I@f7yAf _ +w8~ +mlYWU~4-wʌ SJc&]_J}%|vLzZ|uYrqoJ\;+ аH@hxFUWþeEWbٽ6GnNS_7,׏x#m9+d _bTA_JagL)n\x{lFs+NQ7tu&f'/5gC!I.x}*mkWĝ+`Wy=f-u1}mϫ HvX~>ɸبXUom&>նZ.2lc=1+ NrWR `U)P)Y+k<\_e<+T-g舻Â5;nD٭Q 9kI:S~¢;([f 2N[h!㛧,8S:*p wnI2Ep}uqVGe+.Z jn$ ;7 0PAB qG}% /VT -i7e+< ΄)|.%jQv1$Go 6W!6W2=(W-uȃAOE5;89\)]4?Wzg!|峾r*3A=\+%,Gl塠5 _ ?tRů|WpEn&?yIrwBWv+ˇܮ!JO~Sp?Bq}e(g5L BCB<BA!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!f镯!e+!ټB}1WleiFB|%KŹuW.cǛ{Pq&:cyۮXEt#O_!O.'!c<䜸=mC^cl;TE"iy"ڻ}es7 q_g=4R_T)WTo qC>Wޔ@")@o|%u@|bceB"VꎀưWvО|sW8xkڄ!:]Fͥ6B>.k}gT |va?R1{S^Y'# /d,B y]o3Pږm}e"5hӨ0=Kjqt)mzM&eBn߳.CP}pܭCu()$좍V>(7#:kK ؒ7E+a<ZGvRv kOD m0%ݰ11XF,89 9n_!+@2]z[ 4tW_y66͟5ss1/+BHWcVkdc%hs8B &.wv %joxJs77C,@c1}?I!n-A4K>5 W<+>x.y_7ǾT+ ?G}`fK[kW=6P)ݥػ3GqvޤXAs{߰/?'7&Oa+k̰a 7,[|&_M|e1Wa_EgȾ-UW|uحB2!F Uݮ|%]q:WWs^ 9vn <>grL+\1 ~J܁X(>3Ib UWVw9375´ޮb+E_Am~|t"h{ +Pf_G?QpdjjdbmDƝ߮@`+^-~2_i7,!FZXh.b;2_aƾ\cᾋҹ]y9] o*B-Xʝ_d^X~{|EP_,Y~C7Ȣ+v\D7J70 +91&u"Wf4Cй !=# Q~%rʹ;B+I`a4Trm:X"xF6 +}H_#6Yd܌Ԫ_ CLnWDSaqm+F/d7Yd`çbK?(J| bͿ+0s|h}z.]. c8Ch M3^?YUx +BY|Ila''/|YWQU-A>gnZ*vus=6( > +)s8"=_+00}]@h^+[aKg7A*0b 0Oٖ9Y&6n+H;3AOM ^}T$4&M$r=A$W f}L3P+Bā_<yܒŀ^$WZ$*4WA6R$ᣛKw/*Vכ&7Eav{?gTH1^_Mu /v߷o|e2<樢2,0Pbn-Eؚgsdžw5@"te~IҘ^T{sE؝'BeiZY+xꦻ0 +1EKq>򕕾4ߧy$ T Y9,L !melӾCQi WP+31{R'#_1|Wr~fSݗsh+x[Gd(|i!|<x2_[y];>B|+O>#? 2]+BRTvDq4B"InbiRB- W5j26&b Qc3by9 L~c޾JN6%մoKW[yO\J]^J"**w|6{Y*=z23vAn+ l&c6W״WJI;7ow"yE_ٸ(Foy~_+Ej:+IM꠫5SJ+JjJZg5r|Kֹ"mk6/8W:C_l&}W+h60蹱TJG{SӪXYg:ԗ YǸ`c}Wj+%_iKq}RBS+YtXNV6FlgiĢcrn&  Iat\m*g}tYsl+`%XqM+c{(h㌂e$Å9;փ Ӕ/ t.9 2po4C.@^ͣkn_4C26z~  F[Jc ־8ay xu/ӡ2?N)թd8)BScsZaQ2.TCzyTNvJ#o٭ȪO/QWrn6LDX&v2m8 |_so_k՞ 1W%t 9NCJM<gR"Wz ԯT9v'FĂ+"cx "Ւ5 ^ҩ" 4Tei:r168B. XOKA?6V+8SW[LSe$Q;R=X6W)[ }ަ"lWwŧ"jjвev@wWc;Zwc 7 ˍ>B-.j\rѷ3y kN~W>[ʮCdGk 6_+W}g򕛳{ǹirn_SjU(+qw,M =(:nPͺs)q|;|MT7WnXuavot;?[39oz:чS}Űv`_Zi֦YeO~1?+C"ټs7Μccp- WڳxĞyB*;f̥n'qTRݔ.y: L xppKuUm 6l?g⧺µ3 Js ]?fq+G;K`uo|?9wDij) ҲF WRAWC2{x(ӬH+02 ,ҬPJ*RJW|/c=O.YT5Pd kڌt6|S hgJ _z'r 74A.}xMIkԬ:0W_b10JٕܪR_K)]FwlCZmOE-|iLV_q\_ .:WؤnjYpX}L= |3M++S| 1M",(\t`β4l8+fFzWWX eKal Hg\e$T|%mLs\"Ntf<ڶ4#WX>0OZf>h+u_ 915_}uhH+W1>+&7jd_%`پU F`A`q5Mƒj8_O3_+jpXx8ޟ+ \QOqxE$,m +_%yӶ^Ye~G%+$iBv [l34t :; JfL gqWy _AReEWjK H}}0_yWxJl(QBe2ˠS6JOEfyM+=_q,ܝ+FW\NUo+yLRNe-*JO3' πb,5_&pBm.{|u%4*BO=:[d _iW2hfO3c._">Wf_, N䆾N⺱ޥ|71 ]+,Z'#0t+a}Dˆz6Ac߸+1+k@_]ytv_=BkDr+] hV9Qx?+^X+s) F_ywn_!*ZL<`+Uq~s8Wݥ^\{'n_d|Jr:+=ɂydLj7EW~8W2,N.zX+=&F3b[iw|ŧ ~ G>V]OٻpI,+N7@"ax4I}uVL(T\%?W*`iԤsJۉQeQ^VRWwoL|ebE* zɬ||ểHG"R{86p+R[m+wW.Y;2 3K>gyAGMB;&+|_Eq{2N𕘳WȢ"'WM+F{ -ܼm}+*E|@A 0.68A'dt G 55JҾ47:u$yb.tWYZK|WgEi2/޶ 22SYPJ\HiT8}%g'f%m ;J KSxƯbT^&Jq!pEb ?f7 06a.Np!Zgb+k{r1)^vW\+X:уFh3_;9].p Ylm ]E.J8Bl|喭EFOß~] #bgB\185hrFv-'ugvU+ػ7#z+ak,7HG!Z>++zD!O!#B|)!#!|E!H+B!F"_B3(iן6|Eo1=l{JZ7XjB/n_iWoph3vÛߠzCp=_\IV[Q/m"QY[q_a?$8v\!lί w$6񕶥YqoM5}+i *>3>*Yd}Svzo=8?+lg%ȵl+=li}O n}AKHvEs~'Fs8/= JRK>{ Ɗ[.dq$r_A>mޟ1A|g$ +C*6i4f,0`PY: bf@xfEb9}Cp%"+NeHOߥ HK#,&Md-;:#n5c8$5*ܪЍ.3xjL5-^pc#̘]7ʱ@+1r>맰I" vXb+`7 ΎJW~5QNS.'R ;}_?S2jhk˫#`-_֩s`mm4J. s%2C`U˖񽅲%jzK"$#͟W{ 5;wV#CFƄZ:a3n<*++=E)W=|E-`*fNH¦ە&W6{K{AH<`ܞ_qYG6}=PHh?!QWR _X`x DW򿟸Y NԃF0tߎ}|W:#׃ӳ.-} &ۑo` Sa0`X+fqxU0NX^ƹ )UWxaLPC "l}6N3&|mb$9"A}ۼfP6t(;WZt M ۘxA)A =ږTFHcޥYGV#1XREuQw}`3?+%趴ļ5W^zn:$r_b3bYx#+Dk v nWUC2[`o@c Ik]'dEL"kӕ^<ŲU_qsI*7CBT $frvR{}cbv:{ZZ+Q֒jdr\+X]"Z_!'tXvrܘ#"Nw4#]iX:&@0GI+麸tgY<.|>+@f[}QrL"_JQ\|h%t3T&pXndsğJdׇwʁ=I+,@-\ҥFT9^WTtԷJaYo4fW*nT҅+X>ľZm΋:x ʭ^:nA_BGm_!C!!RЇ -|qW ~%-4?^d/,Y_/2_WlҘ! #?H=WPs>|B¶Wԩ 4Bc6-h*{+q!?b}%Z{+|}3kنip M(<ȫ+ɴ4:;Kލz4XP5_p '3w",z|RՉTZd!Wm1_.p]y<!_L$[^,;.ru kZ8-%ux|ů?|\IBb >'PKm1HZ97`q r͵1g]l&ug~1n:3;sc1'q_q+1]^yr+KjV(i{M~u|J@MKUժ]Ռ ,;ہYE;se0侲ֻģqybu_Gu-[ќA+Ul ?37 E;54{V*/[ b'qspΜ+Ug3@X]e' +<@WÝB&Zɗ 9dګ47.$M ϠϐN@Ɖ_I 4H]? 3{Z=z0ocLn9hׅ,|+ B|{'kJZ-n]OlzAVuŖVR_YBIz^s:A2iźд_'WB +#fM1$e DOs/k*RM#TGɋK'?]gmBm7 de˕"7–dC ,vgWዄ) voyK[+7PLM0By.!?|E!H+B!F"_B1BWBD"b$!#!|E!H+B!F"_B1BWBD"b$!#!6yw̒?rb_1Ț>]vv@ҫܼ?!hRCR_?vL60˲><(SVngW2T#ŪB&hW5zշ=rvU߆{=%7]=.B)VzQ0++bys`ٴM npPQRc( u(Njb獇|e(w؜^ܼ.ݕ2q-jmQ?s)xȿ21y-wPcJ#MmGs rk>D}ex7lO$sa.' dM8'[,:+,,bs_1s٬,sRmbr79liϒtYv) C_PAg1.ۓ0"J_ldrq>+;>ʓUmŅyކ.ٹ!z9^KZZ]"^U,Qȫ67'_u(qَ֖e YVż^:(#CFcj?h [ф+tc=|'n ُ4 b%׻L {1/n}!?ķ`I&UvlMwlk SEꖉ%TWB+4_(^8P'V(465µSyr1l"cT"(M`hw.1S:ٖiF _ 9v~$ m BShmMX7\2l0 ^mvfb\j+hЬ)P(ޕf~/VīzS1ydeԛs31/[.>n1ĒlݗH{,϶0K /P葯ɑ^֖g!9`? *ZΚSxõ俪K*K.+R*$pS壍 Ѣ*JH{yV<|YU|Z7;f/9\[o@3s/y9gŦX*}%߬XCQԲ-4홸2gP0rE&Ԫmh+_%pI[~b&N4Vp #O;i|k}%x$5RW:Bߤ]1yjao-y1nۂ*W Qd!{+dS9j췅 ) 0``@ou 13_UYo>C:R1pt 7+Q[ۀ }+K(ԩMkbU/tFW5(AUWAY_)JWP><Ċ,!sd~;K䙾{29::qg1`JLw" OРܡN%ټ]w IW^mz+ %6 ̋M~ seO `%_q62TʾO,CX|W IzLҖ+U+8B|O.a_yz@Zju,ۿs&.qLϥ)jH.NaÆj(Ml#AQm ɽ;gweB@"0?p>hC"1O`㻶r[]_zJ7(3KSM]򳾒ΆCѕuOB<_<׷x~Wt""+B!F"_B1BWBD"b$!x 0tCSz)#:=D7IwCnz߼#'?#XUCi Y[2b}S~w)MzK++ዾ۱xdwC?g[ dZ_ttK+XUۻ8Cc[ :;}KM> 91q+Jw94 Rz/|c[[O+kl|%}ZV ;% TnY^(.()rv*Dd_PwT)G D/8+Vʱ ?NMVyپ?3#5bz{2xb=՞=BK_1 { +6vuZ-1+7g=;W.gW*z#R~ѡRXWb:-vVKf<*1PĸDHIx+#d^!p sk|ʼn3>@Qv";1BfY fh?xAQ7a> ̀"#d8; ː/J/Y+XMW2["D/`-KM ]+=e5Ւ<{']_鬰wW2+0Ybf PTǦt<\]SJ45^¦5T$46484,nN'gx$.mzB)$Y䵺+ibCK;bgВJ&x&0vRPer,l}t+Sv<զON&ľI}v:p=ck/NRuD7qyZl T}wKKY._ 2  L|s#)  xݎ)T`_i&{jtsBXϳiWL{|ŖJ|LjS|Ikw}} Wif~1N\V|cK|.”'WZ;5rA8| AH*3Yik@*Cl+VJ+qa&|%w欟d[|{R"@b}ڿɽ':UYOM)6cu|+龮 (|prtx+M=W|Wh5ϖ\+f , UF SnB|i>d_8b: Jž戯40H΢J}_,/򕮀/lֶ`rqVdt l n'zW ii:W{뀯U@leJEV }w‹ݾBu: Fqasۻʻu9zJ@Mr'6 M{@/}SID|JX|_8+;P|<7K%E,W\$/[ƻHw8&Wu):ҋʺ__):JmZ1w  ÙU-ӥzWbg s}j+SxS,%Gu" h9k4YI[TK˾ҙD|gdmڶmg\+ 3O \+ɵ}^.(+EW X[c=)J"Vg:8Os갯TJ5Nx[Fia6J\ , #<#/^Ub;;s-MИ8jB.p |>A${ctȚKh6 >ꉯشB_FXe493_q5Mǻ$Wzf zCV" Ӳ]mo$SJ+LCs6/A++Zv;8d a BFcϓM=ٗђO,[V:bR !p 2 t?/ g%p)K6Z7Q³İ|LY\BXA,K413+ֱ* lcJ{fvCLR"/'p#]EJTlNB&jWf |%nL $[Ԕ |E$x_V~S~ aGu"/A"R/]Qfws /rG?B| !#!|E!H+B!F"_B1BWBD" *'xoX^%!8fqa|?Z>8}Rm2x[Fvמ)zmdo)/)ƿW Rٻ-Wu#<{LKlK@#un!qǖP SKfX?ҝդd_BMRKuY|.^>U=>sϑzVUDz+.X_+c/֕*Ka5v-1"7`9z>=Ov?t%l˧u˶ 㞐{lyd|=U‡=g&Uy>=CU>83a^YVi>@&V4~ϻ#r8?]@ _ʬEHVWGGW>}ub*^WAfk6&}k宓[teb7teѕ67Ϙ%pݍotpM䊳t-SjG\» 1=;JHWBطCju S9tm4n&Y]11TV!!.V\;phzO-"|*pRh?oPMq1Eƍ#6oRINS^$qg{lcaS$ko$%;5dW#Ѱ#>}/!>xH}a'\qRS;vf;`M˶lfn.'0u_P_LN.kHyf6,p]{.@ʹ%cWjS;Kzjtnddsŕ+.RA)*7^cPW39̅ d̞E 7riAB촍` f`ȆҜMӨá)V-U7auCs܎Y 7dX%p+_ie"W4|yaI[/6$sEHyy \{Sr:B eU`mc0)Qk1RRȠ7gh#a=5ek (컡u#qk#b5p^UQA]OM#q.]q*IWŧ3&ZSnA*&#˺!;OTS2A%-7S&/L+g62FM}J?y-MvJiyO.Y2`.1V,u `-+-O0MJ׫u{%1)s%ے$` ϫҕз ;Z]wMhqg1p]ᕉS"ѕfu]AUnҕ^Jot0º™kOî\toM4A;B'Jd,@WB/ dݺ!5)q#2w{$".v7+Y+;0ϼ*Jְr%S״\uŗz?Bj-ou+u36ҕ ]s9 w'ttUL*+FLH=] ]כ2n v]I(a;+q}NҕaEGK8{.MBV}]e5}p٤ %qՕn8WSteuajVr?n)ug php Llӕmt1oFk]z;\uוJ3}c{꜡+ˉFҭ2`]^g>YSq)^utE_W +$(zB46kfv]֏JH\T](4څ-Df[!sҭu+@>B.S$>3 cQWM<)J΂4"3r(FJ #[\W-8tomSoҕT}dtBM'W;P"׏ʖb2cI {N2]""^OQO4H] ^_2ڡ+L/C"sp'0]cKWiHtū/4MN P] 38+췿]+X]+te-vp3]Ak q:ӕ׻)F ?G\l".O4L`mTjT-ӕ\(#u J]7!bpЫ/'R~@?~6pW?7]⦺<[l +>oԕ|5L2=]ѕq7iq>D)rD)lylqNb$h3QZ>N!Nߒi ACt$b\3UZ@ٜ\Ik9!3:gPĚ`KLUO֗ BISPSlY"|X=b $RaA5Qf]7z1Օz%v2kܡD1v|εo.PA{n![' 7B[ݸpJtJW>k6o^Mc6㷄{;_C%`КzEr\âwa~c&]y-3kܾȇ¦je_Udv{NM68z嗅>>zK&뻏N{*]U7V9;q'>_fbho+p&koGQg;w`w8pL`TWN8; lm z2TMT`vcʥmZG77ԌP8-HWs2ҫ`?>Gqf=]{K 8cTiGZzJwXk1/vGi #4iәC|xV$Fyp]Ɲ]dhf]\sG`\t ,3a`;rxL-E/h@WPWxW۾.z; -m{oӕV"znb:ݷP"{7I}CCh^(8 z5~vUm,]e sU#DF0qY<l@1y] wW\WY!"6E4l(`l+۶-Nq4s:jژJW v!;h*ݘg=\W%َOgҨ(+1:9U;.[_y`I,E[ɺw3mVE^tpq6f3>ɼ&«m-Z]ThЕ1rlDDJK1qLtww,T+8/Ш W-b!!9n,#eT\OI4ZKߎ9`9"1wvB\#eï.i7"j>wx[[NكʇHupid(,4HP+_^7 bCu]`FDC8(Ji{9v&gvo̼H_.7'|ߐnq$( ՕN,Jl17>%` S=:D8abˬct% *(8}0D8J;Y|y&B1 $OBGu&@Djx{&np<),")jGƳs&hLW&޴hcYW: 3x$Օ)}` Dtp4FYW(S*DJoTW(=USo0]dxơSyLBB}ql_7v] ~- . ]3#[X*E! DT![teӕavTW.+mֻ daL`jr1 Ή}+9y4ޢ+d[t%,]!'KWַLW^oFq71u:wب+uˊ,ݥhS]K3=ai+)=J'NWEo}ZQWdta^g^r 7cc8!L]136Yym 'u%)06XQp>pu#jtmRHS&辪BdgL+OUWf~]gЕhpb QוúTð>֕w:SIb\,;$0u%df;9谮9QWrv VmH6J?_&<Ĩf=KW:+ry ة{]]Y}"cv +(TWv KO h l?0>Mltefٌk1 _::&dMu%St% { 0J t%Oste%]aJy mtuHtGWHYWs5~:$p𴄫״ʛQW 5ع1RΞUX!+ţIUc'0}HWw#+s\&BP+ȱ!ZT9s+Mw J\Mۥ!ѕ^`_A4:ơ:xC~MT&>^-^ڻA&:d_O]2dm.[+mKue#phbJLBtH&+*F+ń`N3](K+qa y7=O~!fp$ ҃JM.C4Z"Ǣ]Q+ /(pgc8탉vsfl D+TEm}+v8b 2OĚptHG|̖,et9-. [W hz›up!YA8_Wr[Bn%@J6~dkH|c>*U䞣;G(#)٥ .ZKrȋcb]A-ޜ"GS^bp_o@"¤]bşjAF 7펯tp0Ra\+ol++mh"UtA9IږH[01ML`ïQJ}C'T=ho `8 EMlN;!m z ӿgAL04ޑ jw,`caA,0j:~q[MG~B鰮A\O# =esf0j[xdw3å G7tœν`f u$+k\0HI.3d2p-5:#:!GpIQW^Ke7"{Utl1R`0n.vmOQy9X v4;+d4ȕ;|88-^NM!mnA_r8~6t!+V&Dl˶v׃:;g+o2uAi!vSfJEnS³f>+)\!A̖SR?M;V1]H+!~H4`6{P Ԁ?߬x<͞+  @ۢ+O@x]m%B@v={ ֐,'F]yBP|tGtAHWA&]]SAxLWAC" tEA 0Aa$+ HHWA #!] ڂ !]ELA +6 tzEE*]2,]"]U8?AӕNA]HWA+DWD|E?+tw c+HݯQ3dcqBCa}#]q貞[VFG 5gvtp벷i,KWAz|TW^{]\goĖW9hMXᔮp}0÷~hʄGJ1 S>x/ꊹ4o³aF>:*]߷t%ay;\KcJ ~#(BW [w'|#t/Q>&]Ap̔]"#KWAN KYWKIW + p>x>{gf+ |w#]7FZz8 \D+ RW^[pF+l(A>wj_}+]s#7AwF+U¥jkRyŦE/Ņ;r @=ANOiCn}kM"w]k tabN`Gz'dP=4S*wfGXݽ^tt =R%V&}"]0h4 H{T{}Af\+3֋}A 0oH"%^Wd?K%]Ax>0׶OAc!]Ax<>+ACP(]Ax<>} S_AAa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" ķeOA8+> }.׼ P1]_/gڦg7 |Gten^C3soq6E"0tqsWwB˥p4 ]A8l&w<<+Aq8+J:ԕ-+{뒮 ƈͤ@ )fn,]A<|sJHre~m0A<]ҕJsA$]A NוC¶m33>^A וog?o=m?h=r,0t~SMKعw+QrCW8AF=TEG,?@]IoKg+ qT?,o>.w^bo˞ż F t%W>Ƣ9"Loki~s8?8KWAa1:2{!y+Q Z5k.^܀WA#8+[Gݏ,]i?H<'!XW pXWHtB_s#AVCƂ 0E?ߪ+o>s]Oe4 pPW Ots*~$~ |j qw>YuC\Io#A8+o{tiS]+xAa3BmUXJz"]A/XnN`xAa+v늹č#YSmxyswXAa8V +TJ6JZ0A2۷Xe+մEzK <{? >]qvIWV"{(yݜJ`V'$+ KW`.JU*m/uy+p&/˽Q6n" qB6WO 6sTֿQ U.C\c-F~~1ZWڃwY{y|WOo>XmU}ݵh F_Rash-V{*j$6Ͳ ;zyL ԓا/6{{:#?MW_M cz)oYwabw CDs//C+_G06q\s3j^VF ˉo:Avr [,\ߤ!Ng g7Z(66cv[5f76'$NҶ߬4TRzm`aa,&C~ .pJh\ %msHC4&6|T5W(_UmN& @Lq;N# &Ft\w Fx͡)3ֽiܵ,v5PV4"c;'4JLɦa^f P|$۴p.NGWb]+Zt6Oɹ+}aaZfjlmӾ(D|Gؙ 6!#lf80i:l +!@HΣZ![x.}EèX)ԏkOW4Mqbs8#=]iʽ0bun )5oVt(dtQ,y2dPYw8t6ﱱ_ŽlT(Gg)`0qDW8e3uScge˺]uH1Y$I>XBξ٧?"ZrdAWR~D{P;Pz #'Џ4K]bSfj8рY.ImN+S$ƬyϤ1T hYW:ӕ4ޑiAp:Rte}kK&4PL)Z{q &W&k g;ۭL mW ]p9y~u=ұVԕ7JZQkP嫚f.]!e c:2چhl]4, M\rJlݣ+t=UhdK+d҇J+Ml 'aReltS+JnڨB q<ՕfY鮰IMJOWRjf"ԕN zWJCW3,Yu@0ΖNutIL%/;+-Qb m Mty^L+s:Waju]YMd$]+$qӻ( 9-q!|]]+xԋX]% 喙z j]+ub7Su%jו#WWpJ&gUc%yeߨ+m>J"P֕ƋE9WWJLn&sNHCzWd,aak+(5w>J?#o\M X *`+qfLW\]DY+yJJu6;;1"wTWjETFJ2}_LӕfegjC$|?+ 8]+7 Y.]+ܯH'5fm닳1],SAWjsZq5]^lЕ:QOW~_WXY-VKWUb"Wp>GxSt<+ȓ֕mtcg?aJ ]**IMKJPxK葖ʝ_G]6Uz?j{7c4y6J`\`n1= blE uF,v*|]A1Nα294}ڂBUѕeC% k %L}aCNtb@T V\@Xu Q@ Mĭ}+B%U m˹֖dvbJ8+ CnXEkm5P`XzvCFӫ^w Ls2>TI 0);4 ?I`.sW!eg:>(i&|70\, \6A+)A;lC[E Q}0Ty (,ql-{4n H50f SO ŹhhZ7=ׂۯ  cUƣ㐮Lx/1ɎَK\B l=gewhc{/l:?] Œ}%7ģk|evZyi(bq>R(j0~Q=ath\ [s{[: tE؂[$wprn[d큞˝*+"ݧO> ?Fǟ Ȟ^<᱌a n aO;T 19T  }!]6&&ǧaFGQx7~DY"qfȾFsGtuG,L\GܫF@"q]͕S!T銰_ì |Aa$+ HHWA #!]AFB" tEA 0iЯ ½x]{] p|A:?rhN=2~[/OEAٽmw`q5x |XW(#twX>Jz%[ An'_l#{TNcBōI 颮3o mWys>_Yy'@="4ȓȾ+ ѕc~e+w<Ax:+԰t##'tesgLPr+t|@W,qQWGt+ R`\菛ǁۖK ]Dᘠãzt s$8otBW@ ܄Ev<&>5MD_w~4N Ac2?' YX`OBVUz$c;Uz%7; Tuth87aqw6h ntߡ#CYFIp8'|6Ah)ٟO)%7ȓ ΐAܪ$agD t% £&hZ,7pBƢ`gStEcth Ym>GuIW^[TteLE򊷾k;tD <+@A k~!-iIjkĝˬtEd]|7"A.`=3%`;iD ʮ0F¬:c +"'a?dE}J6ؖe1~rWW Gt.ERwS=ܡmޛL+z$bWl.ٙl 0u%~π]vmQ.IPK~k Uup9 C{%R+uNk |GuFò☮J@*m\]\3JGc꺒im֕D<+Yyθ%}{N-JHX]y;lB3daU jnHTu%Q] ; \GJW,`[Ҹ+ $ghxz9UWb]qj(N["Q]I-mMܶw19ⴏQ^)t9Uʖim P{u\|HW$,0`ra!m /J6 qpShW:BD+plxި+;0X]46@W~؎TWZQJ1M6J ad+p>+4:dH0m!z-ut%BYWI DlЕ~8A [_x JB'gJ޾1pHi`C7b:xtB5+0tAvWtW :НmDt:[W^+;s)1Baz/d+ASu%PrLWm-{v];-v-74n ő#ei.] ו +JA2HW&@HWAxȮ &BҕSƼrFҕCY/% ҕC.A(+/u _tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aa$+ HHWA #!]AFB" tEA 0Aga[3tEha+7CͨǗO"< %8kHYB ۏF/y&]x,y 3X^F!+']: rFm%R?6`CTp@8]12=>Fe[} ՕwSNЕ6$ ]Yڳ_R~\q=ʏϱOE]|F]AyЎ 5.J{AO6TGW^܇[G*N p^mN㎟ו+J"7'1XFm߅'㏯"aW Jrr֕Z^+cW>\Bf4npe|MxZN/vͽ~IWRL3J g$ Ͳ"nt>>;EqxAX.޷FJm8(=MW>"+Gr#]9ntKs+αviS4e(dmHқsn;v6pB\#;uI@9e|LrWuu'scn6β$pAˇ%uz}- uob[,*Qp¹mOʇuy03bwG"l xR@ -o&iE] z;5A6 Lnovx2 G9.J"s QZvG1'']/,xew#֐z5D4Z2ٍ~橣+Hv-.BIWJ]%qoȞtqXW]0j1ptji*xoGp3u< te#@ז]BV]}5*LW -ƮYR7ӕ(+/:QW(; = #'kH g 29wTWxiCw⺔6ӕt w&Dx yMn%lge"+v ^ l!П1Ju%Em'uاK=?>(te(myf]0*=F fw{u0g_-¸$Cg<wn<> +D늿1w!Ld3Vq|r78H-6)]A[@$mjR ҌfZ,Ru|ye+te P]9XJ%ٓbzJHԦ+7kmw(&]a'U=t.MlhIaA, 9ka16--?xm, JV(xZpնk P`-Nxٿ}4U+N`چD麀  ghϛh-16$5i=^zhX =7}@qL?hŐW++,>qCJ?;Nspe!G,ȿev^DeZފN>x^W\=2}H?0]qo~w5 cPίoZnH4{2r; z:*YI)/Y٭+XG}@(94 8Y $^=6ۤ)9[6 dxX.˛tlֿ|9.,nP`9[1[@s/XXxa#0_=lwpPWXGlLmR nRoǦ/t&I\e^1RvG:ݡP&0|ܫ@rXW'p@rufBf3pRP/*݉p]mp:^dRd8a|o=(w[Ur3ڀs3^Z.YٍﬤM8+CVEO<xqT]ZK5ggߏGQ, oOY9;9Oӕx8HWƐaa7'4~򹫕..7 ѕ$O;MOMO>Y>'>g0BW ]{G胠?pt2IW{t347oAd 0 ҕ]]#A 0Aa$+ HHWA #!]A ~9V"wwTډf?wHGߑ?zW/uP(*ѷpݗ|w~cwwitE1`{aV{U7 ^k1-=ueGn8M^?N߮+;OSoE}v}sa+StezD}zoO G+ǼMX`Ȟ:Xa럚YѼf.KssV׳12U6Nn8oF8Hz%taT_W賷oj+9OЕkœM.'n.~(0nwj;qGsƻ;[7èQCtRjbθx7/L\Qk8/7ܻdDz"mɊ 56Y{6.Y9z/1kI'Έ9 q*.In,kۘ;2 1t@6y ?*U9c.Vaîuk Oɧ{QqX@ǽ ,(+Jvlj آsfOys36\^0f~yXƯyXބz;`Ō#j(U+%5 /Zfd$ץ ܈Ww)*(=slkǀ}cLDJ!܏G }|ĕml[ӎ'SalK[eY O;C뎭PDW:im ]O+ $h4=oemҢv9&s=[]olgܠ(>tT2, wvJJgS@)$)r-C/njt)I&?/FIf|4% JM7jė[kP=josÙ:q擬J&n jEWc")bOF ީ1@-9N.A62H]qS,=]!ߪ+78p$~PWu f+F05`#(FJvY9Rդ/okCMWz &$KWp}IKX`[2ޣ9.O(B$8ucD1I]jm0` ᕢ@CGfNAVj_bfk*# `+vt( B /^u%!"!]y帮< QK$;^}:qPW,˺[7uer_ J۵Vyu帰\Wǧ¹7UDNЕdDbfSYKPM -Д S]!GWGmҕJ UWXv:jżYIfCt pI/ x +ˋUT*E` tkig䮝+/GVt,۳tJy :mCW5چJ=4X1QAʁ%œٮ+ȡf~;uu x*" Q59 u ,6WWX-E]b$ŭJHu hU.pgAntEֻөRl""GoS6J^Ϩ%+TK&0󗮼_."9`,7wmZRJ}&]rGuBjEV$9JWZMmJ5LWFHa罍h]I7q*!<'Jg=LD2%-1r+i=\Ɋ]Ԯ\W Du+Juw._X$u쐕^P+ט!b{{Ptk ͭBs. aIJk;GUh|"pS]w }dl"ت(+5T,WT>f2*Bt7Sxva}'\jZiQC"0^q' B 15 QDK2$)U&c F$سqO] zL=Ҿ#wb ي㈢>则M}&11m\Ww?;NEuօ[/&.( Lzųn`ooG $dflLnoemG#^2oJ&qO] YpDo@m3Uq&[K!YwʽҕmPv B2 -Yɡte Tt7cMZAC2+AŐ .W.N. te!ٷyA8ҕP~/o(RՐ tE AWA_HWA #!]AFB" uE.p/<\WDAٺʯMqAVv{pa.;#֕ Un6. /B.>g 6cו~?i= U+|/m}RW;#V}Sw(Y~uHeoJ /zNWPϔzg#f3 ># @|l?H2ז8*qvW{N )+;=ѩ9G剉or CBkP̠5W =۫sn,~$(ͽ>4nĜ]{Ows8+_ImhXW~нZHWf"tMI{g_Xfmjlgmq/?M~>tt%0<%ue' X!=oU+j{GVb3fs2űDW A7wZ[[񇔂kmZ˨+ ac&VVˋƚ3rb ~ݒlrIY}(g"N7Ln=,Q֓ A/djhӡ讬$4i2GNX9. S1#؀s8n[k^f  écyMQic lk@\\a\qgR#Lk] )Q_t5&62/+sn K Q]B|wn5wcz'%uԶ˺yq{u7vI:XgPz] Ԓ0H֎˲u=H)Ԏj2)N:r: ]AGAg/ b;t%Td+L*@iS,x]BgBwJuWJ*t+T՟l%==h)~ޛt5.Nsg*Ut{F;#s3xY2&ЗkI*+~ * _7?F*y@]ϼޤg&ޣ~vm-6jy# BNF$tF*VaflJ; MJte|DWHit+=,,]/7Е$H4v#E]y3EɌ^ŝ,F >ҕ\=Uѕow(Z``^+ҕ.yTWHwA,^B tmi:u m@-Gbf#<^Jw56+ȓ)Օ`+j%tRkX&P;Ti Y\vU0@W xaw82wJo.@B'E]\W`!iFGu%PRf+QS m@=z4F | > 2.] KҴre]+ɁS]/,ՕŁ`ߤDY)Tb4e;M}KDJdv V`Β4]aB9NWf>5/IBNyY& =qq}ScI/J1 u9] {gX]ɘ$e gȹ0'(/ueνFjxk;ۮCt#Ǔ3s*ADue6!68E=iju/:JO:3'ѨJFLWL+ZfqDWns!].V])1ˬ7 -B5 ;3m*,#Pv]AӕdM_ģT^d]@VhHUvu6' ټKCDFycN1ukT}]!TȫbOWt\;%Ü^ۡẅ́c "zPA!<ݧ[ᓺ"Y$+PpO|JWv<7jF%]&<(#c@]< yHW.B NxZ3>+"?N>UG4'C? ҕ_8utaHWtt_TAF߸ "AotEA 0Aa$+ HHWA ?-#jݐ@P9SOѦ÷Й_=qߋOH%)<%#_d~䗠=;YGcB򕺲ϕf׋qhѝ~Wڊ\r[HW.ӕl ʦu?Mw|*>e/8ߏ0_涔^W􍰯ӕM @W 7z)ΈmTW_S=.S_kbuO^ѕQ?NnwP8_<9+DQ+>4 FIH _l֕FI&#GW6}x3l-]Wxp,뺲s¶_ѕcq|{YW'K@In+CMK-æ%ݾ ‹iǼlzv#}t-:_ulPW6eӧOitrS=]9oJO`Uj=4n\E@rN&;og{Mf9˃?KIJ+Mi|>rՕNڎҕaKPmYʽ}lf+$%xIgF^FJk uJ>XWJ$-7E<{+Ms5Q]J-$~f;WqNz]x@Wp&D?+&4τD]) K;NW@ٕMe4=,{0x!}"]quXmYYt7JLЕ{@iyu]aJGW(֕-S/e?M]!:w!mhf BdDڈJXNEۤ+>i;?J3^g ]m~$τe]Ye%vWpE[ύx2v y(lNz] '8 >;V$\QW|UO ,](em_tU!]+H<»PWIt%綄\tefhTWPwdz@}6CELߠ+33&+t%%\A_3dҕZ4oOt"+ʺ NW !2`4' a]񁡴X.FR39x͌>i?{j6c-,؟ϳf Hq p3?BTX !`M3 :?h0vm^Q3rFl=mGRlKg?u{hBevpzCU!2D>wTpE‹v1[rt$,mlj+ 0Wx 6QW'>h_JO} vJeJv"=E}~a#i9xϞZ(%:47SH.B 42iīt5R`f:@K596hmo&f\g^]]3}vJQٗa Ot/789sqN t e85?WL*H0*u?9̣#ue~+z/OR܅7]HHKVOB tEhJnte'+c]XϯzOalten&+ҕ`;8Q}<l Ax.y)Š{C DL3=顂w`+qĹS_FYoN_r +q+ҷaЧYAw]pHWA #!]AFB" tEA 0A1_o^tE 1kmϜv, rKWJK؃.9=95ŮFq sC쯲ߤODE0lv<(|O\Q#]^Y8CuW4Qwuu>ϳ 6VWv\\rF`tsz>[q|˟l[\U;&|kԋ5xܚdO|]Eze$ކ77y.c/Օ=r3u\SOE>=o l\[YԛOempG7ҕ{#u4 (ݯ+gn7>3]'+ҕ[:q)^?hҩ m\Ĵ`xoG+ ܼ/إj]9m:GpجhTvC }ae7͜_ @FKx<7g[fq@ٷk NJp"gv54L2߬+m9kPYLNоcZd,,2B91om`D)t Ӓ} l7 ҈8by>YL0hּfmɼ`bzwYxlY琖׻JgIhځcaL>Έe8Byio!gX-hFf4has"&T20_J;)X&jH#f2ZK DG{£EՐZWd3Kb߷-2|M>wٛ~[æcq~]ԣRzK]-< 7C"YlkP0 Z LhmtnY8mg$ZrK+ oea´Rxz/X{J!21!z@ɇ8!&:IC,4/+~-م6&a5gFT Reg;&ԗl11 L$b&mǵ; i , Iۑh-Yp]R_lsrdFƂG81ZW`j{/<v\H>}]pIsK}zڶAa&+ LHWA 3!]AfB"W.i׾KWA}dꢑ#]6ZpOt%r #]y/a}3!΢+hw3#W ^œWUuٟd;ٱuk{ < 4?wXWQٺǠRlL7a޳K4Tgs/S6[Ml!]) m-Gެ+7kl-⿋’]ư*l#3s8O"~=K^曭AQX@oYR,fwz7X/r"a9vL+݉NXx!n&h3"tPV5/pФAv豍fo^7N84!ԒH-R/@`Ϋ-tLW3Y'5] v }²߇w LȉK膏H 0!>i>qyQ7h+7Z,<VW'eB)=cߙm_R8%=X ڎÖal*imo<.Ѣr)=c!bQ,mkfyTBv2KYk0_D0on'Fޘ^wm6ڶyPAWߢ+[^QCWux[ɧ%-p0K;d 8FXtRtxՈ `,Xl#qTDvc*sF/+'(>@;枮tә=Ӯa-;\V#؃s7/=3_r#DKA&Cl"gIaUWs4b+;)ZFH"LÜt%2K"(q& \?E]yE#ِtw:CW_'ZN>GRܵ/cpu8õb!itef˕#wSѕGpacJBכ}|Cu 'FQWBYy;_!Gt2=8.fFotF!=Ksj߃LZ4~b7Io 5+/Ecz'R`FV<Ћhu r曊Pjܩ+{o&nK;;ăt6!|/S>i^^a jGCa$u"=e4փ$V jrʳQ5#} nQ8PvMz=]3rI@4ӕ$a+VU<)m\fS$Rb<| 99xMQk`ڻF]лk؜L,V]A:TmƢ>aQGt%b8C۾G[uܯNMxPx$ȝ6O;ћ db^v,J )M+ uaI*!"< ӱHƱj#pcARE/|B+DGH0kc A&:>|<3dž ~U2TWܚM9rjM4gʥG=E笻 ;ԉ|V+$ǠeѲr@`]`dBht&psd9& ɟUzJl"©x4i3 ;AF݁ӫ)Kq񌌱 AL$k ih˄nv.A=Q*\w^3R\`;ɮy&'ͯ>(m4'A/tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄te?'qTW=ʯK]D1@,MK3&w:\zڜ pC+?mRrCہ-3m0مuԗ9 ^Lz'aƝ?z0ݴY`Fk֗-ЕVH~<^~IXA#f 'ĻXvF>g(j\ 9?7]xkͺ蛜 aLҕY>D]^nJ82g +B]iwn@AދU {R‡+vG$`t#=W1S͗y zkjs ,WE{b@G窱dnsH+K1lRkug$2j;z"ł 7IҶnˊw{IDǞ0cMat6;wq$ >AJm I A$ewĹ 0?>TqA^/7b'\K#XX4l An"B?8|#Y Ɋ  ҕFX9H0G!]9A*+}׋ ·Crъ Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWA 3!]AfB" ̄tEA 0Aa&+ LHWAa O,IY0ڵPK>57I7r &/Afry Np5}Y8Օ V<{{A^D+Ths+dõyv-b^1V7ay)v~zẲ7Wj|C8R>pB{~qnU^ݫpm=>^߽G95ȂqFUnzF%rj)dtB>r8+XO uvn4o+ݵ}.N'H`[[ּ,&>+6'۹Yşj-}O$F9G? pĵkc;6\^01ߔx=j;4;u n'q+@۬3 I,Oh?6 5~pyzo 74x^î͙ !^4SIԶ!MSTۮncg`4v fR%څx^CtY Jtgun"+Gte P54[LWq!;t Wxffџ qgӢ9'fOQWzyw ]isfTW,IZ9pYMuqR]:[Wl Еjd!Lu%@crMCDz U}?~\pu sN%b~X:ݑx<+fHȁ1{ Y`'kx])UL;OWol$Xtn!ji^κS, PԕPpVN0mf:c# {S]ٖv惜|+]b!gwJf9+o+PQU]Se gKuC!]_.uq'k> G%f IDAK9+!5te.ISx5úA]dȆ'zA9qc9K),ic%Ђe%+w-JxHUdZ3]t=(~w;V枺2K 5=]iL|qƪv +ճR>f|. M46q8Xbcz 3oFfu]n%cgڷ| yLNf5|5BeZWd{CzވuMJHŨ,Wht$ tMv?(,~8S]LWIooLfvk5JưlϜ,q:ɤ&~i/f^yt74@E՝Hx]nn g ;FRe>&\Lq e5X-x /.*`f#<iƒ?a;jn+JHWtEzHWχ  ]AfB" ̄tEA 0Aa&+ LHWA kMAx'N%[1Ҥ_</`Еy?'K(\[S[g߃{N+VL_LsV; 9ngὋKVuw4+=?7IzD Н`,>LWn{8 g\XnN ;Ǘ?+ZEW>0t'!G+G)]W74Ϲ`ANr9 nuEW>/rE`Gs|Lm3?`>c; |>m#3~nO^c "(f:QW&X :$x ?HW ۞Wnwfj=nGe׀Wv? Jsߥ+7;՜U\.["Xts_$Mr5Gʟqv,V흭7nhm0LXV 7fHngŋsyQwokvAWBVrJ^魬~R'%i ws* I` cHwA%+T0ͼ}]=Eksb33a =f8p eUss߁'Trj:. gퟴX^ȕP9;oJ]e1gL 8KW}-w$ Cg5䔗 B 2;֠}ЛkkMspn9+:e2~Xm`84i3 44T"!I,`6ZKBJxi]g)V+L|IZxTW(}hr3]6CW`u`+ې3FSP&CZj4yƛث+ˌӕ@#+;B9sJ^OQMW|ϤpvJh۾:[1I銗=Jӂ. m{1AWHEPIQW.uր tt'G*<^]"}&MCtXXxOQa]$]_փOYWZa9+ݡicF!~YF5MW:Ez%~8Vg,]_7Vr ܾĩnЕ2!I{uv2+z V#'kTxaPXPsMX81]i|PWBuۡ<>JO>+1ҕ郞ek1E4 %-NB+~Z~,hWWRO4Fh ɩhOfV޸kr@dgQ'JɁ=,+13QWhJmMH~l,j{h([@>nZ|IyzԕPau%]1%USD6z5_<ؐr#"L|AXGtn9KMg]W~M1g0lLו\Z s9וl<h7B1! D$vHWl:TXޠTgB< |F53g ~ث+&]+M^R]I)s\u%a] ߰ &+yٜ+ ~R]IFc0EW J_d< :MD3R%{teېX|grީUsُB tU$eZv$FmRF؏uv7C `ss+f]QWLR݉yiY4A6DWbc߶p¥< *-er!]W 8;3 5J^dTOXAVJ2F Oc(&BLʸSZ?3vgO1Y7q2)RgY]2y,P_R6q 3x,D VwqC92?{XVW40P{^3V/a]t.\úrDG֭0+H?s1X(75?$87-JWޞ  AmM֕r ^D}3>DWBV\tE-ޛg8+St|+]AmxS+-St%B8IxA8_/T]a2OX>#0ے S{*Ct%;b|HXW p&]yt73.uޏv/  3!]AfB" ̄tEA 0Aa&+ o`W¹Ftƒ$_\.7}ou\C*Σ~qwOXU_ |ztB#*uE59g/K&_lIJ;&W8/ӕ;o4/㮟RVIOx|B7~xL2P^weOvwn9?SW;;^# L[Ϛ'ĩOg&<OHٟۛ!,?+3'0te8@M]伇ESlgHp}ʝYE6aW E*blkj<9uLݝ;R4qrߢ+*rXXnvXczѕS3T te%ns{qˍߗʝrf) Stexv}&rc[5  Q+@$KM. |d6>8}¦Ȝݏr'ɞH6v?^| dۂghמ~U;g\qzR*VWbǟ4p;cIb csdjrrF9H] e/xP~tctK瑭z!l* ҬYQbjVbm_ˋGEy'yqw)|EnB ;J\q~.w~ l,Ge˶Q,74Mmb<3sN ī m0/ՃJ(p. JKd`)8|̰R*|RNB8ٞ7-;{9yrL BX*z_&Qʂ MòtZD3I:q$dڦ"X,AFQWF 5rcx, zK4bh%(_f6Ct@mm'qE)z.-HeFτV|sO)|kd 8HzE*Z WuŮwHz4 tYl O8-If*q&; C Nɧ48'ਮ0f| VlJl_W )8 k<\ւ,Leة1ɝ$]'Ğ5){B?|G~mduz29`F≮[ZTWb+:ɇi g /qv7]N~ >W1F ,4&}]S7-r.]3=* ڣ~ـf˼SWVniGǥFzt_k+CFAu$+pLdXŽ~!a+"ܧ+DexW'Z%T|fJ8[^7aQxC/aGWCvtJDC] xc _xw֕.7Fɧ< a R]Vd]y5?MW$'3t0LJ8{Y#=i'yS ֕5˴*73RG\q] c2BvwRIBjo -Sĕxej) 6I຅{0>+l5,$ӕ!GJ_ӕOItWXbRZM$nǽz8%߹xTrʚiQӕLXz9+]''0ϩ,iG&+=+: *NZՄZUWzvSNɲteqѕ]A<&[2@AWRu38JNrttSS)c ^r+ uנ&u:}(2,N0b1+uPWhRIp"ٍKWRѦC<XWpqޡ+Tu) T &1*mbYWH+\X /N,$HXPv;+$FD'껄^b'cJBW5 rd3޺3d]a߼FTb:t%% 7XVu%uQKbjTWiaЇuiYӕ=`]XavufStk#g>$e]Q] B׀/`툮8]!iW*,t%g?]4m/%I  E-cݥMϮy;uF~XW51i &^9?]8G,qxIWл zㄿ_)Θ?+tm;hڵ<3nUW231 v4tcT֕ M$ p^d#6BksE10~aާ=z<ܘd)J{>Zl ڵF)@LQm ?-8ՕqIO,RMuI L]1Sd8)CW&] 5Q po~"Ƃ f/]"'#LW &WOxQ}#:)Fk'9 g /i7.}ٶ<rH|ye ~|^՚`bzmD&i(yzθ=>V0q@Wba;Fs,,m26K/(W3aJl$.SX^֙2"KN?OmguҕtQ#^T~jE|׶n.愁㢕5L,2C9c{; zNyU/U@=o%lm_\'h0!_ 9Urꊭ]D [+jRҭeX]I>>0; @hn *+35DA%ys+퟈#;ۣ0JwI肉B6+<1WVJ;Y7T/<{M&@3hWܬb' OZ>NtgOx]~68r"B5a̍\AZY6@>4~FhbƲ U ҋ/+;ɟ-^A٢A7ސk?:ȗvkDsk6ozivuS-Cg߂HF(ӅeD~HBCc2;:+דGD^R|Ei~+7q$W$/) _Q_>O( 7ѕ OIv}D+=` }<>}F?)\ʽ}@3 ӅK!]) |.+wt/*h +E A@" ̄tEA 0Aa&+ LHWA 3!]A؁ydd+0]3؟S^[`W37OՕ Fo":5;gw_'ume.57 gʙu~aL;13pf%6V7o.I3I>RWNēiOTjt!r땯֕ +A#[cTrR`\C17NGsi9#P+,DWk.w`6m/Ϊh#zV5/xC:ߣ{hIӕ'>rhqp_ WjG}xC^^qT\aSS*ʭs*}E&Ϲp٣~=tehUݣAr\+-te({]1gJV)s*e&TGt=_g]H ӕ;?5(|1=v#e+=xB5=N[^e;CVvฝAmX~Еw>rKW^vb&=3WbvUJ|;>0HoPL$}Zd /sϺDžC`=PԠ7^omwУv>6BP)'yxF[WWn>cjl<0fX[a/*O"O+N:}fXtfiE+\Gkj%ff7X,b6 |'<>GQ?N(g#"8וwp vbHWxQ2cJf9bx7 []wS˪ tP65N!ѕ-ߠ[kNl}B~t6 dQ!+Wh=IF@k۫+|ḇ}]9:}bN`vI6RYXB†<#/g'? N:*P+,xEW?CWtdw*D[򔴠wNh3]AFR88!w+I}vÆcbN<{ a kԪp6,! `l8w G]Z&L u QQ`P9y1=ڢ=šzzh܃.m3 hA.ڧ%.&}r C[JV}'>M2΢2eD͌16ZPs#ňp]oO87`lSx6!ДK *t/`B:N@4v/^t鹗96LNtx Xݰ(X!BO I=94ge~PW8;.[T!3(3<52$Y0me/, t=Agy\㶌K‰Dh;1i:$ ^!6B؋G,]ayPP~1y0[˓B;q!&ySZ[GtC4]I!z&"DOx,ag1.]Z.yfq#2u&+B ѳ$ۄjKy,HWpҀl8MWz&IbBڇYYTRSФ/@+IV= JB)VlNbl1r081]Ŏ.%"(^}=١Ln]СLB{ 3CjTWzx35bSu%r !?05Տ$2^ :J!:Hd\_5]1ݜn+d9YMFcI6PMWGߡ+-;$$r+(2AYNՕ$R+pxv6C;1Chӌ-;2W 9KK oL5mQ45 ^PAՕxzhݨ\; S|lN-NğH!mЕ_Ncܘxa9g 5D d@B aAt^kG9r ]ݕǧcS |2X}Wq]GxIyN̅wbsm3(MÐ' =bL4r|-H `%vʤG E?D݂TZ{|vs m-:jc;$+(4e B­@cr}9] ?Z~hm}lܺj~n#Aa8+1>;ƫ0t"Z "X,ָؚ7WHJ(LCpoo+y A" ̄tEA 0Aa&+ LHWA 3!]AfB" D]q oJ(f銾C}_ |"&E} A[+u= D} A>p^_a?'>w_I8_0Sd$_tAӕeߟOŗ)*;ᐮ<+_@_pp*Gn#by>Z3HZg{p/[΃T\2zbҏěC#q?/ ~]qP\4Bu* 5$lx }na C/ۓq׌n!-}bDg,Zǝ2Lawot_á"QTPj֦;9&P1@<룿PpR0ҕiEfaxz Q.YrŃT'Ȳ?y @Uf;Hz \,h]1ϋϼ)w`x-m  O=]Y WaF D`w|M |lOE]rqCQA[@ ;60'׬"Ss=yK #a ƾ:ӣ] nc&XAL֕4ŇDG!?q }3y;ot0S`E ߔ]^C]yN+lT?ۛBb6B"qTWV^#E.> j kc!ՕJƸd. zR8o\ѕ$ ?]]IWH +^DUWC<0.< Zá!PFM /?]t&Dꇁ]?zIVJVa N^1狺u. = IW…^t s]1Sҕו9 qydLW6ܣ+pς'hz n]酁Bl2?b aλ*6V)9#u] WHu%:+A]!1أ+0P]I6яI"'|]yMNˆDW u"3 S|_W̸dn}ĞWuy.  vF+p%|j{DcBA$7zJu奁#Օ2f)]!uZKW-8z%+ALFt%'utᄺGߩ+^b nQIڊKWJ+ʲ&U, ]V _tei9 A u~qan78efJD]늉g4C, nxN]% B O/ ueyݯ+%+tO}AWp̯y=a J>ո \0t"S`$CWDZA‰fd@ؕmYVGDW2#J{ȸ"]8+?j7[E(؊y7w 2Pl7[",-Mӭ+U0 t8A IH 6^tYlMEk7*ያ,ҫ}{b]qZfk1:T,D@W`;{P"1CW֌M9ɹmGty0>J!]K|,.[s0IW+@ 83a_ P]i]b>bx#hP=܍bLkdxUy)B1]i<>+ \Gq%/ŸrE.DTs-n gA Wd%y#k>  ]كx *p+;p}ݴ!]AfB" ̄tEA 0Aa&+ LHWAp>>+TU}~딟␮__{1οp ËuߦeWn{o0\?Gv׷A3IS&b~=WOr+u%UGl+n3u&^{amWYxSN{4^ћ8jmμp{\ÞS,=jᳯW}1y$'Ue;q9@u}-'|߾8h~|ZXoxQ غ[\ w`-+&~՚=6H|%`>'ѕȭsv}o^}mfSRgNmJ9\}mIW/MsQOrsi2 =8³KVWVplܳStL&|O|ϥ tb} 5?zEX+ O_?&n-, Z Z6buiAa=:O:`nOAmߓxC$tn: ^70vH2ӈםQ+@!G[%ac;ga>J?L.\}[5ؓ|\ᘿn ~s#t+: t/Gl-g &hy.?@I?l|aj3Y]!kxPTJY76a>7Qm8?? %;RioA#6{]IEcW0H_s܌܏\dJ>Fh6_&֤?޺)B١ ou%@!`!TqzdC2]L9o¤QVA#-=@;l{b[ 0?jX(};;`'O3?\|LW8,w.& ="lm&U늗pbq;A[Ӛf>ޖai7)k@9pӭà-aW6@Sa` *u.~|4l YK8'2=A9c~3CB~ ](㰺,ք Ć"̐$ WW,+dቒxʳaY+|!9#Q@_>PʲJZe\]+^0-IIH|0X_V&$%vvT cXX#XŦBQG>3AWҐL8Nm(\X"?  |G)DtKb񪮄r['- ZҒ,IJM?(qsuMgf uE+4wq6b?}]zEflGnGpDo+Vim,sq1"T3]"DkJ3.ʦ 2Z/8w⥪ҝ##^'+i]$f 5c{s<TMـ@6Pm;]FD1!]1Rd%:t7@#9^W}+oe4a qX~2/H*16>Pi8Ι5YCD3]iZ6#ݺ;Td";a =;9N¦eJU䛕t3O/4(+Aʀx2p 'hnw }B13QͰSa[ZT٬$ID,\+PHiM<%CG-n+8q>ȋ?f A5dhHԻ \PH0Ne]J#35#‡2] ~\_4,hq WFpbu-0&f0qxƈPbGn"k`K尪\+if) #\W N=_q`z6dD3HA,˖~HB)E}s+t`9VD!ͦ5IΠyn~id=P2 Zc?” JntF3p sYg%l,ca]spAkSF@P<]I3iSk!ڳ/G͝% Fo!cc{- _ATrh}obzP,72S2\+Lyg̈́uU]5>Ә<7-5$ tN=}4v=9ߚDc1:>[Cq3.AOXTb}]̹LhGc!]yC{rg|RR62|rۈ|.+tEb}VMmJ}m@>ҕk/ >q+>a~HW.E Lѕ wNz;uXQNdEQ v [WnQ CH iwdu9a&ZWlI;P'j]?ݺ" \ 0Aa&+ LHWA 3!]AfB"pgT" R2{^,ǿ ^QWY[l 𗾽hFjaZ}B/|ҿ(y0a!gFo(̉^ʫ^'Xj}~r(kt9$ٮL]׻5]3ߚc08g}!'F~s9%w|R3\ szuvL9oNrСG'^yI*W]>؅;Nu&훅K62B*kyyCyA-b!F'M}]phz*K\uUx]q]벽}wJ5ute|U 3VcN=+8[W .{5&Jmkwl~U|zUe.]9 km!aTާ+p,}>OyIWNroA2x]9k@s]2N+VrKu59}Y68wĚ:;"ďU4µRM<^ k,]u/s Ig|rWvNW *`mLz0滄>+>4ϊb= I'u:k~ !g,qlyاvk zA`5QldV{i],-HM^iM"ētMr]!RlG']ke7 wȠ4`.\[ba.+bl :ay{76c\:e<-q؜NYqH`=ʑְiv dH5ָVvJ )J?qؾf#8+Y tim6 HMn l'}K 3" 8ęT~ FJ(G-$LMm '!'D%ǀ^43 1ixL@ \^W&8gMd$ r۸nMPޕ^LC'`oet%\j1fuPd_8:\Q`Bb8JJ\W** Fhhl| #RGUUMf%2_W[WW`^x\򶱍öo t0sꊍ g!ҕ6Hn>ӜY|^6C痎H3ŶoWkl ㎩Q]& sp]AUm~',Fm Z@jg$EPLWԻP Oĩ)fVb qv"4p<e PneGteaȬo. 7f%D9T&zI@$.vʳ 094AlS3*'ED 9!LUp(Hc5 T0lDO!8ueMN]9=24:uegsi;ypdX8+bg=. ɄYxª^B;t Q-l˳+UF >-f;Nln4LMՕ8fAW8b`eX$kS`&`BAɘ8}@j'_WVY"1YÒ+]J&~BJ +ٲ[GD9+a@W C , j` D]3+aEktea]BS+pZ]qHd :tLW~FGu8Q|Q e]yFD]]9&+t9:|@W6 ;mCqh'|JC//qp]azOꀮ<#}=.f.[Chn.TCQYu>:J#A]쁇J2栘4ح+'J]PHEW„TW2%!.Lҕ&Ufϴ9\L-a!3KW*b dR\}U82C؅:N]+!a03.yTP|D Νq]Y:vJoMЕlzexJ2+pnO&x+Jk^B}ʣ3VI`8L]oKSW\yut] tPW2'ɾ6LGW!6h2u}jh<+5jU}QW`2U] ONLW~,h%~ꔉPBrJ#] evc@=_WHta&MWVpP(WJF YW:u>KW`Z>\PtpKr?]K :Gureyd]a9 },ZNΆ̙+Jr"IB]iV'SEZq:t%M8$ 3NSW2} +tS]A>+-YT3I}$MVPGteLXhF;~Ԅ]Кf_plU|xKGW\]Iة3A}LWI|]E}t(dݩ+ĘO[7; 8:+Pu]MF'u#K] I',,RWWlBLWe@[+~.@+|Yufd5Y銷SIdRHB@DFu%nƖnZ#QD]y-QOW?BH’WK\@T\Y+ƣ@b/ YN}m6yw;#$:վ !Mx&> T*_đK1W)|C``ևPᆊBGh8D}غԊVU+!#t1h6MK(+ #Z kPO%!k]w;T 9cG?.&|3;Bntz&Id<ýPVYcXpj)Yp& =a]F!%b83-;ukES2c,Vf TDcbJ4SV?V_},Nŝa{+l>I+|c,lD0WNXW%`{u^AyK;Pg[|RJaՑ*Ah[- De BR@|][UWb_^BMȁV=j|VG H؈ّN^5Ύq6IClv&۩rg0Y_g5G; L$ţ Hhq\n 3ʆ9gPx/!p 49x׆PD, 5yNו(})ya:ʲ^uL|j$+_OB FF]'#n끑塯 ;bӾӷ~;LLY!S}}X]@{Sic_s;_([7-Dš'Pf-ݛvߋ|\_DWs5zKW&_kp@LWtx}ם zMv֕iltvg?'gte;ŗUqoP"wN]D-8O|mOIm&7_YSÍ~ͫ9x_Oeնߛ?K9dѨMbʎh~x%y4Hlt]o屮"mXMUsۺmQ˥ B+>5k_Z/cg224!"\M58']va-Ϊb)mANMJm#w5NJmcK ;]QWtu2iy y%i=b?m C1"&?oW60WJ+C^ &'|z9+JVTWT2_\q3azWY:NuoL 30ǛND0T&+)?8Ш1> d;y5FI ш-gsh ^4_\\IbdY ʒOTT1]zE`?N+e^(cmdWc3ްq&MMXڒbE#~8]]ӟ/BKtAhlj ~MfŎ8gv_Z2]Z΄1S^G.\c6ц3KGm]ety?) TgއjWV䏙21Y4?/ҫ W17^W#E_<{e;382@dc1on`MH'>Oja]k3j$1؟ȚDvg,6[Q W~?C6/[l6\В_.2U=7PQQ_ܼݦ 5"yddO^F(W|"rðx + m2mD9Q: n'>9O;rŠm'<Tz+qLҝ.=}n3ʼW塼M[bE2Mɻ3^&7nwR넏#UML~Tݕg[Nr_r|ELߩ8SzE0u5-&z•7: Fe+"q,^+ oWffZ4H&UrWLf^k_KFnb{`/Y^b[*R9l㳭+R }W hh9H_A6\3׼ht[ڴxLa9s^6iͼ,B<蕥{8^};TyTulUJJ}T'OLTy%9^i2PW͵]5jR %[Ev˜a9畮#^ľ;+3LZoRG;dmK 8+kW[Cb&B,[7RN}[ípnRU4՗M6^S1ͻn (.L3y-ƙs(+Q/!{XAF,^)ګfMQՓ^[?1:~V]f5v+jgi6mѴ$^J={wEa:/,= ٸLW28A)h"}23fo+l&[[E0ʝnߎC$W:ñˤ:LaB<us[VjHE^ڕ[9rV#[M$rV[D;F粥͔RU䤄'RQ71: .8e^%WA^i]%Qj.t2i*X6m݁NY33)LTX;HAgk+Sb鶑~шnLbNZ;Mg_v3}WAzh4[|~m)KE)i|9\Q{vLeWLR>+X,v#J+u`-ZͶ3KէU]t IrӚX қ*ܺeKoA\}{ yK)J+r_競d)"jk`bHU Mf:;8/.y<+/mz廇\vusXwpH ++"+oEWv ]O V\7މ_ _:շ/KN:XpX]@^؋U|Q"/޳w-V^9m5|Q")KؗgX]Yf|x;- !cx%\!M^啥?:w#/ | x*+P ^J TW|=B%r+_|oONzş,s+\뾒ϫx-x '<V?w$>s@5|+Rqx+^WW>`P"%6+M9UOL[hE[}ֿzlb.MU3o4u1]qY~mԟ+٫rX۽#X՛ _y_Erwu TU=8y;2;ySїN6w+$L +3V^q j ɰKM6n/_֦NovFлпIZ,+)^>T}D^ ^ab y3Wز6[X zŦx9oW S\~F/FM}< 3A:d*?_ cyW~^ "#tWch"8SlZfTsE{E?18i,yWbx4911x<_Iz~Ǣ>~ęjfW yeUV<+#*gz%i*|E8kn,# 1 duI;H\@ʨ`6}@uUv_YY*ja6+NԂ}eW{%XE?ݯ'eoMnzR&Y(߉v'>}]Twyp+q\WVk"i {3|sP jVJ56/[u+ ۆW|E^q xUР{ 5kv(|28Q@NJݑ DpS5%A]}ʓQhh_xh8[$3\7AꕶV}ǧk^eQ`{ŻaԚy b5־(Z>k޶,'xTԤ[C&@tm=# *9t3A(+g#xW܇7?3ҥ/ xW/rs#l|_rv g+]<+˷ SyW0<" TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW^Y'W֟0 tz@ ^JN{e ^KC,?+v+d9:9WVֽV@WCm6忍[s<jr+Gs+[s{=岷x/+bkx9U^Zy݅W6ߓ®xRGs+N+M:zg\v ]y0uC*|߳ykA^HКݽ-;v̎I|S?Jcs* }e}ͱpW+.}l.ג>SJz߱k恺z?d>R5_MM߱ߺHUo\=7;چeĿ ZCuS{#2.=v-K9MA%6:{ig. Z6Ug"JKviqhF6)#u-XSV޽e*ǂ1]221gsNLs館anW|2_Q?8 8IJ;kQzŌ)W7+/F~ԗ'&][wp+]Kr|:-vc6Mt5DFQ'o:tꓻtΘMb^uOxߏmwcoѷݕRz2;{n0\[C6Uf_J(zLmRzxyO?׭=l粬 HųTg8aU2[W |W>_ѪV{]b~-%e~E;:M{NTǗ뾡C^iq+j5L{EUf+J+e\;.?^[/B76Ė7ie.@R3J~y;#z9K{F{o{1)J׹aBlkfjanڷ~9۵,enrԨx%JIp9Yj.(7i%^;4 6=N<ꇩ_Z}M+CS豌Z'WtwW ^Xj"Sv%)zdL2-L2u 1EeWU3^z+{lD7wX0m ^QYqp b.\&O,f(7J-e ~!O Hdx`ӵEnyyV};g}T6Orkx-zj5֖\vDJ1e}_olY/P$ќq;hӻʖQ cUSZm=>y _7o)qr` Y։K#z3vW&b/+.n,kx%Hބ^A774 t9\o) Q\jqHhg#:~؝BF*0jW )޼b<ӧsoHCmo1+.w&H 2eODO^ݼ^4AK8"z][S_=j›^9%tES%ZfHW~Ud\wq~{s3?e{5C 3qr7C_5^%sk yC$W?+p_{? L_5,-V++P_N8W 6k oJI--=<*#I]҂x~~׃K|T+_Yc>_݇_3//xx*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P ^J TW@%x*+P=oE endstream endobj 35 0 obj <>endobj 37 0 obj <> endobj 38 0 obj <> endobj 36 0 obj <>/Length 105156>>stream xb:O彧[*8[to[B1'B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!f^D/klzLD!lc+_rd"B(Md5wLD!ÔEd"B&bkDBdXqe"B!gVpB|9o /B)"B)d"B!@/2 rנGxh3#K!wc]{&.?\?$ 7 ,!QD+M$zb&;8=8wx!DF0dLT[u ΌB!9m2qZDrQ5xBYpغ U02{ WIB! nK>DMĿW 3[D"B/9uߓ7HͽF^k3 %B>Gp7<M$~ D7e"B@Da)$*KDK!DO5wuᱺ^"Br[L$;LːsL$| BQ}(|SMQ2b"(LD!I^qo`&Ϳ 0Bn"tO%9B!Rn/"&}=eoa}OU]|gQ!cO!)/*~ӀO&&}%G/z{"cD嘉d"B14z?{7K܃ˆ,BCV): dy |c8BqFy\'`/#x#BDʷxB {n*DI4eC8}KxWAbOB̢oo}2U}~G_Nw_=BLa#&3B!B@_OVOn.輪o1ٴBᐉ!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bBad"B!!F&"bB}&~3N"wY&#_C# e"a{Ld+^!<\D0+h7fdΑDАo2N>o !F),d[m~ڥ{yF3|m"bvXSjDsD@G!+6~e;$D}uEs/(@+tW[Ҭ!(&;LC";-8j@+2cp~EKM=J^V][ :[U."!XjgL}ul>1=/ k芵ǬgFOq}("{F:<naAMZVͽޯU*Tm".Eۄ &+=c4vte"B)Vg yAMt)sQaxEZ^j1ny]22fm~ÕEC+N0.$PHKDv))Ë:L<ob |Zb7;f?*DalM:YG!NK|MJMC@gUxL(ODuW~vYLVu^j"mϝʃGqDo?n~YDdoǭ~`b "o,>qeu.p&<KY4?AB5 t (II+^?򩌏ki7ϣ4Vc{!ħe"!c={oa"cn"? ȃH) `_KBe"#pD>5j "BNd"BsR[7xW&">d" FԢ=O~|0рu{\ 8@%@ )!ݮ&r`?;jʔK<*N3)&rwxm!l"3ykDѭ&r{ȝ&R`qHfLdʮcLd6{`D15G<c;M-M ֽt.sLd[E6[æ8LdǟDA7c\. (מA*RVxU;0^#nZmVUf=2GD.\7=I#_Ly~|_Gq bSw u/\k1Mu /܉Ny9!0ͧ7wGZŕ(:x6~eh"ro3M$C>ϿUreyW 7g!DikaAfíiȓ6 mpFVp tx A&N(|P^b220| D)=(%?h )%r[l. Ra#:DB I)ĝ*DNKc;{+U.)F#u&0qB$ca9E*_85$HyDW1`"V3G+A/`^BaKy;GSǻn8)͐ rGfa8.\q$"N2GKekrmfӽ8ݯgnJ"P:}isΆzŘo(vEaXjmh", Dh wKK7]v:>R|'HX.VVfA" M%-tm4nT~e\O\za iq8I&Bʏ2שdFs" oBў' L䋸Dz3:|%]7(Ze 4H [cI0Y\d"p>O5Thvȼm@D=$_~SD3gۮf-?;.5vzMyUw[X޳Ů9&b:D\57=&TM2Q~& H}5,p.s*LpkP :տDMTb"K /LD@7HeHP߸Y]s\>p tl"\Y%f"VNa"6KMemI&!m&)-oҥO&"&YS !&avHB5NK 1N56$!6E7jClpM]DbK1[ pv;] 69@&m\h"՚4[DXXýX7{ܘP8h;bƴMdZFixnDmgdt5ёNE5njZDž.ڌ iܕ~H>-OR,nWb\Ka/q&\*?yn-Lh ңi}T9; IxkFa/Sq ؼ*nmD 27†ޖfH3(CtxZA7#Zlg"zn*&+B<BOA&"bBad"B!!F&"bBad"Bdط7d"BT}!SV.A&"GFAoE~9D&\ca ~/A"߽z{ZW2"%8@j"XV2ҹ~m)Pk#@!<)O"-=v詙#zQ9o&rNx3.8DF>`"4\DN_zx4y1YיH5q109c߉wH*y;Eᐣc2! yNG @Mg(V$X{{+=&6M&ޔe"S8/hc5LLV{LG s#Z aA֞PqanP:KadRD֥X% [SIFVTb"~gmM"3O}CeA xHﴩzDd"Bx`Uj1xDvDX̘j y^'GiKLlI18Y.ۓDVUL$#n"Nn".|+N`L$QV͝;U.К ,bf" x x:2j T\x0d"3DbQB!o5`5ED?F%&*g*$7Մq)MV DQ!Wk-84ƃ O /lk/y$&Ug8$k+g'DPI2aV+&;!Ngv 7KEzk"QE6ӬDɥ ;ى^L51Hr)d$!BwVt%[JC҂0DPQA0L6՗С0/5<{ hꆈSAA_YPM_R]{wȞD`̘nN_>D*]MduH Է9 &2c3$w-x; ´0T[gH^-F[|՞ &#& &GY{b3?uծCNN0h5sM:Lğ!֗yARxlK> ɹz:Wb'v>!/`r4wQ45=,j(3}_]+>Lw@r{ou$L$vag]<!|,><4ȫD&;/5%3y'b&7 ;,?%;9'U B}_6+WM AuԷpR-Ho6u >i5H,uA myB>za]G_)x:cg+3R`Q1ZNFhf&ɱ1Evrڅ"B|4&BY5xOr+0(e`8}C\FM*…N5Gy>yrA/a"[ h =¼*NF!s3Y+qBJHah!ķ"B1LD!02!DB #B1LD!02!DB #B1LD|KwEӐ8I~!9J{j H^_88g驃eeـ=`d"Ꟃ4dyCs(h]M)7XgOoW6f*`C*?->_r}Ǥo("HM;Bw (p@PĈLWv8-LJ1*8.4z{ľ.U.4,%5[U2IZAD~VLĨ$t4~.jFuEAƊ:^sYBpDymS n`xRږdCjKD "27'+X<1ףhVWQDaܑP5+ PpHӴkDȑVº?.jm"1ErI++R;M0P/N Rv0*ߙ3vYAėk 5d"Bvq5cxߟԡDD1H{&qQk"1{ D.Uav&j,LeMðSQoj2n70;4z[(;51= xLD.6CsMZl~%ei٩xa):DBS˽j3ہbb2!DM$g",_!ybaޔқf%&4&B(><ٯ& j.ؘ#j\~daubǛ/`',(W`"[%$5DdVYq%el ?8 2~z " 2[>vgT;iBLAH=nD?P@SqADHCO.ZA83$h"|WD B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LD!02!DB #B1LSBᑉYSO !DR)]ͫ2fBMd cu ]SO>"T!V)m"dQ U!DUCB\&SG("Bi6lB~һ2!t~ķ&N/!2!~Ojz&2D"! ~BBq6SM*);e~N.f2mD>!8!9z_\,dĞ֊|blC~Җ~>e"SBli=lf_z[$&,~$yuP\>߸^B,cΚp񏌂W'jp1ݩ@!2&2CGEk5lC53P4gBȌYLJR xkND">u0 'z%ˈ902}D¿tL>kob&BIҢ-oUǰ!U/}L! &DDn"ARQ~BB?LL90EY7x |>e~49BGX?!B3l:hVtvLGyE"ozzD^ӷDegGq-!/:L&RlVJJb'LBO>^(r=1Szgd"Bh2]Q-Mj",~#1a~ΡYBi14y g"?e&of^‚g`/Bf"M&>SSq]2}T!M.kr;"Q b/`Uh[( BpšWP6$@|7{MDZ)~#|n<>:m<65+{BMNMLL$UٲޚxknڃO"fHQd3{&o7L?Nz9`jN6xK4 JD׽w0@-43e™d}&9OP3}+D&rNrcM9RswwꏳByu3bZ@ͧ%z:#DyLy0{92۰]Iv.X[޶2^˷t{w|nX/kY$oy}F!d.RVm*&]&V~R=ʭ O)_h7v8\2,$iX TnD5=-Mmg0R+X&>u=F㍭5>9Wb $bO ӏ2f찷̧`ܶk.vP&>vɖ.8˻{|_޲p=aw&E mRۤ~(jsI+EeAUÓYX+ص7u&Z[¡P%2njh 3l%&!2+|o.a&ibUb5|YI2)Cߙ3$m:P( 5UJ*Ak4r*.vPڍe'5-w6}_yf1&˦,W[<"!f HN@yH VK`[G*hOBE4 XB eGXA~Ec7IE54metg纬[ш2f+ϤD7د MyPAC73aDj 9Hk R@Cb40|Ah.un"V#(s`P9V'9bDHdj4 ԰W\r~9b.Ab;LXGLx^ZŝMO I^Afea"?J|ڤz :8X(ԻAMy|7M&p7MzFε@tY`.밴ĎqHe 'Μً!G2uqYUu)=D 5&{3֦0Y&k Zy`"ӥ2Q'/65$xX{#:XlX4DY\'xIjbS$SulŵX\u8@.eT:'Ǣ^Y3D %X-ņM`YAD@RcpZ/yײԞ]WS.!92/rT M~@K5XUaYgٮ5QP/J8^(nMߊBrΦ!jχLA[Md6I\ >Zp1(MZ]+aimTtfTmD(E&/k n@0,`YU+h1 *-2j"%D0f"1%5d"?yqcnw_W^M]ַ8-騌dZkD uk\:Dx05M$6Kq'H'_n{{0F@%.W8q80YD`3LORLrlm&&lT/&&R}QjWoM~]᱌#&FU%SL.A'H~.ln] &x,JGMMhaMo`"&fii0k&SS׫^seʪWFܒt7tD|l72s\sVQXHkY]to7y]u=Drh5?t NF D&!.Ҽ:L$GHs>9N^UY2}rEln2 ,1ʈӿMލ`ODb:dL )4^0Zo8+g5 $m38LIg-D&R8n!"gnʘn"K&4I>c_%0//OLD|ڊf׈K,{%ؽt1!Mdf ish0;7tDXdDXo"nic&m"᭛ԡGGC-ڽ_7Eu[4$7D̡V#o78B`dn.A Rf" `$UKbJ fkAa;l k^L2=^'2*Q#U`=h-/C1z"{ N M¬G#]1!}bߛXC2 B%9/l<*ͼq236_g||"5p\$ؚϐX"RO\u]|QIٺ6e^O;SoD@G6Emod-Fzkn0b]^DK!T͙ 7Ap=}JVܪvp;X[5CS16jh*2o֘(K_y`]y2[x+EF.U~4&څ魛Mq߻OҰgjlMi:w)[Yl"УR6X-)9VUٰMpqCixdlSǠH˳vq Uy| ۴Sxw%kV{C5OdrHǚ"$>n+28J8*U_ןhSsn)m)k+EЭ}h0ŵxv /xfh,X4}P=WtpaQ@eGA\'X`>p-<4+h64!ZS8z=Iѿhc½(1Z͸.!&ݥKege»˖˱Y>w wd}2?% ?ЃOZY|_\N_)#kIvzBL{LylWMiwDy^g11B3spؠ6| O p}bo0[M><^R&" LC9W Gyn,SSL-PO~NjB|4c"l#Cyo&"d"B!!F&"~LD!~C:;Ƈ?e"B39uK?՟[7Wd"BCf['ՎsM o?yd"d˭ruFW^8l.a{i}D#q?C.S~-{enrT'x? ʊ0'wMd/]dt>=4~i Tsfn%sjw0sh*:jۓ U: &rsyvbYR|<ȣtD?O3|m SGMix| "9&2yMwQ$wy^ }u N =Չ31H㬻y0yNnqz~FrlT=mҤokԞ&OH3)&2q֭$rSc ˸h*)d9~W9DхU&O0hSgH܄d_Al\O1''BƵt!Ka+b"ꭻD@3DW3"Pj!|ʬ>0n"-1DLL$pQ)~5Wdn[R/<2]-x4ʙڻrKKaM;tDWCڜfH;,$խ0 WñhfMk [߰CKwk6~Vv1h5ud"84H̟4to*H, yD1lF7<3BWS!ڹ/y1q"J8k?HL)&"jd0g^QZ`7P8`PH>IDmXGeD{ ߚIeL^&hʺc%PmMZVo*jQjp#쳀CwP|d?{(*4+[(7 ,DT27R靽yxf4DM!췫LhSTsa"j rؚ"ʈ€z ^m&.2D°B_#Ξg³.LdϘe6b\*&B"S~P,uf"LT|n6%l8lpyWLt&B]du*uōKiд"h?D:LJ`=`Jæ7-^cppaù[ll*fd3$KEaMQ2h"&uDb&VDr-ZOMi&bKȻU{"ALj#DϏZ%bέiRlC MDxJy+Ɇ5S3wLr!̀}gdVؽ&GW҄u~NV&"8M&yr7eDx-T>a82G#q' e"F&"#$'*Bg#y2 !|B!b"W}Em$"bƏ !Bad"BQ{;8)BhMKj=e4b{;DήV&"s@7otH?*IOyA;OV߆ՃLMqq*UZrP[ߵM;[6l -ÿȢm?5+V>r9AQ'}Whwh_}gܝ}ǭ}o3 y[p&V{8޺r6=ܙk"/2ae&R&^"_d<"o¥{{;&r3&r@(CMdJM\L 7wH9O6[h \.6j"PO'?ŭ3m%D> cƷ'K [Qs+V|f"pc"~K&R(_4 ܵ]2Ͽ`S1BV?pRte,;NްDSqu(۸D.0Պ[?&bLJ4κ4vx`^Bw?DXO1;d{k}DYM^7#F_A"X4f\fcL@,ٓw"Xq Oxs\kEm7U,Dym',LU`"px=m ўh]*V`-kX{ghز56}i6XUb"Dq(5.żVb 5Tre"sZ`;_,j r"VQɖ\]e &a (x]B盫 ut0 3,PRaU;:0 uκc.bj QzŲܛBD}Q,ck]j4X*4g(6n2] lQ24"ED[If!NVvD@v gK^|Ci"Ś2gDn"C"YTϚzM_Cz_i//kM fl l0vVi :2aЖ`.`@2  Zǔ ER]Dag=n"X˥dz1fA>g9@(P`}ly+M|>wHE&.\sLMLR5H^i"#t(GQ;Z1c\kA}Ƒ JA3/lYZ/ւ>V/&/=ҎKbs A`gd&al"I`! { g,l2DH8DF9| czkЮDLbԠEEDYhQT1ehTg*+`"q@pW&g`!E:I* aYJ{'6&d"`&X` . <קHn{WH??WTUPKWL I&b2;DkcsJM"nILdd9r(0t"iiPf"uu]7VW 5k&R&Jٴj ["\)MǴn"HL(TY%/4>[?(pԗc2DzV/wpȏoz aL2H0E !: ^3 &uχHu{Te&Rܳ1P# ^L"VI+i]3扟Y3aKwx?抓H`mILUXKzѐ$jjD&>b"V;(U= q99ƆYMMWGV6_HcazD/o!q?0\R>4@P]:&sXξ.bWwLtQyId]l"VD5-r|p5}bU膨&־!%* D5׭bÉC$j ߡ%!!%iS`.v X[3:ӄ⛀_*g6qAkXGj0團D$/\Ew[#|P&"}׊MtCϰ *&$ha6"|Un1#@GJpn0Q?Vs/,xnP}57 VMƽӁLvJpȑadB5LeY {w_/Mʇ+VUtїb]LMri*WQj]<ŵeOK :dCѬu'>T"+j"|^"P2O]'1PfIf"`=_|g058G?Y&)D7./zm/|xVڒ:L(ۭ0TQgLx|+z&Q)@66Y^N*rkSc`9+FCFLu# 땺EY0 i zv>amIa!`sk#J~LvxD@>jsAQSWWJ/.EM$,RJ|7ZbI4Jɑ$DؼND:eǧ ڞ%M2A>फ`rP7:Dj;Z#{.(&] }\|yG6◮?J<n*AU}¸wnk rSIJYG)e9מ9>7y0l"q<$~nIDNpJ*t)Ş !F=h偻P+ CX@d"B̤@4cb&|?d"_N"BLEKLЌb6 =D Zd"߄ !.F&E$B|:!.F&"bBad"B!!F&"_v!A./d"Bg|*XB!B@*M|2!pS1pӍAB=z62g!6׉'zw˃a5;mX.=mgLNM;"r:WWx3_5quv,ጋMw0vu%?mSʽD.xlt ?~l ۹DPGYGվN^Hs:wS&r'"Ry] ({yfbD:cSg %z,G>O40zY'Ω +L(\PeR9L|VX4יִKNҙպ2!~=)~FF!ϳ?*7v {vfmIL7 SY==sD#Lg`a%Dx'֬ l ~ڤrP%& ۍ'•}n ?*:pK\b"njlk$B/~DeE˨Fj"1PTl_74r㎶q}~t+*Ě.n %ISEGU XSI(wPeTN'[D=$V`"F;aarKMdX{MdUն,;]"SZR%Mn"@YqeW#8ᕙH@ƺD22xgP'k͢5w]$"n,!hf!@1uaR'QxA@Ll~j&f<f"~p7wdeV`Lxu%0DD&v`"l.ٙjm&⦳S|'*_9-> $X+ jExiNŠ3n/ {HMH4<&RW]J =O5ŗm&bBvxa7lRY ]bdt{~&Lx1A1JP鵊nMҹ.emϲ)/'VdMAJcb"M14dt^B~:25Qi1$'췙BRADX?{Wpt&R7VB& izMh叽&% 3=&ӂJ.$P R&F Y'&5="i Y]&UŇM$ ӧ9l"XyB,'WAI.DygH F1rZmDDk"Mvf%_& tw(\kȌGZڊ HM俟V\@q-Öqiuɔ琉L>|aDh x9s5Ǖ Y𚞡|TrDظD:u7o^m^I:+.3TC&4_<1 mV3L:K H-(|i~R7H=&W\!+xO1At0YpZdr,7d"6w[DzZiL"I[gd->L2d?LO9DES-]Ѩx`"g9Z}DB62MCsmHq)GDi"U02]ˮDBי$J@O22 e8!60&Š L(C(lAӌԶO10ZMyz%E8}YWHeRi$c"Yg"EYJ3"LCs."铖&j4fφ %&#vT 4) K |w(l&0qCoUL1q`bH*',0E{ |{ϝ ;!Hn1]a"qqgH,&mDVMdu]φMh62ANke"DN{5XBv9AJkKq1H=Y'Ni KrcsDj¢&B N,4.FA9YҘ}+ Sϩ&A.HG[ӹV+&§? )$ O*Cb MY`!ϰExpaZnW' t0v8 D慓"_<.θdPNf:-02k=O$9JzMm2!x@&z79&-&b=Dȟ~oBtD2J`"P;c#ంqj2&3CE]h"73U_MFSu/x$WnqDmHf"TSE`(2;XHha5ֳE u9L N x|# Yƥ.⊂io, 4m׻=K&:z4пwu[s_7jzD*BYL!`+Od탯֮cyU3mK u W{J̠D9ఁO7q]5 c(xCI^BFmWPݾ6k g!_B&r&]&*#)T Anu{]NEw"x,AaJLD4ޗ>&:l( BQh"B!DD&"bB\ٿ7^e"B1L/=_2LDq_ !EW|:ߋ!v}_M_cw Dc~2 tפq7oi&pg|_D t%6wy(|cZ{L'aixBZw clj GL&a؀Mܫ7.>lgpO8TJhh7߭=}Y#E ?hX<xI&rF<59&rJ=HsߕxQ_q?˺OdDf&bff"iyx'KM>zL2 =Ί (&nϞ..O^DaӴ= cM䲾|YC/?l.[,6ŽqxU3n(pS]L|A8S=̞яӨM\'{a'5>_W+f^m%(l4(S[eY'ߍp[L71q=9OQЯry{UҮ),)H-2nCWUBl~]@u\Ï!t(NX 4eD0&2/ȩ'#9KO .x:.Oe}A>.Іt&|<h1ຽ<y=5M!ʴ4v_os4b"䀢8y'aG/h;lQa ͢O'԰43.VPwj刔1|O|r_L[Zo3!kTm#ۤzL<4w52)u$fwcш.#2P"qo WUWmX`>Tt+9WX'K/( Xqm%븀VxT:]&&* |Q`Ɖv(úƇk"ٌ+_r/UI% ^}I ¿Z]Dլ9D),ij2,DR;iЄhD/g.<3hj'A3c3 8K׊e,+LY&6ǣiߨ0.RIʨ6+ 5b?'M$nL$*#2.!;"Da|MD}HDܩb>b"2SNmo4p5J|iƕMPDQ  Q&'vS]u|L<&I\HK:nY&HL4h;^}Vd&fT͜6QmR&RDޥց(6#(jbf\f" >n"קqdqaG{Ebo18DfFKc&L$1|fM}_/X4/61V7DJ<=Hb"GظL P7ھM$mq 2C7D`ƶPʯHE3thȴHMzMM]D&;N?8w>DL{"/38&7<\[RC5^ e&k!v2;3*F\3hG IxAѾ`}8;DLaL58MYL1qhD)&B%tk%ǩ&Cm5D[Jm9J olǻh+&]$ uY7Y!loX'yHBELNwR"#&R=2'˰=֬w&2iϺEh2fR9d\\B16>BOWeP-o&X@Վ!a=D  Muz{\`0:_5648!² Tozpqp^ jHO[CfwT\폎Tc +z1Ƿ/Fߤ(vxz[2 sR3$c'{'Fc& -[C-WAd.:ˍ*A>'goyզO8iO=!DzҞ{ Wo4?Hq;)}v`'x,I$E cOn%IΧZO%I$H$I "Iz+$Ibx/HtC{ga$j? "$= ivh"ħD k]jװ=|D;k2ņ!Y҄ ?=oI`R{?k.s;{k?nYjDvb[]b6ο?cۼs=)Č:1n(GyQ.7u5?bCg997V;w+z_N{Ma7v$FY6vN+hB|uY曵57 X"Q&f zN0@U?8Nuo} xxCDw݉:S>XUFCp>q4~M8NO;Q@}T.=퐮Mw";i ?pLgX0|-.o';qЈoSA 01L_o;%aU)|&?Ad체wbfz;k`5M#O;:7c7A%у tlQ鰁Mxh>o'N;*Ad~L )I`/x_fyPxKLζ` I CwB>0b>tvq{9/nOd(@^HXeCM,Gi{y‘%|م[,H}z|w&1X4?a7 RialY}Y7'srrG[D jS7Se"DӼ9joM.`ܡZ"v> Ad'#fy`o! nm$[Fhi\;5+ix& Ku7\-.Sڱ^yXsFM&ۘm|:\ _"k_]X} M;5ItT0C3z "fx|hBأdRkh{sx9\w^Ge.B+ts LMA.`e{v~o.X=dە0-wV2[m[=A CaMЈZ*ҞLVN-/n{ĩ>?nWj֕hлc N!`aAΊ^ 7NDcM1xfQ/A#m7ԩ +8\OIQY(~0똩E!`@uaΗYdDg^"pA2KXvBQm ]%.W78 289/)Ln=Q"Zh(B"Զ ;ˍ 0wL)Rj(j K3m!"1 t&߼?"&YV"Ipw#@qqŜ"M.GNю:$E7uކ.LA$3 ̚X %E\->!= qeJJI# +B$ \ggsb0}C٪ae&/ HtMD DƬj+Fm$w]dKȱg){c`(.A,_Vڝ8D {zثx@CWX@V\AL KwSU2gm'>+)9+i(:\H2WY)C!SZQd0M'I 4t "f@Z!A@d5r!u}%5 ;/0DFy0y3يC.}fi϶c[JG\^zs8DW!§8D* v%ISC$Ě\pxEpys_̻a& >aӥ EȈK3z)WVf(K!A΋云 j)pgB"`αiX3i/D{ "[J4Dhޮv,D&(@$Zs" ҿ k<ԇ6ɘGы d 򎑑fDԿQ{hy5% D)n44{"Y$Vx"a𞝹 D2ckI;`gy,3-ՈE!ҌIx!Ҥ/ DmDVTAyP)}Dj2NN>mgћpbsu "d9k.zDW!8a6 ;$8D#HBռ(x l ᭹jJ!CayugƵ'Dcx4oΌy¹ zM,J"W%-BZDknE+r1 0cŸ58LRpx]0l #c~:70Wrk7nłheY"+C fՄM =(aϺ.ھ3Yuni`Z)\ .!H ?$@!џ9B ERu,4 UIiuT1,D2 &DDBsy\2/A,8X8ꚙ]UyAgWkZe߷ O"6F&o&l3Fwb6&f|Bx'˖;OSwvxκ}1N8BP~*Y60|w qv'9cg9a\:̜Qd: }!U̷Xq z{̶ v^E6vw#t]Fg*YCBf NZqsIY$H^CmeɺOI@} nv ]5:.qlޞnKV"cS}?]`Wo:z$j `਷@kç1DH%V+We.iUI@/Tnul@zyFiJvۀ*AyP͆PMC(28$$Oܧgn[;cmaGޣDu*A7] V+;[jC3>6jmr.*s=t " ɮɴj|!j$(" @l6{ ^?L8 "nk.Y+D !ZQ"ɞG_W݈C$_)X O~_1V%@-˲~Xsfu F45llB whn؟*; 8\04DU;MyZ;A_tk./g,&͡ 6wD ]!@@0DM›"Vu$MKo iMA$BQW_?_Y "F Rnx kd 9eg$I|'҇H(~Lho;`&gB""Mu tHy>@invl,^]솖deCmdHK0qmd0q|#, ʇ_غx>NhP{/A5_}.R<|n UZ1韎l[?g ?y ˔?J2~f880p:JUkOG O\&2tҺ^Ҙ[tT}lb3E6"3 诇H}@qa.D:|ߝlt]":KjkEHJ,СkmX3!VGHz VecM7{wWJ,}A;bsT@=&OTvmT!̄oYcɈ`n<ݳF=6Ħ<|Kҗi"+ev ־_cYѼSw.yb(, |SDW"ȣX|m5%}po$2Df$uDhXSgJRą;#I%=TDJ8ϠD_OKEJ:"sx-')Q_\Do.J7P4zRUetOv$iD}n%I:+O !$Iߩ R$IuD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MKi],HN!G]b>("]Fo=BFC}"bR٭U<'c! /|TC ]Gw\U%fp>|Nd OBD!`Մ`2AȗxPz"^H5^zE~N3@:"hUOAȄj)DBHk\]Ս@wc IUDSxX_|"!@6o5u/nCQ|v:[ "t0DJDW+MPёzς>l m{k(֘)ݎ52yP'jS.c!Boym"/8hFfw +wq` y#l|;ZHnGsjΎ ]%yY%HO%ݒ2aBh7+ 7xS}&ۆv,O`uuDl!m¶-{vyLmp7Zpl>P)=ϒB$}.>xslj+v|Dݾ)$!,1f@-KȆa6wv֖)><\bYItf ٵ" ń#pdB|2MQx^pE>{pgE 5) 1iJ"%t4De^B[!o0{FJv|E6L»( K,Q(Vf߃TDo! xF[r;`[ڋӵ-pcp݇Ho&; oH'+ԖhҼk+451f`~)I' k-[Y:DY߭8 (D :2DඞŦ=Tk $:"nEgх+DK} 9XO Dl "܇.Eb!NZKfV"q$H{!?;B$ 5Gj]. "1KIVe?ⶬg>MW$4!rIИv2Y4@$H`Ma} q[{HzWJ}g" 渆CW_ڳS!kGpc.ADNp' ;ڳD;Q _A>_҃Ha?"E1r[֬c:Dl 6a02Mv!ZN1DGnُw(~ I˷u/{ݨϫdGA$,iҰ$Mo"kg d b=1q.I.C$.tik < fբ}[5@=B-pIB` N.$Z)ֳFC%c,Oiٚ5>ИZP EP "a褵оP(IL\Cd>@ iI: \;tf"vNj"{R͵ޥh4T'8NXI-]`b`YiO/z1˺|pE݈HW[KUbt%c:pw ~NhMR -s%$*t{ >ʒ r]޾9Q!T$I{po͞*!AX3$!r:SB$I 48$]Y$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZtQ+% D t DqS'A! 9Ht*}Es{,8Z8_OGqO"t "GBv&n?D@$Nb7˞psVYHo<9f@d, vIĽO$N7܈5 AyY$@ȩY'D\!R 샒վ*{<D$: DE/[@'xY>%o5p L{ddok5},I?BUמgtaZK<$g8b'U`w+93: D7nMY`x[h4A#>壠W5]ZOPttcAD$:?DG-{ Qp,Bq0,BĺO>a݃$C:#DVn-s@<yf b(xlG]`iBճ6a9&̹MVd&I{uQ4`Cύ03v: vu"5ˮΠg:h+@d#W]qVP{Q:DzazOЄk3DtB!݈yD-I>BĻ(Z ⋶B4pέgD=?htc_!r2 9D$D:#D_H8!W!a%D> ׏p;Ҝ<"ѻY#0~0Ȱٻθ9 "a] "Ɠ^wXFCn„3"{?Yc8u T՝$]Mg؊>-KcCR[<^߉4{cٝ"D/DaxdoD?_Օ  $1FwDߔ !]XaIׇDH."0 "I!(=aw-/0nz`lމF!z)H%u@ "Ƨq 5C D y&V"hhkC$Ӻ D2lB=?" XUD{H{゛HimtAD>s@D&l]";b(` d""ijރ}2AD>AdI W!ImԾXT%Y/wر!lZ@>=H\$A灈-!a'0:,}ݒߊ,jL"5Bwb~ےGNH&Y7*8(.CBxW rK/tY"m%x2tշ&;t +I+Adyh|Dw]%u BI] Q "_I![[R}Y %kD CMh1BKL\g@$sAdLCI$I>,AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$iB:O$~zW?kG_і$f~d"T^02Bdc[ED*m,Z n8ffܶ@3ysJ[K 3} RJq?bAdO+AccA{RWmSމf_ QDOM +~ZoDNz'rrN "$ΐBcUYI)r9#D >|;GGjߑ`_ AX@k`{6SvӀ3SB>:L)Z_v\DdH-T+\kjHCA`W}.6`;·x2R`#,Riڼ-݊HIO Ȝf]oit!Gm6kXAɍ ⺊Qb=j@y`07jAHh2`S ˭jca HD6ػa֍gS7`U{{(f"z% "-FykWxV0;l+C|t/&o3PW32M|-ߊovk11#|~ pL2&צ)N ~0jXˤUY~5Yæ 'GFqsܹq!ZX(6BQ8a 'H7"q%4>kpO>:# +ÂQXH "Ю̎Hy{CA"n " q 7*5h=14|w6>C!y L"=; 0?1%J6Y/qw@ԑ -Em/c42@ra07'nE DP[>y+mUMCK5xX:DnU~"ԍq;h'85t,ocdHB{ӅHdVB_ۑDVs1}. " ``Jn rj,1,q < DEG7Vބ{5w"ADZ "  @yj "tDHM@6>IhC2Etrl!oADD|{n@f! {N 3L:e=Cħٴ,n^"joڠ\0GaD$'AdFwȽ Ҹ!? akVH!`>Rm3eoA~]Ȃ}^Dkj<D\n( HҋQ8-}>aɶ%z@ť:D%,h8B ֝+ RTH͟|T]f~с˟` JY ; "H"fgU-D8m RPHsɼ!"H?"ND/A$'.uߺBaM>Dq۶W\d|-a|W:lhxqD$AO+q)wM!esX@~A7H^؛3]^T4vHI֔w`{6mlClR|L %'N]pE mW+oL$D CBo}Z oA2n[Jۊ=[8DP0k"Qn.nDEߣ{<ͫRB$l~5(dHD?4#D;c!!9NOWep2G"j!$vo[JPYv " sny}cMZ;M 'DzƆ:U%})v=26->}G 'J,C䎒X>ʫ*ltTg0#Dj-C" '׸?伵`h[_hI7JL'AO L۹O79H7"C? "7}> xu|?JT] rWTyK:DKұDr|"o2iQS"{%` "O}vt`/(pJ $<~M$I;J$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZtao/K'%HӺ9"߻ߜGR*7|_?OJ ;Po(+;RFoQGc%+!8nAd8aS"HұDƵF4UI:VȰQxm0d"iAD 2*iNߐ 2*Am A|aDW ;w$$ *の=c}}ڨvR`$sO!ցdqmB3?Zrw#{Av#IҎDt$Dw>fnb-%Q"04/1X_F*Vk>B$Dt Dg Z)+w" rPoˌdI'$ 8qVV뼑E%p "Kʇ/PeI 2$`TA$^I?P}i#<$}@ȐA0 o6 X zȶpZt_W*H "c!At'r`U 27AD&AdLed.>iSD w6W$ "cʞ qsQ{Y| PMg83ABK$ *?ejl`C"_ݪGO~$ʧg$dDF<&Ϊ}Lw"!SXTb<͒$DFUpg4։6$Q!I= "ÒE2 "{D%$zBD#I"AdB2I翠HүH "I'AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$IY'J*AD"׉&dt "4_%y6ć!;$HLO/v6վS#S rec{w/Fa~)+$\H O' :){?Ü'"CV "nDJ2+9]$\HȄiٗӏAD"?-ABD&w"ĭWqznEVuWߌgN$|Xxڜl'н.ν1xOm׻|*)x~fq\fG#>nݗ¨#ݏ "]u]h#ڽac}=uU{di@a9衹.f6J!7'M=8YMUT2hreaEo nDO;a!lzp"fKɆ299ٮݎⶴz![`CJ "WQ"|[ X> LȆb벊>U;wkqYA775h5b yKVL۷/9 !Lޠ$"iCS8ϥWlD\s͇!I "S\./A:09nIh.$=E=݅Y{ ѽ{T>"J8"h"=ﴦ"]^ȅ|6{2rusr| "zCa'`g:"Q0!w%\HBğk/DVbm@D DN0)+* 4 HIF .WOD:gk7>,f yj5lCe0LC$QNu4oD]%\HEbAo|U!كH[h+v"]_ȅ.j2 )O 36D@Yd zS*Յ,AL>sH5b"_)ABZ3g: "rju!=oCDF<4!ᚯCRʊtF "R"2Z/1 ȐtݻYpֳF\D-Upy|^€B -!ro"| CwG1C"΃KИ57`Φ(DJ?.n:gA*>zI-5qҍoKJV7iƻBd'uNgo " ayLꍈ3D#6t'Mwa(?}w,&AD:Dd:tD$iFt E<I ",/$I "!!IR "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-Aҟ$b|Ղڪ?*IYE$I:"_$I' r~VDJ9@Os$][)%$Zg5<- Uֿ/4t+"IYiPaBꬦ z$IgԗB$zvks-c#ĶQ_&j~Eϳ$I:o"`:[Bd3O gItR})D.5N2?#ܶXCc)p[$IһA>lnESQybٱ>7m"$P?H nCկ ܀Ng$Io@JKT=tD$I:~ "ٕ}{~.k& onADSH 瞲_b# rt!D$I:~"ϻAX$ Mo RD$I:~"c" U#-|7&HtNDZ__|m_f6$IWWCf_U%S"\;D$I:"^`m A !$A?էF+Rr"Ŷt#"II񏯚9D'RWhA$`&%HtRDko``"f)򈵜= $Iz" J-* Q<$IgBAD% YkGJM;&.nKO$I:~"e+ rN)ޫY޿It}1DCSQБZ@i$Ig7Cd1{p__{2FD! X $)GLW"IYCu$/?ő$gc "$I'@?K$$II$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I?az\!#V. "k6`*H,gvd :?8t1zZA'->tڽd[2Fϊ|1j ⫛. 2KBd׭.#6NKjKcA@+R2HPhXgGηG;=!ӫ߸ i/+Z9Rh=vxQ [W W(L \ 2{BsKiu,DvzijF~"aOONޝybg"3uKB="g[P4rFܺy9嬤I/&ңȫfi.l[+B$<"|"F=t58DSps\=|~KNn:"5kk!MRьly[NsMms|(gI+خr~:vS މTGokڳ^J6YwMF岽v}mp"mn!BvV?kAt+v޼o2yvi%F/b7:KY  6yQZ>67b/ϋ|c*A CJTJ:FФ&@$Des] < ¾aJ@K&v!jd`TLbi2؀`Ź 0 [wm@LUǃכq|g/;ob11pE)paz;u5ڂ E؅ yگ7H1 C&ictkgъ pL0bSxzb^`"OeNƒX<`c De!'mduuDV猸HSȬQ phqa('~/"D̄Hj{ &nf 5L$Tt~BFY38$vΛwc1:AԜtKw#냎BM!b#mɮ[˸,?@&׎71NгPie)dT")t2|A 2Hw` ^HfR:YOP/Bk9ٱ~)~X!DXބ#$YޑD- wtYe )6Wb:+;v:[etpO߃m.g_cplxi]Y<{?3] `H_~)D|R3q  ܅SM!O8O+~lh_Ai6`xG+D cecS~D(@$Sp-ԻR;FWv"(x 8+$CB2.& )vr/qΠ$dP{47 ^rO3G!R2ZxO,B'!.c9:D4 sF!( sgl(XHIą>)+Drә( I` G!6Wu :fL?mj " K@ϗ D`2Sy)C= z қ? —Jv"}ȎeCISH^ ק ]Y5B.6s@l?1B$lϾ xp$s04ۻi2 Š@o.7 |L!@ D8\2:#00\"k FK}8Dm!Bj›!h@b9O UW{i!By"y{E1]^T3K.!BwN@105| m.L!B.T!=%DO+H@geq3k+ۿ p ;^57LwP!盥w"'AOc@M 0[g@MCCBpɱ3 #l@$NJԻ\»D%:|kMkE.@M 8?7r>]6M.D޹baND:c ]G#c+FB~rRBjQS  _O $˲<2tN"D8HtiVZUIkn@f~^L6E .8I`k{IGrDN_p kf@^bt_v Rڧ\]HuZ=]|"hQY Q$:6Ʊ7y(N>I3ЈL)~"[mATG_:/D z;DrANj6"蹤Ռ%m Q؝CK.N1EC)]%s〠2Fk/#cdwҞB*ӎq2=` "[p`"5 BjԇYȽL^,f6i "LYa?'C KzN׫L񙮥Zv t:˥Pc YSfP*vk=(R+z$Ʀ}MN?~*[KQgs:$*Sy|W~_ 5LvefoivK{4kOTpB֊-C^˭a>#8D@"ȧVw>α Q0#YwFG!BGI*Dv;~2F#y+U2>0i&Gi}9~0Cj4n>,,qצfO5%b| F{!l0zw+s$DHXtȇ8D>Ci&* 55sևq6mη;K. Yq <Nc"a)lE^>޷"';`{zW_X}Ms4ގ#2{n.4 ,I 7fςqBdg;J"ub "Mi܉v+X'oE{"'=_ (+>vt<-c]kΟuM9sϿܪ0aKj FjLaYf{yFi յ΍ 2Uǟ꙱7@Y$,_ ;ܭ9W@7lwoEklB` Sɝ٘y[<3bqH[kɤ 1v\u sb"JnI 0߽=@FO1&z85% !GĩQعGw9JrsY46.x]qL7OϥsmgXV)P'WƸ݇L YGc9"1UJ4D @d3T3< x9D+cyЙx%^ș]A'.ڇ&65-IBu .eH*GC lwvR2 N3 =v?\4]D?Ļү52DCͻcmf|C YI]=z"pD|"3h.mjW"7IsE q7i޵-gmaL2Fb'4`2p5$W;~gro;Ae]V Rp\ɧpm˽?D5&[Wx^xM}!b?Y5L`"fz~BծQ&8m:%D!>!r}+)7*Abhbtk4r%##.ʉ0 XtZH<3+H-ooK`$tdo,riU2!pwͳ+&N -Zg7_-{2QnקǙlZu<1Mpc/ְW[+X] vUD@BVB>xowHڗn{5FuּD@̀-=T" 9 q~ mby$a  1D۔ C$h`"s/Tw%5r[M.$h&~ҞFS'M MRJc DP]v9*H+)ꗝAw.E#^u\ &58B2DED^;BX&u.;R𛚥A-5.6Sۆ]0G#ZcӬ%C9k|&ą U@*E&"nαBpw1Mo"" "C$.F-rD,[~"mD.e[l#5bT ̝f ʬ8cNkўQ SSX"WHŰ>;1r[!CؒYc ?}3nyG4\(?{hRB`b]tǜC$  ^>ai^ ~~vr drFSpspNpK1hİC!쏛-wC-x+z#v)v-l!`vY/~;4: -#cYBފ5I yBC CdbjoxkkϪ [4#Y%iu$G .y6d[MY]3@H`sЍII7ԯP;(@$)A#zW`>3I`|?9a0O,a܈Ph=+=D݈tu2S2gվE٘3{;Y( "htND9N ב!~ӗD[㯑 r">x}Ay?~dngٝ;|l}^;ԃDƯVq#sg&ku=|zQs\.CdQK;<9ƻ7>ٿ0Q:ډC;n/?}uOR635G98="}h6h.C>V+X m&`how&7|tò m\-=HPDCaX "`s~lż̙ R,7.xo"OJ.$w`@< X~J}v>J%ɓb t MUCG Lm[mEͽ+1_"m$g\C=0m&'F,# 73_;lUS^Zc((&԰͒e5 Z2a$*JdB!>Ex"8T43:J7 04j"3 C}I/@&cU!p z}a ԝU+,A$3wAUh眆 F?΀"6X[eݹ5Sհ&Ecр]ÐًL辱0qCZM$3@ƹB { waHb+\ϗck>Ow2/ "i6vY O3ł~INz`W6)Gk^#1 (/dtHV(kxDN"j, ,]88qB:`"0<2YJ#*Cѡ{A]`mސU[̜(Dia#%)7pbbلx ?rkplq0fCbz޵I$ny)i(Im!-'=*:EI |a":ýA$llMMz2?iƆƄ<^(Zƒ7i3KCzumV]ҕYV=K"Hk#>ߎs`鐖}:W"Nv0qǨuP3"Qk G s֙hyAoͲW <yیCLm"fǒ!bSC;#bmLb⸽AKH(<ֶF\`dfE{ ' Hh)t-._ZIL4Y^. nqAĶqX] cA %ti/8,F36uɜ6|x !ץ|!B)gN.0D’*CzP>nF 3 uƯբr!:ZUH)7e~3d b.Y@dGB&0&g>z">mf|9l)D1I1"DnI(ةޜ&̄AdbEMމD/͉Ad{-c "լ!NW Ҏ3Dh-^hƌAM^1 g3nzU84#Fc˿ <<Ǿk٬Xt045 4 "Ϥ -A')C$ qfaN;JG^u :ڞ56j1uuMAX`(uӁHk;Ō.w "Y#MA1D`c/A8ɛ,qlkt:5_D?Fijmm2U\q.Acxd#DvfIS@ۨ=h!bM1^&I|"`Xf)D ׄ#[84&*pZˍ֟!dCàu!~ ")D8 p5fcyz;\Xlz6!B֒0]s"@9T"dv DQg h" evTg*`45p"޳ 9{mM%C qȮs5I1c61搡ac!GCuQIMlCgkDD.Z?y%0GY& GH>jd&!KuHjic`c_Hz'qzٸmXJ>CpҕQI 4Ϥ<1"#[/F{ʄ`;M@OC$to#߳kJ"캐6bbF=@$d8xx">;>}6xk{zozF]%b;4cCcjI&-0CJ[gbՕn`PAΡ ء[#,ivv>ke.VJ腐HiD=Ta@ġ:cGQ$~aj%>r3qd(2d!EYUlha2 ڷ~0Fs7*"wv&kqqEWw a%:G*W6Sh^sV}#v rv3D.Iqun7akIzг]zLr%6B>Mן]k_. !L*z?DQVdO3<8>VYV3o߅x4Ag3ZMeck8@ -5b8X|vC |3(@Ƴ;gQlB yM7@R-zԬ6j/X"gi=2(M&6Rıf%/KPA iCgXDM8=6Xv>5*W.A"oY_S&ՁLEE{l|a:.琛m/>r +We!XR~<@omGB߾k뷷OmcPWis_@iD>dw]d!Ԥ-d0&=eܿǎbvvȸ->b lϋ5L_49}PO@*};($@L;|9:`DC( ^*hǬ| I|4Yӽuu?w?3CDG PMi;qE$\C;Iꭠͼ0ȞƖ›;4@ ̂ZןEa)lDGDPXQ2BՇ Gbs11@a2lj>Т1$ _s'> 4X2v?a\[aHgfI9:m8\ʡ:ee 3ήu%Z%N. c "!_"p>T+fU7!\ZX+ ޲iBftRaǓdc%BK-#+]N0V:ˇpޠ5wi g*qH7/;Dё~C!z[_"i"(Qw9*WL3c"DTS+l ̾MWҐ8iO$A`@4]ihd81Jۉm_hѠLAVHtÉE1hm~eta BM"6_ g { qU2qwW y;D"7K(階)2Ф?w[zUa5x؁G Їn"hvtW?1n#T/C_F"iەi8%wwȥ B,lj;o5k|1M?}p 3 M 'c;$lqSA&s^C}N1Lɮciq:daAsXZItL]!( 36C%Cf" n[W,W%[i"ΪM@$> =@))OnpAcJ3NqVdCN!ػ C9}&[rCB# Bfv"h^ ̛8!bG6NjzŀgA^Hq]!/7h,gSrO87<$9 0z1NSĠe!;D2AATZ&9*G"2 G@Yߌd(A,D~)2G ;@,P5C$,Hz:T$AaՌ(v dSz"0k1.'BPku}{@$>;v2v"v֝|{A`_ς i1;EXYFZJt@ DGl%M@I9 [g; v :bfRVk_~q42㷭!N!}>-D[sP~"#?{b|9J)BE=rI4\w$Hȑ"x-8K ꝔC#ê=DbDX\yƾ.wɉKFYDbXZ PX.cܶ\u #J47Ə|ų d=/׍>mTHР_5{"3 B"ӁSHa@!V[h!8@.=M#p0 ᎌ,9}=hj7{!B}V#Vxv7vlK\B:4(`K bw v@k"ݭY{ڼmE異6O@di[ )"^<*ru9X"SQfoKj?g;KֻvMC9H "Da{xCaNLq.Z.H3ٮ;j9l45x(sc#e2#&Y┰Ye87x&qXt$Y?};OCṶMm$ْUvqd!cd;ŧm3'),h.AG٬ fg,!3bD;Df˺us% rc "e?m5Uح+IF䓛%kWܻ$}7bz4 IiD>ΉA "$&AdПhKt? "$IҴI$iZ$I4-AD$tD$IiҚKKqw$I/v֛k_>~$]foʭ{F5}2۟G "G(ɯv,zI6FvH'Crܥ3?򴗦|Vz5F^_!Gc b?3?ro|}e#tD##6?=;DЧt "wD\یf]^ U̿Ec7:Y;E_ԥiX$+ 2QO])t$sɜPx_v ŋc=N)Xȝ!2E\o(c8!LJj0 W B؈N@ 1BApGPFɌ$^[TmH?K:YU"ل"}T>NOM1?K;=A- {U H$Ll`M"tbMl3 ,y41:F=29oD}X 71g h D}K"?&Ҝ9"4Yh=l֥ t2 (AJ("Z|dN¬q( ,";WDlDCdK:Dbdȓ!4̓_ўm vz|Acn3-H:uD6PKCH _h$c)}ScBEFݾ~:D 1tϗO򸞇)),&tʐ;A)%W@Yw6Oxo,g|&'Q9x6 DZ/ ~bBq5߳CĀifB'%w ","K"uB%"8۶49-TH3"&Em=Hh8S "vA:P`7xNt@&_iNFz6D h.p"cN_!Rh}c@q2A DX]"a"^.@zQ"h Ry*  M ]͉_C׸ i΀H*Iwޝj/֓ ۇico0DEDˆuq"R~99w!6i,9*:_"Ú{{(oY{>u@v*Yg&k2D5!8D6d DB$]֯YWYS1\E@!cB`"hJQ'Nks,'qXu8ӇH0Ɏks2DP׷gܤl)[PL!A"n%Dk8gs׺z!_MYe_8o"?iMRh@i}obaAcb&__c֒S%}r9Mi:6_pw%uɬ<^DQb؞Vh Z0 "(̎Aj,ؿ: v=q2ZAɐ<?hȟ|Gִެ:~#?mgbH[4ϲ-;ئ5!Ju ƭϒoba}kx, 6 κ=q7Ƞ2pDXctjwCd\B&ZRq0]Ct,| Js#[.vx!BvX-i EMxOJv2ksxC͜zTTCh&|Xu勾4Q7[ q*7O6TIui=]MucL3! O "! d͍9c$w"+~>ot0qLzu lWI1xmKr$uǼ+87&{"-nP%l]ݖ|J"Wj!D07OeRRpƓr dt_o8ӛMr k;4= */E4/>NSXb;z*[-4"HwHi~WP&GZb¾N`/y4DnTiuP( ;}~Zw.S)kkgqSs` O^Azg7yGҹQhpkϙY hA{? C@0wAfeë]tq^ΰxeEwKlԃR\>s[؞W{ifϳ }/+7lcI6PK^A X(ޓV:;BG(j!ͺYîIJ|3!y Gܜa[!'Q0s  Ov3g[< 2i.|b3^fU%ַԳI>BMPrzw(2W(>)r [W -+.̴4M8iA @ oB0",t=ryr5D*3[ENow.OZX.|yMڔz0vAJ%DІxQ!U=_/uvp@W=!ª/C6], Vp`w6n{9X"+ګ%AW謏"O6C`-N2˶e{XAP4|Yxs b۬/~nUn ,о CbV:$΀qS "%ak/2[YܧCjgL(4`*DFQ&@lgu3AG8cQL|erYsd AkeSlf_)p$k";ݳꙃHd!ҖWH,'+0dE)+IM,D~˸Z(MUX# 7 Ҩ& dFLSq?3kfeSs(;l8E\ýUf6DtJa+DN>[/턉!AɌFzPK+ F6H!oJ[DغY6w bU "ɪTg4w }(DliD3GG$4߂Y6Fv.m؉9D44@mj`Ic\*ͫ+l͸:DؼtbHDe<um"a:@$Z83lEcu"=u XmݿCT\xyzOFIg. 񳼜yÒt\"|X wg Bq/5V~]$PH]5{DXeA!Ҧ(5$w'b烳@[3( 3?rp (M!6(D1ҡ8)Bi2TS8V BlX}[ yD |YH iex%D֘$=SpӨO؉χ|!E\/)H!z((? Sr[xnA/lpF2D19`GeDP}9A Z't2}1zaUȓ9;=_;ty3-CDV\6X4HXd`aX?f:qKP uz|lBs]0-yx%QoM=)l6Roq޶֐ml5$% XPs&_^Yy^2ڝڬ-> 2@4 hR Pt{8wˊO䓉9gk"p|t<} ͽ߳g{Ucb1C#7|'7vܱ0d1 V-tיsrH7rf +x ?-h r`rȃ  vhj&K>h-ve;!VI :E. v+c`tm.jxeɵ$IҠ;#'7Pd!^$:"_/AD$J+w1>$I R|ss"$$T?99$$T?14$IҜ .>ƚK-I4#A"@?$IK )"ItI$iZ$I4-AD$IiAD$fTIC_x oW:$IwѺ7 w|͇@'IMe#?vLlo`-!o3NY/~2I;֣mzezARAKth;߾wf%؂-P7[7ٽ&bku/ "+>Lү RS>>t#o"le5CB7}0D|ƿYv37";)8MZblWA5 {3Ѻҝ@"xn:2>}Q>\lB$ mw'B[?{ӤBMfd7%#{{DP )]MA$S!r]=΄di;v]'?т޾yvd336w, °.(X*a7fkiu=]W@{# <̘Wor'11ٚBdNҭNwu <S'TmYA!] ;K|;DuP`oGzrF>x 8p'Ƶi3lMO{vX5j!Ky Ccl! @d#i`FM#fʷ@<p+ 짮]Y~,ǮD$co5a7\sg- bm5uBq978 3ɆÒ42­n  jD6yWsتdOSwnfSzyS嗖ރ]RzŗYޅr/ €11+h#Kځ 6,s;#G\@m Qb5^:98 v3Q4+Z쯇p pJ?<|-5Y1ԐvTپM" 8 ԞAL@CX/<5eHBgͬ4#Wenbإ{r!tBYî|o`A=Ыɨ!JpPRpT\ "#dDD`7v X7(BKv N}fw]Y UXyP*qMn!'+;ͣU2e\? "6pa  t5Bơp[4kL]p9q8ܥa| DjG f!BƅC$ A]5 ?ޤŚmJPHOAI!bz M11+u?E;cy])LGHn1U"LqZ3`|~*q,D op"q\J3fK"=K"q"GuX`pNMC?}O&6o&j s)P. `9ra| bjCD&Kx0̃/@Fgijh}%AO\V"t5z'A;o& "zk&Լ JjH!$s'-'ZlK>qd.tDԥp)ҝvH n(14cak'%h"/$P1vrI9/@R_芆Bdu#YiS1s:񏶦pf" `m_T*x"8Dzhz4MCgտнK9 @YA(+dv/xJ>*9D vǻ>P"sC`h-c?kZqC,A"` /J_0y|q1seN& T7cuB$nLpSfr@~ {QY+Bֆ<9oa`1DM/{K `cl]>4TS!! ju Gif1\~E=b%7<<=cBҟ}K W "6 waB8-=.y BØ,ڼ'ͬւiZ .hi v#!ԵÝB gN͸E帅ݢ <_@r~SEXx4"DyW_RTilI,Up l(E F\c<Е )0y "zWҘޣ]t/t6^rpKV=H|&_|\)qQ41G3j1VҡUuaG3Z⅘e z(F*υ[o`lDdi2GM [% `X$ZL8>gl KgDl䉉FvCK .gOM@mH"(u%I[y :V+j,Ga"W4ƺ&$I "I$MJ$INE$I_ND$Iȧ$I$H$IZ%_w"$I*'}V$Iҿ8I+?3c_N$N%=+2 s F6' |=Βd6钯OA䟾Md=ߏoY9}Ak8[f\XHO >LeuD~uh+/|ޚtФ't'A꧟}{A$} v'Jэh]Ivއ>ʇXe']چh"=3y٤:*u"܉\{,%v.[ :cV2 qp0K^9F~J mW85}pU1eo2n? 7SGwȫ'܊q֩˻}}G:> "W8g݉jmYS W碵?JGp {"|=+!r{3jK;rA1{+!<0'ḷBb&u/(77@. B]xvI[cAr]قHW3{~ E瘽\p۟ОRwx =\PVԴcíf{Wƫa A!Rgv=49>"xy+h37@CV_nYˀo=d4^uDӽ{v܌Nlˇu2;\oqt jHwA4C춾֙Iŭz#:Sy< R#>XQ{xt@JuаQēnqzIX336CF"h 5\w5^fK-gsK \Aţ%ik" l DrZ]F.64+!D%կ>ΐM;Ia+KE " $Ka{T1q L<ҖYq|HM9ޥ aZ] 4:4dti{d}j-h*j:~q@f")i"{xZBHܕ8 pǶqyACL3cRZ{O f3 @ĴMV;r`]cF8SHX(D!zS VfV i>8uݚ^3!L)Rd=?]$D7@y $vd3w8d247{]sޜ%k󦹘x嶗q"9k~! %6u"D*Jx DjdsϡAMدFVLΐKa{~ߓG db<Ӿ!hOQzqX(.D"sLd¶#լ$ҋK;Fʼ-LQsiC6.DZwe5#_wgCq"]K̝QI.8DJS3ʗLg{V0TI] 3VHwsGsO|4᣹dde a鱊 {7I"#a6]JN k>ENu)eSEBJ(9Dpށe3d%fꌿahυHp1탬>'q=GL@u"랥k@R;og\iKX7H?oʇ$Uy5PЃE Q> g)t* "Ϡ=wdBs>DJ8V>B52sQ;^XKw2wf"yA/W^3{C "El 3B$RRXuyd)ATGV*DwDkiw"h!&.XHݎcP)A5#> =h:3ʻkeZ(Rq-@ą~dnj@ M29N4iP6 D#6,Ȟd|DVtRqqS' CR8 |>+-u1DR;_ dp*72Db!y]#*Iz krkCkZ#WHa8 b`3O|cs?ճnshkmܨH:HxЅ[]8yã+z"l&2@T*H!S`E}XjYy&2F\2q ZU} @dCqKH7(oi|&BX=^Nm=5@Sh/SNj]ekbi:;!4 H!HF+f*zխ ǽ! Dz e6ȑŜ!֗oV*,Vm3X-{T5h%vw`.-%͸nxv"fѽ%:_ktIG ӌ 12;Ix~}C$sܥ1Y;N)W[G>u;n5Vjh䒉`UlIH%e,xŌ(jnFk΀!.p;5L"~Us5)F6g>6 el.Y!^&ف q"D:€wq8! /F,/^NEHMz\8 Pz:kOcXΞnm!:\p*iwWMbf{gW da'[3c+`m ޟzb6A/6\$gv*%ڵJ}!wپ:9QHFt#w # pO4Pc -Q@1m~aɑgo)W_7_j=tqRIҙHmG6?7Ȍ2O5'+a!l7;nqZ i R$5 No;g+X ҐrܾZӈRU$F mtnb=~;QK{މ'F "I"߮xC<}Od/) "$-HM#:|DBİ$I " mItq'ӺCaV "] R.:3|;X J;B21MDˆ$Od?}S&vۗ74U(]m(e>/ `_&꘶yV#lTI^ _យmٹ=ӱߒSD O%)<;5 "IoD'=qBeJX9vUФT]+fQ cƠ|vףYit. 34͌`4mPO.$ A$yvJIQ0͹mn nkMU ƲeϳCChݦͻ{0Pf^Ɂ7!S-w1% @O"7 =&A7i"l߽bТ~>1֐OHZnDPH#JcSH{!w'"pI^D!m!{/@ĔC7؍;Pk bo )D6 "Iw߉Sšif_2oXx7PK=mi-߉.!"n0:i "tg Cl5/H!bg_YPHt\,)1@!GmQ"$W;)7ȣ1Q%_Tҷ)D/^ yVG!nMl|3:;;Kς1%"tWMa̅  ypq/HNw% T-*d8 X "IwA9D@kA`}ASDj]k~S|\C$ΐ|"k\I.T"tz77aH\vs80Ҧ.Dhu݉o s1HN'3#C$@W@݉tBfS!&9~Cm y܈ `0p7;24 $z"t7_HI~YɣlVNk[9+"pDt(Ҧ-0BAh$Ik"u!w"}\ % N o> <_"58bD 1]mh1FE,#Kc\$I:YYEE;"b`:C@$}52 *rz+ߊ4+$I!ςxe80.v&n[hJtKB$ K$σHX7-1ԿE /Id5iгn7ӏ#k7j"Ht ;vTxDbdx #TH $I$K?Ќo~>?xe2#IR!RtV'Y:Vض5nNI4>Ū}\Az0|\C`?>-Ht"DvWqyS'>&7kfŰ@^%bu9Xdw E$I:C'>4QoL+ R|l!s ,V$_6DaV uPzBl 6 [FaEpNu*aI$Adefr" 7"BYl}̀qD0_!`j{J7"$4ʐ RxK]nRuUVDnD`2 oHHNhIqmsЧ4l6[ݿr O{X |уyzDp EEC$I4]^9<+>Gաf׽n\Bqe#bO;=Ļ%y!tv$I^ex2)>iKthk]υ~S0`gHDY:@m$BvY̰.I$*DC!OR=r{ ڄQxe~#5 e/:f,0I$D7˅]ɰnDNlkTΔOpҹV9J$1M>Bq¶pl7TMB+"IRU+KsOuwѝD$IDQ׭t;%In/ȝ9խD$Ik!>{W7fITַBǔdD?[xG$!Owo"In$I"к[=E$I]_J$}"$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$Y٧I'= ~oh/yf[J$/+fzI.z~(p]nlԂ$V]r)rL B D6D$ Kdh^PC'H*֭J>GWgÒ?p'RHq]" Iz^W Byǻ]*{ZwOPAz t}?a)$~Wܞ]MqyDkkIxw+z?x~,Dy3+K(>c| &'~";D9ރSz;Dܭ[5 ozlZ*ixwK E8ݓrGW:_#==T{ᣉ%ݬ[ SLj;{fu塹` -Ɉ|2=jI ۜ=0w+qW\%Q rGXF4@$#Vz+ 'vGh?|dw-0ԕ*, iD@`HQȑir"V0D*9̻Qtv[2Sq߻)cwa0f]~,6<^Zcll:v_j, wh!q i֎гU _İ v WA$<0}D.~ٝJ쪪/ >G<5hݓl;J$1C`ٍR?  ݸCl/~CK쀻\ƂS%ޮDLIl.k;;"^P`{ߏp =Цv(\vQLhaȮV,#fDw M~"B"AިDfLR&t "R7蔅3-I%{74x_W"0Q, 3;/c 7aE+Y@i 4@ó!'5NJvP#xPnv7%6k!)e8|}lenͿ㪦lg4 H'X %Ln ۂUخНZI^hm-L lMgC /V\sjh)T]ٷk3M6;Ne؋b n D2 '%=x"~%tJC Ǝ@X%5DLOUx",ҞFߌ9y֊CtIu1DbUpwi"b1bٶ/12D΂HBd/d&V7V),c߉w"5 '*6 1˩m/ASy96yE:=Ha4y_CDyc Z DJTZl1 d2UD|;Qt`k,ˋ%o ͕S!: ^U+ϵK D"p%IcMڷ@Ķ7H-|wxDCBax;[{*_I҆^d`5ʐp/*y.,s!ORXXӭH 6gt"md$"v (b} "P3uZ\a+HBTCӦ_\r!Vv{~{  bd![sRqFWPk5>CW yMuY46Jc/A!!Rk1 rj;f"jzJI'mM')Z-cBC!(Ho狋Yg.0QaH;/.4zizC(rD;/"awߠZc"x-?"Ԡ~L$kU&oQDhˋ,<l"M8m"`$ {AD; DC:,:DEKk "nbHn[p \ D,ԹHR_"4CZMw|'BbP+aU<P>DH|XxR%`*]%Rы wf0(m@SYHDT"+j'n0D ,5H:  HA: t Nj+\"A "uVpgF]E M yx3D|ˋn :Dj]CvQD.N\q}o*PBT+27PkgiS{tK+&=3/*0( 'Ɂ#gLER+4% _$%'W ιrl*(@"IhW0a&;Z(uXa!epa5 jR;DB3A$lH usyxwZ]qy^ȓ@NvB 'b=&āM]I7mY̱ȉi\E}0}mjy~'F!G2P5l{`8 lC69H ɛ,gy5b1][mGJ^耯"?)#NDԣ6ߤu<.ԌSI( -m_]h?A %<.h+q&0tH6ޥ&[< @ =p^`S9[C4y[$]'$%HQ "IWHINJҧJ$I%H$ID$INV*C$IҹSߓ,H$+AD$I* };_ʛKpzG: "$ee6l}y0&ADTh.tk_tӑ/$w7)`M Uj{IhM?;6)8ǶմC ݉HUzQ&=5\[_wW\:ؾ"0ս[4GLXY.ށ_?>uDOsOhVۼ "`n9̂'=|pBZ:;N\+]eg@䎋?G.A=/oTYb_ȕ5x|/BEh\u!w"3*<ZCsBFG,AdLGnKe[׹+y]C{:M;뷙coH6:%H"_ C<<[wQmzӶTBNEu =axDDaO}IH[8 `=7 ^jw=)}zO$7݁?kw|lb lPk"DN[7K pɾk.aC H@[Q4]jA<;7wo]W7>TȤJ+.U?u'2MnਐJQ&H{&iC#ș85 3B_S[;ȟGK" Kz0A-0etM :sLgi "Ϡ `PF?Q0#D.iDF7AdJd~tʥ\AB_j^b dF]SO?DDgQT扌ߵo;(DN1Hfh eZcc=w>2P|YdLZrOOz`Lҡ5X "\EWΰy݉tmo:E|}3 `ڿͅb/7Dv)uqLoڷ߉ZQp6na S/E}J^_CNIA!- lCC3 vPWU^<kLm.p܋7bq]v!BM{;E;3: wCwI2E7KL7Gv{D P\G(0lT~ Fp$]F&8r|j TbLGk%cl̚xqg5YtR2kho,M.{4Bmc9ڶmLsS =A R8! 8ZT~vא #s2§1U۠ظtcLR)$쐌pᡣH{jz+zW4?3M򜑠(۞7WVHnW@^%\gI͵::XF9 M=7'_Y Xl0\w? 4/l }os6zC&?s`82ĕ\^I0+ȩ ~&j%VM"Ƕ0\(pb!ϡSX|kw%7-IMC/uh4Di'ۮ$nlk³-OFς#KP$vM"N3"ѼtG:vQcq%1QgsoHǴZs9mn1? A!bmua"AQd V_$ɼa4IuAt :pĊ@dosRZtE &8s"ḍl޺\f!jc&SxyvlDPxtYܣ! 1y| Y"܎|n\b"d,E[6s|]>74HL<]01$أk|zٸ>nWnAKN^Ϛ6 ɝuj"D:˗,K'&ma bN^>NH\F1!NXH}>~!Ba<C@.6DҌI!%R$G ӣf~_#30Eq ]2&Đ3ANYwD A{ , 7ms9d9z@0ErgC$Lw|Hx^ۚd'*"Ye!N\$޼WڶRWA$%l@sU+I9"uVit7P!pCj @$N@4F DB7snD^ dS/ tBy ~ DEp?3 %L<*b "⧏7{2 "9hB$n ݲلfɸAt~A Aeϻ#tS#['CV"OB 0Ḍbk".\DAɎbWSau\Ac_̺34+ R`$R=6ͽcSmք# YP!Sgv DBU@23ڒ:? #ƽϼ՘cuD@$4B$[9!Mae/Hx,6N<^RDc= G^#ޛ)=HZxh+<l ԅ} r*l>(DƇzhn]F@!#6lke6c.@{tD*gM-٨!ҖћgkcH"\.=ӆɛ1Jj5S aT ozh{{llRHC6;Zݡ]HQΉ{J,EU^wKF/n&q\J@B$H "prĂx/Ӄ)lέ>!kxx/)^ǤQDٍ]%P(@E/ -k?]Ȩ͵D}51sk +`Y<cqw>h:z''|O'ވᚁHxKw"s3?"g'ipkw"97]]_~`ȿ+=MO ̏R_it&9xoD}<2bnaBn,['ADoq?@7:kY !|X[އoY wg,mNd) B[t.D0 +oD.mm$ '$L>˯k]'msc%ާPQ ".Hg?պLzHΝx$j$R"0D|>}g}5D>i ?? lg&7Ձ콟յYt[mD/v$Iү$DNڵ;$I߄$ItI$iZ$I4-AD$I "I$MK$I%Hw~kN ":?_)W2F_/%H/T+g̼k^/nș-L_ծWss~N{uӗw ޶J.z’q/?>K.hmD:"tkɽ-_J~&y9S񪱾]>j :"l(]5y]h.^W燐ךCԻxW^*A5!O~ӦC "'C~!rGRWyu!߷yO͍_UDέ3DJ.#.K=o3X7.=y,q^A.DIUwˉB^FP~$`K1ܱGk+?? AڞUMcEsJ,yKw1Tß@Dv1"Hy D.3]c|p`,&Cפ @EƐ6}/rŧ:&Og! xC`ifD, E ߅M5eݛI3C7c9iȳM?jCk=֐O];4+ 16r1?󦈟d+~"Ύm/cw&&M`"jֳ|tq^<˥[|RE|?0+ɷI'TL!tw] N5$IC-ll6I㟬,>l,'<&Ҧ ?mSwo;f]>N_ٝ{9~rCfAd Q-:D\kv"ߧ!%bWE6u>b0AgvB^T&ړ\G7`aW7Ǹ}GLϣm 2 [<NĠ|HZfDyzs q.'-z"ȧh"`QMܕe3$6@bAvE_A賦0N(8cEA+:2Qule_aor 0|X"VD]]U{m "eҽ58-5l堑q Z$L 3 x ޖ$-$l"l_ڲvXN}x6DBT}~!"-Ȭ86$. 4;"DH_K7DBXmo y{u{%;?a]H&dkpU;haEG.|?iij,dlX"C\7 |q )@F|O'ߟu d@ [HC/`B=` TI_X "A[Z N@$܂\ 2Sɂeͥ\)D\;¸"3!BK^;Z+jm+03 nKԞοnSω$ D\>E(DՍy 90 |_UW!Bd]!/ƶx)`ڋ:]1pdHwSQ2!> "F)k> dFړ#{\$Mk!mına=pYy/KS` =`?ɷur.HS!R3jWyW.b3Ĝ"ȧ(D~͔"լ[LW&Q@#-ͺ0w΀C֥ Dp]Hr*D{1FB4hIlDC2 %85 jcjO#-YO; Cd "U+u#;15j{1/d!.|H(Dv4D̼llB??RHAd9 "kn'a䕞p04T<D&a"h84.D9ﰹv"K[l/H0*DZz`m Ls5J##\ rCj:%kb",Ii ".՝D>R_w ӪIcQ?8ݮQ D/ĶXN|2DQZ:r<[ӌt4U~9$0-1 *d6 y \?6g"s=!C#kIלJ"!YlYÜ␵Al#5mj>q"S.snZ+*sz4!5 3A;3g14{ QAd-+A"a|\IǍ'Z PNbY츬ʒ9fnځ9(d^CICG?OfB2]J__6t 覰5đybi2HL irCN!՚mG{T~9%|·_~V؆[R/q8C B @12'wxtjM ̭ѭOFv{KPMZ]}"`cײ#->C˥T[Rw>7fT{>TS)jt`[;R1NLl`ɤ+I: "ZN}e3/՝ YwIQt_)ADcD'|nWJ$n>)'IT !F}n$IDLZNDD"IID$Iϑ "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4-AD$I "I$MK$I%H$ID$Ii "$IҴI$iZ$I4:?>IDs͝ݡ;-ujZ-+"8HqNH2)ٮDl6 ցҘ5eE6ژފ`"1h">k3f"}EܺoD^èl1+{^x {ڛЍl6X^c"yFk_9ۘp𙱠ʣiyX^%<.OX㫲4}bDm`շJݗEc u{,S&2E*mI}]35)j~|dɹ3&Ioj'NBkYUT(~Qh|`wqD3m"݉Lnf&b{0`#yOd0-["&bq&9G6 8wEZFOo-yP}1e"|M0<; f)HMD6:7H-"D/Əl^b"ǘ6z#\%mCs3olywO4)VG>[媩t'>"7N1O=DD4J~\LD>aDֿ1fD'XD]߈DHLDV FL$}jk"FDRf"r7R`QZ |D\£Bh7Cf7f]pGꈭ|(cok=..az:Hc&2_y0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0dWxL^ Wk<&?c.  UZ. ]VzXEn&r'-s kM媵 zYšD8ACil6'⽻ӝJ8jr'7\Rs6ȡU+oELgN\G8tg<NO.AghkYʲܫ\FD&C]D[ch7Mͭ0wP lE~L? 9r'[&b1GLg3M Oep=qOEe_r]\ZS&rc߉L2Oxuz4&r!& VfO?/5y1V>49eKʞyK-o>]VN@]VL2^yZwsMeK_[=ηu`gʚ:?gS?^~P L`Eh⬒+ND"oe"鱣\k[R %Z+G&2b"2oKPJ6_tN(jZc43CLynKpT3&Һy6sw"W<^V5k[0IYQ\TEDD1$CJ-媊,!Rp_|n"L6L$mt s^ErRu68 RC[H!9 aRΡR5#%D5l8#LD)N[^/5r'DR_L'ue= و~ѡ~oJ'܃9٫uUC̱*BېhAfj# 6~zy8Db"&ڮʵڭFJ6YR' ? &r*A vAeꜛHʫh)F䶪 \?UA^BԺcALT|Jl1EQeC{D|Xo}j0ZZ."B8_"Heג#I5\67DZ͉-a˒HvF*޵ 6;jTmHf[PW(jZmNGr %S̬PսX*%v !TdJhí\CDd8am6lWv&#"|D*!1[o![7<9l"I&גuGAˑUJn3\Y}ИjZc\3|,|(\shkF4!ZB5]ؓqDi+7ߴZqV}f"Jx&{B+V_(Ҿ1j&%O)DjhX;Hh_xHn"M[&&Y=r0#&h_j2YW^]ݪ` ^D &⇅M HjAoQj{Md7MRwtA7ZBvw M}hH$A+S&R'TNj{3ݔ0)2c Cof"E+6JxsbdwX;EQ'IwMg? fyDl5V]Y[т&&hޜ$?1rC8>e"vAL''j~MʝwDli3c"bE.Lļf8+m uSjV4+ݹe"IYG/GhQ {{&rj0E#r&&ڵMOj"&!{]TDzסD im5(F,#1D]^``"zMWg9d"=3j"~əc"} h8m]P x/a&gD$S{j1g"ٹD Ul.H,:>ꈉ\kUu*\d" =ɌKjn I~Z>`<>kH27a˱Bij٦rG|b5Z .L4E[T9a"ݥGV`n"^s_2ɢH05ҬKlzMDOd_m#f|`9f":?\!i"M)o0VV> rCMD)1&#$qLC]^ˍs if*6D!unep-kKVC*AF|IYsd"B>54p;k2;BQy%6g5DYTk^ HnD-^kdh"as-Nw"侮;K7X-Y"ף_!j!"g,R]8eYV6@zEƚ+ C25Vema"k$(ES:@f/K+^^?$aL`-ŜԅCUZ3T:ΟM͏^/Ky!j B\ 4#Pm`ׄHmq1 9D"*7wRy*J6(ו&6Kj|rsMZөծVVC,7  ^6R&47g{/o`'zWot ;_`D=U ޗ6rO6G`]BFR T&N-ܕ2vL#M]3 iLD4m<I1GL㻶03h"@=5tXYA}o"2W#%^2MkM$}.H;e2U[Ij\ѧȷ=\d"Uny1/ &u!و<"U5۝C'ບRw;{b"O8ߦRvKi烄3vZ Svo&<.o687?CFKհ7npo"v4nnDΌuW&gnT s#}W& |^uD ? 6 |1~/6/`&4r׃1!xta"=4AÇ N| _?xe{Cv]LI|^|sj64:ySt^K1'K/_tqRR/B:Udx0vfF:_yz.&2g'o܉CΟz`"^Gµ;֟8M+RD9lTCL䤏`yd5L_{xc2oq 9E><naNWe&MS$|$KR-lQzj킬lU2Κ8\|ڷ_9_?g"GoGSZY2|'RjQ컎Շ 3~DNI3;ry:H̼V}u2TǨ{+nlې/.JG9˨RNús.Y"' gLY=xTai7LDR+^ Pq@6Dlf]e/[ڣ&V(\lJn~o=T 4ڬ_e"JLl"z543K:E\S?Ϯń#"/cA{E]!{ɾ ~9|GiSY+2BUYҗ5%|"VQ"x j=+d*-fWG*PMħvV7Znt6RXI&&" vx뗗})afeVzM-z{Ȅbl5KL4">lڐkKH{lH':wk5 El7Mvz]Iec0_ergM'<j\:JIә@4i>ni[jrL&Z4rZRR|Wj1B9"&RF$\tɥPܪmz$XZj{te8P% A<j?Tx1QJR Zz4gU [J.&P%8m"J1eöic"V!It`DWQLdEMj?>&#[ P -WC%DnhsJ!P.D4Ҥ6zñr:`$|k?uBU'5]j#&b7-Y6YFn=pI}&"+lD&tH)E1i,qS&CXVoh"6rl"- hHL$T:7MdXlƂnC(TLHYI DT-ƽ ת(k15L4C!OL^L. qϫWO4JD7j"bk2i3ծ:^`&RU9[H٪)M舉 s7vmD+.28Nj"Jghmآ&K`"(LD^yMzEfMd)Zp[i"|OhT iRTV^\&2"C&RyΫ^弤 /`_wŻZU&f>j"MY#Zp eߍUzLHlD^=Dڎ3b")/$Fq*ĻL DԿhu1n"%& JGDHVLKŘuՂm,2t3 H5&b3xMHf?327FVtM(ᦉ(M;M|d)>7T5G\L$@f"v6I0ڨJ2WH95Vt[y&;d̾6ɲYo1J)&"|wD>E<:>xTd"j\̵^M$n PU ŰK)K]o֘4ۛH1-'r"'*m)Z9DR51Rɭ=y"iO' fWGOy6;j!nckH{$v߀vx}5"ךHwEQAk[<7F'Dt+2Qf"jDHkRwHTܵ^ofSe[ DC8e"o"F\"vQF;JaP3︶dhY<[,tܯ>B6wY%Teex>ܰ>)4D ʍ޼J^:;GLsDmE>w~k"6r`"{QIh6<.SYڹG2*NWMYɕZhk1޽DDzqr@|ӈX&b..ô38&5qJ4J}D&R]0:i߯kešH̤$&RTђHhqQu.ۢqpg̫]ԪN- -{]/jy@r v .6RǷ0@QD E"Y#44g&R3fcV?ԆBn".bOm{ )25[O^^|nC_-Zc Yj/8a(.vhU6Dz|6wڙum@fh?&#=N`YEL-Փw!pvrZ*BDm?_h(Tc{71ڪ<^tƂF&i-ZSZTZ 7ۘ'#&UE#R<#cˇX<{'\X]k"u]#?y V#jԬ"ZSt%L@W^j%^cF܋k)wP--6'A:.TE=9mDnu1c"R>Oi"( CW;zxtiB&bP[Q UN"X #XikqO[5f\R~1<+7YF(cAR~D̶nR3n\QJDVUŸʥݕ6_W%hUXz<=R^H;CZ"97/cu qgOS\]uCNu8ê:66]+D~eYF#c]e.7,R ]iUZX+82)jG}{IX>O3rDCuy |l74LDސLͮ|!LDޏy|? &]!8|o~~aY~3W9cVÄw*0x.WsD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`LD`oe endstream endobj 42 0 obj <>endobj 44 0 obj <> endobj 45 0 obj <> endobj 43 0 obj <>/Length 147919>>stream xݶ8Ϭ6{&Ēd%v @ [ o[$I$i@'H$ICI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iLI.b$IOi2I_DI$;tI5`$I%K!H$}H IIoLAE$I]NI$k4$fhDI$4$Of$$I?i$/I$I$$"$IWkII?($IfM"I CmI$I[sHeI-ݒ$IfM#xL$IMSHh%IN?0%͟$^cmri*HwG{ "&&"$ $if-f$K_>O-?!,6Jw#[SEHus"I*]诖>%Bd37m#'Ÿx2'jpmf8I-K$雕{z2 0Yɉg ג* #%t}SHlw~/$J$U INF*mؖg *60 \&D):Hvg S*GIp:EhIG#v'd%$H+! |*Q˰]?Ch;>N*lwz6s ClmHMd+)` #ժG&dx6NoI-Fx{!^$6z;yM I7$6AIk$.9N~$98-$IH @y$wIҠ$6[Х1WD /=޼K5$Aa>%idI|l(n]՛ق-zFp Lc|+I04DI3_q 7/1Ih|< fA|+d ܿ?G*'dt$B$H4A$ @1y;wbD_0$1ڞyy"z$7GyS$D$$iH2YpefwH6F^; ۳ qo al.sO %HR@~$pg A]+uwZ  I@&DjO9zVr$!!? J$vXuL<)H"IүN !-~ɜ,SG@ ۻu8t%"$Iҍ:=@D$IjuU'DI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4&D$IH"I$I$$I$H$IcI$I1$$IҘDI$iL"$I4 }CC$I>Q_@?oj(&IID)N7>ߢ$I?'[$}ց$ILgpӐ+ξj*zL'C$QSgIL전+Ӗ;c5HRܤ3hg( `aVNf[ˣ>z2 Yk#bXԅ M+k%D'H<|,JIb&c cGrk AIbԦF;V\sHBF7:ڠ#?}fAjɔ۸0ß?w$Q1y+ [=4$'IQػ (HF 5obL^&~}Qx øBk"b4tbбK$V, %$$xwO*IQaQ=bW0uAI5D)V<;/ovhQb ^?ڪlTv@N7v!Cۼ^C i$|o}:uHIH47;RVF.Zކ ۝$|[h!G\jиLmaPs7d1̀l265]t#mm{WuYeL o!I.!:`\H*& )fB[ya$87^p[ݺ4.ÝG{9L+_.!s\4ݩ5X2f9Rah4p!_;}!WFu>6uI$qiax$P wVOVe$e9sdBl @YOj:FMM3}H[*MrL$a=!!7b<=f m68͂`يvdI[ 7T,  jH/Ijhq@(A!7!I8( SزBpVYPJw`󱚴$qk(\*GH"HrJ8ehgXp?%h& 8dkYЊ`5OSj$!m<.iy_Doԛt\,epfT<|09i"x7hEgAfxzC>C?Gҟb^6QT]ВկS6֚Nf?=o5Hr$g-dM;A<בD&*<_ I'>2]=*~ _Ft'3r#~wH$NM('n &8~͂xJo1>7xsmDb|~(C{[0}kDI8u2- $4W?q&A?5u=3O"$IuâܟH"I)Gs7$$I>O$$I{! nT:Uy$i~(ܞ$ƉovG>'I$l9P{㧎$IX ?΢6[$ =wi$IoILlnHXK'%AwN$MhP21M!IV"?'~Jһ$O0e{}$[ÓǸ &I'F ӺC79!Mf\OHr8kH~"gno$}IOshβI I3:o{N|nE LH9L_E_dRX ﻣƧ;Fj;i{N|vk4${XH^ZY,UDwlZ/5Mɳ;ɇ|N"b߿FBs c@ r.Fx;jCl 4i,}zVrسXvN=}IΆOt$ $o) ?MxB1s@,cزfi$$SIumoew6`D~)qHrM8| k>-QEXЄ YWGS;@ܷ#bd*Nbp8#5eIណ~Ě*<}|p$M[Oq0#L"-^^m ;NגBXoJPImiR9tKlt 3$|W.tʤa4T;dh>zXAb#]J%~PCЄH" x>K_eYA$pyzd{d%! y6]0H&1R@뻨W[Q{1B$^ $SHGJ3H^H7 |UHRô I\DI 4vc3=XF~5IP}gIR) 7"IÍZ7]>ry\$ב$ @ R"IX`\-dQ<;$uЈbAcp\ۄfvIc!-gY^%[Oݨi$٣~^3P¤LF'KNF4H,edA,[֎fEv j$qD_ 6h0LqC"W#T%$!]4c IrXH ۙ E k-JY=odopg^c$ 9I{ڴd,aJ.36s|̯Osa$YH̪5Uc`Ab\1 E$;Ib-D*Ir.$sa_R|м+[p,# 0w%WHi]7!N*CoVTuA. 0{5p)bˮWwOV[0Ѯ mhaCF >$PHW&lEkI+-Ιl][LI*O\ߞ{&?Ivb[vJ GHbc·%I)LuĆ=GRkH*;&"H:0vH[e'@GIPK7ӨH9c9#ֱ̰mA"2nk=% b$4 툀IQK^ "nbLoD;~µU  KnJXsט-Tό.*CBK1zAII`-[Q Ј]A $xL 5 S |Q"~odq8KgyОI#ynCd!b!qZ#I܃:IhLE[;ĝ8EI^a:#cVJ _b:Chh+t|?FIE- %q c0+I$:գk3'+HDIL-]艊;g_V5ꋵ I; U櫀I$:t |g<=mQY{nBKm)tt_ 4? ς $Ʌ)H2Pb/Ԉp7>EDI^HLFw.>KDZIv] Zr@b@0x!wH"IIX"I( {IfN3I/H2oB$I $#9IwCJ>q7I$tyxf\yMU Ij$c}5dpO>~J,$j~KFq' 0O$ifI2v+rNt G,2hX$x;0q)dC_K-]z:pҗJ/IR]H@a`Zmlj77ʅeG\Nc& + I.u$@H4N:3 .6?4m"ݺ/*nRc'֭{ǻ*ݘ*HkImHP|zL&^-LF3V=آAXZ~ndƻ[%IN̷\$˃`M1ͦ@:#:VT彍#9s'r%/DXWIW ĠdWY%׆JE$泙¤ja7r =)"hQ)׍.'lN[1nSeh?B$$9OQPȢ<.60Zl *{Aɐ0f)lkWcNk(TiS`$H-D אM'#Xe@hx$}ed1uf3M]aZ]d^p+bEٹ%6ʀ J<G}38nw/, @0 #td4I$MNjI\$VwHK@ͪ^S1`{ c 10pRжnPP5M_8*=H5$h-Irf"{$<H7`'_mmI!I›g-be.$7eQo;)ertX$ iw$"I( &${FIbف"8kyIZI~%IIBU#I4`C(:i9yV$\2ٮj,NB8fIe,$=$XO3|{(eb=fa }]d"&I87$\$I@ h17c",glT! E$5VU ˝t$u*}?I,+hS-&ݦ2=Kw)x$ɮd$[6'"P"}搄 HR!_F=xPFL$9IK_݃-åFq;$#u񙄬$!Q髒d?[&,bK$lg蒄$ydG}.9I9eLrh$}&ĄX fW#FĻ{mK F$ݞ񎾂$gIB $c JYw?!HI$icz $0 *iu%#Xz_4SB,e0qp2!I HG87%$H$gvzELC/$b~WxyC& JИ}ˑ 1u.tx :ӎ1M~(HYOj[\h2-ͶTJ`QjC;# 8j lHt}=v[7'Ǖ3a*)Iȶ$)kIz̫d;$ޚH I ?H }q هby7\nAdjriaJ$D:!9IpІg$|,H KffE%HRBv~ ⊀gm *FK$Ho,[8 өЃ='>N"btm.T"z-oU IW ~Hk] }Di[ҷJ$^' KFIp$ҫ>rE)I/Dz~u7]A"$L%%H R>^"$I4&D$IH"I$$qߏkiI$}^G?mcpATII?p8DWGG4I>E7!I&$/p(Lz-Iooomkc!I9㫴~;T$R Βho= #UFc{;T+IbV҂e[2]3? sK$k ?D>Pf1=LքIOk$PCpv([cջd$kEL-inCWI{CH7>!b?H3HQy}^2IVg I~HLJ#Ѳ;Pi%$vm)p$"[k?:а>{%njyS:O|..ns&~h-pOxSfyq$T8u&ҝl߆$'>,rqN'$AxLFO kB7c7߾GJ::$W\Ot ƽ}-ʧ{c|h݉$p}I;XaPb$['k ',6)9^*0['y~2osP{nM6=r9ی{]mFΕsicWٰwb6t sWwfhRBVew`$|77$}tM[wfgܗv;@{RMeh˭rTf FNP=^qA%ţ%]mg7dXA̋# 98l7M$޵=IMwE[$?v$MHƷ#F{3`%G.IBլhzj纶:uXBT|7F0W^t~nCkOD gIxf@~× C&MZ~ܲab$6]dw0=!z0\*of&9t1-m E|I.z}d'n㙣́4%IܻZ;$t!tN$n"C=~nC: ) d+E~m[Q} I3V4YpW8I\L! #Q5vj IP vPcdbXݦ<I05^wbk$6$9 I0G7Z u`T@g:Ih,KtOǧDp_ßpeCH:KsB†\0du[F^9<1HLif8E$!2$`{$xk-IL"w<.7f$ `L/O(b6ȽGI· 1dYY&cSYLIJ3@Il; $ mf>$5I1*Γ'I(| $a#]oj$|' !ILI!>BL9y!I z=IRIaJN/諾$nf$asHF8;`$ ʧ$1M$I(q, 雐{jc8_$l (0wHf\$ 2e>\_/' Fv)'%J8J ÐC~?) 0&U mcoqⴸ6(b}`zaTNy-F$lYI.@S~ai-fD.' I0O">=c_I| 0xݘ$qhT C6Sdv2 !1+JSDhcetD;X`+B ޫ<4j9 Jy0$Iyce_e Wmt)! ϒg;,mntb띋݉gopQ[:+v"$c$ !k$ep~$`MIEf) ȶ!$^~"L;`:5p.7hn+[ 7j 0@b4$1uIRDtb&NrN#\,¦"IHI8*J /TK4YyL zH|bA9z1HkÍZsS#w`Fstw.>G_1su&#\kZ޿D}!(,1%'I3Ht@Iޫ!t_{ ^ŭNl5f\<]$JLQ!)BR !}aĝSOAxpPऔ$:L $lh8;Rfn:mch|;C񖟣l|E{9B5 7RM܏t΢%7lV uɉ0"WSIr#Gh/Z=oW7&"rO@U<0+]A:B3CdN8:H3H}(: 'u5׹xoـ_ML[Ҋ<+ˎ4|ݖbܭ/% %ٚ$o3r. f]M; zp'&%]5.9ڀ^A5>{㕷A ;3'G~9>ut$S`+vH:J֭,9uK}h3W)nbDwj$g]ZD ǻd>(PrEB@%)>!$9"5+Sf OGpk`;s]$~Q\G}$yD3WܪK$O>4벻;D;pV"$I?}^$$I0SDչ^$H"I>w>S Ira$I LgwA$Iw3~t$Iw~"N!6Ko8?DxKtN3HF_!ɤ?u&\=$.䐚/͜GK]Okܤ^7,5$g"v%\p&jUI@zľB(Sfh$.|5Iҿ>}w&}=ښ;s?gJ'5Je'gOKPdWֽxN{I=pgGj$GIf.2yW\S#5 b$x|19%Ծ*输$79T>u?}fI$6 'ye. Քڐ5)Xgw $j)ݭ6泦uWo7ӣX-$1A qT7+do3$Gk%wk՝)6Ƒ9Yi!\h"6 w2 Ma$t~jx`Y_ ]iPq E_AN<|Ze:ݬ[Fu I6e{(|$n (I`|;RK %aZF >񃔻; ۳C lKa2yG5nKg~qn+$[dvlUO  Bln[D6p|Splae\bY"8-6^hWnw Y+I_3g&DW].k e.* [6:27:b7O[8%^ xVBt)A usw?)F" u(hJ@! a HC y;F#eNm3 ƆN 3IbɲIlqW&{.8$!Qv7$+3(4Jн GHBv)I`=L2vR:{'I}/OIc6G$fdDm"́js$t$U$YL9H_TtHr`IvKPl|I49O񙗓DR12[rd(qk]ni}- /'#(*k΍GI$)$$Ń= 8ID آv#qxpFcwRtN;ds$5k"$n$muЍ$8}Cxz\$zĽ u7!$!4Q~EqfÝ[!ybWx InnfaI$@"2C}Is~_AZ )vSAHb'c޹m8ZÊRCmRBEL4q"Y7 y`!ղ9L ^GI@XK<^]\%oUl9$$I-]H!%N]Dvy+Iy-\@+ɦ36V]4"X8l5N36/qbO8VDa$$=/ {w$q&jI`ǧ"GI8 5V1jȣ Q2}G9i5~5IϣoG`cq$%s OV/M󞪝zy&aߥoEn~L0s%~T2x~rτ"opƬ3`I~RHrܩz̮>q5IXkW30ަ|:ALBPm3to!M$N7 A>$C*Kl6DG7[Bx?> 3Bv۫Cw.fj5~W]a0 3Z琖x5Eq,-C5'X͏A2`w+3h]@_7ń0[71NYt\2$ uEKh:4ؽ={usMWzn_uOmd]sz:IsO{hFx<{(ޣD$y^ RL%ohLq>m{6mm|pz=ѵwC_L{-6ƄJ"<o^CQ(y(ĝEp}@O-]#JB] @x#{S d̷ЯxmDclYf#KOS$i69IjvO݊$>~%:a@K(tcb썹VE[$ 1ԱOb큨 ,H+`t,CRNhkrg M>:VgbU+ۑģ+HOBt$&9I`KM1r6I]u~b6´?"ȖH;X9 bh#ֶ[7)`2fN=C۪Opmy/|Ed{6Eb3 ɲ_}T$ [ܺ4rA1A";%{P6\Y`Y %1HEp G)_ {5=jjgn&%Z\! G~uf/shC|# n}M# #Ydo솤3iz^ {җƪ/["QxׅkY፟݊|c>$ !'$9QA0* Iu!Iʎ{8ԶIR# $$Za\?#'ڬp`Qx+Ì#bw <\uq*# yR .($t>ߚWl6:cR kIJ0uB+ؘTo! YɉݶD"i0I(.epq6A'.Q8s!6W;!Xh4P'-׌钻[xR"{/ڑ_E:~pJ$a-EB>+~@Id! !(IP8;I $9Ī,ۑ}DwvdsRsP6.I9BI!BJ捷 {%0о۩2'dc+v$̈́t}*#nc*Z/|Hҍ {$I>A Y4ÜR:b(0*JmM I?ԡ2IIIAԒ4IX(qoY*bK`_MRX`҉i$iI,G_:ovw@UlI NljAs$} X $/2ӹG;Nh$IډAHbBX D$h@B̠5"ɐm ɴ#RW6)O*K3QdI%J]w2.~ `W$GBFI3$&mR_C^F$9!d{̂L vX}Ad)qhY6 &_܄LӤ5 |wWE17n%IJ@;KIː5E~$VLlrQÛe %TS#/-pP$ᧉ,BTHs2HGOrɃ{;,]LWIj^͖Ӥ#`^@m]Hl( uRּh Y(ˬYK[8чgCglPCq-擄K$Q$H$T VEj8(\r9}j+xBm~=}I:R"n!~$Ҫ#FgI ;6jv` $NrRΗm $= Q9Ce}=$s{*;A~&Q\[!ͨs6{/In@lډtC;Lf4/3H8qlx*ܩbBt;HX`%ZEgNUE#oU vx_U o8w}+f5SI$+TbH2YI ?FO[~R7&!/T|^Bg.Tl"(SD5O z4Yل7] DU1 4}`#:sI_Uz4O%rR!~R$Ϫ?H21#)$$@{$'F\,Dc G6Z$$B?9|h+. 覡$I-0I^$~RdJ4J7?/OM+Itgݍ$W{M%In]IAC:I4'soG]ѷ}_Itݍ$|cxf㏓>2w?k%pʿzRCIOGfAruͫ9ܫg%)H2[$ kA: $W9S#]PJwH2[Ex^zo 3I T![? ql)xy$s ƻ?}Z/'#HBXȇ0^ ͷ/B< 3덚D]!DwN(vl1l$]`ǩy ~ r09gN)s㍚NHg*$mڿ Ï@0?7x^+)aH53{}I^  n0oY9 IDK?S[l$NpKdpU1~6(I˗J`6̈́:"碿~s'4)M#9g535ٽ&39(,HAc!`+'65:Zp"N;!U~icLI2:f-liI"VI͚#Ic$I-!eߵ#~H|5ĿͮGa WWޞx3ɩcNrk9A$₇aXQdFD >r$@'P)ceiࡋ>0cVٚ_^rT,4YUy$"aݓ8n0G;%&9ӭ9-f -Hga @w̖VQ=Z?ޅtmrb ^2>vhE lݭHAb `las+ʖ.Ǚh#@IZv[ictH_".I:'h-AW;6;l[/3}ԑP stމ⨟OZ$5Le/U&IzJUMilHaPLxqm;ᘰXN h8l{&; m:K^Σ7@n1s:wMn?m죫l6^5ɤ=Fxy@]J $!O:t$>$ ɿk2A6ne୕pX{Bo$a)I]Eʮhސ&X$0C~BԡFj$^F6gm$ٛ]#gGЦ)pEpWQX: % I: p10T.%}]7G}Q7 Jn$$?b2&IQ#ԥ$ "wY5JDފvL&ɣ_Z$qnI%xu$ϖ&ɣo$ k1A$&='a||*:GAnuN I\!Ik$' s&Ԏ'$`8IL|Ka#I"()$19H|2I:II@AHKPHR(Iډh'e$: }/ǓyW3qʆ$ @bйǦ,1Ip# F4 % t$%ExtÛΜ*$Db@3@rɵYeCIt;ZFx;%XL!+^1%R,3'$!|+8hꄆ8sH[#l$hH҄#WpHv5i/$QpZg:h)GQo$1ѕ_G+v"IIȓ!\[V6r0dgdN WcDŽ$Z-sH2\/ QʫA}Η kI HR$,*IPHҙ=,d?BL|IFTtA4$wQIڴ:I'DP!Iy ax0s t&\.έZ%il`cLl [w$XkڜL^# #$ǜ0|>}Hn#$b0`v+ Ma,k;.wA+,V`PdwAyo%IY>λXW$m80j>a,s3#^" ItbIf'j16I0~ o촑6rIZ1'-FXC`$A $Ara :D$,#6,It$MU18FHg(g4DC$3Юm"+<:2ĕjqĉ+5bdI(I@mɲHJ{ioeYylf)Iv$ah Bt_AG`#$/%+m"t{!Ŷl`J$I0!:^0W\$#$ya_DREKCCѡ Bqush3Ifa&{6c^\ ${T"\ѷ0>2܀}8KŠlgI@D-"J^Gܺ^h b~۰إ:p&!I~7UIH"^OMO.ðKd" Iޜ$4G l4s r/PmTa>f٬L5J&w!H?Ow[6O<2Cȣ(tnOL^~tg/:LMvTM]ӈGx$t?߽l\ $b 7F01 :HހHN$2b*D%|ʷjS+w~ϏJ+bwPp1H"aw%=XmG~&!:C\B'?D_nu[9'{r@TH"}aIijSIRY!INJ$~Jg$I:'D$IH"I$I$$If$It3$/tbC$IJw3DY($I$ es$I73Is 8e=tV"nM$Ih˙ .۸艦cUS5{N2i} W$!J}$}nNJO;WIxOޓY=9 㨇[}$'A?%A"ɠNC yywnBt՝wwt{ $n)Eѩ$M[;xxE14F[~zzXĿ'tH\%[gw+~L?ss&$?Nw HxpR_R)v޽Y$79B/Fxê]E$o鉻M„7AotsۉZb PxRȍ/c${Q&|JDzp}Ґgm}j6]|#aы-~1c :Aw;;l:I,?3Z1xBIV)Av7<{|˄*Y5/.o 77{Nr$/j{G4٭)J#?,סw{ͦHFոcG<V[i -M8\pcE]9:1J p:u̸;~@WN'&f`BgbgdzQK9rGug=0Zj5nޥϴJk/S$9eZ 8KCԟ !׫D 6$p=΋un/=۾ss IH>Mw/۸@|Y}"7.ZQh${0*xEENV8=gqR_A"EdHA " [^ɜhuXNВO>*V;yWnC:sqrkԼ]OIu{ I7$̼Yjo3ڵ fIZd ε"3pKJdIT$.IYBpab03IE18LI@U$ /*$qp}D KmN?IC$ U N|Qg~c(O Yp@<@1њf$мvW\Gr0IjjK{-:I0B:r>G7@uQ*$~.10&m-[>e%Cg$q҉L{BD6CڂH_˞]N[p߃M<$sIrz$%I-HWz;$5yKЄCKWx?1aL2gE B%0VPued>/>V[٘)OZGF/#I:t \;F JO4AR4(NLMN7ʼn$ Cp^X1pbugX?} MZl$[%A:}MdY"q*\e$A泌:D3!l&mC% $IZ;BRt#ӛAy$9D͸kx&Fu$ge&WgIj<S# +L<t9Bx~mNX =`AD\@  qIb{^2)i ÙNZq̏ IंpD'jȅ`x$BIځ 3$D$!qb2TGHiFH& h?+|?M$VaS?a.9}$fvZ#IQ͵;q $ %."I!Zy{$I>4($Gj=泅u$ljMPI$mCyp!$/.{IPqm\Yyi<{x88Z'()8Dvt{ģS9ޥ(E FQ4C#đ_H|bFHB'IȒ$DMWw$l$v#19$G'HbKRmEk i>1cHeDBwbS;$A#)sUtZw[t$>uoF?+!&f*ۘ$kgHbt!IH$-׶Fu@J6$}}$("&#U$yؤgteÕ̓I.GH.H_+Hp;qIڂj'Bp+HQ5$mh35L' 3dB2H9a$tIh$`;|kH2W [xV>xm gx $86Ci@!ۂ*=] ]3HjJ[%cJb$9 瑤)*LJTȴ⊎H$ hڮd( a21 4kRo`$P$ a٣,]1S I@\p:K^Y$eaKa o'$ŃSnEBզWо{~ *UGˣקN6 Ns{F7ϭ0 &A3mMkI:LoI{NNv (?Ylu(Gstǥ X[O0X$I[E8EE攠#y$;hG"Ibҍ@]":j[Y7)#"g/HYs0H$8gd"ۄ]uU|<B{`%V8`X"!!=;]X@" I>E(.<$htqGQѠ;08l%vU!:C;v9di'DggfD.} I4 <5ןnݞx'؀둱.1 :x(@0l jLNp$HVo+C#N@lxP( 8nØE0C^CƊK ˠwaH"Zɮ$qwsۋ}"3ے!f9NDIDЁ '˾$C/Dj/~Aɯ n5.l|!ɡ=HnI[N'+N,ks nWPfcZ\g 'eW߽u$ }-o_>zwv"~*Nq{$1lUmבwBۣDz5t493,pC|rB$!srFXms \6{m E0C%$iqcH"fWlWO˷9n9 NE7G!TLs=v IC6Qr^$8@)EGgNtƗ\8i4b_ '#'Ȱ  IF+jPA =>vu "I0+{&${x鐄7W yaK J2P.P!ccO8^$svt\"N>:p|%l)=ߖ6$'m$$clWu iwNwbӪL!@'H"`R'$qyC`!^dCe[X7o>U Tq'Yxݠɿg-̸3q2禒$қG.];^=މ*ho6F"K}$|\6;[;$dAl lmi^P+H&I'-3pۀOA:9z6UQ2ʻ,I #†OL.pmЗ=yf3k@oqIAslWb<ٻA鮫j cE`(=7C1_G1(lgtI|@%I0, :U;Jݓz5%}MD:Dѣ}gW7!g]@WHaHbD FLִm3(ިq<J:e=hH0&=7d2CoTTE$7SI[5IxP62$aɗ5\8+g$.&2a'$ H% d. @wO*4(2!dMtڶ^2jF > !I6=p"y y=$0]xeB!Mh0G1I4<<{Mp˙ŏbK 1X!+kkJ@Y$EP/{@U~2:$F$u$hE$]X_eIB؋?EO}gs$Iaٔv]D-'MM_ZQYLM|Ǘw.A!CmS7phM)m =͐$ 4"At)=/$nHri`b~ >JLC޵Ihkk6!Dt6\5[_' V5oEu H;IF[C$o\hDM IEs$ xI$7y9,9nze^z 6q'HZMqCS'F ڦY206/D?$(Iޫ#$yJ$5\XhG*?b^$2X L)߬2I*RvI+dJ+A\$Y71bO@Ie}TLٸaoPDcQ`EKtcÅPN [4cM ̚*a5 y+)<)Zc%#Bv{) Iro-z?" Jxg"ɱZcC F%JKHt]gc36c`UNtUd`ݙ2)I~N a0#u():y$.Ù־Μ`KT%FH3h1gQ|1V$zIg\EcU$)6͔\ƌܙ] O=[%v@eLҼ$1THrt`J+sC3a+JА\Z_ч!IΧR #6}/HR*J&A{"IT*HR*J}*JRi$RTڧ"IT*HR*J}*JRinB}RTz$ ڏdT*N$o͡z߶)T*;}=&ɴ?R B[T&$*g$$/*JW.$yhhnC_v̗.giJ{H2.I/~ILr;tޟ:tTz$C}bݠ#uȺVڭ"ɐ >i^?uHC߸l;]c>WuI?]L:]wIe$UCw:<~,$iIVM6fon*i,HΌc$[G%'vst4I˹XY%{+P|%x7.moa|9c.JE INӑO2l]Q%sy|$U?a@M®[ 0q(Z4F_ZFxNtW䰕X$9MGfˇ={uzLz.$I2Cbzէ6/`3-V1o*l Fܾ3I멹?5̂)91^#O$F$O}-`FHY$XDS/GP 1jvwOq׶bI 4I|#ݣoCФFMcq$g>$a\C$$7ܟ$v/Ib^%?#lmIB9؊lw,iJ滜>_RȟXUcXɦjZF2\x~ IitHF<իD$lIB5x]棭#I}rm$ DHE4~/ EZIOZ!fn[YL^ K w!GNcyIt I`uxe$MS% lվ8e7Ze,kgK$}{_l'#K*5t.3"x3hVVhwqVP%0#j<㴍J6w^I]wI}[4iOLĪbG]H7J6o$ȅt|EgR$+H~Ko 9[{!Y@́Z$%aG_W>[/j?] N>C鼺;N|$_eijČF]ۜh#gjK/f_l<#!hjCD3)Ƌ,VY 0b|Bs9xGi!O)wId<>JFl#Iˁ4Z X߾m+z6K$`/&-aMIŢ+C_B $$kߐM6LD6! K I(S$FI5 ZZhQ;z8nSofZ H'}`G & EՄŗ,oBMao?^[v$:zdFr'>D|1OyK4A֟h:$5Du!f("h#Ib l {fD>{S90~y.[_z/I%"[`ZUah"I0XuZ">i?`4 ;Ywpko"[9es׀@I$d[X0qvp?.:5R$Uv[:#H2+' AG ۛs96}7l" #MNk$P`Wv!(2oy͗$1\=|鑄dEU'AjU+!Is| ^CI^ǵ<9|vUŀ_Klr$Bf,}q)^M_MAU0^l6O.jkY͸;~맙z|,ŀ$4P3q饭3aZ԰FDnDq$2 .)QT0$AnG!mA9gvD.Ic$ zcS{[Li@h;T"IZ}wU)hd {t[&2C<14 MS@;6v L$JT$QIaB 7/tz9e(v(`A(f%6$C D P $K#(I)&l16Dփ9RL:Ss [鑄];CV.O>!IV$aaJLڧYn z3MH^S6% Ԭu#H2cP$ + +t}?OݓЄ5M5Z0_sg o9Z#A!rnh3 lRl6V"p#v伜Y $ik,8= Si]$鱘8I؂#IDz+=[b,ˏ7Bl-kM\93/ytY.^ܔ _JHBS ɑ7z1=7Ib&Ir$i;ZPvaCO} $!8{$\+}yv&:0mI²X"Ɍ? ֳQ[MI^ fmزlɋ'HdH&  $ PFW@R:^$y ]x:OC_5ѳ_W<i s>GA#gy-"9'IO7`0}&\ݞ$qO^ؔ^s($=(E`IHf}f lEilРQ} Y`,EO?cIR yJ" .ǍD>cUFEҳt#I#]эH;}*}~c)I1\ZCT$)=Mz]>b`^HHR*nO.Wd$ tV4"IT*HR*J}:$]T*v@T}״;7PT*q$97$ kWvP*Jge~̇Hr_T=,JuI֯.;'eL5_W*PIb\*ao|}߆vL~?zKnXnDO>u|sZ}R[K?$1IjD ^+ś$#bw)MJj'IMHr;rY7l: ?$_39.EG ֶIravu.?{xW,"+6"D,Ȟ"AK`cH<~ uODO 2ot; o*n>\;佸h_XTC\?3SʿĻi (`7.}";\w'yyL{3>` ,ƺ^`fTIj7Rg 81V ߖ/z:}:ktQ$/g,H{އck|LuI$X0MX+PBr%)dJNe0Ӗ /0y5nEm}<䁔DžKMIΠcd;}ү ^a^NiP^-d^gcxʐv ybzĶ X:(lzWk#2 ߦIr O?}&7 ;܂$bvd S:65B%6$ 7ӪU$a:3g`̸NGڕ FdaיS6ln^Z>IEg3k#$1a:w&a'dI{͌@VCmL7t/b@I|BwɴX[L,,G&^];HM 4陱Naw u8RʫdGd Haey['tH^;1&$۟XnQ h#7$(q} ǘlztsк9k2, H4sO7G10>E%A#$yHSIjIBA8F!IhZR@ydI)9*| Ld-n XqBf$dq]IR4ϼf蠾R1*I$ ER46ߦtɢ ^7ɍhWVBi2oKz.T4D/kI&&wIdŸrI@SU~$:]Yt$qtʑ$DMnNz ͧI/c>%V3KeR|0[gB)`ռHD_Z-b27f8u1p[ƫ{-v$I11bL SF78I^6$6}xEU舕_`\MXVD$-I?}*X:p쨮Qe^$uI~5$9i:Rp5:GZ$]S;!IHȅ$:$nL6JT4$HBRc\*EE9];tb$I*j=Hz%HQ`^f2#CNfyxf1OHA+]R%Id$Q&}Q 2 ˑDD; ٕA O}:K U$$3 $H§\Q}'Ed`J\a;C.[RCQI;t+ހ/@PBCuc<SƓoܗ'I/a|ΒZ46ٻta}颤$TB$ WG0K4$Q 8j[DR3Ģ2o$$oo-IqvTm%N(:}ƪ\~2(TDVۨ \"޼$ +vq.ZsYSUQ)x$ |.I bz$qf I0d$T`ryGA^^ȏ9Ȓ bfUHY9D%@{n0QF%: _'il$+qLŒ$h' 3wݺ6Bɚ@;4o&SEoTWv ,"H[7svk&ٙ ,^DMEZjtMCG;D)9" 5<@Ƚ+P>$zuBH']tL"I$c9svcEw$1b_XJ|V\]QOX"&ZXÃtjF v9 ' GHI`7 jd2b)l(ȑ߿Kr `(4 ]CEJwҲnQm |5(w8GI;̉PaȒ fERJiM}+HI b96rnO$t|7B67ipFvIK9KERn )L2Uz3G8cx \#P)a*m%IX>8ቧKϋs{x+G\PRRT$NIK}Gc?~OHSyrwuucWj5 8R;nIJk|(Jޔ$+sJb\2h\C4;CB +O xN0ERi ]HR$h´"4u<`IB *zMq%?DBHR*mU~ $U~&d!_?#B~$6}դC=IJR(KnxP Ţ3pZ[:HTz$HUTڪ3')H3< *IJfT$y6T$)>>N"IT*eUG"IT*eU=I3RFGLw'IWo*PJRi@O'~N+Ja}+I6/ƾyT*J=$豅$eHǨ*NC[7|>>wT*xѢJ2߀yBER?U$\T84$wsds }m?/Ha~+I2II@4ӝ'tm='n)H& S\ZȝFZ'Y?ΞE-MC $3Ǡ'Uf$XKYGG=N{?Eni (sU$I4y;|>rympާ;Ib|ʽ7 /--_`"7 ieqL̆xc)Hr7e01gnwlIeCI y.IVmC2;/ұNBz8:8qp5 ɫQ"OI \`l[m3GEԈߚ>$nޡO~v;Ax[KU` L^<zrG̝bW{&rb$I$e$bC IdJIv"M$ ZkAȩ4$gPא.XE cv"[А1 f }jN]6o)wT,m!:7̚]Hy)IVN9` sx"}K=͐$gkA AQ$؆tڢהF,/Hg}1Fl 5O8Ed&;Hdj4"LkW$袚D#C;̒m$`.q/Vl["oK2 4.hdyl1L)Y ˝B c봏$4orSSs$PG$F$PH+%Hvd$I|2w!zS,H!I?6:&[Gx kn* ]O.H)5_ }$QUtLeH"J F-cد`C&]xlLb##=nHaZߧH#LA6u:V9LīKhW${&] ;! EDD5ۍݹ$̒o^Ó" _,NH27E?qoA inI"Ⱥ p$ >$,uIx Fsd$hHB"HK,H_GB7r~[&U&؂NdInO;Ff޲m@r4IؑH*'I40t2HkWHIdf+I+q\͒lJD,֣puxfCR$y&sW^ɝHB-=Qg@[H֟pL-!]^?%:l$q0@6$ɬ҂X$~YBm ߋ' /' VHY$٩_0WֻJScYx0LJ% k+$M 0g+`CEyk$,axR)IID)^U wB{$Kllib˲wU7#N2lvHm]D=m9LmkC~s#fgj:KI$!F*EXEGbJrv}X2%? H]t^ IEl85uM3GɒY$6#Z[Haucŏj$_FItz/Y̿6T2 rm~ X^Γ3ey\;z],5Qϑ ":$Q&NLڍ8㣕>I yokd*&6ɧ}pSg,IA&&8L8Nѭ=_JZI_Cg4 tIBG1M y6.IJDrHwH_}|V N2dOGur zjyXTi\XA]{U$)IyT<{)Nd`g G$ q˔P|_"ItCͼ{WxbpYP#uPNTT7TIJz.Izad;: YHR*]oM,Я'riכPTP_J8kO,^*JW67n $KERW YER[O?"IT-K?"IT:@[[JAERt;?PPHR*J}*JRi"IEӆK'_R{T*y]NDZz{?{oG(J.{iW#sŞϭGRE׽O=zk:$:NP7¯/-J$po[zIѽJdM%JV?#?I +]I2->y`Fy@@@/:~'h|~f$VghHr[; s3 Wi Ik$9;Y?T$^sG9V>H!8xqx?Ew Ic3jGu~$Q67wW-:o=Ins~"$^2-P8pI>$xdVGSH;Ak<8m㻶p $4ŋL{q&^~21@̞-D:Π`"INѡ$qQ YOl[I$'m^!n4OuM>v tP͢9Hw 8}爔ኪ&0@>a,yInN֜c;c֞HCxu$N/[uϝ>I622't$j^G.38)ӫHU$GO7%4) fCb[mnFY\g|j|[//SWmqN#5)Zqjc6D<\9|4Mcc$ ?$Gf/8fhU7' ,R=Yi 9c2q"$ ,0flW3Yt(nÕی@&uQ12K6|z~8;;[BIZA)!t! y ;-HbI_2y[%з_7;kE$!>Q$7Oִ$ >f#r)>Ij=hW\$Is7>gx}$奄I#8p(8fWcyEoQv,oω7~ T(8BQ rd{dLY0Ef7/*1GZZzsKA+g2+#9٦@ΰHFIU}>$юMa8M ;rI 4Ipg;of0$T#s96m{n8@FK$Cˁ?u-*]AçYtO" ln VIH%HNOyxIHbK"‹Sr\^ Race"J" CSniK,eis!F:3{lxY.*:5>ѲbO\٨?DO2nJT0K S$kƏSH"1$F!I$R$`aGhSbe9v4PJ $Y$W}mZ\fpB ~Թ$%V }$ P*Ii7l'0`$&][M^^ۿ!u_D^whQ܀6Y&Ǎl@h2cp("lCCVDv\$\G-$eX~Dw70Ti $&Aը@&>al`BҢV8~<0ޯ_eMwW㫜MxaG9aL=rR֟DTT\q+!tF }9iͺ$ <2Y4ԅ@҃}/Gq&AI$Q<$VF pnG)nIG/e1;9{ᙌÖϐ;9%?G¯ycm$e]~ IBp$Afl I$Kn#ls;~!$doBp$ie6j˔^;Nhg7 {]s$d/rd{1f;99L,eFN$ǣ+jZY8͑$i:;.;"%䗷M' ōrc(M?2S6$ ˑ}y[g=1Fؖ&I6n ˢ,IJ|uj:p$I`p&ID=]tKo25\XKpkAb1'x.Tj;PlwQX s36i$Yrkߵ;P>NQNN2@^DGL܉sH¦\${3!sH2*㫈)뿴k e%d3x7r尸&!F[ٮ6әh FЂ%Ur=Ials41 dHҟО5|$nŤHb{$GR:"I\]enN2;Hf>"WGW[GCR%ɧ%blKb/#$1rfscl`c"4@^$2e/%K qRvſ8bH˓ I{Hs$$ArQD# cRISnnؒ \b V6clR9=܍v] lj~!%Yc[OCIb$"@ IFNI]UHR ,\t+k9Q6:u6]H:2P)GhxCL9p1 Ib Oln-HҌ$4Bɐ$hD\+Pt53f",F L=x)zMij׺kO VNjt;Cٓ. ~~JEI<'%2H"$.> uaF"fٯQ!Yz$aG5c$t=}kđa"F8I [=$ABiM&_R`vЈoÏQJERNu3ɡG}rryenz:gtx͞Gx ?Kɐ$nXg2*R>/ϝ6n8BO$ɍȌj>Wfz/sCO*K Tr9IJn#ϥM  ѭ#>Jf9ګ \ pL*m0nX|m 9LF$Q$Ƨu3^WERD}~ONx'U$)sG$UTsI)۽TzHR*"U$)JRҥO$yGKR$lT*=I%@WAT*@% :VⳘ#NDJ[$_!INe?#3X*ݒ$Cy2vGxxNN4" x|z~>ZX*yI@m9yM&wo$.Wz~QH)4lM;׿߰?g uOvk$N% H ]1IY16'Eȥ+ɼ1@Kl)}$a?]GKaxa'$9q*ݜ6)y[ˑ|Z{s' d?:W$?` g08OT9$$^f=z"Yu5z&Iڻ?EM&1/Rq BurI:KZ$@FH5[=g-tuY'?Tu-*J~1Iڑ!f!5;.4ת:Csao1h!.~I~Ik2ʩ|j鋜L1ݴLy޺ v%ɁDGMKM+A7 hq j/_d\:$@ |]q#8" )[/ac  s7D7śb;OpǦ!JBCjxCd23)ݢyg7$ɟn8KFb`O qq!Ȼc*;3I{N'%6,Ef3 Wa,INvM}:$afHDAȐ-lI* ;t0)K}P^0*,$Akӄ#䈠< >HBA;˦{munR$Oٔh"}9"g.V/e5]m`PinHw$dBj"MdIҟ W9 =1k!bMA.4aۗB7~t9|U`nfh#8`0BhA=A6L{xWߣncxEsم$mf'=G+H5C&Iĉ'@#!Pqf7~C ͠%o֦D(qx~^LF5"̣ UhRRnA$ rA.%#|Im)"$ћ" ᘫ6(WG%F{"𕃋hM%1FUص;!XP:eC{3crI>O BtHQk?\{t78~XWǐD'kc25ք Idp/ I::#fgn\1rĕ0uV }v͋i kr\:&6r3GDWzYgHbb%N[{YAe`bnMP=x9KX[ܔԌksX#JpinIGLDƚuW"IN;r4_]i=kc$aF%IjLl{w 8Z%EJ I +*x bW1Ą؅`[m1dG5CB8J2:%ټ%Jךwqy'WL|-gHCI~/(IB˵)Ƶ(bۨD&gv"W$ԛqHE8MA­nJw'A(cPg$f>A4wZP@M%5yWe>㻌>Q PI4E-?5ڴ6t"af.8@Iiʑd1uBLFêO PT"Ft1,@%즳Hk‚Ed43?$if >W ˾V-0hW%\ ]tU]4vXjPŊt(RcgO4R>$i}>IT$;ކ0% i,wI^tSI >I Ct0wfv5b*HDBf^ -8(&5݆(^:dN9ǐ$iHs7& MsHL2bm}WO"I$I(8#Hu$a $h/׼:$mM^:bcMAd3*eZe[fY<D7@Hqyɜ9#&ֈ8Ivll= A+yF=NLA!U:gdm)nXaa#N9%Je 婢tvӡ$#*_|!ճ3gcJmmG0=k]㿧O~(()_ vj(HRzq]h“LGN{ϲHRROY~ ]{gLER0}xNszc֫U$)ppSDkAHR*T sT*-IԊ$Riov>+Jҟ΃ZT*v~䏒~p9vR w&Iߠ<}K>M~0vJ7菒d\|HK-pžc_awQ.$sM8$I}hscdHZ*f7d'Z_I! ~d/#Tڮ/&Iz7xs;{`@ˎ_ݕ瓤I*}$=8IDۙ3V#G[?jvz(}P8^JHbr/CHܔyxKQtA @4Zyj H3 n$yNͷ1h}@7hDa$4(Y[$%ɚuzj3 $~f`cpqs1>4##)aj&IҬ88z.[3>ޑ}k؆y˘XՔ$ݽ Inu!)Ǖwx( ϋ}IXgvFx=H|Lfe (Y3ɻ6;q],FLBВ` Ivq214sF+|$ ߝ*$m@f[2cu_J$kkWA26DYOI_ۣ3L; I^M@x%gߌ"\m0]a14s\ȓNo!T$ЩfԺ|I2cc$ɑ0I'ٍ Mdi5r$ѣ3çD3֦$X(FhfdY8m$֖'T=ɬ%&!fLl[YF)Y%ju.vBn+O;g6hKGi$ɑrD$lJLz_ELxm!Io\II?kVM>GJ$BLwbnL M C+cf:P˩U$qR&I {f坖n.I3l4eS91)-$Y$J&,aR@G$FI$lml&Uޓ\|L)`QILz-N'DL$9%!ࠋ9j%q3i @h 2=$eI". e=$Qx͙[Iov>I0d,H'I!JF;%?$\t:=eپ,J@}&B cNŷOޯں$$$H"Qy${ݶ8$K{<+kbpX HB]dՓɔ$ tE6ձ$ "Yz=j+B gڥHIV\$nxH2.I%H$xI`{^E$ A;D*NcilT&UA$ɵoc$hQMgO0IX3IS}gmRCG׻ՐL 'L$qLB$vNR3"AR"IC2Irw8t4IϘр' 5-6ԛH"{f$ӯb:kB|:%IҪᇔ7 NI?vI$d t|$ YJWF4Cl$`-D^fH^ؼ8$H'Iw8%i8oK/H1G7bZ&fq0PIt,IG~l[Y q}$% FUaIf07-IN;y6@aC߃2(I0p߷$wùYIњ&/d-$!MEb97`NYAEn iZx f#WԚiJARi>_$:h|YIIf_~% F ̃HOs_to Idʋ# >$rG<]. <#f{4pJY;1I(JcL#I_/Ӵ6fI[u@iǛq&Ih$|.H8Xĥ>I/G$e$ E?)M|CbtݦOZx$_>ܜm[@2Vbc$q{ᙵ 'rPWA//~ȒD [$}O!IbqA, YHb`$~%\IY]@6m3 t"Ckbm% "n{Vu~PU{$@PaY {cH??$rI'=%J}h_;$b:?;Ib$]i 30Dȑĭ$i$[Bɓԏ#HYKyY>1Ix䣶/ !KLBC2HHT"nݪJ $EGgxȨt$8Mz<8ǂ\JY䗼;hs{Gd+[$iG&)A`&dtAHS^$IFk $wTA4 DrzSK0wk;HMɅ3MmVλ26Z Isԅ^ QIJ#'I$9$PpzNIEЎ\ʺ%c{˦~QِZnF>Mjk>mY~m2oHR*J!>kPRT*JT$)J>IJRO_EzT*>o"ɡ+^JQ$2l[>>yR*בH|9I~OT*H $F+P 5W$~]yGґ{}kcT:Nw&i o|; I3[?IFXElEZcƗe >$P˪<#w^#HrR=1_xɚ=H^MX4q_*u$o;[AuvB|`T:'fI!a,~d/u;z8$} +Y f׾k;`ͯ-~< }iI[ ׇ*.dh"P9!G7S<#-ά *i5Hu$23? srBiǓc( 8mE xwH·͸$x$"PdK";H`QM"<\`[!Hب>Eˢ#Hr7:|cR[b{HҬ2eWP|2tMj̶M=k+p1{)RI-c:+1X$93Hrd_$I˟;+ 6 qȍTD:% En1GhѫMQ;?)OϏLst]9o"pϷ_{,܆$d9v y.I'']KN]F;gL~0-B$ak);q)#qVKmW;! v#a&_lmqi8`1yn nv^A;ϥX0/ $Ove'H!LWILt&$+`}XKlP ;+ ]Wh^PmjL#Khz-& ?M {NNz IX~IZMx$-';$Y;|ag" 2GWQ; wVXMýQr6= V:4re$l9Ckbp _$'[t}<'ҧ$>]HQ$3I2By-5.~`Xq4?1|ҥ{ kuG oU.>$J W|(&&yGIR2g".uDx+"_1,8$ M$ OjE݀$Y`z'$zchL _Abe6/"u[!bپL0xqo#wU<7S$eyvJux%0Z䛄kE !8\9ZEkH+HpP݆jXDeDo+=yU$jhTi~fE ubCo1YZ5fv хuvwaXE}$ Srdnҁ" Rm$M$I:̪SNfΘڸR3/s d.%ӎxO}|__ I!-3AĤWtVJ^HBt Sw*gr^'CUGiՍ^x6m0%mR[C<Ȑn2Ig}t暓d`4pkV$Da\/]&Il8EOQq})X:ҋ'),AsR.I57S wGEdTƖ/z(HY?5u}IrceB1@[%1bE7yC{Byċ3W[)k%yJP"ɯmGG0f $geMfC$ 7 +L\m[]$^^k呂ˋG$D$ Yf$݉:$.zhݒ$nٚe3H =[lP~m"vje,}Qc-Цh ɯ*Bޭ6]4цdH`뮋V+E(9I2` ܥ(IZEiĆ޳HҬdѩ$~RK+ݰ0OX\a n8bmS9]h0B[Ji{PzI<]fѡIt*bhWe헏M$1eF EP"IXNT}I\+įhذ8s+GDU[jh'j)[e r)9|R:/]\y ZI/'UM|Mj.)J9[ι5 +X%cI HHF'h$Ic$a'@+tB쨋ݐQݒLz_E$F4˖V\C/Qǝ:I>).$Y~rmmmTOd:ޡF4- Igɴ<@ nkdVĈ|"$Ibbnw;B)h$aIWqdRtF$i3N{y2=f@z]LW~jH|fԘM|Œ)83!I@II~3I't0?$?[z\u!Gh-l掅ymHO"S@6c`:,V4`dL0,.M $9QfcyI$#$‡) IY#IW򤃑#Aq1 LIĠLG~@HI$yYak.&2JjvAJ$c(V1K )$Mj#`r%! MH9Iؗ/RxHy/3AYkUy4d+%y/j`a%ZpqPRӲNpX6 +5 lͦ֝'QHMyLӧ@o`CI0w7@෢8pd!"I-nAĺv4шȿ`VXË{m+H o5O=Fw]$/j$`lbҧ(%E$}[>(?PR$)>#0{e ӐMa(J(LJ5sVS}Tgh}s$1v`bJHR*}w!|^&9"0 3zDcs]|j -A5rNn:&Q(ng2NERt$ J=0O1dL*s1{f Pr;ߌ$R$x#wX kǃVe$a.$$qYIJҗ)"ʌ|jIg/Sd|$RE$9T$5adT$)J_"*J/SrIJwiؕHR*JSU$)Jߤ@*mNl[Rt¯)}$ֆ_/JIoqJ7I\GFTd'$m7Srn@t{~}$7OC[93]*%}S;I?G|ʙ['>Ja]O}ݓ&y$Ol"6젞Yؿ?U*}N]}OKn)v|'/%Irae8$$S*f}$P>g<$7LjSu$"|sq : ŰҪ$I[?XNG"M1,̋IRtWCptV?svxߏZÃEg07ӀoH({IX%:oap|B-+2QxșHBHmQJsm96n{! "⇕o 7֚C;3O{^w/Hb/??(8&T:̍9۷ۧaGޭ]-a$!Oo+_z݁g *!|^\G#r|N:s4I.$IDKl74FIc%۫C $Y:Ke޵)ܓwaS pC.QdxgCXnϯbwi>&=MFŕ 5jon/8}YXB r-XXRln.x6V$0 L^y?IVͼ-j]$qu7@PAoq;?lbMcts49%I$q{i07 )$>Ј^bR5[֋s؆"5) "M Swț\NX*MRgVa(6v2OXo017"I&O>-KC-+# AD]onT.xH ?3TsG., ?f>& "\75yxrmSۥHr\ca;L̡3I¼ ɪ.ՅEJm! x0ŋQMwD0Ϡcs1I@Hۢ,u_$淒_H&]RIJLX*`hDM5u/%'mmSvMo>-x(EIֹ|Y!1(p wCD9M^jƀ&'n$]Ip+v>OLȽAH9(_d>&PMZݷJ!TVܶ+2):G2zo,8xo[op;37$^eɝfm`<;R]Hg*0$Q{@s{mۉa㋻CuUZn"H^$}ʊ .ITL Uz$_eʆAQs׋6!|+!)8+jްtXk #xq`$w"/b'O! kM.Y[%cI$.AIb337ܓbu0âI6֝N-VйjI0C L_9&_~ 4=$l$at$Ʉ& _jd@r"pD@1娍]qx+-EU%Pujq Op8cAJI:9--!68I\57OB} `&UmdycIN'N'Xނ$ LxifNaD!IZ%I&vHD" 鳙>0bT h `}W|g]o/á!.3&;]:77R;k*z$\d̓s$/3u8$] d̆`ILSh$ Gƣ pQ}{DZ K\;!* MkbdB_&?.,~/ېD]xC VМfb,I|3/]MNB&vՃ$^رH$wXIX'49{M^c.yj]OW /ӮxgfW !\gVnQ Ih>:$6;7a.Gן!IKC>$LHBz$D#H5QsDAbC7˚N$ ƻ׷-4 SlŖELJH y`Úx%0$jH>)`Ѥs<7GD-NcMp4j.II"Kg= S_soWL޼G*"O$] ;IGJvvR[eCwwXt=StP$x H$OhƁ+3U$QYM0aME'Hʐ #* "bK`Ap^K3؂)+nbQ28'jBbIOݓT7RuIB&3j8A@6ٔH&wj3U8fޢ$`&ГI_<o$qOf3ƋfvΚP#o a$m*Cu!ȶ)fH%X[Dd:x&IR 1C$akreu3ΐ ɺ$.%I D $i$I@{ߕ`iI.\ 8Լ",Xk"[+|!`o.,$[E"IH)$IƽHz y! `$.IB܅$|zSV$* EX-%Mv=z0C3v\װ"w02ſ`*AJtI4 o8E$zc"Iw(Df3#Ij$hy$fu$g1a9ƔsD>TlSX!fuGeE8IJ_[܏,-u69%-w{!7<ɸ7aL/#HwI9@UF)6 E:$OK>dKQh=f{'1ozBz99^[K"eL8f| ߻g{3).n!Ox.;Yףqq$s^$y$)ms3AC 59$,$&MhtaPAKzZbwzXdBNdOS$"wG{$f$ x=m%.3p3H={s$Vs2E5; vIjliCwȃ$IIk*k7R"nIJ_~<^le 7~ZHee"|l*&;a,oUw$2$yۧ$V"I@wh`C=1LL=' 魠9y]L9;hqn$!/! [%P\TJTYǚB'Z=ay[5" ;Qk[;'{D\$ ;怫$E T_=K/WwcQ\e$z{a' }L4ք?#mWIJҏGWbkT*>HrjF gRI$zG.M$m`[KRis&9$[~+[T*>I_ a4z@&WT*k'I4ﲦ`4>ɦc2ՇRFGv9G-a_]G gҏv֝HHr۳OTܕYhSCoGSBmV-Hrg.}hI_* j-<zD K_FsYi3Qג$ܶ{@ i2B"…Ts!mEO-}$Ɏ{5ۿB!Y&ď[.$q##nU7V@Bį ĥ>XB,͛ wn [&IeaEg$DID$DcSlHlNV8#4S$ I)PQf %tLy\Z`Y+FrʃsF TV8mQ)^l3H[jD(HBQw0IxY$w1I۠k$xVqD8$iS:Ac1@㜌4TUYtԝ9`]Z6z>Ƨ<:Ik t+v.'$QGƣ>Ȥ}RX ",$Q`K[z&IfO($B%\ v|JW\_*4H8J 7t݈dkmu(w9~O'>$$;@be$I6o^ U[cTUVx.QpY)N~F4zOjɌ1&?#w`R< ]NG$9cE+kpvID⒯]C2t\H(ovH'd!1E'kUFs;3QrT2SFЄ LI˪60:E+MZ y!.B#0E;PV._IuC/])H1߽(I3v9GeS&[a)DDpCˆ$i}m\u|w=]$ N|)_(1JY" E+GO(% a^:Mer ;;:o`nHLHxsIpS tLLB+}I|D$J05I2j}pZW!I8n IHB<մߕY.C"UɂIp(W#հFeb)Itj$\\ IbidI$dFTN'V%IxM`$ADŖPW4HBF/r.dff$aU?6F?fuGI2cҔ͕J$ TЕd4KS 3?_[\.w|!( 5_&$I]$i2,Jfl0a$au IZ=$q$~:*$yp# гNСHEd& TJ |<$F 8|[, e,՟P-I@>e =^^ϬF}1kXd$ W-fIhCTI["Io ;nOlX4B$jem$,t*H"sg"_2ŤAҒU& Y$( B"m&IfY" .@N<.ǡGID^kӵ$)|%zHY 55>i"h(SfzH"[Z+)NG gJNsziٞ1ĸ[M圪ǒ2դ; [oޣ /|([ 10}CJ[# 4Шh Ib$]'IF6b .b$I9JN D$kSzֶ$l>90ĽGXF(7v[xRgAͮ&EȊ77d""/g:g$@" +J< O$Id,B/NwYՍ$1 ʶ^F $9ҒI3&4kjЪXFN"!I?lXDzЁډ$01۽fbあ@ dV" x?6gw^$@X0pLTH,ƽb H6젯4n4"I4'!I#BMw>3{R5%d ~ eLD^o # ŻmHx =II;~[DH4, IU@rVC]?J!SkqtԻyظ^CxP&7" m25.6i_(I >Je^'~=߫* ֗H21Dz+IdܮUY$6Ho_C]iԲ_~mYmuƪ6R@ Lz5-n$;%$/\ QIC$ Iuyn$lHtu ;$nWե`8v7rM,r⃣%ҥ 8{SjxqD#!ITK\@g{L~-YȫAY4ck0?H-`)HzPYo9< =^ɱFqYix?TɌZR\OVC-r~+x(p5ҷHf ,XH ~A.jkO?u6VAqՙ$@ c$_A:qFUAokIHOḀm#Ikcϵ$y䉔$S&InXaDr7HQOw6+?0 Iݮ {QFγ3#+\w X%uj<D[AxŐ_1 zv&IJo][0oǮs|˴$";0m$8+ObS F$}avVegav;6H2lIv.3}SldذB ɰadl{ 6W[?a|cdذa~Ⱦ$[Æ 6J$(6lذm ɰaÆ3߱ 6;{7r@c vdl>esoܷgklpI}Hg 1uߒ=SmJ,Bn3 BMw;$JӽgsHikO߬QV 9bn1Br=HF4w'<{;4 I`O oyaGũkq1sv%W9Dvsp?T>Yв$W?(ҚNVMɔ+eD"_1;'" {-΃.:OΉjƽ?. օiށsJ\N pz4x;IUX._bY>ԂTVAIcDrIR"MuWDbꁞ&+ΈwS=&coбt옲WV}ig>dMGIVA%^ra= AR=sH3&Ե$d5j>H++mX*][$IV'F>~d607r|dl5Sg?j[.P|-Hrm%IEsı5}uqdDDԴD`$ Fk5w)cAK` Q{O?$J@, uj%c`M·%a_K !+Qt>(f*]7d&9t]K'zk[*&I>`>w `@B$ǐ]I8=$B rF;D5 [ t+0Fnh$Se-Y0^wlOGD-^tv7$A1FS{ۗe[7 _j/ILhοЕ&יSK0IOwo-p+QЎAl$I\fõLd Z{'9p!0" ƅό-(%dTaZ$Q$)i}Q! f)["^!(I1 *NlF !t$5V'E$/$I$1XW,]K&tM&6nUZnf4͕"IDAU"aہk(nXnN-e Q%P0xI^K/WRJdR*=Pb!4*gySOY(,3p{g-]mt_LHBN}(d?HlzWB_ %b>z)&cnUς GMUm (II9JHԑ$iZgѺįpH7ԻOjUKJ/5li4뱫I:8\+ۘL^C ;vcIBB$*%ue Q6bIIlL5d͑4?aλɗg_^$1-*(w1hGKzIH0dmHu/o+[\$ DqܖVz7Ix XH$Y$dרV\ b":q>Q+qRࠁ Bu6x]O` L>$Jпe9B5ћqrPB;LKsYtP$ih o# M1XpD!IdI>/8FHyIkaG'nr㽇$\@pP wFɚ(z,IN\zd2p5$Yty~XB %G|}IIMCˌVH"g~@Ip*d@*@0n-(PK4<&ua 8Ufy9III؃Hb |(.zC$6~'A* + l?I^)CRդlnN^.PR4 o*qT|2g?I|!6mBy"f9xMi/IIJ7(䦽=$i" +$4,^$A$Xh$I'J!&hu5-lY fP(HFI'&*! U)l$!%7g?sLTIJb-H jOL:$"b~?MM$X6tF[9tYƖ} 莍 *ZSM.rd7r2TU $lH`gsj1d""q'IJfg$ar= A)3WW.%>|Ad]{$i2BN2#IHBvB(0g=lB$ %[.hr.I"P=$iī$ aR a;$6;IJ-kijQD;Zl5p}F=$&$QI:u/?9Uh瓴'd4owa%l׊k@QIåyqBOX=[*Id^DDXJWBgrp/sPaLHmQ"I :mM$x1_;hp-I3kO3ʮ ۸үzLf(׻pϕ4R`qbI620=$Q qHIZ$j4D*q&B)N#0N0_" E񶢥1ְde~hﶵaKHj(H?7$i~'9GBL($\֛m3p0bʹ_c2eXB#TS^o3z7,'=lre0HL#iKvn`n2c*kWl^BrX}5pFjMRntɔغB|W{HB`&I&L̹Mp^Qp4'/Cô8*: s!7b Վ\7!n iA$#J~aIa0ϖymdt>,md%!Idk~ԋѱtp&qys2Å$W$͍_B|; {q>eo$4zD8j&)ApweFNxētģs+I\L {,PCw)sk!l8`gʞ1ExϏMJ8=P!:'l\$CET]L'a<*Y:6dP{EW7P9(K5%Ʃ'wxg9x$6Af7g' ɫS[OizQ#IBaM_m$7 ~$3z7sb#&|y[Iaf34h^s\&lpo e$틟m\g٫md_6ҷя c$}O-/Asldذ%Ikz 6 B Wx 6 Y6H2lذ?c?9V~W 6l_H":-14Æ 6lFyUӷn4.۩%pl;$\K^IAo=IR]P\;J[ﯺ&~ei<@{0Љו$xj [¡EW=MUb3>eqI-;$dѧ]p&qŎ!}ᦱ:'$SG {IJ A/P# [ +]oY]^2QO%}2Q&c$;A.mz;V엞/!0":xLn $Q$Z*"^E.hPTgyYnRmó$ { eŗ9mଥB 3lr($)zll1l-d`(igo15zj`TDp$RmDϋ;9FImX$"+瓄 N]bbNH"G,-l-i@3 ; -T C.#[H"yWra^Lt-[42xJyI{컑$.+-B$=,,Z>a*" ˼h'IEr$,yuRGa.ڮ`XgŸ\ 6͈!%7ťAlMV ^,s# r_3!YD +ƗJfX+S|I !lEو[H2cu *' 5epd4B gXKīV*|뱽$z$T.tIҫI΅*IX%=b_RD"ߌr)~KH"|: DZ#EJƐ$̈́$b.`@>! 9x&4wM,pҎҺ ԓU.{mU`6EK/HR`Pޢ*%h<Ҩ?J҉{IZFxR]Kr5Ho"ǸY}ӧ=߲ ^$X$1wdLD_GVl]ՅVH OϢb H $AVŁ}8If1uZKm:&묇$$~PLMC@>M $"R%Dn!\ΌJ aTS-֋/Sh_M2IqWIȴ$Ӣ.w5B{SUo`\O)?b<9q%Ws:„rd t$[rV,45$ZIw%I>_jKT6&I4aTPD$8tD8PQfB+<דDmjڂ$uv\US`-$6kDL l%$Qj1bm⢳VQIƔin nK\DIkL6xNHyIfy$M.;[NWݟẍ́$v+r/߮Rל>CiI!yZZ4hmбBxL~y9NF*0G$DE,Q!I<IRX{D!FA)+RHN.UΩТPP7/?$rTt)/\/I4'[Eqϗ%''$B[m)I8N#I #KwjWMuL T'A0I.$a=nuMBI-'z˷)WhHH mkVvpÐmXLI%sՁ+.Iw;$9HR#ӸFIU^$6H 9,hR#/Z_ AH'%8U )N_5HBc|IHF>zA$P z$a$ :XA|lQ`>%^qd)Ofh؉z~uʩj IBX_hF{7v42"a{4I7@T2,~TBo>jZ >{2HldD{[| eLwjE֣H|L眃j Q(l8gTہ`k*δ :!"\$J=U5y.#HP0}!Ѝu~ |JͯE5=%pLC AG1ߞ7<@][6B[S2WIpٌjCsGL$9 7hݎjO!Ii  1sx*
{= ;;xVYMT"pduxX/̱`-3 ;9#GHb l@TCGhX+O4r̠'$6lذaldذaÆAaÆ "݅aÆ v'IB$?z0(4lذaOH~N~?6lذ;$_;;r?-)aîǾOXsΙ䧟E;?NaÆ٭KWo pO?t41~5xذ?h,Dϱ6$U1 rã$ca hc\6wٿ dan7?Wޱzf;$ Ih8x> I/d1@`a}t|8JkyY?,Ӻau"G[No$O{i>Auv^*W>Ξ}xiKXe#xbvr7HY$ԟlohU]&|&9lgZ3mv I> 1]!MCv`JMv #S| ^%\Ǯ%8(9Y4II@OgdӉn!ڻU_8Ç1%ѯ;4g>$f$$m^TT{bIw۽'vs SlQ8kcoza٨w1aYbbumcS9I$٫7e_L={>l%.JIiZyf$Hj[$Vfr "ڎ|&IB+mDFE'~ +   狦/@}Q$y/z(,I@;mM}vZ!{7aUL2Hۼ]L R}suZJv5T=/ݮȍXd=5$ JG\y HIZLW$m {Ymva| %ۅT7VqB AvYI2/~0m!źcIbpgo#A1Â>h6"u(tD/k*|y\WKU6f]?((I_ZqrzIDN5)ޕ{hƆEI IEMT$cX,JH`8Vd; A$Y3ήϋk89?3e֢xwi{6\}YXeu\"oQF m6jM0,0l/}IȮ'^&?/JNr h%L~Q.5e9nlD ja1?u7P.߶Є4EznunzQXIAIQ]72i;vWm\,4C9A% I#L'I>mψ$|̲I׌$sY& O %5Ed!G$ac)2[m`̲h{(yMĜLd4IvBa?a/xCD;pQ?U\$5Mtby$a$ds*(I6L, !(~.INU$va'xY{TRSOݽ+04$@2dNe$EZEɞ@|;BU0ga'Z8g|^Km$ 2%zI:2%IxZF!M[IYG1ԙ\PB*W(ψU@B,ZEBšFEH"!l%&ɺNgP~:f*NNGoE ie+ K"I*&i,/@NHRQh.f?a >$~.I&e4! & x0sӾFdF7;% JS_%ZMA@\tjLm0ݐ(*fTSHBr^)$NGs{JX(%TVfp^A.(qUèatD ?59b6n% $0J$yMM\~z6Ս&Ʉ$ȉT7z"WILeY ӲW$gw@frP5h!ꊰ޵lX Ȓ'R;d6lָ0⮎οfd .'4( QJj]2h3U`8]]RFH$ȚXl\!&5}Z:$I6 @$bv$.(`\Fz]]an%IYs[ =v.~(Q#2mQSϱ^~v7H! ckߴuBtq)%HCP]l97$Fb"?XC/I¥?ZJ =`@+UE(FM'A/䪙@8BC MCZ4mK׸E H4:$ozX1[`R(oȖ$Ivhf͙( ,~$GXM 9q>]s}+nH$1›) \zwK 7;H"=L3%IX$nۿ:bre/oCOH$#yJ+a:($ 9&ZMKa sv% 65HF(.$A;1 ^&G̿[\)DJ;6J.\h O!q6k6IhvlhV%?Y왑obR>кӺ[3G2IJ4ap;i$=؍.pT \`t&$5͒#@ʮFz: #u-.Zc(G =52:G}6Hr(l:uЯ'ㆺ+5f@ >_S.W︀$TRkb:[A.ܣ i]3=$3ԏ꿘:g6$;i7I6lV6H2ywI"ɰa ɰ_z 6 { vMޖ7$6f(aAaÆUmK2 ɰaÆ g&IŀaÆ=$D aÆy{0Iw/[{ C\䜸$d #4lذ璤 s e0UGϾÆ=$?X'noP7 B4kI&{x6l }$igywӭw/~7E2M|W4iP O┼Y~u HM5vW=SP7ԶгԻ vؼmWGK+˽/3DNF.46tɆlWX$ͺv$?R{f/ӱ/O7`Q{g;m3IX$lijI|(IN:,W"B# jɌʀкB4$3Iҵ?n ovdc#4n}1 ȫWơ$eړoWfִOV[ڄC:*M~$G8rO9&;m1s8.7e< HruQl܋X d'fo8I1]N:LbӘba+IPЊ4W@V jI,[W*tjMO Kv6^9P!N$Sh :-:UܳM, vKt$$Gd }m]U3?Hnml;HՍX6~|*yL4M%ߺ~lqLls-YZŗ:>?8Fץ$M^E=}NIzn1琄2lDl˩:IZk=';mũ1@0b`A?$W/X-:L5F]H8IHKRh'5f@yo$tzC~1I]dHɜHN LڼuM"I$L_LOXkUmG|F;6ٖcuIYZO>f}D ߈x',\MzaY1IdUCP()tce8|Ӻ-z4I(#KB[IK, LҌ ?Yq 4n~.2w{$cM^%.pr {c@=$, _z-dĒ:Y. W/' KIƀ Fh9y$ HM#7$YKLQJ,OI"h2քe3eȶ溙afs2m"&u'T+Ģ%Q \H]x#1J_wO!ԍH$vId瑽*"+N/m$rk0 V+IfMF% % M$)&A#1׋B} [g .)fȑD\Ioב$\;b^D I>+!c'HT<3ȲLÈt$)EDd@1AV[ג$n8Y  +Ɍa+Jdu ~FϦC8ho(?]+Kyá:Il=$D 6vUKHR#I&Bg\ e5 IQdU+:FGp8I•F;Z6[ Lt Zjolm~MBYL(7szTʶS6hFyG:?vFl q*m%KL**:W% ozz*i,D&8uV1$Q,>d $2p?M|Hʺ, V[Mn21W L ]$$.s}^N^ua&D$bϮLK$#VJ(` jj$H"7nT$Mx[u 2X8$nZй$ȼxA@c?Kfx'k9R6Wh5$av!D"nIp֏$d̀nhB`$!S^o+ ppAmQTUI $|}!TLx]} WW3s/w-j"&$Ma[̱\;H"=>xg1H.' <$&Z1]T(޶$NI4Cn^V& ${I²d$!%Y!U$$a)@@Jk+(\Isr=$DT7X *6$Bu2^"f_A/Iz@$FVߺB4&gOa>%Mٷ1EuU./eF$k6LUI괵BDKPhv;bFlQ"5-hS7k6OItz-ױУa[.IReIrfD_>%I{IIT`H,A)1/>$ ݧai$Jk+"L.ܔS\$۞j8UϛrV%r~ۮ /p,& jDJPd6uB><">t PZe79j^;mRP7g@$$?"W:t8I4$A&w:&("I:IRJuxIvuSC`FZ5~u_$m7u;| 8P..:zoŒ\距#B"ԋǛab&I'r.D/ 6K"h98T*" && K +!I q-' "B58$ϴ`Q :b--{ށ-$H8 e"4Ĩl!~0˶O$u4׫.pU ȝ$j&7D|PBr겡5A3HrD*ؐ-ٯD 5"<&Xl/9&jR  3|.݆⫒6$0BH(ĀED'o'"I\ p_ 0c:Iba<$B,_I*$zW`QxrUm,)WotZ~I-6e-1DH[!HҼ sފ!5Iؿ&ډѝAazI3k*lڻtOɔp~T.iB¬! oEDI!lGUF d}ٌ$A+` z/!$!P$d=߰kl 2x<s_C+N8T%H $!u遞w|#^^Sc=Ȅg%wlkv!$Q 1\g乪ў F/XD.7 Tikas= ͶHb8Wz/Dp$i;'O;1ItK,&H*6HBLNjצgF._̾#=;0m R\\v+H[H>qAc;;ߚq$KVm[4HU! #N/r%0_SgJ%uII|F#c +Z;] zAak$$~JܐĨIq@_Im{\?0lؗ؆3:9-~Y08p }nذa"Ka"M4H2lذad=. ɰaÆ}=S-$Æ Uv{6H2lذae; 6lؗ;H2lذa ɰaÆ g_FN6l؟$N*o 6lm$["$Æ v]O~%7}ذaþdGmBI#$X<a@JO<ƒ`an &kIY)0'I ~%y̻-&ɟy+.1D~vd릳 |Ib +g$-fPpj{HQԟ%ɳ:f}գ$Ii[2޲ؖpn ś-?M[&';t*X: 5Mo \UmSر$!| W$[㒻ZX/U|eޑi=C2l=m>{# oːƾyNnCH -Ɂ_^WBg/\;(L> đ c'-SVժ1O\|^Sk-m'︓C ^APY!ޗbYlt8SR5.d&žZ]}-IBU鑜nݻkl#?yeI`-/BTHgIizJy՜M0!q*;ѣ`W2tHd#_$Ir'vI=$ $Gi4<9]0\d(l]mڳUőܔTLpatjNi&wҍ|ƆMVlU$d_G|֙0+,%F,Ňg3e7d`sno=+>e83fs& F&X&pY-ߠBJa SSqϤyIƄtf|EIv>Nb쥹D݆Ÿd !P2ȇO?V#YZU٫!2p %4[]!^xHٽ\-% WwDggFDIS0DN>2Lxt\ǒ"%o2av$2Z1Ty04k~8xI2v$9-!IT_A^N%I%<." >xњkBpP~fu,'l3@;*^ pKjzlk 2ODKnfb'I$(iL4WYsIfx"t* 'Iv4Ip(IxMb85IK%}՗ ^IL捷CHLVc9Ke@ˠ ֬H`NP{$VaxCmܪ}'*'M;N$D]l3  pEo t:$mCچDV!b/f=d(*aln7?J$~6<Nj$qSܫdjnO8.;c.AB R$.lN;9IJŠP7q_NăI§4!{^3 ޢ.S& ۿ&ٗh$ XTFp 6=" %;͌/֛aYH fbnr,${khn{ͯG:& NYU%͟Vhs3QF'FK m$Q 7$yxHk\7a- g(@XҒPRnIN+%6i~o_br ɞqa%ehI|$49'Iie@ %O E +%:zHޕgJq/IĦgg^>x|.' P(dSn p`H0y'$ cM4Mbӄ:HtB?ʃM$^΋9Bq-*SK/OZYZUCuQEox!h,L]& / DБmq5$AauI4nK)U6SQ&5.ǰB]' Ɉ$2I@Cu$iQdCpAB6FpEsD w,J$ BLPESHR1jQvBӈ51f?헇 I,cѴ$H#2اQ?ú[N])I ҹ&mTINW“I3$!^jvJzE'j@eMI.,u2)B.! THQUM/B5UadבijB8DE >Cn$ dz$A\xcH+'IdC9IRhխII Im븞u$z>I:?q-$ɡJ% $Igt$p`w,آb`]} 6C T Dm@ԟ[$PKaIsg !n]:QP&E2:Hb:68%yvm'gSaYwGI#9*7:Hrp'yzr {6HIrL|I,n&I~F{InCɟ$ɑ, Prӭ#Irrg_m&{^nݘ${Bz>I4(iq~$iTM>t+4Wl+IܗHf'=i(bp >Sqc v>w| vާ[$J~y>3f0 Guښ+b9Q܀PU_[)u I^mJwѽm3D`܂3'ߜ$ Ui]?S3X zؚz?e]ΞKi+ JI2,DZε#Ibߚ1o02E5AH|A<{%O$ (LJu>% u~ |J ;;',+I/rU>Jw݋`BwL̈́ wi#mJ;t5#Q߷'$riʴzrNyO$@I՞tf:v>(eӌC'z$DƉz*CL8k HySSPϟ97a cƗU3ir IN48ol_r]˩vIloxgtCKRص0H (di_w&Y; %۠mn]r{1ep [o #mLą7KOؗ LHqM$qu^jHBE22j3b2F SV6R5z5)Ih?DϓU# "k1!z(I(H)Nj+o쓞խ[oHry&a/bH^ 0D!:I[r7ǩ%TdHIx-"h#ANK$i1T@6leb8\u]|br"Yl,_A pvb"Ͻ٧ "aB/TT!Bdž7%Sjlm݈$JA $nL~)s {ol>FG`S{jXI[[auۖv/'lrn$Q{ό$nTH2CI7d֓4_Gdbm5Hs]3!]1|!4A2+g{HiF Ԫʖ ƫD_hiznI\#haёӐ[Ѫ'Mg^˧_DU$)JM%Iez<6usABO1oW.$sTSτ.$ JϽ蛝MsM7H bi 2fܺR1TFXa"; ?T=3Sk<"$Jun.7ĬͼF,[o4&$SpIHͤ>9x-V݌b_DAՋ(hP{}\9Q+ww D*ekb~i 3 Jv$<*~$Lxb!XI !ҞT,NVH…@,I+ Ix´y/4TWk˷%$ 1% GA@l mM֢z/@m9 IbZu潋e (Va $~CHZ:&"Kw)ՐP" R+BNt,2Υ+cISk;I (r1ڲQ$s^L}Z6" $K6\J3vI ڔ+T$ ۓHo*j%LDcJĭ҃)W#Tƀ$%u,8yu$]4Gc$? ϲwXԢXe/dI!Ij >AD 7~%cMi4A$/i\#dP&2Ums7M+Bu}<>tDQt$r :n% tXD4P% Riu t}Ω "AE؍VV&}2ods-LzIHt=06ߩMC;dO/qǣ1L]q Ih`%D /(ܾN>(CHA1j>B;,)A_1 W::H"qP $qBI–"m5*o!I )@..ćL#- D +'Vs?IhpänJo!I3t j I^8;$\v$J9]MzIHb+dF'xAEdI@BʓPh7 ,,JW{ADI;N 4|%`ߢd{fbW[&/U|2I}=$Gh¥cX75J^hP|$@={v1.auÊ}!IE M{&H@ÿv ,(D] Id +<> c{)0nHDldy&6lRs!0lƃ~xOH4Q҇$SjQ ]=nȃAaٓ@hU#rX;rdS`!4³ 7 on+W{g EǪ.$v=$=!'UO"I9xbo@nDHҮԭϷIg۟o°doȌ ֬ԍ0H2D߽'NᩳK ɰcz?k6H2lذ+(e$Æ Žzu3$6l%v0%r;H 1aÆu;F6Gupd@?#z1lذQ4:;$W]uquذaîo' ݕ8K 6/'ZF8۸<-XsÆ ؾ}wS$|b);l uOnذa־S礯o$L6QEܔ-bu\.RyчK{^Axt!(sw8ӎ3%Fx¬.l~EX҈p3ΫӋ럋̣wm6fMiisE9Iq;Jv|n ~^i_8<$N01ڜؓHrb–& c&R#UK$V|ؼ q5 UTA:zkxK7/țԲj=zp2b:6mIB4^w>-ܱ_;SX n%8^(H$a˪ Jԁ50Xa+c5GlL>.}-ɵtn6T.|6O8gk]2$Ow'Q==;'ʙ$! llqI;Si'$ݳH"šGVy N,Ee"; 3 )[IH"O7*W8}i!sm2CztzD`Ix=yc  YBn$pILm[c^! z#l_ D3(nDnڎqvm$3/(萦TV=朼[-!\[}c15kH&J'}$`%FI؎5um9w5STJ*/W(K-cjT<2&ӤL$nf6ȼcjԃ]$oaz(a$a{7FbwSG!=jn IBM92T }$ʯ&fxJ% u$1&DQ)S (AqYjFx d p^(& |6&~ٛ$l;lq憂W/0CxY]k?CI $akw(r$8jFڿE/L5$lM<a9wBcW6+DNAIP~B.ϴA2X-TV@EJ[Y//j(}U [=~$L5$4'D&n! (nc+ţt{I.>w8UHg+ dX[&[VV[ cXl/W,`R nɮmzⴚ T-p~vIXI>>CNq$ &D X*$aI\Fǖ|BD RCFƔ5/U܍01ز-jEWHb[0xk k,`BGDMyrMDx 's'$%E]$cK I@djB<-S7$ITY>IDSI1;RB`+N%)GӶd*L]x DjGgN5uH@qpKVB JN# &*j*IPml t8HD5Y$WΘURK$q+r9{d1QwUd4Mbk`ОFygNvD@<$%IhOsVd]嫚3@)I¶xtte8U´Q3q.P& oO9Ҁ)+WI|ʤ{ywUH& kXV\(ؑL$+/$a<ۊ$L7|QO&lfLh4hhcKILš$QI߫& .cH6EIUM|$I<ŃX$ "!Nr8$;!I`*$0;O",ubd Jg>ŦA:m4}^KbޛZ/R`E8O CT$I&6dV@Q$C r!*.l{G!I#5[HRHln&  [,[HCkm|qLaN,> ~9gpZOII" =u}M(FNg_ Jͪ)~J;%I4Ie1A%-3 mBɄ/$ }H&+d 9ݙ稐ħPTiC@^5HWDt}Yq8.*$񹻝$3# inFbUȅ hqczf o 6ך HҖUSl)+7 nmiba L ' L>Ԟ^apI.!cI%>y"]O'6biYd'I}RV>ݽuYBP$5Cvݡ'0["3 $ѥ :\ni*d[(4 6Hr)1/4L$lj/C/n6EًHvAhw»f9z|Qẜ$뇓&_AGB8x+|^\Q-хJw#چX.XSE[$ 'fXdUcboKPTvb%J# \%9x$M:o6Hrp$y p."n!U$i_y$~9#I:< ) )d$E<` ulz&If^ah:l1@dgk/K R] *V=B5g5ޘz5Bd~>0t̗vӭah!v0/MSpo]>g̓FriE C}*PȶS!z37Ã$8adVt$OP?3>ֵ@`Ampǎ$ɘw vIbߧr z5H2g7Vþj8-CG$0;aÞlBaQ< ɰ_a_i$Æ 6lEo!y;AaÆ :<$Æ vş7_x 6lГy}IvѰaÆh c$~ 6l} I: wXEtCvaÆ ;ž$|w?cզ=~BcذamOv$$9xsaþ͞p$?waþ)`)ǛuzRmiΪdfB`T/j&L4ub<">qu Ɂv7q6ObS'?f*XB"fSU#A-9;9ف0HrOqӭC %߇MI<|U@ cbT& ;[LxBv;ne v$ ZKf9'7e9F$d7}F;2Zn=$^w`k*>%I:R~m䈅BݷDggc9dK<7+B;5=Qz]f' 2Ey $)Irf~7ohW"o+XJu3PuD+\q/VY^EMp u`.rJ?Df=sQ> ,"c LmGs%A]F$kHr\'l}#Y$Y΃2;w]$Y|IHbpϯ&6 _Cunۀ_O=[T-шtWE&)v!(߈U ݸP8>CMM%wSikj0IB,**uIM<4((R;h+ƷIW zDG?~W +;By"̂aɗMT{^$iO$;(eg j8(h0! . HR\ǑvגєĻYjIqXLW$agImu{6ld4YW5O3,E^ŠҿayY/r;BdQxiu:?C}Ҳ_,0[H"ԍPNz;"m" V;)C뮛Th)~R='%+`ۡm2ElH5R3 $KkeQ Yꝏ#N\K3R-wF;$j$sIA lIh_/I6.#+p IU yFdJ$A:bkD!}=, OQyK}9Yy Ƭ; J  Y~l ޿iQHBWH+҆BO)*sʍFC_MmmHkf<(a琄u'I~}$t߄YZv4^Bܩ+~I jGeAC$~̥_lijQU$I4%I*_SM$lCB^0ZU%<P~x$ k))) rI翅j*f+#6DV') ;Z#$ðm3qMHR&S*T$i_$jN@JA| C28&};&3r ?D%`[QǙs?IԘјð$}a&$a~ HV$`xI8/kXˆn0e$ nf~@vMd@UIbD^ 8 VIC+o\cnciդltI Ie)-H ^.h( W-WH"kƻ ͒(@ϟtkJ*N1LI[[pI\d@EIl /Z߰sHa X ((IB_k? rϐY9^ZY$E(#I'\[a_\%JVG@mkۂAZ|S*Φy?eQqW6s7Ēd9N @ՠ[oZv `#V($ % JW+?'IFIIRa]bD:]+jQJ!NϿXc`NHb(PC;F!PRP!xHb]@w$:I2 ἰN.8ثI{iE,d~GV0H=}Ӭ5yZ*FH@s[yK1fiLEH!mGI $z`:%"t*nakXa$$PI45ky19nadH6FgQ%IFwnF 4${0kQBR;)UR$"toqj~@s\$&B2/5{+: >PH2.T$$WáL*HHr;oA713 ts"yJrفЋ'4~1gJ{IL=k&H"]'EOnnn8^f뜃$v@;`m5ٟh^x?OyXHR1$HI$itQ?+/lIza/&ܑC!$e=!p+VF`c4= |}z>9X/Iu?H2YZ#pbdLH"]_egeB8"t&79%Ф["$]/ϤI$tGH"IQ]?$$Ig_%D$4uw@-CI 5uſϱoܢ$I9[_ո_z{$IoH2h ďH' O %IJt }wHx߭Z*I m$[t_~tE_$iN ɇ!~N'4H+t=Hr}[}{$z݃$y&2׎=M}}tN ɺlʽdR9sfoo$]$\.3>2Nz $9;~{{{$}F8 .>WC`(X1ِI5B$$ 11}c uHji33lp])lIwIb+3I`ג3uޙh!Xa*\,I(*G<}2L^HHf=#/cHƬU!*`J a8G^@%5`""$_o a:8u(O<$9.)Bx!{>$)+$8#^8m2.`$II$i'6[8OiK)Im08}x/BҚgI{NlKŻG6hz0JI3@H$ĽYq3--FL bx6p[k UDIdk,v5MpK$ 6Khj;89 /J1I%'ɋDBj#j#c$CvI. ,c1: Ҫ]Y؞%# %;"iGHr5{i|2#{DXB Pvx)N.zȊGz7-=sQ`3JZ.I?%:+YD;Ftz '>I_,JqGIвbt:I$G`8Yҹ _BA倨"lw(5$DiR) p=zS1ͲsH"IP"e=V b I$I$>II$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$"I$IJ$IMFIr2K lJ$I5͒d,_u(I$IާIbd.Xa$$I?}?8&&SOȤH$I5$H?$y@a5{zzi^$$I8I!z9$ Ku$P"ItdQZ"Il$*H$C$1{49I5B"}oQ$B!II<>H $IP'dgt6|Xk$Ƶ~^$IZ#_M!s}J$I-HIط4G$IzIlnwb}51ݲ%ISt-$OwG$ILP'$_cga$I43{k iF0"I)`$IB$ Ԙ$VUJEk)#_"$Iҙ:$^&:n;{f^$IV$$I>P"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$IkJ $It$(&|6ef$IԙH$/9I$I/I8/2FlIRD$Iz~byVʋ+I~@L>E$|Z$i>/-0s՝G??$L$|>EVLt54$M.$b$߬7}3$ =xKV2Zؚ7"OC'7{̡ZG2h͚'%fH"3ꑘښ8v+zkY#F[8OVW?3$9+wW;޸4D6C NGt(gV.b-POK"fKB5PklT7g.lfl8S\l,fG!6Hi΅wI|<-:*$%dt1ܸy I[Hbq l]miHx b-ț1G<"ӇHV =O?$.y$}2:>$晵D#$AݐmxCym4xW_Y3cPAH̶O!jh2Y%F5$ ew2\tj$oliC$i lM4$HԪ%q2KnE`z$IV( Qr1I(,Ƽ|"\4x8ޗHAWGKVBEbח3cum.! x? Q Idwu߹56:L2;$Yw4++ v_|$͙$if.X$-$1KIZO&Is 0s0IH^D1VRs߲5:_z5IXݨk^۞ -c_ddȾIF#6`#>0lXwwzmH2%?[|JH"т|-Il?%s t$1 HBۡjM|$`}wr ~?;SH⢛dܕ ' ($yV^0 H HBkJG ,܁$I_B%#$*Ih-$a4pey>/$/:$9B<:n6Ь~RoVȹ]fA) CDN0 D|$+ՙӦk$ ͓dʤ ZFJ ,I$vT&ߥq'&^^oΐ|VmHBE5ǹ c0xF6(Gbq4a֠όg#X[%#V1Dk]Mzљ,$N bTU ) IPe:$g׼$\DN:"i%6xh6YO?h-Ap^1~i:52RAְɃ;PIF_%@#<!K{}X^CN&I )Uf$ ~wq_6 .JfQz  έ}P8i\tWM$|b2Dӈ$h޹$P!'v0w$9$q9IÔHr>nyvǐ$ 2G[Ꮙ0T,nEGusH#aHa"M70E\ IZ3H'Ia["`ȟ[17Ȗ #:2K}IG=,!delq~Vo.KIҙ$0DFWXg$ #HN {5cN1DN@'V2Aqe4L' F93k.v$! "IL!!IFu &5;7I$HnnMT0Rh}A˟B5v}Y)˲b~UvZpii .J ,KN@ I|_H2}?DqJľbrK@C " 4z $3vA텿8%QF$:gZDR" IΖPtƙV+ZGIh2$|L}GߩHɏ}L~lgu'M:Fi/n4;ڰDҶw|Q—dc?>Z$X80֞OY%O1)ޭ" $~fp|m|k}9D-GIK&>,kήm?'vTRs!HLh'-_ n&^'Fԗ&/!M6wo"h4`KsMw۔ vH1I[>B};YX[63rs )_?LLc2 Y=$k$ q fL2PzRx!l(#utU=PkTpѝpzU:wNdy`SF;Pr$i@$1sDxWI! xTktrmm[H@cmO"g,B_L6%ӕg3!M>50I%>>zh>I$f0$`yA8^ (BZbR<6/h0 qmcsDpjYٰ=Ald/1g$Dv4l|fHBӋY#$(g$(nz`wHLphRh*&o,9rlmgj'}&P IIFM1;CuJFB_Zn4 = Da'^($ :Z~9 ɭ$ SOa 8EuLS͕0Pz$"V|D !8$dC# +}Dp&Ǵ,|Bu;55I9Lא ,Iʟo`^Ȼ1YH_$cR{0]LƪIz\@dƕgi_ i.9At;A0Vfjh&]p1=lf6{1HZwfNf-Zo]IuIbf+Iѐty$ae] &e!I^;/<it IkYJ=N}{bӣ@ m$Apm9ϖa>$i G!HMhxmHBQ(Io-kC$yI Բyȿ$|6a$l mGIB`٬Kz%ѩз puu=|uA:9Q6<Yd`XS⎹O \ҽ [ SGde$)IX8O"ǟ|I8005q a-.@$OP/!bHprTWuNX8sL~=)?N-pǿwك A22)y $Cb/61g$e%A$=7Q_U]} I631<< IslϽ$mAkR3>Y7FRg3qgs%' (F;G6 H"%_|~Qe}!Z}+Iw$t ;~?|"I0B/&Iwo:@ #$yr$3DKwn[ݤ鿅aZDqjv<$ 2h Pp0*hXYm0sj9N$BvVH2BR Scȁy$"KHF>c($q$\QYي/oHb̋SaM ,)x#fcӘ*]OJ$> locKIR;$ [>$Lp $]⭯03 /O$ v7 I\&M'š m$y?fc3>@H·03-.1QTK}X6k1TE,&e)z U=$1nqߩa@$Iy[<%.#GCHo5GfwוʞR&59(FCm0H.}ʼoSx$8#||ȷ,^@- IxY'#rI*VI9,WtdadG#$tH/0Cd/MzWuoBXKrHGHl zZIbIȌHf1; p8 'Ny.Ȳ$9Wt$5:มS!dtȐ!RL>=1A bY  :IO 4."dtb$u=73c=LUIbg]4p(HR4^;"Arj +-!43ϟAQ$ PЙO]6/j|v#S a%Ve*|׸ %0 1 dQ$:$IR|!Nl?3#ۍir*gϓ%8:N5 Nu JgN$L%{-,fyFd"|(ϫI^ۍi$w>kj7>7 4al^ܳ% 5ԉH< ZNB 9z=Kى &(HTRN'};;{"Mr7Zp(ĸIА"N>ܖ菎L!QDO>@_o'\y~:&_񲾤ri+pgb$A7|!=dpfHEoW绹vJFč{G#wݝJeÉp$B>m mR$:"9vJ6ضȑwQ6'lV6K'HG<~ u!ZܶYGQH"}NxX *O=R;}D$$B]x~ό50 !A"H]t mH"IR_ӏ}}$9ks$y$I~묃 IN83K$z; pI?}d`Uk$I=L2aGrw~#lH$GIW; b7~e^|uI$]Ixv JJDIAh[|N8~$I)$Pr =":s/oEtgMy{O/й:Ku+:FpS fI15$7T*51M`0u⴩DSH2W/ Iu$~,j=ЌkFѽs:?^:,z ZIɓ9yvnM&?ΟQ]8;'vsw$9_Ժ%w ߳I}O-ĐN O-́]Jl9|H߮%f=GE2<|jc:>͊Ʀ篓$xsSS3'`rDBh7m6=XPw±'{m/ΣgHֳ U1?ʚ-iNk]^(E;fIbGi+׿|^]Z"[M5| a2+6W#՟M|'B'Ggg'0;JsT68$ BI↱B6,$l<̀S&I,vO0X +7jV+,(%Zo -` u<܁$x$0I7W$&0;Rj0s*Ih՟j;j*M  = FqCX5\Ѐf6bJMe]p3?YPbQ3f$1% h7GF~a؇jJG9IȸxN& IwH븐$Ft|"X/[ J$]I437ʄX!otĂs.ӥ Z,IhIJD?lu%XJJ$9Ycs$cZlx~d 4#+!Prh:c¶u;2 Q <0Ic$;E+IBC*N. ɬD:$&2vjP Mb8Iw(3210FT$A!U@=A0_q ?LC$>_/z6IO$ 4Itj[{!DPxTvmפ"u: 3$t&e1$eI[p6$!'>I"; c$\g1Z5̱flIS d4"lh v-9^{8_Gky+KeEH$y{H/̐ l !Uxbu_̮hllTt+x_5;tW %hTL57(=MK$9d6,7vKcsV`UX,L"p<>mYz+IV6~ IY"1ett>Z͙%ikp6?f6o@Ib-K7d͏ hXHv$D?zYAks<q Hª_tGY$t| q^$Vz8 m>r#{pX"4'Τ h붟szY>$ҜDߙ%ɫ$Htڛ.?ٙHˍ$4GvE?N/DSI~$*TOH0$$ISY:$1ey|g{V`<$)r[I$!ۗ$IT^nnJ:sw$97]~C>HxzMQk1?i=wfD$Cu$4HAT ~&$u$"q]wwd˅a~S:~~u!6Axޛs4)C6IBHFV{#@ðǥ@*"Շ:ק@xS cܥÖ́g?=I^hQSoyاfMd.5WMl_NaȞ)9N;72?H:E3$͂kLba@>~ eߋEiऻHbS[~ҷ#b ٞ}h{;gvZѐ% #}Nd/D$D;R.;? kSIc]M~@$W`f?Mk\"X0Ⱙf~%MǎVqs7i2u9I^s[Z4Iܴ͗v{q'# sb5Ԝ]ʻȈa>{'1/ӻ9ֽgdFZq ͍vI.͙VS4}:IBL7[]1k3 Ȭ̎p%Lvh`D\_y>S`[{64 >Qe1- 9n<4]/b;q]ud^t&AgOfK$5'%ȚflDmIl0l@xжzLa(Q!TD1{5*rvj5YWH$QL2@dm1h̴3g|`lɻGj0 HbAjpT5UCd$ a$+6(N\Nz9I(SyJz)P% F4J札)I $,b Mfr$q;ĕ3LqIؖB$9U$RwnӃ(T"I51Kk.Wy^eeiI#;.:s$`$5K;+8$0+4>!$ۦ02nbfd$Qv$,Iō$J kO5 |IbMg$-Z  " \%I  mky$q3I`^K"t$b3$(q }jv oTAyW s9'W10oXwI*"QoPDڄlqveYp/ RI<ΓN3 DwIվGIrOX#I"%gp¤hJm Ǎ5ؚT@<Hҏ58S_b'>ӈ̾$L?&;>I"q$Ixi/$N߁vƁ1+nB-l8|JBe&fv1pFIypvdz$A`ȹϹT" r4g4.~{u%II^^?\ Ss\` x9) "tC{$h4MhC"GlCo"oG& nFe##$s-B5]0Cp VZm.ےqݖ{mNYVX$ap̍?fD|4o5^G۬l b|/!IkN$V"I_st>эMZp1`1V(O"I_'IXߴ*%_Y`xڊAC$1M8l9$<*$~D\?>b$}7pG"Id̊r$ =;K (!' ;F,~C`yiB"I_oqto"qs ni1*; Fda V#I2{_T_(dKe&d(kYI[ZCo}U_\ ޙ $ϟIJ~'DI*I$RfdTH"uTz+#$%H2T%H$TH"I$I$$I$H$IszIIֵ$<qb'I$KId?n$IzљuZaQB~CI8.^>i7nUo;7_ yyI2];Ckm$o#I{@6]_NJ$zcH3h76@?,D7e$&&_B1rꡰm53Ю}tk$ٛbMn9$/U{HCzIکSta$n]ZKO^%q١mNp;6|9z7IlWQ2"duHZ}N?i;rSrTVTU/$ ~& %`7?}#^%u$pINЧxHtj;2y/'O}$(l`[S7`59@M%^Y̡D$biO Iq/fHr3*8]r5o ɆNҏOVhMbpl@zyғ?HE>!`~蠮zځ=M^QCAT\~&9]z-w!a߈!pILUJ 8q {ģhK+h:F{=?yGsT Wvʀcn~{;ٴ*۩E &ݮY,'y@᥽OJ(L/d‚oЮ t6l"Tm# ." ]rL!I8l~sYIJ[Y:s@ s"؁+x|.oz9)@bG9jIkx@3IW?kZ{uLWI=BX/5^Km=dǟ=wo" Oqm5!҃:) ů=(6KiPߚl~O$Bﰹk qcMp}1FLSW 2;"6lk AH.!\eC@Q 7B apdCe >8'4XI/ki,M7V5&E积G+#THF)=H+ X2:%`A(ImiǢA=0Ixͥ#HojC}=$$ !$XCbLf#gb+C-v^fzb}Y$1I([B$(IlKYG(rg$ g$؆xia$fMd09IFAiBeGKvjfQ&gc/?RȮò&Hy݅$,$$a+^$!'IkIʹ[ºd`$ϫ@62tt[yW-D֤i~?|W9 E΁Lb2tS|FD_T›y' $bfyf1^HOӸO 4 !I"#ܧ\>`a 8I`cK{9Ħxh}?sMIbccI &WTy:t/Ϯ~_jઢבOymIB%\[Ȇ!X$IV+I.֖|IЪ$qɯtme !^M -EC+$X՛q!ٸzxIVe$[*Ip,! AWyQR' G͝@F0.& Fok4c`M>I}r5IE#4I}g#@7^zNi43.a.)zɯʣHğ} 7)Ik>j3[7cN&|Lrg $($|.!Q$1}1I@r?z|$= ٬;@;E8ڵϮǘ S=$"(IGo)t1I(nqj5d&X $s{h:$-$AJ3taA$YCe6^MPH!ծ1-].% jCo $!xI EM3xEmHH{mPq˨M7FX/A8#wsϖИNe$,2ILIH(j.%z$1d~LR󑬽Fzӫ~SZQbjٺYΥ5. eq*~݌CUoEW"ɿJm2f }؟]h4ن5LP:{5B7/]v)IL65x!I0VM‰Tl I|s(c"mωVH/hFƴ'Ӻ@^y~}؀ YMuH0H0DN&IS`$I2hfI|GNFdU6 20L 5 i4xI=J3jc8bٶ * `$ Q!Qq1Ƈƒ rZtݼ2Jh+N1TZw$~)b[},璄pu㒟\qbq܉$Z:b#=v - \.c% >mșh37ѝg0ag_[~ɀL$uPIT Hˆl% 5Xv ے>s\y -l$oÂMq$J/* x8g &%ΡJ KTAV!ҎC7RgPp'I7$a,gmUw5Ź.I\_^MD)R;3YXm]&J$-He9|GCRlվB-10M3@L+Hc38Z]ُۭߘק$Ȃk/` JYJz\=޸k eңE!:1JX7'HB&c"=6ԉ'$XA%$0iq%}(IjLd}X1 ɪY$t% 8.o,c!Sm!7`(31;h3J9c#4 _DIp‘Ğ $ߝuII5Of*D ]ګ$oM #aVE.cpHI+1Yѹ+D,<84t'$*$mO#J\λsT +|ԲGn%gg,gX N"<0ڄ# H$tabi؁1ֱ- }h/sҠʡj^toU$9>G":>ѩ#:I 2R;|UxfzmS \H-:ьO?%1ii&;I;JI[~&~`Ew@I;~FN|DIn)$HtKòH"I->H"$IJ$$I$LJ(JI*l$IHWH"I$t~I$9ݩ>}j{?$I' %7$_z3|%uX䗟װH7K$)($3Ocg=.)wCKJ$)oH]UE$zRpH/uz?T1kAi0T%6jVklK~V=I؝׾$~2-I]8;nIBnS] z1YYV_yZ"T0a|ؙ'")iU$=KcH2y~ 7O!]|Nbvޞ`ocɵk|u`SeT|#b-jq--I]Bfk~=UN=Γo`|c̜ڄMlqrQ>qoGLmXl \ٓH$J}401 I3/' 'I ͒\q{+Y|Xqm1' `.=U9_k2'Ԍg:T<,yI0q.\Z[a$M+k,l6}zIA$A`$a׿-p.=iD<?CocMb8t.ޏ$33ɞbRgHvxԽ/4piqX^]IFU_%$c$!)ŭlgl26dG3Aj`(  ]'mR"7lR$ɿWCN[B"IB$ATs IXֵkˉIx I6 t$$kHss' 1T\0e)n#9J?0NKlDm-ЙS[VBͩ:$aIBbnkgY:NJ$M+W1c E:݌pijC&_@-d}8-F6fr|) %8$jC Y7a%g`8.ʶs:$,vI¢I,vd>2% m/CMxlJ W>naQ$x3^^Lւ$aq(vG)SVp4:R]om|vv7^S* -ﲘOg $2Сp3J~3J$`;$>IRF [HCtcŬIqZ YݰF­-}=Ix?-cRbPYj*K*L!2OYϺAk$ՕN u&xss8E"C<1BtQ$h! U{ ,=\M+IXQu#IN`!xXQ ䷹Qm#PFYG)c 1h=뵗 _Qƫ#:盉aG]+2JgDJN (\ Mh Rwg"#I+$}ꑄF[<^ '9Ih8X;'%$| k%%I%\׶/܋10|Eud$m I5LSIB\s$Vu;q{NI$!d$IEg$ 9 tINI)! U$I|lWyz$14iOBd9pŹ=IJ! MF[H+1 fEFScۙ$xflzJp<,u;.J\HD$@qqQ-$aA029vICu(++DhdJ#4rL (k$ئ$!3^EtEfMNnǭoѶpĨ8=\4[rav>e8%  ȿ$ 3$! iI0 Hʯ{^:dUCͭaLHxz!|'} 5Kv@Jr9k70yIb546Lc' -vE;^$B}yаgrCԑ]E璤< IOڲ< $s& Ib${:f BȟKqL$uprӵ :C$9KcAH'[f6Zbq<#^8m):ªw#hD|Q Ʉĭē$̑$":$U$A=GIBO|Y<Qٳ!$I:?.ZXBI:d\|Ve69v2mQbwR) xIy!$ C$!sWڌ@IBe$irǐg=i5bv-e5Ze"?$vI<%ɳ%)X_`RReaH!# Ipf{ ^ ^<B LVm|> f QSߖz &mĤJIi$|UfHO$IN@H2ʶ /3.peN2;36\ْ%d!"B*ZVu^7KRE IX=8)v=\•2I҉ǽC̀u-`vakJ3dNClN-m:ɢ+.}dñ';Bh#@1bَ-®+`";@[V'>WRIB6P\i 'IxWHMEA(O>iIS6졪w6Yl$qe :)$$$iFH]ZHrP']O+DYD~-Ф :}̏,@hl@6T< Xe ў\9+tajym"]K[:WGQ$Im$t7g?F Bm(솅\'CSk59EQ$-􉷩q0Ns6 pv*HB[t/fJ$)cC2Ж,I0XyCnWp|>j@d,)źIFon{6v d'Asl9yeڴ:O"ɭDHӃ~ǁ^Z}|&lOb@q$ҕ[fP$I^ BV@ |yn6$tFH"]Iy9}Oo_%:i/s"t=Clv^/ $dň$%N"$}~sSKI$I`$}2"$I]H"I$7=2-I$3/&=$I<kIr$I_%wD+I5$_G$Ooƿ$|lK A|MB~IL-~$F]y|uĤ,hf/k7IЕ_r#FQ 6&gM{:Jn$XOܿWס}dJx3>*3s7jҘT;Ͽ:/!$ :m!UdG$9叧IrН85¯칎C1hځfH7p)*Ww-:ۤ?6sim$y0ۃWOuj 8}w~T9QN$9'O? Ĕ$6vB0;~Jc;$U7ݼXG5 |vn!pA; _rK0~$tn$LFjG1˥O?X;w\N# :m(q//FFfO; zgŸRv$xtlː5^P,y(y It|wgN H\,i$v x xʞ!~s$`eGEGl &jaB:̡߀0kѮ`HR?W)YAIo$^v7ݐiCڈg06m0Io[|͂<>E=\oll=QDFeq#=j17-}nRV-KB#TǤddI9!i:Xzh⛉Hx*Ids IB\螗CUnي$%ț PX Ih>]A m3-6?dJJQ omb9Ї:W0%Wʊݗ$}AHtͮ0 $.+e$$eQچ$mHM%fe^B +H=1id/_k|h~9Of/]RucP1Nzdԑ?b Isuf$FnIW5ȭH$ [[pH֙mbQXadr4eԉa7|93+ P'[fBqHY6ҏT I ŒoI0i$N%IIʇJ[ `Y78OD H$)e=9 vL~'gU6Ѷ q~VTW tz7?5Vb.QL wm2[LƕK̾$,bތ$8ȣL`tg4F%,g+kY]tl$I{3HqO*Nδ) A²at*nK" Ts0|I|1ϜsBagI$,'?$;HRWx7N+Ij9$mͥ3;yCWtlA#<}\@QYg^)$ Η_7 ZHrF0=NMEC [I7d+Hm=7c5C6  NKns 0Tsع9` Ԭ-Ʊy %Jh H(!+3].9jF1$ ZX$$lO%I%IBVc$?$#\NbR!ڐMd tx"Pם$`\X3$IOpP% X# 뛂0# H CN~2+immتj~2xߓ$л3Ia!_<$}5.zy+q Yf^0,# o${ ;]Ao|J:DdjkcS:L^'T$'dMKkh!jX|(JNҰfnƳQF x+q̱z IZ& X)'$&J`[%I:iۨ>%+H&E$it$@^Q<4T 𶖡:IȞ`TGI*so:ĬMM Ix@#mH =.\F܈A'Q>z/Ui7R4$K:$<2x@LȺ&$1>~^"1z8${lmT|JII£p(6:Ye M)򲬏8_0$T*O脲~9$6-pwI&"+^NYOTnేIc[l,`Hõ*aK)t'߯-wYnYI He1\2=Dڃ6:$..&HBII҉ ~K`̬߼웖8:qb FX: fJVKяv:I:IbImXW!e4@3Ƣح:,$[e$35w$tWv(B=a!c#YKv|I;qόn/&qHF&!HU ztI^z9:k7V$ᙧN~p% )EH"Rz1#]Oh.:Q(Bz #ʡH7)I%wJLMr$A( q]`BsdýHR'ԁ-UR&-hsVJȹ8_jܹ"' 5mx8J*A qT&I,q$kqu3Ƭ PHyڅ O2<ډ(a(찭$1@Oc f {.w&hIt NƳE$Eܛs>Q"t-t #l͛\dwPW],e;"s%{mF \ËʁqqcEr ׽HRҗH$YwJHRD Ƚ[ M"nXD:):*`f8{DgH"QeaY|Zü:P,$QH*џޞt]ׇ\7#I$&w2n%v3G1tФJgF}u/2$+æN ݰ-*±|ʎMI$^ }&1$s$9Wx$H/PSOI[/׍H2-D7*>+1){$HF>=PDI)ߐH"ItB點gI$Iz3){|-\$I:O"~ Dh$ID! ɴ?`$IuK I>fqRޭlIjIܭG8Ӎ ɕi4$IAW|o'grt$B7!I}ܰ;nSwu>7o28LLm;IMIru=vC [ nqHr#Ujn8޾d \?h:Flf ȃ8~sLht x.? ^3Y }VDIrK\3_Fl'nM#I{~ӄ -Yop6l‘[?t+_9$շ:8IgtMmRasj[XY043Q 6zp_!wo `5QxJi6/V-I.NyL[x2 kݰLj2dPkLEb.46JZp @|;u;,񖮿ҤgHR)0ŧtzYʹQBnK_V4C2hptFdiGO$S/w6 :f?RI6$j1?}6tឍlT9S>9>Yo31~583 ;9y3'c$}4|]]H2M/% ڸOIp .'PNH$ SF/ii1Y%XPAI͂IrYӣ۫%սV{uI$I1exP ۓd`Ojͷ*ńawX .u3F$3dYbއZds< 3p =K=@0*|Iʄ I9I4IDauN:2^9 dy4B03[d:>IqܣKcCDpxPwXqr+N<"IcSdp/@ڪ7ɕ5΂Xx :&Ξ #իHR<!I8HVzHtgHR* IBL! zA[9,I@I+i ̜$K .TF65聦-u 8ϭ՞^P{ xB.s\sTQعʌ#$yJ~wP?N.IOYlndϓ̨$ѱO?u80Yp'}]04ʣfڜYh]FF->dat; =L$c /\FLo{ Jf Cbo? j̈$ZI h#JLdp2K8%fl$y#x='IA$q&Q:H*a IR|pՋI9I Iyېg%d|t$$EEq eRDZ48MC\#7S'PW KYِ .z3s09V@IR4Ό$AI =L3$p{9Iu(HRQ>t|$x4j*Ad.RM*6Im/\>2؄N$qTC, 4$-kD{[feG<ZμMf=g󚍔c$U$av$UI26CPǂV&I2(IH-P5tA$Ql0IHMtB;%ttc)x@K`)YੑV\I0U׀Šytßg Hb/4 hW@&IHgSt[I-r=dUCłʢڝט͇8Iq^rv) 8:|–EJdi"bC$RC.LX|z & ßs N)K$_wWt-uI."`BCi$T0Bh,IBoZ{Ch$dS"I'AkeO2=f*F,dQqXX:E:l ۦ#!/' +5.GHv[HBF}Jf+lI LzN;IA#1I:Ts[c$Ȩ|= J(sζp<dpQ°4s$c҈o>);>5[Çi>n΃5I GM*$4k~j 6;6$ 5bK(I*b'Y>K$ă$Ib Iqqf-IŒ_@lXA2MmB7@6nF*Q߳XGƄdא ld݄$,A) (obB6"nD.` ~ t# -Lw hA!DIQE&$)l,ͅ[NCbW1Γ 4j$ <ʭHdۅ!$a(%$j;5vV Tfw5/%Idi$ѣ?;?evu$pK \ࣇr9N^(I(* ;g1nbUCZI2LF:$[Z`Ss6yI$EI_Ӄy݊$$'8Ia/ ~Ci{)⁵# CIL/< #|€M)߉ybpIBG "|4_;FHҋy apHxMسtTU$)3dIn]g JMXAN$ʚΎOP蓿@"hnB[Y6#ð܈aW0Ip$(l(J$yǼ( $L)Ino$gŧ_fI+gHs]%YK^!H&Yg* gO" <W8R"*i.T)?Du@YNՌM6i6 :[w2" I!b_b#m{ q$Ap I#eރ?q7`OE$S}GH&U% Ԉ!Q̈mz/%$ko-2 !Yi 0IX&7(IҎ/ $!y]>*́ꮀWgY}Iݼ;V$>ͤob g?eA hۚu}TmAo3EܘF20ګ'HR&CPG\ɠtF^3n,m =~}R*'[ib4ƒ]EM r#EgX'O Fѳ:P2"y2 pMLKݺUW9d+n_x"IHOm+^QK'Q1YHnyVY^蛧XYF O*ćoNV$.}۫ Fy3~7IZat`-Ix]ts.-yRmMcIQwk_`Ytw|]!DzI/eDK@;<I$T>QnO$o_c3[D$E;/$$IQ|DIB"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN'H$I$qJ$I$$IҜN='-I$iӹ'D$$IH"I$I$$It$4*I$6!?p4wPsieU$II@ΗX?&$I} }{_[yD?Ob6&X_|s I$IJ'0vQKM:rݢ$m"ICגĜ$[} `dX\qBq%̻g1y$(#GIR2>\$Eߓ-I Yc!<;*@FyW~n$y2$wgOD{?ULb'W7I>v!a1Bj0ڤ`v ٶt-[ԋ$$஡o 2 %,4HRlM}R# ɀg$;Dv|~uYP7l!qⳂHqM9nY*&.t)"U%X!"pt 掌ɋ#novv*בBH|Q%LAdbϐ$ԝDklSI)'$IK2T,!-3E) /]\p PpG zJ+|A}MxF:2fŎ"fGo'3 \:C$ `" .Z{$16# qHmc}k@ALJ nE, uDށI1,a(IV iqFwhʵF8W!+^,L5! f$-Vv$.I|$ɼHB:Z*7óh#Ƒ` Ц#k4[,wj5GkIK jP I70h%y%UaRFLlm˛EA9\<$ Q8FH,s0IJQxf$['sh@VR )!aKB0LU[аDy$hȦkx7Uvː!vl;+TKImŢ:aY079 #=XPqG GS6l-$#X@O庮r$%+ $Uc #c:nٸN IKcõ7:s/ƷfI:9'33c-7^fE,7XM3 ΑB*p$Ol6GJ2&F kWOH$I#E " ^d f% r$/{$=BEIpg IBnÊ!@Lѯiibs MjUȋ!l3$hfe<Џ}ހ&I$TYI arT$a#7! $A" Y„5z'I Bk 2Z Vv5UAjR$IH?%J'IB,ICBtx5h2v!: |{pCZґPP@G!7Μ8͖g&@K~rꯆFe8 ,lF>* Jc` YLzdY$C %AIPʾ$FM4_ndC3{in1$ pZOݲu$dvG`mpl/qx.gw?N[B$AI[$tHGw(F$m앥e9f" ӟ%vUN.U$1Ar$D7!#EX7oÁЉ `p+M3u7=ӽR-~|s%CN<t6q'zvIcX^B0k$0TIB`$dy|D׫9eA&{OńDr.8>@$6/)^X8Iv$dqXgq$$ٲ:{bYcNҼΤ/*潌$qB }1+HRrKېpZl>Mqf i\rgù`&SGh$1vHR<T2I{)C)9J$mHx$#r6ب-I ]$ no+-6FV& BS-~rOtI"b2D҇`% ^+mD a˕sdQ$qԸ&I9H줱,&Ic@"ɗ1%\M͟BUglq,ȭ [$ZpDGHuL,= YO(r5#hj@X6$I$BW{$Ĉ0_{3tD z2b$rER l>iXi1GIN4t7 I`s$WĨ>qHr@Ir ?e]y|°vJbQeoá} ~84H+-b2̍QZ|fZo=..jŇʿF)uȘJ68pK/'1e8(I} 0D)"͂6F_~w$L 8~<QFsLQDJ8qՊ+'8}Yؑ$t3wCwI{tIm..N2Iz~1I^Cy[4iZ{sIzΑd(kH;1ʷ#mPdvda' ExbM&$CgHbn78vglqvPR.bH;kZH瑰Oqi6j6ޥIs+ѡa,ě S6สl'>bFsGTqhCqo${T}Q<-DQ@PO{6*xl2X@S|w#=O`ؽQͣ٢;5}w_PƦ"tC% [82?J\$7s$ĝgaBP%: (Y'xE+ { 98Iˆµy *±]jr0$d"H@l~N@7 g$#5Ih+xBt4# ~d$"A] !w I7#<ړy*gyFrh0$B Ъ>j Mq gt^W$'Hb$[X:[.Z!N?j^_`Ů@FØx2DER1\Iߦ&]2p$)"x8HpY${.#`$=\E X/Fܣ *"t$l=t<ib꒤Z3ϲ8^Nj2ۉ) ߫gv& UB9oNab9lţ$NHew}IBI$S'%>%ǿ b!\Х9Tı4d{&P IpW..…~Ib@y*Vu$`mݸRp 0kNQ"t3$.sC b~&o'h A cN(.JO BbS$c¤"7YT_t<\A(z(%-Dr-#@D G!DўFn(nacGHtjN٢qt7X|kx$&p@IBå"CB(IK_@p5ɽkh\t,{"Iz$ыH%F&h$=)ksɦI_S 2][aϴʷϥ$(eV){ȞNV&q#ٓrj" 2 $z\"룄&H_{Xv>D`{'KidǓnaN=OC?0|g(II(I:,Ô$)W=7 kRx:DFlk:==λA О ,bIB W^JDctPق$90%ܻ]:BؾiE{n Zs?'cAn}H"}DwkMC۪)bqQ2\%e<T(r%"nq'ͬXwo6eWX[?hEf`p&C p~CyT2 L0(DBY=% w|I jHiy$4}ˠg[2!Yq< s+ÒðQe$ 'Oi\/ [cBܔqRt'H"P$I(Vܡ}HH[DJ?H/҅/aK7H[:n/Dr$E"D:G{GWVړH_,ID:C2"I:ʒtГnJcY>?uҝ%H$Is:wO?6'I$~%$MG&Q2H_I8IN-PhhנDI$Q$7IO-nK·M͖$I_c$ Enh?/ۓ3W^R'mSIN4I_"=Hu%3NfkU4Pm LR"!ﺻ=뭧[NT ${xrǝ^}+}n-5'}}Nj1i9XDYGn zI)[ޡz=ƺڐQL}~)\I: &ky jd2stwG~IR*^!<|5IwܪķjW{w$aw YNf5+L+^ehg7"IZ gc剦|;Jݭ-ɟ!^:KW[Hnp |FI0Ţ.NVhv }gpL}޳M䩖,/Hyp8I2fzgIlHCQg}XtdMHe͆K}2n1A}u杗/z%`-}ْeLԚ]S:g^Uڭ;bDkW|$i$,-'I#3a3l+1 F$uʓRH囮(9>AZA`ebխ~-t3PFZseɨto%{uBړ4% Y0;$Y! ;FI2J*Df#Cpa~ᡎק|"$!@K;֜z#ιo ǘK|I8`  ~? ɘ"l2z?‚X1u[ }$.n$z?ILS\Egxgq=I29ȢPHa(|4d;b e)O$>>mdJяOB8=hï4  I4|C O2@:hHJHRҧG,Y \hSy%pUWt^4o$& aj$X$.I8xsĆ=" (kKkgΛ[`%C]w(:G<#$!# sY ",('ۑz$c@+vAlſ'UCI&nRaCam8%I M:>+އJ~B,`dHKx`l؎MnzKi,%T0ph>ןcz2 _;0@dx/I\dNby{-r pX̐yOqjxq%I $z?+Ėl>6/+U\YgstȀ!6āE--|\/'o.H[!:K웞+Kc'W+G&϶U25 IH$q $gA]n̿aPjOyH6?j|4y:$byKWy[=hH8%rRIk`b$#vWT6)B8H8\Lr1 ٭tJˋPa$hI|*vE$aܹj.&(zАd$^󑁴mAf"'q1oҀ=R`VwN&;DzG {`4HQ =89ˍeTmI4,.i2B Ԗ$o]*e$&OSP5Ɣl7"yHc&c[ +3$ 30I¸oqo׵: @q1 3$\V͟_|}VKG\2nT/$eA!0x`Jjp{iiX1bit!I\׳U$8ADvwh؃$y/'c$@~vhRl|1<$wSy8.c p4l!\k a< 7Zo(=EW6NH?c ԣLW X=Kΰ%׾Rx΢vg+ZUs}R?%#g<`ɵY`.`%|)7]a@r3!Il'|an_j89-LʎpSfUNd{3Ӭf ;Z1 aPd0mAt5DR͒6# mg ~qjkQ 8GMh<)""X 8@ѐw"E⠳c[a# O$X⮌$4L(" I b}VKxq$,%p艸|0! X7}l3BH-j#%m* ]9X'%|^IRu .lbhiwr~sB"mlIP'eϋyBy=ο40G}ׅDHYv ףD$J, A~x.@HY1,g"$!Tx҈ȾB cLLO.Y] &+%Ufc [_3~1Z E3mM`#w&4ݛH @#d[#up^yE_; ' 5re  6ta?wJ"$}E[_Cn>FJv݀{$ =0w8"$}؃ᗔa{KUks$EJ_^wG{$DI*]r/C%o}YF$$7ĺᶎJ$$J$$"n{mR7!Iؐ$IK$){"8>B$ImKHrǜGԋoTO}jkKI$I'HS-#)L?A3kJ.'+n܅$Eg^IN^C]MsY%ɋnT1h,>p{ Ir >Zaz'I6%Un6vڑ"oE+I":'x?LRyyo&<^HW]'Z "P$-~-OSFde/pۥ + silp,.qcy++ ]EwmT(@<#pp1$J͐Ol)!>骖(\H#np /bU‚r$iΚcu`'ԓI"\ 7r@+"Xw#+I$qK9U |b~Bu˧0QȂxq$݄ݝ l` dc';G q( v RAlUrUG.ZkMt#$ln8]I)_Q$,_$HR5dJk)_m&Is$ֶ Iyh"ci#w0 .:UND{c ' E[^ u_(ҹHRdqG&1{$i D@6H$"4ڢ i$zIh2yW^IEEGZIKH s}$o5IH$ODv^-HƌCʶ@*@dIj$:f$a!>c;$!뻊$$IB+._DtL9/X"&7T)Kf|w0DcV_KIafX_&F:HuE̟$,OI(8~ Ir2% XպodUTdq ɚ4H"}Ną4.bq2qO;B.|NBNg:E$@$A.l~I|`# JeID{(sZ5IBs$L4Af;IƯkHv.ʼnB )/1PJxM4dqk#I1R,ߏP|[AtH4O_$H7ՙޟg&i]T$I bT WJB3h3WPJW&X0Ya#$ kd2H^SSR$l7 Ihv3 HBMO{=Hd5,C}:40`Ia$5SI@0Ld P^`+CU)KhAlt}$~.dI62؞#NGJp"ng_%[{0٬`еB$boKX@P$P&Iؔ I;#՗Gtpl0Η#/1ZΰLvc-*ݳe$)K>D@,}pSK<ȷU& 52d$ ;|*X&.I>HiBHLqH>3,wϓ$9Cvgp{(MV4_*xDI$H$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$IsI$I9$$IҜDI$iN"$I4'D$IH"I$I$$I$H$Is0+ endstream endobj 49 0 obj <>endobj 51 0 obj <> endobj 52 0 obj <> endobj 50 0 obj <>/Length 123152>>stream xٖ89wryU6̈T V2hHM "I$I3B$I4GB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$IhY$R$IEǺ9 B$Iҗ?)$Iy[\ QI$i@?='!E$+2B$I7 e:I/6R$Ia滣"ItB{_.Vx1¿BJ$I: /oHAX;X(>?/ItB<3- dBob!ewHQ$IFfz)]*37lp7 *I$r"L/p 6ɝuOy$IRW+3LFH$ILB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$I7i].}!E$ZnVs "H$Lo;=Giϼ _VrI˵6@ڎ}Sb)$Y_{z6"LR$Iuȹ*C T\Y$@ޑ}x{LZ*qj9<=^I?s4JH9+m3B6,a )]Qguw g*\!%zH 'm+{%7BW$tmV;i x峤D"N; e ne@w% bJpˡ|sVhG;[|2M,BJI!M͞x㵳zHXW);IyT[7`뼶p{gް P^^k]!?`z"֏JrKqZBJIJ~,d\Li>XЃ 'X6 f_˽>܍ |9o{MՋ}5bH!UA@+L y1~YQWn.qڈ[l&N_oO&~7Lwsh" Eۍ>B!-[ORHQ2,O,Ce5+<^,]ƙR^+bK)ī[|˾M9ϼ*ZwLA#ur l÷d0FŹl [8) muldž|ln҂K8"~8]A 6\~I%";fRRyPO XXag|Z!@vߙ AXr).!%`W+M De<%7٫bӼ)|.`wb)MUGJouD_5Q% 'I䥻Yg>9F*z/In1GmI4" ~NX`;=dVlDW]LK,. 8d#GB7nz;yL3fiZ?|6Q'~BAO䴏H`()h5ٮ@v8+rC Q1[l#HI#e%W{z4z~_@;u> Hϔ"R!896 B ?d=kj),RdƘ+ sFjIbl #T<}-*N /RR"Lx?7'|:RXU,`J)?o4i=dHA=RD ?n eEAK=up_k MnnsHp|ΪIblWBURsE ^5WP%0V!SmFޤλHj2{΅B NM8 eɔsn"%b:> Wj+HRV5pNΰ$ Rb- d#d:̔]gDM}8h$ːjRVE,,X27+r!> a2!%GJON R&֖h]wL>׋)ħoXmu<Sp.G)#-DTu&qBWB.Kk2Gj;dP.WƳAJ:Mx )ҡ6 -8%ztuFҬބP}N0"m)$8? c4Ӧ)\#3%Q8 #[=xI,׏eX|{?a<*g6W%i " )D)&&9n隍 1-Rj4P6^,֟%_F^ib*a|vD){Яh3HiWbyl^~z8RlJ\u޶*eDJ[H RAP$j;$R`> 6ȌQ " YY.#9I8Mg/AqXkƖ5|R,S&S;lm)m5-ay/" FM<!Ww4 )%{ՄJHy$1g R-G'_ 8WRH']^ Rw;|5 56EV!nXBz$S,#6ܡ1õr= &q<(SK%p)Ķڗ{`)t-!%ݎFԑ R`@YaCGNLC^ ś!!H;b Q@s$T,T)N;6M;rcFV[3##4GD5G ^d!E@;ߊކfהxm0,^~6:Ȉ40_3V.JiKNgXq(/s͕p_zBH|נmȝ pٺJx-EH s"e]c%I GJ>0] WkC8) ";Agǵɿl#D`;09 ö䃯1{¸lۄȌm0c7\TczgW""U{^R2l.kU}r{v)l7@1Gɹ %]ib?uCu R@gRdF7ٔ){`" SJ0`8@tĞZ:9LX'>hu*SSzz=RC1(χ]C85r'J(R@ѣa[Ds.tWCXu6p`p( %C1;tYWL\q0R5Ќ3a{;7iі|{[u=RT{cr R[-{dD蓭ڝ΢isx';j|3׷Asg{ 0`yA!lu j_$:uB,SoP"7iD#+*q;7+`G[F$RHYImlD.h\3C]7&غuQ{AsMW$o<qssf'xB>3'fNKJWM lK9Cقfv(D",&DYs~l1t:mG/@(SUH7댯$w&a^)hݶF8>Y~y+޺+JWrhoC:t󏐐 8V _RmT~wvB}S|) Rp 4֬Wk~ǸLm*!.W5VGyHq7hgPp=٤G߰{EG#e; !>Տ:9|VPa,|aK3up~[fk.Rn!!?O]/>ZכݽwgJHk{8/U//_+RξPwIM%9|$Ia=hs>#I ]|I !E$II$MR$Iިm!E_dyMm*H>=f,:~="I_wڦ[>O` 6cU$I]]]%?iSlW )$ͼ~ ͔DW#eHH.]3wRz~Rpaڥq۫y)_2;,euVgE 5HHyu3𻠟%OD]Ygmq $R<ě~j']R>?.1t,"+pN[юN/p;&^!)C;CnL4+[|}zrRroE*Z@?d+RDώP(i;<̕{{䆒ۻ :cȷglδ¶ֆ3<څn <߱g_1Uʄ˔Z[#|R6:\70XLl@7Anڰk]Vأ]Xm! ʌklz8p0t8،F9[H/g#^c~&qwSGfH6*i=uRL%(fR `FPAMۯ'R zcɻH)u[R|L4T=HI=>z.:9֗"Wˀ`~c)qG/< -!彺2vK9Ԅz0H`xs=CNؕ+Bw` edg563 (@uؼHIfGEҠxAM„ԝRB_JH!xWbx+Ь#l\<)0\*CJmn,9f& T9iMs͟nu͙N#r$ U4H!Rb!w; TLJn `54)Dh(;"v?B(ƭ5 ͌8XyF_[. .W;QS GŞBJתYЮp'U_Jmgbf!es- %EHYR@|@I{ k`>bPRɽ?qT []dQ^`H1Ί3v4P' ɴ UѠ@|Y !%HKo==MCZLEJ x =؀gpWj)> ^&JͶIDDXMj[DZQVv#G"LZmLVCJu6wD"ō0mT@6J\M;n9R:t^g #EΑ_Ɣ*R~I܎~}`"T#qXHќm)fBe6d߽Q>)lVr2+-#sHqN:Y=#Ύ*RW12 >ǖ܏ؖ ML͙/1zIulX?aqkjIσE ӵHsh=NVYس~GJ3Gqil4FvlCkҼ=v^z "{L_FyJ_:+]sȉk6>m|BKv7;Xa$pU o+ȇUAJ[H)Ω"zK:h.]f`S-R٧yNu0_軘wLgNh)ưPqZB:qRa<)6R2cglxgܭQ`{Rl{UFJt}Z5cRPWևU咭7@ mp*E Qkd )gN"% (Rk +(c]hR|"ɰ;UvBBoS{;^GJ@Ҩ"75ҲS6 ꜑VL$^? [h۞ T )Oٕ!P(#GZ,O SM@ RYu5IL}(l źX_Sbx93u3dDM%ㅍlz )UYVyC OLpvH)qԖ42"*=E;#$9@O10C=_Hɖ0I1ޜ ~,?6\ە]HIdn^(3CJ%(P"eimǖ#6dzl.֚ɇE4d?_X >hQ4z\fG H/s׿p0Wa黶+Y ,eH ^,MrE/:Q+,X2SDdJz UЗ'A )]@: )t7uq/7H)؂VhCb,M)f0b~͚k*O [E'WmUѬ y{ zĶ@d[@ӆy5i"Pd%1!mL&KI_JsNj8"%5Rr" /"&Finv`guKf(]xoη>K(mOl@&d-Br$aĽWD i";?Ra̗H7jl1cY.kňIեӵ6i5(N#HAB! A~_>{)$-=tW-;Itg WR>]B$IJH$F߆ I$鼎P C$I:E$IuN|~C$InR$IƐ"3$I.$I7hw}H$If7B$I{}Dn"Iԛ03hp]%H5׾G3[dA;IDRfM}r^9g"}OcjtK{6Yx|(!ϋKo,9 )5MYw3o>}~{/YoU|]]kX :{))`-6o:K`C]:}я.Y:ѥZ򞭉 aW S m!;LBw=A}vV1 RsYO'!R _D p;#eJ> )xC56sBUiP<+̘ tk2~8^_뿉#;27/95BBŴ~4ic 67]!$XNB#Hۉy!J'bhe3t=\Y.s7_/m;+lcsY cX7!̣ШY&܍KD$Lmf3y7xVh&dFƎELM_۔WF R0` Md;-ʃ lۻBW0}՞A 30%3t6=?lV)~[gw&6E 6ߐ39LjGZ9D@8RC ?bB˰:WJ0eq+HBqR#%ϧ'e2 YI 3(< Xp GMkzÏkK8} H1P?ZvΗ| BJ+EԐҳU] ʜȮ@SWq'TXQ ]?*^ DĞL`J `M2X$9NUdے6LD EJF.RP27#Unz$T JWv"jLEC'mY; \8X;H >KiWf;ȧQ;㋆u{K]J'LDQ%ds&]s.Buv R=F íyHɕVqP -G\)lprRP4r{_Il?se> 3TZR=,+u)w㣤sJ=XĘ٘&wͶ~>RA ^)ٴ/!%d]͉x؉f!BbRHYMNw/Aj̡ѤIptBM*AbEx)S*d $R2ɍ3f=_21IQE }ud ⌱zSkU@gH6nֿ^ 1DړOE>%XՐRUO}Lǟ$Hi_CJǔI\·rԜ1 3՘ȯAʚ%DNא{{&"%q RA6s#%[A!UpcUBh,]UG`zp<U2 mPRV8lySzέ!43UF8C"!%}U>K,Rx?tzƖ/}ޱ+[#z[CA<ά,GJS$GJ|/wL 4 mOi10-M h/mQM IDQG6i]~Cha7i\<,5y/Z )5W ~wJep3 f!X4;w>5&fFVFiqIu@ eCg"O\ %BS(wTšE!9IĩLt^ uRLlg*RV_m]*  O<['oVE)!%8.qPd,ds/Ќ7nD@΄L]0ĵ(iq}UJtP3jAJRCH)U7 ",A'.Tgv<yQnϐbɖz֌U.0:itK&8Ee zѝ^xarXl访Nl%9)gip%R4;}5n$sST )K647.n9-ߔ`98 }GJs-p6k8n ra|i™Z~5Tus.maUH"Ȑz/vRKho1 knzfbD mԽ.0Y1i:j3W;`Iy S?^xJ/f>[|)"4QZ4 kgbD*o9)0pQeM#ۅ ^ 5"s}KBB̙ق-w~ϗD Du R߆]wCKd$WA|d`Jڙ{&\{dwGRPR9bR|薙w#%$^lڻh"N`C"dh''֐ݽL1imH[գ 30%l=!lGrm{=|?L 7=ߤD#^Gsՙ{ikN{&n!ԤM-_ )jADI-[ɔ|OQ;Jv\6g&%/j"A Gk_-!}3Rrt8J~.h[p_)u^HEv2n{ nQJ7dZ(oO3e7⤺L/FUVo"tO%שoV4w]wO )HK*!b6߬{ zCɛEwOro}o{ҽ%\{u}?BIk%;$I"!bF$I#!E$I$!E$I$!E$ ]O)>R$Iqd苦-H'4;*x;CZ𵊟v!EBS Ʒ^m'}P1uB$I}NqyEB/]nI vH6yflղR$iH֚uY.*"͌mRY)e%"ICڷ!%ېrZB|]{?|_;'o;2n_H~~n̹>\xӽ1SއBSL$_iC|)̶a!/w1>z)RdwvOn>@S>-$OR0Ez÷\R/|Woڰ||s7F{16"OMo16O\>)/}Η^:dfq*~ܛi>`F~ƈR3 )#lUI6q[?K>)sU>SĔweF?a-w+Blۜs7(%zcoLvuB&K)4=;#)2qKWj"tK漢f DR~S[0mHE3Apg!1v@H,g#Cmڑmᡥ\ax8UKbvݛC#Ŭ2D2`Cn!_e$x wO,n=MO0h~5kGbxB0lA¶PU#Ń$)W fb)@t}:X&_dA[`go8u4`4ă[ #[uy+F`^iE,>m!N)}|URW^ɯӮNz%RړAeKn'=#־"ɐ&0g %;/P*A<(Ex{J4.N|\١ulߡ6?#R]Rl'Mљ#ť#푒q&ϐc}T9?㏧;+H ?7{$r{h8mi:Y`k 7t((8Ή҅eF%/ OYǃ z>OǭRL_BG#H!-Tq)lJ )Wn0% zss&͊7a%ɔqZ.xQpT EUx ~Nl[-ӏfMb<0}$.K9L0ZzHDڷQr#NHńyư 2+~ D F8^}!rZ6H'N`mS9;Hh3Gst|Y3c)i~!E:'; u`\Rp:"eSHy8\PIV E2翌plRi2&!8"ub30Ktzbϳu@b; FʳOCJ:+kHD+RP/jM0e%4CQV"4*)vPHː3[X3P]><dWg/`i 5bH1eUhv(ac)RQB #H6sAJ8F,9<#)օ!k|J0 M@_Awp/-)5LRG: ub_o9 -_pru)pǐ_H ޱ3"XgX t-eu)6[!%[nGFB EGIk }RLA3,&E'-"R̘v ro_ف_3n/@J+|)VҜ~ s )Az})=ߍ1luR0Dݷ`1 .RW 07-s{=O.&>*)M2x\%HD@JR b43|oO){mDxE )dSwA' `s}0Rz 2Ԍ iGӿ5v %$r)IbH,_mH)Ś,R"uK][~u^Ƃ,NO0_g (PK1`w&!(=;̝EEMۡY8j5R}qH!C<)$~SH \%|,'YATfudJOjh흲bG;<*zsyCOGFY)ŎemNuLNYY-2GJ=HA6X鮦|r͞^3:EYUD60Tf 1cHE~N3g3t&k_{/A͛D$/868nվcQ Rb ~RD1Kb2H4RЅj)nW#hh<"%:_>6k}=! 3i0$bŀj>^/ԏ.K=o$cH!?PkaG2K YNDVcZ2kl*E~(PX:#כ(]g9R@JS4 =숉- pWluHa]vsΐwq@R)XzNkjx-&p%ߩd1}Mo/z!z&DPo">]PYf[k6\TxB.Rz:xA }Jqv')}"%> J4 )\Xir}ޮ)GKH鈭s4~tsP/!%}eA?!!%UHmsIG"H$R$I>@g&lw]CWTH$I +GFfKH$Iz15͋.!EkW7 odKxj|v;̮"Iߣ[-z k[nKÔj|噐"IgUؽ~/Et~n9Ċo"!EzzM}}8"%+:H1_&dQ_9"-]` u/ b]0p[|%eHѳ/k~X%/r!6H_QPgωf&Ƿ3ʖnr3q]+o`r}4w]T.Sa]>\T[- A ᷇H3'\^uwEʋt-r UHyan)ᮓ]!V˻2{>54eN?DׇVi/EʭijȽ6člKe)F] KV m_*qqwn]؟ Bf r0.s@`WrM[w eQ91_++R&&?'w}o1Fٸv_p^_662lֽs#hM'r*v:0 "}N2]͡ ޅ]T~{3͘Pn6&l#-9i|ѴxEa.!rP)THW@Q`p(4rʆFZ[9!j>8-߅\77S} ==v׼-?=:zBJ:6T5)9`@ !%37+S7szV4Ip]JtmJ7P+{٨>RkxmB LļÜYo#F2CnAf@]d )+SHy8nՒ34w8~ڬEߌ{0Ů/{JQJd _'qmM/7˓̓vahҸ[o)* u"q"@b2%CI DŽeKRW><~ ?bķ6?Y` -i ! B%yӦi07P) .lpVmm}` )š$3n 2<{bgd8NL@as~ 0uBtvGۮVW=u,Zѧ[ۖ1 Us {ղVrCcǟJ;vRƢ-*\ z#+1ئOA k\ď@4)~uݽzc] !JLJCm+ 8,"~I'3ӕAgĻv[cG`5:!HiTBcLE ^ȶʬ :1τ2 %|)@ 4YIJc`mےNa2YAH]l E㔡JĎ]"ϒE,3KŲuz-Z̨"%FYXnɠ2v>cfsI;cH1'-R蜿'R|'R(S(3^~QLח3:^m;aM|)FbFRzHIg냇"C #L3޶2R U R4h"~RUOalo ͙2R|| RIYxA3fޔ=͜[q'm }Ӑx+ꟅxyH1 ΌD 9"9{At`m8߄n 7X(RE 9)ԝ5%WȐs/r2D3FOf JǓt HK E vz]3WŎL 8': LmR_I>X\iQc<^VRӐRuIbk*!WES7\#--|-Y|X@)y܊HqNm uV>.GDVa7B !z=n B U?4$;&$B#6x/_GJi })H_טZoyu{g|E1(R#SPtʇy}xfLg0R̊ou)xDzHإW iA+pE҉ңHJ66ѣ{ u #%KNwmϼ2uG4ka}ФPs.'5 )s9,g-ؾ7)Hyx@xcV_(`)aywsW눭!3ǐ[8RQ":8YG;0Wd yM` pD[xpxاdRΐR0Bz#,3=H XHruS$tR)pz"Dola!Tֳ[;^\­ 3-N7R lB6  hfHIKbH{ ?+D>8ﱃC㈽ U!qzoMG<h  M+9{:qmq,/R5hwQ4+ %-Lo LU4w ٥RBϘؘHIW)>8`Il`; !`~U@.ƊH P/҉=W쵡< ޳Ri*"%Q:SlEHxsɣGߨR̮o71`tu" I|=gF*Zp]”.6Elq ګE m9)0Ր0eHqlL(IwED qV $7ޚ,GvA`㝋V~ ay)ƾY}=DBiOVYr/$[4MqW<]ü@ )`ߧw|_Aĉ\ΐ ȍhA3Ϩ8J`>WػCH$/uzb{B+I|^lxI#7N#r Fh+ uJ҇z߼t]̀5ܽ*e3'(\)n&jHU) vF6YHݯB?_q$IB$C7M\[֎$y )'-߃(I.!EHUkxiZ8$HػHR&!EX$U%H$I$H$I$H$I$H$֍v㥟R$IN_'H$}~["I=WIB[_q[# )4]aI:[U3F6Q )ҧcn|~R^FwQ1R>H/RX!_ {.ZO1USC#5=7nsG'JHyTnһHkQ6}c)wǾkjo4^ӛ/\urcy>C|EݥHĹ )/vJ#!#Ou{Y؁ /Zf?k)#eЄ}r)4]pӀ܀II+[ 2y.: ɭ?o =9u?8d:K˕.۬1͈x߈ Tf'M8Wz?Ƶd:Bxf̘r|BLq%S67kqK23([,cd.9U]ϟzE)#U [.gK9 ;Wkj͌on:ԽW^#O1G<|w{3)Vm'M?]=쭑2>)3c[䈬=٣dYlBG9L5.`q{]k.-l7hl]lb.^=r\$џhPԚ|RJH@W`W/mdb$V㗘/z4y= N/uee;ڶ6\і!%m_wyhNp )nR&tl}um\xGl- @Dl&ЈVj*"vi~>il6,aٟl.n^R +l y"ߨ456:{t!g`;RV$ܫ i,id`N4K\$B 5hc0!!sܿ`.xxuyKHRG!?# pcCi$ /{С6& y R[ǴeO#6@[81bƝ G) ioy)VA ;s*S6075E 4ny3~Qqy {y]J3p@rg$06k!Rv#fŬt~C )HfP!#:[_8q>]+;@텖E"MuT;yZ0R>jFJӜjsr Y̼3L$tٖdAc{U6AW`[|q~Z2"S' q]Ǒ&xp~m~u>0-♂v)̱zHa hi:EFJgX؏Ƥ(x6lßQHs!e/cqHqȓJBgv0)xa7' d.dtM擩ߒ.R'n6@|' g>4Cߴa΁ꑭk EN77T\2A ,:~@98 )眙#)dF՗ ^¬ GPВ=w@rGR %L~^={)Ut)Fݙvy5gk53k"]EQm)> 5)mTZ`z"CJy-Wr m )CW e;DHt)kڭmR@DLIgqE @Jz:u BKht Yk Xۡe4;0HaBO#r).@H)-tHI.9۶NBCԽYSRjR@붩H ӧG FgM4MHinF S'ZHGau4߅ƍ|qHMQTB>׎ܴd&"Rc:R| a S^ԟ nx0P\z\q/B ^ )ֿ{HsO#7Yg`kl&w o3\0R߅!ؕ Yx7Dڪ^U#_biSNA Xgb'G )YCFO{WVB_ 8LatS22N4z>R6oM-RȭƒC-39!0R'yzWc6U )|}d"*CJLYDJHk{#TH)-:R}KFqA[Fvj9lҥ招Fn # YːRx̡ld)&n~dʏGt5RNc3MHa~2)L0Pn8R: %>,Ha %ANuO{ais+m$ŵT zpqcǭUyjDso|a,Fv(8R\R gO/eܔ{u)Q" mԦ%|rRd;4 FҦ:`ܮ\0С(];I}#%e<GGj eSBN:-<7o6o;uH!$"3^Mtu|l׋&J[a.k^7vPcڅ-1:`ʹJ8<սa,3kaML>G,^ %O;Q->Rl%<,ąjn pu{ do:w& j h])/: +uD^+kp! Eb6jWRcx@[qTcrF._4?@P?WX#tFN*/"iy<4oHa;mϳpFn*YܠwSB)pؤb.-{yG\ +?K` .pۅ4Y$$o% 5CRKABm[RX x;*$m p*toYׇh1-dv#}"IһEB$}nK;$HHW)%H$I$H$I$H$I$H$I$H$I$H$]>m~`.N.H$g_&r,7B@!E$U͠|'2Z{x"IU: Wj?8"Iu6[)->_gV)Yᮊ_~+R$魊>3Q![b'=s2]:GHO7;psatDʬ \"}Q)J}vڮ#oLRC}1RBn!Ew2jlƎ,[͖>ٳi ?x:;nRnbR>NB{_ p7߇pin7JyL s9;X{F̷|H˻oMu?w}[vg{ޘ!G 3-0ᣕC &Cdw*xw|5n2qyOhI8SH9햞ﵸR•H)lHv$o3x\9)kCg]"̏y!G.ې2'88W6 Ӡ{EJՁ )g&-|;Rg~s|Wf]y~<*[pAq׏FJB#4c1(V֒*Xw?4vs/R^[!ŭ/ -Ej`} i[c\v$`дq!<E 6jݎW).S>sEHNlkS€7Xfܒ^Zal2sl3i )νe߶ŲLR&lI:rlc62k^`#峙g2rHwI7[{0ܲ]1Rw0ȷ P=( H\fÎ~Ͳt9S<8P٤qK0St`eH"[2javQg%ށ6kOojtCٱ)&,tB ۷ǪU 5qКwӭ3 HoW!YQ /[t̤Y॥MޖEmX6D#$ !:x Gp2d ] z#Yrg)y_1!%wVuRL y _7\q5Lڭ}洁,pnv'M>w͋jmmM)t%Af6Ln%-dzV: $^X1؀#TD;H3~g8"e^Ͽ)`'aVf٬ X<",UP Oi@b0hil)hԂs0옂P*ax5:t,/g)PL B0KH 6C#K\3F1`X$24R :wSHi#0u%ӄD}0ruT#7-x@0YB,<]lĄ/ؐф]AS7@YOf&NMɅ񭘗Bqn8R%H\|>R׆ Ix1;HIu3"nE,bsV=H֎HIЧn4R}[pP#H ʽNKF'MԳBш$iHV@&o_"EEVP;][(\QfPh|`'jHy4!Nun-|1믆'muRI? 3G t) 'jDʀcF MgTD iotUִ+h"иd %b5:FJd3t=H)?-ޚaaLtp-~KҼ`#E[X<3XۏucÉՅ\< 9ór p0R8`q#RJǚt;VQn'ӼwpK:rM0Ѯe)HME8alx0SO1J]=K{ =}G/b"W)y|R} d{ giIn^HH/8RY;433nkw);<\yq]&]LN2ðԊ-6{I z:ڔ(G_s4xuqhg5߷ɦ C9؝gD/C$61Y{#r8srVSgK r8#HU:7KRՓ$_n xw#^̰F9@ktw>;gNmbp|V{3&ҫnE4tvK gJ $.aW l~e1G )>?'!夎(:&Avg%G$iΙk٭$d=9;n bc]iQ>@Cu7 kn5:g;+I]\`ҳ*5o"73;N{Pf}(}H73kCRNq݉( DKg;|fyr-]w$ӗ"eiߌ.܋ztC}/Rzm#W[>=\sv#ImH!y&mouHoW"eMI H$IKH$I&IH$I&IH$I&IH$I&IH$I&IH$I&IH$I&IH$I&飑3&I(RnE&ߕI|$IߦA  o;'I}BʝGnFȓ$I: q{+]H$MHi]ힽa'H$MrXq%ICmZH$IHEJ!E$]L'&z%IƐ* ކ$IWeO|V"/D=o(rH$q"~9E@MS!Rֶz1E$ZCJz- c+f(‘|OH$@RE#w-F'tHWI$L?FxEѼh/mW#%H$]o"vLȮ s%b$H$])H_=L)ܬ %vR$Iς ';'N"H$]O3)w׮RIW24y*zj*-I$]n|HIRLR$I^HgR$I>K~>j) x^L$Izމd$o!E$U:;t4'DIK5*?O?=fI+t',ǐ?OyI$i %u): [,|,G\It%ē=Gj1J ~fL#{Iu'xGn* 5"$IE4$yPҜJ„$IUX^(y$Iҷj)}!H$IߡH$IWB$I4IB$I4IB$I4IB$I4IB$I4IB$I4IB$IÇ^B$Iպ־؅Ij|6 YR$I܏RQ_B? )紾ۼNI7vsЍ/I2+C=~C%)gƯKn\'gC.Hдԭ-%Ne^є?i!9⚘j::?:/ԍ|mx-?>ލKHTL{6ͺ'3@H! opqzc3ǛWW^s\ԣGX簮}t4bScէ$IY-; N a#e]Wq6@4- {q]KAHegӽ`1VuQuLD>cތ\H> 黦U؍/)ء)?M"myi{+b8ۥ=#bx,}'L$n|UʕHxWb:nT>: ޜ^gxN~kBVe gᕐ-! s 9x%{-͆tg|^RzΙ,v4ibq_%Ap'0us>Т'm%2(=c*e2 R)V0{ޢ}ԃAH t=Mc==N/GD7v>d;"k=-h3S(@RØ%`  z7l,/G{!\F\il7|/sZx W!c }'f)-/IJސ}nMWm {U_o&TvaxC1+ѣzR?c򦸲Δ½oo)ќ߅Њu tOO!)( c 8=ހ K_ ٰCpUAmBu#6B #8R&x+y}ڄ" CNɰwvr& [Jۼ{OC.J"Ŕu Xb1FqtҜ* MMG`$/A{X/zJ*&K6W < a9g D-D&C HAr+Vd R\X#H)p+ɍGJ$I Z;bs֞1RJs*25.IJA~c 6 m3,`6d?JV==tSAn$XXcą`Qa6#% eKH!xx)ѭ@zH Yle,Zl:~3nT̂-OgynEg],.E#Eo,.`_b)h_N_@vADp$?@ k kK;XFJo`t"!!̊U;B7dH-}K& awmg.,(hIK)HAXv? h|(RסI`}+ g.kMiHIWCJ |q̷y.@JQ20٢}Y;̧K3T3g[S.hZDJTQB Hٵ:S'#%#AU 6>J("O`IQix2)Ĩ10S;#8[)a-ę,M1 BJCCt)<6"0R揈#ewn)лqL)O: lN!e$V[υLy;\\cI6RD15&^ǔ!%l)Y|͵3>)0BK))A.^g@ \$3RJLٓ6D#|lZ@Ja&' H1֙ѥ3$] $J -8U2Jp,Qf  1e mxf)bu)Bl5:*F4GuL R-<?̕9ҝ=1#Ll',e{Y쟅bMfZi E %8g@Jm9tm P&IfMV YJaKwW#e5Mn$c)IpƄ"`$:LgRe0l6ARI=4tF#'m'^/~ $ܑ?`\y{Be;+6)CHy nxU$|qpv;O0%gŅ`M9I5iIpI;=a{ qH졔 N"7B\,nX7B .VR̆~ R@Him?$1fhhSu-^ JSurb+XQZ(⾺{)E )Fs"փԹ)@nZIɘc܋!Mo6"2zhB 6R!FQ£WU-*Fv|e!efւ.mdz}\wzJy-+H:ZUrEJ})B(*E)de/{8tT wr6\z#Yxa1tUՍ7gr)RX^烫[dqO&&~m@"]v~CJA 87jy42muhmlGQ}x[ ]2UOP7JHҝOWxh:y{HJ)&K[X~^Q+U֑Lr1vaMɑm>Xa؄*D׉H`L»k^&% 6vTw{q|Fܒ0G5>`@-=w ^mt޿| 3TB)IR7߱n8øeoIgf4J'";tuC(I$tKD?5#IG$Ttς[KHH|H$INBJ|1I$y )Y{E#I%қ$IR$Iӟ xIF{Io7PB$IRnKjȇvI.Qqc;B$Iu7‡IF}kNgG75W\Х6ٱ̻Fmc,Dw|#z$ <)1z‹s+RFe|]+(v9A1XNӐڭ;9qvo@: ھPpD/UΕ@dkRLcY${R{X]WMoD^kp]8Gټ)x9#mշ6=icNYfUb=BO'H5ճ}#38ۊJܵ\d5@cB wRз!ͩGH -NRR1%wLвjOFMCmGJ֜RtFDmtC͍BJd!Dُxaj@ mkUYs#Me>'t=R&8- [~7hīE^{˥ɑKd;ݨt"%27G8}8"5*{.[ Ni[1*nA[(㐒.ӐҶrW,wdž)фxNXIJ %sϑ/)4:bRཊ//z.`P)Rǧ)E=Ð RB`/٥ZL>zӗDcY..)BHi 8CJBp+Z4-l[d.ᄻ"~@<)lPII%Fm*@V?m2pE! VVz)!KMܰWV6Dqt#NsdjsHiy^{E6" "s]>_2lQAM`ǧoE$cĵmzo麐R64˂G-?@ OUჳ" uEBeTeGHՇdf)vT™r)^B 2OAJX1Q^S ǑRnF)(Rz/.,vus5>߃e(C19x !Hav{(B}|:d R慇!4jItB:+ Y(?LK0X#+-)eIMɍ O #_w͜)3%)r(RF=)(PuېH jRx}M+&ӰސL0pJBL 6 I“,ى՗q,7I} tiWG cG/)u̍ߤىxo"/TTLз`qHIWمKuB% '!t$k@Y)5.}Q$7'Qށ5/R['ZsSLV[xA}P2Z"{$K4~PqyU!\nTȱ)bq-.bV2j}CCek+4-bѐFKݗAܴJV`R p[9r )h"z[Rp ZSf+ `HaOR1#VmٺV>[_8-q2 "d[2Al܇O=uK}l)Y!n V~L^6?8[Uԓ-!F^۽/${ ٣SN!̢ю2uOY_Щ36v6|NDʽ,{xRC7vnˋuRL9g|ٿIn8c %iȑ7םTۢ(pPHDz6xR*e/#X]l}jv*$MӢ )xވJ[lFQwd3q)R% Rᄹ3{K\ PJ谧 RwBv?8M֭4;)E҆Yq!b} )o;4;I?d\W)=rym4M"$'leHoxOCRZFA_n_Q斛įWbYw{)$IҼ~x+KLR$Izg%we% '3B$I}eQV˗~<eZ"F)i$],5kƏsv;aXũ;}:)Y;)~{Խ{߻ݧGW:_{R^{+o-\mBʇH_NgRڿ%]2ZFS5uٵ|#$|XOڗXKLJV?N_rLw䬃Ա#wM2-RvJHI-(w [ f㭡gtR~)olk#?wcjslxgÝ YͻMHy5^1(#RAeʽKľaW/!70!M6kիN=VRM,VD6T0]5)J1B9b{X:W6UwGoW_gl}24J,L8A>HDl᭠(O\ U[<ۻzYp[hQ`Fǐbt-RR˯qk;d)k|5Hi$AJ;4l{:L6Ɂt'xc 8l"80vo06ȍ{HauÎ`EO|QN7r %zw=F˦ߍXq+RB#RdƂT+wRC8LBJ6N~ ͵m$yƹrIp1H!uA tHQ%3OXxN )ׯLG{.r_ͨA=BOG-2;gP.0olΗB3Nnרu*s s77>g{nPUl@JDmBJ YRk9"$qoP>;LH)*c q?UZ7)H)s5()fInj@(Ed܉JE{fƊ*t"ɪ|aFW.UAJюVDJ2d g^!@u$q-sd2:n$Bƅ:8ۮH.AϷ)dr^ɖ׊ BRu)`Ǖ@ :A=) ѮWR`W -53VʉC[}{RJw3)hU.24yY5"V(*s+ݡHfӸ`v 3C ] 0H1 tK/qH] )0yr0 ^e1_S>t 73b @. s Q]Hᛊ/B uI\(}8oyvA BnT̝H:.A 7=HiF8A-4DC$ G/Q_* 05څ-&U)ƿZ&K-Hz!iUiڌVB$l]e)e0][ "8>0E~bn#qAaC6Kn2yF HRRb4,> gs~v~8~n nT刂YĀWR?rd]-R&A X49 QpHyFʟI> R S8i zb'~WGZn<\BE"{)d8rGuhX߸ĸpH wp]jp;+zSߞ_OÆw꫐r#iC:Il%/?h&|I_p|;]l¯r|w{}BzH9C{#]%!4ln厏]#$QBYj'ʭ#Og&$=IBijG?4AJt })?N3/$}FzƩ+$I ]H${|ϷY$#:oH$IN$!E$rվ7L[>IK=6u!E_Uϗ'gܩ[]Ij-m*1=[_[B{2o}xk~ Q{&.ĝ(!k_Ҡ`֏| 8 Y|:6CT>Hv9$>c(GjCIQR-(OsHy.tݓh6/^=Ek̏y}l^^pC::7GHyG@ lxG쥞$lh3~]̘~3m) ! R>xL0n_TE '4z/?VǼW'qr,Z6dc::sVHǑ·AsD$窤˅gZgw&CGKyٕ掛B17v>)>uo%>T}rCOt{RU60Ү7&U@5SE .Uc/OHHf;yF;>0mŽM-~.]mC%dj]xw"yÝ-RQ@l?<%.U)<_geޗ:|\@?Cc$I!LԦz)_Q_9/O3jD:i<2nj XwFf :fORKH^f!e@1>&0!_), YnyJ6\j=𭁑Jht~T u"ڑ{!VB)`[:IIB3ř2Nwt-ΰKśhpŻ*sVL\8w`Ζ _ȥwڢumB`^RՐB=<\T6qmw 7q`Rf*כ/inR/ MVeq#|t2]ut#H_vz/Y#ezm]ZC씋"@mU+LMuh]R-|**Ha@Jᷴ j@8U'4G)p%Hi9RA3U2SO\ZJnDY|0^%R27n ׵Ie~MAnE]UB%,H rY!vg)xv"bWoK2[Wģ9"Kr+/AQS!T㋎ylp*߬0 iByc@^k/nQc %;"4Ze~1NbKp )*#1' %.\f|)ФVfq8Ss1 Ҡ1Qe]B)8đpX1DJ9vOq/=C4xfbBCml< s9{ˋ4V+^dWmHP ^DJcGNo%9.4+/E#TN-"Lܹ~EpF?Wr=}qڃ-KC2i"5uXk#e1ՠqHI)߂ n0#e)}5#Oj>J52sTf?|]`A5VfAHahBH xsl7fT!&!Hq_(QE#76\X>TXd0G7RnE"t"Ŕ )sEš)vcYYf 9Ŏ~Đ" \&JfLښ$\qJ丘wt)C->ow"w_J,6)3ݼ+ڐ o'RjpʃDG.BtG&Nj,OCoHR zL1_m6K)$t3ۢsF i5$:%RZxl(!By_K;G^EJ | )؆&he7[0̎ſ]_ܵleTʎPGt)?"Δ&?Em3.lpRtH-snRr*SCgʅ&Yv)|.3\4a4 R\1zqPS#nRPL̉ 2񿥸V[hɋ:>D )v\oZو[Aå+%Cj tl2@[Hy(0RLQ1{5H6܇xWaw"a]ҭ)s,"T9^5^L5 yVg.D_6xڴLz`Ae^3FٗDjo7E7J~7)𦞪O-@Ŋ`٠~*vfH ߆W =tX&PYlԈ8>4Qhm!Į%DGԋ2` N)Z['kH)) u)] B#O*mB[6-@JS=D-^!AJp="eז? )iz޷[EhKF9̴#|4m;5T:pz7?*n )GunV ]z`H]lHfG s^kHakr⦭/gh$ re̡gAu ,_Ӻ Pm5k+,5໾ō%ˑ{mE:laճ63 H/dFmǐR3,Tnjj %3H3D-lME>)sekFXǕ֙VQ%r*׫`6/O'Wwvwchܩ˺u-W) 9S6k)p𹛚r3Rj&>TsR¨_oYg1C;R/A$lC&,wk!2Et*3CXG+{L!4<5Z{ʗ) c~SFYA"ťۚ,vW,y#ǒy@Қ6~Upi׀ڬ٥;>֘W^Њ"y|վ Pp+I(BkAvL"EDO}_n7 o7Rx~yrxH#SR틵؍b?DmH]6رŒmCSb3/ HF3MB]H!ΈAvQR]lH%[g>E)YJ4!T^#R v%Ye4LiTs0"Vlap ٿ&ܧ a3.S ß#5s\``EhꜧTh[x h Dƻ_1dEA hqby*gx{?do|:')%٢7^+Ib~Xoڗk0oЬ~)>n]'.H{?u"q$:Mf@#<1a4⼴e?֙"S R/R車$.Sq|pI:UH9=КyqOVg_IFIHI4߇{|{ɂN.$\ )TOO'?D?-I! )TOG§$=EB cYoAK! )TO~'W!I'$$z$I>(!E$߳R$IηOO=R$I6=+;:Ջ!E7&#;rN )$ ?=B$I?{!EbH{):W&]]l)E:A=p+úBψ͏tڳ+_ҝ [_}QH;}p/O2آO܌K1R>'rjPoXڋ<+2|H9-NDn"%]7h koeʜ+ewNTQ匮f`!3`eB} E"+}$k ` =~1Xk-,Rˌ.>Uk O)Y)g.nWQ+_?d5x~TӴg_P-Ԛx QEv3/$Dx?Y$8oQBKwj.;5s䱋M Mߗ<7g/4BE )Ųiv w{V_)frW2)#6gTV]f$a,["? &fZtUk"D| MHI|L:/uj0qSse]ƚT,c RDA]'HACR[eC"WH ^h]6 ;o,q8ڵ`P`7MH*yGê0G;)qjkp~+?pst7#fޔ"V`RxU#RPUƛ.f!dS6b!ʔĄk$RQR2_N pixSn<@kCbC׶5 SP$ ,R ʀ0 %X: )xE+f3/xvۑ[[A’8.) \)mu#%6ٹ?c'./$Ug$1*[a V20B}c戀%tXH ֜{%v[ܢMQTE[Ȧ$ya$Dl^ ,%;&]yRH뢅BoB}ԗ ,l_ @Bl*,h9EI:۶_n(Ija(}  ǐRuyL[9 r_ǐR)7HIo 1RZ{>H ,Ff.L2n*6̰! b~H}Hd'b7QĔΑ⧛O`ز`)v) pndC*p(HzLpaHAC;MX/eH8vv|lDJVJo)R×QHZw{ꛫx)Tdf3L{-4 "Lg6&``W$}H~ZA)`? }.05q?g})P&U /r^49\>#%R{]2 ~P+etpM-oHEKc_ ճ*@DV.@Ja8J(E@ )~dCW{RnOҼ)ZIFmnނ*0y*2NK1 x6Y>o}r}WB/Bfx\J H0zwXigt!!C[1=-"3VvQA,,.Zd賆2!hB O+$fk HiCV#R+x)v t B)~V:,O 0$A,lٲuM`M`?9@J Hq>H-.%lnE$]ܵc&V~RD2^'c6 >k#(`wq3>V5H\FP3 +> eP<}@CReHi}+']`K,,/.Dν]HYY4 .ǎ1YiX] ^V67ǣ?3 ~7MaƋ 1r(.߾T| |L8c ]/ĭ3s7i7- oB8WB* d"hȦbERPѦ\[iO!93)aځ쓃4L O'!S9D?O8{+LS)m{l'l#tXei?}DU?U(!phL-H/`nnVmTBjҭfo;a2Owo%+ LX{Xg4EE_r"}L}HIS~YV.~` JRF!DR$OIRM߈;)7;"IjRH7dwqKt#OgG~# $IHH9(玒$IOQh+ޭs$=<6$I}uy}:U$IO~Q$Iu )$I )$I )$I )$I )$I )$I )$I =) =&9/oI$.C_~R}B/I4\ /q~LK$It RNr*I+dOtI胯4 :OJ~IHiXoK$]>1OSI)E$ )<#IԥY < #^۵"IԦ^$;wxk.~z*( ݖfk*6$IՅ9 &mbAIUMHyInu #m,O)/}Dw#$/mٛ1$IW/R>ޯë%f5%:+xQ>Yc"IԤv`6o>3*H+0 i'-ڎE!E$I}HaFb, ӋH-N$Ib;ݰY\eK,("EP$IP'fLRx+) ;)_$IRv#:~:)իHYS$IzWiR*'_sERx2 %&H$u)5ޛR%z"H$ut)zvt]HC~q7hlz^$K;~q7#!bR0mg$I〧j Rߞb,$IR=H>})}𷩔FT }B"$IRf4o[:ڑ>OIۧx'I$E#Ě R6>PQGl1E$)QRϧ{p0R)<<. ~ౙ6 H$IQH)މH =B]9$ Wt%ITSFp{^Ux}l ?˸ZMoK$W-.->;W{GYrI>_Z[$IMĒ$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H$I$H;5O&$IFBʝ5#t$I￧;Dwnc$SG-Y Kvg۾sl$}JH-Yq_ o|{~cH$2ۗLY$n|7RfD&It:RA/L"~aۣ@e$Iuu!eQ!W;K3]r~y=H|_bRjcR*3$I܅pjq ~RHd37$I)ۻ"=^Ac|̃2_=;3rׅ0$}Yv#P2{v殏1 wy(| 9/T%ba7_ܷ$2`ā1?2jDx{ߋ Ĭ"#Hү/)=w#CwijH Bn|JAe5=33$I?o߇VoRN8R83^ D9"H/j 63EJ* oS ^;e/<^_sY  )ڇm@ d_"e}]]=I!)  )ډ͊,R30gNz5e5uQyVNH!/I(v + )35S5SP#]BxgSs|_+*bLI)~!Kihsڣvt&OhQC DJ='(|M?D!e1bZWA@JYN@E~FM#Hu?p, X7҉oxI}&7*aXwd"I=_Ӗ]=}b R%֑=6~Hk]&>aVT\P$间56d!%=X's n{Wˇ%IzU}1=1O?n|N;$IH{x 'JH$鷵R$ !Eߖ2PB$I-!e`O$)2N~$IV )$HR)>$IoIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$IIH$Ii<R$IyyR$I{gCʦu.RH$OC% )$r7{5XLxR$t< Xmq)_}%ݹ)B$=M^ݔ\d38{IH14>)B$Vxei-»C{KP>)JR~Lgy.2f6;)y/y.S"d f7bVDośP}g?R O>owwO)KEAM]MLn} )jS~H{ϭ|*y]?ڔ#k:[?MnE[=M> J~~NcHi;#۽ӝfX]rU~>M`ز!n(x),<08mz}1o^RUvN4K'p[}9C\|cI e)fw%ć H0/szETBJN7~nitS׼@ -sܿßG]I̊d;fsvUqSM|z2u)YBOG$JMxQҢ;Hi ^ہ=[ $گEJho{`@K*2nHhK$N˝o}4n Õ~ungnAʁۃ Dv('m ;LtNȕ\e@>|߁BNi#~4ozl;y4\C^4=K|Y[%Rvxq*a?wЛM1/h:鴭i[X>hҫd._QMBPem} zpyMDv>eFEQ8 G)BQ6OIUR"Q %D'Cv%AJŜx.R})lb[&soBPU9Hİ *@F g]x!;s(HftdȊ]v5 AaD)xx18 3)<^U̮#q\_z?Zqi(bdf} T %ovs5:xm:ZEr'&2nRkkEXX08[1{ ?+rUܥ1Bb#񺆖5 ?d)#%X;" yHj 5Bf6 ܸbל*3-2RRp k),fvo<C:ך)EZf5)2R{=[J()oi21G2 9uKA Rg[pƺ@,NGz4{nU`q͙l.EcgK_Fg HoX=ڠhdO {4u4R|b;)t[1둲5~~)Ԅcp[[. %Vz3R>,7i`˔)`KR2юHA6.`g|g>sD "ՙ']?F8-Ku.3kK~YDR֗pM=)$"`!wHFH; @HV_ 0h&6fToMŴ11މ?C'}Z% Z.b: ,  8&t er\aJ@ߴe )~o]ٙFtN);:m G㌹+}HYjH L|k0R}|~XD@l->w88ƀB0RHRRW#%oR GJi-HiXEK5A b̞S:?0g s/R*/gE!:?>'drL !qD0N"X)S>xڑj!^M:)BJ‹w{/ A J7R y 4?I_֒kst[dퟍkt"b'qlE/;B=hH!~A vB)< BνH#gY3\ƱH3,Poz&R"pE@wMmFz3CJs../DbBķb1ʐ/..UƇ kC\MԜ0,~8W.H_At#0 N )5,ݍ0^#yPB -wVnFJ-W+O:~T jG1FVl&'bFRC'(+:a"}l6QS$K8@#{)HLB*F"֠oN-Nd`F#e_l! ]87t#4߂>S6*Ѣ@56`BR v;b$Mqv wrya2Sݐ2) )eqDOQs-KR؋_jN;x"l+m %Z֟` +x 2qK o" CWfA5z~?!KWH)au!o V]BSsndmgCaцlHo`!}Mv#]!7eРxXaˋLg@=a:|u#m:R{NT6E1Ok3$Hit0u[Y>0wldž^b2#jĴ4A!y"݃p؊]IL\aQMՅ8IHI^u!Y͔qܯ)6u: AHw Xwxn}ئXf@IIPѦ9KҥE @M*s a 6#mA_p\Q.Qt{Ns2kv4KU?e+98rG94E7Yl`oi}l vg<~<񿩸k Hab3vML؇Ha&!Ks %pX? ۥغLxW''HfU lhv8FKOf k?{KDv'7pL`=9kr/3*dxu͎wKNIzRo{1Hs}B$OÑ=R$I$`S$Iw$I%DϕI$IU )QB$I. )QG?,IRY/I=R$I$ )$I⃐"ItTF"Iԡ?Ӽ;ϥR$IqyvΟR$I׮q-3ީ=?pwМ[to7nbSJOIoSwVo"5?HOI]-dgZc|#u3.?,pЂG+Z)ډzﬢ[G nG}u/.{\HA:)&LDV=QRnYH铉fYoEʡWF?v񹣞AE.ygL`؈·s`[f &Q]:~vGۦ#NW46@J:P iSH-<&6 x;cO.2~'r5ۗԋ|yG;?ɟ{JY| ;:3L7Dy ;/QMo_v$h@24S ybI]!:3ʋXg7ϪCo6} Y(%^rVV"/s& LHA)lr(6bDK_E R.?Pg]٬TzU6C)M~\)A|a^<5enG;s6,Jض)g7x7URuS)-AAfuLZo.y8y˜A(ҼY,Wx)dzsѿەv|cEh7kBAJ丐U. .]v}u34:32L6p*3ë%xb2~U`4[4WxH X(;7z/p(k59,BH̐H3IE]#wB'bz^HI>CTQ5z4(!]`љ!g~IQ҂o`T68/lk)f:p{+RM~OHz/?;P )jnGL>vyv'(mV@y'NXi.,$ua4ڱaתUg/>Y R^=n[d_| )&c.# [1؍&4)hUH&wO~PDFs5X4hۡ$_o Ɔ{}#%t*EWS{fΎ޻5Suьt4)e)j+rV%ceĘ3 +RZRo-Bo+5Z҄~(dF eII.X6fs'z3:)bqU[1Mrm,gD~pfDt5oA 0H)-.d /0&AoΞ&Jt%6=彏PJg3ϵbBw_3Cj3m7=Zʔžf|C?nNR8 J;t9TxHCd 鰱H \*7/)*r)PC })deA)+dKp6)P б@E%9&i&K#_V`frE9EsM˛J /P_'y,L쐬VgF MXd(qۘP߾mppv#)H`a徃i\cJLq!}H1bc;nRcEm r-ua7Ÿ1>ebs7#%&f^ l߁|e1EJD?l*pHq (6iNX#G"!݄"yHp)Ye{)@Jj}{)Ҡk~MuK'@k~T RP62o|#tB+H 4NŝM2\$X {B e"e+%* M"3HYlIx%R i;x ?Hӂr?..dKEzt=G V% !LVps <`'RjD܂w D0%ېPn Hi H\1̀ 5>cpQ/jtf8)mM`HA9)Mk_.C|)bzdb6neCJRa d&~9l  6t+R0BmԁUO 0uabg,=rWqۖI4<H)U6"0*-7$EJhN9ی@7ں<H]ЮTՐ2qnJL`V|A?ݫbZ B()a6|d}/4VjHi bRҷ$iEJQ\C )iAt6dR҅o˱oϞ!JR*Wa3)B(@-ra7LmbFe ޢӻ)K:"% 7A Y}DoDJgи~HimeHαF 2hHFʪU9`w` N! nBئ=Ւm82d %_p)t1Xk )a4FzƂk3ePD e`3LPVf[9+(%bNoMλ4-,'[r+>bEy`BV<|s5yշr 3ecxx ot{? P6aͳjetq/@T6h݄Z+bG@䨰>IgU޿XZH~hkc&21St`u:iR Ѯ:cq-÷^c?-i>yX3o*E?!K%H,?bɏL)Jyϒ"Iҟ|.7ְL!EvVT}o{ş%駵 Y[.Ii~X咔KHK?$ )]5IJ )$I )$I )$IC~[[H$Iy}{U,?;}RlZB$I?$jYqoqB$ImY &NlTXH$dHp ;!4U|LB$Ze]/^]_m)g/1t/4ۑRΝKBR$ic1'Uұ.4F~*ݐ"}Ba$Rj6]79Rc,dN|eW 3oF=&nˉ}m!;a"屔"d7_W_&< |\{ymR_ gHIjk }zVZv?zߗ\•%68{rGFmkcʕ5x5#ԮΞ{KPFX:Λ5c@CECOC j7B1 V٪FMHy[[5RٱTty2c ?>Mp7W ͓aLA2ǐ`c~* 5Q5g!%BvL}',eY'0L z >@o^Beq2#<ÿڵqPxS/RFHzHp%gkl=LY;W`6~.~Nu/Mmv>`Ӧڧʞӌ#4 5k,Q Ipj4R.Gbk##fZ͸,I]t$C\!V}2ɹy{خpHI@xO(LvD렘TF(B0s݁q󈠃Z+mHz+R>6&FJɔ~Tfݑ o&I*]P (ڂ a}bspOj֙N$ů?hEFTk*6bt6fh5 0!)- OdUJCRɻdNְ\f&3޲s r7.1#2BMģBAH %KPHB 5Ju"%J.\#A0UH1{bͤ 7}R搄u۫2D&[*iN q\J\Ep :hXQ9R6kg,Rju{mYcn!Ûڐ& *}UJD@M\^89qRܭ.)) #܍e4!_!&6_W3R/[.7Eه# iH<6hL)"%6RT,ko@7u~K툒xXm ER53BWF9߅&/.Qk a9c^uĥHIl㚆g)nR8X]H̞ϧ69&=:)BJLocLt⓽HFke|.@Jͫ )֛Yԯ1 ϊC)i}03>Hm/@-gHKw VH)<E)>_:)kR]E kd;:I ̇R8Q|h8W,)Fb1]ysHIYsV^[[xC6eIajU#-]HyjF h[Ґ!4Rۏ0_C6kNEJR\ J$]8]9 )hH$}/>9tYUAys)Fqe4RVMӄ!8~&ۑb5L:#C'%z:ZYHpHRݐ.\',x-^1C/]G)]. UMsgms$E8^0]fN~ Hԗ5IRV7Hndef R|gQM 2LAW@ d `+1~nEJ|u E|Ŭyu(ߔь-_uV<Λ"a%T"ar^n1Io.. }=۬Եt5 (4I@Ҫ.Kpc| &̿pLg Yp4rTFsCѕ1l(Ii-3 1XOXуSһ>IPbFMXϑohX]`"[DZwۼZL^d7RXo 瞥Yԣԋ2Ƿ^vsLK̚ N/='-L7{ZC6w`=/N3&3Rޭؿ"U'xR_p)І!jУ8eAi%2)x91CQhxcG. Wa^HGvა(MG-<m߭2Ԭ]G}H i,)Jgz#@-\ّg!/:1H1C wmT[SE#)x+1.c'9G#in"HGtoχ)wg*^wk0lc=M_%X&' P4% W:V:Q̗ף:ol)zQtWu!0}3j_IW*DHi )1tBr),:F;E"zȔʔN4 z|qޚ-ڱnjԣn[>KPAJ}]<Ƞ‡ )$I^b5_,yJ%I)mzߵ9X̃.ItP;;FaoN #I )үJ$]#w,H$I.P I_ȊR$I>R$I:Uc>}=)&"Iz'Ƹ㓿b)m"~A(l>+sITyVv ~) u )RylQ HƂO5Dž?RnX2 )j|KHiSf܍BgUz?\p4?&+80 )q=|n)X6ko4jА+bַ,˻}xqH$Fh4Fh4^h4F"x3mP}K>ƀqۀAy̕IѸwUq̀Hg]OeKO;s '7o@h*r(EUWBOr$o&s**7kwm{D5zzEmHXLQZT[[ަKD:p%KY rP2- ._y{c\$LT+`,PY+&*:܈hf.(=>U_[U.A{Ey|mW/j QqDoRץ~iJ)B$wX׫J1 Xx'ĿWODu`f?kD6W$/N Zf. $[ֈUk9 Fv9FШq֊ʷh[[)=;3%aL*Y6mԇBW!,*tp c])I(8S;!ޞ16 JTV]G}2'd,LeNԶ0hB}Dkƨfa,B\t|+UJ!D: mY-Bf^^P @K,g2? 6UozI\9J$VO=֩эTuVSy-VwHtƊ5,5aXCFFXr9E{A]ڪj@+ (A?5l*͈=[JqDpUR}KJ1+*h+r[XҲQry)8cr*uE_S)~_7P=#F]%Jgƶ*c]|Y)SLe JJ*Ryv0f$iShO1Ԏ -[/) >pG)TApReBW[v򧩥n^X.Rela_y托gx*Pڢm KQ+Uy\/b*Ų%pT^yR+A8OɋªȤN(9æҌo:RW$/O2tnS)ę(JjĹJlYyהR]\gJqr,OQy"qWGfVQWnV)\5gar8|8Rz`\3N fHH6~GX ؄:Gh`JQj+A?Җ,F倫귽^ ;T%i[JW厵kEWG)8uOJqy57f0XB-՟*ttUV%Bߪ;ȘNE9ӎ+Jo[(s2ĞFW篔aJqpj-Jӫ֣cUѵ>RJ?졵(Erlѣ!bU) mPu1O8WEg7_v' (vJQ&)R,=~I)DScb/J)cd p!(ܱ_do(Gh#_$D̮:f!ws#xRoIP uI-Wݭ:  t|o,kQVJ@Y*k )N=N.: ̰W^̦<['-y=T6 y%ipTIE8"SW2C:bzgRl RCJ.j^a@YkJ8t-뗳=u\[ͨ+j6+4Rc 9 ǽlRoOʂurY)U"Ώ+ nRj UJUEֆl#P>[zm̥{+ɘLFpU̲/G}ަs!G*S'[kTuZM[檭A-iO5I@>BW%^h3kq 8jښPJ}.kHl[ڞYT4%YBd籜E"RGև|9vU  1u= o߯+1ɋJ+xw f 1rT=8_ZUUlsz(UVvߊviqU혠 }Y&JW-Tƀ,vеYSǶCuTdk շgK~uo[n K_b]U5 =(jTŐ>P8[F~VW%:W81R-lu? "}ձ<8WvWk f\Sbvu T|(yl;,JԧH/8Hm4zQO; >@y J|F~qôp'Rh֔ky/🁎/䇔(u|n7|᭣g|i`$n~9tf^j!b&>~=6u+Jf@)NQ-V! #:;Dxt7[x ]_ J-Zݍ|;mὥSwHR@s.F)Z{t}oTItv._*ݞk/^#j3WE_:L|7*_٬w }2S|~ԇʍweTB/v8Bbm_n?aSɭTo86vG`,6FL?'L<* Ч5|(cPg-]]iܖoR7u/zR͋8OfosI"[ZWje'hS{*F3a8V;5XJ(5^zKڵUO0bZ-O*CٻCGgJZ̺(fۍ"o ojr(?Vk:wMl40:MCEU {^LΌiּ gz}i/}+Ft4W c?Kez͊b )+r+2@"?-TʣnZ)߫P)qndrU!&uvbNEUa^zt%,楬 #s9%`gZUt{huJα)^W%WRr*7:tzM5]sgڗyz%-Z/7% }}쨗L=C>1Qrʋ stfVɋtZ}Kܧc"h"`}3=չn(v5eC-E] xHJ1/*Vkg~,-ꤛfhوOD{VEimFY>:X Z֏ R,X y[FlR)J_+yfn-:vV~4Z}+qh˸#NP!P 7\- Rk$dᮭke N*C]&(}, 4#ʰׁ3N-;" GbT4~LL)&Be[0jzG}qeJqo5KRRve J1:f䯎QD`'cRjpp3"d{2;E;Ev*|AՆ~ !z=G ӯjhԎ%P GlU*|U'R{ W moK|K@R4/.k4Tʢ KH)ET|&[s;(OTUC klk{JQ)ʺ b}W|3z}B,|RG[NxGBR2lUma+8 c^ GzCvA ܙ퀒廄RL -U3h[<Ǯ RJ,J|tmGrLm7JKcJ>SR^% ×RB)Jm庥!NN'bmAZ=OGEjnzƵ[q=(y5X!<־J! kzWVLx])0 XG?mTeJ*F)6T^n, gi}S)T6]dճc>孔bJu Z~_R a{\> 17ʇ'A))rJ2 UJ!]xY)lsc ۺ+r8'Q ؛*VQ˼mN l9jzBry!%;DZ )#5}"ÄyoT濒(8JZRz Fb )=\ ^A"6n?0:M&Յ_VWEEE1%Ͻ7BpI%Ebk׏[yjbD5VG Z+qE9 >EstF)3gW=H:b-[c*!6ɀFGZJZJ y/=B+/*3ě|RdH0K6ȃNox3~Q:92 jz4f)F`cd\_Бe[ORK?w@2R~JB^Uq".Qճ^)fAVJiO]\[R vM\./jR3bD)bIrkR?4Bm=Jږ]זcKDa 5VJ{&qʘq^)ħ]=O,RAUqzJj>P_!2,iWq+Vk:.b ƙgJ7)HcƞJ+ƩT9c{ffRA@(6/YCS^߫̔hxP2ͥ6J^sHqZ\*mJ=Rnԕ#Y˪ۮbx@U dLFŌJ{j)QvJE\_drdJd}x@JL*G439?]U~EVJ%mRlyBƪ2~BCzieu&Z|{K9W\R_fW=@{Զʴ)/]?X Sg`"L|R)Fx P> F.,THEvW簾OVq+X6tÇeru#/ze\OpbjP9'YQSչ@gRK͖WR}^UJzh4cER[9]Q?!])R+u#DwVs݉JqJWɦsm11Qj-yIvNA1CDW Ӫۮ*jeWE)Jl:['SiL#3Ba۬[õ K}^)g-FJgqU&JqrsPەSZO}YC7[}գ jѶBԒItO^D{c۰Z|n,}+ J1UTKPwV)%x)>w{|x:Co}M}c :PK'@sJ)\ 64vg}@).>@O@).>Y{O@@). /@)n8kә>;e1|q(;C@)@Ji ~oR&}~P |#7"CP ./ ]Y}ǧهR@=]U% )t74}ԮǧJuiRދ^zݍ9M⻗{tB)^x#%}B}[(Ť[_I)G g\ʅQQ rl3JuWQ/zK)B <ƎCNV;Ǣo>i~rUDQRe/Zlꖏ{XҊxիR>V>(JJ3kJĨi_pFzKSpłtg\U7Q$9o(9>fRjv*{vusʟK9Px6,8f Vތ魺`d2)"0+Uu43*P `lyS7S||~B)(7.C(]pL[}:ܿ552Z\nPJe.9'’qaꛫC/{)MV'c/V%zx4sVK<=5+Mr(F|`F$o4[wPO݊c*D^GJSJyL|DП(GĞDžk{QҚ*I9Bqpz;\F{4vJfd*Q2@)FXߕQ>TkN[*Zǁ ZZuёda$.JvP h!29V)-~8$LWPhdS.JkEҶLRܶЮCBZش5P P]JB,NUͲ\^ BEU-*ùV+T'~* 闝-ᰯoC˕̙@]޴AWT l)D cNh%ò RQC),kjIafy(PʍFs3hg=2*6ܧ!d@L. T׫U)^#m9!g]wPʖ(Nmxi+BU,dkѪ mKȓVð:P% kOCm̫3cJ)wWWTr9v1*F,-^)R=-h](5k0nכ^)Ypf-GmYP틐!r?Ȕ浢uZIMܴ}Q+}˃)~Y= c6#+#l%Oe5W4ܔ2CoށR- %k˜_b2 V+E6.Gd2AET= 2rQąu&jQ!Jo +ޤ~JX答r̠]b,J19UʻNǡ1n3@X<`R=M5B5=):m*⾡3◯.G쥓+UG:ERI)X{vVwFoRd< -`)UZ!׷^o?dYfb7?Q2+J[zƦQzn)ŌF& 93 V>et)E܊S8BNU,PF֨Yԁa*iREt_#!~,hݏ|B/B)LK#B;XF)V^//SO)2ĵLܰOmf;ĺv+'.`RBFrA3˜%g^NˑV }ʔ]x֧b1zP U vP\ۡz2fF>S0u(P}x)q]@UF-1qS]W RԥnKƯRJQΊC])cLRx8Xx=^Vou(*J+bJkZR(T1vH\ӽsR"e+>>^S)8R=*í#O;J-SSfPJE珅JReQJ8Smp}B)fD&,j =5MgAs 9K>Q[)fp(aQ }tȽp9-;*63ֿW/|Plʙ-w'.5%z*GBjARJw"*lY k +gzE-JS'WC_ttqӋV Kq#T;Dp*(Ŷ0~1VKR C'axuY0gGFBlOS%G)ڕND\kWZkRBqFScbVބylڏʰG'J|¥KfmH)IJ1аRE9|5V8"k?ڶo٭ʒsI[yࣔB굯oz%>MFA2E l.h+d6a+EOʡ.0rgpuk2c;㯧Mc>VdJ1B!U[%t^N^1גY{.m[u]4;J)m]/KeiT!~~Ѕqhq;7#pK}M/8c;/Pti2]߫샼+J4VKӳJ%eR\iRGs Rl/KJº, הȂF ݌)|2yp+:*e6sVe8uN-]_\]je5bS_)2AV^W  _"D+VXBU!}^xCzjX3+R6ni3bӦr})Gcqc+,d։[Jn%WJ) mZ;&PJmJ1C37J!@?tr90~^#q(y4|r[B)Bt3F7mn9Rq*P6Mx?AmoSlks^Q+!gN&@퀹Bf⾪} EJmr_r R@(p = =6_JmzrgR@K(>vQH }7 Z?ȷ]8P h6^ P h%/@S@)7Rn{!}W@(|oJ@)|ۋ[6Z˙S(oR#ūt &+SZ?@)RyBYJ]̘;ƤSp/S@u'3R)?tԹ*@)V-fR4gc~ΫJyl7_5SNi % J_e<RnAv#Rxa6JG`y` @)~ꖐP) NXa1R?[^(N!ܗr(7Sx (|&RzpU)ƽ(fRwyt=e)RB)4 KwS̶lQ3SRh(|nf R)+[)TP RLj9)F̋Nj)Cĸ@)˼y]ߞ/YRx(|WB6%T`b]P t KjC)]I۫N(|bc {;w0 P 6uR~Q Ÿ[]zNsgJkJ1W+Ep\jJJߦnג@KqYpQPRy)q}yށPn/}v}(|[-^ (NiBI )@)>Kr0Q0R@+xG`Vx PJ'2@R@;x'*JJWn57|(F_0 6S!@)M{)AZWN Mş@Jmӏ?P hKE}'@R@T |R@'S7P uBP$P ZRw@R@7÷#CC@%P Q$O"7PJG,-JSjb P hu/[c㻛Jbݥ1@)M~%һ7~0W&%7P h ϱZ[MNu^MJStp Z$~I*F&8=@6xO@}ϫYT8LYFORifHNOfd9RJ#?yG'P *Ë??* +@)o{]_Ta:n)t}P#"w>2W|-6@)+8q ᳕1(|~:-z@)TT\y,xKkibp`9<ڌGE_@)b*exP (6 KbJFi|gC(|Ow! :un Va|KZɡ| G`Jo92UN 7SR/#sRS (|O}'ÈM%(|B)B}0q\p#SJa|B)@) s4 >#O)X(qѷwMRlaHbi6Jn|5YzDa!yBMeQm&.͘>i^yunm~)gy@ϠD[aE|/`0p P &cVOʝg-|PR'pW]_R'rwPRpEKLMBh5S(0J.Z@)R@ydyP' ch-: xċf<i*7SPR@WFPo$Nx| (4s O?Qޓ_O޼A(4D˭£U9g;5، (4g.ܯ`1dgz  (4镓7<گGzR@CFav'h&@GR@#Tͦ'bQ R@;!K?EzR@^Gil&h@*Q|[@w(i! || (EެH,b/}/Nrf &P x0J [{9XOL%켈|Q0RZEȞl#P x29o%w5XHJ/k^"?nq/(o%VA)@)~KCWrrvN P x_mȯkvzG0R@}~(m^6S&qY{@)6l<ͿA?% J(⺔#`0*P Ǐ7Q2^>5Y=:P ï7Q[idvv^P "w;]QYs@)fJ7qG@)q0Fi ?|yvuq9 ˎ4]E¢&w!EB,(T|PRjEF)#*eg 'A8b(XBʗN-("u;8 9ϟ}yDc,|R+*|MC'@RJ`-`6 ysY.l^8&⩕,`<~n=J"]J*-ަ1}h85 XG5op:  , =:#Jqx>W 󝎂o%W鐖 BŇɇ,PJ7=%ݽGiȿG;$+90x}Ns;%M"sNyCPdDz7p-W*AޟJ?~oE!Igyxt(}@_͓?AFN}_@)?Na4E,?ļ^[p3+*@)m\;\wD@Dmw1-q=ŷJ 4PJ66?N_H[.ơHÖ3#HO;NJiGxyr.B|t6pzs9LJT@gRZFyd/88lW8 Ԗxj l &]zh6Hh8RZ[m❇H!Wx޽}\74JN_(c"yazѬJinU9)Yd>m7̖ݻM|`9ZV}W:r{xx͋eYp9-A/*{;Rx'?5&ysP t(%ڪse^VJO"_]'3chd$i{wlؽN:@)RM~;w),Y"e".햲bIq\/.g 5R̵(+8!)AT)=,IB6 ) "M>Ԩa W6]Dc#[ "If^KK0d1NY4,y=PJH1-.7alV~1\_)8+X_.ix`x6`Cf%p6mY|䍋"FR2"B^:o(N+6!e-eVopXo~ />H& vMy8=SKVGcȖ$-:([ٴ2B_g-4DgZ*}1-);@)-b7VrV,Yͼ,%yW7ja>nOOYA\qfKkf߲x8 ;x&Xm2kq%u>1S{5UCPJ gwIA[]"ە"^:e9eQpQQł'Yx]dIgql*oQ5tQ4}lY'm&=, we)Gs:/V)R1bnwS7QZS`2 .#cslZr^ Gm!=[\ɡCV,JYE90![)eZy{>O>>͔wAwRZ]oh󅺴({_F>KvrF^&,-.21o.\#&{Ί[DֶGg0I:;g|,[8NLóYg'PJ KNSRT˓'M*ok^bLɢC|Y$_s uʢ8;b&,/&F2EΒÚϏk>Ji7"CGTRM>bR䍏/uӵW"ޞW[c!op5./v΋br\IYg+ޮk &k/T^)|;ǐ,#@)mNVR*3EY)ޑduc[>ly[iTM{xw"K5ia|DzY#FG|=,!.[9eո| ( ^ zy^MV1œD|Fx]哺4Fi(8-cƣ&Pkt:&"h,>!Irρ VirZĹGi^;=xbf PJJ 9BN)21~9Qi!+&ƫ3teUָ(MO 1Gf'2dŰj q˷dO\?iC_|WA'RZ \*%+(%R }G)nu6q1kJTsZ$"NV1OWJ8[dz8E1"qV?|9隮-fA"g &): /+ЦPU/S[ TK)=*H񬸓j4փ?q쮔I`:O|. OI5_ |%`;d |Zxy[nH׬8}5Jip)ZmC #/TпFZFfxQ@nvÞ*a0_*M,JK'y_"uX:^hFȏ?n )b2PJ{뫧N߭ᄙhwU"ei> = zDR¿_7]?~MPW-ŷ_x1t(EqtBL|\D=4,JHM1%[9j5Ji;FGNa|xJAБC&+.dS)6ݹ^<PJ,B,&hsq~v/`Ji>QS^-,Vd=h;#M!W1=PJ0?Um~a: z!^d0]Dv+ett;ݣ9为f| !b "Y䫎ϷO^K1o5J]X2>J.#(WW>Ij_ꔝy(Ct2vw2Spa#ˊa#O47:I8V3Gfiv~@)ݢc|{\4KaέxqM)J׹94@)Ct-Q(V-öK,[>yh?k@)ݣ-'mzqXELY_ʇvP(QҝTJy*tջ⺓}rH{#*_iyBEo+2_$GYJqEdwJHky& .|‚>j$:]ߕ*G"fBjK`C) ztgOK'עon>DxXޔƓ 5|qyQ Y',@8,xW)c\$Hc5ٌp,կnPY|$V0=_²%((JkF*.CF2E,@8Og&rk'œe"=/R1@WٟlZ4:ǃGr2@)FQ4Bq{c|3%Ih52"S.}+mn/Z5|Dq<ƌY &3Rř`x0XlIqW>ΧrGj朷fKmdID{N/ŌDdv2܍xalSydxJe,!G;rt>-i!V7qʻ_r6.b,X.6;sɖO{@@)=㣁7 _ϟӻvcMzwAx3촐Mُ:Y$L|6Bbit  .¬ͱOYrD ~:esLaEWDP PJi8zܫӿO@0_f/?P?8d#Y*l'"Hr_>\C'{Ɔ|*J6~fP5D@TwSÀ뱸W<>SFuƳۜMd#\l~ (4E~=$? 3cS6%Mbx78-c6\ oKv^VL$ Ӎ4I0 . ytq|x8 S~\d8ȔrfeʬMtZ't/:nr{:gϽ(m`$SJ598ݔ! ~_lݑ՟Li?g4OL~ t>X|L^D(dgbdd2; lAz4Qq8o8.^clWA7R+~Z\坊@ߣ׬=]cdt²xql_3b6Df8GT>%8;,D~mq䝖u2eUHRB=knYXl.b˧ 4l-S|:~/LvQl ?BBKx]})bZ!c&rnhAyte) x:`bx>=/)!rdV:I|<{YNdc$>md+E?/p2Xʺ|( "C>lyVG!ovb~|9tWYL!I o/ȑ]8Y27iS*D>Tz!eU*3Y{踋eNxZsi~q. ry%Pbn(m{\/&[.n(_5_E>\adZ]EI6;<$ㅼϓs-m69[3$ G#̋1gx't($MeyhL7V|XGwL^da"؍B%5GEǗ8b_x3cio+,K?. @('fȐ4>j2P IDB;jF_F!֩ԃ,A^ٯE>.WpNX̲FN+>%ҿ_fIv|6殺h=*[vDb&Iw_oYS]_ }yRo`@CZ(~,YE~LrnJY, a͞d)"MXh5L&h-O{|,Z-iOGb~CGRR<.%" Oe=tf,_(Y+"^\Rh1[4A|NF/ά"LoL  &_xT"&]Tޖa\$;9XjDx͔EfD25cH}X ~zȟGG1nv*d{`eMi2>ކr(bv|?;GQ+λ4SN>~>p>`;]cIp=R<=DцaBH:Je<^^g+χBf :@)WsTFʗW$d 5~2 !@I||fJɌ`=MQd {r^Lqc\l q]![l_l^"b)6%`|9D(Lߩglb$`3*Cu>"1 fe^扉[.W>Bc@OWX&~/`1iH}E6 @@)WɊnw}e>Sʘy/b4χM#Of|fm('r,GϡŢk3YzQro>twDFI~k8O|EH;gO{n&^͂h1WCkƋ&HDWG!OΧ4od.Fm\ 9g6oį˿ 8L8_^K卙TO=n齳 {nF\놲IuJ;P4>L>ǛħS26&FQ(9kN|ArsF[r>`:J('Nk`$D &eI*oH}z lˬW h(2"b'㟑;ASR" b$EwVr LB$"APK<(jr^"'Q3eJP;^5t& sK~Xy@P e䐐ŭRK >ᝢga,jCRY: $mTLeZז8wՌs".nuӈPD,f]k+K>]/'jRSX9#4mrs2Z>8"P mk~=~[<TĻSZhfۺ\m%> ~W·cjC$#^0?19eAUǀR#)/.C> Sc/J?B5ocIQs˗bh(♴Ruc1$%-pO'f׿Kz{s1 ku- JFnK`<#hyĝ,7"nͧ:FM) śY^B[xL"_rQ0LI"=q;%Ra8^nW\G,G\\+@)$>}Z 5}ΈFAPcf[ DrM.``l0U~2aUvxl0^D!Ș×z| !(UޭO> mp8AQ5L5Nh5{:ACE`)P yDGÛS"}5f< xr J7SIDz:%I"ʗ"y#P Bo "<(2Ct y//= Qe晌v5g+MN \9U!0d!De&)x&Ln'i #!;b9_|<yR}iļt._y~|(*]Y G+HOYz9qh%_!LpAʯi$K{k< 4-nk`: f''/ȩkKH!@)7,>r| V3|y]+`54 ,,,,,,paaaaaa…  8?kfr"v2ݷud}FI/juFSEf3WWr]l,7';j%AR͡?_=U ur|?% >@նIe5^n~8|/qyv^~Vn_@Y?zl-'쮘YasJEvI! ߪ~rU!,Z9fi=ܗ6_HPPD}Y&)ۂ_s"0&1$p n\+gSw璥ѓ61p LR ׎}ϛ{pA&/Ylg7 0Aab~oD>tpm" w*&1V`bv?+b|E=$Klj ,n&)놯~~ԋ([_-.et5^&)|G6˯ 흍#´vuc/r#)b2M#l2?먓/^/}\Zh0AA1Q &)+Gt7wsR30I1\=~ߚ?מ:()#IjoxQKʴYy_LR 7_o *owCI8ioP} +ƺ n˿"ؽ?pĒ2,?t&[ m7C<>~Iȴciʠ0I16n~ѻ巽Ƽ735K 2ֽ n~ūgCl{_R ?Ӕab՟E_wmY}ɈgwV[I૿RQC,R)yoUEn &)_<@A0?rIMg4e0D䫊cqy:LR W>nl7Jx_Ğ*)aBw7d0'o{$e(U˯Jwxq>M#DEUjϟaJNPА9&)+F?GE)k_oͱ{z[mGdsTHzt:T ))Lij`[ õb{Z=z+| qrA~f&~eO*BA>jI@0I1\}׬Q^-Vnvʼ1KJP!av؎<N Ӕa`bNlg_mƯ~:ܑ Tf/.yJ xFҸ7|~W@LZRxZC!)"I4abNj(w 򬼀4b0*B*ER@"GLR W _,?uv!qIq]%H Ccr$e~2_N< !(UR||LR "_:e̒4IaRJ TICLR W:\/ݰpTR8k)n R õޱ#p0L2崍VIABf2N LJE9+5-c]%/OkCs)R~H@o"K)$pe?AqOnd#0qx1%TRasH Me2^ Up͆ BgIS<+"EBv%"*^`bzfO 7:=).)|rd 2$p-cXX%Z4P7D`b}\w7WЭP>%(C$p ظzzyX5X2|s$LR W_{_bzR\R.=J-RI*(cyxa#ҔwLQI/CW~pI+^;Dh&)Hab>Û"akOLFRz5/I50I1L?5J1}u8ށ1٫(#Iae\NDQ`~$?S1$0i¯+(_8&4ve0I1L||7+- ő0 )H`b2=G,&;()AOkIao{G8rdq)MQFtnf8yK`߉ &)W˷^|XcN)jyHÀ0I1L~ޖ+}QKQa&LR Szw(ϣ}} c/LP$?3^K QY:bn&)~)_|yn:ewJe6LR ӃwU~X 1Xk+$0f( wslϣ`LBRF'*#3@`b X/)BW_{]ݻLo׫vj`oIaLvȖfnjT$e$\>e30I1 x—!_Y,nV;̻AeQ=Iut$wi_A 7$pYG|u0̪٪?Mx-!/6*ج>\rs72wEUᅦ.z*S| 刉\L9tJLR _m%U_tlc#FAqD׼}5ۈb _pyjIo)Z޸:KzmSM2V1=IGpRuk0I1z5Rb]/M2^41) e`brU?br\[tBڻptk0I1􂪾f*r&moθn>+ղrg{q7TJ1嬼sy('.SjpwLn &)7XLF6Bq7/6ʰ]~ ŋ;Zrm?_Rz$e -Eq{0I1_/̢+r/usv_rn^psq2`W')G CTh8_Yƭ"Xͻ7ͲՊ+MBU/.[Za&)}sw 7,R͎ۻVE"V?=Χ!ےõ$p.+\5ʻb/K2XYnp7~M1I1\LR gb.wJFYV?GO>{1p0I1{\@qEyxe 7/}|?/5$p_Wrweq賽lWY6kaY$pM0I1r~&^=YU?mz_5{qn|RU$p"?Oe)e$$X-Wm{Oh5Ŗ)+I$T߫AY9ҕI`b8O嵽,s7jxW߇g XF x`b8kDy~frHvNa0I1tGs(n柞G?rk-|v?6uoRȝ&)n"Jxzۅ_[|u 0zm$ տݝOOŘNS]R?16 cI ުGO^g#>Cp"vć`elCT>VW޿,.t*v_v˷+=-]e wʰkFa 0I1$W{ǧ~,ML]m~-A1E`6 C2] =׏~w)n~KmL)ƳaX]qODžu~F{y|C&)T|7oey_?}~,w!۠6 C"o/~ mʉ~.fېL<ZɊa Ұ~c$(otU?8{/FLwH08LR I^䮢QZP}> 2S ːbcpyR~lz"e 7~7E>LT $ŐϷ\ޭ^_?ex a,CiFn&)<8yg$ݵ~qn~ffnъÅ`bH_,r]u1ZU geu_yy#7p0I1$`]{V?k?ϊe߰ayc%_1k&*A`bHk'<[?r=kwbz'm뫨_6?5il,VHÕ$ЎOO/}|e{.l')>6g-,YF~?-iJ1!C C;;E᥏'RVo?lWB//?/^ſzyL L#z4J&)Vxl{YtүWk~fS~>rfb,ݘ;k Igf,/l]!5UOkYS&&(5LT I z|q"}6ׯ+VzUT=径S}W]tE9Z=% ӄI7y~FR~¯G{_<"eM]cMSQLS I?-R^=~![>lYlL[eZnLR &O! h#)_mk^%bkSn,S0!ZR_ǓWׯ_?i>zЯZJWI.C+֯6>")ߏ/_ҽ7/yU<~P|wU4r-e< C+oY/WrU/U1}x1lsꛈ]_Wm”k`=LR ؽ]=ەO\?U=b0|wn">i2r u0&)V>?7Y/:n4fQr?+|p]^)jIO0e"1$ {Oݞ_|]Y !=wxH .Z&ZZa-LR ސKޭ뗣)UP<l|7|I w~[JR;OuMQRK, o&)G%Bxw66}ʮ6MhJ*$0~a}oQt.*W^p?W[XIa0I1tDu˄pz̅_Z[N ػWI)G:¯~V4"}gM-I! +B`b _||ՉzO~<+OlAPF\;» 0I1t_/_W,["e]}^~YOLR I;ߟ%W==q7i|(7r[^z= "$l3l'LR 'WQe[koyw/ @Rd*)$LR '9Y-[j>) x. (~ab8Yŀs{Ƿqz*\)d]}Eq =G<l/LR 'sl̟gY1=wp,n^phDo?r%W3 `oyfڨ|v([ʰ_TŇb#&w'_q%T|%0&)sP:Z/ {)EU/VϿ*q1Εaqd|0&)zUoqӢ~U=5^~T~]UՊ4k`l! *LR Te]-⮜ %s x}jVrRqg% LR P?П\'ʼt7%}[i˿fiD夘-fsW{gy:#O~D`b8 >XT~SqŞpn1=J67F>vaj]{]+N?Νb2>N2Lzt`bZwtR'?mF7Ue{d+,UMvnj-yYu[Y9hnLR yG_/!vf系 ѕkZ\[-(\ˍe9su{YO l4oop>]S`bȌcW_?뵇|7+e*b].|Vy_e9V~U庘J<Í.rVݻ%=b9MQ1E1\&)~ڬ<~~6U[mipb^swWnDSdgJ//Y;Zu9"n[ʻs%2=M1A1\&)ް+zY\LD7wIY_@)a.!%M0yJW,Wmo?Ueyw WP'+IoꮨլXWo_,V?4_o^jR~^r1++Y:<D4\LR /|HKY_YX몘˙b#~QUe^lthquӐ 1a@Uni(e~Vպ^lf~.Cj)#,3p0I1 +TZ1}FFeab^ܨYCqBn+ Do5`b&)RElp.ebbLR \xT oIp.YՆ`b0G0  9391&)C.\DV"`6 !'`Ziʆ$`Ȍ  }$`ȏėŐܹ0Æ$` x _`b0eņa0I1#`0Z b0r ]7\-LR jao6\ LR QP4\LR  &)``0dI`02$`0 `b0 L0I1 C& !LR  &)``0dI`02$`0 `b0 L0I1 C& !LR  &)``0dI`02$`0 `b0 L0I1 C& !LR  &)``0dI`02$`0 `b0 L0I1 C& ~en&)í5})_abn .Ck5&)KB*G' fmpgOb}p+0I!vܧ0zٝß8OM<ZoCke]p30I,I+(t@{^ ]4w3,x0I @ipxךPɇF5ER:k[&LRnHID1Vʞ(χ?:H I+Gћ(LRn|;F:b ߮)3jd0 e[{$u$.akTS&%)-&PeZ;5qe`3v.4OP &[Aid}l,dImq @F1``dt[T B&I$?hJ2M )bUO[ .S贘&kыh8Y/~"%E@@p7)1Shִd>P募5L&)7iQ4\Ε1wr&/uNhrdWeVI,@ ezn T-tm4i%%չ Iʍ`OڤA!\ڠK \471>B{UA4(tZ͘>TKI"l6))r4K¶\LRn!A>^XrI,)t~M]ңJDݜ fȐH X 6+hAc0߭UR.QK40YM[Q5i0 ral`q2Fʃ%xQUxQIsRK ))$Im P*HK-CVt %82@.QIA 1,j:{GG$Ż_LiLRn&)7f@#g,"IaKB6嫒$IYR(:z)IJ&(]_RHM[%%"BK'tar[Hɣ(AwBb3:/o!oJbArqI)Q1IVٵMR:(JDRTɥ|+_;J C@y}I [J eQD0mZ%e\ޓ(t˧ 드,VsX$O,O<%ŁE>r(ةkjMmhi0IF5JQ()qMQ%^p+ϋ|R Ofmނt=,C4hXq ^20&)e$%D$R*N$9`.f4zP /#A"<)-Nu_p %E=M*Q5GKSI-@TE )_$2H~M(JI_XZV m D׳ Rh$I @0|JS#) ӖBb"!Ź&]s;"ƙ1,ZIVN L+{cIu I#Q9pj2?:a1&)7IƌLNF{XLLhS"T;+b8 RT} pk$Iu#>|0I~?2rU&ZTOMbEVa5RkȵiFAh &)LNK F|/W!~v:`4u77@GC'`\wc@}ptb7 ar ;77D3Hf &)7 z >ܻ`0D`r$叶c* Q6s}p0 ƍqoK 7 q`b0r5 `b0 L0I1 C& !LR  &)``0dI`02$`0 `b0 L0I1 C& !LR  &)``0dI`02$`0 `b0 L0I1 C& !LR  &)``0dI`02$`0 `b0 L0I1 C& !LR  &)``0dI`0a`W pnI`Useq C-_Yvyę  Ic`'ܨKJ6>vВid0p> u"z$S-j<40>h/$K[tR\VKɔyoLpp,FEj$EF"% Ir89&)<,\e(o!)g[GaMKRF)R$Y@fͳ\B!QTb܂a%pF p4j2>U&hmxђCa@miX9X*AbI!pBRs^$%@ d8p'7OR]f%$ gCќON U% &iUT$sLq:6ߦ`r,ّ[LgAkD+{HJ"γ8$RQ#!ex>7Ianr40IC,#Če9*7F"^$ OF]Osc H5$$r)ďx|9׈-5B yXkiejlI W.8(K"IDIQ[F.)o!ohٸfI#JetЫZL 듟!alxu8y_DDf@{y ʗRٕͫt2;")HJ qI$QcI{F/d5ZSR}>redu-e`(-6' &$QHh0jBQwWZ8lut3 P(oHZNR~T)O#ePN )HC b0D=(/J XG#ٶȑ#y/ ]RD b*VRxY5pOcQ7P ZEJ쨩"ӷQux "2W[X!!+ :G 'PRcI=`URO x%s$xi C$)إΗќ*tHNF+*).,#-ER4z-Wl8UT=ȭPR݉O1 od@G@I4mɞ69c@ny IJC,P 0EScdpWKJ+ěTi%%]%(&1It( %O&)A͟ UR 8j J8|EFSQȴ ςXLO<'XthϸtʉҐQRG_")ю6I k>xdh2y%)D$EQRD )頤nrd-1/!9(Lj"3)qIi<]YҍXټn\$lHEGR`&~aI=ꈤn 1]SX>qIё,)r$.J{Qf3 @ ZV)HƉ'ohAu93RW1v$2% d0g_942*OGtMDI"d6IQG$ rpNR)~j$񄚤vI)J ɷ)GHڎ9ґ7.FR "YJ H3/ā ¹D<}F>}H !QRB_M0"*)FqdcK !,]")HRx6N;aq,w޳d٢Q[K%@ !&ʍIT F\=^hmp^#c6IAER<,9/J|;q ƷR̞nd.)\Rq(_V*$k셃@S96GgäJ#IRRT($Pg7]\9$e$l{3s˚Y%):KJxV2,VVg jEޞeΑڶ.WZ(MO`(ٔI\_^>^tA())bBԁ~' -u qh6wnvcIa6Ē'XV_Bl MMc0{a8f zj&b|u8u@`bɢMaVS†B\VML D kI fm4 IYP/E0ӑTeF<&q 3%(wO d0(#)Ӧ+R땔f- !26 0!Iw~gd0&vf$)EKm0 }=D01I1 QbbP xaI`8 L0^Z`> 5LR  >O?}v/UI:Ʊ6)߂|Z"kn6C ΜTї(!y$tf . dyLR2! $S3K9gLRƆH j KqèQ;sT> !Ulӛ`3wMIђA{͌Ies1чdB1n2T@ߦ~/U⏽~,z?u9$ox?Xkfw& Z9:^l 0k%mu8D|Jgx&%$iHRt쬴Hr.:$)f˃ l%.|wޒN(4-SFX}MOR0٢֣x"܈H {8M'gE?pA>L@oSoh'g0t0䕹rILb([1N[ Cg g46kC3e(|iD:d=ɒ"S_iUH5}wLor2-ٓYfnH(ѩT*j@/<-<%]8/@9p I 씒“i<(I(k(kEòD۵f"LLQIQd$ RzN)kEuHJ?=]RWlR#0/sVlFw2,XrFq,B>k+bch1rұ(Ysoesh񈤈䂎#sP(']RT8ȫEB0Z3I%5%$%>?g\,Nl*`9[AWUfGp^<5IqGQ4.ZH!! bH'φ^p%ES [5Bt2_ZGi-&X2IAJ*)̱%RpZ^Z2` $pHCI O1N?BG})t-I۲#VyM1Mv/X[XaQ̩%I1BO)DTqM/sBeMA9OR6D5%2L[$s%EE1{ERҺu-ІQ @ҩv G*3ÒI_ZŽ)f IQRY**)$"͓k"$)ADER(Jrj"6n/bi,Ina=u"Fbmx(tZS;}p`uh*4/Ž@Ӕ\R$\IN xq`@L!F| mHCph@Àw^DRY^KKi Vel"%@qސ.) QΕTJcC-]R`,I!@08 - } UY9&)enl #q}83@aR O6F!M"i # "D@&W!" iqIakF5CVIN)UM-;{D#KVX:mĺ 2KSXetM:G饘N8='8;,I! H F;//#D9xȅEOk@؈aWi gAǘŢJʸq Ta4~yD )z DnI@I1eR\iURpLwS8{ 81$&u9Rt ڸe>i9%0jClȫ\]6K^2#T6hV ")¦$IQZ6. ."nB]PnYeԪhz>-ZM\DI =3"i^9lB##dx$@Ӵ?IQ C XH &ؤ6I924[p3 #%뚒ERP)$EANI٧T]9˽K$Lq2(sH9p$Ekf@✨ x#cV⋰Jo/ad-oj8uz4EnOn/7ʹX6]J'H)9%5Bj3v :QE hDΖf$+f<"̒}F#tI9Ҫ0C?5`IJ'0&4*>vFJJ8BeYck!ǣj @$ARLZWOqwp25g:;]RH:d|$-jI iQn@PMqwdڤ鄋2)FazTY*KqF%E irgIqOxKtL T==%ϺK `PA*+ %)r=@㰺g 1Lk#gծgdH uF )^ 0&ZڦK |,)CEq䮒"n:9FHpnSR:.)J=`ZA1bD 8^rda$AIQL")渎) /")kde@ocԈĦ>,IRؠv35F2 j,_ED,&+;^yi~mBk&9IqtwyFx7{ƇIRTr%I M.ؘ"),S%IRIŰ o0.9h$h»')IkBK OgѦ:vppHJfcOϰrb`fM̓90ƺ4 X"?TGFȷIJqq"xfWz%onp$)èUE/vm ˡbhZOlCK6I1o"t^a|ȂMIyA&z&w`rCR=$DlZM @AϤJ $E+ FƎ$-kf>GsY9lu.7n\zs6ni3G t '#MYRDm0EQzF.IBg.qͧHΝ1u"gq*%}T &K <ݹ-.) 6;cRR62IC682r qpcəgL1mbk@u6I-d2(“Cm<MSD<E2MkM&NSAIV0E0rA$*7KWh`Ahf]\]a 0In>\a ù0I8*hka0ݻ Bq3I1 "ᶟFyMR Ía'e`EX0}tٴtc{<7LR E6ſ0mwba&z)od($`4\$iw)$fb0LERFL LRKMR "7Ka^ưLa73$su}.Mx!'f5Isv۬=*ói T []vH#M!a!Wl~{R/Ƞ(}K Kd?f`LEKR[!$- M;\P&NdWtpLJB6䫌t (kX) )C1n{U땋.ΧgRR,IL#j>(ILqtWH_46<+%#rE:HK'טH2I;@ձo(0+l#J7 u 7$%I$߱0NpBlB#RusKH yA[QJP\x)%E; /Б>#z=OJK()51 Ј( Q; IR$6?URdJ#c=tTh5I9$%7# y48gL'RX#JDr?_RhTRغqp[D0hq(y8,9bjHJ цVVi(7β!~")PYN"Z%{(Ts$%l  <GA0 !4(pr{[izù012F$䊲.)LMRP-@.<&a,Fi'f$:G7)B!(:-KΎ$)j6Wyz%Es' )ҲTaqz*1y8-]iE"3Sd.qC56cA{\@.)z;rHJIdć&)`m9YcC8!JN{P#f9$f[IK3Qa.D&L2h1?bQ߱<쪀9="CR<')0@kII ix") ݯ/$R ha1aId$Ep")QӭUxܠG7#VIfo@4PbJ {țp/`l¨rIʥޢ`A4ϥ0wn*)-o4%+%)I&>\EK*ńԛ$E"htI!MB5, QHHV ]C^Q6 V1Eԑ%|?C8ˆv,"s)dXӑs5ѤR08M')cI1Ńv]TQ0"Y%E:O4'Ɗ39͊47( f*mL%% I -()A q@z%(W_Me,$aH)!_B.PF8iPϔHRT!ZB])i(YI#p(KP(Q|K=8VI R7MRDBO OEUpSK1]Ȫϧ`8^qٷJH4$1 ]ܛR/O_B=],\d@Gd &(ʤ ʿJ^qIQ8γ)Kv0)Y ?KSOKAPňKI3c̽hx)e | )[йΈQa09 㼚UpҲ6g"#8g>ܽ R$Lw̛NeTI:Lhu9hnQ|iE19I^`pDRZwIP ,;Xi*dysRZˤ IJ&)竎Q ҞĞIʰ 1؇3a Pc4ø1MxU$_ئ`!\MQ -$W6`%L\RF Ɯ`0d%Ŗ`)%e;_>)aYK`0s}ZޠNzI`uw?$TI`ifOtuܒ-pYdur79!Ŀ* %&)Å#]Dڏ/3e.-)IE{p͘lDSԶ\Ō$1O'`h׾G_]3mBVF?=&TOQXMS?p·VeIH6?BgigZ%eҲJqI93je#ܩ8ɓObۣŁ +p;\r&)ܐⱬI#t! /)p\\D{!X=4K*tt̓5o;قJ֡Y$e,̬y˹H,Dqܣ%2˓/1'3]tuޯ9hq({FTsώSX\!C, 0 ܰ\O Fbf-;_y3G>CH q+x!NDW 6VOMԵ 6}e& fo0:dl")'+k؊DR <KJ3ּPnD'v`ܢM@HYN[R>4iuZ=K<ѣrJNY*L"%T7oĜDVvU @hr٘I^ϋ)Zš.̵UǖwԡARX!^RZҶluts^`zN&B>SoO11CC@~̙.=O!2Qb.rAaU R."ESFRF?G$\賿!AR3fdjn0bIDT_sJ9KGmD8A9 t Tpn{wgሤj$)M`ȁq~xG M0u4/RdId.()$h؜]q8iqmr!a!2C25ΧTYq|!G B(CI lW۰09S0M% qIUI , =d RZGR|KJ0h&KlIrW.)XܯvQ* )Z@k!i V^2yE5%&)Ԕ Ij.)dȮ8LA:LI.5$mDcy\vIrPw=S4"B~ƇM!%? 0~;֘ W4aq2!ߴE#ARx%%pܖCI q?2iJD$EdVIԡ7IÛلt)-Oƙ ffZASJMV-5⹤'m(tJlQ @ZZ2by()a#T]R*M@lUR6 !cL к"')VE/"8<*W6':^R±Fi&% D!nC8.s b#"^O ᮦQVII!R״J>L#4q&!$0)v>$O ouR؝SRyϖ/SJ `NJ΄bxD0O"(m?HqRtMOf `'Rh@R?zɄN#g]4nmr<A %)*Ӆbh $l-m$E4Ȏ 9:RS#%ERM.)dBa)2̩;j]#eAۤ@dp ~“:qN>v$ȡj{]>h&soc,/ +e)΢=8TQTRp|UrR Zp!-J!W()HhU Wt6I ܶkOt?`v!:7 `]`,QRTט\H m& HT#cl'IJp=Kҝ $ȚVIt}|*<gH b J(aya*y2d8uLrđ&b}&J M*X?QJ B!LRjG ;RqmTnW'PNM>WY䥊m~1{YJ g}/E w>.aJyZTIa,9jE;hɁ1.n 61ޝ$*Ov]!QÕEyM+Δu$ym? npb-$")hOO蚈MʃZ}u*6lj`ktϢ~U 1lj6wIr궥r)X\=M`,ΐp-y&r zU6.QJUQ3M+U5 aF{`0~0zI1v5 a&q$4 IJO-Er'`LR ar&)p:m0qtסv錬FI&)H{h+7Omrgb08v5LbS{8zR$`ο.%e+6?C~#&)Ca1HJKs$`&0ڑMFG$LwetFV6ˤtӿare@NCbSnN^uj\U+ Ets#>4 N0IU}eP"&)1>UcilrHS-&'fze@E#&5m NDgAq;! =frE=44I;p!#x.Є.Zg2F_͢7Ft{ }4& ]s:ftND;rHJ >v*e4+3AY[!~4#̒I"LIh0t3GL4rlxRlLW)ȕ|ℇ.aH[II 5E Η4V")KJI@x79larb c0A ȘNɶQ$׋5I"d{֖ <'bmp j,( ȰJI^@\DRrmxVLVR/)6ޜ`l ]l9Q3Ą+DSd$[ J4-q/ZSXI Tʨyk-.= T\jK ed,ʼnN:ݢ'16`V-nɢ:N'<mJJ 7`4M8}EMa<8X @ycHMTnU($[)t(H4$IbyF A#N/6!!J0}=\1VCqMxfZ4r+5 5ϱX2!!*mDRߊ&)`d 2 f{ ImN)mOdgn~S-J(%Yy \ët|2VE@ޠӰBv#6 ; 6XIlCՂ>xP7yd")=19a6"3Y7ʤ*w* kDIif'JTI}DR`S􈌅+sCȬҚ y7g}BRgɞ]( fcsaaMnBRk"UɄX2>q% eVLx j$`IPK ":d* BP#IPѬ4KT)/-)a*v9:H9"j{Ͳexj/ yAJ Kt@Q83LfK9h4I BvZjF Š5&`+@:fp8.J$r & u#RR@s xlIy&)\IЖ')}5,OY2@,]R6(&rGNHe [yi%N3ndY+ac-Ky->=%\@wkPżUge^fu4½*4W BDHcR[c}HriaK*:*.)%>^LRP[eQ$[.>%%NlARarܨ GJ[G!) {lQ wQg,[PTIC&; ѼhNz U 4H>"NUc3G")Zounrclgie mAI)f%X2U?N'abH#>U爑[INVN(PњF2Ʉ!Z0D?f&Xi:#Re!xԯ!C6EB}k%Et8A&)!EJ")\h.-Ң RH5#C,! @M!v@0q DuNo:mYG% ͈% I浢]d(5XLBMYYh^pf-e1XCz?j-ݰ-h 춙diB4IR!t,8 {;"7#7wHS;1\d:H `s$)Y`yk AX(vjVzY͐KZ/on'GL4LRҜk k>C]W)[.d:13djv$d:7)(=- Y*r |6/))neTAh 4q*~\юge+̒2V#,Tm'kG)B'R8١^1 I7#R8oCPDPDPDPDPDPDPDPDPDg<"u tf%QW(r8~S-pFF6ەog/2ˈ\˾%ޮD)^J6Gu zil놿QыE=V[F]׿4ÿϻ otݙgGJ(#R`̓CܲuR`/)s}6c?/z{h톘5"T!۬{ds'|= ~'pvߝHwɰbV(@+Y*y0f{g{utHY%~lz[2Eg9)ݏPݔ>PĻl 3gnc8ty`mC;X״Fʚ,ۑ}E碑۟IR ~~0M 4l4)PfȈPӃwm[]/H1^㾛"Qb+ڕk}mގj} 6#gZy־2YK#ړ2Eo]ǛBڕ9Է[6C'NgrdDpѰLZ}E JO|)}jv)CO?ߚ*eDJ]+` ɋ "eϝ͞i&j5x)kۡHWI\&\NH^H^홟Kо\xB)f:r28nRnD|=^)["R_|3/;Ul2>^atVLzPeJ+=)D JO|(߭y##e;S~Fx0RZ*emDJÑ)"xHYud<ݴ)!.؉fgף {kd//yw|Ū6T;n}Y)P72dú*/äyD P R-4Rb3R8 fw[/! JGݸW>Gi dH"(S)6K{g|eR/ݮfnC͑'mZ&tnncf,J<5BRz?tǬޞП|w3RdR)o&My{ftHbiv^g8Hɺ4k^B>*oX ptzj&c?5GK%V?&bӱۍKV]oqUǧ ;B|K>?Rx""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""l, endstream endobj 56 0 obj <>endobj 58 0 obj <> endobj 59 0 obj <> endobj 57 0 obj <>/Length 182022>>stream xݖ:F9wryz$I6 &$5;c?MːZ-f`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` f]x`aBd*q.|' FD(>s*_>/_ʙ ~V+(_J1<nV|m#} sqhE Q4LVX%ve<"80V`ņCs5J_d|[ Ρ2T6S|3,F^2L](Ӧ È`ɭ&fP)*tJM &]m;ߟC0pu|qp#ޮ~bS &5yWvd n.тQo(Q)=/z?s* 38~K=$tH '+Ri%ϖv!ޤ|uA0p~0H͊] To2M .Bb/)17eLk(BmƋxw•w=1` \i\0x)(L<̋#ܷF* lnrE}wө}{ 8iؽvׂI*ّIڻeWgJ>`,`NǍVɵS s(e440rޝh)g[f%L~dJ`>9cA0Ml<q9dG Uc&\"' X#aSH &I`bQ0y=Mˏ F _ cAbndoow`3z;+6:yt>L5-[#!YG(6n/iDLCv`ʥk5B0;ӛ") ` \Z7=atS}" QIP{SŅe`~vo`tg$R` ij[pcO,|v1BFSŅZ0uQ0 FwW` `~z\túAfG e}ܷ8M0` dO*bx x%t,Ղsg&]lԚm}`LF.wd~r+j)jQ[VO f ;/Q2 W`!0IldO{Z0:yf0 K:)c :?u?&5` `N%sWƥ86 d%zUԌ`>QP|_̕/+$ύB֨`>8\'޲=mTQ2/tcYߣn1 'p ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) }|9o̝nrx`O{bNyP̶?"+(pmLUiE^gy`~c[d4d=ͼS0r tpS0x;h> Yu!KO0E}C i[}$Ӵ>u`zM :ŵsk.~ |/zrlO{O -Y]Pwo]r߃=|ޖ_IӅޘ74{O|1%dҔ^͗a~ AG+f* ܌?aK;sPd0^=fȉB6 cbsZ3xvoL0EǬw m F|gCd <냙.}DLV19Q-7U]]˗X.KQ?`L'-j Q:t_iE]nx;g}2';y6slyF%0"XX`ƦcY5uH6UJ<_*j/#=?~}WWIw0k!?j5 :CۆJ3%PB7gd.<1wG潓Z?Q[qT=͙>CSQ:]?' m+|iX˼0.f"9Wwy%.%dvL:a`U#R:5LaڃC'?-ܸzst) ;ϓy`! &wSy838.dC:d> 0!d_`\~ςKz~isȟd1֞L0!in\!?-o}JPq5,% 3 S]Na|Iuğ&w,.6YoXw)x;붨uᒂy?)`_xTCdUM_d2`dP7$-,S)KۢlqV=:D0^"ۃ!(=`(f_==GzE0՟A?fS^S%)H?~k˄: ei" &)k) d0 f/RzwKuS0g3v+nvlo=*RهvFyqsTG1X/Ra.7I+G5EɎ˂ɻ^Iy!w *똦Iz#=]O? _ ͪ#y8$/B2Շ&1 &R?.(՟NO0(k\0?ޫ'VnU9::\߉)y @U$}wMe0#Ɉ[Z;ۆ1XѽeՇm. &|Cm- Q<9.Q7{3$q<{n+pK7C1 _vRR9M+=Km/ut%Qֿȑ\.#u*1VRǪf~3_uH>i딽Xg7r(~,WNy2/rӉ!`+{}r6 QV4(sGv {V0}c<#;חWO0!8Ó%j ૕/n7 /llj,5r7]_ 3\ьI%坴?=Vgo-[*[#F  ƒpȻIb,C0.ge;NUs`TF6Lx>p`6UjKP glfk}UW&M>eΠ m$T/r]曆V셭2MBqxgBJu WhmuT0Vz2Rnt}ƣV9Z {#Ψu- (t`T6.ȝ$6JG~vDvܨ6aX})M~[fGd,.(DO gXSwḧY*󢔪+^5l|w|&8Naz f>K0#X}a8|J`zx-=C﮷@/m<]0#lZ+=-N>q?=WHL"{IE3\' <_%!=NGzh82lQS@vMT`\"x̄ b#n F'v1R7Mݾ"$`f3N`ǝnl]$ǎd)&C$qt2eOkJ,+v_zXM Fu܍%>x!m1-E;So`RQ2ծ'0gNԖiA^r=\. + Ǿᔬ^˺j[E@3ԏ߹tW{=<Z0:f o_$Lf`jD5,`<:v,:U0# IW0Aov3/>$;&(Sf>xg#ni[|!|6+,o8Y09*NxG0U+L'&x1 #i "tH̨LL;c'Dss+LujdpU ~YXkK&L U4:*&Z8} 8` a?f[3EVK &JэVʩ[\TX'FÂFQү95oO FkNLHliq. d3K$d*L"՗bY[g*oԶ)Ɲ f0aw#H$w"k&Mwe<%Rˊ/rN7M]lXz?eCIRs#2p%z/T5t4SR֟ILy~ǟKH9C0ݔ \:$$^[5I޹~vJV|H0JbWd0#u[MR1JJK?gtlYcc~8=̝/xcs$a8Tp7DP(N͹QU=Sd~wᮍ1rO>od5wO9)jNlz_fBXM2a`\J墸<o9@0[sxlDg  .϶Q)١ Fꁛ/>f,xϏ85'>Z*:Ev;(*Ay_:>HLGyR]K0? p\i^_`f 1ύw[M?ErӅwTw4pR̓$oƾ``#3`Jer78B 9M@w f51s S^C=qy5Hk\loG0!X{N;{sҳgsCn;~o+Ka$lLdBέ O,}[!"i{ רS`R|LC˵ F|%4.F 4! VNr$SuqbӞWqTyӣiSya D{_[J7EdHeL'M:leΖgnsBڔ&%{CIry# YHz)\0.G3a"PGߵĩ8e5!N:sFt}x;C^yo"3b¡gEAy:[YjtOٍ W⒥lN,]{D,F1UXCٗ~5bOb:[01P#߯]-=H9GL3qToavwEM̩$4+%^}20Hwv\Fos8>L0&|{`4J@Hb:L͗v!$5PRCa幈jzȾ.Z\4Yl?ّ2ڗF%Cfb I1t`2MIH]wfv^*KvNr)S5U'>9$|j l4q!K_,JC峂svXĴ$WvWr򅮕ХM)#{Wz{^nXƇY\},Hހ`F7HKIM6 Lt$cdGB1I#-Qz6?Cz_ɲ&q)lKB]d]kH`̐lˠ`ck/aUh]D,=IQ"J<;8B0*q.W!;#| G1R,6,/箽v|f~eYowUde37邹nP8/tӀZM`("d`2HvL/z'Mb_n[Υh;e\=E:!'=xM}'m< &^{׆IN-z|I0C3<1~~B0*AhR0Gl`tJ ;Pt! ^̞ m,@6z6N-a}|މ}FzY0iXPY)Bx`vT)bY\)lʝ5 #kWCvb`u[CW&xE+S,x,ah(^𛤺S*F͠:7j)"nݍ cџ9#ܜ"VةUeFEUW_"k(*0S ELYb#x`v"Hu*#|QgEV6/zލw`>2KM[y`?+ܧ!VL\ܧgSq_r[ƒ#%O_ fsl{ó5累nZ &]KJ[0sGx$ 2Jy+'$VL ah5c.l[UvАȢM^BΈt5UiΜ˻~`(lL׋rĀ_:>R-#k;;q(9e;x`/ueOmԒO.fs V/Q+`cdm)IC&v@U܆0 qnԾ0 % RO 晝JM=n1׌e)l̲M5V ^eET-C_)M NbŬhiJR0~xmFyf ^ 6LGwvw;U;acLн~T&$lIu/B~qmP:.`:C|%qME҅dн<ݦeb<! d0#>-$ Vf>E7Lq$3%z-{f€?g` UdтQ!Fm 6#zzc+pzPA˂)ߟ ikK;>ہ;YyK}ڍ1Zv;HjtUuѮ>ӖZ|} lj{nj2XL,#99Q}^0Y<Db/(\b%v$,לxveB0 oc30 ME1.T["%6B0[BK FX"W"Ī{Y0^hCLuⒼELNe0v'^,4-亹%k`6%5Ð# rMӭp(c\N5eI%[vD~$|ڵ3RԚ᳾^oy:x:40v -@ѬZ6P٥O*$\U3nX &ׇ-.dlLɭvU 5tv2 OF0'wNqx|Âg c&xPS&̦D$d`C&|lPlY^(`.}`/ҖnE'-5"_L,#ͽJRA$^࣪(/ ]NN͞-.O4`>N[T6" (s5$~LH^ &ׄߺLg_0-$f=ǩq+ #.Y]٠4ג'd;cb{];[ysS9w`BLv|4ТoȘe 1ߣŤWkڅm' F`y 3\ 沝% 22+Š:- [ ;]M$Ḫ8HKC+¨AZaSPO2ְd3,}ЩQSQgd00Y?]0gNK :$I f\L%L)$~kL_jIC 7n%1|ș;/1Q>L,gEdB0/yá8oWNvU\eҔKA5GK0d0vQW0?`(:OgtfI|IܒAIDS =&<V!J&)5>P0y<ŵlyrN|n®6B%;Yp2Hf`^:A0*e6M?q W'YqQm.c,}˂UϮ/&mw 7?4bpXI?~[8%[?fh fCxR fkw9R}'G"?4yg)AptJ * 3pbL+̺ KQr`IO+N~Ws}yz4o UOX) s zx8C{'Q({q>4r3}nSËg5!E 79yN̡UO|An15sYk$9dF-yރ]*_s8c0E0/qFs"\3"(BP2Ŗ8+kWu!щ 㪴/11-ݏ~jNeog$bd=C{z.5ැ]{g楒<Ἷ'M!Xäua}|>;1=3WH]?z_媿0 pEN2C0R:Cum_~a`DK+$i z3sI\~huu>ݾ fGD!If A鱴/gm)+H3\AVG( fIQ#R] hE3#t~|\㓥J01P'H![>S'vr>չ` GKƉeVy"-~ \\X[?(m6ŢMs= lOu̕v>ɂ 1hock f[ڛ+2AX\x=R0IhHآD0nEq _毂t.Μ9O* `׬k:{uRaq@&$Y$=0EBeAB~{Pjs6en%|Y|`Dx`¨<6p`t4} ,^&;)+]v-soc|ضC: ~)nqq`gW0Y LblN9Iy;kԗl{=a:)L3 1QMEkyjRm]1J#΢.W<9i(ƛa(Stva˭E"fLbzt"=4XKvװP`3~5:5kMM`~:79) A2Yx6y 4[0qa:%_܋nȓ3 wd9Fr\Yca{ @!n9/Zn!b8 In$Fum\i} =c27a F_`P0XsML\0I'`?n;)t>_af> %1AM7Q̬h4`]o26cL0T(XF*IFΣ1wRn` UzU' ה] ]c0eR0F0 fU#w`Ba't$_|sGDp ]HE/Eq_T0)1ʛh]iV XOJv#젼w UF<0UC}y`F\ +zȒw$P,˫0͇Bj"/T|H&sG8L羱eʡc`(7 L10LhP0mvHEbSqĶB`YzI0zp`yMwG{+ɚaV8Rf&ӆ& `n_p?.4L3skaLu3r"\cZMZcC\.ځ`zt18?꠵kǤw7% Ŋ/j*Bw ݸ&8.3pCa@3~YZW0>,T`D)`G iփdm9. IOY.ͬ'8^fVg sֹNNDL=%"ʼn٣!*(+[0E3l'6`rggom=, S}37*w/|󧸞`wGi6#i6Wˢ6v8?@\C[FeI0pkHa۷p ] l'ˆ+O0 mb]$QTy ^ej12W0DQ 瑽p[.߳d{3&¾LܙpԋPw}ls;v}fDuLR92>ْ@ 嚂9SqxU 7jKt~EtǮ Fۃ#3#~%Mm(S |duS ȣD<[8 1Ukl)EI/\ۓ7-U?ھ /^#Ԑlu7oLgj:]8e@vدs.\"oU~$σJ|բBCJNA^òǾjMs_^30|8 fa /@#5NR&ɱZ)C3[kg.&TԓxT-J"CF0aArJ{+aP#shq<{ٮy· a> FY!Ua_o}Mz7rqۚߺ]戺,%vrkШ`BcoDbZwSt`){/lw#ztAU'(⤋,Ta;'uSބ˂k А &Ʃޜ|FfgU"Vſ5Fa^liumr71$0 U$fY/c\H0']0J_*tYLf-,IT,*lf:6˝r`B(W]6߽W̟m Av_>8,VJ015Ot*&$,ĚoK;-8\20k"7LLs./s ᔖ`v" *޺Vݒ-tWYK u(li"fڐ*K``zɠ`13g<(*ң_o3Ϲ|zc[6L-rA1kHˍtLz$e'jDD+ KgOl {plC8t~P0~M+ɦ6!& dbY}<|2$>oh\/t?/!6 ;RvCU`¼-'i{,h绖APr%x#% 5PRT(IS$C݊ۘH^0p!.IL~_/?V7:8zu5ۊ|{/U,GY~[/y^OqIDL\:L0"e7;iR )x&/3ŏa]Tُd#3S08lcT  0/ ~bꕓF% QzDPExD;yASO3|;L cWzIb7LHvF:D !zjL0R}9sܒC@0~>B0aFNi-ELHqCσD̑\I oq,R~(ҧhr>B0jk[_ fg,KӫɭQu T̈a&==w3 ͇ Vf=K0;e'7rug`⣖ g0ˀb^+4*`T<*qJ F`̾` oL0O FfXUAS#&Ǝ~q`d0Uo F=E/``KjGd0 `lm6ԾeR f KLWbf㦗opԲ:YX(P5Z']1 p/|S]W"J)j/O F>fm;c `SD!P=v%F>ȷӖՂ4Ru/"M*-R fYj^Sk .ɲMY\T0&<Ͻ՛|S[ʳ^cF0;`\U0G;[0zNy岂y<,ݟ!C)Բh eWgM̐`n<׀ڨ+@fz-vH`-|`:;2}0~ݞW-W/q{-4*>v̷Co|9r w`` `` `` `` `` `` `` 0[h@0Gsa.g8A{Hìq.sg`2\v"=П"8Eno(:x @1x5+ZdXօf}hr(-. x s =oyN0IZc6vRowP` +#D^0鴮^A"`baW<9LF>io7GVVvQ`9<l{)laWHa% ('_yx`Hahab`+ǝmC /``,6EY}Zj>J00p0udkBdk~ml`Ha(`@0 ^4l-xj`kKS O`^g0Qy2-F`Ha<'z)Ip y_skz`Op 0y'#`6 s@0`ƒ2b4yB00sв]j~i祭f#8s$#3^|K A0Ue\tOR'q}l/z%jSbjTuGM6ԝ+˿{`\d%#MlmK7R0i,7`҄TS0Z;lm0go49&$n-8 F2 UUwY_JEmH5~:$L´Um2[HҶsyk}`&.CzIq:`~`6PD~W*z`W]{r#[ӂRo[!WIŃ7@s.t.'sV+1`-rU1m?,+cd[c Aq,3;G0UjNbՅ߯"q`Lz(28<wZ\0{,R )[\T|va_6$ls \tS;%Nw{,D.+RҶ=.)vt= 7¢aX1hӀP=f@Y;=J%aLo_L@2l4X`TͰq-(q4i.6,[Z0DJ}N*WGZAQ9.(!ǫπ'7(nWqQR0/o$e`͇ڰjfQqu^ta`na25/oO f*+tC{g`q`jng*'"_^"D-BkX"$Q!7 &5髂IAZF% G1A0ͽ&q ˱'!\0jbQ_2/DOm^-Gd\0R8#|_!$w a/']K"=R$Θ`dJj/SZ)2b%vQqtu*( '7ISrr#6uZ'$bGL2U9Iٹ)@3&LUdzD`V īC<4eYqRgٞ9V(s;A0p `V Bq/*+'$4 &ŠUEQr = Ǹĵ4d^(]g0+o`X+LB7l V$^o2( ռ]ŋ۪L8M2+`NϤmc,F9q[~xB2r|̜\W <H(1Znɐ@5S6[Ly,%X׏,ȸ`d2$c)}&t-] Cw~AáCSX5+ni _)?rv? \=c@L1͑Gx{W| 5 {|BI˯apL!\0 xzB_ 9 ~{ 88}0~ TñIX~ ``Q`0 |;fo?f ~`3@0{(9قA`fJwK]F_.xA0;HA)B?yD.#E|5fÂQԿp[Oӂe W`I^I[/6-~5yn3t po3"/*%k/%lX|`0 @0 &Gb0+6&eZS=_iN;f`ܿ5[DI?j0`BN Ng}O`Hூ`yZ0;E"%`: t+3ybi0,=aE3 nc$f#><ÿ+seܬp"wR[ -U.SrpU8O Ff`v_gl`OĀq8O &5|&;c7ndcMSեpvБ Y?vw$f`yV0Q1 ED0NC`nKkr^ɻZ F~Nu[+{?yl4eC1ebRn2Ma%8 `D[V;Qd\lJ"%=r~?"Uu|HL{m: q2wU過di3+ =2L?6H V[e9bѼ[)`x3ΠMXe~4E"f<&B 1=YmH*v=i\rxY,O >mD[+ \ E!ظNѷ5L̃\ pC%lk\ Fb<1c g/#σ`v2'?T~g8YjvQّLN?BT= ه8vI±S0 87W{C0?>gׇ2`6Wf16 Ezd[/BCq fUU4;X``tzf7 v6H6!3\)-п\JB0.C!!&W#?2_1qI-ul`>b][`a*1hQ6!a g6 ROs!;if^5  VtQL$02R < x  B`@o`E h A0 a ^&f? ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) >#p(|~+|[qy`ZJ&p5.gV`dU[+8 榊-ㆺū($ 2)PcYwwn=\F07DkL#7L(c4π`Os# f9\* .# T3&w.ɕ \e y5=W`~]$/} &>  7F`(Gl}T"/||=$q>O0ik^63?8Ԉzf?Ҵ pal:wHPR-Ek۱)ql5:7p9tgFɣL;:En-F:baaX}YPο$ogMOs+בvos$HJ G?E>g0v}^-ILZG2y6+Y%#GKvy`׋L8릩2-"鍪J,7US{;%cub}~#uQ6{"LD,G i8vH@qGtz9p/K9x?i%L];L%"Y<:~|`: =uS /<֩`aZS/Gjj$&m*L"&f-Zm;3|0 & ilGYVˑdyXm; lR}٪s7li'.)D_#\0&|6zQ]n[5/rP+}]r+  = "q6kijOL@ 1L[K:ͷX F!#n]/ `l-!%qݷPDbכƝsh.K3C:9 k}4>?<쀷 D溭#4bL nGf0?I]V;LsU`nlq}TҚDq떴NslbPCzJ TWo'ٗd-8"LGqp?/*F~[43 +S¾o%Qg᭍)DTIt7~{qǐ`18]o9O0bavG0OBiG5xH Mf38}jWn~9a\*k7q)3Zc\L{<`а ֻW0E3l]ݲ+UDQw{5fϟLS~mR^M8Y0^“[=mnfw,5c8ǭbݢ62sٵQ8!ޕUt|g|A0Ɲ^~+3|1˼z=^Ԃ 'yӠcUG0l@IB`@0.. FcP0UFnv"sMLL`՚XOvێ%g5i1?7=:{uڟJE0#'][ba/+;71Ҳ?kQ*uPMod>xwv`Q9J &$}#;8 [n~.qA\i*V ˿ t `v/W]nLܹHÂb Fƕ[X"c`.132 7N & Eh#Q J}*քXg Mx+ u9tbhw<%B0.Fy*cl/ \qR@0Y$![(a]1g_KE .vm`H(S F4& #e6axO02UXԱGSeEvɄ hgMIl.%Y]qǰIE:>?FB01ZUmn6r{vsHI\0K0Ss؞.7bH37CXuISԬQ^0?PJ m XNP>ICHÜ e8)NL:7Bp~^dM#/bt-VbiuVK=-m";1M`x(ܾsVdy&߃ =ǒMrTG_ܓFtȻk Q~k`U0IXٕD$1{^F0ث\ / &_Q40N1zy,^SjSE7|1fVI1x +gyf0 q6OKӉ$NL|CLy/+e)̠`4̅"K)2wK}#iyd. UuC.R0^ J01J eIKd0O~:y/Nmr{oCi X.5ұٺZ0i(Յs107ҙW~iܼ^0}ȃsK-u`Z_#\H0̉L}Wfel4Y%x9<6~rk]'9/qVgP&~Sw^e`T~&&éplw[/`ir-= P[k*ܝORldrg`vMCbݽ Xs\C`ͩH\쓏XMM-~l`#NJ+hAp1jQ@,r˓>݂Oʥ~28\Md5b4GE%FOI2s9ota*}lVuq?oe ͋ ?)OfzLCS"Z6J0ac}`sʮU$?4#f`T%-R>A#RIFJSd. )jD |##50釖R<ƷD.V63e4Ma!7ÁO0[0r2L&0q{[0bNp\01A‡*SGKL-``OȬ? c,ѷW4fT0*z6섬3”WR< [l彉ұuaiu |@F07+ćs!($[D)dTlIMLT>K8Ej8=u;W Wq`N`:A/dmz ov0mV0ͶUu`7vӵ?QWXG܎V)޽}Dz5DD\L0ʍmK0o=e 3Y^B]<^iЉ/'bk؂CDGgbh6;l~-x,>/^{;Cqp9xtLm :def;\SxJ0$n [ kJdigbbrhv ""?ryˎ uiShJll-WLQ?QSY #`& cw8`Fm-U#)%اz=l0CCGuCc3{I@&y03GIn{ ].yHr쩜$wIĕfiF ߄G:pSEzSZFJrrƈ⑎4N`09TZHF$>CC<"*0Cv.7skiR.%v5qYn ӄQ]d0Vb@ C_ȿi^7.n}f=U d\`̙M-d[0^( V7Mw휣-r4tL%x0x$H&8Qj>B=~F 5ATJ`'tC{La}%D_ߢ>gs=`2+Dp7HdF:N~|k=|'Ǥ8+ pnw8D_) Ve u`nbc7TzG'qgtC߭3I${ǃ==ն$vÇCF7SnY pU64t%`X6q}qf5z0+M0!)y'0=ǭ'eB.)EZbt0xO$0CXThY"wJ;8%WF'Oū䱦Ï8sI^ەJH.B&N/D,mY9,!ƁKLh:aTY$~RY]QҎ;I xDU="vf|BxQ w믺Utr׏n0CCwռ[Ci/ؗJ>i}=}/-0M)oأ9U2<`T"T&tą|4$5kKČ2` %u`UAfLQތSbY0`u?U~9v +;!L#`֩thw'FUR{ ͢$3O]h'CC_ 3Hd4()2v#RG09UR/p}-(z22>L TnK3Ir+676~jr Il@GtH@z&]K-ah=:~£3#RU=,Vm0ηh#ӦuK'wv`ەc0QK-=J m~0Loiвpְ0x.,$ReO;D/ ܛ1U .Vق>B!gbڦfoU?vYY_b %M7Ap\CMb0L%bRL*`90bT&7?+ZdS"3X(3&a,aei:+7@^:;0kuLH`=[]ްkkb6a J$`UN_\#7IH=} Ϫ O5`˅$أsu*`Q0FxfJm{"#a݃ x)9B|=@1OQ460v i1p @UWkKώ7)!S+9@+tBĞYdo`<&̄ ͢G3(l `.狢VWF׽8v6 >u`p`|:tdĔA+M^C#!,`pk$_meBy+2VzGF-ұrZ@xe٧Qj;_&jOЈ?/ I5nNnV jX+"*/bjS0,1RAKHl7BEG~aBZ kjx$WnJ[sqP݅:` ~ݝOxquP5`M9G?0/̾9I{{S9YX5rC?T^GdHF:1,`ct/oN0,_F+z1WO8`ڗ) [88AȫCf#icQ[{w3Ikl}vٲ3rT &b_0f"5}m~k5廿EZ:0_:`^Ϩ<2H +P2&3ڻ9oigN%fѧ%0D[c$sX2$SnX9iNb2ea[udwUm> ^$?EzdN4S!F2,$-幀ȮeL\nr54> ",? 0B֧o%b,R%(8M:ll:jw!i9Ć UH]tD }^mime0NjHшfE@5&n-fy Eb iWX0W09`M݈O4+8i|O!A=V]u{ꂗ O})\ VXa|#FWjf2C>"cJzޯ&A:e:_  !/C&)B1 ,0:>Dx~Ec\f:--կ-(IW~kG^20ei8/93 z@٦-6<~ ߴrԂï2N2E.|Xϑ k +X?&?=便=n~/Lk}LW}jq^F$ hċlPcuExdSf6d7`>o0uj$6HEg=Ysyb^^I32? em+İEJɭov`WiaOϺ Mۜ޵{׸ A^7(^t?HqdLf˗\^%Et& CR~gU9z{ePv))noȊ6#BF* ~ pHk«Mag0COU`V4OlwcH ;api6m`S#*C3 42~`|ˣ7-Txx݇dz(_> bC 1wTܡf+C6/ۦ`lʆ%&#Ӊz|C sahizyiL J,z.*Rea.977Ā%P) Tio@#[o_Fabxf̵)Y-J&tj"0 3KGpFhjSk.Gԗ(`$V|0x0C߮_LJ.DpD*57%JA0)Z* >  (D{Џ8t?$›7%i5&*jc2lռwG@0F,`j@#T93Rg KP`D(qa+*DvEë$;c* IR#,Y;kFWީav̕Y7Y {wmdS kȪ+jQ0qa:KdG}tvv?fk2-9r"4HxS$VIƵs3*aԨ X§UVUYؼ ^6J41!P3`50M!LF(d3x0߹*Gl7prFRŨjx{49w$l 304~Z+|_Ρ!)~f95Wlph4h6+{R3O{u:.SVV=DU_ٖo\7:2A"(Q–5S LǺ}9ت9_ϡ`E-ȟȐ̘BVsf kUyr01WGCCDȐ$ZYŗK(vn:t Ƨ7Pz2`jNu5?`s:V aƎ`4aB‚u$#̉wEOz|c Z}Lwhn5տP/`ݛm`mb Uī*wFIbA{b4:TՔ_we"?ܡr6xi:0<>!qBh"R? >r,D磾aKhb=X9ʡe-2JCNJ%`s0KL[`,mYDu4[0[Op>x~|/N<L)~LjZ tHr.= .Xh``kDUnR}4$ mHԖ0^H+\D5 3~4*[o48ϙ!150'qr!v4{L ]٩:sw{Jɡ鳀qv|kc l="Y ~S(>$-~ڞNeZߐC0F}20x{\Lz]Kb\7|0Q:-MC,mYbi 81(2=4]̿5 GFi).M}E/jfQ4ZV'նb=冣0ͺ`zOj`8`2 u$=Mq&3s#yg JNeK"mLLjgy;C75Yp}s,Dndyy/57YF5 OT ; ! T5Alj`G5k:הKpzńrnH!<`.cg*p\Zb;G3$@I8ӯ8Ȉ$`iL9`%ӈ=anVeXZ :O`P>7U'F`Z { 0*)rwQ!`җ(%"+Pb o'|b(?9Eep :A)􉧔 !c"WZ7`u,IzCYD"Lj[טϨ^9S&**4Cu] [$c766;#oUoZj Z^3VVe$i Z/J(齐~2"N˹!L~{.~C m0ƸZKkv.%t \h,c[V HP#@dmt>JTX#Ѧ^5^{P`"7 0[g+3%(t &醙Ar +;]J!ޓ=V-;ܬF% 'ƳC 5`E0& \49R MjFbmzJ( `hLzs& .0KirSG= p"RdWK ->]%q nz5`s$.fϗ:| W3#r4yyyT\vnGצQuNxR(MF% c$@Ti|iN&P3q(5$mWԽ\CcmDpᤙwn0zc,"2u B hoƹ&¸to"$.3EICV }~gK:mlBWʇ;/H$ZP>p`:TͮG-=/j^(.ʬ@1!}&ʖSo\sL }GN}m_ O(/^ 5 @0S, T=M2L!ID $&5.6@K&bQȢc(TL_ ? tC Y;7NMu6VAoNꓠwg_\rұ6jbfv%nc:I #Qo)5TH欃]BQv'M37ƴ 2)Sޑ]*Y_ÆɿXP%m:Ml #/")`35馔 (0.o+ڡL[7Od\82GBCRr{wDH.B,`n>[јʔg ;ךYUf`F01`xͻ#gD0y4;oR,0dݰYnv2qy+lb{1c>` JD02#n&)b`®dת] I,C"WcۑLe>vOТ[HD]C(؁,l=a$ pԡ]?V0|8O\~ FumW%(nA=ZZ-8 5smӼsF:: Sk)&" CdT0Õ0Js#{ o?{|I"n#ڈGyF;kri=SO'h3 1U)Ϭ]V D\Ujr uge߄ɍ5 %&9 3tfǓNLy Y\n TQ9`OFPRXIO->`/hKT)(4E[T G#Bp9΃b-+W:; u7#IY r*Q ?`iM"}84旘|6 }^G5{b`TX,)(UHo<צcFyYz`f7iPE=N#ul[?7s9?@5e[Qa ̀`p}Lm=94t3]  k3Ł2Pqh9CT3.X,[c3D)/tR@i.7HCCW+ϱsfQ 3IYVLY&[7iY/0 93-j_gb7nD$OuP'8nbfÎr-,Sc4 vFg{5BO¾ӲEco8u\Ls0XTLtDN`>k{7N1&6tqۙvA1MuQl{ 0`?0CnBw_]w6̄ +ngl맍$r&hs|,`Z=Nj[ۯO}ojKnK*:a ^ԇ_/ SYY3|`(0[ +@M݋2L<<r]{%I;phWIg5MF кހA_.ˇ{@I s_F0'9 $a)^ eSx+:KĬ{z 06Z`<ƞ/>Mf%lʅ,r53h:pDžZ6-tn8[{{6`yTU4ߵw>$4.d[@1e@G,\au¹'COan\ ~ ˆ7S#2x:Db!r j2q`y_YxӝN˗:.M'wG*S (<LUq`Q}`s"A5ܱm&:ƝI}`K^DH8;KbeZR?[|F@GrMKAc8WD#nNg+̻}h~d?eً<ba2"Q*A|򔎇AGΘN&ZIٛ& 0¨K?lPC׈NU/jI5SLZe.C1<)kTN0l6M7a8 #'$vRW& (~0?L}@w{Sf'`S!FpG!GQNe3w/Sf)ݦ+n-$~npY `; ׵>р(e90$fCr4 L3 0s }6 ThWiwt `w(aVҤAR*`H*OFnI,\>/\5g6vl`.Kՙ+!=OU90hoZ[rGo] j|1.oȬ_ j}UT H_E+惥cK` 7/]#95,$>QtA@Hcr hӫSQ[~e[|2x(` (b??,X)i ,`DW$ )HS4-.M1)|[ 驸CyyXV{:>] ʎG09o,̣vfI s% 3 Ui\Z&&Q/PnU 7;o} 6XUߦ:_HkAl wY Ћ5o0Q*Ee hW'9< _AJ,2jr&R_%_ZlHݲc> :g̝g {, Vl^u#`6ِQ R_fj3HKU41 5nu muה@64 XE1pY 2=bO0n &57B_^m+Q| hhȧ O/:szi殺#`pw:+9H8v=v[Z,2,phF\A  |0 0IKWYk52ʰ=l0?oL?-čݍR=_:PۙL٣c*~fC|IpW;0HZl%FTEP >jH⭒2}$NP@34qjAʙ6)<# @,$anUьv0`oDԒc , G$%u(͡!f!4`aWʹxnf6\;YY07T$ݒZcGƭE 7QjH:Қr `lK\CDv DLO*&5=u,8 K#j{pX5q|;`?KuO^N$v{*ZBJK,FgFK2Թ( v0l \䀱rT/X^dY0n 6SLBO)f1 ڮꮫvorOШi+ݘL@ A0"Ry{a:/竛0gS.c~K?KˀR)]=+8DJGz0 # G꫰>P^!LN{m?y3Qq" y#![SE#`ddKf k[}_e~0 DF6gu.LJ 8sq4=Ö~ 0)Q(F.^B%6?4$w&F ]J QdB Ib Q10O(rt0hOH8!"<]}-`(hW0̏j}D̶ 2Dx3`H`03%?uUa;b<"cPYf/xhaĻZv":R0ܐ@I q$ -VR!ַ\!20CCgID v`HY|g¡c۲֏&.E =]u\X]J0nEc+_Vۣrh_`] /̹G0o~jcsBF9ͧtÌ$Ic6v=0ӹϢ0n.Uۂm{rҋ|"GtCs]uw0&\w :64T†3+!'a><"?r e,qc d~/M7<#^ ]×B:A93#:Wei v܅z鿔ϔ`K q,agm aC`^Ÿvlz CoyL˖L~F ( SwhI]m}>"F o+4Ix _j KǾ==K ~V53q0|e4H>)mlNm |ڑp=@~z^c]NPG]0ED=_7BZdfoFl\ #t;;X$` gZ4 "*l/+2sXfЍuw-2Ls.fyK sL~T0؜KhSw7QDwC7=O9Kd Y3`l"$G-typcLo džGF?0EvC#dCj}A.(-M=,-lZi_bfj`(VHH: +r Ila_eXnKSCIf0`lU.}ҚI1'aoGUKuMV6-fv?" p``xy6{v pE0\-9r|m= 6d=09FP}0a`B\2BUWNP#:$BV%Y<n{nų?4Tӝ`tJg5+n_p63Da.Gtn70\x|G9"C`L` Gdip `(jr5^ m;`FykK"EI |0K R}X¨83('/7JF~^!)"d ]&:a; \Mst'dO1#"#2$~0e0`dcef,>I5c-oz 2o}vX @u / ֮HjLCSD`Qc 0A AG?Ri wl~LՄL<1o`1D4L)_P0ڊ6FG0^ 3Ʈ$`ڧ0-tsCEtnR' 7wݿaz{g%@9*ΩX<`(odW ݭeƶ3uUhb?ה{.6`[G!7=TvކU2~-<('EVO}1oeKo N^(>!8#ƛкirFca5o$%1`]p{T .iї MSuB]<5V#o6ޟg~jn&.xniLDFlqYUE0 02W3 hVdɼbהlc@; u^cF\: OLJzϲ,mF0 Y8ó 5n_ ViB\uŅ0t<$ȩ{>Üf0І +hV\fTG]VP%# @rpT33Ii]GUs4ٵP݊fP)4:ޠ¼NX$Ί`80d'jʨ*ȁ5 ~PiFUKrnҼFW2b`C Yn ‡Z ڨz~`$ԴyI&f8lZ^=0֡߄ˢ|BW-YK:lZ%xxN, `X…ƟH$ B( sE+cSha+[N# r 4o03F]:.ܢGӫbbVG~iM h)n籊vhSJ,fg*6 !-R6P ,`j6Q PW0~0kg);sf7K1[i}!ޅF:Xefn:3|Wamw;m{'a# 06[S_ aC9œ`kڬhVQv0puIZ| K?i{*hdj<ȧ:bjviW4B$BP~GꒈaWI,-#LL#a#xx0h-C)Yn750IP0IQfqŋbf!cfJGO`b(۠,230!5|{cK?FYa2#x,ty$J k]ٕcIHF0-J/f g(Kvy]wm>R!gl,[=cXyt` UᜀLo12fz}_D?h~ct^Xӓ$2JV,ќB3 SE/p)J'E8Ya~ 0 2.H `qK!~SML Ȇ jA<Ro%SfkGAp"I` 0B;˛.mf vǤ!qwbU;*=aZelg<;,4 QT6!~]SyfftS93 UBË. dQE'S7>T񢸔5c qȖa֧u2lmz^D^3DDhv6Y.D@HI /#+c'`s!߬kLGCܬl~V4,1@(f[+,S GEY# #=1 !"GYh KٯsG.1=Ғ2Y*B `Ӳud;TT"30Wص80o64 fPAc.ZlНB.&q(!~l:#ibՒ.4 \}|KG@7kU5'zٔB907Z >fL-J'i_'&>#a_/Ao8yAO*4lOD0`Dz83y{eFO p sʒCsCx3c0$`0k.1wf6X ƨc" #ON<`w06\B5rؐ:I~N<%Hzrg͑7߈O{t144q˫J ||E}3{6wT/5 ]/i4&_[k\FTd.~r{F6|]vXGa{f(&CM0<4/W썝IGdvhC愣73"  g3:x}4K~|]V C ws'+Q]:-|Ux㿁]?[d{ C٨LC,cUuix ^;[7>{h豺; HgO/ ܜLuͤL)}DFLXnїx&NL$3N7r3å#f9Nd:R)'u>/NL'$OȮ~`nhdC9` ĒLyԱ*2MᔁInS;xq}R}t*`ep=:Yg~M1)r1+Y[e}t㒶lꬁU9\%RdCTOuLEߤ1Cɀ)̸N0w0wǢy 4(~+dl2m= zFNjeC751ZS#L-)eCK*[?3 rXqMf؊-m(鱖Qq>CY6C(bGqX8hM3/" 4C^F.j0,BPgHCؠyBjn9UP'u:`Y`0TjDF]Xj0<ȘLQ`(ʐ_qtl+;\BzsjG!9SPC}c*ʹs}%$f+M q-"uhH'FӐwN23^2qUBf,0Thf #[`lNF~m"v7J~?h/L" dAGc&I>%,U1>VL&dba薛Xvnbp}y#uoM~mNb @C6bj-7YۓhjlApd F&"0OdSY"a jݤol*u Z+u/nAWF[rbi0<`5FAr`]/Ω~0ƑO0 c`D:LlGV0F&& o\Xg*f*0'!N360 e$S]D3e!Ш4[?8 d?0CR'Ƌf!;Eg_Tdjƺ;+`K{9X^VU'{>lmLG(JJO[ĕv`"1{W <ݧy_Fj{2-%TjmMG0["}]9M-xW&cXA!9HmѕY"8>JE$t <0Œyn5^{@'q'kYnE]GW8IliԸ0ԷBPJiGȠ6&1ĉ81x=b4'b6S)ȠL-|3EDS9gtaO6{Lnǐc\xz_Q U,@U/x`ޗ^mUJr$G]$9 XwяVY].EUt,N:01n{j#{Y-[beR1j2wjx&'~;n*瓫Չb$Ch 7B>Njc@)l8벗om/Lzp\}I]n7X*Wx"zϥ rІ `D#D50A[JţX_sY\ a-`0v=qW9A_$Tk%<0/_2 ͤ} %b֥vs)v0x_3}!5 a 1ڵw說PtcSy\ `p +{gUۢ=5^g1|:>ePʗLG'yT4#хu#a}LZt8M1 Inz ,`(m?ZzIүL>6Ż91;uK~b>D0 ؾ=!F7hbcI@)3` ;mIp0dxH+Ç)c^7#XB$1Ü`Ҫ}ež'$(әRBh?l%BHɤ)VV mɈ,fm`? >eX(SV )Yxz+#Wp(7f(3W$VRnNPH?m*(Sy sd9P!n~fj7ǃk4" rimyrU%b^5;]ƨlvPvvi憊heȂBQ݇eb0̋z]2 vyh':wDkLm,4#z<`22-{j$+llr[#[`5F&̚eGM'?+΅j>g5 D> 0D07Tk% V>c3蛳ϸ%r|Ā |dCp8alnڞ1PP3ڝSckqNL?h.P2>drUB% 2U]Xp`ƿ_%AXhl:D䈤vFLY9]MLl 2&DMD?U A¸Z^ }߽IiX(ekdgK@BL\ЗFA 9amLĤSZ6 Y>P FJI;'LXo߽ľ 9|صGY,KfLD=k=z/`BVP'(QCËvx/6QQKDu`ʎ ]"aB{_:ImǠ ώx)ؒ`0Y 0xmYZu*X h0 SMR0NZbL|1 }6j\i k?EXilMl&'Q4FF0M ;XpijlKBV1_a3,,F*veXꈬ0}"y޵O]Ɓ }O 9C!̦|Z]h(+&8Q.md}|&G(DW3̱U04'rG3ԪT!ϗ]93!teW;E*ul -(9UȁW,#H'7'eh`=v0(e cTzW}+ƗX ZSzN8˽J֛P~dT ~:9_ aL&ñ28";3=0n$}<|!H"؟B 8Ga 0ٙ<t0gg*EtjqeLWg<'PMghb*ղNI( mU-.)4 0{G0$lr/Wj:R#`tP u>zخg{G`2}tծS9"ۇB2]o|%9C71Ïވg?:{}FS2۔^y`XK(%盳T$_OL:"z`1)k E3.KOpRɼg#iiY b-qqQWr}8Ȝbo%iϭf7`ji(|Kv *H,} `|'y38"_}G 0?x:aN'cv}0j=1Ķg0 DPh2*OsI24c93~['o;{VXf\p;-PD䭬ꯋF(f践~dr[z&cMX_;IE!EOm6]}w"JG3 c=ih/xo5AN@$bJuzODM ;!("ƿu=l{e"(SpH~k] AM/| 7 00wޠ0ȕCFE0Ӷz]lH\H{q#e N\ A-k=0UČH#``\BM0|,Ԁ\*kIf\`\ڲ8̺7IR'&pp2ٮ'}Rl>&`,V(f\ʌ(*$m=16+F$?Q>BR}l~)av]=.W}Xt|pW}0=;n1+{ Z Q) EkP%`֖F'0i H'xԧBpq0|a +ёmK75|h2&̝P+ 7Q"n\kwѤRvC}9)J&V8puG* O`Nc%B(JL^ rJ|_m/)];ZY gULe,`N~CdKMLa> `\C4I|-7| LH_?eʹX }٦ ږ2|eԸ&Zܔxnjߓs9V ! dW֬18L4|ej'|F۔L.h Fpx6 6w:Tgdc3S_P0' ە!U0vVhwG:`d1EWAMp0azZ0b[C..")4 QP1:I}'c{?{e-eS-&$\"-*pX_L"K⩂AA~BT̕Q%.pĪƖEؕ#:B Eg%ތ80wk.йs9^eJk",i+O JP)S0*M0"3.UZxd*w=ǩ[j);—IL4P%\pCw?~rUY5TlOjtSR#o yA]R&`y_{)\BBkAׂ4_*074|% dy<7K+CR00vd}>E}b;j,fSgQŞ{fxZW8`ګ!zA)@,glW Evȭ'ٸRa UR :zkRfxF[(Uя `FQLnl[z;|`xZ6KS0"*J+;x0ld֧#QN„F%])⹻̏ r@ʲ$ n z䚱I8{q]UWSadi)aTYN~23`SC?#@K{.^0gpč?$1`=@I惓$`x]t\Uz7srSTCwcG[thkm1k@CjaBMYqc[9pC2(X0NFX;z0W 0mhBg0M%Ogiߓ0i 1>pl"¬/S SphgF{#Wخ*;+jhЮwN+^dJ1wbj͑y_ ux$`nUd2{!ohqK-f 0g11aԽw>lqO _3b "0&~K|˗?63z8ɶfۣCU YƝҀ&$lY?H xjhY=_u5m-QY2eOlq;ψe4Ȍt`;(L{&I0g0l,P+{"_Ɲwg;uq&ڰ1qh0n (ҒI7Ѿ|ACIr蜶'Hu)0"3`\A#waBpcWSWHY")o5tU.0`Ne8h \ᕗĞү}9_\|Ry]KѪkQ 6qQu<>ʪEv=-uY0˼8cS#e*y&N"Vh=ʌ|GƮR~N =0d,.OFIFtCJ3^>  O̞_,-]q™'Wh#33XFY--̶1I2M6y$<|N3Pʎ**ihP]$L0Њ aZRewm_7?`6gQ\N+``\ L0` &XܭsI`rsai |w0bj Z]/gӎ%kbg9;QF3YmmcDoص}!Ϛ :vV& p:gb!Mu Q0NiV"Du`F&=#ury0K&3`vG0pecL9 t..sʯ#*=H%)m IY8ڥ?v0s%LQRוM\@Uͫ -4\h-0gRƃv6~0IN~'iGq-u#`TZC㢆AJE6@=ǮɕQ Ofvflo cf `Їu?8Vlowk T +i{0 &ϕ!0VyV%_R8=> bCPD$hm--ܫRϦ`t;6i>ﯟdڛ [7\ *O^a-6%Y0amy;"(. W͕^>_j2"0F0]oFRо6Zvi' ;BJoQhUPS9oJŇ XS1pP|`w3`* Oe\tho!y]p&9r8~2"wlM1Ejp-p,f%BRfv\^\=)k hLMEvf]kd! +P+@/ɤp|yDnLafݥjl@`Мu0Xx4`IKg `R4F5DnohWB" 0?\ͫ*&> ŘȞr-0鞭Wۘ[|Q6 0Bݝ !xsjM2離M"ZoY$jmp}-7u3G}trLV S#92zL ~zU{UNRa\]ƾ3(G-T<_`)Vի`3<Ҧ/0]00x;EmO`Xe[5 myk.?͈mBeݒ4GlEy#)psCL߽ 3S|W7&ɢ Ic$aQz?`,VJI~U a*p ֪Cb;%^|?݌#KX w&aF0SKjc.@ XK0ɍH5.WQFJ,^{LL2&Pn9vcZVV>Iby) 9 䁄M `0+4pP2SP[2U E\ bqսhƥAn )i }#)UU)`@ ;g l'  l넮5( ,}n},,`~(?' LY+c *JOe Ҁ!>ϒQ_k1-!Ⱦ3jèD+sba/GlJ)$ C#/LW)`h;5J &`*P]R CJ D5D`mI&P =RĬ`TUe{XLʓ2$ß0 gs))|vQr#2Vv&9;-zfŞ?BF2YV_/2h#S$ zVm+`pM6Y<`0zzt`iL%G^mmt4`!n.SW0X U|T6(k)Wɀ>ʊ }J$②3GeV8T-YQ_ L9344$4C 7t+& hSaoL0CC7ּĆed'!Ki\Ytꑬ0C5P7˲讼+^"AueMGd3|_|6Law2yП(`VENEr@ӻ-U.ydЪ:|Vf oPe*ͮ-N(ɫ&DŲ?KЯ[ ׳yd^ȢuN n1eDKAz+ o[`_eFvqqW# Ow I;ai|Ƚ_|0t/ SqŷKo  .:w%U D{o?茐\f!.z0`7N.s]EF0s÷֓$l߭xChQ+4gv;v q#$Ir8EK\baȋꩥI_>pÀ }ƨ utu1脯)+7WOH-WI$AsI~*;OYC0`~QJLy&)ЀA 5Lw |0o&Ύ/#jc˶zs‹ {juy(m e'"w0咧dB?x&t*6+1:0oqc_y¥0 #iXVٟac))L:.ގ\Xq/s묌NohgwPO-`”62RޒM[p=y馁eZlӐ+%a(iI:`p[݈>XVk{C;:0$I+VL(X7r*Dvia t#Mn+'`*>$ u.`J6fIgr.E16utw7s̶`6[A?r({dA`/PmkDVrYs}z 5eg@< c,|f_l#ѶL:tچ݀ЪLyx13@t AܿXZ7$vO/lw.:=V-F1 !^1-:;ܣ`XAk(%)pRݔX[ 3~tF6-)`D]c}ȎvnC7K0# a# `B/{W`%Qfe=@ l80Z]t-gHMܔ>*d4};_J'E0g n{uЬ\aEX]TگOE0T/..*# .HÍLbN&❨bmNw褪žn`~NClo{.jlm«Y=n1!TrEӂ&LH0ԝ}!,I8Dz^I$j8?YoLl""E>KU4jL`BRR( y6mͪ[Wo1 Az09)DK[] ,{*y+Os^s3I9ӶTԬ8&y[ĸ6RW L^7&*4r4xki3v~ܵ%_mn=F$WhCzDyp&$`!E)h An_-UPcR₭+َ.*S}hJ0ӹ_/O'̼fcrVݫKfXAb&$ L&qy_>qO䗭5C*L @0Zoǔa|x_OU)-l`\b+ ٴi, 7XF8CIuhA `tD!;̥ao/ljT=0Db$Bz6]0]P6s0D'hq<:00ިtIBz6嫗Rn?SP-0<3EoNl;/\vRTQm{$`8 ^+9d*J]CޜK `b>FeYBjiYPDt4sX;$Bs17EDx&TJ( ,Q/5jD0|%T)p#dq+)fD>b`l̡]e¸Hrn$m4гkS`ߛ"0E-X`J{ 0ƷK:-> j !%X8 z:G4^ $)JlBr.*8/y `v z%[cK5I0V|Q(֧]o9(K+BnKZe2olF~9e, wCSL}#8v&SE`K5 }Own[8kؽO%1Κ=F4j~VF3L=e`0)GGF2əLL0c"5A%Uz `(fqŧ Ca߈тYKkD?٭/Z6i!hVn`Q!߶-'bjYKJ0@P0qn_Mwٯk6VlԒ[ħ`NP|SӖ3aӭX0QJPo~# y-`{6vyBMV6ѸWmPSv%3E&“yA78 <g79xtd'a`5W. ls:Zd0zXWz C n[10ο'$]dDY3TNTnwdwa*ˊS05S09+9YmPEM>r&3.3kk &ԕWv hFUR`JÂQR9*c⸌2Ȅ+SY{ِ_ީS9CytG1!Y &\@峂wX+"kW3BRػ 7&̂Bf.}P8WWhk ol grP0b8嬚b`͋QV0zE8E3\+K&O-`Q3w@0nF0PB0ނ ). KQEMar%&CdLm񮖍+d978.!pg"wy<07gVM*+H9c{ _N;78\fBAS5kJV_0v Ke>gd0c4$9^5sK Ό{d$78;hB4 gs l[$䧉WaoM"P((RJ2T9bv<$’&E9(C "+m+@jEf7 nVS74=sDݡ`y c#;lzUIdp`b])ޢ2OG/:kbL/`!s`ԨFec~?p̩l{}hv`LZSy [`Y25_ZCR0jD>*W`ks0}De:e ז9g|e ȣI0GF٧`Zj$3'`,rM}Zu $e SE~QI0_,]ENdAy(F&b"`R`_p~zVqf#(A(25&T.jq{/ L.e 0ˠWIq9J6Tr3~> Er&'OLѦqG oQ۷y1,#3dy*vgESf'+*.SPM/1##VPZZK٭a R3͢6zL* 2Cf->WYdQig4ke0WB{8%R oTKoTSJh$5=c+LtO 5sY*H<ֳ3" sl2$tB0xnQU;sB0/)^A?*yW7(MwSgⷦ`jfnd1ĩ]#;Ga2e(J]mt| nXuN &]|[0N7 aPV ~֝N'gg 732F wȾ囹o> `:y8ώ9L ނtar!$}oT)/x^z'#~THsnr_F_^hs(P[zG!õ&ZK$uW f ?jZN[2!ƦiD@<[ѓ/VO.L&.g<DoȘ&j8h)i6jܒ':0̆7[08A?ʇ9ǻ9{؜̀^$/}=[k`rͼmXcPR6 YUcЬ"#{[K6 #QHG7[mEw)N^({YL<'gy16fDp./NrX};PM9R9&ff^Ҟۀ ӍrꪟW cg'L`Pɀ F+9 `Fbp'}Huh};TC%+x+T '6/xE OE'2~2pP'%c .>:iBZcsx,Q 8J}v;.x^U-Ud{:ޞ5+uq 8XGVRSa ^`d])H0^n(i ofJ P+9!3-(-}L#+@Nw Q3kzt)5+`QH\?jYbfٲϾLg= LN+,t`ҁ` j#= +oNw: ElϯinUS0 w\0nۧRPKމjlt?P ھL@=&V)s=`r%>kxYc < űzxC9B-.:_ٷ*\fT+C W_hykV`Z6m G4F{\0"V0f &سװzk°ͽMWPĽ4 ]<}d܄[ sx`iN`.gtLz:upv!7"/9-0\7owl '}}=&;jPywS-1b ` 4&_':?:$zxM0 AA'~r{k蓗#E0A黫;lS)̀ڠ`m=OIKBq 99Ka'aKnWyυ.J`L`o~ M#P0b8dY7BB"v}@bxPn{u Mn 86 &xרXNlE;sѩϏ{uu Di?0wCFw A;td2#dEFS*bf-  &U~cU:='lRuC BG?ZG}ˀhZq=lK:z pEnex/$!5~q3˻/]of f=)rOqspwlmGRBȃ}S$#&@ F?K&4 6=FqeZ4 @7:^bq(0JQ6-*Ü. &r"&nv7wT/s]LrL:Pq \dTY0E*-E9JW|> Ȇ],k-'`wm"q,  ̙I  jdQ(1殉֦-#auM.SuKʞhs`N<c%EG8|o#+=L IsܤͰ碦FЁ@0҄I\OM&}ɩuސ9 p$> Q$q4LQq`*MCZŝ(f0XwcLrV>;v\`g߷R#ŇM[@NrY:Z*cu=N0ڼ?ºgw~opI7)) 2Q0ԙh!]IؗTOy9 [wҢeL&XApnnX0~aD/IE)2r MOIŤϗdM T6%#(Si'!BK0> iZջU@肝; _n7YHcM0whB-U"^BWv9FV8ty_ o)mdW>`O~-,B`C&wdȞL0xOi hB\&=goL0Fr{لUwSbp K.0IRsV9˙`Nu8‹̭4"$;J3F0EKL`R FP_V/%S[I"$8ĝ>1dt `ե<'=`͇5@uNPO ,.Y 97j"q LzIG%Gt8G;+rY~P0DACF0(eo𐷦)Kf1+iAC\"Fd^Ă!A]yV)Mܻ}|l.ȯ䱕ȏ7 3C L*^`@[`б}T&_&Kn~S@0r1W4,7Tف8eʵw],鍶6|$v`>d MiC4ےB"$w``8"0t`t V4~TŜ`Yb]8yܑv6y#<2q˞Ȇ)) XJd*O&yݢmve193gpo8k+O.ڐ ž#gδxN0H0AO&X02ƄXC̿BeC_Ȭpކ}!q+<`8VnLށCyg2#|!nLDW6SvA-.WZ3@mLí}9u'忋o"3N@-h%ztݾ ƺʤKaWq>&v8h݇Ҏ ^Lɞ5o O 648z !qǥ~҂) YX03bQQjĢ]0:ޕFc _Ɋܪs%ᱧ}>T7:yYx`c` f`3P0~vDcxpkر(H0y嘞@b@&5YuLb\ ރLIu*.;(D ͖C$yрi}QS#\]3GM2oZ9$Ȅ}WDA1ލ =!5x\2"usbceqceϩPږA] ]'t'p@9kt 3KVޟp`_sn;Q-%x  !Yg &2u:1H8YUsuwz${Q Jys N;LAcʉPD⏚MEP"@+&xJxKfv,EG 8O.w #S!%$0 7Jzi V!ey`7ҩB6 @aa dyw#pUqzs@6n嫕 8rP0jz $oy ~()PVpcߞA0G; ȵ_e>R48` $R+gѭYquun]V06 \z22IؒdKEgܓgN9R ?:ڽU7)%$S{Cօad$ 7)s`Wr`]첑  @"kd?KEU/Q%Pc(΂qC$ 8o >ЖVuDڬ'TMTS`EҞg}:3KvS N4GU.`ouڄSfk!`zOa*|!` \_kG]ubKPY?1Ǎ ^FGc7ctbs!% (o2xS1< H \_m(mFnhҫ/C:K0 Vcs8<"g`u #n%E' oȀbkYba(/9eՆ)e:Fĵ:DLC`6[t`*'S0C`LJ0,G {y-LFaP0WXMIM4+A$ 8cELU%"H#OUEJGۙ<]'#)Cu- P⾮:S`Mz F7b{s:A71WDMq+sb]0Ϻ3 v8< CCMaU IL6B-1eMP˸%- `dp"Ե7MpZ0ABM20#C‰Cҩ2G0TQ0 O[>`3:Y0呐U0zSnCDUp`􏨫gtdL9`Vl.>Y0P1fxPWNƄp)SDaۣބw$*C0 K*k !G{_LWSHgV2z \-V %fk*ZOo Ʀ} aOwuJ[&F?ozOy؊vzLgsdxfLfֻ.&;]^16$"dvȩǻۚ)#?{SWϽmBtJ }*a*)NQ08 uWC%K8#l7իe"(IF_TӭL*jDL`vi9Ar5s+%y< %dQˆ}3RA.S2Jnq.ƙU9W/^ȉyY/G9/JL2 jB a ;HPsiL.wr;dX fp T]#D2`L\0}{U˅jsc)Sgϊ)u'yG0G^MC0hl k!B`Ouv'/@/dO~ݲY2L5b5>H /Ls*5l@\<9^r/Y^QnD>>821:{te⅍; O ('jT[e"M4o[aZi#3- KuY9?Bl FJaLG>Go$lO?Η*%5i~{#If7f\)~A`<& *̺ݘ2z+f[Lٙns- 3_Te3A+(Ԩ3%˵Bgig_5q!tI`:]0 !/S ?`=}|y5:z 7r:H790!O50 ۋDS#oK ֡ʨ`2TS ~؉4Adl'xKzFh)W)Vٮ7yF0cf>kĩ ,kQM0P`*U9O^Pbd&s8W ñLY~\/oé3.h^}My4n*EK^F6WY(Eb7.zO9b6iNVe|, vӟGL# @Σ s`l!f!x3G0_"~]:-;E`g LN~}TB%A:7! T 7 ijΚ>g/˺A_ H*NJ퓂ceW0UƓLɃ[.|: -wx #u}*^"Xz{s޹{vQ06C!T,/J:(D3N0eG--)x㸽<޲]Ս2ImIqv⵸Dg.>?1\=9.0`}#e fG;UL*ʌEB0bPZݹ KٺRD%{/:} R{-l/|#'lyTUi 08b({K0as)Jџ- q; f/r eG `rxv唵j! ]zvt37+OUnI0XˌBas?=ڱW`p.2k#ر`bF]JX:5yCLP|kpَ̅8+fQC쑸=K2U0bYn9Yd  gP\w5͎'{BQH= aXU{7|Cگ`*p>HJ;Ӂ[FW&*75me #J' e.3B0^kADw %x|g[6ޢ?'Q(l#k>PU$׹N0 BpJEZ/.X0~g{O#B`lv=Z]ajqNY0Z/Pl2db;JD3l4͎QpZv 9-5Q9]0ՐrB0:G.?AN\7_Y e#]Tv8[Q0> J9E~4P{0~e1j*JE`T$.L&{8WZS٬s`pW) s%S z쌲kD,ǨѿQf 0LV02m ƻCA,uױUt =і^0Bрt ќʼvg;lq-!O& Od0\oO0aa*ڻEc#ϣx |8D 1)ү;9]RbEqڢ&ޫb݈M`>Q0 Ո R0^=y¶٢|xj(I n,QRETv\{M(S$p⼄0e(t; BY=c/[/<;kƅtlj O0,rԂvhL8u` .CWD93vP̓;Ny24Di(.Lj(5UP l%b:wiʾFݽ `&-0 |5zFFc`?b"O`}[ ŐHw@cIfޠxQcUd_xGY9-l긿|n,ύ#(F8 "z4Mo*?Fql t;9ԁڋ*_w1~]1然C'Q"\R zNk1XX?yd0dD >(*@ nl ![}.VքcE-{R +:ׯ" m4S>?`liK23Z MZPFozA^+uo~nouN-Sx<C?֌ͅL], R#~ 8.hDok^05o[F0`R|aE!|7ulp _H@B` =UbHE`6' OmԑNϽm+``*Lq)RA4 +p` G ī !:V۴P+@60c 6d``"H&愬`dTz\0 +2ۆ K@2oT(\ yYdr;+OLKb&EboNyW<#P0 bN4=7)~y^B޳U`;ej5&I 8qq8O`#1S`'L!ۀŸY3oQ4=Mⵘ RN x(Bȵh#c}JIjъE@UwI@0r[9+4N< Mϛ!|(Sa ^B*WU~3.;ޞ?\4S3y4n(>! mMQa`Չ>9 6R,k jSm' C!붺JQm{u\8m@$pPV'"ewABrtJI, G-E"+XZuJ@>׷x9g rkV㇆,Te (wüJ[f ^Qh|_Q0=S0'bb__ `M˅0'DE_-e`"vL%}w xoF)Phd=B'SE_(?o;]~f( s'~`OA ,"~gKH/0s20҇AWeJ!Oę6B0Җ hGUڭ'wA$~Lr=x~4RbP["BԸr7DtR4GRwa$gH#ʩrE~4!e~BX˵kGiohQ;z`/rTE1BHwtH>>Q-ᄟ+]`-P00l qw¥#%+e( 312`l d(.4-e)xh^I|9A˹) iBHۋ"+yGtW0p^#U[qኍ]_0MzTf |RY\f[mN$B;*ѐ_ /c.zoV!>)Sgr @^&+)XUF՘\{Ba K|`-kV6b^+G7'TS7R-r|X 1$ qB~G0z=#/ T.G aX80W1};/o&wE'݉!I g(ڐ]G-8վ VVM/p:tȾ>`>D۠tLLrW "_0 NSTDAW)l 8Xn_!'`bGIe0Y7*&!6x+0*X<;L(~o­M0* !/=Kl5ϯ:IΊOQJa#{E~ 23WftFTm`N=*a6EU. +Z[ !rL&ngqXM7ׂ"zL+(-ʠx/_0 !}_M,̇NގH.SIeT9C0ʷ҃ S O;4ȮErwKv-(1CD kBH*/ C λ)V, VrMZ|h Ľӂ_!]`*-*ľc^}}u/XO<[E)+s5B7/cerӘ򄥪z%2T{ UV"6%̂͂`T;/ Bȋf_ԗ]đq+ 7#t9UGc0YaS?F :E6dqG} |'Z! C|iqe@7eJJ_^}8;7B~eOG_"P0?2LsCk:|!`~ϩ1BH?(_r&BH7(_&7j! OϒBz@6/BH(_JC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!d !!P0B@BC!df~!tY] 2 L21L.6`!dn, zD!>L#h^:7G!9^i4JBȯU=Ksۂ1k 6T`sJ~`!?7}ԩ}ïB~ lB_'m~:B˂+ e.dlBRP7CE0H`BF3`>kŋh/(M&ҹOԅύ_#|Q0v fW&KE? e0Fm30IKe _$o>I0Xӄ~ٔJ3fxH'6gj o}& [)/B'9vT0X0.׊Fs\.cje^wY$c6z-U\A?3KW67Rqs]!&d&m^4P C-}_ZO GLD1Q0*j `"xۛc6&lR\Wl'Z^-z/JՒ4w ۧKv'OH<=F)2,m("ɐ:DAْ:7J]Alf|#'a`䥥am7SQA#yG`օP0n S!vra&VRAE mo~'zC !2BOr0If0(lkhmuE4Li]K(|u#,g ʓ؜l D!0`lBqH0oނ Co'jU:/ttK.M+cĄGma?佥`]a^佈]_@xx b=^xp}`Po|j-iG 1g[ɖo xŴGłYEH Hm &ǯCV0 farXPiFkt9iQZKamj`(T!e```IT)-DZ0ašCe` `}^g TNH"db& 3ӵ;i 1rPSӂ0>h r*_Eջ%fOZ263Bg!Ể=gtjCOu+<-A60FZ U:&u}.ۭ8zceif-P߄WZ |(LF}fL߶F6xfy`z$BUl|@" w&w ^E+0cЃ%'p܆/ rÀxQl\2` CSZ8R I5y_1=l)'lգ`Mf` ܆o  &q ަ#@3ʕI``ygS+2QN"p*58)h(C$z] @SvuN%G"+":%/G#"v(f3}a{ F*1V"d*. `5񆶋9brl)&yq sZ0 ƙcwgQ y䆣 ҄l:9P8VkuSP}tbD$f쁩BmgOP0IP0h O]CJU,(ZPxSdmYq 6Yx\ݭPljwUP08l)(\PdɠGԛ'!5Pڸ#=0A-⚂`m`G7r@0YzL%Vee1V/d  f$O0]A5сh-gR99vXΑh dCnCƣҋ` "7-Ѣ:L cCnCSD69;)S:U2!υ!9!L8k>*2`@~! `r(2b٫zH_KSr#R(rk(2_B:az<z~Rj95S0>P0з(.^5l ~!7!V3Ϟws!c yK(T ŗL`ȝ`SP0׽EL`ȝ`9~`}`9/FH0ktn'>υ P0^F0ū |^<QݣI+SؔjB~RZH 3tzVךBp~~QEtp염`̪ C%!w 9dch)+NB6iLg%0j=BȜB0CmSÙUpWǿA!Ķ/ ti<{_#;EN6yߘ`2 L"W3 `@} ! f+Wƒk0)|Laxz,BHg], Bcw9Tj?P0NޥUNBRD0` F5X$g .Zߎ,}ʬڐL޸?BӸ``3fK\x٨b#JVRV CC#S..lDAFJE0~s:NBsx-N67 &b:DŽ1$?y 'PPԕ3`!u)=$pSCy!5#"+jGUuCU~BHO!ojo굩qiRH`-lQJbkCB:r ?Zh9,C2@B*Ҿ\!t6awq&TaUO&b3ܐ S) rLf {qޙ#ӈ^[ u.B:r\jA6\5*sc~BH0'CMIa5rByĢSnjY3Sr&Pՙ+Ey" '~:jV:r1[^5oЃ5&0R%9V *XcrmO!u`nB.>.^C S$"p`ξᵥ`B B5LOp2 !A N,P81Sdd3d3F<9BH f^Vq;%~BH fbȾ BH ffR5JBH fn7 ?!$C_*`! 4庿@ !!P0B@BC!d !!P0B@BC!d !!P09_t!? _tl}DyLK¿{OyL#_&2F SHo?a!`\3A/N0y[@B^P0UL /@a G0 P05t^?DWX%^8eNna(*Ǭ.Y|%7!Ud m^?ccY~M0ZBSG .|] \b CS1P0"kX4dЬZ@jٰ3>넆!`*o['TEnOa@Z#7%7̈Q0L%E#Yp:d=` &#mі\!B`*8R/jyŘBg09,ZA˛rc+{T'4 !?Sb/zctLX,`dv9m_HY`'YL ) !Sv{L!'k'R`Հlt7gQBS`s#-G0fHf=#ea C@TEvѵβ̦L|([`!L?q7r`"P0<IH Ft1:DyLU"뮖X0Ftx< @V9pC4L> BoBoZC~`(#Y&07 !$ C!d !!P0B@BC!d !!GBY(De끂!܁ f~N]D!G`lBBnd{@|SDL`!L`!7MB!2 B(B!C`! !2 B(B!C`! !2 B(B!CezB@~X0F"<+#~IBB ?URL~U0GzR0u lI!P0ih`RT0#@͏ PPOT-t`:!$ fe]AD͠SdZkŸ`D9o FfmHc~R/1&fS;!BX?!d(ǾU;(1HF\fL Ajr66!d6~V00Y%'P-Hoo$|S }:BO ͐mΦ/lqjFz_7f56A~'d(AkiMZRJ2JAJ0z,Kt\#U|!`rLa2(n$8]*hB>.9-=[x` /'.n?V=T !߂Yovm!<; N Q&.඘2+{FY~! EJkAW:ss>6<! P0-"-*8C\|<&U[ &&k+Mi@ i`m & s/. BP0$`~p^jr ̍ϑC`]A !ARsf`]Ie+L` y L`o3 < 槹w !C4 !d f#"# q:EB  Baa!d&ܿ@E!d8? 0 '027߿rM !|[ ###9`0La!z" !ֵ?B\0'ΑBd\0P !L! `9(B3@04 !\ʝUK B.ւq B&悁 1 !L% !d OBY0S127S1?C!3B\09CF!3p{ !Lƍ' !d ,L`!d-B !LzNB 2Bg ~!ix`8AF!s,B B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! !2 B(B!C`! `Vi[]B!W'Vz;!<_:;!gs^0HBȣ9)">mF`։B!`E|,L3!9̶s:BD߃`nKBCSl>t9{E!-t M䄿 |Heӝ!7B03߂ !O K1:%|q9V -;ͺdMuK<&Uo-`RQS4fsW0}R:"ꗅ?s.h}تTaͪRNj"_?/i_ߡ!d~ LZEWaGQigCl@I_ͬ16s*:B7k `]RЊmjnۏ]ݳ:\5_ r"U0IΘxnpfL;tq\&DJ0N(rFt]tDa|񛲓/@y/oT#y nC63ACV!p* g-]lr=s0̨jkY,٬ rI|@e/^'^9s*R#@:fu:Bۂ6PA :Pfz !רcQ4e=h숲ނ% 5L`g0(7nƬ@Pekgd.'Y^#L"Ws|6qrωtH_{`ݘOg`*_?%4`(a^wcw,nq qV <ƕ@ʈgs#cyLM8;B;Oޭ "ڌF jL=`T@D=te#]);|ۄnC s#yJ`]5uG3U-Sh`gUlcY cws0.%\T'D[z[ 0'`W_֕ߩ``F5-Go`f`kL7aX PGD>?=H}2v8hϲɂ$`4l t]05|e@ {uzsUڱ8J 7: !'MXW1uC+Ƃ wʥm,݈xMɑى^A#ecSvc3urZH0!GI6ܙwr@W6ۍaVQ241@Wdu||(>iN\lᄎF<?7_x[}MC|[bD`W zfl3й>фX̋ӥ0YĘUtr-#o^0P`&# /glGc,t>U(kO?|ܫk?U>ߧr4!=G`/hȏ-#?@Ewgs kdurr"Xio|J0sk:*RArIy@` Ôl;HkWAf=Q0*}:ͣc{C*c$B8N׏ %`Eǐ󂁍D!9j+@j Fw4t LX@ SU.-~NiWn݃ f H*>(zl)3/~M2$BLdMNvB8ÃCCqߵ`( }l^z#]yu6S>#.[Q}^D ZHGHHN4l &΀\E1J8$0 !셲!DeG0T]}j^t۽aJ}je nq>Uܞ 0G"^pL ƛꃱ h~ ¶\V7LXJ%M]H32 =6' &,v=* VoWT0w{"P0X`D8 D tI-`umX0Hc#Puu{5&c*5uV05yMMV_ɈFZua&`~ 8BeL1P1 ?~\ ƘN +o7* S`t8( xEz%1LN0V:aߥޠ& U.@(R蹰) |jFZ8PNř0O*w[Fb[p  &h ]0(9@Q*'Y`I(m`qyFzGf4zzL|~Us޵䍊H[T Yz & 8XPqOj/ #+..xV*  Qܺ:"Z܀_m;odBW^ ? 28-(ީ1LA`>9 `o[mm\/! A9/~$R QYU`cY `$+4פK? p`=a/;۬UStCnz+uW˼zrd|C ZT |B0ްa ZWkc?TӨGh@$ )BnH* r=ZU5ν1(D!0Ϲ=pxeֽ暈Z)^f(BD50tQt3:H]XYeiqH0P f()X`L" >P0:&7 tg "H|G3=p|Y0QVdO%ݴ0'`/.NAYJe gg6YhX0&pq{1 i(6j8 Sg 07"ԋLo!4!NX%\v Om,{ ,×elӏxs@]G-qXdJNv:Ƒʆ =L ٵL8|cNx&2A0U5~7$;߸//!iug`뭽:Qsp RSwiv&Hzڴ~E0R'EgYn<җAY`TZ]08kYֳ&n`>`'F",?wYfP\:gH`LNbpҥOad/{I8vmN>vb9a;zR \%  FɫBkR'r; hhh[@]m'_嫕3{R 'c^TQ3 /3fLq @K|2v sCp6sY)r#. ]Ŀuq{#<^_؜hD|B 4hhߕ~as`,96t#"P0 O~ܕB95S`fmTTmXz~N~,]" *(O.qt*?o(Q"P*{b0I9Z.iwОY/(䫂I}0A/܍_;Z[4cC҈ Iӛ]e)լ%``h݋J񏳏:҂\s Q]1wS:}w `5\C#$@Fѓ[7Vo,G]W D JG0Q܃V]- ^p$yԕ'S0Q=q5:^O/S0a?}$` f]MG0~K0Qq9msT0`Ov prMD7Mm̊؎^bSؔML 6Uo]y+\"K0,;ʷfw#W韏 5[ 0| F_SIʎ3~D0fM}׍ly̾KE g~<Kܜᖂ1I\';Rly9ο6/몃~LM6 )!fsظ({.LrrW$gXeʃ|nK")w@!_E]ix{(BuJu >\)䆏Zd01ӢuIN0.~| xY{nގS~Z﯆P1\(7\ut&PaU:@uu)'#'cW09A;8|R7=^hTWɶ}\$sAA ;DQb` kv5 쨹 Cb{P*Qǟ me6DyǍH O |!Y[)Uc۝7|CXQ5Ŏ D ^%C\A}K0j{`֊``lÂe> zR:&U3M/V|覷CBڲjߩn1s( |9=Sf`lhD~t;|`E0z-:*j'ZQV|=TUo8 Cͺ߆]k Szmd:r"#6l8t $6U}Ė TZ ȽH?)9 S'P0F 4G}PKuYa`g)tN0+`ʡ`@?]/AJ0)Ԕdijc\lCHZ9|)90 Sx"aRSִ]#`C1O5 kŬ`lL&Lոi!JD$tHTIE0!;d-U,B ~ )SA}F02A;֌TR\P0\ 5f8P 6Y诈9tL本 ƕJ 8B)r 6ᴇ` n`s3>X08YB&^RhjG֢ɉN/eE0I`VqG'Ȗ&!Qa^GOF0j*? &铂A><9\?f}o! :Q@09Lm F>##^R0t` `LLy;ɏUԩ©6xRR(g_Jl#vHy"_6x5d0/ ܟ s$X;&C<H?AͩݧrZ-B~Q }ܤֺ,bk`ysR%`8}qOQpƄ/Dmn,I\*P0|Q~ "8㝤 7(qQif7OF2{2: A|_L !_Ⱦ)䜪"g?;\ +j{LB#Mʛ+ jsP 3y}fȰg%0'd$Y`ep@0rzMבCL$X.Q b P0AX5m.'8,UrT0NtQ8>`ʭKl[Pju?CX-O]Ƽ֍QV;7֯>LEzWN0(+>{AŽg(0/_0,%V IOE oX/'F 0JNd ƹe ))X~xrt ({EQ:7u r0^GA0/LE fQMo Ohd#J4 ) 9zGr:+q4&}W`%WuD* rȐE20EkW~YFBIM0P>(.[peݷP= ``c '^hpW› ScPKs۰*Y dx2qUED߃;6&)6A#rxsuxħ/ʏ J^"rF?cNםW(fDQW~f1{_sD&)LwTupLYJ/2). %ƿ,AiAIA0*J~l Xu?ZuÑH$D"H$D"H$D"ȓWyD4{F0}JA2-NФp\ÀaAS 0Nԙ!P9z/ Y.uu t Wi.q[YRuP̯  LDI:5D+>>ŢS0nupo``'WYge =S[pV0aғ J&#!@_Ow`RE=gVE}l|0}4qW#4?]bh;J%'@>0:IrRK 0]ȣ 7m@xv;F‚ᐷjE s:O[2= Mm* <"L\M0Dyв`j{ pb1 U*kIu)Sp/JzZ0QOF/M倡%#*TAnA"Q9 lK&W0"`XP&kf |q%odiGQL[D)~4[?A^x pQ!rwk.}[I|!R0%10`3݂jE0QS])_dF4[on-Bpa18o y!7 f 0_PLNnfIrCTKESpS0h*0GI$EqRԕ<d/k~,,;"҈2 |W?wQbkq M(-@#-y]ɬlS002pD'/9dg8dc@‘n?D5Z|jȈ3ㅂLm. =Jdm; l]EDEUV h`Q;ULFq:**ꪷ=tDX|lCm>v>|'Z/08 е5甿rwӴDDEEN|0V¿Ѻwo>  a~NۅqљyTѻpϨT}O;DBٓ NŶnPJm~QTTz`P,Bq#[*fሓ; %23ӈZpҤI}{QQQꝀ1ЗG %@w kr,<$>:"rO0%gW0<~Ez 2PRpT#_0._y%vQs0g^gKQ"=~ Iy5g N,-x>mO?aPy%tQ杉^{69N8QKMh Wjand10U0%1Q8p>"8FCB eF&Xr<}']f`|h B g`2-c*0Q梏++@lw@U:mk51QԟC\MmaeJr{ 2(* YG:$`@ hYż~-|ǕsaRsI|ʹ'&\ k(Y~~\rG>\NBCAgO[qP6 UQ/ OL%ذ{A`a`@Z ͒؆~JH=?4>c 0[B[>UQ#0omBǖݐ#K3 Sbqy?`-PpXv<@\q}ـRayH"2": ڧ~g,&>$ǵ$m5D0Kp)NG8tb0} 08Rx?p@j~y*>A~m9$Ԡhc #}E{+ D`,1I}1$AHXʗOꄑ) jt0ը&+Le`cۨ-^=Ё ho{x S'Qۢ^/<`9G0Wv„rA~?Jƀas?>-( I&W>E|6@ܔ*q:P pѝ SL3)1n`h/,*FUE6#3\(wL0d)K6ng8n>>ŠQ?m-(MslhL8CY[uMT G&!Bf:+T23p` S0dODW^,`!~ .}ij+ :Xߕ| AjϐIoqn w0.ϙdŤQp jæ:<"#SZ&GG Am j3. B2^uy?c!c󕼍f=,; *RM >µPnت*>8Ɲk07Ɉp,BZ`xFR0'vxKF\Da3B҅~ҜFDq;V\8!yhp 0 z ,3g2TMV鑄kb*tэ e ixVl*?@ @wIO]V( "`j YJ`AD#E`p@)\;U1 qSމPn x|9`ÑybS&T @-&RW Bs@:$pDȎtn%t?Znr ilMk0Bd0ZF47A0 j'?ׁQ|;Y`CڂDiS.QۡD9||8^SEܶJBp<*e,ݻoI! 0FanFp:RD{l%7"Zø*$xӋ4_E2 - (u`8*{Bڝ{A7%b*(uCIFc%p Q pZ98b/,`^ {C.Po UB5*ЃKoBgHm' '^ (Ɗ^+tq-.Rv=gl8"`,BY; Bgn9`;pMuiW)c3 r{Y,iF΅ו>KS^l dmI0_,QmŗLv`WB*X& N|>Vʤ`&Bm$HM\'COѭ9 k({&`K}]T ~tAn 7=PIՔO̦Z0Tt` AdSKށטt*Hv˂ _o$b@bǷ_ۇ`I} 0\ƸQCslmοSau@_Æz#hh?s9ӌo E^Jo`IS0Uj1(40nDT/@M-(&Ӯon!CsmB91ZOHbN gXAh X $*1B[l$!ɷm>Bd AW# ֓@uJpy¹$9 HF01@{qp `Z)+ $#C,o=20|xǓ 47Ny4JQGqπ D_GJi1hk~NU#mE6E5vt\o+\`>qqT6F3F(`a@)4 2E@w7O%)ZY  `( wZQq|zX0~z" WΟL":'F![ML6|̩79xO/MTE`XrZ1A#`MRx^k$`83-,?g !xIjṰXӴyne|M9*)WN}iN E 7DnER0j~JWeqh0}#`ZgGc۟ wCq }qV4ɟ9fVs 0m/Qu^0&CEj` ЅUh `!O4oW DՀ*ssL j;>q\*j>" `@2r@+/hbܼ*! *@X S-o԰?;"ja TG4sBȩVE&s9~/c-nGhim`J}(Fn_NQQ^ 4sOmvY2DFO&:<[0DWa25$`hn;_:}|Z+yl]Bȝ*1L삹(#"֖ ܝpi/0Qғ C}S.4`T0E0` e ~T3!#6Qѐt*EDD*E@TDE-`# "6+ڭ-i^0N2U,gBANM(f51}I*IXv. Q%aE~`'wU}͇j)| 4rJRf1&`` 2"d$yvBI +JOpap*>*Sg p֌zFOL{H`GynLBr&Z 0`hVQD(]WZ "A>$@ *΁acψш!0Ïy 't*H Net9zb?)wVS [@123JuUCk%E JP0%d΃0{Z KT'{Ȼתu?l05p|5`j ]]0tFݢUC[Kl$w^g ϏJ@9ς@J*j&`''PUBfg.5O6 lkčܹjei"y̠yeg y q+,FCt9ظV˪4WIYEѦWYB A_K 6݄';}iL}iLuV @›MAvrDU)`kKՏ`aI5BFD.!! y~,* 4vݸ6`9UbëvX]TM:4QqTdƼ`$PrH}mSbp>{0O*=(o2 )"6"`NAo d0_#L˕0;𾚓{gDԙA ?EwPmNsK^J:0aeEYwPnfB9#)-zH0LvGriq#&;/ }P0?z `װ2ڹO``H<7~|}O0tsL޲ZkПa%58Xds:kv'A&wq%NW3@D۫'6V]VCTv$;kn 8!:b ELdireUGSRQ̩7qg"qmB.}Ӳ/p}.^0\#C\Ba/H]I**@R? G4QE.T" D Zo_ΠT&lkʏOi)(#{9騏QmJ*mh!Da~[チGO*´uX1=APoI0 0,kB7>LXMT $_9`Jn*$2 vqi Q>0QY'7 -}*c(0vq+E0E.@eV#ڙ< pl>S?3.9{DlI(W+IUp<ָFDE+ aMQ:#Jͅcs>WbLy;`cKB)2u ԚhN>J IS=JLS)!Yt*PxLT0h<Ǜ :9Sg a@RT n\0aX؉SPx)`ڳ>`K~40x@"`$$yh4b|u0|%Ap"E0E0j ׯL c4`QQߨb_#qA$H[}XElV^ܽh(#CN?gΧ.%wlTTH.< R{+W w?p_MGE ]  `h_0ElT.7iEþm0.*9y_tl @$c[GBYCtp`Cd$rPi0e嵡i.%TaBOTYWiT06 ” Ŕ8e"~\'S~Qdۘԭ]oy sV38Y{B2CtT.Dz3 T``V9`MvﵙB_1&'w6wm4-N"`fN )oM*7DX91JƾJ3M~ 0N 8Äy=_o ^Q__c#`J%"}R_F4aDMyc"o*w {F rٱ/߆7vk 88Tې]]Gx dQm#`}Ыb &݈15賧&$x80"FV]EW-xX畣@/  3@=1a$P 7{AU k%k.0~ >d :`pu): IULenlq拊!0؉0x!`bf 88X-dΎ+eeEO,gYĶgJ+&*^ }  ==@G]s7hqԇoo~G/[E*gC7>hSQr]m0RRxj 0WȇRSR-rG}x?%3*M>bT. uWV᱑0F/+872yb,TMF!bPS0 װ\E /;!CqEvCUN?0`]KO0AzL+\oVS%' wěh @w-:LiS 0%MXSK 4؏D:՝` ĎJ"N8Sh 0j0l$H̨`qH{BۀbBMs;Ќ~/L0w'#ZW?`8a9 E؈ XN@0 0i*``] D0j0 JK2fS}Ӹ!gE JHKGKAO0OꗬZ̷J-Ý 5CTfVYa-E8GZLZi0(Af}W+]2KЀ]F6HxFG\Za^㷜 ꤭ƞX]=ɇ;*^E=JbM%(Oê ɜ硂 j0~Q^By #.PI|x9y4lªwoV'*-fDCH N"DCVazaW)  FZ'ZK\)Kכp5c2ɻJ sᬜ3ٲ[)߀o=&*6'%(uGD9y>nuB PS0 ŵ"š%k 0<0 6Ṱ ᕎC&M]lza.C {O᪠ bt@%ߌ#L~As[ fO*L%N`JTC_V*<05L yMN[ 2g<`J%PwMv"`*+[YźnqwLE/A !pMkasꣀqC9.\%iB ms[kHY4]['ŀtƝ8L{ޞk8gTY2R 0Nr'/PPaXԲ[>q;.*0n0V6wy&_@']f4aTs9^[/^53COSK`@9C&4YRp`P@V0 > `H4 Yjף:&p!}ţGe{^_:+/[JWph\0`xk^_bǘOo0ջWE0JFRʹE%A0MRO4=K+ϝ,xb0n` SD.T0Tz]> ps}P }VN&κdgC!`<͸j|U0>'a wB…EaȆ"%^sL3=̿D Xtr!-Q"`Ȭ~0yM,,CNȄ </nɲ=&*WHʔ9ᚇ q(l 0^"`bA2Ħ`i׳}pT$:{T{HJwK+)k_"waGFAS+S W*hӞ4)!h*F `_%B7T BO9~$ fOʋ Ik (f[o|04xzЄ q(CŠ8vsH̆Gm9K!/q V2`JA"D%<J6m)&* W7kmIxVP)xrl'aak\})`J\s0\%E0 .܊\}hi̪)QLTHO1O"_݃BMhPHY T-6z0A}j0Egӂ^pQ) ?WXƒ12>a!1 EE}曭I qACrӰ@Lx,00UFk6RBcm+QϪ|!t;`< oC(G]nШ!mDOijz-Ӣ0>U!bAHA6~SASۀ)5s0Ra7ݰyezBKoDZtÛa@u&x9 TeS}=j)s̘CBY\qaJ^N"/~ ԸS-1`YwMCjqT6 [os LQ1Rխ/0zf1>pߦk>0hkqQQK*b\ۜZl[nˆ20qPkj,MGFށPb[ћwֆZ}3Qz?[Xć7D ,sn 0x%L0#p ?rm0Mov|QC!H[* N}`#aXS3 7^:nnqz|ebyKI"?R o;{"0NȓߣaTpL(BNѳi Guv%n y036M"·q`xBFdT޶԰̧ q+7O|vyF\IdM0;pd /?Pt>eiz<Lwc> |G=% `(: PY.PA 9W0UDDžQE"E~~Hԇ?>vk` UGF`s J*<KChEFRp2P\ka0(zY ea{^\u,V A0}$A,_Qġn=b6ý7=;D< Ҏ>`$m :Le8WSj(,=wkW`ň ۼ:eVM'&+8aM ЇW0|hMUp8Dƨ0sgIbD wSvt9d+h#Jj0@D !KUV@ȶk{" UJqm>WuY/5o-]ާw"5iH08I]{ 1Y8l*O{vJP`(gT0ڔ=KC6j1`T_"fwn2(-1PԯU`\5Ɣz#&vAc;ɧò Aj0^@u :"|%<7 ":`O:ZASG lzET} Aܽ>#>L!-NnA7S)`X{|С p8xd0lvq >> \HqUqKv|zrzW`V9 sx[p!DW;xxr @T&#/²VL# Bo*4pX>yƬqF)*G0y+FAU*])'M  LiOmaS0`y Kж09ZAрq;.-RݳfH ffiMM7.,-Jzc[-(y;{ltPChꡁ3DtF% Y3\s5Z }/=g0l|$qâI;Kިƀty!"Qp69`|Qln0'UOCԣ"`hl(* _6n(Μ* ^ m%5ۢ>"b~Y1coR2#;\JtK._#0ڔ~0~+? ux@]Qx>H,ȇhHgZRs@`+l(QIlsȩfS0`}DgG 䜼՞;CF$~BF0sX-Jpq4ڷMdu[&g?TWFg-+ .`ED*`L}7i o+W2M~50qTFu[S6) 8?k2@+&*>hb3%-.`(A( ``6#)cY $Ƙ)ji@.j[=H|lLTԧGgzM9T\(VGyduGJ|0Tu!Εk/ϼ5XQd#a?9g{A2VԳ0퇏0(g ZK 0^*)D Q:D&{NA :/K̷+&WDD0}?L|[NJ© 0QDQ9<`Ȝ`8Y`(nFDEEE=揃!F0>#L$bv1rM&0g~٦EGȉ"E& 1pBܑ K JT`jO1PLTTԻD} ˑ?DӉ)㺟F*GG n*&**/ $$P:m"CldU+ *5SA.5@>5e-``U (99iG0QQQc~St$90єd ޲"c(q&Quf/QQQV1v{mo( V܍l1ތ~o"yu_W8:L޼+ya%'rPug7as(qsΒqVOTԇt5*mh~~|̭61]إfCM^*atӓQٳzo(4Md}.e0\~ڟg:SLZLDs2褡m.nHV0?2}lԴgX46ia>-MNgrn[m F&ο?lT^{0wk͆tu{/f,i}bhJNeazol֪7'Af<7"pOusdOf'=j :L)OseґM|yIoUdgX\4/3Og/K:mIRE&.O̵ɖfP+ʯV;4y`c9S<1*zm@flqˎw %;mOsuZ;2[nTO8lfTeY"k5(S*tnL'kU﬏Пph ]~DXEȴ۝'(97NG+Oytg.ˍpU;VL7d!omz:Hy s8إnN,ьVSj$A:1Ʌj&l=l4}N\t44 NPH+Ψ3Mq ^C/|.;(𦹨zzQ^%NfR Xy'(Z[Uc^0];mzĥD&7s1bΝ+|eΖ"4 '䧅%OI1$e 5 lfz,B^zNTЌCɴ95`6OfHZ ̟zeI!_Ab3Bz2:0+m/7r::-dL댖aiNW:ﭓZMfڛޘţ$~;ެ]Ev42+"hA5,߼6G+}ʧ}x:.q>K}3.)λ" ̧2T6e` W"v{A3wW-lԎehVTwV[Cgk`rX_u]y{X_Gg\sUVof24ns6fH'Pu,l,x2JG]Dmfv4(JL]u)9fiL䢃 S@o3U=ab1ftAx 6ygggg{UifIM4u6Ur6et'<vL.GԭQ W:SEoO#=fm9ׇrfsS?LAǐ xLieY.MLj:JG\O &\e&{%|I2 k{_2o0^?P 0V&R]*R@\/ WM^S|ȝjY5ǯ6㿈vluktc랋d1ˆ-l"ƳN&S;5vձOsY]]3]Qu:xl!zFUj0ެUj0 f;`%C$8ynfZz^n&REkfNRGbjۗvHnH4SR~#Ҽ.҆(fVZf%> 㠌9ߟ%L'ѮH4:Yuӎ\MunW XA;\eS6Wzؒx*ώPޣZ9my# [{;hOkv.ᏹj7KZgZǮ`דDC/>عc^.}Cv32H1 :KvfcqڊeݵvWk`&͒]3mvDK)e?dm \ j<]@`F*;;5ś䴳̦ĄBYvNyF }m5E&z@>b1svOfd˴x']Ua&)( ]ߧ :buʚ18+vl3wKmhnjd[9 z,lYg&S0vM؎:f󓮨Ng=UY8)<[^7&fN6K4uDRr[K)Iu9QuL浇l$lϬ>\Zm"e!֞j.ܼ=β lWfG5O-lju6HӼpv5B.kLyF 8Y,ry 6 un͌fPnf snf9d:ju92Zd{jgrpRR 3zy:[*TL7MI/$=wOإmu9\Lnft2]{Nz#a,]5oo{ѼYGnvԍrCXS'1YM]3-#p1sU:,;vuӟkLivn>ƂY] t`sPvdyg6vg[;V-,6og(9ۤ\Nn#^<m aeU;Z'~03Dחe<9o"fyg&^?4'mH.9߈wUgjϒdNiFw [BeJIU[-`$:4?XY_.}S_0&t]dM:Kׅ!D/Ybr{}M({QyM %DfK'/ڄ.Ҙz ͖wGHv̨=< 3b?z>iɕV5xSRjiMS/ N;Z%GKetl(i&ѴE0DGMbfē]W*[Ne_u̇ԙjܬ:LAJRjO$t5L]ՕElns ͐\٥!vոԌ2g/%0;etڑ:GڵכSutr=Ӻc3hE^!Tf&ڳlr&_9 =hڭwzCʗ]R}j >fr>;h>+k9WE Rf WۓDe4NdzŗBcByg01V 0io!.'3s n0)n38)iu/H%]5jLF~~Z_i <;oƁ`o,Mhf Xͣ0fO#qKaכ5`t5^& 4Ӫb9Lp{H#$[Ϋϝe{d<)w< L u8FS fۡ#La-k=[΋`]2׺?LQ/;g=( %"֤m j羰oLE] +e7=weR|zHt|Mw33>qih՝ux7o,5f6Y:s#|cޚftd<iY)X%iBr ;S[ hg8xc eHa?v}Y-4Y1Ts5HėYt~/b휹K]QYy֫eS]0s >]pٙ}1@AH=JkzX_ȊFV=y63lV݋~KMr}v#dcmak{2m[z#Jleh4kW]WN2հp(N|y<AhX2ktg8+)N2˾~]t2Ny@ [oLNQ c2J*bG;j3ƬlMXU7DvZ:i!:Ǻ20oO4ҁ .2LteYǓ/B6u}|`{5 {aazVC0x\Lkk.던Ѽ)] g0C:knY-Fa^/gjzN:hl\fw ÌGIMkì|;Lm&pt_Č&.;&.|Lyq~n!hJrб HWšI%5<}z/r/^EeSցա[4:i#G+d~0ŰyAҦ !=wXh,Ocf )NfRwژ9W϶ $}(bk{{ %aU!kG<V3rͼOOZ><ͨÍr53]?D~OT\R53r6뀬 2͜}a6-[/>P㾼F0fUu:A׻aQ<2.L}.Ӿ<\e4'TV%Hlf:TJ3#txHVaEӣʾHx7{jgGFKo&2z:PyJNwZ8]ĥr) {-.Z 2IyCŌ6O<*%Sr>Rg|ϲ],43O i֕YnV!FyT󰬑1EbpGwSũ| ­]18-!9[P̖q{KsVLƉ ti҉Atӥ]47v$RCDm&7Nc5úEbW%S:XͧN.9]asĠ{>FKKgqc%;5:W=y@#.cޗō\Lw4`Y&va_B>mGfx1Sۺ ژcMBI{M?UkR)vD]Ν}KTٹv ,ekvg=3:\}V;}vg2;7XAt =̜i[k yzo{Ocq1c>Veŷ\ pd=,^I`@4;ټSM{Ӓxdծ?k'V{Qvs{ӡ֓6n(ly5h^Tmׅw׋3]ygaS,tNygө~~S#;-y̼T{羮ecxysD6װ/<25t6:1nrcvyg'TpRv;fxժqr\g̤M1~#]PB$Ll]Йov&,R"ꐙsĝx2CK&d:&v@`k `O]qJ0ʥʌWQ J.f{d-Ȗ&foneO}0RՄ00#38usm?ǐ< +k3zC-6OCd} #{>S_\>ef A%i<*Ab` >5Yڎv9;5^ԮN<3b}?7xo((Ǚ6ޚ=a‰;5Qr4طk)nqn bluRfv:[UȆ;:wڹホ!G?7oM0'u g̫Rζk_-|,QYWGºMy ̮e|;wvuzNKO#2ۛ6L<.ڙ Q~1_[0h-T  M38}\\`Ѯe="`,MtL5"ӗ 5Yrmu?Ee~q6S3>k(O)6FݾB |J{".:7e1*x~~nAampNas? ,ֆAuzg15Wu8.l^r#aTvfH, : YiGOTq>) yaYQV5m.:3iX~`Ǽ[@'ښ;qG[^ ,p3Ou |;X0&ھiUzŽ٥%t{1#fɂAv ԩXӌɉ]w%ә*퓣Qb攆Z4njxkev!?ԖRjaiLD#7tc"VY zoPUcE/i_@h~ˁ23r;a@+eP|`6?|hިp.eNg|c{zM7wEn\MƌR%(Ҽ@؆Phsxf9fȵbIt $*cS`y,,Dg3x: zr)^S] 8zAWtSC|Y@G`9JvDCk2aۥԠ6=v\p+}f96V8RG `cGy SJ @ xzFێ4s 8贃B 08 _[<:N3kg4)Ss5"\"6P D CAij*}P&ub(X:wriq\ o*>am(cC@M΃MWN X/J_]af+>Gw.OgQ@^~0cu0)ȿ|yEyi#ލmU.1bo=0SHn\& qnd"kgqvQŜ,sأ-V敚JGX;[ġcH CTk}Mt Ss}uD19@vΔ8ɪe{tQG,]YJ(7iÙLr3TC2UªN Z6V06@z.32vSH9 /8i#8o( !]GPv*'bt79: ) ܮ4l#&C@)͐4 oܗJ 3U,w-s vF( *Hwx 00L|~e k :2/ ' ee[cpR(Hm=?uKP"PW+zNVs byws'jpd~=%lO;9}t\d59kࢪ>\]gXIf^>'//Vwrq?v,_/z:z mP;`[S/ޅ?f2'H1=B|,sYI@c7\VƬڏoL&u Fe20+o!`ְ@` q8T),uРK:\k\b: m|h}8VI;u _gtp\vv0xmcP Y(D1 h&=Q"KGpnW&F]Ӟ3A=T]eÌö͍fpDvל.nH j%T[\q @WRl#J)\ 3طY(υ jrK{^OWBAn*R-!)%S`-=qms_:+2 ,UQٶEv_遹֠ޛzFkފXs7}D[7'}?xyzyqvv\I޻8J>2qRJynt1\K'DŽdFFIN6-}+̆cؼ.er!T;Qu7A%{?2e5i@V\(#_(ٹGKl1Ρ6A8Dqsb /p-/cL62 5t%4K{ʋ<(|@~ۤ1L{D@A2 (̕ %,wy~{74l[}tX!v{lS,n ,/{͑+&=CYA6Jx )+92]s欸a gPDjm@W`DcAme/;%MBR x%F8! 48ٙ\g`CHF:=?I=;6'-#l$\fOP];xASl{&r[{.8sU8wr/hb.5u `2tգSv3tRHE1.@yYKѥ8=\NӼW[{ibI\=tc#-_%bD~D^ F1>;;,7bb '4KvO.&lx]^K12}͈Jѓ,}2~Pehz-|g`)u`3r0~ޭߦw?oLZE:G!jւxnhVŔ('y!Ǝ%Etsʈ-A6E\9[xemLe EW*nzY,:ɚ;*žcݕdx0 L`0d0YJ:|6є HЄΣsc#'[k Z4(56my.)?VK)d( ĝ 4Xvzڢ|񝬐e #1 4|&s u 1=|g; GSHvCFv\OT@:yy-uf7l 0R 2k!mA!$bQf[xܗe$<@suAm 6FhO~@P$%qRZmw/V"s _ux`|]?ҡ`]tYX tRZ %S"G'{_,M*@d^j%7M 2n-}3#??ڗ*g{\G)RO;t޻9@ y; cAӪt6(O1tVFɎVUQah.(G!XX5̑8Ԧo<58WB,7&JRK*H4 t"M#+nQ}3zDtu ֐QxC+v58ڤ`k<ƳB>/vd$d `L6$a׏Ssk(/Uq_V=/%]yX$bi?U(~] Jۻ(K0\of\ߡGq#R)1QR^LSFVk;Ck0RYзb$enF`tº}xꁄEYKkjV `%l٩FTAEe$Uni[+</pBJm;?n w:=:_x^y0 龙Ǥ 6-V-NQatW1r?.ȨIG9+?[ӑ)S?넙eyַEzf![`h얢f ô"JrSl5X5i`C+3G28+ ƴۍ\DzKdR( *Im(̱Rx : 2$̗2WW4ngkjjoV0%CoBT})r0|![4#=#n<廩, :_&w7'HsT(ihvDr}T̀$@, %AFZ^>-0/wNjB{b?}1ɕ8Ͼo} WYs b }jVMXNdU);BN&Y(%.;d(`Y{C Ý\[`܊ e g' DTe'3ZG0xL.DM^(FB t0:{G!Zv E:|A)^ & @=>%,` N}Lx#CyOס=(prinC0da{t+E^n;(_e@G4FɧuQ`SSag-7L(V>2C<=Ü/Բ__ۿA/.t?_xt仇ω:cBhs21onyę7hm-mfLe$CR2IoAa=>8+LÜU*JyYC: LrKb4,2fo%85)APz`F1j2c|37 }ܘY F]f|v725'g~,@YK> CVj(eC|+k!b qWBFE`|KngvžW&#hjFR#_`m&y "\;{mW ޟcyՠl.o<>?t+~߾|ɏش.6}G/-@ѹiU\„.׺&+7nj@m\5 7 ŊYBvT]ITr&0Ȫeb?F UTf/x ͐V~J괸S`0DJ)PȅJ J]r& /\=Bʉꇨ1֥jo{XJ}003'1J;JC^䟱Ƈ%:"'H5w:V3n܍u^?HA|$Ŕs|Z~n{uĜ?ۖG(g=-;g|̹nu2O}KAɵd]d]mw,XMaA&[ *|uC\aC& I,8'q/ v* 7\Lɠ;R,FxՄ鳛BBiJMAfdjRLQ"/ڒgGEm)T|'O2!o/-1z h/PkKއb'>N-fuP`ԧ{Y d "ǝe(CJuR,4B= e\nkQfo*bng0/阁~W:c?{ 3#.lopS&>h8CH2VKs3bvpJŽuv L2cG/G"v/ͬ}.`PNWNtP 5 \B&ǂaԴd+%2 ӨC~sfˤ "GROhzw  2~!B@[-9\R"BUg.rrݒ.Pbݏ #A Im(x3ys_{d~]պ'eN?xie-hs]e]2_~[+a4^wlt}N%1l(tN8@@^]x(0~ 7>#,Ǒ[}Q{c@gDH$%w*j1JƐ>#<,<R7&3n]i]W\5bbpBK)̨:!VVuNH)$9ƅβAuc*Uv]88 62 dętarXn^QN֑"%j۔7wҪ?0T0>JoJ7}<|:+rljνՈ Wy*N6b>7O eKȍ4Mv:>¢@Xp\*(Ry[::$@'@۔<,p(yx8*v:(^8 F0li2NB*nxCH  ILmY1SyR c"i=ȬkKt HS~%.I Ǖ{n!= .I /@74y\OB:GwR D2ir)Н(˩&J9 'ӇI"Daiu2Zrv,:p{:D`IN5EK^^%8Fy=-.nP;`dYÄ #5t˜L.<ʊQ;E1%J  Ȩ1os٠htC,d D*-ϟ(D1@^]sɤY.rr'WD+ &O,tܯwF,0Dp0'Ur+o;l#0׿l23-8eI'~rk{X Qx &_p$s@3P8̴%FڥٔJ#`uy\X0ԌdhJwepp2/"9d@lqUix6hS)7'07P2Md%ꞨOZ_"UÁ H[y'QJQ|_t)Oqy2 y0MlI}ܳȊChM]sz+^nﺺ80%#}~Mra\gfC$Hp n]/lѼJgJ1>C`L9,i|!IF#Î۝T9z)؉>XȎoLJ?$jL:HV2:e(" * +doU Jc8"^IGN| Pw g'bM;Α1(wՕ_M@9J*m!#N*n;` L {Y*ʟFTKM?8tyyɛͿc)Y,+U-.Gn>me'KyN[XA8evm]bZQ^5N~Z/<;PW©oador )?6~2zD\o}3ovb_ b8(]r;.2h 6`Zw{7a "8aͨDT` "#=#BG-BL\X| } 2xuNc56y#z0XCt0уw, vf" ?Bp0# }Ʉd V;e0I,^heT8e]*vv@.=R#)`1_!`QO<8FȢS!H{s=܎i8:g(VƜsLA4xlg TAkHšK3^Xy>>I!ow[#%ٗEO>$_8"b$Fy?-y/||?L<|1Wa~^6= Xm.ɲ {a"2I^0ۧ`V:n.=y @^caGgH2CB];Ԙ$Inc703,>P#O[J:f>V юy Jg+f|-i[0ǫLۑ,X! TKo`-;ƭn%Oƒ0e<.4=;uSvFJ@H*2bC4- e< Pb~[&SqыS?ޣK^aQtn ߋ"1 t[3N淕pT߭iO[rwq@ԯ]ޗʐLMuϓw8U-Ĭ͗={x=q>*l#2ѭ& 3;H45k,0A1R qL _NJ|Mil2:((x٭ S _`Qv r&;Xe^ eUF/ZrV~Isg[w),86b(Tq}Z_e6Hwn"Q-ŭrlצxr#,Qlgprsk3X7f>Z~@ =M6e [anL ַi?g/=m9ϫ}(1^NvF%a&,^|`q.~w"8һvmDg_~V29*AL7\St|Vp3w0aJn"rtFb:!4ToDSQdbd#?BpЍkAӄP*W]r2X{(#,Ei΢W7Wo=ǁѾ3[,97cԏ'IJ*G%2nC'-(Fʻg-l捓U&p!wSF쐯 BҒnLWW.2} s~h 0RJc9.rG(ЯqsP+wv3C,`wLD9΍@+6wE<Q.II{"\ΤYSҎ.ct#,:`x]T:Ӿ5vtgmT2ߗeN*>Vޜ߽W8'{19MےL NiК2Oo__DzK%XpdZfn ۃ+NOz`i0߳eE:bH뀃/˱ & 4Dfp?#Fi)M|CY߽lWaޓ%f/&PzPrI .Fa1]){hE ~_) 4Bt~ls8f0eVh7H'p2@ K~ L9?dhA}nY U?E0nS7!:{&.UV2LQȌE$e#亥c:uhB7O m2yKJj[ vД@-)jsz%t$<]zfz7st]]Wۈc9տɏw0NN`g[f ӜR^IeǗW"VDac:2&Sv۬[fN *>a}d ޺f͙P47FбEvA1zH̀-v1?*=W);#DJ͜#높qwPq,ut0cH@+΅@6=H<΃:P]z\j{3Dt\bBfPA6@`8J 0F>Xo[GM&qm(UK/w$PYd(?l"WL`ޖ;}$JaJ 6r!NSvXVdR񁧻ZXA< eܗ? #si}qlOXK/_d=9_e^x)ݪb=>|_mȖm41".Vi}uG:4(%PP@yM Bj wٴ x pŅj9rYۥ򀊁}7XBNGG#Wvi;@L DB N(2d;̯*t:n7  Ͻ Hj4P.%z`ߡ1 4UvF8/Yԃ֜2NU+,tyW0+@1V)= oqX4d!`mgvu-T[5 UJkW]5^UCDY;:˪*%u m?XyK#% `:z(](elmDu ܸuDH#(l4P* # %&49]uڜk;z۶j/^w-ߪc z  GGTS{-rXR2n1e]7j/6Jx-FV/1|p'Gjg +ckHd_QUpw6:eFTQ2bύW뵒˰ 1}l 3h2f|9!cL5p=brp{. sr8̄ S{aNY_<U3t֋ CFN1#S~ܭ?i쓹v,3| S`-]1bD֒+%qKhYW'V%7 hSp؇bBJ\^FeI憼r":sQbU3 %b҃U$%#Zvu1?GJ6Ayp!S+ZQx\cB) sQRɋQr&7@܋ف'(D8oF ϡA"(%ZHV[R > et0>R^YC<>|j/^>r'La9i[0t'?`~7M 왜_&vő߬ BHdgcx"jl/J RF!4G8?QoIiX0'*AU!o]2Mrv:rvXmzyz&8jPsB#R>wŞ{Q;=!h@`'# (@%q{JdH6”+w` lj" z\&F9m8ѳa- po|0> t]e݃d0 4jЏކ!&>>[:)xCCkB)S%2-ZiY$P?I2ZQ0~w@Ib>'qrtë䂚pEf ~2tk(>UfBJ qwqϛ+J}2Pe[x_>~_{/o`' /S.GkznnFAD-΁,KGGZn.NˬJN˖/$Cj&f;Lit|2ef 0Q1u4&?+ `qzh׀sAI}7JB>FC"VԳ)`X: 9fcLԀa(&l`146 ܁ ~ A|}@2g_b]rL|3`NeT .VY EN#c Nptu!HkT ߭4.5]3Bbcqv#tb}\wHbM;bf燩уauHmP.Vdŵ[˸V'4}x@˃0` < 7Fb//s0?ey]ο ޯ/d= %TȺENv}o`(b{J`X"_g9tᛣ#Lϛ)ZfgjTX;rE/jT4bdyg -hPUIq+{c'*T(B= 1}KhҼ!Az<^sXe? O ,X&((z``3}"!gqsq< veWr:v[9f+q$tDa+ .l:u^4 TyBJ(m"(Tێ,| i:ƨx{^O5}jAe?8Ꭺȃ5o@q?xضi]E|roQZq\e@KI5aP+oo^I—Qŵ>7_TPE"BmU<:SvcqQȍO=}>@(`8B9 2[הNev=(pg7-㸁{vߘύ:Uk6#SZ@A>7y§Ku"fiH(Cq q.f%cR0x C/~'mE=VqrGeFc<ҞռD}ja(]n&?$s F2gy.!L `f LcJuLU@PE.c s~shdu7P05уf930ze%?V I)(i5]`σ?>0:ʁt!ũ@6ӎ%НD QFUr7"MV86A A7T21*3J=S$Hh1xLO[ٔ?筹qCY1ϓ -`Sђ}Iu=u_4ټhCi\7"N2% %\jAk &CcB.jЈF`s(ɸ}-!x6i`#IvQmr2%qL@ wXd2!U2Ш;4gf1@o^Nol#0U"Qa%PNZdI|IF> ͡X^̌Ð).TNmh :8肨,AMٕuaChʏ Wܙ()Q=b_jH*Cvcl€NDEG* 4K ^uXkv䒤 rDmm=6wpv`(3-inwpE6cJK73 44o]2z))tZJ[  \r=02?6My1\:'d}Y~vN?a^?mW?k+߼s1 E1WE/t:yJNnް=\~?FBjMg%52pr2j?L  8887r@n΄+ Tlm49(z#_H2 3{nFQ=oY VAo:4+ Uι)yQ-ËnDе+JX0^@Nq;35 ;<`V?hjk@D"v+<8lV Zgt .;EGx2A0^ q+05P #>6V7508⬦$;쵂RPS5#dYd8۲9O{q.F`ʛԥ070!P"4.\Ot^ȼߜ:Js`Gϋ`yoI_Ҁ oX8Ts97 U^nTV'H~șM6C bc|20sSnBs 1n)&JXzderƫ+P7Py`@8% 0e.g㑆DqdT)ETARPۓh򁲓L9qr]åg6%JAݳ+S8jGwRLn=yEv; z9=hlAR3Ei cȀ􂥕g):s7%ߐȪ;L~!:̕J16.~DߑV)ԭe>dt*U?Ol-d](1v\j s{S%]7:? uk jvP4FE\ D-(c \L7[HbG.ʊ돃erVz&Q2)gWJ5G[!fB˯bl$" ~1EJREQ>jd' &Vhߤ}BWɭ /Yۓ]H4DNxDohC-hY#KZC%^AM3SJȅ/z$j~%u;d渫4ƔCȋ@+\mСhLSƝТR1]1z-֕Sa;X[q*~4_%nڧ! ͢Tj=NE% kP5N9)mXnjhM]p$@tϒyvr si'XGm8_dL'-P`/|\K8K3,MזN)uJo) CXN5&LȈBXy) D,*9txp39 yY1ziQ"z@YaYÂeqL(ֶ[ j' 'ߎait Ip n_;.pL;#(UOvU~W㿙'OQ4W] }Sj)zoxj^ =3zNP[b4p`:rH(q m%KLQr5FNE:ȴwN6ӗen 4KSabhMY42V~7ʚTA-Vmxn(z<*Rhj;G #Z"S$ymf"j@OsVaG &M6%8H ) ;Ӎmo o[2 9 E 02aQG<-c/䝄OE YQ6ŹrƼ.JsK(ꦰо zo1sa0VNJ8D9U\`\a{ ?hosl{wAm x`ΟY/[aml #O's1-X$#C(Xl?ClE[?LR]FFFFF"H$D"%H$DD"HdddkWt<ι'U͛\{-y642Ш⟧I%zO-3RAlGi:[:^X 5$70Av}̫X}h:09 2PAUhҋ%3- ϛlwZMvusH6R'y.K!<:2=^nV%'W56P"$M|!n\P%L&t|,O [$Sym-_@A MAq̓AU ޗb4PuJS|2-by35搪-"F⥎XDV7Yz/&/k,=~Q{g4afy^E!o< /i (:̓m/SGs55>( /:١Z`A$n/+d7of CbEΞc.rpT1Mo&b}N+EW?7pځX{{82ey0SDiMH-(=:Nt Iت0AK&&.,#ud7QT(0TDNdZ ap~&n\&LZDn &en*7)GjNjd0l;>![eY A38|tFVP%sA.{gFThC2z]x,]N0 s>ٚvBUW(idS10>a']dHڭ3W[@b޺.zrpn k->v'uofx8UMlRm} [,+Gqt}ͶqTًu9([]y>2'sˈNlRd/ W?6VD^8~iomJ5皿Tx.fσyAY@ aYݲ9#yFFC1UR@I$"UO:t)ѐ&)7!&6c8p`wߢR>7d1*4bBFn[ue޻;^a@?4Qd)5³nRx!'4#GCN!}҈aOr3](`!ēĘ4x騑 yltO`W#g )!;]VI#!7$-N("nYgqc۸Z),p;v$l^_%z~FTMg]ȍ RLRaÓ~v{xu޵-dWr}u|eȸWţ'9^$w0g[ᇫGF:5ӿ/D, b\ORyQ+ƒa0O8>`87PB'=DNu ߍj&E-KWIѽ"XHU5s 4U:e]=w>NYZ'% ݶ"Iusb53|Z`/u_!2?a&ÿ`ѷ_LpKO3cK3>5׋;ޝ{u?c9^xힿjybp0r?Wr -NnROx+e]=yj-o}.{7M?ݼ&H'\؛ۣ,ʝ .~QG\iDP;jڣBC4t)ɲҁi# c3~aic2aȂӳ51<3 V"n)pW/@3dũ@jŭ3΂klvY,0QM 7U F+sӥh=,d݈xD NwBDl֊i2e?!y\̃кd"98oZpNNlv|+N@44>@PFu!}dc!zNHK>o/fŝ.[~gr8ſM:_`ҳ)VOOfdSD;㹎'}xiN@ZJCg:̅MNɩDjN"{{!/(.S4~˴'Chx&uӆEEIf5#_M"ҝ!۔9u9 Sa!NPc*81hJ Ԣ,5E[/ ykhX+tl5k>Rrhu$-ێR!s?\)UCT=||5vD[}tcnΐ#A[Ӆʃ-3Deyt"}0{ ilq]2!3wp^ܱw;lw\{0iP̆C=3t=Si H%Ia3{x6R/2Tӥ.4u#٧oϖtKa⮵N.D: 冃%(Tg}rxX\WvOo ,[UIN@qa5l:9B2 )׭$nL-hSs0.m Lo ˜ZS T0C>֥ u5֏.%S6t$:!YYCc'Լ0[q:z{#SdR̊[oRFd68&ST)q՛q=VȔ[TF)OQK<Pz<_zaofS6)iXȆ(s iDᱧό@Bjy#CU i7H[w3{cnv*pGS krE-ǩW9ȵ*2Q Lg Zn^.p i~TCj3jë2pEܭXo*R^]7ݜy6zYE;U6=<$K6VsN0?\F-آРal6!-joPysqmpA cOwfg,ďfEՙFd% 3[ϛ.4ﴛ!>7^<ߌz62o{A5Pu?&A_kw_~˂|r`ϯ\~bwwW(iܽ_>VFs-z%YJKerig~Sb[){N(Y+)9=G{ IY'Ft|JVζE/8PQ>E/'i[y`:EZ3m{ !,&!|lJ=<"~3kRz3\Nj"AA8\;@ڸ,Uhn%GkIp }=W]hƃ!t1=fbC395'8읥LI K*R# ^vzO`c#`?> E!A&3y]I)_Y759p .Y0 -nߒR{cx-k̏P/:#A,~egҺگ;Wu2,)&x/%%PKIV5\h(qmNYI``فPm Gǐq3 Co3#f攻Ⱦ^Y8wW.ۆm/}wBZ,3 [v2ly'@(WpgWp >8{^(sN.ya_6w+׿ԷG_nSo~)kRx u!dD*C"pYVe_MauxAUG6Qt#RV ]5Qn'W`UyJ"pr|71cc j:Lݙ3@;$e]}r?Z?*2Z4D& Dx3Ml=A;N'jOy^lZ c<rH;|[cN`)"wQ;&p 1Yy1ulAhsK E9o3ͺ\3KgO l3U yeć* "`/JG ÜCjnVң+\;%u RB0` %:ʅj aseNmZwpt2FJL^@uvPnKT\a>tÝ[ |1>:;P?gf~l[o3zҒqu fÏ0] Z;u/sy[aEeevhߐ# -[znX z@giQ;{-1sP%qnl%UkzzÿZ63lNecTkaa7tC))(s7Gej"B]q:sɺ?`nUnK:-v#UC6 3sSu?ဝy>$fa=G\$c)^t6&eav'5_jD}AZխӼzUIȪkjWx?!alx뀂~(*7䒯._;Q*{eO S_P=FW6O-_ l޼CC觏/p P@fT g#恝|Y{ f&CI%1. !0Gkp;\FuqH,P(nCwS MQ"CVFh0oe|C"[ E^V2Hh+D 6WsCk@Ap0r|F+C ~Xnq+l񝻀*JuR=*b[W0|cA&v,r&,T2]:: QLQ 켌<$ ,[y%*c}&U˸J]dWe6ڦkRv~b;x:J /7,!-ُ0lN/͏L?s2)>.y-˝]} &Bmcc[!rPmk.]BMys`4Mq뇃9MG X<٦EJ2R&=XM.A{tB#Tdv?H"*)2JQ^*SF Վ2R}8?Gӓ5r eJMG.:h]\']fQ9f]CgG0`FNYk'IN~$8$w2R]͈ҩ@P}<)䙥 N)S*~@KKU7N:E7lhf۽d[Rf؈:DmQkP3|b2ޝX0 [jp^ҝ)/=p%7gV~U!l98duiX k% lăP)bSwjgJy`oUc3X\ҔH.-.|7+pbP0$]Ѣ2dj&ti?.a_ 3xo Oz{V,6+ rV4|CofDKl`*r`xAS ͉VeMA-vY/kk9S=1 fFI$#;y;lS ]naQu)1r]DrBӁt|E_^ 5FBC T8Q+ܣ C+V `ڳ)"BZO*%ښVc5Z'ٲ7KC1s|ޢ0EyʬԉY⾮W@3.\IebZ9;PQHU 7,>h 17jn~sN ZZYN )GJy)4zI UWz'T~|7(E:OF]Ǚ2A)-/}BWӫ׻/~c 1:s$.JCA&ۧ׋cyea˃CY.n"$H?ί9_`>W`CݪPй|FRjT:|4FkT*/#34/Sd95<L 8Ps,#<UqO+zϳ*f`&Ga#둵h| )1pA)2da*gz!<ހC фپԞIbӬ1 '<>Kcr`8q%*tj)E)IG _*UJhw~I)}ZI;]8PٕzsEO"qXⱇo8 o EMҠmϰM}n~Y|/0ڄ]A?|F]i+<-;>nonރmKƄWy8Pm>Ȣœ@<$́0PC1egWE_t&)vTS{*T oN[K^`N)"t?uՉ=Ld qLhCĖK11$ d˗®\̴޺J]Caz0L( Qn,00bm)F\1J5|Q6 GXa 0A<ٹ% YO^=Y LخEDv<ۦx[ ȪM!+%Q9FuMeVx81!]n6M;be7䝤0p?ajEtzV,zi$.T} ;_Rqm،l^7:2FpEm_>m:.o$YOӬD˭|x"5OuYIz6bVq۽ךL,C@S]`kJF`P1Tn$]1 brd6A#wƂ1OSdJ:JFi8cx,g!pKW $sU}",S5da%;_2Es$P$ߊ;Υ]:n^fFJ9`HR@@0S u%w0qwŵ]2 6F:it#BExx\ F} V trq!oG򘗈ЎGE]z WY qNǷsN=@k]rGllێm07Uu]bZA[!뉤2$-fp_m=w0KeH/"b Ӫ+ qQnPqY}I |65@ѧNꯪLhsi.CTmڿܠYyI<Ku9sNƐ f$x4cL # q 5({;;.*]9#*֓=JRU{hJ#^R =p2AFWɎːKǬ`(b5ײ[& {G3IbS\m?jE`HCc4HJMv8Nn_mLj-7yJ1Jw9:-T"c}\{5]MrUTg-H{; >Uj.S^r!\"YUw n2̎X,N;+Bmun{]4Di *C|/*7ON[ǣ)PPdq5UC*rHPŔ^\jvZ2<3@u7G-KT:>n:msɇq{nW_{cBDƌ,qWK0.r0n謾0I3߽\?~;f2j[|y[xG!eNcĵWϳ"KYvf߳L -L}\E[|+)-c $#YOfuERdpدvs*;E\n3I 9Q"@Xh*j`|%6€݃4RɳHG9Bp='2>#m D0*˓3sNJC (f 0>U%:hgY(n'aU pCR!io`Ql.1gya;"7*d<r+怘{ g4҇v@ I$8tVs364lW@ }\x*n1V6aAbJ.@: k(Gޘ5CQnƅՔmJqs9%]i`cmČ'EP4d5;Hvgzda|23ySq]cg[TZЎ^x&[<d[^xR?h¾ I.߾~Mg{r|>ҒYɟ9[<~AYA}lSXef /SiKf7ѳ'T8+ Ƚk#O &rvQ}h7YP+(%@bEP,-C<5sVrHo&%dđLDZނ:aRp(-<!z5NjT~{m+.;6ۇ"E+"ȅ":߀k'T1.faDI3pŹΐ$W!g橌rS%~ڴd~qi l+;:H(4~0ɅCB9!fHh f& xVjJCفjb" -U R 2Y޵I3-s-ԩ ɊC[,> hm(>e m :31%݂@X)Lg{ L1>)ⰃD !KdYFݨ0 mx ̨2;ce DJ;4%p Ppndj$Z[N ߧ쮬0ct ֏"oS| c@=s0.IΓ8(VQÇJn6aKs8=,X,v~;c\" xf  rT41ꑢȓ M\if߷ pqfҧ`bI_Y賟`~᢫:-"Mj 8s7B@o>6ow]ϫr*ax['GX..)^WTV{?DFOm=S@o׎W%2\K5P(I2 O'[ g2%FkJE7*{a~CGHs h/c% ջSIEa9!}á8EriD[z8Ubĺ CJX}hڭ]KOR61 0Ca<73:kwĎ:G9q"g7WoҞ2#Qg:,'Z0`~ 8t}w~/a763g *tR&%kʐD-:<1ɶ+1"d ץ|X{V*0.ߝOcHi[IM+%Nj[`QfL8d^خ_&]`,o|SRoZ۲5zoHzMKbcUP\qJ3h m xe BB;J:\k4 `P*Zoxd*v:Ѣd AL"䤊K Bϗõcd!i("<1t zO>xYC6huIOq'N?s{;Ϫ1f[dфr;0 Ky^(^mga<Õml_v..(mFk9dX46౰6RMWȿ|3B;p0XS3ﮏ>??v7WgU{|t@1jlyqH%) |gj13B*Ȃ<.^;LyńӑyJCiA\\zɐdd5 (plLzPY8{pd0)ܖna@1wJД9ř2& Y#xr5e'[G(AG(. A7٫2 h`̓7gqt=8h\ԫR,mCYcRI)\-pނ/n"i%D(z XEen0RPң&<Ԑ<*G 9[yt+J>] yӆ)JHߣH)9\ufe~j}(0Yzgš@7i*ҩ~z"[wrv:~E!7? ~-8i a+.rȁ&p{ɸ N]83:*C*9(8͹i!R%YfejUM *l}@lw `GBU Ih$V,2d[YDp&=$rL__,!f_[ř8*OJR!IQUKps{&ɦ螡:/8*YV;@*Y" : `;W)As+8<S ;Nq]:e+B^*&M4r4C-PBHBrcPBT`A/վ0`w`hEƔq(6dw3^b[krՃ؆FIS@E C" b_J6?8Jf^V[,wb 񸑀h r]  _(ब-@JlY, pfJWa7_9#X$1aʽztp0] >#V: ?ܟyQ4o%+/AI;¶x5uDG ྡྷ0P2: 0֓2tbwVJYB BP"%]_^C#LOuT,Xl9SzuUaA|_950Lc`f86o$I m2mJDalQ=DhX2m9Fb I&Y(#eCzdʏ&f L5R!RM19{lnLrr0Y`<&ӸByϧ8WbZ|P>&T.$HMpMz0+P_4j&yP *n nݹp` 9`J 8(ocdu0-P}Ekm(A* ˧7,.}ϔc:M zL/UI됢#2PYf q8`Ԋd`|ib{h0,T@Mк x/nVwUI$6f2iY@DB-D ~rA[6̄~:Hf1eV 'VN_ x76~o`:*LR,G|CூARƒL47 . zXA|%gGm[P|轭Z VQ߱U[UdA\9Fo< Dt0R^o+LwQZb40#nOϷ@05k[W_{Ƨ_w_ԻS\eݧ =s}j} ;49CLv%+ŸUF BĽŕbR lj@/ gu8y}Bl\''aqA Hj0X"uNU)ԌiGG1Zօ.{;TĉɎoHIv.=4Pρc.3^Q=6l~%G~ Q'./\omR1Fڏ_|~^=lq,"yYp~Ig=;k3ۄG6s)d */]gOpV#H_eeQEҹn#X\}[E(>kn=T HfT,u,NJvAVA1{wX2jB@&m\S3@SBR1&rϣW]A8%g,S$a݃S[ (ڏO:C ܡ[fG&S K|޽QR@wC,&!8+]ɗ)AUz3hcqGhؤr93M&eO~`dSwRr|8d>/Xe=ݤЈw%p[@ c|Dq`^seyW ED>ygKd6nL$O%\.+ňk5=(=uDZC J@1uWY99@}s_K5 jn3P FڼA}}OQ0}5T =/ ~\.=N:~wwl33//)W1Rw.9gmzZ1* +J kͽ;[HxU(Xە 0*1 `HCTGʹuPVwY{8@0!a";UDKOyuj}Uia'/qnA9V8g;A0d`HxNH7YroV#ԊZs+^p~O\;ޗ|읰.;}R`qV}]ΛJii}>"Ѡ{5ܔ_ /mƏ=ƸR̦`~fQee^ߗQεgi"qg)SZeCpeq=U)SQ1%k׋DN&5E";ؘaAF##w1 .:A \_9ѩTӸ0u ȃ/SȰWڑAD+mm^#}g%r,w)e\BoQ[|ֽoDtT/t ZTxov(gc.Qyd~{=| <.wGQDܙLh"tۼ̏L@kհ"Jdf2ż߷Kuow5BښUa6322@ȝ>zp}t^|xh4c"> 9u x# !m6KLuXLj*1>|[= GQߣ@Tbw'tZ!QqUIzkHS1 .~cV6LzHq93/NתU+Bxw}Ž#_ royuY~>>uToQlҧcTit ~_ӏf LmjĥXfG9zE~oQ>a`>`#s / >UB%}T@s$fby&ն!os@`s}㤰G:T Qm6hE,d^iߏN`1-jCu>|E23(za¡;`)W[y1,N=2k:~6"Yzxx|ʷ/p!}1}[1z-oaoowjUЮ/z4LjҘ7lU%Hv f'#w/? YyP tS! OYt8Qa#Jt˕+6QebW)Q|Q^˅Sy=%<Ś ]$S1zC)8@? k9b&^}/^Xo-+ڧʌg{f T8 mvK->+b$a_cZ[]Dq2bK7g:g 6sa2XXoL/>럲>uϼ _>n#v^{3%Nj(1H^[_>`0lti~ec13]+]ȑ5;\(Z!dۨ*{7z/mkUOy&kC^Xx6ށ>P0 {ha$QlP7h^/` DW"81Ԑ]uU( M `@wA[Ik|qq+=)$XWӺ.xXԂ[+&\ʯU\=vvѾ ǫLT\Xl}Hm|%UBJn{}(lzfUs6rMܠu$S Ņ? E%2`7 Dw{0lO l>ǰžyP3 S=|%pQRz@ u֢jJLڛۿ z@cGW[.s*V{ŞKi`^Y$wWזH~SǍBPC֙3¤N6^ϽkƑ߁[%}5[iU3Ly[SM_>{m|wtֳrS/[Ƴrȵ 4 EtRHQUWv?_lhy)fߩשf0.: EEA6z0&@ Fj:H`kqL=Gվf7B7ϘAhqC3&05eŻO[#( ^!BTw6Wȸ6uhXT?aZ j >;cszC] 0v̈́wPcܙFөu _ng^n"_{ ظaAAAAACCCCCCC@C@C@C@CCCCAAywvw>pNˏh4<%y8o嗖lCDID&)SoXkmLh): pᑰdI=]PR0SQ>U.,<:ld<!}&2juuœQy֨: <5 r+8ˤ7~}tPN/^n? *0_aZ]00Y]{o ϟ]*2ZIK\ {eU Nz49bGЗf-{Si8[bgyRٳӼH۟6Ē=c6!Qc5Wa6Yi{E)( Z(m粵S+RXI8_& -YGԲ j[{@w!a k~:ԱY)MES)[벤t^њGC0Ԧ8T5\ k;fkgDcQCb30^OT4P)d= jl=&hIRhK-$<\Bӆ3G٠UHxtƑ5@Z@&,\BI;  ;Y^mrʵ#bt0ziz$.Lbo*qgd{{^V]}7RK^:\j™sׅA+Ghj'/{7{s^nYiiGb܇6 oŠjF%W6vk8yĈ~Y1䝇^dy^Mܙg$?xJ#\jVLJ-ڤ}gŵf΍$Ѓ&1]8[)*ˑȦ!lChwNۛ)Tc dd``y3Nǁqf`v;٭<rH]jt}"<<zmr8d8Ә9}YY,HV@SңwB2 LMRFvO#ǶL`S[,5nv9ѥ~bg/<Ic'jJ7w}P2Z|'h\0M(gn' 1ocH0)5ɝvKvKQ'ƏJC=5Ux yװƟÍ5nMN]8*U?&4j`*v։v(Te֬kzkA 17ؿroTE 1Q5^h]j&6SK%9of;KRV`)mpw0q@ K *ULbxI㕁ڋxqcPVz.`s) ;PsHӘcf/+# uE_) O8A= nK,GQ{ǧ ޗ:cZBCA_G]ILj6ިfJii]eJBd]vJr-K:2W*:FIUEL턇?joݼrk.1-W(Rf9]L16xh^"RK5|+rc*E/|i%o>}̓/|a*a]ǥbN(s[ߺNe(a 4al1dց䵠SLMnj92/9|cMaȱKTaav ђN*EA8lJc4a W {!paGNY*3u,Hl7Fee BȋUi5N-}O!I.5.GA*=LG@\.:\Kwۧ?v_$pgx(5POMp!0Pm^nHÜ5Zo cv&.X`{5nΪ&uhuڽ_iXNXodLPddZ d}y I[u WwԨo$ ]N$"qT FQ:SidUo$j0cFڴŇ־{Q :VBSwXU%~EBZIwX\' UtC5\lT #7]}'̜&TÑɮ˭UH% .3x͆["$\LCOXz1zSHgFl15€-vbO[K{5/;=N"'y(s~|\,[͋i?DIKj$[2gV4+?Kx.ve{NEv}9fq:@ؤbFh_W z4'byo#mKE#V˥[ \ [ O !E&]x$&$r=3LS~AdQ.ǾHXboC} !5 ̓v~ yKKBHӌr Ǝ!b$JPoQpu_ B:`Xǐ b[2YNA2T]^So&dApO)EׇٹY v#PЩ8#.EL$vAdbBE>Ёܭl.))x_rMsE-nr92S::m|atS.VjV'x-yY=^QTN]\/f=-z9Wkoz3^*~Yn BBgL$16hch7ssdF̳fFP35F :SaR '؇JNlM1-)xXRK-fi qp/Hc ! ,>2dbc0/wc&q:͎ur똿*8hEg7C7CJJC;pqf+#6vj:i;| _p?ש4B,q?[ͦrQzde)-&iYւp$m c4KSĘHUQJr٦t ]ɖGJ#R$]0Oj\]u?K7uZǢpU3j:vdžȜC-[L'`j"li9֤Hㅗ>RqS kSv!q L8-(BǺ220(f4DSu $u05T_̎ż\,[LNj=q`|C^ GE#Dٵ7hskGZqPǣ.AQ့b.x_?d`l:a8֐k*Zd(9 rկr^,+Ftfa;5%iq4˪7~JFPU}U',T@G"ȢVa3X׃/oAG-=$ &S:p8.D~gs>Q ct/FbiX'PNR q𶰷sn9Ҥ1uvqK3ȱB!Y׵O,P!iPUxcKNR?*ٸ4ۡ~!a톳7Y!QeիP%UYoO,NSQ F(f3TkuT䭖,apENR1+B< ]Bq`Ԛ&؇_ЕSa7VeOت2boY0:xkPAJmWmuhqhՠRNaeK!M9FJZ]ǣH< z]3;JΠ<cj&;{M$CIUeаp{p|Uai MJnOߢ=ȇr^*e2XC)U4ILeȑTBAC7oڮ2[s!ѯ$m~}aU yiUws;HalcOTMhJw/Lk1-HzV([%DFb/E.sB-0k=Ob%wR3nq4a1}3~`'PU w9;0(D+rq0b`j&vs@C ˲ŹnC-FwU9z%[}/hF)I=$ k_,RۍBͩ>6R>Zbfx'0~ N"Y#Cu=N=&|,(\N5:Oz; 鲇qXjȠd&_D60"}? KIJw]LgB.c|rP*y|CjBu8nzBd|3ͽ<ߓv?R% ,([g>ķMe7ɜO@{,e(B12"@4kmbju7@ʓCBC*4EuBt .̋ɟr*ǹDR+; ܃?:?W-FYLۉYWdP^APf\`XTF3T-[ZmMsc4x)X|RLsa0~6[>QHnTVTޑsVa;L)c Ei !c7BY}Qm!1]g-6R# 2Ge(Cpz]샍3 ;|~60ozowڦ,Xm 9z+ zNOIi7$|o"[L&'>*$h"j ,CtfNj%9E]HW:v6Ў^ U2jJ >vj6ͭ[-OtI3ah{?GbLX(xo0460wC_5] e~cfH3e+P읖 l?43fgSRiomNE߂p%;[UՑkB5s܇f, bnRB::.+AԞٝ@-b/gABlD 1#|S-64lyt}7 ̿~o!zx1Rd3_-^-z.gzBjz2V-zLiI 0"ҞYIlWUC7sP=dz bf`dUh_2 .wu)$Y18x0H>X&kM0HnU^T$ͯ_08iyzvZdvϕc 0̗3.nЕR9O3 %NC-ή$,2] q0̗ ]=O?L~ U[a0 la‹|>M7u1 s3l`a~60 O*]?_d +‹|/ka(󓰁a濃?dʫ760 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0S`0 <60 0SZl endstream endobj 63 0 obj <>endobj 65 0 obj <> endobj 66 0 obj <> endobj 64 0 obj <>/Length 132543>>stream xٖ89wryU6̈TJ]ս hHM"B2!3@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B:2! ˲5[f}@"5d B!?5d B!2!3zּޙB|;5^!<9@BPgVAWx D!苄B! L6] D!_#!B#!7!(9o1q&ŝBpI+nb'XB! C 9n ? v@D!Fi0ҢtH1 $0¥5 ϳ RBK#P9_c HetKDn\[P[E$ _B,F:>7BA&߇W~#B d N/7)ba7/2!!7Q1le1@ϸd B?zS;'6d@B4YBy? zpm|R %o!s{Aoofj.p +rOYw$=I gcvo !?nYs% ;߽1B4a O/`(BH~b{ 69BA 꼁@pbl;u1!ĉ1boA6-q_h!}8E)p&)E-!Ľ1{B-3*Brp>\sq-=o z]!nϹވ}$^ًuB Ϧm{yOasWBw3'mO`ѲY!YBwS3&in 3|z-B܅,ǩU2/ol=xmBܗU.!B!@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!B1 D!2!S@BL!Bc] Dmo3Gr,(Rk ["(qa;X,s @vލwN13݁<q:kP-$-P"%!4&oMCwB_o57 ERImoMVIu@NzxRIg[s>C_O@K#@DID,>DT[Sx~BrR,!;5Wwy#)spաͶǍ=|#)+lAG diYUf!HG)&F> ku݊'mYUnm3T[L0A܊@yQ?J1M7' tU2r"kS8~z„iB*O]wfTO=oոԕ:tzRl={3ٚ|b}c@.ǔ2 ł4sbM@4{C͗lK*Qˆć6kF. ^$(tS_(]5 a7{j)Ah '[+k8wk؁r lv;B?Z\k@^W@d v $3eL1w֏sa%`(W*f.y@@,bt B>@,$ag YeƭMe6GRUBD//<*a_ =fF'K.F?di*((= n [>)IH#}}!_u s7eHeB# $赽Mk[S!$. 6ՖL g ZV[KN|YR2 +/WQ{'Dx5`#n~)<1%1@f ĵO΍qMtDj?rlϜ}EiQ31nU :_(GsiQu`C|+P1v`1. ^A42 jk;GyLY_;@'1tc1K']Z@Bk]n Qw>m6>B[Is4b ?XvZPA7I1bWPLqH;&q1dܚE{jaċH_]qiJq"5k@bgJO1 j A^i '܄݊82 l2X]9-. ,GkKRYLhBL4u9;݊TB0=+ 9H}.!k&81'i/quyZ1CG d dA vk d 0 R2_Vd?h x)#?Řξf-d+kڡtԷJMSDr{II s\ЮЮ5S23ᴑ.鼊d7<K5 .( :yrg@aDG $Ln cmqF Ĝ<]b kpnq>OC [f>4'Kq5$nЙi@8f 1^c,8) MRu* Z< =+vQB= ƙyJwe@Vc`[ Ė j3e Ȭ8Iw@ %` pⓢH FQHiw O>@lGgH58j yEo%7N6F 5;BUAk Amǂc $W|H&V0@!n (@/3 ,} 2Emnz `l6S8Vx.o=@l!w/*:yic"5 bc@l K%[].PM6~?s@\sڗ )Em@v=HB֧_d (l .+u08 ĴPVIgIIq-i7 Q Bn.pQ(LI H:c NQQ0^E"]n 1 (= _f 0hb C@|H\Me|sE$JhY? Q݁jV;U՟+\W7 2vu w_$v1$@Mgob v3~iy_^ֻ $^& @zړ%r 1CBW%+ͥ!4t;ĸ{ҬcsQTk&][r@\}X@вO@P M hٿf, va};b Dh86_@zep˗g Kװ/QcnмgPA#G^c I|?Jr쌅@lf*E_h+":@퍡hH/!帶HLwli驁 kqJwu# ˈ@lN4@ڒ/m~A{{eO^T>64ЪDIu{,C?F[]5w:[k5»&5b }M$B( !*d N{ l^PT9hfS@@*PO%7xq" ݩ/N_^ +Mڛ53kNQ#n P" e/֟1@|E 'Ս/a/Y}mg Jb2`ѥ}ZC񙠁$ŒޗEQfܙLa?q})d Ӳ_ k̴^|@* nY(ڌ>xôn7l{_޶=uQ=H/hoenE܁gq+vzz5`o -'Dr)#Ч0 ϺزD&#ULO?{wW@ғqSnh k/ސ` Zc^Րr[zB\- 9o.FoׁwZ q319Y>X@ݪ @J> NxU@ !>HT \gB|.5;:bBSyT})Bd @"t'SXB"b^F"3|gYK(B># BI?np2.'oo]<2!Q[Y7t_s Oxu4 D6VX4ݿ@^aT@ ZQE5n7]uɊ./t*d $'9iB}{ ˟w*Ajft٢f~Nd]0>'VkTk }$z:o tsF;b2v+b%{`E_l /(Bk7e~W9]\6&y}m^g.ύ4S8+dY0w8A9'wȹ|ebO)E'7Zs ~T?FtPCIL]F*FE&ݫ $VrK^ ͏{Jxbi۴\l2&=^Y-lĻQ<ڀt3}gҔn(:W;ׁHDأ·U54 c@=Lzi>b&O3֢͜Bc!65P[틡ޤW)QщZ7א]uMtٜ 6{8n=r E^ahj'jIR %PTE $D" 4~cQTr6GPk랈4-bim|\9f֞Mem3ߓoAki # 6I8(TIT#w%lCת33.KJoOL-ڱH\]~(2h -@2=HS%EHx6vA hx|/ 3!k7"_ФgHұًp*ISd? 6Z@U.0g p!0 6[ jҺR[| tQאd cIX:n ChjYn/C 4o*Mpε:V3bQ+_zD6*yl@ҫ5qή첁'&tڦq@7",48d[t:@X>ư]8o844 04:FA쎴c e81aMYRk dT'ъT8n Cւ1 Cv$:fFtZuP.Ix@h,L dM_3 x'.^B()vh}%vqA/K|ͳ 6Qm<5&84~XG&5] N>;Hy67-I<#աPf*!{EVA1#e?D\ '>` Xq3` V҈X0O@W;b @`C~G.o?uWe/+ ]PqƖ $RHo39K@V`|!Z"2 `gIc\m@$ Q]l W&'NJ8l  W#`;Jb' \;@Wf; ii> So9x7W'cb+*0V{~@vb =[68C ̙eQbl Q92D1 W c@"V8 >@ $,9%i2NpC ,W5t z@V~]BBT@\<@/T% ]}ly}1h;- iw55cIlFW;2j 1P(H&:F1k![Ɠ`@l;C|Xxb Aڞ/>4$HX'AIu=w ~؞H5oQqA;z(./X(rDҺ\i L<'M~JU ҆p?8e& 7kC@;Fs.ގ=^w}#&U9mp,;|=]&TaVIrEǨUy;h`Ra@:9 2ŀ gƙ\WVٺ`YzI7gTl[,G`ر}dfmH@$A#t@VºcLK @*Q34*6i'ȼ4W eBҋk&_ڛ)EydL#~Bk!HWR~ H8s7iWVzl$sX TH~|MS2KճN@ Bl'd,' BWrq14p /:2P^P2H-(ą(M@߃&YGVb/HbM"7Σ63hw4䰃l?k5^y~($tL؁˘9<&R?Plmi8%mb +4$B d3G@ $J0 [1RTMAyzI(R,ݒT8G,g҃t3 NvZ+"`)cκTn}^YG $&ʮ G0V4Zؿ@ހvٖSq؎.#S.؞yYpV $ uʘDe  řb.U0l#+=#O^Mݽ 3ȶϨBnL"ć7ζkt^ա,j;{I}n@>mB쟻&:A`vf7RFB !%|C"Fr 'j>&pJ!Ar M`>+_Fr cBU@8!}!B"b B)d B!!B"W_!D`_Y2!DS/#lrB 7 !LiM&=-{BI2gyIx̶N{SSt 1{@$*{^^{Zz,HSa@ c;w{XZB~LUy6m z]5;b%'2KozU*Ei :d9=?4y(m2x^iEBOg=G/iX}4@92;Vo2+j--Nx)ޮFCr#0cSnM4.7n J狕k 0uTz9 Dȫ1}d 3_1@.b2^W=L d'5;gNЗ2wh^i {ށ}o5jӻ0Km8V\iFm@1@u>ȓ;z76WߚMF:޼lw?kq*?s@o=Ums>0enLɵ 1||?K'x6m 6^h5g@S"cA}۴n}#ʰ+ pHAIo6;=5]Qq=ky7o0 nk Wjߝ ԣ;ؙ4|,*]c7)O?``H((s3/5tO%5gpLAf`d0YmDfn[9{G{?^o AOA*D-j4L!}Y"=0;N؀k)`{PUXٱ[5KeH\B4ӊºn !qQ\U/7|<@jJ؃hKzgzV~)a/ީ bB6ء:W|ЗTІ=Qb q֔.-֭}ta]-[=ld@ ~ y&TlÒ F |so DK ^H+ǼpF ;d nQPvaHnΰ" =n dd|A+啝m JY*J MjBT)H%;t\Yԥ18>^Hor r*pA5Iso)Vn7:Ҷ|1u=߶0WPM`o`U@=g ;q_dW٦ߞnG 4č/$ølaO4z;ٜd ^Ky%<` so]O3R(*\cAd\V,pCW@;ZŹ.PX[e)Ҹj[ʟ35,t,LnZ8T* &NS@@ld .`hVM`R7zGg؈ŵ'ɼyBņرpRIePt4BؒCV; ؖgМ݌ \gNǘt\HÅbb\ӗ送C ğFRk@ G񇑁!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b6['o5/_)BİLj_&kBŘHrI^%2!!Pd%d Bq r=q{zD!n  :]_mu!A9߂BP5J'lN! W+oA^ɇ"h ݀[v} !#*_"{?_܅7}Q!>LSkLerX;CB2d ֈ$kHֵk ɇ }^2! dHmKAUP7%27Dg !;3RTLj{޼lb@ 2! LHMV ziòDvgjB!8#ۈҏ[5硁p+ʺ@d!BQ1#󤎁<ᮽ2g r!LHEZ;…>1]c<ABrC A d7 @\$D! |O_\!Ϲ)B5)̵3[ܼA <_^GXUq!acH>|ލ$owL|$²q@s@z_N i|_٢ 1ޘ_!爁e Ǥd+:rns>B2GNoKWl|)])[eB迠w9sOцE'cI!CK( 魁dbw02+ԫKf'v0!wb@.@BOE"b B)na r!7BOE"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d B!!B"b B)d Bq{w?!5Ne Bq d!^zڬۿjZG Gs@f&BQ8]9^̉ͅà@xpՌKEslpqj[݅̉}c@D-7|7$DG-^MsW˽snV0K'WYpAT|N'ߐ+ jO݂@;CfFyy _'tc@>pxW9/kV |KFoWsw.mo}<}E,Xkx(7;XAdi=Lȇ)}C>d ˖kR W<NƶteWV7pNJ vlQMY/6k9g}ww}Z fZND|LJ).Zj F~ۇ҂/.uI4[ey޳iѮjOeM7 1ؙO $#ު9b an@+kqs;~74e2OMzemwȮv[#cEc$@BsEN@NmF.qn c&~n 1C||ȓy叻7Ho[ޗ}cm~ذ4&Lu7%1Bvgߓq6ْ}u?3{u)L[3MDh1a1OVjq{7yys%+iSa|# "B QGS%'jRKOHWn,бPDA5t-!RU'Rx:3)st"l0+wt/Vܒ:m[k4b p#/@?70G*:8#A !x%O^i /7aut[^m-q b |i $[f'\a=} : u ~`X{0<(\={ڋQҊPIxa RU:0h h^a x@Y͌XA b0%fZ^2)يx^:Ouq 4[Leqv=!E_=}*ZK4!CӶ e@@iM42adA_` XFaT./1c?t>zò`S]1Bj_JDd ] hm;}ݳ*7ϗ>æaO[po :s劕<&aAuD9l \I4ճp˴tĴc GG25*o!K֮K YD/tΤ0[j KQ@Xf;XO $k`Tyn+h-lH6 s%ey oi٤ό{ uW~zEzRIu?EmLas2uakn_S@j"yGE"c]Rq=v\yʳn@~`1:f ҜCKg{.YIDV !*>>` Ht&yZߚZ4NCm͞@ȆaA6tb9n =߃yԵ#=5yȚK $eҒηHsW:c FZsI4<@Lxv$ 'Dn ?@_1:+>14]g@4WV7'Lj3i1U4]΃ $\eMMUEj]5Y g 2$mHsT2'YaA,Ɍ4EzڳwpS(~@|bf n n,`{636WHuG qXU7a0Y'ko,- ]2IXqYcpW*Z7 :un oMӦlh<ݕa$#l~/p˯H_HT/˼VvPLSՀVv'}lvsR&u7@~yw+g[ZCZsmQ132$qC%?\*8Ah@/7D 6i [\bd-`L|9$,z>R@\!sQ'@u tV͖~މ:'XQÒkۆzHc|3 Ǹtl?,Hwp)-iҎ1^@`s3 Βv,!ɚWEU'{@L4*N@%U 8Ħ;` XŀŐs u' b >z$(#CȻ $opT 3ܪZ[ }xNhYؖ$(eAT, $^Sn =ĥ Ih$[`⍲9 䅟.qI:-$eM1S&HG9gO6d ]?/) Ugp{d3³s@\S]Y\-ۓ(y W}N1KM?HJ HSAEjK dOl Ī TΤ2Z1W3^E^_B_9&)1Z. z0u; :擭RN]̒ɜk߲ZozbV殠sޔ2\~jbWlIhA91$Y?Pa$P+Qt8CAB$JfI1C(uKk<"]wJ?"Ag Ȳw ~' {mO2xޓ #%>\PpJwѕln8ImA!vЍn p\!Lq25}.%o wd# n^AHA,l{^lӣScB`xœIԑGz}\3kV)߯u6A{&\giCDSF(}צ2Fӫɒ$y<^;=,8@@X6nџ"~`v`Cp'멩ƒ^?~ M'Wݐ1` a."fBv?sx_[MgqޒwȩB>ބq|A$qp;+FW!@m?}T&trw0Mj? 8x-6@owM!Qd ŏD3LKh}=QBԸB@Yl!Ho B!&x7d By\c@o{<!ϱ_)=߁ Dv(|_F/go7F@>qċ>UBsx=2q_:oռzhqynAOd bBdr̆|l 4H n>2@wjG>Ecrb;@6ϓǯۧ x$Fkۮ.dWwӖޖ瘁~v@nhNz;[nFi=yvGbV$b9@b/Hm )@)\f!q Oߴ_$Q@P7|޻N#yy DAI$Ԕ=u[,-7nPN"V2;jq7u;ec ȓ~,ldN&ƑDPOi!2DMI :o 4c3k Hap0beiC@3-s%gk×k pa~q|Zm*Z;AJLnc65By0zI7U9j/n/BO}N4͕gcZK.a9_UxODjXQ ~-)xe˅U9b&t"<|h++{ؓ>gPHpg)[42 [ȮtnU@^uVy~qOM"RInGA*W]8I^@VA2fpN eƄY?ċ֗]J=nC¶-c PLH S'݉Lv\d +@yVs1"Љr Ii"DJ3FPTE#HǢP_DrUټ~=CD*D<3oTˌBQ:q?AiB 4Nyl K9 \㿳q<~.Y%.JFk| W.P-$.-Tm d@I/uoA,JyŮ̳ &RZv>۲\j Kh=Ǖ-<2װќNǐsd`ےod"0JMj\șu%"N8y["e&=;f Z@yĆ7>pyuTIq>vǟa ѰA?&yǦ$ |8:YcbNZHEЩxSbm $X;SCkZ0gh T2۲z φe0.&cr_iWQa\héj@}HeܭNj$>ɒ/(T㨯mPG!tel: |@KBB;{Y8 Z.pΛpZdfF2Vj:2 I@L@?^k m h_1U\?SZy*³K rf]tAMrNfYe$;騁IG-5F)c ~ukPO_\;gM42uªFR|.zA"K V5XHfA.&O ?XwR6+\ Ӄo5,DX v?30u{N|;W{ `|XQIJ $F갇 a{@l@z"{ă.@L5i#p8YN2P:` έ\@L.t`D { 1v5M Q8~ݪ= z*G ( R.KGF-L͟{<05LP̭.3,$̮:;1 Ws0;:T#S\t1\Iy\d/}9`Yx!AR OB#Ur :j DXG $]uG $/簄SIQ3UOt.guI,7ENI>3Nc] @A'hnVܸWT8{@.aX|l}L3&Qt$Ǥ$4\hB^ Ri"9W'.K?@"L> ՜ܯj@Aa:WcVG#/"3MρYAvB$ `RFK}hCer#^ ",Wh%\h v <8qqkUz<w $, ˸5 :̉:W=Oyf1sx†D /ٹ tS`7aP^S[G+uoQO)8{ E@ n8KU@6rˆ'oLlV#0hnt`ڐM]"VX $eX(G%AT 3v_1\eA]T%/W ^.^v҃//te8ؘ +4肋fcA &X{snդN)$s&%x7<^AoV뺘T-u$c  b-PD@b X`'<xǹӀh ~wR:"Z0yd߱L욟%rvk:\cR].V͈$WyR |XA!nMW ~LqL j| Fe}<{YȆ7;]n8@Ȯ?Qo_Ηln?1Y/іj}p{'Q2v皎}10H6LG#_=KCm+s;l(='}mr~2[khgl?ic}p>@^&z2q_?)O8N3flOez2#ܮv/A'-.Mмz~oSo$L/z%~jAxW 9JN~a *p;?/IOom4k8}݂ܰ8jȽG|6q-73r|Onsv?oijCc5@>I/\H%?8D,-.*Q#d˟]ZrCO{p'n;vi( 8=~` Ϻkj{W~\xv#𩁼Dru>S 䣄[)·VcTvw%S)]\8 55*cg۴h-*\w~EL'-|v!]7'a"~L]7=ϣC,@z **jr(  !^VkA dfQL~*鳟BX7<Bt ֐i;|D~6?nTBմ)6 <^+(o Im_;&8"O.I.!/Ύz""5W 7~j%9i}O.ݷ΀4u)N;_4,I&oФX^QpLy̿L 37$^;#ّ0qQqp$c uS nFrA(jJsqbV`PᲫEhg o2\R/W\B靖w L"\A-igZsT\`1Xp(+š|zQhf+Lt'J+N7L$?q M0NR++^ʁ֝c w .jN&tOdd3fLcCBGad]#B3?$kFmL $_أ7gs) ]iNzV qv3AŽ!dw&@L/eZ ՝)Y(O5f\۰2 jR +,5q :bwkT,5q^]QhCM23AEP ~]m VjsǥN@{0mF4ז"WjP3N sm8;}=4Asp:B 'xbtTgQY^@C6 lY]L*v߈5e2l+ ټVUd Sguh%C Be#[f N!׽VNL -Wo!?\(ngk0 ^0$ڞ:gl &P(z{X`(rD8w8BWvrWPwajT00Gv=SIIG>WqM:N5Vhr t*4>QyifPxvczת<ˆIYk"e݉_f%5n-a2c՚OQyn ik%v/0g vF,tS@ rLHei=Z1k .0IB0jRhMR?3l }̔MP r_/+.ikhę!-!8\ :Jgc.sD ISEsрs:d `bAgfgA̿4+ rO0d\|)v z@&ŞfXIYM^Mm}0?@<3lD,'@f+k)7l={[7pp1 32YF=2/0F Yv2bq@B= Pu4*` 'Jƿy@mТ t\h%)tE?$S Rr"myD6@v(ҿt,d&z@SDŽ\@IG $$tP).C8=e P81 ~ CȗVϢp̨A~e]` qe;b GԡN47:*}vliqf]c ȯXyaBCQ1m-*1f̈.#`pAKf@ByIl0u[G  V{Laej]ȇ m,H$MxZv.qbS! rf aW@v/ 9U=O@*R'IolXE1}y4H1g0)EGi4dÎ7lZ,˂;/JXBObSہ Q}`P{H^\D<ݑu$N _,ъpuS/0<%Iw(ۧJ_l >L T ў5O8TNĩD34 Mm! UPn|}604.ЄtQWdUcϫ;;G` Tt@!)pHyc cR2$hU KXMXcNJ<רlᮦ->3?b x#mt5D\~3HhmHr:VPo٤ّ?H(7T *!ECDg AL9ӵEš~hρȡt\>OGQ&a\\kZ\4B;ym N):=ܞ@C '*7>*WB25\$%Yd6N$ZDF'^ W.q2Ce⤯ f1RZmQȡ>lCzZ‚VV7W!A(ؗz\;ؽ$ hLR@@$dʖK)m䊁Lb@!m"ѽ@ZDOPuotb=s$#XrMo +뼨"%1ʤ6h_ݿ~nlq5dBE?7~HX1O ~\m%.aq!rOv3Jbj 4[ 䉍Iv{^ڲ t[Ȃ-/H׳3B4?>ၣN6OpN YTaEAa1MNd2սہ`_Eb WpaA#B$ 9#)j ^Dc1Vn/$P[ːg͟aKni ;MPt0֝Kw'3doMnhJq#@m~g2KCN uյvt]HF؝poae-f[]3w+8wJMߎ&)Ա!7!1M#jsKLܙOyx ڔ|Tdo?jcKK!Xݸ-U ,7?zKB%| gnݟ]B >WW>4 >TC_BT\BT\ҋo"B?![Ǎި!Dӿ5]CoC"x1= 'b D}.7} $&=H?Wa OǗge )Z)FMH DW9UWGQi ޺= qOProTȿ~gpvr|Häm82=źbqץ;J#yjjun"qp{73cm={H/47V@=m79oNh^ͫZrPGoȞxRq~gz߳cr;~$9^Z|jvL魾%mu^M.T~t{}4ךo1Uo kQ;WsKbn{rUa挓-y-w5_Kkqm$UCMDTI? o0Cfz$vPȫM2+tKf[}ꋷPmv+dV4 H1%mާ8/vѾinS w.2E _-4`G*#;l_O]JɭDE~'w~TYtH !J<7O:7j@={mk=1u+N8Bɺ>U8(kxr$ovviTx=zLg.mtL9^BMV@.5kcҝe_|&ߘ6eHa7 Myho8MvݵB.܎o.l;gXHHq~"pY7X uU6 1i@ϗ d2xD_&JTXmsed1xIpP@u6nSDf IPk m/pPZOj5+e_x'VB]Q嬩w6dH$ɶQ^h 5)Q5ڑՉDv\_6(YaC+z␁gR[(L ؉kސIc5x@j=ieWc@D\(HIidyyj{02 w# n9拁lW[+70qQ1fBKd@|/ +5g YDUƂL#KZ6M m]X W\~iVaܖ,5ÕHv:JLe+vD@LX[KTC{2jfɊq*1ySB>1n%@Kq:0f @>m/ၫGdTvx]Fv#&Sюx1r'Kuh(Hx=2+QGCp N d[WeA2h C␗Yc x_o -²1t 7?W^WVg^'θ@,@m@NV.a1ae l>1@qƵT iKL%W<&iQP@BvMb0z;/70B<-u* IJ㫐,btߟKQ&Pw7V Đį6"4K6peʟe F $X2l { wlHEdkۿ"bOMms خd37DG $@ɋ=@jBTǚJ2d@`jҞF`mK=5LK,^{!;XA!n|^Ikn @r5\-_l dl>OV,W^ukg d'kOœxK{%^10S ԯtcZfIy^ SIe13ܕ $&k.;Hض,է= d$zJR7duD3*+zԪJ=ǒ)AE)5ad@zj-Dwa7c#'(4'5ji8հ[MO5fn@ I o 6uW LFVCO"u ja $.**!aҟm 7B4PgVDzH͙4Е0N!uXb:Gt `$al ]+12-aӝvH"Wq{ s .(*hcm Ƙ9a@pb |=g `Ưa7¢ek iM@rIbd?cI0mxB\H>l`!u} 700x"D-``YR%f D́Din(0,:leՂ9T1*Tj!B\P;N|y@iXa!O"l`cb0K>=TӉ1x/yk4݂l͟ȿWh.ҤNZttgٽH;I iKK-\/w}u)"r$0~d;-)n%@P=%2gKψ3 Y?v-WEROyq c%\+.oZ\eEwX;AAM,خ8n#Nt`g[e:/"\_nk%Bo戁߼0 B@BL}  z]!>}W!DKW/=d Bq/7|<#B܂_K+ 77'M"M9EOp{Rr>z@%5s$&aݩKfr$W2*7oi @gݸR95?t9A:9Hw 0_u􊙭DzA;k8Qd*j`ؿ~xq>:2Ad O&Gf!ᴟ(ً@&Wl#"}Izvo\܂ȶ(1޽H-o( uCGQ/2m~|Ȋy^t@b@wIߖ́:mC` T.9Ӆ2Ía]k dk.=n14L .vb3­z_b=E RR+H9@.x<8Z uZW|Rr|- [#LQ SOשTo@(x9P$壜$ mx;k[,?627An z9GMq*~$' 7A$]0KL3RTRKr%e7 U+b k`?3x3PȥVe=MmK 0r-(cOhh21+n2 paʢv6yuuٷl΂uAOswF} [HپDrO ` R @նOcx\iu@Pc^̽0. bx2Ru+^pvWXH.'Y32br@Jڴ0sQ:0"\1tW;(K59ry^7'ی32?7Ry$3jGZQJ@v40Nuc&$xL}͕Dբ֦ȳ$ %FD\CLM XV@yq)&*fP 2 u'Sg:vޠDDBM;` o 56:'>P&Y1)UT0MƂmd&QSr9$r1ښ S8ґ 6 BS njC@hҨ ݤآ;#:Sh׾נ8ڎJ\{v`^lec a,dYm$qy sJ77ɰ켥Pݠ'f/?؊EfDƗBh  &{x3eM M[["S AYBAAo@xAH .if jv $qAf/+n q|$up^ê,(>B4Ouil- D?ӆd|@ibwMhRiߗyvס%qaKn| \mu@ڍ*W;$P2$M-qEb 2kiה +Bgu ->@cKRE8HnaÍIbv \@ıeCt(ԫĖU MPTu; My/0\{^@I +0gp_ doUma:oIA}CE1NhVo\(r.aJ+ ^7' C HWol=oh>[@g1(ne& vvL HdLJj{, >z11(ѷ"=cq%˲Dk4CrPl&-R# <:HnLAtd" &fn+ث$L &=zH˩$HyA|X{M l^2 c_yN5 D@aW7h1/əz7n " w99qsmV@b%}" ?XJbQ?CX%)ؿ Ѐ zd#?O h- P)wW#78B'1' ÔĿ¢@ l} f৲&ɹDn38 Șj 6+D8Zg 9n\('(Dp`tB2ΉR/SھsEA@B3rfLӑDd਀Y#صD:rvY &bd0T ݺ.$6ǃ)r'ÓvGqq="z"dNFx& f\mlJOS|/4J][~ lʙ͹G:[HHm@oüuǭ!9XIgSo9: ΈՌeMuɗ _Y1r]h7o# rR-l?Y@|ZDo wEjA!eqwަ;HI9vvWmRԷ|wxW|G r φY /;fyeu}0Lf]k(|tuE9" Ë1X2sBS8A)7ΐ8fJ@$z=+ 6 Ӂ|x$;OSzg YYh2\cq48ڣqB@Q\ RCa/+2ttB-*fs :{3DÎK0:a?ْ]-JljI& #8a~`3\h%%K@mםޖ_nW0{b'vt ZF^\4 p!JTGIMMN$ f ]OE-|V@ %–t7ŹfB`xفlFRP#̍ƓH6,ZYҦ4|@@?W[ Sz{ePd,œg|a0}מO=PFC?mPLGәFQ Shi4 D@{V4Ʃ>4eKm4/OE4鸺V4h4ǟVF8WS>Hh ҟk4Kh4ꯄni4p'&O- F /DM7o - ĻG)*'oZ@w}xͅ, y% }h Nӟ!Jx/ ޴4~_!_?}Wo%:>##/ŵnwåL~+gM0ƾa@xf8Dy``_:.;uy@㑱߫?Vā7>ioE-r||Gz>=$sD p2 {oG\7.{K"'*涓wtnh5Lm01y?n߯3ƮdᚑqZPh욋x75\ yiuR|S*u;.b"[%\na2p0rܚ76a"i dxY/F;gkS/[+1bqmmux={Lx?*$=_ {i }Bm|\vuV;lc 7jTW[_ǻwY"׆L.Ʀ^U! l?S?f#,E_mO|.Mԯ|S#i%Pd|s=Vϭ1]&{&f>1yY\p}y< cJ%![b0]Q@>\+Kųre;Ey$ߏ;cȓNLmlsS*;5~f Ξ0Hf1kY-v˸>>.( p6+Gu!؈Lq75/_~CM+&4<0.;] MH\ptgGK8X)7zJ7};>dMiʿ=WD^O@>T' HVFW^A;v|{us\J140;5K@}#m呬 'eԜ7/VĪUlW#ayXHḴA\@)x4(E2{[Y8ap-#ňw 1>5I{v6+ ^@,2mw0㨀PF| k3u׎QalE[7@>wqWhEYIE^``P"PG^YNE, fxp%E[۔~$ Ҽ fb.WNIm]'$7VqBZ-bkֿEKyʝNbhTQtI'%s/ "wE:!Uˬ,\P ["a"ach# ނFgDjXAE@^@3f7'fB@\Z|B@ %ymܻU `a!]>W@hF.FSYMIп*#Ckm+HajjsIm^@B*Ժ/][@$ ^@xXqrفCG,3}-6}D"Q RfT:U;/U[1WUEJ$ND덏u, CHKNvP@GI c?" E* He3EB%n" '>U5%vDB32 8* HlXnbi0F\y8}tI~W+gIAN b[(BX@H+&X-EN’E15t8, Rk4 7۞(l9Е)p4Jׂ +JA qap ݳe-7)Y-b{P'$ b)IyY<# OqnvmIl}83ੀd^ypH!%ѓ4 se)!eݑ5PU/7fʍb,'Udl,m2u 9330TFD쯭:(kqH@\&G+BJZT8bؒ! иDQ ɕPsI}Œlh]DO_ Zǂ}? f FC!zC2M5ˋXwccA@) R4WL ڠ ofKxwPes )Y_B[))ePF9}Ct3BL2ʵ9m[-C1f 4mVO8?%  ( Hrɀ/hۮM0 #;eQP٫9,l:5 ϕR <ufcp@@e|3 Ԋe7² mġi 1]XɁn^'H;ֆU K*Y\9(pSdLȊ\ @ !VgOOXh-f0*\4U~xΝ݀M+s(mYU9Vƈ.X&UVOd(hݍ}ߪыX6 K Ә̧pG8]-V?n&htAۨgƖxJ,!|S"6~Cg99 D.4?%UhHMXӧ7eHT ltHezz&:0UB߁<|/wcJ@ Nr.hҨYyZ~`KG HsJ8- Ur?~ShiT× yuX@qkHk1W_K&[@>k܃kd gOB s|sȳɼ予OBL=Bn]- &w['¢Y}:o*<+ - EL{wg/% ֥C܅BQskVmreg՗Ea\"Xdc9EJH]"J^+|g[,?!xB(u€Hp =2fo ȻkV@.KU| hW2ZNܬűtM!KNJ +;]ʁ 0~W6loȻReg Eo})7A2s9ʨ;ׁ'qsPvs.GLARNhcH-~΢~7ֻYc0Gx3% H >l(&-bKCg vۻY?Y BEnrb7U=v9Qzk&'&0FW.܂ H# ׭)W;/aS҈t8l-Jyiݍ; /Gk+3\g,SsQ17{ X=+/k,^%3HLʌ"O眀 % Dk;`N , ai=[(э$O3NZ74^ Z@('8NM7Pmq2>,8Ұ"n;EiNȔ($UK2R@L|8Q0g7;X(W@b\bPOJ@5( C).}6W _8>w?O/9iijC5% ;Sd0 oܜbr$jRM@`LR:is5A* Hw.D7 H1O]&@{)$RH>g \R!G3 ΰS+ :Aߐ C_*WT8rJeLx$MUO O> 3RBuP@D'FW@ #ħ_b{ hd13T >By38Z9F4D̮RQ:NN:vn;95ݺD J. k$is H$Ij-! Kb)zoI .}$DANΕpx򈇘WTa$)$% e9-8ݾ'ymDjDP¯)%T&mFR;’Ԥ˄sZ4DQ(} fǥ. lwH !tR7;ayA2MoQ?X3 p y;vT(Y(HI@T Qw%gc(LZ@i|P_~G %BP@D'uY D@@)f\]aYO6B<dz∝qjHM q&8d?t &ɤb-DhVɼ(h,esd2VAv 9d pU@y V^O4zL?ֿ#?/ d,6ל/ 1$CBOw Om q)$aS-E1X$ ٽL ږ)+=畐V?_dFg(0}(|I1c_q6N5@4 ŧ4b_񬀘6Y<"r沱\ŒǿvsɮHD@lptR4.~BwYI7# 44OJ%^@I8xT$5p RU|3tB_Ԣn'xD&1yU:wPfnp4yA~VDx-y%)5uI*L:g8GG:^Ab,#M?. kE`$eP\ 짛 z}h5:f',bz._N5_DSi$y+RLV*:Q5vSd"U(h5)/Ă,kihqs)\OԲl(]|?+<}]͜_IÕ<}r>VAy&LS(Aκ3bC Y-܇fq`W&TCf2" [^gZUւ^ (OK 8b췲ssETA/H HCUˎRg+`UXmr|T?`q. KsUF=e5K<\|͕&0fy4OxOyf5إ,=) HX@jڪxpgf0sfl$n|{Jzߓ^@G^dJ{Ŕ]AܕSA|뻬=4tbQ1wq ~&"h z;PP Y=`?ue3'݃{Oj@(l ߘ7 {=Dqj8q B"čƷ$|]~eKF{F_X4*D(7G|q$F㏢$BʪsF6y;w[9IF  _Y5/k)yO_6?{7/YMB@ΣFc- !BeHz]5rBs#QfW4muiY e8zTi\vzA@E.q{ f}Z@` M4Sx`HUO>Yz~ B{F@={/ uoz ;X@f8Q@Gx(5"x - ~xIM=9) J1B;@Z@/ +f J# uuɝ\a<BS Ⱥ爀ZL rkS0Om@[[QCcCt2 Ȋ]2zDʠ5(fl4~7RFheD|}Gh4. Fh\WFh\- F8F8O߶4ODu>Fpڿ-q.~b4bfu_m~p}4Tݱ_. ҽ}- /@̏1uIɠWSR}ہ_gXuZ@G9}E?e RlZiiX۩_-\G!䃻4}rtDž$ U~Wɇ훎UmCr>Zﯞ:'߂˜{s;W?bc߂|]tSTk$~C@@+ ZKto}#Yl1>}yҒ1ys7Ru49cXO?)`km V̏qQ@>&O&wjFO2~|ݛ|1pky^@f~I@EػI`_VZ[4R>c7kv!c?ɘϝ%ʔ!_B[ y3c\O *+|+dgqB^`ymviBLniY5+Ċߋ`͵_B[ ! sKv^U[mׯ[>v'Lݦ{( .v|f7]HGi?! دxC"]qᬌI]ǚGcDH޸fT5IIl'$= )>.G `d HDFb+ڴ DάZ}>D?!23[Mt@O 6^{Axޯ)ffUHpK'^"t $K{fA9܉PtR E> {BE~#,C貌$C5Z1mnht%)/Dגn"NߕLBP&>hIxODW/6ݕK՞ހB9 _)wp<$UxGdIߔڃL;6UEXJ862o6&DLXT;);Y5&,̬ GG$#{\㣛bL"VV+K'd#`}wTJCB^o\r,"uv*pDhDz4tTfkfex!&PԴn].byq IȪ1,֮&'~ ddgHh̐0frƾrB Q }!)-QVIvg0JP? jɸƸk5;O^ޫobLp̖baxN 1ͦ@DJ ߌ!¯%2|F@زD…X)"*^^U$[uRddsyp%A}a ;' eU@vi\#,$ [eV7rS%  g!DDψO}L #p-`G\q!I8dJ0ɸ)1H^( (õuf'?GOql{i yуWۉy }erB?%b2-4Eg}$Sح >UuJhT2Ȣ.dĨ r3cwU34A HFp5I^D'w0BdBLR8" 0&V3N5{&Q- :q3 V?eW Hf. HRrIQ@FJ S"n)uFc'D.У"Cy{'cA Hnf? O C@%#g:xX@f^fT*ch! >ؠQ,~ vf0=W@b&xb$Aq!h꿿e~I@dtIk, 9Gu !T8ldPD,uD]*R pg՞H EYK?$ * Nj'7M^GbYʌ<C" v22WF>4y͍,Џy,v(3>H W$&$9LKb~N 5aW iP vZ8.ط&ԙQnW+P#Ӛzg7ssB@8ߨl +coQ%H,Q )|eay g!e0_. )}( , fvḀ)bzO\\2jn-B=OK{`U/_V$ 'DH WO?Hz;sia|d4-iy Bd|4r IR Ő'dN%\g H;^Q&S Q`\NLuFp/_}J' H!WeAq*c.Hs3͢ʹb\@vQ.alKMGbHrD:čOvA@n@r pWL9PabDA>% XTH9% ."d^ Ov]mw(11R ȦŒdسT3$\CxPe8 W* H/6m#:s!}6Z+y?- LԐPK7) X$) ﭬ@va`!,DnBć1GE-V/􃾢$Kՙ1ɕ J\Wό)srO%L:wbhJ"yJ*d?9Q(L^SQ)>PĸH@xZJ҈ 6NJ䎣V)NK(t c* ,hm/wR/ȏ }| Tg/BEDv|x^c$Bƛ n9YO H\,IXJڑ`@b=IqdIT >BPyIB׃ze%yO&B89~}dFN!A(KX@ XyT&\DGVЀQ4Sg~|<çopҏT?Ć" XmiROD2~@O4>0npTv\]̛ Eew|R:)БT/ {c"'nb*zP!o@PKE@kvt 64l|f6_dk'wjaL@ CE5hDA?t*IgGSմ:衣'Jyu<|79n 5=0x(@ jWU%p_78\B8&= @ 6^aЕq|Bg|eʑm2 ݥn@XrZOs|mB}Z@ };Ho={9 [ƫ]z5rxؠnpOGO8E#Vgm0̣LF8~h4D Hh4h4h4?WFx N# Kii4W󿜒߯^K%Mohi4HOUB/FqIXb7< KOsp/~}9Ͼ?ڧGXg1 E)"Կ$̺xDKWZ@bT#NI~c;H) - U`[uþX{-aXp-f ;*gt' .hNPI+ȩ]!+ϗ9[AuKqje7Ӭ%rY,f/DW8` Qn7 HnmǼӓ?( W)__@Wz9t1TA*gO-^mƄ3O~@.ƥT:]J8?%rO *=6 52]@O" k78Y@3Xi^c% yz/7,wvc(寴+;gTlЌbxelm:J8O5Ѿy_RWg@c\``-g~9kcBf0B0m-QWԸO 0#4)^- '.n$o)jlD%{K)yζ;殛hr53ؚI|q[v{B*/R#+W'zwB[O ԏpY/K>h9 +"/k9bMq/yQz«SX.q)XY}S0ǞW܃/G%[,'oaRގv{C^b*"k4s:Bnp Ɇ v5T fo զvN5Ar]\mM@jReC^y: `ʭUT%XPMN0>LCP178[oˉD,&iې .-+L+``L CQoT@{^ wof Z;-HL $;Csw%Q20%6}_$N9uA2W+qdSO,YB34O9nSY*\\8$:2C $$8$ xc(=E@j "CWسdV1H鴞Mq@Gw3bTL5Y c5A0+" +dRd4n4\{Nu]E^C>91弘]`ڻLgrN@xjd)"Bi3ax%}eյa'f.]ScݮRQ" *3$ӸᕩD٨0Bf=I)!G6o$ CLgѾbOv* 87&͍w8֭ ;pĩ8$ 17 VBPJrU,"90 f[G,y'ނ6MF $ bKzqQuA]{V͗z隀fl9) ws4- LW4Ȝ$ ,Qũ SNkNرQ&%?(puVz\h tz,+ENq,b*;)s`^@bޯG59NHF+5D 6a1L 5 p&* 5z*`N@!kyOBF H$  8G$8 pc < y[27l$ bI3G0I2/ yP@ FΉ! x'Q}VzW}K4e\@ת L _,HAA%T\7_p#ݮO zr Hsi+e%_Dp|4MXF! 5J$ J72dtj'-Mf\0- I2?! ~A#,[f 2anu`?^, P TL~H@0/,+ /]=`' . [fRLJ*ϯ"pٔ0e_j'"3mÌ7H7Ri_BJߣ: k.- [|  :BaZR^k& A/) >6rGV~U@L[TNqqI3NQ$ĞtR?]׶ރ-D" Ÿ2{\YY R[3k6+Yh#Sn$ɡ0( &O+Xe;, <& 0jTIL$-7^ӎ-P_A; o9W6_ 8!E;f] (q5I-_0^*a@G'4w UI?2|WH@09qT\-5`deETdkX} *#8_/CKa(OJ@Z@,_F}jwl-a~:)Iq菌GSonCן1aGX Լfɠ H{8>! L5XIvDJB7 A|ۺ6# .о0>M  ;%3ƘTN@<:`,0-,$[e^Xۃ|c,axB@22 tJIŋxVDssH3R&7@TtS@%=mWք#dWh__X,&}5#Ӿ;y ,)6]fs6vrPv}?j6$gOaۨ?8g<kfOJcYhNІlm6E$Cmo%k+8}2Wլ@p%L8sAW}SѮ8[@md:ql*zQnН"=^}KAɴ#C*򄥀i6HV߷ЮCYƥq3Ih prFZ,!VWϓQ2^VzTV4F/8(vE 3sRDž ȑU;BKᡵ{Y{W>;G )!r ݁3'*%m.(%10\WcmI< q“[x wۜ*n:) p#71zr2G u݊/\Hf9i`XP??U4V3͑b6~8s37!0+ pEU_'xG3iHнmjOAFA#<id Y1Pߋܴ-dz#n*+5~=C#{ƗajGn[xмZ FN@sTO]+V H1 _t$ε3BJPr. H&?>|E#H;Nm˽ r-. R+w^AsJ i -@ dͼ>&vr72TA{ye䅳DD08Qڈ0i(?mX2 S::-pLe X]oIa_yy͔F|DcJ@5/E!Qp Pj;2D"3^UFvwbv%T@耕7uudjgΌ ,!@E;,rdl>Ra,0J)gH ԒPu&ﴀ$ǝڥh%MlΝ@n !z4t|/4je`\:"C22%L%FoTmPHDGۍS)2~q6Gmz LR{I]XT@5Wp1' @ivb`ĸ"G,W؀EFA/aK h3a0TCrG ^hO HwiRI9ߖDLߊfj-a-e4l !oGT3ƕ㻸-N^{ou n/W5a7a<"h! ;OZb.F8;=[?ܒ}UȷQb"(.ITsO9O* r Z- hrσ6?~,Th w =!o#º~!sSk/8 uFܡ0/0N1bRN{]@/ OfIhsXD) [AlݪI*<*Hpsa;}Q%.;# 혂1VD@dtk1}901TV < rKGB#>/ |)EXD'& I+0Ʌb 6d+J1qgm&򱎠sBN6Wu嘀D:{Ast9 !_) i_ _ ?{i|:) % ,oBmG$R)a0~[LI;+,l|/; 4̈\Tne٠WCzoꉬ}!L JyKܥ$c|j*-iN@_ H̃qػk2'`aoƔ&jbA8|Ln\8A kxmu& b槵: uud%H& |{cR.43/x>SN IomOs\+=- #*ÂaYMD`1 ¿KZƥTxxRVK^}v`]Z3StA[Y<(_ڐpy k_aϽp]V@d.S$ ́ܡ&&8`^W+\]Lkh=Jgbq%o!2~&^?[T,VbL6=FC+ ȕ}} s_e(^+)k7}i@Y-pAڔ`]ob8py#plֶ視wa;f&Oجv?,!tP³(8䉆M7SH@(/֪mSx\R+gnɣqJѕa?4 fu Nn|h[\S߲&f2)-y7sp);ã,Ur"Y+3GH@(B5 d; hQ 6UWn)F@1|ixs / d̩5#ZrHb`rNPaBczJ[U,"xMma=[̧kmfW|Eh2Sdu* 6$^T)Ytaa`L "qcV<%s21Ƚ\p!}lpЫE#:%wFCJ_ڏw^#c?wXnJ@oੜ\:r2B 6UT@ j]8! ZYa0K녊Hcl#z<$1*8uS u[¨\|%Nm(fEϿ$w5hHS)Xp gf?[MeHDb[ +xCOu :8T-f[fإt4)2b@ǩ[}]މ"IYd\񻪘̶3+SW"! SjB;S`tUTMD[wU@D8_șkBOPW|T眛'Ϝ2AOgD̥$=8nhO 2.^D3y'y,HsJ La)-3B/ f6nЍ/Iq#(J< <ÿT@L$Rq6x~cr{1l*F*3v1A ^yZZށ0k)k\ʷ 5 hVRXph, '֗*isǏ;5E\AJ?" gHrW@C@l,'P Sd=JBw7^& y˹dγD i㙂\R@v0. 1րfȟ_I$,O H|J{0SvCxHrCNN@B=wF'edA3)H" c_$ E43\8Kdv\/aXoul. ֏ yu*ϐTG$P\@ȜߤHE>N G C2>t$ߒ@7l.CL*kݼeva;z )y'P:BxwiYD?B@ zO a1)0epo - GgG8@3;&KW(@|9K@0B; 6|:Ҧ;GǁIq]dXK@ƪNUayI"6 ū+%7 لoddr%ݬp|'Uv:GD*(D~J,]H@&b́~s}Mx/# IBb _P{#/pUNlγpfY,1"?!2ٚ$y йZR}H<^G!l71 %cFqh2޾B7wV#*t'RKX G\ BIܓM~,oq'iѸ[PFhI\LG4?k H0 Rw&[@*ۍyWߙ#FŸh4 >F_g4 Ugǣ$ >esn8ຣ:P%oç8{OP+{| - ?Y.'?[, _rqX5+ꑿ- >zgib9r7_Q<|G:},]ЇʘWH-ߑjђ:~ ŗ܁x^_@^brCq(:?O1B\ɖ%X"ɵS=#[zs0뤋N%{|1|~|V@N8}>e{6<&n%G}9v5CS~0 ANf:(wd.eQ=PrP6F{b p{dlu ۃC券5;x :.}J@.PJ+7lI?ED虈:`s%xJcT."b$$n|b-`vQUc0b9Ir=GD$ZLQy 1>m'䙇2feiy qu2p.mx7j84mY衿\ɀYσ~\@0MCZ=,<ƟL|;.' @:%0]XTi%<ȃwl.a (TӐt|s >z-\#cee4ΪM,,t9r&0g}o} bP@vɶ"4&- H !fe D&콩z'cˊ.^,ל_4`)*w/j3^<߈jengp D#B, gmeL HH)V2E .LDk}YڧT_Md9„p& XTu~ĩU5Y=2ؑ;w4YKd2aYD4 8:r^@tX稿9u#~J iۓ^# %FF|8A&hY@%x;[@~1KD`d7b9F+ Wc}X¡y VĎ ϒ@Kz^t lBǚ9o pa?C@鐀d 7) :7SDq1윐-u~B@Ȳ>.<758^'TOOX/N"WPuDZJ7J4)e8oHFzU@xJp)и12di[PCR` $6 T@hb) u/"jp0ftiq#RSxNő]H5Ec; H CQ@ϒgfQlbR}ҞZ"o ׏0U=?z,#]'y1aZ@DJa0+|P1 #¦LDX 6!& '-_ h QY@8yul^g{ӽ!xU:ZA$'FSvYeak+X;ҕ*d@@T@"Q9, 2ai'qDZϏfEp@i$~2+ țmR@dn.bp[P*hҲqFUɚЌ$T5"dv5v#sާ)#B* #~(|L@$쁃 ؏{]JiڹZHS⬀Txvt+Җ ֓'|Մ]c~<<ӿ]awc@A9+ڝ &!O9{}<>_G>$NI[Ҽ2Zϐ;eo~ϾK8 MH_s-cb2_fwo@V%F ߊk\ AJafD&|N?3f_|Ψ 񧋳h H?x;vmFކ;2h$ }*߉?0{}I^d7AxW}`f>]~ t3=|ŃSEX\f'A@x ϻq |{/@ ']> u*^D?uɃO=3l)<#o1=ʗ HqCߥ._,y>qg<=J@tLލyz02l^ pe5IZW ș4|/<pѽON[~n4X~־Т6ks+A ~:F@o@X~J@.+{${\5g|;X.a8+4~Vq9P@fyJ| >q>جk H0bI'K㡀[S+0WDw K58nhڈy*9bݜ9(]g=$ i58. d\g\8{zkE[gQ׾ݖ1l3cMl~mF@RP> ʓN">( h5aU7I!D/m$ _=)@3¶@L}mdp̾~v7%J,4Kc S2)y>L1q]P蒦*X#2  7Tt"~M ġʵfrzմk]^{.ӇEr>{{DF"VeS@% #Nc/"h:+7fi$ C~D25 j( C~2in bebWtoiKH"6m~"q*]IIr |}$p +hc-eԈ>;Bd*_a # K?}.p>'O H,0޹{4XH _^dRk-.w)fC(k;F#//pBG++\nA)oތ16;y@BIOILM@?fʀ^, s >YE@a_& nl 2# #{8oWuXբt 2m!r<6cmwPG$]NL@H?haImkDf*s1.ɆXn fj‘A0yH`,)MnjEpsp1ϲ1sTRtL]1P!%|bI' Jj!ΞG,1}#Q!=9JFxB@*,˒|dyjqso'ia-;xAy7n'hu#{jt(ϩ_c)erؕ !+7BS ɀ9^' ~sjy$-t. ~<+ jt#nֿɔ5L?"&k,A~# ﶪ0P`n$ H$!. 0e00HSh]s8< 3)qL H D%jd`Q C]@Z(28o9fZɼ$&Pۢ<# 鉩L V'g{CT@HXcx; T@kn=uM"\ 0 ߟv z#;v "9#Za#J5åJ h&#\ t3~WҲFEA;ۀZOk?@rfsejv2wfM|Y.E"ku- gYiery&@ug24H F{eGd j'wRM|i~ 2o#^J;_^f+,}$Kƛ&fjZ̴ {|LDA 69?MM"uѴ3x/v}Vdm=ƻ4@|,( N0{%Od޳Kw lLrа ̷<@S,ċwS^PK۾$;N-no[<;{A0?@cY34H C7-4O׼>Q5R_|HR+?JRnJRn*JRi RTڤHT*6R*JM*J5ӷ|@T*OY2q6}=@JҧOn6"pHT:T}IuT)JI\O~qfΊ S]+U'1@J[};KbW4;9w׮kH/[}wC+1/h3r%>s+ ÀcǰR _uiB/\88Է# b> .o˾r=EW"2yOo=p'z\;/ЗtGX\}@޺G˜DB#;z&6\b/VbCg/Yuwf\??K֚| QRsa(@l[Ҭ//.ɶN{tt,0bp'DwUgVhDf~:=>u aMI֊+ נ#ciy߰ҖdM8 ,7^E&pGCe_0o8:P& [O3 ekwX€:(Z3d?z̯w8@عwc2 ]EN B*~?Q/ej 3>51oo:=̡ilM{XSj7abdr شɛ\6yA =[R~.w$(¬8/:'"l63ͺ =t#x"=e)M5r]rh1y_濘ڲ (s5gCm;N7]5ע 9!r>8G> v'ٿ =Ƹ,q~bV&,Fg7o5a8-7`JSiGYo끧 3ja\9Acȷyo)@G CE3]_m>-q;⮩e2fD@po,מl@ﭶ2oDu*`Yg6n89CAXD;]>6~ me618&Pd >&ڊ\' "ywwau5-I0dU?}`?+'sګ7h":;4>ŜŗbX04@N8tH9Qs]`*IG1<5|>Xd݄Җ2uw"E`z*VYZa#@Gy4Ro`z+GzTd&"YT.HamT_)Cgڸ  hҦ %"&1{ͫ=4sHlUNbSKBWoqSZCoQh|w&@1to19H&rHwqQp)I?iW0$Zly{B- q M6g$I/ M];p4Z rє7xMd6DX z&@F 2!/UmɁ I*\aޤnf#@HxW\i0ocu6Jg4]m;.(!BA#G3 @rjXl~CN,x]Ծ`6f׳p c Ľw> XNi/y2pmZ;b‡TQia k;˧q.@ iBpXM$HEKjd 7{V l r7HY7H0@lyd3@  j=wkD{h6dztI$IG7ڟ bKXh,τ79a_z4|XoWUs v'{ipF6} {N ퟳk@+G1m XE)N-Xp/eD6s|3<n8aJ)–OdjiP#w @dlH4˧S0@0y21豔XxFXxOF*,@LB!15$Lτ%Fx9N0h1eHS;{Qc;\2H >r @6>a輴ٶ"X\clz2aX9ؕuø `L8$b I[`w-Kk;"6ty.}~n60a[I{b=/1GIl3!sXE $ě;uBOMɇ3rRNe25+w1^4>BA!9uy0ϓ,B'xʾ!葒5M~)FeVHsmxEֆ? U&^~F73%&R&MYG"=G񰀷֎}㡛$:.,ZZ(*-jJHƻ x? ]1.E46 3 xL3=+RL`ρ,#ژZx >{$oZHZ׷RT`L@JRU)JF\ _V}E ~ƁY)}`_f=Fr왩s5|S;ux_I>@6#2@QnַOG2IM,] /ko8H|s)7~Khw<- m^N1_t5@p)+kj*~o;w\=ٻ*~iT#w~HV{ BY-{~h:WblVhʬn,XzR^|$`ߒ/Q_~ F|c1dS o>:u'SΊ3/?d LG_ö]#l+ؖ9aȪŒw'[w@#7ev(riwCzpbe \1rƿ!MW!j~v--<ÐT \QdH<Q{LL,O9|]賎dJ̅/Gͺ`9㹬Ȍ /#.fC40&wst.*7+.ml%`oRhnh* =2yOI4,V@ 79; P5y 7%i94 ig9+fB M _xXLDլ.@VZ dV '7/أ+b[0V^lb8Km[;4-rd?C4#n*ۙͶ+ s<9^aXy2{~?t_k8_dl;[XP'W&0q>mEg kzT͘ $vd"\G /nmqAS>(N4ku U.,J&TI/B$/ahpgau6"; 8MLESeKKgw&,c`hP+i[{sn|0Pv\)ZYgHi KM\zo  Q eM2m_?_t׳52BbPkk8;4)rP\5#>cxF[ j]̎W4@yfU((\$v o6V~o uĤ N  `i:5ZZO}i 4ёkot \4-Z7WouU^^^H-؉6QsKu+4J2ޑuB8 p[Hz!@X3>)ŐG$DgTtuŖkO݄g ް Ϣd-$$:2WN徵\N I$.c7X53̏ Q.8 :zMEHϳ% ^snT1]w$2AD2qEIdGk5׋vg 7sg!@<)ln6r @,z7\ 6B-\L; MstZ$YݛyWK6;LfLD!AOğqa) 9rS"qBL^ NB<_Jx*iJlH~#rvA Pt\StE\v^v#Qb--5 }X Ra}שH#!~mnnEmuj6A:*i &@Ī"v;h v$Dmh]!zf;D" Zf]XE9#Z z)D阬$V,@|2_m>ch ˢ+} ]yQ~f>v Rϸɒ"3N J^b 5+kIZ1`6X@z}bSNp d˦%Y.u @xw4\jtO 1֞[8e5 IN>9$w!Hۑb &}Mk'h#x?/@fB6, v &tf#awVdL^-)1iDB+Kt@'qYije:L멩DJk~-atS&|h;n_>@e i -.sܘK)[m76{vw-]A73 Dn 03RC!&j$ء".a n;tP;PHӗh!d3;PÇ+0,qDF! ܟ4;DY>H~Ѵw1' m޻2m;5?7u\3Ѩ&8DB WW {pD;i@qd{l8+&zLG$0>@1A iRS@¹q7jAVhLȚ%\Kh*dIDЀ-ky @fpt@c!?,i^dyt 5t7f3]Br`IZr#(#\ue+ߢa/֖ Cs 6s aDPiA-ŅdaMDg #"^F_butQ: j25(uz6`XҐ hv>p- ``4@b'|H pM u#w!ׅ]SG-[^S@M~ @ڝ6x?5 rأ wK)W;n %첫N^j=vRǺ1n+@}@g4 8\XNr!PUF|zQ ۉO}wx OEBۦhDжe~m9n:F 7f  )O1'kgޝU}SMy+5I,ߟd.pϮ^m{3jkȧU+?$A2o@kVf)i V tyUwp:T 5JwR7L6_ȉRgk_Kfg_: WpU\(J*U*J * H RTӭr@QKR)DNR&>?/JfA$n \*J9@xUO_*Jg&)Jq>U)J!n3chꬿF-JҀes>R*Jiy'ށJ_O׹6FGXRd/й迦hpVƩRz~C? g=]}Kߓݹ֛7-ӃuUkHߠOݓV^֒[W=e_GF Rz . HR:@ߢ F%56zGx+?*lQ!kuvp#p5w[ÞO,=`W{sw;D7{s$ML|>ofŸd|ܮu8 &vN;rySnlɷ,[nP{yb=΃s w|{vanR[t>r =`[Im:oZ|l7vޜn? G*"VIc\GONYm/L{'>YӻֽђABĹX1ڧQ}]O^59@nLY7ȶf#tcD؏B𨪲aOdA9jܛ⺙1( u{cb؈rA<fjۍ @~@8 âm<]L]Z}!]yNAYrņsb[kfqex%߿Mߔ yDf(ž4 WI)zzBK@⠮"vB¢"/84&73[^,fIAhofX-J.4e3;x jĻҋD)45 ^,]B tDT= "?|2@c PTxrowhPιTbrxK>&StQ%Ԧas c aFʭMZdnkx/!I qo¿fM 렟8j|SqiyQds3L;nh" `8DlV X rOh̦l+`8><+6b~RSlX} dsܙͶ\ Ul' ̿ kU2ro҅QlD-Drfw&@Ժlz[ '63@}6 QUHd 4˱y_Cj +I/lcD½̓lQ\< F+AMӏ @ tnpc8u\Mbju@f%+G0i0/s &)oB;Hݠ@pŹ+Da$ahGg!yܠA+W4[5H(3vMVOӘ;@AF9> ;MY|@TZ<)prŵ7g%7:ŷZ /8CzJC?dz64##t@LX Far}w6?Yn#"mݚ s rdqIq|{D kC N9_mg%ĠiÉ h!9/pvf-S@$Eh<$@xP *R{ E $wz"]J7[X*\g ܽ i_qkUo ;*@1Wb75{ɬԩ jS7) x_Q+^"n5H"i&<@Ӑ.@&398m>#= {H4ydE.gr{"Fym׏l͘,<뤢5*+5r@`I4 -rl 8{U[4FtԦ_+RD@6M(c:Bd<HYM?gm)XpnlQ!ˀ; *qaTƸ:c#e 5Mzm 6Q_/Lw~ TR{mQfCA7bnWG Ho@U&-rNxEI o Aj_{W$AMQHǡHX;d@l\hs;c+dZ w;?Y[zuV~Hl.BfA&1bͮBc( \ )fS30@q$.L$l8BH9Wnjf>W$m4¦K/K/&vaܺYN)1):4{'dt7u @0]( @ xSNs@7dQ3+m[HzC__J)c2՝NvbQ@P S!c]H4@op>r *jD:iףX^&1пu #: l֞ s SGml1-|;=LB F}(GL #ZhJP[x m ekqM<~G/@$?qj@'m3zA&+6!|LMjy MR!ޠμ4F\Ӑ0YeR"@^bz& `2Ҧsls,,ղS;!K[8Ȗ`۹|FҖ–;O%"Nr I@  ÇPv-Җ,M9Ur=y²1@hЂ]j 9TZ66Ң^Ww3XG]>)wcA;3h2J<ؼI`.>z)FR 2e¥Zď9dFB@L4k6AnِAtWp (m: d&*3#Hf @.8 `̿fD_h"{ T;Ӊ4dXSN|/~HP*@ %NEfw2מU߀78 iŻ#BŗgzK'T<An4WyǼqނL G㻃XOJQ^i;~#3o|A6gD|naFb}G䓥XJ%-9uCbgKoPT&;`lW6}Ri6JRmHT*~]RT*mRT*JT)J&@JRIEO(M5W*} kT)NEǧKQU)GRV|R}d=*Jc*ހJ_ҋS*> etzU*}> 7]7 7r̩XꑷޕHT2*oȍS*v\yj@NoȽS*vx\kwi_~5*J%1) ]t<)~J_rq\fpHӴx č%5n՛dS䎶e7^2/v4@Oi`/%eʚs\L Q߶z 8$/ZljD%".RǴ sҶO@&69(t4@Gf J/"dP$@/a&jH{@\)?JNpqM K o]KmH|*V*^yvt;[b|$'yyy[)J?Ȕ20?JBauMM8@Xw.H3JA,qxw z Rt@j˥ww$ՖF-tn&/ed.J߬=&N^̷7;-;B8*M 0WwOI-J_y`Ca՛6`moujhGO leI0*ހAJ/8@w)Z Zܛ1OiLͧo3L-: H-x@gaU $=_C$[)~I{߁?-N♎sC\C$>Su$b~M͈8"!Z0zU*}v|bthamwof{TA(Ew^@yT Oi}Bc.~UT(~N[>Νz1;]KUЂi&O̝?&:H1oR*v$ph\ k4;/@JQ*EwVRNwn֨T*4JRڭH*vƴTM&@JRi~ ERTګ_HKR4HKR׏~R*JGR*J%Ts8 Rt3]Z,JҠN~~Z)J!ǜRt{N?Co9 f+A /d/5-8u.*JGjt|Nw]?7E|Nͩ> *:}斺kN"ȉgm;Q:A;#ڵ~%y n~Ľ~eKa +3{b<N},Ͽ!ދu#1{rg uʸ@ ޶?$9⏉ 6iTނ2ҙG9A}J>/i{ٞYXிqSI[㏄[Ʉ @EgN7 6jx ;9ɏ0kvT3f}Cn Jju g> @E woƇH .;%VNE0ٔUłUc^Kւ\!X;]E: mR͋%S-$\ @@l7dy@i_+ة$,ɮ$t*]t" Wp}_L2:O7b$a CS;_ gg/73tA o_7{DSb3 HZ!Ƿčt_Ӷf午mmI`yN]'?[e/+o~NsCҠ{b ]oVI}N 7"f~k .m {,Ef)VY% D5 t'̸EOwYejKicWId,4dj* XvԤg/2J$p~n[$L̂ t\y Iޢ0Y@@5;ڻ◯ًt6DͭtB2R/D{SU_oxS{H/ ^D 8WW]sBwIi@ g!@:˞${ R8T$>k(_@RA$|lu 6}Ꮍ +ӎGQZ۩a+.QE1*3[֤/> M¶I6WQeS=lr[@X ΅R/cض*(@ jcAQ& MFQg}\"&n ^yNDU}d?SǦ!VO8{vpjB!@*Ps0U |Q/ sDf7ѭ)_p̒k2 &@mdM `}(xǗ.NGv"a~4@ "SsKҌD~;z)zT+Ԯn-kk>5"k|@ns@^+Ʊ ęnmI-Iw\#6mr|g;+..y)`00_sjg_x+b6l 2`D;/@ǐL;䢰v7%$#MY uKcB47,4Ư3.`2`Ze}72!@O#_)iPd{lٽq6!+ ^ÓBF0E͂ JG5Mf=a Y,!{fOrvI%@$fP`3)W!5Md`t+ _i{ +6!<@X:83"4NX+?O+hQl db+5x'I= 6}@% Of ,) DnH<JgdZ\0io,fk"gdrQ1Ep[ /i6^d>_ <9BCXdvA5;f።I"͵d t!J~[ޏ 'p.L70 ̟m۹]NzBMꯁWsq8xwz|)@د m}HVe.\87=[? kf6`$E~>E&FxP:>lQ pvOO7i=5w h,iDչ)} SIm*FTfu?V*HiD۩҉*FT۩Rz YJUR^+JHi@)JHT*6R*JM*JRi Rtw1 RtS/t[)Jwԁ>o>o5՛X)JJo<kŁR/9q-A{CI_)RDsY@>@.}X5%"CkϜ~Ba=3q*/>Oz_`|أnoxʾ #>[_"9fOs8am}0@@? QꎌQyMG襵'dzFyݚ^"ՅAotPȹ _/?n7u(/9ћ%~[-!k^c͑y~ʐM`}65@hp%  Ni;d_ _ƿG퍭Wa!8[dkk|8jaͻ@[Ɩ!Ư{[Lǭ ~vŗ@G_9B VOnetf:چh`,ɗ[,G=D cu`-6-xcoÄ́v=ID/[owq[3_u}\hӦ8d#'qBWSOύFxUbqZnËxWm#"bڣdRg l6?IXѱ):r(t3{ 0@׳5N8h듸$b8ҵkS eM6(bI(eeg)`z @Iܚw^5Mg8{ ] m?&5pcm @,.o kCZ&)a]!I@L_>Zv6Ң'; /*|I$b$St/ @^]ib/ W w r@LM@eͬey2kG'#ۻm<@:ID'?c^SIJqp&?Z9Om6hkz1MFw =# ])!@@ o7-?c|7$ܳtnHqn^Qά @] / R xgVӀ0 j*`V 1\ u#Ҹ.Hc:7m[sL ]tv%:s^O@H3\f&][:OzV{ͧ ),Ag~V DЕ05#? nEd͂Z, idwAY^ >>AA {pdd@B4&MaIiL_Dm1{3v= 0`@#U`f \L'D nq+zL1,q WAGFbyίO. "5[BtEK:Z ku˜2,L-=, Mǝ1n>%ӫo褶b 3ˋ 5Ky ͱg!\!̚ :[fT{ޫ:w|qjz/@CE$8rA|@'ʖ'־^M2`м9-}_u/.i7 "E\}2.8oY]qxQ170.c%spU-/"lKR9dwbsE3<<"taxeezG燅NkͺTR J=  )Ge'|4bp=\\sz']35Z56*[4 (x..]\Rt'#ߧaJy]eR*JRi RTڤHT*6R*JM*JRi RTڤHT*6R*JM*JgY)JOԶ\=TRT@ Rd[)J% -?S>s#RDՇIǻNz煉GnuI7?ӻuZOK 4Vɪ:ՇW x?I95sr~.A6 }=|Ǯй(r@zt[?߀ nbR_# }p0@ekq5k!fzOH샘mS @AX_Q @;J=$o ~ vr'"Y]jw::A`|;XHm5#8Z'#HK%2 rJRd5ϰ6O|" ;  ='X؍nkrZfkvg&x: G  ,=/E#YCgԢ~7dy³?T,.TpRh@Hpdf K[ ?p h]V7!j.Bsor쥶szFo.K aQ`kĩ׼ $Xy25WmIyaC(*l.il WYvfL@i|w*t=A>[.Af`gϺQhZ~В~&s;tri= M ܽW]?`hӼ%BsSHb"Sky;i5l&uyK| 2hw;bXGo\a IW%Ӱ.pK'!5׳ؔXiض$L{H |wyf vf]L;LߡPLr+p @DA s9@}x:'tj I{4ɞh8[aoB_ٛrJ]8z"$1ĄO/Ȗtnf'gf n F {V)L@i7Hs۹n3@bd&ܽ1`<OG{n0Z<$[onwqy+@KˠܯԶ>ްa/#⇽nxorWV-(èu!͜DX/6˗bnK Ep79U=IuQH1]sޥfa I Ĭ O3{It}wLM2oueb=I8p }7@FfCȫ@N7MZNLqqS,$T9|!%u T4T b*|Z€*ǶZ,v[4J YdR1bL ٲ| ޽O@$@D@^Di3Mע^H =6Ĕ1 3zV3B{? M Lv;H.P:G $m~P0ɛ}M8i.cxM!;?n^EYQkl E7 ktUʡg4cI@tLD< v)r}!;yD `ʓ#O]5B =|8+ 9clpINOC.=LYpc׶dz (/Wv?@2ݲ#;Xل+| &\YGy*@֒'H+ݻڛd@s"6j[njm턞7ȵ a$D yL & ޭ<@%.sso B-1%ȊɎ$=g~.sK' 'rvibg*2ҋj@ &7 nMi *4@\my: SS /~l2{繩!@¦?wbܯ[>dO۠LIv]+VM6C|eMMߡܾ2/HOG Y< Cuw @ܶ`xq7do;bzh:8R+hnN:ЦH>ۃzakt H0 N/;VY Oӌ$]޳ 8 z1)7NNpbr#z%Fpy(@:Ї'tTxj͍ivN9FPWsmw Y+(cYDl^vXr{vMq'-wISm1SVP:W쫔I~W9rq`oNH{+i*!Q k'jjQD;tM'Rik+s KD&?/:s^]&W&3}|du)AHc?LQ{u[+੔@KS"8w%]Mi'V^קdNl N=k⟚] 8p! m:]xЍlj\9eWΙUv MbAI'Ӽ~"ZEP>;ӈv=8:1j\yD=/'Yj$˖w!u+&?JGw ֣YSG*k}Eѐ}F2+>ef@>QH䗔}gi@JWR*ȍU)JwV*J;r_}JoQ?(J_mU)JVwwG*RU)J&@JRͺToR*Joyҧ@Jҷ o Ri}{w@JR)WMW|T=*~RwT\QxT?1YQ5ה>Qy+V Us(GŇrt׺Bv.'j? cɓ׎[^ /|?H`}Nپ58-Მ70ް@׻H_d=uNÌHʯY!:Oc}##v T4.Л?>{d_~2]bǟ%FxsV [1,j+@sӧ.Uc_mtjiՓ9eW"8{mJ\D?O}< Ϛ&_,x& FಟGGwYhukϔ 's.qhЭa}3_C4 `y+..!LK'41\Y@<_>A7>YztCܥVMdd4 ]mD`Hu>"גH|/P˄ǩ~n!7|>z:Zep @蘙imDu tɢgP\l$i+UMnHhWT!:ABV#zϚQN{ үf XC 8 @ҷjpG 1@0Pȳ\`BqwқuMC I N ^DJ xFQRJw묹 /|n zXMWaePN=ַAz֢=% J_b+dȒ |HbB2cH'"5NZ`ړ1qFu@&@ -T.X;2G!E V0Whmօ%d)r]V16Fچ_ fgw wZBYU]h/~̃&0|'{Mgg/ 6RxÈ&6$2 @艨s}V'Y&гLQ\-5LtyhݺjyId(N96q Z4wY-"8 (agέ||&|c}o{4ݡ|r;ӂ3*Jv)*Uz\hCO&``$/c{my= hk(aK 9!Ew9?`f3*׊FgWYē7#n߈S@QAb ۸g)f硅 08b[LR 1"]3=h',Ww{c"@nyk7I9MOPd!PX9,ìJzA8Q\ 0mY*n~lH l}UnK囪^ \)r"ɨs2x`D>Av|{W+}pLWJҗ?;+mCFOؚH`+@>,Qqq߀Lрf(Hȟ dS?R*5f_(J?M!~m߀lST!m!`o;D~U*V~csT*}6RڢHS RT* RTڤHT*6R*Je#@JҏP8_ߏp6rR*>Uo?tݧdHT:Tn8iFcBh<g"K[ = Wht84: [n"6}ͯ /Ч67prf1vG@hs.Ww* .N|ut䳿ve딜}1Oo8 >!@-s;'ooPf_^p] oZ,5}aQy -/4$5E$`dn A] U]t ~S~19>-\9r&dShZ"Gjq3 9O*T`.j9d])gf :~۶5Y٧ұ%jkxpnDLrn[O&;?ч7-blXjr9sz@f;>{1OXܣ0of)S2P3M?3!9eƣqSմ=%ka6j(YxHy2>oo7:'sl5 %8o@d%t ԭ?ڣaw#fY~1EQ#Yd|20ȷT-ikN &ɑz yO"yٯd1axp\1@aӋ:Rr_ѻpex_>4AC͛k z PF38bS髛* !:T%F JgWi_1r"q3]U g4^r fyRaҼWx_2X蚤V{TǵIͫ& ׏;񄉑.5{?s9jB\@i/@xe<'Ư/ڵ: kK;8 g ^W1C+K,n'=閝j@ooU=Y{'WDvρ%YFejѯ^&Tl͟IȓIO 6рufwg{hFA8"HNKaתSM&Zl 4 ?!By^vg)6/MvBVz>*`maK>c)ZwqYX& 'E׷z@ nrhO-5`nD@Ȋb2{"&< }:AseVWfh{4 2@J"DG"6)s .p8P$\6{f~]8lvmZyRY {5bP-/zBsHbLY6fu䌜5>(Y4:|0Krd-lbkP~~tmgօ]ݣעBn #þQk)cHc7ޞQ Nv)&__FE!?E|چ 2WX(s2urR LDHmbW FH3"dUN9@ld3b̺ כA5c 3-Xa1sG}1/3o~j?$iHڻ8@t 6gotW> f!&k [))_BH0-ի& 7XLvSuHdT$F9bE[Im cYz+:I-qt)&!`©xVy~EZp 0259*;V0@=}5Yd=쐹;͉\T0@&2}u̢u@2:}6 ,D ?BBvOWT*T'Y)v~7Kt7c=Ka?6R:ME.3'ն-{H);[7Q~^?\z_~w QVz}U\~ Lw3 uS91w}>tC'ϭʋ{)Wf?m]U\O|{J:!V]($NHv։/qӸEH8A ]IuC^݇.W}g꧷ufGnmkfU^ƒ5:ktM͡N6dP٪| g7nv34nuÕ՟Njm`o`˻$GGc~ @n ]>Sk!?io6>LB1YI؋?Bө J5T3iey~ (i/}u՟5ص .6/s_h-zlC?eC{ pǘ%ϥml6#eFWt@膡i53LJ3}ҒcK Zd2`K~Z~gPhȜ]Oϩ^T#d@Ik khXI=@1?[bnUUv$8g~=9&iވ5h? rw /mGѦ73bfn{AJ;G4A"y?bwd .W z#oL5ta $hKltJ[p,ۺPyy>&}8э>{Iv1̤ftc2x֭J|Np=^_$cu9hŇ@!;d3- =: o qy34tNM'h%(.{HE:喒S/͵5 _|e%)IKLn)k VYwHkFѡ\y,}xB/AE] pUЇWR//XĭC2qA@rUlE#~M5BÕD2*lζBȋ  )[[8p GdH9xmyPSۙu*%8f6> xMq8P% mL(Y:p/  /R.i:@ɀE F L~a?Bu?TIJL +Fs# OE`ys{Bf=3I<&C)3X@R|OzYym.lI7g/NF!2H{ 53X@0/|:(S畦:GtoRp57^ΎӅgv?3atHh/@E@U G\.1i@X5a=c!z{-lnːZ2)g )z1Xfls|Hfy 8aIM\Qx4wwbKyae*<#eX*aM+Ev:h(90ȵȣi s6Bwm-[֋HcU=CFaXGxN+GüčJ]@\S#x>",;:7kRi4槩`0RUq˅82S1d +h3ȜGy>c7] j@B{-'R8@[]g@ :$"5"\۷ iO]Idoae{HH誰I| `}F/ `- G7@KtGnl/yZ=K8`z-lt|2=Aq+OE4 ^lq9 B~4I4Hv3ǫV}9a[!cFGd"Bsjק r!Ou-Cnnl bb/Joёi CFH8f4t h Ǣjk\H{f'PwƷK~ ӟ$ *uA̮b52}{5x)ʅ!s 4xw_w1 3ċqQi/>Q Hcw_@`u81/kMdjK H}iL.8@@yȑ.4]|cr @ԅBGH=:aZkƔz]jw3@:~$<[Mܘz{W8뼇.ſ %" #{aCG/Vz!uČ ci.lT-mH҄ZӅzCH3W= 2@L3,q➼{M ̊ #XOWQiuv"W2[H*;]xG @ֹt^۞t@,!+BN820y2r0tk*Ƒ`9rcAAŷϨ3c0wVe>8+Z)]]|MRJoHv\vFt6yB> i',4udr-s2Yj&~t`LqT9ȂoK2*]`h=J9MݻPUAYw ӯ؊H*p`mQyH$7qiv; ϖ6 CoF'Fō 6y wMe?S)7I2Up-L@׹T%AKZKPBQfMf(dngvF:) ,6NSce7fYoHdkwIŐƱ͚l2U3)W^lfIGqEسL,y94 BWТhQ;Q اwU1H`~!9ߥ 0W7[ ;9oVeL1@l_~\f RaS*D)'_LE> xĘK2e-:_ 0sjJk~׾@$j]F=xgGS~.p u>]F J)nAlY܈mҍpH#t-]K)ҋciӿP%9f4B[IԱ+ oz>1v.qH m(E>$YP1W2*i@#q4o#\, ^ͪ?H(/у/~@[nyłu}vc)dFɁws==:75ZQR>Cy]s[St˝ ‹}@Hv`Sap.g6 &(=/PII3zy@چaٻIvIz"'SRHC@ި0kh HCC ,(x ?(ʬ6oP1_^GRԼ x÷.~C{tE{ %b v <`ϛ4(O^v1E]. oKo}}'{?NSG3}@P3v tlG?}$ԏqF;/СY世p+7!{6ftV wrz6ƞ =IQ֝^kX3גC  3kzK?&;{>{\YT?%k{S@,(|tI6Kgs8нsl%A2}hs'uyK Mh!K#l? L*hKv;fѝ٣ō8>0h.74xx8 yjSҋ lny=xAe wdw3ޭqUoO-= OC9%HɽJ VҨ+^-6 3l]a}Aٝ>#`>tPCʖiǒsZ1#j8wRGr .R qMys {j.Ɗ8N4ڧۇg. U \ NFR@nlr:ks|QwIRا=mRj!.ܹRls."~_5qx@jK1W9on2ePXA6.+?< k-טbC'"ɻAt~@ˢ9Mkg l5iyxoɦթ⏑kؓP#D3KMdg]z >aWlBBHn.ҍ/ɞԬc zUZb\,f;wOH^0‡͗kJ=.7Es2 ө90Ug8R"uI& 9/$0gVl VE.2[ݗ+C;qZjN$-@0AnH Ͻw\r(T6<)lS-WRC9#X-`q!P 019xA{2@X:e42 -StR>nmP]̓Q@`VKŕ iɲNTܸTnuwdT?^].t .(;זTt,svQL5UDu$]n!R.NH: \ 1j ؛Ї$Vnvr?Cj&О&7X' t"%3w$aÐ&C\jM09#@ ,!a`z*]h 3nK{]3ZYȍM(5؅z oG̩,KNbv ?L]vt՘|b.ӭY{00?YOO2F <K{9eHS ylh xGGs\@K/@iz^KQT S/jI>^ڡnpOq꿠47̡Fpu(0ۯ IMVn𶏭~yqžt-k3Ŧ]9YP6`<~ 3s,j?9vB~tO@.#Kxaf?{Jg\ BRgY$nDCm˹#αM՗w#t6/t~s]H0*m  `ȡٍ4[\K ]:0 Q;*vqy7:c ݁Hg萿HصEt(={ Ruf=fR@{㦹Ml>m18 >ɠ/2_S{K > PPO_|ΝY3}&]j]eQ]HT'ywrq YȗnHWtk Yȗ&zs~,}^H7w t# QrI. Q$IR$}\$G$I4$D$I"IT-Ht_)@OINAj(y/\qΗ"IR7o#,SCW[D{%H_ 80zq#CF#,*D o_`}޹KrBu a ׮om-bT \:6xC= [߻z웺.זO5;+\CK'm=Vj*xoߓ G0׹ٟ ;WAWxyȞҡL×8y\ӣ5U2@w{-r͇ 9CU!cX6Vٜ~[[9B8.+VqD܁Ü4NC*(;"{/d$W6y؋<4ڡ 'f] go696gcnx0h5L?L!Y& T y5G[Jsz@s6dW!- fSmνc˜Z]ػO{ [l`ҋ?Jbr 2:C33atY]6~=ضf{7tl{>F9UMsaN3Ŧ4l<$ڒӷ67>{~\>ihQt)b5*f橾k̼cqwFq 5[4υނ(M0G04G%ߧD2޶0p?OبaC#@'t~h>a?,/Mc=%amf.l)22&Xf.eҼЍg4,&7y7|ԝ@Mmqf2uL1W0l:5ّSH6.|%^7#?BGW6~>RK<}1fK&DjwEHyi#Sv\(Q/tgK0HXۯy >9c.d0@b E;>?AZ}ۭ/t?@2Wg_ GjcjȽo:Sh,wzO ]ll47dޅR4WbIDN*9+x!S9Ԅi`T[z@u>1H<H"(0@LgpxX.lI2.-SqmOk9_I56@.o O^l̳Z wUb{"M؜< Diq@f`,ц86]dMp#3f)*m5ުJ# U(,0aƍioA6i S9Uh4"fsļݪb-X, X*n;&3 k Za#š } + w!+2tv&_ Ԝ;q7/oXi9-c |mpc~wBH-mA1ܥ @Jݶ([ vbY<[ ;h+{!-ɫ{G iI+ C^H?A^I0+m!9l./hץ? _<M`etbZ06$,Z30pLHho'Oe8ؠ[|H#v 3CtQI7:QCl$H$߻"hT @R3 KDhQ+ ^fW^:LnC,Ȅ6%ܰ"0sB]lTF38FUF|+,5!tĔ|@wX3@ZÄ9Eڴ _c(\\r\ϟ^@lEd@Ⅸc @Ǜn6AX\mKL-/Fn&zRM4W'0N y ]j5HNGB1_Z1p[S6+MxbWU.fvB>J ZseE|< maq}i 5ܼ#F}a'@@.eQZ8;zJW 4NC%jmY{_ m~ , [uH2XeʄA8һDZ Y{Dl{Aj=̟YzڏYA!v=b/\v`|y|N'NXOa$ȱ-,)iy 6O] ܼIXK?@P!@\^u օ-FP86fƉn 2s !ˁ#Md:*&gE)mS9: a֌o11;:U H@@3phhtzM($z4}AN<<׮MѴuFzBW#IՊH>ÂNK$,,ngnwv-yi,j(lw v?={kd79][͒|G{Ea.1_̌QFOcfl+5 1hLZ)-RJشOq3mTHŖ P76F0_;\*'ZY`hD` wYgG|Wu)t\ΙVDۄH|TWoX֦CF k?BwM4S&=qb*RM. 讑 iQAGZ|9Y:#^›d"IO`̲Fa g4҄9- ~q'0Ā(t*9Gl,p$] 2p61m0#6hZT+8]Q2SV|+g1n$=K)y[n_Vȅt@ n1#aT5lِnjl~G6dw`S4XK@lFvs6-R Yk.8aX90xU 7>{ iGmAaW2֎ؖ.3/dgco-K@ ~~\$,]_|o OX<p\Icw_g~U%I_T@Soqӛkr?W ?h R!r)5vn1]92͹xWp&@".kڶ`=/W j܋_"I ]yv+Ζʐ7zDz;_GSq~nB Acy'@-X;9v{c]n<{sdF_Vx@+ԺCm7H^jȱka.L u2xێ#1!U:~ {v  ࣠B7KKW!<س7N4VfTf?fa:K|om[=OOFmzz:=rPì'bdwڡzgMr{wSܢ;ؖ>5ٺUH%p OH}>rMqv侻ۻ^mզ*q8Z}*1N0gQ|l=[%9LC0ʏBSqCHMUIs+k.S]5@>y&:0[h6nD+Ά#&)%7,o64<FN[!$7ɡk&!V fK ~->> $kHA><W0W3'mn܏#zRt.WrT4 )HsNpSe3 0.2j55%@HUZx5*.a@ +ffCt@jF՗x&[Nvj> k&H1x@`48fHׄDQ-)b3v'@aw 8#R:W\rokHfW7@4LSE 5b<}H<{ȵ u+-nHN}0HCK:XDHO:` @`jby2kNt_ɛ'ch0; rSůmH,k&]D ݀@k^CE(rAi<Wy$WrxYМOH .GxVIMc>$㲮4ֲ4 [kn8^b Ʌ{%lj9V,VȔX[6P)_ ke ZVU3 q^xsHu?@uT  k yȆIa -x7Ui_ ;ML&32_$Z:N$Vm`"?rư +06ܵ&p J ހlcjlTdI2F SN#*'q%V1j+l"Q,z.@ZS>3B X{}#-eKZ4[͛$Hz S-d_%֯a =4?^0mgd~՘*@XP6\߽qNH\Y4r}g`7C0NLBfD򽪑K0u>:,+D BZBЋxyHѲlp"w5 #5%\&4lХWҰ6$S¢=RDC=s}72X`druwq@ȸ7cli]u;h;hUbGL1!o䥰U @@IQ&483^հg3OiϮpӐZ+lCw bvtX"i,ҵaWA`GdMa`l@bH hb7s~#'S $..4Hdicw GC6` K(\‘N_N=[B=\=iO%2Y,q@WwGz{0ɐ]ݲC],.83Fpx䴮"78 >R{t5< E_Pl )^WV?@@)fvX:o6e?fNT7l:BHd;;*Md7_>CMyh@0U6\& S WaHkD@rh]?_oc諭u˸c ț^o:L& qK:뵯!ܿg ?cL>]5: `v^QKe#d|1~_-k"$ɻ^suVVFa3"Z*Oڨn@~KY  _ҋU-(AȞ4Kb@'t=Λxǎ(nۂ9KO۳=j~-DwK1 Ī{kn֡ dBE!.zO@qzlu>oבKYȏik @Ro7pxlg17 #*O8>M?~MI%{鱳o>iXґ-R$Cbu<m?_㕤[逽q?-$H $ үhY D:u췁%@$W$9 $IҐI$iH$I4$D$I"It/]l $؏^2uP.H~z*%HR>?qonIK5ȿyP,|]';ތK$8ϖc2c{7Xu >%x/z5EP{TGsd A>t}57qshTU.:w`;EN @C,?dy D@e+@F?>\3ٮZy@_/| ɀ!ZHjߠ&\袯:`[EYCw]SiWn1/SUW"n郏 C}x7l;=n_̚.8wo &6S9Ԟ$ٳ:?('; MxEcu@C.taЅp O}ϲgr @t?bs2?͛Jsaލ$ai#ZBk&2ڊgDEC 9Ho@LK>}mMg2tÜō%/&W(gB6%ʹV! qvFtRLeM^xah~8t  e ) hSgp3>D_ٖp> qpyY ,MxC#;9`3 ɇL[C4ik]M{+釱@d52'1&%&CPc"G _ʁY9 ,0 8wS6Eе|~m|A@Xf#YkWF1> iA-x*] %2O;ЇSS=Wٗ|'@Kb4./=;잁wEfBS6)2ViĈ/'טٛ)nűP , >Pŵ o\қw$t2e+vj]vJSWhg  *麼`^ef&Uyu u3g|8TJӟʳ5<"4T pC;Ft`rxZͿu9 q7pw1 j]$5vG0@h`a3k=OXSuIsUDZy9@#2W8wU_MjΫ+܍qh 3˗@@Zg]Hajz4T]\ay$gqp~ $[@ vz/&HXXEiu@r vt lEwn+A?qSeYgKKHL.+ 31`X=Hi$< vn{t ~zzٹlK+nkw@`f%ڄNiQG7Pof6~4V4Y#q\[k6\9"N,I ]_tq#/8N be: x. ?Sȶ tY?-?s JHێ|'T?Iegh}9 lf9VM@E%t&53ϳYqZ'zG: t:bRL7 9:A  PPۛA6؛Y<4Z hē='w3/9FIk,olye Z"R8 l0FhD}/ 5'JD_{&ECt2! bJf8 z %_% VMӦ<`$ <2઀\2I9H 8ɺ>@4¹V-'z(@֧0Y5`1IEKɉw@, GGN8H~fN$q_EF/ioS`tσ{6r [U?3 _\ߐnկ"Ioթ|@nPߧJ$srwu|Izt%$@*hZWHKқ%֥Z.$WH-me$IOW߿7$IQ ?&I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $I4OSmrUoݻH$4Oal389UB¯4B+wkw>$I 5.w{f/@o 4 'Iҵ4[< ;T-@Ghu'd+*e>P^6Sb"^2&:#"?} f^@JsX]ƬID;9}{m=l? ?Y*2t9 08n=lBŌDح vS}Ld;W|O|;)xk0Zt{M?bַWP=GϤBu`WwQyyY]X/} zCw%^y_A3M-"L ,Lg a=yЂຉ{ݦ[szca1wZȋ3%o=Cy }nX< I6 @t5@ -w܁ J.L /` m0}e6ci8uZݚfE0 NHIҤIY~#@YijmuϹ Jp,sϞrCn@ ˲t X nf.[y.%.˭Q;;ɶl(#.o}6uV., Hu~`DOCXv s@ S zhL.<8{/I h̴a%IF B m}Ŋ9-1A~!1fd]z黁gh ɬ`sb˦[|mVq@F]Kz9ޜ_mFsZ>7*-@NTB=mS]CD$<"687WwD &oƶ`بgtv$.ZLH.hq#`k@a SQ|LTwxv| "lľm)\#5NE&[/D`IrԅVf_t, 'Nޝ;jR9 L-'8v v H'^EAeO->-o˾"ͮݷm/xOSc(Z , a#,l:Ga? XpVv/7~ņ\5@ǟJt FTx@|GCTp!qHEjUkmu/N.i6a8uu_/00Y,V:,V\nh #S۷+M&@`n])@^D[I:1@Mk2`Қ|O-ژt?@U\LG\Sq<Вo!yl=n 'UdxMLHi]<Pż.@@E"f]NM>9S uKlP> ʆ)\ꅺjѕU\WEo m!x:*dk8\/=..wM)4@y>^ژM)*RO y=r2@ȌJg4cugs;@B99j;#)c#To܅0eDApuJY,g(@/# D UL& jL}hv*!s$<Ӆ(c$SKM+N3-'77z3,"x]M%Z9Hl|Vӂ *~ ŠKZrS] sXD`0I˦p@?0@|@l׿lZF 退DZ6@U ]㌂S%OE<6g&g{-:eKA3ь0ŰBYey@b@aAnH <)VJo dJ.v4'Skh7-;N\2u BłW|EP ƍx^ZkA\}Iݢc@zi8r |d< ~w' U"I]a#>_Y P>x~6վCIn|)No-<yvya׏9z tN~6NpaM:cRwk>OռI:M',}-{ oy}gH!51wA.q GܚYv( G. [xGXEmA\ =F6úw ۼ9~enCH]g/ n [P3:f>XNv1Spۘܮ۹2a^@|8@U/lsg޴cSg?mhNH 0̡({X-@yE[UwxsnR]¼v%-:owGoŽ-_\z>ϭ|Kay)L)½Oǖh# g> ?}d.5S [zNeYoP"ahִNƔҬz5 6/>[doo#BBoV6h#E'ymGdS_Qqn%B.M{.;wKh?mM6쎤Kx`{1⬏鷧7@T1)@; BK%N@@C3l[@4{m{+Zģ5q LB&T&6kZYfq; 1T#2~+w5ܔ_NX}R{z:vj}goą 'ëR} diva~|V]d}oi4,̜9x Db[k|b( 8tкO+ -57d-RMd@M%=Jĉ sρ\@gHNHl!Ϥ["j4&[X|j=2)^^Z@MG52(kWcB5@||l?5@!3j,p@k Hl&&hpzM hܱŔbHz/W h=Mv:^6pJjȓ%/S8ADBf'%z Y,z52"3"u |p4HB=ǯ_4iA7Su77ן,hʛk=^gDZ1NJ l!H !c~*C*} Œʯ)]?>!bu~ͶZxM$u<"@lNo(\^ZZ,b=R*&br1r8sAW @]ߐ2 8fDDk 1.xI z@%@uE2t0@,1c:#`r\DN.iLq6uˎc.tlmn~ب~c!@ 3G]! G-u dl娤&A @[1sOxy$g8aYV@SaE< ! \ 1+zYYa6-9V+ծč:th.F:̏_&i<>(^Ep%L:U}S!)k>zWDL_XTq i։kD:#[@O X\1kC q@ #}l exqV, $_`ueu$@LbCsۇ%g XSxZvȥž) gb"3_j"i;v9tC;x7@ (8Y]El/q3 C5dW\9؀Hڭ\˅ye j'$5$kVD, Ց煥J,9L4,JlYIn1ԒQf fԓ=TVOtHvt6lM&+by qPL5"PX&+6Meou(vf0ﵜ iޙ;l 8k&*!zc `߉ kNS5a@,;rqA@ mQ GIe &;ƺ ;t8%@Xu$t)i>XSj5p93I-&'6.;ө3Y⮇u2;ms+SGQ z]t8wc7iF !pX ¥p&b .\I:4$ `T~J"r@3B#ԻdGn 2\ES2s@;&LS BG< dpQ9NI&*?fe>Gs#/>'pGs7 lՙ S!da. @^0IylWt jIIcm 9ƈš_jW^޸:tP3>'DnQ ,_ӽ3tޡٺ4TUo@\?/ɒ 96.k@o"?Ǣ6z7@ +s|1:s WN&Hx@(@@eo40383`p<{ӯwuD>6ZpXpXir٢_ng~%1ͣ%`;r(_B8++Ӆ 5R>1qW4"-sS|Yܟ0*8 Ēqh$˜LS' 5ǾMq @@]tA"A@6i#<痍}mPdN!CiNZf{*о~  mf51@$ ްc 3zo1=%s&w7.صwp*BmVh ݾؑdƮ6ewuzAP0`7xە7~z-HHXmH&{#; ٱ9eI{q¤9t$)I: [1vL@Yk$ukCKOgRW"I]+@o"I"]KJRI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ Iz$In9>=ӫ$I # &??'I4*sK$Z?݂H$3D$i@~ k#AnCtIA@@$InC?Ȥ|Iq1=%I0[ϲf_Ş?<>(h,Ոe $Fb|Fgo'v.n]OH.šR"kئ%I~MM$Xb|1\1_4i;,j 3{-of~oL$"Ȓظ>ph`ځ,8\P&d~@$IumzC069:{=$I 2 %ng&hӃ',eډ $II߇'$!YHJۖ$I5 L^W\h!w K8 H0 w ~fA(Hw ܤ R kSV.WqB@$I*>y5m6Xx >m5?b.3%`,g dIgN8n8%HAڈ/vn;$jh^6?ִG/&,0\w$IYHv՗%ha~s W8@+Mj@ I"I KxM|Зfa0[9dzm9]H$A] Cw ގӳ.dt㙐o ȤF))HTyH9scd aƎGXk $Iw SP{7 ٲ$IPH, 7LruTU|cJj {9uD$j0@V7&i6b v @^=$i>5Ǝy5KP0th emI |GǺ`$I Q;7"̻pJϜ ww6wX`HJ$!}_Hk%Vs.\5m|0ey491]x#mD$ Gy|9v 1{;iڱ'L 5,c3 :$Im}߼MeۀBl/obDfȊ\oiT$I<@Ν<YJ 6T!VV;A@$I'&z߮3\Z$I=@\$I6\֦/I$Ir$I.I@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$8U6`Jұ@_7old/o"F*TNHOPJ$HGM(@DK$myXxڏa> =ª ?,H_3^׹W!tu̾>D7@A 4"IA"[h̺?^ ?WɥtosSGWȺ f=\$כB۫'&#(@^Y:m'o$|By{y8c1Yҏ6) kv ׆g)_ZUŘl`֘AP%O<$ZwHэ-(U<5dã9\ 1bT0tti}pāx{I1ɷIWk)/ mw>7@z]fD{˳F2Nq nj )[xAw̞aC]x;cS=sWLWHzNO#3ӆFXޛ-#7v|ՃWК3E@Y\tv#mj?-O LD uyV,! P{rK.~neŜ/6O)Bߌat"} / .쫙/z pnv!y`9C:G/ ;ŧ_Wू9U F r>t+v7|t*t &h|"U<@LA >@j0 * w ~'IMNf,,5O=+V-v\MPeEDFlt HJ :"}C w@^sԛ5C< K8;FnNn+Yoԡd]mOru /l\t  @CS$;-w —Wf$}nlHH<떡fB 3mBz@l&@ -_pV+E$Qwe5@`10#0b%k ?J xp[EWpۅ Hl|IA \i=~f%EA_6@&Eh Vkޡ&I@#Uatkv4t`0P1?'rpMl)8 D6sC=AJtVn;:|Lgt/5zw {dDa\nfgEbbظ͔\B y .39 :,Dn7Wn[2"x/[ih\c*$H? =x [|땻;hf< ^mʤNqѥ{liƚIU/HEo:uѥ{&JުK${uH$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$Iw$s^֒$ wk_6Lo;6o%IUȜ:~"'H2@SvP͞ @$IM}@xx] D$'uaO'jd8"IF4@g'(4%_*ۓ$I ] 14!Mlkv!D$tid~ ,Zx+@Ey$I@LA$FG#ɿ77{`,Iź,@'>Vb W^_ $nJy7" 2 "H2@}KO WۊI$I"1@wp)}ns%)$I?+|#j N3A$I1}%@gQg܁$n o4.>z~N $IoL65^IZGz;"Iԯa߁O+)_~]$Iߪ eO=<\םH I~Qȟv۵j@}E@n1$IG_) R L~n@$II] Srg#Tx0t/I~RW'yM݀H2@;ͭDlȕP$,] fI$I.+D$I"I$ I$I$H$IC@$I! $IҐI$iH$I4$D$I"I$ I$I$\GAԅ$b@^c~e>gGHD>TXE$I{uYb8 %$N-$ImEZqϚp N[-$I;Yd+M9D $՗df@;$IF(@'W&Ryry|87ϯb+u%Iz 3e3By< =?r(Kfw/mPE5Wa#s&i%;]A 0^ e?,H z _? H9F5E[5// a=V@-&c׀|@Z8Y@Qܸy_~>5y=Zwq@!yw( 'Y6A;v HA\l]d[O1WO " -[w~2}%f : & -;fRY EIظzRȦ(ܲ[@|zeH>;.vQSgrm\#yw ͑5)xS$j? /Ӏ!i gڒ'PvQ@Z;5Obe@l H3*Pw]$yAWm ] <b:e@w-@1ħ6n+ A~,qqc<7: _?()' 3&Wz~2y$SCL]z. 7?x}cMZFZFDA&d(^Λs7,lCvq ` b Z)v}q3>^S%ɰ & C^n?29ҟŬCAisfJ֖MAI2R}~<̎;vtkŬsʿ H# a; .7Wx?c2R-aU݀E!Go12R/)5DrOrg 2R5‡2~nKj2۰֍ ϔw83OE@Ɗ)Z8Hyީ^ Hcɪh X:#ny>枹~2!sgAy!u˷`' :db4тTMdƝȻ{v)7FR[6% M@M !@" !@" !@" !@" !@" !@" !@" !@" !@" !@" !@" !@" !@" !@?^ endstream endobj 70 0 obj <>endobj 72 0 obj <> endobj 73 0 obj <> endobj 71 0 obj <>/Length 141285>>stream xۖ:D9oxzL,)B\+bi|֔ I$IFI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iI$iE-M$IޣC!#AE$:)? Y7(I$G"s]$I8|ι ď$I{tRLh"H$Q!0^H$I#: )]B$IAH / "I6/E$u:)?E$:){I$T!e=o$I7|No׊%I|)$IJ~̫"Ij GJE)b$I+u R?5Ii4RffQ$I[uR쟨$IzNA8?zS$IަwB$Ity'+,IIW{RD?)IFKH%pMK!E^.ﺂ sJOҙH)kHқU%g߫`p<@G"%$Iz?jVCҪ6]\$HqǢKNi,¸jA,[fuR̭]+{>jYoج'Э !ѡH SI+j@ % 2hOj_5S*RfM5/ȝIǓم%syjf.fo3p;ԥF]H$%~wR3"D'z ]H”H,bKY$HtZ#)}BRЩ~Z]%@DE݂H)KH"IH_>t՟j yنPQ_x)$)K0;X9" ypNqeBU&# )$!jl[`\@WW9R3)WHaH )IQ5C LB$IG_#FX7RV'=<7x?R!Hq2싽bǂnF HtڐbLjyڲ$HI|E@&[fd_mS<94f͢R$I:B*䑲*RH8gfcmG)>BJJ!HteVTaPfkH\b˺9RJ@KH$Ij%JD7HIB eNrfQA{E xF,eNb )$N5 OR RRpHY`2>'p i)𙋐"I҅ ';?h_RNd6AJ[jʂNۊ2C{VܠV)$!`zq0LWdic"I#T9'XHpӪ'Jo\8'F)M QSIޡgͿR [_DDklW"'+.7LiSْc:.!E?Js9Z RLlVeE~$«TB$I65'FeǙts^FCt7RIk䟕&󏱄x0Uْ>I$H$=GW`MLR$I_7&܄ƣ/!E$o`ʲ4O8 )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )$I )n3I$)2?ݮk$IR!e.>ӷ$Iޭ!c儾M$i>G!E$inې2k8$=F)L,쓞 It(R浑)vg9g$=P!e>ɾFQH_?HKh3nѐ2A s;Iң4)sLZ%k!odY6m9Ƽ`o^ȓi,RQRaԴ8cWq]W٬C&6)C 4vS:먉IBly ̗jC 8<<]^|Izyb26LI2#Q֊{8yO8856O',$IO7_ٍcf;RPuAOv -993X齝^o\"屡$A{rPPMh,}P¬Kgai#dπ(d6Áy٦g\xX|lW>kv' =p-E|[/C!V"yD?=onP Aʻll!$]w-RE|& +Hl%@4}Smo]Bόʛy+ )/{.Ɯwq[žG`8\{o> Sbw]nv]8#a53 flU@ # (9RRFkPEJ)dͷx:f >CMθ`ŠF>{|6%qYHD)KRE'MJF4]pk֙#P59&py>eKVH$~!ػg:) ]H B>Ja*ҸY!aN-ːVnG 7#cH#%T"y364UYD͔">@KU۹}xm$RcTRpb*2Y˖Dz%Hm2`͓ \J%PGQfUH99K :)DfO'HHY l5W"c޶"v2p؀B~l.7x NmD@<IrzHƓM͐R1W)8^]MD"ftX03Oq2&ԧVP٫}H)6FE 'PfnHI#,߱k' {uo|[U+RHAmz*lAR@Jj+HAtR8([mWMUĪ&p*pĜse)'HjAy}IM-_y>R*?G;m4jBJ̑m ۄ#1۔  Y3E "|76HaL#e?C "w'w į-QfÖ!HL瘙zip5{p ᎁ얷C < ;؄BRoC 4|ـ6#%2)ƚTqu3_ss#~^CW#Iٚb*J4 Cؾeis%f 8RtHR4)lߑ%~D4Lq.ހʪx B-9!Y^ԍK5L;M]"eQGim2P),\OM f}cjHѿ!%Y2qM~9$iI>.\GOƚ )?}H C#Hs)M[#o6ThFNau%H ŌV?GĜ`K̡E~B2s)S:piFJ[RB1,f[҄ I;Lc6H659RQfـx )luf PUTy~;9f 7B)}^ݑSx7̭-} \pmNN0fM>l/"4+~Hɉ;V^av؉z{ČZ}="uls6p)UFr0a{B4IBh[\y~Q{t͜ Hf̙eAlG gnfbR+ , e R"p$TYX;߲n.pjL2A@6_oQ`ols)^1-G]BueT%ޯocrJΛ-(Zq >pg3ϺL&Ԝg !=VQX4:A/> lsRXbsK !ӗ-n+ 7Q5 +ƔŔ)"T2fft] &HA7y+gY0W)XF$~ i?BX|4I2RıCa˛߮r]<$n1qpMsd8uAWND,Rp5p5*Lb\xŸY9dVSnV~XCX)f+ './R-{BHdoM_0A1q* ޑ_JE͎()R*~Bu- )CuRv#vÎŵX#O%2s[ JCX]$L X:I9IN=aG2Dk+H&o$Rg4R bZbz'ܪf\RQxuo-MKT3Rl:\XZ)㮶 źQٞv$̙/ԛZMctW &C~*HAX2Pm\Zwk.L*&$8ީא #)e܊"2y|,\~uv~#Rnݩ %Hchwx쎐2P![nY*l3w`, ɐJĭ~-`̦DcW)t3D`f9fI=("HUmHfܬv# YKOUtU/!W"^)6k!p%42)HA ] _q˽LR!E)Z)f{b0:(6M" 1 ōr !l Rx)j["Hi=B$AЊa*2VR؝\1e'9 > C\T9DX!ҊUv*Rz"H_qQ| [eY@TN\%3eexp RHnHd"IZs e95b yCHswF}1oQPDW#߁\B$iAJSSJjRÁ<⁰(t<ж)tȭ)B$eHi]yb'\Lņϓl1.$mz )m)Iүn1pPBqNBX;b&Oj;#)&K>^/B \ Xv;a'叭s,-詊\#Nh *{Ί$IRM=s0q\LfZ>RPFIBmPBcXQ7K8|]d I``7{1dvGJ/.$Iq-gZ!C@RE Άuw@n=mN|JԧgVמB ;u֙oA+ YdH#,-`60̖ 9z}:)89b뮛Ibmp+R o$æ`Tl o&I#Hq0lh$$U7@ z>> BqrM'-=Ա|)yC{(GQ*9;Pܑ|Sj1 $ 6 EJ 3ք_CJˍ"Ź6\9҉kJWW2V3!GtRX马#e㸻"% htD[~kdABZ[:\f&cSD05Fo9_ eXf3KA <ʁNcM3R(Rз2[\=RaJ4 |AI(>z}fi)8,)HlaW&fRiB?gsmWL5 .0`E)Й`%\JP')cxkԺ}@者 (R;-HBp.g+qȑbqrYŇ܄lb'>.:7ŭ?)znsQ"wCRmgbړ".]H1{zLtӰRXVPE0C Zxnpx^f )ˡ /\mt>Bۻ[t$R+1ֶԑ:hOcRW ea3҂2Tm9AF$["`y퀏CJmFJ+xB`Çj,7b`]8}Hi#F,&B#hCJa o %1HAЌ8 ">}iς [=; :O\PJy%?)Ni(RoGr_YfmRќWI\ ؘDKyD \e`oF 0wG#ts|D:] J߁&ƪT$l؞qv XS͸GʛrR >S R#w@[(-l2E 1 #bwP0-و *W@LY61pw'vp]d 5)I#e"w{*qX"4\1t6>xCY1)TW#yBŢJ毩lakePVd @d] 0s RLyb,3>ZPm]z5 ήYo&a5sHykyaz3Rv4Jd:W {-OD S̋i3ڑV['l])w˖WZ iRH)O痶wNi`ے3'f,_Σ}O6<ɥ8sur)T[csj&I w}ΐ2fMJd?RI5EJie=9)P֐{?)dnq}&אB[4[#}~fIke)n C;0)'8/Z:J,lIOfAXo= QᔆoR1byڑdH&y"b-i-_Ց+wF _ճbx!ΣAnZJ[bBm';z^u1RPrD\񚜅c(O`-[b>PCIcBdGMѰ.P1<3fm9ͯt iYsmRv=.VbBOL6R&wQyJ1A-v3Rrj\v!4Qdz=EB(L߃.Rf,5?R,l*^Y$"JR~ K4⻕@mHV+vj R>mEʧZ[qR*LP &얇Z RzuHAPRvHT{R dfp?&]1Vb#PEz7ˢH!/.dH v*AJ?ڍ|n2HA DHTړn+ho`\ }֡=)DJȄ* čH-gzGR,:R*o4``ZG.!e֗.giҦl~fRv5V%AvUЄ"=E Eg;MDjGwp:cV5z񶊔#&!Ev ǵxxdՐzBg^p_؁ 2tQK)FE $&@fxgB!zj"I)EѼV_rM)'L"XXQsAtZ?_uR Hiq\/*ؑu#J,^V 0mʄ\B$=Q)nf~QҼB[%$aWtiTRΘNQQ Z"IWBDDyΠ,syXٚ'`'y6|/Bv?@ M}H1c׻LI:_Sd^vyykH6ϛs H`mC X֏/b(!lYb"pQ}zk9 BcZg4pPHjV "1O7-H!BqMRqa$IV?RYp y|fؘR^RzNP%S=)O$i |6۪JKyMR9R+vj<ғw*I/ピg^$q\Bz{Ωjֆn98= )z[Aڭg-yCki03IwEJ8 ․d|gOAJ( e`Õ[CчLGlv,HֿU} * %xwv:+?OUaY}SM0FU )m>cBd?MHV'@9)0ȐR !ŝDNe!>QCx)K艃 ŬeO )~įK?t!RR);t 3<ϙB)RZEckC4eV Bʞ4RN:OBJ) R+ )>[@0f5"%Y;#_Q:R9g|[g㐲#9Q($c҃ 5%H<)PZ4󔂳'y hw#o@:қ HE̪0M1WRB4l==uF+t7㿤 [hfoǰOzAmۢÐϊBz>)).[yGHqAJ鬔DJ]\0IZ$ϢnI6FJeȦxk77xlf38jץ}? )MLٌuG!%Fc`!A>țaRZfG)c7iM@>0}?ɣN!EHI2CbCdysDZP;F'FDxX t<w~+Rrć /DiEJ\{Ĩ#o;ʜzf8+H})~4" )s]X,҂֝f$N؁JA 3рh6ܒlH"!E:MEʈ垆 f!7:ۯD*qVD 8V)W$fR )5H|'h@k@zލMmV#vmk8LY>q`FJ)S%FFX o44)F )ҵ1Rܑˢ)l )#()(MPLb4$L=poX!0y[LnmrMur2%L1H% ,CyR1ɕ/5.ۊ|8+oY3Rå|R7H(ep4r_qm`z RlB "dB6@rF粈"ZU Ƽ@`Qd0(@N4@ې!H!=RT1v@)3kAoc kf׎kyq8R>|', )^?YLk~F&x(3} 3"Ec︟KBtO\9sXb?dJ<+y`'CJD )R0r)< Aݥ97Մ3,='GqkʳJ )3T'a_3<#Θ  ';HԂ̑%FHH{=LMT,y`ZN|_|#)mI%!Eg^|l:AR1I(!EjCi 0LB4^Btoo(Z{zHH)"eSuPR( )ҟеH`IO~8)S鎺)O6Xޡ[(Hн2}~bڿXWz/aoy6%T/E SZ!8w'mn Q.E:V %YDV6*?Ij^?i ұ )3PU#b5:JU_"Hiz!(Iϓ^}EHa~3MLɣ|rzR%IzSGhwnTc;SbO%'uj'IzRxC0ѡ$IH+^RH$Iڬ"󏮒'M/n%E_rcG.=1tc|"i}1>pyRJg$ 8%zR?RkeYˋMf=|=ۤ=ITF?pW]?M.kR{Sξ"I1RE_v ;ջ FPr;-|IҥRkBI;fD'CT_9K!HVzA{ %$@JajHq;ӸZz$sp>cŠ{̷6cd$E rp#c~(4搇Dy@SiK):,`#Jt yӒ7R@N%ŏ.ȧE :v]=paùub|X|BJ=)ybR^1ה>|Ѣ fL)˝|G5.6&v6SjJ]zTxYR~6#%M*A`\+A( 8ɐ(R͑n4sDؚH=b<NzRvYC)ՐJ'Rf# [!7ps>W pUrc}u(^;\D#[;!))GJ)<Î&)ƛ]YzV唷l#&.;+tQ2\7MOM[_#R-rs>yfH5#6vi3ڐbHCaQjEA Yi3(8rܔʱRk-;_U\WH}X)&7#2|ZH|m~Rh|D3+ϛ΂ Zjc㽷XPkE}V褜ZG,޼D3;)W5j[W.E _$dAT: lERlҍEJmW_T։PA (+Kggo%%HXfC줇dӵHip|$Uz΀nO:6#:jϚ.PsԡHY ݮ6r;,NT3oMbctȮ囥The%.Ab4ϬKZ82āek!Rwe͜ ;e: zd{)xs8jjHa[wʽbEݴ &maobXjHW\څ,MJ ~z;p#RXK#݈@OGip0)(H!7O \ڗ_ljCH7 REL$::.WSZx*d]<7`fvĥaCINHqWN.0J![,Pm[ @5o#[kRR7ی0g\x=o}o0۵(B6T ZfKT x, R\kHAn"iN-M9N7G#e 4[FZGJxMke:@J 'L )7: 7J(2Y^)l#U|}ogY.pDJhZDqDRtB%Ji!# dv3Yd)q}>^Eg#'C$R.g/`mrMn"SRs~o) |'*hF 4hEo^<DJòsDDR@)eî|0;2Jȩ>!O2)hd ozywqyB)⤄AD徳\%ԆӸܚG) >L ̪r.DJ>#h@"Arr nZJ!_K#HIjE vR+0ܩHk†=HY@^.!er?:~{s L3:+))ރ0[AcSJ#*/"}ⴢLF [ e[ې\BU,Kn1Tߎ-] LYBh)wf$F0)pRf?:Tn3RoHLw)X9.<^y-DH02%QlhsWvbK)(Ȫ܇AJi.ڛU+ ,V>G;A{m}+_DX.B&ZشNLϡ9\u  )BG6veG(śْO+b,ve-FeeHqGXڂ$>)&'JYgB$C eiA̅vRnI96{+$p+4^ki"ITU5?{ȔTEϖbt+gR[J݊)e3K]!Eޢ!%=SAKM &+/VH8"R̅.B)Hrmg#$M6 2Ebo&iVwIOUO19P]@ QTG@׉x48~Ӗȇ Q)œf\Ü#5%馪M$JMR5h/SdJ^78U+=)-G!EzFo_Zh[O>{\f9)Ț yH9/jt"e裤w|o>o}Y8)#2eG_&9൑Hћtn{=)D&MqLJ͞dz)P'M7$WCh#ŽNO~+k<ѾPeh=$I eA)SXH5 ޟCB<_vGoHt RIF"e5Ws'3lBi?T\S{GC6mNRN |y`H)S>H&nQ,ItRc]"Vsj ODOnꏗX:cY.O0;4\5whu&)m@$gJ?eLp0R@(!,ZCcJD[`qmAQ C 5|u_[✮;hÜghs!H=HۻvC(D{T0V&FM ڎJ۝xB"*3B{\6 %B9H!l9^lTcn f^LBu .n㛕kb8Չ"A1onR8-}EȀg70(D4Zn;A U3pl ؛m1I37E{'_#"<]";n+i]tIrRDKY A &0~")av)mH Dhk`Ua ٟb୐p3"<]qHhB XyL2!w#QR~x~ Nven\ld.,N^׈}Dɠve:: )ęD9)рٲ@,8AW"FSC{Lt-5<^GHl8#;]&k.x胑PL;6]FC۹4g fL4)$k٦YE~fxrRZ7ؑP&Ƿ{pkBiBf(~ړDGI2<9)%Sfgun=3Xj@#5Zt %36"Ź~2.JLnB ڐ1EVUv rc%v.!YgxC]Ԏ2z'~ɐRn48\)E%43o<)MQ LihgR(4mE B5j_hӅ;K_K_ȝДNZk [GǛ튡=; AJbXR4j"[WV#W))]H ҉L|/ܡ~&Mn-9)7~#G(wMI,|7S@hK;#zTaH)]`BcrydN ;0)X?]pGQՐomR70Vd= ^ R mv7"3eRQ)Srm8 HmF pȢ"SIY/.QR8{%DC  )qSԠN| čP#GJ ER7ހt3S"'HxL*iuJ R܎/l\h]=xQ^kЭǹ ];$mW@kSb.²ŵo R/)Rv6m61!%~I,\ G o?RP^  EJeO>LğJ;6mlB@TT}Uܿ̈́=^ ּO% w(>rv U@[LA@ZB+[('HAP#XT)|㔷x'5 o]:T,Sجkb3@֟KkU2Ր ERVCT,JJYE[vUθnd = KF@JlNGzC^DJNՐ'4אb1%4#BQp Yc(rsXȷ) }~ r)Βo/O\wm]Ԕ 4~U |# V{}.LuJ馡ZO8+HnGwQWEmlR>Y;OcĜu e|Do.0ӻ))S[0)L1=x3r_vHЌ9mD"#̈́,gux+iiǙ?YqK@綝ܗD&9 %6:)1 _5 %.*ଇH)#eQ^wl5:$tl+" DkN߭btۜM ]Cv8zsƃ  pclR)}QJ#S )% gR:)ңhҍWIt!>#1p&9xl t3AnŕAn"yQt:AfwF(Z29_hAJ-چaхLrR$H^ۢS44)%Suن̷|HL'mm?Yr#?@{!5B$HiR B)Ȩ0኏w 5$NMZ]HQV蚐S|$=(y RzUo1DzPZ`p@áqAMr1T~$RlS-9))a,R$~MޥRȲ,8"U8T,$f`h[n/`"(R! ACVNzV# o[ۦs@+~$.b(Yъ@خ )to )wi9xDz0#q1c*̥HAP ۾0VHh~݈$'rߍ׍ X$HvHI}@+:!e.~ Op̀6! 6Iߙ#<4!DQZR{1pV^"NU-8q&IjYȯѥNljrZW[ tȭ'LRRE$^lh~<&L:Z_4@>cxTlY:+J=(5ǟ5j@VOBJG:nQN=DfWYFjRR>+ލ3#L$-@w9!J(_zЄV$F|wCJ֟ƿ<o$w R 'VUf+[{f)=s}G$j:Һ);Y$5(W8$p~#%&ĝʯ˹ӞE=o$Q=ǡA2[pO Rt-C'H9^( ޡTLVx^Bx'ETB~qGHʆgD@# mգwC 5:)+g  ̷MH B&Hi p BYH-=F1Hq>a=CRIڢҲPPݾ~s0>KiEJZ[*B4WTpH}XZ1x;^BuX]&W4賂AMά~?:fz]r j2-jl#}zk=ߜy `'!e=5+,7C:JG)P2@ ZJP(.3h} 7)1UYw)`$ѹرHz=~ J)Џ*ִX`R% jNsQP%H!ބto|124BF7DA2ҭCv> %)mS=8'0UZ˅SQ]&D (,3Ί=?8Ϫz@hRu:Rl)ΒִnSR_-JAH9#JAнR^Iєቍ x,h@"SRR@Nf>mbmrDG`X?R _&Yw/PcRpaRBh`=U*b)CJLr&}Oޛ2YmI7HpRtR"5+RS揞`ڼ u ň)^XPɏWf]ݳ"-y|qMp0wR5 ,( HRME`[]3H4f hl9Rث u$E ҏw=1TCJ\aՐsVomƽ-g u7O˜[[ARF H!Kg3̡o|5l'tq֕p[P>5EJD0PY7 e:s/FR8 )녪߈BX~@C-\BJ7wL/@[226w;#ڝ|"Խ)M5WQ "}{**.-YVf)U T-6oy6)FJ@>=2IG %TӍb뷝@ّ-m~նJV>$mٕۚv뀐ID0ٕ]>lDJ3TCSm4cm4[Mx``'ΪWנToJ!5hWA7;h;8ÀL{ZBn!%eeZ*TMR vOeV扝WR6D664: 7Xpw2) oBRxb(#zmr/zl*3앚soSBE2 ei5-DWJ-BRݍ%] HY)Δt;¶N[fq4,dd( [/ޮr( BN3٧@UeJXM )SRr;t%R~6ތPޞo;߄_pQZ"guv ex̔v4mk )Dlݤ?҉,(# q"/uRVORMhn&Z5Ag)nFuρcnQu ;-2^R>V0|qD<EbTk 9A;NT]|юQYGJlΰVWh8oHɆWUt`wJB%].CORKHAyjܘ:R"lL~G(4b43KUG^Ș)~*8RDJw"z[Ӥn&Q})γhWЄSb"J7'`L&3 -1R2VQѐeZ" )ŸZQ؊nz#(%̀g)=HiY$ه(m#cePTZ=3B"!EzA>ll7F%p ,CT$2(eBƧ)41H!P @jHkh|RX&x qHU&{ )4v)E)txvP5OC1(s\@ jax6D*uQCbӓHv|Rd 96'}]BRR쇄MR{)l%ߵ]-^_ RrrE*-Hf;",)&?}LH#onRL7/B&/"Jqv8-!u1񋆦]QL4J_BH0hs%~*y L[/Rd^HqǾboR`-R[)Xe RVbPI4jjRHϔ^) VBJE'쏯HqOe0r%W+EΝ( %,9P>k@c?Rpl*HIB@Z )Yk]{PHnhBcPqvS|3dyXAR'=KR)1.q;1N*kH1"=_̙v%Fl'+8qʲC||NUW1st)AP!EzJs9J>tZ" #~պS/2ʂѮE+v^42}_3֪Hi8f7JH TSCFf)9|bp3)-Q5Aʗ)9uo@JDErOB$ = 埂]Ab39'dwb0RLEZ$Hҟг4py!HD1.зO{\nӵ+M#-z_HmYfP@C9Ԟ [;@ԸȤ$; `t.8ةWODJC%1}]5{&vDC@7)g<쐌RF{I7YO{|M6)譂#»ܥzj( ( ؗi?!l.|lG)tQ)@R%JuzBxLhs0Qr no#EI҃u,Ro6kHA:9|?qsŚ~Ҩ 9 !IZc? aېb_*@VLg65 #VaHYqIM@=Wq.,>T4CޡR$鹺)B\ykebU!`ďBO;l+8 ) Ԣӑc'R S7O3J⓺X _(ApeJ(gyM;? od_z̩t.CJg?!]ԑ e!Rb03 )OLi@Dp3ABʯҫt>R*|""8`ZՂ_%ݙ!pGHj Diɞ2fK(.!WMȨ 7^zNAJ@g^HL*c0RCiC :ݳR}F=ʦhgӐ90 t7) H&Y-CJn+Ha2ЍX x(X`4~kL +!lQQ tcYJ+R b&Kjt:FB X9yP`elu *{Bc$"~ JsL.ml`Ƿqh. {@Vks/R@ )nD x#s6SPzba0%"x\q7s>:'MY_Hf%uD& 1g69b5L"eA;ztec rNmd { 6fw ) (4[))=r0lJqDO|?û|ݬĺp'pA33s [(6 Y11`.")@^J2vOG )@ ]I`_&f,wY{=)X.H5AsI͇AlВp_P%-+[RaGέ>@()M0A>U(H$(kivOi16 "!Gy5ĪS+CM`0hF,rxҀ@F_ )~}UI"Iu!ژ}T7 e9D*ϱX*)fȏ(LQg)*IڦMd\4Õ2͢ X)N/s 5')k;,t'5'f&~?"r#&H wJ#3K[[`k !K܀2g{4! g)xm&鹕"I۴)[>G1RCaΝr+!أJ4U6Rj8BkBJcXdabFҋ({R$iNGF~310g ۂL)#DRV)D l } 7 ?ɸ!!Eު W7ck|a5HBkkD!f~LGW+ᇨ$& )t);4/O(I7X6T|hSC$ ّ>&Y]uR2taU6Ke"J/7QÉJ#D9Rz:{6x#gDzMM~yxC1H9 oG4ܞt>P@ DJ]2ٱߚ&:yl?x͓nǿf|RS g tU";'wJAI⹯8B  B^>Hi&u)eg켭$P>|aIFO0bg mcX(H u4R$[[aSsL$ʻl\FJt[cRu +IH| 4~`_ᓤ(%3k& FB4#P[c:rHXdSiCEBTީ{!%)lՠgHȕX&[;f3rG )E4FEkhim8 /Rk_G)K<5@19@>)м\ri)0@+r䈡Ћ:,Ij8~Vw@ RyjG-7R*Hq7RRb_+Q/![gNE=+~ x/Sĭk[t0RlƏzTDㇹ06+gApeS%!*FBCkcc!ædSS[3dF["cnnE 39Hkv?R}&9,qn*HF>֑0 TGm}cFב  Z :vl$Q{F!%ň\}浥WBmu:V)s)݌C ןΙ-w!u%ؔ)~N%M+K \4B13Nj>vKQv<=߆HQ:EW#25Tư _}Z`ڐ⭱  U )LXR`V۫d >AEb, ryة]aStJHFTd[*/J h'RB )>~vHIj6!$$.XMê& HL#^' )>[ sd櫖'~ƟYWmH(%iG7;ljM;F^m3C3A V,;/;;xikAJjgSn2 \l.,1Uk%thfbOW>Fi8p"ז%E .ar75'JRA 6R iH!|ÐB _36hiK7rǍ+ɳقC_wMhc7y!!I'!%uf.w!0Xi RG-Pn}-ҍ$,$IoNJ7b#`,>=sy)|w"/(S(ʶ %5c.x%&(EfW0{U0[BM%+s"ᛜfM\"56!hSlx4v>@q>@}бnBϷ(R2?or $I߭KRf2-_CΰÙHY:@$})g[;[Y_ u]=}x5k[$I?l1,0F )&{O!/Iu =XA!h>4B^Gpƛl ǐjR$IB~bʟD,L),_dE@*墦!EI4U2jHSɳoy"*YM;apɸ=_dž^׿$I 2RcYJ2)@H 6Xm50q$Iz(R6ـa$`XB >] #…g}3@[heϖ!<)CDR?Hp)\*YX&|W `eLq 6W=a#:Sl"ITODL%;A ;q5P=K9GV~)]m mfib$MME0Qa]9;9OpfyhC ]_y[Q<!$IN"e횖R<ыpl1EJՓ8u1CJYR`;숭.!Ef"n5]ϡhs;ک԰2e*R/#x|uIf#Ri杚O %yG>]KI~.DJb4]_j00R| 4jZzr- GʡXջߏ$7k2RHXp~|ek5om=m X$VHL!!$IM"{KC}rPpxGbFB(EH$i=ȝH:י}d3x鸰7BF)Hy}1C@"I["lG'5|C7N(T|A"I\FJUZhJ$IQ)`@ʶ_wGd?:I,KE RbT"IA"3my#S&|j)~q!Qg;w6_g$I ŗ ˾D>KYxCgS$ )3zZ=_;+I"wP$u ''I4[߈e&< $INK2Az"I4Y)$Id )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$ )$I$A$I& eml1yUh$IV= )6YH$}|Az Vv$IIMEʆI?y')Ok$IGW""XH}z2NI$)?/"R$I2})4ӸCsPoǑqstJ-J ݎ'9rs4N"I% )?=Lym|ܢ~G~f"%Tm!y[5+-V;ԭ:t_Y(H~FF); ذg|;5OCmhHԧHun1 flyDQ 7r{#cIV݄f`)=(,I!.p{oEӰ-I7^l17Rݑ="$[M߿3 hO o?<~]wFh%]BJL!iv}Y`A"B=s鶴DXXȽ3dEʇ:R'I뮗$͆­]`s;4.\8@+\'&S8U@x#um_{wy<)O}G[Nq(=ٵ:iMh̙b Hǃ#f!l)4d4N8]SSH:t|Zp{'w@2>v.h,;j&i~Rc WEjL:Lm$Y[HRpI5 ,!փʄiByI_D\G *R~ V%0fXxԖF!sL=,*;:U3<*JHEAJAz"`lcD,;%a6ؾo L-IFS;! BJ~0Oλ=?u(H׮!#9Sa;,R!=h?9H˓8ȋHA8¯k>0R;PG kSlool}mY$cq -̻e1,~"y ":Bʍ_BuHHCAJcWn@ I{u/F[m9}a69E$4C&;\a/,(KR\݉[#= )qԈ?MCJ[L[֭%/jx>DJt/@swCg + plφ >FJ_%B. OO v_1tW7745,pNGn𾞀c$kf)|\VRlAGlujh"xz)RLO?+qm /Ir3VZEFϋv"Zk;2 )e7nCIyWmw+L=)f !%V[ EWI;:\ e~m7@0P!ڞC YqC셂Y\h?H0R&Kxb̐›OɌ~qZ!zqU\ZD~2=:- u.+<p­*[k=B;dI]4) g{ "ߦ4k#lԩDktH5v"l>B׈# މs)|mLG)J[n}49RoP )ǴoywR8$hL`+gϩe~yXx Xgd#k(RF ܫv0bGbyJrOزxr&9HYNcy==)gzK&  gջfÛ[h1!hiM&uc{nhv?~uҘRP 6Xy\yy ) ʿd#bMq]Fr15n$ P'Ky#gB-7v]@Uv[Wf q-e<=Xf"Rɤu޾Hvi)a|z}x2R@Mjm9#fS- #t5OE\!勴ڕM:)VpWƺaX4Yo,ui)/fTu)>K.φ"RpH)1eˡt)FѤjW]?J>ߔ]()m6ai^m1#|V7]ƽjbM_=#յmMd[)M#]q1E9nЎҩ;굜CJ!#% q~;?ٞ,a+YQ' J)M!D6^j`*1b3=.RLmĞdHq0VfkiWcCQ0 /~ 3=,HЗG0h c\t626NR?o+3c['_0蔈^4-H<ۥݓh?]ӔZ'w7y3;R6a{1d,@Pu ]NL:vU@UrT ILfuF#w$(7T`t򎸴-nl4V^oB 2R޽ljYY&͛ {1"2b|z ) k,\IH9(Fbё} @KIE}EJ/e;JM J1ӳA"Xcu9V;!|)}׀RZVg=ƟڸTBA@h>Rm-atoZ&=i1R(^; E;GU;q×[GJ;'HF)F*HQY۳0NmZ4;sRPQ@(GRŨ*! k![8\HAWxbO(O_WDX;E)+#H?5zy)z͔#T5>՞N2PAHM{RkJ? 2_"~ٜbaNLD JH)8"I҈fq~B ٕ)JCԢS)4OL2>B$I#MCh샵!%D2@0\a O*LH tP#,H4 5lخWX6p5}"`8R=ByKH$iDFDm7I]4g߄wC)Ha "IsWRRӳrhڅ w2@J$!ExKJU X=(ix<ށ+JH-:JRIEn8߆+&n21C"SU|җ݃"͗2]W9d}2L#H{ɻx$#΋q?\\g3UǦ{(gO_%휂6P꾜mg}3~&m )I=(]ۑc,Ck:?ڄ$痿1""I7H& yg:EH|nT{<ћY=Rkp;IR]|,6q,?ٌ/*ҳyGBr{'ٜ fQFB_yHOS\#r!zY_sk@W P?A s'"l̝!=[KNj,u{H P>oi*諭<<Au")TI%\k"R~Yꠦ]J)q{o6,hmI;F->V=<@ YI~l<λiHy䡹$Aq2MC x. +洌!HT)WMY\1o>u @챳8r{^7e{s̒w:;5`)~k2ؚީU29˞2Փ@[(‘º5v_5P}Ql}c Av%<QJN0"4`afXRrēIod*|}H?uDg:#HKl1%Hl x2 Sjb!LH3a w wKFhWe"Tݨ%?GJpkh)ZnRaѦ#& } HI¡Xw0\&K֤P"??Qʅh}/pEJ,I^B YFV{FsyWc;i]q&sV()`WW`5<2ETCĿSLCJxCHA8L .5Bװ'f C'/9Rz@EV_7ap hi׶+m9?~}cB=B İnD ˛eh})`fA.6I*:ҷ|z;GT.6CwDۛb%#YeA6[[0N)?c1Ѭ/~$g؛ f{vXd|p㇁#v~)y|V2nWpx9H<>5dL2<$R@H44bF8Wp)Y%D )Vc~RR-MƃHyo.w R=vm!vbmu#3@JQ?4[7X1 )BNoۂLi/7JleG_(x_6bG2q="e wHqv&X:HInEo'/+L& &!ctgRB?ۉÄUگ{G>S X9ܢ/9OԱ]`& a7dJX4-*kf#y'4_FNǹ2@%Z}D| \weӇ&o * a"O&WIgFBS8cy;;ːѫ)/Im]p3]T_FJu֟i[ZxU~E$gy7H\ӡpkhmۏEq0gW)ؐ5cCYk\Yb^*@>0Ų߰ G˞XUHy_qYj4R*Zm0xL_ݎRꮇdlܤ1 0R4q]XFl5lVi1nֶH#DJj=K [:R~ s{ 0͎ kVO}nSO*@Jn`ѯAJF'G X*F{8cXyKt)|Cu"j%q>^D "s) MϿ+R-`pn@Nǰa1Qw5Qj4[T!"U`CdZra;.+yJRQ&%.BJ5KH6/"X6ݏa| )ŻCMyO>]Xz6q_J{ǥfsRR)v-6z+LjQ"p5E`st:Į=p>&@v(#+Fk7rf-tw]r>#%asOLRSc)@*_$6CCk~#g~Aaem^5b҆MF=bH&RVSVO!<bh.A.ȻH1#WVRwsz1R׍wR]ͭFZ4k6m˰fEHvDf: dEƒh(o4+H@濰bZ{)AT,VʜzRAFM >킓Nr)nc{,W %T %&<Ҵ\B 񿠰/]EI;S]0+pV'H5;=Ӑ7RӬ)}|'RtAn*_Y8ը5x.zR{yRnPf?/R֤ oڢЦ‚dN vWy[K ET@5N9RR-NQߵGF o'uֵڟTw+If(b/X5EC. ò؍ۍ!`"3kQC;HHAn3hPex׽O @Ҭ߷cM^ԣgeKάdgC*h`\?oc"=U{3!`/Xӂ;1 pqbc}Wc )}KF, s)aX$RK%R`NBB Ƣ5\I]gr 'àOƴ9FɌ4)1_mV*Ȯ=s?r>'Tk`I:-ZoSիnݤp֖w=0r2L@겂9S4v8_cNEJ;N)5rV$<#藤atQ;`Fdp޵{%l O^M)hɑ\#a<•GuVv6r܈@t)[HWU[.RZJ#tR=QS !,eAǯSs;A΍(XAʱ:P^䌎2,&Q[;BaHGcүe{܈<=RgiPc ၝ'?=+}nJB}J3,cJ[t#|$Jy{NoIOC dc(#% %=PĀS}>XWpF 8|a;ʪ6I9R{ojxǩ]:oPIҍH GxVCJYC"Co iԥH+kJ콺-X73z$I-G|֦EW*|A򧡌5-xHvuyzǁ%orՓBVI}`qH!9qN BX[٬'ذl>2ey D#IB)m2)[[Md([x$55灓~ H9ss|IRr OںmD36 7I B!V~J4"]ROj_χw~3;4 E Q% tO*s.v aE&k@~`^)mPk_Ã(䆅'CJh:0XU0$巓R5<0N2s>3\ Yk: H +%?b<b"D/ y& i?ֽ QbZi慶R[p `[E>bJ/9L)bʟ Hy_Xt)17yB̄Njj)FU)Ft6z,>"kM)ELSZH =pmBy_3GAG@U>t Pp * XWCPT } tR9"CBʟӕHܶG<3H7ր(Ǎ+6 l[6#Y X4d@"B Z8W1Kz/R|ۗ哷tT6s97TD n !3a58dpBt}9&@S(/#0\o,_UMYCړ5Ne~ dj6[[!/h-'"%igG`EfZAꍟQ#)h; BME%PShC.YT)PH߿q1REkW J`H2AZL9!F)gد饫e j+tu) C`h>~_aδɓؘ\fcrkƩh3)5'B̔^䧑K)xʹV=lt6k YGԳ\ sqG-uv=/zf?pG\$Zi?Ȳ$m/,$f8G }{&sTdl 6~lXAu(|qF.$0W`鵹~^J>l3UtȰQ/NK`!Lh34)ahZCSh`K`*ԑVjK4R¨SΓFWe%?㫹)#{XϲC>cΙ(u~ wRNYMSLSge_(؅J1BһH=AJ Ӑn^ #yD?wlqH}^t{+^@1_A6EJV]Z 򑪿)C2韹briқFXu~b7}{~ ӎ#o@ Bu>Yc]Ru9j H2:bXB-KGP@VLRRNUkRl0VɁ4)q+/nALWDJXaWnaV:4V~$3)ὃH6^h\)ͼW%SKA.+3m1)L?7$D]Y\oC@nR3@Q)CdښDߙ!%*>R P<nVI`f5C[5#) u)3K>m̈́a{̇JϊUv44zolrߖrC[1 %>P ͌i1H )j5и4 xr|RAʾl>^>yѣ^'5L`ۇbo&=YW1U?B;4oD)6UEHf)w/7Y׬kW!LW8R!NJ9*RprHyw7X^y!_]lOc̅JHK1O#(B{iJ9H0D`k"fHy}GJVt#IH*_|Dur,2m5`3d;J+XYgF)cBFԎH|o 6Px`L1D"$?5)gZ ߁>r"R^Qk0RUj&׽:ֽ̂2QEJjtJ3FEL\[ϓe͔$h!%/B;׷H:l5Z+"dv.ܛ%xAn99o!PJlCz&Rc<5m-kw pyK SS{܇sR=CJ=> [ 5>@c=>cKz8PklR}aHS͇{kgohBe.A?4De=JR9br?R_BB7}kB1:M.u&~ Rtzz N?0ae$Rg 츊UV5+(j*ŮBJq?aw'  /!e Q(z&R ٟ7&ulWbr/K:"Mn3}PƱl^G7\rYfl{'#Up-Fr2BRLkB *!YQ橳pbfmJ/6[%ܸ2Cw4J)XR SXu3u6R#Qg %v7vtJHy\$/}FvW&; 7)N< d=gH#NzԂ2)"(#%BP&!a:nJR4!k=v~_W5c>\[B'{R{H@&H2ۯмW9HyO/q<ߢOD%M+q) -|_*լl$Wߨf-Sxsn %As=#ٖ$HW({ BHGq)L[rxbz ›ZZ1H)vs#Gu6qB$ID$> ѓZG+gpmk Q@^CP89T):A"H4]kGYbx˽E̷!gHOngVc n ?)z I?hs'TA`U VpOeދ!3$I} Q-&G˔ +g"e]0Rb7`XTTt6I$.`<8f+7"Cw%ى9 _YR~ RWR$$)U?B<@WOGf̌o2c={=(D"Ihآ#>=OrCOH eu((R HsbV$DuX`UI-.60 cá:IyL"I;('ۊbD7\8sf& "W-`q)OGʙ%+Iҵ:?f܏ s|#%SӁN|G'%o+|hOx"7»tAW+^tğ彋6g0}F,ygëmF)5 \#1CO@ |<ȼuFPF<8`Xwrևt )3޴!ś~&ʏ:MZ HIUI=K &i)[Ԍ)[ȏ`OPn`NK>wb4AϻϢ9aA.AJLf c5.Ӹ#K ņR.x((1mXQ9U#} nSAw!eYIr)#Z9'6#?Z)2+gҔa @z)[>SR-SB [m6r6ےHz~ v@ EE%g4dE/':$*~U'MVB6v݄9;R,@ " d5'޿ i'D)| /]4S,Ow5Rryխ!v݃bQJ1EJ$>!H[SH})ebp$xC͇PXjFQ;fu:7k ;(I)գ Z+{<`"zp7@ku7Y9R0_HiP$[=om>nG;!w`v^7{ƚ](375wsz뚅]fMd9JZ EcfHQ% {9Rb c|Sd5,R8_xۺ?eky]P >k/R8ͱG[ψHŐU:ڗ߄MyJlS)^u б2FCׁA D8&( 1?k3f=RE R*k5VsF|rT셸Bϝ)znH E aJ) 17/t܈ʭa!N=Zy)'P(RȖRQ@j W2݂ջVSIE'cַ!nv-FJDe q? waq)]VΑK8wZCJtKH;SCRwj9"+dn#|Jt-V\4{D7nSR~y]l݀^={ -%0nӰ+S`~7msE Zi89M͕ĭRb;z4a[nLBp{8^UJg׍r/EʻgD /4 )3xT]h0R¨0Øֿmcnaёn"0f|/iLXRtLfW{ǀ Ã؊ YiQ^&a.2ebx!l!LzWjo{-qWo^߿Ҟ2O@JGikK7 kg@ 5A}CxY)ݖiMGS,pSUSsm>@ MQO_QS߮\qKHoA.'dN+b;!!("YcoJH~ 鿀*1هN)qh;Ս.=܁e')[#- ba>a 4\&&>u)hՃ)t;#}RN Yմ)Q9WU@ {o(LRpODRwWշ[ovYH1uM 4QCKE 7&Tz)~VƑ6Fʊ$}]о3dH!Jll0p܏JH})76yQEC02*TCFp`cMm. [ĴAhqHi QRHe-)# -[HyR%m>yH"rR{gY5M 0SDY<> v=Րi )44h7׏p =Cej\CH]g{\B4#]M3އPEy6gWXȒ!%"k)k[ǫ_B\A6HΖN1Rz $!Y('OyL6pBL\nWDUx42s2R6+E A($T)RYH8\ /]޽BG"񰽉~Y2PFS@b:fn UP'1$b8C |ȿ 1AQ"IYD {G59=^cbp 15"D+s;cJ͎|I4MoP*Eu * c2$nߧ`@ofscJ0D0*W.P%IR*vH'r !(5mv@{? OI Hݲi ;{BJldEm/<ϿIO1N@0 =6Tu~ A(I,oyCQȎkRUĐ0WXݷߨG? gJ)u) rd.>h M@J.\D|^]Ù@=5gJgb!A0:\Sttˉ^8okRI+䛐ślǢK_eAJ)Yx3w@)uT;Z%̎1Fe?x^=cE"݇ !Ua4 )1aJxւfcRv4<2/ 5FJIF!SD ;_o_+ 3&ew)b 7v2@&CecܣcEHc^2w״)}n{lRşr/q739V^XIP6!@kͮ}H).3Hish.kbzL1(1.|Q;vF 5x-fϢi6M-T׫lES8Ym]f&F֣r6JAH9ku`;2*F3XiEdWP|^'kJ5.(:+m[w#(B!Xo3XΔ>RֽtfClK~] GX50Rw[Ү;VjlG qR>zR }ԐlcYD銦xI )1~B/"+4JMdg+!|nTj:=Ygw`6Hpѫ;Ds?f '}2:4lJVثؼ+YA2'sטD^٨!6E)4 )G{s*f/?'v 48HGl[>8%[MGr$MMZrÐE 1FxIQӐҺqM!-;^@m[.:fɃ$вSI)BDJcHx&l0d/ N7 /c?@ar{qYRYb.5R~_RG)b-"C(bjٿ@K ٕ#Kkz%$$wFf9B"@ЬwaBYŌ+C+Iԉ}HB0أDP}gUwW2h ES HqHCÜ됂'ueH%w\w3q*f!8Kd@#V?c׽Z?ձIsFՌ$n;n~|Wo14t+|V8Rr5UX߀,JHI)Of4R<7!%znȝ턅%e',&;^} /]1ӧڛv~R&*z[Yd+dx{wNLOt#%Z7ga5wZd q¤óp 0v f9i# 2XxKj %e_J4>ŝ-"%E/hJ()ؙ:K3" %gp8hao";X$ݓYvx*T/{YR,@Z#%ШhSgEpK};7غ\6/q"%]e?-;&1^)ݿ63oi66wcf|ۚT\H)V:&y}"dϗub \-R YFZub )3x!eM Cs'lMȶzH?WR)&CfPd.n6eDŽ?1Z7Az`Uim3q_Km>={6bzڠBoCHH<| % ơؗ_h8(=r\iÌqL5< g3j}(Et<a X{([{̭e BD@ \3qӑ/4j4Hm)SKV}|tSu1_M޳-g[!S %qNRz8rC "%M: `)6 HYc|BHpH‡eLBWI4Ğ`Ȕv S8 EE{Հ)EJh`bA 3#eRX^`$Vׇ"IOG D +(#e1qH`T{K(I[H RxA@-{0ڀ);fDaH=> !E΋5vhLb))/REsɟ,W{j!G)Hr" sC`!E~r. 5#j#~ G)0%\8NH$ Wz68qŭ- XEJn <Rs GJRaMj]aaI.PV4@-ɓa9~taWFJS͆ϽQ;-HЪ@K̈́MoÀq z8. Rcˋ'<$_w|2W$IzAXbHٔBg<8l1=[Xé il]g.KOF`,IW B.SmJ1.-Ʋ•S7[ |R,@H_Hщp8f kw  Hu -qȨoAJrb)Q $IbrZoJ̕Gտ#^.4}y&R,v<+#<-I&r xi @?ŧ.>V?|J`' H9-E | ]v)~;5kE~lo().['Bt#ܟ"1Gռ?'s5|YAfό }(0\٬={$*~},`x F> )7(:BMzԓҧ.L6X̑F.R,H]ߵxHќ?Gѻ<-1)tO's%u=R=OL=Ña$}@xswkC/MUzMO Q(E4uϒcf ?:l5/Ľn5Styro0*#N^_,®CʓH /9Kʷ6LsHo˭ǶO1eHVZ+?2T6O:R}Swߥ'Ƃwczy` >oyacIVv.\8{fm}Pc nq}ɉ]2O$utߥ {tX&"%Y3ɶdrؘ q;>G jFK(IG<.#]V9(\ H a/ʍ[5̟+⧊86 )]ECJ `R*PPd ,EU '.Jbs)miN%} )ͦ@J;jiv`}Cvx1xUFs?]@PׁՅ M3moU LE_EXd޺eVrHҠ>>sb6ʐbJR-^kWgQJD%!`w ŴWCk)~VH R8^>w*#[+C׍} U1z2RLCeR@3iea< RlװGJ{7NnC^fffvrΌv{f0JI[ʡo&io.!o)15ǝI;0kf#%b$AJeJ/HYC֖: v )qBLM-d=, ZȀq 2W(GKy(c~SYt(\[Run$ZȐ`z)e0wه ::{ Yѽ$]4MO sבVeD]^%a%~+}D=ZRJ;MQv7懯):/mtļ`cRv!)NȈ #ZHevA3{2RzW\\[k/ҋ͕H(W+GN!0aA4Nv9(~5WJWQ)>S) [noZD/DJ"lHٿØToR!=s魊dy)@WAD-wqؘn:$d,8\%L1b`)>tt>ב_FeE DJG0J.[,3 Ri;Nr 3Cbt; F81BZuMyo]굝YM|]vV⽕FR@ӡǭУfR!Gد R8GJ> :"> Ke3~⍸mϤ]#!r5=P &|.gmc#m o t+Z&@ %dW*Ȕ"RiM]nˍt>ܣ: -Fuùv*)W+Lh\ YG'2ʠʜsr/}˶ʰGD7F;z/})]D dzHyvv⫀G%q<7(!¡^7+5 )јem ,#CHyWgi]66m9EPRu&K!%'RL#HٿR=EJd Wo@Je7MzM(1"2θmMg};Ċ-m*MD|C!R_CߥQ~l[oR/ ՌmB^F 2QU nH3{ B$8z-DlK{'?BmTBJMݪ"WFWZ q&ؠ pm5F[U-஦ћ*Ry tR\@y#%)T^3 &Kc9]ZaEJH)jFHp}, :fw1` Gdh]t_6#m.®GJeT`! (GJǑRO-Tv?ri< IH)f}RWݗ@ ^![V1Ǐ}nQz %U a ލ^EB  rsOYzOs7l$YUaZ =:d[-[O;1vV&L d0&r,~ZA3B׉2]!ynJH=Cvɷo)>f*Rple\ EHw|)pmA> )1FAqb<Ⓛs7n1B̿)o5hjHcG^yiLs쯀R)깪҇:"|5;mu;Jj1Bނ,!Hi[IB R\|n[H&GhIf ԅKK=w&9HP nVHK[CHL)"MGw R+z f4xlm8seH{}Rر\)tp)ǻ!Iҗ jm`"g5`~f犺Ph#{,})<({lrMDu $Iv:+ BА)FS>3b\,/(#eˮkPq$;ƵYPuYnkiU#4bq=_ i4_EJy\蹩$I9) _uXcXϱxV<XV_O0Rh#8x>SI 9PFi=HZg6՜g3> C;Ϟm>  >#H̠,G==4X>(q1 ,R蓩SUDJU't"I|I9*M (%}:Igꜵ&k[ɋ$y֢~n}; y;980'G;§#FC$I{}?R˞{iS/yd$=ZL҃l|]f-;9VCȿW,=(90dkʳnܞ&SFKf?be(c4]~l[:_D?T^sep1,gs yP'C#")]=)~>!$H1'MN^i)͗5&W4m`2w/'wh[uRF^C'i֔c%!RV1z L4yW[>oHՆ֤$>>XLZ)$tawM]>"ƽaM  dp=J1g"婸 %k2Ep2Qִ9K6ENkc"G  #e&S|2Jys'vKSw! ѶCHxUHq 17kk1;Oa:lB"">-͐DۭI)c oNF)w #r?gBq2 L ʵu+C=)Bt!Rh P|YQ (aK2Ƥ ZAf^7,50)0򩡆_-T" ];=v_׭BhgOOCJWБ({)CTIDcs`$^Yc5j˯A4uX,_Pid"`*kR *GJ)k k2‚%=H݊4hs63VvdasQp55ǂnxp7E)JD$m@$[0D ?0pC792;.~Oh{H"6~p a2<)K H9Y5ٗ61,EJ%N)…Hi,rpK9BHMT{aX'W9?11_Av2\8uInecޓuk}r{WREWk q&R"P+LS|~ړ,mˑR[*h]*~U0 E],is &kR)Ex'RXW=sM닟=v]+Aj7l3P[XA]lpq|)%>ad~Bw2'o1rvFsF"o0lHt."eu$Jܕw9*2t&&]SK\l"pð%xS$S0!e vp2Aʉ=f//d;cajJE ÅX|ٍlkrG rX}_4K.~(иNE7qɘrOr /Y[5"Z/gS[YH!e3l3)4C[䣕t_x[W/ HhwI5_hǢqȼW_h<ӛ{9sHq߯T-hsvwuװƁ9n Oo~)N?1H)8Ti^{|lžAnE=[~2RbP._m5l& L3 3[:RvK +Ezg) rܓ&{Җmv$M;Or)]ZHFy6:68RU?] }$S߷~a76l+[%i)`n6o0Nvr"rIoBߓ\-C},͵HyVp%ZwӐ);YVdHBW0RN7JNVքl3,QAJm%#260R'_BJ qv0rfD))SH n@"%dFװ+RJAQr#~}0d@QKPSGb)\ǐO0RyZ/)pUf4F|g3Ο'UH j`cEm {_ V]4"|2wt)[H78RFy}'H!HȾ ).Hޔ[`Ot)_oCCMFF4i7q))5@d“f?73!}"R-"%Xy/zH9M:iqgKwl)#H#)qE ^)s/JijU^(%__-pFHHR5bpԳ-HDbfxʵo"%jܯH]Ci Ud'-3]or$ږP-tc)ƺsLBBj: R^Rp锍HH&@Jo7$P ExK&_'28 v.Qbhc;y0haD e8BR$1*[BNaM`J&99?J4b)(bg{Y7g"$w#9 &HA 6Tbw#̧`2#]KqCq1 е .$I:ѯ8? @ Zh(ʇ[ !e %P*IҘҕ85EPO"tİ샇Zbs[2FXvh+AW| ̎ޛ0%vߋ1fioWckB C.l3)t?i{ 6)M&yY8f9Gu'Q)b)S5kQ* {-|l R` _($ceDwS^6 RNjB% t j&R8=g" )7&;̬JK%c,_Zmsǰ_/?_?Re ! VpD y[)@FI~&o**R>+56q ERT>ve z)RQr!EnP7X?!RW~pҜ{x_`q[Q$ N¢MA^B{z#o:"$1rG#c-R= $IBs/tRRDI;4ߞw:_(;F"Itf!>=_RLB@ ($I$]=oi)m+/H$}^ge3S|i7}TkZ7"I4)s.% N"H$ݠ? /P0F$ILӑR~e G FH$I\~C_QJ )'*&F$IJUWw/$I5Op |ɔ|j$I.\[/=,֦.$Ih*Rۻ#O1VS1S6I$i##ekŖHYAvAH$IH~w̛OOᑐ"It>2{x>H$ImH޳$I H$I."I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$M"I$MHxL$wfaQ$VxOb$I/ѝHG|R$I~nD% Jx=$IzC =\?InC Ig)^><:ԓ$.0˷>v`OƞH=$݄ˇ\#G;}{<@zxFi|A-S|Hu+R:m==?z6SӃFW_{R1gqLw'#j`):$r=)IO:zjθYGpOCʲaE$u R %]k@d^-6qX)2INAJc_ RPHO*F&SH[pH[)%v6Q8jP4\z|=;~Az RHP`# ϝN_|ns4zw 5?QKOzruHAs:I@xj̦F5lu5;YK* ;46H!MEJE7@xwJvmlRbȂ X ,Ȧ{[$F8Jq7> @:6iAʄ&Mn qޠO#ew#5T=r#Kb#:H@z@2ߵt\I=|ARTfڎ,o:ܘdEJC;Sb-.~[_=tU2~RC u=!%qf 1tr)Tk1o HK(R1Bە.25v׊ĸs'6ǑS{ZCۺw?nCJRR⥀h GbQ[RkI^<V ;Hカ=V9M_.f+ >A{7λG5$w\BʼZއh S]g R%pY_F )/,R]OC aDr,!lk_ؕh7`ĝ)27_UO!"{=-nzu#R] t_ꬡ "%Hk9̅BL4)H^3Ż8."䮃)R B# X۸D+7 l oF;zhZ2=Om/ PJXb*m)w(^ЗȽGJ @^r )̲.:[5'%$g ۵y*ss6a &b]|[4ueEv㫑Rf/AlsYW9dbYT^޲]oc"%3^YZZdLPpn肋œRBLw)v[{qbP}W~&;P4t:g!HiD/w#eVw@tm> !ɟ9_ U r3`|u=p"% fOj>J-#%XR-ŘTg֭}u| RS"刼JH1.J9_0$c'm\i.`F5E{.絆fPC/؟=W wGr][kyNc+K$ױn16fR6.S$=cGxHfSl T1:t2#iH!D!]5n :@zj%plv"6K`Š w ]+؃}Rf9,MĵU%_,H[ڞCʑ,9xe||mW )5᪝zA 7h"U)Ì&"j%V>W)\y]{ll"OGl|5 ]>xޯ(3gl5 %G ثo3rՑn$p ̦+ވ}_ &?wmib:^;raNv){*kQҼ^ | jT%`KC2dmBϤǣFڐ4ޮXs(X]RQ~HI֍Fz`=Rí$1#;S,<Q=β)+ D! 6 \ I|ԡf}Z(oI/Y/,SC q_{XGP]\,[y=m[f_^oG. 'τ(_rG[p'R.O#&jv1:qK-X((RDu?]"PgMHqڝ0CW!#)IDSE5e"v@}RXOl(7\42(!w ~ kߪlujHv+Q>V6 BWY^a4V,ڂ%d ُ^)$l.rO[ʍj iE(*Nm.Y );teXgAJ=$d)7H_p ]oyNe |Iζ?6_*ĄFY9իu)R,,RTU ;HplAʻ,7sR(t9)f HIXQG u>Z%z]uRI7B.U@eG協)y#x;vېB#Tq%iOOD9C2p!)qd!g/H9]_W%rA[8Xr43|)2 d0!e|z5z7\s*߈Vmbzj$Thg|~";HTҔ:rHxne#R^nwk;R9cg})Ԑ v#?HytXCn.7(|DK>dgghz2cT݁{riFtRR p$Z|5U:^%Wƍ߃w)HHsZrRCe eȐL^D:P Vr眽Hi89yY5KY*GXsZ@ʐ!?*fla?ThD(?VOfr,؅.|t(o9})C S!,{0OAH#8߀,)vtbe hbRA(Cnr;Ε SfQJ3dͤ 9!iyWw@Y^}2SrcHFѓ*ߎx]9bߝl6K-CG9=F%9ҼrCvُ~A5hΤP}"ei2&{nn7!Cn$WbtE MF/|w*Q DcļrˡkLG4IjH2An} }YJ xy.j4 żNeҤHOFlQٹѺz{g)wKXC~Ut@ 2sYX" A)xG  *%j(riR,i?A7&l}4뗇~w1y=߮`DUR0H?8dU=иM=. a8!;*"IJ ~TOSm_R*׹'Cҕ]}R![ry|g2G$ 8ēy" )A_em?/E4GSOo=w_ԍ<^g!)|BJ S_x6V $<بDT$ғ:}|gs܁ !99Ֆ%5Ԏ詁g4j'XA&,2 2Mk@3丿]'>!)teZ |F:|jg) )f)ۏg3◵xp%-2 qDM )6|5.Uu4Ve>NH%| V$eƬǴ'H_TdH E1momHq)a a s %)zlK`(Cc bbןf> EceSݽRY)?u,B`L)*++|)9kT94;EʢK7"st+)s8/S,Ћ*JJ-R*5'?o;H߿e 53WhG '̿+Hq/D+"Lꀔq"gD/:LHےߠh #Q7b*׸NB\/WW?9?ds"W!]/HrH w)_ б)RDľ~)iDz<ԟ.k-u  ^\8uZ3wxP3Ĝvnzq?p חRq۪S%Z>f>y=\imD:?tsaAyTH3|^DڎKSeN]\*yժ}[fƔR:NRk]rTܑVMZ TEH\.fq"nXCHQK!CvZ/ c}8#a}" pU! ?{]Ml4HqUāUdLucD2›0W f.K\s<)3ZoFpm;kMj,1YAjiRx|TEvMrV%gc]jѶ{,h;(gJM7r3nYNC-5Gm ^X(GF|[;8t)DG nG\M;R HI? :[ oC d&gCN({-c$m+ŊB WsT'xLo} E' ꢭǿ;\ԍHIݎsި=\-܅kS+j C|eWBM %ʀaRĊ+FC KQ"9'hT jĩE 4>Ĕ6w,{U-$_)MMb-ېD 'iH33׽f2 %>r޸jo$G@u)JΧ.[R,RkRiF[w”ӐDɃjDH1"V1i*J`&ιl+ B 'I8K#EECH̃-PWKEZKefFv["؇ܭE#ECFIX؁HX?:뀼w6Ed=IIBEh_Ydz*nNA !T r@Ԇ:eЙ\]!>N!ENH /^CuKH턔G$G P@ уzWA R.)/;rj gKhJo[x2ŝg1S3Mrzn\"`c6,l6WkԢuЌLc3Rp)ѹ;UTV/-י ERjc_aUOk~V=R6%DF8e KM3o`30hnuf9R|(ꈒ8RZ)v5ejix]+# ouMwcB6!}GRt'téS.6$=>mHL]#R(>oG(usYT\6⑒O,֎RKGRNz䗞'y[B",+o(RK cЗRtz8,nGJ: #E)qR`^ay'2@MPuDBGBD\:U"n~.p1( ]+GnH H1P^)r/EJ)M +a%0օߘItS~!zXp5E}Ej0V…24Ѵ坃HNBJ 8竉mH @7H,')Huqױ>!PD)䀕_Q&ٿR<c5ԬܦGZb@ Hc R~V8j)]6t)Y\d_Ho N4ȴ,PXAJ;cK6_=Rޟ!ʁȚېb[HC"ӧ`:hHSBv@*, !:=0"9TҨ[iD HDנ")C$iHH$gq_]KD&ӂ4K^x R{-Ta!T9m ycg mnyWSk,PJU  P8bv䉃Ď-ERsCH]:~`+?4K!Ȕ!>kpc$+j% #H&PFyiS)p&'ZbHtN!/Rzw;*O63wT6wRRyGNHCcO#; Ez=Û qo ʐ!wnĨ|H*|1d; Ի)Cc/GR>. 1>魽'д )jڳzUGJw)!CW u!]edǗˏ$@ލQ~}[<]- CC;rŒ"\ΐ!~%9Ye)ۀBHy>7:tOm}CHe0y>It2DA!%~$َ`Ji#q'r S,%v 1 me*y[s#„q+gYMviLieW\TjȐnQ^nY|m -kR?]}f(nB֬8~v7_udYJOR Q)wI 9H'oI5DYB'y4(v{*hL,Ý_{GX[2NA"eY ?Nz#e!kP~fq]wBm\}TH3㝨!R'~!J,*'aRlH)lU<ϟ4R,oH&'K6^?߅Ǐ'nӘt1Gz#K8I+af(( MՐ|E R8" w(Rhh3}̣6I͍+r=d6'IgyKgu)#sj0KRlD3R R#1enARkyN ~x8(>•%URIFd*R~F>K+Iz05m"Z)BE Z"+iۚ'4fkWJHd@R]G}UⴳX:w$Ky$|L -=H1r2ɒ)RZ~HI-q/R(IEh fOipڼ7*h1#Dy}}xHW*+HR-=vZR* d:d)ݎ^8Waws\6TFl1ꥊf/2i NDS M}{9CJ9R'ԐURz)̔g)u^E`F ř;`!(PdBo:x!:q*jR7]?&  D qo@>r!X| Kr)6YCJ,^MF\0]|I;zy)HT D/eNbVXT= )G+ܺY7r/Rl?CW-HYlCN+HXR׎ {tSݔ$1k9ⲞW~ c\n15pomU? "R^ЕLx|NVJ4Uz7\ )-CZL.F%: 7 ["2YD%Xh )Džڴ@lxpzL>rǩ.-L lZrhvWeJERS)E-R`\UjI]>X60c)ՠĸ@=;FB!P"%A|qRB#+2D cDs1r)")-HQKoS7N5X򎪩VB6jeo+H1;R\HzWW`-/ OPs7/3H(jam p34'2FZyy)O!%F.Ǟz!ϽC9!6e@++ *Xj4M҈f6()qA eR7&$(fQD,HpN: юV6.w#ܭkX '&&\]l,/]űyH ExN]'υSQ[Kj'}^ƁWH RT,;>wAJ9KyAJgx8"cI1E) ^+HqƇGJ FQݷW\#A헻 N;uWQ) e//{ B-2ήѠA\VΜ)__M]X&qC3RtBJ@И Rux!-A n>ԟ%/ܨpE;;Hjl«(f =V7tݴP)sd.-MI^ձd^\EJ9Nnc,J+%.1 W0RHi9V@c%%e`%5_D;VAYa?fhHaG{ 6['ChuwL.ݫokh([aĵ= /u) ugaՎ5e,GܑT12jEOG D3V9s0B35Snxr T*k= Fb.u;neuR~'EaA̵5{Ⱥ{HvmH "҈׌Mhlag99a܅]dGHT`oQ! ]SY.÷u`?A~^} wp M['8ٷrŇ_t$R`OF;^vjwkT!#1q!{숒#eN'aWܠŶV$5 $bb.xA_@خ~Yxq*V8ӻ"B8ĩi}#ToZRx/7sRt3SH륆,HZ)Gm/er2=fDN|xkHyj(!q@8zتo\Ԏ"f. .Me&m]oRkhli!HlوXvGiWrb}hŔ{ѨYR*2wO1,x.G=g(#n@9Z'H)*Gǫ|GkFJ6"%lBf*;Iۯqې%i(8)R9ا;j_@J&<]{rOۦp# xB3l6rmvrۅTB\ .mHQ.)p S$Rd)bU5"%)vCSEYEGR~Z|HF2tS{^ ͱ(Y41"CRgu$:&,E}Hא%) HQ5_ΥpI<`@ r>Isd +zuB)ޘd lB**59frRTr',lȱ2$W∖ҖH=e Wӧjy1/'b>ǘtIN3Ȳ*8E ;^+0#/B;u;#3&E땴 I5R!)?+>z<)[%u&*JՐۉ7(;7B9TY lGuEWpC-G]8r'7NyI&pPt.fׂPChS̱ɹGו k3! $.D-Hr# ;_d/|f `\~<=TU.l2TCʊ U2I5e)CEJ"/9·@ʐ r`'}ڪC9UxKydʫFAHꄑQ=}k:1؋22>2R mxOe @)T*į*b-,)&H,LD[H+gCB.O+nCoJf@+]GJ )/b3R^+~Hg ytQ8M Q \Ewؔ)6OHPQ{CʗO5nk;R *rև I,hª k잭"E eFCn"]}̗!e'~L\\R:Tq4!όI93Dk\6ҐH-:#>uWt4xE^?/z,;d녔Ҫ!d|i:kCHVHDrh\5{y2V {)ǩ:M?ý2M`=y1,1Z ŒDJCTbϳZƂΘ#:O ׵G&8FJرu%[K-!aM%Gsh-IZ.{*ӣծs!R~ϿC8·Hey:@rvdž :{W[ڿΟ"%\Y.>&~)˶~CX9SG:c$==ޓy]A4أGc8]RL 툔r>W:޴?ڻn>AdaĀJB:#MbրYSi>kBh84?O愑S>iۤy-!'{׭42A<HA}mX!.,Qt*J+9YxV*A2{p{92Qt㿞_)|>^h$Ph'*"CèuF`6dM YMBos cZs^* Rww!ekMo?dC:ߥ߁P)Ker}Qe0o= Vln]͜G()]:x܌Uftc^#HDqL) wUfqRCLh]cR&'}I@ނ =DJ|]{gy-Htce/Rj=9lEJ%7"ɲiߐtB 4j(jL>ՀCS]" $D^9@ {:Ci]i kZaY "jRBPێRDwp;g)vn!ypJ7GGQ$2#MG+r )tWmv,ƙ=RT0ڊ'6 E2kZfI? t Rq]bƽ) YYSt "NQ)@4/D@}wMW>_ߐ9,XG CHwVNEJs[nG))5HYVہb"[Xp~BKcSE0A¢ qtk{ʪeb3?'ǐR lkKnDJqjSFv1RU6 gHiY2Kኈ4r)x,Kjd6,b0JrKi|n&?:)S< )[.W԰䮠%ě7!/ђĢR$[\mQSۛ$4HIyn%Y_h(h+RF[AS|[N-HiY8b-Mۤ@iBJSzR6 wOݔq·iqTu''(\;EeP9JQVlj/&1Qj-TN|!"Š )k0!.E_g2e;0#սҀdE1"sلF,׼Z駑MIJE:^ K7/qg-S$XIZb)RX#Ezn)jR@%G",x{;Rw 7uakrLͫHk;r6 &qK49BL ˙lH|+$~e?R7#Ero[)V .5k\TRm@,֛##&=/W Wo@T.,~yX:E Q,ŋBJbhR@UC66Gd,euzdfj %'ҔEmP,CLBnYT{w➁ Q zS 9k6)tHlso)ox:^GX15!W 0j[U /HgD L׫z8P 0цz]r>){uOS [nYg݂wZR4-h'R`s H(A WFҾHADrDA:˛eqR^qQ;/^{NViHyO> 0W7j je.[ttk݇&JSf| VZ{71=obPJO~;2g%atEA!U%q}< )0V0sRg;,RB%{=p3Rwh=O0MU=o _/oAG"A㍚H$"*(!Vg~THi O~jjDa56-jDʫwh6[c0EN36*X%y8ҫ4tRQtxH[Rן+*$YБ-Ї;iSwR@ةA6;#C ֠Վ{8b{$.QPYWGPec`a ew\hq{1BѠKxƻvP_!%Kըވ0ueR|H2pB!ũsHSkeӒWvgftʋg O$'2@YkHnC`@ʐ! a>J"$?$ФIlEԌrw@gH)ʌήRK+̝!C Hih5)H$ȓ^?QiC=![F,Կ )e.׭)̵f,eȐc"rݠL/:aT !aZHu+gȰNBJ3b }Z]Q'lC\)ŢH2`lxF(O5iJ'QR+HUT"Gj"zPBt+qߓRߞ5`ȐIm)9QyjGy> nfuӨη"3_N(T38&{ eckl!W0(| /lAD/NwDy^5(KQmp`߇t6c].p$B>XM{:R0 H!Lq`di"GR6Ȕu1!dOH4#mLwEՠ䖕$(:ْfTѠyhGJ!aM- \FRxb!\IVDZ3]UY@qkf(=:# %Ri$ i}*j8'{n>^#a+ٮJ2dHr0zDKI~=RzLasQW/P]!C|''_\FCNn R5ҨfW Rd?R`zžZy遶!C 'gs %1,?)[)G'~)C 9O?KGDnZVD#) ۄS<Okl4v!(Ro17Ho;%up=EPَ*8K]է=*0C1dr*R}(8RCHeOqs\8jυH)!)/ !N:Dn)jTT)T dCq"'@`pKY'ڣ*KP'xhTCSXCatrW5i2 i[!E8[hCʪ(j9#H54"s+]^ꇔScRFԀi|_,*/ x5ʋB4`{$RĐ&靥PRCHQZt)I/KA7k6W 8" JmG_\Dk  e}D˫sv fťM;W.qbiurRMz"GZⲚ *@>AUlBJ/Eը I_0)IdeT#RT衕a9;yFÂ1 t&RG 1H6CO9,%H2_4_*6Bal@H[|;w+)- y̓&gRFыBd eP\z+K0LnN4 8 '4ж퐌#ݫj eBq]}>|[fn#lEBCh r#3t\; OeD&b^YLK+7 zm i4א2-3=K?.F"D$ԋCJmG^MH9*G[ZyYo i{>ё!JHe! Ru )T7T )zS`&b[VFNRޫ)-MfB qA)X:+^je/HE3%\Uf "anB nLGR0 ?S (="oAC)I\4 E6'RT8g)y~XVQTdV1>t #i뙗2s0w{,S\K/ܐ )6ZLXĭLn &в)HɴHAJ@HyVSqŽ>ư 3"ԼQX) F.H}@ʣd/""bO2p3CJ(xeT ̽5,kӺgl@ƝT7!HVV a쉋A^W8◭j` ){P+kkO͉uP=ܛp.26,>SEJ׽SFxp=OH+[f0I)HY[\£)~d]K5h*E o9dKbV_E]Bj3-+ᚒb[wU݇!$QVi ZE?w-n+Xs)si_a"Ey9BB Sgۥrlm UCyw8n5VA C")vW-Ii`c%]zxs T] fY:nDHv)[X$mQxݑxbŢmz"cث^HqE\c&8o1hGJ1jJX9R0$HiTb 9ڼpU[FVx{U=!5qҢL n >o)RD FJ{} Rd$\EJ~Pt@O7)b,S)![ǽ@~. 9$Ƕ/l3o)kxNC#EǴHYL*RR*Lկ+T)f!!wИRΠ7XNT-=wm eͅ+b vpsb!gH,J=QRRj7fP)3$)п:RS ̐bvȠP-)1rѡz Hu%VڄP JVRƝBEQ,ս`(܀rF[ RL&DlU ! O`?<2 $ LgHNUhdPHG.1T* .?h݈-H|HASn@ʿ0heHY!H|ْдk(4,puQ0KdH}Vi6 Ee6!EWT)tÔJmRZ&4biꋌ|x^w@ʐKآ_u*IÄndrכedGr,O-AHˆp~p_fA5$NTx)@ʐK$!^xao:cAW .\J)[~F=Kqi?r Y0~RkgeS݂>Rb_4X-3dQͤ/RDRG APqEEʫM-wmU7a~e-!7ߥ!0T:RXKC/vQ*VvCZM^8gD Rv#R|H)Loe1K!SudQ&`{BXD\|E>~&G(.|`Ć G"w#GphL&BDJ\,A6(! gpfa'S7Եg|w85^b:qxN2d?R/~-K9)kA(z%q,GR9n^W}Qќ0dkr:`_t52FɁ;ې[HuHy.Y7_+ 7ZWP'R`0en ͻKo˺A鲣!YPvGCK鑥uhIbH^J}j,l^C &/Of$nh!Um]erDs{RR": evvBF R]V K*l>[x -b9K&K4yNH f@xC ;BK,}!Ź RS#EwQ,IST8Ok$z W6Q%t-7A|ݡɧ/IA@tx,+ދj/'~_E[)(T61YS#![$i̟aq3] jagV|dkoh r)ʑmCJ-qyR ,pR`VYήGv,gR]tݹ P PeAᢙ\&;⁔ɇ"} ZuKR([ꁄ[BiFݰwJ{*4'N,| qo} r|)*;ܟcHoCvI\Z{"%ۻ#E.^M5&7HBKY#a&;GA )_Di " G ukr%]mFy玥۾Rt$)B2@j2) RZdb29ճUK$ &EMOAn8:ʿ:_U-ᾨ1 7!5!z"E{֝H/U2nJh7#%/#VBgqyƁbg|\(`sŰm¹>xx%Rn+)WxJg$.%~Vk R2_A')s;mHd;Rr6#T:S ͉+ T,\Њ7puiw<)WXx3/:K9.6ɤ/r "µ'ZDcd.#.*6i]Y[ 0@ c*: ::}f.d튨9S*~zbB܆s.3W|ec_>RZڙ*JueYݘBe  b@UݼeAM2mAJBd7!)?;ZRpRlӂ>uX#nKtC1؝-=t.x3t5)qjLQe3ߊp}ಱ=$HQ5s*m"3qbo0w iB `*e)#E[+!B!#" >@Ua%^30ݞB1{ovM;c$] *Ol),)-R3-&zy6C w-e@9òOɨ('mv))S$Po=xSAe r1{S4$Q2[jnd6ovmOr/6aѺH˴NĔ<_J,FV5ނ; E")FEʟP 8Y p5oqhvRnR|HiίEGv|Npu`,aU)9x2ҮDҎ)I*ȯƢDg)lbT õxc+ mD^ ;eq{ƩuR=DJliSALWkpr4Hxg[~Ze=f_,\X_RR/&q͈f$y v TZ+FV9R/r_&J{BJko8'~`" [N R_@IX!%DګfS9R@UwG jV{O"E=BF UQ3pWQȔrU{U*5˳ [~ )6 I.Ұ0aHH%B%FuEq1_!]QȑIIrڑ"Ք; E)f8Kt[[I3Er ̰'ƫ)TݪVZ fw"7!%*sP)A-H c̶u4 )l#%+XkiͪNKPj H*?4nG0ЩK 2ja:Ȑ hEgv9R42 #T°)<ٚ5;AJ3RӈЉFKL\H\ =ױWe/!ԪKvHѦm]p2x 2ugURȧtGKSKj&GLu6 IzAL )8o0qY6 |B~Y ޼M+2#VH7kkx)%Vc'X_Ni[n\YFf,R qf e7 G7K$ fNd82]Yz HiD`o4 $EQzaM"H)1! Ǒr\sSįږpF >OJc5̨:f0pZR[:9P " )-p22¡zyݛ4i>[updaJ|9)LRHfRHyOG@ʐ!^NAyD郔f{D/iOHqMj5ztġW|C6h]wCQׄHVi@ʐܴ5z⿳)l7&vh`p 5Mf$Q)Z߂It)I۪H_R A0H9*:%*uu )W#6`S9T􉑲"ҫ9 )m'|"c!Zvr|SiF'#x)$4Lg)HnYwt)QnJnk؉B?\QLuv',YrKGUD?++rD<)W*ΆDorɚ;ӱ S>9ҳ_CNȝ'y,MmĘzFTwp9ѱ9k3γFH9.)CzKm/,}}`fNEd $Nr& τ"HtNVR y?!۝z0p5+j*ehqo2w#hraR ,/yWgBM )#H9L+~bȐޒ*S{)4ىh-RqȐS~7")HtoGه~/b~>BNQ[dȐ!O.~L"%&O {2{N!yo@JIg>ZF82]z E<rǮg@"9ijDpp eG`C>-wwX=/Ӗ']? Mď5Ǐ?U{P?^y}ty ??i.ߌ EwUnwW <"fV|RY W2d鉔[uF,H6$:o;'^4Ҙχݟg(typ\aoAJ_eU`n)>樔sx@C TO=iV܍ƞoԗjo/Ǵ=,rRxRJ5oB 2a-HI:oɔ`T5 =֠A태v586ᆜ' E$/pB>+6Jnt g+#!}VQ>*3Rtd=CNzbWa Sړ%R92{}775,ʭQ)f`-.ڗzNHYK5Un?2 "B "r*;cHN}OZ|C#g+-HAHyGy6RQBkv6w*JJ=Ȣ*A+龨Ţ.vsکCrȆg!} 9)/{hVKިZE} u ֆj̋U#UL1 J~&LI tl(l~jjH9d- v/K8DXgB(Į!Q |O "V+RKzM˰Y 1a?R6ߏF:YH!N1-dL[vYRiJg2ًWe%ܸCCCcsc9I:JLB:"V|oGIޖzs褆oEJzkRt#3[̉XWdgW ) & xwM)fBJjn4wRPʱ x(G .kO%874]ބJ<MiGWw܊] 2ؑ#u\Z9`NP=H_(Ei0DRʁ>EL^[8(aC,ᾀBe1ZRdZ"!P Aj ?Rɜʼnt2vUl[s.2G߭24K#Źш5HqFvA6+-R2i3iM$B>jdl]eNFZBX)9C=$-MskJRNr8^CAXVE!!]jySaF !E;["E[?RF]dat`HQ\O5/)1Hʪ(,.n#aN[ /*BTqI \I#=>#Rكe9IJ+ᐲ _uRuv"iAʂC%+%S++Ar:達G -;G Z,oS<\"? 54y XPѶ)݈o8T50J8Zs׸J,,Q[ pqV䁔lEXcĺ)*!knPNw(&T)z?hz"eE yLpZI)&HoѨ_^o۷2$DnHv1j+zcg77'uT<CDw%;BmBHɖV~iFJCHj@Jb%JKvFK]0oE8 uO nHhG[^ @pFHY7,+4Ⳕg\gTHX~/RH6]JH둒MDY)JJ*d< )$IyRX>ďn@Ղ;Ogj}TPH>oG aɖ>)IʩHasp'R(bRvz4O# |DRRI6&@pï9݂H@16 eէ0#ѳ)z5z$*s;r?(Iv`:xIRYq[o-?m3)ػ2_J͸*#PHg(!!X#}:`ROlRv!E=3}?RĴ);!nAʾV4ho&R/HX$R\cIL!)&tR@A0}H Y YH -22D=hw/EJ?}<(L"%BTB`Hee f6#Ou2]H.fCRqʢf櫗Ӑ*_%9g&q*g Nd5aZģnMߗ&M4\^A%ۓlAdz!"Fq&hvX%4t?)F2z]rT]j8bu]H!\ e,%Iz^2&}vǂ)n3'jLX􆫔2AV%BRv7Zm)#r7gd'RK[W'J~QPS9|wuyL9q5Hfʻ@OQrOۑ2f±[# hw !Cɧr!'&HQzd|)NeI8 shsR03H2T #7(`7&T"Ӂ*SYsE\o=Kis,z2dH'?ɴ/ҿZ' $x즎6jdHy4brtMR4O2/StCm9Y_헫$5@? jCѐ!g6>F/-,()LTR`C|,Q6H5-^A5R 9Q)ҫxx)C ԥS}Lq-R p^2x2"!}~=Ĩ_xoR})|~:M"# 9&_Y&rC ~a(+ tH})}] F3dȯ!} .(M5ǟ*yL 9 )7Hc 4Ht?達ePyM(&2hBhH6v;RHu?gY`iDl/u7}? ndwW`^v;F%>9R2X6_1MC/pߌ t)6Zſ]՚s+X,sb!p? _[li$ܗd5YJY8V"kUFl㻳C>+Յ;H)9>fRKSNfMO%Xy%~#0#CRݡe<ˑ'!,6%HYiG+V_(TƖ(f^/ؿBA q\ɤW=)&oېɉH )5Ȕ!eSx 3+}0r'rĪ9 }J mHOsY=o@J7/I6 "g!Ez1ya,(j̾Ӻ/)G1@R9SP}T))vʢVK+eHw %T2`̆]'܂uOkB 4mRڐ"<}ĴcІtsbQm6|)Z')˔$83w ,W\mOnUW8\oDʮsYMmH9)Z'k>uHGN73`x߀ޓ6Q DLw¶Y1E ]_wnywe%H/C:!˄MH1$@<=Kك|oHRjeROL4 @k؄YtPvmgڀCI'[wa7h)p6ʖ,lR#RkASU#aތEbUn&K)~A{L+'Ⱦ>wC!E*$J+(nZxaKf Ebhk84*тۑwBȼ 6#Eyz:RFp-NJ8P_VМH¦[O쓚vɬKzROڐE~:-7JϓQ90gAleRw!Yy)Mn9H .MNHIHq}#;p%i jndeHg`jh%+ב[O Ҝҍ}{oR6eJ ^*rJU=69Rd UV0fud RDboF\H"'w5H&zcJEUU c!6*l%/dz{ ءe^nf.#ݝae {%ІP]!5S" ;BJp@W LW7oFO E,DwօUϣo([D:b %H^b]vԀHLH#mԥ嵮ȱXP,܎V +5#`.BSAM{58^EJѪAJyE~86 %YS) /UZ(K&&?Ae*+H ] 3.ְ u.JAs"Ғc 7ko]H4}nxy}sG c.w@ʐ6&.g u ɐ\v(=ӕ)s;6`W) ]ALAY+D\n H1)Z{ %3!% Qڹ^-ݨkhRRAR3\jnr.eVMn׊HIBVȐˑBퟐ4G:HMZKYOlҎG02VrcV#)d1>SS'5HREJUx,{7[O@jjrRI&]9E,Vgd rB0-:sʿk*lAJs{RE1]g,R4܇3܁`*ha'@ʐ!OTĈHA2 %EuwC"I>-JVUm*NH%Kl%8i22dE2 [ۿsZ7wꙊ"UD M]LKLR!E&]6@ʐ!nعu(GWIfFZ(W4{:; K*/4< R Um~64ThxOPg?F\yhQ|ݏ )>MbR =2dÄvK=z}@-H,)sP/)o❐ )d 2ϣWγW$~ΟyS8+1"r tXoTG  ,wCJ52Ŝ =E.BKupe\/c|ԬUIg}"hLlC+۪yy/ K钶 ryZ=(ހAWS)R]2ŦE#)kcRc2$ƃIE>63*R% IdfI4p RM? $r Q4QRS\:pDR;12g]GJ]NLx,9){[loJr'BӼSSg`G'Hw!N"J7ŏɆM[ yOK2'mOl0~R_y{Ɠ!iQŸ#)O E&`m- =h2y%XA}9wE7{ps8i;24yc tHo#7@6\Ӟg)=!CHR~]!/90yb_,kƑꀵDX$Y7dȐGѿ+1;hC X]7o|X\n eȐxeRV'#xMz$_]9fV_):i!>H22v^HYcj#Pz̪"%F)˄^*U]]-yqLf ?*Ϝ DS_@M]Tݠ>>ԞIruȐ7K|8&J4CQdlhѭPM)q(3 |)#:>rC9SG:S0[)\)4"E=B#L - ( (9Gn~[C￷!n S@(HQO?&S=%MC835Rd qV`ЌowE3t C/~XEJ{>؋tZ**!)萝Ε_ Ч)b } EC~P.]IYc.H>M1PelpŰF&, U O,ÈѠrh(6Nhe){]-aE)X37K9z:#GB.)ͪ7/~EX@1]gt ?7+TN}angJmEB|b RSb]pRX)(2a~b|(gJߑ.qlC/$$OwζwQE_*RПHu 6֐4[AJcUqtZh d2T E#j6Vz W-K.+0|vt)[)uFnRRǻ)R,nYF$VuS`gDRϏr[[Tt9+ӽU`6E]~LtM}=pփ7gRs{5`BYI H1y4++K 3Jv'GcZAQ%Sz!Ya)jr=ŠXyYrlC/"3L7pr7͓rDExچ8f4̱`V LHiu׋jͺR5Z1E0)*+WE*^T,Q]n+Qmv>5;$БJ^a&nfUhVm#HNHɘ"Έ|*er +OG+R`'Xc.[jH`fe͡zt)ˁkKRrvCeLѧfX#RT--g2?-צ_94)]vMśjuQq+6iS>Et6oW"G7O6FXVRP7UxL* .#F-JP&Q>-RU \]PHy'lGJSthǪ-([EBPR"ZԮ]< 6K_miKʿevO `d@&U3ּj^);Z 4/f|y'!uc+̲PƔ.Hy,2&6!iF.@Z@zf>}[ʌ"3ʸ϶ǐK K%Cn ^A^UBqʍ1EXiݐXVQmjzA %b+|SCwh5\Vu (ZYH(s Žr@!GZ5@e vP4`f!jXo\Zn)Ke{f,ΑbtC.}8]+s?o2Vf w3(M:H$?H+ԬžXpX!4`1td݄k(RVYa-HVČCJgQ52):y-lSALWT[,@"AZ`qOd&Sw֯j6)7",~ R8GJpd=Ha̫N;؅ݺhdQQp,( N NHy-2V۬])]둅{pI[ ǬM枅w)&jʐnA^`-rrH)ijݢ C*" :s +X2!B퐎m=)괱oȐ!F#ڙx[o4dBF8<=k%lb"RHpZ L rc;oA{Tl9K I` '&L-pg@\tE!CNx@R^J s>~H?ꋷNZ Z 2qӯ?v :&R|^ҁci} W!ؙ[f_Sr "AD?Ɏ\:̉{. 5ty>!. Ẽ!I# ?GE#c &7C>,5܎X/,@U?kM>|An2u; 9U!*yYti)4Jy}`8~8dȣeWy45^M$YMf<$ͿO:@-}#MҤF +B @ 8YSa>!H7EFodͿ ͽئ\g&ib݋T],7[_~Y(>|mvA#%dQsd/uAłe#O}3 @mnjVFD[sd[Q)NP̗aWmnDX`Lc݆IM$(C7#ԛ#H@CcQq㇐bnwh{$CSH,GR(!\!?N:|>#VQ#L 4)mEJfG)B?R"eU%G4 B󵵞DJ+[dt:NGLo)+KJci0 w\)P43ȭWiHa8B EEHI<Maּ}߁ >x!6y Vl)@4#c ;$Dc?+⟕d#)od-Q:$4KV?KSHk*^iq`w |8M#p,I#EN/6k!JbN#ny$+TZ mٷ2:\nuאq79 k HaFhR%C>̮qLvв1 J)Q}zW6lj$kLOͶ]*)0,$^便Udqc:^\L~oIFDH]j`BZFEڈ(8)׾ )Q6}BAD$  X>DJǕR; m;l.om'ܣ>Ξ:B.4JL&Z m\Z+VW[VnS_ڤ.^$M^wM`lW_!SopINY[a)ܟ{(-H9PlG?ӗ"1(>"9?׳4oW\.0b;0)}te%Լ V H=2ѥ?> k xȪ$ѩX#QHӺ/nhŒXb0]~3ksnl]mgEH1Fa c)t Fk%0:DtLaK"O O0'`1H@zkmw}1R]i6jv(Jic}S-3ЎwUG}߫d/[s޲:3m!EG' N9(R<(zH1Cuz̓,w$d)kUHrDmӟo/'*Y[vb .P#+Xc\:X ښ)ҀbVNbxx F>b'B7W5<> v6ew#)vb~Ux8>/Qo"4z|@[e[c]ef\c$]U:{}n}T]G-n80Y8Nm$RVh1M?R9݃pKcpfkߕK X7E ~&ϸDE _э7f?f/R;W .WbV-dr[&)HB {e;N`>P_XoiW? zSxa%)b6M޼:OR8q{bUCJlz ]+W,)KGj)fL=~ҥK;R )JߏAB,np$1@W/Bv? p2R:Cx!oahϽ5H^]WW1!Rz>~wȯҦuͯI*xqx*HFoS=zb!wSugWM,y _RzO/@HϟSI "EHaD2`v;{$7{ )^-הF /mp,^Ĵxo'4.{4 Hl5w6C dxf6c~HIj|l!H4@\VH)t)M e/L _ țQXڮMq.F@`xی9C)/$R(gucqnWHyl?.%4u&S[dlrЁ X$JFS!=fLv1ƆH?c=T58-HYm]m`dN )!R^ix2L a;aÌӑm,*0!q 4u {A5ȜRhWSHVk2Jsk,H8I )!GK&w-' ӗ;Oޠn[DX)ڠg`'l E 5ڤ R9oː6 :O )S5Ko.}HӀ<(jk lsଃy+۾o&ce E#"P.穹ݒBJu_&,|pS"s-"#"!iCHAFJ.s0O{7˒嶝J.毵`ꌾ.0#""0[?cJ@b+cH1'u~c2!<P԰6RCX`{7z9쪉ȓ ̖\6w% "R~x er;6s;L቞y 6EC( A6 )E l/a=+T "1'Cw.R 2,wd¨ &v֖zH&̝ĤApwmvM Kƛ>QJ܂o2(kBQA꣬`ٕ t49[S=ѧ&L0$ X3MaRٕ8t3+ːϟ)s%Pڱ!&F0 ɒR6aa=)x{ S8RX # R䭴:Rf" Ӷї( iQq P?JƆ2_ +犉UA(7n |ڤl 6F)xnZ#``1pv7HY 2IDddX8)5O?ˑϞ1#]KDJA0doS͕| *Ir&˷ŰH&? zH<{2d[:ÿݭf t2)|)]R~g^kV pe;ɢ]Ի2p$֨0b$ :_י߫YoN5eU7:YB W#Tp(JeRz!&zHNEz8v(%ܓeJ/Z㱲D ֊g% VeH"fw=k.R2 D}.,p˽)hAA4ѓv8ٻl |:V*btq , T R.Ф?)#H]#ףU;4W;C%aA:7(_Tv鴦URYd'BG m"NZBYH34 N$Rv+6 )3Hq 5)IH"&| RGlsջD!ȻMzF:dFԽk8Jg,:\T[qIFGQJi .^.Ca)YhҏRV8@{lb{f4Gw̖i{.{!RAb޳\x˯CJ)WL!jәY ^^ R:>> )IǚZ''%7\E %ӆ\>WsM1VH RRR̓R\uE=< ].F e̼NA7i]Jt y[C YU7C|˜5aVecO[ "!K, =wQ6Hf`kpwg;ǵ%mRJmE)-H).-.+ 2t;\)_CA6sl}X"%p]x˗!eݞq[E~!/ Кhô ))"E;q.^ t' kE#ngx :I)̑bpݳK'./Ka|J_9[HF zG*@JFI2B"{w^} D ͦ]Xȭ?ڵ"a,hdW 'pޥwJ8Ƴ@ux([7+* We.D\2|ǣnO{Hі0R0qD lt;M 1+gQg(S7)h6B4Q&XHi"'o)fk|Qz(<ٖ5{,1'[݆MS\F s =3?J0vG Gb139G3BstW;Hfwc[,Asw8ֶϬI1wۈrJG΋\±2ޞە.Y9n"$ R.1)Ɛ"6>0@! L@Bj~s?H;⻻V_f)0"l֎okKnB )EIʸX{Bgbi|6goR$LHb]FHVG"Mq!Nk)NFJ<׌O7L:%BYśhG֭DAQ|tf=]+r, OS6M#/҅?Kv dmaRRFvs901Z"%RܰVzCl?)Z(p?9F)nNE57q^.eɺʥwiIϭbF5Q|̵ -n؃ "5RF\qү,R0HQCѹ OYNt]JJG h.C>e.M&^=`/EJ&Qb)ff;@B_ܸ@I枱@ {|*F) 6ZIY"8kxuv-!=Va6 )`J!kRεmQr ˹Z6y4L yQ$4w R:HEJu)N)=RJ'^dEoaHTsj_zmMT&~9yt@C?Jy^n%n8RX2J $R*J)Vb6ےه}ͨȓrq"VH3Cʊ%" A+EF ):<M*Y5{Qjdb-X|i N0m(DaHAR6R yR$|Fcbj! .rY^5ns5:f9i7oR Q79(B>ϴ ϳ"c*Jw RHq}Ƅ{o\~biؗJ7H9=q`+35RdE?(hR(S!Q ?GR*ilZ-yK+$J 4%:w XSͽ):LBh^)Jߣs ^7.kck"An+&B j!蝎(~:R0ū.R;tx7Ӟ[%sNѐ@ -lU);"Jq9(<Бg)ĐWZ K/yV0RΗUrbCZ01B )%UH3^/QHgJϗ C #ʗyo#3|dȳˆdc2q2Ǻ)?HDrUWl }BPcar5|>j$<79MDOJoұ]MbNCz˟m}!WhX!Z hKMEz:EJug#wleB ןxT*IXϻ]+{GCú)/BJ eo㕯~&#E{d&%ZRJWf eU uS[*e]o]OW67ҿd,J8B{k]KzYD)J/^M"G\J;$T*nK41/XM75Jm4yoQ~\*J şveҊR*Jq4W\?DOVuU*J7х?u? ?bJT*CSw q)ٮKR"]Y/KxËVJ*LAJڱT* e )RU)R*J_%rH90R*JoؿBXG&SZMJRGJ%aL翞)f)Rt #EeHA,;GKRJMR2H$wTKm~W )Ry:uv3]*H?*Gl[ x,TS*5ff[ $i*-mhvbNE6ӓޙWK!%["X+|T܁=әϮ;U[- RVܾҝ:*c0HyM\2atc/= ĺA 9/2y7qtgagmT:ȧ{nlbMoѰ ~gAh%go )'|d+2u0riS)c}J^L*~aǺ Ň:an>;}BdIP܉Nk۲9hX3yyx}{Ʀkb-BJ ^B 6:݉ _-t,L cHH7íw%*m&{k䭶 ;o</M)lUsHQ+t_LHF!3!RN" ƅH@)RVmCL07Y뮶fy%RNorGJN=K둂 &/Z8tۗv=Xp^Y%"gnRX}A,{CigiV״m };eNJ뱌cz~FO_;"%f#fYBoHj˟=-jqx>hWg f!um3>D1@ h}>Q"et=z4wlOEXu!ɽHydWwDJ8x/A nKjm#EUhG[>Ճ)LChҎ*Hk/ɵ!E o}h\XQ5 0EI2Ʋ-` R;ZA!MF 7G KL5#EYHͭW/fV]0|4*ܹmAe ?q)AޓH{aH鲏P=؛e;lf!Hq[;< :=)#xːb08D9R2ւ[U7^#̗:;j|(H!OǠwA(Ґ/G]kM">zcsKLoneM+?ѼJ!-(^r%Y{tXg&pSzH!HtG,ł%@C~!RؒH922 oV>qV}D!Hr)Ƚ"2,+DʏIO'L!eSCKxǾ ڭ-#~/orU'B'}ajzH,wG&ڴfdDH|)rd|B:M߈HogWぞT0]|5_WҾ!x )UkQ~<`?@Na(^9H 9_̅Hu0e5%jb3+RBVXYS2!\?,lI~~.! O:B!'e& u1 @bpnHa=Z۳ )FȀy;|)y`N ݟu$Ɛ'#u۶ 6c{U݅F.Bv0n )/J#%Q3vܣ!L}8MG E)K(Řfڜe$2mu@*xRr+ۋ!E1Jl*(ExP/rJ7с䃆\%6 ؆i"Y݄?HR_RQG f E@RX(ԭR*~%[:sr )+RptbjOYYFʳghMď6sF}<0#Rt Rhն^ebx+hRwx¾v4R GJ3f!TzmֶߤKF/̊UɚFtPc"j#(EߞU* vx y Q4DRKkIlݘJE 1RzAU>9YDRҘdT-gJ 2P)j)Qܨ($zwH/DmTEJ6˄nWszo tRO}QJ)SDwg>DNN>qK/⾳RKbWݢ?Q0,.Bπɖ?+2) M@aRv|Qa]"W\L$ ;|0" x*3b\ܞ ^JO#g҄ 7S4uktEpQjex&说!!P/U-t_dj\ am<FKtZgaD]pgYLRzGܣ靸;waF ϊW"4m(ЁVt ]H(,ur__i*C괶OC&ԟ$t" <4Rl鏼\YUJ[vUe9 յHks.C`"ĽxxJo RyǑBA8ƪ A5پ}R)?^][ /h⎪VYAH-FA )PͺĒI`EyKNK3HCzєnc{_1m^5FXq jD/IK(R՛pu'":P`C{HKE9yԼiA"]g8E:|]aއaXp1Q )/+OA0a!m̦qڝdi?c/ZX=:I 9D.<4Y[O="\PCҚm0[aR:Q hR%Z!M _րI{<QJ3% (;2).\9{S?7HE?m\!N"EG4QR]"O] `zCX=1]VU5u^CU;wmΜg(Jy`ÊM#Y;*]ʮM/BJh 9X")9E ){)|]ĐGʪEA +bEP&8VU]$!Naަ)Z.K(R6vDT +UUt_OdI(F:HqV3`"RΑ/)D.tb<]J!lql=ߏR ΔԼC6N^`>)vY4cwJHH5v|fJՖLoL3B}CZq)rZzH7m>Rz\F8@J+Z"ɰſ<VY}(7JsicʸK7QgP34~W\ b E:vM߄[C ]&dX> slHȧ"%Q1c4m3lFfO Eΰ[| Ю E Q\v^V<3^*Q|R;-1q;"Fm9aR!HɱcH `C˯+O-KljM)j2|EQqQI"EJરV ;C-\pHjFv] ` )\{35Ș ̚!owlْI]ηR6(6g&!xP3r M*`c4Lыߐ6ΗJ?.8M>+|}m HY+e)oߊxf Ak&k;blBdK)8$RI?s"85”" ㅧzH@ꀜjn[\y~ԈqC.&3XC435HV>jO,&I1c.~9؞i;s:5n:"eÜ)2SHAtr'Z<ǭvMRR sC!!<؀?U2*uH6q^sTHUzwBAVB_=&r7O%6T }m^IQܹ Y1]cl` R2'JyhCzH]:^\&!P^vRҒC:)PfaYx' /Risak1z>RYяlfyW#EK3qgnQc &%q[{){PįO#IRڭR-HZŪNd)0A㋲zc0(RR#EI 4HakmpltP<'o7HX;YY̶:PZ!;D+Ab3؜;ߌ¢7[# %"%a){C-gqKfo>>)rwKrS|k>jRI6@CMv ɑ0-l%;#HM GH 70LcHi$]'J)+I#t%ݢ%y{]76slq)ԝ.I[n&O-Hhtb*x9Hl, 46j(&"%﮳0ERLr)+^U%+9GYw4&;=4m)ZVcƶ'W Tvyva+9e!`~ѦJ0 ♞G#-f/b{fB)_9|TO[2AӰGuRDcl*A- "]MCkҵa+28HX1k[umx0xH)=@̨kzC ; S=S%,Z'NM)N.LF`*!QRJWiFszZ8ɕ5Gql4RDlWYlѝ\+u8R_RJ?';$&_haAWS? b9읖 Sl9~͒涧#D]+&җ*ُW4YhG;|&,#CH }*U3~TdWUe>)3JL]z$ fj]?'R]i<(1b\KR*1]JQ|BJOSg=\!,SrC\1|'y{1ϞBBJY>s{me2y1\,n~+^[sS \ LC GZG›. R0}eV!EN)ZwX1U./mvSbĞ >ȁ}"ƻs[{!0EbR_ <0u" %Jy:o+F${4H Hyfnߊƥ;~+Zӈ ߐni7)xnwV;XwTym%/||r1B #ŽDGػuxjgrJSRN#H1/1#Fb0Ҍ9N )1BJRvIR(rQH9HyLF,㚟ɍBxK!}C â!+gW Hz,Gu%I*k' #gq6KIPtF)߁zx?9Ǒ.{TVNB { /%Р0|3,N@Abd&o3D }Վ,1HkMiRS!Ş-zlbL!eokB2!wc$D/Fp%)aOd0#ׇك ʗR#u).DHA+YV@aTN4"*Fڵ74}cb5!_ yLy 8'5H1G:oWvv<1(AbOR[K8SW 6bjGb14 .zb)gzyRVAowrQDJk4RJV荀Z DP5Ca6~ " ikD䙴ƃ4CvH]'WDNH1 h]ٟR(D$֍өuA rwi[8̅>8X,!ɮZW i }'R@)KFLoY^Zs )h덣({)ThjR|5M7"f8Ru;("tW.BUm*j(Ň4x` Ť0UWHQ*"EOv&vaR))})xvri/(hv6ʚK,>7ߊRN#E.eI#%$ 4Q(R7  jpʎu(9m _8Wx]C 4Na3KĞ s)r!Hݏ2XȭAԷX@͎JHHQvݧMEG:Xme_R;2 )fe7rI-=i5R: ĶdcC\N"%CM(ko=r3pL03! Z@H1q9hu{'W蟍oBSEƾqk [ʤhڕ#5PYA.L5rhG̛lz)d` %rS fEi7"גʆ3VkR>G _/)4S4CM OAJ;٥)|h) HN3[Hŗs2_NpcHjְe+סUOZW\c*hsh;b'=YAr*J]75_#>jX癝̬;(LSR\d) @6z'q~M~s^vU%iǫb )Rn; ϔ{?Ȃ6rhpXf;:& LBPYk餐"O-XxeL)W ς" LH8^YvtA,0W0)F oΜǵ,awOD GQ5ދ]H6{)p`qK!n6$+ f"pUFe*f07a|@U_9<ڴ5| s(#L})91l si`f?ZRHnH X2oAV{@ 2e)[t)Y-|lnB!FB3 I$!f*S| 2#%'-K#xPms/lz%t"ˆWn~5dH;#)d_X+-#}3B*< Ղuz+./`SI<2iiS !$*\%?k׏-V0$ &{.~FFF@n4}ވ!)q)tJӹRwq)43˦A;%3ܗ>^*[SƏ8;#ҕYg-He(IM=k-i9lf3S"\Hy?APH]<ѐr!RkWCHnÖ &= %P!RSLn0<{Wy[(R!1<)HeY(]L۾Uv+{v沮u> I]]AoY@hx=شvՎlc3Lb!&]=6*/'Y}~)n0A "ʋo !"gAly7RZhMC)z_VfZ Te ](Z6oE 'Dʐv!ZtR̝bny-r+HaYDʳ:m#xX :\r$gIlaвk nX֤Lv3s צQ 5Ŕ%@ܲO2owټ~ AM|z"Pb33BJr) )>7'SʦM kvm ";o M\/T{5CR6 !îmf.m>Sex#+ǐ0O_6/A{i'!5бU bF"߁`Kqet1v%+lK%zGIYR[Hi8 NAa8Gt")bsA OEJ[w"tceƈy\2!VXN!Ee )gR;i&rs41Rcӣa )b ;H!Psm.F4+:n^#$Sr)A>y!wy}Ha)RzQE`g!E7]ktG;vXo!j4J@#=#k+֤[:z:gc><)=|?J))#a1הD v%;e_RJ#t̒TF8HGH'j͵2 M1y:%Q1s5&{' CLt9̚ )Rf1h)GHI0VjP<|?G3`d>\@JTAmRJV+]Ma#!AlEZ-r/>mւ(E2O]cH 74.*FWJ3PgUH)UHyc"U)ouFp!8`R^|g,N$R aqW**[`upc<ȲÝSd9_4 B ϰ\4>& )A%;WkBiTd.㸍fRA]> D'Blq6iUH)>Fh.B7ф2́8WY>;~=in(RyTXCltc]  pe,Q>L1D̥ OLƇ&dSR %R+`z u,X#Nd?8QK3Dt?pJ!zS:+7dcL%gMmvP{n>Ci+rw=4.]!8[<1tY&'KiB,vhfHyW,<)] r|6eJyį6RkZ.J_)0*y ^Z`Bwo#45rҟ+>C~K}|n^@}H|3{;9Z*i9qDT6|XHߏػH9H͞~ΗJH=F(R '%57X2 @]ߗU BRmz+RlΝ ^bv!^͑ߒxJ|&[1d=z1^֯H䥵;,FRo٤#;_*] y ! %do"-͐o] oEI*8Y޲R.!q>zTįA$ ̾6PhbaQ4R|PM~CIRAG.\AjM:ﵛ'nHhtqg`l\@֧UH#;2[3Ldl4D b}Ga\`oAMXKwCZ%'RJ LNᱢc#츯Yd@6k2bSv&{tRi1HkƭB stW>> y6X㾧59[`Sx9m߶!3]~]w+|QO@J'0@HtA%ˉm}utHom˘/IkO)Ag=eݛB=4)MZSHQUKoHL?"p"ؕc@4Ӻ$=rOV)-#V#ioCG19]/8Rڍ*!{SB {ɗQ )佅"K-4S d\M 5-VNC!&zgok e7ϨvWޅ\g! W.eLpJok@o )W_5Zr_Pm&|#F4:S,ƭ }mK 5S::`Pff%@-<W2)JA륰jD ]:0=v5YqXC$9, ؚ*wc+ mڻ=nT6mlmnf#_vOB ! OG_8ע:R ;3+-Ot(BH>Bj# ȤU;"n-Y'zpL3ߣSH0 ^[}k0|51VKު5;H X ?6dnTѮ$BQ;Id=OC\S _^H#%ґ/!s-6զ X(RI# "niO#E1ROoqCtZknD!W[n zu)#dhmM$vHrůr@ Z[-o'Ŀ^Qj M9dNЭ7"v:4j{u4euKlI ;,CHYț`y"k)-\|SZ4c}Dc~l+TAv3AئuNZ`srnjߞ{ڧ6ivC.]И-ⲹκe61`Z)`ǐBaHd'hd+FW^CWx"K )[@!RHiC3GհB\+f"c͛Y8)lgu7qLrD/|Eu꿐CP!%6jC u_=/v\tDEPuQ! (N]682n(RyU4Yv/AF)lc $&eu7q )5.l A0!]JHY3 J3jpmi6_fxaBNHO OHBO#l SpRc kӵG aku)RC9O.=Ḋ$ ){fM6H9ڽ%~)GˀUgQ=٤KRR:CH; |Y!f~zn7@^$K`֯շ!%V󇏢^Rڜ1R,uJr4RJ[^XA;)>R؍DrG$RH5[1n^&h; )ifFSw /x:!WGX 7ۨ )̭g a <EF=$fm;Vgg!(RԝR"B"G}zDyΩrҺ?BJe).@ %ZDBEqߖD XnRl-cʐȜqkfD)CJZEpj R ;4܃wؔþ  9jpv2"eOM:8x wgǐօ/YȃBJ$  oo@xr۫ )Lh6U:4x?hCod"R( H-XH)}I6_S|tpјH. )#1h-vq 9G+lOl|ĔJ_)P42ڡY̦NHcئǑbNST>"'R ցኚ}UH)sH1 s.Rft=XRRIa0tOm,v+݁GǀEHTҟ4zx0HQ[bF+,Sel.V?r mv'D0ɗ6s DJcҋD],đ/VNiftף 0Hl6Rڞ琢,k3 a5倹TEJk}2a hnver$ :b~)m4rPKVL mpG:N1"f0d}Q)D&v4tdܣ#,97\\+8Pئ)u$­rФs)YF嵱m<@eȸ)Դ4ۚ3h%˽A!e{擄҃Ã(3ُ:[p ؍{ Dom.̜\|weῇS>QP#a˅$b B~E&{'D mB !RBcqqHI4=\RcH%8RՐ{T]Y㋱z^Ȳ oLn9q`W]Yb7y[7]! aA1=#`b")"3wPlxo]FB,]ڰ]Y]gŒ9St*GxYEe0`CʳvhWVJ6wTvEzRxe~yʭ)Z~l{׈+:ـttHiDfV"%iuU_!5:R^PCC Y-kzꗅW,%]F:E[dyv͒-g XaS lfq}id}R戸&gYOm>U j3,zR%b#O曶sB-pnxڴLPjأyH>VG;R}L{>Kx0^Wjil13$~wȡYB̕DŽ_K^VN~]I m%Hv4%'SHq{Hqs,fٌ`$W!eVV\)J?Zx@Jn9ɘBAJSģ~RT2J3p0RI^/A ]|f5[ͲQeQj>|x"O5]D[+z2?ɜ=08G(Bnjܳj"H>g|_n#ԅΊ`QPge -zHQKKuZ464Bʹ?vܤ=.}/hႅh+ƺBC0jdZ ǐұ&gw F:/RSHHϰ@2L"eitRjY?:[V A@XH|PZHC'pp[Oe%cn6/}!A H1 tx6HHl,aHgIA?imFMtW}$RJ)F>R X1 ȭ/0E7C"c" Nna"Rк8RzS[ifxGǢ1ȍ.{T!t@òg#[mcPaǴH'UY)ZR44zr]|Hy|)ŏVj>QGXϛ lq >GTH)8<i#PtdBa&RhoodɅYHy~SRo%< R妘veevUN3GrQR:,RjsYSM}cw;uhҦkLǣjrgv@*?X16d`^bG}Mt9 _%ukՠC vS!tRH!E/Z I )Qdw(ࠤRH!|TEke&*Y@(EJHqLI %biHVW;N&/*NR^ڒrDHgNwS>DlJ)޵ld0ŏP#ɑ}TؾRDGuA;A LRavp,$8CHUrHQl"m3FDPE)#A$ϪR:H.EHJzqHIad6RB+ %Q0v?+@!# MϯH )p%*"T&%H) kDϤ-f=Y*s ">I(ʼn9طS#T!tJĮ(v7oވElFZ xj#T$OfAr'j{l+W4).}cKENiѕ᝛M8;B.C3 R\;;VYr/cl@JX7V:OER ?R(2{?/w޳:RTq''Y)ʓ/-_nZn;|+F䭐r|.Ї/>X9^y.F?  H Hv$?{=nA~/?9Vj;ϹA>+?m{trQTlS( I+DREnkNT}tsqPƲ?Lfp=c}RA;GQ{E1߮1m`! _Qƈ2o.>)cZ-pzź&$]cbhX٦i) ڈmPL)uN]bb\D Q'_GSQ0wHi[^ 6]*}C/CMR@Gd=$||z\/=./׷Vܟ{ζ8Rq9-qul3{|$N.UVkV67Y*4+ 9uw^Rk ~suD˶xl3 Z\"a/ԕĹ?)~:p煟ݞ RHD)@LyVNbvWռ-PBw9ttYG|7;;;SQ ~49i7R !0vd_2DCSGGyjwk3G2#_%,Hb et SLG AnoQqd3_Q\>]¥[Ҧb8Z=qE}QZ"ru%Ni \m)yHyu)al=Ay:uj HAS )[|֦Chߙ )`]X5wCHAC tޏ ҧ(RpU8VMj_?V;YRzѐ4@RhxC$ x;meሯ%&h.9}_C7BFҎ;ưr30)=tJHfFԁos/ZJo7ɵ+" 0ki\7)IK\͒7ž!J9jcZƙo=aHiw8h̹H U"%\f<;ӴA.L;)ba)m_rb@v=h6]xza[trV=hw@j .!jHǒ{ZH^7+}p,${$n!0MR<>- 06L.!Inߢ,B keVxk~VFdXhrbKvU&*I@]Q|6_e&c0; v^,|)N#EU<kl >l3?9hQHb~s=)#mW8RG skvu*j\?C vxRJ7ߙˑUhRc;O%RzHFj)V~QΊZljS,q1cy )>E{ͽڲ!xt-΍|yzEtO!%ȴvLFlَ}@uUff&^a[Mѕm6*4_ljD9)t WlmkWcbkG.3[5 !U7F$|W"c`ma83bJ_"k}qH7kOEݽ9x)|2ap,SG.)aHyϭ xN=sؖ F )*1@I<1!ː2A,m݅{b5H*"YNw !ʇ"%~HkӮeτMl L<@_a0# PtL,YHw y})XY)Q; )2P4ƐMYʹaeB潣G !#uba! ‘u }6[CR@rC2G [N8:LbgZL/mmWHc*SzpH: W(GvsDyBh@f> U"V)c!EU*bS8t'-A Ex`tHk7IڛozW©XMEHѭ-Zh6?EenDO]»rN3݊.bRa+@ :+7hfV>4ǐ-;(ގ& =%zO|"FYzپH`Ո3 gJ:EYR"2Wu ))ΝJK4ƪKG`oNi&Ws@?^밿[oޱ͛+ރ :N84 25:tbrsfԽI"ɥbsH⛯RWq)$-زȅ禺 R}ӊ&4hRH1ud_ZdB3H/LBAHj(]aV4! EEH bt޻%H4L5MC)I,"cx 1Zyt@4ݭR( Qa+E&g)< )zu.g\d[+ xZvG:V,Aʺcq)qSH)J_̿jͥ⃩ma-K`E"# p E9RM jnA4.S6ڂueNC.ABRЫ[R*򚄔n3b)s:Rǥ;S"C9?wU!T*Bd ŝ:>.o8RPc$ʠOw\M3؛ #E!T*׈r_ɟp2 )R)!fXxf_}-?/z5BJTJ(f[n*Jnfd/ӟ;⛫BJT*=UD9BJT*=UH9BJT*=ǞMW!T*vQ!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$RJR4IRT*MR!T*JTH)J$BʺJRu)RH)J%HXaT*>[2R)RGJRJR4DIw#J)ARMa} pR4OH!VH9ڇQ|+#~T*} esm> 嘦J]2m$JY1u%{J_Y!qDLG bYpRY=U¤TE^ź>oՕ0_WSI:nk7+z\IT##c0/t,e~6-),lԢ8~PJINW+EeW''i01]Ze>HbeZ#*E%m1%Zە:e{PTHgVm}:)jw`RR,aڬү,V۽Hv(E7(EUƛ-QQ{͉ZJy,]J WBm6-VdnQJdP; $6YJ7R,bC Pa yUkEF)YGY;MQ-U-5 j߫,9wG]wQ ܎JX;:[)[A}%BөۖJ^W4Ab2=J1ܣ}hi/j,'QcJR:*+}{Ҕt' os;|ԮGLAQb%ut(eo+%^*YJ3J_)!=R,2]RJt)%=0,%͚*J PJq<ǔ5I_|pd6/97מU.ru4>UFR"٧=;+ǰ-; U:d)p_(ҔfSξmA<#͑D=aY6z~MVS1JYjձl?S i G9r:*mNml\42TJhW{gR2[7Z.RWd)HD7"MwWp~@ń'XnSuÕ^u47ez:ExRn~,)%RvQ)PÏ++H)%;:6]N"'[ª#_Blln FR:9?)*4cBTrvu's:c5;E**=JyyZAN hljSPl4`]:RSxZ1H:dJI ɠlsySЊvK/*u{& Ё.JITGxT~Q =A~F> R8'g`(7iTæ7U\T@)a A5g,>Ʉ;R^f)wevbbp#P X FP X @)cnJ+mP h#p̢=A)0@)0@)0@)0@)0GpP `π_IWv+%p@)p*S鈄 R^C}Q= J Q$Jyɢ/ J: 1Q >9_' !.13oRBýcN;R e:~7-##}k Kp @)!dBL?Wߪ/6ˤo=@)[48$*IyV_Ԓߥ煆-@)QFIỚĀXNWl(nJ"E_&w_R~R:K)zXflpyP $Щ\.S0IEm'EW)bLM84J~P\Wf+5EiY~T)!@+6qgpŐߥVW| @)W)nèLxWvM.9 pYP $hiJiZ2.TڊRfH@) eރRචHxA)qkR|Gp5@B#8U؜;I/R?Z=_@e׺RR !,%-,<R(,zsX䚔@ʉRVʒWۗTJa\ JR !7%UJZvW=EOLgڠo#"f5d<ݕEL1 )S`:S)IE)pA)pP q K y;%ژWq-+20\wH)QP ^,(vSd~Δ5.gLs7U)?4nz6nRM jX7-p"Ը@ūX< =jiP Hl=RzVRFB7 N?p5P P_(J\ʐp(`47 P  P  P  P @A)PGTJϗϼnJm)_8BPR "-|/׃R %CAK?c@)CǕQt ?@)mJyJ 'HqJ9Y] @)С1_ K>#+@) [?~b%| @)QO+%$¦Rf6}tPJ )p]P hr)~L-!JCtڼo>@)QMY _䒾͔R,RzF76w6eA)yI)&wYf%/I}DMeLD2f)pkP HԗPdRWvd"gRu pқL)]A)peP HQz7C)w*gzJO\vQ^4#[Ţ@) 9}r${f(Ź*Iߙf?($;Ҙ>'uǚRJTTTqEA) CB0U@I;fS)$)eVnTYR TJtlsJ.81J5JQzչ#J&EWt41M:lIw*e)RA)̼eJfRP;cP@R|ѣ;5F)\wJ1@Q+ A)#KLDąV 4tU6H)~߶RԴӄ(`@~rd|iҢ JqCY#z*HOP?UDR4᱀Q!JPJPH94@'%T,J-JjO}?gR i9*&F|rTn]#TT#I@)PwfϿ $F{շ*qz{(l`M6M*oXĸUR+*vY"n:,(>7(ePRຠ(š FkR|vhRHR3Տa.lFRΈǶ^($nJ{3,Ǐ^(}L6A)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0NHSFYf N (R`J_&(*t+]``),sD)Yw)r(R浴B<7K)܆#}R wmw3d>>{"2Q Psb(Jy?$0SʉI+0WeR_o֢R oT_=pY|z^M^?ogj}W:5|Re#|U,vq|D)fE4`}Q}(ϔۯ6^f<{ P1~F)?PPpac5D^!?6T)I341J~2F~s0c=h7bbvR+EiYKӒ8f4EQ *S'о:8T1/#<H򐸫;? H&+Zd9z>.mA)oKpT).`VQn?F)ܠZ'Zf1eV=(8Q3aFHu$/7@L6 p+E /%m'#R GZ20VEMSH$ۗ/޷v^?˞8ښy_)mR;xTSĺsR⒔d#N5 v$Fii#HWto\J)MҫW[Au< ^A)&bͱI1Tٗb}-rp 3Idz6+;z|Wz QjgB >6O)jLTQ}qJ+El̀R3I[*v,+w8+(`+e /DUA"2JIFv*ER˩qHxl곾 Ɏɞ?TS6I4 .!lbW)zPS%ٵF&ԕJy*1wU;yG /Uz8p\e -ZVߧ? qGPM8!}XCB- *TSRvf)R&1J,q; )z-j1k)(\Ð iwЭ,V.;|+剺EQ5yQ4y:j(%Wӕ*сF bRڻQ\%K1RQ^>+{zݹelIz_Քő>L(bng*(_e^7uVQJJ[}_PJ*HLc2W+ŴOie".b .h0Ԝl+sJCo⃣n(yln2,vr Ŵџ3촄&v*EjkPJ^VKXBTJsYCj^m-N.jd7xkgw_|낡O3KVTC񜰨lw cl fYk*nRz3y;R38񩭔d(EElQX1S ,o+J^#tB?ץ9G)C)|#X@"Wuk}R(/MѢO)#(RJ!TovwT)vIa{^[B@Ze]ߖ9X%~Wl/%DzPUA$ ,~}ߩ[9+ǕSJS/N9xTUJvaRa[!|cOHM޺ʺpxSG_:CYQG)=Z+tx[85]o^uCg^\BVJ(%FvMh(E\L)Uu%\)&kQY70g[mu٦S.+NZ_~%@)/3h)MfZVlkU2 AyҰ JBi6m7ݧ/݄JI4XVV+Jp-\-wݞm竾]]f&\aGR>CcgrZE@bܽ^jpG1=o+fv_RQ13RqJPJ謟5.aY\^)d_v G?ṖtsA)_C{b%b ;I\b׻eԲ))2LW)S^WJRmUBmPuh\z,*_)M)"rEǔ4^RD /7ӕPW8mtV<;pvj~iۮNRv^Jm"|=Po=Dx6'(w:"6v+JN*D;LnJy=J 9;.c9x|cRv_YE4OPCg rRR.DWfE̗9oj{2TFբD)v#ڝJ=>MHlCs*Ĭ0FLE?9 JdBR*`Z i-z.RS)}J l:ƃR~h'h';HmL[/UhLdd[)~YC)dyB9g(%E|[CP/{ʹOɋSE7ȕң%r[#(Rj܆(qJ%~DRfnP!b%ɾ+`g/Dթ21]_{TU<; ˚6Jp@)`Xָ'IQl3neJqYb5t^.jjv(gTJ3Ny#(宐ٝi *4^ v8J;W)bwJNbTFN;bMd,/-5uqP o-bbGVҬh(E2DgFNV |jwR~m"{lq/}܅pXʩ1KTϊm!J NVJW}mcd"kF:iU24o,$+gR~5-J*_x%Q0QS'*y*uRjj)築s|Y7{\aú(('pŲs}Bj_bM@(EYfp}ʧBwR~3Suu*v`͠R3~T<`p'P \SP \cP \}A)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0@)0;Ղ endstream endobj 77 0 obj <>endobj 79 0 obj <> endobj 80 0 obj <> endobj 78 0 obj <>/Length 96807>>stream x-Lm'D"h4D#H4FH$'p]{UQq9g$jw6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6ODқ&@ma}? P@gtӏ,@mi~ jI1Nj~}> gp]msAmw 26} >/j<1i6<{腯 TH`6<j/\6PD.Z1= > ң jɹ*6CP.s~?!gjӯؼDmW/^6EmNզgڜWH*+g`@nϼA͙qve9+5zŶ9?WNGAO=T\Ug?C=1yA9KS1uǦk jAڜS%s変-9 60~6ڜng\vyHm~Ͼ+E0 -c ~9b,xsQ Su{6rQ{js66`Nn>Dor^oRr{\x@lyȳCNn~Bq%tyRž)BkAD9.ivyјPc.E+ﹸroͭiPψ>ԀՆ.<6'% 60$ݹ׀;Nvt~<>jij#dHm:(x\mՔW}dgjscrPO}Am.2;nNdBiN tS.6?ͅ:^= 96ͅúgQl_ t;PxPm||6hAڹ͙ܜBm`(<6W5V?240ZW x'7P}$!9 ^\ ;kI`@mm~҆__@?&jnpC"s`D@m@̕' hڀKҳ`@mU qǼl>\  8mB`@m75ş*Cj~27@m@˻N:.c@mx)xp56@m s4g6`s 9j8|6C4V)P``@m>9o6Fz0C3H SO z|(=x>g5_086~`h@m>-ߩW0jkgz<zjyR_F`0@m>Tߞ ja<Lџ0n1Pӳ$~8۹$f>wjP|/R҇1iO."k|/6ĹмY^Qu_` @m> HMt7a,C|xaAmx6Ì q js;}o|OR9ގgMhQ`@m>_zp$,ϙ|Aj݁|7NXjsŴ' j(96|Pjד9Wh6|P_Ie (zQ#.`@m>Nw]' i gCڡ=NmZPx+bv59dq b|K3\V;+98#,zT;8\P0(7g1C\U 9顑}a;Pe]$gN9W 0{$s!7nj|טt<!4^>+6 %jA<y t @D=_+6Ho͋TUxPw Lzujb|(55 ͧ2LX 06 j Mo5 '3Hb Cj Hn.e g3 06 Sk>Pݧr5 xk9֚wxjPkwS>X;,#u*!yNacIoR$T{()R&'(=0amk># L{ņ=UXOW+pZC[BBpw)BbSF cy}ZGOM3ݞ=1V^grT7$'ueĪ4|0ӛ;yI:p,ԣSq(hraʂ6>=NW+!|wRCN6 qB: b]!{-ȳO7,MVOXx1|NXZC֌rOv$ݵͷy?ſ-o: |v4}^s+۹^;I`U0v~vMYz ٭89V(3Ǿ)aj|#j8֎&ZNxp~+~[Jg /ËV^% ;o4PޘnR<w9[?6ݖľu=mΦx'1l9%VT oS<~Gu+ghhU s\T{rXieqlr ?[Sn|,+GXִkt ܂΃$u'nfm7Yx 8w#1|O1ʐP]mn&jWg (,/X)ᓸ ^ފx]:δ@m.^"fBEg)Z=BMv`grXPlxDc۠5a5of;?"U_C4<ml}ksN9Ls-VǜDfj,=esloN_J[-+]*kp~ñQ}5S&H:վiAp݋'7>Z_VfkBʳϦGWt\8⻈M/@m9w_Mn9tN%6+L}Z/m.mPhRYV_.E88)JAMjUUb'AHS/݇_$  ȫ|Z7b{xRGi|Svښo E_Max] ŐjAs؁(Nv,҅)5FxΓ\4GH'& ik6c"qB&zw Vf~ugS.ޑnFv@_A nU;geο *B;Fvoۆjx2t8mZ\܄V֍6ҝpyڧpRp!w!™;]w>[t/4Џ! M\ j69Fg%yS$@)iNTwE^YPRhjMh 1n, 6쩜KtZ5s韭_ʴ[_@:pw4ou<ÑMl4:T/7L8 qPݝvbT!c5"T"L(Xb :/9E԰vԊmJI}6gX(/@K!mmdb4ai%t|63!AwkWU:oy "T q8(!gPnN;ûNWg\rEa<d%WVpee5;{Pn&sY9$N#\QkK>m> oB؅+ V}iՀxVέdÕv9:(h_0L}ꌋB-p`T/0҇/ғ\6uMyyW=tj# ֵKTb_ p8GJqc\~So,K$yy$F*7P 5Åw? 1&7<6)t-QO\tAܩfK/_ 8q\hz0}/\uLH@o)VPK? A3~˂U4iht"5{Ȧ+L?q !l@~ x!P_6:5_0~|:ul>sڀ@/G18)\`~[IC xuV(mz0*b3P߲eF)`(2طϜ7"]4둀0EI^>7Q VaTuN_URDL͐j^tmWGj@s`=Z j^t=@N#  X( 8Fz_x}ׅ`v$Q_>ABTmV.7#q͑h-X x P_cD9oط/T.kIbPo0WS&ˑ:`>'Pĕ/.{hFR6W `TiEb P?wKg,/4ۈp5X x P?`Jo#+$"!,j^կ;$YfPyX-Ym<k, %e.XkNЮ7pL&2D@$Ec)r5 / Oкfj^ DMǬҩGP6ڎ"?v!G ˝a[~p )YPa@ {P' _ӷmL=wQaP@딸w'm-?vo4b h=i1i< od.],=^6_#$;C mFڀcUx}\͆~уҾijcFAm@`毐^TIKCZ! usD K~Ƞ~(M=2:ޤ$BN~ɍhFXf *j@mK8%q=KIs_ڀW{c߱IJN3"W|ˣ~Pb7]q. I"Zm ho *6_- IQu"Vk@NOHm=kF9*<\p4 ' l!^Zk <]@m"E#IA WUCcmr=ڀ_$v 3Mi2ی2t6r@m_$:]޷Yrǁ|:j^ZP=AѴ6x]?q$*uI/}XnzI.&mm1eG @mx.syf7|C:)VTR@m!Xc:G HS⧓hR/Ф?#V_GڀWJ/a 6\LpM\v25Ů&Ø˅&!i63/A8Zʴ? Um 'LģrSi֥U佧`ƛ@mkif1fߨ^QTۆ*M~`/Sf]=]kLmU&(X_s0IM4Nml#xfPZorVmɓ3;,^SqX+;F뿻>`"OyT #.kDk0֜,Vnp\;v0ڦ:B*K_+nrio3&ϟq4َ4SQsr=mb;.QV%gT_./׮s6z˅GPb̂]2Wj(]g2 O&˅sEԫ 'Dp5@̭P7]/4{Ҧ?w;HÈ{ x1&Y1$S=Qm95ҿio2K' k]>x@UZf5+&mle n:Ȋ#X36dcW|9`Ǥ=#kJ,؈2"k1EFl\xMidM+~<^mLTQvkU x1&\ 6c]-'R'%{&2HI%|wsu3V k[w=: %g5J$;t@DZx֔i)7[yi F6 *ܖӠ x1&[xߧ},ֶ|<ڔnxfjQҋ)^_+NRh+zC:vPow%'Ӌ]˹q֍N!f"M2* ӕ|~2HTx_@mUjMGMe3!v?GSVZŹ7QCAWuR4iKȘbmJiLw# K:."Na:Dd?},~|EСN¤\ajDm\RDZ;0ݵv km,㽛 rIfZlۥX's29AX8_4cI]6 +Vl:uf˷%gwwKj^Lۇ2N3؞ ٙԚ^<٠)ҕak}jexid W7Ǫ]#&3aMb-oX۬%uz*9 {Uӱ'M>3 i< _Vikh]%j@<޷Y1'Ķy!i &.VuXkv;s(5_>&7Mwv.!CB ͎<=ZNRZG4lDNpQ!mr."=' -"n2e&}R/L޾P[AXmsh@usRvg#&zdH) k+=jo5ko":o'llGl\P#bWm&۸ZJ6rrß,"K׃gvӧV~#6k `L9oQ}i McfSrT[1 W |pNvMciTuEV LM\V;ƸWp`NLZ)ZDi U[[BtwܭjB4rPBY6PuM`wj@Kw"\l6Zx>HdFY]20hs\W1vjqGTs[x7voRK;rDR˶z +FS,\]S7^=PjV|0itSά~i‹3ll6y@uW Up6)1ZCgJzW>O]%&Y:n!#LR6{Lz7T9 ]&#- ewڵ)l6qt5,'݌﫶p']-'*htgc~A&!ڪ/, é&]77ʩƲm hmfAm!r;$lj^8Χމ+i3;W*^yIkW'( t6ߍ;ފ'k+/d0/\-r&v6典q/›gogV}rEW7ei_+':J6W~q<ɍ>zY"Og IO&2Ve֠qV\N{**gA.1onr+SQζ G2q՞ͬm7t\.fϼwj^(}1.~XEr?\~6D̋5Q݆?瓤˓dBL@zij, t$T3<\ͭ>I UUXXh {P8z}xT't/w=}FJڀSc>Q'nX}Wz\LEݹkw5;Sᛓ;4UeɦJ)pPBκ(Nm\|{/%OkLZ\jF0WlIUo !J@$^*5[?u/|L%i* ڃ87ͼ햄Zn4ʜL9JyC~r@*tNQ$׵ q=ku2)i p]1 }1Oym4;ٮ9Q] Yg-̕kD*r],PƐ 9VF4E.1ۛi mnMRfI8j^.m(ڷG1{`>gsJ|v&S'A`Gq6$T"URs]lh1pp]VTp45 _F|]+K+LWg-±vVjQsjzl!{.d\UyחxR4RJ!uF8V/b3k#pL&m7q8߆ M| sShAJ*Jb47v]Is@ګ OnZUMd'#i og)v;;y9 "=r_e`m Οk^; 2ntXۆ;Ej+. CZvR& VrrV>7รO/:`ߖv\97(A{+Oi?TU]'&?BO@m kHLmkk$1אO5{&#m{0UXm*Y^1RxH9ETrW;W6zQ/\UxCԺi~)3 "SN9Pt\{_9 Qjbth(-BGSk/@PUIK]Rb4HʥmF5Pa-: @|AbZ4!Ǹ,g冕}bm4 yRrf_yE+eYOz ޺Yo4K^S8i +uSRr"$qaI)6hM<|,+N{þ$=OYpݞ & C/o+0QNm)lLo$u#rkIWY<\\Qh]'&7"9!M1K>C\?n-Kg4Kj]iM %R^hM}xT}i% ?6܋A)? 2Ui(=<.]uWd5Uf}a|sPpM+vNTV_7SA4l}R?ZeߟڀؕfNC;5(|Fc<]oCKZrD&.e}〿 y%Cm>0% B>mCo]-'h5c2-u8ew|:Oj~&7ߗ Pԍ.շި`y8d|,us_ kxۀ6ŷ1 TwSFTuPBCY a#{zۑ~Ppl(TW#1ꢢp|;$tQ_oByB/Wq~Pp*WMMg>ij/ZE@F^4Sڀ[k8jXM05 nmrU c6Y nڀkjUv [w4Ŷ9:{2i=iG+~hQrۛ Y^;1UO$xEoFqz&=8 u Ԃp"M:U:6՚_4}f۬f z$PAۢ3l<";r/l dH@t4ă= cʤnSi8u.bLI &vjs,"}}5KΪ2ĤOU&ٰ%mhij\7 kFY){h]^w/ H9Vf˷9uݒ:E7햍fĆk]MFc|yH~ /mUٿI?@m 뤝| hQ$.fkF65u2m2kc4X~xcŤPpDQ)d0z,޸)6(*@Mbcq/{Q #ܚB1i0U$'\ݩ^;8HKH+h6mi$O)Cm!^:@J6ӕ?$nxͶ_.' jƏ˂E er C&~BZWF7ۭTfV{Lݘ{4|,^kjW>1ܭ+Yɔ[Utc}xN~ d4C \\Vk< S-Knf2SYvFښTK!T4L Sn^z '!{越7N X]k0r?w\cI:vY%ţ]rc:Bo3%&r+'f}ŤzΘw^G]Q;s|0jl\I@1Koyvi&p4ewJf ux[ÑbxN:8[-f^ĮNJәWly`mJ~ɍR.|e<|Dr1i!T5P0rhyskMAriՠ\ֈQF';/ZC(>Jf1ח歡pKS$کiH+3Y+#i@T+_eVp9N*v:܈y?w_R,T;"1ʹ '(b 0y? 9t,uh𤩸UAy@r7;^b*F@q5Ze(LE–zFUR`5qóbL=SʖOp_^/fq*M#oy?t6v Fr otqcjUF"\jj :$ehLbXoKM^>ɓi Z9s)~m%#']x.2j:(BF>9{,*!@6VPiζcYԬd;^t ;D.xOhˑT.۠N$=RNn4,L[tfMC`qj3 < $w1779{ǢK,*P=oZ+.LfGmjuIhidxS'©u߾#?XIJyZxTxsqB ;exq|'wd^V@m@ Q }ysW%Al@\Ue%c:&XzdE͒uuz^#BO5*C&I *>`RY9rM"D{\S@*CﺦN$J'sa/\Htk Wo@m@ۿM\sƌOvx{Z oY"nDvŮ6bp]g$EV یuvٴYhH jr'۟]fޔȷnիZWrqqPMujZ`ܴjӎ:F 2_JE.o9˂S\`@^ps9zX6g?l )2d.7MncXmlՃ([ oÑjsfOfOa+ wlO$]9H!MR^62཰lf8gr1hrfOiDfˡ^L3rc̅e;͖u&z5/{4RVHk,:+_ϚRM՚^ w4/թ5?{~qF+r_j:Z6״rmz ٴ|?ܪtƈ^n;Ϙ 'H&:Ql][Vb= V˅̳'0uW/(kJSfU d rMt" ~ͤ9 @4Qo@m@G62[ܺM%C\.2{8qtJjtSHbӕ'8J@nBv'ud%~>mP.^7\'S],rٝL+Iq6v kOg례jWڀs5T NيY8Tr N%7TͺpE\HV3v ΊPAK-o, J)N}D1YBV (u8 6l#pdݵvJ[Em*)b~zH%5*Y*Ǐ'5g[ԕ/GbFUޅԭ9ƕL;9')\Kg[Gk'U**]vgFJꪛ%/,ľ̦U_ce{u;R.?= kyxK J5.f{hC!%-E h K-̳gq?Rכ_0Kj0p?|Le[^r5.-Ϳs2߶ hΝݔkfukdbeLH'FF@h[ڀ/\Ll5n?EJצUmM+!!ontծ4"EʶNET7šκzA4h3CU4W7ikMBn7o\zШ*!u`-NzXZ:Dz*YjEWPA؅zX#EmWJ'(t ٔ[.F r}.uUn-0?mS[oZ3:6fV v Jg"I$Lmm=q4Z W1YʔZSjtk+4k/^j5g6M1FM}%LS992K՝=]9PݻITF;>o]!9l(].$7sK KO{ojvNط\p]D'<=R)M]MG+ =FqCԷ#c9$Ϧ׉ Q̥46&NDN=^S]e?(5;`6ff1ۙh&$76,6.֡K p;5 W/#z޶!if醳lwKT̳k)Wn׈&rjZ|*PpW_w P5mͳq0zp&ӢΝ\4{4sIN]® I`=vq~<$ &[oŵ ҖoF<>Μ'_!# 8M?fĐ^ffd/ G"{ņq@{ӝndsub,+Ig< 84u&ngv;.וp9_UmfYM݉Cr2 ԅFie݇#{ {mr]XzBh˅8iٴ&(HOyS2GY8QP[Y!~蹹@=SPQ4ڟ0]?E;5)%9d˒3m2yb9Zգ}Y;6ٸJOax~r !' F+;w~FNRxӅTYu,-?;y#pV^]kV>dq3ڶZ'URSwEvvXJEڴ/CvդjC ީr"ڬWU_fY7[:Y'J[Ɏ0^Xq z!SC+7ҟEz4W^<aݶ׃\~<T N12LfrDR)OZ"O%Re0s3l[~k,5} sBW}<&jδuw4{ I噩5Uņ,dy@"0&p Bv'2] -hoNkue4k6>k=2z>ZKڳG[#͢:?[lv>qדrEaVChEu2&rX:CS4}i\2HYade-t" ÊMf.&˞xIyiߜpz?Ww2TN" yר > 2ɺ/Ag&*e_wKq??n:(=]U# &PYjnŏgbI:3cKJv򮗮cO>U^.7:tvd ePiTo:?Oƕ[O)Zql >~•kȸmY?g|b%ٚxZhn0 ng ]u)jj.A!"ZLްI)gOgU+ qnaO݆PPbr|p\GwOk'qs_aX?58'N.)ط ,HLؓ$ŒIΖh(9#75Qbsq[O瓶+d"jZ^M[k)5{:Ӭ7GT {+_˯'S{Yl9Qz"mbwO 4Қ%2)\-$̢qP&Oj$9 sǶ(,ɣ\e.##{na(ot9LgVhzW裀p:KzEtl^x!ES(5W9l8MdᑋNMRvtO apҕD Z%eX?ڷKv189s3r@r33mujm<3wZnй zT_@mUԕf灯XT52Z/Vm^^~<)&S^gHN-d|Oʈ#]8ڋ:p; t]! gsk,Jx{̙}5:ٵ?drB5ǤEoIޤ_i;߄|mBt=և&.8 \Tmڀ3b(4B7sOJac1u9CYc Ѫpu=r/1{dA܅r)|ƁϜ/籋v^gFLr8X+1cMgKhޏQ˩ -*g;.x3mkuvܦKdTЦmzT누^v Hl'#j!VÒTB+e4 ZRYUє-1{DZҋBb[1+H?@gm5 _;^:cm՚lÖ"On#[Npj&]L_Ì_.FβcZ슦6#yQeҜkRGLޟtsƹl6j0*jSva.2$RRϯ{kniST-g>x8e*WU*ֻąyBDv/O6kEo+ËeڥS; :{D[395Y'.UdUʁ]`\ظ^>|zk ^?d8=krڀC R7Ri;fBH5 {]TNyU4/FDs„/dWk̠xc.kfL3n3R6܄BnBVZmg5r1im4;Kb90=UuDzB_X4q!$Wy\ZkC}끓eJc 8HZW8.idﭷ>H~UE!=uTlFrV+`x_ *З֦ZAj+_}2+;"g$$zy1`ZhX+kWpܸ g%N 7:]ՙl`T-42)8j1D6Iz1i2l83ZL{غ)s6O;h2]uVEcnN|_Q(ɿ^8%7"R MM#?o^YP%'Oh~1UQPqRղ])8IiH:hLjK3km~=׾"y%B$&L_m8͍uu]d՜18z溞*ȬiK>ۺ^zw1b/ڨs1vmlbS{Y8BҗaNn|~ 9$WbS8unRzSc@7z)6RyW^7FQUNLM- XaKӭd$nd][Uꫠ-7nG:f+dګRj%uGw&\Wr Hp2i.]Hku9)Uë8 t8qyމ'ͦSáͧ>P]@. (/ニzw^Ucn̹;GD) yl]4x'T$Arr_L?0Tؼqh5ڷ Ȱ^:5yu*GI۔I{}궷!M& \2?.ܜ .HD+KJgxGK_O$6im|.{!,Յ4OkJ\]\r&=RO2VծQF_8??z|bBsi4.nL'"j3ɔr8W'vgEkٯ3H"ve+ &Xwt5G$s-gze0MB^ЙfiQq /YYȶQ'>%8H,5EӞՏ&55["m0X㡬`WtWm]k2*3T0MϗV[rfGwuwpr9iSi.>(>2 Q#\U8k o˺6Tj$ssfԓH*[;k9if)r_ArGEj:g\:ϏLc.fߕr|wdfn{Ukf^ݵ+)S&|Fd(53ncg 86ZsWH]i9\O[D |籎 gR~6<9MSyH]OvW(>ҦCղv;SOvI$Wrqr eD%(ml-7^4|~[KY[k"Yo@MG#ӭK3iqma\(R%A  x`ҷ4Uҵ7q.vV"e23ԽXկ 1JYǐRqW~vԌ\T٣eq}˫X!8I_v$x/:1ehCd!gvUaoۻ}{*9O׾,9b^ {Ff*nt@m>гEݵ3@eO_JU7N3ԹKOþ v-|Job/{Vn|.cOL]`,/N*+6Ux8zQX9s|;]bS(dطc+{ +q c` Ѵb7nH Qڀ}I }w9پ} ߔb?{g τȑH$D"+H$D"++++##Gn&)w<-цsdRSLJBz#? |PRE|\㚘Rp`T.W.i(՚ WySk+59@Tn"3M7na-L>@&5{q5=[e膨ܿ^E\f`jzK2~uʓ/lmg˷k(s"ܠDPO}6o!W)[ WZ#H}H۪sҘ_纀B3)'T@pړ5n͔FѺ\T(m ݮ ҃c_@Mxk]S͜mj)T%3 ,/J~-Im?od[*7 G`leg_ŷ ^dSZA_Y}-8 Ym$*?a~IP^Ӌʂјk 0CslԾw mїnӽ|P0s-W,?5ql`tCz`1{@`7d\6(K=m b=rz'2Hlj~>͏ʃM6]=B sg{`6sC{ˏf&k0)uS::~&e]UٰFBކ ͈f'Bы)Z~z?>"U#σnqg6 ]1zw9tJ 5$eۆ>W$ *cE60Y4)iMj9* O6b],4 yHl_|Y*sƣW9K:M Qc ZGm#DHuqOoXmڿV sҚINY{0 (Ymnn:TLazhW)Ն0-zA0l.ȶ¢8br4~/jOشoIZ<(VʥeTߤ۰ ڬ5ái?a:NO~Al8owh[WEAA#ܦVnt,~4ܠj71y҂t6-\>W=s +\})Nmqjs;op2Ӂذqs,'k#MA>o'}=C3$Ntн$C7)Ӓ62}Vjs׹2Vlf5=gxN&NKGj^3hxMazae۵`D14STocߏF[0L1:js]C8~P`O"iVV+he O<'x_pI#i~٩*o6I" Ҏ`;?[[4 $65%#MF)#tb,4PJhUEiuƾUiCDRd7E-iOĩڌP)2 `UjTy-ֱ"m=iv'x]Mj46ы \Ǟ 3=rXA7Ww[O\J8k>a@k"oF6dB [H@F 2@\v\CdVUUMlH] !!mq/ݤRy2oT`ZC\AhaZ\*e4h}U*o^88_vΨ*kpGl"PYh=ˀJP"}'SQ{%9T9oX]I2d=sDJw{wa 6T686Eǜ3w8iZ{vLWFt "S$U2( rwҊ7E HಘvZ c\WtۢG-q1.U6P]P=r=PYe x7Yq0 :&p.?p\8[pU0>(oIpsa0AaD@hS )Z||6e04V+(@oѥ*PWޮ-H3|b}9& JQ-٦s}J& \R#PXm褥[rlvI pB;y6:#Uf7[vK*s4aF5meA()$QJSrLJ*& QTn'}&iZ>Cl}m_s"> %!|PW/2^B[bnv9/ks˸Q^NAحt %eI4Fфt_-iVQ!梔aht@fv eQhZ+ l)LͻŕԠ}_>/\J2_vih[sƜpPYeSRɞeXWaaC/JSb2D 噙 T&ȠhbS?I_i;'߀զUZ;Lm߃|PHŲuD=yPKkA.c sVGkgiiE_kA4c2]3´ Vb2yaVa/jCj~|Bq߹-aFg~|Ȯma 6Bk@8 aXm~hzrs);30? Mb&u|NE0 skBnk a ']ã=OjҷL]o=C`ڼ~><'ѕlyD-y&F0UXmܿCJѓSDզ-RSq:~]3L`q>~=s"-bDGGvP6_BmZ8$avwyzr>W<|p,?GzrI;N妭j҉bFڼH;vOw >Vg7\iǓzMCa> A8hGwf'yg5j>9϶݀`aV敩yXOēGlڴٮz0-F<=!͡rm9]wJ|x>y0j#ޠ6 k,d{U ô VbD09va/6VMFԬeAXm[Ԧ.S=sYmlMi6Ո<Ħ^m&$ٵ{ZCFݡ13oj#^yvMWi 6ueg1 6Ļ,,y;6^Xn v jZ#Xnsy+ =L0*>x;v?r0jCpjgyrLTcmer0%漾LN<[ۼs`uiVK,ÍD=wzwͥ\vr0 j"75 ΢9~1޳. 4̿Wv:~}<˕hXaw&M̧Ew4tV1n>9 tmgՆaW#bW˚8 QXm~䞷Q6G `^lw'N4tVg`N닞Vjַ`swHٸa`ˀ>]ktY,g=TViVrJf͉<lar^Fmj 0L[aqt[n>U6)9С(pʙڜl`{ޝa#x,7͋fRےpWS9`Mŧs9-?|'<۟^E;.Gssa~V-ω͛wIOmmV 6;>8obS49 Rpג_!XmθjSc(qڜ(L*vXYm)Xm|԰̷\z}`õjga`9Pm엓3G/]Q6Ɐj0Mjs̑9n38OJ?ڰm0].͇6G{yQmNb7wg R Cpyu'4 6f;y%MZ8Sbޥ6m^R|&6SoN~?=VwmNe93UN6idaaayh)ii8؏0j$(ݴܻtq0LڼƛEggڥZkM;.Xm4u0?{yBw:p:|Y5Oa^Նy K?pq] ôV-\iްya> 6癋Fi367_|wopq ôV<7Os~ݲ0Laa>E ^diXmwrnɹ~/)2 Xm7RsI_;a 6nFNTP}+x00o]fB4qH1L`aS=Ɔ/zq(o0_Նy,ltll$%c3 s6KԵKw!lHI(؛0mՆy#zWʱ)3臜 0mՆy D\wQ{( paZ z53߇Ɔr**0I^z0Նy#0b#&iSc9O ^4i 6`\GjiSc9Wi =-0bl\?T5'4i5ba zqq`61Q6(4i6e|y*6BNMf6y{ؼaaa6ly~Өi\Nke +=qXmg(W3SssL1 \x-$ 0j<Nko&rZµ jғJcaaXzOK9^.^=aXmG2[&>o).6"a V|KW`4e\S7|m, Üj<fJôp}o,'MPfpaՆylse5}i ' 9i |i, jOX=qSͮyT5Qa-6"=phؔn+?x 4 s7fUfL% X0Iq44 s?z1*7046('-DNiVt>ͮ>45YJI $6̽lm; 5Iy}UNQC9ՆyE ^g 0*jjX~{UA8,Ej<bp) .-i6#(G~ag4m4~/C3[0 s +d{@\Nܵ ôVL>Ex<-FAXaat]EmZ?~0'0љuͪfS!Xm5Q1W3W`GN\+aՆbq?!J[Vfb,.86z+pi'B!fAYXmaXm1< >C XliXm@0ԛ6iMц~ڜ 4 s(6#hDOL3 Qca sFNbg$Vc 0  a͍EAaaq޴Yz)Mgwaa¬>E Ac4KgT9dfaa\ܥeؙyjoAkQXmؤ7N`o O`adi[9TmnD 4 s\M_$9I:ª| R;0jBm͚$s.K}Gaan5jtq|\ճ0?Նaͫdԝl,JP]i 6 |{*nz,`Es9`tz56  #'HR0Mjk7ϧtU-Ɵw0Ћ`EO 6?~s/ic9rSYs/0槰Lz`?X ZrXN::ظaf`r4E73@p !ᰘ9Fy]9^HjmS"(\)3]VfT@R(Pʑ~稔s%?g*&]nvv6jCTeEA#q2 QXm[=⊀YX6"Pjr2(ЀQ" ʓUBg4@|JJcF`e,c QX0Vt6t T/0ԱQul$6ۢ/jks =n(6`kRS4yތ7{ HY#+I ؛w"0Ũ00Lt10EiF<.2',kR(" Hr*8˱j$itG]>" ]Xm:Ae4n2's'dG( +Gˆ{m8 I[C6qM<"/a>M!e1($N6d(@ 甕P!>ZSa[mq:s u~.sxi_K.4C0Mj*j1Dyg2Q'/R@,*` Z#Kb-ڏ(mB# .$3 sVbό:gv6_MG?;zG_sti9(=0Z< D;1o4Jr]g0<8*J\9_ЁQXZɱ6@:#>_ JM"XՑKv1]ڴ4\o=` %"CXc(3 :⚪p#`4T +؃WjInƼ([i2 M֦JPֲ||Vvbz;'FI)7w+q.ʓ,pJqkƍ7@Ɓ+bAn3ML+ ~Ide1z&bwj62bL_{KpdHjVc}^`ݺm{wDVr@?aaiFuXq(XV2vp0ysT]3DFPҦ'm68y  f\"Gb%2v1VeQ q$!}g]h>70ۦ`N!]m$Q,a6McV3ѡ XWDb9LZ Me0V#BAXZeשzZZl, "Yk2?զQʯo'k!a`Ն)0Y՚ IxN7d@I$A~}WA(uo 4JI8E4) w &@2g֜g]SV)'I==V=>IY]jIs vXmrN5!FkQ0~>a3_MLEVMA/4vS.{0զrJC I34.]K_1"'InY"*r3ӾôVz?H2~t"C:DT>VS InZ? ?]e.^,QY0">ӳwlwPõeo4 ͷA\Mi,/L5Y^̩z/&qVsCf`4 h=Ms@ea0|fppνȟ[/*˴=j B4Pkeef&`:f>~h*-WkOvh!'C,ǹ/kϯ&-z4+ gލ&w+$z]8,yaP 1O}f8f}XmN;ZM39/'L#< idS p%6rɢ7{J[1,hKS2mH(§MCZXrJ_#lf.v#oG|\:GxL$=2o"+h"q5p>Ң{O6u TIyڴCSמl$1dX5CYԦ `Y&W3.w]8O71¬SZw"~4ͷ1Vmw-U~S- jf1&$r5v掵m YQ9M2mf>? |MmѠ2=srf S Ȫl0?ͷYϮ?L݊ S Ds+ee&u_e6Jk=Q}DR+*'dzYb9Әޥy@aiϩgI@b,o-doE1[r̥YVP4 "0ڥ#Rwi'Jk/ח1FSߡG"yʍ"bj]PdCm%]tInPEi56A4^m34=߲a7?~)%nz›nkB:~]94Lٷ&Q86|뙅2\ʴ^]O4qhvo0K1. d[>d,DoeJ?-Az=0jmptaԳx m30"JLӲjS K{F&_4/گyakr0 37B,T pjc-;gB\`㉴ }y'=ӫ p O0g݆p[kh31T_InOVZu;j$.g qJ־銡-\%Bi[|kE^N^uYҵ/0$9h/^d4Fv[l_;ClJ -k~oـfх0zMfJ2 H&dPbbA6L0M( zS3Z`;CPRC.'멜14:]Q(ΕEk@Ur;[/Ka`BPON܇6_*YkYsi5s&lhuLc)}"T v.Mo~w |W-8S;\X/t>* dj?FFǴBU:+$jEKWL-m0ǺaÜ٨`R [کAHm.yql5kYٲ'6Np鏟>h׳/&fPbYNC n@ UT<E9DoR ;RqC7ڀcRvW$ Btcivy[9t% _=]QSdj ѱ4N}) b8侮 U0l  y1 hBԙs7yp4Z8jUhS$%BcsR~QZ9֋C 4!fXoX_$ Tjc͑ c(y섘dHDZJV^>ֹpTx#GV޶iGc35jj"BW8DzicXٸI[;vцPܸ `^>ύaZ ס郲q 974Ra0tU!yvU(P^v硝iת-ȼA^ i,PHX R*]J}Ԭ纗RݘQuS5Se XgJT ʍ0iJ ߍ>K`p9oGRLFz%z;v+BXvA+ lc)"QX.9po(oBt1.i`M#|Fk9w]ASEzc EFݼXPB\}+kӄҘju,iӹ DVSuIT4J)r i"_6CedC:ȩQ>BbUtf@ph(QO"j/*Ro8JIsI$+ ȥg$iq^}2OPġLz6_o0 {X+;N>P‡S]} k;c[x}+6B&~] _ c0O|(MD |4%g*2uYďfgJk>)V=,P) i7B7Iѻg|[.Wt`J?,pB_RhƼM+aς:)8)o\`>`-ibS; ,RFZ|bY&Hhy]QSZ""hTM]%ιs""Ie OL> R9+Q(5#94 (R5|J{+AЕ/ZJ*)2[v i-D8\9 Rtp^ؔ Rd={CN ai+7%Dc?]d) &R~-/u|ԕv怒2"X^*%ݚ(JO*@BCφx.]#V/aWΧnUGM66d(rD KdW>f{V lb5rAv<@'C06ZVbAJ:)|Q3k-E{fx t$n9 ɹ)'C+Ŝ RCKb`ra }J*Pnr8kf1.2H_ hII1ňs#C _D[vte2Qjm2Q49)Ye[ Jâ&U xw*Jb4T.\6\hk&!Ppit[yDQS JP)e]Ԟ66<jh6K J*AJN5ɇu~}c'3 H# _J(z-p}LW@3Y$ !1=^L4guei(+ π*yBg\' Gb6ap4ey%O|a 6`uPx5" 7h{YU# R|3zPY)3唦oT>ΝRP: hdDN@Hmϼn4iM^34CQ"" #ȵ/\2Ī{NshYVp6Yn @``<޼GXj06&6MK%+wT[3]i\ViU@MLJ?eQl{0tCTQnu^(:+K):ͷ8ke\|FJxwx T~= פ _,ΘC-݌\* *Ql?2IyǠ\ϐtnuU3b*nWP\M`ר)u8$XQiNfE)x7@Vk^Z*^ZsZ<{.1 V"N[q؋.tk=E#jG/ _"aKюXUrvMk -$-NT PIޮ5N{X;g*F^G5+J_P:P.OM.b t'T%l9${aޯզ1v+<ܜ$*,erU&$ ލ^{|Hf7jy糵ǣ]U*1!\/&}(jY-M2o[b6: *frWm(Q$[miF}A H=ߖ_F_˂d~VU&H"f7=jzoՌYEE!a !W#G]aAdt``1͝c7/x * fAQr+qz=)IQW%Jm GERiI*#fɩ:1eXm $ X / 9MYg0JկD=^Xg*s {hPə}b.?#[+ȍvYqʹz+B&\J%@T@Ѩ2 ]Uf|ٴ cVoVRW{@!VDd3NnI7C4UF/9ߛwN͠U8uAqy`Nހ0s >Ec5Uh^\ңkJqLeD)ܤfN>¡/'Bh\&Uyj(\.WfsXm>gjY 9yKo!;j}ۯ 'IҼs>_{>Xli6;vD h),5VA@dcmۏF1)6%0!5R*߆y,zEnIrZ^b;v0M9Ŭ}P Gcϥ3vZ 4JMD*V9aǽk4^dmxϞEOꪣEr s6e;GSuQWJ[{hbYt$MWf;k5ߪcM1"k)rW;B8J,pgR\[5,Eia-Efݢ'ywa*[d.&;%eRt4 l&9nlX].nXm>1.7p'縂RQ*yB-;dkk Mr+B4y%7 o=x DS HNsj>Q^Q,E.қwuA-)L\Ho0J#|4*@{X_ŗP3ְQqϸ^;VE 3JB=9s̶KRwbc_)j\I st%? v-FHu,R(&+HVnNf_Xm>BkdnRB{O HyRBors8|T ٵVMgsb5Na&F덡go1ψE[q}_ȯl<ז{|lp>H.8pDE_^;YɱI*>p3 I?hv41e,6Dz=P¸$iysrg7s'6W7 ?Srpع$_燞 !>JzW1ݭ5Ϡ멲{%>(8d~GT|[1"ߧ!D)}{!R` ^Bb6u.A,6)s" ϸQS8EcS} vdՂ:[rz!4Hr(EOg~7RY:Z!?>T25wG7G>ZoǂZ)4Z52 А,ir<AD^Z[W$#hQE}|z3)7,q<~`I|yqRtN 9Ql YH҂OѠX ]XjQJ)0PBt#k%z $yqGX֏txQfkÞMo7kB_|f PQmXYYvVAIGa`&_Gr[1\, 0m7\w 9wm$T*&=kXmǓ/\>po\]QXnEݘ?b̽|4Ezmv<nςZ(ܯ6T W{[ ʥI[T3TCckha6-F6(90k \rF^0Hu_(NClj(Xs2$Nk:sX1ZZPL;az=|haW55SXM(KSq*R k``(Mi\6ۤ3q[RAdMa7S`>tY/eVjtb[5KWSHK 'mt` Iq/չ/dQlQCꁫܧ. E Ialmq[˩ΗGPayը[3,EI`$60-Y̵aj!l `<4Xq.]5s4Z_V;'Rr @Rk:ASf @vRO#輠֐5$q{fe"70l0wj!ulSD=|[yhY%-s -61?O=>>02L4*tҽ=oVC%6ڞv$VzӮ)S!Ŀp0߂3Pf5^(8v!R`j*DԨ1t߇Y/Pf"ٌ"ܿfzYꣻrr$ԉ@<$'m* Mk3+cUTMcŤ![6| j^C~T@bnhNB V`4VAf[AZ| -f]A.b% 5Zݥ#o3'C6rN3"iԠ ᫨:s?NG/T=Q4z=!˃a ͧ*qzC)1>˂1.}bF+3'h+)L0RgKIE;ay/t,OCMf38bBX:/貝1VDJpr_(k:RA AJ_ANa.j^UP#ԙirAZ2/ii6rN!Nڜ9bk{Hx6ajN\yqU=ۍ0Eig39\R\w>6]U,V!Xmމ"_1Eh3BO4Y1{jRy{Xm۰ڼ,W; Y]5-u3çחm1W)0G}6BW2LSL`anjxdLʯ05J(h7?ej܄-Ppؤ['v2%3[ڼEuqZ Lam܄)Ŷ0o.s O=6UXmހ+K }'Ws07ay.=Fq?0A⤃Xm{aylB=8V)Xm^M6ͫ0)6jPAk0L 6bVSgٰ%N 0Oj"zSiM6aj`y ԛ6f@ZCz6{`yWmhF3/r*g3V^Xm^0D ؋"6;`yCHƑg7aaͳ'ͨFG0Նy6bW& 6;`yz5]8 'ð0)Lrd40?I4 6Oza?>9lڜJcnTu8OH$FѸh4FDƍFh$o <{fZ m/ӗrIIeSHhp#jٌq~Mܠish6 6\# x S3ˉ mn¿uxZI/>]EHT#mj:D:f3qe4|qnPiSMe>%asF|6P iss &գ7B ۝  zOMd|b4駗hPǧ)otؓ`jyt_xO=n07y$lot4xM)p7O8PQSԦ;=Y|-pJ9<0m PJ8JfWq+EI'Oׇx0mR aF:_Rќ8uSWZ<=9@'lZ.~/Hjpܟ3F0\ OKB%Fq7(Tc4:gIc.4Tch(%^H* u.T^5l{1u}'mHFIgtt)#zMFQ )̕WLGO;P*o$"/mht}"mbOpŧ 8u C_FRz}yJs,=/G'N>rd4|. xxf;?7K=qP%N2':$wþnQvw8\ˌ$\yA r3|$qBmwu~o8K6nǗ ynݡEa$z Gܦifg^̬92 pLMx 6p.MmLA0k#7ŧXmw7hk8PGWFpYaQO%n΁:$%Td(}"z'Nї ^;?6x7lAo(Qy8Pi#o[u?WT#IR7Pkiǿ}hjJ~?;z Yպ6.nGE?~Bx fCNJKoG3guz*o!@nM܇6 x;#ɨ4(ձ/sW校yJ2$ۜ:(oBFh?,c{87ǧMcaڇ=Fڲ}r8I(|vk0u=u= η+mRp;^(FE}(`O#h7ߧtkXL8?!me ݴYDRXmNW,&lpZ_%k޿oLf/E}:3=0_V?SǛ,M}(^? W$$h+vLg6/SDO_k!gs`:T4 w5zNsǞT\A<ќHm˨IAqW~tz+3f=?pExJU(ŏ ~]_Lv겊mlXO5P^:mt*HCO7uJ+J_f(ٜ Is(%JFB̧V08g[f/q$wTIȟqOSlO9}zmSk9b~WI$J,2Z//i>;銞M*iQ垴Pɢ'-=3> H_H4Lh0E^%2-fj:$_4✔JnlaDzpSz.23J鹝b.7`6jϷѓ[T$zx&Gς.hDAx쥗~k17"=(qX+?H#<׋ɏo4"Mrds9ApNS9L)Nn>ҎXm籘Γoq镤UěOz2)vefmJA7wt)^Sxqi?:2s\o&_f+@3/ .y`=X()VI^"!V'Ϥ'5l+]V.4&8vgq"rI-k (^7ѷ9q 0k-lb75|vʩ,lfyAN~4}Yh̆JwH{",t8xFg:0Ҥ%YlWIR[`49>^{yQzIiJ:Б9]@o@s}}jv禮mf8~R$nDa bZ߉3I}fk:?XJﵙE+v&yruaS+nqYF~Ok}Wa;Q͋~lE_5E|vJ/ p.W_g7xC<ǻJ ZSjW(ie0 nH'άcjSt'UzMϫsƿЬ/NHo06`j7mSfjt48ࣴ6et#3wL~xOayTC^~C6lYH/}:@o!]HLu%4Hjޝ3uʋX*i@{I(q|q|nM7xЗ]D|ŀPwf0xxQnMnFrPJ6EMf??*d>OG&>Q ;_ >Q8 *.CZx?6 Fw? WJq `Ǐv}tzd<_װ %|q֋kzNzƟo14ӝf}89ssp %kXm0U󴰙EշzSe݄РPۿq0D﫦.l\CtOO7%@h؄B+ߦ.w{-:Ki#~wP\h }[7M]//)"kS,n2>g2JX?=_!w"Op_x_!?6lo)&E>o^2IS(&:#q˃85W>mso|7;}oFS=w`1c4/ӑҫ)=x}8wGI e ZyJ'a| 댹SNGGtf }~SG ա9K nJ$ߌ}vKHmwhz^JڬJ'))ӗ4:6s7A3p ד^䔞ri.JwqѰW č>Q%3WG1C'7:i"/?~z2^5SX60Td^o)j*>zY.μF_sSm|nM2 ,陋c^{UU,!oN}GņU^›lNћZ9e-~l մєa_Q8Q|S,'evӽaJxI-Rғ}{K2-<đ8ȿ'R_ -nLJV1̽"r66H^;ɞ_ ˩{ #y"^6~H/^w%BтGB6 3 W^阉MneI}:{27$sd,T~ra^q&r%~GIbF8/}iMnU/c=M:N]\i=_y=(_yO,iq/)3fΙO'|wM#}ǁ}EQRz&Hk dk~@E?T,V:`4bKgቍ!t{R߮,M(,Qi y)B_}F}_ɂ]_s0Yiݐ6p]GUgwɌ[x;M:3rFHoX-?ު/Ie,ii5᤬+M' < i7"JF߃$i5j VaC mZ :"' 8]@qWOEtO[?`4^S'(B=HV!7Jݫh(9xӏF48=9+uX WzӁ睟eP !mT9f! 쫨wx᠗ z,I(kHքy*DbnS*!Ű/sUPX'i3j+o:]Cڴ%Z(R"AR v 1Z&ْo :*:i[rqSHMw[x1*jX3Sf o5bN!mZ[* BF;%})'0kt~9Gv4hBڴ"no[ c)pT L~~z'beF4tEMog2%Ol\{=yi8$ ?vx:Ҧ <)LNP'fZ/6o?]&J6<!M^թ+\&\!:}`*m^h~@5rpҦ $ߨx'j/)yV=ir2f'3R$|ʬ4B4:|[ 1Xht1"A$kNwՆ*zrtvy9%b}5]0"\Ll%kإ>m=Sqz UHYcb*<ȿCA5T7Io1dEVRXoKs#r2]@ECR ;y\[c? a mZ'i3XH'jcY6' 1^"ԵMmM v>2͇r3OjNLy&KN7Qu9tiӂxRr6-V*5 o.0c5t¨x$|i)o_mtiӆumIz?ɉq[h2lOgzs:'- W!m;Ub<~G`DO&z_,ל7 yVˤu~r9kĞ, !mpDo9<fuzBwHrd^7b<,@+H6ēMf6@ړ&P;?LRX o::ir0⭾Qv mti5_+1\{~ܣr 2gt?a˥СL燏O!mZY?5M 8I+;_ܔygo}zQRBҦz%ĥ-u v&a3%b`claxˬE(xAeSHVW?瑛0z6ƾ1^NA8BDf7UO0I@6PI$c m'}#(r0KzK. SHDu|ߺ4PX@m{-3!m*2FS.5F7^ia'zMaTr2g!mڳ[I7Oܢ'i'!mڣ6ߧ"}OeH6qcu N"mڤzz%B"Ӑ64*44z|&<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<A0HRERp\x߰M8zҮҴɾ|(ZHbJ vvehMgk/iML儴7 b^R|I#:soVHJ(Eڠ1/NZ\8& Ay's'f+5Nbbds6f؟+TAd#6שn U'-_[-pӺ=mnX_U8n̑h)8aP!,]nT"{7u6i+Ml2#mrA`Y^Bq'+li ˳OJ ; Bڠ:iS3EjƕMIvni81]:v|m̡l3;ӆ+}fT4|VFY=ii+QoܡK^fZkx^.m4x0mNf~Kǎ7iSlinNnܨڨ#W4M]HzgOV fY4ۖe9R+mjMPXTq`>r_6hҦnR[h8>`cM2KiʶH,Kby^iXV0TJV0Yu=VJ6hOߤG>=6<,jmc6QX^iGPZf2?AW(cδlA{7hҦ^i?פTn?#V;ziS w2hMRYIl?JM淂K=+mjg<=ΏR˳,)F4ƈF/Ե:yQEo T䚟5̓.+&#m,ْR ic9M >|M˷sHPl[iG|rQT]r m&Y% 6hVCi;)i#+m>>-mkmOmSV=iclњA-[ʆsTGiyI Mپ2vx=b)e~OAIӯ4ϊ|yY>:icIDWTm4m,ML*04*we_e *~Kk oZZ>mK56L OHٵMUڸj[(Mkl۔e_ŧ9JsRY8ZGd{-4m  #wl9i՝i C0Wb/-e5BI+b46ŒH/2ھ҆7jZe=m\i#sm]EmS|m"@Z^lDm-Dc%?bKBs̓Z%Ŵrxקͅ6&&U~sqgٶT7MiV/Uߑ U^B5isq.mH]9wdmzܡa="[R?WЦ߫ɴ1>gˈ:3mN,}@uRn=n=iٲYXF9iSI5qhWPYvTviR^Y+XB J֞BOxyוJSisQٴXׅ#ۨf_'7Zao# OJg.Hn+6˫6 Ikm6d.vgI5 Lnzw>K.nyb7g v y y )c+Bp WmFM mιִU=Hܝ]Kic>! Wm(w˵vlI$h{\̺y mɌKǒ\k]s7FaߗlS%uxOF#i)\fso֮ƴLAH|`G}RIZ奍2 $sV VImڋ"mJޒ;ƶVeؔ~`U?ƲI#m2 {JM:Sc>'͒1*[6RC=5xJM!mJ ޟ j# cAUڸ;ל6t6śLa6x5o/h:bvTyڸ(<βE.GwDH={ϟBg׳ZjT'%۳s"m۶ hoǕisެmlAH;@|yymmcf}"I<iwgof-'-6ʽ"U,RѺv0mUZ`M!nR *}įgF+1/gFqT!mPq=l{Yjx1%z7@U=iŅe^TJv~iMj%iS|(n w3{ q,).4ͬR~Z)W,mHi,a먻u{;vx缼enٵ"+4!m[64,gm{(2[*6_oU\t^lmꍀ]Şp⢩),r]kHepSloݴ W@v[k%x^>i#mVu6x m,La|5Ҧ:7kIiA־fEzmSf[t9d=@NWiT!mVm=iBJQymKƶ\Z$WmCHoUf16"4WXnTƍ-Oʹ.1*;Y܃#m%0a|w5u--.ƒ,?lP ljײ4liqoN U(2(*oA P^,Vy`<ŶG6@ + ׅVSRhi< mE@GGGGGGGGGGGGGGGGGGGGtTm6j*K!mUf.iYDMA0'Wxlp Li%f*>m&Oxټ; 򴹽npHwvڼ2ON;ZHk7ދxmskۛ%mɄugBw(+Aͧާ1uy[QJfQڔ6 Բђmˋ'JVI(@Mp/eL0?n铒lT{[J O{ܘAQ((p&}8m̪HBζM aC6woMS\ڼګf P/OO{q OକM/BڼH!m#m#m#m#m#m#m#m#m#m#mDE一)OAX-7K;ݷ@9WwEw~|P_6 OisOOT!^x#Kh#n|7w4F4[wOӦH0ƶ8N/˪UUx/Mپu"giE1Z- Ti=m`&GeOla2\rIvڜ[Bd*[̃bnfR9 ӆ^6es iu6PɷviS<!T$#m|6lF3:6 ,mq_o6 i Q6+=ߚ 2K:RiwMn}Q8hm|6礝 Vͧ@}c4۵ k;msH|/sIisҍr)BYڸ݅)zɸm[eBOY f&ksJ"m|%*+#Ylh3"_d60K6# 'hӼ qSU.ӦX^۸1'jlIޕ6 wm+%E;m򏛋6ָ1qSH3saNŶUu,SPݴێr|%y/Gh3m)0%8! G;v8mqcE*[AH(j7m9bZD iqg6QNOl?MO{|ͧ8xק'M7k!mF ihihihihihihihihihihi tZDtɽ7(q폼6wA4F)![d=r @{H 65駦Y|] &];sq51ӗ-)6d>.mh'mnii(4is>m*m>qM~k q-/O;ڻ?UjV:ekX⵾?Qֲ+Jh#mn#47-*.mIcAM?IK2oW1`@;^6v>oWX*L.\k HhG iS EO6Υ/R\*i륍3*r蜅H+{D*eY\ٞ-n/ⴱΒ,'lm?|}Vv_6*Ӗ74KaOہ"mtFic|oD>jRm +mL&mʲ}/tvNWV>mOGޤ¢[vi4͗7C9;*ޛ6B\b\qMSnxWVי6xQN=iδQ͹,]iSНiscQ؟Ա/h5m, Jj!+¦)JKDxGMЅuY֓V6Uv7MKhIic[rI; ]YeiYDTwe枞4W6:ݴ1MnJi]67w6@ZNME iMs 7HGmNWܐ6C/v kisǸ͹6K*\$*iXmC&?z,TrPQxmi*[K}M+rH@gt!mqc ,4MJwqsZ,Qrҭi8N'p:G^ĵuUU?mI 싳v%N@£"cf} &ߐ6PuZYؕ;mi b%Vedr'cF6>iSIi|ת}٢µ/{8'E 'lջ9|WyᑻK*)ZdqYSi{qqdEھʭg@ڽSt6Z,M6v*lnK{~ue-)n@k^6fqsfe=#¶egaXժL (mݴqe-<"@{^66ϖ#E#Hi=m2^6 |҆uIKiCqߦ|<<<<<<<<<=ZjӨ$<@ [2mJnƇ6B%7@6,ce$mߟ6קtiݺ1Kmq*;'Hmi?m.̦nXl]bX7fF,۵ۄ ּ:m̮33Z,OqW9Hi#mqc.YU5aAP?]a=/Op4]k}м҆F7mZIi'm߅4444444444444Fmq1չ'w hdQXNgi|lezk yCWh:i hKbO@׀D:6 V8p҆4x19id&Ff 8-[WMůraS'iisg!m̰(!mu8YY{wݼӚ6qj I݃SXak #_9Wm}!p'ON*:L7kXb1/_HEGir6^;OMgjM8#lۜ  l'Hn.:rh'mv6O%O,Qm7kxi+RS6 ݬbR7ImӭL{nRK,[PYۼmakW4txm{c~QCb#AۈƚOWw&f G ~@~m&ʆi1E+~dSo#6׽ 6+DL92W4pl32#.Z[t:vZ%,iR͢5(Ol34vAAo[rM|oW|f$8坲Mvl3|mG J9sk ])Tx8ظk2וT="qRWz6p~tӋl7FOvL8e#EKe5͢ YJg6(V,Z\3e⭬6f9*߿Ζ#?DŮ̚#jhm (e^'C&r)zġOSI,qmd4a`3dˊaWK۠5bUBb4zކ#m$M}m'*􎕳M"նXm 6p"͠3ئPYHP~6fj]6&l/YvQEt}*Ro7V";| F)Juk!7Vm]o [tF;9hF{J e±a(ߏb%hml$ډ>N./[=WOVtM&! ~m\Cҹ#\5mDkm:J&PdmpB6=6X޳M7> ئZ!BMȃC.t6O2nUU7lTK6$w Xc($ 2X&Pp,'̽&GwMD*֮2`wqߪM8y\dh36)_mKb*:$&_Hv!ZEк}.bgf͇ª/M"$9 ]Ř,lm#Q&qˁR86*q~|GeMFztm64q p lŽ)+lCD6CXk}v R86*$i:GF j۹Y8M8k+_qP7jQ36͍D5nnt/c&Ja6NO| ٗkQm;㶹佶[_q:nT$/%,̛YmK&lamle[5m|ɢ*XSTmƪ@ɡIMRBԺ<*Ø-7aӠ}1YHa)6Øk7Fq>hJڦk}66W*5j75z[c1ՋW^TRG JU&oE.>p gXk\d򿷱F~m\dk,OZ㗃lsdIXmUrt@MHx'4x/8z%0gm#m n͖.įESm%&h6nßGی]o]0sdD 66j`ɴqrNᥩDD6e{jH(c(I/,;l 0wPmvݗrRuK;_;ia+qfGu-g+c✐32$% W&M#<6̤qzi;6 c_.ulC;cW3eO2n`mf.Tp1UN Ha' Uw 9%3K0/EYD}E;ִ܍Tm&'^%k͜`8/ms#, J 9<qmnTe'6Dk>__T\^ɜX7cSѶ7gی~Ssm;}cm`96<lt8fm`>m`>m`>m`>m`'{ ,?Gw݆`)\>?jC<_#͙vN/fZA70ئ73-&)N ael3g'E=Y6p>6!뱍[02h죦vޱ&o~bm:qy|\ÒF$Oy&OfW8/͡Aꭶquv.O0bвvJX̷5./z*uMm 6*'dӛmd@%FhmQ}[^ܳn)b>o&ȇrQyP(}If -M_mwHMzX6o QFn^sRySyCfU^moD'e[ 6:6pM1N"\j?<ٮ ͏Hcnmlcv[DznSF62߸jI*qsyCVmsfL2LK v\R/HVޙfnF&X/&nYh8 M;xߋ~[6tsiJS[miPl6cQ%qǡ A ʦn&߰L|bn3$ ޶Vw9F.6E&smpնQMw`Ŏ$o@Q+s}M,ّ咷`6ޒlV3JnmV76em| M&YK,UngMnK gҔ9t,6J՚<3adFϮ(yUM' &VQ݆2k'|&Q6#6C:C~"͜6uTl밼!j)M86OT}ﶍ)9u<ϯئ6mľ ?V!i }%8ls[}9(Heq5摫(R8M?J6I ưUF0q 3H~Aޥm|R6Аof Fe=hgg"a8,OUPu_pX2:YCI"glσl3dy"poh KD Oj1m6&{Kv)7[74qm Cؾ=捲c5iM}L磢K{u;$Q$lp i$2u:m*:!,$9ߞ.DW6zn*iuub4^\-`m$nWL'zMt#\hEb1ntm#N\F+m ~6:RܡYbd]~N,;xɵa!T;ڬk;2Ga4lM. E^0ՅMI{3_߆୶)ҷXVB;mNÏ&ZÆ3L V/Ec;}m|MbJb&;6L7m歔mT5M7?aTuFۄ ی߳Mf* eGkv$?m6yGls=$*K$uGҝ>Z: RMQLxBPMwΌtukms5lp iܙJoK̼4M ؐnsnU٪՚6dv\-Gll yn0jd-{mdF7ۓ۬u}(lۓq7nPdM9DX*n1zug<[(?6FmRid1 mz\ݪZ%LQOU;^m.6L& zyc=ƉGn#ݜJnΐ/2H`?`5l)IPm+ LҐQO8}ImWl3jQJx43GdcG>DdMg&k-8 ?c&& o  { K \lCr6~65),?c F~6> | | | | |͏2/Jm:m~^gj}_H"zqct63<$^V`m 6&&!&m&y9D t`%!kl/Ύ!ҏo/B9bz9Y4+cg۵jl6G' A~z6&Fl3PͰmd[j?H֠`ñU.]K4F[6.J}T̚mW[o?9=#壵[}'M$N&rlρmE׸;ZeQmĖm%X6r^: K6&E눜NעS>mc]{-t`cnEvy6Uj_>b\grͱh4& @iLJ^&6Ca/WR]-ߥ3κv9mo dc8')CۤM`6ҟJK\s{mcWIlKXw 3_Tz86* m"ls,/+mө6FSa˘mʌf< h{f:nBlm&<"_\TE֔uru߯oD7}( ~ ls0C&wP7zC\/ޤ=6R~s;& xW m;weZglmb'm{uvl mF{%FrQ7I%$@W3F69"__t5 mG?Y2?dG&L7Xf 9C契@>2W}q}`|n C`).2m@ ```````$D<8l9+R-#vmΊ]'Kmn`qmHDMxI/қPlI 6'E6&q I`#Kln`L`&Ëp 6t{HĨ^ 94EoP_TnCl6cҊǂv@bpnF}t m%%.GQϣTMh ls$"kTQTRKmmԇmE`#MMNxcmWԆWmk` I韮F.d H3i6}Z_6anmbrsMm1́{Z_Gm$>/@,Rs96mq{MMu$́HۄXm6ͤ%TW{Kp@TdtʖMLj;mx% fm$ ufvhx!@`6FW;l6B́4y1Xy넀\%.xls ( /Jz;ߍm:6p Hœ+l9Sj6i\!pH hüm|m)BŔKm`m6U m.@Or6r_pIXel$~r%6@j/LITz64|.p>"Dk6?0vm~im~Ivb(?lcGXioդD!eou!D,m7w± OWuGGX0h>< ZWDe07KE*q=ҋ_Ҫ+ʦ{[m͊V[9CNsO?CL/ʝņY]8T&!T3RSu?K?Y|%tU={׮o`҆H3l9y&ejK/`!Omn fc0~l^|"0XO #v^Ʊ6_Fz"qnɶe7l<ֆyb* GeāXdpZf Hza.%b%"= .MعȖ~0G9>sm'd)٫m]b̏2˹8rF5+旻TʛBY!ڍG ICj}W*.b#gR`mvM#q֬p-?~"E2Fy)GغKVP\#9(*֨#j{\U m_mo&le1*3?nx>fZl" F͖rHkHX^K/nؒoCR<-tmf*Hj>b]܀=9זQRvMmlZ<);7j0|xʼa6eTN-mo.fvĎk$Z,[ md33q6Ioӭ);4xbpc{`Sm6۔Ctޡ Dmё"ZjrGi_+.3nHKCcH[l ů+rbtMThk6u6N7[mź_M9|Mltyd46_ǖk>㙿fKڍ}#IXi6o~ɣ)/q|,ivk6":Ċ @294=ZDmloV\ G8UDOb66x@$ ۜ4)kD] D(mO٭B8-'cTf&ը1Qؑ62}mque2@mwڦ}+U{>@m3rt֥?UuQgi>S7]1&W7J3(;94cU7fHnc^H96*lMў6]%n(qhm͢*mp%6ˣμK7hB\dWy"Jֆ&Όnh lmb޴j6agv@6mc8pm/)mlkVy{F50^>Mq%H2\.6v?rB44%w񥶑Gv񋖴[ kH!/>ra|p&um֊k]ۈ`z6it'zwmı<Cz+=}סɗ m W>[sNdu|K<솳s]&{FKiDm'4!^S6PUl],߳U|rWWȮ$xmM<-{= J6mnw4FybgꕶI~6ˏ|}ql J7Mf].;^U.Ӏtr﷽gm9m/tawmkʳ DwHm^\tmn*=6aׂ]ӷM(tNmklS}$U :md6mY+&j@mvF=YJ6zQ*5_y{Q۸+!o&i%ڙbGD'l_Ub&P-s+ IzikYzHQ{)["u76Fvj5/8mVʝ^\uVNuPƕsEjQd_6:~L#f8+CU=Do6~_m_;mQWi{WiDw{S­\=b6]™?,6}"{lL/ ll#rc%yg4l22 MkT-;lٓJm|kEڦxs챍;ؿ#lckRmDo%D2eT/۝6Zr8^FƉ$8"b[l#iN6#(Uidfj,\`x\t^[)wm9j;]tl6j/mdi9:6mLbfۈH؃h|TĎxaP|YӔЃZ)MVR&\?Qit:`[{}ZebH]ѻ6m)ll&MMa [b҇0ʓg-v 7%M/s#Զ,4FB?j,hg8mBl2 ȍGΏ!+^+m#¾勝ճG~: '5fwy vÓoMvK)m&K`gD<7)ʨFtѮMM1typ:(p>`Kwc16rc6f˦.Nm#(DdmYߐ'wwpUwlD \15YS6!+7ԉ*aJ\ŠNa@e_]Åee37Ik;fVWm/#Nen |l<~$/d59x[6v^ۨ.T ,M\ENئ3O6ۤ]mXG|&7 R8sFvT'~)܊ }xdInlgl"wRjl}m2rl~Rfljު1^>6^4`9|fL Hi4c ?1 ?;_lf?L6g }!<bCTN/6{Mv{wz <÷>!|_8]2Օh>chز/*T5 Pٖ'P₥)j㹋" QX4z/OKmVUEROݭUyN7̔3#NoL"g7/mҗs0\ۘR f+vl"|ݢbɂm!15F[Zʫۼu>4sF]3mTGXFr upVcְҗH3"lM,uU;:m9Y8 ^rwۛ{I q dJrMjT:9uIBꪼ ^]nNjmb^tqٙ8"M&# mg[K :&8h6IqTWBBPaPT"E.lW MI &91Sm}u._B٢w1~ =M[e^S'n+_b1x:68߯\]^b$hZDы 9yFd~U"Ó)BD5m#̆Ώ#:NE"YȎ@jx&QHB5M|ۼ8ߛmce2*pk(6m{K(Y܎\hF?Wc75hܹZ֕YE'F6MM#mM FYcE^ĮnFLVym+Er[㣍إEbN 8*g1mq,$q7NnĞu;Јm,aI.6ſвt:_va 깯mb+3"*Di.uОLVSow@lM։EfcB.mk6øҟc96*_!1fI]7tLmk5QОm- AM8E~v~[OTk,z2dʬiqطfm\wHLx"Å/j+AgXy^GHm6c뽩eUU6o7f򺎣U}P8bfTQ`}/lZ'fIK]Eu^h 뽀6;Tgs _dYJ`'BD|XǯhlS4I.J!n쪵F>:Q^]Hnΰε"F{Y#C)"Ϣ7+xuQ/[ FD4͑{ =2X ܋U.J$bxSuϜ5e%Y<µ[&o)fin?ѵmSjݍG/Rۘ$*O_v&XU)quW7U>]Hgs}v{=ѱ;uƄ>ѐ8C) f]vŎV ^l R6k,۠6iv=,=&aA^m5Uh>H}#:.ҚÞ&¶[W*}t#|DCC7zrS,緍Yƃlbǫ[Vw(;6m/ŽM#GJ>f Kr-5#iY#qtr=O~[j ώ>>J?7'^|1Ɣu&;zZUm\džl WfFd@ɎX9/]卣mse<6=;}UTwIԨfZ\*rF!9y2AvmF#Anǭ3W~腩>S遮 f.h{v/+FaBcF`2nH6| &!'"lI6#7q)蓘m0`SpmIS~vmWc8JZͮ᥹M3MVNUp^PΈ 8 wڻ#=uZ|sqpnƏ {j3kw%|5MsGmN'mh6&=z3٦wۦ?X<[Um^YO3 t²DY6pC.B/??p${jMG{cSfD a[Y6ȧ^P_\WN,emf(Ȋv٦R;`۪mS/{m'm]vAFN~+;V{aX<GnvM@C)߉eu^]H~9ї{6]3L%E\m챍TAUtmGtx|ڣAۨi:PRm1(w]a'md6^b_k#zN:5IrnmT7j_m6< F챎u;l㋷MrU!σSQ,I Ue@n 1'. l#F;2ZjxVaݶR,"ΫlOB6c(,YͶQA{6 ݏ]^̮ø _LЍ,iյw4te+Bv$̵֒xmwzbukuҒcmݼ6m.gtor`%_b=&l(_H|v0VOPzgO]gNd gAܔL:mw1o8_;;67\-^*D{aJVMeW ؟>j_,y6P&ƹ`$Lmo5[}Dy]̡;vE&둭ެZMT62J5ph>61mBmۿ~K4_m.m;쾼{HnUotQR/aMixdT:zO =&xnkF3ـ6]D6yt.ú n,؞@mcb><*R8.xmHjCyTjXu^gB'L4HKVD!NS m5&"ff_ydG)⼏(n y$7]RSSZ/- F|3)I[K27ȷWw < ʹ&!3{`'*:GfSgmX7&Jqı}2-Fϫڭ MChLUC gmk&Yy|F-L7a}>~w36#Op* |2S6_w~5̤|0`h8+igEOѓ0160&폅ΘȆp>V8/la|_yi;560`?96bfW4m>3~#qm7<86ǏT "pfNlsK6lhfl(Hq{Y,"af9Ûv^d/dmv6sIf; I+m.en߷=x'm(=cS26'E}/~ Uc6ѥL6ǷuĖӶVlOTzY56O/Av,V CDأ%TEf$b&4:A.$A/Gi}∈ȝH py'JzD-L]yI!\{~\ =UM6Z& [`cnrhb^mׅ |wq^Z71r6lfj^Ar/(g|/M;Q!o6F"L#& 6U0 >=m#̦l ti/v YԘhŌU)F/%D(zWeI 1\Z6$2yd>2)bhM<ٹeL6j,*"E |#IB=kЯH&.`6i`+463s"mQyn/qJ9mP 86qkpJ356E>M6$u\0WQii#Db =llf@6Lm5lgЯzj5uiƬ!z6Y]er Lml}ݣ!6krH{R)y`Y1umҌdmUho} `'1uշc& SxsbrۤsTYes>ۤ+T6!k65%=&^v6}N۸)GC8mLDCGئg6ӐmnM)Y1萞Mg637<¤ICja,Xڴhml61ʻgKdئM8C9fp ;mpH㑶Gnmmcs&ڦ=okq^foͣln^L͈lFl 1}Ml#tj|.H6bG#5`m1߬ Osl f٦"R6r)Jʧ٫ J~I"Jzi'DŽm76m7bom?g|;_y'9 `RP/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | \,klyAA7'RM|K ,z=87l#!l· _"|#>ЅM) ksLM[ԐtvlLNSf6d.-& /^Qf҆ Y6Ik۩A۬p`S36:XC"B4gki"}anÉcXnmr8#l#o*]ndL|Fӗu~L~`|PG{.~ѦCJ do~<`26[:IkZCŕPjJtAm$׸RYB6~ݐ6$?ydvIYBGe%?ѿMPH,bPX#oOniQA脘ckZK{dbg-*KrŴEuT,*۲0*bH׹a\b`・*K+u`/%I1hv!^B@f}$vZ3$o۝h66>:RԾ67 ym0q[O ygDwB+wݕD*m|*ᥬ2@pIB0V6NMMlpV&qHHD1TfۄMis;l/.1cMӋ۔wm^~hnCjpj^j$ L i }J}66>c㢶l+GUuC`cMQ ];m\\RqӶ IVݻmj1h 6pEQ9w&zIlRgDmlPT xэA)H,J}p_lX+{To_1 yo $:Zmrmthmro?z]6趌l#ϋALHFQT_\d ٦86v&-U2JYcnsY▍YT#.dNlw\Ł*'^2zQF*6cFIJ3nYM?RKMb>7DO}G6g%MV4DHOFnmL5Kjnx@ɴ,8=۝6ɤߧ0m7cjџU9z91c_Kfmbrs%>Yp?mZ;{H5wlp"^c8 N7? Ē~O显mL2ؿtHzrؗw~CםWz_amN!~qhEw\x3mCt? gmm`>m`>m`>m`>#I$v)boF,?T 6Ύj\n_#IT`%~ 0>;wӂHn i6c珔?!}٥6[k<]}#̥l2}p.yW;&2ٙLŎ.^ F6f;il/Yfk&n;#K8/ƧȾ S#+m/ߵzEbGԼ6[G3ό;66]-Kd5on̻m9mB&wD$@kTgK\ROx$|3mK'4E=W˄:=l'8+ovw:*2~IxEtl.Zg\;lOe>v|OfG086.O kqئQ=*R6NFM 4봀|//EG)܂c9tJ=*MiyxތCŷzanCVAmtp j1~#}pHSNB[؇ 6=}wm{#-46šOr2Yo7'DQ8'z2K"qlh$Zd4Tn}H;.spKa*86+ym% Deed m%MHcmv6ePMMX*+']yMmx>(Gmc]FibO͖48 緍B63iVё 6PcV(l#S{TI"8>Nooh69R!6-&fw]Lcpl gtא 98mj B'*BzՃ^*t?([uXmCjpNk mV?o6R_d$۹v@l01{ƥ{6qdBceN.u$id߀ƪk!wd[4ciĹum0},ap?HѵfinYdtSƮ8ܼ6~&k!ezVQҖ3Y6ہ6v*).<Ķ r6ܝӝ)W(?OHfb0ɢk{S̀eSM\‡GBf0Gȱ!sYf/'M&Q6<6&FA6~lB(lU6I s iFĭ"мQ>ڶ ߰kWwknnג=6V7gOCc۾Ȓ zh͙lLп3!e6'#{˽'>D#6g'34=w8 o͉uv^K9!$Wʎpw͡ ן݉? p O\16kydaۄ3 ]~Zڲza3x6QƊ`H Y H[3\sKKm>6S_֍l0j"m04< 6؇lC*Uۦ˺Cl|> 3m3R>{b&Vɸ؛6&eBFD.=l6?6s=Fóm6nr 0"Ot$(󑋲eU!Wgѳ U>Ϛʄm>x?ZibLvhGػDTw=GJ۬"Jۈu` lĘ6!hS@y,ԩ" u;lvq1*MDgJg_\4(OF}_ג<6G?m1=~S?BL66 #ڬdV &{KW^YM;#m 4 c8ls~DꙣpYd]*Әm䄑M?PBy{ܭ'D$$!˾Of {{m`o@eჾʳY\M=yHv0Ź/\EzE^9=Il1FqK>3ԡYOְjk57AcmYj-zW(m`2EbEצ zCF9s +C{6&H/f>ԏڦDvܵmRe+60lsz_FyF,um l(w1j^+B}Ak(EE&T,)dy?cUt`? ئY&f2y㘎AudamLw5-k+_tӤ*싿6p#6sFm3̡ɦmY%um#:*wVKث4O62MZmDF[ak6=WX5;ƴW-gv6.~x6m>~6p8&$6;mSl|mHm2Sj7l[4G8XEBN6qў" 9=C{mncz!I@5C}̢oSlbLmpMUf܆6&\nNm7y6И5RUlx(`'hM[ۜ`Cl2ͫ^FפG޸mtng5#}s BHY#;oR|/  mNO62<eh~uEc= Wֶk^im Vݧ +6gm`z]l㢿a%K 6uʐlO AT"3mNO?0ӎ˧1mlIlɌ}6\,P:5O% t3 &_Åz"FnjcK *\%R1Nxa\ \{a*m /6}'G"! p/%e"{6#!2s.GTm.#pK<Nj\]*oZCۜDH'$7@#PJrk `|qZ<߶F\U`|qNc;nXF_T`Yz="0<' 6V9^k6u0  60l60l60l60l60l60l60l-6s7q Qoj -ͷsh_-u3!V͗sp6m?߬v.滙CO̥ Lwm{6$76_ͫl3&0 qH`oF!K9.*4`o ԥn]#5hm]YGJ{)|)Z+f߆`E?O1 <6ߋۋ_-um`{6pRFϤ{n+|/I(O6z`Eꕯ3iۆk 6ls?!R>Ή6_X|N4ym|% `oFO`6|3Q !71v?ǿ]!| 8W5u5< πmo)^A;@lgO6\ vfp<ͷS|p&C'|?k8l60l60l60l6?)omu I煣o__]!xy lpJ5%A7p0L/nǂmNɔGw: !3Xڳ̲z`^K#` ј5̈:{A7p8+i}:h6ϒLfD6 &759A$73ҥ'{f;~6nף Reo On`2kp ſ?J}Ge?q#kb􂺁cletbd"|mncѰ]6?n{׸墅C[jeг;[P՟ن4xm3cð3_|mvvud}=C\`騬5S*֤^BZ-i@ZsY=7IfFPQ9֫߱\b_&>5"FԊHC}ќܬSqZUD1u|[l]}i\fs?R#v o3B~Q= -]B\ ,BĽƘmgIsm ⺌M{ЦO}6zDqk> M'c%yY譡jex.zrHf4SDNaC??ffz%}H *'d $)zU%4׉3Ucryi˕mJq^ ۴cx~$;Q6fmgF:4E5I5KFa|ccZ̢U"پ 1խ%Y+t.4ms?7ec ъR3!26ݱva _0r6ǽ бz Q LؙP>hK<60D6BrH6;JC_Ќ&6%'u15$Fی6n2]l\S!IHvym96ۗD~bnϝn-Mۉ#/폶M} LemmRVRn#ByY3JM1k\홋~mLoN~q61Fhیtyg\F)Ydu $6ϲMY6tc⤔ }C*tFzgl%#~HaVB3T /vmyW٦7Axj5n6q?&T6^~m rQqumĮoga$n>1fMjmT!6IIBX00`6-$! %t=oLƆװmd``*Hl#RP;f̰6Mu#"ڦL6:f`=ir+=6Skzl`6UiUx6WHmർ6"jw6>z4e:~Q8怷+9ѱtmx}mZ^By)UJh,y6ͥvMئsxmB8~۔CaTqVp7fem״Eئ珏]c9L6"eHe60;22=+ )x@iJmwxmb>MҶ,BZ׵SXH qoB-6 ۱CM4{eŘ}C!$kxmd؍k}mvYSxH3M'UveM¡kV}LZ=m`Gb6^nz<ϱ.,7ӆJ$h)T2TYs靵vFUץW1O]}|~yrhKz{CUF }v( c\-*iѹŀN~PR*!q/,!zqm\lVK uj_rɗzbQlbS"8;z"?WkZfH1(mL^xa[Adm mCh W06?| | | | | | | | | | | | | | | | | | | | |<51" endstream endobj 84 0 obj <>endobj 86 0 obj <> endobj 87 0 obj <> endobj 85 0 obj <>/Length 124684>>stream xbȮlfS@`#QvAEe`%)!7B47Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7Bt7BtxI!c7Ok$u!/ey $!ݴ q!įo,GC!~3+s!76 !+ C!~;MotcW !hk yC?w|.< [e ;o +  yҒ3@HbQk(D!{C}F>mp=F_u?uhzw Q8>U!~ w}-GJ7HZ wx7ojmlb6ء T U=|~b;Cv(aUq;8?8$}7mB1Ro7qlwQL2qT/~o k#>V#7yC?IvSxFq7͡‘PһWbs&>XƸ}o>QA ,R;A[BnUx`RlA>@'dw^.7$57p`Oz]!@d S{3{V7@8|Do*N7BO\4?HO[AL߉}V'o'5TB{BR1oI~} x77{H\퍵Qx=~ ~ eRVV^F9 A7|h7'xb Æf!ܷhlp|ީy{,oNϐ7{`qhSo lyc=ol4JW{0>8GxB_G&6 CKϴ{?7M-kWIހcFrf] !~7Bh7 ̤ZzNMK|NocӞ1B#Ao  Rċy뫿I0weM9}_G!įޠO)xu5:2C{ !  41>-#XA%s7|KԽ/s>U!o&{2@} kL]Qn+aZEވZ荁ϛJ c7VKo3p4ap^}F2o̥4 Djs`@o}Pu%\^o iCb:z᣾) (FFe- ̃}@1!H47e߿˞;JBbDGC:;,D=-Y E7, Vcc} ɶ`WwYŽCEvK~0o{L޷#Z _Wkuel.aB>И? &%#xV=@t~Q@ZzukqtzǑ7mxZ|PҲgY4bpR+.-dvD5IgZv,CBGz{`i-IЅs*Vy5:dKXQ|Bqw*O&BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBycy˒B|+xc_qU҆] j~N崱v:ǽ3FecWT{8/Gvt<7Ǥ5}F|O]=K{7Y=~ZGN-?>3ҿ#nˆqi,'bI6!ejbI癠>Pw:=7_@,R$ /z^7KY x<"Q%GSN^-{x7j܊C޸5ښnUKhw=[o_Y |ŝRh0y&߶W3M!kU6oWDOt%uAo> n7VRr:UE.L?~nq'@4/_4;~?)nEok90/H{Oi:E9a{ɳ !|7x<oQڅ=tųVxN/tml*PL i2y#KukvQVmИ>MC?rij]Cq-a5O߸[xu, ?&CzoY2tIBVs"M1n;&R SWA5 Fj3PРX/iX xFyX#VIK yVxc^sX>mm^);%(9v(: #JGC£@Jch0C@iAvo(Eѣ8B+GUnQ\؏2mb7V6Ֆ1 + ێ jQ\ (ܪ۞Fo|>  ´? 0Q1>L c o[ʰ,$q}PYf],IͰQ˘a3c)Ș܂7h.=pE>UkJX)0Y(D<[!,0eor<z#T3]HqUPPnxS2= JsT').ϡ@7{U\aٟ-냍?Da5^#&eƂI ;u%wx#.S3=P_ 7S7VްQ :-27;Oh`fe 78PN+q\_(%vѓ i6x|n@> ʹd̘xn%L{z7fbހv@,9$sˉGޠ[ެA4̦7Þ{da+A˧S7ݏawyPݼ2 ߛvꍭSZl.oN 5 *xzl excvL cn{gdL\aYF!H<{7XuM%Q%$ izDb~kIWk3BloeG vo BIġ/`Oe> ^?>Ӻ^ bYMo ھCP½xA_V=o܉7 AC1ɕ ˛/sߌV 7oYr;ӟom+aIڣeHof'/8$$7XQfy#s~B5?6ꍼ;ouUe,e%+u`7P_ox;Su%Pqo? ;5o`&k+`ᑬP Ӥ(;>ކ78YMϩF}$҈q @gM72Ka9;C#~'H[h&> oTW|n;{X/#dlzNpNFֺ7x{#kxXRCƹBa6oR<).Ft~ٮ2֢AkJ?r(N}+yE~%<ȮNC.?2|TpֱrPK}7 duQnZ3XPA;lmakbHQܙZ-޹\|Fc,VЏ\16dި^ް|oSoY ހz g}A@{afymL-ZJ ȚkUQi{o7>~Y9ɛl!ޠC{P۽A>[InoVF#J7z WrqqzvSZt^,h?ԕ|@oBf"EIsG^Kc#R0˄ͫ`xԖmtS]1o=x#7{鍰 %ވѥST~߱M&SvXו3]hNXb4t~0SoTƑ:֬YiPo<_(Q*\Krz nMBnsz C<7+xY_Rxvs迂 yYP؇547T6 @gXFe`oD(46&˩%R(FteOduoɤc kaMb_I>;ADc4` *g^[b`*]hbR}H9D&. ju`ؔzvx#^sQ\bqԹ780\2w6*3DF.D#|vQ>o&t5t퐞8-HIUbqsڑ2ů==R;=;+C+vw *Noge?x;oDRY?q%>@'.y j!oy740~(ɜ[7kͧ.ew7w猣qs*߰yc|y7=[[3qk__PW\W,oz_SB_p!ont!h"ol#ɯ67p yC!B o! o! o! o! o! "!čm(3`_/4^roE| _N~7%{Ùgy_e߁1~2oe?獣)|>{kRO *;obMMQ=8oz>uI}yt0x%ol&|7N[?*Lڬj5[X?⿈{GQ|p}Vo AM#s=Gq|կƳ++aOfF=g,-['pڃ gݕ9x7vF/F'.zNvŧ^:O罱 7o{'\dd/Hm[PZMOoFkzox[}r@:MF"}rپ"/ހɓd_%⺷ɘኋ"e# a^{tn3}'/sW>1kx% p\vaffWvd+HkZ7>16wƇ[n(q)7P% 6T.zPEI,FgR J}e.vT$=m9ņLKHO1S7)R c8 N(!~P7 1\saMcV-TKqOl%ipdg2ۙ5SШ \tubʅKb( M+}7fg1\SؠLx"cRK yf* >DDЁLwA~Amj |X:#yu4åxk|n೅UR8v>XI#c ouH pP`BIK:nC24ac;N1 |x ~)(~d e + 'J՘((b,AА qZ6oE/x4+>+X)nj߾z?hk|i%~Xß׳.\Kox{cbL }A.W&S k4 _y8$eMހ~+`%_|3Y`;ĖS8db|C$GEv 1o7>MquXF5,TV^t~*ވp 3t5^)}l63~6ݥ,-1 Qcq+F 󰩉wa%ߊLfyC|u `[2X&zcL4ۯ 7`xmKlO9S-`B7Xٲ MZNOMC>Q5DKoF]m7'4R& h'{fa]K6JՌP"J⍝8w-cY2EPM}ި` 2 ŎXSTx8Ze0T,|c:Pi lSijȰEyV587G[ ,'xi7&i#}Siy&[tboBk#Q'>DLZ 0n.;oOt~7mpP{|#H$_l>orf'g%[a荗iD F6I_maI;ž{91{yy#nd3,6`SX੝r@=<mLePרfi?>eօxǘ|\ k:zě`qаsz7^nq̌ .Y7$ހQ9f} _TD>v̔:zì#sTB, ,sTCa7PNƘ4Q_]p_eC]+w,ҌLhow6ɽ1YF 8Vk!dHRo %ؚqj:m"oiQצi{U<|/:2O qMZlnIL_ _M\H:ʚ__H&]{du 7Bjs7|Lƃ|peTl2^ܛUirS*aգDYШi^xcA6e>sPDa7 di2˰ɓAeHlMO,Jw/P[T$bmo8XdH;Ywxg.1Q&@yh1"q$א@3-M 8s3YɰQv ހa7+t"DXٜ١͔10fuk0@|L6,6noSFERA1biHΥR "$p:p'՛BZ3;0q#qqoK/6ڷrTtȌ[lhL>m&`EMIHΖumĊcY|^v |**W_=.fl]H0Jf _cI忂5.BUyK,5{핌 w|T Mҡ:8 VwT :0%˕z-m|x #P%أY) )xǧq6 5ݏ76j[]8oo5wa;(HyP.Ud8d%x)37"mPCʚWȬ8K[BMu d|@Z~uIؓswU˛ܗI{HxylȄ͚J{K]2JoQXX\ q>}ޝ׋g>mfzѬ&=] v$}ڨ.py7ql^ i8@+7C޸!zN8y]!Gm}}GM|7 !nO)%|7 ^~U'yC5#oG!IB!:B!:B!:B!:B!:B!:B9/*>^ǐ !엊&#]ں..n@/Ģr76 쇼qk.{vVP+! o =<'>J6Wx[]]ڑC[yNwnv-58Е6NAr~ơ}>ywfLno\>Ʈ,Bm_q~'ZcpljK6oxN%o+tW0:>w\sOi+¿OX1vG TTƹ{7}Jqe(v9|u//F{Z;ymr'o~.nIлyխ٪_3ڷ;<2 5W Wx7 ׶o^oxب0 ;yռӳ7^qsGDdͰLuekނXA͌GLA> -l<)i37Zw?sdWzmzv6x;ol2 Ұ$y- 6d}li9(q-&/m PՕPk\سt.?oƛWfއ4SIl\Ѐ7-<?*t{bj`<|ZX 6kL}y0$0VQ5QACZK`x|pz*unjezL I̵W\(5/:EOs^y` qA N =p'r{xXx6AnpcYQ b\ڿqׇ|4׶hXaa8MhxjobO2Y*1G{(xOB9K8; z~F25m:+ip|L9y8hmC zktnB|~.gfaY (حAR4?̸Nl%oXgUqq`[1zz=! +u= uz(x2'=Wkd¼5soJeXz#8dm$򵼁K7̼AmnBqXr7w=x'}tFtƍͣ+b1 sܡ]v zc| 4ait7N=0dޘN{73/䛼/uY0 ^{8cM]~m d8jf xU>me3ƿ:m QPcookqH& ۦ7|}+l9!$ȏ.#V&ވS5ayp|_qu%2Iwp^_  `k Hu?3-#r\hk7Z%ͭPP- L@ISCl 3P徖So{!F 11)w7VtF| ¶6]^Na&:Ky#%$a~s"* ˼1:GWkHXm 4lIfÌo[]1_:ً?C&⍰c4p%0ugG ~~ޛ,&ǸFesR @1!oD7ƴAl7 yk*!l7X1[RMP7萯 :oNVRE"n,Z#7q{ ,? '˕ ' >^F8]z ͘C\:NoL L>OxX&Ǖ2$|ýŦ&o/b}e&cx71=WoZF;N"ae81j{^- 5o1?$:Di1R|a !([7+ׇA +j7fg.w> M0^<+ {!Ỵ[pNj.>C&8 t f`qi8!>ǘk6b-Ά9 +p8m_0aeo3.XZ(8if, iHǒȚS !CĚMHfCE@Vb 2p8ǼQ1A :/oLd?Ok,tB]:>7ƶp^c!ೇ {ҌnӶ5 c\$v`Ouo -'q^0Gt??\ܜ끎}h6f{.%e=-=pY0~.|7*{c/1FbLԮf_ h#H6ts7I[gǾm="8|żIw/1p+.X!_XړdPLmcm79:+qV'a 8Q2֑ ,=c8j~ӡ ]+fϴpmyG-^`̯bGH0͚KA|]eڇvk{;O L/MƽcQE'nvY-A`_ە.FOLy@x2!>I-˷vOISk!vcG [t#oL7Y_2֮4;=SJ67[}3Ɣ#_P/uDޘͰ7=<7x'~^-oDBwk<[M71! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !~7!!#!]o,ј>6@##87895-kD uD?h}%H3}n{ƅt1V?ۚ?>ڸSb 7ixc NIgv룂{9'?{NFl>L! 9/FI4-L =7Hj|AO" !nNoFWybOc]z7!;zX~75\}kTv_-*6=qBܐ]xW{棂X" |Z ]\b$ ~0v݈Mm'Bܐ{AR,ZU|_ .]>Uz&;y@ Z@󣚗҄{}v~zĨpܔ\.A1 {:P|YuVؒ%N>ս?o\ B|qRF$RG|(;ʼZQ BR.oLr`\h8'"STw҆7k0ľggHx5׉7P;%,sʕrˁ7 Ï,\d|QFv17f } GWbS7>9Fk7U:'}Umn:D/-҆p[ ۔jxQ 5}z7,7xgޠYܾyCYްR0Ƭ *toT1 ,Lh{cս|7X~ $˛Rޘt}д CCBq`[|o |`#o[KBy{jHotS} Km]`s*bW45ԕވ1݌7y77pb[o)$z^mQDw`7j1% 1*Oax|XJrv.'zÝ/ ;!qy $n\J3OjN y\4_q4%/ހBF^I83xN8٣4V m"XkŮYPޠ=?μ CpμěiaܤxSe1P? >_[unA\ ~B⨥9a'2qTA daq !>CpAatCkb5_s]lyfGhD+H,9\r˨}-A!]8s1ӃᣁXڏ<{QUzQa{cWXrfZCaYXbvB8K#ƐEEI@4@_FQVlƦ`ala`-uWS̸Y8R B ̼O&ޘL /9ik<99́H ֥8~_KdI'ވ&SxFc8\~-U<3 z#U hDciL -_# ˠ4\K3''DzXvXlnef_~&aEÑ4v]խqУY"~.>.$c FY\snbDE#pe+LBYH}ݾ$Q,IwmNܼanoĶyM$a߾d6tukkT3dօ""rB@.Xor-r[`Þ/p1(8>3ʏ7PbNInjtq .,$<7H*+~E ;U<ǼaO^qZ\ ~4كhCWjx#CY7o΂sO4x1c!BSZu v3}5ޘ>rgoWHe#`<bC?>D5EVڪ ޟ]7v ]Yqc˖L77^ 714-l#Poyd}dʜy#k$PIXʬ5?[Zt&˥u&.nhg;3Msv*b vzo*bY?+!|̗BQX0?ESD>jB/+r(5_ؤ l|4$GF/E\i-;{,p!ޠƞdo컣_> 8+'u2DKd@=j|$].y#$=x)dF0] HKspTşo}@iި.ӼbvFuGa:L= o:Ya sP5m{6P<f +T촣<컙70MF "w a}_ qژm&j7%Jc,!EYyIޮ|892>е^F}=KĻix9\;ۀm KoXoFҒoF-T,g1>mtOoH>?c&Bxtȵʯƶ+kk>d@{c֏xe7HJm Xyt=Y$7`4zEPu=yQ@,o1IXs <Ҽ<;5Y{~c_"9a7liT"+l=G19uf hzc Ww4}o䱉.W-ow=h5,oTF7߫8Ըn5op%Wx-* 'yƆ'AG/|>/C'35:>ZN8bMC+:UWc=o -Oy5nͽak "Twdx3/ʬ#W ?hly]N+^хr2>4t.[*$YqT5{c63pM.n|A/6yHg `c^ ̓K6->nz\wC "7v=)6# ɾ%g{cXf4 Yb]"7o`~?zAHLb2АWjCm Pl H 99!IIAΣE7`퓅Z93k}ͶڗS},wqYQq?/klN]Zx/3Լ;Oy i8?jYamI .8^Yc6.&y(|JiQoI]26liIao>>̙bI{,>w;؟Lhy]gXh(/&EAϿ?_WP0<.edɬ_9#Q$Feo$6&A&x 0q?#n؊G5C僄'U[>FĖ7u0a?9ƹ Fl Y'Y"獷P'CHtҦBտ^~D܄Te.5U3pձ]`yIbۺp>O+)'sDAsP(.U,TA7XЄӐK̸Wg<en 1axYǜIn썯b c~oOռ" 4* cc_I LK]^'A79,vpɮFȿ&0T< [q ٵ"5O |/ϨO.{1fvvWNSi F;w{-<'&GS2m's\6Ǒ"|(N82n< $53Foi>9<`@K,-f\%s%[\F=зTm [煙{o"q½wy#<fSK!+}Vҷa~oВ17S\Jy],EO;ϩnt_px5-oy kVo=VG -\z-AGwkɭ>|Z渁7v޸iqC o=8sBw^/%#bY.Л:}ox!o}9J?&Q=^smn&YQ7\O'x09v?l}vsKyc{2V8lǴ.ӽ3DYy 9#PAnIlvy7xc=&gF.} ϳ y Ͻ1YYRxfט,WPeŸW#l!s23VigK kgwR3b<2%od Zm4s .g:By#d;c ]o mb9c@xZCvtZ}^1nOD+Wc S4b+u 6%PP*]Rr:v#qxt] -ÿI| Ֆ1o8wv`34ٽC}pJ%"zc iX2W)tLtq\`nB LyIg& X+P*So  8q93vl\!i9eNala:0˧[py8{3 }LAƶ'@cH6U9H\šD=EQeQ#.SvWBAq`1}6xt'79w>CA $ؚ4Th F̴19gmlфEr,. 捙:YÚUt9\A`(+y- @]d#Q<8LAVbܦ=O.;ِ qL|>&5E/W_b @&47U 0jHpv]*d.w8b4@ "##/>M7b\ Mo{q]FV0^ P~?&Եt#Ozk 1aWm1u5Wm&ƪ7BM做@4nZso>z1} L䒏(<^l 4nUcaVl=G{9y7=^}v<,gfEi,>FRi~x\~ !PR!$͝Mk'8oL&6+s8©| 9pϓ~'#t̽1>ְ,oFC@_l03t7H)%LK0_ Pv5QM$0 >蝂7 zcVV2 Lj;' ݶg,_>}|-O3c-F6 ^Ʀ3L{1Y?:ikfי %BQd*(F1Hƌ:fBo-UXusFJ'QkNHޘ7(@0հ\p27FGThM_Cz8 o 7;0k* {-kw=F7nn8,f<=(ڢhK=E,)vq$k+[d@&QH5&CǻzX KިƐy`1|/V,.)ZYQos)] fިGF? .[XCc7H1$dd 횲8da- c =Fo7rmA63jvrxz#G ?x\ R]q87p_ hƿ7pfq.DyoyMFGY6@>QY]Jި/qJ*zcژJI4|ܷ#$Ykz?Lо3i_|Na0exE ߴgB4BHtlJYzAJ0.n˲t1Y`ɚ]9N8fkm'dhw4MfdͿ+ (4;'L["3Y,|0E\fw6`JVj^|!n jǺqwGXQ. yK7o,Y6D|r~Bz_(h7WY`B+޸y@oT\)!5Q$y?X-n#  xR"kV@3?36ۑ7<Ɲ%>{-mqOoܩM⳰hw?ס^8b;)|mUK!_2_ T~goq3o)J~K"o!}g o! o! o! o! o! o! o!p7:~-韄>n !_ oB@+5{sSo쟋y[JvK| 4V8=ħ6|ζd[~k 1W6tJ~.7-zNtͩM3o ?ʮw?ꊜΛo >kLtr[$o\r ax㆏M{Pf,vE5~t-ŕ4u󆟳7Z_oC޸wMݍ̟X+wT7>tjQlW-7ȀQ\V}{vMSֵjh!>Dͼq-q/x|7̎:iyǜUo|P%oL*7 -o,g%{DNxS2ˠ|:'-{v-{_>wtw5zNe{?n8!90[Ihee=y%GChoX@0u`l[8$Ie~7$,h7bO<޸f eo,:etfY+J_kTXf*gi`dH*C|7#C&Ŕ Wz6x6#Z88݋rM+hS}.Tpwx '+_!Il!v+7as7l@q䲵v?@g ̐]džNG>mZa L5>rijdYDMP)?uS_Nv^2GPm Q)x$/Ks\$;wlC103 yI^ 9=Q c5瀖ϩ 4o^SG8/)@mǼ6t!v¡@+f(?zF9ܮEf06B0`XY0[޾_mb% ZIͽ&Q{WaiAۨFv$v+z\%2hVzͱԙ]:ذ Ȯ1lǂ@ y ,]D3FU3 Cn6l]D#:@n8BEX?r7PiKx#X[YhymoUIfk 6^j]S{^/Ƕ챺H7is<ӇTgdB4i{i VqX3X5o ao,|pI8zF0o>W ?qb0z"K>z>P@c&YCcޙ\'sW>o$ިE1FmFT]⍉6)k/b Vő "4`] C7REA7r'#oԇٔq7|7Ы72q|7J+=V'oVhcӨx,1i.; >mf*;"soT s⍼P)iU@Hs{t^ <\ p-5Ao$1*tډ\oX*~o%o7Fe_d,(9!8ZFN[C`|cod.8Ml+w 46ï_} <2 ŝY#c4;q<•oVl_3"H=mznPZ Wz0B&{nPi8U ؄Zpm7L Pxƾ̵Mw⚲uVK dh6N7ymOx#t{ n`13c~u?6;%be =nyNzh0œhs7،Z2dwOfÑlYT̗VmotR fvМ{xㅗ:p1 {7L 17 U3fxw2 +؛da3)T' 0M-S]3Ys7JQy4:>+s((C;+yޚ7h:ygVnx!M{cW;;ٍ[BދxktAh+GߨJ.:5 */a( W#b4 1DZ:mbMB:@PRhMnΘwGQ7y#3-b >^T,+m ߍ[F);+~'Wx#0~o `С#&LVt%OMK #Lx#6+y^|Ng7nH͎,&U%q dP݄dy2dcP0Q@gٺdޘw[mt xm9i,5^,q\S˺$/1-_Qىl4Ix IÐELX7pLJg%T5[t5H 7;ټdžM H,͘^JKLG'-EbSZOkz# xaM<3?vBB/"B[3-mHA24F? C k) qCEwΘ u&p',ޟMHB|g>MSD^ }\?{|4n_8W׍oFwt Sy\^T7.VCqFylg~C8o؏<2S|ƶ05𷽿8¶%onN!ƍV+{+W~.! H1$@K}Ecn`]B4k"J|wy^m5؉G @]x[N7Q?֘36I/ v!*{DZr@?56d% #1YS\1vl'WЎ%^~pqKHz-UE ͊Yh[@U$!׷idPɰ9dõy'GssEP)<4[F~p$`{%enړ)$%3ՠf5ԵomlfV:hOW.zmqepr g\.*qb36]008K>tTVmc.#] 7ʅ䖾P}'E 1J[ r*vdsշyގ>8C$. txOLwJaFNk'[x>Q"v%4:֮,\v LnEC6tlm?j"v[il™et.….fvdހ< {+PߣX=%ڟ`L7~2x::3~/+~۲D{,fӃ;(B튣}mpԇqcKmR&]=;9CC ~/bes().T`'YmVFп@mgzddAcƆdA@ I\IHؓ] A(5ѷ1 6ic}`[lSsWy/wm|Z4z*;bhw׎7h(QDHz4L6\DQ4=ab#"0FV|4ɶ-Ⱥ7 {|}vxsn`&`1\c-p&9! Lb˰9ޯrbY`ϊK-@qSg+o@3tĜp,LX0 ޠK7F5TL܄4ȗ-W Hqmv>,n\t06-{Rku_x=Pyi\y4³$qY񰔹~/9izc2c(g1 Ҝ㍬t^ƟpFi֊ L'C {xgFSgTCX7f=|A`nZ1yd5Ey4o qŴyPuFm2keM33{1,79>D‰7ʌ/ EC%uҋ7Kz&Am;v+$;]+7p+ol; .JDr7&ޘᤉr捬4;75Ƭѳ쐆k 8.3x <~^ƙ4-=,_`q}ƵشG٥ oaǃ-F1ov7?)rl AVyG[a>f[p7-; hvkƧd$o2Rd[Gy+ވQ?zU%Kk&a9ZmCAޥ-mtֳzxUFSy#ޘBހ& tjocImۓqL+jϝq:Ga⍤gF%&VZ> zcG jԆZάyzc-{HPo^ Wh$pnoW,}1`gxjc+yÌ@6c k{G ۺrE_ `d-2.xj1IwFZ%Ή#XLۚ46wF|b}1iA8RcmE$JmA;61ɼAr=ʉ7~ ;1.<~vnڂQRԡ fN&Ɨ.]|'VF8Y;~n<A}'A떟iЫ8i6yl{A6)5LoFdxr`f YSQ}fI.V$ZC6#_#0Fx1qo3ŀKc3{cWÿlVH_OaVTt{s%& ;MA(>{JHX%~8аݥI$Ʋ! i)1҂IuƘq(`%(DiYsØ!OAH<bfc e;EaRaod7&9-m; O䴓޼y^Z. -d v!x` /&i 2oL.&,jP^1qpTS_iikg+=V}KE߯Ak"tsun|z47lTll LK#N/TŰ<}eڼÃHXO:~;mUpܹ'p#fg_4 rZ.sDa -uN썤7'oy0 <$?7<0h?=y-(D'AeOcO"E}w537hq߽͟q ­ sw0Z=۹=7x^s_ϒu!.E-&!{c!+|.*%xE$VgEި=F.;'o8r> ϩ~7z0-`o~.aNX>w?8nYZIR*3IqrzRs?>;l;ֆ~ 艹 \7AF޸;FWhC;y֠{ajz#iLo,Y񣉼ycbϩ3{clCwxMW)>[?[;vg!K;cfn\0(ph u]duז}w>&' ϩp S!~ y_2޿Au].kQx,O:Vy-( 9(s) `^gdU(^Wwi9h=UB/ZUZ~9^[/ uCANNn9o LĮ+oHss ebNSξ -Vl/u(glliU$S&pMAqZZkh\,){BPs]7bn@5ҍ~U`QGHk\1RɞRCv[)]Hܼ6V˰>VGsYwL]QMwe7$r˪7j}v ]n9p Xn3I&ss)طֆFtd$-:bn,ƖާA,ޔ FnBܭ\+1<ɠ,̯$Ve;1VZ``0 K'7lwtk͑mmg# (6 p?꠶7V+1753jꀖHq#܊ nHH,*LjZF5_qGPS6#-($:|lsVFs8Kp,SĪ!0χ0D =+rJV/_4?kpXM~{hժ.009Qdٮ(u F6m#Rz cAnFmx yk5?N!֍,(=ƧԪ F= uv,j@ݳܐEê$2pNvq,? Rzp; ?HQG={Yp[#4̘J <9].]ܱ z)}p) JBG7#fr^ny&2ٙ= ?zh8N(˩$7w\bnȡ vs#:uHwr  㕢Xv|I܀DU  kN'?zs÷Lf,z)urc} Y9B묖5 FeJqM^% 08ւuJ7p/;h3H0@h9`HʼLɍa?˪?*1Fr/4pàigqO*ɞJ?9-1E.7!XLG Q2{!9Nmtuq K D6Y$8vcR9}[]܈LrM[ Tù sTnDb87$,cgWwCnGd|> \;!O' i+>8'q-OK = )ceji?M!7V BFVp[>ab' Qw7BMK(n@(y=3s+a<(n ׃Swj#˪L]g4 {ŭ Hߵ)|67(\noM2ߪ;:r)A C.WXuHq#pΘȟˍ_ajrWnq[h;ʵpM&2tr447idHUГ-7- 7fh,e:S77Pkm2ʾ*+8b$j,hnfm>7puWEQn*p-cEc4G'7RlP:c*[)FcBz%a1s# g$0pnO~MEsC*Yk# p]<9n@SOnOpn kH1ARx@ƺ/ˍVl%ID鶾[h\ WB X =L>JZf\nqF_:S[.{Dp4:v@F rܕEDnnQsm>Zc*f+Πp^$91ōup 2֌fQP5qBV$@VZkFf}JSGѕK<Ŝԯa1oaDZtqCc05q,_`6a.nA=4_Fb1rT#n%qÔ5opKp:<T^vwyTܸRN:eUИ{<6\Kr~ޕh3v -eaE;.7Ncܠh>7a%㗪׊Hrˋv2ō.9~zu6^r?|,\íFݣ}܍&F_]o'7**nL/JΐFIIwIR())))FIIIII7JJJJJzQRRRR#ō)nHn>o/V :QW>YRRRJY'ѽ5J]*Q;N*)!Yn8hBo>FƷ=l6- ;VؓN#gz<oq+//9Oذ7.ԞzHh.;~yڟ?U|!şo;Ԉ2Wz7؊kW_ gaeh#=hH!-ڳe]gߓ/i8OŷQH߹ rX"μe8pѥ⌕zYpoV;Nc0G~乱l/~x$qMQn}=ٛ7`q?UM2Ix-ύ~v+_qO]+S+]Gs@>2?d}ڟ'^}WSGNH )G<0)wȨՎnZAeE ڰL Lf#)QI'ܱ5Fnڣ/7tp!iµ,с9ZA8lE.+*uraK?:;s}2};N(Sf21g %Wi?:86m"Vn ޡś16VwՓJ&+nF5ЉG'tI}+cL1s?qt7ۗ˽jAn[Lfd;wwN u;@FAyx؁}wg#1*,]xt}$k@ H}xۮҒ&s5`a؉)JCFP3"_aE6r Y;d"혬憡<rF &+cj|^793~pq.2Q >N ۃ{ On#q훔~${|#45p~`yh.d07 FS?CQc4k}ꀧG! hn;#5*ۍA9Hqwpf &REf$'hPPo7(7dh&0Z0;e"*i|⭷!na iB"JAݜ"/A`c="eGUĸʁFTcn\MH:ZHz1 cc2 4.5mh. ?h$aFEgv}x h۷q#JWM3.]Xkt3sI)p"5T͚f8Hq&g7l djk&CXx\5R9iwKWn±!Y@N9KpF f.|yGjAcp ]zۣrT7|e0o3RLdY|czS$)fфhAUւfEFf~aFF盨lK= Q4ܜڣ2՛"Hjn^fv+b\j0v4ot~Rsq n;ʥo~Χ*mʞNnⲅeO6!?M}̍iZp76qEOȍ:W|3ح~@n0 :\} 78HǹjP{785ϙ"r DiAwYt&QǸkm$ܼTtqrn;F iZE=bnD28ope1V/dк| W~A@ Gjzsy7xµu 21 9mE#ɝ|/K7Nr; FemWJ`;ZNa̸8tM; 2nd*k NaR4"ܠetpa257r,5Gt ݚ8Y@VqCQ$S=g|hHK_Д>;J؝ֲ۞rx |)ntT֓k!eD_RSFE3t?@ m*I]k[3}|QV%(MT䍛xS1}uV+v^]&Y͍zقGw sRNn,ͼ*~eL/xSZY$Z*2 vM e;,e:pA݈fF>(bAۘ-5W(u1Fe \ؤ|-UCxXcU7G at{ 02sE 9A]"nv*j6Y H.uYxԢΉpu T ,lM\dn|ga4 6ЎpcGд6R V}7X& 1OPTRkE*=!smqGҨSpXs 9paNKd'hqCwBյ`7K# Cs\N3<3+5mr4:GیZ'j3iJp m(#)fBv|^PS"6. ^`#mˊ% .N osh2 0!t2p e/k /kSz U扇-|N2V/26Vڧs{'5Xq;(JILm 9йWa9_hދFׯ#Cݑ:f$`нu+(ewgk'3P-⏯#]:Qi;ݺ _T,񻸱h{=tr# ^0Fղ%Iu3Z̈́mJqj)n[%WKqR(Z%%FrjIIR(VMURR<)n\*XRRr7J.FI른Qr!]IIɝR())))FIIIII7JJJJJzQRRRR#ōG˼\@_%%`W֖*ōK{yK %c%%ō-9"svK1WC ?[rls%Gg;Pw >ll]-M܎|!7߃CO=dp;6ڂ4FZ'],9љDeX-{Ha{S7W<7~h>E+fD6w7OO|v۸aPB [7]o77NFrýa7t*27Ȇ)3Aҭ))ow\ɍcÌ*{7q|7ªs g:Z &ZdW^>InCܩC_X{|A>0${⨋;#hh~L\͙m#BCS WǸv^Al5nbLnO?}u:dhz-*<\p$R*n0`SjT9jӕժGK1XK "oj"|{[Íg@]kƍY`ɏZJ2bBp}`L_7F@]fD&zraKY+ȈO.m7d+VoAd[F`ى60b~KD4< ,7%ZI' Nn)&x,FY%(InA7XEuɃzQIkfL77@$6++ZO~px0户`RF).p=` !Pgo!&Cs<75f1J:?o,p9У;܈~Vt3M`UI d`Uz-hkhA~nXpPnD87Q: g!7t2n87Pn~%gcn$v\YND|7S+I8k+5$7ˑ1< m>7ⲀfvVǍDiq#Bz jz1XuΡhRPl̍Tm C>Dn l\ A#]Y/7Cbn)msq4#1/Z'ٱ08vD<׻a_gq97x|?3VOp x 7)}CA}uuXl!E \&j OƬ^?7e׭LBjb,#T;O{'F] 0E!qCnؙ!nv7>=yho A8*`bc?i='r?ͱBAB] L:FX_:/$j~1Wnl%iG1Q)ƍEbnlvsc[%iÍ0Dܠf<5`MωYx] a.n¤q~F~@$xnYS7F(Z\W: CA;t kǺY`y5I%+blQPU5Ҫl y0cDʋg>h)_'׊#fvqL'vogI::&lB Nw)d H^nت6hWȧr=ig(tDv-o<^ȞȀbZ}1^T 88{fIL[t}7ORNI 2[2l܉u)|om,.;nF$zԔP{07zF#Őɨ7G.tgS 6p.;57 o"0v()Mϩn|ZY?Y8+R&[ ~4!n/=kxMKV*{U/M 1i{R8M%% ˷afJ/cq,yP|ܨ<+ōQRr7.YR()PJq$#Ғ?%tV8Asp7ΑFIɅB?TgHq)n\'4vėFIIۥq7JJJJJzQRRRR#ō)nHqG%%%%%=R())))FIIIII͍>2&`~tϹ}JJJ. ~Y6yrâ=Qtx#s9^d?\'JHq#d+*z2hW>_/GoݻgdnDubc8h嫯Ɲx:ag\nEh<=">+ _Q{>2^yk5m鈢KnO8Dmoβcsst7kᚫqx=WgͿ2tuCUܰz[֜۸Ư5fiDwPEܡW1lOt91"xJʫA[53M~ ,oo\S{5*:xXM9PgBb{df[\|ۯAN ]=ݾ:7ÕeΘ}acm(#nc8AK|"MDS)TI/V47ua3ĒKƌZEr7La`nȍu)܇7T`,$%=L).˴Q5` "5EY+#_GyyoG>,oXkʍtW<783<ƟȣVs> ; ?>7p;',8dq2V9K8ظ?p76=2f0e هT̀QR O#|4Re:A%.eǍvbimr.75psbXhP?C=7`q(ȕFP>n+ VcUI$  pr# BaW'7 aatbgiH"#z*EݝFuQ_NpnHMlYpMEݣ .>0 V".FXnHsu&OPneLrÍJ>FuGgD,eBw T̍hBQp#\YFRO#Wr#!F|  ;tT<\nk@Iy| 7Xd9z!75oDOō..tl Ę "dDuDn;she2%Ji V9dS!vrCq*%ˍ1x'Z3iL|n7͍Xs#(iA0@Uưu?7X99̍뚧ܻ sI KJs"k7r> m gHW_ r Z7X3/PvyXi.s=FNS5Ii‡vq, 29p",/Wqwnn2.=HU4 Fj9\NcqcRJsc#amQ Bȍ`E/Ժ7֭-hpWsю*an5Uˮ ᆵ&`APtq#.AaG}hi/-b2^ܐhlM6? T6Sܠh5Ǝq [N9´ O<7pG?5 gM a֩p9[>l%;pDf6)Hs#?sm_ATn <:wj-r:TN1Yǹ`nv(bfqfs|n FJ)AFAif`,6&F.1: ҍ4ݝr7Hk ]b鎛BUɺAbTPQfkA&*JF/m # 7AI ([6Z#xXǂ +M'LZij'#aH875)RJy}@j@R ].Po #&%? |C 1˘7;o dB/p!7f +KmwM4JU/-]oZĸFR; {9ڌ^g=J,-x*ý)m $R9<?p߇HP̢Ou yhB~ m:E 34t^Bא5|z@9Ğ!59mjWfhbqRۨqY`=yh0F ))ewM+FL,MCd?T.P3:1lNށID6\0= 'BFk{߽dܤ(/FZt5;|PaU{MoӅ%Ժ6". hoץUL1J}Kr\/3T4l-+3 Jlڜ=hG~)7L)n 3<契yFCZ[O7]z~ǘA޵jgsbp;'-1Ttۢ;aۖ<9-[/ m{&yma` e >`e.>!W=$jyf7F D_8[ކoǗβGNwo*4.}w:uZnV7Km̃Q~}R7$rckw%xS!fn\$]ʔX?ˍҐ+ō)nHqG%%%%%=R())))FIIIII7JJJJJzQRRRR#pCR,W<,ZRRRDOy:GpgO(Y̕z۟Lxr97F2n~LX$U_JjgV10rB>q_{"O]gumnٟ*+뵷OK3=z}\߹SnS4wc_b՞Kۻ@\\c>0>Yj?8YԽ*~ׂOb9<ر>i$ӰO%V8$sÞl3i/suy qk?8}WruG􀹬q^F] O[q<{yטιzߺƍ,2qc|j7sޱo<!uǹ1jn7TEp7vy57BU!l\1ޙݞ_/66oi Xyb?uSCxM=_gd|IvJoY:6$ 3[:lY\n`1inl܎9ӂx8{r/NA5*]?7r,ٛ8,9ݱ7|:^4rR1aqř-Z gN=xa)C`ƞBY갡CZCR󔞳EhʌnbU_6kK( (;zhIűVRʅhgT]nh4 =1S=k0DxSa`n`ea( My J}h3VͪY,i݅l{kIp-0 7"l3صcr 76+LF/SnX@2`PPn, Vi׆4(v0&6VUڲUH P:[-X&ڕxmDȁ EL#,'WCnXs ,gBE;GWT }/P8̨` Cu$~ (02PYu Z@A/ln$ggM4$8͎ N 8؅pYjWP['uPa$%8h_rnŅE*r&kw{9Qqcn/^BE-?!NQ J0n17T2P J83[R܊:n,l13o'[☗YA9׹o.QIs @(MMe#԰iZ)WN JL׷lDRaSKM-ճZϩ sh6Qnl ,Wgn69  S}I}ھ M]FUͣڹxqR h[yp D@q1T )bK[,X?ڣ(D!ˍ0sDBc3[Js\^ =$Nq.h$ύL5 @tp' faNC׉ןp^͋YTNvfPdzz7|&[q.7v3Xυ3V 8+TPY׶Ǔ>#'Ɔt+,k Z{ر7Kj^n@{q#d[hV n̙88-mٜSl96+m%G.Oxn(y4'#F;vsh1n0_5qmPC͡ k͊+NP PRS*〟;D4_9n@0 ? [ƧEn&5rr_+ 7NoFH17܈& db_E0fin$*Ǎ&91s;e~?墎4xi)@:VZr( t: 4 8kUzD{N`F"i$s&~7Rqq:5yh|jőEqʑ@i6S(H Rog4; ߞ\n(4 d] 1a{?ÍLɍE ZsCD}n8EbлGqprC+ nclcutft`yUrÝ6Yx̒GqdW18`F0>7{Smѐ0%3+ɍ8ⴒrb6 Ax2*Lq4oઓ`+ИYh/S-Jtd ,` px$gagᆟ 8s/ {hM bp_Y]ܸRЗapLb?7sMc̊|q,O֨Bo[nUoQ6C)ɍ8hI%n&dcDEjn5rkcrŢHs#`MCp 14'""b ]\'0]#K'Nmj?vfjh݌24ctNĕ[cpC1:oTm=gFPqøLPkz_3f>UPOF _al)<7>y4IyDUC{@dž&h#"->:IG~.jZk4^UQhk%7OI |=ɍn~z}BzJtiy n9VHmTrCCv:8o?a|Ѧ- *@t08 sXyUC#Nllc94̲=tan>=n3J&,xXTrv:'[u!i{!֘F٦+J; hAJgŰt_o«Bpà"Bb=5 }]Ht0\`D>c(pՆLCo"Iz | V`tDE1g;vE?T,|_LoUڬB^CY1BW{.^CGS'>`mLV~nua2 pkȱfZ`ut '+.[|k:  UYQ,!lr)SO]3 V0Gnf%q`n]h7 Sd6)xrW lo0Ee2U7ۀ l,!Et1!zmjAm3: s̴6BM7 e[Ϟ:7vdV&z*G<2-`wy8OK#IXn>3Vx`߼_'%bq<ƚ'"ӹ(lzUݛfzKMԔ|L/v)woӃ:\ˍQ=qy}By7ЭdFc7NxnRx$70UDnSG NWrCgNQ}T/CAsb ˥Z>8OFX|L/ [uXw.7ѯ˦mrF/>6y7O*h@ 9y07JJz剷i&_3tzFIIIuonR())))FIIIII7JJJJJzQRRRR#ō)nH߉i%>y ()))YVb=3{oJJJ^ oy8҇u]AvI$7Ry뢹6In_̻~5iI .n,g"Eho d>P 6JwrkV] xKGK7L'}+7Ig4)Ї݂l1n[ƞA.-.~H3=h;U I0;w1.SƲOy澇>Kq7+K3ng]\}W#">B/X?:ޓ'Wc|Iz7[)]ɍl7F]Pg,}qE ݩj{Fqcj?ZWwqp|7L:\}hgJAn[qk /Wȹ=>U#ƙ{gsS1A#oIvUƍm-$ƈ?,~20T|g}+[F{d.!Í!0n 2g7v,~\ȍ/#7čY52'O@!n&'p˪2$<<3둁> Wj: UP4򋏭KK97<>a+ zDZ/ևN`J={woƻ/ \SI?jC5:7zSy{ 'Tݐ1K:> _cW2#l#r8/m.[= OPT# 31R[7cy OJkٜ?{}vt}t am՝bdT%Z%PrJ;5ujKck (a  mc/{ֆer>y f/Q#pd47t^]¤YA Y"b]EU'^~R7moI\ӊ2q"Bzl-0Kr]Ɲȡz8PjD``~G(4P ߡؠL%ɵVQVe 7hvǢHc5k:@xk ]Ks]GZF>[LyLpCd`ڵ\%T|2N@c (uO<M"bY͝H SmA-iNIt24VA xrn |vXkNAnHA]{g|׬i>XL@V+ Ԩ(vpc=sf zC(7`?sv8>x!irIp`) &l+ (~U[õ31a"IIL%hpaI7:Ќqo(^pȿs? p2zPsLDSfVftljYF<46C&K̛<8üu"g_iHdLH␸|mm(`ֺsSUPj+O㆏ X7dE*\Q7AFLsC( fcXO4%pX48nl7ksV &b]x}kx ̺!jh2n1\psTl$ P=76snn6c~jYȍ1_ V?Uog[m?^ro(Q8jU= t9gXU"M='W\ox#*2n(c8МV'ϱY_!GhlX~ml6Eq֩ѓ45`ct"n nD;%3 ݂N :qC -cg `C4CnGd FSԸm0ދӸy87Ԅ6Mukܠ һ# KDڏ!9nvQJȓ1 5ss&#PmCUknn$Rܐ>b4/XPl!]ǍU54P˸a7Zȍ&C*[A =0 ~n,mk" ㆍ0EG-ysiɍ9n n"3ԙ'p@ ;r7)iZariz_F\!n7X?Z0s6t揈GA*9 - ۯ#\ gFEՅ)6:!RĸMdRc#d <ʦloFn(̍x" 8APngm C!D[b6"RIro <쬗wr#wg^\{H+}+Nnֺ$nn|Drz,+ Q n\趪ᗦT3M&%n ׍q3b) xE hȼb&HNoTĿ17QYJb# ػZ= =1v-6WoM/PpC,jZumpM]U}6K{ <>X 6J5z1'XhFd 5 7~N'7dyM'-?ܠ֏>9]wpÙkR:!jb.9]+"D/^3[QtCp(DU|; Z#UW6Ec^#.l,8n|(1M(kEB>ߢE)skMcT}e 7!W BTECC U`7'Q7^8n,bY$lŭJaXFL`g(\L<IV0-uGZ7PC܂Dz,0ƽ}ИУ(X`ʿF*3s/ʼn PJt0xv7 lUޚW8T֔FafDs<Y@ڈt, T'[aLf[Av/EfܐA7UUP 6r5X5n;G{oB9>N ġCCm6b됷C&v`!@'g5w<F{˶v8\/6n^m(tMUW7/q<-۔w,=0>ə;wGCbZ()y-#w(źLh6mrf=×)ڞ3rC.\#`Vͅj7reTI+[Cߝ_]ܠ.9=|8n8KJ^Q}A~ГaH.)fyFs8ӿ,29gqQK/8=e,SC(JJܲ?Foyk}n*%%%%%CQ=7)))y_osu8}ӟ&;3>4! Te1ܓ3h17:y8ƙEビx#1 =7_6B,['[˸(t]}< 6Kj'aƷse^:{)q#qAG' _oh#n\urabyXR=!xIԾ7:sN~ jLnG.1?"|C:]ezQ{[8ܣcՍF`nܐ4?-'m7NHݤZcz寧lt0G- vP|#h"ǍA3徭8w8p^ÎB]'pC3oTan6h *y\^/7dn\o{;Ƚx<7' W\op c}7&{w Y{|-7.Fhܹ\oGb\m^' ?z&5̍#ncۢsb ?o]m}yU^Ds;v=}@#> ;H xM{ذERƜzCdLz ɏEsz ^4:`ГmV,j K#5Z{ՋiC#pdHY]6D,)f3uPׁЄZfj=w.di)_FEsŒߤk)Mr-LODUәgd7>/#$6:?@пM^*jH {$Ov´؈luɔ6nZ+Ŵ3$V$6$X2Ш$\Dh4^{Bl SnՔ*Tzx@gKW5`2I12-䌯ڇɍżT9ѯۤ0 = 3]`pC~P5/Z! @ibyr n)In(Q UìTbD88ߍ}?u& &[;{V_+"FK!aQ]tqVf|3ZwmF:Y+CUO`V_TJ A' '`X@q&_$=+El-BWҸڃ<Íj7>6En@n] K,I͍F٥*E{㪹&a:d kJL6x4-6>(uwaJGMyR,oAm3댏Jf!kVLUJ(#} P[Ȫ"1Yh^[Cܘf07dB֯ʾ(`Z򳝠.Ϧ]7Tj; $*P$lȠrq8@o"48R@s9 8NT% 9JV\@ʍJYqLU3wC8`ܠ :H,.n@DWUT]PEnNύpdt3D n4zq BQš}ƭplM3a! d +"nL :ō0u乑%&W_ T^:rg̈WusMI~(SLX ܀Us ֞_OY2%/e0Z;M^$M*]0 }*7,C̞%`7687D oO6ȖV0> [1-L53.$FS@ip#]I?Tnn cjSnhREFJ^0Xw~nI/Ó-Rb>`a{|RGq|@d j~AqOr.ke']w/7B<ZnJGze>Ia|t^r#xMF*<΍_O/tqÞWp 9vzREI~ T` AiM z07Xs}4=$Rk70: {=:8Hqk6}U7fmX$J@sUz Y&sA@=prZRnAOp#v&<%'#>nUT 06/s]aFfɅrCxnvʟCDfN"y[AwoN0UQSE#\;NHS9f'K d70󳗽Ipc-s#*ŗs#48ʍrܘc=\>xAangSXaݤ A!ehXuOgAnXEjmŹ҂&r#U8ݾ֫S-oՌypqC@QqJ冔inO12MhguFDv΋v^JO@>7PJ9ngZɘBVMF yI!uu7R5+7$ NX~in4S܈́ItmiR/|R`rNm3#h#Ps9dT 1y748^7^{.-:rcħ$wJ*щKJr+rq %sQRx.9&uJqG%%%%%=R())))FIIIII7JJJJJzQRRRR#ō9č߶"nxԯJJJN {c.{b?~+)YRR2B q>izTO.);r>ը8I{P&ϤzVcI#o +۹;E%%H=c*??b*^2vǤx3OាTUny!/y-7ICq7JJJ7ʷsU())冼Vo<}978F{ˉm Y /܀sW~;[Ce7#9: Z-npYhUߖ UtT97o ΢/_sݣ-FiH*c.=2t\Ͳa_hp63 s84~{Hͷ&zrKJ%XҥV8n/e?hF7&$]!Riab̌fSd-(]V<@_|oz!LBYQZIsc-NܭҾ'!kmzۓ!;fssGFUW#^P##T-d&qj:0{6 %%o~nl7$B97f#ei{F\| I&Fm"id4a#ܝh$w@!S47#D#m΄nL:G3 % k΍()[k)[;-̦+j%cڄ7lS<Ԏ&)u;4R,놗*JJ'}PHJ?);c[j+Wx$7fc@ŰsU" \nXI&#؝ގ#Fkmʁ*` 'K IhR.7r?fصNMs%<7JfɁ/"\l3ʎ+ L-;d:9F_ rCv$#cUG2 3 Fp1'c~]TInn̍GwH-8vq^o'Su,neF`wE^`-2o7pCm3s"# {nE 7%]/97h {<^Ȧ*nloRMz07 vq7ȗXlpF#CRqYRp?8~ Ro9gpc8nڵKw< 9 zŘwIs?a`rÖ-UR?[t`&,.;'5@zRlj=\q+$_vnxP/BÍz'v&77>p jr өO%CTNpV+aG8j8^ti]=#vpc N73A(FeJJ^(G~(a!ghZI FQ2;C49V907>q#n00pS;wI:(bjYM/D`87-TcW +E[RT ]#AU wGXD-m晩B5P8:#i,DXoN_76o'Hs8!#`@/>.W'%%NpܻC^6>1l .< SsAYٴPq#UV㉻ApZpgWuQGF{SRߕΐݵawrԨI ͢Bi8\B'(޶!]n ")s~8 uMDUoEܸ#<1A+s,wnFBo3ƺk|b\r0^q6.pJWܧj̚Jub .#98+ȂҪel{^YONq1ilt !y?ôajøR1d1Zk{>76'1{n21e _(6xS3*jM87{z^N駙  `uqD] oGLrIi-@05~\+P\ƅt{O n#E_1רj /!)!aFK Iv}jrDN˴vKQ@Y8ڹDžҀ+nfQъ"m.>ZOr#˺N`s%&> nsc'ƁX&SP!_guxπT1]@b-Y߰q17@k:1lċ4%j*$e8"WYf}}Bn%|‚Fܠ ڳ7uL25n bBč1<hC876cՌիg Έ2$ H_':~pL6tE%tSb⍫\Etj-jqCЄg,Պ[k%Uޜqw >KVB*Deֱ  . gr &?Yق rnt65ňrcj+?mwRʦ:IÌ$,n4{)7p8 fqnh3oTpmA:O0*8PNn!B#$p`r F ,>[5Otk;3wP \e7P f87J8Sf`i 3׮}`뇕=$0D+_`XL lJ&@ޅU[beA^&u7j CaCܐfxv3KqS!܈jp<7܅agrܸzbCkQ4x ';B%PMܰ66}xr|wr_6|0  3 yݷqD';~7ds[GqCVC@7.p<f}hN&+1F2UY<7zQ嫡f.Mx3Ǎ-O= ៓ڐӟ. w^ *FOO6NAъ& 0bdpv=*qhs܈4 o E̍\9*NF@]NnH< FYn;ᄼ~G/5 SIm>*|n"vfMz)ɍ>f 7(vpf?QAgo3,Nn#F6 odW6`donBvH5N9K7Tz@snzZ`yuQ/4X^pA{G0Un:ΞM ƕF;u+ .""נ ҂+~zAÓWW ظhF9G+}IQi7"j8^lNn@砞aE у-`B^v@1cNg\ ?=WVN*&woNȑ'rp2k,C?LQiG=R+8]܀+Qz:bQh&/bY}7*cjzX](V.Tҵ bb%W7ܬ4;8)="Cd_ڭmB|j S<`U0Ӹ=dJaL:vYLJ.c l.)iǗΚɋQF[Ȱ-GeMFw{7m~ YmpIT$&iq`#r/HkFӋ@B!_u{l%UAC#>3v038ll|C&Ôzg'1ܟi֡ a֩b"UޙFc)@^X Oc /XX9>Ϭec0vJ=q`Age!N8 7p)Ż4:5PO8ð|4ΨDP8"̫[ ı9@3?kK:`#u<. 2L ҉sO's)U 3.n<+r~Ho5G-.9w+>(k`|1}G|GJ+_pˍcܸBw˙u?׺f9 cqf]o?2 ݎ|cuWl ߼z=rr ux FgV+EX8Y.q߻xZ@>F7npCN i}|Ag@qc7zAz=)UkNSۼ݄3Ӝ)AjʅXOzB3}%~27Y<<¨7)ˍYę,g> mfvm.xԄϷ^po& Mp0,= m*s4s u\ϑ3tFvu "I2rmHەn9 [Fq MPnz *}7'lx\_=Qi&D#_CA˙= ּ^ոpȔeB[ln\ȕ 7t @:&Ws% IMz7ˤ-X8c8hlF};7y-¹ NHl):ƗpT77 ҭF۱Qz5dQF`jӞѓpn<7ea( 5FM]ewj)]غ@΍mu tO&-#7|[pW/OsfN" c'vwLǖBOYIf +.n70$S4Ēcz%cafvrdbo~(rú䮃F{(1UZA5/O74q;0{ƍksn`_܀9qcxᱡin<j*v ~ 9 v<;0'7y7dP4xPu|:7gڃ(j0G%C;8vl: x 6t'Gh]M`MY>nxlN2 8iמk`/7➱pn,0>sM1]Aqs78yVE7qH  (;$u`QG8z9 mNxF\B06v܈.w9/n_J7 un8^CY_F\A.WsKp9}"rϴn?'ܰ} ]Ρjů滩ҵzs/}k|[.W20^i_˭_&7ǥSn $6nXI&*iqDgR_|`dKj ULǕ"votyliu#?zc$IҌ I$iF$I4#qC$I!I$Hܐ$If$nH$I37$IMscTU;5-h'I4ǍO~_O΍cKz/:hb{_SRҗGoV_n?~ oT/>kFOU_eVfaR-6SzWUf_dȍ|E).XiFw|㰡ߴv'nlϢxԤōI۹O.ĨOѽSR1pIޟ=OwPϱ}'sͲ7~옾կ_:Չ8kCDy1캯Ye?|h.{4>e{ 79Gޜ¨${W3͎ñ#3 *|B]n`7BQ?WFO;m3A5}2JY` ֞>48dclέƎ|@1uJf"<;9nnqysm1]έƎgweJοǍ}l>0lC'n2c[vcNVtlKg:`k=,ύljH57L=Cu)kr$Lh+`!3k!63w5py"YTPx@xG(Ov&1놺9@d$iufF:s<.&%hă2]({ܠbA8mQ&b2c;209[Osǥ/2ys?jʍq]o9I"UyUV.Xdh Ze(nbڼOX5qYя:m #< )n=2 IQퟰXj"c'$'pa0ЛlB}2c:5! zMuNab 1&5GqNnni/On  S}>xd(2ίOGn3FhN5*xpf5ukfÁ#\i#vq1Z>$퍪,α5T&NgmXص8Aeұx='Y3m昷Gg4 .< J)4\KF^7~^ָF`,7Eے25DWo$.Hƍ؇.c.{m~7Ҍ1}!Bv0m~W-<<)F  vy@|23a> 8-T| 47xQ.ln^q jw&Ub ;n?Ȩsà2hK<| g̷ّhuDO+Ǡgdo"/X>f[NeM}mcFd}nAÿnQ7Ʈq#af-4J7o=nzNQP+aMo1LpnXSDM?sIk; 9g,g3"tU:T8, ^@qӔNvP-p4R$N7W`Y$7f3Åg(\$ˀ˸fdH*5o׫7 2 ӻF뜒OVht)AQ-k1|HQS <Ǎb↍`}~vK\UgynӦrō>u7k 7^YķX#s: ߦhh7sCee;Nr3[ . v2v7bQ7Cczw07('ܠ&A;I4H7$_~f7ڝ+! ]m> x7 WAÄ(e&7Y2p4ncs'&h"2nEC(n3^U =[vp'n. ܚÔwsȏ覭1_Fr!-.uWe n*Gq UQ Bx>\BgpwgZ}7`iλ'o] 5 lރ4k`cF{)@\$sF@gi=;gx<|:R)}uCtbGpb B$%Ô܈̺3 4 W+MqF/zܰ#@{0p;, I:m$*Gb%7n) {,YfL'D:z@M6x E:T@陠`l 6JD!F3(Rg8u{a}C4v,7]@qEY*0 Sƍz>K߼|{|%,jeշ3x)O=Bu&vP šFu<95OyptKmor#!d~$}L:FN /=jVzd 3&p;'n&=0CL͜_wWzOP;GYscqTq|C9a3os뵹 pm.cb6\U (7 @)2v}= 4=qQO>d jGY K)qR0Y6p(##=ͬ{Djk|Mpp2}"AV]mBxax F {n9a?*\1O"4}AT #'Fb[J[nGR[Ҍqd+2ii[V}=e# +B@\m "#XlsGk- f hxt.=Bp .vwp=w`v?2rp#-۠bw#yOrWS5H 7઱08K4YDط;Njx?nNFr^ PvSNm$MV<0O蓕󂮆*nV[V7U8ƍh8qʍ|anxrW8ė7VtZ /xe-{v7P4irq? *t7͜ZKsy6 W<&"{ϭJuhCO , pA3 X'76؟r f TI7LlFu, ?CpI֞s5J1P܈.kûA?y*pa( Cdw 7=n anSnԮ/]@x ?ǍlN8J:MriK&6ύpu|#s.8^h '%>n8*le7TȾ~Ţ]f9"ۮ?584hRFZj> F;ls$J h77F57TekH@nFɲ ^Bطz5n)Lō1,|WfN|رX6 +6mn3lbqv_y0726ףZKsM=nݱnGs|n+hs"7vHňr7ۋHމawnG{`Kfc`7W*K_W؆`0nLT nVsȜpcܫ1H:)KP5dH72J`u*n ~w Lq77^ZN<ͶL<$͹nd)챝œNģ3F~(C^nenT@S/p#%Kt- FwLǍᢚ鯿jgIBuܲF*3v4l =V@X#~.7G?W .w^u`"ܘ< ^BBslIŷW1Í]A% CِЌ.o `%aX` M/a57b_`DN Uw @Iگ7`_lpׁmMo؃=&&_ljI 1cxni3d4K,mbS;bR-X6dP?`Ҩ'`7a܉-C[ڂfNzb'{ϴAxy-1 HQchm9˫ᆯnlਕz_RQȽ_zë3Z+a;+cU=<`*5lh,ul O_rc weRp{wS q,I&9 Ѣ_Rm1m縁ΐϟ;>u|jJ@A]"T[vO!Iν-Fq i:kX#kX@=2$ @†w=nsO"Eﳓa.^1Ӎg-_3zr~-VS UړFKH8\>7ōOI}vpK%w`_SCwr1O7*W7Ơg獸Ї"qcDާ{Hk{U4{>ɀ|v~z"%n}p?'R ~3=ly~v" $n|]7}*M8 |XqJn\%7$I? $IҌ I$iF$I4#qC$I!I$Hܐ$If4͍;~$ItqPiI+h33ڼ?un'Yuz|%nƹ_zp?tpNj~Sz8o;\YQN3_s>&vwv ;t̾|f?BG::ύD:gIzB7n wnr{@qܸGj׀D7u:惢2O|m`# hYA}= k]F68D.fcFה\qEMZ&[7Z6"0#Q,({t&7ABwtV&c[;Zhw+2Dvs񷿻0Y㘔7ᬮSYp}!C%'pu"_tL#ZR;%7ͱ ڿa|2n Л5p#\I&Nk'aCQ)$#QۜE](QANwzR~l\y#ڒ5Z^s^ n;>KL_ 6G&D; R.ܰ< ~L.>8!ZGOsܨט(2%CO"Z+v7; n} 7L5iM Uo 4[2\-~3y\&! 7 QϿF׫0OsFJ v? 2`;{r 2ǍWԱV31W{cIIy5FZPl~O6Q8q mQFtHnJ2᛽7 n6 6sKrن#|F=n*š nn` pɍ*@`njC 2$๒&!n\fU|)57Ip0kc 79ӸW.7h/y>-iQwr.7|p"7PCk%um?F.mҺ,8M%Y=ܨ|g6ǮBoq5&{g٩67*{w;~HB+gnHc祱}Aop Z$g#Rhn$9G.n<;o=6{nx9&4SnsU n @rlg,\[V qVHC8~h(!l|灩^٣|sW:,[-#yn[f=? 2o*^d,h[ܰ-"̕Bxy'ҹն t)EX27"^JXк=ɍ:!1];qpcï 5pF2e2q]܀X{ɚJ.h83XA x!ʍ4Qb ,\@+ѩM_9J907ꄍai=nXx_Y~_^kC΍2ʘ+ 7R*<WHRqnYZQOa Ǎ*3hpwnj|-*ucĹF s ~p쀙}ȞnR9UopplY$m<\YAp,cU[1$JTĕ4 P.;7j f yVYݒX?2ً.G7`8O&71\\Ίop ]ul>Ǎ4*Ɛ(Ѿf{v76|ܔu\>lC0< ب{aƋ$=PNuÈ?7 8!!YMc> C8X4YDϩ[ E76L)=oS˷_4:pp%VGx jι1YՍ5= 7`~bƟgj2X4l;Ù;A^ YFkb9=1'dž'' W£eL>0x Zav"6lvl$D>* O{~#h8J4mh~ݼ!4u^  6]\s0@2`nm^CU{A'Wxb7-e->\!',o2ؗ,XKƠAd/wM2nrkSkAAI&9*Lk?7~rn\[W6V5#;0|z7iń?'C~_O`kYP{ %ɝL-x@9;Т*5^DPAos:~@UISIxظMna7-]̓AFn :ݍ+qn?*| zN3׭)HX>ѝ}Ƭo~njPs?7$`5^/ )]$I4#qC$I!I$Hܐ$If$nH$I37$I$IҌvrC_*IGJBW]$z?og>5 |=%~͍>4G.$˾NG7%8uI%(pcxE/\ש+bOܐ&lfg+ޑ3SW$$9n|9ZC.# .I6I:F}n襩Hx7$rϻz^O=17&7oZJfiag%f[Snu[︱1Wnj7_7M_l/={_reb"7_h.#.DS1޽ <=!x5ҷ{6\^u+*c$?*SHw)k h7`1-s`K4Čm_VԀ{8n,nyia2W"k|+/+eu܎Vp/]xܕmmYq r'dR.ש2lNhz0CmNh!oLCDF[SOZˆ jy"w3rH]d&cn`tA?O5L(*ٿ(c{ߡ綼WLfGgAN HO~w&ocK jw Fheآ~|,܄3=XIpmXBCgfVcsth.>[pc{ «i.FliR.-IvqbQe4bE>h&slc 8F)uQUg@X͵!~w 2pgL|{U㶸!]\plUM87p<*2xĮ;Gί}403W )%GS|eK=L!qC 7F7O6׼}ymDV^@ 7V$/TFVp-g8PCmn|cɣ%IW׸Q<%qz'II270@A玝JUs-I<}@y1 :hRR3 [96A@qz=:ou ) D~amhMiQ/bv*} 6VQqc6L $pDq]B5h4] ̹&TxVz+9Hw5 _W 熻j`+`=,^utDXjӸLDw [oVn9>k͐- yYjsU#]*f,`S2Fn(lGaGU]a1W =wP xd-mrO&hğe79]{UPøQXdbP .$Ip'$2<[wE:_8ya ,-f.er^x:zأ ʡ:<0x`,UNؔYct]MpcV<&=0n<}xTϧFOa.;Ć=So EāƇ9A֔*IW7~G{vAEYkitU$IčQ{$I"n$IR)qc!ITJx }p&>kY$7Hx ~|sA<Ȱ$I%nw5_O8m:b_ߋ~LsLS1k/O(ZK+;NHpwUjp${_Ntwq[7WV|1x_ܻ_,n0~B_9}>I]u*׼Gtp\?y VXDYOVgm^w)Ug;qeƷf7q{⥏#_nnpʳ-p{|%XΦ};b9|m?z@J+xv[e'7?ߙčAdď?'Rq>G:1v;J^8o Wxqlj}uxSIY җKōkr=~{/9lc>({LuoL&i.nlnō*{I?1|v 7pN^]gtғ-\kv_Qi-@ogѴauЭKioQ[D{̗dn$msqe~gnbJ JOedm%n,(4'3񞵂XHpoE_SBsת8u5BQIׇ!{fqp6 掣KLmC<<$o T~B>))k Tfe˩n `Vu-x#02< bϚZϙN;CWZSoy_M8nvi;ht^:0+M4/N(!~Kp>q؉tn,yPU(7ֱUrkv }es7=~+M d ;Uv ׯw6Do`0_L'SlT9VElP<8K<-n$7l)yq#24K-, V5ݶz c gjYdwqUa즜*mҕ8/ kߩS/ó8c>2wJ [f7[gQ@/QiJ;RpAg&o6.hqcm%]?r#FѺa# n$T:hs*x"BLKwwOq$QdR6F$Hk 4n$^#[l{p·ڲMܘEQ1k=vwqǍE8b/rOr#],${1󹱁Ke9n<$U71e4u0`ԲEhLo7zl~nd9^7ċ57X0nVuiEn;Cx=nsÖ,Vؾ 7|X=O?Iv*[ݛ '[r'D4n|-uG_d}qe oʍgob le jr֏kgaM`|rI <07ܼ qdK; :U%$6ƍF<qeN_^0L /k nQQu <ō2OvpWa(Rɍd !F. $7Mr<7؂N(_3IƐ\ܧ{HYȌh1Jwxa=4*";OUX7V.64~ 튜aq*Vlɨ2nb>tSΆ'[{[sN-DvrĔH7ɖqq>eoMe ®E~n.9, mtgsXGCHAPUkÅF?Gd \$iD_?&]N nsNOb4AyN<Xzԗjr!FNm㟥^Xz tž{. ܈s8ğ<xLp_U0}h1!ne՟n5xPM?7<7 wqžVuġ~ K2Bpo@%s|pEttb7~KZɣ}(yR$oxwkW8$IҌ I$iF$I4#qC$I!I$Hܐ$If$nH$I317>c@$IWqʝt_vW^4|{J 8_kOV9Ӝi#}'cNG:|qKWz-n;ѳž/5l2^NZח2|O[>t@9>.o쒣WE7]q n8?,nOy0|1ୢOYnn3Ӟx귿N,_lbu6'qc7y!gΦA>`=J/ǒ ZuaftvEk> kSqp|<1i}l{Ms,ku ^):-~KPOD/wtZO9_wƧp|zƩ]2͍#Bϲ/QyH{ 7.V8ù|BzGLB:nS'>4}nC"b-T}d}mWҳoa6dlorzY 司Odϱ|~fx=|o|l>Xy}C_D9uu^î.c|;̍A 3\Bn8K[$,ygo$1Ld mElWA'r}cMn6\p-\35rX)q7)̨Ù;t팢kKm .Bƣ~x&>)doe Vesc3C#4c `|pi?N Iiřr]Ѡ62.(`,;fvO:73:cFsc+x/a{АmejucA Pc8 %XZZJs q!I x *%. e$$~HhI۔Ώys,X4M[~$p'jkb8Eo5gbC;0JIgfLp8 +gZ+;}˕wB˩H]29/F`a&uŌg*) 66dƎaO~LnDo+W\~6=MrL>gE?\oVaJ!:+qWur#CM.A e5|'k*=ȍ j En?f ^41`w Ƕ8`Ws0[ISƢf[(<4f?O"ANxf TæKIDY}&f3Y![FAͲ{XGpFt sb[p1AkfW*tEmf>e oW0x47YY8BF̻`e6`0iȭ<=2U "7h*;و[1q?ASn0'Hrn)7p[LpFyd=|ŷlR^LrblYn5žr;s83Yn\Q0s{yIsVq}u٘`.MSq#NnLKL -M3:.nɍ8pōF H֋ے>3opM OǬ ]'Ɩs8čRTGrV ^m 9* Ԇ`a˱7zqc0 Vu-s\Ɖ0NۊՙK )-XV3Б=%y7Xu`oS| naJ-!> OkB͠I0A͍:ߍ~y1 SArd'{u'r;F+P6&;95v)R=. I/̎MugkZê7hl6K$rJ f\h$uGOf׃e['l9zu aoYBolbt9͠Bb!{b`Z_'[SAp%ߺ$6 HS10[9= 2n$u0OAŭK>2Z 0ꈟ܊d˂Y9nayؤqα|ΊRr󇯩`W_9uQ`"s1f s=eCvS+dI۵m hT*Dk3Wq^9rKܐNqčӅ18+ cNW^/XԯO8]Ûe^J z J8^ 9)7ձ>MuUOJ)7nנ3mgP}fѤ>J?{17>!SƸ^ɇ;=SRߜ!t^-+=N'L$IW_Zy I$iF$I4#qC$I!I$Hܐ$If$nH$I37$Iq7J$}P]n|;( cꈅ$]VFmFG9v'F8[8'g^~Nd{ xgN;rҘ\qWW~ 1={S#T7+\Dk֟8O잯ۍ R'N'v͵Hbwn4qR}E)7ʧ e%,wc|޵I'ڛyn SQ::*F_;I9}O7N|`|C_t~"k{0/P>ÿ644Ϸkҧo|WG;POr/z~.:n<56}WpwѶ5D,Kx:Mn%ud1S60*YLf֔$qdGÁwkCXagHEí;Mi*AON <yjjq7#v.g p׍-o&BX"7 ,e֋o\<d\vL|F7w~HJJIg]PAur4;CjV>`\A3cb9rX d,`vTRC>wOoP3Yʓrp\ʍ5tnyTGǽ=g7՜@q7|mnSb% "5F6P㹑gKqVd&bltQはnt7Nn,λsrdFZYhC(; 27\1S{i27rgD;;|ѷ8Kča> ٤ V(DոڧMnBߡ*ύfox|\wqúen8l0鱑f57.7Sx<,7xqF6k3twI :B8A7LU`QLgѾs 1ǧUs7 F 03RƲ)~qnl| 'oX #1<7ob7ÍdbIi ~eSnt7HōَH*b5; ^ax$7797͍d#..pמWc2scPp#Dnt0r|2}@]H<m\}6872ٲ~png_o p,3 cS=y<.զ3@*Tu{ /~iTu. ,>'&7p]|=7_> T\[ 5|/7֘FEB&ÓFwxLKs9RQXLG,(& \4L#Uoḛ<}a57ҕ Fsp7Fy(%7jƭna n4 O1XkPX77B%pi5@7,gιI*c5_ވ/.n@na&QV-SﲪIdN)6[@(}ju: NL2J2A5%Clx"ql6e$lInJV5uP.fjz5V|oЊ+uE9Ÿs^M6N丸9Q@Wm_Ρ tVAd ͣȮ1p`_pVp'cx ~םE7=fPޡ@Nv.o1)fV"7g ɸ=p$x[g) L8]Hf/K%Z8$o~KO<8hlXq]8avdR'=nU G#h:b4u7>NYrj$ 3#ހhWO#}w* ;'xe$%w /qC]-`.RҥǞn\D 4ss3q9"~GC/qC}V(1%Jom 4!R=ܸ A˩s!R=/7v|xL&SFin wi=n%~i I$iF$I4#qC$I!I$Hܐ$If$nH$I37$I$IҌs_J$^q+ϑ[z J.7S=G_Puds2Qog] 9.㧹qo=VU~X[9?[;IcG^9ON%n/ظ7ćGIB^Hw#-oewp27ӷx1[:~l*砽Ơ;9ou#7qu|ijȥkMeq/]“\f>g8"uK^87!nqd.Ke_F#G-.ˍFm]vv{5uWn='C.?aNt|k o5Y^.^W]G뺓۳Ɯ}~gg"#~ O~麍Fw{vͷ4o+ ÕH%,< %m[>Í-Nà;New0ijZЕtx5anoKx'@ě'h ʞkBng[bGTi;s56 m(pd nA=>K<#v>q6/jrrʠ-V<m19ߕ!oL=n/c[fPa@QFxq\5= 19.+ $  Z5Ksn=@Z`v~6GpqD`0Yt aeC` HϠ)`EgGHzႧ4Y`rqwc7Z!>Zh@ 5bEƙyބw00IX'LpwGnk n lW%zPȓ3LuR +V- q_T~$(?l<kb_3*F{ Vb[B@)յ&8cnP.a1u0ޥY!-xQ7C\`Iw%)@eln\DOU 4j%F q[0R{sYq'(F ʹ&΁(=݈NàнD/x`l]^|\GЭ RFX37fwh7Yд.YwY%;XDmK"g ٹ J7t_x5`u(v.7pjR4J bCÍX򨲥SX!RpX ]y YA;7-U <@nИ9UIة:qFqװ| ngZr~jZA]nxStYh~~$pU*Vrw\IXhZyͯAbRr*O56@'opnެ'3c4EXOXÍ`aqp&6mze7/3a%JIx .&Zܠ;^:p!FJ>}yQH9hlE"璥c'sm}%#b\E7La1 $a_#`0&_JV!F6Ǎ47 !H2~pMPn&ndq#@^(]r.$FX]' {@v\z@$hGJsܰվSZ@nQnO{c{?n`='I 2/!.)56 ZX3q'[CX$.O>.~UW*M3KJqMPA*$e6gO$? #ҟ٫*7-U7 8)^ItÉMv([u}o(K׏tEw?oo=śҟ_{ot;7$Innu}v!IA}ܱ+Co]v!W쇎%IQOqL&Pg-&^$I:7~<^ {޼G $I>#[/5~a_Bxvo;TOx$I)n&7{`7~k> $IQS3|Ag9BW,sn En$IҲp܈&3\WtV ID{qp7^/N?M}|@^87$I۴3FŋZopÚpZ*{Q&I$-3 >rk Xo I]}4p#8:$I;ɍWRnn^?o$I77qC$]qs`jj tsý^&nH$)nlEu>n<={$|$I_nla%{_Kn@K穞֑}?7$I& wr.Y'S oSlOWqE$I?A꿻8dw:; RhuȲ2NB B1tC! !#H7B B1tC! !#H7B02ӽtwB ~iy-t_II K{f`u3$GY7f֛{f ))ahC6nd7q.g}^Xȩf}BxA!GNUx',ܭw\7F2/< Zt}`uۖ%e/Ónse\N%9 ݈f:(N!w߰YqNfcv{ dĝyG }"}ދ2Y[\Y7nLCRŷ j?U7l0mξ跰fI٦-+lق9Q7 '-d^=Z:R3*ݸRH7M7Fp-EYgUq5wF8pHɧP S>g]L/1*ҝ<92j_7A]wS.]AfF%BmW³T׍f]N&`@7r`n'Սf%&э3yq*Qp$ǀfBUcn.%.el%'ӥn6Ksu$ =B7l^xэP ɗ*5ùNMt \:F#aR8:H!׊hܴnu2Mb%{[==?`駗I crM!Bq We7SyKSW1[tͰnfg@ޝ.l k]4SaoZDvЍ ݪnt\t-N&wpl n'>QWh(WeL"+9̅э5$t07*S4:xnA7*n$2Ϗ?"|DO7VӍnݘi Tu#큺UVnF4X7xr=H뤚ymr^'0_+rngQtb~FvFkA`n W7^o+kǩnt5˰bFɇ̕`B mzma8MŒ r|nPjNW˭`s،Ne`=utҎ>F]nS[M7#4 ^<0Vq-Fg4 2qY|np?aKӕXX\뎆μz7r֊6bz wC4";q!׍NдF҈uag. `-pu!S3$Oax*y$z/soi0+ :ԡHH85;&˻~F׮wӠ>DZAc5О%3UZ+uaQxzbP[J9Xޢ: k 8ǧƣS.FKަqҵ!0It>:y\qA ͝D7e<@& Gk\hcBGYWٔE;y_YʗN ^@$2cz }{\ g -z݂ |NuNnh*|JP5 Z!g;ngl½FĄ#sV(Uخ"5 gOlg& c`3.6Z0}N;]y˸ɠюM/TiS^[,"4U6C Y&{D˺!Q.d2뢣Dlj, u*NuvGЀKN {Gwi$ GxP!`8'm⋼"W [;hH7|ђ}hg} _醸Ɵ2|"n+P"Sh_醸MJoZ q:7_嫼"UKF*H7/qtC! !#H7B B1tC! !#H7BPՍ~0PwHBNI7n>3:Ҵ@kONQwn?AA7:}ڕ o& UMO~ e#c?vq=~AYL̛/mHV6۩ |՝_wSzmqpq6+8m\>Q7J4)\OZst>UgvO6^>Q77~t>n\A;^~WoA]#yձeuْxn'O >:l=Iea5}4bq_J{n`E[Q™ѨtcB V\tSnPvPƘ ˼{~ m)<Yhⱃ|9$pOTnՍo|46]UgɽO mU9'ڮ BM7p4@`h1 eUZ ;K׭_XCUSKQi.#jcdu+BCz7Yh,ݸwn[ogĐDa48ˮcs'y)7kSoO =TǕx'fO7hhT uĽjJrw\&cg/t Ű.Fg \LF(P7ؚBv$XBeu]LvPh;*A$+X?h4"Rf0,^Dζw@{[|a=C7b\zuۅlR^p pLڪ1i-_sӰ3zYM挱6ͮ+VYVn];ǁ61}*Oh?~0`}{;d V[`1AoD易tэ?Kc7tN˃=YY496/3X}oC{gC(xΒ8RS;H\7mƂ2 [݋swoU8lށFHmkl2|SJ8U/{j6 {pnaK2$W:rj8y,[7{pNW놟f(X%d!FL j}WЬd5ج}Z%.) 8?elԿone<$Γ޹ mO$A1&(+?D)J0v@ыL&D7]ם3?0A 90drQMXKkaqD^'-񅂁=[m<`FDKC\cSAssb7^2рh? :u76Z4_+'luL/׍ú/.)WP6v 6QL?e0 ρKZ ăk*aPn$VyAȖF7[:tơm֍֮ŏ,rndt[EŚ є`~x~^JT?8O݈B-=cQ/ccbE6~aK.Sl=: 5gFu- Fⵢ=A:H[nyͺa}0A$I:5JܪIrbibwM&fw3vn\gjNgn]>I&ܼCapޝQ PӍNcAS뙦 vBps1Htal}\LW<á 7`f s{T;QÇy"q2 ^lq0|Q "P'% &Ġu  1`nv| F7|nb$K ^J+QNRWԩ\ŎKTo j 1X/R~jq@c32)n'[+SA|w}Brq&^ے,|֝CF+sU"  H ؀l t.$7\VL؋Z*\x}92&^A/POW`J4 ^3'NN?Oin٬%Y! ^R> 2n$ƵHNvF]72F=ɝ . Lz:b_lf}ip1Y aW%7df4V.325Y,19w8x>n>҂4ff ,ޫI1c͑nPM6͍-,)v$ӎnomwvE7OrELՋڛBu)B=mvK-Cc ,u*sn{tC|¢)(0gn*x0ҍ6vF2r.x>*K7(0ofV|p<y~}5>n+($qnisAػ|f{о ɇ/zt>Ѝ=kO~{sw`_mBz癗]Gd3͐t!.:)tC! !#H7B B1tC! !#H7B B1“t#+17{a|"S7!̃trs\k-0ap7q|x'qldmoGSPA r?T7l\F)LKAF&fƓ:댵 ȿZ8gi}wn$gkF3PAz)Oҍ<*}a}_X{5 ʭu{-u#D HͨY4isbƑ8V yanS١kmBb]8x-%ԍbP&V| $.h_7i_h=oQ7&]vvF@v1YAЉh(T; {dECR}FtnL7zvF$HQyKc ǭ n )"u4^2dV3r:Z(m6nG e S`jd+vc!A~e~65Jj FkBX-j;y *dIE6H&OcR+_XAPIuzu!1 \a2yۭ7P < lIZE{7!PrI60! UF n"e-xKô&cftÍF =uR>ޮ4Vu#Oqy>;G3_Bxqj;[ڤ>o@q$q>ñc ABuӄv8ZeV'¹+D_`Q.!:LJXvb-~V|,Vw< P yVhŽ3uc ml,7pJۙ~bU GFznqpnamŅ|8rKHagDW7/^pT7)Ptwu)nC+udOXƇP(for0ApN(9X)U}7(cEle+%P2N:Vb74h]Fjz{9Jtc2"ϋJX<` daeK=uNvG7JuL7%TXCX7Of^Q zX7y~z^Kn ]Y7bp `!W6 *ַy@0nsDVP^nnv5 qWZҕv(u`bq 7-=S됻)RWԍ ƫQ {pjn~M#u#&ͺ ͭ4ܐ]⊅ޒ ZHuu)ʲQY+0u^/UڡuV7,v+ht>]m|,FLe^ob (\nOՍVoq4nh^44Z`O!׍|\{tc`uc4xF%)Sbn+K2&a mflQ>ėq&?O7&q9')U~ub5ΦVa-: nt׎CA(oA7ƮTm׍P v/˃#J_QK ٦ zL Vcભ83k.iƻ FG8:ѳU7 XA8_'k9wn̫)AI -ʸn$pFc$J;u#UyFtc.l^53`>ByN ʷ TL5l~0XןcsnEF}i_qn!Fl郺W\`O~y E7znDם1R=˜+S?4ӋŪn$$,тiʊGTItFnnآspn o:M&3&b{~ݘ;Kt l"7S{t JSfydtP}8I76ۥ`?- зC {u I'{{8_A HQ$x Aq}o LtƫJ1A]nҍTHDwg ` &xy818Ю֍$lC;Z ɶNĢχ%B73C>׳ S0}«6kxh%э^nH82YloBT⿿-m5n'mfhK;wyK^PэF'R݀6׍z ~ZL7ZCqFc;Am-/8x):k)G!`&PM4etcp)2*ŴJU1݀y0,x"l‚tfc!kXmI|!mXn daI ZZFI:;2/o-ub @gLwtGiĚmށ`m ) #b@^Y:5Ak 0$먠~{Ph (DA$- d%ͰA#ka=A}]]NC^nC` /u#ܫ>`_'uI̶9 hXl5Ɏl=`]p{  jƩ70esB&B B&8mՙJph'{);5'M& ve|^Wڡu_/?da{1L/&cqcF|~K$=r`a%9 |ƗƩ&{MVYI6D#u9iL#e3K{ l0qVL x|/w;: )"mȈn  ݤ8On }H +4ъ#ex`ШᇯWU[ŝ2zYlt[p8IX!ݦ+%J0G7R68!J(-k==}b;t,P(}DŽ[%!ݸ[t>Q&Ӎ#RِnMŏ(T6 q/:cH|W膖8tP@'!#zH7B B1tC! !#H7B B1tC!ҍ8󇋄dj_$Fz!fop*6#rMqQ]Uk6(CYn)>#("奄,7/t*eZ5'^lCڗ{cxW,پI"*~0T']our_>D7~vo{ӆ_ckFP/|s8R/l}n|-iܽ#ݨTQ ]oT.J'6Wq%F|ns{:թ3nc[pcaSrI^jڙ^uպu<_֍b{nEo&@K{~n|ÃdݧJBB7>>v3B#sSPԌKrj&l>o5 6AN\{tii%wA'fz:˸ִtwڇiO6^m^b-| mJZzVc_vo$SUTtm:jr%~M(pqj9e mF|Gb⺑,cfk7mBܦ ZU+V^MJ%ŕJ A3*߾o㙅";j & o~@dFچu'Pazžt}ܘĐm٦֌5gP$6owr3}˛gm%[-ٙLQt4$4)Q3|2&vZwLqսb 2՝b{ Kt]%W*z f !`w%6Ft#ORonidn3ᡅd&l-5e_bzyi﬩PGYsx42{PƎn~Q fl#[ЗukܶB:DҺ`qn4Q]Us/8|5r['$`:C\񥢗6N]ZXLBYBu[4rnݬQLJkGf wP7ܠ⊢L }WpFm*@UefkR[M؎ok!Xtuy!tLXBK C#sÝb?mZTWyE`?,KtnM FVe( p?V"knt|ϑnp"*$]ƝFH2eNl"wX#=$Ma?ͦ u‚w;β+ZadNS 3zP8=GXЍa %u#";=hf@fv + dwrˬ LSj6wMc~8j6K6r;WEV2.P̊0KgSQ7F э6,i4Obu p ?f⛮nnP<I{_lP˳)3/b?MO6^Uʷri40ޢ#4NWf Jt$ٲR l F%6^LXrx˺aewK!1/$׍ ٘gdi.ݱ#tʃp6-tݔe tLԁSG]tQ(zkzݟS<ɡ.~5ܢM pF<%`KVs(^ݠKcbe;CL@ CqRԍ~N}F FoӆՍtmnҍX[tGbH7kuƎn-;21, FaTuMKmt ׍RNg٫ە CLj"o n$яיAN: 10?X7b|0zo &%鄛&vF7 ݩ$z޾U7ؼ!1Hȅ#kUV?{l"ǮЍPNҍB7<]4+5;0RKucòU%_i]%uخ-tD@kqkKǶM tjCslMEDéEe^\2ud'ޥvyCT7,56VuDBQ7$׻t$ոHpUs}itH~>mtJ32qn!h!sq!lj*gl{W}AzK vQmG@2+A]ŒSht{Cy ZCX.huMV쌷HI7 &QXQlTfW!N3]>Hr3`Hߞ[}%)h$BBe&v/@8t#6e=I(]݈5`jdPMeVKADlqdWF7̻0?&BWSXu,m8'I;æ*Xm$CpGh&~lqTz75OWoSBğcAi%-5qpJۛN׍`=m<\dZU#;tc%.᳭gpFHٛ {rnLGF!i8 ^>7+§Ff mXhFt*ϿOxxXDq _>@7'.ov>^=T8&a~Ad|ܱO^7a7S9]D ,}#:B|_ttC! !#H7B B1tC! !#H7BC7Kmx€nhȿyCI{}^5G^ZlӍ'|6t<to;rL<хx@=`s Ζy{~;u7N]_h }S%lpiawʩa-T'ؐm_V$xȌ?a q@,m~.~ۚZol>fr-7^/nT=fʟUl*[lUmzXWvƯsu3oL-? n>({ }H7:^:\y0Aw']j,v6'?<ߜi~m\xĴՍv^y*cbg[p6Tf͉Ӓ4Uk|s84Ý+7wi6T|>ȳ8>M{w5Bu>n\6s3Kp(55/^phHLRݰ;ȢnIw}2jhFla:.XYl ŻϒNCv=bQl[ \m[OF-6PҴ+171BlU%VRV3P_+O@|LaCؼ/6]$+F$E*%+Mgv1lo`N"Ώ3/f-62`R۠;oDG7p*GI7L1jR-kO}DS c7RWVF#sa7Mpiw2ݰ&VEBFll+RL[F)鄹^cĖs#[=.pNltGF33=beb[FdOiՔ,Uԍi/< ؈y:l֤BN1$ҖsEu⪇&l8S>М'ᘵo$>kT.KK,B "eN8/JjKT#PtDLa xl?T6I^ 1s{gYqڃ- @|7uӍzf43t(Zq|"^.|jH^( Sh,VU CP5kP7|dHt#J-qR\Btyv%昡KV f}3pY\=a;W`%-t6^ u}당 N`uApޒFV@ J1a_7jM7cpO=چBU35y9v^cKbM%-~70y")%&nzy.֍)6߹~ЍF2l  [S~&" ;>G"&ؚ;]#$҃;spRaMezɭt#.ketcED׍nǣ1Oa6xXMobnDE:@7&1-<Ѝ`FhNc ?J7W#] sÒ}StnXlЍŜ->tv'эvuc2sk&vTRj;%#wOf;u#g2Eqt7Pb47tF8`X 'KhxuHbj &_ tGt8whn,p ?7uT7ނ3"냱)?w3ݰY57 7I`\7p?MlIG*vj;[7l ݒ4TIJ NwSSZ(&ԛ˸y׍`W0z=m;7 ۗQ |ttN:@{vTG󮲬np]F دUBYZ7R?jn$^FUxGn9N7X굺Kmh=@ѢIt8Gm1e7qnԍ-\u~w-ag@_3f;nԇuD^`rn4afB;M=|_t#uí|$'DvYctæB $ 3dfv݈i=,(0ȇ5%[fnXb?:꣱-" Rf(n/JC+}1h\7\7\IGK$\{3qS}7f\nI$BT%hh[ opMu÷MI*0|cO傄L 5vJ]u#0O{< i=BQ|;Ԧ8"z,JFq1ة\^ Ӳ8ij>dM\hCu6拸V!5l =p^y1aiz຺֯O7&g_u빅5)KfCL!Am `:Z@ fDѝ* 2wkH^,'444Z>&"8] uNԃ7yfv{Hr@FnVBmq'sx/HP3g0&lJ@KnmB:޶f+WM,' нjo&JvVzVE_rY%3 UJ[$VJN BYB3}wl"iNF޵teB'E Xka򮰺($Uۅ碧[emM3V%ccPMY8Zho &r݆}lNb&}f%?.qvs{rX7<4N!4e|K\yR ;iWQ%rSp-|1~Y0 Iy obZ>uGn1-:k2A TLC(śeʝ`鶗+ۊ ~7;n13->/ŀ2o{{nto6{7H7B'AJ, l1/qC"H7aMBy0O3SiqU̕x|W4H7!|XI k욓|<-ҶO<(!8H>nP8ҍ#}p]|!.U|[/t}q4XG |+FM5~ҍC]x{Mz7tJ7B B1tC! !#H7B B1tC! !#Fk>k 7~mB)FW>[vPO M_ !/z(-{D!ytQ^bg%{ߤBЍy哏ީ1n(KhG7~c-, !`nt'ZlUqC?;cI83tIH7tXZQq t#q v{pȺz᥄9{ i.6<¸??NW104#NUW~js0Rg=^% aNiɅA,]?8eΖp6m/B/rIiVBPE6d% %E5؋č+t ;(b !b7A eLpɣ@)J/1 {p`=SD@WKT!xF&֣{C0$.Xn BBk)cb)n!Q0sq͆l7(3^ ٝ>)o*- O2bʉIҸ3/^{ףL7ҁL<zc'P'aBm!&M_,dp\ VL7ݝL7|bn*!x3;ktXhnk&s&zn@ۘ7FҿB}6ҍ}Po( r .Fgz!B|& zK^v]C [{Ok3]7 ׯͺEU$B@2|ѳtߧ;֎p1bY̻D7ZݪL7:!B|tm'b݀WI=:4}ZtCQHݘAt-uN7 >[֍1nFu ݀"2p!B߇oT- ݘi#4w~h :(iD#zFVQܦD!ԿG}oMB yii.=܏70l_on LGn!.T@7l7k{dS4a S\EFѱҍˣKA? nSïtM7M*7/$Xkl=uM$ ]Ejg^K7?ƛⰸJ#I"7B߹1N$n'm*Dug ݸ:E!&XЩzCb,*ЗD~gCzUYK_hpK3!ͨK9qk 3 D:hރ2L[rva!r/ԍJ!a6\Lr4eBn4F8B!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!FlUI$_DI7x_m$Bantՠ#Ba>RdF!_C[&?e[P!G1 x_~^H7kؤ,t:j!K7ptE!g"B1tC|cmѪy-2,(]3,%!B8Toy)\!{4:/!{8D7|Y=qkBCLS!woד$\di S&*IӜmܜn!1FK&{eNo4;%|Wp!!l FXۥT7EU0]BتTUB0 ֍CC"'z^ J4 ;PH9H sʨB*Du1GV;Bgb_' ̝ ! | wSXBUz=ާ!8=KXM7`$Bq8;t]Z7q!{_oK8|?$W2=#djBl\p\ٸ_UIn !`Qo<+ w":lI6jA<%Mt×!!1b6ťBq%g[|A:@nڋdC!eX7;Uz5u~1I60k? 'GxSmhv+"b'EB!!B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B1tC! !#H7B B11Kخ TmjwvQ3v<&8m!dn[)ط?eLz loǖiܗ}\ [n`{mW]Iߤ;fQ7FsK'w>M7!X9S7. +<0>~ÓقU.ǚ}]Gߗц%+3kզ UeKpnAC M6xl_T7WHfF/Lp}^j*UFg Gbˍd,$a7ubY˽ǡ\|nTnNfF+(nxpn\M2멘Wau?W6ܖ',U_ 42e֮ ䷃&LI7|×Mϱqn8wnPWԍ 3e~ⱛuæ!Gb{pQMFFldvx6{t8nЩt8n\v6/Ѝ8FXFWdZ|)tcj+{>8Cn+K\:H7Ri3^هO޼>O'>  [Շ֍bO>aKu]WfP52en֍.n+ktëÂs<fF-ɨF݈ͳ+r&^7iҬ-g\YO[RTiV!{tuq_a N4 ۺ1FbַFH>_tgqE3 ՙPhrno2s;f9fKWVCV: 46:6"r *A>:?اm{OTA7.l /ML4^kF+6~qWfn6q6FdZft"ZYq\'xtY_^7~vhh7FO>(ۇfGHŝ۩r^oqNaF_h3.N(ه`2Ii~12Hl)Zu밝H!NM e)423Ʀn/UoS $`C`dpf;Vq:!:7): A0 Ӎ` Z65>ݶ:YACMN|Ͷj*VSķ&'3RdozfxnQ*i 6g9cg2I&]BH罜놗ng[|-Cu1*hm1 y:1w4!+@}q,nXSڳR%XTэ,tc-ầ͆aЌjA8qj M:Qn0>ݦp@WF1`A$=2bSgWoW|hIaFV 2RnHMwl~6L' lp`.71"~w g놓isÿr7?EHǐeg|AG*t>э8[u㝤$D%J6ľO7̇;u}m=|ggE;*͚FǫGoB7vukF\F{)~.jOzې\7>E)k@\7nt#MlK86ܒd.qnS۹7[cAuO;t_|v * &}vz})R#uOa֢R֍3au'QDpȓ^.:`;< aiqkפЂn4K XU7~^ױ\t#ޢ+O7qn*9]a>6wyQ7nэiL3QaM1MMæ̼F;9}o)5ROX ,npuԂ)QZщnI ..;8W`jz< n3Ftu̞" "{tG9Ӧ0[.6#X /6xzq[x@|ըqbS8g)獰yJugl]EQF75\!D72@7 j-pѸ +dl}j7dnx ڛ$hiY踪qJ88S}׉A65OŻNM}ر&0ƞ8TY NWgpڄ*g?w(\ i,5 nrBnXW}<ڎa Ňn)NOAOne*%*œKoa|Rp(N#y]wɽ2Vj|'J^ !>1tCnssGN C6v6R]-qUˠF̶NkQ8lZVl?C(H|l6.@ZiXXNӫO #2zc]?@ ?11 RoG7|*^ep߉m 3י+gT^\$^ 2G(cL+K s SK'.K Q]::ӞI qM26 1Sy'0%b&g47#tJNo ێn:D=gWX ~JV|[z`8--n(rb7ΧoK~Anw2.Xl|/we px3߭nYBm BB!Fn!A!bBB!Fn!*Z/T !\,|}_bDjß,mK ݈D532zQ7} m0tTYSw!УOC8 ;t~qX7ߵB[8]7nG}3R9~sM_?^Bqn75sb-[Smy(W R !ă8[7@Nwu!mF';~%B)*mߌ 1QiV!^X\&,,avu X]$eZ{(sn:EEbLKnWo>|37M;Zh_ " IܩcMᦖ|/S8 21և >RYˍcu# /4X+Th:K3aDǙ2P%j$q w@u >X wꗚnMS$i~ߩ!B/9QKųwւl膩;^ !sK7@?>2& wcW͎Մ..эn>ݺ&3ogεgw|;m^㝳  !ēp۴/ "= M$jn`y@dC.&jL\-tuUOpp2E7HB߉JVfv ݆ʞeW=(eu<^pc\n{ލC7BqI7M 觶fq^xmv8Mi3;:6Ǻ7G!\q_ Cx t#L TƻEx) 'O'V&!\ކ./f?#t#\73 4C1m%v!8A/Zn[B$g+ ݈rEuı !ăCO Y!NoFc!#D!6n!8BB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!Fn!A!bBB!FC˚ endstream endobj 91 0 obj <>endobj 93 0 obj <> endobj 94 0 obj <> endobj 92 0 obj <>/Length 86171>>stream x]͂:xey3TmBUlY*$ C?i 0i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i wcӃv |3J;AM:6H;AF:^Z1]v |/ȶC! TuJA1si J! dv xOnxH;Ag i .МX;]OQ= !C> +Qw,sb k8!AG*WkP73cgB"P/AAAb0דؼ0KVB>=Ca}o!jAR7JH<AR㑹S ґ1?nmH;A@ +#歧ځ7CgrEf{|A:V\;*iv [#׎QԎ AJP;Kzխ.A؅iQiGu)9ģ;aAj=Q=" GfUGOA~:_A{t f|4]7g B?f{ЎF %ο d;a A؁^d[;(ckkVs;La'w)k  꾕E,]& Ϻj|^fy iC<,s6^G ;U.M1]B[-{v{éq:M+&o#Q,b⑬(Hп;Zqr-I;2vi++uk\ys"ۊ_s;5fi;[~OۺVQ^?mvn;vF'NCvZWؑ:T׽Ya1u);kl)薺2ĩ=Xܳd4;ҳ. aaglSA(Eت.r1bsv'a^6N?ϷO}]Ѧ;_%M)nGHi pzk3uڎx?Z멬 q2*g w83)Dg*zX"D cE[/q8-Vs*Lj^47Վ6n#H-^jBsPpG;wJ~t1s-;.dUBB3WkGD#tMZ }[Igksȼ_`!6<{Zl 4䵟X:]$ ¸0(/8,贀G'pc.Ӈv}eIҎͦv`&54վV6gT;lazk?hZhU3zpCxYm-(j(R.PWHV6[ (3L%iՉz4f\4 AsNhv~Hs)Gr{mϋvdNS\;JXUZꝭN@#vTSiNۛYTXܣ3)hӎbǂr4z/:֎ȴ$UT7]ΦaYvLhGON`Xk-am$ɓCvؑIr[Dj:[mnn-E@A2.I# &JY7 ٸӎ4ͻ|+3T+ҎJ3"vD;΍Tz1p#ڑRڐAӎv%s]6Â{_;8O#PCڑO٩v$bb{yvߣ>cNBմo9O;lㆧQK;hҴ#mMk+iJy("$RxqԎMȚ!? kGKЎN(3֎#lNghG-I@M[;H"4ʎe$D; ־+)'Qੴ!c& vC}#(ÚkjGN4|vS}͈-8?e,ЎNDCqݻH$Վ4kGG%~vS1$x6 D\)B[ȡ'kG1q{r.0/5'6Ocp(D;*hrdH$#S3!i3CWG1$:Ė-gےa}$ FvǸvtU,$:DnjK:{=g!]PZѶ_lğvv[%tnGB1H>Щ%JImdhm 15-Ӿ\v2Ys tqJ9LbkF)~S |TxTa&'X0}C ް֬_hA/kMTvbivy{UH)hcfsZ 0X 9e1lߣ ŮȰƄ##:āif_"$ċQ-Wֈ}+Uh}e(Rh ss0qX-~Q{_ih`k9eD_LS m^pْjǔ0Z٢8L̙#v$>4Lca߃{6c2ʮd[{qɐo<(sI@xQyb4㧛bvKӆ9$<7KR;3كj3 Q^<]9"b;V,s̸.Oٟ"Yh;ECP;2˜jFe$cĝ^l6=3Sg Iߏ7t|{E'F 7xvd$kU2TD:c Ot )%/"rŨDm҈/ЎHLK6t8vC8j{5` sAj1WyiFح(.N@ hOYBYȩA٨GvQt 0 Yt#H)]a[ t\cMRh;͒³G/jGWUv}~MҢ| &~OF%8'LdoijY]x\z.mŸoqv܊g仠Qy[i9KMqG_ƜmWHAj~h/ Ҏ. (H;>7 <2 ‡A! B! B! B! B! B! B!|)N}0y2GӐv| ![9ir~?yf;mQv49j2PW$}9iOp0/Owr@t`Cqrf.jǣhuԡծp/"H1iݭGF82FƯ+2hAx .ԎųO{{:+r?`7;8ӮZwĿ/iQ-w:p/'$qtKhpv cq,p'ώAWi>B$~qg^yz#?BVdfpv\}ge̾_s:ҎVKq-&ю8q!ޥj>_v9׬Zl?O`w+=M7c'iAx2.Ԏ;j;OqUR$g-EA1KJgClkG;z 7X6oTB׈onuq4ȳC:Mѝ jd 3CaYC379Z-xvEq`3 Os,0VdnwڹEXTS)p?sL@[]B"n.Qӥibm4=mk tȪ |?Ў)jR5#'<7SAt=5.A Azj }eHɹ[kCڱUl:zqx%Ƈj hjGjvBD 9Il5?mO!W: Yj {sYP'ˉ=`~*MdhQ>!ŦvWΏ2\X|$iӍ |'n׎@,Y:nNRs4! e:.91K%=,]nKxāIpstû#QvȓV$ؖgWq0l5Dh6@‰v0zu7X{D -ّLd۰duкz !ZYM/ W#ڑ936bό13a3ޢ]t [}E&i#yJ F}Ċz >!.}o gF5ڽHd1-u93egZma"_ b`{In 'rK?_Évz|%|/\"< l<|=I>Gsv4!Mupݧ_HؙTQ^xѕx}G6 2Kp.=XnrS;6a/х2uՖ6L`Cr2aA6\[ Okkvԛ\,kd ӱ!J7R7Hk$Tyy{yߨϜA8\'.&?R=uAiW4ނ wA>A;f#Y BkG+)\_5 d]mAõC&@<];AA! B! B!EA>CZ!¹{0O7?oi |,n{ !S?ϒBU*zr0{-^)/{5K;Vܵvޫ<ķO͊J;nv\skVq[7[^߄GiG&)uIQ ק\z؝7ҎsYP;'r[p!يީ{q|cwCzE1k&#!&N2Èa20G={pH1sݓivtZ2?D>ޫ13qui)PZ\B#bP^-Ξ@YB{[v;FWu;3xDҩ?v߁gi GiǛWq޽*<"~ڌWČ L- [V56Eb؄:&CYޏ=7|%7A;G?7y,K->АhHw.f#0hAv! cbqXbUjjRgÙHȎA*?OF^ͼ<#xp';ٯ]ڑUe9Ur8Pt'KE2st]ե3XlSa^B]sEӳ[ z^(g~/X@,3F#ZיD!Mڸ`vvi̊1: ۥ0Jy4~'Zܩ:Lߧ0q6Р[5l勋R-Ned"&r2RԉxTZ$d9,0ms}zjdF{r_Y+&"K6ӘFX?1&tA_2.څ̛cv4k)GzpKu 3h5ij4RoO;"ݬ-uV0NtRy^bth4fLkprR%Rf4/i#rL%~ڱjjiC;0njU pi'.` L}E -a$hȴ#1ثfvΗ9 Z)"yW3wC;b΄D :Tk wjc5hD;߸6Wq<Sfy֤*F3QrLjb':whA3(؇$àtr8_iG4wv@z~꠩p:w_;R̶F$ܸ/$#>"#`84zlP<ؾj 7$w>ghkۙr)Վұ^yxM!;jKTvG;\*~( QPw5J#,\>O;jiG6{'u+|:c^k[;2uV0$ܛc0mv\L#h ۡ4pv=&,`t?( J"N؇a]1}Ly+woЎ⸧yB1[Ol{8e)Ҏx6#:.`$K˴R-׎IdMqL툶iGڷZ;L"l)nh#aLOʉ&e㏟ZRǴ\v ?k=)n2s2& 4zjsƪ%ZI!2DI>CAiͰ(H9.}{C\w3'Hd<= <}~jL1 jЎ}R'hGNcÍȰvv,9M fԭ=WuN; 3|"$tJ|\;V;/=lzM4^{v4Ꝩ\M-g/hG ,״(pv ]ŠLm#̷ؖ\;lI_ۭZܼ ~' %uFցyS _"F/c}lQp *u9㵃DKhrT;x*zG#k>%}ځP .ϯS`Ǎ,! N)$Ɇv'tt #9l?,Y[aA5"ߙvjgW*#9k .o^lzmڱcʌ iNNf̚:@\E>cAHޙyCRe˪<4y۵eTUjs ^&u~c'bZ;Fm0.sEqSX>c|ŏ& ۴3QCj>}9dLP ;E0YP6My)31R.aoEYB1xbHgJ}2sL1QH\b*Ϡ)V(kb maRs<"^JpD>ChGv$ylC #(9iV!)A: _YBz#Ajg,ڰNt:0M1I &^a (c>6SL#^lc<ѧ}虦X,>XIA;LȂha~ ,a--zפv0;tscpV㳫<,>zzb;8,y>ðv\0x ZL"u,T=,Lj=5KyՅ+]y'=mǾ}NJ™WPVx=ol?KYRe עw⫴ؾoԎKPg^KDS!} k]<뚕v΋#~h AF!AF!AF!AF!AF!A)Q^7 ?vCOrPgF+xꎴC>QO;hctٻҎ@ >)hڗMT;tzÞ0GY;vǡ2mM<`~v\4=}aßlv<1hw=֡!|vptǏ?Q2f1VǒhZiOm?x ۍWh,BQ 0?dnbۅETI[p7%S;vr_L^>.킝,ҖkNȍpC:2|?5I-@@l߮ItZǠP:;.^v|4.׎I_\ ^WDC@ǫ+;3'nohj8_3{.50N\SeqBu0&pZ ؑVxvT'S/J ۰9+ܙ~ő%k`ۭK3CA;`j #t6(8ЏIW˩Vw^v70 zKYIEfn7H&kp;-^YĈk1pЩױ)0x`֠Ўc+>C; =2tnl SYn~X7nv桽}+߃[h$`+[g{ b/d(Ftv̮ׯc,QZ@mk;qvR6Y,&RkGz1l^5P!F3ԶUFPwIA 9|3I Ai/mk*]=cZ["mS>=^aR%%Bѭʢd@O*E; b'ڑAv S) dnY'jOq[iFnd$Z5iݚ7:l;I-0TRD:+WA]8>MÑȀv,8\zC;Z{K};$ gDghO}zP fbrܢljH4?`tǓ)3|K"#nrU(sgȞpjw*Ӟ| Sԛxb퀆 PZ_laז,r!$s-E6Qzl9km([{kDSX+QG9lθC zjXE9uss;|iIf/#$?@O g V?C~C[!X1/-8 L* #$7d 3#An'̾83.j6z҈jk/ SYjG Ʌ]ѫ,˱'kGfZ88!4j!$"ͺф[-(3:GК3]kJ#JlFa?i$D;hiv JbLʶvlЎ0iaN,V4,s*r40 #Y 8ۜd=ANWvc=QNZ h8>O 8m S \QNvM[SHRvTAsl@DQqvd̲ (|eojO2P;L^gbrghdmeC;*u1g^4߷cӑi+HsOBJq^ceWcv漉jhG73i}AɨtА; 3g-|ι7HӭrDLJ-#ՎYk\OrѬ׎(I'GsnS;bthG(Q4FXl'8{1@.a6!d\ӱxOC:[A6")#.N( />&db"L;|+',d4,KCجASE 2;P AbiGکocڑv=Վ;#u9fN5Te,#IXG-*Ԏxg'3BwFC0'($Dj&aAHBh*V6=A)WM&+[u}-jjGU=ԈJ];I;1FcI6.dΘvM)&xvNkLa&OQwtqt]ɼ給DMO;HOLea^MAlЎ_iJCeGs2@HBtv* aŤ(pu` uȍ1m?r)ΙXlLxYz5e?ʞP7lsgrv[i(W"=-I|dcLyvBpTkVp8# ),sAdȫr*. sywvf|6NiϺR[ø3p"9L*Zl T/h-ӎH(ro(-5Ga =Y;\tbmRhfmv$gq2 y9Msv-Xompָv dĜ $l}6l<ځfaRtrވ@A}AB~k܎Bk^辵6rn )eۮgRҿC;f̅Semѡt!  ?GA93As' ;l5\ԎT%q7BZgֹvMn]LQvͱ\th,ޗPKn*F1x0ηv la-eyxFqv,4syw<A8f }p. Bw*|/pDhc°iEubC'v|>V.}Âi 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 i 0 iǽh!>(O<\]ôo GOףU YqU?(B1W W _~#AtgC:s[׻/ye _Վ(l6g 58/X]x|vlFWc7v~ eA4x|"D|r2~ eC'*k ["Q;.'L;m;3Ac\mqyڡV < h=~9~VĿw~oA6G[Gw'kCR4_CŏŸe,P$֎^KğXqc>J;Axw?wY\NbŸ@S ,Z)k;Xv膇 Ņڱr]>mޜN.Yo`1㑻evJ-B-uA{'M`{ڊE{RZ$v^h }C;V,T-Y}EԎ!^ QkGH:Ax phowPP;x$SI' <iBOuijw+Ԩ/Ahdݶ< o/ڠP{*;ځ:qpA-vAڑNcAE_}v7Fv(ܠ L=t͊s &jG]C3/j˸a%IbrͪA{I [Ԏux.Gvyَ؆%&|TJ;+˕vD~7ltlIʻ%OxƮI;Ax.oXL>@S;]«8D^D^Jւ@tDmT;UeԪNxJ{?m;ËӼc"p=.|o`XovPmp(ûKP@v$X%>&wW ܄Wn9k)F uܢ'H;A"5 Ҏ- ҎD( yH;J4%!; aH;AQH;AQH;AQH;AQH;A> /'i {?<ł|v{}?}}h<}}v_{)s}. Z]?0#61{}} / +\E[~ 0|vpM;N\7Fx_#x B$/aD{n kyz#= /Y*xt X;zĈ[F^!1&Yw'}n51}+8nVOڑ{v4Z=lG/S4g]q]LF,M}k5o*x-l4׏MqΗ3,NYw]sA?-Э}iF!y| CH1>ޣt'2K&#\IڴXǹHA?|I ȶm9:H~+4>cόók%_[#LJi[l)4C%,qLuX;@RI|M(KR k*˽ȶnXM>h!?<+84oJWEO .7MδPZiG9tYjdӸ(Ub 3iVO3e뼛%-UX}v0PR B8dT;^J$6Xorls%+;%?є}4Pdۥ1.]EzG/AĐDY X,A'܁Z3oېF '̚E{MX1PQ|Lƴa<vXa%C+ũ`g9Nv:>C֎"L?賳8Ol 5Jz䔝R]׎)uF*!ȖEGʞkG-.UlVt6 NAWC5B%K wPR ޣN(KPAJ#޷hE\;BvBCԎ%YDGa1{ $Z=y^k vʎ7”Z.ɏjKG]ځl$QvʖaQfk)%5꡷/F™T!c; :N'@H LJpyF#[Xb^fn2 &L-~d:,<ЙlFc1]V{ѓ ov,vtmiG.I;c\S -vq:f\fg**J3ɫ \X( LJˇ@F$0V1̱{Ñ -G71LLBc@Dզ׶vt=ruYbbd9z~Վ9wv>nW;0'.jGfov[:XK=x! X ܉d{ OU#!!5˱N;(K:è?;pI;,jGQfߐv`iG2a`jSƴ'9cV5mT;VB0,AG"2Oi,',cѭ6#[LzӴ ,v 7j^WG0Se)3P&g|v*t׎~Ȯȭ,CJؾP<1HDn4XT$28ZC/T;xvٰSL~X&7av̱$2v`ؗcc\BiVȥ('V4y̫i XFTzB QiGJ{cR kttևt'][Ňjl"[֎$sxђF~Pcě!툽"tJ1!Cg*dJ?pE/ИX6cLwc10q%- bc`%ae;!N׎䈍$xf݊mV4`WD5[B]udAs8GƷў/[p}zo`‘Yc NRxB7 F96z˓ )SyC/#h]^Ў\iKZ`Apb!d&̘J`{j5 ^QĒ*5Ђ cCKf #uRrޚ[/LUT(r)agAc=I;_Mx0ec݈zfKe5V֞]}*0idzO;2:ʱگ}.Y= ߧ>O֟a_7hᯃvk}퇣$_by+~|pEkn S;K.U ?4iGϘA#B   o]Aߩ •v v v v v v v v|+a^z [t.6{t }=9z 9.U۳u&wζ`|R^z— 艭IS/JaTlǾG{/N åx;zXU@ГfcA;6SK%p7\ǵu}9ځwc@/xdA{5 BAUWiǗZY!+,<3w $#vp.õ#tR;ăkzg?$\ur|z3e|KVмOdSfӎ_ҖrHCSpv_Z_qhn;jkG73/@}'qh(:d ƼnNb^!9Uw9/e*%K;`` vNV) Sf95W 7kl(o<-QS!(e[50 hhގ=Zly1-T;xp.{i74ǔa70(D@D;*A;9`:K6 .|bKV>58\z0oA{QWLzm4~Gd 5kz[rAjn'sD" xR%D S]5Dj}Aƕ`* ۲" d[9֎&Y AZcs+FxVƟz@"[5r/-S*7沓 £pv{ u؛7g ixvŜmBw(>qAr|vR;3A/'jdz\f!An|v CACACAC #?>v~܇<#IÝhɡJ;Ax Z!:tAUիF!a\W{ }6ޜVTZqdpaQ]ߐm>8mԟ2YOgui,g4Ԏy8>1gY 5GcfKV#QG3c[bi.8f>!hD^z[1娃w0uO-P2061Gb]HMѱyOߘEU.Q6FmVp0Hq!׎Ҏu;#1y.&2w 9f^yYAp]ˆgiGEkQ,IKZK$2.~wX;"S{r~=2~a R}4i*?9˵akG`vs0flJT_;KYҡ\:#0ܣw2'ב4$Qiǜ}mLJ:jS3Ж|΀KPl"oN-?P.a?^d9!;:xe'즬95p(|udž=V1%҉N ڣ?p fΆj/6ͧvf66IW|9Tow:Z; 2!N .n%fz<2OWֿrR(f 9* :S[@b$T RKJi_ bF"ojݛOfL7Mv XfD|T<Ê0 J۹Y;ăOsW0:,vcXLS -P mykSdHm~o(TL%iGHz\1!ʿ0%:P.*[3-~X`CWI#M.{K28>d[O0$-͠S; nԎA4x207ӫs@KS2l-Ԏ,-|f D( NzjG2&"V'>ssL;Ȕ?tBav5Վb޹j@(&6mԓ/G'63gHn+'hG"=\=U;^vC;xڑgFa!‰݊GvrЎ0'pUŀ]FyXS;$rH͢LU:6]hѶvdסtSh9jGʅ뇴" Q;B հvox}Zw)%H#yݙO֍e1NX>(!BIP_ʔCa --qlb@aY75Nρ\;Bwko`d%|lGg6jG{& T @A]҉vRgJ9aǿT^ŃgGJ@vFv)Y_ѶGt8jGj8&i6$]1JC6wQri._ P:cח^ǖl:QycPpiip;~筄F#oSГTz <' `L+G\JYw3leiZ김߂gl9O{Ji)CE1bmPBqtBkmA׀T@U@r)GX[Sw4fwֳm6{aꚨ!ڪ30 e;#z{ =qqαҌ-cY㟰HE_#,sHBNQ;8OײhG%l806n{m|O'O@I82=?F3Wj(%3W| o/\\'\wA{?O} Aoç6 ȭއض>R;̍᧹'֎; Cㅧy'X낕 L~Ab"ӽx\;" E\;>A4'c3[8wn+WGŋGS{MP E9rj>^;Lď_?/o,˳;5vՕZ4V~x1q\׎õإ<2x>@p*kR2];@kڱӣtLFP;:y<-[.᭖q!ю%|l<1?c:iǸ̃'Y ܉FŔ%0CWBxt@.ZN,lvqi0mh^ K pc]"56x8x^V[. eO)qh͓>lVj<{<Η%%K#zrOi-w=r7l,Rbt;Վ pvz3d2?I V,iY1f1 Gv[xЙkv^RoFR ՌO0lMD_;cƏiv QGBD;jviGIss)N$2$萉8d=Z.L8XL,_;HY[1XS]Ġ)|m8vdۣ3ʋWۺc(f^GP&Dc,Bo9Uqeb&D;`` {v㫥)%QTdּhQ+  J݊3liD..~v̡kvPA%anxhǚ>-X ऊO*2i?i>lyH':D}vs1UH lN!٧00rTڱҞ k6ny?3J9##.c$ʊa'e'ǫD;bvx$(v|6}Uf0UG{4a6B˵:d=юls. WApO(#hڳ%ScP;0}vxaHI7Rtd,N4bT@Oߪt@V7LFeoG>/9ޡN^pB56G#! $@ ?ڡMtiGO/$՚W #M'nRkGJ5qui9jDGhiGÅLڑsG {ˁa8D 30kG<ѣy2$d2Ҏi6 C~GJϵvp^eڑvvd1Ў_[&[IkGFR:͵#f0ĔsuةuS]c#cs!&sq\⸦D)C;wv_Qwס"胬 5ȸl&)^{kUTe۝G}#~G«ѿtQPňH䤥KҁT;nٽV+M::h!J 1zsn+'=Φ<i79R/霒'#Aّqd< QRL$VSC݄QcמgOOwȴ<;8B)jK+c`x94Xت̌Bc̈č)9-{qvۦ)%Wt/zOR,Iذ!bO $uN;^wKW"%8[1EI%PWSy9zxj``CLLuJmӱos\\<䑞4Scܘ} -g42X/csN?ȅih _XAܠSzJ0kejP+y[Tx:#)w+Oّ|"!Q '3gK$Ut>b|' |m`9F6DZBι>\LT*2Ac]vG| cJcHݡId?jGBsR3S%ḧ́%97f+PwΝv.NY,p9r=ϜBFFjǞ>g|2xQR;&d}wt!_MJʤ,{DHqt<A;I풥a=&nX;(lb'Ҏ;)ps񍗝[kom'Bq=lQ9;嗳tjB;_&|gNFsf>j, iM,Z݋_㠄o6AH;AQH;AQH;AQH;AQH;AQH;AQH;AQH;AQH;AQH;AQhNUA?Kc&JL|K\clO'W>} :KvT:|>A{Ax/.\2#gM{;Aރ w*] \JWNqDof׊\Wcq3ѮSA[M;u)Oޝ;S\vjC?[45G3Se;ciA[xvn@ЏN%+AwijONwSKV +'H|bB1 u}si wk|v̀ t]; mAR|vKI;AwhCN|vd*. |>K;A'@! B! B!pwmlW9i {73FgRqv0#,y:] ~xwZSZKI;go0 y1_jSJYM2w:];oNǥ<<¬Vw -,B :;E6N G j! jv\Nt/~*5w>#=nӎ yg-й4}oG{q{QIڑQ$rbWt|qv\[4*g\;ֿ]x,qn6 3v̎geR=hwKRЎ+/֪тR&h&26-Z/Šz֎ެ }t .P͇kGǪP40w:#+[N~ڎvfUʌg &U22wg}o4CCK,͝׬ƮLloюbP: #^WhVۉ2,v@uƹ9?JVQ:P33P]mnԡ ;qL۵))8ױ(.vE k\ $0-E(W%E$ 3_ FϽf/*bZKɖ.6ҹ ,r"Y6g 8\U̹ci}ߌ#~<{Uq`0)uzd5voĕIT&z$A>!s;FUOϙ/ -O = #悒x ׌BXYޏz@0'{GHOlFۏ͑ X5BLab鴑DW"Ձ9O<1)9I2L $[/d3Z +ᱶvW3C jpɓhGoԎ4[kǒELin衾vo&7Pv10v BS;i!Э_@hLXf zk 㞓 3h ]BUs~[;a8^LZEd:ϥlE;*kS 6ߠ80ald&b_H gbcxe{ns䣌ŏ 6R%yۇc+eާ`1S=uث,/ Nx50x^,,ŕw0(O*smvL.WЎF3 EKL^fyLsaHxÕ5==8V8h ֒9Ź/T !0 Hh)V<3&{3Vmz~f@lAKo/?gv6aaB?i@;V(B̗]t@ PBVG BiyΓrao癚jGXXʧqrȒG7hd./miԘLdЎׄ6=QFdB{*I9sdv(F A2͡"7ةqYK6;o9m}FXv8,AsL'.Ҏ pdXplLVRox*^0FƬp<p9~֎9y h{ deזWvrh\;r߰C;}Ԏ%Vvx_:#UjĢiq6]=m`Y|iytvXbbСkv2_LPp.ю91 M֎v'a\BdɀgRnՎ.*7^㨥hGB9Vh(B;4!}QY;c ~K2~`ZB [j+%󜲊t8eXl @Zz[_X|Mwd{0Ƶ3+wv@;bB'CIx&%mޭUNE#q+V~ƊBAN}4zW֗Ax$'໮xЎG\_y4v]1CACACACACACACfU^ߙ)ؒ$v9-$RZ( ((.N~N>i~Ru`OH䯾A;]ye;}:Y;ڂ;.X=j WjCސ"Y8pn_f^^E^Q6hsiǞ e_´ʬjxv\Y&PVRzYwK}o ;-~#r]E]oLkxU0sHƶGz'W?&܀L+]M ŕwWQ{A'Gώ|:DDzMhQ yA״#Ub0փ8aU ;Ȍ)k:CI#;o&̪HWˉxԒ<5:Ķ jE+f4x4ťeЅ gyf 55 3KjnyY/=%]4T*CpG>}%wz@l+ٺT6u-pF(Ҏ8,i *h`@+)8+#ܒbn-zmdJ.}tF(jkXUDU&۷gcޜR !n*y/}Gso0c -bfeh\s\#FXM<񊃞1C&CG_tQۧא] TιsnN@n3ɎpfG#5S)GN %N؋mx &L5[lDd9VŜWh9 p4%j޽1{A/)*Qt/ɄIq0hD{K;=")?!-PBS;XIGX•ݖΧlRsBr@&YJO׈݋N*q3ekʷV.n=^;no)[OFNM}):c 8$Ζvk$S )Zrj'>$hhE7+5Ak9|g4#"Q8@^[= c1*zvՎhz}Є ;pwO7~-AC; mc\kѢ!A[}V <(yvL{vqv{Cv*P%zvtCiMh=&[vD CbÓOVv2#yqHޤ'uX-2!Q-kT̗0Op.Xe<%rv *usiܫw}Dd.KP]U]̠Twj@ SR.|Œ"meB( I]]Bot7O^QPUT< u$s&'ڱf=~mJ] f'FHR, H2Gл$ڑVYOq0ygq S͜t(A{PEV7`[5Y)..;8=gM,XI"˨aǐγGrۦn6m"v/᎕Étfpkok~vﻈT>쬴#p'_#}_]ڷʍ/T{jgUM'gWSϸ=HŮY~Tvsqwt%g׋<ȼ S-"^ ']B̩Ecpwx\2-ޗғ37 yESo8~?7k[ix@_I}$㻉TݬpՎO w _/wk?G/@iF SQG{G!~|vhyȀ|v'>v  zځrInҎ$ȨR:>[;ħZOCQBmmoO=G2˓YU|Er=XLN˴S: 8O1_zy'0IPU,}cl_,V A[,vs"YvwʍZێϷqjguv4%|M[iHٳ}8EV;Rb罜՛fXMmDC֯HݸL;0Jnc+-[,[u2ét9={puJ;.ܣ- Ct*q;/7;`D~O 0UYgg\J7gnթ;V&?z8w~Ϫ юsӎ Nl;yL}?-XzhK!#y!gL<L6DW$rD}$x ̑~c2gɺV|:Nmguk8_>X4Hf(-;X3*?y`Y=G_;ZѻXUnzm(qyfQfLE83M4G}9ya A9Ϋ)\< N(p;!sM|kxH}29ju&.(Sw: 2U"wYayUM+y 09ς:`Bg䌘-(j' y  ^,|Ԓƫ4Ҏ.~t5%(LxIA5h]B:h%̦S[;=%[˸]5CJc8q:-gvLv&G0RLܢD6%V$Pb׶"281#YP&2ItyKґhSQ\Co.툊v0'+tvhlk q3[ۀ4Fk(Z6CFˊZLa"a,Y&h5(T;*i;`p8G:ƯkJ, y .[ɅG<` 1($~71,8q)6ފw>)3ӼX1]L;6#851]2#k9^+c[Bk-ͦŮD鳳 L~c>eofQ-!~mڑIApvxckD(a'jlM ȄrFgjOizs : CǎkAε NP0ю2c`^. ЎaAetюY6m:K$w+OiT;&fvjb\ELeI`',KtZh> e¦m vd#N<V-#N8%W;栃udtYaː}  L O;z:I* RTDi|UiAg2&#d|QMe]lUFL. "ˋET >U)cƕLƠ;{ǀ"V u wxRvXF0e3Q 5qEf[!#zbԎXN-Bċ,P_e+ -ѣwĞҢYI-^#dJLȷaDW:-^*%/e4Q-~8n~ШsfFQ U^v= >=$W|z%MպSׯJoމ^vxSF7ǻ)p0!N0ýC~VJv|<8{E@}-<3(tX£*kkPx띎]B(( (J; B0ҎBP(P( (( (J; B0ҎBP(P( ((<o ı?nM#V/TގҎG=v~pg+.jK3ay-dRx v|ͳv*u#?:I?زS0nӾ X?}FL4%} O׎}?U7I;~>'6[>_&{!`=WIKY߿Z7 oÇkO#@ϛ  G5(uyZQ|]:ٴ(c/kgO};o)5&Cʹ^:eoekp^QiGpiee>mOuGeu*84CjÔfU_`z|v7Im%}L ~Iz|JLfT ʊ9 tޏҎGSص/i}ǪAM*KD0Y1a]CТ*ނ֎Bwf^{?ڜ}ט=dF;܃w6^ˎ`ݲ ۿ5bLd}vtdp .W)/y~JJnzu]r}CG5yVf1B/h ?a- H/;fwC;z!vTL2ƹ]1as.eڡhvn,P 9 ʷh^E6iOLL¡He照!mj:bb1Ms\}K\Ί=%h3.][zpw!ߝڡL U7ĽY-JcEO@sfߍ$p$.6,5>*KP;W̛ht[; n4Sm`u6ja|2^(܉KCfG "B@ji' \ҳO:L)}x cT;`37f.bbڌkGҎ—Y@fQ5@@mr7l}A;$Ch~xQA!P-4uZz)t ڔMp=ȝ,3t~uFTD( )k軐h)%{`gnu6k^i7!O(%OPgѝԎPyMB_S->ⶑ^ g? m -ӅT;f˖P4eRNtt *P ~_= b6hʝݼ n 7tDid֧zifoY[X|1 `o]dB<?-6 V,/ؠw}Akk<m I\j9ӎΝvv&؄ڡ-jiD # o>\zDtՐD]!kkNbW:+~ۍ4{".(^M_SdӁN>Rܺh[.rȑ\Վg0>"_GxvżW;LR<v::(bvt&9"(w::c#w{{ѻG;&xRei?sBWGB%oY}v'a|T68E'ahȸFu@, =4 l˸fه=ڱlJ)ۈ5H|ȏv:|c2qe3y8(`OH&-֎%s6Ms5f8!&Cz8HKrm9odEdL(\ɅZ*P j`(e+j9in]f}ڱMOrwƣJ*x| ;CEvpҀ98Nv8 J(XlAp jGv@YڱE.N.҄d iu/5~2;QqOd>r~ȥS;CKbv6Jr^k/UH4` j,/ˮ/D:^cx=|5-v(ûm'FyAJ`gL3rzB~vxMXdQ?ϪW<2Ϫ܏v\$ˆbt$p& Fc-et]USv~RS}R1ah1mE'yv\Vc&$$>||ڄe <)9֎eӎ bi@(\0C!4IFIBs)ܤF8SeNaZ;D>Cv1ځӡjGH"yvb=/lfď%ш Y.+@14b|T:I%N{#J`KCfQM;ҎQ).ra$%LC˛C|rvlu#! ^d4W-#LCDdg !j)hTҎT>2!wkn.֎*au kţ[;BbvF$~5r"x.CW;RPڱesQxQv,o }d?-*gIa?eF2'N2mhGPHam&TYĥ` *3lxSW=E>2,#xv͔ӭ<~vl|Wݜ?q;X n'ϳ (YQXNku%xv7/qY7'|w# h? xf`~=,jJ״#s]`ckONSy+ЕfqҌ?tœv4<uk0v1א9ܙni?[*QީyOuX;[F :ɖVo0@cK:gD;Р7- $ "[;\>7^8R43"% ԍ.xRP3iGfjei\k_gWl;{0 ;/ϻۈc:y ڝK雴cݭn;"p`j(Җ!p#Qdrio (Ŀf^2GôibH;T洈Vn階*<[\**?~v$tT@uS7/s>Qf_Y?&vo[3_v\ΉuRAk*ج2Q"-?9p .ڡZv$ےƵ#ptMcP:घ}|/1:`$ueͤ1⽟r=:VgP ^qċ*q&m0~sG`qq!&H:Bz-2Q-"Q( 3r*qt:I<rSsL;$D;,ctDcDbH3Ɏ`$ v(sӄ}06r&Λ&dyVP3 vI,l!'5#wlvRXq>~bnQ($v`nR;L E";UAߡP}דo=ґXhgI`v(9[qNL2&}nrܭ ,N &֍?1 EܡI;2e須 y@Wi"">~5K;ճ Ӫd[u ĩv@v2c/\A;ʜSioDh*X[U.wuTzLJl,A VڡgZMf NNZajkkV׳)Ӟj)PֹNвHIlH\;FQhf?ZKHZՎ&hvDj02 kn/c#YV cCWfa?yXH;t*~vu C1̒AO͐YxtJ X(tPqMKҏEi烾)\=PdT(EiGP(FQQ( Qv BaBPEiGP(FQQ( Qv BaBPEiGP(FQQ( Qܫp_ ƒqocez lP(|ۡ J; BṸ\;R,VO^% B\ܩd8UyO- Ÿ]wl/T * V7DBP(<']"oP(~^x~QQ( k6pnjdN`BP(<@өP(;?oQBYt)( g//8ot ³qvBx]ЊҎBPxJ< Bቸ7g ='uQ( N ħUQ( Oĵ BQQ( Qv BaBPEiGP(FQQ( Qv BaBPEiGP(FQQ( Qv BaBev@iGP(Lxtar}5ƾ麣XH&|ՍZ ŒE{ܺU4c5Rz]|L;pJʤQw 'j|o.]w{RNj喙ndoݼtn5&;k1!<ЎCty%9ڊ6|Hv8dJ;d༃nNyڴW/,PTN4!Ԏ Yg/1#KN{s##Thˮ}e kN+ڷ9[;C;$ +q4 Ro/ۙ /JE[.^WW#(ÌۭcK;.]quKAoӴ3Ttm&2<(^Z-Ċ zECKL"rJ.7*yG م78Z[]AddɴSeg;sk;' Q;{AnPюؠE/n#ogiȾ9eQ%M[1Y0A74!9,(M@d qm4M6ink[^P<*X_hqmhī1guX;KuBJGW(g h48sC0o_StDm6%aJz($пr1|»ƵåtѽTo벾5asAF/q.P֎:mݦ{og[;:bA嬨<2c/7b՜A;C;hO3[%huWHFg TDӘaHpH;nX6AWf:kiPEwz=;3nd \lUjKC*!@R9>Ҏבv0k^uhGBrjw=Z C`ҋߩ*t!1;cv"~Yk3%,Ǩ!9rbK*#?>3nd0.bgr1KO;x\s#9c STͅv:O;5c' 9;<֐!ɛ}юВHףځKrp]AQ6 :w0aM6 svhwOց#: E(;;5]vkDH U4wjtpA0x,ذ-Ej6#kG#vSҎ)lf<@'C(wh=ځNC;Z^5C4 :s5ÉI#K>>UPߡ/#z4YRKvmA6)@J2. qpʄȊzS~oH-"Iiƴ/Bkzv)l%ped͕e7ևlVCEtv'v289w~#.}HjДijGTzI,1aԔZs*5NQ+Z--c<-׆?M PCMn+QZȰ˪^5!Zfx]M`ILYn*~:`#5vV5jGA'`&%QOʃ.ܹ;621eE1X 1hs,-W_\4ek&hu8$3x;/e&N&ZZB?,oM ڽd ߀m̌-ԟ[1Lݥ=G֣L;IUzJӎBsx(<kG\tD- n n7B ?ҎBP(P( (( (J; B0ҎBP(P( (( (J; B0ҎB~~k(PQ؃3ftz$@^E}#w{$?gq/?7A6'&Oν̅(j~]7UozF~+KljwT#s 5#f ӵ{)q?OL<.ӎOD14-]wR)(pv8zzϥm\6?@:맸辭Ie(izi4Jk!gN mpICeukkiLo[M rv|9i]jS;eqv#q2vY?6lY>eWog /ܢox#Ӆas?ُ>J2dWDc^A,Oe:7uS%[/?#khm5Y7fKfvrp%]E Xbm(rcH> 1$NC.wmT6$ldWsD;ĎCLlUQ \{dwypyv*.` '_ iqJEMj ǖtvDZޑ.Lb;gqlAb3bf7$44n@* C2hh[ߌiG19eLMNq0giGjEqD <(@3`_P:C BJdb٦ځhFڑ͂֘ m<@ߴWɟ fkCDfӻW;\3ꟳ%K(jGT 5RӚܻ~MJ: ?=ٹJ;N]Z;3-$ L:6"l$8v뇾G;%p=>i'4~Sys˹W;Bvq"(aE9NN}I$r+-);\;+ʖ_zjMqo?YIYAtvDZ?τ л̈́O%Lc#{CJ~cv$,R2ΐv8K: wn V۔AC;߻ujj&2ezMN^x֎Aj"#Al0gds}wG# ɲ[( O&NvȢ)RrY[ACG9&DnnE`VhGgizvبkAvE͆û 97F9GܲEqߕ'ڱЙ>W[__ƽ!*9GJ+{4V4q 8_XM< ٜP>9yGa `L}6~cwFMfK I{rbN[Pm$ h3pSNB8;Az@o9;D f'ng$طEqst9 roo Y!竖v05zxor^#D1 $'|߷jgh/Y=?>h/I(<< wY^ 5+qgjtD -seՎ͏Zqwx0J;/;Nu*c Ai{Pq>廵cڮю O 7nҎB/ ܋]i|PxnՎSiG ,1z}7K[ ăA\W( ];/;^P(|?UP(>BPEiGP(FQQ( Qv BaBp~RaPh>#gK>y2!d넿B((.IDJ;ހ~vM:=#n^VN n?h`Xu 88YORi^tVz ک=\iy)uvК=^K#u4B|v`к"rӣ~7l;0U{Z .|`󍚰@\ެnjϩu@g(7|q S㳡_D;NvRٳn'6%H_/<Ԏ3Cp#e隞Z}ޡlumwQ1 NV3^Fy}|x|ſ?lOFk!.yenOD{3n>Jf~_q&t2]tO?֗ۄJɯ;|w] Վ{ExٸF7sy-b_0AS@.˭Vgk7~]`]?C;d]~[@v\.ρF\/:.t|N=+/y"B8s"zڵ2r9= i!W/m(EzC0LFKҼA7<̆_^vj88T~OrL;fc:^p\Ρ<<ӎK.<`nՇk6>D^pp4Ŗ;C;JyQwg̔Vl'3sR#ƴ%hH8H%멍>cчЊ}jMo͛vMlkhp-xֹ(yL;@M;{$؃.F:z7ؐmvms{xWy)h \|7k:T;4(ej`rnIz;i,8;D;oΡv^ll{'x?H _vy >@;>iiG_``~xv!УwfѫFЎ2fc[_z"(<&q8 d[ c{ߠntϢWW@fH\vd#V.>cP;`AXtgT;xR;:D[h͝)\ڇt%06S;lpOŀ9@sR.H iM:(6QN؜EH>%NnyՎnq,2C_J!9z0TCڱ,/s[2g yWk^^;'  "/TJdvz môTH{B!s2#h #`} R5zǥտ1Bxkma) ~[Жgڃ0h ;YAQha`|f{;d_X8^LIjGcZEɵ_.}>@;0JvkbQ&`H;:CFCa&۽Ҏ fvGS<*/TPT3>xb0v$/co0?Hw68έ^jl/}ŞԷhT~{'H;AAܘa҉-q؄Ef{qvy)ɖz˦c7Ǵcֲ+q &'hG383RǞSD,~wiGsqsC;t[;Zs4,xfK;2u!'`s8Yr\#p4xH9v{NA̮a*\Srd4N@A (vU#4ALLLotuvXȖrvN \y} 0-$'i!b'3s71aڗڡ1 vj47ԎߦQ8א6mj( n͐WhG*(wjG@O h" _юٴc^y9ei;xa2}OA.DR"Xv&Ǖ6xT3[CL+J;25T)q=%$۴kzs*>юZюh viov̻,EO;RG=\ڽY2lh.8K߃egEbv|(?Z7|M^J ig''Im(3Y 4mk@:G @G}]G+R *ղZ7M¿p( xhGTl\4N`i>t;IB鈈:șZ8ǙPCNw8{1  (tgHb&5x3QvX?|͂rӴ#[ghEV- ,ʯ7_6R~ L|FVmjB)e!= Q;t^'(;QoҎIh)B2;ǖ:iFpcA-> UF)61GLP 7 4Cv>&rGAF`b,~ LNnhTKs5ּ|vPSB׃]4M` 6\-YWQvpL4oDȌo(Ҏ [#SEtch CfCg'o|Fgy|U/_Q,37`[kw\l( :Z]OƟVv &ZqvH7Fj_.LfETy:-iCMqy#IqvgVo'xdIf >Scrl|O ơ8A;Vp |sy%0 '`$fufG+83] "d8a|vhǺ bWh2f)Yw2%4y%dm>P[_vR#X@)F~ xɊtN/2k3 n:TJ dJݳH# gPiǞn tOAU"_[q*:jLV&vckB Cb7ѳDc#CLnVET2LfP&Ě+ݠ]&4D[xv<Ïs:ځH`["%{ _-pd\1l[{bf [h?:q׶c ({VQQ&=}eQM(xJ;x/J% BϽ3Ǫ:|(cU>yJ; ~}Q\BiPQ(ƛEof짣Px&꺣dv BaBPEiGP(FQQ( Qv BaBPEiGP(FQQ( Qv BaBPEiGP(Fqv'h,:ПяBPWkŢc=ZaٰWP(ŵAB1pQa.iWQ( W4lW{x]MlWZꤴP(•gВ]R"B Bp>./3sMF;R/wtP(I\JዃҎBPx.֎x7g Bz\-m8ww1 Bp ޫS0uv ¥V;ߡBP(\BP8Վ;P1@;꺣P(.i x*ɯf?, $zTVGP(\|hɷ( 0B;J< B|v =gBp }bilCgBp#֎÷?TQX( p u # بP(8%HԎߠ/`v ɸWeGS;#AY]w V;SH<2&v[P(1dvB^;QB!xv BCPQ( Qv BaBPEiGP(FQQ( Qv BaBPEiGP(FQQ( ^Q( w x}>')B v g{3_*%?5M܀ҎBb$~yg|T"~-t,IkPvH*5G|}梋tŨeYGCԐ?FA@0[׾kiy;R- Cb{|z/\wCOqtI}ځɴhb46tx{T\3 ޱ·Lfg}vtՓj#8bEa&.Gv ..wgkǞEcctWW:|~FrhG4q9:j:n~v [.<dTQTŗ#>i;~  íܴmʼnr^vj͡o[s?ݡfb'ac3CmqƗv'Y2n 9ڜdn0~{=`BЎxrnq醼Q;0佻uYOgSVjclCMmGDF4ve'];AjeIY/p[DbKМ9n=H@a+-W1YNNo5^nAP(cMǼ~4\VO!Bأ['hGfŗtTKp"݁5 l Φ804*r{kDA,W37{$zd'14G ATOyՂGjBkiWIv4y(X_LY7! \ͷvκe~vOPՒQv4JpS2 np+ 0ɳ;t0 3s7zZTmAxZ $..EݸP; bܘ۫3 SY+} `RQKΦBfC6-FS؀9Yߎ9Au#g"Pi}P;?]\FlȐa~up^(<&ԟ4UgxGH}ۤ'*L;hh.T;dv95c|bhy n"8Sv@vpɆ5++֎(#M}Z^/akOʓ'v㷴Cv2|TWhGij0ӵ^X)%CnH&ȁv%S넚֎FIޥbۆ/ЎԁʡPjGځ'FF#6Wh4z@܊V yGac[mPRGvtj I׮O^= LA=E;gtfzov()# ^Z;*Qk(Mޚ;XMYx5O -Y܂(e͗v< qX;:v"SBIӱ_|8Z;z gCkIgԎx <[;fRb>Pڱ>$ASEXhҩvRSᦈ2T's#ζ/=8O(e"+xh(\@D!S؎.hDx?}@;_Cuk[ŞiǼv괩bgRN>M;,,W;4wuJ( :ռdN2NxwniG̳u鶕0õiI=Er*1S\<:7j)i KSXrXj  dǔ øvD( , .p,8ٿ N#I#m<^G̔Z (4L#6S՞ L&mCR%mڡX{l3YS~H^T=Y.L1ҎW/fڈ}:Lt{-E@bFWЙW/71l7ְ|NK3Ќ9q˴`_!ZНn@W9>W{C\;շvD mNL[YCA0#K Iggަ`jMN~Y4x;lKS  ͐drD^sJڡja'ij-o>%ϓ>ŋ)`zH;2!OǸYbm{{.H*^EOz}.k\;L;|= 4el?d7JH4)ISc4.kGe̕vv2U0Y0pڒcF1X<?' wrinD. 4}0f#'~t߳9L=冬K;6'OY;6 p5j%ұe][6ҼZ_99xY+?h~Wie`l3`ھ!/ĢO Y|_i}W=fio??>NCv\c3pD;FX1S,v|%fu랕[wҀ!uC |xpǂex> "-;a۵[VUٹ01>7!n/[QVSg|vo٠ Bޮ%BPcxv BPQ( Qv BaBPEiGP(< ~\הJ; BAƯC"|L`.v ={1dlߖ?<9Zc<|2~y((R/!<{\͸=wwӏ5(j[s%?Rם}L#I 'h`sH2f֎?"P>-4x u]<1S-ǣ(x&޽L`M7ω#L)eupsѿRc{<]Vл溺 L9(_6BC;vǮ~Wwv:S;^/8KE24w_w3B"Fû7aûe,ƱNv7vvӑ{CӎU2NT;~|^N'sSҍ_Hm8}=vw&+״q_I\E0C̾M?U6)>qa%{P;x|jxv@ *O?-:¬R]TbgiSw#-,0YD w~V?R&: hN;:/kn%3D=m B\_P8[̜a.Ԟ$ȅBW9:EkEPku0pvdUTuvDK@ɖ㤒3b/[v ]-Yc\c(/e֔Ƕ¸<_DxZTTg~ELT+(Xmzp1!/3-6j>Z2Ywb8W<.d C/Nɶt+ЎuAmLGVl3E!06h(L>kq,pN8EYE7#Eن- E]~DosS6_p:3,X[2lF\ò![M1'1oˇc%&m!b)M;MSE Yշt=~H)UJPWkRK<Хhp4- Hk}ؕ+R;Z..f\#)RGZECuhXBmwM(N  -ѵ9aչ,!܃q{ȁ,]JuhG"*(W9bE0N\oʍI:c]@٘7nʴaA9lab 5PQl&%QXlck>,1[D66ڡ&<}5Ee1zZht.+B& e nHqH悦, Ũv(| ٭D&v8nt!}~,e b󯓼P-|äGR6]Yظ1` ;# K\Ⱥe>hqyQjpD\O'k'"%H"((E5vC!Yb{`@@䳑TIyvz0v!"*WL#… [إ8. #S8yI&{۱A]fp@; =$XG5VPN+^ː>G;P0q\D׸`%Yݩ!i$%N䕻ze+);'ƃIzk(=G;]L^Lw-5N rz,;pvd`P;"3Fы,~ޥesRQtyiYvѣDWT fߡ've!tK3]vIׅ1t{r,"༮#s= f$",_D@\S(()bpK kMj=Л֊q3د:3AD՗uՎ#SJHFӎ%_a2G5&:Ԏ(^ԏ|e-N&>溣LW^Q|́vhGJ^B\D;kHC}T;$:Y0tWJK4 {^^Ǒ2BzcB8ZuEH*f {[bg~Ҕ࠙ 6"8sYDk4ʒ^SƵPcEY =mu9&0a|_PbaT}zN;$lc7 Y_z&,-k̄\mS6r+'Xwձx%f򧃤R>ڧj^ܚ'4ËU0nYU;xCki`.JؙCv`Ast-LغH-P8BmuƒYwNx !yJF۸{V}#&rQwD6jFCOIm""zɄ4%)9"[LW%\; J&Z3 ز,ِ[nc2lfARBQݫ8cwNbP#IU:gnG|S´f3&۷لM zSt(OoLߧPg'PObԿ2@|&ɢT*mdu˧q>5b8:]> Pr.1-cyM M3A֭8)};yÃ) QVvtv'Nke]6 2G. e}0|r_q|M#[#Y~^O桱'|"YݫФ|KwտώE<Ǧf5﬈Nvs8\ œ|U~jlڑp\Ʋⳮݲ32]*VǴH @݆br iy>ţs[k䱇=ڟ=UOW.5:'bO OS*Yv#ưQG;IN!Wxț^ w-_=<;%Ǻx:EZ4 h,` =^Vc-uGL77iW4$;~F՝] o7d[v;v.֮o-tMٱgg9vk|,Zg-cϟ$\}W+[?dǖ_0տӋOvD!Lcw^}Ro?/.cӿ}OdU*@JvP%;T>5;ϸׂ|7Gm[͵_k5CRMϲMp>3;./<./.B7%/q+ѿ^eqtV/oc랠}t}^G5l{oi/Dr&fz]v.CU_̻ :{oxyv\WCno4Ɏ񃩎XqjKz:ߓ̛m!@=Iz  ޚM^^9?JvP%;%?%|?]K[;\fhrg %=G`f-D0\v}?[M(o]x |ުzyۼO]}ݼf%;iazж}}G;ɎOqPju<^6]I^vMq|+kd,[$;&E;1du}:I [GЕ{q~IW[q}ٱ̓3/\t/zt=!~1qiw#Og7M7fռRSnC%i1;O7Hz5?o/oّmzȂ{h_V.O ϸ]pi8?=~ж𤷣G ;m5[?/7;xm$;.A|AvW_عlyRby&pz]y}jsRVΗOR#ɎgDwBzZt';yVz507#~Gryncs{י>2y¡_Ƨr yoOmsæñies1u9jژ4;b-~O;ֆwrvҿ)w;[4ف8evL[]9H:0B=OI8iӫIz8ڕ_Yv23p.jZc!r(#7q9cx%^$%%8{7o1:JvO^eǵe-;9 ّ4ܹ<pmM<뎇:6V3cYzݩP7S?2,Hv\FM/V 6ٱMPIr;56ىHNQ71maG]t^ٸm/E{c|3F1jrre=̹=acڷ&hVMVG"dGJV3Wh:qG;C;i׋ifG;.@v;ɎiњfG1I͎}_sޓYj3;3 ;M4f|nmqflg6#k|';ZሯcБnLG"o+D5-_Y-/͎4Q/uGegubg 7?›dG4?oVL&1pr8|ZdG;ӥW3ĸ=H@i2;;s*L1bvYgGEّ?ΎU8CCn/f4e]w}Jj8gzo9;ldGٿK~Ȥ§Ѯs͹_&9OJBQ Tӿʎ]괞>[94|]PώH_[;iCI?v#^wȬj&t1|wf>'00d I4I Y8βc>_SI.eW_xbOD|_?f?1zK1UG/^Rz:W-w-eߩ{}\v?˲c%㗲_w } Ľ5gc-ȿ&ypΠ߼C5=fhDf̸evBlpߛmmG̎lX^~OcdGOާ8Ÿ?;fM|c ;"קbv "ˎwgߜBvLgyKvIevޟ8hW Iv?{>h &ȻJ>CY{'M>5;ת>&;.W^ʎq+=W||jqv.;S#쉃m/t$Q̎mǰ>Yv$y%}#Xf'~eGR?Q~-|}Iz>}pSχfGcڴOw;d[ّ[pOΎ#1S@>ǧfG|>JvP%;TtU{7_yZ(75|\zG7c¯:n4wfEǤ{O2';zSoۗo5{ÇC_"=n@ɷ­7v}<:_54;dg4k?{ʿ{}Udz5Yh0ܳ 3n}{w \=4͎{~Zv,KVjK/K[HZdY|cx`&^(W'LҏY)<,6|]ZȎ[>Nm{S:v͆^5+Mmh;+r+W臰k/v87]4[sggͅ$ W7M4{wzG`դݎ)ḷeƅPXB/Nmχ 믋˦K:G2;J#}&;+eu6,4^ך6f*eeX.L uu:cwn e|vj ճcUc]u(dǪ2&8b?(fGۯid $0 =?;Rp0bTHHx0+>{WM59[lFV ۝ϻ_sTӢ;֒05fBV{8΋XtW*v{CfbHVM3"ߗqL^VǴ?&1 ٱhf׽qfu==Mn#1/bq6 NڭZvh3U| ;.t{stv6NaS`V%co"+>]5r{xZT\N9IRΎ3;*Ŵ8i"3%v k݃:W-}ovt{Ȏ~ Q~=ّe&;s$ܙȦײnF<';_dPI7c}=bhvOwO4lϧf^{hIqХ&ybYb @%;f XUaIIdǢ|nv5#֤+39=.ԡbvL*tbV]ʧt_ҝ>2:@vKص)C/ȎxԎםôui]?4NIdةYfG^3WY3tp?#;fOa؎ԜIcq4G=P9peZ\gGG &;f}9;K<;YxeǼ.wtgǤ;#=*wdrݑѬwyMuv`Yv4e'6K]7O'Ÿh y_v\Kh:>y4,N)IX f{-;R81Ԡzvۻ#;fp9Oq4#~+1PQ: dL>0Y;̵{#|-Sm#ώUb}KCYZLdlu9t Ei.+B׆1;ڦW)vn6ovڧO'[:%dȊ`z*ߧepVfΎ㏨w_{vP%KҶ],ʎ옖~$LiJ'@hܗxͦ<;:UR|:#klgOQ?ݏKxW ?>LR%m1vG|~Rasz$mOܬxuE?\ICid5zCؗnħyqyH70ߦY0ԭ\,wlHͧjmғ> Dҹqv%j?~8+ԉ,MF7'5+F^OqɎ)ԋ[ x>&Kל=CaRiϞɷEm[<ߵؕyIȟLteh':;;cr^5r \#9/Kg;0iU zyTBxQJcfY2o"dzɜe)lx2}#$$ۺ>ݾgkX+d~nO´me0yL跑fGҗeYd&e5-Ivt?űʎi?h#qɥ0ӵ/;<3g_56! >whOi~_~9iCʳ%{t8o;MT_{n×nsY58~])u;#wī#9E, fs.J~}_WJ%/w_d~[)GY~])u;3,naEvQJdU*@JvP%;TdU*ّxG _\mx1s<dG+ڲx_?rd>{{Ûc1~Vi/̎;^mޓ]ݻx7dFtlV۲LcC{釬nln힑5Xدt~cŰ- ,;ve;vݿ12~/c;b+OR+ukNֳGM 7s<;^eދ|;﷑3n[o?0;ێڭ:;&/^<惲c'ٱi-0q-iIXu.oّw_dGxYioV9}I*+\uج5 "MqSS쨴 1/ciS1P -]_kŃ75FsˢxgGKҼM5 Βk<>8pZvk,_R:cwv[zXePcm׏K]Òˊc7[Zh`˳#sZVSJ?\"O42+VӾW|ʳAvĘHzҲ. ѿ u78l`?o¼nvdON_t^t{ۮ;}cmx o>~g꺾}9ّɴ^ך⫣ˎMw͎rv YeGBB]frvK `? nz#7=򶟕1vS͉7w.ݯȇfv^ w/Ȼ2qxw[ jkK0xfrPmv5e9٣cMߧcyNqv5,po;}X\8HxBX62مpҮu}jcv$MqI(zEq |P_gduThOߊڎ/u{:O[ O'(z}v.śI-wIn%{6ܨd?'/' N]W}럊OmHFfdfymjwҳL_^w{)&i-n?';[vEfPC]\H 6tb(/cM?^^>fChod?nBvLnydGEZV]l_AvdȎ~Q5JvP%;TdU5>vdp~6?c%O,jw@ {+')_gEܫ/EbqDZoyJ{⻖ I}};v!N.QGO[w|Dsɗ<ڝ|m>T/m^VX?#{p/Ѽ})]aWeGIݩ׻H^,V{*^`z^eݾ?;w1ω4O-vݡa=)c/;hKrOTɿ6yv^Zs5['̎<rȴWT_60^NG.-7ɀ,Ej`Ȏdm+;uwObim~G?hEm^m6ygK)ev"wx@=>79"7Or%;2;nCG*Nםs~}ׅȎe˱ĝ7gc]gKkxܛq߸57ן^1]![ّtO]֟ov`ˎO=c|9?;;{|R5ޜ2;5Yޔ9[9RWgޙw #s㮋]";T΋ԢV7q[tZ>?%?˭]M/XM.Sp_vl=I9;M%~qv|z}-^{w6Χa2{[ڗOo">D'ٳ%%aۅ]ώNL#;V9>r]&7b~i(;Rl~Gqݴwrik[^-I%>~FĬqp t^bt_vGnVTH~]3f1\pkڟqqc5;n\msk[leG[Y;> BqͬX47#ݤ]qp@װiד}C(kzUnܶT͎d%U{J$H;ݒ)cP8B=LUX?Zu|C%bW1vcB11:/a~\Ύ0Nuh;Ύ]88C&Hc%v5w_vG/y}osoX_CN͒<;V͎< tZ_xW<gY*>3ȋcrR~g<9&&n&1mVcV&\eG|osz1Ňcαx^v+E)gy`Uˆ=wm=Ύy~vF__C;+syC1V{c(ue0V"Ӳ`R eG2 pgݿ/;>nbv;6ٹ+;Ɏ6?Gw6;k3:dǵrڷB6Eްx(;+g4HԌN֏'dǬNWB^·cꔷrIoʆX?!.-a}{B}>fN섾5$ÚXτy2.Je:C7{VˎP) ;fvGv,v6K&d˼%;n>vΎI^6=r8ٱ?s1~LĽu`dw44Эzp:wᡍyݞvջS-; ogyz_)]E.o9?+obh2&U1Y*IwR|=][c{힇j~8*b]ht=NuJHWoONSl}rQ*~>`Ȳa<͋YtBpI 6Oɇl_ ّq$tyBv̪N,/&'d&a?5kXy>͎gP84ߏ[)cN;u=/:uyqɚ PW|*ZZq[my";B=V^|^Ɏ!+fcI&rΞg#qr$+]if"]? ڵg"-Đ I;6WuyׇV}n$E#jlom*lm4gʗy{Jpw<9;>wf=;o$-km ms~{Y{gk۫<}_T*_=$wV%WNY:4ma|پgv|N&b:~~o<7+z#yfojNvf/uGqze~EJvfLUM7{ *@JvP%;T?/M?Ztه $Fis3Oa ٿv:ꡏ}s+_6ϓyv7Mi2K0du\odNJ~1>:Kgu{gf_I-hvw.~} t[c퐵1]Ok~|})UVzRx% M_n-ۜmuzD[^ϾXtJ޶?\NtG.@s l'grR#'P<՟مAre󹟷:rYo|~v,E-ln@.S}n_ŚWaߘ-f/xMteGOЇ%ycuzIU7fX>gJ mٯ&s#DOɎ>E)>6_ kVGej|!ყ賳c&cs^~a|NyHȎڋ"⫓ 9,zt7m6_T G|+͎~jN㑾{:j?&U7^Z:?-;ҿʎ$;^SsU vd>xWʎ{>%zuF:m'avK |̎B[u#fq9׿s[f)9xnz--\g#;SYڳq]7n^ێx~I]Z̥~͎qs3^+ ۞$lIny2:Nm)sF[/<Ї%HXxώ{,_[ݕ|ήBytmX;Ȏ|҅SSٕȴuǨK7yo󊞶8a V>;.ģ{۹-TΎtcE'gp}^-,x{Ci~IjY!]ӅEw,>Ygk^# q/qڋsr8Vώu܊gYY9q۫놦MP+rKRi yoØ_Gh+|,imG4aƌ_C˲#D̎=qD%]fܻKX }ꗍȲ#OM̪VRn'#.?5Vn,&E@WM+<`Uw")pG]gGYNgvvI}p4gAաǵA7I!;wf\.N~բ*%m7W=I<[wzoeGKɦԤFnкE1̫Bxn+zfem#; 0ԵyGf7< ^:-2vkgKLb:*kȎYhS":M~[;c-ק{Sz>*h浭Ifڍ}=dD8 &CDfm$fG³~ˬMaX}-Z꣣Sv v]ϳc>3j=euD @|D]9oUȎUsovl`CvR&pv2+5ةkHd^&gG:ZRٻ?^ }~vĺq<;;U,1߫Jc{X70X3[0<ٱ_xǖg 1VTinuv,GN?Wc5OKx%ppbr0~atճmc\̎<}%h8 c;p֍0ؓNK옄ǻ#Y8ټ @xp^~eeP?|8~cZ W_gXR6.;gQ>ّq3Zͅ&'b;~jQ ̢,mb<cY#*nvCoq 1igyIC'|X#] #<^87Cv?mljw?OX|25ˎ@z#mtƶ9gxei\r\eH@mR PiXΎilcWVs ;绳+-ZɎP&mӕ=v-̗iqb1?Ewy5vT#;Y8ԋEq;_''::5 NöNzv= #- Y2.~1%r7vd6ZKt?;Na_nchkչ_*5!2M=M|l'[fG }|~$YI:AX+dA8G_5_9Wxb0Kp'[\GoCǻQM=6m2lo>:9UّHrTkZ:ҋx-ՙ4f[dcpfX f$;N_#VӮu$bra^ΰذf(x9ɾPJC#]OkJmc<ч%CͺOwtX~\fuBSΎ|kq<*$},U׳C*.Ӻ?{LJQ<_eGrQM60l8g{%]4ۇ}%pt6\_gS5FfAԷ85n|nqx |^՞}<`;gKt.9՛iWa٤]+4:f;9-FRp}>C~ϲ]Ё^=T^^R:ˎܧV 빯MFdC>u>d,ûWO=};;>u:߽7fҿ{y_v)#e7ggb*7;? oOvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvP%;TdU*@JvPۻ endstream endobj 2 0 obj <>endobj xref 0 95 0000000000 65535 f 0000004669 00000 n 0001589821 00000 n 0000004525 00000 n 0000002474 00000 n 0000000015 00000 n 0000000178 00000 n 0000004717 00000 n 0000004817 00000 n 0000004758 00000 n 0000004787 00000 n 0000002629 00000 n 0000000196 00000 n 0000000367 00000 n 0000143210 00000 n 0000143316 00000 n 0000143252 00000 n 0000143284 00000 n 0000002787 00000 n 0000000386 00000 n 0000000553 00000 n 0000258606 00000 n 0000258712 00000 n 0000258648 00000 n 0000258680 00000 n 0000002945 00000 n 0000000572 00000 n 0000000741 00000 n 0000342778 00000 n 0000342884 00000 n 0000342820 00000 n 0000342852 00000 n 0000003103 00000 n 0000000760 00000 n 0000000930 00000 n 0000447348 00000 n 0000447454 00000 n 0000447390 00000 n 0000447422 00000 n 0000003261 00000 n 0000000949 00000 n 0000001119 00000 n 0000552808 00000 n 0000552914 00000 n 0000552850 00000 n 0000552882 00000 n 0000003419 00000 n 0000001138 00000 n 0000001309 00000 n 0000701031 00000 n 0000701137 00000 n 0000701073 00000 n 0000701105 00000 n 0000003577 00000 n 0000001328 00000 n 0000001499 00000 n 0000824487 00000 n 0000824593 00000 n 0000824529 00000 n 0000824561 00000 n 0000003735 00000 n 0000001518 00000 n 0000001688 00000 n 0001006813 00000 n 0001006919 00000 n 0001006855 00000 n 0001006887 00000 n 0000003893 00000 n 0000001707 00000 n 0000001878 00000 n 0001139660 00000 n 0001139766 00000 n 0001139702 00000 n 0001139734 00000 n 0000004051 00000 n 0000001897 00000 n 0000002069 00000 n 0001281249 00000 n 0001281355 00000 n 0001281291 00000 n 0001281323 00000 n 0000004209 00000 n 0000002089 00000 n 0000002261 00000 n 0001378359 00000 n 0001378465 00000 n 0001378401 00000 n 0001378433 00000 n 0000004367 00000 n 0000002281 00000 n 0000002454 00000 n 0001503347 00000 n 0001503453 00000 n 0001503389 00000 n 0001503421 00000 n trailer << /Size 95 /Root 1 0 R /Info 2 0 R /ID [(`P'l8g5 )(`P'l8g5 )] >> startxref 1589932 %%EOF oaklisp-1.3.7/doc/lim/000077500000000000000000000000001332762442600145235ustar00rootroot00000000000000oaklisp-1.3.7/doc/lim/admin.tex000066400000000000000000000056541332762442600163470ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Administrative Details} \section{Getting a Copy} The most recent released version of Oaklisp, along with the manuals, are available at \url{http://www.bcl.hamilton.ie/~barak/oaklisp/}, but this is to be superseded by a new site: \url{http://oaklisp.alioth.debian.org/}. \section{Bugs} The following are known serious problems and inadequacies of the current implementation. People are invited to work on remedying them. None of these are fundamental; they're simply due to lack of either effort or motivation. \begin{itemize} \item Floating point numbers are not supported. Rationals can be used to make up for this lack. \item In contrast to the error handling system, which is Industrial Strength, the debugger barely exists. \item There is no foreign function interface for loading and calling C routines from a running Oaklisp. %% Removed because this has been tightened up so much that only someone %% familiar with the internals would be able to cobble up something that %% would cause a core dump when invoked, and that would take some work. % % \item Calling some non-operations dumps core rather than invoking the % debugger. \end{itemize} Bug reports, enhancements, and the like should be posted using the facilities on \url{http://oaklisp.alioth.debian.org/}; queries can also be sent to \texttt{barak+oaklisp@pearlmutter.net}. We appreciate enhancements (especially in the form of patch files), bug fixes, and bug reports. We are particularly grateful for porting problem fixes. In a bug report, please include the precise version of Oaklisp, which is indicated by the date at the end of the tar file. And please try to make sure that it's really a bug and not a feature, and pretty please, if at all possible, find a \emph{very short} program that manifests your bug. In any case please be aware that we are under no obligation to respond to bug reports in any way whatsoever. \section{Copyright and Lack of Warranty} The Oaklisp copyright belongs to its authors. It is authorized for distribution under the GNU General Public License, version 2, copies of which are readily obtainable from the Free Software Foundation. There is no warranty; use at your own risk. For more precise information, see the COPYING file in the Oaklisp source distribution. oaklisp-1.3.7/doc/lim/boot.tex000066400000000000000000000070721332762442600162160ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Bootstrapping} In this chapter we describe new versions of Oaklisp are created. Essentially, the process is quite similar to the way in which a C program is created. First the Oaklisp source files which make up the \emph{cold world load} are compiled to produce object files. Then a linker, originally written in T but now an Oaklisp program, takes these object files and lays them all out in memory, resolving references to global variables and laying out quoted constants refered to in the code. The linker also puts a map of where it allocated various globals and such in memory. At this point, the cold world (named \df{oaklisp.cold}) is booted, and the files that the linker layed out in memory are thereby executed, sequentially. These files gradually build all the infrastructure required for a full Oaklisp world. The first files are written at an extremely low level, and make things like \df{make} and \df{cons} work. Later files bring up more advanced constructs, until finally there is enough for object files to be loaded. At this point the world is dumped to \df{oaklisp.ol}, and then this world is booted and has files loaded into it using the normal file loading mechanisms until the full Oaklisp world, \df{oaklisp.olc}, is built. The formats of these files is very simple. They contain a header which gives the length of the various segments and the values of some registers. This is followed by a memory image, with pointers given as offsets from the beginning of the image. This is followed by the weak pointer table. The cold world is in a hexidecimal format, with each reference represented as a space followed by a sequence of hexidecimal digits. Carriage returns may optionally preceed spaces. Actually, the space referred to above can be either a space character or the \upar\ character. The later indicates that the following reference contains bytecodes. Since bytecodes are ordered differently depending on the endianity of the machine, the hex format world loader swaps the two instructions on little endian machines but not on big endian machines. This keeps the cold load file independent of endianity. The warm world loads are in a binary format and are not independent of endianity. For this reason, warm world extensions start with \df{.ol} for big endian versions and \df{.lo} for little endian versions. The emulator replaces the characters \texttt{\%\%} in the command line file argument (or the default world in \df{config.h}) with either \texttt{ol} or \texttt{lo}, depending on whether \df{BIG\protect\_ENDIAN} is defined. To make Oaklisp dump itself upon exiting use the \dfsw{-d} \dfsw{-b} switches when invoking Oaklisp. After Oaklisp has exited, the emulator will prompt for a filename to dump the world image to, unless this filename has been provided with the \dfsw{-f}~\emph{filename} switch. Usually the \dfsw{-G} switch is also given when the world is being dumped. oaklisp-1.3.7/doc/lim/bytecode.tex000066400000000000000000000276061332762442600170560ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Stack Machine Architecture} \section{Registers in the Emulator} This section describes the registers that make up the state of the bytecode emulator, called the processor below. \begin{description} \item[\tt pc:] The program counter points to a half reference address, and can not be accessed by register instructions. \item[\tt val\_stk:] The top of the value stack. Can not be accessed by register instructions. \item[\tt cxt\_stk:] The top of the context stack. Can not be accessed by register instructions. \item[\tt bp:] The base pointer points to the base of the instance variable frame of the current object. \item[\tt env:] The current environment object is indexed into to find locatives to lexically closed variables. \item[\tt current\_method:] The method whose code is currently being executed. This is maintained solely to simplify garbage collection and debugging. \item[\tt nargs:] The number of args register is set before a function call and checked as the first action within each function. \item[\tt t:] Holds the cannonical truth object, \texttt{\#t}. \item[\tt nil:] Holds the cannonical false object, \texttt{\#f}, which is also used as the empty list, \texttt{()}. \item[\tt fixnum\_type:] Holds the type of objects with a tag of fixnum. \item[\tt loc\_type:] Holds the type of objects with a tag of locative. \item[\tt subtype\_table:] Holds a table of the types of all the immediate subtypes. Currently only the first entry is used. \item[\tt cons\_type:] Holds the \emph{cons-pair} type, the type of simple conses which are directly manipulated by the processor. \item[\tt env\_type:] Holds that type of environment vectors, used when making new environment objects. \item[\tt object\_type:] Holds the type \emph{object} which is at the root of the type hierarchy. Used when calling an operation with no parameters. This should not be necessary in the next version. \item[\tt segment\_type:] Holds the type of stack segments, for use when the stack is being copied into the heap. \item[\tt argless\_tag\_trap\_table:] Holds a table of operations to be called when various instructions fail. \item[\tt arged\_tag\_trap\_table:] Holds a table of operations to be called when various instructions fail. \item[\tt boot\_code:] Holds the method to be called first thing at boot time. \item[\tt uninitialized:] Holds the value that gets stuck into newly allocated storage. \item[\tt free\_point:] Holds the point at which the next heap object will be allocated. Not accessed directly by even the most internal Oaklisp code, as the processor takes care of initialization and gc itself. \item[\tt new.end:] Holds the point at which we've run out of storage. An attempt to allocate past here necessitates a garbage collection. Not directly accessed by even the most internal Oaklisp code. \item[\tt next\_newspace\_size:] Holds the size in references of the next new space to be allocated by the garbage collector. This is dynamically adjusted by the garbage collector, so there is usually no need for it to be modified from the Oaklisp level. \end{description} \section{Instruction Set} The instructions follow the same argument order conventions as the language itself. For example, \texttt{(\df{store-loc} \emph{loc ref})} expects to get \emph{loc} on the top of the value stack and \emph{ref} below it. The instruction format \begin{center} \begin{tabular}{|c|c|c|}\hline 8 bits & 6 bits & 2 bits \\\hline inline argument & opcode & 0 0 \\\hline \end{tabular} \end{center} leaves eight bits for an inline argument. Instructions that do not require any inline argument actually have ``argless instruction'' in their instruction field and use the argument field to code for the actual instruction. Some instructions, eg.\ \df{load-imm}, require a complete arbitrary reference as an inline argument. This in incorporated, aligned, directly in the instruction stream. See Section~\ref{sec:codeblock} for details. Other instructions, in particular the long branches, require more than an eight bit inline argument but do not need an entire reference. These instructions get a 14 bit inline argument by using the space where the next instruction would normally go, with the last two bits set to zero in case the argument ends up in the low half of a word. \newenvironment{itable}[1]{ \begin{center} \par \nopagebreak #1 \par \nopagebreak \begin{tabular}{|l|c|l|l|l|} \hline \emph{instruction} & \emph{inline arg} & \emph{initial stack} & \emph{final stack} & \emph{extra cell args} \\\hline\hline}{\hline\end{tabular}\end{center}} \newcommand{\icomment}[1]{\multicolumn{5}{|l|}{\parbox{4in}{#1}}\\\hline} \begin{itable}{Arithmetic} \df{plus} & & 2 (fix,fix) & 1 (fix) & \\ \hline \df{minus} & & 1 (fix) & 1 (fix) & \\ \hline \df{subtract} & & 2 (fix,fix) & 1 (fix) & \\ \hline \df{times} & & 2 (fix,fix) & 1 (fix) & \\ \hline \df{mod} & & 2 (fix,fix) & 1 (fix) & \\ \hline \df{div} & & 2 (fix,fix) & 1 (fix) & \\ \hline \df{log-op} & n (4 bits) & 2 (fix,fix) & 1 (fix) & \\ \hline \df{bit-not} & & 1 (fix) & 1 (fix) & \\ \hline \df{rot} & & 2 (fix,fix) & 1 (fix) & \\ \hline \df{ash} & & 2 (fix,fix) & 1 (fix) & \\ \hline \end{itable} \begin{itable}{Predicates} \df{eq?}& & 2 (ref,ref) & 1 (bool) & \\ \hline \df{not}& & 1 (ref) & 1 (bool) & \\ \hline \df{<0?}& & 1 (fix) & 1 (bool) & \\ \hline \df{=0?}& & 1 (fix) & 1 (bool) & \\ \hline \df{=} & & 2 (fix,fix) & 1 (bool) & \\ \hline \df{<} & & 2 (fix,fix) & 1 (bool) & \\ \hline \end{itable} \begin{itable}{Control} \df{branch} & rel-addr & & & \\ \hline \df{branch-nil} & rel-addr & 1 (ref) & & \\ \hline \df{branch-t} & rel-addr & 1 (ref) & & \\ \hline \df{long-branch} & & & & 0.5\\ \hline \df{long-branch-nil} & rel-addr & 1 (ref) & & 0.5\\ \hline \df{long-branch-t} & rel-addr & 1 (ref) & & 0.5\\ \hline \df{return} & & & & \\ \hline \end{itable} \begin{itable}{\df{catch} and \df{call/cc} Related} \df{filltag} & & 1 (tag) & 1 (tag) & \\ \hline \df{throw} & & 2 (tag,ref) & 1 (ref) & \\ \hline \df{fill-continuation}& & 1 (photo) & 1 (photo) & \\ \hline \df{continue} & & 2 (photo,ref) & 1 (ref) & \\ \hline \end{itable} \begin{itable}{Stack Manipulation} \icomment{All stack references are zero-based. \texttt{(swap 0)} is a noop. \texttt{(blast $n$)} \meq \texttt{(store-stack $n$)(pop 1)}.} \df{pop} & n & n (refs) & & \\ \hline \df{swap} & n & n (refs) & n (refs) & \\ \hline \df{blast} & n & n (refs) & n-1 (refs) & \\ \hline \df{blt-stack}& n,m & n+m (refs) & n (refs) & \\ \hline \icomment{8 bit ref splits to 4-bit n and m, which are $1 \ldots 16$.} \end{itable} \begin{itable}{Register Manipulation} \df{store-reg} & register & 1 (ref) & 1 (ref) & \\ \hline \df{load-reg} & register & & 1 (ref) & \\ \hline \end{itable} \begin{itable}{Addressing Modes} \df{store-env} & offset & 1 (ref) & 1 (ref) & \\ \hline \df{store-stack} & offset & 1 (ref) & 1 (ref) & \\ \hline \df{store-bp} & offset & 1 (ref) & 1 (ref) & \\ \hline \df{store-bp-i} & & 2 (fix,ref) & 1 (ref) & \\ \hline \df{contents} & & 1 (loc) & 1 (ref) & \\ \hline \df{set-contents} & & 2 (loc,ref) & 1 (ref) & \\ \hline \icomment{The next two instructions are the same.} \df{load-glo}& & & 1 (ref) & 1 (ref)\\ \hline \df{load-imm}& & & 1 (ref) & 1 (ref)\\ \hline \df{load-imm-fix} & n & & 1 (fix) & \\ \hline \df{load-env} & offset & & 1 (ref) & \\ \hline \df{load-stack} & offset & & 1 (ref) & \\ \hline \df{load-bp} & offset & & 1 (ref) & \\ \hline \df{load-bp-i} & & 1 (fix) & 1 (ref) & \\ \hline \icomment{Make a locative to the location $offset$ in beyond the \df{bp} register:} \df{make-bp-loc} & offset & & 1 (loc) & \\ \hline \df{locate-bp-i} & & 1 (fix) & 1 (loc) & \\ \hline \end{itable} \begin{itable}{Memory Model and Tag Cleaving} \df{get-tag} & & 1 (ref) & 1 (fix) & \\ \hline \df{get-data} & & 1 (ref) & 1 (fix) & \\ \hline \df{crunch} & & 2 (fix,fix:tag)& 1 (ref) & \\ \hline \df{load-type} & & 1 (ref) & 1 (ref:type) & \\ \hline \df{load-length} & & 1 (ref) & 1 (fix) & \\ \hline \icomment{The next two instructions are not currently used.} \df{peek} & & 1 (fix) & 1 (fix:16-bit) & \\ \hline \df{poke} & & 2 (fix,fix:16-bit)&1 (fix:16-bit)&\\ \hline \end{itable} \begin{itable}{Misc} \df{check-nargs} & n & 1 (op) & & \\ \hline \df{check-nargs-gte} & n & 1 (op) & & \\ \hline \df{store-nargs} & n & & & \\ \hline \df{noop} & & & & \\ \hline \df{allocate} & & 2 (typ,len) & 1 (ref) & \\ \hline \df{vlen-allocate}& & 2 (typ,len) & 1 (ref) & \\ \hline \df{funcall-tail} & & 2 (op,obj) & 1 (op,obj) & \\ \hline \df{funcall-cxt-br}& rel-addr& 2 (op,obj) & 1 (op,obj) & \\ \hline \df{push-cxt} & rel-addr & & & \\ \hline \df{push-cxt-long} & & & & 0.5\\ \hline \df{big-endian?} & & & 1 (bool) & \\ \hline \df{object-hash}& & 1 (ref) & 1 (fix) & \\ \hline \df{object-unhash}& & 1 (fix) & 1 (ref) & \\ \hline \df{gc} & & & 1 (ref) & \\ \hline \df{full-gc} & & & 1 (ref) & \\ \hline \df{inc-loc} & & 2 (loc,fix) & 1 (loc) & \\ \hline \end{itable} \begin{itable}{List related instructions} \df{cons} & & 2 (ref,ref) & 1 (ref) & \\ \hline \df{reverse-cons} & & 2 (ref,ref) & 1 (ref) & \\ \hline \df{car} & & 1 (pair) & 1 (ref) & \\ \hline \df{cdr} & & 1 (pair) & 1 (ref) & \\ \hline \df{set-car} & & 2 (pair,ref) & 1 (ref) & \\ \hline \df{set-cdr} & & 2 (pair,ref) & 1 (ref) & \\ \hline \df{locate-car} & & 1 (pair) & 1 (loc) & \\ \hline \df{locate-cdr} & & 1 (pair) & 1 (loc) & \\ \hline \df{assq} & & 2 (ref,alist)& 1 (ref:pair/nil)& \\ \hline \end{itable} \section{Weak Pointers} \label{sec:weak} Weak pointers allow users to maintain tenuous references to objects, in the following sense. Let $\alpha$ be a weak pointer to the object \emph{foo}, found by executing the code \texttt{(object-hash \emph{foo})}. This $\alpha$ can be dereferenced to yield a normal reference, \evto{(object-unhash $\alpha$)}{\emph{foo}}. However, if there is no other way to get a reference to \emph{foo} then the system is free to invalidate $\alpha$, so \evto{(object-unhash $\alpha$)}{\#f}. In practice, when the garbage collector sees that there are no references to \emph{foo} except for weak pointers it reclaims \emph{foo} and invalidates any weak pointers to it. Weak pointers are implemented directly by bytecodes because the emulator handles all details of storage allocation and reclamation directly. Weak pointers are represented by integers. Each time \df{object-hash} is called the argument is looked up in the \emph{weak pointer hash table}. If no entry is found, a counter is incremented and the value of that counter is returned. An entry is made in the \emph{weak pointer table} at an index corresponding to the current value of the counter, so that the weak pointer can be used to get back the original reference, and an entry is make in the weak pointer hash table to ensure that if the weak pointer to the same object is requested twice, the same number will be returned both times. After a garbage collection the weak pointer table is scanned and entries to objects which have been reclaimed are discarded, the weak pointer hash table is cleared, and the data in the weak pointer table is entered into the weak pointer hash table. Although these algorithms are poor if objects with weak pointers to them are frequently reclaimed, in practice this has not been a problem. oaklisp-1.3.7/doc/lim/compiler.tex000066400000000000000000000037021332762442600170610ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{The Compiler} \subsection{File Types} There are a number of different kinds of object files, distinguished by extension. \begin{center} \begin{tabular}{l|l} \emph{extension} & \multicolumn{1}{c}\emph{file type} \\\hline \tt .oak & Oaklisp source file \\ \tt .omac & Macroexpanded Oaklisp source file \\ \tt .ou & Assembly file, not peephole optimized \\ \tt .oc & Assembly file, peephole optimized \\ \tt .oa & Assembled object file \end{tabular} \end{center} \gv{compiler-from-extension} \doc{The extension of the input files the compiler will read. Default \df{".oak"}. This variable is in the compiler locale.} \gv{compiler-to-extension} \doc{The extension the the output files the compiler will produce. Default \df{".oa"}. This variable is in the compiler locale.} \gv{compiler-noisiness} \doc{The amount of noise the compiler should produce; zero for none, 1 for a little, and 2 for a lot. Default value is 1, but the \df{oakliszt} batch file compiler sets it to zero. This variable is in the compiler locale.} \subsection{Object File Formats} \subsection{Compiler Internals} Some compiler internals documentation. Very sketchy, just enough to give people a vague idea of what the internal program representation is and what the various passes are for. oaklisp-1.3.7/doc/lim/cover.tex000066400000000000000000000026441332762442600163710ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \begin{titlepage} \begin{center} \vspace*{1in} \Huge The \\ Oaklisp Implementation Guide \\ \vspace{.5in} \large \today \\ \vspace{.25in} \Huge DRAFT \\ \vspace{.5in} \Large Barak A. Pearlmutter \\ \large Dept.\ of Computer Science\\ Maynooth University\\ Co.\ Kildare\\ Ireland\\ \url{barak+oaklisp@pearlmutter.net} \vspace{.5in} \Large Kevin J. Lang \\ \large Yahoo!\ Research \\ \url{langk@yahoo-inc.com} \vfill \vspace{0.25in} The information in this document is subject to change at any time. \end{center} \end{titlepage} \thispagestyle{empty} \vspace*{6in} \normalsize \noindent Copyright \copyright 1985, 1986, 1987, 1988, 1989 by Barak A. Pearlmutter and Kevin J. Lang. \newpage \pagenumbering{roman} oaklisp-1.3.7/doc/lim/dataform.tex000066400000000000000000000503661332762442600170540ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Internal Data Format} This chapter describes how memory and tags are set up, and how this implements the object semantics of the language. \section{Tag Types} \label{immtags} In an effort to reduce the complexity of the bytecode interpreter and to simplify the system in general, there are only four tag types. Tags are stored in the two low order bits of each reference thus simplifying tag manipulation, particularly in the presence of indexed addressing modes. \begin{center} \begin{tabular}{|c|c|c|l} \cline{1-3} \em 31 30 29 28 27 26 \ldots 11 10 9 8 & \em 7 6 5 4 3 2 & \em 1 0 & \multicolumn{1}{l}\emph{type} \\ \cline{1-3} \multicolumn{2}{|c|}{twos complement integer} & 0 0 & fixnum \\ \cline{1-3} data & subtype & 1 0 & other immediate type \\ \cline{1-3} \multicolumn{2}{|c|}{address} & 0 1 & locative (pointer to cell) \\ \cline{1-3} \multicolumn{2}{|c|}{address} & 1 1 & reference to boxed object \\ \cline{1-3} \end{tabular} \end{center} This tagging scheme, along with our object format, does not allow for \emph{arbitrarily} scannable heaps (in which the divisions between objects can be figured out starting the scan at any point in the heap.) In fact, if solitary cells are permitted, as they are in our implementation, scanning the heap starting at the begining is not even possible. However, our garbage collector never needs to scan the heap in such a fashion. Note that there is no extra ``gc'' bit in every word, but again, our garbage collector requires no such bit. \section{Other Immediate Types} References with a tag of \framebox{1 0} use the next six bits to specify a subtype. \begin{center} \begin{tabular}{|c|c|c|c|c|l} \cline{1-5} \emph{31 \ldots 24} & \emph{23 \ldots 16} & \emph{15 \ldots 8} & \emph{7 \ldots 2} & \emph{1 0} & \multicolumn{1}{l}\emph{type} \\ \cline{1-5} reserved & font & ascii code & 0 0 0 0 0 0 & 1 0 & character\\ \cline{1-5} \end{tabular} \end{center} Character is currently the only ``other immediate type.'' More may be added later, in particular Macintosh handles. (At one time weak pointers were represented as their own immediate type, but they are now represented using integers for compatibility with the Scheme standard \citep{R3RS}.) \section{Memory Structure} Memory is a linear array of \emph{cells}, 32-bit aligned words. These cells are divided into two contiguous chunks: free cells and allocated cells. The \emph{free pointer} points to the division between these two chunks, and it is incremented as memory is allocated. When allocating an object would push the free pointer beyond the limits of memory, a garbage collection is performed. The allocated portion of memory is divided into \emph{aggregate objects} and \emph{solitary cells}. Each aggregate object is a contiguous chunk of cells. The first cell of an object is a reference to its type; if the type is \emph{variable length}, the second cell holds the length of the object, including the first two cells. The remainder of the cells hold the instance variables. Solitary cells are cells that are not part of any object, but are the targets of locatives. Solitary cells are used heavily in the implementation of mutable variables. A reference to an object consists of a pointer to that object with a tag of \emph{boxed-object}. References to solitary cells are locatives. Furthermore, locatives may reference cells that are the instance variables of objects. If such an object is ever deallocated by the garbage collector, all of the cells making up the object are made free \emph{except} for those cells that are referenced by locatives, which are not deallocated. These become solitary cells. \section{Representation of Specific Types} Consider an object of type \emph{foo}, which is based on \emph{bar} and \emph{baz}. \emph{Bar} had instance variables \texttt{bar-1} and \texttt{bar-2}, baz has instance variables \texttt{baz-1}, \texttt{baz-2} and \texttt{baz-3}, and \emph{foo} has instance variable \texttt{foo-1}. \emph{Foo} inherits the instance variables of the types it is based on, but methods defined for type \emph{foo} can not refer to these inherited variables. Each type's local instance variables are stored contiguously, and in order of lexical definition, in instances of that type, and of types that inherit it; this allows variable reference to instance variables to be resolved into offsets from the start of the relevent instance variable frame at compile time. Here is an instance of \emph{foo} as it might actually be stored in memory: \begin{center} \begin{tabular}{|c|} \hline reference to type \emph{foo} \\ \hline\hline value of \texttt{foo-1} \\ \hline\hline value of \texttt{baz-1} \\ \hline value of \texttt{baz-2} \\ \hline value of \texttt{baz-3} \\ \hline\hline value of \texttt{bar-1} \\ \hline value of \texttt{bar-2} \\ \hline \end{tabular} \end{center} Observe that instances of type \emph{foo} are divided into contiguous chunks of instance variables, each inherited from a different supertype. When a type inherits another type through two different routes, it still only inherits the instance variables once.\footnote{This aspect of the language is in flux, and should not be relied upon by users.} Furthermore, if the instance variables of two types inherited by a third have the same names they are still distinct instance variables.\footnote{This is in marked contrast to ZetaLisp flavors--that's why variable references in flavors go through mapping tables, resulting in considerable overhead. There are also important modularity considerations in favor of our scheme which are beyond the scope of this document, but are discussed in detail in \citep{SNYDER86}.} These semantics allow us to reference instance variables very quickly, once the local instance variable block has been located. It also allows us to use the same compiled code for a single method regardless of whether it is being invoked upon an instance of the type it was added to or on an instance of an inheriting type. \section{System Types} This section describes the format of various objects that are directly referenced by the microcode,\footnote{Our microcode is C.} such as code vectors and catch tags. It should be emphasized that these system objects are full-fledged objects. They have types which can be inherited and have their methods overridden, just like any other object. The only ``magic'' thing about these types is that their local instance variables (ie. the system ones) must live at the top of their memory representation, even when inherited. This allows the microcode to locate the values it needs without going through the type heirarchy. The only constraint this places on the user is that a type may not inherit two types both of which are \emph{top-wired}, for obvious reasons. For example, it is impossible to make a type whose instances are both operations and types. \subsection{Methods} A method has two instance variables which hold the code object containing the code that implements the method and the environment vector that holds references to variables that were closed over.\footnote{Well, not all closed over variables. Only ones above the locale level. Locale variable references are implemented as inline references to value cells.} \subsection{Environment Vectors} Environment vectors have a block of cells, each of which contains a locative to a cell. When the running code needs to reference a closed-over variable, it finds the location of the cell by indexing into the environment vector. This index is calculated at compile time, and such references consume only one instruction. Just as it is possible for a number of methods to share the same code, differing only in the associated environment, it is also possible for a number of methods to share the same environment, differing only in the associated code. Currently the compiler does not generate such sophisticated constructs. \subsection{Code Vectors} \label{sec:codeblock} Code lives in vectors of integers, which are interpreted as instructions by the bytecode emulator. This format allows code to be stored in the same space as all other objects, and allows the garbage collector to be ignorant of its existance, treating code vectors like any other vector. Bytecodes are 16 bits long, with the low 2 bits always 0. Here is an example of some stuff taken from the middle of a code vector. \begin{center} \begin{tabular}{|c|c|c|c|c|c|} \multicolumn{6}{|c|}{$\vdots$}\\\hline 8 bit inline arg & 6 bit opcode & 0 0 & 8 bit inline arg & 6 bit opcode & 0 0 \\\hline \multicolumn{2}{|c|}{14 bit instruction} & 0 0 & 8 bit inline arg & 6 bit opcode & 0 0 \\\hline \multicolumn{2}{|c|}{14 bit relative address} & 0 0 & 8 bit inline arg & 6 bit opcode & 0 0 \\\hline 8 bit inline arg & 6 bit opcode & 0 0 & 8 bit inline arg & 6 bit opcode & 0 0 \\\hline \multicolumn{2}{|c|}{14 bit instruction} & 0 0 & \multicolumn{2}{c|}{14 bit instruction} & 0 0 \\\hline \multicolumn{6}{|c|}{arbitrary reference used by last instruction of previous word} \\\hline \multicolumn{2}{|c|}{14 bit instruction} & 0 0 & 8 bit inline arg & 6 bit opcode & 0 0 \\\hline \multicolumn{6}{|c|}{$\vdots$} \end{tabular} \end{center} Note the arbitrary reference right in the middle of code. To allow the garbage collector to properly handle code vectors, as well as to allow the processor to fetch the cell efficiently, this reference must be cell aligned. When the processor encounters an instruction that requires such an inline argument, if the pc is not currently pointing to an aligned location then the pc is suitably incremented. This means that the assembler must sometimes emit a padding instuction, which will be ignored, between instructions that require inline arguments and their arguments. An alternative that was used earlier in the design process was to mandate that all instructions requiring inline arguments occur in a position where the following reference can be fetched without realigning the pc. This requires sometimes inserting a padding \texttt{noop} before an instruction that requires an inline argument, and analysis showed that the time required to process a \df{noop} instruction is much greater than the time required to check if the low bit of a register is on and increment that register if so. \subsection{Endianity} The logical order of the instructions in a code vector depends on the endianity of the CPU running the emulator. If the machine is big endian, ie.\ addresses start at the most significant and of a word and go down (eg.\ a 68000 or an IBM 370) then instructions are executed left to right in the picture above. Conversely, on a littleendian machine (eg.\ a VAX) instructions are executed right to left. Of course, the Oaklisp loader has to be able to pack instructions into words in the appropriate order. The format of cold world loads is insensitive to endianity, but binary world loads are sensitive to it, so binary worlds are distributed in both big endian (with extensions beginning with \df{.ol}) and little endian (with extensions beginning with \df{.lo}) versions. \oop{\%big-endian?} \doc{This returns the endianity of the machine that Oaklisp is running on. Endianity is determined by the order in which instructions are fetched, in other words, the order of two 16-bit words within a 32-bit word. This returns true if the first instruction fetched is from the more significant half.} \subsection{Stack Implementation} \label{sec:stackimpl} Although the value and context stacks are logically contiguous, they are sometimes physically discontinuous. The instructions all assume that stacks live in a designated chunk of memory called the stack buffer. They check if they are about to overflow or enderflow the stack buffer, and if so they take appropriate actions to fill or flush it, as appropriate, before proceeding. If the stack buffer is about to overflow, most of it is copied to a \emph{stack segment} which is allocated on the heap. These overflown segments form a linked list, so upon stack underflow the top segment is removed from this list and copied back to the stack buffer. There is one more circumstance in which the stack buffer is flushed. The \df{call/cc} construct of Scheme \citep{R3RS} is implemented in terms of \emph{stack photos,} which are snapshots of the current state of the two stacks, and which can be restored in the future. A \df{fill-continuation} instruction forces the stack buffers to be flushed and then copies references to the linked lists of overflow segments into a continuation object. Actually, in the above treatment we have oversimplified the concept of flushing a stack buffer. The emulator constant \df{MAX\protect\_SEGMENT\protect\_SIZE} determines the maximum size of any flushed stack segment. When flushing the stack, if the buffer has more than that number of references then it is flushed into a number of segments. This provides some hysteresis, speeding \df{call/cc} by taking advantage of coherence in its usage patterns. A possibility opened by our stack buffer scheme, which we do not currently exploit, is that of using virtual memory faults to detect stack buffer overflows, thus eliminating the overhead of explicitly checking for stack overflow and underflow. As a historical note, an early version did not use a stack buffer but instead implemented stacks as linked lists of segments which always lived in the heap. When pushing over the top of a segment, a couple references were copied from the top of that segment onto a newly allocated segment, providing sufficient hysteresis to prevent repeated pushing and poping along a segment boundary from incurring inordinate overhead. Regretably, substantial storage is wasted by the hysteresis and the overflow and underflow limits vary dynamically wereas in the new system these limits are C link-time constants. Presumably due to these factors, in spite of its old world charm, timing experiments between the old system and the new system were definitive. \subsection{Escape Objects} \label{sec:ctagform} In our implementation of Oaklisp we provide two different escape facilities: \df{call/cc} and \df{catch}. The \df{call/cc} construct is that described in the Scheme standard \citep{R3RS}. The \df{catch} facility provides with user with a second class \emph{catch tag}, which is valid only within the dynamic extent of the \df{catch}. The implementation of catch tags is very simple: they contain heights for the value and context stacks. When a catch tag is thrown to, the value and context stacks are chopped off to the appropriate heights. The slot \df{saved-wind-count} is used for unwind protection and \df{saved-fluid-binding-list} is used for fluid variables. Details are given in Sections~\ref{sec:oakcatch} and~\ref{sec:oakwind}. \begin{center} \begin{tabular}{|c|}\hline \emph{type:} escape-object \\\hline \emph{value stack height:} 25 \\\hline \emph{context stack height:} 19 \\\hline \emph{saved wind count:} 3 \\\hline \emph{saved fluid binding list:} \tt ((print-length . \#f) \ldots)\\\hline \end{tabular} \end{center} Actually, there are two variants of \df{catch}. In the regular variant, which is compatible with T, the escape object is invoked by calling it like a procedure, as in \texttt{(catch a (+ (a 'done) 12))}. In the other variant, the escape object is not called but rather thrown to using the \df{throw} operation, as in \texttt{(native-catch a (+ (throw a 'done) 12))}. Although the latter construct is slightly faster, the real motivation for its inclusion is to remind the user that the the escape object being thrown to is not first class. In order to ensure that an escape object is not used outside of the extent of its dynamic validity, references to them should not be retained beyond the appropriate dynamic context. \subsection{Types} Type objects are used when tracing up the type heirarchy in order to find appropriate methods and bp offsets. Since the types are used to find methods, they must be system objects so that reference to their instance variables can be done without sending them explicit messages. The \df{operation-method-alist} maps from operations to methods handled by the type itself, not any supertype. The \df{type-bp-alist} maps from types to offsets which are where the appropriate frame of instance variables may be found. The microengine uses a simple move-to-front heuristic in an attempt to reduce the overhead of searching these alists. The \df{supertype-list} contains a list of the immediate supertypes. Supertypes by inheritance that have instance variables are present in \df{type-bp-alist}, however. This is a picture of the \df{cons-pair} type, as it actually appears in memory: \begin{center} \begin{tabular}{|c|c|} \hline \multicolumn{2}{|c|}\emph{type} \\\hline \emph{instance-length:} & 3 \\\hline \emph{variable-length?:} & \texttt{\#f} \\\hline \emph{supertype-list:} & \texttt{(\emph{pair} \emph{object})}\\\hline \emph{ivar-list:} & \texttt{(the-car the-cdr)} \\\hline \emph{ivar-count:} & 2 \\\hline \emph{type-bp-alist:} & \texttt{((\emph{cons-pair} . 1))} \\\hline \emph{operation-method-alist:} & \texttt{((\emph{car} . \emph{meth}) $\ldots$)}\\\hline \emph{top-wired?:} & \texttt{\#f} \\\hline \end{tabular} \end{center} \section{Storage Reclamation} Our garbage collector \citep{PEARLMUTTER99} is a variant of Baker's algorithm, a so-called ``stop and copy'' collector. The spaces to be reclaimed are renamed \emph{old}, all accessible objects in the old spaces are transported to a new space, and the old spaces are reclaimed. The data present in the initial world is considered ``static'' and is not part of old space in normal garbage collections, only in ``full'' garbage collections, which also move everything not reclaimed into static space. Due to locatives, the collector makes an extra pass over the data; a paper with more complete details on this latter complication is in press. The weak pointer table is scanned at the end of garbage collection, and references to deallocated objects are discarded. The user interface to the garbage collector is quite simple. Normally, the user need not be concerned with storage reclamation; upon the exhaustion of storage, the garbage collector is automatically invoked. When this happens some messages are printed; these messages can be supressed with the \dfsw{-Q} switch. The default size of new space is 1Mb, or 256k references. This can be altered with the \dfsw{-h} \emph{size} switch, where \emph{size} is measured in bytes. The operations \df{\%gc} and \df{\%full-gc} invoke the garbage collector explicitly. Programs that use weak pointers can be effected by garbage collection; for details, see Section~\ref{sec:weak}. The \dfsw{-G} switch indicates that if and when the world is dumped, and if Oaklisp terminates with an exit code of zero, a full garbage collection should be performed. In full garbage collections preceding world dumps, the root set does not include the stacks. New space is resized dynamically, being expanded to \df{RECLAIM\protect\_FRACTION} times the amount of unreclaimed data if the fraction of unreclaimed data is above more than one \df{RECLAIM\protect\_FRACTION}'th of new space after a normal garbage collection, or by the minimal amount needed if there is insufficient space available in new space to fulfill the allocation request that triggered the collector. Currently \df{RECLAIM\protect\_FRACTION} is two. The \df{next\protect\_newspace\protect\_size} register says how big the next new space allocated will be, and is accessible to Oaklisp code. Its value should not be lowered casually, as the garbage collector will fail if new space is too small to hold all of the non-reclaimed storage from old space. A full garbage collection sets the size of new space back to the value originally specified by the user when Oaklisp was invoked, or the default value if none was specified. oaklisp-1.3.7/doc/lim/intro.tex000066400000000000000000000030341332762442600164000ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Introduction} This document describes the internals of the CMU implementation of Oaklisp. Although this implementation is designed for portability through the use of a bytecode interpreter written in C, the fundemental data structures and memory formats would also be suitable for a high performance implementation. In spite of the fact that Oaklisp has the potential performance penalty of being uniformly object-oriented, this implementation has proven more than competitive with other bytecode based implementations of Scheme, such at MIT's CScheme and Semantic Microsystems' MacScheme. An abbreviated version of some of the information presented here is available as a book chapter \citep{PEARLMUTTER-LANG90A}. \section{Disclaimer} \emph{Warning:} this document may contain inaccuracies, and it lags behind the implementation as the system evolves. oaklisp-1.3.7/doc/lim/language.tex000066400000000000000000000430021332762442600170270ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Language} This document is a description of one particular implementation of Oaklisp, and therefore contains information that is subject to change and may not be significant to users in any case. For a description of the language that does not contain a lot of arbitrary distinctions, refer to \emph{The Oaklisp Language Manual}. \section{Special Forms} These special forms all work by magic, and can't be redefined or shadowed. \sform{\%quote}{x} \doc{Does what you would expect.} \sform{\%if}{predicate consequent alternative} \doc{Does what you would expect.} \sform{\%labels}{\lpar\lpar variable value\rpar\ldots\rpar form} \doc{If all references to the labels are calls from tail recursive positions, this is compiled using jumps. Otherwise, it is rewritten using \df{let} and \df{set\protect\bang}.} \sform{native-catch}{variable \dt body} \doc{Evaluates \emph{body} within the lexical scope of \emph{variable}, which is bound to a catch tag that is valid within the dynamic scope of this form. This is actually macro expanded to something pretty wierd.} \sform{\%add-method}{\lpar operation \lpar type \dt ivarlist\rpar \dt arglist\rpar form} \doc{Yields the specified method object.} \sform{\%make-locative}{variable} \doc{Returns a locative pointing to \emph{variable}.} \sform{\%block}{\dt forms} \doc{Making this a primitive special form simplifies the compiler.} \section{Macros} Most constructs that users think of as primitive are actually macros. This simplifies the compiler by both reducing the number of special forms to be handled and eliminating the need for the compiler to check whether special forms it encounters are syntactically correct. \mc{quote}{x} \doc{\macdef{}{(\%quote \emph{x})}} \mc{add-method} {\lpar operation \lpar type \dt ivar-list\rpar \dt arg-list\rpar \dt body} \doc{This turns into \df{\%add-method}, filling in the default type and putting a block around the body if necessary.} \mc{lambda}{arglist \dt body} \doc{\macdef{}{(add-method ((make operation) \dt \emph{arglist}) \dt \emph{body})} Functions are made by hanging methods off of \df{object}. There is an optimization in the compiler that expands car-position lambdas inline.} \mc{catch}{var \dt body} \doc{\macdef{}{(native-catch \emph{x} (let ((\emph{var} (lambda (\emph{y}) (throw \emph{x} \emph{y})))) \dt \emph{body}))}} \mc{define}{symbol value} \doc{\macdef{}{(set!\ \emph{symbol value})}} \mc{define}{\lpar\texttt{fluid} symbol\rpar value} \doc{\macdef{}{(set!\ (fluid \emph{symbol}) \emph{value})}} \mc{define}{\lpar variable \dt arglist\rpar \dt body} \doc{\macdef{}{(set!\ \emph{variable} (lambda \emph{arglist} \dt \emph{body}))}} \mc{set\protect\bang}{symbol value} \doc{\macdef{}{(set!\ (contents (make-locative \emph{symbol})) \emph{value})}} \mc{set\protect\bang}{\lpar op $a_1 \ldots a_n$\rpar value} \doc{\macdef{}{((setter \emph{op}) $a_1 \ldots a_n$ \emph{value})}} \mc{set}{location value} \doc{An obsolete form with semantics identical to \df{set\protect\bang}.} \mc{make-locative}{symbol} \doc{\macdef{}{(\%make-locative \emph{symbol})}} \mc{make-locative}{\lpar op \dt args\rpar} \doc{\macdef{}{((locater \emph{op}) \dt \emph{args})}} \mc{if}{test thenform} \doc{\macdef{}{(\%if \emph{test} \emph{thenform} (undefined-value))}} \mc{if}{test thenform elseform} \doc{\macdef{}{(\%if \emph{test} \emph{thenform} \emph{elseform})}} \mc{fluid}{symbol} \doc{\macdef{}{(\%fluid (quote \emph{symbol}))}} \mc{bind-error-handler}{} \doc{See the language manual for a semantic definition.} \mc{catch-errors}{} \doc{Implemented with \df{bind-error-handler} and \df{native-catch}.} \mc{bind}{\lpar\lpar\lpar\texttt{fluid} symbol\rpar\ value\rpar \ldots \rpar \dt body} \doc{Implemented using \df{let} and \df{set\protect\bang}. Hacks to \df{native-catch} and \df{call/cc} are also necessary. Essentially, the bindings are pushed onto \df{fluid-bindings-alist} for the dynamic scope of the \df{bind}. For details, see Section~\ref{fluid-impl}.} \mc{wind-protect}{before form after} \doc{\macdef{} {(dynamic-wind (lambda () \emph{before}) (lambda () \emph{form}) (lambda () \emph{after}))}} \mc{funny-wind-protect}{before abnormal-before form after abnormal-after} \doc{A \df{wind-protect} evaluates \emph{before}, \emph{form}, and \emph{after}, returning the value of \emph{form}. If \emph{form} is entered or exited abnormally (due to \df{call/cc} or \df{catch}) the \emph{before} and \emph{after} forms, respectively, are automatically executed. \df{funny-wind-protect} is the same except that different guard forms are evaluated depending on whether the dynamic context is entered or exited normally or abnormally.} The following macro definitions may be found in \emph{The Revised$^3$ Report on Scheme} \citep{R3RS}. \mc{let}{} \mc{let*}{} \mc{cond}{} \mc{or}{} \mc{and}{} \section{Primitive Types} The following types are \emph{immediates}. They have no instance variables, occupy no heap storage, and are directly manipulated by the micro-engine. Their references have special tag bits. See section \ref{immtags}. \ty{fixnum} \ty{character} \ty{locative} \section{Open-Coded Operations} Because arithmetic on \df{fixnum}s is so common, a special mechanism is used to perform operations for which byte-codes exist. When the compiler sees one of these operations in a program, it emits the corresponding byte-codes inline. At run-time, the micro-engine checks the tag-bits of the operands to verify that they are \df{fixnum}s. If they are, the arithmetic is performed immediately. Otherwise, a hardware trap occurs which causes the usual search up the type hierarchy to find the appropriate method to perform the operation. The only restriction this places on the full generality of the usual method system is that new methods cannot be defined for the simple arithmetic operations on \df{fixnum}s. The operations which fall under this restriction are the following: \op{zero?}{number} \op{{\protect\bang}=}{number1 number2} \op{*}{number \ldots} \op{+}{number \ldots} \op{-}{number1 number2 \ldots} \op{1+}{number} \op{<}{number1 number2} \op{<=}{number1 number2} \op{=}{number1 number2} \op{>}{number1 number2} \op{>=}{number1 number2} \op{ash-left}{integer1 integer2} \op{ash-right}{integer1 integer2} \op{bit-and}{integer1 integer2} \op{bit-andca}{integer1 integer2} \op{bit-equiv}{integer1 integer2} \op{bit-nand}{integer1 integer2} \op{bit-nor}{integer1 integer2} \op{bit-not}{integer} \op{bit-or}{integer1 integer2} \op{bit-xor}{integer1 integer2} \op{object-unhash}{integer} \op{positive?}{number} \op{quotient}{number1 number2} \op{rot-left}{fixnum1 fixnum2} \op{rot-right}{fixnum1 fixnum2} \op{minus}{number} \op{modulo}{number1 number2} \op{negative?}{number} The following operations are also open-coded and take type-mismatch traps if necessary. They can be add-method'ed to, but only for types that are not handled by the microcode. It should be clear from the discussion below which types the bytecode expects. \op{throw}{tag value} \doc{Causes control to return from the \df{native-catch} form that generated \emph{tag}.} \lo{contents}{locative} \doc{Dereferences \emph{locative}. \texttt{((setter contents) \emph{locative} \emph{value})} puts \emph{value} in the cell pointed to by \emph{locative}.} \op{object-unhash}{fixnum} \doc{Returns the object that the weak pointer \emph{fixnum} points to, or \df{\#f} if the object has been reclaimed by the garbage collector.} The following operations are open-coded, and the microcode can handle objects of any type, so they can't be \df{add-method}'ed. \op{get-type}{object} \doc{Returns the type of \emph{object}.} \op{eq?}{x y} \doc{Determines whether \emph{x} and \emph{y} are the same object. Implemented by checking if the references are identical.} \op{object-hash}{x} \doc{Returns a ``weak pointer'' to \emph{x}.} \op{cons}{x y} \doc{Conses \emph{x} onto \emph{y} in the usual lisp fashion.} \op{identity}{x} \doc{Returns \emph{x}.} \op{list}{\dt args} \doc{Constructs a list; \macdef{(list \emph{a} \emph{b} \emph{c})}{(cons \emph{a} (cons \emph{b} (cons \emph{c} '()))).} Actually, the \df{list} operation is open coded and has \df{backwards-args-mixin} mixed into the type, so its arguments are pushed onto the stack in left to right order. The code emitted for the operation itself is just a {\tt (load-reg nil)} followed by a bunch of \df{reverse-cons} instructions, one for each argument.} \op{list*}{$a_1 \ldots a_n$} \doc{\macdef{}{(cons $a_1 \ldots$ (cons $a_{n-1}$ $a_n$) $\ldots$).} This is open coded in nearly the same way as \df{list}.} \op{not}{x} \doc{\macdef{}{(eq?\ \emph{x} \#f)}} \op{null?}{x} \doc{\macdef{}{(eq?\ \emph{x} '())}} \op{second-arg}{x y \dt rest} \doc{Returns \emph{y}. Remember, Oaklisp does not guarantee any particular order of evaluation of arguments.} The following operations are open-coded, but the microcode traps out if the arguments are not simple cons cells. They can not be \df{add-method}'ed to for the type \df{cons-pair}. \lo{car}{pair} \lo{cdr}{pair} \lo{caar}{pair} \lo{cadr}{pair} \lo{cdar}{pair} \lo{cddr}{pair} \lo{caaar}{pair} \lo{caadr}{pair} \lo{cadar}{pair} \lo{caddr}{pair} \lo{cdaar}{pair} \lo{cdadr}{pair} \lo{cddar}{pair} \lo{cdddr}{pair} \lo{caaaar}{pair} \lo{caaadr}{pair} \lo{caadar}{pair} \lo{caaddr}{pair} \lo{cadaar}{pair} \lo{cadadr}{pair} \lo{caddar}{pair} \lo{cadddr}{pair} \lo{cdaaar}{pair} \lo{cdaadr}{pair} \lo{cdadar}{pair} \lo{cdaddr}{pair} \lo{cddaar}{pair} \lo{cddadr}{pair} \lo{cdddar}{pair} \lo{cddddr}{pair} \section{Subprimitives} The following operations should be used only deep within the system. Unless otherwise noted below, when a subprimitive encounters a domain error normal Oaklisp code is not trapped to. Rather, you're lucky if the system dumps core. \op{\%assq}{object alist} \doc{Does the usual association list lookup, but assumes that \emph{alist} is made out of simple cons pairs. Passing it lazy lists or things like that will crash the system.} \oop{\%big-endian?} \doc{Returns {\tt\#t} or {\tt\#f} depending on whether instructions are ordered starting at the high half of a reference or the low half of a reference, respectively. On all machines that I know of, this is the same as the endianity of bytes.} \op{\%continue}{stack-photo} \doc{Resumes \emph{stack-photo}, abandoning the current stack.} \op{\%fill-continuation}{empty-stack-photo} \doc{Fills in the template stack snapshot \emph{empty-stack-photo} with the appropriate information, copying sections of the stack into the heap where necessary, and returns its argument.} \op{\%filltag}{empty-catch-tag} \doc{Fills in \emph{empty-catch-tag} with the current stack heights.} \op{\%crunch}{data tag} \doc{Returns a reference with the data portion \emph{data} and a tag of \emph{tag}. Traps if either argument is not a fixnum.} \op{\%data}{x} \doc{Returns the non-tag field of \emph{x} as a fixnum.} \op{\%tag}{x} \doc{Returns the tag of \emph{x} as a fixnum.} \oop{\%gc} \doc{Forces an immediate normal garbage collection.} \oop{\%full-gc} \doc{Forces an immediate full garbage collection. At the end of the full garbage collection, new space size is set back to its original value.} \op{\%get-length}{x} \doc{Returns the number of storage cells occupied by \emph{x}. Zero for immediates.} \op{\%increment-locative}{locative n} \doc{Returns a locative to the cell \emph{n} beyond the cell pointed to by \emph{locative}.} \lo{\%load-bp-i}{n} \doc{Loads the contents of self's instance variable number \emph{n}. Not for the squeamish, as who is really ``self'' and who would be self except that the compiler is compiling away intermediate lambdas is very implementation specific.} \op{\%make-cell}{value} \doc{Returns a locative to a new cell containing \emph{value}. Could be defined with \texttt{(define (\%make-cell x) (make-locative x))}.} \op{\%make-closed-environment}{$a_1 \ldots a_n$} \doc{Returns a new environment containing $a_1 \ldots a_n$. At least one object is required. To get an empty environment, look in \df{\%empty-environment}.} \op{\%print-digit}{n} \doc{Prints \emph{n} as a single decimal digit to \df{stdout}. Used to indicate various error conditions during the boot process.} \op{\%push}{\dt args} \doc{Pushes \emph{args} onto the stack, returning (so to speak) the leftmost argument. This would be about the same as \texttt{values}, if we had multiple value return.} \oop{\%read-char} \doc{Returns a character read from \df{stdin}. No buffering. For use by the cold load stream.} \oop{\%return} \doc{Generates the \df{return} bytecode. Doesn't push anything onto the stack. Will corrupt the stack unless you really know what you are doing.} \op{\%allocate}{type size} \doc{Allocates a block of storage \emph{size} long, filling in the type field with \emph{type}. \emph{Type} should not be variable length.} \op{\%varlen-allocate}{type size} \doc{Allocates a block of storage \emph{size} long, filling in the type field with \emph{type} and the size field with \emph{size}. \emph{Type} should be a variable length type. Using this instead of \df{\%allocate} where appropriate avoids a window of gc vulnerability.} \op{\%write-char}{char} \doc{Writes the character \emph{char} to \df{stdout}. No buffering or anything.} \op{\%{\protect\upar}super-tail}{type operation object} \doc{Generates the \df{{\protect\upar}super-tail} bytecode, passing it appropriate arguments. This is used only used in the implementation of \df{{\protect\upar}super}. Once the compiler is modified to handle the \df{{\protect\upar}super} construct directly this will no longer be needed.} \section{Defined Types} The following types are completely defined in Lisp. \ty{object} \doc{This type is the top of the inheritance hierarchy. Ordinary functions are installed as methods for this type.} \ty{type} \doc{New types are generated by instantiating this type.} \ty{variable-length-mixin} \doc{This mixin allows each instance of a type to have a vector of anonymous cells tacked on the end. It also provides several low-level methods for indexed references into such vectors. Currently, the only variable-length types are \df{vector}, \df{\%code-vector} and \df{\%closed-environment}.} \ty{open-coded-mixin} \doc{If this is mixed in to an operation, the compiler will send it a \df{get-byte-code-list} message, and use the result instead of a regular function call whenever the operation appears in a program.} \ty{pair} \ty{cons-pair} \ty{null-type} \ty{vector} \ty{operation} \ty{settable-operation} \ty{locatable-operation} \ty{\%method} \ty{\%code-vector} \ty{\%closed-environment} \ty{locale} \ty{general-error} \ty{foldable-mixin} \section{Defined Operations} The methods for these operations are written in low level Oaklisp. \op{apply}{operation $a_1 \ldots a_n$ arglist} \doc{Calls \emph{operation} with arguments $a_1 \ldots a_n$ and the contents of \emph{arglist}. For instance, \evto{(apply + 1 2 '(3 4))}{10}.} \op{make}{type \dt args} \doc{Returns a new instance of \emph{type} that has been initialized by sending it an \df{initialize} message with the extra arguments \emph{args} passed along.} \op{\%install-method-with-env}{type operation code-body environment} \doc{Adds the specified method to the search table of \emph{type}. It returns \emph{operation}, since this is what some instances of \df{add-method} are compiled into. Methods that don't close over anything can refer to \df{\%empty-environment}, whose value is an environment object whose vector portion has length zero. It takes care of instance variable mapping conflicts.} \op{initialize}{object} \doc{Returns \emph{object}. This no-op is what is shadowed when you define \df{initialize} methods for new types. \texttt{(initialize \emph{type} \emph{supertype-list} \emph{ivar-list})} does the work involved in making a new type. The list of supertypes is used to make a list of all ancestors that is searched at run time to find methods for operations. The ancestor tree is considered to be ordered from bottom to top and from left to right while constructing this list, and duplicates are removed. An error is generated if more than one top-wired type is found in the resulting ancestor list. The instance-variable map of the type is created, with any top-wired type appearing at the beginning, and \df{variable-length-mixin} appearing at the end if it is present. Any method you define to handle an \df{initialize} message should return \df{self}.} \op{dynamic-wind}{before-op main-op after-op} \doc{Calls the operation \emph{before-op}, calls the operation \emph{main-op}, calls the operation \emph{after-op}, and returns the value returned by \emph{main-op}. If \emph{main-op} is exited abnormally, \emph{after-op} is called automatically on the way out. Similarly, if \emph{main-op} is entered abnormally, \emph{before-op} is called automatically on the way in.} \op{call-with-current-continuation}{operation} \doc{Calls \emph{operation} with one argument, the current continuation. The synonym \df{call/cc} is provided for those who feel that \df{call-with-current-continuation} is excessively verbose.} oaklisp-1.3.7/doc/lim/lim.tex000066400000000000000000000024761332762442600160370ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \documentclass[12pt]{report} % Blake McBride suggests [...,twoside]{book} \usepackage{times} \usepackage{fullpage} \usepackage{graphicx} \usepackage{makeidx} \usepackage[numbers]{natbib} \usepackage[hyphens]{url} \urlstyle{same} % \includeonly{cover,intro,language,dataform,bytecode,stack,oaklevel} \makeindex \begin{document} \input{../mandefs} \include{cover} \tableofcontents \newpage \pagenumbering{arabic} \include{intro} \include{language} \include{dataform} \include{bytecode} \include{stack} \include{methods} \include{oaklevel} \include{compiler} \include{boot} \include{admin} \bibliography{../oakman} \printindex \end{document} oaklisp-1.3.7/doc/lim/methods.tex000066400000000000000000000172761332762442600167250ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Methods} In this chapter we describe how methods are created, represented, and looked up. This is intimately related to instance variable reference, so we describe how that works here as well. \subsection{Invoking Methods} Methods are looked up by by doing a depth first search of the inheritance tree. Some Oaklisp code to find a method would look like this, \begin{verbatim} (define (%find-method op typ) (let ((here (assq op (type-operation-method-alist typ)))) (if (null? here) (any? (lambda (typ) (%find-method op typ)) (type-supertype-list typ)) (list typ (cdr here))))) \end{verbatim} Once this information is found, we need to find the offset of the appropriate block of instance variables, put a pointer to the instance variable frame in the \df{bp} register, set the other registers correctly, and branch. \begin{verbatim} (define (%send-operation op obj) (let ((typ (get-type obj))) (destructure (found-typ method) (%find-method op typ) (set! ((%register 'current-method)) method) (set! ((%register 'bp)) (increment-locative (%crunch (%data obj) %loc-tag) (cdr (assq found-typ (type-bp-offset-alist typ))))) (set! ((%register 'env)) (method-env method)) (set! ((%register 'pc)) (code-body-instr (method-code (%method)))))) \end{verbatim} Of course, the actual code to find a method is written in C and has a number of tricks to improve efficiency. \begin{itemize} \item Simple lambdas (operations which have only one method defined at the type \df{object}) are ubiquitous, so the overhead of method lookup is avoided for them by having a \df{lambda?} slot in each operation. This slot holds a zero if no methods are defined for the given operation. If the only method defined for the operation is for the type \df{object} then the \df{lambda?} slot holds that method, and the method is not incorporated in the \df{operation-method-alist} of type \df{object}. If neither of these conditions holds, the \df{lambda?} slot holds \df{\#f}. \item To reduce the frequency of full blown method lookup, each operation has three slots devoted to a method cache. When \emph{op} is sent to \emph{obj}, we check if the \df{cache-type} slot of \emph{op} is equal to the type of \emph{obj}. If so, instead of doing a method search and finding the instance variable frame offset, we can use the cached values from \df{cache-method} and \df{cache-offset}. In addition, after each full blown method search, the results of the search are inserted into the cache. Giving the \dfsw{-M} switch to a version of the emulator compiled with \df{FAST} not defined will print an \texttt{H} when there is a method cache hit and an \texttt{M} when there is a miss. The method cache can be completely disabled by defining \df{NO\protect\_METH\protect\_CACHE} when compiling the emulator. We note in passing that we have one method cache for each operation. In contrast, the Smalltalk-80 \index{Smalltalk-80} system has an analogous cache at each call point. We know of no head to head comparison of the two techniques, but suspect that if we were to switch to the Smalltalk-80 technique we would achieve a higher average hit rate at considerable cost in storage. \item In order to speed up full blown method searches, a move to front heuristic reorders the association lists inside the types. In addition, the C code for method lookup was tuned for speed, is coded inline, and uses an internal stack to avoid recursion. \end{itemize} For most of this tuning we used the time required to compile \df{compile-bench.oak} as our primary benchmark for determining the speed of generic operations, since the compiler is written in a highly object-oriented style and makes extensive use of inheritance. \subsection{Adding Methods} A serious complication results from the fact that the type field in an \df{add-method} form is not evaluated until the method is installed at run time. Since the target type for the method is unknown at compile time the appropriate instance variable map is also unknown, and hence the correct instance variable offsets cannot be determined. Our solution is to have the compiler guess the order\footnote{The compiler guesses by attempting to evaluate the type expression at compile time.} or simply invent one, compile the offsets accordingly, and incorporate this map in the header of the emitted code block. When the \df{add-method} form is actually executed at run time, the assumed instance variable map is compared to the actual map for the type that is the recipient of the method, and the code is copied and patched if necessary. The code only needs to be copied in the rare case when a single \df{add-method} is performed on multiple types that require different offsets. After instance variable references in the code block have been resolved, which usually involves no work at all since the compiler almost always guesses correctly, the method can actually be created and installed. Creating the method involves pairing the code block with an appropriate environment vector containing references to variables that have been closed over. Because this environment vector is frequently empty, a special empty environment vector is kept in the global variable \df{\%empty-environment} so a new one doesn't have to be created on such occations. All other environment vectors are created by pushing the elements of the environment onto the stack and executing the \df{make-closed-environment} opcode. Environment vectors are never shared in our current implementation, with the exception of the empty environment. After the method is created it must be installed. The method cache for the involved operation is invalidated, and the method is either put in the \df{lambda?} slot of the operation or the \df{operation-method-alist} of the type it is being installed in. If there is already a value in the \df{lambda?} slot and the new method is not being installed for type \df{object}, the \df{lambda?} slot is cleared and the method that used to reside there is added to \df{operation-method-alist} of type \df{object}. \op{\%install-method-with-env}{type operation code-body environment} \doc{This flushes the method cache of \emph{operation}, ensures that the instance variable maps of \emph{code-body} and \emph{type} agree (possibly by copying \emph{code-body} and remapping the instance variable references), creates a method out of \emph{code-body} and \emph{environment}, and adds this method to the \df{operation-method-alist} of \emph{type}, modulo the simple lambda optimization if \emph{type} is \df{object}.} \op{\%install-method}{type operation code-body} \doc{\macdef{}{(\%install-method-with-env \emph{type operation code-body} \%empty-environment)}} \op{\%install-lambda-with-env}{code-body environment} \doc{\macdef{}{(\%install-method-with-env object (make operation) \emph{code-body environment})} but more efficient.} \op{\%install-lambda}{code-body} \doc{\macdef{}{(\%install-method-with-env object (make operation) \emph{code-body} \%empty-environment)} but more efficient.} oaklisp-1.3.7/doc/lim/oaklevel.tex000066400000000000000000000511531332762442600170540ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Oaklisp Level Implementation} Once the core of the language is up, the rest of the language is implemented using the language core. Some of these new language constructs require some support from the bytecode emulator along with considerable Oaklisp level support. These include such features as \df{call/cc} and its simple cousin \df{catch}. Others are implemented entirely in the core language without the use of special purpose bytecodes; in this latter class fall things like infinite precision integers (so called \emph{bignums}), fluid variables, and the error system. In this chapter we describe the implementation of these constructs, albeit sketchily. For more details, the source code is publicly available. We do not describe the implementation of locales or other extremely high level features; read the source for the details, which are quite straightforward. \section{Fluid Variables} \label{fluid-impl} Our implementation of fluid variables uses deep binding. A shallow bound or hybrid technology would presumably speed fluid variable reference considerably, but they are used rarely enough that we have not bothered with such optimizations. In addition, shallow binding interacts poorly with multiprocessing. \gv{fluid-binding-list} \doc{Hold an association list which associates fluid variables to their values. The \df{bind} construct simply pushes variable/value pairs onto this list before executing its body and pops them off afterwards.} It would be easy to implement fluid variables using the unwind protection facilities, but instead the abnormal control constructs (\df{native-catch} and \df{call/cc}) are careful to save and restore \df{fluid-binding-list} properly. This avoids the overhead of using the wind facilities and makes sure that (ignoring \df{wind-protect}) \df{fluid-binding-list} is only manipulated once for every abnormal exit, no matter how many \df{bind} constructs are exited and entered along the way. \lo{\%fluid}{symbol} \doc{This looks \emph{symbol} up on \df{fluid-binding-list}. If it is not found an error is signaled. In contrast, \texttt{(setter \%fluid)} silently adds new fluid variables to the end of the association list, thus creating new top level fluid bindings.} \section{Unwind Protection} \label{sec:oakwind} In the presence of \df{call/cc}, a simple \df{unwind-protect} construct a.\ la.\ Common Lisp does not suffice. Because control can enter a dynamic context which has previously been exited, symmetry requires that if we have forms that get executed automatically when a context is abnormally exited, we must also have ones that get executed automatically when a context is abnormally entered. For this purpose the system maintains some global variables that reflect the state of the current dynamic context with respect to these automatic actions. \gv{\%windings} \doc{This is a list of wind/unwind action pairs, one of which is pushed on each time we enter a \df{dynamic-wind} and poped off when we leave it. The wind/unwind action pairs are of the form \texttt{(\emph{after} \emph{before} . \emph{saved-fluid-binding-list})} where \emph{before} and \emph{after} are operations, guards to be called when leaving and entering this dynamic context respectively, and \emph{saved-fluid-binding-list} is the appropriate value for \df{fluid-binding-list} when calling these guard operations.} \gv{\%wind-count} \doc{To reduce \df{find-join-point}'s complexity from quadratic to linear, we maintain \df{\%wind-count} $=$ \texttt{(length \%windings)}.} \section{Catch} \label{sec:oakcatch} The format of catch tags is describe in Section~\ref{sec:ctagform}. The simplest implementation of \df{native-catch} would have the \df{native-catch} macro expand into something that executed the appropriate unwind protect actions and restored the fluid binding list before resuming execution. Regretably, the unwind protect actions can themselves potentially \df{throw}, so the stacks must not be chopped off until after the unwind protect actions have been completed. For this reason the \df{throw} operation doesn't just call the \df{throw} instruction, but first performs all the appropriate unwind protect actions. Along with stack heights, the catch tag contains \df{saved-wind-count}, which is used to compute how many elements of \df{\%windings} must be popped off and called, and \df{saved-fluid-binding-list}, which is restored immediately before the stacks are actually chopped off. \section{Call/CC} The \df{call/cc} construct is just like \df{native-catch}, except that the saved stack state isn't just some offsets but is an entire stack photo (see Section~\ref{sec:stackimpl}), and that not only unwinding but also rewinding actions might need to be done. Because the winding actions might \df{throw}, it is necessary for the unwind actions to be executed in the stack context where the continuation is invoked, and similarly the rewind actions must be executed in the destination stack context. \gv{\%\%join-count} \gv{\%\%new-windings} \gv{\%\%new-wind-count} \gv{\%\%cleanup-needed} \doc{These global are used to pass information about which rewind actions need to be executed by the destination of the continuation, since the normal parameter passing mechanisms are not available. This would have to be done on a per processor basis in a multithreaded implementation.} Continuations contain \df{saved-windings} and \df{saved-wind-count} instance variables, which have the values of \df{\%windings} and \df{\%wind-count} at the time the \df{\%call/cc} was entered. Before the continuation is actually invoked and the destination stack photos restored, the highest join point between current and the destination winding lists is found, and all the unwind actions needed to get down to the join point are executed. Then the stack photo is restored, and in the destination context the rewinding actions are done to get up from the join point to the destination point. \section{The Error System} The error system is pretty complete, but is actually not only easy to use, but also intuitive and fun, particularly at the user level. \mc{error-return}{message \dt body} \doc{Evaluates \emph{body} in a dynamic context in which a restart handler is available that can force the form to return. The handler is identified by \emph{string} in the list of choices printed out by the debugger. If the handler is invoked by calling \df{ret} with an argument in addition to the handler number, the \df{error-return} form returns this additional value; otherwise it returns \df{\#f}. If no error occurs, an \df{error-return} form yields the value of \emph{body}.} \mc{error-restart}{message let-clauses \dt body} \doc{Acts like a \df{let}, binding the \emph{let-clauses} as you would expect, except that if an error occurs while evaluating \emph{body}, the user is given the option of specifying new values for the variables of the \emph{let-clauses} and starting \emph{body} again. This is implemented with a \df{native-catch} and some tricky restart handlers that get pushed onto \texttt{(fluid restart-handlers)}.} \fv{restart-handlers} \doc{A list of actions that the user can invoke from the debugger in order to restart the computation at various places. Not normally manipulated by user code.} \fv{debug-level} \doc{The number of recursive debuggers we're inside. Zero for the top level. Not normally manipulated by user code.} \mc{catch-errors} {\lpar error-type $[$error-lambda $[$non-error-lambda$]]$\rpar \dt body} \doc{Evaluates \emph{body}. If an error which is a subtype of \emph{error-type} occurs, \df{\#f} is returned, unless \emph{error-lambda} is given, in which case it is called on the error object. If no error occurs then the result of evaluating \emph{body} is returned, unless \emph{non-error-lambda} is provided in which case it is called on the result of the evaluation of \emph{body} within the context of of the error handler, and the resultant value returned.} \mc{bind-error-handler}{\lpar error-type handler\rpar \dt body} \doc{This binds a handler to errors which are subtypes of \emph{error-type}. When such an error occurs, an appropriate error object is created and \emph{handler} is applied to it.} \op{invoke-debugger}{error} \doc{This error handler, when sent to an error object, invokes the debugger.} \op{remember-context}{error after-op} \doc{Used to make an error remember the context it occured in, so that even after the context has been exited the error can still be proceeded from, or the debugger can be entered back at the error context. This should always be called tail recursively from a handler, and after it stashes away the continuation it calls \emph{after-op} on \emph{error}. Of course, \emph{after-op} should never return.} \op{invoke-in-error-context}{error operation} \doc{Go back to the context in which \emph{error} occured and invoke \emph{operation} there.} \op{report}{error stream} \doc{Write a human readable account of the error to \emph{stream}. Controlled studies have shown that error messages can never be too verbose.} \op{proceed}{error value} \doc{Proceed from \emph{error}, returning \emph{value}. Of course, it is actually the call to \df{signal} that returns \emph{value}.} \op{signal}{error-type \dt args} \doc{This signals creates an error of type \emph{error-type} with initialization arguments \emph{args}. It then scans down \texttt{(fluid error-handlers)} until it finds a type of error which is a supertype of \emph{error-type}, at which point it sends the corresponding handler to the newly minted error object. If the handler returns, that value is returned by the call to \df{signal}. One day we'll add a way for a handler to refuse to handle an error, in which case the search for an applicable handler will proceed down the list.} \fv{error-handlers} \doc{An association list of mapping error types to error handlers. Users should not touch this directly.} Of course, there are a large number of types of errors used by the system. A few of the more useful to know about are: \ty{general-error} \doc{The supertype of all errors. Abstract.} \ty{proceedable-error} \doc{The supertype of all errors that can be recovered from. Abstract.} \ty{fs-error} \doc{File system error. Abstract. It has all kinds of subtypes for all the different possible file system error conditions.} \ty{error-opening} \doc{Abstract. Signaled when a file can't be opened for some reason. Proceeding from this kind of error with a string lets you try opening a different file.} \ty{operation-not-found} \doc{Signaled when an operation is sent to an object that can't handle it. Proceeding from this kind of error will return a value from the failed call.} \ty{nargs-error} \doc{Signaled when there are an incorrect number of arguments passed to a function. Proceeding from this will return a value from the failed call. Abstract} \ty{nargs-exact-error} \doc{Signaled when there are an incorrect number of arguments passed to a method that expects a particular number of arguments.} \ty{nargs-gte-error} \doc{Signaled when there are an insufficient number of arguments passed to a method that can tolerate extra arguments.} \ty{infinite-loop} \doc{Signaled when an infinite loop is entered. User programs may wish to signal this as well.} \ty{read-error} \doc{Some kind of reader syntax error. Abstract. There are about fifty million subtypes, corresponding to all the different constructs that can be malformed, and all the different ways in which they can be malformed. We probably went a little overboard with these.} \ty{user-interrupt} \doc{Oaklisp received a DEL signal. Through a convoluted series of events in which the UNIX trap handler sets the variable \df{\protect\_del\protect\_}, which is detected by the bytecode emulator which pretends that a \df{noop} instruction failed and passes the \df{nargs} register to the Oaklisp trap handler which salts the old \df{nargs} away for restoration upon return and signals this error type, the user usually lands in the debugger after typing Control-C.} \section{Numbers} Small integers (between $-2^{29}$ and $2^{29}-1$ inclusive) are represented as immediates of type \df{fixnum} and handled directly by microcode. When arithmetic instructions trap out, due to either their arguments not being \df{fixnum}s or to overflow, an Oaklisp operation corresponding to the bytecode is called. Most of these operations are written in terms of other bytecodes, and should never be shadowed. For instance, \begin{verbatim} (add-method (subtract/2 (number) x y) (+ x (- y))) \end{verbatim} defines subtraction in terms of negation and addition. The trap code also handles fixnum overflow, promoting the operands to \df{bignum}s and dispatching appropriately. The only really primitive operations, which must handle all types of numbers, are \df{<}, \df{=}, \df{minus}, \df{negative?}, \df{plus/2}, \df{times/2}, \df{/}, \df{/r}, \df{quotient}, \df{remainder}, \df{quotientm} and \df{modulo}. Whenever a new type of number is defined, methods for all of the above operations should be added for it, unless the new type is not a subtype of \df{real}, in which case methods wouldn't make sense for \df{<}, \df{negative?}, and perhaps \df{quotient}, \df{remainder}, \df{quotientm} and \df{modulo}. \section{Vectors and Strings} Rather than being built into the emulator, vectors are defined entirely within Oaklisp, albeit with some rather low level constructs. \ty{variable-length-mixin} \doc{This type provides a variable amount of stuff at the end of its instances. When a type has this mixed in, whether immediately or deep down in the inheritance tree, it always takes an extra initialization argument which says has long the variable length block at the end should be. This is mixed into such system types as \df{\%code-vector}, \df{stack-segment}, and \df{\%closed-environment}. In general, \df{variable-length-mixin} is used at the implementation level only and should never appear in user code. Typically if you think you want a subtype of \df{variable-length-mixin}, what you really want is an instance variable bound to a vector.} \lo{\%vref}{variable-length-object n} \doc{This is the accessor operation to get at the extra cells of subtypes of \df{variable-length-mixin}. It is used in the implementation of variable length structures, and in things like \df{describe} that look at their internals.} \ty{simple-vector} \doc{This is a subtype of \df{vector} with \df{variable-length-mixin} added and an appropriate \df{nth} method defined.} \discuss{Characters are packed into strings more densely than one character per reference, so strings are not just vectors with odd print methods; they also have accessor methods which unpack characters from their internals. Unfortunately, it is not possible to pack four eight bit characters into a single reference without violating the memory format conventions by putting something other than \framebox{\texttt{0 0}} in the tag field. We could pack four seven bit characters into each reference, but some computers use eight bit fonts, and the characters within the string would not be aligned compatibly with C strings. We therefore use the following somewhat wasteful format.} \ty{string} \doc{This is a subtype of \df{simple-vector} with the \df{nth} method shadowed by one that packs three eight bit characters into the low 24 bits of each fixnum, in littleendian order. The unused high bits of each word are set to zero to simplify equality testing and hash key computation. No trailing null character is required, although one is present two thirds of the time due to padding. Below is the string \texttt{"Oaklisp Rules!"} as represented in memory.} \begin{center} \begin{tabular}{|c|c|c|c|c|}\hline 31 \ldots 26 & 25 \ldots 18 & 17 \ldots 10 & 9 \ldots 2 & 1 0 \\\hline\hline \multicolumn{5}{|c|}\emph{string} \\\hline \multicolumn{4}{|c|}{\emph{object length:} 8} & 0 0 \\\hline \multicolumn{4}{|c|}{\emph{string length:} 14} & 0 0 \\\hline 0 0 0 0 0 0&\tt\#$\backslash$k &\tt\#$\backslash$a &\tt\#$\backslash$O&0 0 \\\hline 0 0 0 0 0 0&\tt\#$\backslash$s &\tt\#$\backslash$i &\tt\#$\backslash$l&0 0 \\\hline 0 0 0 0 0 0&\tt\#$\backslash$R &\tt\#$\backslash$space&\tt\#$\backslash$p&0 0 \\\hline 0 0 0 0 0 0&\tt\#$\backslash$e &\tt\#$\backslash$l &\tt\#$\backslash$u&0 0 \\\hline 0 0 0 0 0 0&\tt\#$\backslash$null&\tt\#$\backslash$! &\tt\#$\backslash$s&0 0 \\\hline \end{tabular} \end{center} \section{Symbols} We do not use any of the fancy techniques used by older dialects, like oblists or symbol buckets. Instead, the standard hash table facility is used for the symbol table. \heady{symbol-table}{}{Generic Hash Table} \doc{Maps strings to symbols, using \df{string-hash-key} to compute the hash and \df{equal?} to compare strings for equality.} \op{intern}{string} \doc{Returns a symbol with print name \emph{string} by looking it up in the \df{symbol-table} and making and installing a new symbol if it isn't found. Strings passed to \df{intern} should never be side effected afterwards or the symbol table could be corrupted.} \fv{print-escape} \doc{This flags whether symbols with weird characters in them should be with the weird characters escaped. It also applies to strings.} \fv{symbol-slashification-style} \doc{This flag is only relevent if \texttt{(fluid print-escape)} is on. With the value \df{t-compatible} then the empty symbol is printed as \texttt{\#[symbol ""]} and all other symbols requiring escaping are printed with a \texttt{$\backslash$} character preceding every character of the symbol. With any other value, escaped symbols are delimited by \texttt{|} characters and internal characters \texttt{$\backslash$} and \texttt{|} are preceded by \texttt{$\backslash$}.} \section{Variable Numbers of Arguments} \label{sec:varargs} The formal parameter list of a method is permitted to be improper, with the terminal atom being a magic token representing the rest of the arguments. The only legal use for this magic token is as the terminal member of an improper argument list of a tail recursive call, and as an argument to the special form \df{rest-length}. Methods that accept a variable number of arguments must exit tail recursively and must pass along their magic token in their tail recursive call, unless they know that they actually received no extra arguments. \sform{rest-length}{varargs-token} \doc{Returns the number of trailing arguments represented by \emph{varargs-token}.} For example, this is legal, \begin{verbatim} (define (okay x y . rest) (if (zero? (rest-length rest)) 'nanu-nanu (list 'you x y 'sucker . rest))) \end{verbatim} while the following are not, the first because it has an exit when there might be extra arguments which does not pass the extra arguments along tail recursively, and the second because it tries to pass along the extra arguments in a non tail recursive position. \begin{verbatim} (define (not-okay x y . rest) (if (eq? x y) 'nanu-nanu (list 'you x y 'sucker . rest))) (define (also-bad x y . rest) (append (list 'you x 'sucker . rest) y)) \end{verbatim} The implementation behind this is very simple: extra arguments are ignored by the compiler, except that it emits a \df{check-nargs-gte} in place of a \df{chech-nargs} at the top of the method code body and does a little computation to figure out what the value to put in the \df{nargs} register when it sees rest argument at the tail of a call. When all the user wishes to do is pass the extra arguments along in the way that the \df{make} method passes extra args along to \df{initialize}, this mechanism is both convenient and efficient. Sometimes the user needs to actually get into the extra arguments though, so some operations are provided to make handling variable numbers of arguments easier. \op{consume-args}{value \dt extra} \doc{Returns \emph{value}.} \op{listify-args}{operation \dt args} \doc{Calls \emph{operation} with a single argument, a list of \emph{args}.} There is also a macro package that implements optional and keyword arguments using these facilities, and the Scheme compatiblity package redefines \df{add-method} so that, as required by the Scheme standard \citep{R3RS}, extra arguments are made into a list. oaklisp-1.3.7/doc/lim/stack.tex000066400000000000000000000156651332762442600163670ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \chapter{Stack Discipline} This chapter describes how the stacks are organized at the logical level: how temporaries are allocated, how functions call and return work, how escape objects (used in the implementation of catch and throw) work, and how stack snapshots (used in the implementation of call/cc) work. \section{Stack Overview} The Oaklisp bytecode machine has a two-stack architecture. The \emph{value stack} contains arbitrary references and is used for storing temporary variables, passing arguments, and returning results. The \emph{context stack} is used for saving non-variable context when calling subroutines. Only context frames are stored on the context stack. This two stack architecture makes tail recursion particularly fast, and is in large part responsible for the speed of function call in this implementation. Most of the bytecodes are the usual sort of stack instructions, and use only value stack, for instance \df{plus} and \texttt{(swap $n$)}\index{\texttt{swap}}. All arguments are passed on the value stack, and the value stack is \emph{not} divided into frames. Methods consume their arguments, returning when they have replaced their arguments with their result or tail recursing when they have replaced their arguments with the appropriate arguments to the operations they are tail recursing to. Under the current language definition there is no multiple value return, although the bytecode architecture admits such a construct. There are facilities for variable numbers of arguments, which are described in Section~\ref{sec:varargs}. \newenvironment{stackphoto}{\begin{center}\begin{tabular}{|c|} $\vdots$\\\hline}{\end{tabular}\end{center}} \section{Method Invocation/Return} When a method is to be invoked, the arguments and operation are assembled on the value stack in right to left order, ie.\ the rightmost argument is pushed first and the operation is pushed last. Let us walk through the invokation of \texttt{(f x y z)}, where \texttt{f} is on operations which is being passed three arguments. Since we evaluate right to left, first we push \texttt{z}, thus: \begin{stackphoto} \tt z \\\hline \end{stackphoto} continuing, we push the rest of the arguments and the operation, until the stack is of this form. \begin{stackphoto} \tt z \\\hline \tt y \\\hline \tt x \\\hline \tt f \\\hline \end{stackphoto} A \df{(store-nargs 3)} instruction is now executed to place the number of arguments in the \df{nargs} register, and one of the \df{funcall} instructions is executed, which variant depending on whether this is a tail recursive call. If this is not a tail recursive call, the \df{funcall} instruction first pushes a frame containing the contents of the \df{current\protect\_method}, \df{bp} and \df{env} registers and a return \df{pc} onto the context stack. The instruction then examines the top two values, \texttt{f} and \texttt{x}, and looks \texttt{f} up in the \df{operation-method-alist} of the type of \texttt{x}, potentially also scanning the supertypes until it finds the appropriate method to be invoked. This method is placed in the \df{current\protect\_method} register, the method's environment is placed in the \df{env} register, the \df{pc} is set to the beginning of the method's code block, and the address of the appropriate instance variable frame within \texttt{x} is placed in the \df{bp} register. The \df{funcall} instruction leaves the value stack and \texttt{nargs} register unchanged: \begin{stackphoto} \tt z \\\hline \tt y \\\hline \tt x \\\hline \tt f \\\hline \end{stackphoto} The first thing the code block of the resultant method executes is one of the \df{check-nargs} instructions, in this case perhaps {\tt (\df{check-nargs} 3)}. A \texttt{(\df{check-nargs} $n$)} instruction tests if \df{nargs} is $n$, trapping if not. After that, it pops the operation \texttt{f} off the stack. By leaving the operation to be popped off by the \df{check-nargs} instruction rather than the \df{funcall} instruction, when an an incorrect number of arguments is detected the operation is still available to the error system. The \df{return} instruction pops the top frame off the context stack, loads the popped context into the processor, and continues execution. Before a \df{return} is executed all of the arguments have been consumed and the result is the only thing left on the stack, \begin{stackphoto} (f x y z) \\\hline \end{stackphoto} \section{The Context Stack} The only things that can be stored on the context stack are context frames, which each have four values, as shown below. The \df{push-cxt} instruction pushes a context frame onto the context stack. It takes an inline argument, which is the relative address of the desired return point. This allows a context to be pushed whenever convenient, perhaps before the assembly of arguments begins. Earlier in the implementation process there was only one variant of the \df{funcall} instruction, which was tail recursive. Non tail recursive calls were compiled as a \df{push-cxt} followed by a \df{funcall-tail}, but because this sequence occured so frequently a combined instruction was implemented to improve code density. \begin{stackphoto}\hline \tt \df{pc} \\ \hline \tt \df{bp} \\ \hline \tt \df{env} \\\hline \tt \df{current\protect\_method} \\\hline\hline \tt pc \\ \hline \tt bp \\ \hline \tt env \\\hline \tt current\_method \\\hline\hline \tt pc \\ \hline \tt bp \\ \hline \tt env \\\hline \tt current\_method \\\hline \end{stackphoto} Actually, the \df{pc} stored in the context stack is not a raw pointer to the next instruction but rather the offset from the beginning of the current code block, stored as a fixnum. This makes the \df{return} instruction slightly slower, as the actual return pc must be recomputed, but simplifies the garbage collector. The \df{bp} is analogously stored with a tag of \df{locative} so that the garbage collector need not treat it specially. This would cause a problem if the current object were reclaimed and afterwards had one of its instance variables refered to, as all that would be left of the object would be the solitary cell that the saved bp was pointing to, and the rest of the relevent instance variable frame would be gone. This is avoided by having the compiler ensure that a reference to the object in question is retained long enough. oaklisp-1.3.7/doc/mandefs.tex000066400000000000000000000062701332762442600161060ustar00rootroot00000000000000% This file is part of Oaklisp. % % 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. % % The GNU GPL is available at http://www.gnu.org/licenses/gpl.html % or from the Free Software Foundation, 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA \bibliographystyle{plainnat} \newcommand{\df}[1]{{\tt#1}\index{{\tt#1}}} \newcommand{\dffl}[1]{{\tt(fluid #1)}\index{{\tt#1} ! fluid}} \newcommand{\dfcoer}[1]{{\tt(coercer #1)}\index{{\tt#1} ! coercer}} \newcommand{\dfsw}[1]{{\tt#1}\index{{\tt#1} ! switch}} \newenvironment{docenv}{\nopagebreak\vspace{-4ex}\nopagebreak \begin{quotation}\noindent}{\end{quotation}} \newcommand{\doc}[1]{\nopagebreak\vspace{-4ex}\nopagebreak \begin{quotation}\noindent#1\end{quotation}} \newcommand{\discbar}{\rule{3in}{.2mm}} \newenvironment{discussenv}{\begin{quote}\begin{quote}\discbar\par}{\par\discbar\end{quote}\end{quote}} \newcommand{\discuss}[1]{\begin{discussenv}#1\end{discussenv}} \newcommand{\macdef}[2]{{\tt#1}\ \meq\ {\tt#2}\newline} \newcommand{\evto}[2]{{\tt#1}\ \ra\ {\tt#2}} \newcommand{\header}[2]{\par\noindent\hspace{\leftmargini }{#1}\hfill\emph{#2}\hspace*{\leftmargini}\newline} \newcommand{\heady}[3]{\index{{\tt#1} ! #3}\header{{\tt#1\ \emph{#2}}}{#3}} \newcommand{\headyy}[3]{\index{{\tt#1} ! #3}\header{{\tt(#1\ \emph{#2}\tt)}}{#3}} \newcommand{\sform}[2]{\headyy{#1}{#2}{Special Form}} \newcommand{\op}[2]{\headyy{#1}{#2}{Operation}} \newcommand{\so}[2]{\headyy{#1}{#2}{Settable Operation}} \newcommand{\lo}[2]{\headyy{#1}{#2}{Locatable Operation}} \newcommand{\mc}[2]{\headyy{#1}{#2}{Macro}} \newcommand{\fn}[2]{\headyy{#1}{#2}{Function}} \newcommand{\pr}[2]{\headyy{#1}{#2}{Predicate}} \newcommand{\spred}[2]{\headyy{#1}{#2}{Settable Predicate}} \newcommand{\gv}[1]{\heady{#1}{}{Global Variable}} \newcommand{\ob}[1]{\heady{#1}{}{Object}} \newcommand{\ty}[1]{\heady{#1}{}{Type}} \newcommand{\cty}[1]{\heady{#1}{}{Coercable Type}} \newcommand{\fv}[1]{\index{{\tt#1} ! Fluid Variable}\header{\tt (fluid #1)}{Fluid Variable}} \newcommand{\makin}[2]{\index{{\tt#1} ! Making}\header{\tt (make #1 \emph{#2}\tt)}{Operation}} \newcommand{\setter}[3]{\index{{\tt#1} ! Setter}\header{\tt(set! (#1 \emph{#2}\tt) \emph{#3}\tt)}{Operation}} \newcommand{\coercer}[2]{\index{{\tt#1} ! Coercer}\header{\tt((coercer #1) \emph{#2}\tt)}{Coarcable Type}} \newcommand{\oop}[1]{\index{{\tt#1} ! Operation}\header{\tt(#1)}{Operation}} \newcommand{\ra}{$\Rightarrow$} \newcommand{\meq}{$\equiv$} \newcommand{\upar}{$\uparrow$} \newcommand{\dt}{{\tt{.}~}} \newcommand{\lpar}{{\tt(}} \newcommand{\rpar}{{\tt)}} % % These give ^ and _. Numbers for other characters are in the font % % tables at the back of the texbook. % \newcommand{\h}{\char'136\relax} % \newcommand{\w}{\char'137\relax} \newcommand{\bang}[0]{\texttt{!}} \newcommand{\ie}{\emph{i.e.}} oaklisp-1.3.7/doc/oaklisp-oopsla-1986.pdf000066400000000000000000021651301332762442600200070ustar00rootroot00000000000000%PDF-1.3 % 196 0 obj << /Linearized 1 /O 198 /H [ 948 339 ] /L 584280 /E 86236 /N 8 /T 580241 >> endobj xref 196 27 0000000016 00000 n 0000000891 00000 n 0000001287 00000 n 0000001640 00000 n 0000001755 00000 n 0000001883 00000 n 0000002006 00000 n 0000002029 00000 n 0000003552 00000 n 0000003575 00000 n 0000004811 00000 n 0000004834 00000 n 0000006132 00000 n 0000006155 00000 n 0000007568 00000 n 0000007591 00000 n 0000007721 00000 n 0000008910 00000 n 0000008933 00000 n 0000010191 00000 n 0000010214 00000 n 0000011437 00000 n 0000011460 00000 n 0000012720 00000 n 0000012744 00000 n 0000000948 00000 n 0000001265 00000 n trailer << /Size 223 /Info 195 0 R /Root 197 0 R /Prev 580230 /ID[<6c2e5160fcdaf71e8fa41e40994ba7f8><6c2e5160fcdaf71e8fa41e40994ba7f8>] >> startxref 0 %%EOF 197 0 obj << /Type /Catalog /Pages 194 0 R >> endobj 221 0 obj << /S 123 /T 211 /Filter /FlateDecode /Length 222 0 R >> stream Hb``d``PA, < .;cqes30LغC̹q\ޅ-gog ݻ/4Q-эQ-!--) XH XD蜥@W+``` C c 'PSf4j l֫ $x%@c 0MeQ` WOif@4͕:',+?`E< endstream endobj 222 0 obj 223 endobj 198 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 194 0 R /Resources << /Font << /F2 199 0 R /F0 200 0 R /F1 201 0 R /F3 211 0 R >> /XObject << /Im1 220 0 R >> /ProcSet [ /PDF /Text /ImageB ] >> /Contents [ 203 0 R 205 0 R 207 0 R 209 0 R 212 0 R 214 0 R 216 0 R 218 0 R ] /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 175 0 R >> endobj 199 0 obj << /Type /Font /Subtype /TrueType /Name /F6 /BaseFont /Arial /Encoding /WinAnsiEncoding >> endobj 200 0 obj << /Type /Font /Subtype /TrueType /Name /F1 /BaseFont /TimesNewRoman,Bold /Encoding /WinAnsiEncoding >> endobj 201 0 obj << /Type /Font /Subtype /TrueType /Name /F0 /BaseFont /TimesNewRoman /Encoding /WinAnsiEncoding >> endobj 202 0 obj 1443 endobj 203 0 obj << /Filter /FlateDecode /Length 202 0 R >> stream HtWn8 by[ŢTc1[] INߡDRR&@`̙3gFw#|?r}}`?Ÿf8H,bfW~?j?\~+wF`ÂCF+m;Ow10V{g+)KBL)ήqɆHfEJds0N,G*!1oCqWIx8@D"D3xj'x2W@_ɷ9+(^U1O(s3"񼾷c2aJ)"2 Z)k= SH8{8>elXAº(?cK,@nP3gBS6hUQa7z X@BŒa&FY-KenbMa  % AJW'ЩtmLo0fnDQ(-+9X0b|bZSV x* S߆I 2)c1:8Qù{^+Ö\j!Y;{dRޘ >rDN$|;nJS^ŒhLz{E L 퀣d[w:l:|f rO3.:gMc)(3#CQl#2c:ЭxycsFRD: Pfꬰg-aS.JR U$̊(̀))IJg`k=zdy >nO U1GokwhpZRآY>45*'8C/9wm7WJCj=CH΀u31΍9WdB/hA`}T*,y>9@[/zlRa=H2<,P4P]|VFQ2Tr?0ބ)޲a@vǯ?ORoGU˘\tCz{߻Kc&A`eI:ó29QڬKs nTLLJF˥s=WRb]V$!~x-&!' _iԮ_Z`hσh `jklwKNMz5Xd;QoĢ* `ۯP endstream endobj 204 0 obj 1156 endobj 205 0 obj << /Filter /FlateDecode /Length 204 0 R >> stream HWˎ6b/r{%z̍,9iyI"꾫}7 %_)"Jb9JZދƙ%J["XxBG ;bts<1}QՆ{eb?{5z_̀|h qǩ,"um2R1Xo`Ev%VBkXcNCc0Q3J$$,ر?볿xRdWB+Mm+)78"9#v51_0J*,v٧0hRs$✑o/`KոѴ[ALAUE3%vաKv=` ΠbMg7U dkT,Wo0TplqXEBTC ,؊ЅK "[|V6NC8ަq7ђl742>?[-fL{C߆N)JBBRPhgR/rk {"N3/E*aKr, Y[~ݘAX8_]g{N:RQEr;@m3MO,$Pg7%'[ ӼCۏ\PsiD/W칧R7S{rUpqӹ EThT0S(7~b]b2.k@CX4 eSbC"U~}A: kC`skcH"[>[\c\l"m40-\N6BPXh,mнMӐ_VChW,Iq"MWڇn*::Oʐ^Z|2"%256.፟a#?AS~(+r>FDx@46!-[V?zPn&Y^r@J]f2԰ jrhC>3aX2zدIf1Gi8jcT24K&U1 `?Ю$A80?Z_GE endstream endobj 206 0 obj 1218 endobj 207 0 obj << /Filter /FlateDecode /Length 206 0 R >> stream HlVr6 b2,MJURo=Gk4%iH ʜ3AF7{3n jwgYnwa=<~z,8SlP2$^xWY+cμTz9%qLG {9}NSbF(&KT(x'JF s V4<,% tGUX+0 u@80JgtXΛz0B r)|iSw}>GzS3 ?I.B[=hg =QcuS{}שacߝw> L%KQH"U'WJ'z3#]) FX,r6<1ڧ ܂aJ#SžsVf|^ŧ_[ɕ LO.Ǣ @/P,}6% SyUJzG|Ns̻GY) SyL} X3.<%w}5q]5HƮx~2oHe7:8sz\k$dTk׏'m_'YWJSN #ŕ(,ntaW#[Iil@ 3bi4 \MUqk2@A`=8ɱr@,]ϫ1fs(<']KUV2^#(͕H1댳v]CkX(+款5h!)N6V\igݨڕ+zNpc^wɎ׶JI62%ZQ\_FR%I_Jl\ +7֔~m<6g$aakfD멞&YDaR9b[NDń {o9fSQjlj fnz%8ad~ B۠\e%C*m?}v|P,iFZ@҂IoaIuxjI(Zw}0ntkdq2mv &UdZu&mU_tCdJжyZLts ?mPf\[9buB|WΡ/rfsH0rńmS '-})xC~i> stream HWn6~w7X`, sp|l4mgJRjBL!ݥ^]7)w<~Hn_s$ԑvbd?)U,].wHZ؂!s]>F'9gSYd" ѕM }ʿ\5`\#Yr!^2(3f jm7EJEq45F-M9QH\-HK;l=#DqQmG?\o x~ ,Ps+ZzY6Ur 'w)NE" 7<>}] 3``Pr 3Qsobb>&!E&cSȔezz^_ή⌼.a1h_.BAl:o5TPHJ累9̆ȟ dR}!CCB|CB8elۅLk0QDKkZo@7^jF 1FɲSSaePW[}4S ARcAN$[`y`w[˓ a6(zayLw9ԟ:5-bЋу'TfzVCc,q.j_`֕Kh̍GiQ% '2rmbVBeHA1/ԃ ̿7V1(Q’B{xt ذC, q.o eZ2xe\J@3CRikSS?K D,Jsx͵GI&RLh>^di7J掂a(-cZKLC>A~é(8 l̋wiYͶ[vv)InboOHHؽvIžp(ļ|-D} - ũkhS& !xrhmXO4jXo_ofMX+W~\e!9w=OJ?Rm!RǞ1͢0;WrdSiϺ}}M`2%!:$k5J(INs~hj&-<~#x*(90eD endstream endobj 210 0 obj 1109 endobj 211 0 obj << /Type /Font /Subtype /TrueType /Name /F2 /BaseFont /TimesNewRoman,Italic /Encoding /WinAnsiEncoding >> endobj 212 0 obj << /Filter /FlateDecode /Length 210 0 R >> stream H|Wr6 31Dzv2]02sV<}!G .ptxxS8x'9sNqPi$JoA0*A[D\9ߟ3"UUN S *USܒhtKߧDL{ؑk"##F}˵YV;lrƶRr̊'>WZZmύT{TbAw[!/xqdZ1R=^k[Nm{( 1:8>9$V2PM̭197b|Xr AHeum h$1"=>CoA1jh ,c(ĎReCVSJ?R*1%*eu[(RJwK_)EFB*m0#Ĭl_Cцm$b5q%НKGT^QҍpF"qVZC?ŬÄ"ʹiEǩA#x oqϊn 4BX_g&ջboBo[Mk3w>9:xRY R\qg%~LEa>r'F߇*Vnd|R8b)yVc`$绽cJG1.Lta*䫮(8@%"1>M1v9)t ~ xIͤN4ܒhm TXUf((Ϛzm#xbw Vޭ8DKn]7feE@kc 9X_WRZeʆ1䎊-0:bnVst46AqNmv3e"хry]|4HB_[b=a}_JOaKXyUfIP;xZeŌN5M?s[C@)imE7{YEבK}j-f jrܛ0ɗIWoro?ϕw 8L% Ny.,3$2oU]wVU±~HJ1ݘ8> stream HWˎF ֝~?9,` s䠱啲dXL&_-Kr3T7YU,YVd<;؝[]_ߞ8*ٓb*H;E몶ɞqp,8渾st.Ut>h|ι1g[~׺aK|{aՔ^4^0g*~/c 5KəcέQ!gۺD$5mKJ+'3c%uXa O8ϵzFTvO+A%\i@1JuZΔw - C *l*ӽt̅`h׵/; kgV~{E_DZ7z;Usq+~Cfd{dHE۰0}Gs&jb,m 9شS> ۱,.1FIhkvB/ jeD(x˗E_K],|[^y_R5X\d,ĵIåKƠN%) k՜WGTp^qh )"M߿^Lr܅9GCb>'19 @v=Hdਔ8pkHBrW8CW4?R:vav O~ߎ47uc^@U]xdSQ8 Yg4m.űT ds2s·C!)2W%<"8&K]H/㪒)s"K2D`yՊMs6q:dz@)euulRL_G[ PֳW"+A$m#E mEoH N2_<Ѿc&5@tjNar䦺 ߀j?m0a|m0\ %wڦm>.oG57&w' J\%\JFzkp4_۪ٴC3C2W{K̪IYwR f:2bqB:D Έc4v9 ,ÉRh©2fqC:v>NJHbA.fKc-.0kk: mgDKXqK{\J\Ȏe^L# , ,%˥|5?,&5\ƈX|Grν8J睸?ci鰹i7;l[.~H-Ό(9,Q)XyDwb9ZcW!xbaCcÂz]HFK20G G U5[ endstream endobj 217 0 obj 1180 endobj 218 0 obj << /Filter /FlateDecode /Length 217 0 R >> stream H|VKo65 4 ߏcv- dm-3=\K #YCQWqH)vP-/e(uqψFΟuUe 3EaS`?(9 7wOx_PsF3j>?|}+**]Sr jma`W\1=Ʉ,aN XPs% 5Y)!k'9w^R<<ϩf0KvLm>-$X/O3k~\1ZN_}(|*U[Jhւ5KRY !k6#r$_\:Uwx ӜEu=BÐDh"RΪajCaZoY[6g, é;fdD󨈷SU8  )qcgGj: |.M?UD pG" vI5?倌NF-2%4j9$E_9XIh8 8_ia;d/d<@2*zض%yxcQV#밡 ϵX9{mչ;1Ef&]Z4LfM4&E8̀J!Sw¹q$Ul\YeDjr" SB}'1&) (+RZ'% UD_zn@L|4y%aa ʜ}{DPBGG* N96Hp릹Xlj.K ,Ūe|[`Xb`O7,GY( d()W웸b=|fr -ցF k,F+̺^L+g4lՆm% {~^*-P0o=G h bR0kf&[on.p:JX==.G)X-,M=<( txu՟crh+%'DrH (bm@2ڦ5u2ѓt>۹BqomBL֚d&m7QiuF@ W#BO4e :~x7jA_^ҕ!AP=ݎ} !4L;Sv? nQYR$+×ww 0L4) endstream endobj 219 0 obj 72961 endobj 220 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 219 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream O1o2Բ dvv6CL aBCY@rB FRqdzYX).* &L&EάH9ڐxHNB!`;dPJDgh: ۪ Ph> GzI&")7iozGBӕ =(}U7M&?H='շ]>W[>M*M}iR~ڸE+⽵׾Ҥ/M&;M.K׾Jr'#6D"b*= >i#9C DB.5\hϠ@c0-oԈ,CB#}]~)ӿ][ }*ޟk^M^ۿDoK]]᾽0_dQ￯[ooK%owuwoKl>ukd'M{~s;U[^ukׇ^04[Kn8j:u經$[{O]/^ /ڱ5׏m/a+W&n^wLS n+lmuv}aL;[a݊ˠKxcOraKam(V_Z~v,6_^pivڧI;M5..4(lm_x%aG L/OOzu?b1[!_騫^^4Lжa8a42L\ aO[M];MC骆 ʵ  fCXiMPg4,a3@`M0[&ݪeJj 4B"$n(B"Sh!*3 609 N!GD|r0(#"""""B""!5hDִd)1NT>ڦeBiV#l t]-r!u4mܴ")lD\~A޻zjIi*h.mN }5`]|\ Av_]5A~L'A`U>' B~«DtG.gi>X\d$;~|H4a4~hZ uU>ME [d(H',wh^uW~ɽy'hBg>8uNgɞ_izOX>~+/]_W`ߺ&?*nzT?ؠ$;봟7{HWk~fdu ɻ͵boדֻkm?T;N PݯY5Ouj}ޚdS[4 Ѝ[cЫi]dB""ӈ۪qAN""? !a;DF_CB"DCAb l8D:s6X)*Xï-29'0`NA#~VWaHDG!YAs_f̐ѡ{G} 馻sLMA4,&R&ZM2:M0 *ڪ}ʘr.f"/r|mOW&v?>NЋPޡ4F~KP814!DziN&;h7OpHuilLAMIޟi_ OV%ovNOZODz^O_Oa?B?_Z[׊;gcݜ-V}vٵ0w&G?pGOZ6CnPOuc}0UK{\z[x]5oV{K iM^apzS  A%Q]?~ӈ֬BN-4аAB"  025-rv'BfK;5DzUj;/M0>}Mo>u4)?%NN;N9 1ABϳa86eIQ3/A PzzW"xaS AN$Lv. Bhޟcww@U=WҶN?#vWwI..:&;0SzPw_-'֞l?NmX}^: R1^?u;Y_}O=~{]kVz_znתً 'iM'_@/}]]vڲ%ڼ;kՊk UtM`^MaaN0h4!0L0B CL  !V G-}"W4FZ-$a0A%NZONZAT h:7z WӿwMf~ETf[ߥ 89 W;M; $];its;-nY1 _tu' m7I~dU{6TߤNVK߯gݞ4?q>=MֺqJun}jpwka/N]ҪaSCD4Gb7ڦ ֘[UAL!3DQ>Zw!iqGj$ABh[[2Na5 ꪿_]d! Hۯ"k;&4]->IkgњE!家R' ffb'+)K `3CSqL)ͳ4F46ijxBʄ?9DͰN, *2sB, S5A >4 i0s!P s <60 4<&4mӿ[_]k)Zki7Ѝ?0htT'_kZ޿]7KmS|7mj7- lFM$=8tpt8$9,}<=N `|wԛ;T>[0I蝿z8 I-퍡;K]ޚx-JuSTIla4XM[R޽KoЅk]꿯^>y* wX/#pW5nǾ{xdA5=fm!8_댆 z?KV+7ikCM==-^_EM_}|"1Ԃ㔯\Q7{ds$=_D]:ӯޡ}7zյwKh1}Ru/[mתnW gao3䟍k{il#G:U1Ko蓈?^OGگ_ ŭl]ŧvw7m&!W鮇cw}a".4?];㎓=&8$(ߏm+|V|[ZZ4]֚ڭiGM5No]u#pU$:wbExjBdT.a; A2CwASd qM4дЈЈ a4hAAaJL!aa2%""""#&4hDDDD4"DDDDA!w\ K_v+UM.{]#O^ջQ_#{M]&U0 &#"!K<ҙd0vej+=L;ՒNMic N4ӿwiUׯMrˉ *#6Q᠛d[E3EUl*Kj2%GDTDINdFP৙7v0:'$DdG"u0Adr3˞ycLe*aMA͑S6a0#A 1a2A adtapC^ S A06BPhXB0PfC =ݪiAvi!iqa]-BPh=5L4k; B֭:M N rO#I0Mִ;4}iwK&T밉;z$oNJ0?y'7 ma3TrQ}O.x]'M 'DQw 0uy(i7%oI7'm2@ȌiKԍ5U8TOd#\TQoN>&4uPk_J?; vݫ{ӢWViwݺnxQ_]qB=Zٿݯ~+~Z{ZA~o>DCu}oW^j<.jGa/k䠡};)B:+>J!7n)|߮?̀Ӵ9 f/feX'jxy3lHG7g$QɎ_m;zvkn׿m{O8ƚq]KznvY="][<--+}z'o8oyq쓵IZ[Zi7^c;X~UH4X;oN\dn'^8Cx*}cJ(9(MدZNI}u񾞗qQV*)VUkUCZ 8up[n_WK}/wV^OƵ__׻P'.N[UpW5z^u쏻u ;L/ih^ IӼ& 'PӻTMAB,! 4!uA=QasؿY&\&a4B'A(LA' 0DDDDDCB"ˡDDDGB?$ëK^_HUB"#&l-mn ޯ1u|7OKݽw{׷O{[zӽת~~^[}{w7Dm~X׆ w^ uIzO_֍_mSi}xjڱM^`wUlŭ^Նocmt`X5:jDZLox>%i_knOӱ_VxNŠz]-5ONӃ }eݦI-SC dTPT (B"4, kЃ5BMShYCЈ0e - B! &DFM0R""",!f$l2"""<`k].0#q rGlǰ;XJQTv; -&KY& iuNׯL!)okhwܬA- vN~yrċ択"BgcwZa*f!=8@칙L(d$f )kF2:(FNRL 3 #(Ah3aM Cq  28`*-aM4!3;%Ć!l pC05 i4!]=teZDc i [M;7iaonLk&>M],#\Cz "f%D܌}"&[TKwhoB÷z LuNһ讱g`LʚPMl% &'"wޙ'h$L{yvIPJ2wD'Fe&WS+Uzt[ oOSzU0ꞿ`i_N\$\H~}z}qQzLx;IOOuؠU|H/P +c~X( ;񶵅N<͚fg$[C6/D-kdQZe[r"/CSlSL",_&d)YVto3tEB kj@3} 9'>sjֿx]{7w$'Ȉ;aMȋqJsA,'9p3lxMNgsNћ >Ӵ-h/=4u-~_ X[U]pf3jL[om4kvtWi|ú[S1pLk֕dwpX>;ؽ{c-݄I ;]?\=_]'tdnz.Mrw}Ztv]q\q޾WSއ뒊O'/֍wmv.O}4֮A|~tKlzi<؏[❸_)P骪j[uoVbױǵ_w^ouҭ7qO[$ޝ VnP_=4B 4!Bi Ô(+U_j_k r=w 8NMe(`p &4ia0DCM}{A! Moշb߷UOuU"""@H8""""" E*_?ýoǏHWuL{}úWTM7W__X|?gC -mKZoi_ϧ >i޿{7sxv}Zu*Zqm.Ka~ 'v $ԅ߽";Oۮ9 e#MHjkONⶸ1ӷTڊ[ӵ4mS-[--00,Ml!euvDDXT 2;BBN"" 0AP!a PM !qP˴ЈDDDDQ6G] W "?VmKY\C1dΨ;-X띚!ןα42'e& rj a4UT^Ws;__}Oa;n?;rIB6=b};LGN;2J ǚ!=D`fk2ztu·O"3›"[3dw 9(# H40p&PTfDs3宪g#>!x'!~4ƙV5L&)3<&i< h3tC "n" „PUOPBu-B\BӼ&5_Uۧi馝T_5E[iޫޫV~}}o_ěU>MY7ݯ2JGbT3}I+dAQ&8zR$95.r;r˼-:'}|ȢS0DM5?'}'[գcrp1ۿ$N2QvQ{޶I꾽UXuzj~޻77y!ê]hW IuW}WTHp{ƿq+w!Wߵ67ֿH-vSq)ªj+ 7] l'~qVcAL3/d0Lt^7F-!LS[$M+k{}8CӲ4,A fHa{.   uwPo^yGD@|'F@r;:3Ѹwϒd.33H 'ƚahvjiAiziǵ}7}7wJ-?f0a4l Mfu;A!a3bN S]2?a;8&u? !myy>DlY};C'wH1Czam[Qc>=9cX>[w\t^C{.t?Iz_W;lk+ 8?OO>-Xý[D:N$7rqE!äh◿W%n7KZ_owH_kW}xM{^:jG\nE''zC.>;O]5kot M=8.E&X+O]C_oť}U7uOzj߮iMo_^~;C\Uv _^Ҭ+ &6)٤U3c>ȑsȺ:P宲fU6G<,} i d" ;vC`9I5$DjDb7aypMly|0p!?q#A0Gvg#ׂd`ڮ8j x.iB.¡|SNI iUA޺g$Bixiw a5O=_MkꫦiM=;M9]eWK zVo.H}ᄈ!\ ٨BPd%BhQ8|w{[ E{M4quR7ˇrou vdG#>L~l뿇c7)ZڄӿI(%}[+ƺe->Pz{}iUMNJ?wWXi]׷?ջ_kd7@tI?w߈IKՆ_ikz!kثO?]k(5m5}[/W߷?;ȴyNgoo>:rc!/ת5%D*g ]eQ̗5ٞOg ?ؿ~_ G9F ! G#BByLHqgz!ai<a4g_k$?H~ӽm}w<B&K &k 0EvIwi]ػ'n/mڂ;حk/vT{OR|u^O#U$iƯ-o[bb)u{K׵էV[T^u~?WKcNmG.Շ\S]SkoȮWzNUX+uZ^?mkh4ki i 0CL&]Mlj᮶^~`PAa ;M8Mb&$:g! 0PЈ`D3ZiB"""!)4/soӷb"#&f!MDDDDDDDBگo7^ %a0(TJK/v`[ZjTI޻,!4iC0<﫽ϯlaAVK>@ڱLa=U_OONmT߆vTUv)^"MMzp Eb"#}i^i5-WPvDYA0M AbhDEР4-mf@M5j"""""""'LX!CB"Dm!U Wt Y&pZ@M-ų&MijQ gv$i&:jT*tUm{߯ɏ&<(Nv!'܂}4i~oL&D[uĎӳS*%'kɔzd O7eQMgDIf3|B4m JAt_Ba3;03@ i3&f dhC aA]a0 dC 3OPM03aND lAipDشzh0hXMWOS=BqMtT/[vPH~i&]ߪmoڑGnH|v|ˎn]ɻw&:zT䣽ɾ\dQ\n0;K:;O7{~ݭV`dKߓWM5wD#z$Z {_]'vt~M|ōz]퓾:3GgQ٠iu^Xwc^!km}r;kֶ0A݂8a_-[_'?Cw:Qtk[ߞjo^KؓC_/^+։][k֫֘uuc'}&?7uK׾NN;ӽ'zo_I|ikO#־7ޯZjg]o}?KzE?uk[~{_0&Gj.zO5U}]VoXbj_|Zm=v""#M4R m5YBAD0L!aG宖 ya3YmH]m~k'j±|Z-Mj*2Z5TC`H#2P&kh0!&mPLg8A&p Pg#uܮ&+f@H&LQ L'zi&iIi5"# S"أAڮ-;}4MvZ N\y1.7ޓ#vt\Q;'Dz{[z_ղq'IOMq]wm/ n8=BvO}|![5뭇]/ĄIffs<)=Ki}^7kΈqd>B̳2iHGDuFGIaA0@Ԅ mC\a<3aH7d<p`MDt F4M;A4SAM;_ݢoh? L!`iOAig}vMuU roh(a¾M{~}\mQ7K,zcpo ]jK|.2ݢc\>&;ޯ[wmE!~2Qzo] sC]4kQIvN G~NSkI6ӥhR_'](mC,pMZ{?ӵot>_nl*Bֿ`~!cŰ=~=}moNv[b5_ֵ^+??lUv,qwJ*:x1 auׅu_ i -W>_x{L7 e >o1z)~m_uB," aB",!`DD3bi{-MmN[_`D8-?o_pǠTt_~0QKo߾mg _Mmx_6B`e-2Tȅ"g-BػOWk]#JT6ajoRÎ㆓Lj[U]m鏏i*+Bc㏎:j8ۆ+O|Bi};MW (iuD4ɿ\5T͊_C4pajkzN0iA;B! L*,! i0Ab"""%[LHȌTt; e'&;kD AHD^+dCGAS4Dh{D3]e̜ӈOO#^iS4oNHuܘnJ FHz$i #njRdR>{$F!:."1 }4 3C3qA0n}38 h>!~D4m2#L3<%4#_icQwJ}'zvN5]t_ˈdti Mc<4г4 _jB)Dl*e;ZMг'h0ij_ kyx<|D,ϳ59!iq 𵮥ڏ]_t {X^Lzt~ֵN\~[7nAwE[]1cdhfN,rZ1c"c=wIR{dck_zֽ]K5GHrpJ)<7WT}=$鮤^OAizvPJ,&zIܸaL]ainӨnIki7U}Ս8DnW׮* &zkqEŧzܕ]Zn(Wz}{O_kN֫-ܖnmGzt?KVߠG[[ª^zﯪ]8u+_Ɏǒo'X[L/﮶եW KLw޽_׽u?&({F?'zߠHx_t_/Omӫۯu _~g  Q 7֗B?{ ߬-8)o{~u~Zz_Njo_DK!CX+Z\b?O-"Cu&?}nUS m[w {z_M_o{c7h/K_#w|MBwZKIyyߺ}a섏 ޚJ/ MS_֕%_%}:kkkwﯯK}2=vqE; `DXL&(ܱw-7~v'߿cݭ}V.8a0KH~K67LՏczUrzش7c^:ͧߤ}K}iiM2QhE*+WpJw}8M2oh?A^i;m[%}z'T]Ias7 B!7CT;M4NڦޟX!Zw5Aa ]&4JP7ڭLWax^"hDDF1؈aL HC aBD_O|YavDDXB1DGŢ"#;[$:h4B""4.C*Јb[uUqhC"#%@H6r R4,RxGFw8ja=4髖|2{)q-̪0ͲL;&_DqgH R i$}t2-|Լi;r4}k ,#SNO)l9OLMaq_q [^5nyg=4ذt;84kNp{.I N9\!wӾE?̀KĿ'f2==9 Dцbi~I||w9`M44qk PѕE2a4׾DRR7I̒d4ԐyS>y^)Zf! Pf 9ja4S H^8Ws6C4럏ȩ)i M;Bq-GUh| ȡiL7q +$fh?L zda)񡙣q<'i8Bm 4-дL j0As3B64^[I7ɿv㦃;[ XM 4`tѴ ^n>ӵ?cƮRZQafjB5SLq.Iˏ=':NՊ7_"pӿEŭoao1Hkp1xnn7ROzےz4:J ;Av'o7ejAo6%rh}w-ԍ'kۥ wRt+ǻk87 I*nޫ.M_OouZO&{}zSN~m;MMM|y'kw_aV}w[um}>?Jk_5K^/i[^CZ~MC~-wX+׏OOO c?߯8?co+ɏnz~Ito . z$I/&Z/ݺՅÿ?9A^iwwޞX{K_ /-jNa4 ߅[ k׮w U}pމMߥ׶s]^-0=`}?_"wcQ:UL?׷~k<.厕6W:'W/&K]7ׇK~c_oM8oxukAIi_m_z?Zͣ{u_nKim+yu^a߽?u{n/um;-5k}o\齫 ƱkJ{*a4#L4Z]Cc ŗ_oFm>״ud-nbau;7׆s  B b;Y {I0wqƿ{X:VջOcܔoM,qQ_Z9wV틋c!5_ARl7O_/l~=~*iս{o#&02N OK0,Sm5~ta4I: a2Ͻ' 4>'M5ӴԓCNh4ӆ,*vN4"#N"!q !ahLv6''Ǵ_LaDDDDW"_~B"""DDDDG Tiz &]*EnY""!DAx vP Ao}WiCqzhEDGJ`4""""#GNx1,g `N@Eq6lNZ/2SF@DDdb_MVW[GhR5jUZa4zd7 V= M=37(X=|i~S[Gf;|Kwo\_ 4;2 tm Ŝw ƚ~d$%~)t|%M; NԼa;]?)I<:ƶOߧ Bs ڠmd]$BU?_]H{WX^.N}}i[ZMկ Z[}\tW9zh4alN_8iu%S?rcWz~/_0zߥ V-&>N)=ݬz}.o_z/}w_KV}"㾱vwK'ׯݭq_owax;w)uc/Q??AZ3MMoy/z߉_D޿~Cu$?W7'Jk__{mٿ/0k.?uwӯ{o/SWvƿqz__6;'a=}wN=u_\z}{]QzL_Z]ﮝg}텐=5ՊcNO_w^[e ۪w Py7gݯ{ }\|q^kՎBfO{R[UlqB[m~>xJ}7^Uӏ^/V"ii駠a0a;Q4&Dߘb?Wi5Zn4oݥҊbӻz~]I X6;o]6i a">ݯMUKzkAl'pnSW&ꩦu~{ӵڽCM}507B""#h;&:a?}XL~itiVHxq- &qaJ_VBY7ioDZId&Uid&P瀃4"5d! h΂eQ0vB!* %Ј4='n;KJ#_k֚Nɺ10B"""""""" 5LlwMM @Ќmhjixv 41 Щt&a0LքE":J5B"B"""""U 0 +AYe-́" ewggf2:3--8IKqi^xMBjiMģGctUu$jdg|23 NB\"܎MtMnץͿ;32!M^8 2\H*?]T03 44!pU铴" 2vRDQ-؍)g M0 M4ә$D" H#:$O.8IAOY$Uɜ&d? Ӑ$0TȞi ͅ0K}7;g3h0&;_>0A |L DtbxT &Ng OLpнvx/ia=4%M m2: A@_")DNҽ5Mm43aU=7ݦ_*N6jOąATDG B!`StFl y;[IwUz4)"ڦ]m"n9qL?tnvO8$>X'-i'_5Lj(Aa`ii릚h?^L|VݶƗ}=rqRnHr#FN(z&/nƴ!7o~_8o}t%Œ5إp̑FCvUi4WM+D;d%|O]}un_tJIjۧcӵ{=3XAg骭-cn:Mp'Iڅ&8m׿Lww_{ץm0Mo|u;Tkv/{^ȿа_WX׭KGx5:&]*/A.8}ֺaz^0_ᯬ/-ZK!V18rݵ'zo*O}i7}~xcסpI?Z}x_D/焾aUZק'_m+q)ҿ__z_l¼/|5_z'|~q?mُ[zEED~_bҏ}k1ޗ &c߭qco뻿ߥuݯV#1i_pD$W_i h= X^?]na wB~l=_Ƕ^׵I8\zM_/CmTZkj:n:T4մf/_cWj %ع ~ *mڡLlW,tnUu|_ ; iM>oy"}umlUWzM5no7ݭݲi7ISB0Ai B!G^[[m4ݠZR4 MSLި? 7[.]8|Zi}űpɿ&[0@a4hFhXL&C, !ihDD4Q4"";'0lu_Q>E{A̡2pJDDDDf"0B#Wj$F?w['! ɸ]m"a4@0a42AFBbT?&DDDDDDFDF6d; d-ЈB"4DDFGpˆf|c"f$2 ì̷4Dk$)g"ib1 dV&*f-!m7BK; .aokzpӿuTLt-kX4aԤs1FOUNK|h[y6Wjn.i2VJЯiv!'pڴIp}wJ.Hm"Cwoڿ65?^5x_}}h6cH+T\n2N~7߿v׫*?(~KioWS޵OW9T m*kui鵪^4ڭ]kڰ0߯2v]]|?nK^N Պ]ڸ +D.kbO7Վ)JB6cN׾-KҊiߑWd$5cMݫm&?;ci/v+}Si:I_E{B֛--v7ij\ V *iڸaiM4L.iu5ޞٿ׾ҷ B=YtLBM0B\2LENXiuM}4  h4aI`iO! &A 4! T2MaՅmoVUV?ڪkja4b""#DC4"" 5!DDY"""""""""/r2=f֪q}k~0XA """ "?u҇`DF&4ӳa0Dt BeɛP/֫0ƭ<&ju0q aj?Yn-AX'+D ׄCi,4JY&r,UD=m=5L 36C,M=oxDp]":H?6[ʼȻ% qF]~oq4؉T[&i0 +4XDYwwVUR&hԏǙ<Ɲ;2:dɑq g!/WrO0\uˇ.MԜw2V)< 3ټ3ޜw&Wdc\9Tw ozm^Cj5֗WcP)d3xAiMAk_&!Ӫ*W+_ i ZMm!_)6mk?KakqEg!084P57CVXL'N>ot[_|^ݽa}Ӫaװ\+~j&i[]J+Wx'U~+? ^?Q1M?~տ+i[ONMRv'X__߶{ǽMlUߞUo7;Yc7\w~]5^W??kwK'\kz}7u֗(c\o߿_KwWOpM.H>~5ЄڤHu{}/oq][꒲c;}ro֩Ss}[I!mۯ Xk^\߯si^S^~m_h}+]|uyw )  ^)ڷ\T{A6@_.}}b8V}cU) mZmmuZ{4La[AL~twե}|5w]XS*;|o[_Ƭ'izV1D[tou&>־oob8˵M5^}kik SB,S`4iiu ~M﷭ğɏuuNAiia5 㕩ATa4 &~TTІah4 4#@hXB!"":MRۭ]{V{z\oz;MB aP4"!DFXB" B"""!j""" ʻٿ[/ز8Va2OvЈɎ\DDRwW~Lqqllj!ᦚ h2cb]]KKV>'wiuв^(  0Y^D$"*d+1a04""""" ]hEiA04 """"""#C ,9]j,Y,AŨ2 2W1έ;5Yh4tDdJu T;g G`UUOW|v'&vD>|rVZ&iiE'c1TH& RPwiӻ|EDh_TȔ:ojwhg"lw}a>w΋7!h PWLӆ3?gLu0@AMay=cM;uɏaF.)i>ܓtIZ~\Qp\kD_H役7-AiǒwQI?.7'x)({==~O7?`̒yD"s!OO0`ݦB5O18'蛶a?Nw ^5O_k߷wqo#XF_ެZj{i:}~}|Vk9'q$}ku^B[/XBû16wv91[ C8Շ/_ }.z{;Uo78M uomƶ_S;^MޗH*;K#uN=5TЏ4☪ivki`^]ٵٿ]kk޿ji 54^j !aW;?CUN tSBSZL&4DH !a5e2PgdsVcۯO?+iJ n ""B:a4"""!֗ caO]C !B8De)p :]":eEݯv'}^u[_T;' 8a-[k0M0V0M0A#aDqԌu5д"! EvYA4p (0DGQ{j"*hqM լFMDf,#Yi,FAdֳʮw3F42;Ք,S;IVM4z`N Ӻ=u@2Di[_IjZ+gcFEMWˈ->/ Eɽy_dDvت61wUXD/ `,cjBGjacO"VG̴33O0LIOYTYrgB `3 4͙:30<)GJ0Od8 !hxB0ui;O_};), ;ә+a!JOOaAz 0COO˜aO &;ӭ5Or/mVBȇ6'0pVv­RwZ&v֚ct=?D~1}z|oSBtGуAB{D~o%A>YpA'owH[wOA;t\:W#r(J4m|7cA7T\Fv[.^iN L!l-I<*ݾ%M. odww;y|Qa=6ֺ%;|@a`5j<8 AqGOK[Mo87ɿz׻Z#wvקKHiUn ORL3! 0ڄ ;M iELuRp7>8k}?Uzk_Lkug &]ȸ״MSou V7듇O$ޮNӥw ?u}t :뭻_Q rL[[7~._]}xKg-{iz __dy޹, lU[u!C_}ޕz:nswvf/a^'KWm/t+ұ>U.?Z~_yXZ_n5_ox}꫽=}|M_J}ayE~[0S}4B-ߺ]܄}{zTp>֢Ka/o{=oo~6ObMUG}Ijv{MEj[U_Ivot lW}4Ӯ2OvTU[Dzcꩭijkޝ,NNaBknnZzoXzDZڮmS!ӵMXN;aqiN0 0 !'hEdN- 0CA`FAZ " i/߯a]kխJ}hYv 2chDDDDDDD00DFHx!^ڄ]:cjcqv$?xihQC(l@DDAЏykcc(1]5&=t wDAQW3qe5 Cq5;R!LKLe# PTӴd&L&;Vp?)ZAר}Bwq|,I>("H~>Lޯ심~w tM Ӿ) w#zۗ <ۜ^P@B59>Oϲ~'3UZ6TKOA3@b/;N,{A <2D;8yB"a M?弩!!uKt|)=B`>3&0">!3gfHFys]l9- N# Bh6 a}ivB45,(U&M8j64ӋN gBuM[ Um:=biުqrOdticS  &=?ڢv^[ -}z&[E&D,{hdCӒ|$/S:iA<3b7j=l/4LwO&?q'~'7[ p~(ޝ'aUմ>\iےr*RG̑E3%U4>MWE!^wo8 Ec'vKڎLc߽",+ !u j\3A;M MZoq'TmIu}__+{ՏiẪZS#QEBdhXL7L!}iݪ։aIq\>'h=N+WЈ_Џx/6apm{pBzg4ծ_&:zmI7cWïi]o>iVN]jH|\ Z䞂OV^eMU}GWа+^޷L}k[/ֿޚc^M&듄^.MZ}}}O{}ooICtmpc~ _C&h$dc]ǿzކ[]UWD k'{w~qzU>_}5!zi}=?mk]1wKOX _tM}v9_=VW4Vbӓv{k^B}5 kB_wi#q tzؿG~v6E߯kI}m'ucUm(J*a*}f$WqOW)sqT TWiF^ =1_GZتbj~_[{m-w=չ t*(TBA+k uM}UlS0 i5 Pw]_C[]u7xk z v D!EE香p4.-83ib7LhJ"" ga0h4ɪ ! W}7ͫojwV|CKڨڊVN$LM0A " !D4"2Cd_mk_^/?N.ح9qO{MPi0M`0B>鯯պqlqӪ׻OM41@Mת#޽a~׿kaWu2CLMPBbSV/㵴ݦIӲoXL aDG]S[{HW&<3`*iEa"""#N5“piƏ1^"B&hDD2u Q%"D iE{]i̊:Gv6T 9j2i"wةve8#jeQi_;%;ƙjwY1 F&O=&96ZGbQ+,vV?MovF|\T4KYN^z~v&Ĉ/"9qdA<ȍ4DbADIb\)LI 0c70| Ɲmdjfd;b0""i"LLyi)D8fq>I 0ffpAe g#ᅲr>M OM= f,d# \͙B 4i駧S!B'% A;3iJ2#gBAA 4.A zM4NW%6䡚G#!z YM VA=Qpdna'O4OC-o[7-4Mov>\+1.. fF;/ ЋL! Ӱ~蛤JwU%~MMVg.iE1ǿn ދ>?ViRzzxNhL#4 䙶r1 ! o v&>\=8ozO({TᄂޖףX(i7$%nֶpMIFƞ޺_}[H\}٫/$\gǟDwhZ馨Zz&M܌vMզI߰kN OxS'oVwzCo z鎡d MHEf3AB &fIz H/v_&($!C)N%Ǯ{:k=aF: 8@ "/4д/[MɿN(ޞ: |}uOj_߻J01#U5ՍD7Z/,v{C'n-STm{ԷӼICWZC վEa=.7} ztnF>L}“};'Nu>X=an[WZq_a!_DKIuy^Nz'iԷVL'_ Onz /v/L0iůZ}/m޻ttu}ꝼ7OXmοխCcMO[׭!k/6^.Dzߥp}n{JWd%vis~l^ǭ;K=&U^+i?݆ ^ bͧXc]UwFdK*|m_u_}muo<{[k߿>5WEi^MU/j+ڶ֙cZMji~ kj/Vַֿ֫”zS5UV6).U. Iᤚ 43Z0T"p`>AhDCT10AL hDo}=LO[ܨL& 8DF !iCЈ鈭Vԉ}}^_5J?Nj1ɺPhDDDXB#nZoZ ޫLZcc⻻~x`馚iЈ銃 i*kZLih0B!B;[[* i4@Ј¡1_U2nL*h3<&&ЃMoU[2r&ЈA4& a2LB4ڈ.+)n`;2 ~W3/@̋;Јv@32h4$mBiAj]4kKr;Z _􉺹pHNiwqu}owҏCtDމD}ڦWw^}.7'y(EAvjҿ>N1AnkZy8uO];[MwT֩MIܷV[ _׵[׸_҅o߿|W"?vһz?iP1~}%Wra8/Q־n5ۯm;vZ[^p4_Kޡ>؊}i_c~~_\?c]6TA⟿Q~._nct~7_u]D&wz߿ny8Z&叒r!+U$:{ ?__w m[^vvߥԷ;CtEWokk1i{}udwzWL}_8dlTJO{K}y:.cpá{l%Zmc<޿0_گqWIq wM^ ֿ{o{kVվNvB@[[K~=k{鐣 1v VZvڒ]xkKؤ_m5܍k{_Awii S뮼֭ɿ]Y {DZ!fMmSzhD5T! 5[Osu1iL!ka<&; qhZEjw)0M?/֓kꓷT4}pk}i'F:a2cs9+DDq L&D0DB"CdD0A"R!f Hzcb^M]6[ki" *h0B"ЏDDmDDDqmD}{!/b"C~;ݑjAMSM0Azj+uPcظKiv^`aST̐a B"EՆ//DwoaSvYDE& "_7U[(ghD8]v! "t""""4 CLAᦷ"""#5qrrH1%"ڤUGx2le:d$0@L; *iA=S-*,27dvh5^]4ֶ?]SiKB~NijBqtkc=8Ӵ'"x굧[&OM3O]AIy3$<޶O)O&3"d33knI䆙f H3HfFR0SHy%$F]މĨɤmHY.ϙAtbͳ˲!̎ds#e A3N>)vhυaBP 43lxCaSOM k'dӈi\-8CLf !w~xB΁hDEޘMa4ӤkIixM4(kH2%q>bO/hvp(@j \"^Wޝ.(AmK'7h^y7Ik@uf iM4^})nqj\na|{!Mk⋽ht!W.Eop\ezy7!ߥܘ]ŪjCg0MpڧadUˌ&Hvz't]Һ_'(h0F=t蝽cair]ڿI%t~:ME WOmwvՏMo _&>ۿՄE|'ArN}~m6#t o߿ޗZOӯkwL%&a &pSl𞚄a6ɏOW |+Aa>m'\Sw?wZڅt\"v0et A~PœȦZw-&jJ2ɺkj^W[ WuЯ'WBWx𻿊gn\fh0๷g 3aZwz﫺itV/ ,_bHuu)Eȣ:!!r "ӽ3nNZM;EK&=ߦuy8P4.@k]li8IÐJ8h=O3N0r)8|uAwp?w|SDŽuD·]u'40 T1NԓtN:ON }/נu_xc"oI7u{_h}Khn\;yo:IƟ k#um.־w$t꿰G~=vfltEOZëd[^t~⟯^3/!~&]_nTٿulto{WjatIŮu-/z84K߽o`ja)[c.B}qzv5]kVCJ..)n_O{tO.Y巭Zw|?a(ZXt=Ӎ5[=ץi5"jr/ڐ8mkbimy!O)T©! _^"pI[T5Ap '_TR: *i铵Z컢c#Bi'M0h2p٭4! Q o^ c㰗SҫwCB ЈDHE"B""",քDF_.hhDDqmHB"0DA_ou6Upk|{Oi4^,((B"ADhThd_{ LqQo>a"E,i}JW_/tkF8iI4ƚf VfGzQQQKe}EꝧE~ SL07M4""vi/8>Z|n]~A2CB"""""- 0aS ֵb6h0MB0` 7CaAO"15T"""" ""8xQdmt X]4 aF"!xO4"X"I;TgIHTZj\ Ɍd+(AɈL&L&-#6wpaNGbkyjDc{vХ^.I~4YIa4!U|Evťi3~&ȥ}oQЊds^۫ $Mƚa~Tw)\A6tDIE3QUg3 ]r((p9pc ]N44i}A9lpY3 F b 420Ty@L&y4 z=U4;ZiD;ޑ8x?}.*WizU ץ_ZՇ &lfD<4L'RȑM#7ˆ}:l0Ԓ#WX'T?A hYz3Ba ݠoӤM&H|o?LiH{o[~a:kmkp_} |}ZRc_0Aݪi; |~P'kVUv*#k__yCL{U_j^~n_Oj;hk|/$8.M]vlC,{a߾Kޓ]{]qDODIV z$a?m[]i_߾_n4읶7zO_?B+֐__mtM-?fu_-vTd*~_ooM[[/H5֨>~i/pl:VމD:_Y˳ua>8~k o3Wju1cwX*]C]oy4mCOU_UKV65cXXN=ıqޞTHjviZ5?+OT>uv׳_Mw܍GU]*anaW+wH„:OMj?gURl ;(; AaI;V22(aS;M5M{-4S kTMUi]c9Ay!>;AńXគ ;4B 3ߵ ޘOi4[SXi{a?1-Ӳd  \@^' iIwH5 4]kIk[kn$Ǫ]~_V'_AEFѯ>3qiݧ֟pŤNܟp:˼*D=+ru'N%wnHwm;ݽI&>ߓ&os {'#@υS_ @N{CL}Wuy(o.5*zҒ=2|F?kO't~IM;/2)iia0Z&HrC麮Mz}q V Kީ6u{iwi^1[qL35Pg3S9'iޭMz8ܘ7~JpUX+u`AckayA 8i iZMpv 8$;^J{QMVU`W'߿~,rCݿ+h.!!؆uOZh=SM9oDމN2p= {ߡi߮OXA28>5gWc1'ˏ&;EƿKޟVպ{xK"C./ߏUu|2&~aOU]Z;<?;:W~߮ߪ]?-,^_woԷhiQ_5iՓ~/Z_K{4M~^LzoY!7v%lkW_!}M{i{dӰE;W.Id8!]L3DzCظM6듂1߱kZkU_k?׾.!,ޗm6-wIuݐr9zڵ*Q֚]G[Яa܆wpq[V۵jWwm}R|^\oNv߯/TN?Ԑl~wح؅NRikMiݬ0M4dN1^M=x]SovYҵWr15h5Aa4iw oM 4 NSN4"d4! 0B!Ye/D{_Mm_cc&OjjCh0B"9AT i","""A/C'{z;%TEVm02' }Qh4 q/^䝱l_kmN7MVӻ(t;B""C Rn_LaX}UwqM~iia<&DDF 5_T׼[;Wj=6^eq`C0bkV-?cU⢗k WLPdmt0B"""#N;_^p 0@a4"$0"0{l&L!$!jLiaQMDYM`k kڏOP2*YN;U4臬gu4Vd45THR^OR Ghd!i94V[`dt'(jdT!* O+1>Q}lv9E^NȂ'32:@α׻>  iBH#f" 8z[e**h'ݧ̤- 2 a r:lY9H jGN΄31Lsۆ<*M4x!hC#'4L!jhi! 0 5.g'M;TCNi OL L&CM;AMSM 5Avh5M5=U<%܅NB`@ay8iMc։,.,vhZz&?1ܷJMv.&=Mk*in 3SL! -.jH.;&nmˌF91މƩ\ qPxDwܷ4d%dlF\vr%sEP|Ǘ >7ZanNӹ7'DrN$&;{I7K{ZSi;M:ZNW۵P`_OKmUAido3Js!C!gaf3݅CM577'}eiT?'{_@uǰtua O b~!Qe84:ap8@ӴдjvN$o6b^_7V~^▵߅`S!䆙f3vkPA*_Lw蛤N&J:OM{ q r׼/ӿBPB/^xGԂc8Paii-&?wNS_}"oIyn(SZ? o k*{qN^J4zNz('oC}-1)D}}%c׮ֿqF?ӧ蛪D-Jz}Z}A}M I~nD.^pDAͳ D$y,ZTO'w/~״/۽v[I?['mB{iw_ j-II1Yv^`ckRNl/w +__4G{ՠ/~[Wzߘߵ/!q߽}`j HjrudvX|{kw_}]~l {skI#M S{QOwV׵zKka+]~)wZwn=WL^jTm4mZ߄aWOKs]d]4}T˄HU^__ua;W񯭧|R(4馤#j~! 5M >`P 4 4pC80tD2@4yªa&cu.*MGNa0L&iJDDDDDGDDDDDDXC":K_u_om]/a;]W{ªa4ݕB""1T  PRld4| &LL*eVL(M=?h5OU5O[Dﬞ}YQjM 5%ws, H둸{I]W#S&-a0 &)}<A"f{3S}<Sl>a5O#F9|&1,}Zw`czuvR'c&}u} ;HR5~wmlfpfN/-tܛ1i+!'?HAIG0F-+ׯ=n^T__]?-=-yJx x@g i)PZk~¯t~}33hXT3 N5] :vjު ku޿ַ _W[/."XQ BhX(MW{'h}cƜ!? &G3a0iiiMQ7-މ}wդ OC׿jiKk};ly;w\Iӫm/ߥm_oWv_H|?X^;Hu$>֥y7{'˺_ݧ_ԛ}\Zϯ}}/DRp껺t[Rzz]_iU*oomKU1zO'io ᅿ鐐X[Skd&$r$!!od,v?;-m>O|{K]/X%paFqk_d-o]i4m-57: _&?5[bXT_|[" w~UƯ^Wn/~m^{M4d 4*wHujTMSi0Mrzvv[ <5^oDc'Tb}nNІ4""fdbi 4 Іaa4!a0hERY<X~O}}W}kiDDDDFDDDhDE8a (t?ۄ.ӵcV-41lGݧǺRi=:OW l* .vG~qGXMLuM2NM0w T5h0اkiAuY U& 3aPDDEqB-Xڴ+C ? YYe[HYɱ D#艳!w"NF`9Hp"Q L&fI0D-"#mi [M=5C,c J˻fQ喦LL'ԛ.>cM!AU[CKq&;ݪJc܋4{'jNd(fEцWR2O:GMk5<E>oAg䞚xLH3E":D9Vg38ϣS4s!Čx ax)!v]fe G˰i;v>GXL4 Q5@a3 xCFGAxa9N3aL; |:  40"}MЈ  9شg"mi?H0iZjӵBm<&xE¦_5N_v5Qoz)6N( 8 vZnoZݢojMm=z' Q1c^M> DpF=;B.30ŧk.Dppn*pۚ?oNgnmot\;DߢCR;dDǦ=z&;-- <:>BZ CL MSGq'1dkI: (%}7T%ZzVޤQܸ\&ƅ}joODS⛌3 L!`^Rc[EKo] !&dQD_Nɻk #F:CUVn/{&M֐nJ]}{[ꐊ؂C"o_7-w_Mz$?yo^oBqwk_a?_}ž_߶ڞKz'W-}쓾ߵ]__af׮l d;{Mzkmz{4oo[HOl^j]:׿gN?d;=(2?!aXOib*҃=!'ﶓwXwQ[iZ'Q1[qiőznڱ{uoڱM4LWӱ_t دo~տ\WW/v=4]·[Nبb}z{mUbUӽ;/{a ^4Owvz1Waꩯ(5jk}\SiU_ 5P֟[o{wT]M4Ӵ4a hZf& 0B"ÇV2.C 4)0  jM AA¤JT-  &Y~ߪܺ#USx({i.QT аDDY„3P`DDDDDDDZDDE*DGDڵzv\wM?#=;. 4LDD}!k_[VWliM0 Z 6Ec_MI׈6)UOvHD0<݊[BiTS&AB hDE;L'Mzi'WT"аM""""XZ'oM=5~tMjޡڦMD<n C% eIڦk&F>o$nZ&;o yoz' 8ԐcvIoIF "nLwOn׷ܛ'/y߄A PduivM4Mu_iN2nzzN)?웽k'z{,O\\91c[UnLNv&`43F=4_q[]O}گ;];Sv/52^5 MSA i 4~]ˌNLw˅$jztixⷥwᮅ}uI՗)# BXAv N^c'In듍>״⺿_U T. ݂? f,via4VZk{Ro7 ׍} kɎA{VF+`IUXl/$?okMaoIɾy7rDMvN5~?ֿbMD޿*Dzmz>W-IkGwnCz}vگEk;?עc?}-ns w\y!}a].Cb2+ ]i6׾CRt־_#8f՗z=wT-ZK[]ٿ߯}d{/vnvr:8  UF7߯DI%8`.Zmjv} VݧklwpqQi|W^W!Fw$8JcXЯۓCp!Yl}V/؎5WoH^pد}QJ7ԓ{>_Zhkc7 :]2{N]}}:LV;UCw{Po.ժzN2nXM5 ڦtO!kdj45 5ײCiL~o꽷f/󙉪N] M0A.C Yła1 DD3l A 3ADC DX_hNLv_aHrVV iT"KdTAQKk~W^_&p84$>6ݦ;N:mw Vib8M#0L&X!aj0U F>i +cB#T1 4׽1еCچDB h0B"",&"" 4 ?B;2gוk2TRa0Yii2&uRhd;TԳpBZ4w[M?{bD{&Dv ?npkHW,_ĘeOTE腳FgqMA\#j3FHh9\ ?E(KԈ]$#G3З A 2ʬvV'"БtQy3.YfYvFGdB4 L@@lA|_0 B !v&m,30`C<`2EAUO=2vk2VG7 lTʈbbЋM}i4!NڄЈ`~5wD"5qff0L&}Sӧin' a5OTiܱ޵{Zzkw[X# ͙񹃰ah5M;6tXJ2։~M$;7իKiD|MԸ-+-蓐'v%tt/Lj<-_ mqi4T__M'`!"!|/ ~A (cQ޸M$4"}Q_mG{Tꞃwv'qi7 ~ ^ cLb ofE_3 {^ͥ}Iu1zZa]5b5t-/!(}ߑ4uxAkTCzHյq=K_|? vno_dJlquc5^~UxHL&6\ i- Ta_uciXz޼?9پ8.;!iaJ?]oc+;tjz[|Z5w&/^ܑWk_zpUn.C z{[]:ޱ?/^A(}/UbإdOL& Ůеᦪa3i +}dӦ &yv gta4עo w Nf;7ֶd aN(Qxaqа4а4"-0Y쨴ItA" 4"L!4|!?k߿E#XNV- """#jFDDDDDDDDDDDCCPB#l3$m׶iSO{>)M2|p7OB q4rkk_}? a2 `DDCB"-J(wX8Wz\N hDDDDjCj׻OjN%C !g8BC#p߄nA'iDDG] pNCF0 _j? &XDtGږ`%(ve<̃i"!ɱxTʨ:DLh2)a4\LrƩii+NjZ 2MUpFznNY $M>L}o~.\"cpA&2 ]T׹ȄB E@ւiU'" q>v$fl -{dNd M8fĶL #a5^\mmnc$2!G3dhfy]&fZ+jL&M4״ӴOO;Tat4=7]WBAFBpna_ӿ"c1HZM5M6 ɏ]UH!GvF2,dD0C[§v݅#Ðot 85M"o >-|"oDMK}M¤Iy'Ic7yغ:lxi#0 !aiMo'(u_$]oi>?_8^k݂رIoǵ݅xO+juI2B%8fl N&zOAvAOro[$-WUڪzzWZXuVջ7ltF8(Pg/C0f 85nMS?OD|)Mz$WN']W_~{-{;wL'_i5uc5+i::wzn>]4KOׯaqz{k}-[#pULAA`a4i5[Atal&u[MPzaBhYxi &.!j jrI;bOdP2R9@`+sB  a0\ZaBhD3 "'0D`DD3}]/9]voZ}m-Xji 0 hF"8L5v|n!A0""""":i-x}}iݦ7ڱkN0BΠJQ~/kia{B"""#NUT8iaf Ј5 D0F""(drWd) r>YMWZ2d B:G5OrQr,L&xwQM"AM=?L$/rS̲? CՄGp 4꾉szc924&AL'r(=M'IA -d󸆃4ӿN_bt0A eۆ a4-0&;BL}|+D/gM:M0h};$&1|F ̏3h0M=; ޽BJ Fx各tEVd)|c aaA;KTHzO>7qޭlWA+9̨DTChtp 4$ف :0'&Bu蛸,^L2>^8GG@`0E ; j[D\'nn)7H!i;A"o7T:ZcM׿Uç_GWt#]r&Hw&7Ok״!\GNt@m!s)MěqM7$?/C1~?d2 2,sDs61LB-2Qv5ACKt_cz|1ǵ x(sjօm.[K׺n_p{[f{w"#_ mknIlIq_l8ܛVֿvȃm+t?Uo\7k{[[҉dvǮWM} m[ړI?lkëNڏUd(0_oxu~ӿm+M;(ؤ=)]Zš &a?dBwmb>X2kB;3¯2Ȧ?+{| TMV ]]n4S M0Nս院=!F\/47 Oity֟[LACA;*5IQݭt?Ⱥ7+Yr4PAi]>rc֞N%FULudp)՞^gw}yc-'o\z-hnMp I zk,uto\wuߨUZuU^~UW.+RSz~?(pZj߶Jc?_[k_.ﰿ}ߪ;&m/A{(Ɵe/Vk  SZo"OKy̶OQ||~^\m>WM:e;a;wAR> uiLt" ;Làa A"O#)e B"NS -"N"~ ! e5ҙ w$HԤ-P4M\/%^5` gM-Ir57Id;5s93A!iUMZAb@dx„kM4AqLe F$ sAi^-_Bzм'i !uMOy7tNkyf-D0>}c馉cԌz\t0A"s4aBh0A&kK}rǺON5ӥ / H 4`C[atF=>N(1;Ɏ*k.dPgg< B-ńih[m>u7[P 3a4k' wrqz?v=WZ{ RC !i5O7q{6^߭GoO}LvnݬpIrN8]t}Mz_^鳟rn;sFv1_ȣ-_wr!~ oޖV kb߻WK&=w"w&կ~W_v];xn8g>߆atv/&[&L}=w]&!iEn*qTk~ԛ1Quaj=6?j }qwuӐD;)魠a4"N /[tI{ST/Yغ]wkVF8} Dwq]oƃqJuvd[&d8&AFt]~q{LSUqL‚i@B""Vi1|\_M2xDD0D|DBubUL bi8DB";^*ޚ…[ Ʉ'DEdIA DB"#6o ?eaH \3; |QPg" &H)#3Ds@?:C( xg8rm$PfL&L z#MSS-STEg4 B fLSlQg3xNM> 4&p"jtл{M=m44!oOS_\34hv0M; ՠ4J_c0=}.v!Oq-M"qPǪk|& v﫿}h[DroɿvoݓA߿E޷yj-|Csˍ%h.N?ԛ~)t}7#SWIQJ&Wbri?߾wN}7MCY-{u[+?iߒ$(/p]!K_#Sl-k.}:!7%ܳTjNo8w&^_zo]_YaWzU_tLuM,Mֿ_eKA57;izBXw }5E?<^K__7ٿ__[[[q0zVGvWBq8z_}}I7Ou|q}z ?/wp>>q^\lmْWcKsڐz=L&z~z8iCTVķvƷv Jyh$a;6 MPzƷJ}*+vUl%_\/n)zikݪ_ 1A\Q= 36paaaD4{ ) -L.h; ",BAAd( )viA%g8e5r#iL!aM[~AxvE3A2zEA".""- DDDDDDv^nhDG4EMH4ME}z~'MF҈!LdsA9 0<4DբrǰI߽>^TPlgdK#%3h0ihIN9owOOO!~4\R~ՒSᕰH y0=W# *@:i20 kZ'L4 $J,C/h4"#dMXLdP!mH"3~)a Gg^!?# 0 glfK h4!ab"B"""4Њ) O%hpg0G@ >* T NݛxAP4PPf[ӺUA\wixMiTDǦnаw&8iK˅--v^q[թntt]ӴX;A=7 jOlIwdN+VwMIC1ĸTKvvMǢc]$h'u;C|wwk?XQ'iڥzqjU_C}#0 ԜGz޿ߐzwںzkQM{_pGxkMN_DAk1u_ }^[׷$zEu(w[l⯢߿k&[oml_[drW"Ӱ{a7]v}K~bk_J=WV8r O/1v^/!oX5onl5Ib݊~vY7bQ׽^ o5Sޚޙ2@L,}=N4jدkh0AZihA\4!h0 DXBMpD2^2nq@gPi, aeh(p3ޥ7&b""0DDDDDDDDDX#L!1 H 8@hD&(Vԡ–a~"&~J;TYRB45n(G`YlD!dA&2SWh*"q9Aleq!LS֡4않jjky765V(3 )&A-u-RwXy[D<2W3 Г `A 0N%:%oO%z} 7_!G&䜓w[M&!h5αRŸ(g}2;sDNFyz,êM[E$䣻#{'Ž'ծǮ6aHk1.D9~"!hmHA@m3 L( 3Іgir7Sd* ތfc: Aq-aL'uY1ɏYLzc?o̕󨧆fgB5 =.;: ami’%60xOl&i)F fz=nt.21;O{CͳR4,a<}ok&;{ON=5wN̑!d3,LfqsNp oN[GB mBmX\?oqijvpOM}}91iƺ7ܷ%OD%oA3a M3iԘ8D-TkZ8+vט}?R+7W&;kD=.^oy7w'NܐNև]H:$kh4zick'n'8]mu=mԋWCmNծI/WNܝ~;$;|c7_l~&;-bӋc_B&?[Dӿ5/97ᮬ^NӊTZI[u~?iw.\^߿t\[_}wctLv^vSG};c* +$SZ_ݫ]^Wo7n~WQ{wv;c)?b"޶nCl}ﶢLqLt 'fqLV=ߴGvboklqO} _ҧmTէ~^6[׿b5Wj# A" o%aar%&k|qMwOLRUj+Nci¦kI ;/QwOiˊ'a02^=lXh1Q]SXiCa{[M;4i|M4ב`D0D%$rZ"n l'g/m|È톯 Ie`4'TЈ 1]~aP0D;M`7 !i !“\0Di!^H $u!j{M4LN"""#ioi !--`![M+KciM0a4iЈdžQGݯT8N:0Ј-@B"#X`e2H%PB?SXiHxh0vEDn"it"B &DDA6 iСDGfW0x |aU RI i;JX3۽㵧MBx$&_;O$d"N̑ILExRIQ3*DUggs!,afc7L>0;LL0Aly=#v Slo" I@0AG3 h4,  O A&C3@AiP ,lІ< ia44TB"iwiZܱ&; J/ c-OT>Lvcc蛩1NrCHqɏ}mw0>oX[YcF蛩!߲C1ߎ>ܜ5~}Bz 䝥G'I;[I]7mm$L{wW[z|.޶}ҿ_8z_rN ]U=~i%N|m[xC_KTV q_Uo}믯mw?-BN So_ꒅ_*mD_c&„_v¶"oaUpQ,RIQoo8Iwݿ<Qfm{>[GWm,\B(vjHu_vawGOK_j&>BK"M1{e9DE#T|TuuimiWwuMQT} ⩈^m{Uȃi fߥ_)(xv+MS5 ݫ݈]EBh0k8A 5W"\CAg0NqOi}]!fKqNAa7[_] ~ 0i { io䜔{_~\K݄O4L|M{Mq ӻ_ Iu_tMucTMZ&?\ȣ_Rei2C7'Nc\P7 _Mn?:oK޼]*_u ]]GUj|Y;4hQߑċo10FX}Z_7痪ݛbm.#5l*LZ!ɝXT] k$M}~}aMz] h^•㱸靜eӵU~o/_}k^k{G{M_ 7A0L!D /kM^}_k{^^I~^L&""!@W~ӱ;v;ɽD0ٿ᮷]׮t9!\B"" *v ?Vo:zac_N-n?Pаi""",&R 𤳿/:R0iUu1!z8O]ɢ.Ȕ<$4̈H㔉2O8]=!$qLtXM3ipa:"w$;'~a'}mtN[v,޸x]rW{Tx+N4f !""=wN]^pM߽kJ}]A=x^LXkCth}m_]oimP޿hax ɧ~zw[~TV╬/{rj=߿u_^߮&?o~?{^w70_E޵]];ݰ4_֝]z-uq=wuQ{[ÿ_Omj_ú׿?ҳ -ּa3_jE=0X߯ߋd#V-SQwM;MtO]+U~Wj):ڿxam0 1 kxA " h0LD4;BiF^Z}:;[^! ;B"f""hAD!Pa MI,D[Di!hqFO\AzI5B@ʔЈD 6 Ď[4Yh5;H[ii;CpX*iȀɧ@ee\b5Xc]aYNN\Ѭǧq"36LeC2 K\f.ⷙA'a5AM<jT~|e٨! i i"ܕƈv 34Gd:M4.̗@ 4D慪aSMI 2`x*i#4˜aUtb τh0L S8$MީM} LPa;I潄нeMe*r.g4; H[OC'JXJ*ד-7'In(Mb]_XTH+Nٵ ,\4vtٍU};A(i:^;׵v#IWmE5$[l]F]驻+J?_^z_KӴӴm.*a?j:د}uhKk6{Ic_ +OM0 0a_5&ha5M0&P0i!_[{_4-4P `l0A!oogHuj*}wڨ! """1m4ڎNTiidauEEz]o!a;J""9>#7}ukV$7^i-K&:dA*7~64;Wc* p0vDDDHc{]1M4VGDDE.[Z RFMDA &B @B4#`V'M! :XT0MN;ё1~'gΙF-lFz]v   „lB2fS 9wdh308&a5 DYiC?ud4&4OШ vH#vT6 #hC]Z]󓹒q i!siN;ǵa7r7u#SW"q:*4#!0OzWhZm!&ߦ:%p@ 3A N{^OmvЫ:wjyvZ *h5MujH|Ϧm I[G9~N4Г?X J%\܆)df/b0 /"TMķKݯ WÅcL|VvB($"*0@8d dDQmZ  Z~Ա0'qǼjOXz{v&=erdW59 E83050Ai h;ⵋ[Vt51G_ ~߮߯v;a A§XA-nEmDûN7#vo17wpBM;FT.蛵M;D{z&&pdT4M/dn归LkW}nA8a}W]D߷ߺ ը{_np⓬Kt&ICIޓz bUѰ½4-I'?Z/}û׷ ]=$E|^QTح+ |Va+awX?z_h*[qw<(6@z^kiq]kzç_7O-~޿wE:jMR6ZZҵ %_V߂>qp%kt{OeM0Na0\&m>ث=znX DW'zt6Cڽ]Ml& 0B"""474X]v/M/}Wzkww atm}K]oD~a?Hדwqf8 !ioO|J;IVq~]/;9jHQı-0B!DDFFViDqŘ.}KTpkim5LH 'vDaWփHqxj]d߿ȃw|l%kqJ97]4",M2 \Ov )j/cb4tׯ'>t+߬W~V~'nFo!U "#nZ_Ӿ?]b]>[MMWFn24e"1TX{oU-M[uV֕ZYAV(u# zWN ޭR;WIT&պ6µ2G~5ߵtՊbXLSEE ' h*z`%L* i&i0Ba,ka4"4 /@Ch!kQ#XQB|'@3q% &aSNZdYSx[}]%b''gr$6ӂg P5~iqiV7Q?;m,Zztr4Pb cBD\;DQĊpI@28% êdQNG#@舀OA:j$"~" 4`/S0MvM_>vӾ.C`Ӵdj2 fc.Z 3054odA*hZioF+nI^ML*ڧ7%tW]kiiG&zMS] *I7?Ǫ\>H|{ab>:MJB](ZAHjVb# ==H$zz4k_>CMqP> vF:}IaQ6*A"AXq 42ic06ֿl4“h׏} \pKjG%]G(G?u~^ ]w$?a ; ouhIfIzo?_NBiw7W#1WM.w☨Hq`{/:kkOOPIȎXبiުpJDwM{Mj{v+4aAF[M4M=0AlMl*p !i !dTOE·l,PZ X †c@ endstream endobj 1 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 194 0 R /Resources << /Font << /F0 199 0 R /F1 201 0 R /F2 199 0 R /F3 171 0 R /F4 211 0 R /F5 200 0 R >> /XObject << /Im1 20 0 R >> /ProcSet 21 0 R >> /Contents 2 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 177 0 R >> endobj 2 0 obj [ 4 0 R 6 0 R 8 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R ] endobj 3 0 obj 4128 endobj 4 0 obj << /Length 3 0 R /Filter /FlateDecode >> stream x\rF6/$7dˉv(es7z(Zyȷ`PRn8YpY|> g^/6?So/Vg"k?M_6׳|sͣx9 &{ٙ9Vt4s4Ѣ,^6>c͜W5a<|9]$b9%&Uxx,9z|۴t ]ADY+v:- 48ȄPVnR5KO:qHexZ߻G㠫Ǽ9 1Jx) Crp+BȤ}^cS/atSLuZ<<#çj 7:5~F/oz=lj1}ڲ'F+<@ԘJ6oN'_G9=9LxQMZ4yVk̃8]x 2K]E#b۪|&/* z=n^ւ ;Y'C_sYn$r/Euȗ }vQj4/ HEhg;p}2)oѧ*kGlʥ8yE裌rU0F g\l|؋H92ijdzU2ބsڵޮxфl)d6PBB\0KWˋ~gW+PEL AyيQ"WP I/ T7y,|gJ sdCxP5tO2 D(gSv&u**1?uR'`62T\laqfiQf*:HSo-줦"(uX|Ƥ"tȑ6X+GGVCFˋF< ECIW8 [* 6+xuV4ʴ`FjSPУDD$ch-;IvSzئIYV+CM1qԍ\hj #R0jdVMiŖDX T9#js` Ĉ- l%gהצ"6aSΠ͓*ة9~2G^ Զ۪|Ηu}h.eyx>9{?uY^۶F&0Im* `9tkgdPofft IT=}Xu7Cm[ʴPkK =co,]z7'3=NBEYԙXuSah!ǁ=E0`kVx'9͵,BPݽ1`bsjց@ͻd#jXRz^FϷAWȏmQvuz0srzA.tm:l W.%K~0yUF,asOS8 /LOs;3q/a1$q$7#*}p'pss{{b<$nE>uGz^:b:g ن@ !|]'ILpW-peA~J40cMbĎ:U3wRar(;Y$;?1T&4I (뜮@Vo_pHK\ -L| ۈp["C+3 729k~\:b"]TK(QRA kPn4* +ؖmOZzF:`ni48!v+dFb*"u]eۢ&+9%}':L`9FZOnN%k47]XƉJF=8PGF!:]!^,\$[7k!yZ q'7[iS~AZrjFaWᦷRp{YAC׎ B,ԙ.XXTU.:r#tooi&LͽP8JrKSr[`>фl-j<'l;) 5Q 8 YJ8xGt.r`[oҼ[ibOeg#XW LMMijD*E3A.ːCۿ9A D!D[EzlQw6J[^ 2,v`un]Iu g(euĽT j)-DaMDCq]2hQ;$W- C3%/~a\uRt9OWGMefv-{muÝt(&Ү섑K;~1D.c΄CMthu/>mBLXnAaLvw'Qtu֑ 'QιwҶf/zjqsKuGCM~c94 /b_1G\L }lT;= ճ(JnGq hA땻4y<~YU?sj"1%dKR hP3̘Ԁ !U8Ռ$Q{nI}e d?rۿu;%cL&kLgPxNa;xTËhxR̯8c%2IRV*u` gmҨ(tM"߁ bhaA:'#.iſ~'!@Ck@&Ϊ9yV֊܄EY%Pߍa`smHƬW4E$$ ):TxDNߓG?62"`h ۟"k} ߯SΥкǛ/ 7G\t߀Lÿ㭙$F>qvgM\koG (߬YZ/y:(4;rpm N閛?ʁ [S'e1ykhb wv6pVyR2S!3,j}[M*Q'zw[,pț7YBA3HB5ma endstream endobj 5 0 obj 2253 endobj 6 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream xZm8VpC>Um7S{N !N%i3NVu3<3}8LͶ14ߚ鶧;_qoj>p3ja<18!?%_}hV6 iu^5*j,;/2m2 uv{mZ%- tu_Q~]'q6>\oO!w!9[w2y623ݓ }TVqE=o` J fzo fp;b{CDZxbˬ?=ϭ=Vuk֛N^ Iˊrdln{ؑ]o[߆7VG(Y>pYU^IW皾L s2o0*ìc&G4LNd$.sRu "ƭs\B`xtТKTي./RBB!LdCnUdm{C7zSP.4 "q 7L:$[W@CRGCC} cva^Ӟ(} `^VNPN}(Uj&G#elvNJIzcJE.5(?I{ԶeITS*-K!u/婈h~1I]i3m56ڣ < y,Y|KJ:08&bgCT&߻oz9n(<p(Sd8KpȡYW4LS* 5;c XgCI6[`=y&2", =D b=c"?^%fn&ۇg"PPtDWiUh(w :iN`$ Fbg4,>6 :b˛mV]8a%U7}aAtDO YV@2'aVEYɶ/FE ,WUԘsQ/: j`3ѷ, fP;|̏Q)8q-_-7pvli_{fSp,www]+jS0>/*˶,MB"xӽt!<] s 5e,ܢY0ABgշ;YؘXnKZ AѨicb$벫}u>(32doܦǹrok}x EwCRSq__xf:@H\5h[E۴"|!dd;9C=fh[OTHc녇2|9K *q~gUu n>W 6Qܿ/\;d}5k~1 HRBPi{y/x"e1#$H;dB@`ZJR3!̟x7)O{H'R)m**T\!41u?F@㯄"a+D$/Dԃj_!$f*>JvTăT=$;W9 ɿPDL+C`csa߂ݯ̆".75r[SqŽqu@q('>qó3g~ApoC"MsSH mErX] e 2Ł+喤89·ؒ#ǔ&'x`2Ĉ0-'n%?>늘mcPyPN9EI#%TO^äpn6$ ([z u6i55Z38sIqU<-[y.+wLMIhS_A ΄a1uՐG4E28{UPZ{<)H+?Sk|^$\ei￁H]1FYmWt\|N/ȁ}T4Nv_ue&hN-f_4 endstream endobj 7 0 obj 19 endobj 8 0 obj << /Length 7 0 R /Filter /FlateDecode >> stream xs 5V)u p endstream endobj 9 0 obj 278 endobj 10 0 obj << /Length 9 0 R /Filter /FlateDecode >> stream x}MN0O;2,2%{KP IP‚[p_4SW /,{|e,Jd* _|e'XZWp~grґ!tdGMGVrq*4*xZMlPq =o'IъYѫNMS=P AhlJz\Q@=hDg7KU*5T&YEv]RxIphYpt l6\Hg0L endstream endobj 11 0 obj 1515 endobj 12 0 obj << /Length 11 0 R /Filter /FlateDecode >> stream xXKr6=&N՘C?ىdRvY"$ȁBRȋ9LNI4I7ׯ_:^V\ȷg0Њ3WWo+#jŻcIuVSɭˊRۥYxig.~,cr4!iȊr+Xڝp׶i'(pݫ轵; MIcx*i?ڮC6WF<ߎ43"=-Ѳʄ}kt4aC9D`9˷Zυt*  M2vеRp̐Oc2Cݐ<:]{ɣ^ *薩#>z@3|h04"Âe+d\ei%GzdKPCgƔ耟F6vr7'xhw"BdIIB0ݩR)5/<훟A1Bn ns^*:`HM)veq֊ AȕKS^s6^&FVj@302x@Ojm }i6bWy󪿁d=,0kJeUDZZ8gy|H|Lլw1 Mbsk&RE"Y-͹Ldo BAKg1atUr6;efµ9'--@V}+ 5i=+d{KEˈ\C@ xrF)눸 5ffsoM.fyP_^X)S8uЩkYw[Tl;؃qaR#Z \D0 cDL Q#eLl+5k؃?@o;Yya4tWkMHL_ȩնMk>aJғ T7ALUim<3G崸+gör\NhnxwOm&+.w-6erJY&*^Zv5 Z&z4/N<īQ endstream endobj 13 0 obj 168 endobj 14 0 obj << /Length 13 0 R /Filter /FlateDecode >> stream xe @Ee^3olf\*P}A6I}}圳0(5hT4z&h%R5w^awA'((7x(W9#nw"xہz1Ipfa2œ./.E˭|v<Ď"m |DO endstream endobj 15 0 obj 36 endobj 16 0 obj << /Length 15 0 R /Filter /FlateDecode >> stream x+T534R0BsK0gd˫k lH endstream endobj 17 0 obj 11 endobj 18 0 obj << /Length 17 0 R /Filter /FlateDecode >> stream x TC endstream endobj 19 0 obj 73372 endobj 20 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 19 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream L EK;d g$"$#Rqݝ0r4ŭTg`4#V}TFB!S $T'TY$d'Df|@Lg"*%쌈́OaOtߤ3C UA&xgRLV^=5:!MHG0".#թ c%E3OуI=kicӇ&=uo&;]fwgit!q~r 8a21՘< o3b8pSd{:#hD Slf&p3Ċdɏ+dtNO-߭o=$q*iݭ֒N &uUAh3"02쐊D [ӧ}m8z={ocV_N$oiI7{ꝓlպ]Z\q^&>^1މ~9&L |E@Fn3G̈+:3L ҷW]е>\7zլ[ڷpDt7ۦn2'Bz$;Ӵiꅧ 8L:#Qs=Ge 3<޾_WBx]|' ZI WHh' `=  9E  |” AR6L6/~s֯+zZ~Ү~kez7tܓߐ^_D.z&wKZm!h4І * Dg0Wn i5}|6}Qav޿|} ztISN}G«׿h1O ii&? {u"cOPm~=Uj#]_|{?'IoRNջ^qwm/Aa}L7ۯop6;k5}wN+:K$8w|~!ttrc{kw)8B(B""d!eh3XL'hiaUSMm~ֱiqqvQ} ?!DDDDC, 2oh0 ׬ؠLI*{UA!$eT 0|gAiDv RpM4Ӭo$"8C ACɺh0OBz{z;Z`DDDDDD8Qa5IPz]U¨j?mUSu)@;ek%bTS@*\Ƞ!,zS;(4$*g2[2Ngc~EJO]my7#u2"jhimHȼkζFi-ӈ9o# 03 x0c:Jmuɝs{D\%9Z>;00BiAвܤhf fT"K&fza3'fqQo 4*ziHD>kmDj8gh3Ѿ,d$ (ʼ370A f菚)KD#ˇO4thweQ7&;5uYi1&a:.ϊaMfg3AdriMxAf38Ur='[XKww;(rދw&9ZڭU5B-tx* g˙$NgHi _j>O?k]u}^[T\t("oDչ'|h/X&1D&MiUM:'ੜ&3͌Dr42#8"4M5i_/ӯW11N˶O$Ty'}dlZn+qNקAjj3Ÿ3|D fcO1 :s.nH/5¿z'kӥo8i܌z[$>Ւr7H:khS 5&a?NN͵!]Ǐ7?_}~_\/}:]>Ton1:;ɏ޲ݦ≽?P]p~-Mu׷?ҍ_ +B]>o I8ӾR8žߥ.2[u֚&;n }~s[۾޿}\5[zWk_}nƭiƮOMj_L{oۯ{o_Iunvס/_vXw]Bz^z=[}Wu+׽W1zobakZoqm7~ȁ޿4;C?RK_KoG9~ Wl]G65uݏz_[ղ?85׷#{_CK]uމz} E?o]ޚ|5OÖ _ݘKݵM?J?0W>~;a_uްMwa5Maݪk{k!`z+ m==mt__ (wm]POV7߷""&Zjaq ŦMAyhQx1 4N{~hDDDDFEt"!EpL&P `4,/ LB 4ﻵmmlTSڭHXtOqDD0Dt"""""Z )N &¦b[cɎՏtkk#LA!Paf!ɸMa0MnAT1Wdp~*>*)*ɬ! !P4"0p10dN_}0 H3S-.ԓ- : k *J2MA.`xw2Z~D;fJgbTm0M=3Y4۴[\}DߺE-vq!gva?>iX@qϑb7jfX΄GIh9˨&N^?rPJ?#$;N o1&;7Cw}vP &|*+}0MU0BXAˆ:.Ѹ@X\i^ZotMpi{^J.Hr(VtM.rC4߯&c7ztz`C"p +#vCӼWJ_U\Wj-"n7M7&;Iiv3ô3tXA F9N(έQr=OZZ}XWҽߦuJ4>ܐK_ӴFi5~O m)Hqw,zk4X;M4;6gLgHxC g8AˑEA-~<%֘w8_+cuII?!j[䜍rz~JM=T&G; hE-l!|a[o/ Huᴄk!>nz:n&>J/$Lw}tL~qv?7O%1_ֿ ?`tN!N^FN5uUˆCwDȣI7}}m'1ik䬧XcWk};'Ku%'#{$ҵ^uKo~o__>$!zÍ]]ukU~kp~'ooz_!#mc4u +_V>/Z܅wiioݯUi__?7t29_[uǻX]զ/׵ujׯ`?/oZ<ch?_MWiv)؄zW^+I;o"rHGO}ǻmjM f`މǯq~D0Z 8a L Ӱ Mup3馶ciw)M4?b+V;kM{\k8ac' y!׷QZ &hEji݄Nwjb/ROm&v=U~v ~zB"",DCL"jM5h>{*aa< kjj*V=X|q'2;յ_$""0B̨ &(P(La0h05M?U_op~CU""""1S"ʠ&X&L14 ծObӺ8DC JB4;(kib[ar \+ F"""",0D}؆]CA HuUOP _J~S!\Fu+9 FjRo4Aɽ1%}02Ff4DQMZSqNM'a}4gbTWOFZz߮+Y gu2n^l}V;S9e Yx$Ϲ6nfR*…$ݧ-3T&4!Κ!h0@ #Tmtֺz޾{z&i =:}a0Sgh"xF[c}kk1WxMcUP'|C>)q#vK"# ] CJ~cW~ֲPuy7߇kzcD&;a};Na4B D঄ g$d%)bˡKkޛՊ xk?'&o可V}=S4`3C4 )<$Dڿ1~0'մN1i6W&>7ja?M4ęNG\KaȁDNz7_b]o'y0kI~1'xOMa.f4L&r# h8]Dҏ{'ar1]_'麾ܔyqdݤRN[iS4-4ww_}kxB ޴_;='^IpqDo&?O-om>Ъ`V]w~kzߧn~8o?K~m'CX/~պ_wzy'^jwl7u8_ov5.bzҳ ׮{2=mݢoDK׮Վ뷵b!-V+uߛ&??a_WmwLSLUqJ* 4z뭭Oc,CN MSM[W[zm[^~Bͯ[o]TDDD4"- Z$RgvwA F:h5N[X{r__\Jqj"!! MBh4¯iiTS_3~V\Q \a!("`CBoojWPՎk}\;297dr IiVDAk „;[ إ k޺m5ֱeNCa Mv_$k늭n=dN?6DDDC(U4-;4M5]1I~MQCB""PB",L&M00AӰB'a(""1(0%FiKl@"ILr̅0ɢAɰTkXa3MT/ڦU3!3\UY؞&:ud"; ZQb}WTN?SUzt>=1&i’DdvPjs#2)ȣϚvo(:ja4,vjs(h33O9DHIzTt\=]!_Z-][&A¬sCu1"nzNʸ!z4k4L@Aޙ30Aaٝ^h?$~I QKݣ^-[]!HUi ݭڭ+NTPM0'q ; Z"+_t֔W^K?|[z[\};h$=MIӅޚNM3rk<"34) MknonZju5'la7ӾqǢoYq]>hZiBdgq&W?ƽqE=kZKZj<^OI:'&[_ SRv 3Ba 6jf α>I/ w}?o_k7t\mw&>S $=m mSx([Bi@Ӌ8D?&;{a~n֪aQ[\4uCEƸNEMޞzzn6:^X?^o{~hn➮u];Ov&:D֗q}l+~ovp˶\f.Kt:jےw"#7m~跶U(~׾_wc72%.}}^vK4+]+k*dJO`_auY _0-ۼ/O#txN;TM{N~[uyZ_Tw?UT?;uIaT!`(4MIBi_!?tG"Rgo߱-x,?g;!յ,w7o~q&L!h0GF!,!akiM^{4ӹnBiwޖEuB)Ia0M D @Ab<*k]5aoiE?zVo>&q0`EMе hA5 h5v%={ڱr} Mp#DCB"" $L&ij?[߫z߫OD(qEZ.5T Ҋa+ [KӎUTDqЊ-0*TKػDHA a O(N =4U}鈵A$"""#&8B",DD[$8&L)!&¬DG0XL!DˆDUc QmMKl>VLgX)]-;;,js;%fPgunuiL%^ԛ0%/SvUoZ~V7;+'t8_Td; D s4=FFG,!Ra'y HmS;S7Z8fX&fMѰ rD4" /Or==;_jwPDEK~G&@1Y&sAhUMFygj>M#Y %YJTi?֮T?VOjӣxH4&IѶ34g(#䁞Bb3m4eD(e8iinLb_Ob=鑎p'sEzW]mL؉੄itװL&p) ĥfFb&_Y1}eZ3˰\NJz;&;ۧW|>+UrwꮝLwɏN: a4!f ! gȔtI+X]k]l(k:w^ޓ<|h=5U T9ӌ1g9{4o>Lt?x5b?z-^ߺHz,wZ&;OAM ": 2[kl/}`NӤ;'1t~jMBCUL&Hu_ۦ{__}&N)5ӵ'[M݄Tsi]n_=tkI6ӽ^}ɾF\ 7{; 1vڷw]nZz&U__jTNu[wMگuֿkK[z~JڽRkJ`Ud@amqvDz"u &~zZ[=Tc!Tӄ=t>Hݧݲ&[]_KA[Vڈ B(vCBiɺi(it i2oE5cWߺņDE' 'XB"˸D 4;uNVײx^Ŷ;d$x;k] j"""B8h3B!hDXL&.HRqjwۺ_!nIcB""""",40BC,\<&Xvޯ,W=b9;ҫ>N,BE*!C04 0ﷇ~j@ZkqDDD2I4$iXZ?I^ ⽈ \a_OňDq 0kip) DDX!]骄za4MtDDF’ a0ICB"$F#UXTMkQ D0mA]W3Ge݆jWRZ2Fe#*nM{tdU8kJ S5-YȁwQoiip3=膈dM!3zOMz {8)fR5sʸjgN@Hl[}~hý5]4B+[<"jS1WM4yIl8 ;.^^ow]?Hav.o!駘E[N ˻h3ΐ)9f;#YRИe hӐ]J7Ij\4jMnznkZwɎvz c#zLiq辝h3hEj悓() C>ƛ/+k^/m/tƹwdu'C{anj&Z޷&a#8A;쏐~߈W]v}]Wm?tӷhc]wzxL Cf#Aa5Ǚէ?*o^\1V}]v?KWK}^>4<MVkM=4fݦpgp<`(Վ[kuم^k׿ tt{iztN-oqկ0iMp/Wߏf߿Ы_jjzy8kע'onM_A߿Ǻ+{ t{WHvW*K$=xmknqz߯o]{>??}SqMܛO88otuM|L{|~k@J#]WՋc1.}l/+׺i__uLqƫƼ>SΟi׽WXoK}zAU Wz^jFCkI]uߙ߭&ߖs3סa0itݪ ? 鄶%TkƫK^V a^M/7"4a4hAqH'iF:apv*WW~Ff5K!2BX/L}""""AX\@XBf-x 8Mdӻ[Zomv]z݈HNT\DCNAa0D2EkM=4[Z)tx28Hz2wg?ѹ|E !Ј &M4˅vqƽGhpvn:|DDDb"-Ekd_N}5J1PqWXACLM2:' ikkGk`C5"[M0kij"" "B 4r4 iMZڰQh3ν5 FyɤdMW_MA4ˬّdwh'ao^g`\H;Zzc&]S"賩o^I4"#+-$FS晧>3’ /V (M4Nq ;0A|?(L0hxӳD~CDIfZo\]WU &&\[7a5932$:fNgJDjcT9nTo?  2Dsd:e u G٢7"#GDtCʞHTNQckK{m>M[Z[DiڧjCPN9ZLvC4u." 臟A9,"Uu8tut}-+Wfݢ⋇޶Ж4=S";D|'wfMcLueB}Sa=k ]7Wּ~]%OKtܜ=m'y8ՊNޥ^'A\m{]4H~2#˚ 5gᚇ!g\yž2 ::^8vwHiE*w_?]~~߮wnv\:zv7sCkpu =B:iwAզ D'AVgHh3,Y9t<8,&xC-?/^_/~Q_&;MzK]?5M4 "vza4ʝySS߯Gu _]-U^C48[7kDrn\i6m5a:4$LwP4[7hnu8|/sE{__ۆzzM;($nK ~mj>$[[mWZz}^kmVKǧ}wWKd֭rO[{Ct4."7_t;vڿ׆_H~i}~߶MֽcwI/_]__wֿW޿iHkُjzMֺ~/P6Z?;.uGqMVkWoUYĻݭ׶_n?x޼2zzikۮH{u^&׳j/kzrOf)8 pT/TttuOwqqc ^uQB", д"Іx5@ 8M XwKyۯ"""""4#a0aaS-[4}k|q׿ᗘeDG@z^ke4!q f@M[~qj#!-~َB*` k}.)ݏwKߎmkuǧvv׆OM2poa2CL-wzIMum;V] ׯdrzb"ЈDXApDZhDb Bah4a0jS駑iH{C4(a;Aa" !h0B!Јa2m?)LaKl* :`i%̅3G#ڪig\fgL/h4jv [e 9>tojJDal~.L'wL4 KYN&XR2P3PTxT8dQG23 M=_.OjEWkZu i0O)Mg8y Ş` vhvr>y<׹6_?"DHR|~jI߄C 'g#نP#Z~Ð5o׏ ]}IӫOUrU'ջ:W^܌-ݷwI L v_|&:oMZ}:>_'d%m5E۫c-,w!d 4"EL0_Ȟ+^گ+^8Lmznݪh0Pjiw;L!ǴʳG*r#d &ag7! 3X_WWu+OWkS үvo 3fќQE0Vg3DGGf.LfYw̲}kz}l&޼ݴAٷhD^7پӻ _O{[a~_릺/'ɏDRq K|եoJM}n4t;B&ŪoMo[hO-[\vvC?-[mzWkB7]tYwzN0^?NGuR [^/uJo[{Ǧ꿯~CXvB]o[__I~a` /| Q__~Hw1{ߧizy~[-W_K5=/_jG_ ӴL*_w޸﴾|^}vُ5k _?=mz8]Fmń.!e!\Ziޚam4?;N{j^>acb k_ݴL~oMeDXB!bM4,&Ni 8iMo[[[FK\jizNZ t#DDDDDD0DFM:ЈhF A4-;M;m?.ᗿ0AVNoqVɦe(AiFƻkd'륷z˿ """"""#}Owڿ^6J=-V߫p+B׏__{dQa4LZ}wF=ǯ=H{pi`B *i`¦ i&P2CڠvB b""""! !A!h0eQDDDDoWq-4W,23<"JYl(PL 鮚gueq(;\dǪ|^e] sjKQO_;6`;lD2,ѹ>4S'3B'y71k$e9Yf_TSR;8ewH$Fi#iV;وq Pe̲O iE%%;,*i-! ߭ Ag3`l Al~{# A 5#3M3OZ鬓RP^\%=z&;Qj߯Ti r62Sυ6όx +N;ISW]>Om^&ﯗ=eҹ1Wn;I5h=?O)KDӫ:o}y8/o z.-4meD߬pE342ZeWMz}K-/pLo`z}]"c!  dhJE̼=; q E\ɓ z_0:>/m}~}ҧ{zM?Æ=pB( 1#9ϳ<0#JHFb&Kr muuŽ;?u]m_O=*]pzkM0ʊаO 43gSiØ$ʸ Oߺ18ov? {.7}&Mܷh/ދ~ݧK~kIڭ) o]nۥ^_Ɠl'o}:V7$M;EO]?uޭҼɏEL׷~X_E^D/zzW{u_!m'_wrYWۄwO=r/JHڍԝA?z_UznK7Ԝp%I;AȔl}HV_/ƫ?I鋎8[Mn8Iw"oN&o]/צּ]k^?{_Obm; va2Cn߷WolzGb^dvm}kc [~Q/L0 ZńRN%a4˅OM5TսtM'ӽQWҷcaƃ}K{^W """#DDD4"""ԾB0 _][$iH;w{/v oD8M݄2c& ik [1-vٵZ{Z{g)R+VI'a5b xBņ]w!`b~/KeK pJ X~/Kv4 Ӿ]1թ0,zk5Jkjtkq 5ְ *iTM_?C*iv>6Jh0MBE`a0PM &8LӿON]2oa|/a4=DDZHD3! !hHiqva4H X`XMp}zaq-qvӣy^; [aB`3dvvE;4&5AJ|H,'d 3o8_]5P$ =9OLԍ9&uF"u LzKk֚zcT 4NUE?k~TՠRn7}'۪3MJE}25kgda/J\n^mn3D|xeZT~4:xߨ^]i?kmh8! i!BP3qj#R}^5[AձItKwz'h_]WiVWKWޟ~64&3_{aZ~a XK*u^U꯯Q幇[omEPq?~___Kڷy8h[Lz\1nwئ;ۇa.u6W׾kAoMMu߿oW]_~Aj{mV]:jzGT[Ty nNԘZm&;6{7&?vVK# iR~C}կHYZv{e_^~=u"6 Ћ8ֶ$]8銾XGa?d@V}kv4kxiߦ[[[Ԍ{L/k)*kI]>)1[3jDZhE|3I03Nɽ¯ڪ 5]{[ km;TDDDq """a >&DfpB"Ћa1Ӄia1p(BH -44huФ""""""'C#XepB"! +Ј""#4EU ( ?0UڊS 4ϊ|R 3h3<ĩ"i al/DRsAO3$}ι2ɆGGAl;6n$ahhCr!^L0[1I[7~tVzdnnڢN>Z H*nM@+a9%_^և"5wfzvL"| a/ﭪ 4NղSɕ T5sۺU[M?ֵK?.ކ~#$k2Eֿ]܄yc1Ro= izy[)Ke?}-?o 20ь#L43L͐Un:K_U/_hCPL!h36ٚ0;5A3X M]32pPT jWAסe-ڦvjBZ}"o(%qL}HR.2c?,vtMh6Ҫob!dCuV", V[Ni&[_},M]z䞉Ƥo}$I}7 LquInړhwAWjkKizzw}vIvW+$DIIqЊ_x/_zVVLv5N%_t:uMza}m~_K^5 _w꿰_71XU}_-%-U}'_}p?[k~w8Cx-{_ޝo}V}9wۯZ׷Du`~Ҹ oӾaB[^l_7fvoz!_7b˸?ݭnH밊 R8ooO~wֱ۪{ &8/o5mWZf=_ vd$N4-5A_M2O[Ml}}iخAƯol%O~[F`C  AdXB4 AŪp8ANv [ u"""""#1C>əM2AS@a0A"xo $""""""";0Q[ !}~Ph_K&=?W!H_V-WD2(j։ [^L']SOү[i`5حT 鯧Ƨ#NGO:韍C%FH$ёVNm4ˇA4 283,{7 &3 Kwz F}3BNQgD ec)"PLfh#Am4Wqiiݜ!q | N'ahq`y͙͑q g3Ah4rޚ"}Ëkzk}ZkBa޶M;EqDK4w\|M-vҿDǫҽhm4HJopO6O'^M>tէnjN*E[k'M_ZމuN=uN[5w[?ӥ~l7M^Oy ;%*\HUu_bӍ߿KU[[ ('2_<͊|! h)dVIA+(rv/MezjZ~ЅnK_:~o4UBM5Pa 1?&?>,<^+Q_ __l]?OU^'jVaLxt Zm_o+"c}Lvm/Ogniju_QiPǷQwDZi0Oҽ}ZNgO_]aQDZSRp)ػX*am-z/_eN?.W>i}uME{[^qޫz|v֓|G-׸O֫SmA04a M MlL&LiL⾷IҊjN?wkO ,V: !ЋBD48LQ>XLTOLꝨN$:iAZKKB""#X #B""-2B0D4˸aWɎڮV7HDJvD;U޿ׯ^ ǻ k+[k*+cObUW5_MSNӾM7^qN& &Zkm4Ot]mXg ` 'q"8C[ݤ?wWi눍5L*?n{^ߖM BMYLd6Jet#,d;>m0„Z´j[oUUN~hNv5kLdNyOE_#33]efBD24dZ\2M zk͍>Gbg 84>E̗|#%PdAy 84N4kz 3m8i XB6-0P>ˤdw\N!VE1W +n Eޚkz}9n[^I"c䟢㼓7{.2ӣFګ,|4\.(\Uӯ=+VUí[d⢿Q>$:zqt-Nբc/Im?Ni=?Bi(IvW=ֵiE:X״}FV{u/^okWaՇU\/cǎiu/O!W+UOkwh/{x7}wo~?Xc껄M߆voҦ׷+VM{g* vmO~ɏ8]_77Iտ`ӵcUO[rw ?߱ܘᘵG}G}y!v+ 4w8㐶xi6;cb c|EZ޿}C)zx]}0BJBk`8&a4va5[L' 5M}k l:ըa( 0BCe*`M 000UA0a2Cj0@ X LˆHDDDDDDDe""""""""" &ЭˆhcDTnQf@"ŸqƼֈq NFP4fzgh5zz ;I P-S HvFISRtӢpҷ_.M]m~;8} XeawGۅ]Wa\*MI_}]r(ZpOmyc[N*rwe㎗}׼im5hDCqvNҮEDDGW+ɱ#%LdW.U;d\ fE4Z; l~v$[ji4v}rwr]b%G&v~i>f0d!B4i$i"\d\EC 2vCFA0g!00 0T8fp9|3>8>Ag̤fblG5@>%WMjBB4AON U & M @Ӱ[cj7Rߧ OM IɏTE=6P%:'۪.tM]=^*?tcބUWa|/_kz_ E0v+u+Z I~_/&֗ro}' ]|L2OVT'OI% Gm߷W/{量Iٻ8ɺWvEmSViwx=x28xq)m{Dk4ҍ5[M4׵L뭯 nݱOQ^S[DZЈaC9д`4ІM0AIiuBSN ia;UM\-}vDhDXB,!a0DI4A2Df!S PvMDDDDDEp 4";FtDDBdK% ]gG?W! !; ȈaJ";~ZRoDHGd}l^2 E"2U[N\aN dT3#p"=u]U0kzi//2{\q]wWw+˽=WԖ{] u0@FnM4dtmϼi8PqGs<˙Lfy:3\Ӑ'f7&4=4N,#3wi} ifqC"@BjAB ơ3D!3 ' Zjӻ wi}VtO`za]{T\9!6-hIMBD?Mމ;qoӴN(y1,i4OM=<ҽ[~J8i=KMA(kH| PP.5Ӯ◧{wUOI}t{wۯw䝭K¿ &^^c^_TVGl=؏_k/~u]b   !0޺~ |5־K:VMa_-O*}oooDavH}~{߾sYw_owvm}[9 c#K?{[]m'5V2;׶ν<}1=v8Uv4k[N;bwwj zUwZխMR_MWm}[WluMZzfikkz4&>>qO[NtCB""$B ,B qв50 \&]O:aoLala4-L ªaDDDDDDDDDDDDDDDDC"tB" .WhxK䎘DWdUђJjW0g` gfq=(-SjIXT;iwM;O^o5&D߿g"yML*keB$$fޟf~(/DxeټOC9:Lgp1ܓ<4yyw6@%)`M4͇XM56Piژ@Adt B!猐< 9 ɦ33)YNe 339};֩V>v] ք=xa;0AZOq@ ~IMɺjմ[\ ܱN:tf-0AAJvo̅J*?&Dޓg.5.ߦt&>oz4㎯ޯkIߢqDK}rp7:%J?kkƯu=?ߍ[ Hp>:mFzH3l? i|j׾v+n~7_ޟu?k|__^e\' -_4)d)NVY2#}2Αr[];}4n"k a-us#MuL&EL&3TOհ}Wx/;O}R问1u h]Wn߽*߯'nwǼ8{ilwڛlïw&'z|Nwovԍ]mwi_Nڼ[_1zw?Ob n׏_aYt]uuޱ4Kޢ/ip鏫ê>C#Ѭ7§Ǒ4 ApSHNC^<'~VAX24MO y>{Wou==ZiEZ*8&9 M0U6f)`ShNC@܅: Пzf{Y O+ :0zjONR B""""""B"""""CB,&'0&;r(Mmu-U?܌v&a}跢o[TL}IK},zza7[ZMu'mâoJ(=67$X߫䢉8$?z8]S־}X7N_UXm?KU}Wz!mv__1u¶o}"o߯i *OXjoWBZwR&K׿z_{z_]>_Dwwo}x7wɲ{}zkk?`AÏ᧭2k2]<' 3dtm 4iDqYC%AO;8)1 l–qh:SaziӻA/ӥU#i@ }&>\uuWIeܸ&;nh5 z&=8+DhPj]'dɻKT$'why'o_ ' Mt+hH#{}7X/kR>Pk҉8ˇՌ>F[u-wa~^W(4޵]ר,$:Ml6vnommmӰmmma۰mö۱n ;Ȥl\קƺz_LtɎEۯ._`!6PjTV՜ ^,r"H Dn M/ qx`jG ii!Q\L Ћ/1_ɏ1ɏopKZU/zBwOJc몫J߷ܛy7 &߾t;~ZF֗noto/NwDMo&=K|pQhqZ܅zds.Է=R^QO;5}ȿ>7z{ua.BivV6"=\"vWarlZgK5vF;TSUUOO1MV_WԅqMc\]AɰAs?됈%)Ιj#3/#ftL]#4j3~Kg4ΎI3IB m4 N4ЋTO)M[O[M=5{Z[ 4L؁Ni  4 g8O!SY;9A 3 ϑpA5xA ,D"",!|02v`CXiZh;nAwo}PoN¦NST^k t4:݅CL&z0Q !f,YtІDChaW~7w&o-{T' 85zM>-ߢcpoɺGl.q\~]HI7.'E"p$?hjII_kߧvjO%Z%~G _^k~z_c뤯iko * cK> ڴW%zE~DzMɸ{ǯ>?׷b_ooU_ǯF;tMST\{?UݤAWm-uᾷwZM_e;}"bO}mkdwio=dy~_ً\lvVIcOubؽxk˿Zk~o~lvRQJU\SLwP}m>_q_$H~ִR1W]UWj8i?V'4 5A7NiV 0ivAAi:kwiPzi """hCB YC&CX """аT! ʴ"B""XL(`""8bz `h0?̃i*H yMWM3SA˙x&vUW^% R >N.;?MѥLdT(&C+ p|(2!DtChG vG 8!9pB8( S4ˣR:-?! 3s 6npl6phFGd HƒnLB#y46? A,fED ￴L'z~&;ki aBi gIٳC g^D) LuMZ֕ I%2p5N#Ӵj&4u~hDBס.6&5TӻN=]2wz]ICKK'r݊&n⓯Z&>KBݲ|^IooD&!cED"nm6OuOMrqv~Ox[#Iֿd~+~Юc\/vKŇ~ z ?oc}n./_k-_eS70KI"CLɏ7 kׯR=pwLIЕnȩe&ug2[![Q]m>Hz&徿kD_1BMSLVd)*o=6b/~7O{kh/{KWt;]v;&Bկfgx*ַtR_I[*/L&>6*{Wnwa=>O߶]i>sv{ҳvmY{Oi]55~u\WiAqҬyH1c&5[lbTQw}S Tt[N^WM1i|]qw,Ȝ;;-˲,Q&-DGd"G d@La:jP0[M=pHt?uUMS 6#xz#!xK.d0 p 摜qΈ\qN3;' 2ud y iʘJ"" ࠖOiUQM "h4hC&ŗpӻQ+ #&80ꃴhG=3ri<- S@mA,@Ei &7& &&l iiN"!LDE`ʄAzH}ں&; 릚ޘL& Unޛy''廦nz&?7pu뻖_,v.:$oYoN[Q1~cZm5rpFoE]귪r_M5o% 7ղO^N>M]T}<|Z)p}Ga{￾޿okrP%'ZO*U*amiwu׵׈u>+DXZ ` ˫^6D$aF~?1gurzPۭ+Ѕݤ[}]/_T~_nT}imD$_]K_'N÷WzO\}?oK޺빻}ldt1#_lֻ,wav3vǦ8?_;/;qj|="VێEvھvıŧ|jl'{:Vb5MإWNvZkMSM0ӵ$:d['vNT_/-o ڭޚi>Ј4D 0M0ZjphiPa4!&=&B`4!fF">""""7ɔ$DDDC5ZᄢGit-5 5'rK۶kkdlgoޖOU;ѝ;*:wꪞa4;R>׿QkkD5;hw і{0.53ɏ3eR#m9 r˗F -:Q[;u4.-.JtKg/ q 6f a 3B4{>n쌈jB21C[#ANEv]zOa>$!hagL͌ i h> f .&?iۋNNOMUOUNv 4ZiT|a0SCLO~wy7IɻDG7C׿U;viuayJ_quy>ԓodW o߫EH{NFDZ$;CVm[[dWB$n&i䇺\/WR7H#꾩Wޯ^:z:W?ޮu i뾝;CM}ca=p_RnJ>fWzJ a0 7|tMW$v@>6?/﮽w=_buds{.KW~K 6M_߅K{Rͫ11qIb W OۦֿI&;KӨTu/"+_!ou} ؿؽ+ɱdQ'qM l;)26RH2w|:ibz}/(Nol.]^MF0A&P"3Š8`0A@e -;[5Ta4Bv1KC!hJ&L PB" !Ma v Xp|&PnN4M?O;4>ӵ_;{$w""4""""B"Hh0KL'DEeQYɎ徒nM≎1h97oݺɾד&:Dމ) PoDDDDrOm/}6zM&~N+' ԐI -=C~UV:Mkm.iߋ[_J}4z:]+G"h[ `rNWmk~+8j쁆n-;B\ Wb"?߿ݭת_-ron~Ee7o ޡ*xW鮻Zg64hI~1E__d%(kKf_1r6_{yqb>-?@/.+_MP8I:w^tNjGnin}vHZ0X' M )C,&0Ɏ e§p4iNgpD0DDzaXaBDlDqJMZ 41-ReL2N*aimgA2}3ta3 'UL*isR{!f%:/j썑SE[$U>znY1ApA񜝳l2D{.hB 긘nSp'jiҦaa`ps.Ό}8@L 3<MhO3h NBZiNZl;,* MjjiLPAtAg'a?[hw D]ڷ]3EZTM4vOgU܊>J:$ߐ{Ǥ$=M܎?z&D_|]Wi'څ׼y'T=?Jt7rOT E\; ݢh-X/׺M+]>ֶJS'kWdRwt}Za Q]_ zZOaV:o]oV.C⿭6!&?SkKK]=7_A2}uO^JVn{޵{Vl- _d,{Ua޶:'_!zݜVo{8)6v./`}-BÒGZZ]aw֫kQT_~zvkZg9Aڄ. ]0OM0`My ]jY {&+dȢ%2uw1ҥZMicpMUU=t]OUZEMhɇJN2$?toRQ_PֻuM}x뽶&z֖ڶ7"xFE&A;SB:@uE2VGddQ^o ۲RD] 8CFA8 %6@E PgL2tӆf !vg}en/}w{z$[[Mc1Ԍv4[1iv*~]}彿RYq!ɿ'CHt? Z:\"oz[MƛD"CNݜ}.N돺^:դPk_ bz\_ɽҧtF=uӤ܌|>[C٥W~o]IAkUk}.bwҾz{OQIdUOyrN?/T}kӸEK:t[ %I]4wS!o$BuU\k{^ŦkM;WTN-֕l?Avz_4"մЈ$u0N:z*]ko} \E#CDDDR^oj/X}~'_zK]}E_Cf;W1Tn{v[tqv>)~?[޽8BlOd?[#f?.yLw]ߧ>!WP$6/];~/KJ{Z_׵OUӲURqa?N/~ocڏV) ;|z~i'mMBZia:H h4vI﵈Ӱ~x=`DDXB"5BIaa4aam4! 2Ă M+ ivݪk}Jآ""" A.0L qa5(UF4*ZkhXMDC e_M0;PT_~ ꩠN,&Ce]Ufyv0ABe 3YH@3vaLregiM"^Wڭ}[ ꅦ]I [5#N.?+JBAZ/[z-Էuuݦ&?T-?L(Azn#!ĉ3;[#W2&BL\'$˯䡢n,F7 [&>H#~[Zv~O8! 6v};0{7*g&pg B3n<Ӑlad=e2wgS$;Kop낧DP둎]Ǭ8ӵ4"?UL&txM4g"ikBLA fà +8MY`3Yq?֣:ֺV=}5;Z?RǴUMPUUDEІt8M00B !fdS)44BnС0M;MjT} kaDDBB"""""""""""[V2a3#(D}t aPXQ)gFD]b%\#Vd]C4,N׮zaV~ɲݕvvkꛧ$V nrUdONB ajvR=g!]3Y6Ϡq 4f!CFGGO22vF9}}F h3f5&pa5AhZw} l50qLr2 q iιs4vM3Xjk[M91޺&4?E5Ӥ!izN-vѭ8VKxM[ڴߵN?qI?$[䡵'7ˆ֭?.?.k D'Ƶ}uzJIK}קU_֝__k_t]mxk&UK-_Sƶk!m{_ Cҩ1/__~oLU֗H_p^W]&_jVo_֫1_MlkMik!okiF%_my 6noNC髵C޻g5bx{tXkml\Gxӎ¿O֝] mpk+koiݺ]owWOx4 k k U4M5OT4U45ªkw"""2iaa,L! A: qLp[.A!h4+DGHp$Zzib/ rKŽqE&At&YFWiS¯_UMmrt;&wɲRN =zo$ bBB8 O:GiJHDiZyOS4q t f„rAx 5|a NBP8iu! AR͟|(A4BXfA8ds T4Wvxa4&?0M3zgXķ`*g# 3`0;TիӴаZ&E~p^;[EXij;O8oVӺ^\9nIjM#k\zۓ#KwH;&[|<\ޮ7UKwһq{7&L~&ʠN)SNMBwa}6ᾯ_.;&?DUp_P(;޿O_'~sOד"libk17үukvi/F&;9$:mWLx" næ{n~#Udsq;81Ҧ;NOWN6"/(ب }2<]rnKIǃQA*Z6cص!ӥqPتuM![M5#MS[ kkڮv*iTNaEJb:%CDXAFJBxLM2dB,&Nd '[AZi8ePBpT;P̒A{{QQYn0i_ Fapd6nuc뾑c_U\6rѝ~&d-*zMx7ߢoz${ MW3zs%3/_]ٻ&ZML81Tm\ &|6 nһ7p!U<\q|U|^wzwi^k\uoP< op<4 6ۄAD`%" ϱ8iyZgA8DmU";} ǐj{\ A}ta ]0}pАoKr%ND A6;ȗn{kt^0km'e>[{+_ n<$.צw=,CtTA085AZ~nR37  FdT\3Fvfْ+"Ku Y RG h4#9>\ gkPM3d2Mڀ LZBӳ _k*SK[ *-ݦԛizMW_}aAޓTF;zk3@"@VK=tO^.{Ph_A70ax]Rc7OѧޚnVZ0 i. "3ΦHr$'J;!O1"PɌ䞟ygȓ$K*@M}4r2:L8&A `ig*g#B ЌƩS2"Y!{>|K~qDˌrOK[TL{o}ܘNP 8vh_W&Vqjҹ8$M이W==&Dz_SԻɻdHuZ|[]+uiG]7׿ooJSw^պn7ûV?A1:T/!Zحku#]!x_^lSk Ǻb.w~b<:J_/uU .:_z/ԧ[NRMwi¯Z/Cz,c=kkE~@A魦!ֿk&?ᴪtAi+{ dTկɎw/{UDD0CZ&*+l/uI}~F=?orq\=#=Dkx {fֺwo}}.mٿO`^v%޺tXM鵺bﵾ;M{i7E擇aFm^{  {T۾ ݥ]kkuk]Q_8q[JhZ}ixTMT*E~{ON?^qKT y*CC(2A i *ag 4d &ZaSUM;B =0M &\-ja2Ԍt L#C$WqDB"!'PMhX! &{ ! [в'hD4ZakBi N,Ж}!hDDDDEM0 }zڶK&_z`/a1wAiw.- Ge.Mޅ0a ZְVֽD`° -mmqa/{4X[X`^#ĭ; (mTƝ]]/ Vn7ARgr+P~emi804rjvKO ^mpOݷ嶜 l0FGxwbfiuő&946aiu~itJYؚ4]3PL0VOt_}[*` IL; !l%A*#~1=i6%H +yr62(k֩ _t Q" '"sM3\̑$M#ylzTHE2 kMyoOzULVLeR\Wѕgxaiy؍N!& &FGc8h\98_zi_UOO !&0˕(,$LZӽz=>N"_z})PDpA0|V ڡkk>ΠXB A;WޕS|+n|둿2JPŹ8b2 h%ȩ٫SQLH= 5_O9 0 Q5j@dV:89<&3y*wģ I2-x`7fh!3l aA*&zw 338f cك>06Ϩ͋x.(PpJKg bzk&UZ; w;ӆ14A0PA!g?Ltn@¡Q ~i_|&\_M,c.g~޶v{iݧi֚ڧ@@ᤶ8 Pԛ{ߧO&#ˏZ_V+{SFC1' _w0Uokl,5NװT߽z9Win+M '}}_&M8l"ooEwL$vp\& v)jl_lW뽢n?~}V~~:_ӫ n]m MdT!w`h Wm:|:qP)n =۠]i%Zo%[U^k񏸨@]! $kiޢoa0C WUX@oELDi骤]}פ[6ā x&aAX Ҳc_/.>蛿zWm"""":B5PEF-^ߖ;_*׿h %/__ [k~"޺^p86ޥߗV~=.½e}ي_wo?XAOJ}!,qT8-mCJal=( M}oc[Xw}zƮ,&iMv*n8WMkwJ駽2iIiݦ]MMwMMzQO1T;YB {_ CB!T;& .ϧ P`qi!hL*pɎL&\*itBj Hu M;׍:,\DDEDDDDDDDDDDDDDDDDDDD0RBa":3Ptmݽnrܱɏ_",֖M/ Ɏ/ZF|Rnlꈅ)iVyf2"Yf]i!/HwiIr6)-71+xD3GX֯AEo$]\z ?܉5u_AoN};2E?k M?n %0%H7wNEm}-OM[tjfa$:z|6vma8mI~3Ѷ\iL ki/vL JDDދ$\,Htn-o뎞J.N&r&v Jb,˲%(&4Jx5nk~4o۪G~~ Sk*n_i"?`m_^;黝n] ߿g'Z}:aV36  u#kb$ $>jGA 8H/u{Mq 4(L40TA36A29 ?A$Zv t_ӤivP~APiŠ 0@l%ThuZ-ɏDk4djZ&;Yo&5M7 2;;bJڵ{J[[IJ&t]eJ =K \=7z.5ttN9O[1d4.a'XLSz*Kw_O{֗UB:iw@%ak~+:[IX];hM~&C(\K{ tL ^{H}C~Z.A $X 4v$a~Ut vd " N GCC懯2D Vu\~&"ouWXO!V.\=F?\Ȁe<0~k{ /ڽm/|@iŭ ՐX"G;zX!zmFbZyתMx*cM]CM68XcX׋mWj\3 ӴZqOW~% 8MBzk뮺iiڶq."!ɄBB ¬&L|&AL&0M! L$Lxd4kv"" !E" !ay ЈDDW_a*M~/__aE%X m-au1o|$!$;U…O.5EV'Kor8VWʐՍ*y+fI};A,>a:枟\u"5:gfKkm6"0ؒj:_]ze ڿVV# JAbl$,&Z ge a!.|B|iqa; BL~pҫa?𽒶iEDn7 kߦ(R HpW%]zֿ_ߧx.uhZ~Vz]l/_zkJ \q3~&_LmSrЯBߢ_AEǺn$VoMNO]{^^'g;>Ɣ}EKُN oU}_#=[OBfw B|vニ{ڻUޯV[ iVvG 0>>Np}iKJdnimE4EVKZ޿q]=5h5iL&LtᦚLOOM5jUdq-}ijm0B, d!5Ru,03Z`dniahphahAa B"""#B""!gM*RGmkWaomo3wX[^C *h3h_ rh$KQ$!+6-0OMx"<T\e bDDhOÔ9nQ2c m+ߓ# qp\ (@.p"""#_]6!"R29 B.2;.4"" 9c.e̍DDDDGM3tVsDb ;.0 "FEFLꮞjpJ+ީIMf&DyT'&ax5ϳj3L:Pxft}ޟe <" ;/8M i 4 Z``ټ Gg!熟3P32'8AD7#L χ3sa5z'i 0§"iwAU4ܱڳMc7n-.2R路~&?T_}Q7v ''A' 'jMw䝿W&9Ǣ1n7$:d1ho_}?\oqz|i''z~;7Z]w\'ۡNƴJqXv}??{ VO^+%X[a.au}wUޜ-Z]|(m+^d{Ow+]"HumQcUǡ _Q6xmK_7D~7~[7~KZoz{_r?w}~گ+ 'OcO H2<__U^1Z{e$إEHo^Iv6={Xj..Ҷ<C㆛qqo馩c;Ui׷j5xcjwtW!M0dLijjk]_m=VS-V ah3B3AL!L!*MfBq Ћ@8M2n40i07NTuІ MVOk%)!l!DDDDY{&Ԑ\DDDDFժɹnd+#*3 LT2h ݟkmrSAx[dU4jjZ^OaUDN/"~ۼs##!&I)ۄZ+(tğ)6&)A&q˳ ϑb#r3$͈pR0f#X vb<( ifqb$f"<9 %2)ʶlRa0AhZiA"-fb~[B;T!-8g D\iT!z M}8ӢcEWMS 4;^oMwzxTi޿ݤR֕ދrw+ODO nQoahԷh L&_Kݒw5rp..J ?dTǒ&N5ԓEOy8|n.Ɔkj/龺:N׫tM{_ص믬/Zub:!z}q[^_}?Z M~jޯ [~ܙźW3=Pzƿx r_ÿ{/"zI~ۜXkfoVa=u6b{ksovV`{i.mq!4ۤ޸/ӾBY1]W\l"qqwɲQ3쌕Ŏ)5l{_zPqHGIýڍ^+v;, i EHv"}vKS}ݫbڑGv%pr Sv0z A=;M=4ӰMxvPj F>jM5XzuU&Aaڪ"!""ЃDD8E"2ɂ  HAVhR ah0ퟐaB" ;P}}r(qT""""" "4 ""4ޭ駮ؐE4v8Gݬzyff>ˮKKY;4YB!?#c="N3Lx!S0NRX[_T= 4"A-l 3lT"1w|XO4ӿ$?nJB8;h_Rcnx qI!:}?rnCO%7鮺ݯ/­_(1{ԑ}|][/]W?_-_߰uN^2#urkjZ"{WUj>TW_~CNӻMSM[NRL.#DDXBAM2=Za5M#)/0[BCQܪ:fAUTJ%2N-sgG]SN5K"jMr>upEIɰI?O.Utlj:N3K"Pa NifELgPnGi3<"vjd$N#hœ!|a4, {M0@ḯ`x4 C3 B Ck pCXziU^M=5;M5M;za0&'jnAjawi-ߢA^,}#q?1h&;;uTU?װOԝݒ|~-So.HtMwqJǢnRwY7onrSWׅ_O6|N+Stۤ'}S76ޟu-?zҽ?ka{ɎBUjָB<v^dW׍Li¥~k[V8b?_lc0a[[_U׷kۤDǵ&=M_O}_oo< w)~)!zſ)iBB Ş}nXU^l_j_oa>ÿZw&=8&qּvd;^~\Pjzb}mzSEm}]Bi U58T iiۊ޷vYJ",$_6 hXJ2 ZdaA'ŦY12mUH h5 qHDwhD @BPϪ94!"XɾB ""$ ]Z]P44DD96%pjYިr*!ȫL*dG]=}k߿9׵m}tɉšr2%dy9 i eެ3NU!wa4 3ن4Gj}DDTA$"'A>0R #A:*33FjʗZzІ 5]P3qbh=SӰ2&3CA4Ȍy[zjwh[Uk-iI" 4Ӣw[&]d}?j#{AY1&;w ZǧzRqvw!a?O.:UO>"p꽾zxO_%u' Y1_U;+]{ӿ_ۏھǧK'#{ __EmZ\p{cߦZ׏W/ݦO/uu[׿I^K J޾K,xo!U U!MKuw7K¤J_uzLvvuV$|~,+OMSOT]mWI4[MNW5ԴvF6eд"" hC FQaN.; a4"5N;L&vZɸ LɦWgeY&"="!DD]$KPC,'`g 4!""- 㦚M}Un̅iO.8B" B#ZW}Z_A+Nu&?;T#+ / .KoԊL)$$Z0T.“eb[UqW>N.?zN5ӫEoWD>Mn5#~'_[zw7]ׯVi}Zci}_a⩐/aĭtCצ+u?_o_6<?{_hoiv1﾿cn\u_ >'!Ɏ_.߽u/?^K~V!oZktW3yﮩ־b?oqëWA޺4[jbpal-~-}?^׶)֭4b/cRP6)[]0}b_ڄiw\LtUSOUM4ӆiM'4&hDD$҈)Ј"iD4.!]MhB- \0Apab {Ca Q "D,DD|DDDDV4]tՂi 5hZdW*T" fQҲ/U5 香 }]We15uׯ,XM;[_ R٪ [Krhdq/ ѶDFh/3~_[JiС8H=A|-3 y=y1"5Fys 2WD.napwi*iND@M ` pA3 s6aLF O &h&;>SC_O4kjivsmUoCwN;J䜔i괃\WmUt~M]^c^{EN(v~_״ku?u?Tz\OI8mqt*zk[U_V?ﶿ}{u_׼X}{j=va7}֓5[NB]mx^Ol&*[~Kҏn+}23abKAMl$OOوN vA޵jݦ)zjDpiF" ""kq3EDDZЋMm4 !jd D!#j8$#B"'DEhDDAt"* @"= I~VNmWR(;X띡)شx! 4[Lݞ3<|RHg̅$DfryC43*?IBU4& m2;@9# KP٦63̜@B9fp ! o h4hZi ZvygxAjD4-Ta4uG^_4@4;MoNXMSiL~$?.qu\pyoxZ-o1q+'֤i- IKz^>uuLz]4ɨ.,S\ynL~/V% ]?:kj~O]>umc}:j!ycdv+~+W}[_^nK_WK^5Xo'B⿡0Bm)2XCS~>mWz&?u7*݉qC{r(U#`Rm`D/t!K1Zo߱kx1M]V|_MSn?X<|w.;AqXOOW+ K_m&=[_x;KM]5OAZߧ i*h2n!wbEa pzi]45TP*C_  ! B"V:8Bv0cAr"";DDDM DDDE6""DEk8,K);UMmQn#$&v-f;a0[LN.^ ' D] ]}5]woza"$Kȶv- e$j[5zi}<ǙGtyOYP3gU ֚q Ј" BCH5ʏ7䀦OM=uiݦyOH}kVZ,|i[_oP{DrW45[1u =w1I\dwWKVҴyoe`}Q7}սn'7T;C]d^:WTݫtU+t~kZִ߮޿_ׯZ?ZkVZKֿiWoOUսF?Wj1ֿ~c&V?a~]{}~߿?_zb1kmqv׵duֶoڿV{Bed'1a?A J]مz鬄2?;c?k=Ώ (j>߈{uwPЫJߏML{{MMG?zkT_[RkݯiiwpjaS4Ӱ0Bh4"a2o RZCABa-af !dB%)DB1$"aB"*""""""""Tb"6}^% $&h̄M1M-sALA[[ Ai CWF˅&⸵'w"T6DIVZEbᛊM D̈́6Zg>uID>va˙90gr'ip@ЃN'|4-Pi AxL&r &JwWi귧w]}7u{&^.un[d/W$Li7&tD7-\7]_w'm'NBUUwzɺ}ը]HuGֱ1?O&{&_D~z_wo/m/{tz{d-㴹O 4ӻau{ǯDq])n.Ti݄OzݪG1Ԑ (B"\B GB00,@J˰˄ɺ #%0B""""""6"""' ނCaveeJ9fJho#Q3hgc[6Ƀ hgna59MS &Ӹzwh_^">>ork%sOxO[fU:o["7-<&ᙙ9e gѶQ$6Duiˢ+m!(H ɣy !8?ឈ_.h0GL  CLBy|+q.r7YF Ylh3j4,_>*vXjz 5VAjV#?~O^5Lvt}}މ4nյ}AHڿ,w|\ni&rNZnAǶUDuLw$KHTw^\c}c;KJ-}o]\tx[o_tZ[Z^kO֓_~Z_Ut_+z W|i/]kWn?_j {;Ϋߵl>] ^Ob~öKUעc__z+t/ߪo[W?KٽmizڽK[KO 뷱d~unσՆ~#c׭{$kjÿm~5_6;[nY:{il_o]6֗{ .?5vzWSӽ?U{j{Tt ƞf2nZqiꞪ^4==5L*vo &'$=0 4"XhZ '0AŦR 3Іg . B"a8X 'a2@ʰ!f DDDx"""'qDL6HkMXAЌD&䑡'G`أ$g3Dh>if4uM4"MUn"qkcKZ&o0Wkר$a5OwRz־~?ޛ5KoIt~|$NA_,}T_ֽF/fɿ?ߊ(8azyzMS;o>Wvڦ}~>U/ DD3,æE4VDC(!-)܂+|^QXgdSVSn;F2!AӽEuMSM4jv^ӵMӮ5}|㾓_Z},}a}/.qr4~*&eQehdILo$2HYϣaK5HٰHiɋ"~>XN!h'i 329v1Zi3i4P-=h jq𙽴MdkirO8tv OBwi]QcM?Wo^cohzw̮ަ;Mzh|kiE%MN~}v$;zTIR'%F?wEƺ8kw[NIԓߦik(?NPzo_I/CoOպ= {ozq_tIֿ_WQk`/o^)wX[=}[ҽ=vP_p__|.*Ux~ҽKwzֿKm_kKj}AHֿᗾy#oK 2𾽫 o^ګ5%1jV?k_Lkwk Ȗ-bZMo[j):_mت޷KڅlSMB^-N®o$:id?T_[M0 SLAjE&i &B 'hXM BB&BCA"AIhTCk*Ј8qDDDDDDDDGQI(KTmaz*GɲCqV@ ؞P!D*;*#ۅj2 (LڪzvKTEm&r-p[N&uy2B Diم8Ds[7~i!Fi=; H l[~?9 XiZwb4b﷭^M=Ln_#ry^H^aS3(%dgDHCA2D!kEi|,~<)ڊkb#WSn8^XaxMScս8#;%<)>B4yƩ _=qȣ5XoB ( E& aM4kiw_mRuE,}v(fݹ<3M;9[Ӹjm*驍4vsO[ӯЗCB,MS kDNL&H{AMluSNl-M!4M4_^o1z-ދz֯߿"Kz.:ǢNդM=p!"" Ј-B@ ЈHeh[aa<nM3 &XA:v&0 0OoۓMUrp[Q&N.I>-|vEBB"""#DDDDDDDDDDB"#_^7%hIc_z=_j{v_7bz?OVՅx{]mf֨Wż-__Vmo^B]Pi:=t+V{ὧ3#Xʼ__] Wȣ_.Ҿ&v4 jeDtgi&t>b=X}%TAZiAj?|| T߿]KIo߾M K>޿w]z__v{YK/uU_}tZk륶 JMraWǧ񶽬7Ր[kzaom"C g665j6!EgMXaEqvVݬ]4iř YPyȑt͋<'ϒp:9^bio5j)~QƴuViӆT3g k:a8gL/}k nM0&vvݺ jOiM}Q1ha7b۪MwꚪzQ00""C ! -0 Baa4A]SoiRii0Aa{rI=};}rC'\WNzhR}"p.,DDa3 "A 91h4!W^&ޞ~n|MZDDD}KVuC몿{_׶iijּ+_ۭ__G]/_Woka/&-7O~߄߿"kM&?z__K~zaZpk!}ҭTVLwf*6lǺQ>VW섾kɏBLvq^i?M5l&H~V1Mo}4pN4i jMB 4 ii& ڂeB-UYEg[NA""."#r2Y\BVJ7b;Nmlr&]\[O;-7ΪJbs_Uf AEr Dab3ΈA;"3*5S*ӦT舑.g#iPgB? Sl3yiń0$3;&58gCψdx 3 '9`3fGa=zڠhZj;M4ִL ͂‚XLzqg$„[L ¡iT-Sֶq&=:p[D?DڢrotN[B句N4t}<"4dɹ~c}|M޴&'}&=wu⅍m%]7'N5NzMƶO}RMƙ7tl&Hp7|mzuN>ZNGD\iU@ /tKVïP|~cX ] Ȗ#̔ TdqlD0U׏o~{ijo_i_V_7~„U5ӿu/^8_C)^aǮao35[Z;_^{&_~H}0E.}!w iٌůqw^[}?&r?x"zK@C!ݧ^o? |`N!dd5!"  W& wH:3 gBВpO<(M3c `]Qk_եûJS D^w.=0 ק`yvxM4a, PS Ut j)zURGTեzVc&;M4V,wkHDjc1ˎ &v 2AՅ; ;ZAQO_rwccL}roA7czI[8ˇ4Qqt7aq踤#"B"˄"#/5- Bԝa'4t¦-Td i Sg};OEOrx'y'7UԜRպoۓmii;X^Ҡ(`DDDDDZ ¨8hX!̹'i~WoI_u/mq1ݯ^U [_K_kK? dvboA|AVǽok/ZE?[/_ҎzokWmz񦚬Z/co/m4!&tM?^O~_{ۿ[mc~f5zI/mZKꞾ֬2jX<^CO_l?]qz{섷[!t^]CkQa=˭a`n7`ض;v-bl0݆[mݰmña`l0lh;pmw׸)v)^xwݭkb~;MB 0ABa4AM4L0 ia4!400PAA" R "XJLÄpՄ""e! 4gةnDDZDDDDG&[MkԮ v^&K"Paz{v%]:*Ⱥ$alaɲC3OQ2KJb졩xa389D˲gn ћ$hXA0L\дϋA3aLǂ Tfь a;Ad晈pEdNe8ȠCfHxA9SOL&]SA!a;OT!-&uk~0M3l<4,}24މ7w~kk֟Vկ}jd*vikN\dnJ2$=7mܛ[[qjH|ַl/wQɿ[{Nkn&맒~f N?}J5[S׶o7RC⥾IS,!kiz߷wvmU8ԔW1jFeb,Oe:bï__*i"}vzvPTP|}uU?~?j;ohSS]|/W/_^}aZu./U=zԛ}oEǮ  S蛮_i{.Okwc̍WC&Sa=g~ uI&uqFK" Kԅ3}V_Bf//۴mvkxd;tqΫ>^_$2:#L"Ic3"#4"R)YFlfbϜ͑Lz xwo}}kQz{Zg<==uC㸆j3aA6ƃC< !tka3ٰ)Ò32AͲ `T 4H4;fmM7\EqKlmk5N}]v417hZpV$?M;9C gimeT=dwE֤鄭;խkSZ{MMSm-lV~zHCMi-XikEбUnnYo$;n8Óa ^Y1&0LOMl&vJ ;$?FwVڤIԖmz\tF;Eƹ1Nԍܷմ\ 8t髂I}""*hDDCB  !hDZ 'a4vA дjU  wzJ>txQ]zi__DD4"#jIY9 " f"(."_UN_ֿw}wW) b"2bMCav&\%?u- vm_E_ жWՅAb 0_GZxo׫& w|m1Ͱ`ﯭ{nkmDCu վ6W߷`˧_[i^8Hgy 9 d%-u , 7kwe䩯[}CVB]LnGӹ1饭-5 mبo]S&uh⚍j]ⶪkmVީjj~  5T®'ii\&CL& jPB 'ЋB"0AhCA`J0/SBa!qa28a NPAB#'""Ј5~(KW\*&4ˆM&Cț21d0ijUmU5O߭ޚ?,uN"k&GdjMx$P~S]3xS\|SOQ`CNiȐHtIP_e gш-|4q0M4g;AL64 &r wi6/ 0Ϥ`8ewfg>zi;OMl.hZAM47oz$c叫Z&;==?O魪&;O 8 OtMr N5ˌ$I˿ڹ,&[1Mܣzozt_'n!N}&o:dR!ȕį;er;1q~צ~jJvx=SS[%m4s+Qލs;#UWi_ho~ޛSS;N~ {Q_Vix ^Uk,}rwXWT 8c_oǯo_׆V״qT[Ui_\ģ.W.mu$?m]{{$?YnlT<.aKOͣaXs%VhdTFAlN2&4Z&M䝢pӤI/\rNF+d08B iT,%JBӲN a; L-jijDu'>i\6_uWoޝMiqAd"!D"І'Ag@TO[M⾯uMJ֭Ub,DDDD}dV$I{ZuM_0]wn=Kaæ{K~ ~1Mn1w߯ __hvK__ީ`{;_\^ͫ_d=Y{][7$ ׷JB_ݫwgkkeGom[ 1wG8 ƽu!/zom/c4;¿m}ݫu}_\Wu❧ZWiSӥLS a4SM{]8'eiM5M T.hDZia46X4 iLA00vaM BqEi"'B"CgۡDDDDDDDDDDDDDzkc† ?ܑB'Ι(2W2.L8*g>)U|@ٜu!7 hA2gL9y4"N'SDkDh!Q3DvNGC(}%Tӽ0gNS&kT9~A@a0Nd#q[; j SUUN[]4 4BqU)7KA¦\4M~҆{a LtV׿x}G}Ow_uUn=_MXz^'j)ES M&wȅz =^*+$y gLx\LE;Kf.# R01w|ᙌ#34;@93a23Eyª );K>2N#9 xг3%3n]_oz 7Iq4!ӳHD0[M4ăL41k4i%_PW9oB/NU[XIV\#CO}=4\tTM^$Ǡ_H"DZ4m;4Uk&;D#Ɲ1~aK|ǥ&둎F1%} ۦEEN&2qNWM$܍~>r0~}]AU+v}']׽k=ЅHo~7_zk}t?n_үݯ/_/Um_[,qa*pzI7,w! };k!)ڷ~NT)___WTcbNpjJ㐘>_a>}NOM *hZjiMSTOTuO[TM_ߊmwI"" 82ЋN"-LXv>L0_l?ڇ]؈""B!E!DATҵWrC"Z|DF&ىkWkv_I'Tb {{:y VA܄4YswQO_zxQ:ukpޚ_nզ׸=SI{__^5V׿]4DXT-wkjM4LJi]ݭw8  Ў.:dBa0ACa Ѓ(rB"&*A}II(!Ј\DD\DDDU! ~F?J!Ҙ+4:28rx(T"""$ rgsVqЃ D"""!HC4rՓ)BU̎h:Yh*~M2Sn\MHn.y uXjw\tD;O#,3#˅g|NB ڟ"4HxLcvL h>i?fNg  mN#l!C;eoT QSAzxAA3Y ᐆ]2FH;4fsC9MV4a~N.hcnbZ݄a&;M]2 5ziH3Vi3Jᦃ 涟Fk&Z䇬cOZ&nKhz-6ssrv`:aUt'Dxkdc^ twW'wN"""""""#.Ѝ}SQU[FA 8D4", hZ XAEt"""0BfQШIbU 4hVJ73L3dUDv Z~W(|8 \Uj3%I*YJ90阊M̈榈'*4NJmM4-88g L3"3uW iM4iSOi;7y" 4U&cSo i( )B$$AS*+=6{w.|;L׺:TSM0Ml$0M Gf`fx*d! :?ZUN1]_D~н5jAZdxtLx)ϴW!׻&?؎[ϧ"% cY1kh5AA^ckVޓӢcqq-ĸ_K|wi~iZnv/U_c7*pN >q~1׮߿Ը~IAza/}G;L{¥~ ֩ݯ/|C?BT!߭#b0ۏBCIod X;[w?~iftW ޚ߷i4?_o&J",!h.:`0a4;_Ouۻm}H"pՑ*f;׿]=i̅baDE'C.0nSNz\^uȎ?ӽO[yًDDFjLtSOOp#˙D0Јe.",tMSMK]mW&{fB Z{N- AjMtvya"""#&4 b$M}1łiǕhC18I4?%MnvM;OUM4@DH .i !~|W_$X4ZN,# ϣqLF)VFaGH.% 3MͣCӤWRP挸]uHiU9ýfMPf `Ćb@~g$ ,lip'ߧ_MtWچĨUksBk3(Oza=WZuN㏺};:C-ݦ4чwhi4K2?w]mEkkmrqI(hדˎHoVW㒗 j<-kz ҒQSU./&LT_[x]c_uZ[x] [*׿ֽ꽙+?UZ\,ָo_z_'|iu_bU"97[[K]t]z0#cծ6Y82 a7m6n}vڿOTBux> 57GPuKfZItՄUM4TE<Q]_Vqw_f{|n W i~1QHy}U8w1&? ):hZl./M\jڦnui[IS7[Ӗ^|ZEIԙn+v'x鼾_ a4 8&.‚a ]0MnO$?kkE$h&4fBejvMkZ""" ![R[ֶduKLh0LӴа9|DK!Ј)Ј; ""?MtVd(2$h2-.a4gQi".<4a0 i"d14^\]'OT==4i^䇦wja=U4CL (h7&VJ(7>X ύ*ntnK6צ;x7vpOIH5ZOQNld;:!^Vڦi)*S@rp_A4IԜwZDh&IW_MjcT-:TCۯ]OuM4SL5 ]1}n%~Q!鮺/On_P7p#&6GOê_=vN(Gd$8zcZ?b,{%nz}_ Ӻj;7ɲ⟧K^Hro5} ֞wJ\UF\ mW=_o߫oz޷~_蕩 ZcB=x$;J{G=n0hյ1acպoU׽&kzb.Z4Iڷ]j~C X^{qq$;a *a@iPLlV|m}1}\FOxD4aS]VT~F-4}544B#h4Ѓ0M0B!<0\XA aB!""Ѧ:|~ի ?UX endstream endobj 21 0 obj [ /PDF /Text /ImageB ] endobj 22 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 194 0 R /Resources << /Font << /F0 199 0 R /F1 199 0 R /F2 172 0 R /F3 170 0 R /F4 170 0 R /F5 201 0 R /F6 174 0 R /F7 201 0 R /F8 171 0 R >> /XObject << /Im1 43 0 R >> /ProcSet 44 0 R >> /Contents 23 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 179 0 R >> endobj 23 0 obj [ 25 0 R 27 0 R 29 0 R 31 0 R 33 0 R 35 0 R 37 0 R 39 0 R 41 0 R ] endobj 24 0 obj 2589 endobj 25 0 obj << /Length 24 0 R /Filter /FlateDecode >> stream xZ[s۶:y31_n}Dg\iKń!)+C)XKt2~W o/8ȱlMS?_|Ƌ^l_-nub‹-os-7?iӐgz^VZ/?}Y^gx5muσ)嘷o4؏a0 1$KwtOY;t31eqq-;V"݇>mnXhtڜVV""H.*eYY∮UW#Tt_e}¸qxN!R#;( 38V`x_͇aiw&$`Bf+#h\ٕሑ .G,JNSc 7VL}fRDzoɱLc[!p쌐 a{=Җh>T"X96\\Һh}W~yOExC!G̰,>=[ޙɗ~FReK[ݷOC~AR%-۱\ 2f"aٗ668s࿞2ȏc`'එjMkl_ҟ5e2N?ա>>^~ZtcҀwVOn}au8L:BS" s٦[*Kp{ !{CRQVT`=@zMK anġg()yʨa$kA8t8&grSC<;]i -4+ T~l 3+t@KUXش5o}u!e#p_oa^`GyP=tm<z @cQ1e%) mӗi8:368pUnɜ?Ьj ܪXׄqgxx]8FSiCH>:k5eԘZP)=LL iHs ^-*`!vBGH{2Aijl q# XgSbv9l@hMڴ,ČǠ C-Xʨ#V3cse1%Lm_W+6o< \,u[u'6h51= ^W_K U^j3H/Ku2sϒJvVecDU-GgD%CX3A3-z-[MD\\@XГiHQyylF~ R].~\*Kg؈t~%ɛ_uManjPؐhjt39*,"q`g PM,^BӍ#IgZ\|Q\iְc}ypvt},;۱kO@^_`o32gaq|bj,cbn2~if y[;%kws וА9-_G ki2b6gHx 7FP6 8XNuڶBMh@`X)= F #6hC>`ڽ7:/+vb=A^5x7 Lܦ[?H )UX-[p# {@*.@ohAAËcF€pL+"Ac-g,d63A6P[' ݶ˲NY1&ND4$]+ ƍH p3/y5q >fh̟B9"/wUЄS)"3b1y* ~ @,RLxC9$$@/CΘ4*BHYmbqMi^V|k;n/9M݈^0>o\[F4x { C p `cL\`>t1j`}g.S_P5V9E1!`&5)ӚBnl.w endstream endobj 26 0 obj 607 endobj 27 0 obj << /Length 26 0 R /Filter /FlateDecode >> stream xU˒0Anծ" WUNp܋ (˂Kq6_LRܠGi>ArPDCQ|BBqͼu >~;U@11<@(ȜYβ6?ObF6ps2]t{ V7R(}&378% NUCl)Nec98So ' UV4O3<텲h W3f.WJֲY +G}ESY[y_@ BnO+Xh DWyP#bF^*Yv!87d @VjƳg!VbH!EBcjq:n$\c07/XVr[F|x\''A?Eq9J XsوNַ< ilO;NEнoBݒ$>=aFe`V~? %&u }ۓOIahUd¬U0}?[_27b%OvpWeK4>䮺qc/ɹ9`"Ä01S endstream endobj 28 0 obj 19 endobj 29 0 obj << /Length 28 0 R /Filter /FlateDecode >> stream xs 5V)u p endstream endobj 30 0 obj 152 endobj 31 0 obj << /Length 30 0 R /Filter /FlateDecode >> stream xeM @ YMLC]S<@. T;őJ{l rOP*,.1.K*LΣhOސU} .=ۥ> [LyMҺiQY͋d}^cao49 endstream endobj 32 0 obj 4030 endobj 33 0 obj << /Length 32 0 R /Filter /FlateDecode >> stream x\rF*U&;#cI̊>@$$"(Eٔ{_3CjkS~p=frt>?9;uۡ}tB|xfut~fO_z?q֚&gv\X|{u3LӟpOƞn^W]vqXu9kՋVufES?@$W<nY 4agp]77z@oR $Vf0I6].>n z0`9 j(%IBB3uNӀpҹ;D,(Gdn,T yZ}كn:Lay uO Po BQ {r8txpUW2f19+Q #뎿{h%aiXJHM;{ss&O<^|wxʳD@ux$?, g=pm=[Њl!h^ :] c& K/ey$rҵdA|:Խ /A6J~k=v.vb Q /{J.O-v92}?k\;X։. CYwq̰D4xhL,s@Z#C o L(R}GO;T2z{ޭsGL)UM1j}x$-ݥۧ4Z<&go 1qޠ(~zacU_S &qRqMʜ?^N.JR=kIUUvzhxKׂI>߮w,P\[(|Ry)#8hǢ&B,/Rfjb HyYƛW5jc.|}I^8^ċ"),z.uFύ _|'hp/O>um+g͖ׅ򭞍&tQ/CN =B1'&vӀOAw5 /H$xĚ є c m - B`ܞP A\oyWA E24)o su(fhĆlj&b31pR kN Mt 9(3 ψ%ɗ rCDjT]7d]G E۴< {us፲S[z3o0DI4ih2_FT!:1"0U<~# znWg?B슱7(}7avL@Ќ \m3DМP<7v+mi铿6LL3DSlB0k甲@xAO$KIdFwh:'.%Qc|Llvga ؁&P"yGr:`_I5XmiҼvݔˢ`4zdhBw#w㐤bp*qQo?CT.@bֲ IjSW"§0#^41$)|-!Ba-d5y|W*;hKû.E~xi"n7Xw`{̃%.mdEAo:z~fUq6ʡL8WRqwa`z_} endstream endobj 34 0 obj 266 endobj 35 0 obj << /Length 34 0 R /Filter /FlateDecode >> stream xMn0O;xWd6۪ k7 bdҰ-zߚ8 )H7f~LrmqtD Bu.el%Awl&gn۳@n h訟xm0DMtm위B<4mVׅm}geUy!!$ rӖ}q'8⿾H2 4N$55Gȃx9,[+Tߎiשw}T7DU֟V5DB:sZҍfl endstream endobj 36 0 obj 171 endobj 37 0 obj << /Length 36 0 R /Filter /FlateDecode >> stream x}A @ EO;dg]i;,u%М@BUFANZ qFjԊAú_xiВQvd &Qpr 92QLQj'X_ցm"ƆoOcuiRo ҝ^;y=w7D endstream endobj 38 0 obj 36 endobj 39 0 obj << /Length 38 0 R /Filter /FlateDecode >> stream x+T534R0BsK0gd˫k lH endstream endobj 40 0 obj 11 endobj 41 0 obj << /Length 40 0 R /Filter /FlateDecode >> stream x TC endstream endobj 42 0 obj 63844 endobj 43 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 42 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream UA2iv9s1DU  H4P̍]wZ\>2|HPAOeBk nnI OqB ap`R1gh7 ڴꟺ} MU4ƙ] 2Fhh{Wy0{]qiBh< !h04A)ɨgi=H @^r(Lq.ӢqNӤ[''~C0_a8a3R#ghg fb qƺ7ܸma}"oOOi3ikj~+>◥pUo~ '1Z&;NMc?c n]o\RvMd48UvL'Ux.uh&0]}WO]4ӯT[^ O& Ǐ/0[_}Kazp&_|^~_}ܱkb~qzs7hU⌞]?_^#`K4;rqW1Wd͝%ȏ|d&C34nZe8g%LڧBAG-[7mw_w_TW0PG P Sjjjy Bp=~҆ZJNqq?u?Mt>nZVm&{I>7]ܾj/j-twߡ൶"aiij A)wW_Oa}] { Ž[ֶODDDDDA4&vM4M2N{kۏ~85گ?m) eIY7({[{A޴ۭ}CK߰8e,M8LꁦI_}1Guv;;QL{M4 ﻽?P_K """""""G\0J,Pa~u_W׆}RL{ٯMPcɾ A;L&~/p_iеb""""֯pЈg:hDEI."7i}V~87&*\&d`!DNFziv<)d SC'#:#zMO?%A0! fTJAl%ܷHӵ,lgTwIfa5BAG zkwrܣ2_*';&❍E\Cʄ{=D#' d$V}\BШ2'\ fS Ȃ!-U-#LDG!BA 4AzAkjiv->p¦ 4O6N> B$Ywu&+5M>]iuoŠ˓m?:UTM;M0vaœ 3 c=gf)CKw[[^VM&4.-]w˅,~DJ naz~ꙩȸ;3KMDESJLz& +1.;pZ?ώN?'uzi'*o;ONf&s.ϳB@{??+z_}WOOڒv|)׼'&2h5Xa 4B% {/x޴~/}lZNO_oi>Lvƚiu_}$}[_o[z_S$p䝤tHwXO]߯}GǪuam}_N;(HQ7Rn}]oߗ1o ,>zJo\7 ~ uW/_h~Nֺ}zw׽}¥zkKqo+w_MCP:׾z_ x43Wn??_?ˊ'E^WZ5>ҴOsw'~ޤ/׵?ǠnUн=i~ՍmXz55~*z,}_7_ȸwګЈ+PB:ՏX[cc ۩ $w>~ciz}DZwJQ4[0M>4iuǪ'} o~svB-4OB"""=DDEPB &a0L*zB{0ǷMt vHt FƢ""" 2 TeL'_mU}b׽;DEDEqM4}^.\[OL_4Atń"! >{ol8qhzX$""" ¦MS |.aRbDDD:@iC Mm4:1ZUڰ ,dtKOEB#32>))xAl-" s3"P3p!M0ؑxC4TD'2Mx;Cii%qu ?h0d~DwM|ȣ~_ǰխ*$I1&M7U:ۇMnDFh3}'8Cžf@GN-o]wntŦa;B!g?jU9h5x03yZdFa;(d3 ]m3iUCV""*QwNoTN;jV v "ACq*!gL&NDDDDoޫ4dz'Dӿ$TKM:Bp(P@84@3<䁂 ;/tmUR]]4M5Oz&LwHu Mp&MBhEq z# dz<3 |qz^N_%=u'N=cӽzkiiNAoM~+ӵ|'D4?8܂M_iߦq߂G{Zw_[Z/߱JtDǭ=u_~_cOߵCtMQ}8w]Dl=pt?xZ/CaNW__D~/ I8P_$?c8k7_t?״.駾W1}W^~au1kZŻkӤËY ׽U6W׆?d[/Oq|56>?`Oivc#61tYvhX":a A i5O]quv}f0DF4:jiWd(j7i~2Q/PBB"0 N5TSڴvXfM4d7N4Zm[Q `DDA!gBj"",'7MLDDGeLTFZQA\'EaFc iiVE)D 1MSN Ӹ`BٝvKxeu\PolFlS)>L#?@/B"Fx! wWkiL= XWGCLDPM4zaM0ݦڦ҇!x)1+wz  5ӴVUR /.o&BOիN׶+}¼0LA8W-댸rG,wZ9oi& w^zp7ˎջ_Pa_o<~_ A"7{_(ck_z}U7_W}U{^~nm_}WrL~Ę. '߭?ﶻ{k:\2:_|U}ܛ>?OULn%ɻ6cݭnvia>W];|]Vȣ}iڦhDDDDD0,|u5Tۋ^hvDDDE""R%]ݮDDEC*E[Lia0DlF'~P0Ez#oN=M b?l,:GX8t4§t[Ӳw~+MWIS}'}}5%qz_-od~^U9,hD`װj[K(2\ϳ36NUe+fVs*33gq%ٙB9vM?ۈɏT͂2$dp8gMS4M>UwU0L =*v 'f5 ikwIO&@!ӽ:SO_y7wk&;y'\P}KtK~okSqOKXܷ5qBk+mׯaGtOpmƻzzڱ޾}}m~ jÌ%L|!}/oɿ=*~X }}|>;cE{H~r[oɏuܻES]t5_ivi ;N85SMm7AЈ"""BD{b!ZM.""=qm*vhnCz[kbJ3#:wi޿UN/?^ۼw,C?ɏ&?wf>rqiڧw7VΙ+cIЈ&Ƒ9g% g!$wC=-ifig2x9b4Wީ5h5Tɪi&5B fNQ&fU ^]pL0\dӧ{zJL ʃ h3gO7AkVOKi{\}k@𪥾M;~_עqETN2J :DoԱc_ƨiO(uz]cڮq___IyqU}w\ k&|?]תXUM~z]w'_,/pZXZWi=}o⺃LW~ˇzjcwdO|?LZa-;MjÃ[YwXzwi_nS"Lql0B,!D4a[B-mumUŦi`Cʄ f &""""5mbG| |ZjyU:c4Y2q&f$z  g <+w l&vk",׿L*]BuLweS QYxU,̒PG ;1ɰg6#L&nOt-;8{_]MdBėO!&WEr.1i4%M|'!|;`Z„*" ZdFPig(AVZ!c,;&e@ՠΑMC<'!ff.wiiVaVމkg-C!t7 ªU a:N,'_kLܻťc z"2윍PArhZ<= Ҵ[D[$>I[}\.vKЌ٘L@4jM;MnN_k&>|Fv0N>AaPއ+zoɿ\k?﷯&7_W]X[^v1}N? cn`Im% wݾ9믶.X$mlvlڅ|//nza88'|>8vQQ'^V&9cحm};m+ -#*zih3g Ϣ[u44F:div"""4ti Bt m6uݦw׻M]- ,HVNEZIU5]5״,*tM2 ɠ NaKYn~AhFiB""""""#_*DE`DFҨ(.-J T nUWJ"#\ x[_5[zI/;j9 4Ï;P\0DC ը7,3 b 3';PM3 ϑVFy>E+CVh47&a} 4ˤe@&wtAbwötz&SV #pA/Kf57ˇvim dJ$5zw{kBd;ijɽ,$¦n8fN}ǰj?k_ޚ|JvbM]ItB!C.G3>_ jݪ{8d=D 'k 6Pj_e"$TOZD3S#Ä#G iM4S ۹p ϐ'Ud4 &AqP 5[[Mbiomu^89 B~_fFrc> !a4}[ 'k{qvJ޻z4 za< N5!&nNPIdC&?v*_~>OU=w&q%Y(rY䣵kzqoMRӧO! c+oZoHz'yt\wycjI=SӲpwT дj}(W&|Ž&Wv;K_v:tߊ_kp}ivݧ'鶯޻:ð-Q?ߧ_߱$  !ɤ4Pa⮖Hu5iSg_߷_tlDDDZK]}WoX#ֽo'&w/?u{n^&^]ul/}_L'a߿iߦ[o75^o~01ٸپyn?[[Ox[:ߥo훛7qǶv]Ǿo^߮ ׾Ҏ׻V;bX~׻$:aBiL{$9! ŵ_qLRtM?4=0XL ,0qNwoF!4J_L& d_CADDFkSNPUӰh0'B#%xSL'v]]IiL* d3A! aɛRX!i!W ncZpPR.(yq+MnMqF%Ux}۽X8?Jg/]ZD&piO^}oDf}߆_F |[:(gHۭN^=lxa?z}TU/տ-5L 0Mo_L|XoއDYQS]?}ttߏ'n[NZ,tBKjViO?vҰ,&*t[TӍ:T}c&ڶ+'*nX PUt]4Ӱ׃U_}2N(0@ȇ N>"84"L&|1{9OtxB`&3n;v"@4"N.M[!E wl' h;P^^"!bNhd fAaHD%hlͰlfD|FC[NA+֜>6蛷7~QKHu&;M}&u]a|+(Q7\z$N-oQy1׻ h~,}uzmB~/#na'=^ꜸvWI賂.x^_vnqW_ngQ?בO^ݶ?ٿW_=Ρ?_[68;57:Wzݪq~;nijZa2NL B." a_i~=ڐM(d`" "1T"?ztijM46! B""""5jwiJL)ӵM5M +cP0 ɋ", aL+֖AhF?n&{(vdySa;iD-oS)ڝX}H'a2*R*v#%Yj-I< 1  'wԳ;*G CM3'3XF[ǯU\{ A%M?3/j AfphC)ƙFLDf"Wq0i M4Іjf…x(Aα|a@?vUzM&ot[Ta4L&pK:Gf|:F̎윙`yL&މO-&ߒ|w_vvޝ-ޚi0M0Zpψ?#'|I ]4'dtw~ղn'©nz-ˌ1[׾C6GQ,PgNϢ8qA #AՍoqMWVZzw\p_MuEq~Lv}խn4Buk;/m3 dvQ+p8Aga5*0*v^#Q^jQw\9!Mq}ZU7je{UIFl٘vG< lC iM4SCW j]_A۩7lz&DTP1(fma|0&f9 jO^oUMOBO-_ xZ3?ot_]/|Ryx73pdaz#0fAAMBT'iڿroM>o?׿wTNM4}дw魪v&;1 1uɏi:tI9'}~ᯥ'ᇏOjkvzj{ɏ}AIIړlޟ|ٽ=WHu^^/_ k栝{Qu&jDމq&qizO%鴿2/&:uif0 _Տ F?DJHWԔdݲpF5V-_z?Z>UӼwT|kJא_QֿnLwomwouwՖ8b~kikv__Ll;_iꘅ zt+ka6 ^_O_>"izkjO^_NwQZL5wGbl%-_DAB"aݮi7աnݧ7L_X&ҿL&McO~NͮL~ǘ""MAL&'4!p}7\z߻߇W|;;=6ظqwe 0馟}'}#]Wna !:0AvMl'֭l _u]2nIXtVj=اp0T&: C"7-=0L mT'h4L kj~* ;AhDE@“vȮa0&馒5d"""""8Dvj:cQ[gkYմL+J;2L do;U-4RHf mTn4ȳ2֎[g)*tJhQjI\,9!@ϖK& i?g$a0g B^$i]?ڼwvM{Mt ;<3H1ivQn;[쉠FoE~&;$1M8iX@Ɍ٘32 jCL! v钋wi}$?޿[_`vA_Pa=4U=9nL~=q'HkD[w9(ڿf8/%JUo]'\eމb\jFN0~_~v\lGޝjx7w$= qr$9Rxry_ӏ\U<}[mloit]v#;qK}m jMt?Y!_Wiwl~^q?}0S___Bp zoH!qmM.Ta4…jwZ8x*Wbc 77/_B? z ~q}Í/DDD4! (p! &vj]:uo}kɸl0 ڷ?&;n ->""""!'4ci„k}}m/X[Wݶmv}aolڷ 8q%$Ӵi=ZZӭ7~:$"ˈ]ً(dz= ߄{гTA_SW nsٹ޾{齪xj[T?DDCB4 j܎^c~㏴;O#UC**ݾ)0 !`W3yk~o^U 4",i2r4vo}4PmbկWi ln&jAvjtдMY8(HDbԄXkֿv 0iu(p0A$v!XM4ivA""""""""8aJa lDXB qb""#i]k0c+jFD]0cٕTaH[%9IpM3,;G-ńp.j ^BS?*6('UR L29p3ie#<#9?d2TЋD8t "r L!p.!"˵rc׵T0L 0  3O/]_W-2#A2 T(} ϑM&;~[TӵM5 |qh#A O2H0,ij@E;TvK^맧i A !ψ~ Is40jӸ\u^סC'DC.4"o]7wm]Ziaa2S aw<1d7kK_-hSZ_UWڥzNuc7ɻM55E79)B.΄yhB!)vAp_N _F}ℐzmN|jJ*:NA(ݺtZhΫԉ)CEA hXMPz}0mW{j7r7.0ߢqon~^(20!b8dv TrA{Nӿ_N.?U^L&GRvmv J;UZiۙ )փ"Ȝ*f4#kriOMh0ݦ~4!V+עo!_Ǵ!GTBN m0Ah0p a5M7+'nԘJ FFϯ^nLk!}KAiO&ajڭv\=~[䵦K_M|Vۯ_]o>MIjzkh'oc7rqw[''u<bB?hqQ2{iɳyWݿ$ɾ[;}n$aoDO%([^;ǻEZЖ*doKd*Lk!a{ ,i_q_&. d}ӤF/zWP~Iu쇀uoj^]8޷%8WG![u+qOɇZ|GnjD0! 6 ˄ahɸDt[m^]~ŭ1zw_l0~ ~kWv}VDwkg8ӈ5LWkuzp-8կn}|A7oO A,! hD4a0k)v;i~,vbNv/]"""N4 ;Tv7޷~[7_IwDHPY &'~۵ycs~?Xב\۸u?m6DDE Yv ]n"/ݰ;c7b6;OH~2wCCDDD3( ׽i ޿MMۯvzqt}uתmmVL-ӵ~׏NHqzר_kqNz4 駭^M0Dt1˰0B; j}[x} >ڦ L& *4";cM})اDOTMaB! קM=5GA4&P3kT d - 3ITVqG-Ě dT!26G>Ǣ4"DD-B,!f”͌MzMUM;MT'(_Rc4ܵvL~h(N'PJ2Ekd5Nku޵6M4I_E;F@'BBd)t] _SԖxӰAːOEh P{LZL W< =i[MB 7~ǯ_B7DA"S =@giIN/ww85GѪŸ.` d$dC6a AV_^JBC3d<\ f3 gA a"i0꜔jߺ[ڒ|fa40cYpB5MST{7N\{#w&-OwQꝡwZ&;AqcKd6c\%W޴VWޯޛ&>Hv L'NN5N}[LF_N!~/^ث'Ni|50Sz]'R^q࿾"}|/$?Db⿏_+]ɡO{ocVnoUOm+D_ٻEC<]ک(m ӺjK um5WbmXKmxcG_oՒ[l 6[/+oj)4*A=WTﶓZz$=MM0UvGPiG."+X>^ 5L&|!DMik[Qe̾0AL2.#xiŦHamI!,`B#t""""0UmD0A<IUUڈXt5k- `C`0b!ɸJDKba0M:u_ |}L 靼6gcTaY(馩Ќц8yEjH4A 4 GHW&F̑@ז`} , Pf2Bf"5&AMaY;ruI,wA4i! &@ƚha'dJB(m;'ۓ 仯ܛm44wky+tP%k7Hk;~_~Mt~߽7:DuVu =I- J}}/_c;غdԓ1Mޗ 친 (׿ˇɿu}c[kds42#df)5vqT 4T/X7믒_>Z̊fD93Dr:@4fZai maPa4NMU5_ޗzZ&yoq_aٙ .@<y @ x@,( ­kvixieuۻoˏRV &Ziza 4TO$McuocƷm1^uf+7z_{[4OWOUD]&[ߓvtN׵qDݥn$ڬGE 7_S1Ĝ.R#.'t(#xkX&jN;ع7qI}iZZsy{$[ݧq㴫 [q%-i3~vISM{mSUCmbӲvN7cpO~L/k_29c>B 4f=[M;5[?xm/_ ] +` [ӈ\XڧiXbf;5_ aw]O_U!" `B,&5_֭Ca~\D߭"Qm;n>߿~[}#`Zf a20&~mr:_.8#B""٢~KT?dwq}ٵo`vkumD]ط~&VtҵnU8OZ}Vi +ޟz=4J WX6BWݦ5La2 b!2)~T4}0i.aDDTDDF&dB Ba24˅"B#' "")TG[6DuȹwH&Lfv蕎&iDeZ?|ZvBgxrhd;#HK!" 'Uӕ>!  YGsglgy7ҭ]> tz 405I<oz&zjkL&g3O3ٸ2;>e"鿧FǓ&D&zh=4M5B6 G4qax"rğ{UjZ]??Ln@Zt[AxTiݠ f2s3E:'_K{P֕jӽIDᵢCo7]$ikOMu yfV30a_оUAvN.O%L}kծ;0z 0P_Z:7%}I;DRQwH=t?oISC^޿O}u;&=ԛIkM_i_Zy.2ƷpMq~{?UR&:Oد/ۿösvoÍ~+RMW~Du/{v/btr[ٿ7'q__[љ?`678JjcDF29o#]ZC]kׯ+(M65T;Uk!G^ڧK훷b蓫~y\&|ϊ3*s9G3LD2$tL8L h0@ 5M-[[uZzzؽ;ՏmW#dCg7BDDDDDNDXM4 va=5;m-v]~ޟr}qg hDX!am?_l~GQcOZk{[Zx>[Mi#iv)80xӈB Q4 |4cԷI"""a4a4 !&d;?ׯOua T?W<88umuקn* oLI:ݯNOM;0BvDDn"#x W5Ćv"L"NϹLR?#y#(H360L@ϳ"7Bd`dfo7乂aa;A4iy4DZyo=EڦkM;7M4„wz5T?ҵN]?5MS׍;o_uMk^X~);=&1[28a]K}R޵_1ɏ\R殝R$:Dw YqzuM1_uA|QYr'$6?Q88zGOxwiM2{QwV ^N^L}Wi1e'Vmu_US{H\f_Pc_LwvTZIt]ۇskY1~cw A'!NZ +ncO.nL_߷oYo'kVݧkZ& &xB{0!h;\LetN2Ɠ{i{vC\c+wU ]uU'3BTlg ৄ9Hh]7p۵[;ȐئXX~oV 4j82vUZfyىv{iš~}ޝ}hkiO.'n\`W'mrnڴڬ/vB 2x!gM0fPϤ]qie0EN""Ћ4fia0E=c֪oˌ? -e=4Paa3a4LhԂ ;DDDA}qN].MɾU^;[A gGͳ\ gM~S?[_OtwL}ҢC?M4AvGЩSW=H];[8F;DԷ~vӧzO`ׯ xu>?mmӥrr|Џ uO{웺c?]w뽧oWDAa iB"JlS1jnԜZ1̘ӶDDDDCijb[/_[o~B" ae&5Ai׿_K""""#&Rw]? DDB %\&GGaoǫD|DDDY\?VK[_i {?oX["v)qc/kN{KBªvhDah4h}n""":UW"#ܥVY,3lt+ծ_;|vDPe&ww;tPڛ;"]~k rfѪqkd <] ԱwM4h39@rgAez h5A4!xg৅(dAqBsR͞#Dg$#; iDzwzw{fpp3A3љiXߧݣ۪h4jpg7qjn6fy9.fl3bLD e844ʂ<)',pY7Ui馚i ͜2ћ/C."配wjTPw 4M?TWTNӵ_]Ҧ.:zpMS"c"'a3yr0^S^M;M%KN]\mH,~v ;Ai O 2 J!뼛Lǖ=/&,&>[\;aWǯNbMOoMt BLS3r۫{ˏjӿrpZx*rs G@ն =xnWnFnhǢo7tSӵ~۪3^_} ݿ"6~L]/i('ǫ"LKkZjIڿNEޫpxonizcPz6U|zv8nvW^>?c^:X_ݯO_ooe4=䢮qꥎ _i?Mɽ}W[~Ew_U_ooo,~_.HX!<{kk!Cًb>paF;Ֆ?NXn7w}ǼZG7wVc[ytWB_?_&?],o}^ߛ]!DeGOm? ~>u 9cc]{oc [haeP&NMivNɏMaŦ !&T4jB}S_f/KI5"Ocݎa3xc!cR]pDt0f{S(L%u;m$aXb6;[7Z[tӈw}~ziu[DE "#BPM MPidǾ}:FF] Dq qZ 0PA 0X&ֽTSŵ_,!DDDXJT^'MSޛc#CDDDDDEATDM4 &M4ӴN[}BˀC74M5DDDF)VHFKeZ$ <Q#6|NDh@> >CM5MS§vy322益 {WkTO{ONXMUHW8|&T<~_J'WTQp[1uiSֿ_ _t5icۿ?^ﶷw~qKvk.zk^:o,53ح޷j[ݵa68DEiSUlDGhDDA"-[TIߨA,b5uTnݪzYo 4=L̖ƃ%FHΙj$dM1H3gv/dЈN"#7G3S$"Zi mFٰ 3 lR*3lg M20Sȼr7% 47M;R =y'wNA_OTSm}4Pݪi]L{}kַ_|qIwzn?Ӻ' Awv;7trށ%.ˏ-Lxj{w&duӲx~e]*MrE"n+{QCZߟߥk׏N!j`lx>?t^#{z?޻imuI~]\aroX_/Wܱ]_'5wm.޿m_?w~?roX>DRv{b[GhmP_oX+x:+J^=zVFc^wg{Wd>[M=SA}ݧiҴ4zC"" ЋM:' ;TV؆4.E""ЎЈ!j"")E9VaAE !"""=`wm%NաhF>SEўPg"ffόAB"Li7C"[>h5WjtAti>?q ]m?]qkX>߭ߩAVk;/9v彋?MAַihZkhZj"![qڌ(DB o4I]=NmwvL{_wǧ:?} w o׼y1rʯoԲme1&1j'ze#VMPa4~6^V߯T$G W4OM'׾Ј"#J7U_t~#U_T? q0/MPtn y6AxUX徥 M?#A 鯡T$Ԑ-\!Gn~_XZ Drro"~a{KTӖ?+UKB/rO*}/Mb#Ok.5IVoziA*;DiۡhEwK" ʬ[\E¦&QU% ~MS#H*:I"$js= ɄCR$߻Tg&f) Ϫˇ.7ɐܱivSOMBhΨ͐4NFt#Ae ޴Wji*}]q4-2 :/\\j&\4Hv"cՅkvZW7in޿wxu=_no&rp/^[[-9gь9կzՇk,{߽@Z85r܌> GنT""WF^kMuUZ"7m gh4h[>3A<* 4AȸW2s7! x6 PN":A>■>x~*M4`{Tk~O7L&jeyjiX (Z|UtLv: WݪM4UM| 䜐-EZXz>>X_'K:p0DD]EDZhDDDXPwhZhZj-0DuX""""!""#j'Nw/Wl$F@br64F b9A%74S4LF#ziju_UWˌ{qw7wkV:\eqJ>MN0L}AZ}~ƻwꔱ'U,}߫+?ܻƷޟ{u/j;M4н;]uO[ա (B4ЈA""!}GFyL}N (2 dA]H͐c#y+̞;0*Lg2iTpwhaac=b1 >f3ѴgY ^7fia;M݄Z'ڪi>N5=SNM=W[Z˦ [Ǵ]X[{U8xOz\_EYoi)CN[ "m91k>^}3 2*#0 f{i>S7H|iݧaPZѷ98|?U$p|WP~Oi aUyPv|M;ZTcwߪ;F>M.2ⴉB(L9l @ՒlM27 U0t7zzvP 4M0@ʆFn_&;yq]}~uV+vvr"c;廥Dǧjj529񝊣s{o~|ߑ^SO'koH;ޚڪmf 'G3NGdG-Jw [û1.3TMi i^nEX~|/SOQD"p7DiWa;{L V+wV;GOzu!WPI_CW-rQɾۦ}T[ӻ;N}4;M$ /zq]d v߭7%dRz䇴,4" N""ЈhE#]4L&}뾿  _U^۾Ј`C(0{f/]o.5'v""#5Xw8zW껶LF [iھ?k/Ri}{a.M{UW}Xpv_a[1u!!pic}N6.3o^^ӌDDDA`8c>?oo", T'AL&~cMv/:׻[_xC)B VUQOmqji%8kvӮǧmqU"BuBA˴0iZ]bY WYvizPD1Bz.k>f1DDI pT4 4ӻ "#OjꟺI!@Z˦%e--}IAmv3AjmoMWc7ߟ^}Wi>6[U^4EDFY0B!5lDD~ըL R $ȶE+g̉B>#i5MQNaD[+gf#y&f3I|Pb1eAzj}ӻo₩ 3 1ȧWڤcW~w6=4Q|oOakO&a2C$ ~ܷ#48ڝw>KQ㧠˜3B>)ƙ)R2!K}D=ÿ]M7IO[ګ_~y7~ӻM5Dc(4͑栥fI0vk׿-\'_I≽ݿL&=iꅧB E3NIvQ]',׷ku^MFJviS> UAw20SOO?Җ>X,},~M:_{}qԷOEƥqMl'զp6 #s3FFh49juf-o륅 _m,kJ ۭN&Ӵ;L]a`M8ֱTﻥǿ.1K_ݖW&;~MW.uLooDcAah=_ׇzݍk vDmk}0X]h-]vNrCvIZ0šд" !a0B-bM4.!Ջaa_׾{C$;ܛ֛b"B"""" &/Axo_K_k+.]8odRP0~mމX_᪏|:ҵ?m7_oKo׷8/zvcoN?$71L[Tj8ؿ=~guJ8&f!0~]յ'K,!#ɸRn[w(հtIK|0GDZ VB i?~⵸vN V2q:눈(}|5T׷iwEu(A g~r &"A 40 S[#:[ӨOA! g 3w xRL&]i VM;;kaa (t &4_khq6DDC:0:&q^qۯJQ(xvo?oWI=_c OԘ_߻-eZד{u,cxO ii] utqQ ?%;PM4 OD֪þnۦ$R D,vׯz-ܷ|m*T&D Si?C.d-/&I*kc_gay*a޾?k|q-ڏ;3ӊ@˟ IfwOvUcE}ߢ[LC|4j~0$>,h5M3hC9fqyvN:_bߏliثTGmzto=U;0 c=ٲDLzwIݦwj*k>[:oZ5CPnݢO"M5M 4>2A@Ȃ4gѵdFCEYBTB44vSOMnkja*xzzM91ݦi8 DZf&XB""Fд"_玿׿޶ڽ'MުɾRoZ44MqJ[a?n_}['K.)=ˋ-Zo+QCֻ]t;1&}n?BB5|ztO%dc?Rܟzu_k׵+ּaV˲9f-w}}j_)֝|GcӽK;醛"G?_AVMi/?>3sKnm[eZݪvj+v);{[cm9lw\mb" B 4M5M4~_t}ٍ6#'h4":ړ{ ޝ S]upGiеNа/ҍ.o2<ً!6 0kڊ[I~]Ia5NMS]>GZ[O"""!4eޚkZ{",MIaVӾjM0@A[D3qHGi2ܖ2$xPTƙe\b:2Fm"M}ipS!kR.IYHqifoJ2,fѢ;gu~"NɸMPa0Zwk̨̜[;5d3" L+yvF_C$"Iy_TN u `.h txE) @gGQ릮,<gμ3820Bx)C['pZ g 4;(d : &~Փ7zyĽz3rhv9&LEpU0AiA 4h0Mb g g8I\[7}&Mo_[1vva0ihGY]&^Wo:|Ho6l}cc'uVc7ޚd.踢CMզꝦN,'ay d}fT_O_QvwH=47F7y!©;oI={'Q'ˏ$M.Ro;4nٌʺɍ?JvkK}ߴkںNɷ}л8]Q1MtNAA 8ffȏۊ'[!vҭ.[wbү^IދzNo[44,&BVf"FNiC}R^ ^W\-C_auno=wUczi~ D( /]R|"c}: mnI_Rtzku\;do{DZ'SUNcM?]uT߶D[XO~WnЮ׽}/-~>-i}ɾKJ._'8_{6p=K|'  kxS\&u Umuplo_~^۵ݶ&;wߪ@?\jI뿲"_rvc{^ҵ$6_f+SSٺl׷"o ]Ʃ߿OUZz!Cx=nߺCOV..jEvcCK7jM;_q}w]{׵v5uv/w]$3JoKwŦ4S[NկWc5'vq-_hU-~zzlğ&>D|VN&馃 t!еkB8Ai2cjwa4I4M5 JݦWڶ>9c,_vnDwB""B""""B.!D0B!@@JihE!PN7/OK =9_{bx""""!v Fki_1?nb5\ahCE ʙnM0uN%׏VV"""" \{ ꮻگvbաg L L{TUب\XP,DDDDAB!mW0P¤DDԃ@A; ZɺònB6#aGaKY)GÍt TBo*iکKUFRQ{ ɻmU ԩ43~4uO^A^oa4׮a%yiʖ4׈Aڎ:v,Wez2lW2wZ#HЊ~ɒt4/r5-n)Gc4 A >%s3ϊG31ds)aL)N3;(0A@LC`AX!(z9C=3vj dCUM2\izia2taxBLL*a0AC8fpA B a&>=iǴDa;32SjOL&EhNӾtI?_I==4 U-k_ig@AfǗjrޫڭSOwdމOwQ\k}&>[M&;M~uMB3Z0 (Dv{5"1zM-w׾O\=%\di;4~Iˊ.RCi((m&-IEH|(YqD~Z00X@0Adwl/Rcxb{MZOi0wtֿlF?y1jAihCLi"rOraz_zq]coP_OЮ+V?֫O=~Dޚݠdm2;OLSTl)N8dC#DQ%_{ jۯukZ]oz+ԛ?=}7Ա'[T/Ti ]gl̎=tg'^[ 8-~'(O$q1ܓMӧvi< iI_ۓWv5ݯ+ޟЫMxU#کo'$;Nl7_m'7q]MOaױIuvI\Aݑk[ Ka{w"?\/\'Iy8z&8|&NX2=y{CU{1#i[7OW@HuxF}X_n7u^^$nM$1w񱮚ֺvn[OC}r^k}j}1>wpUc_oOj?B{V?J;㋷SMWnKA)w[z"1arG_>U}juj+?bk}O+[ǽk Dw]cvj!L' ~#Ad4_N I׵޿V*`]zW{cv?DRN}~"B"4BL !gt8(LTS4 4pLAa m4ЋM4L&&@&TDDZT Xҷij䟯On?"26Qw`>`h0i 䇾Q[kVڱLG_U~!"#Ba Wo`29^V_q.Ј# Ay&91ik[__.k}5¤2B"!!fr!aS[ݮzqvը4#[m{{[i  A,!a3vIBjODk""""""o =;״=Z'Dt"XPS !DDCQQ֭G-2Sg|!7JnT22 :œLƼf:vL)3de ?몄SeoLI7jiTR d!dx)FDW._[~v.ɺ[= 5 &p:fæx! ff)@"0JC =Age∈Dl͙\])!U0 /' N5vM34 5(B *=i „zhC qa a 6a5 vlypvS$?ScZ[TLwݯ4T?MW wzzi4,9 va=NJ!7Mvza;% ۖtN<ۧBiL!ϣh~L)B+]{OMQcc[ok}﫽'wW$iwMӴ@>gLFDG38 mmZI?_uI~_#okXPT m4v4,4 hLӳ_ᇏcp_㮿e=GGM+{]jNҼGˇzG;P &! a; 1_?B-ocaҽOinmHuZC֓MBa?{w޿_[~u~?8 W'(oID ˌ{-};l}ko_l?'tHwWݿ_k]ZbU2wdM ]CړDc=LMn1oG7_]קuM?CuL_A(RO#z$cLq}zVض v*]^9/s}n<u/oW|%;>t֓ӫS4T)Zӵ/Mnc[ݐՍ_ͧ{Ɏ4_cSwtmuc}ݵMV+~#zvVBO^ҹ 3A7L&g U ɎM4 !Ǵ† ƺKwk쇏x0A{o+q0DDDDDD5DDC:e""#'#: &5 4TаH׻XkuM]?)7 '}VmkZ_TDD|G" 6 i?Mv)lY=o򾿈L *h5N'bӴٿ[! HDDJ0B!"!^ǻ\VzD}]GKԐ55ujl={m\+COa !a00OA'zETSPB"#PB4B USA}""a;L&qB"" `^#aE #$v+v:=\^?+UUM0ƃB!٦};OOUB[J/;D;N}`;> Iq5[~gvIժM; w#Ub-#Q&z1p5:] gT~#tPyGٞb<h![Mkkw~]5Lޘ #28dNJ,'iݥnOh IL}{!#-'J FJ F\Qyyn"zDɽI7&&I-} ;MS6 f=i =?My,Nti޵oꞞ_nO.TQ'ˋ$OOXa4SvPra36EwN~>j{z>iXx`+~aU_NLv䰷rp뵻MkN< N3m_~?ZqV(_}N+T7Ec8˷Njh3xfaMGyάnz[&?+։OA N~[Q8ݪzjL8=T&߿w߫_{v࿯}}N>hUM$NwIߦ(߿ٿֻ뇶s}f015~}zkw뒆4ӲnT4N2Q1_wu-ڭa^nݵUx/_˳ ~_a苵uM.+ZAD.5coݭű";8~-mXl{mcO 8hLzݯKu|Ko}<}[^^~7ԇlR߷nkEuWjoz_[-/~v5E;dMS;~Ӵڊkiktݶc_ӿ4x֒{ꄐ12BaxA0E NM2N4M4h0LpC[OMBu:h0uL&. 0}'6?bky_D~hDDA١v0DG  i!""""-S}Q7vǥ޶^9uW_kRG"""jnINӴUO>kkKqa]4\}TRj=T^[-Gvo{~WmMDDDDDA!OSN}|kiqtd,5x"  id5ӰdVS7jiZn^j""""" aT[6bD3@B 4NUۼUGDA&"E =5RDDDDA,uT5RCg &CB¤" TkQ-HerQg2j@H"mpzUdj(#VR2';&Kڄ<`JF?̑z33RDF"2q<UN&|YJ4ܕ̔D#w}SɻRnړvԌ{דyqDNމHN(8wTig;6!Fd}a ԍO1w/~qOA(tX/˽CztNlz{}>ڶ©(˵%2QDۤa0B-=! 3I=Xzt?HEZզﺱtK~]I~گqJ䡻'j։ԛE[OG"3goUa>.?\4k} ޿_H<M;9M3[9T<.? 5M{?HWZdˋRq ]~q f:"MR'[GC][c`AG_^+ۺzUï\Zm^%ό7LgsA x:zm5]o ݧ BpHzn֓^4=i`] B,^Bf!FJ:/~EG{޿NOo~-WzL!q'0 ̏g@ bsvM혛6zY{@]׿nN;nDr8n]Dva4i6;9=kn_mu+1 ڴf*-0.Xz-.dM;>5y8 Bv8;K[16Űc-V>M_cM~ox{9CQçֵSvN7oի۽5\:cB*-OW⸽wau ^/uMɌ$'_}5M{JӻOM>n߽4^t],^=Ziªh4!]lit2;T]aUmS[M4U{mY c jO_맬G]1a 8h0B:ghDY & p!&iBE`CAT"WKop8kWmװB"""""""""k1 a3 &[+DO֝^_WF 40kit_ׯ]? }1ɎI8 4"-STv5xiWk?o{sAf!>4E_ukkjcovB(MWLwfY!߫g68 MhUն&m_ ڷ!jiivUU'b^.8l{# $DDDD^8p{m_DDAD}vzDDB &@i}hDDDDDeQd.Č"§6j4gf0:n骦pVOO[vTDy&DިE==wͬǿBP)eЦAVdJTϳ1Yf٩$e[ `*DDvBD8yؔuf~(d#E3i XxA0fL 9f iiBwjΞaRc&qٕ~D޷cvkH7roxZw-5UO]E Џ#̜|] #4 QQD;;ɽoG[%HvG8]a:3vlF9NDu|^SAK>=mO=dGqdlFKK'V&;4A {T(MnV?I?5׾]kWN?~z-&ᯩ^9dTm;w߽߸ik}UbcnN(A(i6[;It fa fy_&?׾ K?o1܌t uC^Oa>܍<[ZLI04Φ5"vHIrH4᧯wkv!_R_:ۆ5u!nT =qaSr(C?"=qǺoL__w_w[N[z'NT>h;}ۗOد}UX`]wf궿n-u_Zۄ{' Q7޴5A_}z|ZL{khC8;m%NUֶ5Xv  ]?W]|k<Hv&>j?k*kGQOq޷ǯ{RkҿduG/_}5ڦů~>[TӵjM-{_d+}]~>M}U6, ,DDL!jI4 M0jF鮙'M0wU׿. ֿ[awޫ7k׺_ڇ⶷ЈDA\0C0A!"""!AEǻ$:ii/T}~~,WЈ5G^ݯ {/kf{[!BaNN?6!u_7DDIt""0@h4ie[oo~׳ ,C'EO^Gmv|8Վo 10B"2৵AZv+5.k7-#CqP{=iwꅅNia>ɾ!: oد8.CAi@Bknᨦ(DDDDC IA4XZB hD`C!a'| """#MEX,C 8ըaG4WdG-#; X0%OFu'NM4L}Utym m>ӿ..,“yΐMSvh',5R=dTy E*JV xD)4Hg3ϊx)0N;8ĆfP3E!Hwa<%ł38Ϣ: Љ?ٮ9Y3?#>v)H&4j08aNAl8OM4BͳA ji`B#gfêa M0ZhFL6~!w7?Ӵ4MtOM0M ?yejv[&ԘL'蛻9(htNNN!ߧRY"fY5u{aHRI}GnJ k۹o[]50fy9Dt\ xB"8͊f)>3GJ7'1׺&}V.F=!7;Ut0(MU4Sm4U~﷯{g_D}~+}kZ'hM5ճ~}ڷs{1kݜ'_a_cMSw&HvMro}m4B"ؾ/[ۯ= ajk޷ X~Uf*:ߵN1ܸMzWp'zwWoZXb/ ׶44?uׯZ)5\'^[߻ӵk}oo_:_իuZ*oj iiR8 aUxjij;O_~?_W0]U\p'8#A`3),M2N07BІaC 4!h2-Aa;Uni*Za=}?__߫{ IiD!`DDDCDDCL a0W^OK/v׆ִ.DDDDFŭm'AkUNǿDZknt;]=U~֛O?qI.iڄnW1߲+t]nm'"*""#B І }5dw_!nCcwkA&:aSAjZVk[%̨AôgONS|WȇqDDDT8iUMU7V݄ 0B,&Xp&+[.#' T ja;M4D!TGQSЙ쥑hFiaL43[P%a˙oH&񦚧ǮGYD{cꛝr24dz{iޮR-g|dA' ^*9lCi#@q4d:IgX˳٪.bD"M4 B`TŚA4LT WB Dr##le<`x:yH<#Cr9 -3!T `ߦO];L'M}ӭEO>;L&=w--i,{&>M}U] S-쓥}-7&E|>qSi;ˇ{om!Mw$uޓMPKݯy;}հvz'dMNEꞹ(42ؾxDZjծݻ~k^LEB"i[BK뎿T8z]ua!>sC`?+|G#WcPš}Bz{~uC&?DۯKkOk^ 7߯H~7bIn Zw)_.D[6aOk 'e*qma*cdvɿ]6vݨokƟi1Ƌwpڋ_x.6:/OA66եi}];jqvC &2n^Tװڦݦkjkci[g4   &aЈ g UhEt4MU4XLdMTUDDDDJ"""""""""" a`Al*#Y53LEqn& L&~}eY[LZ"!inQ^1#uR31˙0gf}D~#$)&FYd4"\D4C E0L!a @VaeF{>je>* ء9d32|pRS0ܗϚ &0'@ <9=tM=:ZL&O fB&a i 5Mm0 Pao ։7jD}ua;OOw궷zLHd7DܸOkO&8rC8ݦhջO:L钋'o}^TՋjݒz'y': 8%vJ?՘c7p; t_{uCԘcu易^޽4_M߸NM+Zɿdwzƾ5]}I?/KH+aȃ?ZoA޾}&^N?ƿ'0_K0^ __j\{F%W_pVzMrC7^~ﯿ9ͯ{"{kf/mTGҪt~|i꼅 W[ Gq|Zw 66:cjV_ooڱpҵapZqۻW'F>v}ZqK{<:խZݧ;M5M$ɺev0DNHuM0 {A궚i'M4_M4§}ODFGX[L ϺM0L‚ah0B#$8 4M0A0gkMHC"""""""""4"!""""""!! *."#o- ) [$ʸpmmĂjv-' T[H2]`=S]uH>ӝ; XxDS;.m$ӊrJMqGܫS31Jr3Ag g|C t!"TDP "e8s3CLe9DqMlXePG4wSNN- *j4 !aSMl&xL&apB;zhZ NL}?֫鮵&=SNk dcɸw%n4\=iN|Oro&>FIyp5ݩ1' =uq(yn˶VdӴ W^M"n挔vIN?Ҿaz=??[׿T8nC+{kۯڵ~_IZV1V鱤 l/[ ӭ]<}jX_/|W_$RaJMtM^zBJ_O'no=oo}{f.v7.8]vI~dv_K29{aڵV;}].Ua(I868mSXNX .q޾wm/qتK~tVuZpڋM";ÜemF7O ; iحڶEt׻ڪTIB!#$̒7(P3!ahZh4Ah4*v2NI;5M4?];RCN΅h3y=-(d0B"}0DD\Aeiͱ"h4N"wz ֱ w"Dnij8ߴa$u& ߍ b#Y/&'3mNAj2td#^ci4C&|'9x!I_& 4wo'vzv/jF;Zo$w_ƻ^GyCDa7}[r }M{Ww7:5S]to!v! ?O۵ >m-dk[d=M(utV+ξم]w0jGTk%T'cAZ{m/Q0NTL&v""""&hjT߭4%g8_jZZV==E=C_T)BR3H e>3_fnLp AN3LfLFATZi]'Lw&Xפ; qDM^׿]k1NwK>:vD_y o֬kɡ֡}‡Do>K7^Xy'{CdUqS=Uwc_/~qw 馚vNVa4~է`E îjQ$FhDBk65m!"%l 6Ȗ ;LvD Ĝ" )uX2Lv7jaS[h2w]&}|'jc 9uoΆNa8nkWip9L]36CEq+Q:_DVu=B 3B< iB Ȟ؏[ ͅM0a &iψ:3*`9$}??jF? էvU;M0[OB} OSTpB\Y}Jlaҗn$=-AtMĸRpHhS4Sn>0A άh4ߺ~xTN5cO_MI._./tiߧק}OB$;i_KN߮ԌwԘW~ޓ~_{j]zy7;[ za&?x^OoݴQ7߶=aK/{imhmu_;rcUoaQ,wj׸m~[ KVKSֶW1+[^/ EɎM-)7l22a_f/f}߭7~i7ɿLSyh1{a6~$i _zh0ڭݫv+ЧBca>lK{Q 2pCH4-S[U᭯?bDzqQk&9uiB,&LL&2;5?W_Oc""""$a5 v ~ꪘkЈ0DD":kk~"#804 ZK"""""!oVEpyfGF$U"+1@L̆ e33hXL4gR_N[MSM045AL|kN׽uӻzҧV*i$M.-ɏD ^*`?p:c?wẜk,~VGaTOz,}۶6l_ GK,[u5Nmam`Իcy>둎;eQ'p}{~ DOq&>9~ȣjʄ-g-48аvj""""!",BЎEDAwQA 3ȡW;;L)gD";(WQreemX^tr3*' o꩒ 9B 3f^6ɦ;4&ri,Tuv-A3 L͒$Fz3Dvt._zal=Afp(M4! dFd !DDM+ɻUwA5M<&f0df!|COqk/UD:(GTU_Un:ܔQ1Rɻ;]444/iSB! g638}$h$im'dzANT;&7zk&=?l&N4 vgi`FqA=NOMƃOR, xa4Mݭi0L&߭~k~V|=?'mF;DǪMܛDķr ۵>WM[^{z_{[cnJ8Džr]<ǧio.?Q{5]~Kt;֓HQ'7޿ɿ޿u`;W_ӊ?w_ ܡ߶kv+W^]mn-1Tm>5߷ߎWٞ;oB;~],$ٵoKzzt߫֡P_/!i5mk8VB۶/_z[zֻwƼDDEN?tկ{Sv_^KaS^^;cՊ]cT^zw׻N5[AiUMSMlUqi[k}W׽V51bhDZд 0AMu5M?_:rcBXv|DDDA:a4@˸M4a?ӻݫЏP""""; m5(0GLD0B"!FauDDŜ$-2n ,jDDRZO["!Ds<1Fdxd$z!+hfT#Hqn5L=ĤdiN=AɅ ˳M4## Gv* =W[[׵M4k4M>4&=7K[I;{Vj [_qԷw&;c5}S޻ֻuo>=$?]??}k\_\__K'$cUץr5_]_D'r{D:k<v+Y8[ȶMS6whmb}_v#BB,!.еV4v;I;,~DDDlDDDqMX}[QhcqmEpɜLYd%)JHC~ڭuߧ;oWIy'o[UN]Cz&L?}_v-PTմ3zK&/ Z5Xa[/_[/~__Umb+1يI^]z&տ_1^?&C~Klq1GٍV߯W4]G鋽zu7&/~7aD5M45>ӫzCҶB[9# ' 4mvՋc״Ol5dz^ׇhEXL;AItWUqVc;68}hDDDDCӿMӆm"tB"af&&i_wb""!$aM0T Lp-8#Fi gϑgf*Qz"""",(8sǭ1M!~I;;OMuC{M'OM7'4-U׫ݖj3FfhGf!"O$dS'"\3H#">3UNqtaV#Gx][!,0 gp3nχ~Qb vk"`gA 4Lϑ.)4338okQZWvI?]SOM4M-S3h;ӾᦚAb}3[֞,~kIi7t﬜_&z{"o|[ zD*1u^J?MV5_W0 } IHpn=k}uõ=o~_O~42ޮ!Ꟑ#ۯ֑1w̯E㿾B߃Ç:vʽ>onu˚jJgŵ4v[ݥvT7oK}{0}޶6د\7 |/oeycB2"h4! N !ڍީׯׄclINnNT :g_AŅHD2 gO޿ˋwԱWމ3D}eOm ceۻX;XP 687ރ_xhQUM}?]>;#UoOQrql-еN+TM_VêjuMWŽS4_ &È 9@"-i4a;B"[TkK""""#eDCc"!,XDGKMgkjjQR*uߐ~dF)2gqBZfdg:<& OLPn<*s~}rk&%!ӆa7D;4" oL?ȾF$D!&k4&O h054pxP@Σ3#ːD\4ϋf LSaNiH|7ael*gFdBEr83F?iL&L&76!ͳLaU᧡fă BXM4Pӿ_Wkzvj}ki䇢nԌzRɽ|oL{ ir,zZ&;I:E$` }?Z[RwVॽ5Aq+[T#OR1&;iy';>'B$FhO [_Ivڧz {Ф;m^};MZWFaK v+^p.+O/Inm=??|m_^_ۇ\:W}v~-d7}kC#]~ck Qʲ!࿮_@`"C ;V7+xo߿_-6Q_Hu|/'E]v可J@1/Klݘæs!$]o׽7j4 ׋XՏi}_iݽKoKA5cJǮ]ݿolq{XDkJڧAꯐ:~)_vkN[5Ubj׾+=a}l kk iikժ{ ` !@ 馘":*MrOuPL Lt1;M5 ^ؐ8(3] !(C(pB, iЈSuii b/ ƓtttoMnf_+Ko*#I)k "gњ4dM\(A#xtEAZɏ-mPBMGJo]ynr/2ȷ2HϢD[ U{#C j2 E@&pL&ȌWNY 5x`̕kOMS0AV1d5evA?/M5L'Y²<]ޜt{;Z]C *dkxj &b"4Y-  s#$I<{LϱQqqM8ر$4Ca3|υ3pAߚ;#2\a}34&odc߭'vݴA_Awz#CUiUCO뺼a ) `[]kJu߾Owӵ$!H I@TLrH±ȣI<׭o !AkɃCknA8Z^HLY0 :`i ֽ{itIzտW~]H2p{ &o7ߵ}0Bh]{ zaL?+<7o/{)KCh5B qkN baŷpv>ٻù6U4Dqoƚmlqܛ% Eǧ}Mn4|%izGQqꞝ{nȣ8d14ePei馷winiS_Xi_i0`(  a40a0iLAalP 궘T&ia4w2؈a3X@`DMDEP@a3eWA"0A&MC A" ! cZj-j "-$F)uwR )7H(5+Z*/u \WvW]zIa[:wPO^ o׶{,C#CHa v)(G؄[IJ9zL- SL&պZ^]UV]^uaiޜݶv}Oᴷk$gh[a T"tCF'2&AD ͢}2'&@x( <-6y^6ʑ$4"d/MAA2B fNIh3bNA8f) mʶTBMX=  MOCN-;O q4Gds= A骄M t`ŧk}wizONzޟv{wiv$;Z5ZTa(O&-(v'CzD}IIޮLroމ>t=Zpɾ&׆$nzN8ړM|UrtP %bMGZH_X. [Ғ\cXh:O]xc}50OY1 :G_-2cKV>o^ߥt`p"ɫ RjֻIBIGo־ ^zޟH}vD=_v7mM_7vIY @Նc9`;7HŶn_9")˅ɼ^}Kn p z}XNӵm_m~OmR7N႘ZUE&Pd2(l[ǯ*{U<%kSqNL|6&0cB;z LpMv~[MSQ_|UGouzr1QWX akzkiv?OMol/ݦzJFa @ ^M4hXAHt5A'MSnM!wMSM41@®@3X0aMаAL!ap@p;0A7a# ]Iim*&NM;UTiӤ?M$>M'&ޑ8ˇoVT(oֿL SMi_o%I%NFodcK_Ԝ:'_TkOMoD$>[m_% ޟJ%V=[NFЯvC~ֿ_m*watҲ45BxM~4׿{NB_ʿؐ6&wS?In«$t ͉}J)u_3qKԁDO~'nDӾo?2ÛTO~) Z^uz=?m?Ap}4O_}/z vKӎ'@VJ'H3' S` |w뮺Vq/Z^L:7>{ˋQ((VګjL] ;m(~iVŴqCcAPzNVqiZOǦ֜E{N!Dz7!x i% ~}{[$uM}5zz>a;MS?,ȓ. guA4Aa(L3OB1KL &AeL"S' M0 # *d ci@DDDDdiDDD4A"#_lM<ȩ` @í-PB;81ԄIwM=kI2 SW駽 B!h0hZ툆e`qe#{PD  ªF@Xn>h H 7lR4oj@6DfI4#@Ju M$ $aH Ia 4IgTݰ 'Im'a$܅$jh>a86#?^v H&>?63wW(o Fgd;Ndad . {UWAB^kQA_ɺ=e8d3%km0e"2%&jzxkWRܬψ0iќAS6Hs$E Ag4܎AGāupޞ!ޕԖ&ꞻvөZ56JOk__qzSGkoǴo4M85,qW|UWmcץ}7 a //Z1]pz[lEFulWC}@#r /&w6o[ɿ zDݯ׾-]u?/sa}eE?T_^U{z9tw~Ӌf-wG~z>#No״m ~ޛűi_q޹iG;UB>⵴)6AqՆ{~{_ح+ֶ$tmM5NJ5d}?[#Ikaa_TH0B ֘&T"! Npi44A2á Sl)'˄ 8Ał 8j4ӴdRp`k v`8! aeI@B!ʐnl$`Јa 1Zh&Cf-`a ;6@%5A d2iL01Q0ATa 0d %0JC S D 2C>O`lY . X He[rxE V]X*'%3Q^]m%d*F[,@qn=4$SWN ]*!Ѽ[WaM\SBEv*WOQQ;+b*"Ch2]dJG0STjȎOtQpA 4gC1.#ޙ ˙CAߓ| "#{'鯂j6js_k ݴ/6m-MIG{#zP"O$t}t%_}Ac_ԘmUC<#IZqf_|:_o^9$ jMLg}|K}_M~: ^׃_&>F:VsXf.׿$M__m/ɳ&ۏu~ɎvO0wնowOu ij6b⣾SNj4*m_O^qQ]׬׿צ_HM7vUڹW,~kvjM"֭T&ML&AQM5L!5M;<'k}i4ӻM44M?i- hDB"L ω"""-B !" DFPZ 8`DDC ڈ$ɮX4xb#], j K"~z{AwPփM5屜DDPLxl$2$p^ pM[m\צ}!$4"Zd%+3Ju0fv#Q H'#s*"5g344 EdϞnWB3Ln<3C3;>) g3xD @ |2C! 0M0i0"A 3Lkh4zAa4iP]BN5zvizwzizvjZ}"1MVTӿN?-ȣ7ܛ71-&h1K'tMBoI%TnvJ,&yoJܓdazjWN{ nV5W{ڋkd]}}j]B["][u^ߧoTgA!pX[cxB@kqD?E'UX]}~}&N ӫ|L~vsW_[iD)S^zujk^g[&mV{\]A1l0?m~Lpivq1kaX>+N?wpղ8&튆qUZWżTSOıջ 8е}ڽյ״Ӵ~!VkoEu;VL&! - Ɏ4DPM5\&I400څN h4*fOinRDDDDvV&A7֎Bk 9SB!\DCM0 +DDDDDFHDF+- 73 Y3@-wwo!VkIۿ aק]o ON}fI25*OT; kcӴ}=ԴOA{:e0Q7aiZn5c?$=ka{w"!{\.M?u}M .HAiq,slȔ#EN#T" %M44g#;#&Qc駠„vx}\GIif)=϶)ɇuL4, Q9 fF6gٲMTMk,3a3aBhahڿI߭qh]~M;&NO{a{_]|u%7v+Wdo?kC?QZk׫ > kB߽ykwdo[bMW [/6ۮcc^ۍur^W]@Շk 4µխN"82""!*ao^n먈`A`h0;*L&/JMFDB8 #g΄D8"""Ijd+9E<~%Y4Ep#qG >Gq":18ms[S=WwsA9ne|)p!6R]0 .;5[X-Y+OӣůݝJֱ.Fge EO? m3h]E3S-jhf\f"@qhA@3‘9S6]ta0 (Xdr2oLqv}~v >MSC]85܅L|C9?!ɎBķzi$&;TO$M“#vXMɾLrq8Ti=]MGɾi_u m#?HHIEU׸o2;2;hGC@)#ؾ/UWvDuiqŬq}drn;-ıĄ6j~M*^]o8;!Mdpm?M&Qwf4'ST&N""-h 'lݦ5M5L J 름ZL"uM4NS[\FOn L^M  <0c )9 h0A B h4WDE,q=jam\0" B(: LI_Uj7f!@āaB e9B0za2sD`G5GNӽ=*ng D/!?DQifæ>C3#|5_\t.I޿N44֘J8 )<ǑDnbŧԂ3u&T*}ij2nQ?ҍ;D){GiV?6IHcDcA= }|O%  LUrpF#LS! mU6ҿmi#޽n;ҮJׄ!o@5wĐ닻{iwMqFJ S- y(a(a{XepW_ho_ߪd4[;DVU}տ[^Huڮ)?rYXkڮi׵OT=R iGI?M:kUX#ZT0N{kh0L&%0a5 HqQq4TMUS_MtCL*d-ڦiP3 "&fCM\Dd4!7j endstream endobj 44 0 obj [ /PDF /Text /ImageB ] endobj 45 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 194 0 R /Resources << /Font << /F0 201 0 R /F1 199 0 R /F2 172 0 R /F3 199 0 R /F4 170 0 R /F5 211 0 R >> /XObject << /Im1 62 0 R >> /ProcSet 63 0 R >> /Contents 46 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 181 0 R >> endobj 46 0 obj [ 48 0 R 50 0 R 52 0 R 54 0 R 56 0 R 58 0 R 60 0 R ] endobj 47 0 obj 1888 endobj 48 0 obj << /Length 47 0 R /Filter /FlateDecode >> stream xZے6k_TmX\*OIU2v9f}K#-s,&5o}tE{_,x/JZ~Qݧ>|,vJdV/׾/_h[>mzSz3/WQ7RլoQeNv"rqur>P]q2͆r Pp{`fh;gi\kp d;Mhu hMf\LMOVa>BdNZQ/꼪S[w%zixcO[}/}vK=ܡ ӒcDeA,Dq 3Ĥ8D}A6E3Fy5D[=#R .SP,)2YB[JMOmNA'a)%߯O endstream endobj 49 0 obj 2374 endobj 50 0 obj << /Length 49 0 R /Filter /FlateDecode >> stream xZr6M[Tw̨uL.jCːD"=$ǝM~ E!ƛ {=7E0I o7y,IzNj޹Ipy2I7$}-Ylv~]M_dIȄէID$ fju?T3E? # #].^:k ؚmGNl>ݷoB5FjE?ڭ Fi F`s!8&kxӄ 4'Ly&}ry~X\ Ed󮬙Й.;ABnb#Dgxo!KuI (RѰEkVCӞ I'Ve-kycy"IH]=BHBR$H;4R? y,?@5[H靯&3>@MDPV#WѨnx~Wc$&dvW2_`3P FPAH4\$9)xLmI:3=2y QJskl~ vK^<*iQ^0sU+cw0YjXŚc%#hmtZIt占@Ϝwnz䌠Z8Oq1zȆˬ5Aɐ|1TdJDϻA.5o+ʘI2PBI MuɳFJA^j+F)봢=6 k?E E/66`Yeը<ȅzM5\woGސ#J)k73%8ocx7>/JTMZ+&*.< ժEXZVY L-;ԀK,? zW¾=T"λ@C(ϭv}i0OwX\ӴEܤe0Y4K&1]w?.7XY_.Uj):d˿뷖&.n)5Hcܤ7w hDwu6]m3}gōr#?@іbJXL rT!ERIȼD"˾F!!Yx\)?:Jh% wB9B mvlgM߿8VTNsFA $W`Q(Ѵ@m/BAyOBݞ:TPZ>yfv p, ?9H-O_PkPe]uDH/gQR$k Q=Y9_մ,r \ `ʴ.9{ϥ:ԟsy6dTU2@qo-Ɯ'B 6Ag< *G& Si$vvj95֠Q['M$}M"~vTBΫʛ[G_z! !Kߗ DoHTvN +,1N 5 ,'qt)ig]+{+w޳6W1?" D&zB&4V+sEyEr ]bk][6ޕj>BBANWx% ƎFHrc[c+vٹb)A"z,l;񊐠m]4b+^Lj WuSj'Q}M(dŏzm!gɛͼ!j6Ray{-TF oJCFfg4ܛVGBj} EQ|]}E'k1EECtpU0z*o#6kӀQLnwH`(ˁ O*̋lo>04ba,*!Y7aO8b8a7 MӉndp#{=J1iG5r%y7TO"jOp.1:Ȭ@ *]ȱz&yѰjmV\RΞo\]D'6`si76]Fe#z]&Ny8)btqVj:o.Gi%lR>4&WQ̖ endstream endobj 51 0 obj 3772 endobj 52 0 obj << /Length 51 0 R /Filter /FlateDecode >> stream x\msHVb_Yށ'ցDk .&|adt++\?z3BhZw-~3dgfǠ̎iu;NdgW#sL3t3<v;gvW[1ρ]OGӍO }z0gzimI|cwd9zbpth`tu S7kZwuovit-O+{SB`% )_k=&MydS7j%| CZSƣfϟ%Ջ$_njf/2cWx.Eq߶ l YrT {Wa. hz^ KW޸ Vަk*+қmEFœ,Kdƹ⽎ 'e욶MN$Q+C"EӅ!"<- [yN-3T 7W9m?ZW!{,MxnSy+,]`f&dz͂(Saѭ7N|,*(n}*ZY֦}:&CZܧ`瘶\6Ĥ})+-UzɫB \|=#"tHܢz XOFUQeޗ fox^C(1Ұ{j"({&~ZCdB>=}yC2(=q 9\s|M+{vwx"Y~ZaN6NȐc~@(t-:G 緃Pa3W/;ʃh1ߴ~9F!)9P[dNi2mFӆrÃ6c#U=:N+Tb7_i_L:L_HCg$X@7g}SM#%ŕ5eC{-*}S :aE&EMCvg%D?H]`E)ڟ|fdL"eA}8 **)@QѤL/\JL&WpzG{AO/A9hSlVV=lF0~\8ΞlyY@˛0c<+ZȬEyHJP9SJזY Q\ ['z(;⊸dxq`췖D*%n"F8"s'lDuB-$t%^"LOaٮF{WtL /K$:Dd+Zz^0UO>+&ٞSU_f'! "69~k45oFf)_K hTH"z%2 $,3/-'wBZ gbM& >Ȧ.֜;[J7sS|;ehLR udQ kblVFsz͗d!@$3#&ZАA,ϧ="D7SW(ͻVAB,LOS͠!8 3R-K#}ebY|IRlU]U10M#I\,xSq{U.KOΊ/Lޭkkr9Yf,^c~#HFNj.47DvCaV01 M]oYG5dLBI֗0ͅIn],:-lH7|0/+PJtU.7#>.PG;<wN="⠯{K"JfAh•tCKj^u mx!+@xbC1RDPe = qUX|@žU$TFW롒CAO'22ZLY&ʏR@G(WF@\ TD 0}q6J>|rm5 =0pB8Uy=|%.@}wXՅD*|R5@\i`G:P'd5tuA+EtQ`0.b˱Qn30ifgBL.yjS.U@B%|OHJ Kf=F Uì ^{s.H:,$&XډـS؉cH? tD61,+A) cc,90v:S4!Bq3Fw7DtB9ưJ6*塑MITljfu ĴNx ?|X4;s-n oߓGY͡bWJc3Jhx#8oCGL>^8؊a{!{tLAY BO/jD FR8yL &jjL!9UGTDDz1?js(MhIo7\vcbeݯr/+Pc+b Mԗ HV N0"(1uԚ? \.TTf2[n%j1d906sxiީ|o+ˌƄy20^m_ģ~L/}823[ЛI[Nn)U1q-$ʻb C%Rihg&X}_<{"|w0>,t'7 fEvqfym5v1qÛJKCD<ↁ,cpۦRlEBHX=IiLEd~WF%L_}>ReX'bb#E68^HUK& a d6/Wv7??ؗ Grv1^~y(?<w|__c).~_-kI 9˖W-լpxJ2hXfJPs XܟtSJA"/˖HI9#6nZq  ˖w- Ѭ [y]OKC! endstream endobj 53 0 obj 940 endobj 54 0 obj << /Length 53 0 R /Filter /FlateDecode >> stream xVn@JKrrcpV8qKEIRU?_cX5m*.<3;潙*f R!j` Vup(ê0QÕp0gLwBӬ͵H{@']v}FC 4'UDu:boeiʧ]=r,`ꍺz,?Fq A.i_LYt$ :&ByLw(?( XjD0"gIe^8qʓfmƔ4)tJh v[X=yǐuMQ)lKֵ5#C5 =)CX8miw?J)#o=˿U $D$π\N6v#'hKD`Ӑ`_wHJ#l4od`hxF|itsiRsLmܫj&iQ_dd7e^4L g]KB<ĻIbuĘo:]Y ul]Qhp k7.2"× %`pni&4es dSx~X&~]opm Im]y\ ]j AЏ7iZC9/r9@:Q6~޼-]4p)vHZe,3q O&m#ސ2.mW<0eCe&Erlg>pɝtW[ؔeɽn/,<=H ogr>*e>%c'eX-ی=}1c> >D|揮ܺ[;1Z *,t7/{Go-fm罻EA\c;HRiV*"r endstream endobj 55 0 obj 170 endobj 56 0 obj << /Length 55 0 R /Filter /FlateDecode >> stream xmM @ FO;dg]*Jh9uZ2 w*"AV كD"1fAbndsfE~BR{q|mA$"4?L32f4eYջWHNZDz6?ƹ݆RM D endstream endobj 57 0 obj 36 endobj 58 0 obj << /Length 57 0 R /Filter /FlateDecode >> stream x+T534R0BsK0gd˫k lH endstream endobj 59 0 obj 11 endobj 60 0 obj << /Length 59 0 R /Filter /FlateDecode >> stream x TC endstream endobj 61 0 obj 70989 endobj 62 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 61 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream :+z&l ?$W7ȔJ eLL&d;[NTWMV}WM=uwɌ^*$>L|+nv7{۸LPT2L4ȄiK٦D{a*A <`Oe|63BK034}03BSpvz"Fgټԓ7DP !HL O3aqa9 M0i-eXpYZf DPja4=>M>SN kiCPijU#·iVBDonmv뮤Q}or1&'iK|w],Iۓq7ɎFX=kAj׭Ӻ|oXߨ'v>kO__}?׽_ux_*Lt_-~M]^  x_׷_Z뾾^? {77]}a_ KޫI?Zm~y'Qn1g^ߘ~d2)GzV"ٚڮwv݅mk=te60/ޱiAq,r8H'36hapB8 ϳ2-cV/^#N;6{=ZM5XȬO_ UT5OUPjT=xL)Ga?qdP3_GI{UTjvצG oe^p"cMT'K JPi*h+jA廴ɎvP*T D ip4,!h2GL& 4t&D k/HRTrˡo&$&Ns&;ӿZ+"!dgDC(pDDDDPN" DDDp""˄UOi%&*zi}:"2kPvOt]_wum׃I~-󇷦X[ ZW^+aacK{[]>[ '~kzɏ`F_可zۄMZuz[oT7.r%.ˎf5m/N&!?kmMuT.5:wb)6DZjwiih]ޟ؈#ah4- F5B54;Pm 4,!Av#j#0f)Ly38 6|SM4 4首G4Mޕ:-wܱwיyk>YLDiEpDv3A/\gbP NLL2a7ֿ jtͯ1ӭ}{? [,|{$4&:+6G;"ihHUTZ~ jIONsJMSCRlq&UaD |;? 31S8r$"]"3De:RKyY$2p &K"""""<,L(&} K9p ;A8h;ALJ4V$u9>nQ]-| qV_];wi*zzݭuӽq }]WW_P ƕ1J}IS!=GnHU$!g`}H)!~W+m5^L{}O_~~Lw~ɏۯC_lu_ُvM]\3݅cBz~iE[vbcn[ v~B~߭=㻋cT$\8ըo[ i}vj?݊Bڭ5R7US[TtM4L&zi2N ݤpY0LD(!=DI0A!DA8 FD0 )N0a4ЈfeM2C@˅!2[aF 1ogkmyu]W2z^M2Ж'u GD䠦r,-MBi>@g3r>2]Q(;~v#F%&J3 ʖvexEDtN¦BT g’속@ϴ2! 0CL2#3,&KqC32$S- h2 A2/(ɦzhWi?oMܸrǠS`џ¦B,'QgHJA P^І DimkڦN¦k%iI7m'֚{tCݥh=0N&;N{M55pi(=7O^Hr+׭n M|'oDrus;{O_t1Jv3׫_޼z:za^5_M zitIuOsvv.[W뤿uE']{10Yz̞ĥ?V% /x?ݤZܮ(8 8|`!Q3'k1 ֞Gd!4tӐŶR6}U? i$,S Zg0K 0 ! @07(").!?xPPM3NSaB/?-mm>OOӻ4OM40PA * 4ޚM&?_iIn{O[BMֿKC8wVzM4ohŶZ~{/һ:|M"o߫ړLw-ݲI N:W~&MOU#p_wv'5KկޟbTXKk%(mo_N=Iz#wUl^cuDƟkhͯׯ6M+k~ӊ{lkm}8ӺOU5R1n?u+~5᧲kvդ>;K_a׿ -wK_Tv 4PB!N44U׾.OZO>LW x~=#?0VĎmv6,x맮@`akT!-P 4ӻTUm( _VOxc~MEzP!bQb.x4ւ h?֑7^ &VMRi",-޿oޤǜn_VDGٹ~˶#7׮O!s1{lG M4PTN!IE-/ҿ-h&M|ᦋ~ZXDukV[*7[IOo~Ɨ?ZOjO6E.Ou$qjgh!ۨ7SN"EiEz /jMwiZqW^kiǯMKtsyZAij;E~U007ߏ?]-$ff~3zg4xL x 0dhϒg"G fo$LQDuZ&>qD=DDrcQUvɿ/_]&}0+_{+/Q__־վ2Wy+M'(Z*H#_^tø{U魶|>+׺~i,}1X{7׶/>_~|c~nrɎBߵnd%u [][_}[dX*Z @]K~?_ }l^\or& ~Be>IS65^ZcTt~$BL&EeM<07A U;$=mai{_E z]K[+"""""B!"aXTeM 2&Y jMBjvjߧCH|?Dǥ։7?koC[$N"$DRq&f & 3L4&Ū)$; {g-'KүzS{q?#X"""" ʴ""""0XLտkq~'i[wg,G>{[PWf-S3K#{} ƸS!"km[ib];}oc1kak?;|_ _WJ*~)ھcM5ikzikdnIw״iu_ZƒP@h0LL DY) L&S5B3XTT 0itӵO1 0B"#%4"!B"&`DDC*F! 0e KЈ1 *C_DG--F@ovb;_-HH[Ta?cڒ,Γ6 30ge,B ڧh2A2"i.g yfг!F%⾆KV Ɵ}*aLf0 h4-SAP:km5M}15tjG1-vU^T(qEÂΗYo'Gɏ<ܓ."c]oDuP׮Ii'uf|'kj:iWEN$:J[&zz7oI޷&=Ic6i㑎C8~m>ߥd4ǒAUiHz{[hLO [|!m~L{eֿOS=GmN)Io_{KA JX?<{L)8i]:[dt\cQrQ^"bK׆{y!k֙ !kJ}kVKJ?L>:ciX⶗^&w໷&9_x_Z õO#4^=}54JC~د }d/Aׂ/&}>M0B"La rӲCiO}MkU?-K"""" a C!a5ۿDâ"""""?l߶uzze7޵&<ýC㯶2 ǺY#oAًmƜ~Ҹ(|q$zw!dk~#xbbN->)b51QkƯMzwbzw馘^)-vx/O^n§h0 M5[MUPaS!Tue5ht; *گkehh4BED0B|L!ap09 {B!r Xi."-Z *fӰN9Ca~DDDDDDFb.#B"2vhp˰0`A"֡ADDzVڼj@GcJ"#*U'31e>r8ψn$)D4 !"dt'izLk ݐp&3#?4H" ddheA3EA2(g̝K:$IZi- 5Sp4vx F 96dUȩ2UvFB2BL-Qn7tc$UM%ONNA ՌaB_}4Kޭ\ DpHw jLz^M4ONw{_u_HkZxI[I挱}_sgF{;׫li;#!>תTK_qOzMQӼ+ˋo7B_k_NC+<>MK znzr~״W&?_/Z^-Y'#๸5Y3ETl)4A`g##, ̃|2"FJLQ"`g EL C_IZ_uЇaSa A5Ldta4X"&f 2a0@z!(O j0?K@uOzkIҡj3p^kaSCOM4a;T4}Zɏycҭ{/1ﭯ]K|֭[cOWb?,]&?xDM'ovIn=mKwrcc;Ɏ];iy7ɾ8[U1Q \t.1WI{N[}m.F}üd$N=n}rOImBii_wwcwci}bXt؅W-lUoƷ_v4ZODDDEHXT"= fB,!jD4'}k_]BKm}ۿu`ӈ"84""!hZB]u[~|?]{_x"=u]o)COָ?M[7w߿onP߯__KJAD1޵mUhj]wu1_ft/lijkTNYl#Lm_[48[cӸ&;z>#1/~/./[Joljw1V׼Z{}w۵jzvZ=jci :b =3$:i.vM0M4,t1ӴӴ2u kzz UW5TeE """", hDDCDhC3Z M GeAD (pAb4iL'a$8*I3D*h;P2:!W! ! DDDDDDDDDM`5M2] fhd'$BȈЂ~pn]])zDLs7 {/PI'޺nR&{K݄ +M`^Jxnl0qWT} On)6.>mfo3ҵOO[qޅڎߧ"84kjvDDF\DE-VrI<2Ir.RLR')a320C}F*lWTg#kTM3M4:gS# 36hg̝֪iӯޚJs[Lr[Av3[cQJdUDt^_g;A-COnA=p^`լujwM,>AN$"~?j@#z!q'v{ NJ$N4TV#" +*2ܯ=~t-0xOд&Oi&C 3i*5(~p]q]5ǪKHz**z{ Z&Zޗ&? {_TIR^z'KW$v׿\*pްU*mI.!1Ҭk]V&?(]qrN wm޾Ux^uH..U4 8Ӣ/޾Kw_UJIRJJnZg#A졧3O&tT β|3␵OPFwEO0؛O*78h)cm/叏D5W%.740L! &xPMa0[3fn d7` `n(B3"pd62r‚ > A|rǵ׿UpaYm.t꺄]|OiiTS>5A҄Ӵx* 0'a4,' h=4§ vk}=ݪi*G_z]ƵGJ*$;Y1ccOEO 馚wijh4,! ""DEŅӻ wy7Hu_Ɏ5 IۤWc!n1uoӭ_Wq0B! Ņ _&=i+WUZnסdR~m]1'뺢cԷ;vx^C7}&c(OlDVEEB"(]Wx/zj맱 km&RqkdOҥ""""";_>װ_QB|B7u)cEZ?#p_'[._aVU|W_?*v_+q7wLzDm_ L__^o/D[OW&?ds+8}Y"}/\o i*z{8O>>68/btӋc@ 36H t}Ȓ=.;^ ڪ{Zi^qVqLjjG UU3gO>Gz2AH24!4Ⱥ(ZYطh0Z'i Lia0L'jM"W4UTi魅^;^5[[&SIUwiv^MHoAƙĚjJ""B fx0AYP`4) &2o 4d'i '4)c˰kePJ4 tTҢ\jLw-ڢnU +8vWQDDDDDDDD48Њ#! CDYgI_WU<^SJX#(]hΑhdJ=d6h4qPЈ5ӭ[I~^ӑzL&la443pa<.~Я]uZa04ik t{~?8z˥X7K,wXLAoi^?TVcҩ* uCLzuɏ 7 O]?/;%}~}t=rc뮴WQZ*^8U]/ƾ֒$׺ E*\uT]/_>ׯ1]r#˼hTzJW1??xk0"RNUUꗥI|kWma=PML顱a5U[]/[w銎"- BᅈB- B" }m ~({U|DD[hWYBӴ"װ j:MB8DZDRE}2ZDI>A/&MU4#(̂"UAٸ 4@ia&U3PDFCg2'qN]E Ji_ g21 Az]V5k G,{ߧ&;+{]Uf_'T]?-5.5u'Z/wF:Rc\zE9,:^_+KIHkǿ髏}V޷Pydc%7u.p3p;=?5 {7[zaKפ-W7C!pn ~_-߷u5qޢ*Җ>_ozgF~LK r1ɴMhn}|Ng/h"[z6D%4v3A,3<XD+If"ЋB-U;Swjwiw:?4L j馝ޡEa b-4.O{Yn==4V; !vB" BSZ},UIFDD4 ]‚MRcO&8">u1nwKzNZӾ姬~/]5[KLAjmfdmQ6imر!a ~Z^&2ٔ|׮_z})nqzh`wg"Vq$%TB"BvհFƛM3vx F4 "9OnbaՍ{]n.Oi%H(-]iЏڽK =|fG»M;O"FEj  P:Ǚ>S3'e83HA#*3lW<&8M4`AT   צ7& 62䩡gLE8A4 n(дa J! hD&C"ЍjQ6tLz0jzjf$4*0aěLkէ8wKEI-]z,|konu^:䜷H^`RoD ׆[넢t5okC Uij+T)IY1Ҥznk_Mz%~uK[}*_n厵۪+]/ֿZO|oɏ'{:D#/vi%#/))c`WIDhE~v*"-DG N0 iOTidoB"""F!3A"-0pCDDDE![Ū(6P)VǑS)QBSˣ"d# &j &&VL}U5U O_ֺ-"^ztFI ɏW%+Rm7r$IhAF|Sh dhO^4dEtyyMQBEOCOkVC4AF fPaT 0M>! & ugMhfa,̈́F]YΆL4U5O[M;M|&a00L٨Ms8jPAM B7 ;}iHӫOz׵5Nz{T "cN-TMU?&>L 6McMDȃ"cBHӮ0='}>uɏD'NRoމߐAԐ[} zd;Jnc;mwt oJdNLto ׽ _oӺ_qQ+8Knhc8 ^zc^=wKiuo.i~B+q%i~~ԓ a{}][^}bro ɽD}uoȤmz꾯f/T_~}z$oU/!މ?3 -qv .U [ٍta u]S׎=}>폋߱Evޱ~o}:Su!\|Rq}hFMwkGW&>%k^#kcT4EWX5mn5zZaG }{LS% 2r15[ӿ#SM}SM1fldQ;プdv/Z &qS QЈ04&Ageiiłva4 iݦd-_H3#DtC"." "Atc"!C, hDC9`M4A 5if#aB„ͰB4b""""DDDDDDDGuAi;*PA hhGd 3W ?n7rRɏ]uMU4j(Lq+Y?dIL)4O^'\[Dߥתӵ=ưd4ͣjڑG䝬&\)cI=5Tkj0U]S&;oWwvoW|oK^:Eij_}?InUзz_xz_+L?a02i ;iiEUM2-6lVDE";6 ж4M<*zж",!DE TlDGjjAb?-e,ŴVrX ku8&(FZNkXLuz骃mXba;bTp-PI[MScM }\ԜQ7{rc Mn&>w[n8ˌN"oDݲC >IvJ(yIIWTǑrQ_x-xO\?MptݦJ#tO=^oqVp[Z߽1w߰^],z_w{^+~W}MZO[^o?=^o^}zּq "^ Fv^tfV^2ֽ}*_]v0i y#Fٴz[f=?}Xlu&L&v!TB>xm.;p*=K,L3+Ė65cZoZ~׏uv*}}]u׵%=5mjUM4;$:ijvMSMSL$L{M48":iHso򶥾 ӲCM3Zvh4ЋA"HٴD9a2NePC-„XhDs aa0Mi:LMEh]aaT8DDDEFM8B#x0!Dqj)D<T[%MВ)7j:P'IwvHJ^6`<*_*fydi'fH1WӴܞM0P' dz4^(fѹ2/#g3CsgvN uK{wki 8 JaT3aLL'Nϖn>)̙aO|j^=Uc1iҡi[Oa40k}\^HI>'y7rcmȎ5>7ia}.Ӫ:WMO'ć"!r=mN(4Lz.1a//_W_ANEAޝitE/AV⾕{wHvC׿L>~}D/iuu/\~~P/UDk}lo[Y5My oVM֒/D}JӺP۵o{[9~Uk~8nһ_=~tf=iMa} m{ vI㦽 ^wøi|mi@'qдЈh[R1iLtiH'Ln1IDDAaYxeBi!B":vwvi݊c""""""$,"a3L!ziiMPd244ӵbDDDDDCB"""""""Q+qȊ)j ʆ+9&i2dB2+aBz|!]fTꆺkzwoi=p [ldM 4v7۶# ml}Biinqs *4iڸ,a2Zd=\2B$f3ólC4#33dh3ffffIo?GjpiNE!lCldx'f#l3 0&3 4ӰjxOia3fb !OvgL&oMZzv[OU0iizvYWkݧߪZ¢nkVN&?p7Ǣ&nIDUvLvjhܓT& n4n:NKKz}]koq8_;_~5[_ZkWuߺ׭u_G:>o&]y1C߾_ZkXŇ z>o[ݶ8EH6߰_D]cɻYq޾ߤ굿[/s 9y_;~>ޒ_;^l l'a=oO_{ ),d(ԃGfr9̕Y6=~jLǷ~Ɵ ꡅbcBT9!Xt[XD*?}^\Zk|kڼ?8~&2I+[}ߺi޶vůtBawSONT-i鮚ijaV4vM5$=T:qƷ0i݄# U4p<:d M:AD33AЋB!Lx&+`DP@؈`Gkl2(38D8_)aDDDDDDDY! "vJ* "30Bdc>fyՔihqdA5DDF%a%4›h3mPi(ML3a>yS8fe6PFh;խR];TiOfjL%*7+""Gd gL"oDݢoDi޺ַJ"ʈ gq)LU"q& # RY$!ȣ7w_>[_C[M;MAgɕiX[L/i$ڤ~O^F廭y8rO8n뒸?ki6DCTS{^ⵤ_XJ ߓt^N7-'9^4Kij{_ק봒j\_}[$__8M ڿ~8{aZa~տm֓뷮/m f֟ק7$?=d;v,_]z__{}?[Lwa.>Mkk~OiIo?u;swe_ל}/]~{~L#OM?OZ }mzةc\T;شJЇkhDLÄZh4# kӰaU={iv)?eu^u$ DDDDA$EhD4- M4kiaq׽[]lhDDDDDDD]@ŗiN,v؈"""""" : ,AAYL+g|Gi3q &Y6 ݧMi_Iu^iݢnMV+Dݭ$iԷu|6Zikc!ԷhK1oHwOMLI.47\q~\dˏ# Z#rWdiI]k%-^J.[iݒ}{ WtMwOV_0K[Kçӏu_I=w]^u~ Gn{>/ Wo^?w]Dߝ]o^Wot-A}^/_uTR oK]oo [f<9_ߦ&R9K~!_7d+{^eJyźݥv %r]jJm2Ve׎S=mcظᄘ%K~i*^j+kIZMS\q:]qQ_[|{\} OO5O[T&?Vkiwwwݪ 44Rc$k}2T\8UTM>h4*k> &c[Ӱ a4hZe‘eL .ЈU3gS2U ^-y2IbB!!aA""ЄCB-"""""NBL2[EI3C"Af3ҜhͨxL+"$""""4"*#%u3&3F4ta zvx"yfqBX30s6EC*vG[uV{=-NMB~rw^W |0 =!e4!@f©CNB@e;?J_&ju'iՠzޚzaviAK_[M2p{*yqn-/iՄMki^vnIu};n'hN?$:#ӽi !믺}:I}:^dICDߺ;׻_/⿻}R?}?:sKa樂/o,~L}!kجƿ_ KT]}cj>B7 ߷_u?^kBt&>c\{kaY }oc_Jͭ{/otcֶkQTmݮ{i;B Uf֭4]tS[jQ_ UmظotǡdM BЈj4,U4Ӵx_#olPjޟWbuDDDDDDF]hDDDCLCřa Liviگkka kL!i w 4aLDDDFId! ,qz//㰸h^#α6D+y۹6Aڈ_" iKɮ̊c 0L*j [nS]tZku֚wΓ DK[Ċžc5,@6G^eyxDIY2BKH.DDx.$f~.Gb 33LGRa n3"pdv9 L bApV@F e ;A{8)S!0A|)s=g߯;$IԷޛ& "C1ܘnMS~CU׿N≽DK:OK DԌw.2≎bwZXJWZTqkZq=4HW_ǿ \ID֮W6__^շt=W_~ɠ9&ۥ[L߫k>_:q?/K_tq>r)7ƭMW~?_{[ bUmk쿫[Bq܇z{/_݊+kض)(D5/|75mb~C MOᦩڦa;_r1ڦc"""#CM0BA4!-T)$>[RM{ɾJ:W]4;Гvw^)z}_UFt+dnI\Hz&HwWI4?v0L?GZZljo *um'F)n'dza4 D2}oK_XW_ֺ]7Kvu6)?jW]ҽVI~޻ a{gZ#p_iuމ+oul=~{*TK˯kBK@;6[W1_=V-T/ Ǚٵg?+{v߯5&¼ZƟcI9p9/na3Z ;]o?#qT@qtb~ ^hX!g0,`T0 7)21wkL|Vpҽ~"#""f" =MHhXB-4/44u_DDAB," ;M4[ThZ 83 ial-(4#k-2a+&evge ʞ , )Il;roBM>OU\/[z;W_whvZs!c&5zAzj8ٌh(&N!90>4" ʳ$aݐdЈ4hDDie(|FDE 셾SAި>׵MS[&r *,i\ 2Fl8 i33L !hDE/hڭhTZzk]M j~J04AkdɻkoǢc)1+nk≏1HikV)vk'0洛ҬZy(nOodwHuZ}(]Iv쓹1 & }gw}Ui~v־~ӭCq#߯Z~Ua|/]ZUau5m_ __p/=ao~=_7G ۧ[l$_(wZtwɏ=)unXroG|ڽQڊ.6HDOjE=j]鰝i;N[NÃO\VOnƚ_~Q<7Mo^ {&uoL}ޅlEDmX=2nG; Vi*b"8* 0Y7,!iϢ  45&uQ B""7i1x#ZC Q#Ÿ[idtPo+f{AL* uа%U L*^vFiUEBh&y7 wG<7/ ioOXH4tz_HpwuoZa}nެ/3-ߠ7 -/_M G|5꿿 څk;Te&aGh.~⥿¬ZdJp zE &>&ߺ')߯޽#ieDuOMix׵vH>dsگS]4vw*7y7k޿{k~iǾ.oK1 &_l_V?Xe w:A~kS޷M}ƿ (ޟ^_U91IGOAm- I3F -4DTܮoi[wVZQEV4)^0?ڭ۩([\Ag )34`!3 d ͝{쐓a{OME>⩪}I4M0q՘T(t"dADA2e iMk;3}3b48vP#28!=c" Nkd&2mgiwifEH4-Pa0L&I0`;B0' FE)>B""" "#iމNgtvO[N00$YPMBh3ٌ3@f<3ai_?8` FDCBD!7B"""""0B -<|EѣTk&XaBEA?Mb"#&\kI?odo]nN=j4tէV&EEDDuTLti\_qZ'N?CׂZOr蝭MAtZwRZIյrq[?K8vi|W}_ׯi: } >K{K}t-?a0Gkv+UqTM߮2g}~vWzq}K!a{WzOxz}Ű_{683 זU}m}]nڪ߱an5bۭd*Ջdud=uջL'wi}c[*-N8{iy_1ՓVQ(-a5AL&!״kqlv[w%T΁# DD[! EAjXh5PSM0iՏcuQ6E+#0A0L,^aa;V "#&" Bja°!A0j !jWRڬ(0&ղ2E*L4UvUIg&BM{މɅxG/ JRdЕ+Zs? :Ed ϑ.˟Ҳw#L "2uD]2!, j`)m 2;?a0A4YPfcLr3z3B3C!#?%„g$ x餚_!کd 2צ_Zt DW:~+c__m5a3&M?߷ZUML63oP_qow_aɿwN4K{_?^!iqB˅nWnom_XwfÍx[#d;đ(U'vݮ^f=?.:ƾGhTV]vUC>)q̧F#L"DP')Q+CI5>+Oin+_Okkb}wڦMa5 *L> `#ӌiⓝ2QaOPVv$4[zL a5#2vi`agp -^iM0L ;1Ag#`l" ̠Ȃ4e&fiuv'5h+[A궶]5ciԕa L &CAа &D !8B!a+}"n{NB&; a6M48AL0 4$M3*q2y &CX<!e O """-/& n|[DtWuvM4ii'LpxB t"""dI~״>KO'H}=Z&D.$=ƫnO&}ƫ [o_|{d{Z\LwOV'NjMax U___zm.I:OMjһRqkY(iG{UkZ<_X__XFKa0oc_b::ժtըGo__Rm28v»EE;I;P~.?&8Bӵ@еM045tMu4Ҵӱ{K]0DDCD!k'arhE & &!AL MS^R{,A` & a83&:hEL*¦j &L& (-qKDCj9g[Gk%3JR" /k$"oAޚ a u"%N5dIM=5XP}+w6 Vb:bEҋYHb534@ iwV}YuY* Hh^BaY41b3J|ƆTfn=}D%6ͳQ d gTg<;#Ff '!NFds$N2ha@4!Pr8#g L[M3TTkӾ N¨! D6 T0CUT,!=SNUӺ];m=iի hNX։"wjhtÓ[$oz&;)=hNn(rpީnM:W~%O ܖjI6hWc&,\oӽ_t߿z'~:o:?o׿IkNO~}'KQ/k urP&=_=/~~_?KogjL giϾ_5j$:-L2Td}+_W_WwUTT0gkqNZpN?Uo_X˽zW}jS{uVm;vݝ7_-0/r!u_&լ-i[{ %hW]j56Og\ԝ]=.mv޺wmuڭum(){;LЉhDvxԉ !)ˤo'|b~V|]ǽ{<^߷ivj+kCfC, ń8Bt4"#8M2P~j5e. ҽ{~?O^*kz{5M0B55M0M<(M`lqOӐ ?DN"<Ȉ&DM3hC8L i ̏Zy:!@ϐ)/˳C4"/܄.עpꩧJ}jmz i5 aiٙ'vN1ɻ'8$;Lv{T{MS-zi|L0A ~M׷$vOO.5WO)8v}KvMɿIމӅQ% %֬/UhV8vOOrqtN>Oz._iwX:^_nh5﫮NFd8_IجW:׆TuV_Zq^X^S/a׭&? ]NRq^u_oפ7:X_]iwׯALµ fݧg=uI ~P#Xel! ORc_KDx$fջUnt[x֘ji{qjbd!ce߯' ڄ]S[Oj+)B.4tU80qf ! & B jkWCw_x 9C"! !"#N!B4"ȣziSMSӴްDDDDd"",!VLd^Rv'z'*D(hRqh4"ɎVDD=EQE 0^MEZ)SL!UL27T&)m$ym @&I4/=uia3Ts>v f"*gQ,۲&;,kSM; 3 =AOB53d 猟6,=;M?i_Ap*Bh>L'a4# l&C=<9rYDB% 1OpǪ$=w}.? CN ^AatA g <ou_]{z.-_="CM; Zzik[ZKz S:Q!'qdo&Luc[_ZnoWz{6uXL=&{iZtǦ~F>䝢owR5~5 )}~N+uk{%OSU}txZ{ _hP:L[u~n$:/{i}}tKxU'TYwɏn_\{ionW'*DoUn$ӵB]MxdwLA]//qjuzzwiHX_Vzޫ"w- WkiGZRIKسtZ~z zɏza5 kpbocؿ..""La0@ii &?(ti馟k^7Wumi>"""""#/iB" &LhAX2i'iwa[.NhG"""""""""&di ΄4"A4{!$!0JA4#|BP)慄ΤfHC162Gdx SAa=a4if4BhD81MOfFhvL A;<#3CFqGi_O ڧ_i~ﻴLjag4Sng0p@A AOheYGNbHzRC.('7[WNEhI$?7uiuH0IiM=V됣'z5Mliw'}=?O$RtN;OHm!.cDܘ#]ڦcꞶZ^뵂V䣲xMd(8uOoEÑ!" ?>tIk] .W}?}hv L4Z_]]-.vF:^?}xR v}[]޿^CW__wkkBj!kz" k .HO"sp}L-! ihK] ~k 0myoLi{_?IDֿkݶGq_~L3 ͷ޵%o~޷t$Co_xzi^5[mX>çU:l`f}~^o]juP˴ݯi׊VޔW]O B_Kg׶eV)ثb-ݒtڦ:إkWMx_lk~]}^JZ hD0i+ i0vM4-4M?M5׵]SkW ӏTeD`hD2( T M4PM0jjԃ.i<骡i‚ia2n7iӆeiaHh ifN6h &DD4:#hS`0!Ck 8ZXDDEhDWoQ\Ũf0NlD9L'f;D $ԛn&)eoTiL,gX zkk\,}_|ijr+?=k[Ɏ"N`Dag? kyLOLC!- 313b TY139rcR94k5BK܋cvRMOivi0<'z4p3gDt7d6AF"RjGG=1GN4Lie&Ner, 7J!wҪKjEjs hZvaAD%d\fÞ@0A# şh3Џ ilaag2".fÆn602fy""*8f 9XAFv|~hDv[U[54imi&Ma&vB-=t! ͊| g@Pi%LTjO Z&;oiw'[y!꾾nڧ>EM? WiM4@ӴֻLzobk_I|'}ɏ&;[o6޽*u^/MK{ oTo~ c~$/Q8%QFKQ徴(&N5wvCN蛿dc2CҒRc̘LR&.J;maw^DWЭZ k/鈴5l9'8W)ޞ,4}2Q=FD}}X?$_bZZ-*_j aIk\^h=VLu_ӷ>#[NߐGF|/l>_#_~?zk^G_uOɏ7]c_n C__rSA=_J+ηs]wc-׶M~:V?<7&??R___A{NU?mY뻲ouvۮ7{k$ז+ky!pҵ7ظj~?(]VCهC/umk6kVo9aRV[iinB+Tam1x%ov?>~oCvqkףj/6]a[ĽT׎M¿Mc_YH|OQ_4ת!GOGK{߱oV^N;Uao/v㽿Y!qqSקXN±]*$A8*q ݦ ;MWTG]|?Xix$.{u^-S ]%}M=ZiZn"c]D`‚ ~ RM &a4dL CN4Mm{Z^j-v~گ]k~MBC8(Ma4B,&w (TM0dcݧM4MHM4[OM=SL5#{4[B4T0yCiDDDDDC9B ЌEB"jNNˆɍ:@ B3a"v!Y'ND\J&}"PDC"Ј"""""""""")P" ^4IZh5EP00#U-8uPD8)AeM33 !3쑖J\ڋ,7mBkN;_u("6a^N[F85fy<}nc""q:1dfaM=ܨd:*;F$'kP)ah3gvC0QgG"`"#9 Q 꼢5DY(vE4דmADHI>ԪxS4u'Nªwi#O BxS03 mgaASL_3M2 Qc43Dn@58e^3O1F|f}38̃,fDhy<GXL)̜ hTzki WM? AMP0A23Z"fVi!z !gP<"yy V-@sAa LЭ4x.fbxL#COL@xL&:ݒw߼uAqk&>OM;NSOjC!PA4j];M4wz SIjA&a-4tka;DM0wAo^J:K$-4ܓ9t{_֫N ܷE뵾&hIO56Q1iݢC·k֟HMmqۯkTHwm{Z^[#-މ:Dc鮵M4zB_pO-e[\d|$8ؓz&>Mcމ9($oۓ|[Icl~\Q7$蓉7PFK~kҧ֟W ~Fv&B˽];%kIbԓvPWޚH=\y(E_{nK껪uj/*ck.~1ChǗidz}EwJNqꛦ68=߶^Oc~׿#M_>޾+ZO߃uǓp-u1}p^^x$ץ_/a} > ^;B&;M7'ևiD߅:ד?o_ݼm G? mem~on m_~w!cW?_׽{1_z~&;Z$L{T]K}u{A&jOIvB5;O]p-헿Z׿~vN+6Ml8뿭 ^a:zحc^)o׿&9 qڸHİג;,wUͧM;}(av8 C!ݢn헵[Vܻ.?NMO]S[״m/DZKZWk\q:y[O}uj<$Qrc+ EmItմ߈ҥ4!a`,!iJ@馫jjF޽xwuu~ǡWZSWQkzl:j7ݡ E 48d4zdSL}}[TXh[T z!i _T]{_]mi"0B !  aL4L&4Bꝯ{ a|4'vM2CMp Mh PL4L N^N 40PM0A 0A)a`Y """ %D30&C>DDD`""!a&E B"""6DVOe`DDDd/Q-U_` |D0^i#S3r2Έا:B,L'i]Qv[UǗyd32³82I߿8M3l Џ32>)L `9HCĉ nM<\EV$+zaL&e/#eÄO1dk՝I܅9:W@di&( d=\eڦޓ=^(i0_y(Pi;O\^Mz]]=>¸Y(ɹv=6\݋^^?ZTKuL= ^}}w[JC_Ko}\7;zNw]CW~zZ[_ڍ=3>+[`+ [# Ao1_pz$?{w}M^W1dp!~^$?^ao_ZɽՐb~ZRn _O Lvs\~S^i|mW7GpߢCx#dVo_MGd{j+vخpKN6X 6Hq~qlV]a4iAM4">ǽlk_&>6B:w?xi:}" ϱpe !amVjw5]5TZR~W& VDDE$IhkU[MS*}ޕ"L*vXMN aI:U\3XL'a XDa0Aaa4-4 5"E2 0N0CφLӴ"pY4wtDD3mWb1. :4hZt]XaX`F"?kB|IvvSԮMBkzy\*4"$fq'Es?馘LAGf9D!dx":;B .!Y2vE/מڪM4i}gNi/ƒgL$A/;DB^J}b>MSҵ]>x'zwwM3QtݵČ36o$c˵-Ɏ]_Tկ׻UfɁNdI06hΙ "s$I S >G2ذ6A֩ 5o.c +Rc-m4L' _3 4|`X@0E8gb f3S<4,f eD_8z6KiSC iw֓Dt?5qiiJiM4M==SM4׆MSM5M4Nw}7p{8I#t֩kiZҢU]]|?m/;nHh1}&;n듏-&?oӦ8|'_c._ƚ]v'dr8{9N'ijN蛹'"qI#~';ozwL{]R[}nm'I㤟uIh_n -=?j7I|&֐TM$M}֑ 驛=&7a4x&rOˌ9t-kpMn8%MUki]'wikze}i$l5Q.eé1g |Ka}cxGWizKO}u[DQmv_iuJ괞>kU_Uzxxrq7]_:iz^IuWWB޺_ަF- f\C83V.6,|_~C ZnV#VicMt~&?[׋}okW 馚vֿ\4SW'v{~Lwo,u֗D}[ږ97jɿ=k %ι8Vӎih{}厛}ޚuwTv+eN)w=?E!hCM\0jDXAB#M M;N/=꫖=]2y٢֚j 2#"ͱDC)4,Јa8#a4Ӵrǵ-|g3n^!>NiavLg#h$!gA0B a eD0:T f<pT0Bh0i4}L' BiNvi鮩NMo[_މXVdwuaQ7jwE鿖>ݤMܸ_w:n N:y!;4N}7.56rn뵖zdrCCƫ7OM4ܝEJ,wzI߫_''J׾I_~(>j}}Iz/^ZȐ!_L}_P- M}x!_Txi?_{:mz_ֿu^_TN?։7a&Dz_uu#%:btg39 gs($Vd-{jHug]x֚iLrMS.8a4uzkf6bqX ُҶ3}kG^zpTpX㵊VƋw{OGwM;"cX>E5߱^Sn]oM*nl{!D,||(B ;^kik m2C_NM5$=va4׆75C[B 4д˰ `AӴ e 'x!am4Ќ a HL! hCGUƿwdBDDGaWj^8uD/Q l/Z֫[} %voKTMgˏ}DDoŎ6*]SӻHG,uסvkik4 a N- Q{Q/dFGD#)DBqA2pdA3hόD맧7&ַ}{iVZ _\~ zp[FAM1ZӭL鑦2-s!\R 3U§ P8궚i%M3aST¦U~*N<6 bLuȟwktk[߫ok074شІBN5M5Z1A=4oprCqZȓt=w>O;+E7s6"'>Y K0)?;DˍԘXb#7o=DǢ “~q&?Dɾ[{Ԙt$oRo|C~wvC&7z$>\jv)1.=6v_uӵ\{?z~;V;E%ެiwX_uI!v/}{ӮklVŽ 㺪BA? _c_](_;aX/$:Z^0, n ]PXoбMK7+&;&<;oE_]ݷOzh/i}8׶wgK˪߰Slݴm6\߰¥m}_jzz}zƃ~A:r7^U׫Xu]o ?N4MU||ZV*?Ov#b-ا⩪Ƽj|Zn*4ۨؾ;k^NU5akaW? Xtki$>ikES$91HAixa$‘LUU$05 &]N d*DC ΐ,XA ! Zp0M!N2Ј4" aDDDDDDDDDb"""""""""!!E#E "e M4 @ t":@<<%3PYCgbMuM4Ӵg.1*f="|@~L"/2+Fy ِffZm_jkI4Aޙ{=SLf짓=2{^v}Ϋ~kukjlw&\Q7Qto:V/ZU4K^2ߤ)OމkKwp%P.:Zj$D}־}q}i/OkZysO/\$zeCP]Z&>]'HqC}ͯz{odH' cC8,rc ɏum4&?=s^X&`ja"״;ONu&89t"д؈-5) B4"- [Nlk""8C-GP~Em^[C׍~?28w7kbLqq^1}"o; [BvMW_ ݦmz.8~ګfqa eT7ޞxdm?wg;8~k"",&Z_i]x2=f8k>v4a4vB>z_=J|jƼ8ظN;z {X=>ZƸV8Sӧק{Zj{RwdpovnoMUW~~zkWWz}L-[R7 OkhP":A_(pM4NM"C{$8[]2n;L5\Ӵrla&HpB",iE&CDF[e:V t&h F!*0L:DD0`4"" """8FDDDD|DDDE0!#)=%I?T&-A>DF#[Ee ȢFn{wOLda4] m8&6%zy+c<8C$T3෡gzfl$dESD+^] ޾l{uu.VKm=ӪC}_T>9+ 𶕴{cv޿އp;1޻!}]?]o UɾK/ɽx3k!uIi[}Yݧw/H+xK蝹u헞=mz99ݛ6}xvڴ_bIj5j8drK; "B=EzekoL*jkڧ]U\Fƫzoi 4[ B0C@Z0hZ]!5AM5Mm^D`DC""""""",!0AXAM4a4M8[Lzj""!)50M52""!`^#ںд0 Fvk2Vzj[A"n3깕LeQRn!ou]0`dl">DfaȢ=dߠMS>7 4#NMa{7+?}55M=;9 @d3d WJ͆bA܅z|D" .u:&˦ ړ|.L*ii3 i#pCd33<s$2,3FObO߇7O]oZ|V:au ޅhC -4˳ 5" sA@z|?L|vN1սcm;O&M40PP\CM=WN$oN{uCE[v5U;__bqd54H}Nyq8pڹ!c7w޽ xF7bS'V_#ɏ]p_o/Z^{ӵܐ{ߎZD AbZ4YJ[7WXMWn_&;\jKkLBJz~i7i{}kꚧz 7^_o!VE 4.,!i'DiU5N5?]37N{B""""#wWݪk!nr^[kvik{b*{bc;T)ҽ'j5MQ pNק#51Z-3=DDDDC&![ &I44ªkzzEo߱DDDDDF ! ZfPe0h5Tkv񈈈g>NA&FMBa02Hg"/wlDE嬳YKK;bQdH:(DTDd(ϑ晤 +R4}G.a}|qc=3D| AO {( 32?YgicT4M34j }AiN^iwkjiJh+WݎV)/ik K]nCM_OtNd .*[L|hRopZ[RdZޅW^5k&?(^_~+k x߾jCao}iֿ]{vLwUZ7r#/|!^^\7? {ZU(|컴nkhz1|cc\cUq&%*%ӳ>ޠAӺv[O^;Z}zkuk5[T_b""vL!CvlZa0CL.M(3A%q Dqa" D\Rƫ]4 lL^FVY!TDr6K3\3uZڜrAlk7_2B YmhLa2|߂l͠31s$dټLm8O#>"c6;\=' h00@j aqGgCYpLfѭ) 30vg-ӎ7zi]AiMBD0@а 8|A ;IXM}ZaSj z B @S 3 ӰjI\vrNi?#MɎ\W9c֑1iz~TiAoNQd'H}r1u$zc&M2OrO=zDt]n}kzWߦN:ivMroDC.5-;D tۭ5_[k7uҰK7I$ئ\~*!>Zc: $8_L' W]jW^Lwzc!?Cג@{ۭku_z ~ֿ{^۶/âCzb_{[[f糋_m/uz$>*J?^c1ޖWN ^7뽜I}cۮm}ƭxf?ݵn]lݲ?N~lkqQR@V/;>4&8:j;J+v^ݧ{յNiثB>8[ׯiS!l{5M[TUJ[[UMTZiZujG 2~STӽ5M5aSNd"PS M0L aC !. !a4, a Ah0A ؝6|D `""!|vB"""1:n4#r̮4Euҫer i T8"2cCi-nɡi'h3ALRvf)|3|PA(d!4 !ik`MvDPt +}GA 3321ު&T1&Zi݄ljޒ~M$>$ƞzwwMCIt ;"cidp1&e\'{޾,~N?[(%עoZlwUk{:7׭]ߺezkk+7uɸx (օO_n_"O_|6PCoD蛭߲;O_H'n5m-(!1'߫c͛EFI+kIw1k ix_,b?)/7qjKqQ1{ kMHQ;kҷK݅XRf &=3Mh045 "" I (NͰS:`h0M40M5UZڠL!ض#UhOmm fJdT(juqg^;LL[">vJtGeSE{ڤNMU㉑bN2}}WLe42v.GIffzgO46Ks=H0S2y"s)9cATٸњFa# \ 0L&g#a4B/'&xgq% 6  Ӌ0P@ gNM3 8B&MM04CAi'OM5O{zij'wk./};wi֫j(N7j7ދ߮c7nLti[ӢoutM'Aq}' &8Jܓ?.>ۑII=?ɶA+V8'z;t:&8%:ROWW`ד[ H_w֗!Uv׎Ckk߰Woz~]^Wt+F/L/_@ooz^~DJ?&ǯCh^Z&?W_DI'o_%m]?__~sW{&l5_Gm]W}bL_k ӆH]D]x㻤.퐎/mc_v-QMv;mo6y8j:W^4v8=4Mx>5T+8+M:ji_w5޽6oa?{_;[_Td8MHtݠiݧd+iޘM0ikd*5 d >"@f (aASkQf!BBBI`D0-eX&DF^ʢ""DDD…Zzb2IiV; [NndRZ5m\3BRSȫtvThkƶ8Zg3LR qc6)0j^10:!~*#FG&[PiSM:LTB!i&f MKnjt/M=8?MT&BkA4-3iHq&:ZָUZqk]*1 ^+_DQ,u[괾뉇֯&=OQ&wTU$dނuZRvRcZ*𾴡 RcarcPA<*^M[X*UU Yc1$K ֪tz׏T mFl ȦLWdTΣή>fa gD*Y30&. f(EBa5M4Ӵ IΆ2'P e\}2Ug  [ h4xMu>i  N[׳riML&aMﶿv} W_*Uq_)==wǤ42ɾ*u+C믱_o\IÏvՎH?>q~M}qBQрiK}{iZvnt{]o}=*;%m~^-/b}㭨v֝_Ӵ>]DDDXLαanдv"nлVVngu:a & Htidc0A 2nFhCA `a A""!a8a4""#N!C)[DEB".":i m4iڧzi["" """"Q !`DDDMpPD|[pDE !qM=RKbDDE""=wB+i[5a v"awo]:-Vv"VJ[6giIF[ɝ@G`akVB+K^vz&<+Ip܌wWLm2|GT|"+cj$Y$DM0 ̓L Af3E#4E{8DH@o& [wU! ʳLp쎈ȩ&SH"}* ?վ׻M=Q4!V!Jܷ2ZuO[RcD&81 &%vv߾קC\?tMIDԘD LtwZnrC JN2ݲP'wQMW}Qk|-5JM\0{$MܷI$zI8nrPJ:O=*C{~:kn *Ai_:~סEw^ӯ Rw[jM%'w?⩈}M:z>h%׮%X֣kJ{_V=92?֩7_s_׏+wMUap_ yo\:7}Ow8_ Ҥq淪>_7ק?^E? fk^gncO q-I{Kwտ[2L7Fl'f8v-틴w __V#u՚I}Tۭ.1][Kv{OîOꚏZ o8R1*Nu,}]cWZ鶱kV]8k{I&8u;v5[[V}NSԱprUnL{Pئ8+x$nq[#[Qm8a>"8hEvwiZft?O{3T45[:{UULwdQ;"!Bϳ."ЈTB" M5&TMdXNpiz .a(M0480AZa:a4!`DD0A !IWCA f2DD3IB"-DI4 "",!7,Dz҈Ћ%KD5Ua"")>[e3qidYQdZ_3fh)pK,guL晶 46*P3T3L NީSN;0Ai5޿ַVZtHw*K|Quhc__(LycQ!roJROtMkIj}ԘK*>du h*g!zgH_:UG9u^%JLzUUO -ANv7 L m___ItӤOwvv鮖]*Zi=iݧ^[oҶ U(ɏ~yoF=uiO[-U?z_Ǥ>era8LM5M0zw_U"" hDE'_ C[uM?L1W(E+^_߆u]I_k}n~m}F[ٽ+o^zf_JGk.kQRqliVwvTSa[Mu{]SYY3d eH hpg.d 'eT0AC"L29@HK4DhOީ" 6f 4A. 2 H3<">P1Oq4Uz]zv =4 n4OE1 h0l+!r[VZvjݭ[\m*a}޷ t;TQWWڪp$ޗI&\ci?&z@ z;:_V:zt '~»=z/|u6۾Uz_s)?croӖ __uҨ/^1u$?~1ۂ*u}u>T*m1rV9p>cDcMS[t_O04[>X8w_*PB-S jg{M4 ګ"""!,EذDGhD_ 4iZn#b aIЈM0BDhDRUZD3*d!gyƨ=;~ p]hiho] dkHPdP_z"rֿ}jzuCU־dpb?ӭ-WZC_y(1ɎB;Ҡ|I.+DThjPꪩzk]K׭Vת"c]~R/Z.֞)u\TYcjLu].u~͊kUЙ{>O¤}߶/DTЎдЈ-X!4CL6DDTD0GI #5U@̲S2(gXJBCB"!J,fZvHU1twWzWM0 6ml6 "%-["ryw;^+DvPd$3|eyvJY"!Pbre:'<4 j<#r=V|,XNBL{E. 5 A͵b&Cff3M0@gX@hafKńDx Kٰ0N"i+NM4Moz 'f4MPlZijL'a3 4a0 wiwڦkvWPّ\":2*_O'iiƝm-i7^n7-Ɏ31}g9xRϲ s<3fapChOekDսIY1[Maߺ-.:c4J;MB'S}SSщ0h4aqwOW#}oɾy8wIm{'i'2C]ӡD4ty8P[N;^4W5Li7{ޣmN;m:TA;I^۪uOMRO֜{}}z-{!QW~Dcǥߖr)q>{G.ix^EW!x]kW@Rik&7OuNnZ_o~1>6Zn> my1ۻ۪_RtuÍ?_q[_VqUO[]~9O`z&;ܫuُ}X2}0ߪw\8aPZ_}d td^}eazz_]Fi[N]D{ªkni߲=Lwov+>j?bӋc~Ml~,_V6VHI)i)vM}dɏ_}o#{5_SAMV;2CV"phݫ~p։Ƕ+ˏ,*wi&=ڦkߦipɺjC(4*a2*hL p ;0xvkvDbB,BhDE!0B gD0M@=ظT#aSд5Cb"ߵ"""""""""#"Ј4""."vaMWFDDD4"mnT0Z- # dhɾ;rl2SD@#(4֚Ya4 Tj`]DӻbERt НEC"BeC.'FQ#tRaVqdA!A(L y?6O 3yO#Ƿ!A:;4#i3B C|)H@;3pAf xA|T'aiM?A;LOh4"575ᦚ $"ӯNӆh=VV~wi~_1ߢc1!^Dz]Ɏ}-ޯ#kpwrc=i7#F>:&u#.2#[H?u?I6xI_{Rc䢯Z}>Nnzui]k}~Ц7( .U?du~_=l:_M-' /7_t ZvN_ux[ c*LuUɸKW1ߊ&_ZDCOOzE>o~׷?zna/c˽mzߤW Lj/- ^?l5Ɏ5!\_z_pT8qǺa6*[Z%]Wiبخ>i:QQ_t^}5"iWiMMi׵TU{M{i&A;Nд$90D4dĂH0P &0AP hX@:e B"B 0""!""1Q`0DDDDЏzUIDEW5ʢ2%}.CR=,Ңh4ά(#5:X513̏S9i`@&L&647м.}RUSߦN UuMTC$XoKk+ɿՓnacW GߤkHQD]W_Z_o%Uד}$U-/ָz R,/Z[S}-eynN:JWK]91Ʋc馝rlU\i?T]W}wլ]T4kN) [r˯ABt`Z2S4Ї^DJ"0׈Ј=1?qM;4R(jf31izJ3+(LɝFq-b"| 0A08! b4g d\^0ϒgAA$˳0Fdr2\A ᛏ C U0PNiaB 4аMl&O aP}A`zj  iM4ӈk{Mk'zi[H}aUu' Q7w&8}~DzCio'Mܛ!irqI1A￯11A&1ԛM}/#ŭ#ܓQJd&O'} av:IoM=!LC7}Ы]ؐAtc~)(O n1{^ kB:ƉX_[oTh3A!FBd┦Tfgfdɝ'E&i: O0خ o~zn+ip}-fzg4 ;%HgAA3pv}D 4g#c3pE "?(oo?%>h?߯^h0Uo1 ״ [N~nL* 49BsM0Av6kf,T1__2y7ͮɎuOZB,vjvzjIu쏑y/Z*w&sJ[g>l(E; cw_f-Iҹ7vǵɏki4}nM?W.&VSjŦيW1ikwk8-Y 'V>+C׍koJT[iNWɽ_VZkj}(t&8i[tqQU!ku;xSГTFU ~E5T_Q4M+TM~Ӵ­j5#j-i~cuL*a4WN[Aka O0aX0 ӆ0 ]4xo%0C0DA12S4 L&T[L a9&CA"}DE5]jLrǥu %,.dېB"""_^&O^-u}^67cu1}o~jҭV߯|ɏ]vl[i2"ˍZN/WMˏk~o?뭏%+c;a{N[UONMUmuNMUWE:iޝcjߋPADDjBUm0DDpB"!B"BOZL! :M0YR*2!0Fb""#boi-cm2(ɑ"#2G`8a3پMJvS "?;Z&Q7oHo?Ǹ??] k_OPq%//_.X8mzYȐ88|nȖ+3ê骩oiMi|ZiЭDDYNPDPCB,.섿թ#|m4zue\DEyzaH ȬOd%9Iw,ȺMKp#hg6vq0O:Fdm f̈́M$&4\9 ȆBA0I!F3 MH6 P.i 3 >}g=;L-M=SMB 5NӮr;:ӻ{ h'Pu YoY'H'wod0MiܔSZ;{ކ.NHwNJ+RPGIu[iUKuӮӿ)Tk>'~:#=}o{ްkg{ɸ[ >։Q^kp\_zZDUމo¿1+sHuwy~ٹߥ{]XNܽ8jGNא]cobpNB8]#wӵM{XAZ{MTvؤzikiֶMaS - 0&XMl&Lt ݅ZzL:TЋ &%PB"" !i"B"! ! B"! !Viڄhѕ8APO"'&__8G%3᜔fB"vGϳIoVrR9eA#I4˲;XAa>ىSN4<ŧŮ}X;ږjLzK__֨45&>1U_IiT8T1W&=%kcTcLp DƩtn ]W5B%&?c;־JÏq]`W]XlWKֽI[N=T֪ڦjaSUC j""!0B")Ů/j?-e-Y(DeP2tM2:; d 38"\Ǒ:(FІAI4 2 F'D8̊z C$+*Xq$niD?~L^H!iȃ C0Q~,D4h&z7 e\zPv0Ay܃@3i/ja4g4GD]F՜3xA<$4gi>@yvfFxL&& M4 =mMuOR==UӰwjiiF_OMWMiv}~4${VTpj5ݮI)nז?Z&=apkVM4' o¾->5 irj)|jcӓ0ǠV_ǽ<i彥=v&]ڤ:zG,wu ɿkD[??qABcH||]&%wVIz~른__Kƻ}cҿ&=!KzDC_.]{ٚ]jX_S=׺vMz}}1Zu`];1GQ>pwpϗ_>u=imn.u\?uizUU__^0?~/__߽B}+iI]{]x^xªM}}.^ k] ֿ^ -~Iz~/wn[&?~{N=r~b~I_=NMeҾ켭?YwcZ=Mbiˇoozpp-ޗ||q߱|WIWu[u{M5OܷU~_:f!E}aPp?zvXEڃi^XbzzMV-4v 5BӴ4дL'jXߋivUU jj髦iiiCT"Ј""!DZEB".03MNЮe*&ia EhDEhDZa M4!q 0Cw TЈKoq-b?TUI馆BhDZi…-"QTPg Ȣ>B%9AY/f0=iDNiavW իZ-h@릱˄ -C}=*i߭W.}tw˅-/o{_! Q8}|Ο>8}UTӵqiE-lD\DE:UJ"а?\E-cpAАj֍yKݘ L5&5U"Uӻ<"^і}ZD&ZS".Ed89'Nխ=L*A%8섙D4"  32Rd )s])Ɋ~L(%胈LfGeό&0 ('A#4 {9a3[Lqzh5#T 8;:.A< (MS8fc;M0B5O޽4{>AŠOU}Pkqa4ӧOiZէ kOO4 wt{iԘ'z)Lv&M𥏫D܈o[L}K&DzA!ԍM8]?|'O}$'8izO_#vLrpkF9_#CwV__нN-*u%]jJ*^N[#"_5CI//Wu&tiֽa}-r7]WoaavꚎ}S%BƿB ;{CxZx N}qU$,~x{_c}~{־{~\j/~ۯWK~t $ߩ\ƤI$LWG~$?O'׶~!ak!z[ǒ`@LLS'猘# b'˰nfm=կZ!lGzj!tvmְx)vmal.`zڤ`Tд -=44,y!i\]IoK~ݧ.?RZiiڧi[vzca4¯}ڤL~zR+D&/zA!M4nSM5IIo8$骄,' Bi[~x4MȰ7z蛈(B,C fk $04Њ'ɂiX& %!aDRY7R\% $915_DZ!}ɏ=ꒅKL}U7K4ҤV$^z%K ֓TI}}>5__vZ_?7_׿\׽-c1{__׷]\̕^u^&?\)K:": A;iqԛQXJAH hC;Xidyq*]#~=ޫckꞚif;Ono\[ƓkšqŦZ _DQZ[EGKbЈB"#bJ$UVRfgȦ7"V}D6=n dKbϳy.<g&`E9!y`4 z -miMx!g|Shr!"ϙ:"oaa  Mm2^UL!M=DFSM4aL ihCMAggi o Mj4; 45ONnjai;OS:=5z.u>o]eoU^Mte&>ɏDzu\(o'U;DD}rQ-{wz&kL~= O]xXֆ{K^`TN(:zD޽}uP>Q_}ީ[c_}z_(?|{_A&B7`U~?qNz&?K!_&}~ޓ}Iӭk[{ٽa5!z'1z]M7E혻Vw K_i?/=%^[>+M76Tqlz}{ǡQ{qۻ?jWkk_Mtگ?iuWkUnikvd;a @T MSOOM5MK4N!ݪa4ªa0&4A"",e!MAvN00 AaDFL a0L`!uߵQK^?cHb0)Y̎h!ܤU}L>wY\CΈLG&)XPAglS~4dP0L'e;T! hd6Y=#Ƨ0Sfu΂d?M4!xA3l%wdc,^;u.5_*BN"&.NZ.dעttҽrO*1|U}ﭿă|T?_|BUkU:/a^+_ ~U$w׏!O_Y!^KML}hK/G]} Lݷj֓Chz.{jrc/޷O=z궺[!b_z0/9wiԇ<1iHxwUM4m0 w[[u>.<T}kzoB""#RcA:AhZN~-էxӯqK}c#B6kh=mUSMz?T׻ZX,@a4 3;]2 M5"5iBdD ! zMA!(!B""""#u^!ᦋ6fBvj̋B(D]3L4vjDh2 gD<|h29$#ighg$ z/۾⿿___KW]z_.pL~u_w8/[w_k_F9n]V*\nLzޝzZܸiUܸ~O/u&?_bVo:#Lmop}WnMSNӴ~iiiij=kjݦmЈ"!tDDqqi*DD\0A!hDUgBhDfao4FޓɾQi[AKݷ'UJbo[/:6Zޮkj tMZkkXIM_~yqUz?Kj6⿤Nԛo7iɾnzmtcX돮ˎ-R[/SqpqI\RNCI>cZJ/U Oz復j]W\ZK8_]-ZVҮL}^?|Z}n\U_ˇpƶiKoܛ_Z~X ]<U{- FPB"/xdq#z ip>fk-avx3t9^F=~L[Mp4ia Mi+vqӴDWk4F8|Zmے%oyvtC:!]=:A䞰O njIF_!'I)mAfuiע;pW,B DZ c<Ѝ,+OM0 *a0w-P7u_zZM9!&޸B&<5Huڦyw!ܕ+z#|UnU{M=_ JZ$I>y,׆on)Dk֦&6ֿD*k>}"~xo;t1Dc>ܖdTzu~4MɏZ:/m}4CpWU"Čuukߢ]jCToMWZ&=K2;,}?pY C 4mSiZ]z}꼘#n"i Aa(5J6հ]WHD04,&)cqԳkjjwkꚧM$׆M4ai[L&4ӴXWKP03:h0XMdbipІ0L#D45L]l& چQC} @ endstream endobj 63 0 obj [ /PDF /Text /ImageB ] endobj 64 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 194 0 R /Resources << /Font << /F0 211 0 R /F1 199 0 R /F2 201 0 R /F3 170 0 R /F4 199 0 R /F5 201 0 R /F6 173 0 R /F7 211 0 R /F8 170 0 R >> /XObject << /Im1 79 0 R >> /ProcSet 80 0 R >> /Contents 65 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 183 0 R >> endobj 65 0 obj [ 67 0 R 69 0 R 71 0 R 73 0 R 75 0 R 77 0 R ] endobj 66 0 obj 4247 endobj 67 0 obj << /Length 66 0 R /Filter /FlateDecode >> stream x\r6~팝]T:R$M;AːŚ"]]"w3t;߹@,ѢrϷݍnOW_~~}ڏk{zc+ jmLX~+ xM лjå׻3zuvWp0'!IpEDqѤ>($\}toy@_uQ|6ruǵ(:V*|\,%) 5@GLn+b ضhpx!jq3eAe7x"e҄#[Zhc;i~/8X¨MPćKC8fQnODTۚCcJ+~5cp@ bVTWyFN &7d83"2]$Ə{# 7Pc@4ogVӞՋ0#x~p-m [&FMF/FIZGAΒRt_p0shI/kNG^w?W,=dyAR* / [3tF'Cj:pry;ªIxF Ys~dzs{: eYL?tvބh]voSY/[Mb K\ژ4ysp .v3+6={!C&&VԪE8t8!R)0T',Lz*UGDdAqXj(}6be >,FD PmDx6lM/<9^S੼}t@]Z\$@H"ˬl JB+'O|bI^^:vL-N*Tff H7w/.9M OTy&+]CkJN߷Yc 9.P@%$/Α7,eB{S/ S1vnJiEY0j\!q(*Q5Oj^fU${dD0" $<lR47 III;(O )7n0>%";CCjbp4(D3FSdj!E,\?Xclh^S a] 2R|_" cZG̟Mz㵽N|j`=-YF΃aѱNYװٕo?@ƣnJpow[o) VI2  )Ӎ{xԔ)x}攽ٴQ÷`m'qL'՟hU]3wnf^Q\\cf/1 +́fgkE@dJ){,T<:SUX{>K%$̃ooC }`{'{Rf}; F" %b jF8@5\`a9'9>t3;k,QІi8 `v'p[{DD*d)31:;~Gbt4G'OOy<^=b:S/%-feҌڛWϲY:M8bw`T'\^):]X߯Əǒ\ D 켩yQ}]:i9b}p/-E8C/}.oМ[u97~HDZPfER:@'ѡ^+ݔye4I;/lr^fI%LLkTM3T|4Oi3(+Yy)Ķr5@un69?(vxuEtx,$!uդ3D^)h T!+<k6@6=_f35)hqQ+THlITNB [t~98+S="Uʰ$Ɏ36ݙf9ۋDIbvt(C[|Wo$}N2f1RցCeDIĽ$s5*4CrHf67F:J{ sk6(T|XI ԞZr$^I`N"}My5a>Z|xj$>`d*q"z@a$1bhj)ǂ}.`=>1ΕB6jpyyYclicI{ ?#W)vR'q UqW[SF95U+1}O#$%*#$2@iqޘBAΰIe6e44č&LSe`<Z=00W4ߑ}_|xq"CO5"),W}K/Sƌhk۰GJ Ɗru -QZp9!@LQ<HaI)D!Y M&K*ȧynNcA%"7T Dh,90g:0V> stream x\rˋ&%b&,RHDDY@dSDhFǥ >=qy 505p\6=X(W`dL?nLc<,Wg`zVӷk;]c-j s$9 q7 lJ=iXremsm ]TsFm*8'JvOoWgI0Jl; WjgXm_I[&ztmʂպ*jzAl%fB@?v+>C+jKN&l. 3A䷭)"蠀 WјrܔE!{Qe9:J 8? BeD ]Nr!鐮ku,W- e;V46dJQKt`9yb\Fv9Q( 4&I͔0~5VoW\HΚ!Ei+A7(Cr6G6gqcf5#Gj &- DGpyϧUg~y/ u/52@EۓJm\u{"&)'|a}S+Hd)h]rT շI_EA lj57iTL$;xb܄2e4h,:dpYΒ Y̾r[ UqXلz(YP5QY QdG+AC]F3ݼAEo(aDI!/Lm4OR* 21f[ک8JS K PkZ5!421ʆ'$E|Zju7iIzhTw@i|S+f*L 2G-Hm(B+kP4BC )%*~|=M=t=N96aPۧz1/Ewg5a=0^;g+(Ax#_:K嫭Po~1GO۫b!b4pMj\X`m(3c]edR`d+E֡f7WbWXӋ8I Qd7*Az/N⊏O`[z- jB>бlpPV6.sl l$BXjuq7?t!gXxurgO&ZeرA<9" f&GHKtDMqKqZ];Ɋ+ɺgi U ZYduE?#>o,2zq2 Ƹ&FVPs /rU~?ޟD9?1TF`Uw2rL7(ëF#_=reRB㷷#_ TE$#ZhxHjTKDk=9]9މ*-^4*+)FV]54u,S:\^Us 1Ed3(΢ijݻ|Nͭ*op?)[PaZـ6gV@d{Ձv,xΥ>.reh}~ٖn&vXF>|(*&]x. &LP߲$~ڿ#u=sR'۲z:O.Bw;ȱjGluϖ-֍Q..hHYɶ-AЖ~Ͱ={\ )E詌<92oGFcY7` vl` ^{% 8/Xucmwxg >e6XxJm%>zd׽#ھmwvԪOYJ:xʳY w.] +#0x{hwB0ӸApǣ=ZT> stream xM0OTĩHHmSTvc%Xr lY-s@0bG{Qj <Q@!EgB|t5D%ފ}yJ{AȚjOV돷c $Zu kgI}āY;2 >1sKǾ,kGbGܱ#gRU{D.̠.Edx{G1B\jƺ ui+9wZ`t^RP߽Iu@ORMTmF- s]3?QQ;?gZdbȈj[j)q.wPHZmp"\z5R",BĿۡIg\;Uyڅg҃DseRb#/׽ȍUysFX^r{'ck7Oڶ3!˸fݝqi;-vĴşځ; )*䐈Dz՚b6)fU5/ `fŘS?RnՑc#Ҩ endstream endobj 72 0 obj 170 endobj 73 0 obj << /Length 72 0 R /Filter /FlateDecode >> stream xm @`amU/*Pp [-z4sq8盳f0 Dk%MZ;X`V IyBb_9TJRf(/DYU7èfAGBOWK;ŏp~O,dϐVw͖ D" endstream endobj 74 0 obj 36 endobj 75 0 obj << /Length 74 0 R /Filter /FlateDecode >> stream x+T534R0BsK0gd˫k lH endstream endobj 76 0 obj 11 endobj 77 0 obj << /Length 76 0 R /Filter /FlateDecode >> stream x TC endstream endobj 78 0 obj 71630 endobj 79 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 78 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream mim ڵ&&D5 ,QzN3~ªgeLOIlEfI}cU2T0z]R\&ֲ~~};U{H 93FxQQ&tudZ_!B.(HU644͠c5 ؁{Τgzvv)U,w06F +S蹔"nJ]cS i` kFy hs "лp l̈GH q8Ae Dc>[U}kz&=poUJ, }k4#`L&lKA,pAVy\%!&:RuH޾TS M5 Lلn]-Hv몯uj\$*4}5RHucHq-ڡJT'_iwC\%\uV^Iu_dJI-xk1|*|&9r(Z긧domIK}UztRIk*u_K' )_w_74節RkUUJ}ꪫjdi}t־_-%UZ^Z_].KJU1zPY >7_cU=A_u@_Z]T[{o{P1-u;]=/j ~g]P3EUEV[MkiQTZ_XDR(P.D8DDjeXv厺ߦ]{^XvЈ4""",'{M4.4M3>bUuZj?DׇJa0DZBMU5U]}N"""",&ZiկvׯY{]$""7u '"+6$x+OPz?4Ӹwd,DDDEi[TʬdRń" B#%ք BYdDb7&G0HJ +jH6FR;3\lB#q˭6in1XA8m,&";'3SiL&~|t5BKgH&m G"CX/bL}鮋H4.j^I;Z@-ķ%~Z/uR5\_]$U֪kI~R_SZRZu굊ZKU^ wK׫3V?}-RUY4_K?8qT+c~Tqmzh4"a4ЍcvDDDAQa"!UFA]b%]!Bktu Qd 42!!Y*3!vnNɛ4 Hg4Ϣt>FV\=vCĚiƃ"$9Z 3kҸ^|vvox뵫\*3wW6߽݊TΑ,uWnLW^i[Uv7_UOz2Oݧqi!l #`Ȑsە;-"k{cuzk+nˏ}+0;M0Zi !g?iȊ+{h]*׵k:v&>NU'}K}ڦMS ᓙ9 A|Y˛^6-5<֘֩I&N2p!iL&nN0 gc^??Wuu>:MdD.܄v;j4f¦&:T;tcjw]*Ꝅ.}[~jN5O_tMMI;7rcKv}_kꉏK4:viړ"P#|qOmZ_Vݓ}wiL2K-/{^N>o8uf7o_ֺ]Gﰝ_w?wF7quЯahC;.wtcOulm/o陙萎DFj5u;I셩eR{f0xT"^(""WB[ `k߮{_k}SN[Th4*33#Fg̈́ Ј$xqiiw7/d+oE[A~h4455Da ڠ׻|ƿYoMQ_[NDDZ* AikqZ]knַ۩ok&?cjDDDZih4i^hi}~n"ЈM0ȿzDDZ *i5c""  K Oߺtֿk]?[yol]<޾~[Ln\uW_Gm4wmPB׻OmDDDE+hkwhCB%nDE눏ŧj#%=D|"-aNFyG̓ѡU{g< vFJ*C>g4 :!CީuTN3NOtipDZ|vLʥsHwNvOuOu_t}6Tώ}xL'˵/G'3#.믠w,:,OoaH__dCs#⓫@3Gcw 'rp h 3h=UAgHٮUE"}7UɎwL h5FrO/}Tޕ7,z|׿DZNiv^!fK@J/xN׽Hh~ !z|Y>!#";W"-BiD'zm-woiޟgH,=۟"2pC+i/hDiK.kp8"o{M4a8qM 9 3y&rxWqI/ⷨ?RNHwˇZ_hjw`4 ٌ4" Ea[_>ӵ}wMx\RڑDބ8[Ah0vA35p*aS zkVܛ|UmM<L 0B"*ֺi߯a׳;lQO{OӋT?1x}K#߾qW4#~پc goE_i$XQ{_Q{29_oQ1ߪ?2-K a{\.*4׿oOwz_iw7y oZߴM_B,j4MS?~DDDC-L-bKl$²q'BULv[t~i]u/d!DZtmw^bz."""!ІzM0T~4V!_j"3B _֕w}`D „".U5N !ib"!"-0L'QrPi&DF{gidUG~GaD;h4Ͳم2M2DFZg[yɤ޶gFTȌ*e\֩׵&HgwapA a4<4D@x+ƟkM4zwjh?AaE,#<@̡jHH=zy8Cvf;GxY'n}L'iac6 L>g|Sd$2)=DHi01R_Lx5]'\: .c7t=C84 02',  ,ѹ5[LS wmkIE #}[oɎDݭڢC5=4M0AqF)[ ΃$f84Ʉqf{_M>ū[L&A<=6~#N1a;Pih0ڡgLD, g֛mkK&nnƥ? g&>OcVN S8&RyFPFh^UwP؎<[}&֗I}'wZtN8zz$uMhie;=4ЋB1Zys'f_=l/zu}k_InJ FN0#*ӌc=ii=huNn8ޕˏ ]= .8h2q Ό̧kI!1W_B:^֞oHuO_/2OWuy Zwzz|0qv3Fg2xP%~ks0/+Cޓn?m>rw{ODǽ]SPL!a|DTC'3i?!C.!&?o/Wկnrc\Lz-z 0U.FUvݭXV6qu}zOމ~$/Cw?]N;R'uwv8ɎQ!үvi4ӻPb☾ӺnղJu[aW[{uM\nIM1&D˻hDD5*F:鴾7=dL[߯V]~-kű]84ׯ_k01 L i#b鶚i+V/߮=y ~׿3_i~WZۭGq:#a,5  m2Wv[^Մo~t-}q~zwabUֿ|˖M; w{§b8iOIo{ײu{ɻowߦ"B""0Bj8Nɺkդw_+Ub1oWl7_rإ=a4!D4B" 5Mm5^Wi^[kwu}a:~on8Uaa0aU5vR|i_f?Wo DDC(4dЃBkI^K0#1;ݧ-b""# iaaV v[O8zf+Gk}ɻBiM$;(31icCgb&vjtnBMA$!  efгѤf)OT'DݤNOB x6LhYCANG#AGJ]M+d-$ODkma4sӴ!fsP2 gxgƦ;v5v3hid+i$MoP(;U~8lqiߤr1ȣ\~\euMw-rL&p* 0M4ԧiagS0ά Ai`ͳ2 Y>N"MTJ7>_tw=ROA=?wԜ41ڪjp7alMBxB!›B 5in4էiKߴm|k_~޹'h%\8I7v~-l:f@`DRMzz[O _AuUçW/tܞ'_ Ki1[n7w֩A`L?N~"j]:T]4?Iɾzt7!i #4]U+;اŴG#|iZ{WaVg \͙H^-OID$دoio /n֗q]U_:Nun§M>A&XB! ! *miz_w~7{_ÒR}ڸ~N4?8ziiip @Cfq2!g݆_VWWw__$=_} Ca=i<)(8oMiڧɦ.]g8AIWDw1Ż꽫8vI{zo|{ۯi'dl%N'BNb]==k·~iyݭwo{o }0a}=4e©8Mh4 |*aSNOVKwƿ߻Iڿٵ{ٿ7M󵩓xw|}$} Wt9pDXP@ ^alW2CWkw"bIՐ8߱1w!,7Koi׫]~w~E#.NqkiCL! /ߠXXbS݋0g7koja?0D8>hELS[[i^T~jobL]D4,&a0Ad{_ӾL/U-oe[~DDDDDE4"0;0޵cETi^߽7TALM NSM5{QI_k/ TDDDDZ 5L'mwK[B ""[[a4LWkj߾㈈8MV^馭1KV{a Zf״z릟eDDDDFZmЫj ~0A*h].4|idQЈ"ڭƩNCXDt¦1!T[S 2\Gl3r;DKکXd 3~S$kgfLLioULs'iܙU4qggr;3H0w$4$i E~33Bzp*2r5IP .tC5ߪ5vޭ'K0 魄ݛ f3ϊg'36AfM,͖4s_'wp[8~kivMC@A bKO2ȫ gwꛭE×yIq47k.Zad (es5whW„_ IM9nⓢqeI8A3¦aυ>-fy Lb#M-zxUOI[OOM'j_2OvAyN3DX"/P^ْ6T?X_~?U_BOo'p2v:M?@3 5͙qW;_]v__~N'ɏU4ЋT3ad!yq&!_B]t6ۤNu#Lz.zw}9"]fhG=D>__x~;'Am&cv+;OL&aL fqG;| /_?޽]u_dvJhM0a4/ qa|Sȸ LoޕnzD۸[/zN4>H|'0B,&36h\y CoB5_}_TWnwNuy'*þ}xM8vj77p_ s[K/ok1~Ɏߧ7j~ڵPJLA m) y ]cxds?TNk [޻ji{K7#r7 (fHjVw~ޛ?EW?zH5NҾ-owZN}U }㈈e a4Aw};}6[~c;D_Q:MSUnXWڭCN;WO{xAGh4Rcۭڪ~$՗^V7U]""%! C^c) qƱ} 8㈆f+ jkޚݦ/UM5coR7':jL&KXDC d &' ؤb;XzDDDMB ! 4U?VԘhAN ڭi!DB"0Th4ӥF/+[WlO"5L)dTg3qiA3nY 4 BLU/9oNDQwԯv!$zg`.e-&80b1z_wF}ڝfD/ 8˳AH٦*3H3"VZ"`j@~60aK-0 $GV"4`O~a4i0DCih\? pziE9!Nԡ[ O'tS<ޚikJmLsL0<xE).Sh"Fb63S?#37{]SNjmA#3Lu\B%-H+1Go䝢qw''Bm}t3AiN"9j#34F!LWI*ZzeKK \p[|9r?>Oˋ'qy(Ԝ4MiS (L if?3fh@ڸ==W*luL:?]!M}/Iiz!2O }wA>$ND]j4a0ٶ3O֫T}U%ZTU%X /IzRURcǥoA9n]?OBɹ N2vh43뾣ܱ_]~kQ__K ߨ-i_> ->WaOMnkqd? mUKuqqL|gSUz}^;*_[/_ \BlUtk].ण&oj]t׷]zUcҲt}du}Pw8}uK _ӫބXA ,9Lm X [ z*>+ּ_{혤_]}{au?DDaa4L0Mm;\B}]0akXoI ?7~!Hr__a aB }nSIN^}Dzw޺oO8$;FB"""D}j:_~ }w _]DDDq&OU }׹<ҽ=+SP"`tL474k˽b/0I,aL֧&X[tkk[0%k]ɸf%"""""B,": d U⾢ 8onw *DDDDD]p aխإ[" 0DFAvd5O~jhFM8k 5=!f|`f ISNOG7Ah kF|8 [A4iȼKD_aBhf33ʆh;>e"?\;髴5M> 3a 3s(d~TAΈdQG? T"! _ .*)1\M Ӵӵ&ᦚh A;Ժ)ɏ *ދbmBik?ꮞ'k}ށt}U]߿ސxr??6=z{}kj ^_Itw{ze^궽cWk_g?o /u{ae^[z#|%Iuqҵk|Է'pn_بw_Okw_{hZݭoccx׵=ktB.ݫ)*r㽗vMh4,!iڧ :﷿OL|pn""""a5N#,&魦ixr~DEpqZ 0wzM$؈MKa \[w]Im8ߐ31  y"ɺֵwú 6IDz1!aa5A,# i_叺D oO.q}צh7 JnN|ф蛻=t-#Bq0a!Nxy{n𗄞_^ۿk립-r}~}l4T N 0PA^_˼/޽_ɇ__+_{.#v||IڧiaPi8gTHfMղwiof=};yn pkM*K}]:yc; }O# |Zcc]'"c9c]{_a7x~xLQvV5D4DNB` SB-5=|}iho@$/i/M#WWkjk˿rPD$F4iMB;b C]??}7>;XP7na"""-0j{߻kYy!~=}roD$>)b""qWmt;Uo?Dn^WiN5ö#؈@|ǜ^ O}{^{_څ'?p])򏸎ڮnkݰ}n'&_U__IzWKJk*/k}{Y ?\K o֕Wwi}iEKh2nvaSOҵK;wշzIFGjp n{Qa[Z!^#=a",N MRlp}k FG ^U~""",0_oQM1OkQvkOƺ&8R@"""4Dz馘v> ^ӰJЈ!S0LAXL{OnaC\D^0L`i a=uXU$&?vY"-L&*D`¥J-5Q`?T3QSN;i8޿TNd_K;/u\'W"|d|i.CME e ϐNEZ ןy^5\&zi0A0(Q &`"jCFl{5fC2C*'iQVkZj Peݦ4& ^1 3#ldf`65H6G oԘEqYUu-SMU4L&M4BD=T=*W_KvGԷ*-Ҫqiz֚M-rpLzd)c҄KwHDɻYza(zKwWŽ=⺭AT*j1pD7|d I}%U~*TIV:RKB1'WI DU It [}}tR_ɾ1nt?RZuҺcmuNZI^ZUOo$d$rVrҥR/[U_*KPS;2MӺqv⟮)6'UvơeU~I/PE j8_"~;CӵU덪㫊L!}B Pq*~[s!fuh?B,BЈAh]4Mn4_zqvRB4ͺ =ՐՑ*ݥ;vh4""".ik}?T_L0gæp$C'f1V"""""0&gHAjvc\dc1ŭ}餚vAF32Lί"""",! mݧ'ґ׻M N BjBVg4VarWN/U{:O'O]"ˏRU4-05I3;#N!/}Ta]^M M5 MBBӆHf ;kDZ_VNܷ~Iܛ1`K={_m~O܍OWrcۅhd,D[U2M>iiZy(?fOD6F {MqaL:SS||Bwk @qe^O:43hf|vznkh^vm~߅za=o^~h8k4i g !6B@g$ D"%1>3,o-ҫ[t޾]0>}W鈯-M.>Ӯj ;MS7d2Nvs$6G,ʳ>3 gYoc҆Gl29 _}}^𾮛~k p\ߦzվLĘAփU<Ʉj'_ocλ|uop8vu=$-rhJ=Q1֪4" a-? ڥ}-˽oW$m_ z}i<ܷˍtV"""".AڶO1ڽ}pm_oǽ]UWt"!M4AbktwxwO_i_D0EOA]J#]-=]nHǭֿ?_\GZj !!!`B=o\mCX}| i'#W oqe'+@M;_veP{x[nA@C fcꪘNh=-h_z-~pkߥb""""!-M?Oޟz0_~I?忖8_hD0L^v*>M}ؿ]{/}9[P hz{m{ӻ / ga{VwP_wym"U;Oд/[jWÿ{4"4"", C۴4Uv-prDDDk !ia,_VM"4)4v8")~O rȷGPfFiM'־N[[$9MI&4LvUL)h5NrC>'"0) S3#+?O7IpdH|r޷ԘU A]432+AI&|Oբq&8ˆDt4 d$ȯ":֯ONkQH7#vpDu-"poOMtzi<ɇZaTOZ*_uuZWDIDrc| p̻*>bE[Z nN#kqƞnV BlHƿ|WK~&[;>?>ߟ W֖ڊcTwֶn ғ{V߫оv[WLNndZgsT^}iאkW&+ Y. l\{ IMziC alFb (PIDRXT05k UKqObu,}&?$;[l! &< قO.i4-CB8a0B",%a4L }I;kWM<ˏ~ߪ ",v%gȌ36Hg /,!AL `P0_A&: l).>Vk\QqDU}h?AP63P38aP$" Ј""!a0$?wcij=7{#.(ӐwՅ4 =4|0vB""!"?a{oi~'p'n%7U=8zYևR޻ۢUoڧjo˽u4aID| k5uoj!z|z'JMHo蛶_ua!дtݥkw/;iS/n?{ "&HDEijŮ};bc~z5MxT' ]:X׍hTXeH{ic:fݙM5L ֪((*j#4,…hDDa=L+But;-h3">,%FC7̅ g3<=9gD_>y6%KBЇ 0 ˑ9@p! 233\_V !fK0RSΎ!aA"!v~rvɎE~7kMSD9y-gr#DE !`kkݗzm+A=I>[Ǧ |]0W_߬k]cVM%9cy1&N 'ޝ\и}/O|s1/}TkqWIz}mT^w>:xv]8klZZ&;オ~Uu[𗰖iqa׻Uߺ?I]]MĜkjo{W_]+.~)UZX+o5, }]/X! &*nͦ뿵xdh,i 0GM ]}/n?O_rbK{W޾""""4aUB`d]p7BTacƚi4{M<}7k|m^ɺUH """"#^ZI4־UzeZdiL|U;zLUᯪykY^AM2oi{~%"" @д 3ծM."""")0fvDDD0&Q  ͝HצY % MCӓe8#>f|ʉ:A. Q՗"r g~3DvtL!aӰ<  ;'5l/kŢSM2.0N#[M0": 5 [($AȤf l-4z!`DE1;Tɝ4=i `\{T4 BIgScmmd_IuƯT'I72;&e|g ϙ 5$# .)7IMU>.>8hi&Ogq3iMsO^W%61_i[B28\H8P/__U5O $;8ˊ-Rޞ}WAS[ Sq_x&)qOKi~B_DIɏ__o ݂o=}k]>ݵCS|;mB!_Kcۿ߯E7A[|½88E۽i?DiP?a4{w㧦%õB~_DwM[Tz[q{֙}[O^!o_o^aid&g!iꝦ]Zx߾h]4!"N m+lɺ븈^c-U[ "Hw!AЋL&H{U ]uHDDDDDZjv8[_?=b"""""B0[OWOhi "-SM4ު""#3MCVDC5 ,PRN\aWBE_2T<Z\*"^4yV5 l A4]4&tͣa5L-6)ך0!QI4\j'inXM pa633")7S„<4tQUHL~Kqҧa V5\*& O  dplf:i tf-5K~iBuЙ\+ZR ෮R+_-Z$dVSA-R]$K[Iu IZZLr,aRPTBVu ta>L}RcY(a4Ok^ְ WkIRU$:~\ɮ}%$1U^_5%֫M-UAu-nS#qm?:dn;h#UW\/A$Nu;AuWiq[ JuVr^g&K ߯w׿] [U[涺“-ziކL*wb"!a4" &=5w?[ֿͫ}_7P~W׭&廚Ǭ/DDDC(4zji}?_o^7c_kZn:w;DAT 4W^jq5 M}H鿭:|{j]o-3aTV2Cc߆_!_Uq  L!o]{ӎ=.6}w_8@D4`Ʒ_;ŧ_Z EvJ0?Ww,}u"".a4.>_3]ۯ~_+vDDDDDium>7]c/}z_Ј}N5M _nǻdvBkWխ 'iB;Lqտ5M"#hZ}gյ_nAhB"#Ai ! *L("5 *k$"n%|4 QBWLiNN_UD\VX] Zyo|u^V=?FJΏçik,+(L,0ދ1m'ʦv~"؋[Yf  1";P'EB`2y3fddHiꪙ3 AĞA<3td88W2EV& ST τ>"zfgIO6.XNuŦ.'΢zq{P'zV\d-OEE<(L&LܚaL42DNN'A [?古;@f9EyJZL{ 8rpFOv蛽MS23ddzLd9خc}<ۮ[[NWNRML~K}d,b1>{}?o_{on7 vk_=JwV}kܓۯwom7ôN_izZ_~P#WíWo$",TqdM =o?ۿon"Tpw]ﴤ%dzW^ooP4PZ mSTo쉏ۻ6oɔ08aJo{iw!-~"50NMZoVb/fA,DDF[zw~{VDNiڧ]ݭDCB", hCGwj 8kHDCAjU[RP쩕lEaa5By"?R*ZׂBqrTrңLן0  a3.fzRtj32|RitXDW1 mB U{Oе#JB?JkOQޗJ(uȃTd>^1%UUMB*ྩҧR꼌}%k^zkZKknYg*jӦWT_ z.[*/$tkkJ~?["!t" !cI/LikT"-BS0аCE˵TDDDmUQ)Y0$ѐ_,DdDUDLdA(GgY3< ό3#?"'@SPTM4'xi=4/&T5Javժw-_XOMɏkY7Ը{۾krޝLvH{j7g^Of#1M3C:m#8Џ3LWvP%6tD&h(tPcAȢ(yxfNd7On֣̾׎2LI63h9B y g vSg 1#?$E">q Ga+wNմvi;8N,J k Pw0qmSO4\:EZ-ڬ?E1ZǬ'Mo;O?_Է.(%CVzM~H~Udc_Or#o߷I8蛹7D۩czLQy?Nm_ۡ]zm]5'ywOO}h=wU蓊zﮟjtUY8tOӆzz{޺Z{%]~Um~))_a׎k߮±Fmo[q_ë?/lb߅?4""5M O]c$?~LDDCKMi?wxo{{k# oMY![_qu_lſf/_o_/oVGv _+=iv W '셎_[}L*\UK~>S[^=[6+MUkI}m׷ti;ߨzo밽W*MwMj":iwv4qڦ ij8X":h4VFoGT"""!af$B8^h0L!!n"#AAІJ& 0 qDD͕{J /EwR AM5Km0L!骉含< x Y5=A}| D5_Xtuڦ,j"Bi֟U {)@'lJDl5DtI0G3fga5 ,#!"Џ#< B"l"5iBkanΝ |a&!M'D-\ܘy[ӵ z-޶IҺtN;^}p>[IǢc8wzkIe^*vw-zzydS_޷]'AsA]_+_E?}^?2'wO]]_h+OMŪZm$W9g=Pd-UZm_Z]&?za5M4A4h0'ago}ݾ5nnt]0iOn׭z}{Y1Tw[ijͭ-PWMiw궳G^VnuZ{Էm셾޿`ѝ3 O;oKo_~Nղ?Vfm-uEqj 5v-X?m~㐗kiCccmcbB] uLU{o}}?m/kn}6WtIҮhjVM;T"Ū8=aiuizqUmvZKv-28a0E aaD3h0JE Yh4 /zL\DSHDDDDDDDDFLNֵuW%}{1k>zt (Iqyߵ[Z80hh0ӏNjCQia=;DDD4hXB""#WX׏نKbX/%XE&T3pS2N^"򦜲ZKbQZ-KM˭&êƷwmK~L&swmew=?H+I .ԯiIl`֯׺,g'aG d꾜CETR.i8#3bL,$q$Nӿ(y'ʏ<]MNqg2y5|A5™5@k#s=aiH4p(A!4s.20 $gN?< 80^93 4iH9TN&A, b>I4I1"N/zB;M|&'Y_A=4NEy'Gc8r ziRhXZ=0!p sPM#>0`I>pME?.ߦn=}chgwh;M?T跾(!WUMu0 xXD g3Cgј# hpIlޓ/ FNp©w~[Ez-uڇqtדtP\+Lz.5ZotL}COCNi} 0D7.ޒ~۪l7>]uI շ_wV QW}.VV>KJ*z(1*nMmpީ/[ۯߴZvޖqKm|[_-ZcHzK%RcI"U*.v?v~?޽ ,p?wtZ}zUA|IWºKIy( ^}~b ڧ[W_ZU_X]T'%K,~Lt@@U}{nソt\Xޛ_DG%_ֺ./XU Q /⿮>]Z~C/~{_ouxTZZ֜&?uJ_.7^HJޕ"{tM NW_zq}i`}Sg/׿ֿ /iW{ =Pl.cn{ /ts~B߄&>B"4״,&ޚ~>8EUvȱ?Ҫ븦k7]_.–5!) 0jEpkz]nD^"8BGk{i-^^]ki{IBUv|0tiKDwPа &uTӽ4E;UZ^MSuUUlSԃP(R1SUS5^iдa4Tе#&5M2-Pa3M5@!khCAAjLUM0.jEM#|4b" 8B„JDDDDDq !DDD0"""! ICmRJ!pHBB"2х) Ax^Qj4(([Qh0\i; *>LhGgC>2uڴm! >nN{Rމ%}9nOV~f8_Z~|0_ߎ5*+u߿ۺzotMiS{Zi.a" N"Uq#[X׎S))LWAGђ"hdJgz" tii4$'ޒrȳԵ]T/vN[eRu꡿kwoƟ,]\ADG$vX¹1MEݖeSS6fyY%ty$Ԥ΄Nghț L̐i4\ƙQH6f!zNr8g4g{ HP gbsm3aHHˑl˰NߧCf }Z~r<6a5vG#a4#O 5ᶻҍQnSN4Sױ^4|z웻i_|U>T NӴ/ =I h3 dKt/)}dU0wzzvce&DDDGHiL&aTB""= 4 !`G-Dq! CHQ- &ۡ*GejY44 g~D+# &L&i83"C3'M8i}jW!j7}7[]IDۮ?ʺacukqҺz-!iш! +;L4:eCJf50 M0m L iQh;N4A4h^xL'M2gz1 3DGiy iAaL/n~Ӥ[zih4/M鮞ֵUI8NFqE$:XŤ);Jqh&=]wj廴MGM=\mN);'Vޭ֡7N$:vI4鴴 G U7U_+{okD%߽ ZX{^~G?/OBe~u~~*O}㾸_G^_z ^}E{5/׍__'^זE4__pۯ뮻| g߷/׿Xo;X}v]۽:ZiV>O~k"!n:D >Bv j}5m.װޚiM;MnHt/DEa \DCB"2CL!iDDw &[M4""; h2Ѓ-4aB hDFDDhDDDD0B"#J9أӎ6znza|+*qmdKU2<$q2lM"&jRA5M3%A$k,꟪wj *h_޿_45/{k>ES{#R9OJB)ӑ]d'cL! 4PO\t*oH?$θ$fdz1f$i#蹟2杜Ajd3>S3B4"/%5>b zi0hi&A,kia0g$ͅgq4 =A0~i;4!㸴N3 AߧN Gar>iv>kڪa;t=SUB״&E_3:"UM5;U-X !j.<$r%ƳAj-!sR&n9ooNMF։ӫ4v^ӫDv'[y:L.e@„ jBLxH3pZt M.)7$Mr7ɽCI6&~^'v˅˷!oړU$;NJK}Vh]MU0L&|#l04˿kUt/vӵ&P~XruƝ'鴟>ZOcO]?oZoe68DAiڦ0lW?TPotMT.*'Q"DrcZ&?5SUNz][_~í^֫,m7$;" L >t;LTW;MS[L`Nki8͆= 0iivfza5Ӿvn^N-{u zzkߺZީ_#yod.$* &KwC\oEǗ[N#$;BH^rebԍUOR}y'%J)[OK^[8ǧ okiwznU_C7VT?v۷ZWﯤ_V5ݸ} o¿]޶_t[(m] z$9%Gpz.=?ƫ_}?|;ܐ>}|=ZnHMM8fBdDHFu36 }VT f`!0å!t4еPA !f Ql 2OS:Z\=y뮆~j L&E&A2+Ri! Gj#zԱ顡] ]uNzK -ҒEBɿV)]|U]zUUU&>U\uHMoMytd/UUTZ]DǤ89uӪ ;J?Ia* zAKg$E-\t=ZPU*)sg+>3HG#"?[5nOR4*̠DFC3:njm9d9]i-E\D{/!e":2pR Fa Sna3|46ds4#8>-4A:0>ix( @!>?p~'X:YzW]*iTi='f#0[ܶv[NAhh0ivݪA&oUoMxM>DޝcT{MO1ӽ k႞eZXN.d?ˍ?tڭ'iO^ԍ--KF=忻iB!U5N/^*ܔ6v ү'꿿W'o_I?]}hNwwp!O_Јʭ$' 1^޷ḥuz_ӥՏNתu{b;{DCX?|w~_k?[tl۪_Vn8qm߆]i_oazavkoCmy}{;^T[{$-7o^m}-}a﯅ӆK֩uٴS?dsv>&[[:P_, O_-n)\~!kkLqi?/nY4DU>WOV]/]~틴ߺH/a.8c] اB*-!Lӱ?k[ ݮj#}@KmjuD\1h3}O va4"Јиh8hEh&N0 &ړteŪڐG jDdjDrߠ]OOM;DE-fpB$ЈAPQɉD'`A, ¥U\DDDDDDDGSli~\5]o]+M޲ciz%]e_q.xjֲo^ez}/o_Z﷽7r SMSu ! &q)_VJ2&tf7hi馟kY#hZ~ B$wJ0HХIC&98_za<"&qePDOOTa5ӵ: ^[Y]oKM|?o ;`Xzƛߦw{[-gT乞3NcΦNO5ƈߘw(2|fh@n:?֚ !i(@@莈 m)#8,XA,/ "#ٛH6ff!p4ud54=a YFhZq b!}igA]ڦ 6 ӆ&0T§„" Z&M֚uj}i85Zڋ '޴LJߧ1.7|vhu#lݧ[[Mod(D.(֪_j߮Jm;}N;Z'N2PGMPE\kx=?ӽ:4{O[[_؏ֻN}mQǷ⿿^Uخ/}x_ۿۇ_k/xkjKP-(}Bnw%fv\6{zeϭl1w糧WP}Ɵ _M_~anֻK__׫it ! 34#S#(DHS~Vp; as0 PS;46ey&VV &L  !a35C=37iɋ&>EHI{]oTMAiu31CxM2M2 dIk'-ƛ8&:8މ7zk 4!L}$4^*Dn014rCM{KjtMN['Mv+y7ƚwi4a83#칟i0 iPgHx_T+?z .J=4qDlE['h4-SBaN#Bg$r$&c_ɏj(u?'uڧ{F>[DKi-{{b\/_[Cx.]>=>C^[IZyf?֕]`{ߏoŦlWc[7w.?W_î꽵odz8_ߴLw^֋P?1#k;7bnl[={VZ_}y1AQ5[ZqM=5ڵd,d<4JCkyQz?q"! XHA1]o^oVJB`'o[1YDD|DXAAaBMbj}nTXlwa '{ "&aeX!j!N~6KGwrnBc8,4BBPMoM5ԉ 7Wu(0!a244hj۽RN K1 J""`B‹UZqf(g\QzL,>Ns%M);P;NMdQ&PY2f.AVw&a%`JD͑9UBwZ*h5L&Pd`;q3R< T&7ci4]5 [Ci &VwN3_#25DB艣3<*LE#(֨[$C8hD,v;1O,d4tg9g#ULд Y3go5$H3##d!GcDQSМr|WGx!N3cM<iێ:}N;ӰT:' q'}wwa3 i%x fܞb(h5O"$M;bL vg3 'h54 &ڞMm5*M}a䞕$>\&ἓq5}SB0vs6, 3A5_ӵZM-{][UmS߾ݽH)k1??Z.nhZNX=5UU)oa_=T&e ]?&?zVwxawᆵ[u%tnFM'W[U&z' Ky8MS{pRo ; $"U}_~wK42wi7RoDoh7v?_k]aߓuu[uLk}?{Q<|W{WU}Zpn_COݯz{\W_^}PmwO":Ӱcվ ׺?].V;^?Myohf 1,qz^|n7_GMz}5=L[k{{_.~k_i݄GL4v׆e߽ܸˏ~o/4 '$40hk ֱj_n[1&?XUríߚ;0r{jE?>)ؿZe p!k~ӨjLv\4|O׶}ڭkU;6"uvi~ `ba_M?}lw{wݭЋtӴ"5;P>;MoN &^""EaIEjj u=^ݥcB"""Ћ-QЈhDFhMix(A04ֺ!0GP ״}4qL*kmZ S"8"5ZD%" '}VҪR 3wj""U`"j,(aGj#NSflz9d8 fg:3:kiz/.^@Ȃw4ɠ]j56 3qpҵhI )5_K.\:ze]7ߵAbW>33ao}iM3#WWwk#Izu+ç㥿sʤJl=~u^CC*H\04 -dc3Ѷs=fN.Do9c7W ;@9ٙ&XAEO5 u_r[.>?EUpB p -fȏ&ycŰux~Xz}8cROV7ݵW&?0C]4І50f#$}n{S.߮N[MS$;U5L! B!e!s3˙ ƌ9ܿӴv[B"#L*hDEֵ}ޗtpމN;֕oᦞ=< 8І3 v #Q B?]^_kV.Ɠt}h3 L)HxPb*7~ v:Uqr8ߪ'{ik[v_]7~$oT7߭1_OxrKǭ뽻iuڗVWz$>H{O_Dh[t?Z֯vn8~/EޜDZz_K)cK_c^I^+8/߯a|~ɎD=kW[ݿk_oBn 붾;۳jV{Ku=uiLSM/>-!\[j4ウ_Z};_moA4ENWqi1wf4T N5!q1M4z SmE5ǫ -wije^ק_u4", MU4U_\G\fam.Aj""#Y1MU5N[W$?մO"&2B,3CM0T(x.8"""#&l&]&ᦪ~B>UиI P!gM>>dDDDYC(u )"#ap80=DGQdHʔ r|)/" "N>D-ftGJQ#>3PLa#"3 A4 b z9Y=27b iGٙS?RMA4;^U_ӻ>Mv޹vނkT[+Zc^Lok':]0^L qޒޚU]\e2j-o&ҫ{^vǨwzqv[KQp{NfWco޺֫͗z}?X+OkۿkkC z+GO_v޺.[F?ޟ\XXnU[u׾XHzt}ko|~czsr}kzP_k?qndz\lxO[_N{NNȹv?jr.i?k؋ iVz|]꟧VON}uDDDA#؈B"""!I#hDDC(phVMŷ ! 5:3oCT ޒvZ ,_y6R_gC% Da?{M5R~; &aS8Q3jC#ADdzđ KhZHё(c?fd"߫D0=K6Ej[mO4¡ |yG8v։"~$H< 2hD" #!2$FAiyDǪoNzv!ޟаi;jF3C'fyq9'xv4P5U3#CttSމ1 SXT3 &<"4K+ Yo}03-AoMW%N-Xypb2oޝz ޓKcQV߭BֹcuWO⮓rQ|^ÒNޮ8U}w}(8&BZ^Kz#lyo&7&>z;3[@C ֽ_m$ut{Ӻ\MoKץ +v-z~ǯz6AǵC῿Zbaت)%o >q*ЊITDDA>iL/iXwh}b" ! 4˄MUn׻qb 0`ambj CB!B"4Yh{RXI [dX^S)hЌo62?<)Hs?_AijKiN UՍ{yGy F#y n]K}wMaZA34 PUD&K{iRN;ꪸY 5]S xꩿk<.}߯~7oC1t~+|i-Ɏ=Q7T_/URC]/]kI"CNֿ^_I ~_ª_]^Zc{$0="뱱RQz-D)tO].[ 4g aPfu7!]S,`jDDCI L! VUb8B""#ꪻT"-R%YB, ԛi ;6b;O/jvZQU]aKi5L&W4Ek3"{}/5H 쑅C= l3L’0bkiјgo1$34vey7DtcM~N)>(A&B{ài I M~4a4 F E\ǭ}ƭl5MܻIԛ'iŦL⑅g!ȗ84#R#eWoKiwII6SONNMg6ffd|1hȆHumڦ .z(NXdv,{xM?MZj 4 v@_]ֺ_W?K=St7.=qMSO 59^jK}t\R(&=[oDj 0* M":wbl}U}z\9!ȱEޞKԘM蛾4/wG({z/iIO&&~{_u֏Kk$m{~Ǵ׫PL&>{T2=o}{^ X~Nק1`ol_?5?GXǃ㰚  |Mz_oz]zǾudM4V߰`Z{z~L}!pA~ibt׵U *a0 'ޚ/ŷI]ڮC`L! qi؄:m-_N{DكݐGcTeea 0M1T,qlWkj8B˄ ɿ5,Ċ"""4!iM44w&6E A2q 'ih44jv">$"!zw%ӺU(nUC sS\+9; yOPFzi3C#I#4 ȝ) Pi㐇KxA7C"",5 a_D,vN„0 Kzx[kL.ZJnLu u,vӢC7Zu&?TL~Vץ hZo>EHqܘ^4J&=,Q7;JITUL(tܐꖫW(XIdcu]%. Ix*J*[JץuKR/ZVW꾗__Wka㨏^U~k/'T쏪Ɏ9_\R|]a}EȰczGէj~k]ږ~jLY3a3B]R–Z IBd4Ba4"ЈLDEV0DF-!""1I.®-5"%aTB ]!"r;m2)Us>23ΨO˒DE4H" !L>Gwy+בOv!iivj&ao3 _}-u[Itr߇lD^DDDmmDEhi/ookkou>~>,x$N2۸ЈXui2G1ק_o'CHu׻nI{=jՃu㱻UZ=WzPݮwx/O-~&8L-v)~7c {^j]wK5΀4m5 [OFpQkk7.."""- nj߶WzV勵 DEkv+*4oooҦTDd M OwiE?kukz&=#妕DDG2Bҵ5uvږOD;;(Eȳ"C>!CG qЈɆMBɡ m1L7<|PDY(r!$! PD$|ffy+x2@ 28 { h4QQQj 4iе`JiS5T켚t^פBkzTX5_Nڴ}w["&xx %SZT[o ih-0->8wURW~Kǎ\auZWxHOߢN7^oMê[P~}FijkMB Ј_]I_oͪ_cKbӻXB4"J78dQEAB  ]g? uPzwXMcmG[QT~ūw3~A=?}]Vy7P5_^Xl_U\4QЈRR.UT(4DEhDu,i& A:iߨB 4XA:d1#z"xgdvz0 a4L8 4. SE0=A뿴4v妚^:42[TӋMU=5L дuA]nڦEM=}m4SAƝ&oSp!;$IzF=t“&x߽xB\i'o]E;>ԛ7JRc7׈ׄuo^ӪmUuz&)7uiH[oiL'V,lZu:zwǯuק^)߲= 6,Z`q _Czj=d]h5zVoAxK=/@^cM8WpT/ݯ|"o_0tII~í+ro^ K{_v_ 5_ߊRnŽ_^wowa֯ 'kޗvsfa>}?J!vGxWfflcWNXۯQӯWQ{lw a/{~a./j TLzryw>]+}խڻhGwQZkcm?j;tkEM'TߦS$0pM5n*iUmSAwki厱A𩦚": N!6)bDDDDA#N J0DDCD_AC 4!j: aF'e""""""!n*QPUڏ[Mj&E(aP0B1G/Ṕ8#xN¦:A(gc\v b!%+;WU^,f>3HJQvSM@PͲh000M 2}mUSY1ߪky f$23 dIM5qE[Mީ^s4͂Duy>h!QϢ*uZOi7V=ޑ SE0Aݿ?Gi5M;ߑTywޞnOKm}^_TQv#r7{w{Cun\7oe V#8;5 ۢ1dm}xonk ZdN-.y]>'~7*=;TeBJKo?u cci=;umzxZ_S=vii5N4#ke^^ [$DaOF""(40w&]$CB/okMh2 ʢ>Ȓ?$2 dx"df8Q*Ai7>m//V!mk__s8f* =`=h3ll&SL0AyxH3!2xfbԼP0q4f24DƁ "" & Za jL-⶘ۯNW!Ah*z 3" 4͉"R|*h4|XA dn.`PA-4 5 pP!Іjo4 /h ?OւwWڭ ;X17i4NM;U"", aaiVb>-n~[FHwo_UCt֕D Sk7ޜ_ K&;в ;B%qJӻRW[vwRQ`}#r8"o{[˿.2OaoA(ooDaW2h1U=;֭U~q{~nn]izz[]uCt鬔^~J5pTag W_k$;?k:ۍ{kwQ_'~[Cu#/^Om}n_pY4?K}/m-^Q?Wu5Dz$?_u?Io{7Z.?]Y9}[9ۭ&kG?]}[mcoUvi1Î>!~5K|]zvimP`cc]CxNSQ[iE:k6*]RZN1ݧ] A4ɺv uڦM5[m?ROi馃_vڨ5F4""-SM2!aM0A aA9 Zi &DDDY1M3qNO &DUDDDD0BRjDDDDuQ V).)N0j  (˦vRYUEWޡ0w$<칐Unק`PYVfS&Cgp&PbU(ꚩ\=4*#A27338FgR-k &RyO7&H~_ޚa<'d84dB$Du%릨n^N}=3uzzxqCJ35Mػt.yq>ZMSL $|Ge_[b˄d,־8?MbH3KcFu^m8>2᫻&n?8&L3Oٜg?q_-Xu{c\~r7"N,0&`8&0{w7}kNMK}SuqiwtlmwƶLwUӵw\ePAܷz'O_}m_71Zo_/y,ɹˁ&[ND ]פ=7Xo^ujJ+M?y앲6̒ Ha4v!.#Tحw/Cok\-Տ֮xf_ 2UӴP`T40;TwOPvB4׋9Uv=jLGƫjKc=N{OMvTAvkDYU5~Ր7CӒ\$]DhrM܍'E,{OA;{ Hz'mˁ. ""!".‘Nɸjީ['wMW]6hdvPܖ+6߬VOˋ%αB#4B0w|5WM5XبT:VN]5Ouk-)ɸ af b! B>?|=/Knb:o΂_A j]J |H";>>/ h9Ѝ?&4FgB}q oD&?ub:ovmKa$~og5޿ۮ_xo훁aOoى Ŀב"lߧ֓a˜qcLw}Dl=XQmAnػ1}j`8woZj׋VB>B6׋#ncGM6֟~]{ +aoTMHANTdi ka3Eߦ}Z^cj;W _L&D}TDXMwB"'IpJHkD4˄L@Af4L a,PЉ:D3+QDDDWUzDE b"""" (*Ia5mui hA7V21ci:5&Bd;e6dj/?h 6 ӡ&˼2V+vAc 8#C"<`M=[?[< FfLL+N z-z-&?=A!737uC7o<=q!g6dPu]I~]\;շ_Dݧa4b= ܎ Tzoo׺]uly7]:sC>oO42;K_ }nJɿD#i)g |3mM (aغBӏrpi<'z݄M4 h= M  &-1/ֿX%%F;Dߧ Ӵh5RDvK?l7pomƭm~IDvr%Pfݯl<7i_殾okvҗ[XQ1L !IsM0 }/}/ЪZ5תz=׵oT?MS_\2/_xqqix"Dib-i{dtGB ޗۯ׽TMSGo8m wv&>qΖ}_}[z_1Zb" MPiiE; gU__rv #lP"U/ mntea4l+Gk/l7_ q4A %I& \D∪`hfL9&`ό2r3˘D[4gCOs2 !{';akn~y @fdh3bd$D@3SIxFg94 fPN&p a 5]5N"XL ρ A[#MC׸6__j aOL!zia;M4}+пB""$L'vD믥'>1^–^4[[Dk in71nrDDC kwM4?SAp䠔eۼ4HzO-܍;$[[yqi'ozM>D׵&;ݻ"٨L iD4LixnvvN8~iA(M$IvN)>7c{; h%4JPhDE`kKq] z_Vv /^+5"""'f" __}׍?}~𿷾fXҏwf?_8\k?O^/_0W :º֫~ůnE1&?D߿o!W~ uץ»iwxf/o7_^ w[T/>c&"z}-qwDkum&=um-o4/Vc6~8ivKqm&4.$[bwv[ZuڻUcҭiБT¦oi:k]qT׻Mm4421!eD0& e`B"M ! e0AN 4!i4!`42@ DC)/^t=Ԁ] R97 &#;3w U;yWk'&x o癲]YNiWLx˺ii( ΢@ʾB*3 ]1;ƟӽOA vS_3©ɔq;iM7ZhtAai< 0JPo5'= 8|V[[+O ArL:4΁Ͳ|]ȖtNWOOnEI軫hN~id{#430#9gRkH+ST=IF\9uoI?Aiix"o A\)/0>UN&)'gA3$YϝL}`MvEiwi޺\8NTMzSf!>[]oVK׫x-&j?^oP/LEקbutt_?Wp;+ʓ;WtLD+1;2z1Xh'}C;cm7Oa|S:IiFHL&_봕vN7}c_ZGN_j]tD m[iw@M knuk?%kKvKb^ {_?]_nO\?m8V0Af!")(ꙔgGia3vhIApy8iٹBvhCL$Hf^8ˇ46Hݪda0>)B|,Uį4]7hzy7r4Q1ޚh;Lg#"AkRVWC{åmKz&-ڧwtQg8[Lv.Lݥi[N~=O`K1֞w:REkC׿xղ;K|o]k#5Z7ů.]~~}? ރA[Xi2'n}a70Z" 4-+T4^-XkeOKa_nṆўUlgr7 gwh45"h0DOQOVo+B zZwkzzIM444M?N>"" ]0bnm[iBf ]Wz&w tӺ1cヨ/a4hDD fka>{N>LNPm'Ţɏ~w(&忂w&Hz)=$_TdM4RmmjӶ%]KuxI:;K}ODdiv=wK ^zO/uTDDDX Ϣh0UVtW;O?C1:^Oh\w}7߿zkַ[1~z$҅|!~}Ņ߯Y~+/^{[/K{[ir/JcLy5O~=-wzo[Ɏ>|noTHviv~N=n|~nNM5Mu& 629Mpo=8_}>Qr1ow&1jп| pd>IBvb~;O[dPi&s 8 e9 &E믾կ-%P馚h4fs0v3>iiݗ˥z}Zߵ~K;м&qńTi_B&^Z^[?Dji_w_~{kuN}GPy8rzkJ* /kiiV]w’v=KcU|WzױVd$=o/HTӿ/}7օökׯowzWN^_׳״ưUj7PTA׾Mb㴸wW[{IrPqع:BqͰQG+t#ac.DfаA)ӯ}:Zz A~P3DvF2tPDgW# 'g\1挄D3#"vxfό>4S37AvM20{m;±hmuY恄;@ h4NMSLF04L I`Tӆ BA4MznPI5% }'q}ckkiwi[AiTP{z!01Nׅ>q\rnڿէO /O&? :w^]v\DDDDDET]kn $Mn&nEÓ\jMoan qER N?z`ҡQj꽒{qn]ƭc~u≿nz}_+cxRb>"UMS$ӻ{Pw^}zz{ ̿xZA 0!ah4v *گUgްhjw_Z~}UaDDDD23Mo﮷ooׯO `(p.W?{qa7]oPZzv!þ/?7k_?]W8[#W~ܘnz&AԷzǧ9wM4R^AǧlT^ȸޟiiiVaSl&kki$XB 2Z{) "NhDFB. B"&a4DDDC"!"-DDDDDG?QdޡS&'&uz\&gꙒtvkf"B>| @K.oSi59 }2#7_ޝ?;L&BhAyNN|-znNLlP9 #[}O.=y!P42~KU]dܷoc=;L g #8@UD'~IJ۶]Nt\i44cfys6#32OsLL* a~{ky8zޭDދ[N0agxC 47Lx_]zWܻ֟sFN4x$HM4j9vYLduL?ow__=[$=i'ޞzdB>`gj4ʫ= ׯIۯ(O^QWT׮{eŒr8&z&E)Pza^ 0ڧuxt5N<&սu?I-.T!ŶaتTUrֽE&m_5߯\uc{͈;MKRBGiiݪ}u[ wo0]x:CM\FsN_^ݭW^Lopcq_U7wmXe (IFavJ o sa0f̄Qfq-h05Lئ;xlJ(|6 D߿.8Јvy@l a3GG$|!3`433n 96%*ijuz[ZRa Lp˯_t{`ƙ3ȸvG|E 3 @а4NA,0MBzz U;iNj"!OAeV7Ӊ]MGw0 Bq44-g#B$G)g3fka4,*a?Mt?Lzzoݵ5aAVOƞLw_RV~=5ӻX0 5L+V~މ[kD_ӲOɻ i)Q(B 0AtNh0vxLwP1蛻׼|ղ|kw}y;o$N6;Evn<_[j/i-j1a h4?* 8փ蛠()pL}?= E?iuzֻ{hDDD ˄ $E;[_Nr jKN$=Z{Z޽!h0 4˴iT>a~_l?zK3 5M.ɇpϋQ$,s/trddXv_k{=޷}~o~`fwo]=_eӿgvk[Nٿ=ğZO תpc号~ ?UNfbYck˿ɻZXzk]ljjq5jtӮM*{W`o?~*]W'-^^馿{״S6+v*w tvhg&4zjCl4-2pJVZkЈa*jC/M5T`&ea0L!  B"-0DXT""#B"""""pDDDDDDE#N<5QY/R5. w6AV!܌^ 5)6- i je32>'ds'3IU&z &qa4gFwm/\'i?O.w}Zj .vmA25"T*:ynkE×Ot}!"&I&;ԜQ'?Y1rzRcAcރគa0ԌXf&DIaZ['TLz [nU5pO B 33βy[NjMˆh U=; x:fiEG 83τ( .}&YiW~?jR[qic޴N>~pa4 o Ɩ:?퇿{R_}i6uMA!&;imjӠ!C;Nvxj@zװ~ CZvUEۤJ.=|c뇅M5]}Vcݿiv_Z[}7Mc>tvy6,XzMOOo|}+m+.8j#^K$c/=W2o!X ^?+.$M3ԅF]VLw?[_I?]&/dvPX\-MzG&; Ӽ2ݘݻm^PfȉsO;.Ȉe>ʼFB 4e 0|{<܄.XL8X ejm&;4By:~띭A2 dMO!3S6Vb'2DhAކ `8 &4-;Vw[M8b"! rCZj{II=״2;?_H~hC 0iw6j`AƚM4OMo wTE 8a;MHLoUwJK 'z&\/_VZziߢn^[i{p[Y1B#h4˴.AOSնWw޿9׽|۩o微XL|ԛŒ|<'ڴN7Ӻ'8'DKa2ܪ jXM1M;UOzd[Ԕim?'i}]tMKھmwc_: iNi޾m;'uzuz&_Zu׈]ۺ.PXDDDDj 'e N,&kl5}WW1_w~+K BL v G7b*^T)zu:}w(""""""(h2nh4,%o{~F8'؊D8 k!}_!IꉿW߿Uo_ڿ1_Ocf`cצ]7_dGL0CA8M{a5&:i}a5CL  a4 &hD!Ah0XAMi`M`!)ǯVJf@Hs3Eiw&;DC;RaslJ7&ni }gK}Buއ/.&oT A7e 3gl]A{~\9pcAޚ%A ( P~V_z]ƪJ:&gc]4P,6 {j.?ᾅb56Eۧi<-Dމ̍24kon°qA|'ëm_wcLykM0Am_/T[ݼ/wX~u(%C_4G$WEư_k}'ئ*U /wmnR푋_nhdOԛ鴛JDva~uO. #H8OL+ʈ`~بzx?Y11}}o_ZH'iHےMHvfG(5)#YAqAx)hC8 DAM`׻]m?ukݫٸK} ψs=nGfG3CA"gC59g CQ9?%ffAfrL R9 &i 4aN DCE0.=P;^?M[}?1kK> Ci-4 L&jH wh0Z Js j?4O *L & $8Ai]ڍ{cv>M4Eô~.z-vN}44Lw-ݾMw ow>DDDDFИL !\WOcDǴމړvt¹n%WL1ķˆ}qkd'y'NE}tމ|."""-Si {N۵NF{A=VCF%qdKoꞝzj'?]Wmm=5 """, ,[WŵL/WZbۿi+^^}[ЈL(Bi&'Y L%q_mc1{K?_|&DDEDDNAA_XAXrp^qШ_!޿/])$~Ex<[c1&X,~&?/:_K]踵t[MN]ǿoO_UaKlugO1{L2~^ҍoWO7mى91َ[ Grn6ӻ[aZ^ߥׯQ{J*;;Z~ҽ}=8Lz]i-ŮjVXk)7vոk׭Vmn֚c+}_Vީv .4!Ni0@L U ijh24 tua4MSM4®  WDF"pDE"i 0""ͽreKkD22pd,Fh,ߝ);;oMJF;+ذ- dio ivM}=3aR> gߋ駷 r=܋e+p7|z-;d4S92JrLd_Ů:N_B֋&??#E;Lg2|!N3xI$%DN䴤7ڍOm8L'yLO3vyz|!CK/ɽ.F9ںhiR8fB d 3 -#U=3h$jM>k[ktӭh&廧WE{DށuTdql:a0"Hy!F~ 7Z]:%ݦ 5[%*oS L~Z.h4__V[mdiroDPqwqo Pa]USkFcF=7|KlQ־WNDDDA"а &ih:u xbbM{"""XAiOV:ak /"8BhZ@_Ht&25V ZcIi..8 \r k%9M Bnj"""$1{oO{BM+ZqX1_?dq5[M$=$>Lrc&F98u$>Lq&!{YC~ſ}O^=DVu{SnU_!GjI6#tڷɏ_d^[bKp&iz >|In/dGo-v_cr;dW3UO{׿}׽VKӭ.o%b>9cث[dWT}?a&>[  4 }G[}~n][Lq68DDDE@v ! &NX厠o4% ~DDDDD0AX \&B-p0ЋIii 4e{M;m4QVC0B Adue XmjGS;)Y j:2#4ɣ 25ȬCf]'ߵTqJv,DZU^[hE2/q!~!yʴj^63 9{2@qDT{]m4NIŧxA >,&nRѤBy Czȓ/ROByiY|EGyJdtlyx|^iM`DMSUa jc&l" ٱbt2B'΃.<Lw|X7ҢoN=tн;;5UT5T5M7k1ÄôA0.A5ݯzƓ}7r–ޯCU?-}n*ӏԛ;廹7'M_hK$ԛ9zdwRC$׺c_^ھq|i}N+zkE[+ߒw-Az龞B9uB#Qƿۭ߯u>)*u֥ lÇ܃}x&׋_}{}WBupwo}=8FDkl/!#wO{{zw}[޿}W*~޸׊ߦ9oO1yDz!ɎDy!v׵_N;8g/ukDDh;B =5M5;{~qkjAݤˡϱ P0B ӈh55 ޟjx鷾Lt!qgD4B!:dGR4!-Um4i#IU5MSOG8BB 0B"ЄC DDG:QmJAtUT"5̯Lw H+;; m;$ie-V46oܱgk"%<1=43zŠfk"PgUd|'3s>d_zki P O.q gyi3L2'Gg#xgMWi:NG iivje#B꥽!DdwWDovޞa t-=?-O_.ܸT>-ߵ91ǰH,?no{z)'1rnE7"=q~_߭W;_"O|S_t 7_k׮m^>6B(ƟodžǮC_ ?aw0[7cӵ_?1DO!GqA׻OZl?O1AjDݢC0B-5LZkvS bq\KMo3b$ &-44-4iTxiӴ ለ!qaa'jAB b#"""2AN5j#l-3MjNt,g58rqu%5TBJe;@Ƞ<*e}4T:C5wD|䭢XLDv]ۧzY.& IVoGgGH&Nӭ}pt0 hDh3AVM5OOWziA͇Nm96XWakIj꜐{n׾===ϑgfBw{ch7Ɵ^=V?[А\wv? ,^OPd"Wvzp Fd_$8Ӄ^uP'Zҿl:al릚;W&x _l7[u[KGS KLw+R7_Lqܔ;ikn&;ZwhHA[a(~^r_L|t^Gkk!!G] 18+y.WJim]=/ $=> /XObject << /Im1 110 0 R >> /ProcSet 111 0 R >> /Contents 82 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 185 0 R >> endobj 82 0 obj [ 84 0 R 86 0 R 88 0 R 90 0 R 92 0 R 94 0 R 96 0 R 98 0 R 100 0 R 102 0 R 104 0 R 106 0 R 108 0 R ] endobj 83 0 obj 2757 endobj 84 0 obj << /Length 83 0 R /Filter /FlateDecode >> stream x[]s۶OX E=ڮDj %ATu R )[gϞ]w+gȯY#Mlpbo?bse.bueoW?w,FF/Wg.isiXPRpmKɕ[_i+<]1>-'4LoWn(nػFɶ13lmu4<⋀ Ⱥ}=J*CڇIey<0\ڐ4c Fv.w, p6Q4=pwDU/$,q,݈cd5Wy@Mw{jչzuޘÔӧ?>.fOl>~scz~}%v߽{}"0џG AiŮ;_'5qĚK{h~w:|i"3"kFCy_+羽'RW3ץ8Pf 8pqۻ̺fP'1}\aO!&qEO|1~|6{k6ӷ {5 Z>Yް v&>va;]Ӈ_ǿ#tӍ[!X좢שDl%QˢjsZUŋ*O$0:VG-Q* ɝ6*Tlt/Xmr2?h} Q |eyf. . iLg|3L^9H!iO۵q۩')tz7鿃c]iR lζ8"X!f,ˍ4ѵ/JJOs)& 'Ht/<յ2;p 2}T+&mjcLPG=?õT-a=YR m anVQ),/-VR:EKh_LJ N2}*rXl/3G}ÛHu ezd"1c` 絣[B[V­$l.}|Ui=@9Z˛RE eU]jM$2]PW0;ZOqھ{va)P8$֩Ƞn䦷nJYƝ&ˣ=go\zlCAI+R㑢4\ KV)(7L./AQYV[I٨Xaf M("Ӗ2NWu#}ߞLxB:l eI2,QK=1i}YϥC֦Qz$Tv(]Rˁ&Dis, @[gz9F,X..iZru6CUۜIV*Q4"=?ާJGIdׅLO)rLH( 6PJ%J!&HPZՊLʲ< @[˸iE''·nѕMm]: 1GV(6bF3)Ŝz>-Zs# b'[ih鄤n+Bhӛ^EuHוƅur}غ(R*)wW^o,ײ¦xWQaΫ(On d Y=6VwR"> n- M m !PL SAr Am=E$P i5G=a&G\% D)j/?>P^#*nU/Nɱ7"C1k;0$컈vi*5"N:!푷뺰w<~s+?TFui/e9+XҊ\P7pPzerL>R%rOFst{wQ&{3->`hmö=[A ѷ sa}:t&QY6+e ˄{OJfDh;(4} yǛ$!<8I;v 1]T>XiIQsQMl&N72PċCZA ݤYg+8Sb,Kz4?C|.(q` .DږfHammr%ۥ,FCK ٙԏ/QCG$;H,Z8\ڡCYY=[-E3RV̪!s`$b'ѥaI* o]IyYG9LaD?x F}/Zp/Mn]8Hfc8jqG> stream xs 5V)5T0BCC= ###=K3\+(ɼ@H!W#01{BHk/Fk endstream endobj 87 0 obj 82 endobj 88 0 obj << /Length 87 0 R /Filter /FlateDecode >> stream xs 5V)5T0BCCK=3#= \+(($9% !Y!c endstream endobj 89 0 obj 19 endobj 90 0 obj << /Length 89 0 R /Filter /FlateDecode >> stream xs 5V)u p endstream endobj 91 0 obj 2360 endobj 92 0 obj << /Length 91 0 R /Filter /FlateDecode >> stream xZrLmI]vWv⊓2" @7'a"?/'fpA1^TR>}t7Lk9ǵ|7}Zy9Vhk(±JxZeօ|[a_+Xᐗ^05UlGC;"_#KͽȎc<On#ۓva&uoF^ET_]+ݹ?~f8o<#<D=uOBk$ $x]MFz(VhZmKtX0 ^ٗWwhHb!S`F7 MDp#-Nq;):I p7W1u ܉ljcxpDor<`1 b/bhSP y&Hy?n?`AsT*z ./L-E7 KC3BT $*[pLث SH X,b[GB49y#Lrg.FR6ejgIV}l05Ee]P{C9}m"~Z]"jlv{neu1mەk.ی%?XHExIs[L}$1\jć3RkdO5Jij*CnDQ'2 >}}zv-tC#Iز]lu1{` }J^9^_<7*KIvU"dՆa_c@dEd"8U4H te42g3w߁J@><ҙ;Ov+}_nrUi\÷m;H~%?5st|o|-v»NoO2MϸFm[ԞgѸ]凣C^)w8=Q@,ȴFILwxgez׍q" І8#"vk˛Cnn?B.DRlul`t,_v endstream endobj 93 0 obj 214 endobj 94 0 obj << /Length 93 0 R /Filter /FlateDecode >> stream x};0DO;l vh$@!O-/A۝y;3uLG@AqBLeB0381WW6ȓ!Y@!{BTO@ޱBzoդi'1`iY&tU'-PYfQopKqicHC}PN\EzطriN(KU{` endstream endobj 95 0 obj 19 endobj 96 0 obj << /Length 95 0 R /Filter /FlateDecode >> stream xs 5V)u p endstream endobj 97 0 obj 124 endobj 98 0 obj << /Length 97 0 R /Filter /FlateDecode >> stream xs 5V)5T0BCCcs=S#CSS t^}7 =C34^=SKd^r^Ē"ݒĤbM,$XYg`gd6n%*^4)!*M# endstream endobj 99 0 obj 83 endobj 100 0 obj << /Length 99 0 R /Filter /FlateDecode >> stream xs 5V)5T0BC#c=S#C #=C3\*Y(($r^ *^ʂTM,^^؟6 endstream endobj 101 0 obj 171 endobj 102 0 obj << /Length 101 0 R /Filter /FlateDecode >> stream x} 0 ';䨗ش[m= sCAN/>+TϿ0(U?g25ʥ_ ZXkEqj%4d.Uf32f/#o#lb%[kHObOO M[cG\v#sãY5Q endstream endobj 103 0 obj 165 endobj 104 0 obj << /Length 103 0 R /Filter /FlateDecode >> stream xm 0 zMuQQOu(L +l@/Y *1˩,e>1'WA ?^; +tM*+2,rfnDϬIOUBp?zPѺ1ـn>3C endstream endobj 105 0 obj 36 endobj 106 0 obj << /Length 105 0 R /Filter /FlateDecode >> stream x+T534R0BsK0gd˫k lH endstream endobj 107 0 obj 11 endobj 108 0 obj << /Length 107 0 R /Filter /FlateDecode >> stream x TC endstream endobj 109 0 obj 53005 endobj 110 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 109 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream gjR3^zL NSAfdL;M6k@TzJ#\t4cOBCLkAo|$HuѦ{:u״Bke"*cƊ>j υB, qS&zK~DwT0 Idh U>5>vw?i_^edy4נ?q AgӰ &g$~7(#ҷR7:Mޕ?>Y d)ZziC1.i\_ZqN[Yd Tu+圴cMދwwܓç^iK]~7ةoqMRkMD@OFcvN;Mm[io[UUWzzSaBn&GF!OSl/[ ڧt++OuSoDJq2B"P6CD}2@NMSB_^_zKOn[o{OT$ e6gtl f@ 60vn!¯ Uk[G_׷}\@@)fyyCLhh4gH4բ&E+~o ɺ/ߙiEќy *h;P\'vXTQEݩ'?uE߿m_ӘMutOސd0b @04 g8i11&;DQnqcOR{5j+!NO:ǰڄjTޝr Duܔ[kŭk}~=a___~q/vqGua mQMmh0M=5 oO}uu׵ku߷%_UXa~zڵۥءki&[O[Mev×!UvjI\vp__4׿b6?m%i^4''b\ hDAk%,A}I^+!u U___oM41NWlZ k̩kR +RiKfL4jcv ˂7 OkM;"Z8>(OӿBL[6<<}Ӳie% 'itKגm3U2s3䫄3h4Maitb4" rR !hUDG3h0O5 YܓL<;&"v OM z*.)u#c'rvDdӻM0=:7wicchI=i~<!c;Ktc8]75?އSnJQN?$?o_ y(D'"oƱiZm/_݇T=ݫS!v_|[ Cxfv_۰t7EêUz hQL?񴠿nW _u|-ӐEd_30vG3"i~t[omuwvQ\f)A(ّia ja_oo 믽/2&>]@Г:Y.(OA3 6 uɻL}hkI'o}kzu &[6!"+pP{a4 (;UM;}&FLr8_Ҏ*E?+ S|U?ONL'-Hd.#~_Rm{}mt;NW{ m5M5dm 7c4N$ >F]IHr ;PZ-bi[M>ӈia=B !4DJ^"QoJ}J?Ԇc*44Ӵv@aB hDEeœK@KJ8_"⟯hD$5tKoljq^?"k]^#hGu NW^㍯pjf'izkMckl]kɏv)>MB? j+Zk]L*aXAUdQǵP0M4vN"""!e);vMU """ A`AThF#"#5 VFC)Np8t_`#;DW'rRd,$ 0Qέ:Q1j+ D RTT#P„}z“(q  *9pJ0E˅] DyozGlO{ >a*3y>E[ $OJPU:+)aJyp.muhC L܈QAlc-HC3ƙh%D CGKEiv峥j†H ᦅ׵ =6oV~ז3%iIdIa./]K}U&'~&}"rGddUDO5nCXEvp\ #qIn㰕YRڒ&p`=GȁLb<Ї}uw7'z&w*cַoꪻ֒eY#Ȫd4P TJMN2h{j5׭?]nIԌ~~+t#HDh3=ih0L!#'qߪޫRcMtuW}Kzw/ɱ:">h4,;1A]aS4M4($\-ycHIqU1Kot&34 t &khm&&>W]:ү&6?}uU[ӧO޿E‚c(qZ葉}?_ZZ^4 M;Qhv_P?2:DW׽݊Q'k1ˇmV{?T$"jowg$N4uٳjo UoI~]-6%zڡ˽q_O?xZZz_ݥJG>^:pkuQK'M?$^u|kZUύXض?Uv8WЋTo_z91{ ?I]4M;}SAІ=5N a*nZc_zU.iߧiL&E3J:b"*# Hw&>N7-|.N.>M4¦A &D4ЅlFB~A}RpB}ɾUlycjkh2)Xb7ɏ&E}Ltp{1;bSTii "DDR}/O7OT-~zfl*hiADXB""""ЈIcґ?t4ҽ>4"hqDE*&bhD5ݶihDZiwXj ZQSdZ9 -"9h2GbCy: K*ٞ#2>ȁO3FF͵L܃=*a5A+ 4 1CNE;NU-le#+Vb+I6vDDRLLoOi}𬲖dMSVMό6!#u-U{N4vůdUa4]vSOSMSZxwNecگ=!zM^NA%Wq/ Ɣ_w3~ׯבkҾAw1i:㿮 BC)XKZr#dSGxDlCA:_z]x.Gd#/l&ODFC3 @R3 Aͣ'🯯_^H3(DS454ϊdftIaf3LzvTtN?i x;7rQi!D NO1xhڪVGչ1k&}SiK_^Ӿ?=4` zi@ s@,uզIquW5p/ 0UkrqߓztkhZ&#yMQDJv>凱8iUJlR&?޷l}-K}kk,t}-%JE׋ڵ廧]oUu[$5;.k\vQ{7–K$ zWZX *|/ٞk-4;N;M5MnB"""""ӵҿ2C}]I}~{M;[""!`_뮯J/-`i WKUc".""""=~׳8?狼;__׆JioQޛ<ԌU ~lFݿ^:Do UoQ^^u~o_֔U8pPi/kBM{۾S;w+[/!/&?]PtkWB]]O~oU^j0hqӫ[_O[-;Zwzj4hFYYYGIF?OM3`Јi6"""؃(gτ|{9zkj>U|D5kB"""""GA2Q O >iOziiDChD0^E\EHET 0A4AwW o ~iu_ݮ.~)&XZڂ :x|~!47v}_OaڪX?w~}B_޾O&T{]cӖ=?~ܸ"@8O￵⾩ޡmkijhf&UWa4B"A! 3R .239GKr||f ;=&z i`qiݦT[߫& ::&oL}Ν޿fcp׏5_Td$2%ק-Q2u"+~a6r;#:?…CܱvBiX*Lk}.}êiRIZծ{tߨu_?^W]G__o _="Ze޿k v]^#+3'V7&?cKuNZM9"B-"M\2=~kKBV!k||مO&F+G;^Bl[wڮMCKC{_lR>{-{߱j?-LmFqw_jt:_[U]V4¨+j[Ui]MN {Av0Jj-вPji">4Ld߼B o C{ַZfpM4!zh0D4!DD4"!"""""@B-" h4imk*hDDDDDDDhDDD-/ "w" 8KЇzU}oiu)M}v|?6>fw[MZQۻдhGabi%6v""=%QiDb#dfdfB^ɔg Sk-dO#N$׉DCuD)L[&v&CA^&LwC-'ߐjqt$[iEqj?WN% k~ (kT>u[NOoZn+}TY)_$?{{kU^|#Aݾa] >Gh@ AZmf9X '$ m5U߫}o&|;x&mS^}{o u_wmX'zi%oz﫺^]v_Av{(!<=}lVk]{]?WWT].+~C(6S~MnQ04/]lo 헽cW$.e봉WelRvN"PA UVpӫ {O~o"7XO}M|mK馃تMJ0LU&kL&MpP ӋB &T?[gRYȡM~qM`Xf Mt7m{;B"!Y1DDD4")2""")4%.ЋQdfc>e2i]&&>M]/ںAԷЈЅ_/`290L!vNH7$|-_y>%~^! Z^&zNNtM߷cLwMW76uK\ꞩt[8N(?wUV­اZHz?PwD]_N[z}]/׈/?aZ^tN)֓rpkuWNC{߼{.lW C蛴a~k W"ooᷯO߫_ZO[7j[_kڵo!jf,ݧ]D]-Ϳ[Ӵavw_`1*pQ|q]iߦUP޻\7]~WV>bתW mz||qv|nkJ/d vG={]vڪDq*5O`8LdUqlC^Պ)1i[N;BHZe$""#]}Rت!L& 5L!e4""=ti޾T:4kLȈ]M0a8`DCB""183jF)2ڏL'fEJ["晶dZ;-ş;禥;~ߺt\qhLd ˡ O5dNL+JVvF4)ETՙ&?#yIdxq(=AA7L2?쨓L&u#xq5> A`X|8qaS?FL#YrٶZ-S {#k*ڦMB 2Jjv~mGt,}鮚a51z-L_ܷit~J$۩o7_ҽQq[j:rPۡIozoNi&WzYo5~Ӿi[?8Oثl/O%~ë﮿ָ\vzJ^mO_kÇ[u]]q_]/t>l>zҮ^Zj_C_rye3=7x_w{_h⻯ׄ &_wc}?Dl2 _p_{M"B5j~Oտ׳}mm?_zO&;^}6q[wZkM帬{ Kdv&}=k!_vAX4[[mkj0M3fT;Y<ȈAf˄=Xk!3ki\~]n*+ޫ׫Zbvk4qB (Gt\vOնt+oj&Uiv ;[HtXf1}3 kH3duvpUL hDCbqi\T MS[j/#AQLSL/a4VbU4-p]9+)3|Ȟ\a 8V ٦hvZi 4ӊb"t04Ɏ4"# b" !a0EBӈ4"" "ЈD0Yz(t22%ea2 Day,'Xh&DDDDa""@4sY 3rfG4&Ӵ:Ս4[I="o]4QU~b3C8[Btˋ'Ż[N-Kܔ_iۤ$8]׊+ M; ~7u&?Muo_}䟭+~U58:]o'~O oJ~׫5Zi}&=tM'do'U~1ZՄӯ c~jӫoUoG5D='ORwW}yvY1ㅯUc~_WíBDc W'o]pkk_o6rN_kKrcWu­ؽ`ɏ[[k߫ULvKx.ٻ_JӽpkI{Q^Wiu Zm߷C5ƽƶ+_zM4hC;iKdr*7]X|R+oqTL/V AІmB}t|[_TZ`laQɦwMZߪM)<]dMI:NNa5,p!in""#C_wi'#`DC"1'Ip +""Ҽ(+T`t#S %Y7 m`Qi!h@țԘdC\ȝiDnA|RzRȮ'kxOOt̮;_$L+s:)3"3j.\h38v0 ŧeaGd! qh3!I?AO ]3 Q% BiG(N=!=&v4T!ge~˼y]4< ͳATG[64Bv0mX{Oom=#㧜&=;M'ۺTM<4-ckrnn8֚&&?i_[WVc߫EǗI7b!zd?#z|.[ړ5!~6O%k'Mi>{I{un׾U].U+w5KuKQ9K[H_յpRI3wIc'A}Zz[փm5,ajk[$hYE__~_ۻ߾_ l&_M/Mw]mVͦ/7io봸kjH{L(AiN ]{1W 5O~^zauUAڪ b""B"0DG W/Z'N״M 0L!a0Dd ~[c}wkvMvMӻ"d&"""?{ӧ}CM5LLh44#z i8Pq`DDE#0! '""-5haDatVlɱ(DI +KNL ;vr%iOLz޺,uikkޟiP M>UhJ¶vk~I<[!^vR4 vO٤fp$3C@τ%Hr HgR|0A#BFA!GTy(fl>[ !Pjh; f &e@=0$m`#@lLka3AAL]Aij^Y}PaگZwG+_Ek [IXN?zk4n[zoqo&EǗp:7'KlCRN;:?/VzM5 Ӫ^CڿW_O_5/_ߥֺk^ڻX^~-/O} 뾿E1_z+ꑦDǿ鿿KDk^,]o^]%^~߻_u립zJok_n }^w!`| KɊ[]A!Gkr 0Z_Q{p/~cO^^P+tǫ{Gz\Sݶk{J wJdU]>ӻhX[T 3H~a05MK ^!&! 'iiDYv T&h2!и08M"" ! 2na8e`C[U_iܥЄDCBul!DC"""""""""#B"-#_W,zRDG{T/pȪ3 fa;j;iEdD3QI<3\MQ;yѹ1gNdus(0AfGv4<Gfyh0i)nfe*$Et  ή! 8 wI<;L'ihvkz$;0D"XO FA fe_pwg廴鶨7rOYoԛnheqq003B3h &`icWn[=?MN$ ^ЋMPiMa;](ˌc!Nr7r>]ŧ[wIvK}KqDn7hk_>?=O۴ԛ%nߧN?Qֽ֗xK$䠍bC;c]_^fw=޳޿]8~~ zzK^BG}[5׿[ Jͭmމ}W=k_k{d_ U _\OKO]KzXg׿C {awM5ǿ)v7)[ME6>}|nȣM7./_][^aǻ5Kȣޝj ud*>ro߬SMqqQ6aP7?ӻ QeM02D|kn;}jFzhM,h4 !DDDDk[UU ^5C\EAa 8LDDWOUU@iک! L˰Es؈qd]4 L$DDFXB""0XQQ a+ZMu0@)"ZBhfAYPЎesQȈj &:ؓL&cQ' jU=nvSEzM}ȺP,^LXΩ==G?kytV&u?*k>֤Q.fda ĝ- q f/d 831BA9 6| Έ v f#C za Ih4&PGٷ!}fC &XANim0bNh骡v4o[4xzIHtOnrc>ST.[m}h[kn\eݭkӴMoi!5#-ŗOA< h~܌z]?Wq(Q7ɿåoޙ'u'K~גw}7_ujk5N[K=7^^zuguǏZ^*Q޿a~ W_౫*C?XVa}Wa;_D]pߪ&&?o_?/DɎ߆^zOU"oX_/K>ץ^ XkW?~틿Le:WiҐ)}|?8囑'l^ƨ5/bOnnӵӵvae<vIuQ];M5ӯ u]m5AMSNaSU]Bi&($}Be(MS\&C O!!a4D0E"A!EZ 8O֗ED3*DC(,@0B"~",eCUjMbB"*#is-3(O6ra)")ٸ֚g y]2UP3yh}ef!jm M:[L'T¸BFK"NB">xA 2 4„еN"Cgu8HdNHXRrgM T4 5F5MB 3ll(!a];0hiڞ TP iAڧL*iZvvnNQcQ1֚Z&LvH_'i"cN)kzI7&zCnEǢn[VPI;DދkƼ{EM|l:8ER]I6m;&uBXuڻ $NI;xxDZ]y8unq^+cZ] ڿi to$8pJ^}oX[-C^Zu`{LF~U~ 0V ebp_])G ߤ\ZA_ۿV,6`oz?[ۿK/~t]#j{gو -buW;l1~Mۆq~UCɎ6tӿcN/j^wv! z{什5Z. j&#Od闣~)׾ڊ_}+اJLu,DtVL&rAUO!*wv2njvji8a54Ɇj;MT0kU U4 4 ;UZ4Ӵ͢ ֪ Ŧ3ZlM4аkB![0BA\0S@hF‰Ūh4:hD3 Ј@! !4CDBB"23rr&=iqiyB""""""= &vPjPiGqJUqkăfVrTS2ܧ{%/g#A馄?d!I15QYȃD}3ȇ"zT',4MWj$Q0i'E9 >Zf vى44tHpi(NfOTonwcWIzߊq_k޿kZOhF>M}IƟ뒏M0އ߽_8w2 }Zm'wnJ__뿤D}}d^;o'D?}7cMuW_Uv!/ o~_ukaW+u߯zv_Hujz]A8h/_04,&va z mT'z]a=4M;khim5׫Tc}%uZz&=ŭh𤇬nc[7{ovܷ|o7,wOԜQoa$A%>Mu^Ry'"{i^8qY޿\y(oMO[+^S~:NV'kzI~w]kIo_ծQ.k.{_5z}^5_ ר_Xw}~OzzN?mW\'_߻c[ }}~uEE_W[t;_1[Y#L޿{Fj^^;aU;KUMeTjV! 2=w_!޺ n)a[jIv*N??إo~W}_i:I2TӻWI]kZkM+ wk`˄a׽KBteS;tuF4ªUI *wi 0Z 2Z,,3 0LqDZ46,LG\M4i r N4*hCB!IBDA"""""""4Ekio"""""" r^UU|4+Irk׿'fz"Ri+;HY&Aih0 u/kq?ThI|!&OTaWsD@NI&#`͚;v ꉽ1Twzy nfc3 aUu3zn_322'233SA`UM4a NMQohn!ԮTrB3NGMBfvA.v&M>&Ry'.IU4`30N5Nz\U}RQEŮ/'dcm^z? w[Oiމ{DI6Է'NI޸_t⿷߱{4OM.(}1.5NU[u~ 5xocuW/8#;|z*N=޵}}5E/Z[@}~U|C_ZK Z}/{횼7&?o_oٿo{gݿok5{ikMt[a}/׾8j\%i'{J"ݷKm;wbi^QL-ރ0עCZX}}+ӎ6.-U5oa{ƻ ﰅIi&5Ptiv+a2C5$a DeL(" ؽ&ᴇLTEE5TzvvE@N"iB"$萄Yi{kU2& [." rNݧiڦD9V!80DDD{.M{T,BhDDFCDS2R *ܦ%K`FyA$,` jHv g$ĚGMVʞ]O7_wk4Bai{ѓBߍ7Q2 N:+HNuFl̈́1<#E^Q \jGц#FD#B R'8z!Naϡ}ȳL! f(fIa N!C hC  `jɎOT"o\S'F:xOO_;ELvɎyڤyqIM蛽I\<W{Kc.2QKOKԜ_k_|_u{+tO/8Zai~V/LGu_o{J* Db ^a>Mz8/޸?vaC??w^6 ?K_]}u{}>wݺN^_w+6K_^ol'n˿/k[!lEˮqwnW$?.6B @!c~ǯɎB_ؽ6.޸cx=ㇴ{nV;MROZ}鰝 ujZ)Kڧwݦvi ;M;ӵ)f+h44MT&M0A [BN"df]peZa4"-pM0 "!(r ANҚa3DDDFDXL!'BhDDDKfjY DdTt0B""# lAwYnXTww vkfgbWnצD }Nߣ꜋ic;*L?E'w!fMtDA<($ža&Kp9DaҔGOMTY;a0a{ƺd%% aJ' !vpK_#i:5nK-crtDe+G58!g 88zJOjF;u뮴y(%t1%ڒxSih2:MU﴾,|kQp&}A ՄBpӤMh5Mߵ6ߤ]}j;U㾖!kzh4Mþo}ǒ?ҿ|/uɽ'[kOB(qt޹<'gM$ﮩW_oo·_VN"_ӯ%Q+ab$kֿW۷KLW֛ۑ׿VL߿Gqmo.a7_hzkqz_z\}ɏ4ۯԼiElVOA}~կܛ|/XqSVӵL&.BeݯQqwqWp+j}ЛT eratӈ +Ӷm[]&)ۿ_HjAL&B!i c&x;jjzvPjKBdFkӵW ˴B !`DF=#LBft5"" aLItDDh;m5a if,jdk5 řι%,SMNO.a5Vj߸_Q;~eCmyl3_ifz~Fe ɕl,.c#'#Ffgif)@9|gȜWJc]Ρ G4 &k b>A q 0 iD=ϑBJ0$L0[A9qjSq &@0j3\r[ i]sTLv5M{I: M;Mz;T[EyֻXN廴[Qv;r1c1ڮ-ynQ7uN;D܅?.\t\eoKPMG[(N-Oh.1#|OV}iaoUni.ޓp7mUoc]w+M>.tnwkqƼq}ӿ}55wS3_zuꚯijqڒIEiYjDOiݦzjjahKU a N"(m4i,#sPA0PL &t = 0L 2`DcB"#%DD*%BA"""2L&{&8B"""qHeC[!M֛3M5pމR1 Н:mb<0a_27̑L'mgw4f"%3E%F"qi8rόb3L֎@<@L3z3Oa2wa8dU4ž BQ@mII0dn9 ЏL!Ba3?=O^#Fi9\=&vaH4窛w$MܸoO8oɺcAA0A31G5Bg US&> ޞ1>Z];O?7{vzƘW M8[},6_U} ozIvz${{o_?K8MllZõ)7ovj=~~bHu(L6GU._i/I[MI: 5L;M5b øo{[_`e|=;LM aZhD3B#]n"iZ uaMAhZUO44M6EЈ#iЊDGe05DDDD"""+ ҭ0 i 3;Y妤Ι`]:ɧS]5O_޼ tM7v;QWrb , m 3E>fDh0U3NJ尶Q O9 @aLȎABDP HijtDHfdySjO hCMGW~j:vifvz&iRA$=-跢oTʹnNMzMԸ{& iE.ے Db?jT(ۿ]o+\.cMa038A!Dꅗa,)f 0Id$D0B"" a""""#CDDv^%R 3Y5M) °Q]o"|k%FڽJM; 跑xXrX_}ߵo-,$R m zlOu;(y5@Le xM8LxпI LviXLfvp˳fC@τ!ZAeM0A5;%G2aD$$G$4 a> m Z U64E}Hw/~5 TCON4Oݡ{[ҷ :$>W-x82 βa!9M=kK D-7軲U8znw#}_Ɵ8TT.͚w m{M4{7|M \eǦVŗwZJ_]uҹ7pohvi}{]{zԈDǢoI$Rn:]}c__av@%>rOޛzޫVO_pzoko :x_R&m[ >xU&?:߯lU>Lz{W$᏿oŬ[}v{}B[ w/[t c!Ca[U_?^EZ]ߵ꾽2=`wUV-;[x5xl%۪_!uMS iߺ]pi1çUc8mŤժM5~'}ɎdM3(Xkk n=ڊkw6 qADYTB""#c n*.I *}:i4"#"""#J=mݦi@iLA S\(pa]^[EUpMN\-h֏ gFږSHO]}?吤ˊGe:wYnkc;UT%wiND'$J)"F22aaS~G5$i" fT"9P 0Afya ^֒{݄vW5O"xeEf=*B9wiЋMT`\ flvPQ3AS Hvo|~.:S(8jc_Mw&dԸr\iX~X/؈ڻTM="n䜍{KO^>;%Y+9ݹct<}/XɎ_|]}?Oީױ׵?_I L7V/~^;qo>G^L'&;k_ߛOou])1 [vٿ5N/{o~gٿشc^۷}=K0l]GzŮGQWOl_\ǯőZ]5O;͢|ߦ(ki^M;Aa f=ZŧҪv4iɡ4Lh2Q`B"#_j 2n 5m2nL!aDDE! UiA`", hDCB#Cji V"#BL ؘA*Q81j?-E2;Ke,Ge"a03%H^#ZieFfM?0 #]5ZӦ?_H% xv#a;6\ќ34vL ̈p==m$"T4Ѣ䝗.FyHfg4a5&4Z,\RosBj!0˶]`Ŝg+aX"3a3B-?Tv&?А9234Mޮ ?'rޯ$Uz.fi&5MUVLɏ&;~Ir7oPN:ӽT¦Z~k-._k WrC䣥[M]{"쳂ư"i~7ɏv/(u6/'n_حkʎsTp":;vLGcYئDEJ4dcDm}EdG^dhRNItL*dOtI>䪲Nz=(z:ߑKi}o:ߦwZzZLpu29;m?D#k7"[ca_]m]Wu]w zm׸!ꩯW5 W_v6&qLȌ6)^om[g?ڪװi+O;MO%F_ֿ{duatzKO0"}3f1NdK7 F## Ai^-l,COI8mS]4kpv D $if31iB !`!h4nҎ1Oqom$-ޟ+;Ja2vau;-Bzšk}l_^حStQLVǴ>z߭T[NpB&B1݄-,|r\yz'^5Zyijj:PiB¦ &Hy8co1I[nvz.5&.밽A(NO0 J `/ܓz{]. yV׼"N փOX0TɎe42ukW;pǫu5PA[ DTj 9_0PFaxa7~M`0k_ֿ_}{[!-յA}w0w87w_ke=hG?[[Py׵׆ƺvizq8ixS}kOv:Ȃ#[KuwiڈmSj!3B4]muB &!f4Q 2B ah00AD &r "2RUxŮ8kh(aɹVwu[4;M>܆bLnvPZ$"qg?h2#0f!&ogsD v^'3YG&xC]qih4iޜV)x`Z QcO Wvcu[ZM%mv~J(Lw!N8MIG76[ҦrZƷ\?__%#_ǦKZ}޿/1WzhA%S^y7]&-jz__޿s_Oڹ7a?1zKs"߬wkh\_l_|S]ۧ]V;_o_o}moa}SP<3Uޟڪ * L0y(pA`A{1Ӵn!Hb"" pXWaPB(2THyM ڮ:ɐ("܋05UX`m%E*wJֽHZNU y],ggEtB/qPZTȌH";J j)Ma$i֓${%&I&>IA/K_zRO_N9Z[ՂKz~Z ?TU]kV_ :u/ޒz]._ףQ u]Ujk^oI8]0޿kjLWw Aba6Hb"4!G n5QFЍ#LPG+\M!pȩwv#ʾIsoz~[\Tq3Z$"&BDH5?,2P)&!z\gωI4͐ `BBІivhiߧpww|rN!7\F '`|F;Kտ{zȣQr7P}]u?{Ǿ"k_c1O+,ֽ_Jla⼆W~}{_צ?<}1Q\]d%t}qvWVӲ1+kFM48M;L ԍȃ:0A0M +PB""!@A!aDDDDDDKPJe^\$Dz ˄Ԧ]cC-b>d"k\5 CASrPkٹSjT}/h5 u!W:w_>[~]}wUT޵0|%*OWpF?awI7~ުOAB-4#DRԵ#Y;DIQA \ [a4өL&Tv'IS^0&vnzH[qvLprce@Άkvzr;4EDk>52_ I3q6HNTωi<گW~;c餺]kH~j:a5ml'OUTv4L N%MA0L+N-4=,CT Lu  MLp i  8XR1YC0B"""2B",ʠN2p(0FB""0Ѡ#'! B ) `@8]}p hxЋVtge컴k|Œ˲5kdFd2IfFzdhΐM=RmxMNc (MS_u]]i'$$Npi'/SC43- n.w4Jw;X(M>Oj݄I|xo$dV=A#\G_/}㦮 L3P7&a B>F Gd&O:IVIC6iMJwZjZA'g72eRXh00Cf NBW0A%AAř h;3UڊDMޫUQ%ٳ9cHzU$I$Bnzק(z'm8Mv% [u֩J_MI,~M$oJ#].ƗuCIm~ү_r;z~N9'1_=_m-mUv 5ﶣ_O_# Wab:ZmXoJ`{ nMZ~v^Zm.pu 꾭5}L}p뤾־&k_zm|W0ZO&96ٻh?iׂ8w%묄m&5_]#1uigŘ^Q _NԌukIU;^X8}ŬvrcN -iq~;okz|2n;AtuQia%%{ci56)zcX "EDC(BRcZOSSK{]S5#uQMSV B.#!kizޞN&ijڭiiN p 050%MoT-hE a2LAUA! 0AI3{1 %4)$"""""""X!hDqPb&B "#tZ֯u ""1Z97",#*uA kӽW?w++{$GfSJ;&>tI?ʩ'<_%!httΑFfi3L'+*.ϻ7h2̉3S'.lABa94̿g g&La3 &Sh0"a'B 3f48͖6 E/Y a iXTL0B&; ڦM04-5L! 0OBa:wzmi&=UtLw-~ˊMǥ- [zjS]t6qi7蛽ctN:&[^'ޯh-V[^nI8nڒ54m]Z#m!Aݤ| BN?O$1Z_x>MjKc]H8X8Aߗ WCߊj0a]6. -[ Ux=t&oWix&;Un!O&%EcH18^uh?]#W՛"ٽ~IIC~6߷Mz] nR[T} m}bZ"ZA d{Ow!hm+]/#88_v ZTZj1ڂQMEZիw{zLWK}hFQ}t~$Ǯ'[␤NOXjMWRUZi骪ߪzz~ &PZp&:a4!ǵA'a;]Bv 5ɸ! 0¨&J1B `DCB ( b L&MgAC&Ad L B""""""""KicVWڮTDl~l&SfGHb80lM; ']>=z^JZQRoD*tj}*~_h-v ^EC(SNӦ˽ˁi!|_cߦzkiAŦEބipSQ]n´1嘩)ngY q gzag[iiOM?Zi#woh{&"~jUn3ik#q٪lSF6Fi҉Oeg$́3F| Ds>W5YQ3̲HTt.G["fjdGWfyI5hsLP'# TІ.ϲ8s 3/qpMA<i|a;6*a8` Na3kg 4U VL&O" UT4-zkKH5MT ޚz~Oi꽅$MSp4NmhI57˄*i.ﻻyM2t.?.F'.5,zےwˊ.֛'|eGj#OzNFI۬&Mت=}~ܘ_[A(/M:OO;~u_Uܔ^Rj O_=.XjOK'O]uۯ[#<RH{߯n^ ]wtH~q\uoE[}_]}ֿk0Lw9iޛ~uW[qVK/QqqvjtﭮQ;cvtb/XB;86 []ǪqTiڱKT{1[[M[]Zק꺯^dHa4&LꗗvLMl'i5쓦uPa /4iL$І P¡f`AԨU B#uA!DDDqMԷrq&(=IƩXn5I>[~𼋢Ftr 䜊>-މ9(;MI{'({'N;'XZ]{׿[IPiO^wimzzi{WV[_WXdoH}ZiZu|}jW^ KT!//qv[ 8?' uZ&z/>!ko{RO-}[%ڱ]Z&>k{h]niߪkZ&?7'{>]rn1qz0KVm>ͯ.z{պMs/ߑ]N?ֽ_7dr]9tkw|vG/bkJ!i;XN8qmEqlizŧ&}vƱjdpdpi?vw]]W|UwGFƟtЈ>KO&^лLp§i ¦Cd4$*v( …AapL# T˄dnADDZvL#"HxA2c2nHAda&,OaDDDDDL!(B"")I6*B#"#KUƷWkֺi (`DZYެ\xbC75&` זްLUu0.Zl-.Y-#s? Gr 靕c~kA;"R4Ͳx'O?gTn[/DfC*2"qBCO4A2!f\ò1g& f3)fMPh3B񙄐eaœf3Bdg L͠dqa!f)&\4;A!TqPpA !g ^fki34L no=:tݦMSI=4_ivkijw =Z#z&ծM./RIn]7~7[_$>\wwɿzpމD廤L|~Hݭ'Jï($䞗Rq}}UMO>(yx]$MGqhwcӊ5O_kB+Mu ׅQc~!v _ycHuOL6շ/=t0[I~ jЯ%qK! \__obS rc\wMH}?m߯W{}zۿ_zwWwsUl׽|0+D̋EK u{[^]iHtr~^pXq0AX6 o ^Cdwp -w!b~Ƭqkht4=U4MWڦ|qp=c]7MxkQkU|{U{_tO{vZUMEuo d};}ݩ~k󰧭}Ꝅkkk0d*h5 tMJgL *[Pz5o 9|w &M. iCB!`C`H L&0DD3-2e" TKLrf0B!PKT*""""""">'ev3A.;rHTDE![I%>΃> B 0@E!kag=dKIz\RcBbD_뵧z?덧_ ['^[ z{b?__%VG~i%}*᯸5X}z_M~u }wNRXoKφc1x"g:^J":_c__V? zL{]cq驪ӿ~Oi_ZWl$m/Ozm~ˍ<8/*/kk[S>U 0w ;p C &'MDEݦl:j &Zg.X! 3DDDCDE">DDDDDD[~k6QޮMPBD0g*d J< reBAa:a3 EziSx꟪u.m~zL'r'뻏uwM2^b[%>hcTAziN/eZL|P2O5yvq3c!H3gg.Fp;2:NW+fq3VheZA9 8|CAŧ!fG4< t а@44փ8iA ?0@ϒi;ޟ]&wUMWA4ԜdR$'J?X-Yj[$N(WKN`ZRb7NmSw($Idn~N) toDK.-_kwc^zku_ǭa} 𿨅{kYG]Gl?}?t/LGC?ޯIu^u]׿_ '_}_W~[FECOn/{90k|}߭}iڿZovM~k]X Wy1[~m^kwkk9waU}ZDr"C׏?kzq^߷}To{ jV[ v魪iڭ*44¦L!iAhuM~u@,. leF L' : PlXL4"""!""#aaAh\3! !!GZeR.H֡tpEk}}zdFJ(2h"vF"Tq9sL ͢"$"BJ# 0@ŠF L!B!f3z m43i„ӵ}4ӵ/}'Vk+ZDݵoDǼK^Iȣp[8=_{Z9';'J(UcQU%Z6*WޜWؿnȳ6 av+_vV_ !Oo &3cr_M~a"Ϭ$'9^ok}~xM o|?JE߇IDU`oիm>44xB}y_. תzi}vȣo\4,&S M AWVEDuDDRxЊ֐A7 + ! 7P'ޞ\ZVZK H0J<_08_nY Ј"!W}-< #pX :5CNz܂ey#zj?%[KI__}/D%>夥-o _/ 0ghh0OۮE|RkQ#/YA R}z"}x[߿fk4N4| D_a_Ya=t°AŪ"qXA8&=&D0UDۡᭃVUG'RpnD^{}>z Y }_jzDa+O~6I{[8Z@+iEpX'ZjY4" D.Zb`x5 ҈ ]1AL3B;!/p<7BH+8)?!i8jƒ;E夤 ð ܴ@`$Z@`GPpۖ0dD5HZZ!+H9\4@۬VX-Ak*,аk~ Z 9n@6DW-5X6)n`ˆ_4`j8 !IR[VMC.IrLh'6n M-ҁf%VM3Vf,cocYaGX fh6]r* ̛\"`0Q0PLu096 rP h]*MU (N器l#,|~Y dQ3fMF,  sqC;zW*QԳ2gF6iܳ eϢD!Τ)Pi&DI3 Kp0Ϥ?,@^SZro E 4M⡟BQR&.C<"g LۦET0l6$ׂ! n R_GFm*d(l ,B+l2%]8 S Aj,庘)~6 #U@p$80^al)Ӧ᾿, ? y cp[YO"}PapD3(!}'axDnPA@OM Cs%A]`T`u@"Dn.As+ޠ@7Dc#`AnACb v!`"G_-̉Apb@ ?M`hpo@0H:G! ``ap⠾ ԃ 0,0A dp@} 0ўAM 0M?IlQׂ,7~ e'Kc@ akזQ`p; 0xI+\6~H&+j:l0A%M+At~o =?Mb".a tӆml%/A6JmAka~I]o;m 0n SmWTuhv| Il0PDXA 6KOP&տn CpwwҾkJoOެ%q&8i;i4]n{ XV+iOXQLS[M5T=va >:i J5alwTL `jI6 idRKqIidDF!` mC@#QtADv$oz Aq{aö;4H_]Ga4 at6DŽmW7M;J$td+[a#2i t  B & rAp˚vIƟ&τmI;܆qމCdA m[a$I݅v(҄A:N-$b9-^lRAHo+t/Pp֗~ OW,3X*]p["#&FD%N2m).GDq<)z'$~ $""""g/P& <>E$4BOۤSv:#20AZkj$u~jE$#DDHQ* pd|-4p'VDuumHd?rS!BPh0DtHov2DDFjcA"#Aj@9ŢE (DXB̼NCr8"$2MCo3fN$>V $Ci]5+6ۤ 4lIJv-P$>Q#"RQM!0ӷ! a0I&Avv 7E&- BvmI@8-ILA!_nxIH! :mH _߿8vi J6̅Gۤa-X{& >j]Iac2;nIIJQّA$PY;Fd & ou@m„ #m]ƎNĖmI! T*ݺJR}jjxnpI6?GeVtoA:@ZIBdvA$tJ Tsi۪A LP-I' W(6ӐUژMIrW\AOnA鐦\5L1om H 5m+;()s3wa&VaMN' &H+rXam&- ! ʼ۷ASiT'DanMz `K FKAUzj!R $a`M4CYuQpJgLw!0aJ/u PB^+=6طM[ʶA7I[HWc#u]Vm|0i`I&.&8<oI:f<mZKUx;0v֚5 CI']>I+Zp3tjoIZxK CZuJ3v%mvWJj{ ޴B)>d>%7u ~mtʈ+ 4[on؍kau+H4GA wI+#H{oz[3 ɘ&JȗA _2 4mt;$H.UnAm!j`diT6 6+@6J2HF@]Mm, vʂ o[ ]ͱfЃ ri"?үM!@nd\4 #p`2"+Kd0ޡLmB* Dr4ui uƝ6JiBd.Ğ7$illn" d")Ro#v6]D|]U@\;'@ ^oa޵J CA{`&oH9@} Ãa6}Da~R| *=^eL)vvX< /ngژlmPn? `#h -j;v wgk@o OAD` AuA'`.; a ߥ~<]l+.xmzU2;UP ]x0a5i0wK _[` 6?[s*UJ }ﴃ~uI;{A6W:~ [ i7Ǐfo6WA@!o,A\! J}*Mu2  S}/WfB0ShҦ句-"n 8#&䇴VCpouET+oS\FoɬI[AAՇ[H *uB7z_pA[le JIvƟ2:_K?A'Zǧv $KB-pi M% e{ pvwJ3kGaveyvY]dIi9foJUgf 鷫Z_Aw]}#{ko$[OJa߯A=m&ۯIinv$΋8_3miH\A޷ m a_M$Av B[oIUhHgzj#zM-I蕉 GCK^n^Tb}}vN^Y[w^zTiozۻ1GDzm אkl0 O}mߠdi֖ڶ }$}a==WAm uqո;CPՑ᫽m][ $[  V,%4Ԃ: IBq 8^M4CEN{´ Ћ ߯IA2V imuzҷ~aKXWaW}ia3!n&Ohmw^rF+` 0Xelmuam,a黼 2mwnO34A۵Zn %>A 6Ae xoNNam5mt_-1kMXK,i j'a7M;bm[KJmA:Nm.Béڦt6}պ{{l׭X6tڽAZMg~t]tXIҾM{okjMFnZ\߿n6mSl4Viےz_۪ҿ{wKJ%IV5فtu ـu6EŶutv5^jToo;N TumcS]+ 'o"86F{yXդ[ "B?tPDռ"$vt=:zW.]`Iޯat`K7m$P ]+mO!6&vA& 鴐[/մt IzN۫iS{ӄi%ں K†I&nA7_[AtW|=ZAvI[5MaNOH0o݆݆ $mM ᇽI;JIj~0A$ޗ A.Bj0 A^Km&I- vI+ ׺]w {oam$ 7 Viq@mi}4vjaӲ7#1{aU6D0` $uDX0{a# }@փ RdvuV ޽H.  [nZoa"70L(Aml*3n>5ݮ4a\0J y91}=AH- :<[ -M D/"p IA~h*|jAwtP 0gc@7R =&0_NVmKv ݭ1¦l o `t׵b}I pHZ&?jl . C:A " lbm:cMod LX$ZT۫6&ra]G p>Rm4a#zi?IcZ鯑3%oL'nrȸm zi-*MM/p\(8<Dknmt337 6mQaզ`z~:@zMiMᤂnV JM*'w&MPܛ& ۡmWCtWmC_{>DCT7!/]+R*މ9zmKٿxۯTw'v^ߊsyl*Vݭu8׿L6zM$>*kذy[ }h2ǵi&ֺVjV]oVvTR=t  KTջkz! O0p{[I$:u}=^-%W޾&RK}҈ޚvE-}uTڛ3yl QWVҪ}'#JL*I}ZRmwkh&g!8a$붓Z$ "*S /_ɻ!}%= H:OA7{fV.;0˳w\{A*v[OKI?]Q R;pa:J$;KUh ZO[JI$waXTM7:BozA6ZSt $pK~IUu^L:A: {IC RKoKxH0b"JK.O:KM&l I )+ &$U]AK^JSl:IAmK[hEI{|! l$[vJ Ivw;}m( $mB-H-IuDA$; m$m%]Y.m$Iki$;t_iu+ [ +7 %i"1naKpI:Ƞ06KaKi{ 6Mm$[DpaXaJ턒CpI*H%f3H6al0*Wb"$Nm%W 0K&A6AmI:Wd3&M A ж %`_2 4D&A-@]$`A-+A6Av @ /a $1!Waa 1I-a -%H0$C `-+bA-KA@KpL2:Aa)u 0` b al L 0Ҷi Imv 0H%*H26!  Jl$gzah# m%@7KXa[lI `AaR0Ł)-+ 0B-vh# 1Dp lAi[l$vJ ᆐ2XXa _l02,a4` d.HhPArJVHBMS KhX2b+mJvVx $!c҆aXe V'IAg#e`ҩ\1t'2GҶ  aW- M[a Ҷ [ZKpH M[ 0 +aX`HWp> ]%lѝXl$[Jn_L(a+p [ `˨AKkሄ :mNխ[M Ön~i ܷ4ZN  i(o #TA_+T 34`}CGW4 H.izn0p@Jcꅴv2 JAu]%n'zA+[DjҶOa@g\X i+x'] 7\ VՄ $$ !s=% +ޕ|_ e>Hp) %1i%mK k"F@+a&K -b\ cq!@hqj H4 I+v]⮚ d2m5JV+TwXf? jw\XGa4Pۭ# Фv`55+4Μ aAٮ]I[HLD@0\Ҷ;S j ̀(#A.Mt˲xi VKep<3H(aA™"r'FJ\(VD]$ 4^am4j a!V ZA+h & A .VAm+Ia+tA:Im6JAWI[IuJMm um$H%m[VA[Im$4&մVV [K~AXimM.Jڼ8$V&ŴP5mJm Ii6 [IA mK`ҫ{ mvA+l$ᆂ C~ @ ZKm$IoA An`Ja 0a 0AT2AX 02+$7 @aunO">Gᔔ0e8 H6a@,(aYp 5VTYAXnҊ}` = 60K n4j(az+v ;H,6<(@Am Xv@@AC(m+P +pA a i0HPaP AXl0 Pl mPa ņAj C 0a Ai`4@ a AC 0xa AEP@`(a AC 0`0a"j0f, 0e@ C l @ ; e  Ԩh!Z!a 0frt  Pڀ<0gigc@m0рDX AC   (` 242Tg~D_# 0A) (-!( 0NMS ?r+ $ZiX0`43k) ӈ` UAT"TZ>aNf3à 4fҦmgA~BB\fUB 0A4 0M495pgT¦4C:ްDvIO Gz$X8$DIJLz&>[y1H044uK߫ttQ)1$i6b7C:-[wRnG] ݥ{qAvh):]/{׏]`]s/EuդaXl4Y?JT2 ^,&EM2#?i}zN}d z ?vQ ^>BF֕2YB]x mo/ً mc65]XBzqƚ\qaк /)ixLP3Hg]VL*aU4[UfvgM2${\ дN aS' 5- Aab"""5B! H. PaMJZ @ NBtDDDa,uk Xhg% ]kaC ݜv妀jY6AA g 6ra gK8Y (h3C),``\Qhk!ЬHhl83@E@ h4K:D2 a,dnY)X7YEde%4̲dd%f( "XPd5Yk6 0L4%hR*dp.%dOi7J 9f,i7 IfI7 Yf "nk6M x2 D6%E05I)5@66>`28iĂedOnV"85L4[Yr.5r,Z]BpX8qH<[(r\"A'P<23Y-%P<5Aɶ` /-:YpiitaC#< `B#)=F"# .?EB W[dtY̙ DȺ;`B< f &L !viXf$A 4j'+^; h0iw"MwkA2qi꼎߬G=_NK"ҽm*DCJt"鮝'>D$Q(rqD _c/h0DZLF„Bx6l83fR:4==:_aNfL&{iMvtե}T];PVӵOAvicikܐ5M vУkzԐB鬓'kˈi1Wユ)=,^Ujܓ(=1o d-"V䜔QēWk:Kn:ziu{n'IbJjjT\E?񶟱?>8po/nƹ [{6?1[he!_TE:d_iYֿ^j o_iǹ1#Z[^B}e&N_!;鬛vDiZ[XOW{[VT4ז1X0.>5DiIC 6)Z)6+)wz6߮jkwuMm4kjiBӴ6TińAA GPDiA 0B-0FƄD0DE"""6F+ (@ endstream endobj 111 0 obj [ /PDF /Text /ImageB ] endobj 112 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 194 0 R /Resources << /Font << /F0 201 0 R /F1 201 0 R /F2 211 0 R /F3 200 0 R /F4 170 0 R /F5 199 0 R /F6 199 0 R /F7 171 0 R >> /XObject << /Im1 133 0 R >> /ProcSet 134 0 R >> /Contents 113 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 187 0 R >> endobj 113 0 obj [ 115 0 R 117 0 R 119 0 R 121 0 R 123 0 R 125 0 R 127 0 R 129 0 R 131 0 R ] endobj 114 0 obj 875 endobj 115 0 obj << /Length 114 0 R /Filter /FlateDecode >> stream xWMs0>3E,6ԋ=ň,F6ProLdy'nJ< XX0$Ì$rk>!t9iX<, cۯm!,Mht>oT3SȲ֭7eiBGtwW$7}&ǀIILgEy𢒛|.̷ ^ D?ʪud)fdߝ{g[%$pdKk.yTBfM?r._,?HN^V?(f\N/rP2r)I1F' j2,f%K`<c_z6쫵MpiJ] $M9Z['uPbߊ1>1:aHigk*ҜchJ9ySʭCT!͂M/`%]XWdg߼@xlĪ_Z.x{eحEoZ/џGwvϚM3x-{5jx`V+i!,o4C!dǛ \B/~D';Hlv9fLZViX")# 1 Dkg߱P±=.[YWt[O: endstream endobj 116 0 obj 1160 endobj 117 0 obj << /Length 116 0 R /Filter /FlateDecode >> stream xXM6\vS5Q&[{HP c. 񿏰4Ж6$~y j 9yW_s) oBBE䯛$ݚ:%lxB^NSDgnȌt I'6$[j'wa]2 qĔGa20"= Y6w/:J"hp1(cjyP7($Yaw>xcRwm@ t:32DX`*hyX^4ZMi ҤrN#X):=Z~jWj ӇFΥtĹb\ߙж~4||LKiZ ꭳKXy,\]!.U+eQTMKcW^+7gh"CrAM7@DQCB!yreA> stream xYM6^Tdڏ=P92m3IUK{gZYc>+fw93;[]%J֛4unM]χ_ix]DqDqU+uZUuoV_ֻ/"l0#v)XO{qJIu}yNj68}EndQE̦lD/蹮I:gQÍ`^1Cɋ$)(ʮos4eQSƆDzZK%pig6]:l}$9$aӷW.ձxxvR'&SY\ PM9Zݜ_'i%)k?$4F, ^^Z Ɛa1-b#| t^FvQBʊA?$r0N￈[)W,Fġ%qlK߫63`FR CՈA9$-F&M N~f U齾I aȣ4,M+U%-,$$FS `6t!D%U<=`񽩵-yhSv/S?{3wԇ.7X.թJ;aߛ|Wp4wzYr"8:{K:"n~2%h|vl/лA2TEAapKΡaͬǾV‰O ]-иWDu.*è8C,wD**ygG$x!#7t9UdY 8<2շ_(LRszź#a^(q niF7НPꥁ4^4@G)I`ks֕qRYgxcKU{Is=~R!|O0؆deX'z8%8v%O UykB;[ EBi5]Nj҇y[96GUsX endstream endobj 120 0 obj 2496 endobj 121 0 obj << /Length 120 0 R /Filter /FlateDecode >> stream xZK6=AA1{"Z4fvGxp] ]HI A>E-@~^|DW|0lw^+'/|wˋe߽>^~ض>s%:ʟ~5>݅`u?-,'jKV7)_ K}kwdw|. (\kύ,u`DÕLǃ .t;&dǯ7E BbFp1F(xhLU8ϵ{!PV{ gA:Lol0J%0a/7V@6D(Xgj;}ґߘ'U^x4^mR oOGF沰?""I;MurLD/FV -47z!=KSw8OaV+BXVwM#oHìu&h^`9,9&wf@XPeגо}vY(.:7ZtX눬BZdX*$_ͥld92)U~cWƘQWO)sGT/y$Ul5-"DfnK^oz9؍~ԣ/%Q닂f$gt|ݝ|#:W2ۏ݇~ rJsfF_'qD+>d`#T6Ve\Az#R I6ѼMѦA?deJ o4ޘJfx&LqkEy2*8~lA6 뚔|j!*$˹g|"Hih^]m =F ! !-}U0<3cGRVufu>$O`n[hPtiBH@EgyϬAwlpq EZMzHg& BzF>W&٨Ұ0oA-L4q #< ƞt]x?[Y2XN?zV4‰8PPQ{Rƺ ܹa6ғ&@m'LѲKtgH9:tb H7撙PhDSqbdaOT4h188UfD%(򵮧6EE^Yz1ӁL70-[ko`3ҮK г;ԃTJ^4t(q .AG)UӰ&cV@q%C9'@`J]d:PĔ#TWHvn*H쏗ifJYYSw< ~}s$5t}< +V>|S'o;{HG~jaDG\‘ P8&'!S8nߠN݈0FX+xN^٣8|m^Z {$;C64y1k?npr( MJ/xFvC9&hl݆P!LHHW#y|ˊ\h|8Єy}M6F2wi״J 冹_mvЃ/fWfXRO 6kZɵ endstream endobj 122 0 obj 957 endobj 123 0 obj << /Length 122 0 R /Filter /FlateDecode >> stream xVn0) KDHU]+C%__5`ЪgΜ93X8 s1.PƅC9{] qԑOE3av4BhGo"_Ws4xC@-g12d:L!@ 韊$/Ig\Aq;X[h|EF 35h<(;pB%_ڇG# t 6&*t5+h >ϯ5Tw7ؼeJc!>ڶ4U^:424ѹmfO3Fe<۱2|FlKI\$5ϧnx'ʦKDi4ƧWB I'$mMz`h֌Li'e5F/kfK\Gic]CS8){$U&*ZdK\l=Ow)6k~cHA8oK^PedT]KÏO,iVsUn|MXC?^}݌Q)/eTr'Ԣ, Y+;߾ esW5R ̚2Q&u֚h#2ء*b6[& #c38˂ C[C;M[OeGi]-e89nt Z, &MQg5@㹳UN,s5̶ Θ:]9M0I=ƹnC1WؿHQaS~W&j2m./jLbv1̷]d.') 5@ s򮞩KEIM'a7icS-кjw0\8-HDd0G>MDdru~X)֝z; endstream endobj 124 0 obj 180 endobj 125 0 obj << /Length 124 0 R /Filter /FlateDecode >> stream x}K0f NK ls.` ]|dV|۹AQuhLB"3k[0[YH+=Lqt(Bi!H^'('КbWPPץ)O8ԃ=bl[s_Vߪ:d~҆?g+yxSk endstream endobj 126 0 obj 166 endobj 127 0 obj << /Length 126 0 R /Filter /FlateDecode >> stream xu 0D`aoփk6mrTԓBj- Zn-т ax3;b-3K\Էx CyB9إdmLF:):?_tfNr EF컺i[{26մpTkؑޡA endstream endobj 128 0 obj 36 endobj 129 0 obj << /Length 128 0 R /Filter /FlateDecode >> stream x+T534R0BsK0gd˫k lH endstream endobj 130 0 obj 11 endobj 131 0 obj << /Length 130 0 R /Filter /FlateDecode >> stream x TC endstream endobj 132 0 obj 62088 endobj 133 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 132 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream i0gQ0NZٔuVui@Hk;4G0a4̕`hW;P;h٦iڏu^YXOӻ^jYk$P&wi=A:֪“a3$7M= xM5%řYjPF@O BtR) #?'Nf!ϳ 2t4 3\6dFv㐧x1ffyyDy[ $2#C#aMM\gІt!LxN[5IS>G B-5T!aaǵ&1{׽_Ӹ\;N:$Hmh344f[Sia4{MCy')-0'n=DOI>H{HnWL֏AKkVM:k4ꖮ='+T-2wƕ'Lw] Tr tEwL&C 8u4kw& 57rvv{~z܊x]_:Dݰ̔[dZ'  *L}n"⿠_~}}o~W\ji֋ކm?t:w+/\Ғ{d[_UXKyְ_C_;upJM^=_Iɿ{}EE,%wBr 2km*?_KT-muUazYCm/Xؾ.N?$?_]WT?cU?Gk'M}kw}_V꿅k׶;m/Mmxm umz8~C}dy}jPw"إ魊ZiߥEյ/|iݎzB> 0eL0pMU/Wvw-wjJoNﵰkӴdb `DDDEoCc_qc__} 4SMŭ\ ρІDDDDGү1 4#4_NB,*vL!զzݧiFAq ^ij"#MU0 dPL&XL&L!!2DDFI_jWZ#4T0A#":`ibPLZbvYL+'M5堮;MT q b$08U_dYZeO!q+MKAj =\fD7L4$za4wk~MWӡO/?7a Bm7FA$\M8rdf].8ky^6q f:戜v$sAf31S8Fy͌a>0%tH;3 VBpi0&l;[a52gH.".!4z ! S:v[&4ue0y|m䝗gC> A,xOi;1.d`Q2@A.XT zկv4LAӛ<0ӈ`#{0sP5׵߯[  |Sf4B8Dt8f| D#B 4EiwWu4O1m|Α&i˳24\ܩiwkmW F!i`駄if$uhN2ȣ&8n[@D3@A EAzrODrqJIImL4tNI޾pJ.fMIOTQwi4.uhDq&?NL}_hjqޚDo99v,wNܜ8K +澙8;?h 徿Nۼ}?qd+Wzv*i%oU"V!-E&M&i?V>odzOMFo׿V׵ƿ{^DǶ-Bw7~;D}ǽoH$w+qtJrO]~_x{Uҭ?D%O}/uK%_n}oiB׷cZ}GkJhV PGG߿{SW_oX,w_m4~M_v&oZ L/U??|!Vҧ"v ،+W&__h/Uw*?aoa+t=X^~tI{ia;|jUX׮zWrǦٿo_o`ufqVɽxuݘ׽io;_߿nwet_ǦuMymK{Id{1jn]q~ӵ1KU翿][=U:׍9 ?I2=iqzůvv8j_+!Gk-i{km}E,wwt}uOZ)ZaF:zN00C M4Ј@QZ|Vk^G{n iZi}UGҵkiCT¦3It;ھ[yxUInti0&HDA#~/viU J C !^}0 ?]Bit-m 9QB")PXL!&s5C邅Ti\:jDDf"ʘC'*DD~,TMia8!D0A4fX:j""#ӈJB""C cCwL*݅b,dF*?娨eS"PثRYrP צYYqog5; `VzɈ&]k*tH Ke\QrT=]dmf]"(}Ag3L !Gh>D̋E6;#Ӌ #OB{Y`.80i:.hav8UׇQQ'u-쓺O^;JRt:W^C>]3މiOXtMصvC]oݯ*{^}$?H󖺰ڇO}Kⰿk^HKHW[ׯhҼ**:y_'>{[M_}'ֿ=~MWX g?M ﴣoe[I7\?_D]za}hz}^뫦o~1ۢcp߯V_խ]v]}kMn?>?j)tzM~݅}?ٻz_ڽ~=5$?`Ja:Ym׵48}UbpmzZbӆWp}27WTC [J7o1?bkv|zZM;(t\/iُcbi6M0 # Ba4.4뵽[iUj*ث^?_at DDDp }cm+i!i@ˀ~ p㶣[b vV:NI Y&PA Ќ"#UxL a`4"""""!鮚i h4 ,s13B"!#/\ 2IDDOOAu!VLD2ni D4L&\eid8%DDVDDwBN;" 4A8 DR<(DR"0j5Fz ڪЍ$ a0VaS0jf""#Dr-nr)$eD4R.ͤk\i %YٖBGtgN-SȦerR"eQd3 q7 wQW_tfNL~fTT#-#[4TޜK&qQ/5OM҂ ܘRC¿Y!^ڡjdgQ=hiUSD+.[;:GME%N"w3GaOhod$& [\0B45D\M?4+/ 0O iɰ"PDX"A!̌&gm4T-=? ڦ _8sO#FfffzLE٠fÞflA`0駨M:gg;  AdAza54N֤i֭.ޜrO*\4 #G2Cf؅iBziJzi֟-M3ʍMjO;Mpi\rRpDÑ\A+α g9n>(AńřM5Tп5PUMti!'ㄲCڦ|S0p)x"{ݦDI-qv_;&lZy3aNABg:qh4=~-'yn-{AT&$;DǢqSR=WIo\}AaVPjkMWڴމ޺HW'wDrQmCkꉻot'n)]\7 ^]|4?Ʃ$;5jXL&0>Gk4odcH= 5IUwOjdcB ni֭lg?׽5{ -+O]cc7?HtM? s4h5BF pMZWi}wiEuWmWvw^MP3@TA{z0iꩪR8T}W^#B ƚta/bOXcobuUi0\""" `6 kKw4L ¦aU040UBAa0B"(DDDXH}q\vj]}w0[S(pL2o kcBDE Ou:PM$w[L.": *h0"Ӱ@ 0DA$B, @Bjt ˄z & SMP,:""""""# ! $gp"#CXBBS[Jih~c #尅-b *|4Ber1ȉK?-Q2;JMefCie' 2&rnSZw̵em0ڦle.hN r$YIxwGµHH]BGiڪ~$$uBqTW&Nlt|HF;Dp)6g(>QNE}zέDnGeg`'٪\a9`8a0D^d6a {M8vahv~F#WD^drq)")pxBͳ#*rg% f' 0jiizwN"I1"HwV9:Sf,iA[AɱLapgM0ivN,&]tS]u{_ dxifl34]vBl v ~uuGT9dv\M4===;ki _kI.="qH{K'QџȔ(js&9&M ͘M4hL A{jÄ0@^8g3l;ӏ_pn_Dwj''Ըp'[W5ۄYF ل8fdp"`aaS5N:97.M"vֿ`MS彮\a"pI6.$S~^II;RV؊[ixbB!]UWMjԐM뒌U+j$u䡧I⓾_u%u{BM>NOL{]ɏ{UC'zy:Qk~z_F?߻uAm6_u]}(oZ~91N/ܱcw^IQفA(: 'MWN+_$?='ioOGUҽ|WImv$ F\Y'uO䠍'nqI8 MOCA> x'm֟wIBLɣL7mqv^k't;%TW51/_Z7W!~c/Oz}oK]coB?OׯO$>d_$8fa?I_T [~]k~ڿoiu{}}{[CB߫~h[._ײ}kZ]ֿ_NukE_{_~}u^Ka7!uil2`4áIF8޿sl}_z?DqiZ_k@׵׎)k{i֚i9_[c^ X>|kzoX|tMSkMmtEm?a0TOA-5L!` w# ?7|Z7[5$ݪjWM]Xua}8";];I00Dt"B "",! \O;\ 0Xijn׊UuMST5[,@hDDDDGAL pX % ^5[m44d@v !`0"" & PӈDDDDDDA.BTӆu`ZP* L&DFDDDDDDD:름DDEج-}PU#VE (a GM)KH0 ,Y9 4҉2'8@dL/&"L!) NNKAܳu5UMM=tiQ7Zka$幙Okd܋[M6\fFa D:o*gO' AĂ"!Zq Ѝ 3F'v_O%uH77&.؇|)5a1N08T\J/iB}=&<ɒk0!ϐAM0Bg ' xA=vKro+ߞ S\|iCOA!NNywBgaM|h4K=&?D(Wz%Y";4#8= =0PNh]7)݄`NL&zvIN}SZjNiDp@pag/!(K\ Z~Tup9$-"p'N;ytLD])I&G.fb384i@DCXL j8}PON;y7O骒2wi w ž8kFNHȆh)'fyS„ C a &H ̠jNLwi$7^ͭɽ4kOR8h6I\Nm҄}?)Pp͘Ah'f„vp=u@4]60'dcGN8DHZYovt?iSTnӭ$޿ u*@S5ziHM!;Dorn餞N;}}2?_^J)mIƝ^ C{GֵwT_.ܚ?TDǼhYnp#f{KKuJ ?'G EoOUJ렾c◿Eo»]u.߻˄t|&(iC['y?c>aޟyw_DpmҫM}{&{M^Z䣿_Һ=/[:, N+}EXK_[?k7_qo.^4{zPC_k:~o[~뮟:CA-kHub^Q o}6 coKƕW_g?{U;vCⶐCzu{y$|0WwKjnֻ1cV[04#X>i׾)zI޿khݎK!M|STMu7T޻֕~NMmW ;17Qq?=v] |S}5^XiߦM;_މ컮;JUwx|kǯZ ׵:wkat!C.A2qhD2sX[I#?j_\j^-mE^*ka[Ќ&aU5 2{! b[C// !]ki-L9qc״TiOT2lC4VX! ! "LvDi!["@ڦBa2 { i !j>b7{~kzWN0FDD)0Y`T'j4pSMST 0"L*z &!"2{YRhCL& 5N®dcy4`F! )4""" ^B"! %_XB BCLt">_JЈ0= ‰!a0,(`F#C HکAGlɄZ"ekvL|HLuWezLFC5i z%)שY22ΑFBA0JЦKa kd>ڡ"3(fz=0fb V3B ;Agu,,+[ԋE[A 8i*y#F _ P4jN 45ӵҤLv4hdvF2.gwg HTzaU4Y3 )N2t&UNTM;A&;ZMSܼtItGFB x>Y8P d`0OLDnzpMI ӋM4OLoWp$>>MdpēϙAry81S"0u A3,4 5ӿU7jT-څUM97M NKa&DFM=}54iF 4i 84:ז|y'u#ڿv.j%{ibIUm?iMS ?խqTHIC8ȣtNܔkId'' &گzخ= Sm6t;TM߫{MwUxntICɻu{+'D‘ݴMI8ˌu^(FcE=?_K~Xk7ݽ%uu=5tqBw&䢐~-K [}|Bo_BoWȹl/}w ڰ:U׌+ mV֫n={&;^k5P_ V]○ &}|8! ?.nM]|m{9?15mV֭w_]^^݄=m}_'ɏ7ߧu_./WI|2}]Tm{^~.?o_uf//톗LzZZI/2;sZݯ[_qL?V׿w{}|3kjcr^uNTHq/Dzlum{\[To"zֲ=vFqqض]Zh5!!l iUL&@]z}l7MNd,m~EZm~/j}E}"ڨL&e^ɄLaB""&յㆷp߷jM MH{ULu@$8 Ba0jA0DD( B""""Lq>J׾ӿd&ꩯ4L&(M;A"""&j acӈiݦjeLa0L4e4AiA3B""1Zi&a M"1aaB!48aBDG[F⢿0W? (G,FP3SDL'ҾSdd ̌V#-L%SZv>|4.=5hwё}G93p{R%%A3d@3 TW>EQ #C[y1&!Q&kv&uvުLwoABbfi'(%}޴10~F$Z'N$1Nlqo_kLþڱqz S]hBOC={ZᏥ_Aݭzw߮tIگ[uH׷說/#ީ&z>|W} Lxm}]zo j1{M wg2ۜWv]ݽ16ǹ{8ZO{3ueَTHp52Ӿ?M?_MwYީliۭ\p4#GբCi{k omY76B4niզa% ű[aS[ucwxGޯVڴTDYE)Cݮ+zi7i#݅)aSӵN4AxEq-_NL Pi(&@eL2 0"" h4#R &Ћd!DD!DDDDDDDE/$(L-42KTe`36>M%m~[zPI;;mc .~OIU۪A]r"RIukF 3sgnBL5L лB0|H"$"A 6I @M6Oڮ_kե'u[Im+tKnFFo]]=/w꺿^[VӰ%Y kO]?Kw]/?}w ONWF?Z/Ia_ȣ^_oOk^Êm(jV/b~2BvQS M4 ^Za"-M?Rciaw PAB29&A SUOMDDDa26ʦU"RiڮIL!"""" ªw-? itDyOLg2WDnM4jٓ8 g$鸴[s:? AL M?zgh5§M?PV!4+543AwLZ vnӸ4-zkWr#AC41D'04Av4OOM4 k_;7! !h3lAm0BeĦzjz[COr ߤ7H§zaoTE!߿&9nup7T tL{ ׵Mj7l(N -'ߎ5'}'D≽ 7L{]|_cOoo?޼2}zzuNG^<=<Wi_Z/uPQɿג5 q[_߅^W}]z-?s_+}Lvn}__;믥+i"n}N?ݞMk ?k~E~w*N=]6^_׬w}ߪ~cwd;M >.8ޝ?֕ovcvi'~լq#mNȣi]ڱqG~ժziGUU[[L([ kk#lGrC?|50u І&^o-USR(oa4ӲC d͆WO5M5{&` P &]4"""!\idƓA2 M4!Cl!B""#PȆV.Z O%j;"LFZ"M<*ɰ)Dv?M"pK}>|}{[Im4u[N-a{{խ[ui^nNm/wa#ZxZ&\?a b  7n*׿Vˏ[~ ?Uwm{Pom~p<+M_I8 cwe^\ҋO*{fYvC1d%Zcӽ7^]/C㯎L:]dڄ]ڊX%4馚DYYٮ\0k>itPNii{T2PS"",!a0DF2cU#R;DU L̈́;{ деT4B"NXADL`A"2yhDci5M5Lw(!ʑRܖ:b*B^_y6 DDDa %LU&BZk"j**Mk$Ew' W~wLv* x4hZj.i2Bϙl0A'p"'ͭf0A4jvqʚ"3l"36.!f0A <&AL'\KL !98ͲΑ2&N?=m9oM?y'.!.(1&zzi_ pI.;{ԍj.2q:'K~Q۲QwQI8ҥ|y8^޵ OZ}o]-U1WIi_UOkԝZN? _C?W~և { ׮k7zֺzcf}![֕Pqab.?v}_~웭{z{ocb*d+"[m{߳ 0־qamKVC/)]gy.W%]wZ{Ni섆!,fW?z>av~MWkh4Xi\ka&6wTV+k}vi4wag0B}GVJ*a=SU&LЪM 4CQN`DDB5NPei5Jiޙ8Јh4a0DE(02L*a""",!MZE1ZBhSgAhNy2vΑxa1dOvw2]wi&Ri [БɴeJ p}{O1?H)?vU(Jݎe 2 !$- 6L[ids( 2$163\r",2g/ bj v(#9x$@ u AxOM 3Inih5M48SU٣:(CMA0Xvh0Ms̻9g$gS +qж[NaPf < …T u =%ILq'?oDˍ}%UO Uyn[1$hǢn%oqI([oN>-mcwk.2{NPKm~4߷W5KWhEí{k}}ޫ{jOߥuwv:V\IZ#ս{MW֗uWkS뽾^#<o%%ھw>okzU|_zpׯn^?__ꟿZߥWko_߳k/avkk$: K~%O^!!w&9 }ubB[i6Lvp݋׷ٍi6o︻ tOJޕ;XG{^5m[ {}\oZtmXik^L*i:z?TNztBO0"[ &L*h5AA[jB=SA˦qTaAKM"a0C48"""""" 'j "$Q`Eסj@[m9ALG^VaKnKPafRqٮvC l.M/iҲ[jA̔A:6YH4qƩwfMmH)w͑> ~פvpDFvYU~Im}6kɄFOR2#V߸=˧/GMfH>xnw&Ts!8OuQ6|3A#j TC@]@τ'aV%ި4,xSynE2%DeOsd)22$DLd&Ye i vML4a0릚i0g 9B!>EYa96I 0Aټ a4H &r44kV]uпLiM>wxClƇdwP͙+7r1r1'_޶Z}]z%aSjkջޞ=b?]ֽ.a[ :cm㒑V!_o~׺_ };AKŰz$?ڠowbL _Pз|톯mjwto_ookkۿWm7_ֽo혿vaҵծ~o_ߢ{ 6f;Խf>BېW׋U&;[ҋ4W]LK_g,wMm}w>߆ݳ׶h/oŶɎ4Qナ^Xbjإ?>][_Kok_ipD-B{M_I֟;V<5>-[JwZh0O[[_c8[]&]U>.l848 iM5LVl- &NAvja MiDC"Q0 """"Z ɺAmnUWOvァU] {uM8;nhCZa?qa &`MqahMb""!D4d'kw>+WObhM2CLu n""5&DDDD0EmBkwɎ05 ~׫DD0C@0D- - ."{&a `DEL-'O"ֶ QZcS妰Gd5 cYf_;[iI~TM"/,鐑Q&LDlvN nι5Om{{'i5k\M HklFs91m3"u3wиj~=xWLRA38f 3C _;J{H=HKc#4 &gG 3F3ðSM< *my2 %ǜ~Gn%^lE,eafA3tLS1  ϣQ!h;fy=0AO ! Tzjꞝ.g`<;U8(G O#3 6"2l) wz8ZfдӆtC4n "CHv.2iiiYB g\j$81f8PϲDI,>G6fr`jzgoU>>E>֭tH|H}zh8WW;'ɊzOˏ-߭޺ &a=424,) fPjaBzg5HZi6NHV$;! tMurBy(z.7iv#vDޭ;w_5AONTAiז;Pzא\~8=rO;{=uo{$=]niIݿJ=xIܜe.N#]uE;Azi$8~FJ)W?T}ovc t; NO~+(M rqW=zW_MpO뫽z5﾿[rxMr~IIދw_~zVåa_WF߮Uz>H:Ǐ__a_޿N+{u-}k ;#B_7a;w~c__UZkMצ#C~o]};wM91WU∣]o?}t>q$:?toY1TxAoh[?zwxޮM#ܿOcTaK'}W^U~V!ftwbX>,kb[ԅ/{޿֥em$T5~l5b./k~Z&8[J6Z_od}{~{NmoKbmXbޕw~Q߱{i_]i}ݡkh4i 4 ia5ai~" Ј0TAY8M;Tm_JuoƿWۦij &a4iMe!pB"EFBB""# `DDF&4.B[\{_UZjM=5_kD3"""!eQrV\!M;M4_UM5M\DDDCFDDd 0B"! WJDDD`DC,rA&V Ч,& ЈuZBޱ\QT\0d^;암 #̜̃ʄZ H0"Rm?&Fvd` 5Nιڎ3Dj;[xZݠM0WLpNDw>v[H&@jM2R NH;N߳t QI޾5L5TKO"G﹒|M4)jxhMSvl!2Os !YqM3Ebo@\8 2%H9v3 ̓ Az6NQ6AK}顡a0=S A}ܼHf2s% La^OJNz˗&y F[p8&qIqM?[/a=0kł !fMj 3Gdh-wO^8$o7ӷ-ԱOn{_lګui~N{%nזF;}Z-. h5LĘ І ugwLOܔ=&䠔jy([[M+ic_i7w_?_%N ]] E'y7rc>-q߭w STS:ܓw^Ů5!}^oUO]~})!\L~&7ߊk] ^DU^k[jjB߷>(עozVSrqI]m$^~}a}/||u;ءץ^ $֓]rODc}厽OD}-x|UvPo|7ꓵjk_{h0_ڎ_.޵#ۗk/fW>կ=wunj{_rk֖poޞg1?9![a1fK]{ozm5{￯_ݾtMt꾖vplwpZ&M[𹎵7_m&<톞ױ|UР״^Wcu1zٿvz_ٵ^I/c[>VҊmnwTuMbkWUXݭ/ɺ\'ҴB@Ubخ)ߧń[3XL&5L*i,&~b?V+aa{Aűkbޚi[U" 'iNTTJHDDA &d0"!Јe:fp5UPiiZ}㾶4>5bXᦶ# ɆD0B"!5aa4HQ ݠTOWQQM?ӭ ```DGhAłwj&ݐ㶅4¯i#҈o@L>h2 Ax"+X">"""""MU "?Ҋb (MvESB ˆZdrVEt -eUS)P*>fga0zxLq&pAh2Jh3L'߯aIDv54-=*.?@%yʞ,KpQ!n?Z"kD*ɰ!4Ζr<1#3"ND#C$\C3+5 ( Cmd;3H[;%  2r4~x7 ʴBgnV&NkKcJ+vZ|WKWU_0r~C7ww}]"޵W}ii ǯoZak}T=pk[WKbн=l'|}TZ~F;DiqVfpa~Ov rŽnz_[K־ޞtH>}[7 + W~տZ|ǫ֟ ؊1j}p޽o۽w/_/=ۿ]_ ^֮m[Uw]*ҼpA{_ﴯVǏݼaꉏ_6Ӷo?łabWoDֿ~nGMua]ϯO[11kbnEz[cI<}_K[{óy&ҵOͮOOtbuX׸ۼ"Ҫ!F>HuO~e_8AQUOQ~i}oǭS XL&kKWMۯIo;1]wIcj)XN_ZPkk}iI︴ӴT;L)!iw1VWir(,\-֫cUO4ɿa42vjvʚ N" A>Z ֑;AAjIЈ0 C k0jzV.Lw}q qi'ibhD0B2 & DDDBa M4""qDD0DRHDG$""""0|XNC2oiEuު׈^["L"""""#&(i ֝ ԄoU"""""""gA8""#'z^…-ڋ0C[4QQ \DEE°Yy]UT&r#Ri2 #1)NT]d#RS_BM4;rL~a1)k2VUML}GM|/d Y;mbQ"-2%'I$4Z]eD, DdYEfBiH4ZV_, }_|[=(YV-wW]Qm}Vq^l2u]=&}(vvߵG|}oǾ?O}v܅qzQnf׿_!fz~Վj*ڭl0T "w}3(B}42쳧wM;L7vl섺1_;u0Mm0T pLOM2Ok &"2"#N84"#0A"!B4BMSM^|p-}X828[޵ظia5pi")DEVl$"""" am0 Ä`w{~b}??+%"qiE!q`[AdSMkOuAO*DDDDD4 І4л4kT,B,q 0NZL jDDDD307$XB#cYHȾ[3U, T@fwv"yKʗ-)&mf𚦚ڦf1)6r)36vInB5__CALʚ /V[a2l5*-H$Fu+ilZw }Mr!)(O^dk}#u2C|뛉ϼ 0J6He=9pT2 YtH$iiL݉[-dsL".A gA3fb80 z=0>f.GByjq=3q9r3#0OTii鮚iiߐ6^ޚtɎ߫!ɻ> 7(Ml.k ?3i[Zwh;x!։;R.)O>Xw}+xZxM ;A8)o6ͳ6ɛ 4B$NO$]'&C:WW zJo[-k~N' {m.=I>\mZZl-Mmm7OOO^Kקtk_u~(?ꠈ귓L䠔v$원7r]w}uvwQoPA ңG]5x= shkڮ?@’[^Lw./H=w–i{Ioj#mkV?W׾oQZۿޞƭVo_8?w5_*;nkڬWr.͑aq]/6t=1$#[Oqߩizw]{駾Ӳ=1.cA_qXhYL!y a3rB'2v@ L|r7'W&/AkjM a 2s0BC Agg[.ao9dizo]Zn~FcŮO ^d?k'}{_^nF7C0?ӻO `U0f?u^mt7XZO'Gص"{v'~OޛIvq^oҵN1wijk0Z<=:,6z`һ]]}౭ tN2OHN(};࿰ ?Zoo&=O56kqn%=lr>׸_[㪵}_V)iwI=׮1kHv=>h]%a={k=}M rcï_z&c^U/~S ڃvkk}w^}uDww,wຯJɻW[U_ݽ_e-ٻ_'M"cz]zZ~kw}kZҥ}"ğ!U3wqz] S~ֺX/jޟï_uBiimz +1}'jc/uV"W{^6k5ׇل׷N~޶y7~?8k-ֽ/I]U}&ᠣ޽ڧ_ڦXzw4L^aMM4@ӽ]iqLV6 _z ?a4tL!M;]av>aaY ,8 4B"! U"NAIi"}nޯ?.㾣pea; ͱ 0FhE'$ *XB"""""""""""#@Ј USC* k}]bc׋kW""",2dhdt"""[8Ze:iI}uI/C"Јf` =SˍSAi?Tva|BuB  ׵׿DDDDDA*<40\DDkVYbQ &Z&LʹV 0MH!hRqO\[_L[)UT2aE- Nܔ&TvL24p[N]pi,'3Ji)YLg#!=?[z$;Dj|%6d@ ``#̗Pp˙0x !yy'!ZҴF-ƛZdr0FigHmBL"˰3҄5d0 L*(L& ݄' T0xSc>gW/A;4B6iުiV=]i+ 0F:gWb,vk21ܱn8cQ(hDԛ[iaWMU033A4ŚzANefq8yAɏߦNpݑw\: ɿy.Oro(ˋߨ[Dtij0@ 8fb`Cys ڶN<^=|&i=u~y2/Lvi.ZrwSF\RiX8~M!0SӤi'Km-_ҾWx؏_UowItK;Lpp\juZOUOu 5OU?Zt6êar-[Z&V! ߿_?nHF_W]wip!WW_(Z&|rVY1o_[׿]/m_kN?ƿ~u w^p:?}=,/.5^׭^~_wj'D۽ r1e󟂢c bmzzoOUK_{ڮbLvoUa?e}v|7#/Uk(W)v5c_q.17_NwɾS[ޯS{N5B_m{k{#6ܢ,qhv޿vOT4MiXM~mqm}#M;_.bwi,&]h3A!A!k ACABЉANL&kidtRazM>$#B($n""""#/ЈY^DDDDDDDDD0\\3!ZPiLTm4DZKŵu%3ЉB$ 0.hMn4tj!|%]j""2cQ`a4(pMPvdM5mT~:ڎDC!CD3!q iDDDDF+  FBuqSDj3Vdk ȜR?][\*ī__pɤj1PjKݝa9m'Ȇ[괼3D1d&}V{Aza |Yt_f#^}i`Dg4ϐA33F\'dfG2*3=wq?8FN'Ɏ 4ͅL ޘBa BA\?SDfFMƞI.>DhiiC τBB̯h3x)@M6}.JBZҩ.(z&EDiim3jZM0aG{H5իRQrpn0rn1Iiia֗Cnc^] ['nHmK.mӤ׎_UƽWUiv,a[$.I)(A'% 0ܛjZ}/Y!Z}}OK7N_D7~ *]Oֽw=?-_uIEx*:ҫ'_K7Cz__V2޿wK?߷_^LWjÏds9F;mMZ$)uV/Ӈ|]وƬ2f~# e_D~jWu~^}[ a6޼0E;Tp$aUa ꒮oi}EFQiL]׸ضu̱ 8d#L؅McO[$ߧM5VЈЃg2!04 4_[DDDDC0BBP 5_a5O馝O"C@a ҃BM4""d+iBL)B0QDDG׫MD9PDK1[i LI#qh Dnvd;}dhF?i5L&v TamBîL Ɉd"&h8G'+3ET¦ +J<!ei=]bE@2>7{CzA:OL A a?i>&xR`鑫wA ߵ_%WN.]0i[M~kFqmH_dfa} 0fys jtZMWTKw&Hw&?D|蛰 MWAXxB` Bi_}=O uapzk) :MrV0i5CCkUƫdް\\7~nt$ǯ{޿28/t{ƭ}tM;nD"Ò|ڻ[?DŽ McO]Uy+b~[J?wY8/a'_߿qQO׫ߒ[oװD(⤀ Can~uN=d]/M`vŘ68~\Z=MTV{_~g4_k.M[!c]!o5_mr^m+9Uf$>yD_a&+N!ޱV0^I|ZČwv^vkt՛_` M.%2 i:ް_WQkQlZ~ưzFt0B"!B"idߵL鮪a5Ӵޯ馽?qKaq&;Վ  'T `DZ aa4[MU{OoQDDDDDDDDD3 ` N"ֆd 5loeR(B 4BH&00&"ӈeR``DDheMA}㈸bӧP 0j-I!ّdA81vezoa_1l,eA"+0"Jύ;ACBO2A9)@ .f30vT#A%C<3&ML3;:M&jg AińQxoR|I+‚ xAiaqq:3BA>zvDAiڦ h5T/ fٸ&{0mg43' .2TqtTTUamWMWA}M4TLv -I>N4)7'T! 'jhE<-Ȝ=36Q:fl/Rfqk~rwa9oM-DuNݒ'徫AxoDNi=S6}꽪ia3,`A SE 57a ywwEI$w$;~J,F=FoMv^[]$B4W_Я޽oUVxU_*C~_T[}[k}t?J5${m~o~A؎uOk/ ?}zCa>M7^I:'v人zZ1IG__[kb6/x?ץt'~k'$H&_[Ŋ//C_ok:TpzW7W!}~-'/Oz';M_nKZ=/f_66_,$8/OK՛R:_ޒ-npmlH{Ϳ<8\/?j꽰հ?ׇ@qFpK$;c]][Z_`Ҷk,}ZO7{"`==mS㾗]oB65ZdnAkZi^&[F:8O`{jm>[ kDtM0몦imX⫏O9{[Լx_uO}݄}~itF:j!;ROaZaAal 8A+@ab" W0 amuNMiZHiU8^"S h38a+ &B" ЌaB#C aa =hDDDDDt"""!&M0Wݥqv\Sqj*wL&N QhD2I& $"",!dd ŧkFiI}wk""Z*"""",i@Mm2 a4[TӆLtݪk"" rhC hC(L& ¯EDDDE5ah,L-MDDh`*ԴDv6 d6ޤ]Rm6 ᝩ!S a4 4 #2幠BS a2+B=4O~LL0-{]}d[L[FDOUtI:MU0 Iw[eytnסitov䵑6G~^l89!sJIh;]SD)!蹛fjB%̃DqbS<"F2_1ȃIg S§DlC'dugNBК%.I|4;4"h6 3]`BL&`8Ntkpy"s#2q497 A!x<τM3ˌ\̣:g3>&.5MSU4֓M4;Ti;/}݅CzBA >)]rD9'7z^Iȣ7rp$H{nCkM>Lvo%M쓑'F>Hi{5,aTB  ا[43L&y̘j`0g|$M-~ |'tPqz$;y*w%Rnu ޚ㒷%Wi+o % 'nޝXM4AA 50x[C5{u޽~{_WM%xӥ{;"ײ|Fom2W.:&H}K{\=?Ooӿӭ5WUO=cߵk[SA Z_ƣ&;'t;$oaBZ7蛴MޓvkO{Bcu^xno+AOyo^ $8_WM}}_.]?So%uZ[ղOp+71=~tԜo]{B**M{w~z׭O?K0D߾W>"} 1kkӾ>{ݿ]y$սd_oK*տwf?m{LF&C^^7Ja%>װJ-5|e<\K=_Ik~߯#F..68mk~wQn-zm-[$_g>?հ}cX&M\nzӰWjبV+]^8;1 vٿD(vyV]v6U?ڊa4NKvuX0Lr1EWM~ůa/X/ -j`NT!a4wh0M4iiL&LhC i!jq"eNTkq[Wv'׍?X8%Ʒ5]v20DFn3XL!P B3La0DY5P CDDF!i>SU7;5km&"""0DQQaX0E&i$NM|j׼U4~q!KJDDD`DD4ІE@ia0~]~\DDDCL !$0AsBhd=W֘T"HB"" 5b"" ql)Dje)Y{+I fEDA4+;J-j$i$_z4S_BJf#;UO^ǐi M"黵靆eR:{Ȼ&36- LvLgzIfݢ->7PUnԌDzMSOj&ȡrlY2kdvP%2S% 1 G4 g# ͳ3f< " vcϙDyČi'';=V[HB;0"d٨O@$c=Fdha;#L qwiP  Baza4i  3 2RM=Dvڠ3 ax-+yٳ8za4᪠if:P~zviDĆD93llh3y d" rWӠ-< 1:߄?O=;(H M&Nz' 1ޛ N< pP\&r"B;0Bi&qw,}޿]rawr1ɾm;w#ˁ&8t܏4ܓl\iNO$;=RtF?זyv=V5X1f"8%NywϙCDz&;8i~zOMKONMn~?My7nvIIǯ Za4!jz0Sa;$_m}U[om⇴K|nz /kIH^Nvq߽qi~BAxk.Q]wbG~J?U-' -Wܛv~_}^ׯUu{U;_\! _n}_}WO?'1\Q7lz|܍cuW㼝ѡ}7oz5@]qztD{o bk Kֿ*_vM'o+Kտ]vY:wLwkֻu{8Ovb kWXJ9)+]2:_ۯz[zMۻҴAff7a?Uؘp߾B;cckƷ!`=HqV^߆_~BɟKGiֿkj9[ Xbca/u-v;}[n⸎ҸkrqD}W{V9n؍~B;ZP>i?uXdQ?~\}k:nOOczƽwiiwAUuaPkd®kwb8O׾t밾괟Ji~mS (CBMA 0>M4,&A0M01аL  !a *dL4iikCXk-ծ.%çտO7X`MQ P b!A L! 0""))x-ȃd6U;˰M3YH86i4U -̞38=Ik;$] QfUpR;6D ˳ |i"L#NLLSŅOBƇ՛8flF` {8VVBy8Qx@ h=@~zAi4";L>3'D"ܧg3:Bf i tjkڄTg.hZzh]]~pӤ d6`f3X4h3Ln!;)٫.g CNT„m|9vHuV}ik7蛺\& vF9D,v֝ii=4iaa B,ShG&#ΨFC7.(iSV߫ORD-VnB=z%~#t M7\pROxUQdc7>M}[]4 E?"fy>4ӈaCg AgypB(%hu2Odi_V1oI*Ii7ӤAڭ龿}xRQztF=\m2cIzwji MbcM׏]A{7Vqǻڵ{_'~I5%8K|H;&AwO~WޟZB _w_W[!~Q&oO#Y'"A_}Z߰a ^_"(_JUu_p]=0ONF[M}|{#v^޼&o?WwL^rO}AwKzj_@}~}__Zm^\=EDa>bW_Hm~>rijpWUx?ׇn};77*w=~ٿMaȮ/_K޿WkGz_!Mk~!V߽U:$?zB&3ӐUVCDƬwv5FuƇk?a_. nuD_-֚^V\"JJv)d#}w݇^zwwժ_|V醴i}zj+5 }zݪijUw=i___{ ߩyQzv0!ЈUC.ATAX0C @h5MO- aS" M4Zkw:k[;^laa Q0C"""""!X0hDDX&B?`vm()ߧN$ǂB!d cLЈAU$:vM:ئA{ڏ8֔DDDADAgڠ;MSA42T#'ya[a0: ed4!L&H{VI""""""""" g g S@01D0QkƹiN?i ddJY fU d=e igejM"7zf\¦w꺨L;g3Zne]i[WΞ^J#j-xo?s!G!i.# ; }W/ o'^$N[jv"'9 s&Ug#E g R3Ygs3 lBL!C4F쑔?Mܻ>F?N|ȣoEeXV$N2NJ2n풇?Tkj'Joþm>=PAeC#r'~Gpg1F~LU?9}4&Hr+bd}SnI[>Nt]?~?O'M%(kC8urC[[MBi=SAdfO32NGkB ;L݄UuZӏ_cO}wN[Km/ &=:t6^=(j'h1~;NOU^׿h'uHwui?%_iw4܊>[ozloZ׽qIze Hoޟv] k#'[?QO\D˓"CqvF9}WHc/A[$hƻ Um]C'ڸ]S8ߧx}_pGg<S=}okW4~Ru7$?u[b0lmiuB}8'fտo'{kN+X5oU]ٵjQ?y3uC]$NV%ӊi$_c޿VcBc_zN5-c_b[E^jnc &=ZwLvڿ MviviB+^بmTznڦߥ#_ _ybk5ݭj☧ iզإoDŽ ]_+w/ ]}kM4웦޷vC iӴ-paL& ˤ3 ePLa0pXB`LTЋ0B"""""'ЈhC!hDDDDDDCB#B8"" 0njKMMwzƿuj`hC0pϪD L!H"[M쭙 Bv izHhDb",+zcjk (-唰VM2 |)uZ;4gdFMAABd̩d8qN*ziݪzv馟WE!s^iމo?D/Ax*nd(eѩR'3ff| Y!F|yl$fӫPUQ#f;10ό!̫ddQ{u޿F_4ŅVI9{N|;\?רޗ zk/AULEz_{ֽ״W7XAWo+ ߯a&;}}L?0daSKuXa⿦k?_8{޼[u7$<6mۿH^zu{M[:M#߭:]]/}soo^}jM~Y'Vs킰osGCMw vnlP_Үf5olj܏unyv~_ '?4%!ݧW={iϥ[~kb!_SO#UػKV5 4cvX28V6+Xc{UՋ._XWxھ*뽴4+iN*Zv*6^^Qzهح5_kj^Q]nF5V^5]mm4A¦ {Lm 馷m(4+w_ 44 a2&je0 kja TLiЈL& De F0*ઃ0Aqk41ڧ PPB: 0N (! *K%PAASk2pgOc[""""8Ј"#'ivhD0gA kЈh~Ҹ^? ; ez2J2(2 ^ MLג Ɉ&a5M~;.1BV@ѧnCZLfD.-3;R+wW;$* )@30A:˲ȹC!d|!dD4h3Vk#3'2|z=ƙL/aB ee̱AaNEa0!Ӌ3>*ap&M4LvH]Siܱ-$ukW{}Dvc1܌wO&Lz$>LvmQ82Z|:yoz&=^7z&ouQq}"N(%oޑ7jM\7r-{TxӴF\ jz.ˌt7W'˗m-tM'J;$$'tEi믧wW}x]w}_7qmpX~* w~E}^_M?[b7q? tpa_~AaXkM|+|AjؤHGi~1W&3} DO1_ "cl-z7$oMעN/o_w!7o<]꽧]Z_fk?"~?^ðkKTa[ZB˻׵ᘖOUl׍Q7eݯwiXT _:7 t8-Ti/҉cupǪ{kŬ_\}^tN-*+"ixM*ެvUvOVRCuZzwdQwjB<4dܱh4wPMIjvLiݦUN T`5d4AO!a0A4}{2&馑}ezi hEC2 8 `B"""4eޱ\׈F*QXjҴjյL+ `1 ^vgQJRVy03h9d";dL.d &L(M5ڦ}~-mKQ^\QpɼoyvGi7HSd)zwEi?L%Hq##g}M!hZ\3P8pyhϸds9 f43$e)39GDB 9$0<jA fP3vZ 0N^xL AMUlaaݦM44ڧM>ӴAզ߄=v4viuv&;O__MBԊ?zk-߷CMڻ5&yq&#L'^HMo=<v7p7od I钍<ɏQI7q:&Dj=>׾A߄Ojy?u]}_UO>X5S~WbZ\U^oWK8kvߋXpߧm}T{VÑG^C_:~I'ɐ407c_^_1uD&;o{]WELQRÃ}i{_5@~:?F^|W[{1CO1C# au1n M}-/8̳!E.mEn-ص~j|z jmxk "רzEBM- i7iV1kK. b-/)t-=;Rw=}moR{OTH(qWW_M}>ᦘNiAPkAiMPa00BAiiN e&NiDw!4L&B͢a3Z 04 a2@4A""""" eo@B"!DB""""4""""""";}ګzH3 !ƈ[l &3aǠa;M;Ni޾]7O$$޴#|;^n/zW0֕]ڥ?]}!ZRUm+=V}_^ȣe 4V,_0AhqGҿE?PS3Y,?i Ϻ4]RԷ[gkMB`2f]C>˅ʛ%/MSOGj}zדR7~T#; GDrAqLb/5~:oe"QH6D0˙nA d"fx `)g6!9"~o>dagɈh3D20g|)Μ3 rz|In293ό$CB󠙱B g p\Lr6( !M<3SUBL-4-4,&0hi4M5O=};Ni4һNE{!jC߿vŭ{^/&LuW&M: c_%oߪD{ԛ7Ԙ>O#cN$Mw;\d+{ߪ~RQz޶[A(\8o G~ߨwp{oǮ{[n>CC/׿/P]0PoZXl\(} Z[KzkC}wWZ{_a W^ڢOmw7woZzK{m]ۿ~KkwYCWݭ>7&=&MiCպ4ŧpl|i]StWAk8T]~#_c?kB#zj88*4{)+kqI~=UVӵ XNǮmVikvF /UNӴ0v2c5aPim 0D4 L&\Da ;1lCT BB",a*%\˄5#E ! 2KDE$DDaPGZOm33;'2m4ge']T-οo^#륐%HIϢ!hx-xLs5 3/m=PhXA&]7[ZMJ"qEn[N%pT_h[zyw&j>ï^Z{V^ӤqƗuo_!"&Zv5Dz^~ڂ*vɿQ쏝4dTdJ#7ΗpBh=mS }aRJ=97i|wiU>V=Xv}h<=iN,#4v&M^W#V!XA/v˅{ᣱ;6 xU xB L~}#'i''g̐8D /C&ӴLw !iI=Dԓrݲwqd0\k}Sm-vJ≾#z_y(-ZNowI䞗NPz}t}}d&zx^kvcUJ^NJ{w^#_ֽ׭/ݶ?,okkǏc+ +/y'LM#;Тֿm_oaMi7 Ceٽ}'Շl!AKW}d{^CV6#'ikFFfR!'ӻkqlkqh4ZuT߻=Ys":ظfdIWӋR(⺽o[؜qLzZ!j'ru0OM.񦖛 I"=pӿ~L-5O==4za{V29MJ;M2vUM`ka4iC!П@’{B!pDa0q{w%w h0I &{&, DM{C( !ʑXT\RO;DADDDDDDDkǧkBUZ^:]j 'g3q"/RB#h4#viG$ta؟(i4ӈ`bz@Sfq ` ha4 NӈqN5-SOL&oQ7ޅ'ߩt'q7“cxHɏWozW^ܛ]HҤ4RK_Iiir]K{irCTi$xֺ*Ku %$K,WT-IPT.ۡꫭWRC^U֢ƫ}u$/]|vQJ_xJDڥ/U^UO 9J}-WִI~YjuTWK}}^VK-{NkJ/cݺ8mx0E=&!V|5c{&?M߷U5M5 zkj vM0Aj[i-0NaMDC""1ӆC%@B!ˆЈQYVU5,3^d謲VA0 tM2R55U7QSM=;O W[Zo22Wh${=h3B'Zv gX NΆv zh;IKSƒ200 bM4ײMd\[/e A 4M5KT=Ba $i]iݯ:%Lh i֝Yjzi!qh=tSMSVJhGʹڮɏM4&^iܛNK6DG!荿"r 1om(5 =O%oj"qD#~F䡢omғ{C叫y7,~ftG.UOka3CLhL a 2?5liθ9(sFF;~?§7U\f{&zquc_[\1[#{_[]}1^gDc?V}0r84O@ 0zg 0M?vHwЧc.= PmM+O^T4&pZBu?ս"cN8nyc?һTL}RcD{Շ/#z%*{ԒWR`H,UOJNDz Iz&N(od=$C߯C ?WTcz jk0ݭoK:^Kr}]1CۭKt>"Oh?H u_=?_5K^;oo'oDcۿ#uݯK]_X{^i3 oE_} OVmv:%n_}l?qk~]=Dls뤞Ŷ{6Ab^G59!듇Zqwq1$?h׋!ӵcůzěV!-ibU7OޯOOx^>+z?UOWk ]w[kz~ѿvӵAյ#jMSTX`nL{CTyg?_rd-]^ڗaBaUSL05g!*fH xn аB"B,ρ$,D4!/}x8׽4LT|B"fICRB"""4 3' DQ0VböuOXv !^_"""""= _Z_{ "1QW\}Zjc޺i4MtҷO&4O1m4VTiyTڤLTа ŧhD;"( " 㒈ea4XD菆t! Uqд""""""!hDDD`LCPU`Z~5] H%\z+e&Ȍ2i:A3aSUUN?v;0=(dji4H}FiȄ'q? 854 'h4tDf~Ϥyơa3A(}XL'h48a L'=04Tx i=m5;M;Mӫz$O[^[jݭm=Z}zu}K~ܘNɾ(֜rCM_qE|2N7?7O,蝭Aq]otjڒv$j^4?A'?KVOUx/81~=Z[QWVw?u*_~wP׭ji4~udJO߿ܒĔ&wBU{w\/`зk_CMro&pD߿M?_Dԛ/_$_ׯ__OE_Ru_^VHzPPw?Ulڴ[UJmS+ cNKZ[OJcB}Ywālqo$mk#?ik#tt;jޚ޷MvjdckO{U^&kiBKv7Ah0Dd0aAҴ˴…NST B#"0dܠjM48F0b`2B"ۈ0A""!C2DDDED0!B""" s1B")i#(5FE&Gɳߢ-Mb8HEɃd*)Iqf dYgAf ¯jk p!};M?L*zYo0鑆$dQB-1wߪTE{Tֺ|HG6ᾫAi0OAwZVkHwæA?5d}߹.Iʄ!9 qYt 'pAZZ܅ܰql!p?PfBa4>ԠvʌMpJMwv[äMtV'?B~ o'w}1?Åh߽=kOչ8{];'H}m2co#}.?IƐ/ɎՇxoWIU΂_i[鯭9^?}_ɏI|[+!~&o{Ҧgպm}}]XuMkv /RO{ukoF_-SR( u}oO0(Cڪi1/L*sxAM>o0@D3ZL,2 5& M4# *ehEDD0""ЃEZQtqB"""}a05R"""4""."#Vj#MK!ٖ!–Dk3!6f̉Tӧ믷Q7)z2>.?s91<&P3iϒd!9NCCGtE5(f9FhiAx 2BiadL 4¦| Tl[[D0C ]4BQӫNNT =4.ZOO䇵Ԙ'k+ɽuGY+D$M]d`OD"p[Bz}ҊMɽuɻ]d;M'vLz ']"3R:3 fyM ^iWIץ$dXwa vgR  4 |Y8['kMa}= ^$}4-{Gsi:^Kפ+B=>)$&aɑ^I^/M٤6p`_UޫQ$ ꎾjDo1zt/#4`06_&?vO?|hF2723'G"C g0AHR@Eg5B^vn_}o[*a MM51_WN>rvN בi}=﫻O%cM%zwUjߎ]Uah2BaSTB,&kI(LtM0Ao_Fg_UZ]⇑_qЋ B"""2IPL QfQw~̸۶u`^I]|W^?K^&?7[IO{ַuoUKޟŧo_~l_oua9݅[cqhamz&y{?VU*j0 NDtX-5_0DjI*5T86*=]}L|S]>+[ Zjo ?W}4 i?/jM4|0 ƒ4NMi `B9A u0L*vs#DDDDDDC D""( +2"#%B +~ `0Vв 2|hhOõvM; 8Az.. 08ٟECU' B SܐN+Iũo\,~M9,Z|M䣾-]uHKzDǿ'_waꚯu_V}ߋACݐCLL& DR~զ0Q (DP,#v`a[dȂ #De %LUS: )fDDi&7NNª k^#OK~&*(DcV7JArMuONAPztvM,.Ga4'X~֩H 5 U N43]A/jh ffAs)*D298dy3B: q5DHkrD[25BiMB󌹨AKFi4Dp:M B4, juH^ Uj}VӋ 릚^i_7.&=eBޗU_䇢c$(iS~1?IǯK-$M$R1Ԑ7Ǭ.Z()}%RXN=%I\zkҒJһﴖ_JtZ_I?KZWzMRU^RKK+UK~UҪ5HK*{PKRZki*KZKIzצ*K-*֒"J_}*׭kuz~___5K֫ZV-ֺ%֩%uZUU z*%KKQDu]*ZPTnTMް*_NKNWUZse]zvb;qq]^ak]E[BV^]?8* M/cZ]`_Uku_^wO }HlW^U:?Zkit A &B a4¦vh0Bh44 L*vkhY  M `MUhDDDY8M04 ж"!B""8ab"""""#x֖:Pݦ (- ͑IB"'qvgsHCLa;^MSatU~ס_;VzP2n:=-y#T\2^uH\=|TqjCPZhAV oU)uMBzߢCCܘT{߿'yvFMz&~SU nu?oc%_nïMm|_|nׯm_Ӿ߿Z$7[Z<Uw}Ž[捳RciuV/];qhm5-08VՑ+UإZa)ֶy :Pa4" A馚aiM;B g}]m7-#,-N"o^r7mlk=듎\i_;{j%[ZݯŨ":a[mMɣN}(i&׿JWM_[]iS? Okh4ׯ}鄢~:J_SPDt!iA4DdDZ37sA4#HGTP4C &aDGmdX*#B5$ʑ՘A,54$Uk##w%AQ#ĆHG߷A4`8* fl #a +jB-zZtviKh]tMKzݤ>'wWUDq['dn8t[~Z]u~'^Nw^1w_$8ikǍɻ [H_o:7oSWo,To^_Vrm~ݯWMһNc5]#zc4vױwjA))Wnv ~׼oMr(F?N݄ uQ,BBXBip,&2E2JUt"""""#jƒ1Z&ńATⲏ +-a5ʃ%!&E 'cό鮞QnN]&_IpӚ]=OڮD᥵ׯMh* )L$*p|\"O 4#ٛDšz*u1f2v~?"'0A9=:8 &H eك0fdyޘ"& a_kXR4!B;T4iSB-4h]-ii* X\&zjiV5ۋ WkoD*V7tWE'~&\*N&7$?zhN4oy1CII*]k_zRoFlyzֲU.ZkJHR}1ZJr7W-zK7Uz*UURRBZ[KV4߭hBtR}i~U/\w^kIkPU/ץ/]t}=-kjY1T?Uִ K]J:*%ү^*U/G VZݥ^ֿU_룗֫Tzݪ]xK].N>K\^*zJf"kh>. 񦱯Qk{U{*׻#t5[m_\hzOlTMUpdca5U-I;O-jMt 'ea04B",*iM0A-A"",!@ )8#$N""""" !8#\UvVڈLGFn[B hC24ʫ:d< 骧Pž>A?ӿzXy7xIIoEF{Ÿm36Oڙ z~=t…L00a4KA'97-c~}-<m;U_k݅j۪cއ]{k(zZo}зȰLs;V7ono;߆{/߫6GiV+u1{;<^`:uLwJUӧi6U1WZV FקjN!K'i! j0EDB*v4L(. ҡZaG@)[*Nv[ A%F|嬲!їDH#H4 NL]Oy69f8"h4iڮ(aM4L&ON8 4_MdQ 8L}?M]"=xB*&C̐A|!AAA,pO"A "LA1m4I]=?W T ].z_酮 &|ݯ7IavAwڨSCd^}o!IC?Nz$>NN7Z hBw !Ycd, 'utJ^;wP絛k?iNCHr A}~ڈ֞va?kۆa4q^qVn}Aç?&>*o_^;L:5UP0'~@OT]4h5ޟ~S#o_ o B &{D߯w^ $L`dl-zA^$݅9fw$?n1Đ_|S`Q^S^*خiwk-UL&Mӆ`a0{Mjjha#uP ) Wc_P0@ endstream endobj 134 0 obj [ /PDF /Text /ImageB ] endobj 135 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 194 0 R /Resources << /Font << /F0 201 0 R /F1 211 0 R /F2 170 0 R /F3 199 0 R >> /XObject << /Im1 168 0 R >> /ProcSet 169 0 R >> /Contents 136 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 /Thumb 189 0 R >> endobj 136 0 obj [ 138 0 R 140 0 R 142 0 R 144 0 R 146 0 R 148 0 R 150 0 R 152 0 R 154 0 R 156 0 R 158 0 R 160 0 R 162 0 R 164 0 R 166 0 R ] endobj 137 0 obj 328 endobj 138 0 obj << /Length 137 0 R /Filter /FlateDecode >> stream x}MN0O;X]HR}4LT]94E͛(E 0,8 B*WݚbABX Ee7o$xa)%㶶+`ҿJ=hpzI‰hP摈_sHNܠahs&=;e197#^o=@Z,@ּ[R78h:9fif''N|6WYyYoWi!=J{yk X銮ށ­ޯ<H,KJ endstream endobj 139 0 obj 267 endobj 140 0 obj << /Length 139 0 R /Filter /FlateDecode >> stream xuN0DGȲgÍܰsդHɩ@{(!if<;BuB#& 'wǽGF Bm'~SU5\JV>Bm8CgpDQ~-qgҤ/D.wtty;lm1 nq/sUFsomr9l;Tr^UGqyȡ>#쌭w+21N';eѦhnj0ڊ_K * endstream endobj 141 0 obj 364 endobj 142 0 obj << /Length 141 0 R /Filter /FlateDecode >> stream xS[N0f>?œ-D3HԲj! gmw' !} P`z(\jOz}ui^Γ, {|A*`"st]S~G5}H"Fg!QR|FOXҶI=v -Kr>hX49lpק![">Έ2(L-xkz -דX۬|ĹCLZ[u@v8YYe/&6vcjvKp~i ə ~@V4 endstream endobj 143 0 obj 220 endobj 144 0 obj << /Length 143 0 R /Filter /FlateDecode >> stream x 0 Ɵ]ە*Sd6h'A|{W69(_Kgp0W-#0 BAw.((̞ԧ'Ec0GQ&j;:Ժ(\1JAdecЀBUfݳfP+T}eoYfj+{`APs8ͭ37>`g!g*BU9)N6Uc탊KG!xO endstream endobj 145 0 obj 470 endobj 146 0 obj << /Length 145 0 R /Filter /FlateDecode >> stream xn0wj6Lm"Jr. ㈃V^rZ@~wf"<# NEh2){8a$u>Ѕ_dno- ;h_iZS+ġ>|YQ r`@wdhH\3f!> stream x]K0AC.vt̋/C]eIG*{*=VcU!Is( 8 0IpWt5'XB*zA<<>٢toX!N`5/ Lf@ʘt/+ۦg>ڤ'iL?8]k"l黧'g 0ѡڭ#Aa mMkW3lk9@ޠ et] 9$Tx]=G#߯F;yYW~[f4bi({~۶4]n}?Miw7U9ȑ5x %5/אfRčU [ endstream endobj 149 0 obj 327 endobj 150 0 obj << /Length 149 0 R /Filter /FlateDecode >> stream x}Sn }ށb.JEvQl5U,}A`ڐx; @, y")'PTf.}r(9H b@xQk Dfk:p Ɵs9/PBR:3IBHc.VfevE}hJ4/jo(/Zvr`F(#Vϲ&&bjښ`T̘i2r"&dL}'Gs[umڢx]g3!q_-Ϊ; 6 k1JkT܄7٠'e/> endstream endobj 151 0 obj 304 endobj 152 0 obj << /Length 151 0 R /Filter /FlateDecode >> stream xMN0O;x Wݶ+ D*nML$B|37q;D1b`%p=@by\æY@TA2tmָ$,uGsJRAZB9令Ll5rVchCK^Ll$ޕOj"Rjqΰ`"G&JHT@.13]2h#G)h\*bvWLޑ?Imѓ*T/ksVMMd*n1,> stream xMN0O;,?IeQ s4(i$حQB*Ko{[C5008 (6o=RfM$&ؑˇ=惰2Pdw3J'_zk Gs<>č^h?KP*:F`Ѫvi@9M=6k>puQWCM}ۉ1JR$HAh~1>i6gv'nL*p9^b{v#.2Y|mӸ) qxU.}]'>Y;C~=] endstream endobj 155 0 obj 340 endobj 156 0 obj << /Length 155 0 R /Filter /FlateDecode >> stream xR0 J/XӆRGepI oo*u2Ӌ;gOQ!Gx(\$Ve_D/KV Df(~v;@dZ71[NdNc=.; @D˿N'x8 ?!,l^JnYs%HYg>8d\"*t &5'[[LB~A@i+1`Lg( 2<ۉy'=9#͔f/sVw^ѻfϦ=v]ؙns*T F&zI. ǦCg~غ endstream endobj 157 0 obj 347 endobj 158 0 obj << /Length 157 0 R /Filter /FlateDecode >> stream x}Mn OXNDͪ\$uqcj <{xTce-%`J ;   r ݼoD UQOo fN!T:wH1+ x1-"Ё&cuPa1Jaiy8-vAJ﷓1TR_& D5чv--cTec')H9ja2:Rkb\B(bdM[/U vEzSs2oM;n\ 3GtV=yi?KU)/!hܔ endstream endobj 159 0 obj 380 endobj 160 0 obj << /Length 159 0 R /Filter /FlateDecode >> stream x}n0x%k rTIvOPS0{Y1\wN/)`X?r<)(d0-QcaZ~<""/=:uUF|V;x+ #lz >PliKfҀ#IjGeWF)=|dedzt~&ҿa?gǺXJ4܈ZJfv8WQ~LңJBwզx軫2a},z9ll< |1dԺReD*i/U.dʶ2ENfA7=˕ kss]6SZk endstream endobj 161 0 obj 170 endobj 162 0 obj << /Length 161 0 R /Filter /FlateDecode >> stream xmA 0_؛`L61MzZh^ƢP(J#mwf`W$y91R5][3T{ߟStB֩z2a`șRCZDEY햿81Ň'}F*e?,zz9yn|E endstream endobj 163 0 obj 36 endobj 164 0 obj << /Length 163 0 R /Filter /FlateDecode >> stream x+T534R0BsK0gd˫k lH endstream endobj 165 0 obj 11 endobj 166 0 obj << /Length 165 0 R /Filter /FlateDecode >> stream x TC endstream endobj 167 0 obj 24480 endobj 168 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Filter /CCITTFaxDecode /Width 2550 /Height 3300 /BitsPerComponent 1 /ColorSpace /DeviceGray /Length 167 0 R /DecodeParms << /K -1 /Columns 2550 >> >> stream M!3LQ `CL' AzH3QSXzdekY/ <%tKzۓ:^13":9ݮ<>( a|* 3k6Gc$G[ 5 4X_MnP`<&#i~ݪvI37hdoE[HOU;$Ӣc'Z0_ouwY.J>ܱO'}k ĵo$;#+kJe{Hou_~}ˇc+}/'7n 2/_IR~ook[cIcܺK{\G]k_mWa+*u5OVlS4"pC &? [~T\DDDDYjPMM4#Q(M3Թ\ :i㿉̍QB*@HqvSAsЛUUL'"]ot{C:"IBD;A>gS::$̑KRkӦNů4 gV-6|h3[!˚$B_A<Ⱦ`4_ʂHAg/Ky,g,g"3I٣6[dEvMi4u:D4Cw-n08w1ܓ_һtu}KJOOC\RQ'cM߳"cGY+T zM-}?maZ~zaM[ 鏍Z+_OỦv_uOCCdko%wUF9CW1a?mۯvnhq+MͫzW_u_ܘZ7 K,m fzKnu˙`NKOZqҺc^㰚V+kV/U&ޘa-Tn}ޫNqu8Sӱ ,&+bﴝ8׊bVuՂh3 h0[(pi馃 #UoN^47r#"" DuCA#a2!i$:c (t%X[Rsa5L&6 A4i"" $5qDMB28)ThDFo]L-< T..B`63S;H2"*D140NALS1SI[4#*#ȮTKIotHvi[~=4;U~1gh@BI eB%/șku -00h5!pDH6&z/Nil&ASCA44#M `0B&a4 4xIIŪqOkDjWnI:'%$?D!`ICd6w]V#qw$?ZMrﯱAU׮׮Щ'U} ~jkUҮ/y+_^KP-ykWDI*JRUjk>MKK=Zw__3u'4KVzlWSkal%ե]'a,4ͪlH|;lW%1{e K2iEipiikc;j-ӊta(44jM0ui4kjɰa` & &j CA>iO\DDFKvEwB",E&E2#C?l!DLyvGPhD2CztD} {j#TI #@D 2Dh.!ia0M Bj`(A_Zi޿M\a5zOꥏWӨ$d&>H\ߊաpVjx4 ["4?K w[ *IpCX;XA[K{{ck#MS_mW!|0TB.i2Κv|DDDDDD0CaThGڏM"IgggFvJfz!kPBuZ¨J|ķa*:-о[ً]N5v|V~QK$Gw V4U4U;]k#l4ZaB5vߪa:W]toꞢ""""@ &B,&@аM2$U L&"*""DA84! 0JDDj~YU&d&Qќ`g$HfRl'&z0At}AzwV$ﻫPa ǎD:(Tgg30@3uL! 4ӿ~״iziX1zD~MA*R]v/q&]jNtܔAX=v;\I_?Zq"kH>F4=Aw{wzߺEGi_f66wͪ[ziƞ瞶ڄЉ7T[N[׵0]i&4#Mm%4DC-P`v4IRFj?lg%r |;"/2@`2a& _WwIoNPݒrn}#'Go C< |B<?ȃ3M3CAa|&AUaBM-anW{ u duHK1RcGגxXKl%~9&_+xl.k^꿮ɐ¯(KKVd/_v-&D &h~óO/TڮKG7O>W״zn6Pzn;l'ЋT{Xpⳇ ] cVBn[ .!$:zzd;/WQD0HDDC B BAMm.M|DDGDDD0B!$8LL&j-"""""#Յ (` n%# HeS+A s: 2 ʄM!B(-GimڄHY0AP5DcTC@v t]ƒ֟m*ujI]hVAIO!=,i}_%Pծ|6p\342fh3(#8PTWtk S$!" f 'vr5BԄ9ae9{:,4QLt&6ZUH.PiAPHkO&f29 DegwAliz1މ=5?U1a4U $5O ŦB4M0*DBKIW&Y7K&DZWw_N1 KdITMR$>TMC\R $?DJ.F?*$ Z%Ɏg]l_[U'D*տNRYr1`_$=kZd}tzOT[UB$뤿ZҥKRPHtV8/WUVUo$Zׯ}WZT]*~-tU}R Ұ륭IT-/T@ZKҭ-WWjJ@UZ uRURP.]Zk~ꮵ\-+VU*Z$h_v1~|~i~qiG&=rT% O!>lZwWa;JڪvG:;OZNT#5MTIj޾_}ǥ/_ i(H* INIڮ5%QNE-zU]t];^qq"1ߓY)0M \-B )'MBj4A\&vSO]Ul.IDjGDDDY[8M!M"JaSRDSL, PMiU0T(!U Џa4D_Qɱ2$#%&vea' ORVBI7.R`L EZh40C>HMe^'5NAi;TAށqڵ̡kK]5}g8i|D!͜ f)~>h3!yP>i/P_ wxM=0? ! !g` )>fi3 ٚ!&s9 fyiM}}PhZzzjMB !ihXL0aO$?եiZikWdRNҴN5'i]1ht-k[ݾNxyr('aDɻCvȎz&ֿ0Xڄ7|,d}OKkoۯx|cև][V߯*-ַc^x'Ci/r/ckI~zj$Z߶Q_-mײwOJ_Kͯn`g.g)ΐskUXSOVC3\Hz]SMlea;NK]±V|?5iX4؏!\_ EkqmKAl0ڎ׮E&ӫW&xcM]>-cBT4Ȑkh4ުHU%~ֶ^Lga;"d,HhpL}Bvڄ )5N봇&q!pa 20Mj P4ǹtk%KB""""""2Z@A 5\DD\DF=KqdG6VR"̄*DavH3nEW֚jZjV&LjhRK:~/ N|w =Q {3 U0O M5]i*wިU$HU2n!:#iWCiЪz%=jJC__U#ZKK:']u]u*KTKZIWU_\*4[k]KPJU5P].{}K/^ ֖.ׅ88d,}(}$M4M ;];_!!EV5N4Eva MӼDFKpZa !x& eJ#QL&rN UݧulHDׄ}v ,;<'C#otu`~}21$C~IrQIῪW7ކW^luWԷH^o7^ R9i?X":_1I&ڥkAqJa48a=5RlDDZ`"tODDXW ?l`{)lZ(2 efx 'O QL zN(Uui{zr}9Zos g=d6tD:)?3M;H&L Xx@ІBiU]SMPi5L'kJcڻ+DhM;_I\[DX}wQ ~vN,~qK2QD_}m->}mrQպd_* rCu|)_!kODވ߿֯_8}O_6V%[۴wuAῡ[cW.WJ[bV?Wmwmr%;_* j wtMa$:Ӎ u0| MHvt2!gIܭh0ABgA3'go0ALSg! 4:LDgd42pAfdU 4PAv zńM>g L&<$f#fnLD:Na4a5OL <&L/RǢqCMci]OᅺNo$n ݑ۪wc?m};kJ2OXԜd},cGމ:VI]ݦJ-/_[ ®#s[_?5jo[K~#Mk ky$/ _OWDI//$3Sݿ~Uq잎!_}+V[a${iqڪaVt'qf{!;}nj6/zh0vEqpl;!>hGM|kq_k -]1ƟMtM5[ȮI5ƾI+ݮꟈhY$a 0 G5 @$912~}""" ɅHDGMe M0p0LjeAikaH",BB8PhC &""""!Џl42+y A:U N.J/B 2M!*ᦘT)BPL *C;/a<~I&auM!>¬cD$'Do]=j'sTӵU4T*M5]N" 35ZKiRmx)qad1$KCѶ{7A\ 7I"0$x k0TTM<'zk$ՊiLfdL&{ 3giC ܳg#f]Bg kWӪZ Ga5аIa$5XN 7I'C֗_*[Ջ[l.Bn*}n(ZDժZkw'_!ժO# bKM#+i&M=KKI='HuZTzUJ88o^ªm1Vc_!U tO#$U-UE7Iiu'<=R]u#~*UAY'$*KV:M K*J\W]!T .* }/UG]1=W^%[zRIu-z]j$J6ڡk:Zk^/]iR"Wiix"/Z~JTD\CdHU2=ڭvZi.Oo_U8QUWvQ\Z=Ӵⵏ.Kan$Tӵ/i5K\kWqIh|iw4MS]0M=SU-t?2 C.`$Zi4-4UTM5AU[UUD߈#AL0L!i,*k 2P M5$uI  aBagX!B,!ak $E!`DFKjA…DX G6dxA-g`fNe = =צv]SLTgۿtWD;LM.>eAdfk4fizp D&,_ʂpf̼hIlN„,& Ū}ixPA+DGɽ Ziu ֤Or1qaSRC0_ҤF_/ARj{^ߴi%JZb?jj^ HjjF4E42tq_|3"C1nM!a> ! |& < Gz$=oDhqpۿ׵t TN?x\zIzheIi?ҡcr8׿(ou-1'FWnC+T?w/uv~&=7^ӯqmR䟿r7336KUikoH`.X].cLhuM/`Kؖ:c?>}1/^֛_uz8޿(렃&iuܓ翼 p =xmtIuO§#}WOm!Jۍ}Kz8O4}va56|TZn}۠O[}b#-P}jj}v}DjEl=ZYiMo$꩐AR~~lZ[O&i˄hXM5Piݠ nȣqNTӆ]WO!"BDDD2&Q0L&A*p ;Cpv MS k4lq]Fa2 q(AЉ"/2P""""""""1n62MsF9A#t\&u\ Uꩭ.4RԄ* n8CT-N4UBtگ}W]%UKIֹ'^XKƵ_%Z.B]WJk %/]URK֕./:iGqjAB-22" BɅ6WB" X:Ӥ:lml[z*߯OIDG]ץ}$$zoRh Z{o:M_!HɏH׿?Kgu6׳u'~8o罳"rIٷ_2c (8;_7q[auck Յa8e׵v>߭lz|RjzKhqpqq}&;J>={WIV0>ڻi)0vGqNUU}0}viUKt5Om ˀ3h FP!4i &a5M;]5L.javN:!DC !a$I(p@P5 !0L9a 9!M2N ""`Q5ɃYDAдARDDGv1ivJ|geaHO 4t ʀ <0iEvvh7"nIypF?w"W_AǷ[O3d3!1h4]2Ccx 0f4'5Oc+o;[};MlvGȱ?o][i뮶PZ֯=IWZ/C/5H~MD$K?>6MO\æ\%qi}ƫ~+v)o];Ӌ[XkGvB8AvM4tmH'S "" pGBUBDC j?ɰ*% E& < ɠD>vH8p)L g8ijNa~%~[(W\0M_Pnh!q$qˢPG:3MX miAe ~8ότb\!c,4 ;MtдC`p0B ӯik]i|]-[GCIޛN h'WO;EɎH$=Oi]'ӰJ'd$>( p׆/MS}p?vPcc~Kݯ;bߢcuz= KP4!hm}_7z#{PV!KV'`Pk={O_#wiZn;ﻺֻoa4۲CԌ{__!"L & dha0L$OA CdX^ ""8B"" a C>C@©dDE!G<{UXL!ahm9 32XI(U ؑ4 Am š !d0@!8vr`,&&M;N?%ߪnս8N N An.-?Ф+ :ڪHRsU F;__CU]BptCZ P`10!ժC<3l.I9g ̥aV{<UMSL&4RMM) ψL&s83f0wx&xg(@]͙AS~*-SMn5U#_M P]EB4# i!D߰;uOU4#Z?MɺDV]U$Fwֿ8S\rG HUPDc`ۭ9c(C;zIC7CUtk~5Z_#O!IuǢOֿ_Pm+]zU[k1޽k$X/cYKkoԉii.)Z-KTIjCI$KzkRZҪRKZҨ_I}BUZ_W]7ZI*uKV&j~GU륭*V֖4Hy. ֙u\_IUUޕ-k%GiCZWi}zNwҫiS޵z_t{0i_֒׭RWRUմT; BiMSW{_VUVתI|tG]ǿ<& 4Ԕ4 UUNU4S[WvB DDaI *aa GQM tS ڦNT)ꞵ5OH0!A3"`L&pAaU0caV8%B` !ńեI5Dl&Ү .pBUL! j"#J؞W\D.˝@2a6@ַވ [8_wSs ՚ M&@#OA" MD7B N>L Mo~j|IگO;䟿߶`~ב|Sےt"~+ix=p_zV/(O&tN?v_4YwߘtKquZn{T^j߄Li=3 E:L&h4DDDDDDY0M"qC2(` !+L쾙 mWDޙt;JdzקW#wJtUIW~fԬ Ry0fhS ̌eJS]fbj`Ϛ`@p% O'T5[AŦkM5B qhjFaVXҰXD߄D8үDU~N-ɺIOJ׬kKUǥY!=/|uZTn).H'-W]uKNZUu¯t}~¥]}RzZm/#%ԡrsUUU7U뮿UI}S>~_U_%E=$az_zRK޹4qzId$Hz|U_⺯K+ M}tIDC a0д˴,&a4445RN~""""tE<"! &N" uII("""""}hkv-6dx̖  a a "bPB$p34Y M2.iȩ324CG_L*jM4Ӫ"}:$?Dc"^MoA?T \zRc}&ȣɏF;[~y7An:jgz#'F\jDıW:&hvpi{.sqHkDxD)!<3S&gtF`s955OVaTTi Ͱ`3W" 6 '痽wKw~wpDp~LwT;0'mizz~wz$:^}{zM|J/Rq>FM&:z&ij ~MdMzZvyqVXIH}SbM Ӹo۪u듍?OTL'jIɺR}w^>7/WtB~(St_ǿ׺{?'ģ~?W_gH}ZRPOߔ%ʄyu}"O.IC u],_w ׵wuz\#;TT:qžv ]+OU<Ҽӵ^iƮt'iF]v^){UNJ^]ol=V5[N6+C Xi k &iڦFzU&nXчX,0 ,&L)CRC5R A!u8CAMUIBF;^fJ"" B-8er  &^08e 0L&pM0GQ< gڜ2)GMU~ 0Q_&C*v*jYT@BȨjtJ'H7-NxBp3fm3lv8Ak~O u$&;v*_m'I/jRo}I >_#7Ev oo֔ d]ٹ} 4_ קPq]>MmqGVA]^0hZw ol&2,D0B)͠ &R "" 4#Khl(Ugw 0ֿq!JJ־gI0A뼬kYi~{z "v$!k΂KZ{xN3䁅K~__jk_\F?׏_Mq_9?^Jۡ}]+(Wc5_N?Kz&?_8_/^߇7Z_O_4aU/'UK&;=?_ؽ>֧=^}+%O_$Od;G_g;1aW[WZ֯lU$jvoW#M68ik^k_a;M.иhXT,2M4`!kj݅QqȃC""""PG J' .&iڐaE5UvM\\DDD0B",0B! ABiiQkz""#a$! ! p*a=1 ME"j¡Q GeTAEq< d";_;|d)nԌ (A#Ht¦-'®>)6s:mI}'w>ݔViE ޲#޶qg 4< Ȏa3D1L~?==oLI 00<)hk3UC:\}zi궺 4KA4 \ &x'OnXtɻPO];4ZN(ܸ{UO7uްwɃQ{K&Mh,zVJt!}k|74ۿW뿬V^INJ;?CZ]. چ z~~D9:|%6iO_Z]v }׾o!iZҚvGrC][D߫EE'אt±bkl2Fִ׻'6c~7bI{0އk]WSluG,p8a5NBT4^i}j)T[8DEN a0 M;A]B"""-ZdȺ˵Pi}2:b"%Be &i@ &EDDDDDDt5ibըMgooqjjWAծ_t"w^z ڵ\ְZG#Gd])tKJ:A4ӨaB b9Ƃ|7g9$kתUL'ia M4Ln3*i6_M-} MR_Ml'KM0Oq'U7䜓k&^IKUK'UKކu\ɺ_*:ֵTUWC_\}}WED޿H*.zK/I%Z_UZ^]/ /K/],KUz])uKhzK_TI'TT%Lz%^j6edpQF]Iz*^sZu]k}ٵzZwtم!dﱯTdܧRQMS vxXL.wa 8MU4UDEa .AЈlC& # 3"α: l,4KSL.V`0 ?6{[T~~ S {;1,x괶;(M0sޓw2W_~NnO[—}PSNƇ!!CG$G $h56׏(H?T͆1xuvga}0j.kk.AOψ} JdH9 I>gGXI髭5>@C08f>!A {u}}trv->Mnxc]ݹW_t~Ir#戮W_c_p_oi?UOI]5_JdAֿ-kU_: U7KV?&?_W/W_{]_^_ص臤a]$?ulg;믭o~WO=vB_.nm+׭%ZUhRia?^"uX🮾^Pt__8Ic&]CMT& !j 駧H{_#BF`΋B"PiPA&iN 5M}JDDDA"""!DR<"iBaS$8Nn&*"" !DA,YC`Q"‹Ic40]8Q&jOb ;ApFeld&% .tkeMW]3P.AL&KBQT0@xUi: 7;,:i;I!RWm,2a[qFQn5U88&mi+ Їg#柕kVى0;M=<0A' }[F3D#$޿zëNM4 xis#PB{H[M1ڮH?O]uڪi7nIӼiQ7u/k=o4Po}r#Mߵ[Z!_ yGZR__:u݋M;}u30o O}ӽXZAwޭ޽e[1j|=zOm:~n {8gs4'k}] !ay}׵`?{]7vN(};SJ_[OmCKX &eYnE5L&W⟻#uXHDDXDdMT=Q0NU!DDD\DDDC0D3@ & ">˂N&DDC" ЈZhDF@Ј¨blHL6̋( A[ia:N&q_¯R IׅI;;uOU!`sƒjS8 B:!hLDtGf&p B"+|'^M=*&=d(c1K]uKZA֤!U%&>MAW"P**ZUKU\UW_֗!$_xKU/] iV ҂TK֪ꖾe7mkoz5ZҨӋ/[W׬~z骯iJ" T"a4ӴUOTDDTDE@ RqF0F-v`B!&zh 2͑)ZEAsZ-QHyEqZm+I;]J}U5aSLOO{Un䇧&\JLvL&uZu*wyT\qM5*7qioTI3FВ䁠uhub^jhE Aff{?(iH'FRI.]OM>Xa4T@4<# g<$~QoM&îG[VPh4j9Q.IȮ:Xmoӹn[L&i;_֫Gm00Xy81.ݭvtS[䟯RMptM. "?^RwG~kuvOcIO^|zijOM9~!u] Ex]_CٴK]~O|of_}ocTHu֕Uj뽵JoV*]߿ӥuUBm?5Bŋ_׸2l0˽J֭oZo~wzV;K鄖ԻO&ȃ~ݩ6+ M5"""a5jnq׫_tM!ӯM_vWX!,5Da;0O7M4ԆqzwiZhDF  2tʩ5LL&\*iB"""!qj,P0(UC6)6&!LeeSD,΂j5a0 j8MV#$wȮ'zh ?} ^|m3T̞Jg̶\aiM5BM4Ba? 4 S4׻L ߢniu8#-PF;ao_7kakkkI^-܋7U6B,w?}n_ Zz]w]zma=ov>k{k{}kmFoˏ߯O+]Һ]z֒jMu1A~oK'g=kv~߅6d.B jyChhBU0QpM=oiWi i ]S&˅U PD\!PR`*& A0"#B%DDDD4", ԓGɱxy3T `I$A EbA&/`'3aS@8fH9xG9dlM~a  ̓Wk;}, zmtiy(>no$A=M;;M{t7}V=:/i;{}uOA ΢83ӦW ~#3T{WN!fgn֚%r~^wG;] J&c=v|'Off>+^E@; A0vheUj "9cL a0Aim-y,ZUT' 9yHӥ␙Ս}* i'*" kK IɸZLIh0 o?D] ushtj~rAb:Zi!7=0ki(L*0!!XO6] lzD&gA3mOBN d6JcL&ޞZji!SڦlDfK #;AJAxkD{hKUIzA5 4UPM:#*8n魤N|?D޺_A J_tؤiUz]zI_$D"ŭzUIRԓJ)jע1u>0?Dޗ}xK_j].I?䑯*Gbcե߭WX_^*zWU]BүUTT'TV-R}* .Xtׅ^BK_UK@%UZ ZDk%KkK٢^X%ZITJB7.NĶvvZi$⛵cxhqUZZ]¸].+Ŷ~Ҥ7ӛnC#jkAKNTW_ƶ|T;( &ZdcڅTL.ijB %R;`N"""a$Xh4 OaB$D:^"4cQ4ӈaaа !} iz"""""(! 0Mb.|PЇ(`b-Zɱ``dK=&Iq4B }2QDtZkګolu6G '0M:Hpqaǡ&?u%Dz $} !> (vq8!tAwHVL 0}*ۗ}OA?zVh~ (" &ͅMBic[ x{;u"Ir'tiM~xffhZ t ")N 301chipIa8`=Ȍ@K^i4Ӵdg`hB]o]SNa49( 95I 쇅N܌|Bz~LqPG_kMht8]j;iPW6[A][ ZӵzȐ~4cy1A0 4GX\qĔ?Kb5if¡h=ic㇭1PcUL*~A/Wv<ukvZx/z4F=uPF0_o#zFPJwj>7jT~% R:KNֲ+fEz[Å !Gzyb젬&jj^Zji}Q!L MW"޽ZK ֗aa ߺ{Dv=} P4>!Xp]iX⢽C~LwzzwC/KTUL&wj:a Ikk Bb TL-v|DDA!AdnN ֔DDAD;5!kZ[CUŮj endstream endobj 169 0 obj [ /PDF /Text /ImageB ] endobj 170 0 obj << /Type /Font /Subtype /TrueType /Name /F2 /BaseFont /Arial,Italic /Encoding /WinAnsiEncoding >> endobj 171 0 obj << /Type /Font /Subtype /TrueType /Name /F5 /BaseFont /Arial,Bold /Encoding /WinAnsiEncoding >> endobj 172 0 obj << /Type /Font /Subtype /TrueType /Name /F7 /BaseFont /CourierNew /Encoding /WinAnsiEncoding >> endobj 173 0 obj << /Type /Font /Subtype /TrueType /Name /F2 /BaseFont /Arial,BoldItalic /Encoding /WinAnsiEncoding >> endobj 174 0 obj << /Type /Font /Subtype /TrueType /Name /F6 /BaseFont /CourierNew,Bold /Encoding /WinAnsiEncoding >> endobj 175 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 176 0 R >> stream 8;Z\7Mm;:r#jg"=hjRQ-J-B=0]&P9^P2M#+1jU"%Y]l*n#j+J7^g`r#[G_E$b[.-a/#^Zrk0LPVV q\-#")P`G0L7OV/nmY?bqKG'JB#EEcC$b^`NX4?@jsX2;Zn:As']ikNJ:/I:q1-"l eBf_YU,gAtG<;Ya$.:)Zp?D>QoO17Y0C'iPUVZ52BqbtpU-,0&RWEp>7+u13J-rP; @6!%BCb"q]nt$'S)/HWEo,YI2*Xm 6+Ra]>jTUg_rI+>U^AqTBCX(-#uf,Q)b]sYJ0_?X=gl*mBqf]X<=U,/Fp1#Pr&+-< a<'%KoZ78pY$c[0S\,F=q&4KNC+lLhp8;r?2O[q)[U/jPVt3#T<)OTp/$DI/:R9N: /\7TO9e^e(#Y9?>BkFg8p(=qQ(!8^sZMUR*aAHoo"d!1s^!YF9X[tA7&-qPVe9uEc +Z=H6RQ9o&Wobu:n?)Ohf/g/%o>Mk-PE)8oK8Fjkf4_mre,K$?.m.XeP?fOhUuq[h UL&msYjJS5fTsp@FJsV]W$t3_g^qu86J6)S90noYrpa^Xifje2>PJk'`Kg%E7qYM? =n+O0[^HQ?J6GO)SL89A42Mci/=dD30klt%*J-JLZ<&pZ+VG6C=[0? U4/[%_ho9_O$7]t\bKj0K(!GpoS+I>a/,rjIQXI"(.e%g!#3b)s)6"F^-D/mdFOjh oeW+aNh:\trX8dR7D$/~> endstream endobj 176 0 obj 1077 endobj 177 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 178 0 R >> stream 8;Z\7CY%c)#i)9R@6a+6m9H.M(]oOo^L-`&*c3b`9ON*5j>VNt2je;c7*ipLXEW[e r:nP3c2Q3#r$,HW)?Z]Ki'AS`_N#r;q)J3.=ED'n`up,_4!WL -;_Bc6iP@lBIIn=\^/M'Rk;([b,,RH(/_K(cWQ!D]*fu`-X/jNjuqMR.?jB f-T@FZTf6_mGb`G;H2_ei#-MP*KIGPHfhLOS9NFij]",/54Fn)ACZfOF+a,rWu[l& lf$TJ-&]0;1XsG`C:?@:\!ShY?%q'pOUj,e1HnKgFcZ((-U*M\eV(T)ECuoTCU3F, 'PSuWLr^o[SfitZ7nHcF138&?V6_Sk=?,+k15U#\5W55#j\K!fh\_kR.2;pe/^Z9"'PUkec:)l>UaF]+5k1]X'Ed%a A+U]ZmP@6.L[.IGM,X(6@u_-oKZA>]LD;]@6`c+`hZBp!K+",tpM/39$^!;DAF?!/ A!*$3H'>^ZVrN2*66Yh]j-t?OParh``="H9(47G"(K'jGitni#g(9PR2?Oon1`i?; pG2U(\KV@:4C=eZ.Nl0'>bkWG]RPY+D7Vik)^oI_SMoVYk8e"IJKb`b=XhCZ*V%,PDQ5XbYm-*,f\BjZ>$%sTNW+N<9 ).FMQqYiOg]]2S-;G6uRZ/iHkFVmU,W#^,/44pRS!g/$ampIeb9nCJ7Pb`8o@,X9q &\6lB$b(;T!YGVD4eRgF?TlT+U"_+af(,CMAEeSGo!#m=2a65E8gR*J3*PFfAol!^ F,t3SSN?901=_.eVm&+&T4f(C8Gqb5\dN/@MH endstream endobj 178 0 obj 1143 endobj 179 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 180 0 R >> stream 8;Z\7gX3)V#k$,ik_FW8cG.Lb!M[l2LGQ7rX0,=p\&7n[S_L56*Z=bR>-dI"Bsi.INX_+;.Y"2-e&B:R+hV"*_ ,nqg^$6q;*@coPm'XQl<'n+-&UWG>S]hAti$mWb'B[0HZYebm-A]lk_8QIf\qmmkk -gOG(BS0bR2.OY:GZP@8IUOEtF+qRUF<@p9kEcTMHjuShf*+rWi9DH-*qnh&Ud]c7g0D2kt1G7gg kCbQeTh<+QE,,cn=40O1?rUqE`nZb_R*le3&6O<;:aTFFaanoVpcpFnMW'Wr_>+n%;"1T3 ing0]2:pK(ZhMk$B,h'\QW>m]?E3MA(FA7=ggKc\S[i@E2*H8o2p<:^E@eX+P?^@3 !eAR%e>$81fMemGcZ+NR`e'Pg`n!cBcO?@)g0"q60,B"qhBKR*U2Douc31#3cV)pR =MsduLQ2Og?j^eM2`_DO&A/qsI9fAiiSs+AoR5lnFFR@"X':B4;=64/W,a!51YW<) R)c!t[suK:P3`_ErPk9E3nd#]#RBP1c-8nK&5+% endstream endobj 180 0 obj 1090 endobj 181 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 182 0 R >> stream 8;Z\7gC`I"#ja>Fck$*%cIkP"+sC+7h9X?!9H5FBdILJ&aA77_$PO3Dn0/L2%s))u 8\;?*J":M?^0LM;>es;IG:\-ZCXPH8?f)c9O)d.T?+YZ%!uCblDe2,jrYG8mR;MDH WT;fW;_KFBC:Iqn)MZ$C\V jS2OtPsaoq2)&d5Xu9bWPO2*`&5O)Md5Sq)coKtC3\oCQC:FB=DQuEJ$M8&ajt_s8 h$?[&.tO6G]'fu+&BUFTDnS6^?t-'=QQZPgZ':iNQ<*Y3CT0l.\5n)jid?Pa(L./9P4A\@MI-`NI+ZN+7&.825kOo=i[A\c!_ppIJ43E8l@L9uS@kap91klus0E`DcY=Lf,6]EBQ 6blYqhM:$=!a]$>jkiT_(Lo%=C?Z=]W'AaeZA`_"B=Y!c;Z0dlVD(V WnJU#NtHj@HEXg)7&t5YDimSS*ZEEtG+BD2V,c+0[2Vskc^6_L T0e)=j*PG7=:[,qc_.$KHS.k;q]hB2.HUBk_`#:4dg"i2SbL<5LA7=h!C:78ArVSF V[9&r/"Y,&QhXUX>a_lNjV6Cg3pb<]NOrmd_5+U7^EHT@lA@?J=U*/cHLt1VIF9uR @o23bBqS'Z/!$U_\#KRVi%BUp-C4Bi:ZNCpdWMpd.2#]_#umBojF!p%Os/sgCJHjp _j`_U&4g!8NQ=Jm1_SW4m\`#cGh-Y;SBI[#9B.[tbT=FJo%DXs`o(5diWmrhaKYdh i'mZneaW<=`m:s((*;Vi.-TKAdDPuMF8O(MeXrm4Iu<,:q,$s4n`8$n5Pad/cN#sl_b'~> endstream endobj 182 0 obj 1126 endobj 183 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 184 0 R >> stream 8;Z\7fo]c!#g@>[+Wp8P3]iWe)@<2e]6^Q7 .e9T/cdO,:^9ceG;;Mp55uA@eW5`H,C5Br)J0>4nWle1EAPT65TT;FfJ7H_UA,>9" _]NXK@SMIO+(JVmn`8Z!oAZ,sWU/C4$6`44jIG90>`-]D#m3QEV!!nb$Ga>qn,;g3 e@,M;8HP0udPd!Gb>e.M=;*!Y@bWG0*IhotK!0.#p)e>s0NS+/Q#%:R,Zc:kOM@Iu #cgg$3`ibp*g?@-f45r1%3tTm"'MK1:R)b*@=;,J#d0E$YtC]uk:Y3R_0]U>')^%? Q#XI%D&a9h;_5_#Wp7B1c;p@7>?kV#5uFK)#GLs*lkTDD,b:%9C(_OL34TV=FbIA] "_6`U?>D\Z_F'gD7aBF+Q*SQZ9KQ"MXWP*Ir0+#CfKJ9m,Mbk:rB7Wjhj9+`9UC'd 9:FmUYQ]$!J#'b%=;.XZ[l">6/B+ct@#MFO%%1pmnGUhDF9Xhda4W dJFq(`m PIMM%M1U??SQZm46LLKZqK0b=2Aeq+e WG9RN69a:W'r!XEHu7rro(hGCJ##3mm5@4F8Pa2frNe.6Y;=U.^@Kn;cN"8.ij/~> endstream endobj 184 0 obj 1055 endobj 185 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 186 0 R >> stream 8;Z\7fp1V@$k-h?EB_N8q'_fA5t:r2@/%su[/@M[it/%k(AZCF4sTd14Tc:'7/F.e f=>qo*7u>25L5kK))Jo]>Ii$6lW\=mic7.^X-hu\RH"@@NjbCiXV1ZpW!P$+6/d5@eK&mgc7jO*c5 !s?2f2ZtY&6_-t/N.u*ae-1[a\_KI1;;nq0LZ(970QDSqZ_TX&H<%mA< o5Ne9d]5cc>QrD(%_*(@RD:ZUML$kF=.tnU9q(*^9dkQ?Ep-FI$t6uTCA4nq&p]%$ HLjKDTZb8+:?.IB+14Kn0d%+fg^!W_P;KZRC(sP)pP+UC8oCcB6XI8+#)Hn$0,1@6 Rn\TmjTo@-)*nsX[qIT%r)W>X?NsT(MuE0KU&d]EDahtEV(a!"feVL=Wf@bZUGAEG=YU$O1N/&F3_ec `uEha>H*]h,I#2"f9gG__@MMU'%lNaYZ?joe=^&JV6mZK=DEBH@gG+*lPD 3^e*sdc.H;9!6i!?D9In.p:7rOo!>V-TZ7BOYSI'bBqs0a:FYGJGWXf:ctP6i&Fo+ Rfru5,I:HUMDpoj=/P;152htG?%1jC^NlGq/Os2I[D\KtUi0DE]0rTY>F5@ib1'l- I\8GGII5\#e/Wn=*Y/6uktAcVrrrJlk<-l~> endstream endobj 186 0 obj 1092 endobj 187 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 188 0 R >> stream 8;Z\7la`iG#jh-S6U14,G#f8!"2Vq-mf!e_Y?-^:f*n0I55F93#T%)&[%4i9EVm?g [(kG#oq'mJ<7]B;.m&dBkYea>X(A*IDJ35s(,;>%or+3g0>-^jp\SVeg)99-HaKdR W^^gSG`fqL=\JW.F\V;!34^bp6agJ$fRhM@SV:*M^f59a,'C/X'j:l#q=VL0I;McL 8EfBG=\bS]o:/DH=$pM*NP)s/U8?aT=,=nY*VL*+8P*;27AAJ$@htHr\eUe`HZd!P ilPr0"!gMJ7jf+/SD(B;Ch8`D'X]u=]TO"3X)Z$2#m&TQMUpaMbbu_YHP((ddS^?We;[e102+e_U/m2Zi4cA?_)-sXU&M]?:[S&f*fm-6Bd5eaU!re $K5j2b%T^@%uAj=nVmek'fF?Y_)r'hAL#b`)GRS#.]_sSVl2nZ5l2""Gn)"kD(C2a DeE"_-SZb9+]9G0(`guG>cp?E-r0X\`l.DI#C0>`/!SS33foK/Ic?"_FT*%0BNniZ OG3`T_dK;5F[@0T(\?7#g1-[gN(9f_7\\*3hoEXd\Vo)cpro*Wb>SDT90q]nc;QX* <@M,GL$T7)T\r9e3\Sjf*St2L+d*6_%]bB"*07AH-h06Q9Cd?`Z$Fmf#Gr>S67FnS f1a:LE=loZLmT+\A[Om^ZT4)8Cj9-IZ/ FY2>3Dl_";8IMf,\D$CmiJkq?U9Hjr=.a3'9+o/N;R/uO.n*gH/@l16juRZH!iQ*G Q@Q63m6al@Ml21LS'QbMhai7$[3sYed+l\9rN/)+!u*NjpCETREhNm3f1G1$f*8HP 0$D4br9jn/3hKW."6W&9I.gfHbMHHck%?R5<(R=@,@ZXO\\V,jTY%e2,[SRP-i[$r c%TqEmn%H)YMf9kOJ@?O7c&!p]>bYhDnS'MIIbKCq(i!pIeR(~> endstream endobj 188 0 obj 975 endobj 189 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 193 0 R /BitsPerComponent 8 /Length 190 0 R >> stream 8;Z]";3&OJ#XiUaqf!YFj6LN?NK'uue1ahgIdj)Oq<8.e#2EBZgnFH.("*`FlR-`W [4W?sq7Eg:?*hR'lQVF%7$Q^)+_;V*0\HYeXpE/a"WZZEHi`qgK:NY8NG,lg-eGgt ]s/%Y(.B.bj ?CFL[6Ydd:E$kUtod\;\D=tgO+73R`5slM;<7sS)E\iJK BH?:?KRe9,[bch+Xu> RZc[h)e:4G*2lriS6bSSIR^fkKrG,'Md7P(hkDNVUA-t.9n@ZZq-<6g40C2b4(P!# Mk^!&T)ep-n+6t~> endstream endobj 190 0 obj 478 endobj 191 0 obj 481 endobj 192 0 obj << /Filter [ /ASCII85Decode /LZWDecode ] /Length 191 0 R >> stream J,g]g+e/h_!_gCtO=0f)$P%cIi8Zdfc5&3j_8$7g.@L`YKUJNGBP\poR=_;Dl'P(T (7Boo^^S:71(MN]ZQX/+Cbu.lK"p74pe1T%s.DY%&\1TdJhr54.M9au6>79n6`Q:4 PbLSZTLEE(8E@'*1mg_*eTnN*;*'V3+gm-EEetX%;Bo$ur2ss*N`.-!.kG_q6GDD' dKoL!8Ka#EV,@V!\j8ZFbp6EE<9cn=N6j0nf;(&;QU6bUD')c@\ 9-d\DA=cZ0Q>gIM$$;cd2O@&a;X,Nn_aP(]I1aRc(K1^ue> gF/(+GaKo$qneLWDrQ#;5\S(\$q'4Q,85`-8;S(=Z"WSBOV*FM)4,?B],R endstream endobj 193 0 obj [ /Indexed /DeviceRGB 255 192 0 R ] endobj 194 0 obj << /Type /Pages /Kids [ 198 0 R 1 0 R 22 0 R 45 0 R 64 0 R 81 0 R 112 0 R 135 0 R ] /Count 8 >> endobj 195 0 obj << /ModDate (D:20000616122747-04'00') /CreationDate (D:20000615163748-04'00') >> endobj xref 0 196 0000000000 65535 f 0000085940 00000 n 0000086236 00000 n 0000086310 00000 n 0000086331 00000 n 0000090535 00000 n 0000090556 00000 n 0000092885 00000 n 0000092904 00000 n 0000092999 00000 n 0000093019 00000 n 0000093374 00000 n 0000093396 00000 n 0000094989 00000 n 0000095010 00000 n 0000095256 00000 n 0000095276 00000 n 0000095390 00000 n 0000095410 00000 n 0000095499 00000 n 0000095522 00000 n 0000169127 00000 n 0000169168 00000 n 0000169503 00000 n 0000169588 00000 n 0000169610 00000 n 0000172277 00000 n 0000172298 00000 n 0000172983 00000 n 0000173003 00000 n 0000173100 00000 n 0000173121 00000 n 0000173351 00000 n 0000173373 00000 n 0000177481 00000 n 0000177502 00000 n 0000177846 00000 n 0000177867 00000 n 0000178116 00000 n 0000178136 00000 n 0000178250 00000 n 0000178270 00000 n 0000178359 00000 n 0000178382 00000 n 0000242459 00000 n 0000242500 00000 n 0000242798 00000 n 0000242869 00000 n 0000242891 00000 n 0000244857 00000 n 0000244879 00000 n 0000247331 00000 n 0000247353 00000 n 0000251203 00000 n 0000251224 00000 n 0000252242 00000 n 0000252263 00000 n 0000252511 00000 n 0000252531 00000 n 0000252645 00000 n 0000252665 00000 n 0000252754 00000 n 0000252777 00000 n 0000323999 00000 n 0000324040 00000 n 0000324375 00000 n 0000324439 00000 n 0000324461 00000 n 0000328786 00000 n 0000328808 00000 n 0000332946 00000 n 0000332967 00000 n 0000333590 00000 n 0000333611 00000 n 0000333859 00000 n 0000333879 00000 n 0000333993 00000 n 0000334013 00000 n 0000334102 00000 n 0000334125 00000 n 0000405988 00000 n 0000406029 00000 n 0000406366 00000 n 0000406485 00000 n 0000406507 00000 n 0000409342 00000 n 0000409362 00000 n 0000409530 00000 n 0000409550 00000 n 0000409710 00000 n 0000409730 00000 n 0000409827 00000 n 0000409849 00000 n 0000412287 00000 n 0000412308 00000 n 0000412600 00000 n 0000412620 00000 n 0000412717 00000 n 0000412738 00000 n 0000412940 00000 n 0000412960 00000 n 0000413122 00000 n 0000413144 00000 n 0000413395 00000 n 0000413417 00000 n 0000413662 00000 n 0000413683 00000 n 0000413799 00000 n 0000413820 00000 n 0000413911 00000 n 0000413935 00000 n 0000467175 00000 n 0000467217 00000 n 0000467544 00000 n 0000467640 00000 n 0000467662 00000 n 0000468617 00000 n 0000468640 00000 n 0000469880 00000 n 0000469903 00000 n 0000471441 00000 n 0000471464 00000 n 0000474040 00000 n 0000474062 00000 n 0000475099 00000 n 0000475121 00000 n 0000475381 00000 n 0000475403 00000 n 0000475649 00000 n 0000475670 00000 n 0000475786 00000 n 0000475807 00000 n 0000475898 00000 n 0000475922 00000 n 0000538245 00000 n 0000538287 00000 n 0000538565 00000 n 0000538709 00000 n 0000538731 00000 n 0000539139 00000 n 0000539161 00000 n 0000539508 00000 n 0000539530 00000 n 0000539974 00000 n 0000539996 00000 n 0000540296 00000 n 0000540318 00000 n 0000540868 00000 n 0000540890 00000 n 0000541319 00000 n 0000541341 00000 n 0000541748 00000 n 0000541770 00000 n 0000542154 00000 n 0000542176 00000 n 0000542563 00000 n 0000542585 00000 n 0000543005 00000 n 0000543027 00000 n 0000543454 00000 n 0000543476 00000 n 0000543936 00000 n 0000543958 00000 n 0000544208 00000 n 0000544229 00000 n 0000544345 00000 n 0000544366 00000 n 0000544457 00000 n 0000544481 00000 n 0000569196 00000 n 0000569238 00000 n 0000569360 00000 n 0000569480 00000 n 0000569600 00000 n 0000569726 00000 n 0000569851 00000 n 0000571089 00000 n 0000571112 00000 n 0000572416 00000 n 0000572439 00000 n 0000573690 00000 n 0000573713 00000 n 0000575000 00000 n 0000575023 00000 n 0000576239 00000 n 0000576262 00000 n 0000577515 00000 n 0000577538 00000 n 0000578674 00000 n 0000578696 00000 n 0000579335 00000 n 0000579357 00000 n 0000579379 00000 n 0000579957 00000 n 0000580012 00000 n 0000580130 00000 n trailer << /Size 196 /ID[<6c2e5160fcdaf71e8fa41e40994ba7f8><6c2e5160fcdaf71e8fa41e40994ba7f8>] >> startxref 173 %%EOF oaklisp-1.3.7/doc/oakman.bib000066400000000000000000000246551332762442600157020ustar00rootroot00000000000000@article ( OAKLANG88, author = {Kevin J. Lang and Barak A. Pearlmutter}, title = {{O}aklisp: an Object-Oriented Dialect of {S}cheme}, publisher = {Kluwer Academic Publishers}, journal = {Lisp and Symbolic Computation}, year = 1988, month = may, volume = 1, number = 1, pages = {39--51}, ) @inproceedings ( CLOOPS, crossref = {OOPSLA86}, author = {Danny Bobrow and others}, title = {CommonLoops: Merging Common Lisp and Object-Oriented Programming}, pages = {17--29}, ) @manual ( FLAVORS2, key = {SYMBOLICS}, title = {Symbolics Release 7 Documentation, Volume 2A}, month = aug, year = 1986, organization = {Symbolics, Inc.}, pages = {353--473}, ) @book ( MVC, author = {Adele J. Goldberg and David Robson}, title = {Smalltalk-80: The Language and its Implementation}, publisher = {Addison-Wesley}, year = 1983 ) @article ( R3RS, author = {Jonathan A. Rees and William Clinger and others}, title = {The Revised$^3$ Report on the Algorithmic Language {S}cheme}, journal = {SIGPLAN Notices}, volume = 21, number = 12, year = 1986, month = dec, pages = {37--79}, ) @comment{Scheme papers and such: http://library.readscheme.org/page1.html } @techreport ( SCHEME-IMPERATIVE, author = {Steele, Guy L., Jr. and Gerald Jay Sussman}, title = {Lambda: the Ultimate Imperative}, institution = {MIT AI Lab}, year = 1976, month = mar, number = {AI Memo 353}, url = {ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-353.pdf}, ) @techreport ( SCHEME-DECLARATIVE, author = {Steele, Jr., Guy Lewis}, title = {Lambda: the Ultimate Declarative}, institution = {MIT AI Lab}, year = 1976, number = {AI Memo 379}, url = {ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-379.pdf}, ) @techreport ( SCHEME-PAP, author = {Steele, Jr., Guy Lewis and Gerald J. Sussman}, title = {The Art of the Interpreter}, institution = {MIT AI Lab}, year = 1978, number = {AI Memo 453}, ) @inproceedings ( SNYDER86, crossref = {OOPSLA86}, author = {Alan Snyder}, title = {Encapsulation and Inheritance in Object-Oriented Programming Languages}, pages = {38--45}, ) @inproceedings ( T, author = {Jonathan A. Rees and Norman I. {Adams, IV.}}, title = {{T}: A Dialect of Lisp or, Lambda: the Ultimate Software Tool}, booktitle = {ACM Symposium on Lisp and Functional Programming}, year = 1982, month = aug ) @book ( T-MAN, author = {Jonathan A. Rees and others}, title = {The {T} Manual}, edition = {Fourth}, year = 1984, publisher = {Yale University Computer Science Department}, ) @inproceedings ( OAK-PAP, crossref = {OOPSLA86}, author = {Kevin J. Lang and Barak A. Pearlmutter}, title = {{O}aklisp: an Object-Oriented {S}cheme with First Class Types}, pages = {30--7}, doi = {10.1145/960112.28701}, ) @techreport ( 3LISP, author = {Brian Cantwell Smith}, title = {Reflection and Semantics in Lisp}, institution = {Center for the Study of Language and Information}, year = 1984, number = {CSLI-84-8}, ) @inproceedings ( FLAVORS1, crossref = {OOPSLA86}, author = {David A. Moon}, title = {Object-Oriented Programming with Flavors}, pages = {1--8}, ) @book ( CLtL, author = {Guy L. {Steele Jr}}, title = {{C}ommon {L}isp: The Language}, publisher = {Digital Press}, year = 1984 ) @article ( MULTILISP85, author = {Robert H. Halstead}, title = {Multilisp: A Language for Concurrent Symbolic Computation}, publisher = {ACM}, journal = {Transactions of Programming Languages and Systems}, year = 1985, month = oct, volume = 7, number = 4, pages = {501--38}, ) @techreport ( ACTORS78, author = {Baker, Jr., Henry G.}, title = {Actor Systems for Real-Time Computation}, number = {TR-197}, institution = {MIT Laboratory for Computer Science}, year = 1978, month = mar ) @phdthesis ( ORBIT, author = {David Kranz}, title = {{O}rbit: An optimizing compiler for {S}cheme}, school = {Yale University}, year = 1988 ) @article ( ORBITa, author = {David Kranz and Richard Kelsey and Jonathan A. Rees and Paul Hudak and James Philbin and Norman I. Adams}, title = {{O}rbit: An Optimizing Compiler for {S}cheme}, journal = {SIGPLAN Notices Special Issue: Proceedings of the SIGPLAN 86 Symposium on Compiler Construction}, volume = 21, number = 7, year = 1986, month = jul ) @article ( BAKER78, author = {H. G. Baker}, title = {List Processing in Real Time on a Serial Computer}, journal = cacm, publisher = {ACM}, volume = 21, number = 4, pages = {280--94}, year = 1978 ) @article ( FENICHEL-YOCHELSON69, author = {Robert R. Fenichel and Jerome C. Yochelson}, title = {A Lisp Garbage Collector for Virtual Memory Computer Systems}, journal = cacm, publisher = {ACM}, volume = 12, number = 11, year = 1969, month = nov ) @article ( CITY-TRASH, title = {Software Helps City Plan Trash Pickup}, journal = {Government Computer News}, volume = 6, number = 18, year = 1987, month = sep, day = 11 ) @incollection ( PEARLMUTTER-LANG90A, crossref = {TALI91}, author = {Barak A. Pearlmutter and Kevin J. Lang}, title = {The Implementation of {O}aklisp}, pages = {189--215}, ) @manual ( ChineNual, author = {Daniel L. Weinreb and David A. Moon}, title = {Lisp Machine Manual}, year = 1981, month = jul, publisher = {MIT AI Lab}, edition = {fourth}, ) @article ( CHENEY70, author = {C. J. Cheney}, title = {A Nonrecursive List Compacting Algorithm}, journal = cacm, publisher = {ACM}, volume = 13, number = 11, pages = {677--8}, year = 1970 ) @incollection ( APPEL90, crossref = {TALI91}, author = {Andrew Appel}, title = {Garbage Collection}, pages = {89--100}, ) @incollection ( DETLEFS90, crossref = {TALI91}, author = {David L. Detlefs}, title = {Concurrent Garbage Collection for {C}++}, pages = {101--34}, note = {Also see thesis of same title, Carnegie Mellon University School of Computer Science technical report CMU-CS-90-119}, ) @article ( PEARLMUTTER99, author = {Barak A. Pearlmutter}, title = {Garbage collection with pointers to individual cells}, journal = cacm, publisher = {ACM}, year = 1996, month = dec, volume = 39, number = 12, pages = {202--6}, Xurl = {http://www.acm.org/cacm/extension/pearlmt.pdf}, doi = {10.1145/272682.272712}, Xnote = {Accepted Spring 1991}, ) @article ( BLEFUSCU81, author = {Danny Cohen}, title = {On Holy Wars and a Plea for Peace}, journal = ieeetc, month = oct, year = 1981, page = {48--54}, ) @book (ABELSON-SUSSMAN-85A, author = {Harold Abelson and Gerald J. Sussman}, title = {Structure and Interpretation of Computer Programs}, edition = {Second}, publisher= {MIT Press}, address = {Cambridge, MA}, year = 1996, ) @comment( ******** Proceedings crossref'ed above ******** ) @proceedings (OOPSLA86, key = {OOPSLA-86}, title = {ACM Conference on Object-Oriented Systems, Programming, Languages and Applications}, booktitle = {ACM Conference on Object-Oriented Systems, Programming, Languages and Applications}, month = sep, year = 1986, issn = {0362-1340}, note = {Special issue of {\em ACM SIGPLAN Notices} 21(11)}, ) @book (TALI91, title = {Topics in Advanced Language Implementation}, booktitle = {Topics in Advanced Language Implementation}, editor = {Peter Lee}, publisher = {MIT Press}, year = 1991, ISBN = {0262121514}, ) @Misc{OAKLISP-IMPLEMENTATION, author = {Barak A. Pearlmutter and Kevin J. Lang}, title = {The {CMU} Implementation of {O}aklisp}, howpublished = {Released under the GPL, available via ftp}, year = 1986, note = {Most recent release: 1992, version 1.2. Accompanied by extensive language and implementation manuals. Ports were made for Unix (most versions), AmigaDOS, MacOS, MS-DOS, Microsoft Windows, OS/2, CrayOS, and others. Influenced Sun's Java and Apple's Dylan efforts.}, Xnote = {26,000 lines of code}, } @Misc{CBP-SIMULATOR, author = {Barak A. Pearlmutter}, title = {The {CBP} neural network simulator}, howpublished = {Released under the GPL, available via ftp}, year = 1987, note = {Flexible and powerful NN simulator. Facilities for weight sharing, backpropagation, mean-field Boltzmann machines, recurrent backpropagation, continuous time backpropagation through time, learnable time constants. Advanced stochastic optimization features. Interfaces to a number of graphical network display programs. User community of a few dozen.}, } @Misc{BAPLIBNN-SIMULATOR, author = {Barak A. Pearlmutter}, title = {Subroutine library libnnembed}, howpublished = {Released under the GPL}, year = 1993, note = {Embeddable, flexible, efficient, convenient, portable NN simulator. Small footprint. Facilities for convolutional networks of various sorts, optimization via gradient methods or EM when applicable, able to build both modular architectures and hierarchical structures. Carefully modularized to avoid the problems that beset previous NN simulation libraries.}, } @Misc{LINUX-GC, author = {Barak A. Pearlmutter}, title = {Garbage collector for the Linux kernel}, howpublished = {Released under the GPL}, year = 1995, note = {A special purpose garbage collector, part of Linux 2.0.}, } @comment{ Look these up: Slade, Stephen. The T programming language : a dialect of LISP / Stephen Slade. -- Englewood Cliffs, NJ : Prentice-Hall, c1987. Pointer swizzling: (address translation) at page fault time (Comp. Arch. News, June 1991) } oaklisp-1.3.7/doc/summary/000077500000000000000000000000001332762442600154375ustar00rootroot00000000000000oaklisp-1.3.7/doc/summary/OaklispSummary.tex000066400000000000000000000366731332762442600211600ustar00rootroot00000000000000\documentclass[12pt]{article} \usepackage[letterpaper,margin=.75in]{geometry} \usepackage{alltt} \addtolength{\parskip}{\baselineskip} % causes a blank line between paragraphs \setlength{\parindent}{0in} \usepackage{fancyhdr} \pagestyle{fancy} \renewcommand{\headrulewidth}{0in} \rfoot{\small Page \thepage\ of \pageref{lastpage}} \cfoot{} \lfoot{\small rev. 12/26/14} \begin{document} \centerline{\Huge Oaklisp Summary} \centerline{Blake McBride (blake@mcbride.name)} \medskip {\large \bfseries Startup:} \smallskip \begin{verbatim} oaklisp [--world ] [--dump ] [-G] where: --world indicates what world to load. Default is oakworld.bin that comes with the system --dump provides a file name where a new world will be dumped when the system exits -G option to perform a GC prior to dumping a world \end{verbatim} {\large \bfseries Exiting the system:} \begin{verbatim} (exit) Use ^D to exit error states \end{verbatim} {\large \bfseries File types:} \smallskip \hspace{.75in} \hbox{\begin{tabular}{|l|l|}\hline File ending & Description \\\hline oak & Oaklisp source file \\ &\\ oa & compiled Oaklisp file (fasl) \\ &\\ bin & Oaklisp world --- binary representation of\\ & an entire Oaklisp system representing all \\ & objects in the running environment.\\\hline \end{tabular}} \smallskip {\large \bfseries Loading and compiling files:} \smallskip \begin{verbatim} (load "myfile") ; will load "myfile.oa" or "myfile.oak" (compile-file #*current-locale "myfile") ; compiles myfile.oak to myfile.oa \end{verbatim} \newpage {\Large \bfseries Data Types} Use {\ttfamily (get-type x)} to get the type of an item. \hspace{.75in} \hbox{\begin{tabular}{|l|l|l|}\hline Type & Comment & Example \\\hline null-type & null list \& false & nil or \#f or {\ttfamily \symbol{13}}() \\ truths & true & t or \#t \\ &&\\ fixnum & decimal & 48 \\ \ \ \& & binary & \#b1011 \\ bignum & binary & \#2r1011 \\ & octal & \#o755 \\ & hex & \#xD5 \\ &&\\ fraction & decimal & 2/3 \\ & hex & \#xDE/FF \\ & floats are converted to fraction & 3.141 \\ &&\\ character & letter `M' & \#\verb+\+M \\ & & \#\verb+\+Space \\ & & \#\verb+\+Newline \\ & & \#\verb+\+Backspace \\ & & \#\verb+\+Tab \\ & & \#\verb+\+Return \\ & & \#\verb+\+Page \\ &&\\ symbol & case insensitive (up-cased) & {\ttfamily \symbol{13}}symb \\ & case sensitive & {\ttfamily \symbol{13}}$\mid$symb$\mid$ \\ & embedded `(' & {\ttfamily \symbol{13}}sy\verb+\+(mb \\ &&\\ string & with embedded \verb+"+ & ``hello\verb+\"+ there'' \\ &&\\ list && {\ttfamily \symbol{13}}(hello there) \\ &&\\ simple-vector && \#(3 4 hello) \\ &&\\ type & root of all types & type \\ & root of all objects & object \\ \hline \end{tabular}} \newpage {\Large \bfseries List Operations} \bigskip \hbox{\begin{tabular}{|l|l|l|l|l|l|}\hline Type & Comment & Sp & D & Example & Result \\\hline car & first element & fast & no & (car {\ttfamily \symbol{13}}(A B C)) & A \\ cdr & rest of list & fast & no & (cdr {\ttfamily \symbol{13}}(A B C)) & (B C) \\ c????r & shorthand for & fast & no & & \\ & multiple car \& cdr's & & & & \\ & & & & & \\ cons & add a list node & fast & no & (cons {\ttfamily \symbol{13}}A {\ttfamily \symbol{13}}(B C)) & (A B C) \\ list & create a list & fast & no & (list {\ttfamily \symbol{13}}A {\ttfamily \symbol{13}}B {\ttfamily \symbol{13}}C) & (A B C) \\ append & append lists & slow & no & (append {\ttfamily \symbol{13}}(A B) {\ttfamily \symbol{13}}(D) {\ttfamily \symbol{13}}(G H)) & (A B D G H) \\ length & & slow & no & (length {\ttfamily \symbol{13}}(A B C)) & 3 \\ nth & & slow & no & (nth {\ttfamily \symbol{13}}(A B C) 1) & B \\ first & same as (nth 0 x) & & & & \\ second & same as (nth 1 x) & & & & \\ third & same as (nth 2 x) & & & & \\ etc. & & & & & \\ & & & & & \\ last & & slow & no & (last {\ttfamily \symbol{13}}(A B C)) & (C) \\ & & & & & \\ & Given: & & & & \\ & (setq lst {\ttfamily \symbol{13}}(A B C)) & & & & \\ & replace car cell & fast & yes & (set! (car lst) {\ttfamily \symbol{13}}X) & (X B C) \\ & replace cdr cell & fast & yes & (set! (cdr lst) {\ttfamily \symbol{13}}X) & (A . X) \\ \hline \end{tabular}} \bigskip \begin{description} \item{Sp} = Speed \item{D} = Destructive \end{description} \newpage {\Large \bfseries Comments} \smallskip Semi-colon `;' introduces a comment. Comments extend from the semi-colon to the end of the line. \bigskip {\Large \bfseries Evaluation and Quotes} \smallskip Lists are recursively evaluated. The first element of a list is the function and the remainder are arguments to the function. For example: \begin{verbatim} (func arg1 arg2 ...) \end{verbatim} Quoting stops evaluation, so \begin{verbatim} (quote (abc def ghi)) \end{verbatim} would not attempt to evaluate \emph{abc}, \emph{def}, or \emph{ghi}. The ``{\ttfamily \symbol{13}}'' symbol acts as a shorthand for \emph{quote}, so the following is equivelent to the previous statement. \hspace*{.3in}{\ttfamily \symbol{13}}\verb+(abc def ghi)+ \bigskip {\Large \bfseries Predicates} \bigskip \hbox{\begin{tabular}{|l|l|}\hline function & Returns \emph{NIL}, or \emph{\#T} for \\\hline null? & null \\ symbol? & symbols \\ atom? & non-list items \\ list? & list items (including \emph{NIL}) \\ number? & all numbers \\ integer? & integers \\ string? & strings \\ vector? & vectors \\ eq? & same object \\ equal? & structurally similar objects \\ & or same number\\ \hline \end{tabular}} \newpage {\Large \bfseries Logical Operators} \bigskip \hbox{\begin{tabular}{|l|l|l|l|}\hline function & Returns & Example & Comment \\\hline not & nil or \#T & (not exp) & Logical inverse \\ and & last exp or nil & (and exp1 exp2 ...) & Stops evalution on first null expression \\ or & first non-nil exp & (or exp1 exp2 ...) & Stops evalution on first non-null expression \\ \hline \end{tabular}} \emph{and} and \emph{or} can be used as conditionals too. For example: \begin{verbatim} (and exp1 exp2 exp3) \end{verbatim} is the same as \begin{verbatim} (if exp1 (if exp2 exp3)) \end{verbatim} \bigskip {\Large \bfseries Block} \bigskip \parbox[t]{3.4in}{ (block\\ \hspace*{2em} exp1\\ \hspace*{2em} exp2\\ \hspace*{2em} ...) }\parbox[t]{3.5in}{ Execute each expression and return the value of the last expression. } \bigskip {\Large \bfseries Local Variables} \bigskip \parbox[t]{3.4in}{ (let ((var1 val1) ; initialize \emph{var1} to \emph{val1}\\ \hspace*{2.5em}(var2 nil) ; initialize \emph{var2} to \emph{nil}\\ \hspace*{2.5em}...)\\ \hspace*{4em} exp1\\ \hspace*{4em} exp2\\ \hspace*{4em} ...) }\parbox[t]{3.5in}{ \emph{LET:}\ \ Creates local variables and executes the expressions in their context. Returns the value of the last expression. } \parbox[t]{3.4in}{ (let* (vars) exp1 exp2 ...) }\parbox[t]{3.5in}{ \emph{LET*:}\ \ Sames as \emph{LET} except the variables are assigned sequentially. Previously defined variables may be used in subsequent variable initializations. } \newpage {\Large \bfseries Defining Functions} \bigskip \parbox[t]{3.4in}{ (define (function-name arg1 arg2 arg3 ...)\\ \hspace*{4em} exp1\\ \hspace*{4em} exp2\\ \hspace*{4em} ...)\\ \\ (define function-name\\ \hspace*{4em}(lambda (arg1 arg2 arg3 ...)\\ \hspace*{4em} exp1\\ \hspace*{4em} exp2\\ \hspace*{4em} ...)) }\parbox[t]{3.5in}{ \emph{DEFINE:}\ \ Define function named \emph{function-name} with specified arguments, and run the expressions in that context. } \bigskip {\Large \bfseries Conditionals} \smallskip In Oaklisp, conditions are considered true if they are any value other than \emph{NIL} or \emph{\#F}. Therefore, \emph{NIL} and \emph{\#F} are considered as \emph{false}, and all other values are treated as \emph{true} conditions. \parbox[t]{3.4in}{ (if test\\ \hspace*{2em} exp1\\ \hspace*{2em} [exp2]) }\parbox[t]{3.5in}{ \emph{IF:}\ \ If \emph{test} expression is \emph{true}, return \emph{exp1}. \emph{exp2} is optional. If \emph{test} is \emph{false}, return \emph{exp2} or \emph{undefined-value}. } \parbox[t]{3.4in}{ (cond\\ \hspace*{2em} (test1 exp1 exp2 ...)\\ \hspace*{2em} (test2 exp1 exp2 ..)\\ \hspace*{2em} ...\\ \hspace*{2em} (else exp1 exp2 ...)) }\parbox[t]{3.5in}{ \emph{COND:}\ \ Evalute each \emph{testN} until one is \emph{true}. If a \emph{true} test is found, its expressions are evaluated and the result of the last one is returned. The \emph{else} test is always \emph{true}. } \bigskip {\Large \bfseries Math Predicates} \bigskip \hbox{\begin{tabular}{|l|l|}\hline Function & Description \\\hline (number? n) & Is \emph{n} a number \\ (zero? n) & \\ (odd? n) & \\ (even? n) & \\ (negative? n) & \\ (positive? n) & \\ (= a b) & \\ (!= a b) & \\ (\verb+<+ a b) & \\ (\verb+>+ a b) & \\ (\verb+<+= a b) & \\ (\verb+>+= a b) & \\ \hline \end{tabular}} \newpage {\Large \bfseries Numeric Operators} \bigskip \hbox{\begin{tabular}{|l|l|}\hline Function & Description \\\hline + - * / & Math functions \\ (abs n) & Absolute value \\ (1+ n) & \\ (quotient a b) & integers only \\ (minus n) & \\ (floor n) & \\ (ceiling n) & \\ (round n) & \\ (truncate n) & \\ (modulo a b) & \\ (remainder a b) & \\ (expt n p) & \\ (max a b c ...) & \\ (min a b c ...) & \\ (numerator f) & \\ (denominator f) & \\ \hline \end{tabular}} \bigskip {\Large \bfseries String Predicates} \bigskip \hbox{\begin{tabular}{|l|l|}\hline Function & Description \\\hline (string? s) & is \emph{s} a string \\ (= a b) & \\ (equal? a b) & \\ (!= a b) & \\ (\verb+<+ a b) & \\ (\verb+>+ a b) & \\ (\verb+<+= a b) & \\ (\verb+>+= a b) & \\ \hline \end{tabular}} \bigskip {\Large \bfseries String Operators} \bigskip \hbox{\begin{tabular}{|l|l|}\hline Function & Description \\\hline (length s) & \\ (nth s i) & 0 origin\\ (upcase s) &\\ (downcase s)&\\ (reverse s)&\\ (append s1 s2)&return an appended copy\\ (copy s)&\\ (subseq s beg len)&\\ \hline \end{tabular}} \newpage {\Large \bfseries Macros} \smallskip \begin{alltt} (define-syntax (add a b) \symbol{18}(+ ,a ,b)) (gensym \symbol{13}tmp) \end{alltt} {\Large \bfseries Named let} \smallskip \begin{alltt} (let loop ((v 0)) (if (!= v 10) (block (print v standard-output) (newline) (loop (1+ v))))) \end{alltt} {\Large \bfseries Printing} \smallskip \begin{alltt} (print x standard-output) (newline) (format ...) = #T = standard-output #F = return a string \end{alltt} \newpage {\Large \bfseries Classes and Types} In classical object-oriented terminology, the following terms apply: \bigskip \hbox{\begin{tabular}{|l|l|}\hline Name & Description \\\hline Class & describes the structure and functionality associaed with instances of it \\ & (e.g.\ instance variables and instance methods) \\ Meta Class & describes the structure and functionality of the class object \\ & (e.g.\ class variables and class methods) \\ Instance & a unique instance of a class \\ Object & a class, metaclass, or instance \\ \hline \end{tabular}} In Oaklisp, classes and types are the same thing. So, every type in Oaklisp, such as list, symbol, string, number, fraction, etc., are all classes. Also, all types and instances are objects. In Oaklisp, all types and objects are first-class, this means they can be passed to functions, assigned to variables, etc.. They are all treated the same. Oaklisp has two root classes/types named \emph{Object} and \emph{Type}. \emph{Type} is the root of all types, and \emph{Object} is the root of all objects. For purposes of this and following examples, the following naming scheme shall be used: \bigskip \hbox{\begin{tabular}{|l|l|}\hline Name & Description \\\hline Type & the Type type \\ type & a type \\ Object & the Object type \\ object & an object \\ iv* & instance variable \\ cv* & class variable \\ i* & an instance object \\ im* & instance method \\ cm* & class method \\ \hline \end{tabular}} \bigskip {\large \bfseries Classes -- Simple} By ``simple'' we mean without meta classes. \textbf{Creating a type or class:} Format: \begin{alltt} (define (make Type )) \end{alltt} \newpage Example: \begin{alltt} (define MyClass (make Type \symbol{13}(iv1 iv2) (list Object))) \end{alltt} \textbf{Creating an instance of a type:} Format: \begin{alltt} (make ) \end{alltt} Example: \begin{alltt} (define i1 (make MyClass)) \end{alltt} \textbf{Inspecting an object:} Format: \begin{alltt} (describe ) \end{alltt} Example: \begin{alltt} (describe MyClass) (describe i1) \end{alltt} \textbf{Creating instance methods:} Format: \begin{alltt} (define-instance operation) (add-method ( ( ) self ) ...) \end{alltt} \newpage Example: \begin{alltt} (define-instance imSet-iv1 operation) (add-method (imSet-iv1 (MyClass iv1) self a) (set! iv1 a)) (define-instance imGet-iv1 operation) (add-method (imGet-iv1 (MyClass iv1) self) iv1) (imSet-iv1 i1 33) (imGet-iv1 i1) \end{alltt} \textbf{Instance constructor / initialization:} Format: \begin{alltt} (add-method (initialize ( ) self ) ... self) \end{alltt} Example: \begin{alltt} (add-method (initialize (MyClass iv1 iv2) self arg1) (set! iv1 arg1) (set! iv2 44) self) (define i2 (make MyClass 88)) ; in this case ; i2->iv1 would be 88 ; i2->iv2 would be 44 \end{alltt} \newpage {\large \bfseries Classes -- Complex} By ``complex'' we mean with the addition of meta classes. This gives us class variables and class methods. \textbf{Creating a type or class:} Creating a type with a meta-type involves the creation of two types; one the meta type and the other the type. The type created must be an instance of the meta type. Adding initializers and instance methods are as before. The only difference is we now have the ability to define and use class methods and variables. Those will be shown. Format: \begin{alltt} (define (make Type )) (define (make )) \end{alltt} Example: \begin{alltt} (define metaMyClass2 (make Type \symbol{13}(cv1 cv2) (list Type))) (define MyClass2 (make metaMyClass2 \symbol{13}(iv1 iv2) (list Object))) \end{alltt} \textbf{Class methods:} Format: \begin{alltt} (define-instance operation) (add-method ( ( ) self ) ...) \end{alltt} \newpage Example: \begin{alltt} (define-instance cmSet-cv1 operation) (add-method (cmSet-cv1 (metaMyClass2 cv1) self a) (set! cv1 a)) (define-instance cmGet-cv1 operation) (add-method (cmGet-cv1 (metaMyClass2 cv1) self) cv1) (cmSet-cv1 MyClass2 33) (cmGet-cv1 MyClass2) (describe MyClass2) ; to see the contents of the class \end{alltt} \label{lastpage} \end{document} oaklisp-1.3.7/m4/000077500000000000000000000000001332762442600135155ustar00rootroot00000000000000oaklisp-1.3.7/m4/ax_append_flag.m4000066400000000000000000000053041332762442600167110ustar00rootroot00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_append_flag.html # =========================================================================== # # SYNOPSIS # # AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) # # DESCRIPTION # # FLAG is appended to the FLAGS-VARIABLE shell variable, with a space # added in between. # # If FLAGS-VARIABLE is not specified, the current language's flags (e.g. # CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains # FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly # FLAG. # # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2011 Maarten Bosmans # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 2 AC_DEFUN([AX_APPEND_FLAG], [AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl AS_VAR_SET_IF(FLAGS, [case " AS_VAR_GET(FLAGS) " in *" $1 "*) AC_RUN_LOG([: FLAGS already contains $1]) ;; *) AC_RUN_LOG([: FLAGS="$FLAGS $1"]) AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"]) ;; esac], [AS_VAR_SET(FLAGS,["$1"])]) AS_VAR_POPDEF([FLAGS])dnl ])dnl AX_APPEND_FLAG oaklisp-1.3.7/m4/ax_c_long_long.m4000066400000000000000000000021441332762442600167300ustar00rootroot00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_c_long_long.html # =========================================================================== # # SYNOPSIS # # AX_C_LONG_LONG # # DESCRIPTION # # Provides a test for the existence of the long long int type and defines # HAVE_LONG_LONG if it is found. # # LICENSE # # Copyright (c) 2008 Caolan McNamara # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 5 AU_ALIAS([AC_C_LONG_LONG], [AX_C_LONG_LONG]) AC_DEFUN([AX_C_LONG_LONG], [AC_CACHE_CHECK(for long long int, ac_cv_c_long_long, [if test "$GCC" = yes; then ac_cv_c_long_long=yes else AC_TRY_COMPILE(,[long long int i;], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) fi]) if test $ac_cv_c_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG, 1, [compiler understands long long]) fi ]) oaklisp-1.3.7/m4/ax_cflags_warn_all.m4000066400000000000000000000117011332762442600175650ustar00rootroot00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html # =========================================================================== # # SYNOPSIS # # AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # # DESCRIPTION # # Try to find a compiler option that enables most reasonable warnings. # # For the GNU compiler it will be -Wall (and -ansi -pedantic) The result # is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. # # Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, # HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and # Intel compilers. For a given compiler, the Fortran flags are much more # experimental than their C equivalents. # # - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS # - $2 add-value-if-not-found : nothing # - $3 action-if-found : add value to shellvariable # - $4 action-if-not-found : nothing # # NOTE: These macros depend on AX_APPEND_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2010 Rhys Ulerich # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 15 AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], VAR,[VAR="no, unknown" ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-warn all % -warn all" dnl Intel "-pedantic % -Wall" dnl GCC "-xstrconst % -v" dnl Solaris C "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX "-ansi -ansiE % -fullwarn" dnl IRIX "+ESlit % +w1" dnl HP-UX C "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) "-h conform % -h msglevel 2" dnl Cray C (Unicos) # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" ]) AS_VAR_POPDEF([FLAGS])dnl AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; esac AS_VAR_POPDEF([VAR])dnl ])dnl AX_FLAGS_WARN_ALL dnl implementation tactics: dnl the for-argument contains a list of options. The first part of dnl these does only exist to detect the compiler - usually it is dnl a global option to enable -ansi or -extrawarnings. All other dnl compilers will fail about it. That was needed since a lot of dnl compilers will give false positives for some option-syntax dnl like -Woption or -Xoption as they think of it is a pass-through dnl to later compile stages or something. The "%" is used as a dnl delimiter. A non-option comment can be given after "%%" marks dnl which will be shown but not added to the respective C/CXXFLAGS. AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([C]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C]) ]) AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([C++]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C++]) ]) AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([Fortran]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([Fortran]) ]) oaklisp-1.3.7/m4/ax_require_defined.m4000066400000000000000000000023011332762442600175750ustar00rootroot00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_require_defined.html # =========================================================================== # # SYNOPSIS # # AX_REQUIRE_DEFINED(MACRO) # # DESCRIPTION # # AX_REQUIRE_DEFINED is a simple helper for making sure other macros have # been defined and thus are available for use. This avoids random issues # where a macro isn't expanded. Instead the configure script emits a # non-fatal: # # ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found # # It's like AC_REQUIRE except it doesn't expand the required macro. # # Here's an example: # # AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) # # LICENSE # # Copyright (c) 2014 Mike Frysinger # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 1 AC_DEFUN([AX_REQUIRE_DEFINED], [dnl m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) ])dnl AX_REQUIRE_DEFINED oaklisp-1.3.7/man/000077500000000000000000000000001332762442600137505ustar00rootroot00000000000000oaklisp-1.3.7/man/Makefile.am000066400000000000000000000016111332762442600160030ustar00rootroot00000000000000# This file is part of Oaklisp. # # 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. # # The GNU GPL is available at http://www.gnu.org/licenses/gpl.html # or from the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA man_MANS = man1/oaklisp.1 man1/oaklisp.1: man1/oaklisp.1.in $(SED) \ -e 's:[@]pkglibdir[@]:$(pkglibdir):g' \ -e 's:[@]pdfdir[@]:$(pdfdir):g' \ <$< >$@ EXTRA_DIST = $(man_MANS) CLEANFILES = $(man_MANS) oaklisp-1.3.7/man/man1/000077500000000000000000000000001332762442600146045ustar00rootroot00000000000000oaklisp-1.3.7/man/man1/oaklisp.1.in000066400000000000000000000143341332762442600167420ustar00rootroot00000000000000.TH OAKLISP 1 .de URL \\$2 \(laURL: \\$1 \(ra\\$3 .. .if \n[.g] .mso www.tmac .SH NAME oaklisp \- An implementation of the Oaklisp object-oriented Scheme dialect \" This file is part of Oaklisp. \" \" 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. \" \" The GNU GPL is available at http://www.gnu.org/licenses/gpl.html \" or from the Free Software Foundation, 59 Temple Place - Suite 330, \" Boston, MA 02111-1307, USA .SH SYNOPSIS .B oaklisp [ emulator-options ... [ \-\- oaklisp-options ... ]] .SH DESCRIPTION .I Oaklisp is an object-oriented dialect of Scheme. This implementation is quite portable, compiling to a virtual machine which is emulated by a C program. Nevertheless, reasonable speed is achieved through a variety of sophisticated techniques. .SH OPTIONS Options are all long, and it makes no difference if you start them with one or two dashes (`-'). All options can be abbreviated to a unique prefix. There are two sorts of options: for the bytecode emulator, and for the Oaklisp world. You must use a -- to separate them. .SS EMULATOR OPTIONS .TP .B \-\-help Show summary of emulator options and exit .TP .B \-\-version Print version of emulator and exit .TP .B \-\-world file file is world to load .TP .B \-\-dump file dump world to file upon exit .TP .B \-\-d file synonym for \-\-dump .TP .B \-\-dump-base b 0=ascii, 2=binary; default=2 .TP .B \-\-predump-gc b 0=no, 1=yes; default=1 .BR .TP .B \-\-size-heap n n is in kilo-refs, default 128 .TP .B \-\-size-val-stk n value stack buffer, n is in refs .TP .B \-\-size-cxt-stk n context stack buffer, n is in refs .TP .B \-\-size-seg-max n maximum flushed segment len, n is in refs .BR .TP .B \-\-trace-gc v 0=quiet, 3=very detailed; default=0 .TP .B \-\-verbose-gc v synonym for \-\-trace-gc .TP .B \-\-trace-traps .TP .B \-\-trace-files trace filesystem operations .SS UNOPTIMIZED EMULATOR OPTIONS .TP .B \-\-trace-segs trace stack segment writes/reads .TP .B \-\-trace-valcon print entire value stack at each instr .TP .B \-\-trace-cxtcon print entire context stack at each instr .TP .B \-\-trace-stks print the size of the stacks at each instr .TP .B \-\-trace-instructions trace each bytecode executed .TP .B \-\-trace-methods trace each method lookup .TP .B \-\-trace-mcache trace method cache .SS OAKLISP OPTIONS .TP .B \-\-help Show summary of Oaklisp options .TP .B \-\-eval expr Evaluate Oaklisp expression, which is one arg so be sure to quote for shell. .TP .B \-\-load file Load a file. .TP .B \-\-compile file Compile file.oak yielding file.oa .TP .B \-\-locale x Switch to locale x, eg system-locale (default), compiler-locale, scheme-locale (for RnRS compatibility). .TP .B \-\-exit Exit upon processing this option. .SH EXAMPLES This will compile the file myfile.oak in the scheme locale and then leave the user in a read-eval-print loop in the scheme locale. .B oaklisp \-\- \-\-locale scheme\-locale \-\-compile myfile .SH ENVIRONMENT The environment variable OAKWORLD will override the default compiled into the executable, but itself can be overridden on the command line. .SH FILES @pkglibdir@/oakworld.bin holds the world image. It is portable between machines of the same endianity. The location can vary depending upon installation-time decisions. .SH BUGS Floating point numbers are not implemented. Rationals can be used to make up for this lack because rationals can be told to print in floating point format and floating point format input can be made to read as rational numbers. (There are a couple floating point implementations, but they are not merged into the distributed release.) In contrast to the error handling system, which is Industrial Strength, the debugger is virtually nonexistent. There is no foreign function interface for loading and calling C routines from a running Oaklisp. (Again, there are a couple implementations of foreign function interfaces which are not merged in.) The memory format does not support uninterpreted "blobs". Porting the system to 64-bit machines has not been done, and would be quite difficult. POSIX threads in the emulator never got quite finished. Bug reports and enhancements can be filed on the .URL https://github.com/barak/oaklisp "github issue tracker" . .SH REFERENCES The programs are documented more fully in the language and implementation manuals lang.pdf and lim.pdf, along with OaklispSummary.pdf, whose source is included with the distribution, and installed in @pdfdir@/. The Oaklisp home page is transitioning from .URL http://www.bcl.hamilton.ie/~barak/oaklisp/ "its old location" to .URL https://oaklisp.alioth.debian.org/ alioth and .URL https://github.com/barak/oaklisp github . .I The Implementation of Oaklisp is a chapter in .I Topics in Advanced Language Implementation edited by Peter Lee, pp 189-215, MIT Press, 1991. .I Oaklisp: an Object-Oriented Dialect of Scheme appears in the journal .I Lisp and Symbolic Computation 1(1):39-51, published by Klewer Associates, May 1988. .I Oaklisp: an Object-Oriented Scheme with First Class Types appeared in proceedings of the ACM conference OOPSLA-86, pp30-37, published as a special issue of .I SIGPLAN Notices. .I Garbage collection with pointers to single cells, an article on the Oaklisp garbage collector, appeared in .I Communications of the ACM, 39(12):202-206 (online edition), December 1996. .I The Revised^n Report on Scheme is a useful piece of documentation, and is widely available online. .SH DISTRIBUTION The .I Oaklisp copyright belongs to its authors. It is distributed under the .I GNU General Public License, a copy of which is included in the source distribution in the file .I COPYING. For further information or to make alternate arrangements please contact the authors, who are surprisingly reasonable people. .SH AUTHOR Oaklisp was originally designed, implemented, and documented by Barak A. Pearlmutter and Kevin J. Lang. oaklisp-1.3.7/prebuilt/000077500000000000000000000000001332762442600150235ustar00rootroot00000000000000oaklisp-1.3.7/prebuilt/doc/000077500000000000000000000000001332762442600155705ustar00rootroot00000000000000oaklisp-1.3.7/prebuilt/doc/lang/000077500000000000000000000000001332762442600165115ustar00rootroot00000000000000oaklisp-1.3.7/prebuilt/doc/lang/lang.pdf000066400000000000000000007063351332762442600201430ustar00rootroot00000000000000%PDF-1.5 % 3 0 obj << /Length 380 /Filter /FlateDecode >> stream xmOo fk) `ȭWڴU{X@Xq r U*'@y'rVTu 5)i L*R߬Z_5#cHSZ'j&/P`6L}&c)BÔTh6qz6H>*" 9BIQȵ*qWgkv=N($0.X*Tn@sF3f%׺NDI8ƣ9ez59dfm *옻nlC ζS"ޢ?|r)3p?e@\K(7.!蓖RPJ 3J3,/vDS'!ar"!Pu$&wj/ endstream endobj 9 0 obj << /Length 185 /Filter /FlateDecode >> stream xU?0w>ō4?(FtpUA4gD_^޽{ K!s)%  tL ,]S;7TR!GDJC4v#"0t,U </fHU=Ju87u۳*mK*x5-JhmۚoF5 endstream endobj 13 0 obj << /Length 791 /Filter /FlateDecode >> stream xMs0E蘶L:uө^6qL8w]/]#@'wt(gC]+_ @ ) :Pa7h<u֥+G.5M8&hn=ݧCz>$T~s{;OCF\spcj Ǒ+\wUoHJdE* x>8UNiAC7 i[ +rŠ XhlfaCc3 aUTҗ܃{##@E3Y&B YpM!'V+U|FᷕɆ݉tb{7)\B I7iox`d{"N=n(nG[#V @ 2<e?xPu7+6h[d sٶC;x> ֜ϵ" }dulsfVb& gSg#|*f %6KL+yCՅZwxٷ2W_WTq1R{Peyz&/b8bkM4[t蚣#T$մah4cHJ=Λ q$mjK iaP `f: Xi:uq_;"] endstream endobj 17 0 obj << /Length 886 /Filter /FlateDecode >> stream xr0y .uNn{t`5eڼ}8:1̧ɧ+R,,WE1υ\,ᢑb pCF?_?]!<ybĐ$0+]4*oACYi:aԼӻHCw[q^f2.PczM yjQT]mˢ{l'$ T\ONsL#fWQ}&vTY5gYrQK*Qd .<% qh6]-[^Aed$E̷2ڶb1 1 hqgˢ"(2!zmy`@lכ\0/:s=-nf3v-bzJxN UE֥mhN}{783յ'=~uB zzS="&_:^ }Ki@" m`Ӟ١?#UJWqtɗfs5Ԑ ^b=BtQ$J7TBm#&\všu`W坥u*]GH Ă&:k];\E> endstream endobj 20 0 obj << /Length 242 /Filter /FlateDecode >> stream x=K1~EʤHn2lx vsͭ5+qߕ(jgUax EvqLk! G9 ,F! q U^t~qyZ!n W(SJ>TowF endstream endobj 23 0 obj << /Length 2343 /Filter /FlateDecode >> stream xuX[o6~ϯzul?v[d}ʌۚߏۓt򐈦(J"x%YXE{|aefs\&;< ?CVe?ieZ7ta iŒ< %Cc82H[oMɽsc{jWܵ"Yq~~9>΃~@ռn.O40UqU!* >uͧb8 Ňv>-p>S}#BeavUʇ{Ix+=јo;_tjkêKnݲwMK%|FD0G34nM(! RMh:VJQw~ aGyHHyRrh{<>}la)䎿zz⠵8Gxxs5et=36XvJᙉ!2h[)ލ7ژ4#'%G1pLs$ 6ּ8 0)୐m`a2H/gOw^7-SͪC8';t*}/_hQٌ?Ui{sXΫ,9ȃ}^otpOZHG:QGA^AYhP0*wDGOGrcǂ?),#Y2Gv؈`Y 2j/}.Ax1EwkT;SU_m=G̜͠Z,l>#>\K~1E^à>蠞iWuXƒoV90>,ijOvq L7W)p~rlBg# F$jAuӶ$¨1tҔKV:)'_>N4GLp/+|cZWy$Zo3`5/n,\pd@f aLkz[`o?w1 #v j 2:8c &w%[d2͑D8H%<ÓM{t']9? ғxѩedļ-JU^j".?ěgѢTzDp1.CشE7nIQL=-p(n wEikRi=wSKq_~Fe E>$17נ|rRG-=bz2M*}t)Cg_r"0ѲAk2nTϢ"P^v19)d/)\ۆY_[A$5kz!y"kF!𗊙ŹN(0TK&#XZY*ښJy;Ԟ\iٞwn2}UCA꟦>Ky68؄>Щ߮Hhy"LU9Nug({G;poPߺ47a)y "FnnF {{>:6(Ny_>^5P`=›j0^YtȎJÁ# zВ{>}j\KSASi/:b*c5j [B鍦+y.#U:hG%]+>)>mNVE e>dِ:2R8NTfyȍ%,f^Y Cccш}>(k<5cRbM gtWlo%QyTFm0f|^7+^Da{KP @mY޽vnkܘsB1 ,y EI *Hn]{Q{E0K";W~։8wYo=KvWb_QvQ#,j(߼7yy0Zeq2g28Fku[W^Đ[FaTkdI"0x ˇF dyXEW&1 yMhf!N#;Z~Vjc\?uL bhƫ%5l7T`uK'&^#U3qQnόk_ߺh7|pƊ &G kƣĮ.tqdq)~hi)/20,cnօT%> stream x}ZKϯ͜C|涮Vr+"|Iis 7Ǘ}! "IE, N/7|Ļ>^3]zt)'^94sx>G}uyjS dlʡh l(b7&sx1cUQvUe'OϯIYx!8؏Tػ.<ũWNSY]j̦~70JG:?8FU͊$UhЃw׫H105ù{@K6m0!${QmS:dVvxfl*LvrJi0\J4JWQ$0s9J7T$<5~˺ROf=OÔҺOk y I+RoMeV&U9BDRIR(]j%/$8ޭg>.)d=W֎[Sw립?Z!>N ؙ.a2l!bV QA)Ԝ 0=/m+Z/>`.0p/OU5524&Ӱ5㬚`"/+"T=Fѷ!$+  BvVq2}+#qV8%@JpG'LL^̲&$pdqy،cM{XijPʈm~&jt?b$[],@;IԦ.F]<~kDP __N]'.8"Ԃ]"o[9t sAW[` xm kݬ9Z^ى)<}bqS] #<zQXadF[yQ`4=H*u(rGWZ`8./&Nn"郰ly.kt$B*(LJa Vlbb){ay*.(a}Mbe]"oXu{ΓGA,t~=@JFy2`(R3Rpq^W^V}!.aVNLRaI;q_U NƹQVAD:y\nQ8VPvdt{i$^|J@֕>.v-j9X "." P#5ĭƛW+;u"y[RbfkzDKZ|.c㪡1ij31W:wn %HXІ%4]9aV! :TCs@uDR9>IH[hqS\r^)Qx}V+=^K-OM"\m{ y]^% -rI oWV$5im4WA,]괴k2N iZP{êRJP*e-J)XHeKc.9;sa'ŒS`qa(%{swH7uFcnjT4$\5DܤI x,Dm".?hk9{Xv# jE.'MɴV!Kݰ#Ur`q4K)L=qѸ3$Xd,~v "uUŞ'2!Yǒ8X2$ 3v0R(:\k3b@^shq}1&)63 WsfnU:4]:p&Y6%fBU,&48ىa3\.LEUt+Vjc.m[vpґKH\V+>GD(ɖPL1nzk9KlBUH2Zsjfe9n!5}_IL͎JI YIg-X.vCCD*L]BIjF QJTlho ʡVul]Y.:NU *[ϖ荲f\j &fKl~l],F_2Z<+K/}׊]1M.>LƸ %q~,`Vzo`W)Ky=l Qߪ<* Én"~Heb܃FXD=,n=ظqlO҈7ӃEIh\Ni`e|^Fi꣬lX{S)܅կxgd "Ws{{>0ӌ?}”+X2?Ӈn*i.DZѽhT௄&˒ ID[$0ij=KI6uY1|4\JEFwz uL-aE@f)ى`%;|NPL٩d54Z$"?*O{sE)Z߃&U\+3i>@Eޤu1wB*.&#}EB~YM;bY,ߊfRIXM?P?^D}&8Tק5oƻ00n>GB·< "7J /_Q߻"OG㧡*Ok:(6W*WRg=qg غ͋Xrޗp^;*o|ȞznvH&!|v_Ykx/X+d L6/J NyZl endstream endobj 32 0 obj << /Length 1821 /Filter /FlateDecode >> stream x}XK6WVX;zK>hHC큖h]4H)G^Lr49|w?&IH7ϧMnyyn7EgmWҺp4ɌFv'Ey?o8zC)I{m11:1elV x +{}Ei:4he6f]>, 1aL1v޵, :N)]QD #v2CB_8.QDaVmǑ3"j)K5Sy4Y[ˡ-*#ȭM^åX,8VNGY;rmYv6P@;8Zl:W.*e ؊o^'%L yҶ1-!F[]̀,O&\ֶY5u,͹wlE~'N絳(0DWE5cdFF7C("­kA8;g n}UDW Z-8a0 80Ld^ -Ko@B= Lt5aF&\jn'Bч,9A:\hP_0 ˯T.]8uq3!~J *%gF-ZH́_XE%S FY$ڲ, EOPi!.ÙD3_IĎG a@ n\"Ԟ PVג 5$p&uB]BI㦾eѰ(~` tb@H2zA.Ha7=GQqf5` jqQ- fMW!]8 ܛ՘:@iQZJI)gB̐AU6|Q:ΑyEtj;C<8?2(Ppw`dn=2i߼E\\$9Us;^^im3A1!Y e99 FJ +LK X>ze1A =,.f}ȉ 5%P5 ~UH-nϻ*|%_- n_4d㼒qw0W# kTwcѠg7 &Y o^00?$Av FI ><0$"E> stream xڝX[~_я&%ѮGG˼<@ɯOLC]Ej lÇ? uZ8<< y0Lևs=z;O2y?pUZ E;N^G;Ӟoi3T!*%^rʪ _:7ǓyfjC!9 --vu|-my9==LGQ&؟-mm۞H^WU&u3׃{Z*DwSBS`,ꆉ(/gvz[O@ w$B?,8,E0.C{)baӒ3[PrV`Z]a(&~ 8wV3LHeS=VZF&lۄo-&HPF{ MC07c_k//"COUrAqʻip*cN;̴J3Un)њM1 +p.q U^.i{}#TR|#&{bvvP>QMɬ1, mXҲ;6e hv)q{+:dF,йvּ"oWJ}o#@Eh&Eda13F$K[B?Zxp܁ rܚ˻qya]BugoC{MyL .~O& endstream endobj 38 0 obj << /Length 1721 /Filter /FlateDecode >> stream xڭXI6W(1ES qCm=hɃ;P$.Crofz;.6\Jmegr&4iG?v'bq4K+ݴW \L Ż. K^DNxgg[\L^WT'|l"GU߶M;A-mMY XI Rr`&#a¢zι?G_حI B^z>>ٻ-J۝Ssu쁎`Ӯ%:4Ѿr 3H) %dFKEyV^fhE?S+@GD S3z|K)QBJNv(N$M Ûڣt,\˫RmYRB0G(:SO<)xY> h6>y7u)]5 -Mչc|9D,hrMQ7%*`̎Ek۞ aOdձ?RImBhgg#J5X޽t A O%\2^`5DFFZBDv}3x0BVC>O?:N  I5% -oe+4KBHƫiB%䎦(TTB ";Yp. :DxjA[rMFw.B}`Y@]:,[<JoA6&YCr`lAמ]S8&/W\Gx@2'#!`*@"@rYq+tIi>B)%%{ivy8P-x6kK opsHr0>Zd[O!jg XK rͭd9&JfE|WL knP%y`_<_qPvdYc6s5]*ϟtDF2-5yWSlK|_G Ea `A\exT޿=?E䳨ŝ9C̱_WΙ= 7pB_ ]Fʳ!fn@./Eės]+" `x)qN#Ws!x Tcͨ2TO^ǽ#\zMPS^@'scn<SԼ=boP?"%h[ n.t e 09@L#6LSN?d)c>q,i/f]}.VX;gܻƋZ<1ʼn7uCGR;ݐfmjeBok4$oEG~pY|$S[Wƚ04`'CV'dSRzQڶ1r_9.˥/ǥIX)2Rj(jIukiXat%ʳNK+x4zG[W 'b| ֙&z |9%2E5,ȶkXxp9n\'dx̊ -J]zX@W- TcɹPB: ^ݿ#rY endstream endobj 42 0 obj << /Length 2006 /Filter /FlateDecode >> stream xڽXIϯxEj?IaÀĞ6Ey8N?=}D0Gί| 33U|>R=N'R3fZeĵ`p )v,`ZkQ qDI2?`~M;d@tFГTPneNt8h~2%gR@zF2E/)G?fgUZՎͪ=Qg4 iW%{2jf5^!,2@gTEq Iq z"X*V^:l W+h6Ġ?8ğҴ)֫L{@}8Oh`29S{ƳciߌUuF,5q|OgOs׭e>T,IZE:)n=/yb%iKH#W=NcD{?y$F%ۉƟYӬLHw^*mQi䣗,]g(o\6-]_&3&HB2:{ԉMqqfrfz]#aBuдc+!>u4oQU|z#cp(. [A3> stream xYKܶﯘXs44 TQ*Iir|p8;1"8Z}_ٕra<F7|s{ܰ\Meaakp{*;@;R;*M=nGٜGFA]5v࡯lû$3%-]q"p4g7TEP C΅V:yU._@=5O_}]F` ʒMYCLw>XJ/^~z(2,л*(GK-t⦛|a(ڰ il#Sxuhߢ&D,m6͇߼E᎒HB}h2}O( M҆ Wo;Z5iWǗt9Nn{Y Կ`s_j'_eGz2RMN]wNcoa[n*U/å/ilii] -jqجяLk5'XlՖSp-yG&Qq).ډ8RX;ky g|0m+`$#;l،3;(ZGfa"R;< |Q]¬o˜6Έ@պe ݖ> U5p.PvFGD* g80a$F0_=B4\2  (5`Ա#Q,,zZv&fT,Omy$P|Ď]7ba&,A`ρ} Bܨ.! oqZE 8C;;ZTq7ܒ>]AXE]5^GefF<: JX1NS\A- Ɖ3X`q]i>OWDSg|**K(CcA \.!LG &S2M;BϢkx*~H.P"#h3W+jV&_ԗ^D8% >ᤠJ4+e1]h[H/5_W/@(5I%`h)lL|$ 8ɦJ6M]q k5tG?0 B)x%ŷH*=^UWXLRsD+\1ڒ_c1\Y+)OGpDd0\!pagf,Im>ҪCIx,!|w/pOh/ܫ{v0 X+Rcnٵs%cvz*|OT4¯ <'cժo]Q.2i{o k#F8XOi\ca*2 oʱjpq ߪ(2Gv): {jZ#]`_IuC|]qSs(VۚK5H BJr0};SXfr4YB6<̘KFK={ endstream endobj 48 0 obj << /Length 836 /Filter /FlateDecode >> stream xuUM ZS׵RWjctw}=d cxf?>>e骪Hc(#E]% m UraRKmZV2hb$nEd`\iIje#߼^Tiڄjq-[R.BɞUԋYh1i7 PZ?i$/t<'x,~Btz@L$`\ !W R\o^R8órSBIT L='TS1DΣ18|[]bm9ԜTU7#~j)o$TaUk>u)wjVG+kVW(HC됔.9M'(7+2oYt OYe rGca~Zh'Ƙ@,lnuGW{yW1ϯHdNFk{}.-.姝(ijMRdMgKߺ<頻{ ' R̘(v|(Vg!Y*}Xqq6fMVT+zOJ B; ;Sn%~OY VxJ!њ3JsSA 6xM*G/;my?9*-sLX\kp *Ն:JKys6-(VY  8|m"5ppg2isfPk϶' endstream endobj 52 0 obj << /Length 2044 /Filter /FlateDecode >> stream xڕXK-2护q6 i`s`Kt[=Q}X%YҪك!>z租?<<:*:IK狽n8#}C|8%ȥ&W(lWs_Q郔0F8oD-$D"ƋJwiҟo+u!6?W'^i z;JP۪{W)Q*z[XƺgMWZ[1xAʝϠc63[Y"ētRMl4ipùBHH R%e&EDeO&$fBfpɈ<{|bdI4 䮁KžHTJLu~6`OqR ދW)#Дa@#;wv[25dd] L(qˡ,TTݾZ) qgN>A[.qo\WZֹG+9x0XJl-Lf֠m[CI\hנr7:Գ8Kܱf&sBHnH6sț;V4M.Lp#}~H= XkF0X;ۖ9t0 ~joӕ6ʦU['zMtRGXɋz?{T:yƌ(ƈ0ު]H Rh NTrRnDЍ(c3%54 (ɂ" Q'`o &jԎOO"^d3P*&dN 5 < t5} endstream endobj 56 0 obj << /Length 2510 /Filter /FlateDecode >> stream xY˒ W.r+(eʝʢ{w' ڒmޱ%G瀠$˭~L27U%/pxO"̓D=QFqrXeY2A]ԈS=ʶ' 7l5uom,I̫J$75GUWMZ tiV" :yo;C>ٵ*OCwnb}*C]乥aZasNEiEiwjd̓-ʖ{ZgͰʹ|7ƦgߖYP_HV~Xo͟Hi%L 3,låC9N!/%ѱġQ^NjjqR$0בpD:P'%wWӞ`~ri]q 6,աj0! u%5VaVTV0e+ۧR-ҷfKސM]\^i 3gl0bJDI^8va[PQ'Q !#u>#Kn+xՒ`4#=N < dSAW-W0w=>qn"qq:6e7CvQq Ⱥ]a&w e,Zr;I"@f8CZnnX]Hnv)"-?Ic)O~"=(T-I֞: * O]EXHӈv.Bt rI$HHߓO:gU6ڼfPYưl*ؙx|-XM|62cFB]ky?=P.1h҈B%n#4M2dκ^B$dtfl&Y#ys_/¦˅5`c ԋbRdz,3-}`V(vy^j36OLWbG42H0HB2q/g.QЉ([R9[-.[S7N.h`h;ǴG YO,m7ې\ge"ISz;MRIIF2}2lUVk>Ֆp:m8E5z{roK5}[pV+w qS7yT1\;j9s,4ε>ǒek#?FpDƜ<]nyYS8UZ[Avi<]рqn4I?:lڮ1n{H\;Xv~vT%gAq"r-w7Q_a:-4h[:ݨoe4.sϠhWrwk$X),Xvcy u e~?7_F|Y&}Xb&+; !}`nnu^ez^ݨoM;kB V|fIZJ\%4H5el0:Rk4aO*I(NL9ȗ_ 0ۦnyT㧚#%b^P4/mN,VuʁikWόMMƺq"o8U Ι6bU7LK$r ~-tw2_K.)^p[=U:ɿna],d2(w*'DϿg?Cx~Mi7"?~?4_qVJ3N~(p$ 82g:[30փ&0GztRˉl].Кl~ẦL2tFz^n"% !CQ{Q$ݶ6qו+%\ >ܻwK`H蓭f$T3-V .>> stream xڽYKhjdwnI{ s`KnfՒǎ߻UZMHUOO0E吩C&s!T Ym6èO0NNU{{\ث0RqM_}TQHI8( tSA#̃Gj=C @0sHTb6&=Ьlbx/a<oA)JHfP`B`ZD Br+R9L$Ez-ǵ\B)t>n Ff y`t_ި}6'2^"K7}p|D@ 3JAvL⼡Wh3#qʦCeגT&d50%ZNI_tߓ]x!vZ"M/뙯oiwSY=0SoF((`2,٬f B[=70d/?VWspH\ͅ{,ƍ*r^ -\ {OwE.IGB k4ɒYxjs]gj#8 XK߯bʡV1۰\>Ƞg\U}}4cZKPϦm6Q|YD,zq8+ڳҤJno܉_+HBɔH9z'HQ\3C yqU L->PtƷDg0I~Si[2ÃP}FTT@ 1b7ٔ_7.}K2` Y!#/)fz^6? )`;_ÜKaܐ ~^xgvvUSkxa=_HLLLX zQ0 M;֬+#|=mao3W e305/)qFWX_EJ=#BoGhm=6=Ӎ}t| Eānl] ]NI5z Ŕ_(̃%aFj~n* +q;#{f?՞h(2(sZު6/Z5v|/ב_a(,<|uMɕtg_'nK%QF eXu :h=嗪vDvJ-8.J3xϮJޒ o4"EQC*~QsUO{N !|WHeh*t}w?ZS endstream endobj 65 0 obj << /Length 531 /Filter /FlateDecode >> stream xmTM0Wp6mVzFX"@m6cfHCՓ&DZ&uUu̸I&5%[9KoC8g_v%@.,6\ -:|m-? @ܚ!“oa}ޤ%tf[ ֌i jpzU[!  \<6BO_LmLx:`ka. q|? qg݋C &ƁBhZBZ40&P:8 0 ~h3g(:M;F4(JNXX^%ul&^1$8v{@Gh V;[)H ?).L$22y0 endstream endobj 68 0 obj << /Length 1525 /Filter /FlateDecode >> stream xڭXK6W@%Q:Ah E[-Sku%ѕڞHy~37pITf_l$<%B-z޴i$Nf$e"p|.&|P&; c$c™Xpf#,QoYT[bY"SlySلSUvg$vXۣ*sDiڟB>[%#h:]&viˠV.sku~|$2 9gmҹMBG`őiP!si#ЅEi Gϖ~rg;lG5Kfn@(ZKBՏޑv&gİKJİKw臮+l dXȰD]$hG]Gv{c:[N4Rs1:t(ݼN[S]Bu6y ]E/2? 81j6;—,Qqi diH!- 9UIQkL<@ $/ٌ)S؋l]{AkPC-ݱ$!q*>Bc:8g'$@d ͵sv@5e˺xFpCL y 2e4\uf'dL2EGmC !3)bU*_rD`cJq",qEpוR;cjQԄ]km_sK߷P 8[f3Xr!c? IibtMKZl\ `/W.襠j]j3@itmK .U_>Hܪ+S5!K` b|cjlǫ2X6l ֵy2+ID'⛢È<:[kņJ1 c<gLҥ}-Eb'@cnumw< EJ$Ms3J+ӱ!A\ $q"je41h 仰rțL,~H?A 6[%ki3S§5K|=Y_HX& ʓz8z?΀gb89<6 mܚMG_&7Ze3ځz4G*kpqԲAV\:z ]Bw ]b_/>Q:@UU1dB;=L}4#!zVur_#끭Of ܲ nʼ]n0OP:dyGn]q:4S0lnD #~w0 -3F33NP0/)<5> stream xڽWK6ϯ蜖`I9DYEm76Y<*9 pUz}UtpOَ AwrG0A4KNOa/q~ӄD{5ȇ(O- [ ֭g'ѩڵ^P:_t{DžzOE'"R921%yuw1 =K@(N3ڡw O J]V]I1)FIKڳ#o 2V: g( 1?&gb Yv b.*YBTN:9%dM%JiA뻳If"zတ;@$:D[0~ FRի٬|kƣ>y*M~y8G/[KݝW*N_%otIfKއܓF, ?^:SpT<h"yJ|()KCנ-~|B!249 T&ʁ$Wy:|uNp {M&fpZ{"Kw$nI3V+JyD9b`8F)^.*Xg$<$kh72A l&3PvNhwDhAMDD2؂7ZUESRg4`14;}q{KFÝG՚+yxUgH reώnW=H3[B$dc&Yf/jWZo z.B͸sχܽ }`+(=i<꾪06я){qeFSြhmKOu- --eKrѻZp=L1M?y0 ip0F.fr[k]p*["S(cS/l{9' e 3qWŘZ:_|pJYt}]䍓1d7"Àc跄SxpBS8@0b=T $vSLGmS㾩}'Oܛ ou6Ay\adB@IHi<~W^[aIEW_f#FMeϮX2$uI9&[OŌ6z B^uJpQE7cOLĂ0Xc4J$3:rؗ/!cskc.kwØUcDx|1dkL<5`1"gaC @ʵePl {5L%eo1lCB@zt%rO endstream endobj 75 0 obj << /Length 1628 /Filter /FlateDecode >> stream xڥXK6WE 9 Y2(9}iy\v)j4п=yY.IjRy8lR!a;xpW4Qoof'3b@O?&خlj43H'% RTKgu_;SSўm] ߟh=cs@/{Ug).E]lJdxaL7 /m뽊~3Ihp ,KBbP߁O&qЏr_q@jE^՟RY3><?*Z V957$p"QFu*7٧Zy c)LɘwII*ca`§LKgkq _[Tݱ<='gOPH~co$>6+uobj :3?7Yp"ھtEU׭VG'ɔhh[fٞBSTQi`?9[ #mۀ4=͜eLi | pb~+vcz4WJy񺐆RƷx+: p#6g\Qw\A$c9BVh ^q-}iQ|W-dZA_?#ڌ8Թ'3\iag9 ^LȋT vM~[dQL_$? &,4x O- 5;@A''C녱/[E3 `͛J b/LZVZjL9IPafQiޑ^e&N0Ccq, NM牑nHϸ-b1C0\}:oNgO~, E\u/yX]a:ڶߊZ_JaڇӰakIC Yҟ2TD_>gmьk Rߛ1/zOxOʼn_F7)mw1KJ3=mT%|% &D]Ĝ!'$OXovǔ0?η0Uq"뭛4^xv~JFO0ΰoJ%02oGn-¡ᑰt3!@Zh3@گ1z->! ~IN0IǡklHc3r6hk} 3R=&g,֯X= UX1#bGԀ[&3bGȄƱ_x̼uCHs2A嘱w Im2Xk'-nfrTBK)tfqkXDk3d Cx͉(5> stream xڵYK# ϯRZINNy od[n+S23>HիdDI$??~s?\h&\?2IORw{%^w*W?:Oj;~ 9?A)Q^gt̗u7TbRG4zީ4hܴ׎Dy45M,=RЌ;4~xô*D9 /Rpb8۠(JDUymc,޴;UDOoq=.E*wt}B$r!~A@T͙/؎jge4->ٶ.#&}&<8m-23-zqj;IS@8)W5ޞ@LA(L[>sS-<3q""8f@8${` I1ǽ3ps58':mk~OJEe:*E!3-*N M \̘s7DArA-ETcSoi7 Ƨs0RmSͦ -,nB"+u[ȗROjN@;4 6 foϖ,Y 8t$5dXw pPݐq'(s؊ٽVj]m#K?s n ?rQ ,JȲX6YHD&˷_9"%3-2XV[ϭ4*!/2\Z&0S/p`dhs/oM2(|2MZ6b=r`jZDW ^=X^# ! xa%c+n5pU Έ}skȣ wIigglcHF7M1 "1$%$Td+pG[ b{LVNLDjؽiӲDi998n28+q`u  RwJKMDϥk!ٺTQ{G !%;JAvN#~%q<%lͰaPu>t7I71 NUAͶ3Z#|"|yERp584rqQxkmy?4Lk!rfc uCS6(6㛂|fBOMo%q2tseBcoEY\]Ǔ87d,X:IGǝD$cGHNiT ŭ^4z*gK3T''&z8a>*&CZy^5uWфr?s\=ǡ/`f҄Z8wn񁃸Wa0Px37B4#X;?Lxr i]= _]S ^K(b'A4-;9&͘&E2%V@z|(i&2CХ`'&.2jy擁1k8@ym[qlQTKoӱɽAuKp,ӕ0-Ciz nȓ 9]:rf^@ES&)1S!r׼!? [DR| Y\jDfMKsne⢕MkO0DA#7e(^x"f`)˗pvڳ۵xע&=ՋL:-XO"OVm]\]oMkZ\v{&I؏K$p|)PZP2^BTZ."75wp:ؘXM9=cNY洣.R viƖA_+)2AUb\Pi:_eo~ endstream endobj 81 0 obj << /Length 2252 /Filter /FlateDecode >> stream xYKϯP &H IvEFRBR;&Ej83@W_Q}JW"eR߯RJyƸ60yoEna'SwĊOLfVj߭836]=Ǖ?I9c$^l&۽?VewZoUIy;z[ M{)ʼ;z,z&?ulz s۽W'`r wʹWBnO.Seq ="9w]Klm]'69O6ɣGapwC`P6}jZay˦5)زiw4Is's:9^=܍ rz6a_=uۼK&.^+y(QRh<{a_:"LZ2a<#7ZE¢b4{XԝO-v^Qp桑jƹ=Qd0J /, kZ/]c&T'hLx(5lQ]\X@9R+xe8QT6–D~-``K 6عe`yv(W]hrL]](fh }F$OwwF1&p8N`PNWcTi{e)[!$ %O3fP9>70Tp/#kTW68JÍg7 b (5>An?HcnM~Ii3![L43JAc*Uns aE/`1h]6L1q|_ c>j@=#hmDlBxs~i/.^07ӳ6$,WmE_@uLC҇mY3t䗶3)Sٛad gӡʿ.z545ΜZX@ `_=#C qslл_h7'IL 1Bbf@ʨ !Pq^Q* 2(#YJtYin?rble2aĥ?6F8cpaW=;~ebɲ6Meb+ endstream endobj 84 0 obj << /Length 1439 /Filter /FlateDecode >> stream xڵWK6WEbF|q*ҢZH]"$r6_%K6)"͌ܿz^3쏛\l`қagxo근HZkBn8gϥX!ʶ۝yrT4npmi'Ebj@sXg]E>u"~ܤd5q 犩9Y8&e -x.<kg07hyfhh3m< -3C[&6g2z]% ސNi5y{́6{;& 4'{ \E(\"~0u ~Nlirl {<sSG B߹$VϺޢ4no۳څNA[G[짘 q#bNQ2ON~~ 9;s& ,bˀtkZJtQhYLrx*Q]cN򂕥2@BOﺾzgK;-d n㚵",-ۗɌ,ʹhvdQ\69#C{aͷ\Cl/>{Ԍ t @ ij=0k;NMXq9.AYl5T',6Y rWh4Fin6:Vzv)ȓuE/)K_w,mgd/̨S I%-98FTP}r;{m7#FT퍩i>7 46 .THIݙ~Wml)(=ŋj8zA{pU ;v)dLˉyH˼(40qDJהMZ};!B3Sɲyil?Y%hz Z_fWz[Xq^^8$e,GB-ځ4s턿@{R}OӱdT,KIU uOJ38)RL R»o:B5)FNaqR?SٌS4Qg=EN-{ ~=lz/ EhqֹOr¿XXJTr.M6cS5XUX]&*e3nnvEOR<nyĹ endstream endobj 87 0 obj << /Length 1696 /Filter /FlateDecode >> stream xڝXK6POSS&@ A^d&"$o3$%KZH̓~{w D%wIs"LCyMrEl&[Y@SSm(n7H= cP#_$tSӲs&,N6wîm9 J@, 2&ix>lɯ=SV(9WpQ~0t;!ۺ Sݛ" Ld$2 w:mܖ5.to*w<5ǿMLۗ6s: vᴺTj3v0&M]J+ZӹP_PF~) :4= 2M8S2BLReXFf(l6O֖T&7nap& ey"!*x3MpV'=&eNnoyyM(Ei #P9 wmt*EӄO}AP`2$aR4 H4m)Y baѶ9B$^.O?hQ#_hh;06hg<;eeN˰Xߩܭ0<̩l#>|9&h0?Sq Rś vK8̋(Їʈm*p)*:n"akMk2\;XP#)0y[RDN8!u'SY=1l[Dr.W*=(6akC6 j8zn hA:wY58+xc5z!0z:'Rs h]ݙP:*ix>j\UŊ\KJ\F'^@јOTQmF_ῠ)\\W\́/=Q hRhL=Gt'%9*k23InU"x̓"!=ج0|M8G\wNf"Ȗ!ki?.xz>II2-i} rސCmU)դ*<з0 / QhL%E̚kM$!ay/@X,ئ;c1fa sf#u-aD|^n51AgdƤ, MZ\A L~z&_ a:l?TIʋaOŤġTtAÂ٤_l#k5e9. l`V7:屉2C0 @(oB@w5}+"O;$#O)\fԋ H.?GfBAD>-HǠ# PB@M@rf!0Aҙa,_K endstream endobj 90 0 obj << /Length 2350 /Filter /FlateDecode >> stream xZKϯ-T7cVٕĕڹy}(h2E*5i<4qk@h|u78=>|TBDq(("y%MF0?&۲78Uz ?&: <>+Nv#!UJ$b[F@w0e^ =!Z!0+PF5ĕ/`" J͝cb4_FN:P=^k.ο[,ʜdD~)L:~hfڵ(k)^3~CA,&f)W d({)q^X({5$q=J8n̝znn+i{/Sq XW CV!mtO?]}TASm,qcM[]Q칄 D=kVw@PT:4b)(@O* x6Mq<# Lk$PI yZ Q*hEHFx!] CaK}`b6dA PPb$Y &`)yRVX }^}%q r@D53L `ʐPD}#4Cw!kH(P}i?_ζ`vnŧvز}v|ũm[8@2M[OU0v`/ (I?Ŵ& b+n$#´"~A;. oSg㶱 /?T@|OI&ʉmFtp-NM\N^hQ;{ܟ;?[qEL5T5 * 稅l7pk Qԡq%wl/yigIX͌`k@QԪ[žd"lI4r鸐*g SՅ f2k;Z+@DbT sȚr֕9Ҋ):`髺-A> stream xY[~_G.1 ڠdߒᐺ|, +9~\QLpv;f,Uzx&ijH^]CCXЊj@meyZ'TfL2^EsLhtfqM3+oid4\0%~@w다s(ںkl "gy)f MuqqjK15P`MlkIjɢ;[ ڌZF嶂 㰿`Et|8H3 ìȢ EX7AP V8zue[ G0uS4  .E3h#6 =yq:gEe Usy`N%ϙ+Ĕ>"[,Ql@Έ{d@ %1^o d&]㺪<3-.051 ԂX `x-=ide<4Ro&+DQÒоJLmGbƵ%f{b({>>!s|.%a+uo7m g{B Ab:?֠(-y ٸR 29Y.dWb!Zp`ׁ}A&@-qX]2|CJe(Q|\@[{9nKѸG#!YrA ̷T0*j 0KYk> 1 + 6nC`FaeJîuq5sZ`Yl&*d[a(R'A9*+ &%Z_lmxkA4Aoh-2p׻YZ&J'v'dMP@S1 2- b?צT%U0 ܒ0idy&a" 0BLJ şVObZ0.oX <13fq$T8=:pcGQVff%M0: ΅E7L%oHaJLLڕIR-.};&{62i?DR[ϗC۹z,p|m A_Høb`C|e_A@L endstream endobj 97 0 obj << /Length 2598 /Filter /FlateDecode >> stream xڵYI0 hs(ڐF&@0r tYӲdRU_Pkkf0*qy#=o~.E$jx2*Mv̅4wTvq= W{LT5-OZ[Xn\Tێ;p=@3 Mdy_M<:1;m׵ݾ5L>q^@S綻2;^Ut0&U*zZ8ZR9*Ҩ;n8t xCGXz7&~:M_/7qn=8OY1Ikd-ʬoDa:Bx;q1 +`"sz$1qmNؖcU  j:S^*=N_d"osաC;T5O,S̽:n2h]GG LjRU˦ t6Ji7*p^˪om@!>1 ν_إxֱW[P@-o6{?X\?i8:ChR &$Ȥ^F#U?u9VG `Ϣ,4؏Oqbxz;& C94Ch{ T'̵3@sq@.~hy? a`CؕHS@!! +y6B(&s P~<W?L 6ѱ(<8&+vf-oڇsܮa`\umy ϭP̀$Tٮ I%Gf3x#C>RvmWo]3Xĉ[Q,6Ѫ"u~)y=ֱ\ !&wu-OX?آXu̧ Zmw=؞+ IwLFE8 vo̾mG; ۴uE&яc&{uI+} ǝGzB00Upgߡ(R(S`˱^[t!FWd«Vb> stream xXɎ6W(#Q`\'Lj%CKwSdZ X"Y*Uzȿ>bɥa(#<E3B7GSoc,N7e4*z umBz,6Nkp|h;qXQxnU;CƦֽ7js ,!Izd|+HJfj`<[-M4 5^`t)3x_kq(Mb#!M`Hy,QoZ4Dr~s _S )%rQ! >_\I4x-fQеgw~r[CBOs0G^~Rk'_{xY{dH֎͛Ue{)M:KX5F"!q/w*:>1I qgݝư[$Yt}n..^p;sy2 $68†3Y* S]alX\qr72c9dp[{T$O'-&,ܯ8 > #I{:U ӟ̜r]Ό!YU5탎&dy\*'^UD-Z)A~Vl?u&9aכQ &ذ$ɳ콜T 3xvmQ>i‘0!a@Y[rY* ^abv-(Czچb0%3B)ƌA,ZGV%t`2$DiӝvL7xz8[sw۽6nU ^u_ZBs PҺf *p= Sɮ(VFLJ;d`͞FTT AKLIkK`yO3D[Q~aY8]8އŷN;F12r"㫭X>4nTǦ#0)L9QJAMln'A'cSSŃƢKok:'LNn8yz|qn0}nsC|eLG[Cc/m`=.m7Ns"L V00Fa>7F,)C |_[`*v4aYԏ־Jɜ`g`d6sq :6UP`U;Qi#y2õeWp7`l|f1fSyG93wcS܎/ ) k\i86Kx>a%<¶ހ<[arOT ɧԛ1^ a>lB¶mK9q_ L|y 3SÄMw\H endstream endobj 103 0 obj << /Length 766 /Filter /FlateDecode >> stream xڕUMo0 Wh*Kܱz(ð;l=TVߏ "){"U| KdERB\ɒ5ۃ`-l3`/u`2aٗfus $26SJx"Jiٷk\d?JhKH^v?lo:(^ >cdL|fK)DrϬrltá׃]D [I4 0G5*?k<,*Z3ݸ\@6u ٷDZqwzԶv|͊ !'w[Fi9ۍuߍE5^n'@h7+吊(D4R%MC=i@,ӂaM .<@mqGYQl0%D˜rB H@3ͱoQNgKT{qG\nɾ8ORo|TqdJD5,8 frSH~F}Zqx^L<7*胔W2;'OiPN#@9wOۍi5mWEbJы:jJp.%+SYyp`;_P+ VB$dU`+Y84F8k0K!wP`Yӓbmܒe_;B趥5<υ.> stream xڭWr8+xb+fI%Yʺy|H(bB x MAd CuFn#H*I!4JBhWDwcvtr{- O"0ulMe?HYDJf h*?L]<`nךvMwW-v\-Q(TyhĬmޔ{]nYw4 ,nuc1pD"B%DE<(?mqT7DFSDI*yg^[6μ۲@әqn]8mԦ#mKDG+kpnڶo-y!̖ (܈ ތ&q.Fe{ٞmKE %\gʴztv- T{wDzu ]K;-?L'[Zx/hjYgː.ßsc[C6M_pq Y㈉"H$Dp/F2Ĩgn{C0(sO~MX4uLsgd9PvGڛs;.F=m~'=: gM1B{9MM`4"2ԼDL)9TY6/0p=%@&~֊B !i-3G !AMELL.Bf*hI =2RqHW)ޘэkr{UA D 1 !=3Mʳ (֊E:Mۺ!>'!Sp.ЂH 8 pXƧx -r1Jw&oU}MZ%JXk`PpqVy Y* NluQ_&P0%֩+W~hHi&,0𞼵6})|˚2W{VچW $PEy^i/')!0MiŔ,bq_yj>: Lߊ@Lbc endstream endobj 109 0 obj << /Length 2132 /Filter /FlateDecode >> stream xZKs6ϯPN"O&[CjroI[H 34$ 2w2 ׍|mAtss! M%\ln?_>oHj(zmw4ϓ;qr״>6[m<J(A(nãMS$){uӠ,qФUe}o ee5h~hRkyKDG@*(fQ&3xԪS]Y+䬔sfG1bGlBY_!&'h$2w xPQ3.,5OIg[?l ɤ'Mw gc 1P[\tr/!v.[`"!R',IEZ0־VQ偫3r$qC_M_t*@FP8-J1pUEDe)bz D'E\BȔ AcW8zOUq==r T)رYX&h #T}[El,ELL02EY\rm Jvd2~H VOaʑ2ft, 1F0 CYaHOd6adXn.Km$[]׹Q_rR^R'r}3+Gpg-3OF |B|z2:zt:z*%'*JrGKk9x dh›TanXQAV|P`3ލS(5O}J]-A7"z닶E.[3c9LjRʾlԐ}sO$FI~/3,l[=]X(LMהĩ7@zt>*U-3mɤ£"*z2ݧh\²ʰv^!_:qDhn-YJj˰JuzUT&oXa!g2DuOT1'^G $P O 1g)7 _^XA#YdSE(EH.t%{2z ;1$2noŸ 7%uV |{ހ_9biSA=x_o6&^I^š(!HziV[U#n,_oz| $A3*0.()^+kz)UDpr |Á>lw*}HYHeUl# ņDwqc`Emn?t`?mmSӬg,M=躏kQա/Ϧkѽn詨P!lE,qXVu4 8G@i&f:+[!i:OhomqZDso(bn; WO +^Nf U7[:$PT?F[@  7{LjQu[xuCtŖbgboZi愔mCU2wcEUQRko;]8ީ}, ,4){#J'@h;^Ac`E3x)fF[>'ƴVEH/{~r>Wvy ]Gmifl̻ؽؕϺLɬkzN=ƚnZƭV)G݁7Zi)FMګqo¿z3WU#)RdNvHYKF^\? @X/F=V՗͚|DW:4=WCUL)wm#h wSc7*F oKaSE=(' bE(WM3d5biB N]Uʫx"{PZsBOB)[y8ԟe}{pylfטmMb2 we\S}!B H|YU Un3&?rq?)Z ~%c+}⸷"P88pM`Pi뛶w5kdDQ:G  6$մ2 MwܼA endstream endobj 114 0 obj << /Length 601 /Filter /FlateDecode >> stream xTMo0WHd(P N rncMxh%ꡧX7o޼-.!BAjaA*E FunXVB3j'H\振~ŕsh sј?s+uON\v~oSo1v>#+{̭&4v8 ;_h.IΏ.е]XwK)M>Fμf9m;aCYii:S ΠFm*@:7Sg;F7b_MHꝾS7BӇ~k~-`oT|hhpM ZВw/eZ*d vYULq$ml)4GFk7ǻ&5EMej[ǜҧ\0ۺ|pJr$m6O1g) H`_H8) S>/Font << /R10 117 0 R/R8 118 0 R>> >> /Length 1316 /Filter /FlateDecode >> stream xXK7 t,J>A֞ =Ax~N>TUы[zkJH=/3׋xS-8YnpD9.D1.{[z(ݎ/_cMb_eV|]()c5[/0qv_~}BO!JRuHnlB6#mB龖ĔĀqͧ=7S6&C%VSKD*TbiK~7q`߽2uW vKb<.J|:^]}Y^6&CJ`"\ʬNAcB$WܛȹI0L3v: HX1LШ5Dц5:Q,/)ld,Œ̤3PGzvUĐƙ(TnԔn3AGʌAΆ)CU8Ftfҙ=;7Cnڦ4T,jEltuCDj2 6UU4R5:ҳ{M|o]8Mݤl9IYO,:GFCHvIY6biHu: 2SeIcB$W$&ΐ k^jRRȾWPx,:%`͞Ȍj56^u޾NrGF;Tg*Ǯg/#t XBsÎ$iJ[HY9uXYuB)RUˬu\^;<[q4%#Os\# wP<'kҘ6ˌӚ&FEJIZT0߰2MNИ DV'tVX[Ѳ2"]KZZ[!e@[fA 7V F`Weak 0%%R?HQ@m)2E&,/f}I(@R=JmItY*aNEP)0\ B uTZ #^Yk;poz;)nJ!< (}BJsߩPHDw*Y)@Q ָ!F dEOv(]9gb/J3nl# xp@B'Dp:跣V endstream endobj 121 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1859 >> stream xkTSo  E+0@BÌuFEQy(!$D @# !$C3(NufXeVk[βΥA_{gwf`>0. dKJ T FE0XHNIq1>CǷCCX0{w|rll\ܮ#\XT,4^j@&,*ET,(' ydS1-M%0l{DZ.WEn KR44}c籏 /XvK b|İl v~ 8>1>>˾r"kJ+݇\ȁ`v,lSuO,Oɒr72|ѠhU9jBxQЊ}h$m6{Px45Z(M:b8`4|F3a;%&яbwpa ȃq/ՕhSy6-szӑ\xć|2 --.7 2zuBCy?a }E.omKPV\W38 @nKO6cĒ=@ijҡTڼV5^ႝLj0 _qMYuĜНyNPe=Fi2|Toom 1s?745+APUwLv9 ⏝{l*\xqY/nG!NLxK* "`D0{I64h4m3m4qP=!.Ǯ4*-Q :a˧_;8+:_UX#\"y.9gSjeb`ήҒ: Þ ҝAꉕa~LJ[UDr`Ut9]늵stPȠWp^]{?> stream x{PSW%{RVQ2h.cW;oRh`H /żOBH Bg(biA(h[Kn3kwmggٝ9s^{sñ \D(ߔ-.әYì$e[etp^gخ52FVBov;6eqc~YZT^Hݖu{j*?B\Ų*PIʔԗSJ?a+srP$ބa`Y؇X6byX>VÊ!=},[ɒb1%Y͋}9  }r:Vȩi7u.r*$>B!!a}ASl!t(v})%{?<" :@Wn ~Bv–/l@֏dӚ% = I3 '>BIm.$ASwkC­DR]e_upS"-#\5_Cx a7}z:H&]!ld۩AR!)޳xvdp9zYُBMe;+$JLCr"l9*A3z?3$< 7ӍJUeA` _š#UkgsZ :OB%zc[PBŚL+ar(u9*T?+{4%r1CJç=,wV߅_pmk:oKѢp+`Nԓc\ r 旜yhPzmr [ڳLk<=tS~; _꛼5X-sf˴筇$kujnuZOgS#鋂V9MhnSpIJFsLb& E9&-vZlI3ڦ&->2NR$<}v*:կ#u>xNz3ig̮ ΜcEhPh+m7 _:1-~჎V%'@Zb'X48ϳ49MV'he6yn{JEʞcCX/yj]I H?AL!e3 g(:kC`wesSVɾpT4OIMRV'Z% WIm+)àwi5-lJLj]@VȆǩ&||#iY`IȖI$5fbBF,{r( 5"[nsEghjN ȶʭjR^WW]9T=~wrMk zCN2{Lw0w`<[2?g~B/լlvgŅeTQ0#x6Cεp%4 ΤcKGA6(RE.pAT% @8UHpmH`bW!L>@Hֶd{_!:Up }BD[rDٽz9Zº>l!_yU LڭPtK~G9]>p꽶cvjh- {u;GtlJOam|8ˀD{ ?wǯ85ſac| endstream endobj 125 0 obj << /Length 1189 /Filter /FlateDecode >> stream xXK6W(@!NE4EKۃV殕Ȓ*P,ҍ dq8ؾz.U!HsN]D0ATHbpʣ.#s\_۟޼ %4Ž`-% aF>I<sQQdd0]g IM`(e$JBJIᬯ +y -sDt`T$}cڬ/sn V ۽z:6 n~tC!?P= "!)J(Mu)>,!`Buµ$:dCx+/T~%IID\?y<0SHb,P5vY:L% F@T8gXd47ۡ g'<;=l#VP1]P*H+$}weqݭ(:>*=:JUMuR^tGLWW`ڜ3Sn*͆p ])sH:? Ya h8saL }@0;QT!c۱00V:UÙ}ᶨ]ryݶǍq֚B:J"E28$ο2~*:u|d>}8L`pVH<@y@nö'6M[7ma_D6Ca'p!:WC01Oi b;?e5L£k%X=o淋`fTLB/]I9D_5̗v ^]yY& \Skl_$b|@(5MQݻ \YiJ\SrtW์]cPAnٰ I80?2%Ǥy fF;O|2lD!uXe~ϖIvⰙ|*)CSFC^>)\R \!BX%K࢟/ڋЁp>ߞ._ƈ@J`>d8"0aL^Z+f{67m3sFmN/|7IB 1x)NUՏWyi endstream endobj 128 0 obj << /Length 1938 /Filter /FlateDecode >> stream xXKDWDax @ 6X=1S?^~=g~%^E{<>s?-Kw$E;v)ݥX"P~$`ˮTMSw};}v??}!(4C4&HR',pe$ `-"&_:mɸ$e8z히HeS,H` jK$32i .:?!x^^;UPՠC ל޳Pߚnsj>2x¦t#&jyg4Cr +>3 !שyiim. = S1jjV>DVmi@߰}p[\.4Cx̒țݥ YT[Z g[TƔcPNV:24#՜7L! AM5h`2ޚt0S%dH׫:Fl 4lLyGNIĚO˧q7/sKi"g7sq`DtV)7mm[nPEhKR>jJ?s*` o,{~"C/,7ߤ[vʵ7C{,fPC|;Th$@YӥTEyk݂̬蓱Եۼ)cP^a/FT\]K3gǶxmdʌHP \Z4i`\.u0 LfVjceg*s}yt2R]! Fd|)YOx$b.yEf4Hhuig5 ;/0ir>v+H6s7MUTޞҎFpܓD1=!}ffhTYoMŖ(YkB> _6BfVhsQʲo| IKF+'֏w %&^J?> stream xX[o6~pчCN {밡Ck`mYʒ#Kw(R7 ֽD utx_/^zFzF0ATa.fS SS3-Vjԉl_~ 9b\Fb&d8hg xݗ^Z݅4I-:)px)6b1LzET9Q:]07[H-7y3_0J"ѷ}cNUּމX)Rٜ6vI;:)NVU=ɿI: "C;LEADB*kʟDGG^k/Bg[N 2cpVug &+4-HYX㣾 3lp1_NfЬj-UD%dlj&}3+R]}R@$;{ @1.m1$v*#鴕>dP'gixp*Lap ^R7* p!z4FMȴV.} iUajj =T!n&b0W'v*pyHmMܱҢ ȨO֡]i*:>Q{H) _s 7~> stream xڅ1O0 gJt@0 BтHEǐVjQ-{uiVNx`ʳI$T > stream xڭTn0+xhKToI[Ed[ X*Ӈ}&e'ANݙ̊Mv *[!kX%Rٲ];n*Jy^?όR`QƊ/~MQ~eH!CmA38JM~0d߲ jE"aW8u[|W٥-mKx*߹njͮSatԦt~>݄k!.ۙ|(&~)?׮h3&PRS~KB$C~!.}rUvtq!96@V'QBGF2(aw dչM禋Ѭԋu5)JC͉jSHG1,l#  ~ D[ƛ%TeꋊE )'1d+uUg(ASLx$py] OYHAZ!ǿ>#i/*_^9%JkaxH* = endstream endobj 136 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./numhier-eps-converted-to.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 141 0 R /BBox [0 0 295 184] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 142 0 R >>/Font << /R10 143 0 R/R8 144 0 R>> >> /Length 1233 /Filter /FlateDecode >> stream x՘n7 st "[Ebz]^q]4_I}XhI(*vkh.ۼ?юodM{uiL)[})lBڼԠi#[mzkjMCqlu2.Um)h!GuCRIN6@7Hkm]C%ͳT)$ɵxkNO~@5S 9֊x5:\$}_1LqD!K5@fodyfZ\&z~DŽlL"U70kZ]e +7zE@T %f+Qѭ@#Cyc̍@Ne#* 16*a&™hVK+HxGF`5 څSNH Y\@8q&$k8rEƁbɘfX&U45DBt 4kԣ(:kPJ/&C)֥( K#/=a/B'<2\' 1$qlUkzm& $%Ji5$&RAҧC**ŬJ1OU)fb5Yc柪b7Ɠ.G]{?7 wvۧ'SC> stream xUkPSg>9[)G@NvWkju;Nr* n He Aw,JeX:S鏝Ǟu9{<0]ڝ$ f^,:d{y;+;gz`xph0OxTRk)8xV,QsJ?Q._ ST[ gdBD$(*WDWuK%0̯H,))“9BaXvK`اgX$Ecb=T0OKhש]<z*={y޷ lލ}HAةiPlğ&/wYa>@LuFIy\dh )㹍* % `?_P-`5KW8V??<`#-"[A!7[@Ǘ D$/$WСZ(xă<2 c0"]g92&~, ףa~A R|֤UUfV3w. <*#߃'Kc?JN"$K!=1q$T&( qeom1Y*54٠Mp]j}F"@𕶯)ZUU~FK-7V9޸n$ةkF/6:rȿC_A04I#u ?N/!_u:c]:91hPY8fL|e_|/hwEyNqL2ع9ۍe)W26IB)+L-HzD݈h,on6( wL ;:!j :ʪ/55JR&TYeC^::@msMBr$ qPT+2P̦X& cU)k0_ lSȁU570Coo Zx~6նj|bv7s ^ԩż,Q2&i8"JÓ8\|ؠ\kA,2W\Ѥg0Н%Y[L5i<+cE-A!лzy;=7 :Xt8C/ YeCZg]M5W@(xѱN!3HXAOu:!ћ75< `G2&ڋl7g??^`S%ݪy IV6H|R=~N_;?>[ÄN^=?4^=pmzm0&$wO$ʅ#\1(紆:ȽtIq}k:ʀn>߆pҾ-vRب21CIVi[4Z^J3H23/̟v3_6\2¤*6A?GRܩĎf@N}!}%#m{N )L6ҘTNA^t;Tm/4-åiv\بnhX;LbK\V)s]b ,m]L$ xwhJ) +y0|rv;|| M 1̀ endstream endobj 148 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1562 >> stream xTkPS>6%z3:m3rHyy )$L"NBHG$Hx>J[}ڎWs;Z3י;s`;{[Zk$qIƒ2a[JQ\{`_$ٍq&┫}7Yu,%$]">bs$weJ|I^ݲekJT/Ѥ)M)dR2 jeإQ*WR&[6<'+7'OPh+*2 'r|($N{"X'$Mɛqۼ]|/Ǯ /EqF׿. 4 8q7Š|Imp>E#˛3Pw)Hf͠qx { %4cKq;4ٝar.\mx} Gqᅩqb'o@Dѥ-&NPoUG3jA݄|r;*#:H3sf`Sk[X "K > AYJ^L |m5$փS=#46Œe xԴ #(w zl.+K!S6 veq v)_8\Z:}Bh<6qEyl%UP4wC Lr cTk >n3zG)?; Qssvipi81-]aW~ؐ1iԘ{i,h:bj'rܖVCEEXKu*.~g)EKOF}@ }U5T~0&ју'B1[ZiO;L752 FF4%5Z~Ac ำHԘ,w爭;{8Vb8kb"kx gwOWSs''g2g b783?b:檁-bε>Gb\ U_[T[@5-B [R3᭘Lp|ڰG_JsD0e {pY`L;uBT endstream endobj 151 0 obj << /Length 501 /Filter /FlateDecode >> stream xՖA0"e{<b\!KDҴhůmTͲ_&b2^!B`&P#c%ڃKyE]->(2}ue,-t+vbӴs @HGa|=ުLWEbef<ͷe]fi`MtyÉgzZQamQ w?w,m[pso h7@WrNQ<(PM Tу *y铭LރarqN~yր6aP8وsd2Dè,CYիu))fF||x\Ћ4hPK`c'.n Æ2v?-|[4}sEM&`m4uԐj1`cMU=W}:.I El۱ҺngKg 'Ve1qa1{b^ endstream endobj 154 0 obj << /Length 861 /Filter /FlateDecode >> stream xWMs0Wp>tL:͡әt25= LXD[۝iN6h}\|* i!h0DH"d lMy|t ;F[Қl*È3bF '1;5Cc0 btZe)g3}AXd@:K۪M8B(N0KsR)Xd@$&)JtB ݦbm,۽tX\R& Ә(Փ6>7jYdKD~pMˈ͙/SGeIQm‡Rl7oQ &q搷ꗘZh(`ś/FS*cjoM{ۅ#H,My Zf)uIܚ:bhb wO5&/֒W0GSOB}nն8{!drܑzYb}Iw:iNNdSaLK)6|fm4sl.jHߚm%HS?- (NH5Qw}C5Ҥ2P.3'073unWdS7`~PdK0"| gm4C8F~ 7C%gjؕ0(O뀫xqD4^ Ri 3kC,>$d}|ws_:u>_+1?7vjGbu~(G?m\V+H~Fwl#nl'}``>l5kAϦ!{4I=cVnc2 O0 endstream endobj 157 0 obj << /Length 358 /Filter /FlateDecode >> stream x͔=O0 ,,ـ!mCqJ"~>*P~m>͍JA`& Ȳp |%ȸ:ѴK0'Y5ŕʤEVt5OcU\E]8e)]!WS# I|>v,j)pZU;a/Ap^1 ,h˷}~- #TDz6 rYvU\gwMmb"îH"lnxYb3! endstream endobj 160 0 obj << /Length 1051 /Filter /FlateDecode >> stream xVK6ϯ[@ 1veo9iBߧ6t̬V{C7~E)Uv.绌+"t?>F?WbM'\҈/;K҂(&<ɇ2ZOۣ_< `9L(gY3JX0Jic"ucόcf<M3^,ҽE=ŌF?Wʟ-XK[wmmuǫPgd1ܕ$N͢[-Rap#KIf^y/X{`N]x󝗞ΧOrpg2 +s'f0Nܴ0ߝͬI-8 aےJ/?Ѕ,X 9 ȴ[ETbA]\kh" 8G=1=Nc)+F,}-|FYc%_cs  1T-2IhhFc}n}1X*H/ɭd6y$74.1! Wq`( )\$ 0kG Imo0M%\w{s@N-)6ցrσX8PH3sY~XCeH3V\Tzf2GLXh p?-عa$(0s@ ԓ f: endstream endobj 163 0 obj << /Length 1931 /Filter /FlateDecode >> stream xڽYK4ﯘNF%\(`TR0UXNL:vc{c2.cEVך޼Kc$e+yQMh*ww'mٛP?x_,ӊ,n~3_w}kj(Mpa_TI2vOsrBޟ@IїMIݚks>6UYITJDIyr"|Bs.⚳*ӭ\ҤpmѶe`ܯC[vDm(RηY2qRDq C\AS=zߚpؙ&9M(њ0_hnͽ)EJ1/3eN}qcP凲u5ѢqO0';ļ )B){ޡ ED+Na2ٛ켕QcO曘ap1⮛$`A{$J'};`Ȩ<)[;7yE]6 [aԵL߹mpF1PJ@ 8Ja8+nfO ĝ/ʩbBp{=R^v5V??޷M~dmS]Oش^~5m9tK0/OҟO!^nSӕS- 0jr݋Ci/6G镀\x4d}oׁe(x ~c|s^R)-ㆰ])Zm jm c{k9c pS 韌|MHfYg*}"{!p$ݘ (S8cԲA? Odq_;Ѥs@gWwݜLޗx#u"D>6a.zMDD?ۺ0e4D偮rٝc@/# H~,*I*LyP-] R}fЈ69^j#Ϙ;r<u4ߋn G/հ3 ͩP*qq :5xN^T|bT`wgIt2a¬.8[ ^l]20jZ;7͕q?2(X3H qC`Cuکxvsvx}x"[؉9!$H6u TJ((t_аXZK['$;KfwSԽxd]Ab Fɰ yhc${GrqGDz\kgn8z0k-Gw,rrSAĖ]'jPg=#epZ2 ƶ)75ڽrAk W^c+qT {4j> њOeyd/{_IM]iO<>uW? oXJ?Yl6=<;w9Z5Y7[]渾$W)X8_W(،=IX~ok( gx+/yR[L]);u3^1 ·, Ϋʠ:hW/2HNC]lp MB2=k2t{xsq:~0Z+^g5m =<.jA(^ey,>K`[Gp-LCrDg 3K)4B[([a_/ÄRe`d|v- mcڭO0>gKvɄsH1 w[oG$8@p# endstream endobj 166 0 obj << /Length 2017 /Filter /FlateDecode >> stream xڵXɯ4"IK/k b4$ y;L& zl'gpJٮ*jWw:`pdp 44M*x(_BF ?DRhlN_^}1*q "5U_*> stream xڽYKܶWly!_"%W҉ 4F_7OtzE"3F=026wIPݛte~ 㻲??3|JRuҜ׳r10#ϥlCN\}͋v蚞^_B3qγ(<<ͲexA9kZlaiwy/I-F0iꇠDΖU3ڞ7'24Bfxf0q9L# O%–Nj3FOz:Z'Zu[V5<ϯܢ+v[PЄeD{x.ʛ*L_8:,ȧ涸J}4:Q ykR G3ykA}w ?mok^\E{:֕O*{N%untqWS=HsUZv(3-qq,_{ݴΜilPQ8Ću* ㎰ރK[GVF-Aʌ`T!jh35B"`)"7\.nen#Ri6h093z fRD(%{6 eS[+PQQJ"Sd].bB!81 Aލ=/xexGKwJm7ԕdK;'څmvʒ#@@zx6zD+RD"Btco^HI1 !ab4+&P*c;d%P dm;#d(]*GXG;umKݖ&DīiYSz#,kezɄ%* * E"8=ѧ> /],,؝OcT؍E3P0KcC5`E* [IƎ%doc[9|#&C`;x6l(㡃U2i+9vs}-p 9Bϔ/}0b =bӮix; 7f1g6(❁y`*)nځ,tBEb [la/͏5}6RyrA{ۣa;12'26zNdUUslH|ͳW4ټQ7HD=%eʧ}=fS2l1"ƑuF ~oLT*OhcKJsf'.v5JJp"#!44Sl+[+ e;D _s*#Ho/J!UB@6r pjvn!] ɣ qĭ!`v,ޗ9tڱVNj+wWJ[L,=',\h6X:Mf28џ 7'>5-D~{3Mݜq񖟗rNuՅ 6@@rɩ^zjK ];WPF̤x884>](B7wn?&?'c 9qY}cMW~{di endstream endobj 5 0 obj << /Type /ObjStm /N 100 /First 833 /Length 1767 /Filter /FlateDecode >> stream xZkOGb%QUH$ 41[p6]:ػ;sνsLY`(ҒITtLJg1cY 4Ř)tq) a-SEI BFʹ60QLcl#ӘjwoޣAYg3bf+Rsg=2 p~p9 zh<s40$q<(݊yw%c@ţ} &IO@ 6nR=t&|D{1FP@!* ITL(IW!:R'i% lMкlN7-tH@]tRM%Lk.1fLA&qױY2IɬN;5v!@k[S݈KȘ,4Tf/ mWlr.kfY +e`X]2I0pzk\Н[˚YW2!W"UuҪUnDZZ>q'LM!q's@PO@Zŗ%$87e9z2u $m#wf[\nb$a,ז5Hل\ՆRVx/EL鬶*piëIwoUn䪛݃ll0*Fa6Uswޠ)r|7%d^ )+^ Lgh?87axVgz{}yԻGl O*Cl<5))WCS GΐT*_z'Brg2c[QeZ}x'|:1ΪG'~wp2PoGɍ^$Y?DZ~d{%]:h^T{c]h:Ug]EԁʵiQA;Sq[nGHsNƗ4=[t{y`{Sٌcƨ0û-yKlhz$W%qX4+گF endstream endobj 173 0 obj << /Length 2005 /Filter /FlateDecode >> stream xڭYY~_pBV/^H {@Q{)R&E53[}]_{;nXJ8I&2UD1Ji͠wHOHQmw<QнT*Fj${6nk7-~[FԵrkxk+Ǻpk7U=AFdv O͎I" ~1Oŀ'`ʼn8%"Avo?t8mw lkMb[pF3JLtg$ɹ3k&F9)~8nXnZw"$䑐|ҮdF\GFYÏu_k0x۞NzˢRSz)%2!r06aPDES-)udd؏Es֎ƀ0gƜ!$xث^ؙ:'Z=%Ki" cٲ',}0(U‘ޫ3pIttGt fr_jlfc;DΩ7BB 8#1>" 06I6{ 1F=ԺQ;c H?M` t6W%ЩxgOȨ`/'ŧ'I[ O'͸E[@:\.U+GnLZgxBe߽2 *5+ЖËw?"j ։;I+_L"u~|m3)z,ؗ.[E/E)`Ro_+0X* ?pl)S (ٴ]jꤸ )$$b+?a2 =AYL|-fB xEUVq ǜ2@Vĭh+ "t[* d-0X҇Xrtq(qשhZfH.ey-, cqWtcvk mFfy2BQ徭Z#wUCºDɺEsJEd` U}mT/M7C X/G:)T|uvL,Ln+בֿ#]=2"|)ߪܮ;b-b__{_/􇩙}(*1d5W D@v+95?~%Y?w{ڙXY#.pʠJV܅4/;~[]F4h>v?]CpbMxpю]qo3sM>pn1֫s~ 4^Eg<^UQgO|Jw>kCOw*&,Osύ[6QB7/l'R_!]XSc<ą}܎gH gLڃ m\8͉J>@3uAv[ꦮT&x66-c \CۘY%covݛ? c endstream endobj 177 0 obj << /Length 967 /Filter /FlateDecode >> stream xVM60ЋD4?D}\ tC^hВ!wȡ,;a6ECXh8$3。iņ1J7~(#6r;lvG\lR M3h#ד~c-Z}tS𒔴byQxJaGma5*[av8Bo)"t} [ ~||X1K+\kש~Cym503͓quhe~-GjrW@ qVd٤]sIPouj@#>@y>w{-m}Im!5[5'q ֮OGGq#-Vt:/kTflyi~Y.:ަ"7׼٫?Sii?Y厦78nڷWsvptlc @b{hb5q;4ðB{}%?dsq))4o5\T|h`o'z'&n߅Qؕ`6ITrRzIb8PPe $Z0ŲlL&ѵ{{;d Ixme Tٯt(.u#z+3E6 _x<Δ5_vkCH剋$^uf*-BnE* ސ"I[.R/zT Aĭ\tJ"i v9i˻HuKlg¤YC=׻tSH++M*o-CMO@ endstream endobj 180 0 obj << /Length 1840 /Filter /FlateDecode >> stream xڵXɎFWܢsar`0UsRDQLR]E.ByƞKU2X^7AEYaSM.TfqO>Ozb _ܰ.ҒK'36mN6XHWE^|㌱q[~j?'RŸ9sGcK;'s YA=Qwz0XDbڸ,p1ɼJTa Lż;a|i/b:x45gey1fmvY l,4G'.C7:fAQ<bʥH9RxU5_x&# mzUrf#vvZΐjD_7i+TR@gR&r{s(QU)g:w) TLOIg\`A;=][K0t^-8]ۨ;,s1 l]C=sB*ab 4$j@WN*gCRFC4Ƀm2+frC3zPY&W [OHv/ .URl9]ٞzu+h rhi4 T!ʩ)v!"^8rvJ1#鳾Iѿ]ꖾbT9mkt)|)ߟXsnDN,ULʴDnk,Sj5|XgJIgJS-qog= e`ʐEe-QlSh|GlX 7FM*MDLJ,4wٜv6*[?s^\z\Ba)d& Ʌ=8bIOn!Z;^wTţ++ we# Ydeޢ<=]i/.Yd@5th\@+Ƹ1" Om}35-z,(;kĔOgƆK2ChIit ~aLtz~H?`er.XA20;<d&C iQ .g0Dz̜j^DZ*(Wr/Onb/Sq`2MݶW7{:1rބ|%(4Ʃ> tɯ\1L)._.`s{K3| qoxHbF;3dĕX< m=3i:\ ηj-D%lGLБE:ިkNCݍx"\sl#MٯOoGUv A^tC"47U 2 j@A73h9٤ɿq'H6OMvJ}<fK8?Ũ;m<6$X`G.mܚ miP٫u8xWFS}sH6[%0FQ:{. tq1YB GYN5U6> wكCk\,g'H&b2 `W]- owJ>rvd{1j$ZȢfsܖ+HޱyO2a1\:O՟+>8 Ic$ [ŒIx*y Lgטhf3S'8L1iP 卄S 3޷UX-D0 AQ'`00l2x"NQ ï n!utL7ï.Ico8Z,Kh|#(|05rS/x #So&(ߟ|Y $Fp&ęd1@^FGD {eX򪺼TS;NB S馌Auc^_iwmt] dπ?HH^vj<Oi.Vy3 #KgӾQgƷui:3uvn=O,E@oV33})U;2$ySٶވ_ر$ցQ1J-8& endstream endobj 186 0 obj << /Length 2163 /Filter /FlateDecode >> stream xڥXI0095"%j I $Їy9dreYiYr|*ʖ[ */˻?F'agjrdzzЇ&GUQ@޶csϮ q`@wz[vvM~fwA/j"aqlPm҃ouLuWI$) "#qM\pF{\`m1RD^Z"'p[OYą疒WdEKr|n{ǏSk01\cE 6)B :!Oxv~F؄E{ VӛsgWtK|Uu*BN+қwew?[&)ƺ%[ꥡw`,"9:J]W ͻ2U0U*SMw^VRw;D)X&|s2Vt!AD Jšfcؐ.Q!o#u~6Pesj5(9M/465%abz2y-/}:bjuJY)+zVZhNy@UjgI =ks6!lBwMCz_Vd`5ę S~-`@R ThNH!y?%+%aZ̮VA)6v =%`>`PVț=;[V8K#9ΠPkTƵ䫱_EQqFSs|]'9+:te:ܥ>SL3~QRF/n*?#KP:NOlx"7uiXj}|kvu?wg:cҹzA^ʖd P de]Dz![ )ӪG$σcC!A-OoT)YNqkl:r(P+}䅻t^{Gݿί{-"WHuo):U5|Ǯ?x& ֿ^srW!At`,i9!r7Z WB.~}žm+ iwh)!K07t$˻q27 endstream endobj 190 0 obj << /Length 1940 /Filter /FlateDecode >> stream xXIDˈ* 'z92ôH#ppYUv9-/<_?xOu89k,_F||z{XB8St9$ДPO#ㄟ"F)= ]y؟"CezŁ1)q+zxLR6zNUyh[faQw72֮}N-6y%LFtw91XWh$RrC$?SE3ŒXRN~6]yb0Om wJ$a 9HOӾkA 0Pسz$bJ }LDVvQWiWWZaljYfȫj28k$c'I/O#MۓbCERa5|ۼ`'%Hc?Om'8l h=.'{j$ޠeJTivp! ',hLi@cZ]!r:p\TBRnUH2x _\p`i8O=eZRzĎW(wOccbZ aUq?s.*\߂<%G$%CU~Q âa86u]6 s Ұc1uWye!nPzlߨLy ڥKҙk-[8G+xߚnț+ #H i/HJZW󝿬違ί6~qX' d.kV_^ؐCGlTFa |(wPuyՂ h*R)N+ZQ x+T抏dc}o7pکx%w& _$wJ|ގMnjxO+$؏bNxPA %n6Q2@ٌ d`pNRcT8ݿf` endstream endobj 193 0 obj << /Length 1490 /Filter /FlateDecode >> stream xWݏF篈j@ ;DžδU_pѳʙٶ9L ?!Ys%WǛ0It}> ^w:(`@ad`HYN3K|T# 'LY[$.đρ^' SF3 8vVyk-,4o2ZAxͤ>bsDR $r  a-U ׺:(.4܎cW3Lٛ(;  ks+%.MRm_H#%b]#K}<.ے'Bb2R:3j[OBS=eO5SByg\*L-!p]< ڽ+|FYUo!HIap?VLϑ=n!~c~7Uw8R!K1#heݹyW *z=D(Xd&}<`Ή׏`!șQ82z_:3đ,i<`6>P?2L3W 週^ Ruoxnj j7zn}t5'N%5C H6Ӝ1ow/o~(5[RB_@Sgv'qf30D`r;t=[M34-<; _[qlHOuTf1eU 2d *#1UO^؂m(de8:sSɋyr~>Ci_eU(\]^,؏7^yIWϳThp#nvfۗSEbH>CklG\$߀G2$ endstream endobj 196 0 obj << /Length 610 /Filter /FlateDecode >> stream x}TQO0~WdICMP R4Ҵ!mQ0gǗҮh}ᄏΧt!h܋'('^cCkU߿&b>Oұ?xt J?{> @(R8s?1kޮ;j"k cjNzR tѝ/3Y;7599OM^-.`"Q_vި0ކ톘Cq.ɞ2'_*"@ΆMn7m 6{Cnr wL'Ň\j޸34 JdpP8s\Jr$=vKvәJ F9zE\Cw\7pIB/C'ilk|Tz`8hZZݛ_>ȞJιժ.nyCs@!l mڶgai5`;S63< rK6jLj}JN,Xеbg11I+BO^؋ e+LA\g4ERf-Z[8tl*%媓k[=BsqaJ=? ~wad/.O" endstream endobj 199 0 obj << /Length 1821 /Filter /FlateDecode >> stream xڵXKs6WHD MصciIKJHK2I;Ӌx~~ͻL(dzI:TŌj3"ivsFOow)48'TEc|/N1'Id9|A$٢|3'j SVߚn:q~W~+Mx,tkmV[]6޶E ~tS&q~ QKBϽmz[Vm`WD'OjJ"2:3x^X'nCʢvP*Zf}Sv~Xyikl5}^Wa\ٮ);m۫2~}rKMg p-25p? g2uml7xJa#G<u[)mOL˺* ",DEۼ9E5aj6u 'mlZd|x%,G`".ionnﯖ %-1[NWJa}cۇ&.8r rWρugvD)1I@+<:<ˍ-?b>=ε`"2wCnN9M/MQx\`e!]T۽ٺ9SDy),*)_P0Z1l:8rr r싿 9 ۼip ) ^0}DE˕a ag0?l߶^{*ug~ؑ,Ly҃V@-gdnZ+Spn${ނ_,] S\r8T2=gHb,§CN8lryRc{Q͵9< 3ӂ2-}蕜*1 c_vg;?~[_]_tݫ?5C&+s Nj'` NRG,AJ7G: $&1U2!agAsZ cS 󫪦gF4;W``#Cv`o~;v:;,'Bo X3M-0S>}{bEZ(c~U! > ;^vL#e<7{:$' E9EC|׵+b mC@ bEnO8M1M4#% wy*7mSBeo3P ̞$`@h͠h~ > stream xڍVKS8+rb,[*T(٭)8J-ʏO%dؽ-K/WgO(%lN "f=QOExUvQoNͼGsy3ynžM ~#ҝIsPQiϤiYξ`HQ8 !( cTj2=:jתit><-w}h~2e!ɔ "Dhm&^Ļ$TI.noVu&ɰC*9j>2 gBkb +/ `o5ՐQ>XC+a}C}NdGyHb.@ʾҲOS !mx?|J[K3OtUU}7 $3̜k]MWC\۪oBAstzc:SIF6`l̀~<0'b~AunZnLZ禭W0پ4Yl?E*Y.F8L e@#w'\c BW+V[^}>l ,J.[iőX D(%V[Rfiyc4F@0 ƝSRL؝jפEbO#:WO?$4 mjOKFu+G *tP3m'&ETc},ޝ+dJah>+WB(W{ˁS.N\L̼Cmb P7K5#3 Jxi{RwQ2 kN‘PjOׇFT+ǥ٬98jIjL%ћ~)DY;a @t +1< nɷn3XRFaNݍ;GntwAqq (~]!9g(PBU2Rc[i7 ŹǦ/@CȒC@^px;|c$:tsƍCq|_.ә7kR ߮;l$]Q˧~XrذT .dģeL|(aFyR{`# l@7kٗ/Kt endstream endobj 205 0 obj << /Length 751 /Filter /FlateDecode >> stream xڽX]o0}WD*AH&MZe/h/B0,ZHXݯ_BFRTsm?L*= T{Ӆ''8+o:?'s~<0a }I DbN+,Z&U$(D/{ܛ  )qADu" x6j ?uEل@_&$\ JdoŒqXN]`+j^S'F.\ȉl#E);8 r1P FlM,(M^KHw6$K8N#YS2kp#8 Z>J%q䫙Km[͂UJ֘;xm1oNBsDtV}Z S7 ڤϳ(Y:H@;+[*#Fo GQ֎g(_''@u`95ݝULJPi.?"Dh0fר64JK%.Q(fUQւXy&}f⛁q\L_S s)VZiqNK񘏋EݤqvmI(y-W}ƃkUD`{W :x3|d{',b^Xgj2wօ3kl#!3?دFaE,FTwDK=ά♵]bw#w}qt2[~J0\sCIq+)u`*ETAd_ >N g endstream endobj 209 0 obj << /Length 790 /Filter /FlateDecode >> stream xڽMo@fK~RPj@`b kҏ_0dpv K/|\\\^(k)Y 02X,NS2L緋ϗW睊ƚQ;~T&|$9Үwud(qq /UeD3  VYY&iې pCorDvAlYcIBgmDEqᅲMYCǣ1\}p|&͒6Uw)2֖-& 'X ,¡7 w^׷R푻59KAzm:ÖmI)v2XƖ_Ҟ)EyגfLb2š@jp'z Cbr0u%CE:{I:%{s.6X3mq i(\lqIlkE GVi;Je8bKټty6riTy~g%O֚FIYYV;j[^įd=3$qɶQ3t> $14(c8Md%:E#h,{Er_ ywH-:8H>V vV(Bxp~v[4ĶW 꿕`Ma"[#2ky28d|5T7#]y,֪ʚ<7?< 1Qj|^L1 [ Eχ&`s7Zov {͋O) endstream endobj 212 0 obj << /Length 814 /Filter /FlateDecode >> stream xXMo0 WUIq0`9 6`.6B2)6K^Ԃ{h2W3xRD1"H7_x?'W<,l褔OLng$~GIGnҲP5/T{9A[}w'L>T&dJE07'.)-F b}w־M|.S][fRj~Q!DHCH+!_XpAt|f"&Lmbvƾ^o&3?LSRε/YsOL}VE:n*ů6bFͱ>%Gؤ6vVlE.!З a]gmDʸB7e N3xoQ'',sᶦItJĎTgkǗm1@bgףեd2f VH`ra =`dqEhd2k[L“ܬ_EPԥFR)HM0f5[Czuj٠)Oeo 䴻8p8PxϬvS>J烉C$ãyEA!wsFVwSfRzU ]b6U"եP*_`H?XV]2*A=.u~@7x֎'OtAS{ۇ"!z$j,m|I)S,1p)K+^hރpi ' pR@&uֱEm|9i(nB},U endstream endobj 215 0 obj << /Length 847 /Filter /FlateDecode >> stream xڵMo0 >&ǩ0؀l;umQe~Jl#;| HJqR ʋ'^H"L|-S^&Ui 3濗_o~ 膨}?TUUytL#uQ N4˚Ih@U|+U%.JZ΋\ f!T86`;({RH4-T9#0+.'n%doe*'j E"t}~!.D>JI;3"<3vc "٪)?ҙ|0ٹcY!͇++Hɽr qKF(!PD!u,T̊>Fv39{!c6% JB0'=$.ǾDK/0DG v^ҹArh_=VΉ:$D0 a9l_Bdgg 9&< ȍ-0kg@.Kh{WR-3G[|"(< d:w ƒC:4WτT6ڄe!m5{ HT<ߣ?:O\)JܥbLi=ORbg6'p3G'h% E٣i'[~uݠe3xY9'/ .HJȁ1,^cܕ c=n&wўOY^{xzAzhj !LOv<S-JYMpٱ<>֨sml?gwhI9݈AuYΠGm.q|!8:[àqL|Y I+ endstream endobj 218 0 obj << /Length 774 /Filter /FlateDecode >> stream xŗMo -si=L6iM;V;iӏm\lmXa` c$X,X4=hPB5/aTYc4;ԇ9 hT/<4ӪNՕ+,i8>{+RˇZV"␉(@Aw4Cd!QiTQHrֽLd+$4솰/MiJ {Vi"u[}w=\A?v*I妦\1Ŷ snRmJ4Q FVύg[/ l+HN57!U^UBt{Pm\ziHBFnH 6B  !4xa5\$|;) ێZ:ړC =Ӽs P\7\rU$ nM8>fCW3{\Io@kkDw{*[/P 0A ީ^z *ɴ.~DO;-pсDn@yȴ?i#?iNDsu$Ϋ^r$t]7m;`:e 3*C(dܩb-> stream xXn@+XR!XETWRn.01xJ]ŝ{9ۛ &B^vON|b~9yX})*wk3l?nhAE.=W^vh[);V$M,^G[)c%mFlUGt!: j0Pޜ{n` ֝[w"_h+5?Aqj&RyET҆|#lditP׶T*`1^;SW[b!Z]éy%uNMk4QQnV@ҙ2l}b"v8:EumbTuG4)kTOuoA̖ƀa' 933 ΂wkNY-՗ Wϩ:`$(v?e\u~GkEf)?3p )lkc{Y[ 3E\ [apsgapu0}G$hɉ gʺr"p~u5v-\L0JAc_5%51Gom5(|vbg P%nz@ҿd5q)`!0 sKˣ+ x$dvl`2#JZ+(%I>٤Ÿ za*ꛎ0gRE^΁Gu37/϶_E(b)S\5־ñG.RͺdmLAz}µ;: ՀwS77_V8 endstream endobj 224 0 obj << /Length 854 /Filter /FlateDecode >> stream xڽˎ0.jۘjV͢ꨕuSu'C3Ӽ}=҆v|nF3FʉOœЋ\g||̧7ٗM|:>p7?"N"컾4'˺4Ƨ'h#v5]](B;^cy@muSF9.3 _J4P׍m?q:o.DI+st ,DV #7^0sZ۞mG7o.cֶ .q1+ݳ. d!6 IJ܎?HKFo`@ dތ  qǪ hlCY LWL]Sף6X˭I&+]Xj'4X WLJMh}n%`jAݚ^ ץV$eJ~s]žMƽ0!=>n?o8aNQ(:zޖ:;O"Q'88 !h;%k?`3_K*8=oR%'b􆱐xr|4eQi(6S.14k;rp\?@EZ!;I)Вyo¿قҙձХ?YصI,♗d[lvQdxIW/3A5=;>L0h}›_Z endstream endobj 228 0 obj << /Length 863 /Filter /FlateDecode >> stream xŘM0+V^ۉq@HH i+.C4la)Iv7NEZUOƯ'};1סG3gr"q' !&wKdUr'/SJ$Viī7N?\ϼ^ Q{_+BfHV׋$RGܪK-6(IlD.69=~ڑD&8"^_Y՛Zm.uSTl h;Be!*&;ĉ&YNжpm,~D%3*W"^"8Tq9YuPn'=F8WY(͑E-DY M)H%P)򲈕17sǝAʍ' Y赓w-b?b-4 fiS0>w@[nI1db۴໅>MlC\`^*M3kܙ5t_1<ePg%@ei +,8:ưIse0&[Gbu}u|g7#Y]f~_ 52Mݯo2QҠc/qPSL:a"YgHxT>+LwwQ{x$2v*2I4G92> stream xڍuTk-("t)ޤi!$tD@:HH&@ UA* H){׺we䝙=<nv}#A%(FAB@&H "dHo?DdB>U0A] QHB$)D@鿁h @슄t([A89?x t# Q0sğ;$ aF='7X7@r !Y @ЎN`!`=um!;NFAX4> F:m_J0~?a!+E:Qg5*hGG %ٟ*Crn(-;$ js Ta88PJRTJs!{8~A?|N;0 C8 m@(H?no ` 0(׊?Aee;KP@@ $u?}D١_=!]L. -@ _)7dw+H?F)눙c 4QUAAJwqSzߩjs}H]~pnskEQ-f[ zne; с,Ót_ph5źSwvOScy5`y+G&ͬ*vtYf /[ Z[F:d*9;gWqdM9/VhcQ@O^PuC!+KZqz#J|W2O~12͂fsk3:eLCq\U3-56U=?YVWiw%MHJ_O[؎UFf]#2}_ؓtvQ]WX[Z5Y _y-sy/b{TR]?m}F^C/}ޔV]P15R톂#堠ے7oל by]6=KP18P0T~|sk]z0 ht.HՉHT+FpEWf=H;#}ڍDZ 8R4 ,dT&:wc}F3I j<;(ku~-jY9w ɫYФ$1Da7|^j(Yo|~ٻTq)d~{)vY. b"{wD[ԇbKh=ʻ(eוi¹+;wv#4t":EB[&4"Ö',jLe{}KIdq^6[O'R%fG5ǏzSTO*8]'a%{Z0-8?뛇4eI1w'%XTǍ)Et, l> d'6Π'?~L,~Ob gꔌc.l8v/a[Qշ'ϢT.b{EA (-hδB)_44N {dLŮWq'ٞ ;!.tSsH_3IegMM5^ULBu540~tݝoþy\"˭K݌ԙU#t:]Sim[2"j􌾳ޒkAWț:{fQEʧio^#za#1YuaU 4tɾBfynX9zbEX{|/'hMowi\]l~nBAɑemQ;ZWvQk磐ZWнj8D*uQ=X)0 $fD`mJ>uuceJQʛ6\ѣ5(}.)*>xgT+Bs1<[[h 5ӘCCGwc4c$[5~0ww.&1LMHܗ*>`pIpdSRȁemJs,|w]mГpMr.#R ^ri`KXwh!揱 U:` ;}C tL&_OGoФ$Vw,|x6IM w{AMM{ m-c׃>OF>!@4e< c@\K.pq^bVn|L@khaィ-S[_^wǫ 8"^S;{,y\n jɄߖ!PsAX!a%˄3&Ct5PfLmWCS>")ÞpaҕD$چm С̓}^Ahd9[xޥQ۠l NW/J-q·KfW  :j]sk%I~+0>2Q\IߤPY 䣬.[?q+4XXM5,zeT5yllL'U;ìLůjQ=cCL\䪖ϛmeIQ<񃉂x{"N꜆ kb탥{HN>TFXc!B=-ͭ{߽ee< T+\^G{*lplόG(r#&`GŌ|[b閔w[Of}[2ޥCɘ pZie8 T=XtE}_v bQ-{+SVxPLsܯ]_Ҧ-(<7ԾQHwG` D.6)kj˧MgU;9pk|2`͓8_4qjQD7&EfN*]/tw>r>ߘ+s>W,6<'"PaUD5Ί i[QW5 {PYJp}Wُ¬T.|HN.1:uʃ9Xɫ+Zр&)Ye_}'iG4*y-8zDWMs|34 ܞZu0:JX6r׭_ؽꍡ2<fWke_`H6/!OgdjH͟ S%yBfr =ώ ukri67bgE]+>vcwk Nd:dSM$"sFPA/"[1zi.r?" ~wOd~9pُi}mp>JB)aʴEwY&#n!j%dGz=pFdѕ6XqvY|}n5Fڦ"]$6di%-TaT1 )Ȥ}/(+֕) FaRyMwHa[d`Ԫu_*aև[$L`썢kCOme_Xbmm72[@Zյݢ; M_r_ʷ] uߜ0 (Z/(c(/!-clحP3ɘbvr9v.{lEely*t[?y7gp m:T:ϩgB'\yVmIԓN:i,܄Pu{@12ogXt+B6+ή4Dt15mJG\FKv.IW_ P4 {CxHfJk^i>H uIEA}ˣ*؝U{/!.ūGAvMTƊ4^)"$Tv(=ьs>u_^']ketj n~/b B'`zQ^ ]O/ޘ0Y^VX>o S~Q9 S~&T7VB[&gmTqDpz逦 C+|yWxxp /3zwbrL_7/_1K} 5KMMXo]Y1ifɯ|' ('7A(^~EZ)qW ʫ4ۚ n^1mj«JC^[fΠ_I҂2D0fhlPVŚ?gR&3"ͺ W#|מG):'uݪL/(rʉM+cj,;J' ^<<ɄȘwj?ִPu:bJh1qSТHl zzٗ$LK~ҫKXٝ /Xp\MJz9:<Yk36iCΏz%{:w4(YpĮdz:J $ruҳRp6ks$vXzؕiSZzF3!ֳ?:GW&ٲw[]|ڊhc٦oBEl]ih-{,T,ˠ`Ҝۯe)I݌ Jܼ[39[›1ԲYD!HO,P&)7;Rh[ޯ6?E4o =z{*]aݿWB)\?2x1O x#s;['lth c8]>1.OVn| %3яqΒ )G66IІΫǞG?n8}~{q?_PMOYBY-4qMM'C m44mYl2 <{~$$m=##}A^ G` qqNIu)ٚ|gE0K0']:m_Hu^=Dgi]XŒ?Zhv琊1{E,Q!<7ë/=%~¾k wmtJGjQZXLiBrMe\DsҗG]7/o> stream xڍtTS.JS!Ф{bBI.J R" HrsZgygy¨#k+/X T`^0quRP ֧`q($@ PH8E톰`+ p7 4{3D Gp?JKc0.b||Pg4/ND`=8~ hA&%b ?~}-' Dc3ܑ6p7{8h߻ ; ]HoE8m% ^"m~Nh6E8AߝC%Y]xhE#~ 6(gg8&՟ ^7ߟ:"QH߿-ickw>C$ugB`"{~7vB~\[p?-G䋆z;iA v$cp?6vn/=^6(˧g gP^/ / }g(o"mQ]=e `ŴPX,aoNQW!%w'a# uF8y`Y*@?Մ ܝ;b ò" G^pf3@uPhį 6 V`0G%Upه"%<~!a&®k Bm^ "Ql EZ/!Q=7n8 #BC^6z򬾗86y_dyӥ8f4{N\idТ%zqzw^!=u{ SW&}蘦H^1uGJu鳐ǘ?NdRh>!J&]'oR^!SS$6/u[걕IkL!W_3QW 9!}2ɻ/ (_%7cG+Nĭ#٠Gd2`f >S*NMɲF̕VkE%wݘ 8d-z}KR%džzYgr\A|1Yz=fN$7R$DJk:ct$۷ V|Fz2pk^ H:PvH:0Bᬲ"oL$>v?wJgjІvt{_LG,Z&vLyv. r ȱHQ.L:"umm-GE?rF_=,gMT%Xϧ׭jhvnu1 R00s?,Wl{R4(eЋeA~g!uΫ >vWi{ĉɮ,t{+=pm%nOur#8\-I^p{RƓr*-KYne4`E&Fo-㜋w@R>{K1arBZu7ƁG7g Ց" y;u۞ӔE1M( q+rAxMaxl,TjSSƕik[b:^ZX\iU˴7g}wN9-LIݔ>΄n:2$AFW-l*h[3'oRH}Qhnkv0JU 65LO*OjJV]cLƜoC&agd#r4xtZHҼLp`º`k|ɓz.{?e m'fwu {Os[]kX P5r`EO^*qVT,| S0}^{jxC#)d槉섚|#R+X:XC鹪Ť_߬`\dAEG[Ons-h"<Z)A|\[mN2_`FM8(.r%)ݢr(9&aTPhj„ܗ@z!=AfX?VRm ߶x7gA Ѧ7Ka`Iý\^6>_)'zBR2̺cFMseqq_?}Ԅv,w6X^Tߘ&3z|R!qÔ,"v,՗ l} 1mwNT寮<Y5o/ғy!+Wv8F $( T'm0uM$#VՉA~= q܂LY+\.5W$lJw${,07:tLUA~)Uli{RѸzF^l)oSY^݉NOfq;/rKe쾀UW|a tk^B&Ʀ %؃NS± _7O՟ܡ[ӻθA~f!"u ̭m&qF0'm?5rQ%S)I£{Do+ECw&w Lǟ "oJGR<LDRzэsz:ܜ;KNAeki\b7s^hҊ ?zs;gQy)Ujll$6~QTě[ZL D s4+#&̈/2wa%zwջ0$;џ.+-ȫue//tvt?mC{JB6ѤQUp' vA'=GS ׄ" R'mڦSiV\7琧/͝rKq)ڞ]Q%La1rPd]gAt|a/`+;ɅS uG ѡ՜I>d$FI晄>H3Ch:q=8f)Vx T[ &nçb0ƽlq'{űGPD+r+Ň3G R[ȯe}EX3x3[kICeB\C K bLCk͚XaaRrQ+Ց,{TA16MmHAmXEy>N׀[G#h#.wWrx1Pũ܋a|e/xEF͒[]D6݌JKzϞ8?!16e9͋wYk kɜl7 O,G.,Z8㎰.ALg"y0".9>nUJ=nԝtqMv}(gs=Ig߫Vo:e|6j_{+^ Y[NAldԽ5v}1ff^(A%;> N5.y;b84>;B"VzW+FI&Q"mEGѢ,ZL>Ko cOл]>q<͝Л\#yC ozWjw'y3lGiJgQq: l~MB&^Qڍ[lo;]Y5p+Ԥ7)Zl;Ȫu6\{썃+1/pk_UZ-MɸnꈌGsO4 D%~t,_agj _>I dAP}U{ eT\j(EE{霰a=DDNLW gy36qQ͞9 ¡͹Er^{W9+ɮ\ =FE4gɑ%X~2.z 3|%E<+Z@P!/=s9?DmdE19SGdYĶWeQLXZAhW-lin8I9N7r`(˫}I h  5c7U8,] 98+㱁|uQW-w3JR a2C+L&Y",OcRen!AQc$;*m֋R?5ڶMqO0, 3q}w̕>&F=QH"Ј#I*ϖb~}*TCe1ЧNdH-١-ދ?"6QyGB˰jLJ&䜩">[0Xaz7ZӅvy-ޣ͚H#{&̄kvW}( ؍x~Lgl_e"Sa*B}9ap6hy4\C ӹIH"b\va2C!E3ŞYhONa&2ԘOShj8Owezg@Iʈ}* Sm+ m> gk_>+prZ<9]-OTeSN9oۡIDžMaq!~ Btqi 79n\' ،ܰL5 &Ṁ z:`[9w+UuL#Z5B7W"}hw%ɲtjpv*Ttx0)ak[⻏L_I$,+gP81LzR*X~"sN ?cw'SJGB}[B*ƅD'jJ\<"l-* b^(Z͏GY7#k=ŀΡIV/v_!V͖8K'%~E[,Y ;*.+x3l~]|uY^vG4_;M_ V%J\,vÒJg2Mg /ۃ*17|3c*gUrKuWЬq S%͇bE RB2JoF$vE3q<`jtE<{?u} endstream endobj 245 0 obj << /Length1 1397 /Length2 5944 /Length3 0 /Length 6901 /Filter /FlateDecode >> stream xڍt4k׶.J"F>.BD!`3c F^D{ { #(AO{w_׳>38SY0pRha`` ^}O$*@$CF C}AɧB`N؋m @ rn0 F XgŎ0`aXTvbъ`7qIUH :L`0 Y0]8%7E9b@!0Dž' .6aƷ $;_`#}H'#ݸ-aE`$!ၺ{ÅwXq8g?\rs!?ӆc`cYW$gGBDK#0=?&? r ;8K o惆"A? (4Xv{X',^Q@(8H_0c8 B{ 텼($_00]ߜ& Iʀ 9 Q?YqC: 8$fCX hPx&Q_nx"h_A?^u16Y߬|1H'p,X~? GŒQ @ w1Y׋B({K$9a20^IRFE( K q$ {(/P C\a#'Ŀvxb0Kigka0 B97(ԆUkpx_L-30'4BU!+Cԡt:\?>ԓGiz?d F9>Nbf?-][;=i {uqu}e ;UNcL8L]'Êq^f<8`=O 'Ug* M&ȵO7k kQg{/F^˜L5i soLp)0)j&|2$ܯ'0T6#r%{;j .!NߙUv!+>CfB"Ek`Sj€ŧ]e=(йw/0PٍlJp^IsL␴Ы !AF?M )K]vL޾.𠓏#|][ggUK-[olY|~;]PĂPSgA< =x'm79yVbqXuYE$|~9͸\'p/)gvvf6zJG'iP>z͐5qVx3 uctŗjw2Yz{'ϞG`T]Փ#+ƮsYv_5g.jn1_VHv*4h<h*'K8P`ɔ߆ƾ'UQ+vm. 0y74WxPf0?a.Ĩ}WvZ9O:,T'mGf=݂}+2:TY^ύ}QiKA)}TF<3{>&h n+v=(B\ui%?IkV}˔].^zdu?+yZsHJP)b2p-Ev9SԆBrnM^5.U/̷vc>!f/39 *`wY{<2s &?&c3 )} <52h0C2G)5v;޺RNAgJTbE+{.ٷZ䡦AeȀg "_R$ț30I7חS҄iR?- LdѻʞYw/O䓺s8wXյk_5}WrzBDFխ B.bKii)t"'5{iW>Zw6n|fC++c2+f-SQC[C&Q~hlPǣp,֭lW\|X:el;-iJ_dMgTVi\PYhpZDaHx&(Y۝[НkSu q ?gkJ@CrW/]"U}'*S0A~&FTmRDmG'|krtQQ ]ÓX+L0"h_xgk?5γ㤥9$* ? ?>$R Au&yT_cqf]] WD0yRjȳR&~ 0"| OܹjZ٧ etaOv>(æI8oFazoV5 _YGqEdQGg (^^ 6q74YZ(嶭YTo zvL-)`T,!Ev}MvSHI5̻-*c8sδ.\ȇWwKaŠG8}TaCXlIRv$ٖ8?4+MJs2 P$^17s>Th/Dx(~&5{ WH5t|؝0^{KquJ:jYx(ԱNJ`b"~H qUL r5e΄7qunD窭0^&vȹ.02U棂BWJontZHJϏ5lC B}}+>R'mLZm9@lM>Wvڍ*?閜m}M=PUIl`^nA<9٘+CE jaGٸYT:=z/I7baVh4i2s[%$kqb~`~>_9fϦ]U\<:aDfѕ˯Cc>bZHx,'W+f?0KRUaB=]8GokJY+^'$t4&ś~#,)OGM%IVFAUsur7-ѵHA^e~ /T41xKojH H)QG&ot`=wC'ӧLt #LWׅ$KvMU.M:|HKPٚ'K;Ȱ ).|>W'ZueGZcН&1m; O61DWlRBLDʸ>R_V񋘸O;8ysDUzOˎb_,u =*Gᕢ0ٗÐwv&2#^bޕxل4PESjxFacx&O~7y꥝ 9Sʿy1¤~$14z,̌ =;̸&~=U`w&aLU2v&Y0s{xw3#GeF[=v0 Hu3ḙgm7yCg:zj/` |Y m`G:O\C7K6ܹ]^'WuNĶYm-W%TC}jZP&Gº/}e̱VL=#O  O ^oћ=t/D{ªU _( d=<FgrhEK5[Y&eB+( 1Vhkm -u6c+աFM,ߕ  Ό.R;( fɎU[[VPXlkX=pJ=[̽32T?^[3b3=ip؎@&~\k|mqQ/ޔb'פ-3TW8bKB49y )F ҂R=k% LNc9V)n8=.̦U>wN6C;{:L$(6B0%h[yr1R\s4 U\G ffV& V8t)C=|t5ଗď_r)vSJ0UsfcǾ1TSKYYgq`q[qSG\E7rf]%oz-}"j".ð̰C]3~GZjc}xR8q>ʈ!UZ]KD159 _,%=q< ︦AK7wgL}]W2u۲ kIR|I楋\Ohfo-x{3q8|޷wi۷jGˇ=zЦdZu! 8dW8UǨtZ|SdՌ, 5)UR#K5Ԯvi늉#}vБR.A\^l7/:MS5wNV0%|Ib0`i`"v!)b p Y dqڂֆ!/q91s1|NUf୵ UP6)ReҜ7Smr5?:x)fJ(iw$DفFKܻƞZIO^elW =``Ta}w"}`&9Aۤt{ƱcScR@ҟY4খ25lt3+jtW$+4IFg4eAXU E[,d[h94}r ci *xM<\iu71>&>1Lm୔K*k3b{rwM4bb"WH*DG?FyS@-H^w,Y$=2NY9[ Nˆss!&#Z(0 KZ,={O1ߨ<+QI 0\,M[!Il%se+#G` kZ}hfβXيvܹ}Jb@\VS?z :rȣn'6qf(Ѧl> stream xڍTT]iICS%%f`fiiiDZQ]5ksγ}V&]^9[5HE$ Z!>A|VVC00 * p)Z!QnZ0(@  @1IĿapI;PAA|VlD%Æs6VP: 0ـAHxDH{xxY9#`pG<0B [vVΠߍ ?aPl"PnP[:` qA8kqu5  lecsvz;0QCz"yVP_V onXY~nPX; D!_Jd%E"էlP{NP Ղ RSك1 y8Jnm qP-v @@~>>  {0(dg< 0@-[hsn&yy'WH+(" P fѵU߱jP;@O[WM/apKb,7DlPC7v?Qv@~[9~ ˎ}-Jt} #W--?jH+_" ꂑ67%0 ҅!/P@?l(U8 M hyfK]"+8 5bND~>( ),G=K{|p߈8qRon A O FcJ9:ލ!q֍ǯ9y}f-nD8ɜϗ'r}Hה8eg}55&5]^Y&n4~MPv8 M5MH7̣Sųdn tjCoBTd7(,pu$536xd,{Q=o7F(dY0|{P񑆅Ƅl`G~i%@$UK d{C[ ӂuXB-*zQ5ѹ)[8`^}SX5G'|&<y݂LR[_$)-ks9OK=:Tʯp*g.n[T=1gjEi:l_6 d*mwrUk̜  Ğw^Qsy%|Dpr.EI9}'jF svL8, 6yIG$eB .KyAQ<֊tsq%X"wBh ~!FAt=~g#X$:B`l@4s;Ӄ y~݄xl TK5d/(g|jE4{&=1u4mtWv$ӽ/(YI^[WЄ~1+ \Mh kzȩU1$:t!%̘"tl&C_; WN4r2ӊH-۲cVӈ/}SWД^ٓH2V@ݓEHw1ej-,;ų{oyBGe `= okX-"7&֟ PvRG:HfI{ hԺ0FFIWma mj"ۓ^*Si}r&ށb@꾛1hddNIt}>2㐼ȂF&sߨ`d}Vӓ{Fh[-΍-mjY$K(fB"J_I& d?m^xVz.>H'x𼿣5qBܱ՛Fm|n[!4~Uob~uCߙv\­ɽoNS \Z"^ n^k!gbw2wD{߼'WoNji ].>"/c#~X^% }C%}bžI<OG,֘-Y=D^@sŸBno]lM NXLuQі!d[YhM_b'\gjT\<4'[V)Z4bH筣%lQ$Od*ڵf坞Vy5R1RaCzy;os=Iq45 ȯbGWiMF)0؞4asH&Y`+>@hX`ұVlr1S5*b߭ypWBt zagYj,tOyTC#[f sX^[~mwgh[AsRΓeȗ' J:/8i`  a~Abǵ!UXAʾ%ͥw&g*M 9jGjamcx ȸ`,SF.sZrJSf+ၻFV'}^{G ^7 פ|GOyyyd؅(x> i)myエ#B}MW3^ /33bQlC(C鳻1vj*fž oLi|+R>+.p˶܌KH^8'K=d`E&|JNSwc 7tqQ HaN#4fiÙ]ԕ |TgXNRnd-z^A8|)G>Y[%fݙcv DdߔpnF&۳ag, Ys40d Uv{.4~IjBW!۳ly0\3kt*vM # ߓH}'һ i}IjBoYʟ/g5BV,n& =S(| SlfE4Ak]c咁*A*tQdkR/Hǘz&p:M9Aj,IvS̋HX4_)vZGe0|z|g5.UOiDj9hY8SրvI6 W@G l*]Kzf)kOj;Q֛Nn^K*V߬?k^nD>&xlXiΩC:hʼnwq"@J GKWWK_c+ >~%6 ~BǮu:qx4 tLrcLw $Sn@7B ϕn UTC%g&+ސfB(Ғ?29y3T)zOӱ . %d*j8QFȉmyF='箰闏IC "Ku1 {'ʉ&ײӴ[{@W|>`A1 TT_E(W&3o?l6 Kr}ʈxVSCAf_+6{g:4C6Lg3wT)5B[>79{ߍ"er7=]m,wxt])Ne[a2;kJ;ǯTCiR&[@G>k#rbdx\tO !CvYRj7-K2̩sS^#w5w+-t Ln%amH_|ڿyioHX읧?`] e456J[dnԃfmר]điu"=NBp&E0aY`cuU⢐t\w9[:D|efgAqw%a0z؂|6{~i1~d=Y6 1M9QX?yu%t3z(Dt@H,Fa[R#ab'"j|_S۾2Ըz68Tz\0kv)E@Gko*kܮg\jJ0K#9+ p:4z%̑k*vk kٓkq|  ƅZh JF4jRڄ>x|>ĶHbѸp%-ezU40қ|HeZeųg.꺂 cVQC{_NgL?\bwTXwۣ>hyVR)kvvaj<0=?/%Xj@ qNUw%@Q$〭RfSG<|yxHAPOy=Pﶚ1ntz8[jSDW)'Sa'Yw:%Чfν>75Xt1/`elpa`_i$brB[=ȧ}lw-[[TH*Ɩ_Y4o&Sq11 eŰQ9/yi!( bu"n9ؑevEd`G ;p΢a}N2f-q ?}2wt8*.&#=`ܒE{ފڲu|SM͑5qYl?d# B_ZђYf<.5x&k)2PT ve< IZm<%;[d=_۩ow\#p шDW*Orj%WnJ| XixjZvft _*K,b:}yjqNԊm8նƝYJW/E"7vP|@驇#˕hQ45(8^9H5wzEmmh݄KlJMƉF&|mRu+9+GZw}pt,D >.uOt'D:v{3mDk֦S~;Д}V: %u[̎~wixRt%F_L<0RHfU.2vP뽙Q).X䣮w1կA[ਥG| O:i E}),u>xS9 7ckkd᾿)"uݦ 6Q=sXݻ2u9wV j~^INfTu7]гylRcv+J&1ӓ)@>yw `a v 'K wE?EB 5E@'[M2Rê=K :\J¬ヘAz^| n` zgŠc!3 %ٲϬ1O/+GE6Sm6x1K P:>+fq.Q=zeTR@*.)zgUXLGy9KoKl C|x?֔T!tDc/)V~|ڈw\5*t]쫼o~5yp:Z Ja,z!Yor#^Ⱥ}I1ʮm\&g^˸onidkR97gCqǰomOK4҃";!ޝͽy Bj ,bRz]v՗ usCMAC].}pj"BeC$Y_v+3b6Ю/Ty'`2iSF"Wޱ)Ά>R& 9W]g u>ޗ|4KM.9h׽Ƚ[U Z:]Y>9RMe;zT$7M0x{a##'2(aGC54nNeFaxTHWsZ72n_ĬUn=Ч^ϛL+cIL։. S, tcb(Z>"jVCQ.$b=@T;PAhqһe'*tn *%ؔ G1Aڜ´OJH|Wb75 />1Ҭ(X_[ |^ "!(ۡ}k NLo1kRwk:) E+VJŋxڔqO=1Uu[RdAht25X4-%iα}{fԑ^_TR?d]Mp˗j7mV-uQխ ;.gmHy[aq>~x^뵑6'ۼB= K6A7Ij7 *+?T~?F@ܸ  6iZ޲(uqu&`ZXlk\.Cr^ܠRT&~Yu[.a)yNY(|]INtKlQ̨oS2fׇs={#6cV._(yeDٓ$4G Dف_^"~7%x7z*M6 ArYB,*kS[-ejW9 %Y†FRQs6-F| 'U;hE(]UJ/j_u< ʕ|_]Ҵ2o`\tv^?pG*.)5Z 3U1Tdžx;5?~mc- ]f:ALG-(%1(70@۰i;μwp,$L(vXIl_E0q[x*,eHo,'y2%zA20N > |1o/CCR=ð>W1z?CVmI%< endstream endobj 249 0 obj << /Length1 1548 /Length2 6928 /Length3 0 /Length 7970 /Filter /FlateDecode >> stream xڍT6"tޛ*H3 W Q@z.IWt"={yffyf'+,|Jp;:[ EM H(o 쁀ae"Q*2ԅ<! @XPPoC4@a`> D#  0.vEBpW.Y'$MZ@ۛ{8sxCN#0JtI`AE@0@! 0 rك=Z:}70/c  /p~;A  9 P0@_]郼8@v(Gԕ @TC< nH?02Uம`|0Uw_?ua 0{_i{ `-?6( J I&noC Jq>@/0 o+|!!=؁!0`_kT= >KA^yF)cjjR  KBBB 1@!_Z08@hπpKR.ЭA7gvS(W=<_ @)]8j`k!j!iP9'$/(AC|$/7(6# np!nJ)0j 5lbkJ /J{o1ap$1XQ! moc(7#"XzBNrA@`1?o)x`/!{BP0 %7XT1*E*>_>`8Ʉ; oQ<d-賈1HBy\=q $Z_nG0=qB"3f0ِ%%gù_^t"I\%$,x=,lka +2,O-Ӊ 8 ?9)INK%$e29ACY\<=5cʏAG='up9\4)1Nk2ٔ٫·ETL[xiمRcΓ0/4s堒^(@F.]˦ 0XugH9dޑ׷ܤ%vԌGMY=NO 2*4hԐy(0ɚh&B\hB:og!rz\)iKV9[)PidK^Ī!G·sGИ Nvpoh6\c kHC+ZU>PƘZuϚq=zFϾ qn;tQᮬ #\x!y7,H$!p!TxƏЈ U^*ڳd{KZwvt𑼵A8T]򇗁ȇO|]_mY?tW m]-=l&-H-27P;ҹްn!xRLj h^_=cf4QK;)9nIA?eV !E7rzͤow\j"7 Jri ()^ gr:L0^@@<+Ѭ__U}p$y) ׮N`"{37#ҟș2]Y\*<36}3 |V/bwJ`V㼜Fh>T*y.SDzd2Pu" ^՚S,W+7A~Fiek),/#bY8g H)t l" \w %+x[<[GkRIhzf#<[ i}݆;s_0}dUH1kLv q Irl9dUvbD;kE9_PbLSѝrp 6Q?iֿP<Љb(2*ts`X֚SbsYE]=lx{ XR܋jt4;a#N"t}ކ7N p ϼ/5J*y@j3!L}ij o1Rt^3R!"059*;^z_X5~)ȷn*TNzUõb6{QVvHQ`{ C՟Bt$\PEӛ^yH'qoZQx@KQ>kjntOעpޭ.4+mtw 7h&!>q"`pybCI'R ӥnY"5~0MqgH}e,tKr?X$'>uK{騣0mi֜;R~XmMUVOZ"J<RqZO զ>΅x.yjʅ> h4O:8e'-:V|BDq!qO+Lqel\RJq 1A_6k[|t:ĸčz>AP7kҞFڛ3J`dFRvcYr$}Yb4* -w1=)]w۸1^mDq)SBT|F^G75+HUB%rM9̨n\` P/j,@孵Ƣ2x:v?oι|}W]=U)]7Rf2;{v$VJ,ZPږXLXLW3}J7G#̫oWDpb^&M~zm@qF;sP#+B>xw?e`4DXv6'9TU f ~l-o#V.ŧ9~^=-/Y޹ǡTDoYT4/IwMƒ$u #oH]u/Zd,B㱱g9xl9Ah4MC/3/:jnw+x@De r#dMwBXl;K ۗmrjaeu'?(SXT=ӻa#dwg]~94R+r _D>!LT^o~|>rZ pqSEڵlR~6J-':d޹ ^5%ȡ𪚤MagnP穆_c0(N4>g0IuTĴ9D#7|s[䪝'#;ەza {qCunlrvs9U(vp8k>H_[/ǵQ}ɿݐ)O@r氥\[5Pm9䨯oݧ<]{E7H],,;n&C/]Nq,!! uR:hP~ybƍg-siw,WUnqn+~C]8Gcg=FG:oOd*D{DͥAS^g Mf֪34`mlK+VrBste]pɸ,⠏_*xr$tkvB maF6S9D񟳩T]<1Sp;l0XaWk P>_cuvP0ĠVh!D{jh;.N34yr\}0N9NAX@:)6mÙpAZ)cA|˨GȽ 1ң":*⦪Wo%bL9|>ĩ]kx8b%Feq$6t>IQ KXXy˙Y <(Z[>_Hv%{Ȳz2 '| OЭvW Doe"t渤 䏲E0_o+Tf9 ?8TK! <铔⿙+m۲Ru*+JOԷzi IƦ"gaWO!.\;G̫9|e,#5-}3,w^FD;GOw14OU=Ͷ>smy&EK0pL6@YlOE="'7܍l'%[fـXjkncr쳸E g26"߻x DŚڤQ XcN-'i"\L9=|DH1bXlgu@ht ۥتfwd`,H?kdX~;s]4*#{!xߏ 㖺d7iSdhߨ`x Dzjd9ǯVb!|f= <R1gMxaǻխi)}!nFKUI;!Qڡ,{r7^&b%*u\jF;^w>4\.~w{2w"e ,T2+io?B?I|QUrӵ+)j 3d}$ʡ,>GXQq 1;<7wzпf]pz~d_!XOfu l6~bKܕ0QYO=ϻ=\h~3oe㛶\ hѹLKmﬕvƐm7˕ŷ4 YjK޾DN:\ږoY НC It~8^h$+Oɵ( c÷7.vqö́It|!@f^JOә. O5 EϿKe%2|}p]P?^8.d}z"Rwu@ւ4èf-g9 ..OlXJxT/`\K@K07\ZNtɾo9u$'T+a\r\ϬpAK!L@pи2[7m7ֵIzg(,\ 6nӊgUBcU(E'W# 㷲G3Cjmx#KA_H1V\ʹ!o8ni˪Q\:,l4<Ļ*+.ߥ#bI#wkĞS!j\߻8b`( `YCҌHv?,b&"v%M^DUot0 `V{;ý+C<9:';Y''& *;dW"_O8 + 9`}gSv<RB]B6:sVLy;4G$< G֋}]4OTD[?4P0'Lce٬7UȫXw WV=8y ?n"Y1[Hqs'L/xzgYdW%2/Om)I8dwemG endstream endobj 251 0 obj << /Length1 1378 /Length2 6060 /Length3 0 /Length 7008 /Filter /FlateDecode >> stream xڍuT6-N etNam ) J(!) "%-HHt<9{vu羮 Ma(; UM,e"" 1)kp )h8A8> pEDDDb""r@5'uPH8rA#2zB҂Áʮp4 A!XG+"4AAp?R;bnr^^^ +B;( XG1G{a_B\& AÁ8  GbpH h ?`?A߻DoD`ru }H=4a@ qpObP6BpE#ܰkD_ip\]H,?5]:#Q^H{fkV 9@IY)) Y : JoeMrㆀ  b * !X'; s-EpG/  kR3}**(oPHVR(**# 3! j#Q@?_{%_q. Z8?$D;_Y_$4<\\~y7#'}NZVCxW A#HD@xa,e~I0_\p:/8:ҙFC|"8:'$ @aŅq3Qh!3n z8οU {áqvӫ*ef/oI澶D'YvEIb'9]qWy+їn8Y1<̿y4mݖ<޵-{C19 JG/Rm=2ILyl1~..R\xނY]_P1cs[ b-8b?XZS&PfC8cEpB懙9];R4:l}=trt1x*%I]#g !]S`نwkXcΕG{lDJ!Xv׫ԢMQy䓙-5:oJ^ „y {sG =yL?7x797+;8K^IȎfU8'U47̧fnH/jug$s{ twϻ%Uy+>+nnDþq+>͊@d 0 nO.qQsc =(*kK^m~cw ?a}}t eOH0|Pwߡkawо[ G(>\(Y\3{DQЮL]ɫBsOQAa0w!,_#$+$.yMaroUg9\cV `+@4, R%L/%S=;C:9nɚ?\cs!lwR֡1;>r\ѺuvV>LMdln Und7lԆ yh!y"? mn7:x_$V]$} ( %侦0PHFHHCTƢΦOݿQ$|u |"#Y={бK/?WĈ@(G˒@A@:U&R7-ENК}#àNqV3:7G-9,ˬ+T;YUD@Nڒ4(i!;]Dzʢ޻C|`![C}C&ZaZ.1pf7t\s:$_3UJOl~,ƍN0N@c҇yeSO؊W^闒H}SFt͔% y#c<"c)5/1g=}'{l>6*yODj"tjxĚ #.*-LZyU+(K?- Yl@IW^2}ˢW`B-Mڇ@N@r=Ƭk{ܻuq+VCdKnuwNKUԀTgjMh^mΈs5c5 F]蟡w+m+)U({;_>!:#\\O\Fp+SG:CSͻ16 V&g͌3r- R? EG(:I6; x ^zVOY0+nZ5F!T:%gҐf0)ro()ؾ n9q](5~v#ƙ6 |k`rŖ|#_7?fҥt3wA4},G#͕5Rg;wIBuyY;y:I)] ()me2PˎE޽Jjr?J)T|{9J4b_OWM77\\Ӹ^4^aиcCavM<ڗ.7E<9Y ;EKsZ#CL־ D}h2o}iȓ1HS4m s◧yԦ땶>r(3)_\hCGO3%iX3p N=-Un޻=Sg3\t_!K9#QB+:Q=uYa_+5׺7(tyiz xuA̭I(ܵ@ƵՅ)do,pkpR+j>69d6-/ICQ/ Ela0IkQ2xI~JIekVwtRZ :iͩ䥄eA! k[E5C'RG).^~%4:ߜP'p}nrh2JA mƘS\tQ1{Y\AȭޝV"$lzC "5-|,/9y2_VFmǎ$w pbg}ӷ"JG"CQL/ZĄXc,$lC>M\OTDtTUfzHK|>`}WX -˺A(jo}R2B[Dq.F$ RQ} -׷)^P>7cP\Myo>ԇ~GUAH!ӵLJF{$(-]rəoZwd:sܣڕtUчL$ʖIAyn ] !mW( zB ހ{M֙Υ;gx-r?I6T]dpg-K, z)>ׅt $W#"Z7t@60T9~LأG3ɱ[$߰m{>sJ|h,k7p=>ev؇8wFw 5Vb<t9!][0;Xh3Y\^^s.㉖$K"ZjH>(|9H0NClG゚8N=Bv}*G ܻZ;&v0,bp1~B E]|l֏d,8Ha9&aT\M^zd\#.l;MI0=¯uOй;\CvK\B_gI9 Nj~Ě[S/[Y{ڔu EeAkQd/H~!מʗP_t} Nl۾sABd8vNi/Rfv_uw&N3y=@;˓^ܐ%ԑ~r[<ּ90(wuW0>Emv3TC*|,ɺ9a<0#U/_?0kX͏=k =ь"҄w)qJ[ {qꛜ:U-O7z;{ #}QyH7'i=yso${9' [\‹GXaGPrٌ|Hz{G LiΙL= 5J:#ͼ;Au<_ i k[+3QxN"m-}+"-פ( !H<Vn>]rk"ggW2}3cyz(el玔~7t}<*r܊bUpqK#l+srwE.(o&1a%TXTh4+'ؽ洈/iD9,*RvL\iH,5dyH:hг%)>)q+i1Rw0mٞkd^jӪmnň[Dz* k&S}iBF|]}ȖjNc<1enADGr6Wk eIpSjy'(LM:JgO~hRYߙ  Q*<&XNJn>6'}A5~~ұjwʲR5ˡM> stream xڬce]%m۶m'3O%*mҶmVeJvf۷}15cFXk=%:)P΅DYNQ hJ GI)XI\|$@s   +///% 6-==Z !1ߝVv$T܀6@;Ձ@K 7+ 4 &4!Qq52#Q29iI;{AbfognOiLDI$@3ۀf@\ $@'[+g$V$N;=p'3q5_7rpaLoV tꯛHs{3J/_ ΙO.S o`NVleg H's_t?$ߪ88xk+g7&8V9\涰cgPdٓn>7ӿD%0$1~cVwNe>$oE7qF!=ZF `w}aIHclNpa  o3D, o\̒oe״3:X*f0wZo+ҿ3k+h;_Q*wtKho`{x3=l$\ ?׊'+%ϕ37gV]vq:9U_'oנ@3e{3` z켑I ~V&€Z>*iϥ39~,TU/9@!&U7aQbƹv6Q;t3m[aœYZcf7J3Z}9Uد}ql3dO&O?n?PΓۣ}G]uxCqZPf̩Ta/KN6N_?6Rr59anB2dôYrm yxDq۵/Gr ":$1p팱_q7 -`WpZgyJY'Z}rik_6`C>>$@<C\ )SZ-~crSNqѯEYoa瓓: /!gH8դqQpV]#ªB5s%j$RZS{6p;_þ%PpHTRᡤ&MqL-x\:ɳn֢Ïq%5Ȕux64~n @ (RKz6a7'g+aPcHTNz4]%%OΚ|qz1e,=Q8>Q*C)>n!_K,ևkh98>{Yhϸ%?TjҰ 030NדOM&pS}flkK^HdJ A3i)Ϧ[UKG=NmU=JfݗPg5iYLIu,d-D\_޼V9$ߠD R&ڲՉV((dX] ד)xEi1ׁDgMXyj?uk!غhFr~ ˈ&:h6P=s6zCBX{=ߤ>'-NN^ԗG33m* ٢Yq)C(npe꿣/TXϐg,$w"Y=0JxE:KƊi/= l8}ᛧ9TZ )!>ڲUqk1\2؂#5 ߯rІs$yw XVȚɃ*U$XV\{O"Cb1Ke޼brЎ)Җsݒ|_Ema1#6g(X ^x - ,,yfߨ@ گ1g{r}H` wA)8̊3| KcS E^t!- H{f0|#)>ikW&GgAL%;)$l7Yjw2qw3/r2b8L Pڄ>1NЭG ig7CSZt=Źb@ECyrۃDg d|$G͙q$|VF_@&d$jODCrxhJQ͉GKg.$*kt +iYnH}F?;`|R6`W r/,6W ޤe vEgJW>o'۟uTf*cY-etv 9!ʮ`SJ@<$1iH( oLBr~BG'fT*s-aܞZ(膣$E#O=@fmIK4# !13O ᇔ޺P*"XQC%śi0Ύ%ftOcR5n6Lu~ց OT'n<:̲(ϛ}4+<{<[CfnB]\SgJKFxԕA:@irʦydR|2NXA({4j:D_3ҙF㋶3y޸hPwIKy}=n6sBiogE2+U=?Pcff.k]$N;ބZ\M~qI`qgT fJ2VY{GsgZ{lH鹪x"E" /Y^3c4C/=n@|m:I,9Й 2z\RZLxbvU>=23y:'~\|G\U3lL)3G[KGhp i_: v|bd=$_dڽD!\ıZu'hԿRW>gF|Әr45MqdD_1c R<~l|.2Th1YnEs;nF`ٽEnULNRNw鼲DÁE!ᢦxZ?k(`.'C%RfHɥz,>N> .<\王S Mhl!px\3Է^O[>w)\ ҩU|snYkTXT!cͣJCꏒ.iP)Rj)aKt 9S?rFnQOj5Al"xtb 0a(:޷o{(e$+ݽRu| R& u邪 뽌UAȘԠհmdA8PQl$!C;M#VxO'cƵnJf+=PI w:!P3l,O VAF9FmMN-!cb wS`KDX(AY/4o|]C3rS>"Gngecg֠ASru{<&DN= ͿɾGD'X@1q:Y!eznƣ5lCI4 ^<#P<7udq=N.rzAvszݨ^&o.@? EIr+hx 5p4 (z"tkAй۔|n:ٜ)w-YnqqMo+S)ShIj C6jw^=[`aAN(JߐҖb?']rG ̊PFer,h`"O[; dGJo=M j1ҀfuF ߂Zd2]d (C}lG*f5gSiڞO߼){mIlɁF(L$iN۫,7Ծ׺{Dtwq$q)NmRH\ㆢC)D  yVM*1_|jAi9 {[fD(QG/[l#:ݿjIEf P^6_%G2#;$ٻtAݝ$k p7|j#;/i ao?9@<Y{A^ KnPqxތSIg[K[#k _ ΟY;B6Pm.ҡu'l 4ڭ/WLQ2ho N<߱tY ʚ27ޱ9.1LHtqqywњ÷u՗kly¯gBy\!C ڟ 1OZtژn"SHz`j'`w_$gb ;LdLu$fRӑe!S'Zpf8 mu9z~bk2qMԾ6wP :W.}XLoyJ'U'o۶&Z5z4{m&>`vV?`nA2Xzk<8gm.GAေǔz=gX $;6C$?`s'ӯWI"nY0] 9P{>ܰTtJ.+Z٘UQdxpD8 vYBK{nZL va%:1Hy9%;{[9crί=hHJ9coY`:eͪ6"aI{~!ȅްf#]f((HS>!%5ӔeE oP޿s_G(Xy?;?&v#qAzLdzu-?ѱZLIiyd99j/hpeR9PV@ᣃM;` 5+WZeu=t)V[l)#Wcf+  g!KR6(~ GnMCGt7!Ӎ'QTbzR{:\Χh g%ݪXYTqi%FLfhH55Yh։^'zyAB,|V]ຈ|-[sNCK|wEk51(/fI;3N]RÊo f]^FtRW>BE|TsST!ze-t( %DìYOUR_-=0{{I&^';J9}; s!R ?m]~n18ޏɧ:+˔DmjmC^]Ê1[*57RCD  ?k73d) W', 8~qν E1l#"7w䄰֩ˡ6z\ܴ!!Mxw+E)ՊC!&> zdϚz=\' Ic($rRB(OVvU-G[, #.v?g?Y/UqO]pQC:l](BAѾ"7Ra|:uc&xVW9Ji=#\,owr|cqu*ZMujk#k7: &Uw~RӧshW8Λf},M|+Ƃ?07;hl0㮂ЦIyJ: ObF\`o!RмQ=N{#F˅fA74 nt.7L $vǦz;,$pG 2e$CR֨ %-=[%|{ЗtDb2(|ܮ7WuD)Ym-c{Z s@Ԙm@]YIg%a'/t%Sobc߸5ron: UBb>ij'`nB ~y sfzDF\A A3F#`:) sbӅMK w֙9A=G ~"QSs +O<[)΋+ =AJ+/3_مw="R\p6:W阕b}P9ȆnПC*1m߯b]h*դڽ0ijͽQ[TtLz5c@pQF3e'-2L_;"iWE7"艽Yve KNC0T/neY йrR0ɒiUv͡) /pssԋꞻ5[AK=8d% vi'l5N6o؈S٥6fhrnv^(5]sVE3E` %:S-k6Fp[ǖB `ǒ#* ܾssŒkچ`[5rvGj}#:xВ,ވ&_jП»L8׎lFwZ7s^n!9 A ɧl3Wu-9dvlH&r-2:վhĤDH!ρ"SHUg/ :5WvcePЉ)AGz L@ERoHOQ,Zti.e$9*ѻ/?RӁsGmT=#-}+C?6@a.n{1xi[0W$]#Nnh":ϟnlڈ27e] |= K.+ׇR7a0"Ʉ`.j$=9y/Y&rLS!(S:h192e+ G$<'C` -')SN5-3.6y֢K,`ȄUZ*'#4tC'[N"bVS 5Ҕ");dV&-c[fW,Mm$J"wzbN̽[#b@P+Am~yc 1IƝ?)*X|)[ۮakN'T/p'fl3T9zRkci:m曞b*V#Hy$bxëSXۜ4stp[:UwCKhC ȉ];3H%o`edħaSL;UfG$pˢ|me+GU8BM"rwh4ĈyȮ9_|(1mVm3;$ f AY Q]KҜ0[&uZ^U^/QsGMmOxKzȬU\a2}n] (q3o0@z,kՙ5 +}ˍO$BX򮒰=WQUʪ\<rS "DǼ0y +oBkPPrLcDoz0ɖgļoz2Wc"makͷU/X/'ʝo;QiQ X,e&Gz i6aD\a :i;JzSGAm7r={>3,;+m̀9F@,@icNAp+<:54-ݮK;Ùdj̅=tmo@h=qq_o$yׄw.#s^ה>̇_)ݍupL - #qٖ 'U< Y? uk.[_GwߔPK%Zt.b%I(M] t~>++|bj@nLy_-o<$~zNPv%GVbevl]Y'LX95R$>jC=ocxCEf>P淲O)(0sxQ9jnUcIJ—01ӾF_d%zH.:9eVY[@vpP,ť=ge=BK~heU[ x.2Y {I}x Y?t+I:F s^ÉJ? |FG 6왐mZ> r푍;ϺW됂/gr\-Pk]]KSͥk N!_DI"c0S9d$D~xǼL  V+.̻4FJif)MS Fˈ*0 f TFIDvA?jX~ ZBz֩ЛG3,eIѪ.0,@V,MHl41Ǯ#K$ ,HlW+{T{8;B|i~uرBi=N+#!7 1$$:yGXYpRzCB6Uu׽l _}8rm՞M2d2K[ULu(xq"= v8aL<* .gXClD@ ŏxHyEyf#q16Tv$;*?  1qUeӹ)7Yނ!_),üU!H/9nc䵢$:9,C(nؕaHDf2k+mbU 6;Hw^]|փdf*1y$DUK ysֳɝg|_9 }\\{ehVB7iciU(_a] e∛|رiu(?5jTFr򻚽jH3M4ZR{=F.n6|k{&"إl4 95kXiQ1npO,pp84.2.y1U(9 Lj̦ؗzKUKij2_$&LS[h:j7op^:F;K*cf5$ª,kc4T8 f#@m}+Jd5 t-R,YCԷȄp1ZeS!{<װ5ifoB׭6DkOɂk)~zĆ䃊0sshI~FH[7JwP8%$>ԧֲϔ(Ǝ޹pG<̄]!>6;1c/W.4k2׭d }_駣X|L`Y~%{sPwyE^Z4nQ֧?MZc"@X&M 9o^nLa*X/(`]gl6ᚦ7*O Ve4,m 1M[eM~bd]s!Ryne,uYB{ / Pω!1?H]ؖ<)d'Yx_J|f .KhK:` D瓊a`5._N5Ul;T2q}fBsHL^`E_WS7'0}εj3Z{EtPl !^R>6A߰ab6l|=YvCSUifNW"sfKˎˬ$t5uϩƎ84F~ `EZ`*z˃BQDF8 "2U(>z]༤owJK{9TBܧvSOc9JgND1gpXrG|*gTd'm3`:gf*W+52r((~yMH%Bsrm}ϻ\3j9˵#+l:P"[JaR`>]MSi)wbGNJl(~#ۯc(7U՘ xEs-ql4?k~mYT@n 1'N1N|gt3_ #x|sk\LpsAfo=}KI!#uBJWèQ="45-] }2_Y˟bTߓT8( )ЁZvu|I[z4pp[;+7z̄Bd2"ˆ 9˿A/?zISv}b֕Llϩ1L , Rgp#.pEL EH,'#JmD LiZ{SJVvÑ xO#4+/d`RVI'iS)0bmK|ho0  ,!"!DECih*$Z؞KICBgdz@vQ^留/HzPNvc"[#qL\" 6y:}ږ0@܃ܞꞟWBJ7AO3qe1ڹ nTNMTNoXQwmpj#Ӹ_9!;ݕ8txm0R3H@V}bt_z1q0Dъ=ɨB~UNZ{S{J-aKB@?bRl5UN53$|: e 9$Ċ:h{NJqW:CiѬ˵ Y!礱b-/N*ݡI_ZkL<w| Z\ `܁8w)!D^ޥB'W:sK0Oswy.;O , ƘֆFul+Q0qщ/Gam0X]_c56*жa_V7hgpDKMp`ga׋|+=5q jpWJ%^5-]<ܨ x}FV1N3CT^X/ j.d*j oB6_h052/[>i%0^bT%3"}+ \.GַD (6 O6n q'LB𲻔Ǎo m8S-LyTɶCZ#w(dBe*}z4U+`D0CkZ+`ڇGDC6!L=݂HQK1 x` {r+d2wcȗ{ڔWӬ2*` tvlj ZUM.D:Tɘ{? eYpZECmS^F!e v.|1jeD'x Gd?pc"E@l& )@xExC}w,Ig!ktj Ki1o7}B:CTmbjcտӸT8XϚoI)4Xt-{[(L`QKE@arT3_~P5F*AKttA)e -;4ݰ$Ӊ wۍo)>A$خ4fL]rXE;T&!n +8ͣ PXa4y-ɱ;/gЌ`,onIF׿&oM1UP[,t9twᇸ{ ]$ r3a,o'5g B+ťjۏQ #E;7%r)T>Ag*5c֭Ubc1C3*5\#HFi_9c8 V}pϗ9#OlM&F|M`\Po4@ V?{'q x?7%+ Bɍ4줧ƕX~ 6Z;Z KV~ܧ-.q>ǒh/a>, ]$T$jU fS@FwYhdE^N %ͅ^YS]՘"d4\/jFg"l}Deޒ aҬ?(UuyS9ɾb #qi?Y"w=̚[c AFX< :K0heݫݮΎBʑ*DSfKU.Uy{z.ICMwpxLw #泴1 yf#*\Cko]\բ.a>nZD7 q ZSJ`a,S"^]U~@YVm,͑q4jWe*اw &NL?%s!EZ508Dj$VisUlx2@o\#?.W8V?/z^?ڭN, ڀ &T^ 5(wfzZ8߱zlo~)e ޲WHL껈βvཧ~u0IEn8ڻfxOtO4I/mI67#io ͒.)9lˀܩF8\z`jX̞%7z;]CHO$BT]s}Ra>kL'B #/%MknP$ mokQ.ܲ4$U=M M];03;\1)+2n*# #*dW0<Oxhګ&?Br3n,ƣ(ڳt9ZxKi O42E}U@ 虶oEMO{.D/EgZrPV%tDv tO"?7YR"`Tpuvh,h =< Z[qnT&ኾ7NXQBdIS=u!< i[U~(I8+z9*UEbH#踽y>l 'yQf=Y4°EPzwfd`5Q,ޏt޳z7tr֌As ଢY:#t0s'ebý^P7EL,4 vK||a%7o. % EyI 5%K2u`ŅN|Ci mqh=Ϛr#Xc##7h5%-2 n.4LR/%fwgsR;4rTĦq͓HIWUPhیb†nI\`@T#p.ΦguO:_NMBpL9y01e(ҎP2힟^9\)LXFU3kmںP'*S]~; PJ WN "!aQ~+Bug0l) 2(lSJWz# Z~*pa G6IUMџ*/0Ԯ195j:E\:M&/v^v"uS1ތۓ;b[m \H4e)_{IÔCZ;;A~|%CCP~iԙeM\%mpu(s@si|!M#C@^y#?@|:'/u%`_ڌ6+t{6M:ܠ*A'8/;L|FQ 866A9abA;㴵(M5JVT*5URI>Hl!C۳Ⱦҩ&^5=_z|dEM"mOāoP!̈D OÙv)2]a˖w{+. .ٔwa@hQFw6IHJ7e|O;IslVU endstream endobj 255 0 obj << /Length1 1630 /Length2 9163 /Length3 0 /Length 10000 /Filter /FlateDecode >> stream xڭveX\]5\ w݃@C5-; 4A,G޷{zLzesTd0e!lk{S7eM J9Ai+X 6H\\NZ/˟-S".֖wJvV` "`Sȁ ;k)f%k3 `qA̭%\f֯n`O3vvqy}X,A=p$j3u+Jqqu1svtFU;OW+.֯0bbWWdp{e [8ځ^c9:[2`8-Av`WW?WV=/o_+kW 'kL3ؖ(EnOW k sl®q} `ߩ? D7q]vߩeT@%xe %{ s8?7u'\AMp|o'\ `{_vmsUۿox\%Ϯ?ݰT{W-/G0at!#) 9\|>>?'/A֞C6N?Zh_ `37gW:Es؃`3ePOÓ҆a ZEՐ_*MkۼN2}ŷIQ3`ou1 f_qs g3l1ڽ ,> .~pldxo9'VDzBe|` #Uv7Jq?$'1WlCH13Z5VH,8q9EgGqA_WB!K2&#: Х[H !A2J1rsH}?#(XAHބ 4Fk;%@'38fmCN+ӛ!,t"WAt )QNJ*Vs:գF/)WP;Vw{Jh8B GK ^Q\sG|-ɖ߸.WwDڨD 8sJcٰf[]A`i5^isi4[n;m A nc,T*,hptw%]?8zGUH/}4Ei./ Nr\C zu^V^'f~66CV0><:%D(?>\C$ o&ӡeY]1S6jYFbDa v8S쎇|Q+`B]`(vH^OAqzZqЮK/tؽug̜.u(U=E-%S`S)mg/y*%T;Y-[7'íChb.QPQf+}1?hCG¨d܏'_Ě/i*8#Z$Q( mGM0Gʢ]H6|u f$'H`m!#C6pAFgn}Lŝ0 uJPž4Ǹ?ή\+x3`Vwu lb/%OHFwaHt[K,Q`x py08*nl2“iҘ:?pݥ Huz~2W1O}#H"6-#XQ?#]ެ a1LtT$[[4O=ߥA< ̋±U>*BYt*nw_ֈJOq~I5GVXķUMSe0E 7⽡ŮÕg{fGRx?lyU){́|e` B// Z(k&P>4ulY}]T i#>7oV|9eYj׿Jf`E! LQ@~ 𾾝K[%׷x(:ώG2< *дv]}]~YDC.-駭4]e x T.\p:HpSvCl#~4ų Ѽ@S3NSHVCQ=8Ƕ5ד0xJM20|[=.-^S<],YT~ #z؀b8ɁbGʈ[uAv#t"=^7Ft'NdΙg7?[R!ANj AO-PSWXUy9mۉmo$t/űNaom+k di v顠Q:P kͲs}1EB dF"֝!IʗфbI䝐 (qXkY M%O9OPWzQق!H>]>"Yk{LMu9tXuwcv}ʓRE>P{pŗ/y[.hgl1Or^P}6~ٽw߲$aY֩Gg'k c֢a&R7;qd50~Gd(u*.+'G/,gR̢T'e0J`'1Ρ4Qύft: lme-!C VtGG5!L!gS(#Q*F e25ܧ"әEJѠUyʹjGzoB ޒR7oVM2~|n㠡6ТpTjHx]u"Yb *L\/!t6Y#$'Q;w3Kvm) gR27)z4I2Od&X%6fʎc+[3ԇBG4 %z gsDQfތr"48}^ńZYL?iOLr{u$=t앯d 9-Acq=ưm fM\LR hDVۙt'hY4!MK%$Fw|XwE}Tsݮ4b*`JEٹٞ'Sz؀f*Pw]TcȔ_؁zSXƈڳI^lmgsWñ5?3&a' DCJDǝs d9΂"zYjϞ DRfTqT SE<~R+< GQ|IyN-QZ13y o>N1h[kU)hyxkSrY. pMT(C[D=G!&9=jt9Z5o`CE]!){zɶC[ZTYv 3ēT Dcs̺Iv/-0,6 dmdz {A~/ 1\w-D>wdS?]5k+c`$aIl#ja) ] /.=7!Tgv*3ZG\Md/]tp]ŷ2p%0-^8ٲ#UPx! K5$X?iMYZqŀ,SݕٮCc@m1R$dU|n "{~MS-B s,bWp&GnhnI[?u2pgxD<%EYv9vhz,C=i{-eFF8#劽6aWeJ%PڅoZwN))Q}+㍱-t"1C&T%J{֍X%R]:\'x]/w,#Ӧ.cw([Iq~&LIKG®Z#3N9-_${$ΰ[O R*g4¯Dzz6oK$8P[`ԧ ?񯭏!}!":%|O ߙpY *d>Ip_1QqGcj߫%"}7.C&-m >Ϊ˜u|~}eDžZK_X|f9t7O^GkYh[cShbU iIaY٠V ?<%3Z}79eCX/ףaH nSTD뉱!G+ B"%.;7EV"A^˽(WWDQ ]BMz+-ZQ2~UddC:;s"JktNgVY|( {<$p.Brpԥ I,9S?4[V"Mx$tA[i![kveWMP'cя8sy -MZlo4" zA@=-y  VTڭwU! AZcl 9E'MgO7 0PO2K̡\ǟ~߅%W7fXؤ^9h`'*iO1!jĺ EM= y4>kJڦF.;tQࢲqZOM|L9-jj5Og#ܣooW̵@*u-"֡/> eѭ\45B5G8ݽRs,١+B'ۊjzio裣:93LE-ՁȘ`Dgle]O%zX_S8uZ}>̖s@b&~ 8l[U n&ȭY'$HJ8&1AvR}Hi.yPRY흙q\t1l/ Nt8FCeh+#q^@!8L*BNN/v_~ԨqQe|}V 0Yk eoE ֯v_9_]cVKifQ{^CyתHfUU ƛ ]X)s^90[Ryyo2Di``VEלS\tOz2 ałqe1;Pc40$~_Ԥ"v;Ԩ4 ʣO_TF48^x?R_J`?`m2E:zU?V4ђF4ev)p$XҲY+NI(+BwhԓT*3KM;/-Xӛ8HF/7+^V*%ZtY[n 8=}T'}qyQ@Zi"mdWV-.SגʕԾ(oe!9 m ;RەiޗKߚyϑ*P-w' aUplp Z2I>G^csR&Э|g ˁ9J{УaLl܃aZI$q`QPfm$C~ Es'Vd`# Viѻ{y󖅓 -~R"kqp5ٍ;} i"o) {'=7,S+r~}fREDs =DM'ڝ5~ =wYTB1Y(j|bdr..\Q:ଂ2]u~/7p+}ո(T {z ?XaKBRJq{1MwԚyrżFX;OBPe\ķ6_Cm7I ,ɸ^=ݯ XB-ޅh D.81cUx҈~t=OvIw@( uK7MߍK f;3R]}cd@h$|#*\wp^nw\VaDq50UfAzVI K?L!%0ٴkPdCY$~b=G"[G67e4E7]8lF K9 SQMč9V z/^/^tWA|bqs}н u犰'Jf鏻k97uƵÁq G_Rv9Btwf"M) u`/-b/ e@t;gDr/I=k}rۖSqGD/z _ DO͚}9}j54c )dIIW/ ZKۡS}ywj𫴂3A[f ӕ AcW.Y8CA}}I̭8 endstream endobj 257 0 obj << /Length1 1626 /Length2 14285 /Length3 0 /Length 15130 /Filter /FlateDecode >> stream xڭctg&Tl;Ŷm۶mWlTlN*mbNw=a33k*( ۹21p,m\m9eheMM,rVhRRa'SCK{;CS. @`&;x:Y[(T)iK j=-d/n6v.!MM.3KS8B\N njgdhPp54X9R6^L,)͙;3`jlfal`dkt;ڹ|`igljo98[~뾃);8;Y:*?-{oK{cJ;̷bO.#Sw`Nlig_hNN&6acӝUo`/oY/ .Φ6ftЌL9]s[A3+vfFM\_ gf(AxLL͠]S(X#[Grm?C~!ch>g2WZ$] ["hgM ÿb& .3C~KjgbdcigZ ed`?[ejgxzIyM /C!pQt?J7_ {i8,{'!1Z]7㿪t#?cbhg=iKm_3ojaj dolR34!:PҠR_mYa^B8xq Eu8ҋnCޓbzCLٗIN}HW~} CApwBQIo ҟ-8>,|ptxO_8(RnC 3_.N Ɵ`n@ZRt &MfUT~Ut5ՏwjB"5'su?Z3^U{b\~=Bϰ3ׂI1WֶRDD(`ebM. 3e{382; r0`VQ Fcs/,-K&s͋fkh8 4\;!rT#jLj c葨}+zd crm 5p+E޼vk9nwhVS Aش)PMNa|(>ԇ1 kIV0{v@ׇ&^O&"o{ʛمG>qfnQ /+Ț['}c+JWdOV%(z%f|׬g`mw6w ]Μjc_:G>Ko3X~ G OY5f0;"3OFYP;Vf7<(6ݼbU~k'c13LfnԀNΩۏ12bOirYhOUM"#FPM   lo)QZߏ٣]h@kp7ţj"5UrhS uVjpPQ!>-ElnLFg pԿ#+pigYjymw ] r_ixR2r('^(Lgn3"ϑLI|A..+ifBJvskG&;@w%EgqRdj ,2NZ?#  U[x#1]T*AʧpdJz_^L7fFjH`W?ڇt,4O=JMМﭗX=BC0+p CCO%<p@Sl}e0O5%0.5(Yt?*!2^a sGf[gQPcji(S6Fx,+ {&m͆y[dՍcO#|XG~C޺*1|U?%N&"0 ~Ԥtc&1 aA7zk uqPr]]i2< g>{KJ64nFteFn!E.w Ԏ6DaH5urގ'In֩" ۦ*Gix]s?Ogއ!ʮ9{Lꘚ&/Cl^{R{5kܭ!=pTT|څkRD62^?v(_ b ƘBKE9 uD=\_2n]* [t`PAyn7/2%5l8{ʼQIC}&kfUo!rz@%q=P: GܜY!oBI%EMgAC>ߧVNUon_9+` ^A#l) ċDA\D=MJ6 !H?PcL 7{#cJ>)$\F I*ƢñSg!ɍ|QW/#PPX\f<' KO)pl4<Ӫi2gias\]J(0v1DQfB}v 0 ދ>?R$#} e/v\q}+i$)c~ɱ4B_p{5&#݉00vz%gp%:jSG(w^*3ME[43zKA2#u_5DДֻ֫LdW5}HKV׸!w m|^[9()Wl|jG $J=wr$&?(Mz9o"ShTg8ď / [L܉yƱEd]1?N?r)tR5#~KKKW[~,8O\yҐW/iZ|K`|BF5q26S#WZ5s5cTճ64/z|`Ǚ1r:]'Om'=JOa=0W xmE.jq5b?"blv]8C]8ƞJZm탥hRGo%ϟ(g[KLic{u Mɛw:McHg _ $ M-Rn_uB vMc'&߆Gy%[3h=Yh$f3?njBˠZt0ZeP*0o&tV/"#S)E=Q7xVSs{d{`hBu`tggBjtҿ">ߦhBc?e%6D1mjU\(OzThD9R2'U3 R7-j:d%6&rrQyHutD4F_?}+Բ7}y7_hPqij|Vy/ɜAL D0ҹI7s kޟ D5&bGāx/Fl<׆-,:JB%.AtLp V*> #*'8)K %xVx6LV3g ڰ^>4%lC]JNdxb r<鑮gUieibӍ)}Q!0˔Iy3bp%\-:@/:9Zb夂d8?rP nW=Qr6sb. e DN"25_`y/Y w@>,SWqTrğy<[SA9"f^QY)q d, >}f\uhtu}V[~Ϫ| W2UF3ug*Z_> eC;O 54%EcVG#)BbѦWM$V}K}TkauSgRk8Һ)>d(]K]AC3_sѰ+ABO:@K)G$~Bso2l_iUiƪoWw~El@D/0s!rf?t80t6'zS Η~G3ke= 5 h6raG/l>dV,qej#|`8Qi[M|?gbSmV)Pc6IzoGsx QJIFG.3j\x=%+ծ\CR[u'q7,K)YHC큹_c oؿD|{!~Fsm掋dTY<ߝ;H5Pl7G~Ákj]N%4M }n$qhϨqSO8pags/J^'nh9SFDvƊ4 ܍ H;7E~A_v7u6u_CE=|me>g@`]Q0"q+O8-s/kx+>N"D|Oun6z8F:kV/WhFJG#ҴUANehU}7oOB^O/=Â;t{ =䒤3lzE8U{XP/x,Fo?DL%3ZYql R=څ蓠FEH0o{2bn՟ƤH9<ާxAxpoE@()_2FX] 4<[eiPY4,jIT>30i ?V)ZƷjZ׵^nL-ѪԮd' 5 :,7>”ؔ z.Iխ?;3rC:&* >/ʎX9 ۺc=PBoDxPeMxLk@ў&=Ytd-\L3!H0 ɉ^|oS+lBH*,`g_0RpIIUNyK:K֡D.%u X+UFy_fYzQdEMit1\X^g+?M8l:Υ'tukzR"Yyctin_@n`L8TUX!:r=rd=d.J׉(ў ^iٝF{F!4 {NbJTn]%lX~glF <+h+:^ha8+tʾa9 >Z3c=r>tl3 sc?9þeÕ_N*.?_\(쟶nDn^~Ev禕 k‰*VAsPNu6/OXs]جi TpGT7Oي#|R,i\b0S}3^eYP+:JL28*ٰѳo511Vxx |j4Z%͂22i(aZ.CJC5(7Za3 b@3īmIsEi B *y k)#9CL."u9мIex:x?kNw6Z:nPgHl3dç*Tq4[䅶(1bz:]~ <`lJDnAOeXi;~.4Τ}EԟveeoӺo5q+yv(Yx%Gz͓W2uUrrexǜܑ"ߍ\DY\us Jm5fDY%GqobtGx,Z!D8'"( &r= &sJzQp $t?!IvlMl':P;cbo ij> gaU!\L ͠F)i6gN`pB3 x=%A/P6~(tHI:z,T[%6zw0A^8ۖu@.kJn-jZ|$0dB"^=:]_$`{ȭiZ!&&Ahb\d&]kwȫw 2"#*C OX6LDg¶Fu%$`|QF,3yKS6#UwR)V 9$@.z4~6Xs> Bꍗ|-pk!xtXv3XAzgXYt߇N0L?b\vk _nmrMѩHQX.9MMdM> XKV7AJπc~]TaX,lԔc NPOǀa~<8׏=dC/qhNFsM~rިpDVw 1TQ#rN`1e f8@W/[H-օx/ %o'.iloQFg?6mdq!Q02ߊS#w}x@01SB-]NTn8q1(Dy-8hb b"iyag|o-Ea\(yʹtw!kf,Vu<13hպy=PR璸 J/d>$c&;Ewף$mϫ8̐pblL \bt3*Nbp/zdA?&;^ R6.07}%P*DKO6P[ars/,ilPeT3zw ?VJH,0P kHRtf^A^gxwۖsȻ%Ċbx5Nq 8HBm0EJJ I."}?Ng>X>/ÑG=8j."1gZ&Y6ȺQ6> Lqy{A Sl %&+4=%V9c˔*w8]SN OIji;$dş *OwMOjRj$* kvaVy~7]ZpWo/ELWht჊׌>t ,K- Sj L95acovQ9"O<(tӬWM;W%e%'ըX-x&AqA4^??.]*ޘjt5/?W٧BCb=9?Y^C\Tն!FsӁ0ōu|uz/l@‚WJp4)zVT j!H'ҲA^v$]uL]p\<(ى)VXmei/EYg5[U5>dݿUr|M\l $pӭE2wNWDj8ы^M F͟Uai%N'upr yB *drY?VMUkXTQ.\}BB\)~s= }t/NK-tdqBXujoHp11?zz.]10{<0hR)pkË4z>=j@<(/9,Y Vu~LaׯTZ'm + ?UB͗~ͰIa_Mn'w8FۜlM9AܝYƚ0/gfd zY wUfϼYMQ'Ņ pB4\v,,8/ Sn|~Dב4]`+<h3|h]q*u\= `<@O]_0A|3a)(1WB1#D1$ GAKN?qiv w@hͰE ^q]V{mwe ÷C<%He~"D Wy_xm`y*Πf,uPPc '"W~`D/Q[ v_ȗo593PQ,=> c(Ý+?ٙ=r@\ Ӊv7]ۢzB.YaXukKN{:rOd_U`eM#k-TO+7gq<g6qEJaPJ_:h "ϲ|8s?19ߺoFzS 9ï,&@S٤ K4[xAoKȡ7/F4LPɖTCwtȓq\ˀ Nh2QO^!5Ew+pg,Cv'ſډԛySZ81b~(iNCa"~,XE[9rUl}Ad ӡMP5ƌIȏn:Pi>yMRAt:#[dL X`v6ֱDp?b"*ӡAoFBWYUXFEc=j0kA[s+R&xPj!̛@ᷓAp7W8'NYY*rhh(b{&J5Hz!le# ͊G֒[4ch>l\8GYV?.P,K3@4ߍF!~e-( k6XIߘVWk< ^#Q:cq죽al/zWmC) rشn$ڂ"?K%8U\~`wreYc xzaTr`Ӂo\ okBƅ4V0[Lxfa@䍛}N3t &Wuʣ)^Iz?S{:ρDŽ -Od+}+ȗl I.q вZ'Ү-77DW"{*-rgnzg0;aKج}Ǯ !5(Om-4\ʔ(Sֿep$\sS5NB*V_ڮ[3T8-*Hq^*@5铜/M#>ChFu *8)q2B*(oB\dۥ8"t>RadqD@RC3BO! fp)6S )܆!<<*In(:iv<,EpQӑ~Bei`-mC=lOPQ͈o 7=='3~ gBԱY8AUR6Nrsb,FӘRű^Skݏr gA¶lY'S"\|KWKz ;fOM Ȭ4QZ"d,&(&Ô2 |[xa6y7ꄒ Dۿ:~%^i)9EbO:v\_j Ռw \?CvI]y\ܳ%/w}ObCvXN7pt3VaqJ͞h$6ZێެB%-ym膂r'wJbŞj%tTͷ[MOêg32rm@H!SS [@hj-Ѕǿt'@H^P-)#agE \a:^IߏYh\ON0tY^^(?k5 7Hn&G:&Qgn;|>b@~ H/0a4Lg~\V;n ہM/>//鷢>+Bi p\/1x6㲈^YWZGA36UzzT YE. >_tqXC:12Z!K~JZn<17'E(yvcҬ@aec6ꄙdG j]! G+J.=2,2=^A=lBVf}% p14"U3z7Uͻ6 }F"Iuy6Ҽj^8*Ӯ%Nn'<6gŝRA4M HJ)%yҩ\E5:但W^ZkyZ#ra=s,'r+YVWc%Ք9?o_ yeMk(rX^Xjj1Key0^ @2lǡzbߋK| }j؛ӌY&65 p W3s Zn5_6i`!qzeB1)@VkyJtb\!Cm>.vޓl.H%T3BN F8pc Emm.k\nnN̶g7\9 לiVT2^f$p9/bd4[Y@'8\MtcN  fyo)5Zj39ȶT+O_fV y{%Unvst^"t,^fmV=|5M~ݝ'*3 Xy(qƇ.SϨdpE񦇵qvN~Xd_ra `MR9^qulos˫=cpSb Wկq|6cl3 ͓8&7dD 'i#".~і|řPP ۣDL)^ЭԍtJ5M2McX&\6f B<4iJKjsvfɹئ/\2SP$Ҋ,LZLMrzQVܐY=<Ptc`%m.{A]qd]. 78*;-ZG#j8İ<- WD Š޳5%_}1:6)B,(D$|Z-:5d L`U<vމ1.8eJvwX2zYn:A jJxU(")JlʭC)mQJ/>߇.y۔muw~Nfl;H8u !/%t&tDtB؅eKyg'G 4R|VcSB[]4x29B.$͓pK/k#EP/HR5Cj;3{@7wm5s:[Mupw?$nxC'P;.Ob[%4RU/#RTLdmsM_XA:)E+E[ M{o>pvGNbv > stream xڬctf]&b۸cUl۶;ضm۶TlUm;}o>=c5qM\sͱ79 1P֙ oiclg#o%K 4w8-lE )@h`f0qqqD=--TjԴS ?4=,m_\v6@[׎*@ 0D%Tj -blmi4:fv&vDK `pXuQ}m,,F{l5v1'r3%dh/3oTEQlaOl'˿j_KS;J/_O,c o`J?3p9Z;Y'_v9X:;a4qY501[nb:WDPM` 4es@2 B -bm-odwc-Y4F?#Kk;߶ٚBK'qKwo%W5:Z[rN?$[5_3i)jo G5rv;@M_@Ly3rvt_?OzFQq65;mS/Zt^3 Jpg6b_֤Z\_kUe^B<@pӚ/xUCJ=PIA{Ƞ_qu$ Ψ~;_I0}LOZNdkэ Z_tvNtD94>:2w 1pGCcrFad ǕéWvF-J'۲ cS% >qUX(\,sq"w YUieUF~Y\pGQl[(TCKYڡ ꌜJZQ| bQɻ%1]>| 5?rF,0E>82 jYҜG?AQ`Kl^ %ۃR&sO' ErӦ;Z*>EO7]-aQpxYtڣiDK\?V>ߗ5EqɸnNԉN^vpjV_$^2AsU@ u!=bp=89t&L#K; [Ǭ R,xuO}zJ L,m#>~5W|~^ ~ᯏ`P,] YWxbc&h=J-xy?d&퀲<2޴}5U~%95l66! NOAL,B VMdQ{b4HKPSel=%AH0|5_˧DWу+V['[wKLh!us+Z b#dƯݥ1[tcI|95k1ADJ$Kiw(*+<Uh=g}ئj՘8y o6:?q8j!wb`Z8i6a}w5e:)`vt?m@=_#}l*㒖aCnbP;Oҥi1^+jB&cj}]wt9w9ٹ,) ޗ&dc ockR}!Ǭ7ox]_~Ak&t %#S31׷^DD,ɖ 0Qu[ܕ Vı4JD|pAB7MGVH)aJ-n5?% i;vhq\4#{0b`(m!(u&Kz082YþבyP+%TZsȷi*pN Г2PI;W1-b &4zC{UgԜ+6Z`O"-?Br"@8ka0ddjd!hM΅QH?!IQ!^sm2=bR|8(Cl.A>sÄ\͔d-Ԑ+'a=vfG1cym5m`B1z!cyծ)g5%TUpsIeXM&%?ʿ]9u{F\Q@<׮.w#]aUnTe)@QS$6N ̍Qdbۉ- !*k-/[L&WyL ?V7Gυ~Nꗜ^p=(r Kqob#VR!=H.s KC>hU|@{_(}mKpkùwG^:dkü~0`j ;k₻ZY kf-V,(P\B= UQ\(w8zaG~~ypm+-풯E"kݫl9NM!qQ#Ɛ:nhԘ5L=¢2tow F=eXKB;kx_2CzۡkyFG 86M~oyF1!fB]&*D`ETfeߩYA^$TVsg(GJщ,؊TmBs,Z`x  j6fCpʵ. M0zm 6}֡K*m*|%_֛ #<†1mh]c]@<0b&#i|v7܆#*{'*\JJ[æ"=;N G@n[$]tB)ݵ=3{iJWKWi:uYhE` pJ7H|@yeysQ6񔎐]J!X2ES:,ϐ܅54gDzp$n-W[P\p3ZO/TC 9,tEԙ6 Bi困1vm.-}p>1mR~Zeƒ=}Jm1Vrp4|.oVzcUtyRi|=43\K4uC 6Nuo@m !-u4،&$2c܊ݬ<^iũ2I(#ޭ0a@(`1 cC'V!A$Õ<q*:F/{TI~(oMg8uߍhSgmok ~⏹֟)<&Ar} 曨˕X\ T{7ҽ`U/-t#.dr[rdJSs$÷:Z` (MM|xEO̘0-09vU wSH pyƯ-٢y:Di%[Ut],{qbd_o%s5R\~nm{RST<;y؈,B2KT|xsh1+rF'͈425qϩ9\>.^ 0l8m`Tԓ>̎gFb[r,0uHH!&`z/$e=9^ [;lSSzAzM!ԬHɍp\Ӥ4$՚q]'x3TKр)yckߘܷ"IJ!ُG#Ex݃0:PiH\K;ʞ`M)~p4>Ef70jSqZ<ևƻuR^07Yv.,{猺Ɩ!6}!f[3 W4NjՆзAVc泺 V1]}x$Hl*N|7>.4`oF֫[sCDcyv0$T h95]f^s#Y E brGruB䧞+n9*փ2gƓG-ܽgC~{R ;XbpvjF+Й;-+=1~ˠC_teKtj^;ڌ )K$ɪ$FJ/U 3< b6ZJG"u*9 (*+QOސ lF{84a4gCLDAW#9PvR; h.̂aJ4vMѣ|fe 4p:D5(Dͯ"',7x> &DO y/qo$%`2\n=3ICk4+AEgBjdʛl-DFxdYঀBz&4p.s[2`XZSaU,] R@Bhk"O>!ǟnOm?J9,QhagH嘸n૗J"<ͳŸ1Pw޼M'4?g{k]tҊMf,Vaa%V ys02qK_W9?b;26yoJD@%,s|&_ )#AƵ>65i:/8Co.bBz 8~ĕœr,ӄVkzvšn VZ -ɩJv&t@dX/I5LG!~>4zH;֋ʨW:^51i?.xDĞ[JY>sUFiGtvŔPޘh.u DqkejV{Gznx6 j ZF2Y<_r|36)(bJ #io tMR8*p0[^&*vT-D?/:2귚h@e YNx~[zd!~| Bp&RG'OǢ; {y c1w|q/}k 0@'RbBըZX&mdڔJq?tҵ p |Pd]W[z@s!a;5҅C\#pLo;z+_SMP/ 8zF5!/~xO`ADEcorEEGF;uYOxEAqD)7,z4!uZP"gY2Q,brPQĘ5mU.nkuI qK_#$$P\jr°>!qHAru ِ>xmt\ʿ鵴lY4 p!5..a2?n A7<$!R< Klu>obb tLCj=وK"/|zݹ7bgkFOUj^y vp+ F$13)IZ RhQATeUl4 <(\r̲*8O_RT46;,\T,3t\ݧ6KX}&6'^EJ `^p`Lyit Z[,0FC9]hh5bpE @)0= W~0 9WRϤb)2>@/NdNL7tn림[@0ai1FaXfF>f9[TdOw?F4F9Kqx*+^xOPJnBKz΀jSROpٺLfC45\oε~)~:[ƹ/"$-Px5`K͔ƱO5/:|FĂ1ZO6FjYFccX !)FΆGlut͉PE-%/mWUh)\^G KMX8aT$rӛJǼ82d*~3|߰Qki9^Z?2ȣS9C$h;}6hcq Ro stkppY2Kjyu-,^p%IRS p.1ś\ 7kbuME$v u#GJMb*+wBWZu4a.3GynQ!)0М,PDz$x2[x!ZޠۨfA#q|˶I1deY{@ rtg44^ɢĴIdOC5F _U QGi"Ru zޑiWyuWyDy eZ|cx@E@_zA]6y䍛q K|Ÿ%dEsXad~r;%y􈮗Llr .4eRgJIb]ijD JJQHmBIp]H+fhr.Т.g}sXor<<k _5촜o0FЯ_"~9LCϮwa}s UwB/(yT4\\z%ץKW>H)*/E;FI$R[DVv$&;֬ ~)_7&o<ymXmJ;&8F|!. jۼAխ/_| a$b%zJ/k'oWߏ5̤pj2Kӣ)|"IM3ӶD ڜ">tWwrc-w.t5i<#?6"$֟wK`x%'NǢ%BkuX mYr֥U7OZ˹ 66,*&d8%/]P_=K_c[dn 1̔)[V"+1€n fKpZ_ |?S ǙSeջu"X`Ez1PԞAkݦUs4`M ^FBWc0od'aȳWC^^ϹYINȷê~8d[*LצV4d-> No3[Ṯ)|JQ^73ERmU\7x0vN=r7ZrڻCs\8y ?DBi T]5j yiPy%ͤ$w7;g#yo \زw7eEȏDg]S5Gu㎣TM]="[itS|.k7Fn7w|p^ˠe1' ߆Rv,PpRroͨAwkƣk|n 1CKF!)2xf#ZRa7#A$X~S.3I@~ tQ.5}:e'9rU!4x>ȑ=MZ32jO`O&,ề5]p.C8"3=WljC*ªiK;vm@ᾤA06 G;134a.Vsuor ^yZ꺘v2hۈ:Xk.%))&*aDNh;AlC}sJQNZX7@@iރ\ݻq?YDp]K򨚇7T% 5<!zΜLܘkFZD+kp|$g/ ZS,h}Ӎ,[2y^kHj}JǥN!y 5=ɌضQXf8tքFv-P:KQc'7u\oGhx}@) ~rk=ۑPJߏ"=9v%vTٶ@0͒Ƙ-WB!Dк;ӝ3kп ml Ghg]AX[RO>:d/<[͠{y!$M @ѸͩqM0EÏ,XٴmCZt<ݴ$%0^Xp럶eQAr&a16ʴM?PV6W*aBlhQTjׄ:uP^E!I6:U|hNd c>VmCTLMs\!htxyL}T4ˎ4*[f_ MH#½&@EF4o"H?|Љ"穠>ng&u_-1J7>/aGL'Gϟ(')aw2ϗһ#TZR)1jCliOġoEMcx"}!>էk;$u,!֟[:tMhJ“U-B֊ > 7ݑ|c5g,@qT[Xt}QZ>^Ǝ" &'@Ѣo +PnL]v/կuI4y#HPɮ (NPk2Y"#riUIZ''䱅HkRY~kA~R}ne Dd\}⪗a?E߇w2*r]N?|& $=@ȑ~ kA d%O4h$q?"fFuO^inUmHьRSc݉9-g4Y ?[0- CʲXAVB0荺xPz&z vs ] m:s.;_.7: (matDjRgP);=$ $'g{KQh\GR`)~/úa'<6GU}CEZ3`a N+t!/ԟs8 oLo&845+&M+;XeAoy]FɧdЮ]#2US W^o*׻Dc \-K+nj4\>3wM|{,TU~ ;y,zӐ@V2w]=J0̵ڧV`/\09m TNaJ6ar1@X~gOhjQ`Tʀ5<4T/s*cbx Qn Q K7_=Z?<ɸ hpQz!yl5>w ?@<ξ7GK"܏:i0&0"gO\c+?6e _**{bC }N/\˖Qy#.~.N#G_eI`mbfpEUPYApP+ 8t2}ʘ cDKEM&\ }-?,2yylo֪/)Oަ@ut} b{e+֋YK'AU-=FܖdjF܁M"!1^WҲy !:Wܢ^_G!8.@%R}|jxegWCNpL:er{&%Y"(g`W` Z.zϜ'(\sJ! (Q6CTsRj@ҥ)jB|=7~օ +GSA^/(vBZά0k-iKYcU4;hK  x,Ǽh:n\>w `);4t?<5ɝ㭯Dex+U8uP҉2I3:H(SS/ڲzNdxK08؎6FYR9/R"9Ppnuk!*s$:_ ںգ^{(rSxSgގylao a+/?~ -hs,L<̻ wlm9<J(RNz2:>k̰]VxR zQ ޑ1[8H^Q$x(bѩ%L`\6O q# A7soi~`FD=ǫjĸPkJePWxWAw/?;VM_ܴː3axʼn3 ݐS%G?T~?kGs䍏gZwe-T'MJ)B/Vt>@+3&QDi@Y ;7mcꨲWǐ'ϖ)a Ŷaetx;I"+XN# ĞX אZTJ{5 5G>ʗA*)T ;ݜ(\Lǟ<1kzVV`Uum>DzK= VXBi pTв`* Rtu~ILyVd$)DcH^cNwÈ 8ӀBƘ]sbBD)moJEDN´J>"& C/m@E5/ߘk+DI533߇rps 魛NT6P$Jvyl8ow)}U Hl}z^_o{F~GHBq}ႜqQo3mRXmY)訫z˖ʭ=nV1w̝L3>yFI4Ÿ ?F> e½GI H!NR,阠|zf+;b.=F %:`t+şU]WN>֐UsSƅrPpZZ(t9HK(肿)=YHA+$jG.Cgc97k[n(v+PטrP%u3K>VKp.YM5L.iC1Ƣ F?طhS |KX*-V[=Os z8~T0xodG1),ڠ2Z;MLMB4 .>W. 2GGDX}rTdND #x2m@$<,clO`]&%ۀͤoYKqHDodI]mr|ʥjT$#;vzf~a.O_N,)Cy Bi= [XM9OfFZN0)Z>, O1/Tۄ+2ݘ[0+D! d6p@6-r7"yrG}DꬣAc!J zF#vkwO_*%Ve;m9M׈gaw:/t(Ўh=GmqCc$9&u8J~nXBoZgNmK^|LVYL=G!i@+l;|~t8Ī׿=m  ٚNG$v}YIkV'sPZ]O"6@4!O'-H#0T$d?1R6֬%1yX_e~hI }J:˯++ۨGQH?'n~xg͹D\~. s a ~llb!NE/NB !n$xEǮYË/5YQVsߺ`f3ț1$tKFܻN̋҄p>91W(veA]sDJd}N{OWf8yV}-ZLiisce4iEADl~^cB$IjZ1s]l LwYYg38?V)7CtnnIٙ΅v/X.IH(L0x _w6ɘvB qcb8 ҦѨ^j ѣz ^a Zcc1 J‘wL}C'#xUkv88^A!s_Zݧ+#L_467m^x3BUP6Zb.6-qJP ~4L6ўt°x\cfm1x_'/5gvsApw,z7-lke[WCYek-:z-/F-Pob0(M Y `Q:3!8u#K(!5-(]F/DCpϷaY)t @^ Ș|)жddMI1X߾!ƢFxewY`|yMl2Qwփhτy}Q F2|Sҩfe;/SN#mt" ;`]CޘP^iBh}g~ w Ɓ#T=,5j9vBZAj F 7@o\Gϓ(0aBr4@qz![t dC-g\(]:?H72>63@ʸ$* 6&cg=f"%|Jq¨@ {#zŲ/.ٙl4l{iu7AY՘PCjM#%{:6'%y,:+>Ugۙq-mDl}ڂ)"ؤߛ1 Y} cv}K$?׼u^g&0A:"ҸYեȒl+ĔEWKo;][{s2P} bihm L:j83fs=d@җ<ߪqyySk\וګ'F+~9]L}4'wAAetJwIB ʏ9k_'3_gn/yT:}kYK+o@4-&zRӸPgն3go(aXI`^cP8svcXL)뙻D_Fiq0o@ȇYfqeXH744XvhLa$" frBX" v޼عi­^w'z :X2o;¯ϪE x2j &3&2B@rx 6͖X&dKl° d1boliLp4Ո݁ ȵ.\b \%ɁAG,+L H8:|@OoLh,ftD(r[CHpE@- JZζ`N\-jwIk(F]g3S Uoޯ&p(e -.4.tJ/"WW%S۾bwqlɟ'YcYIW2o?7{tħ2ٰN7-+Ɋo*YGúaEfzkgW|oDD+Q‚D&Ad0}C׃ mL1A-}jG44|'\U|Rh/cnɊB""5Qѵ;Ȃ ieP1_ڻ X'"pg P9YG^.X?NX:Ptt#i{@pL#ńw8dDcnQ$0SVYT.xtCy6:+^Qٻ){W",eU6u3S;ZtSLF<4C1KI%/R!9Eu.qY_pV"t˘&v6OxLR#H4_;|Snuҗkq;5g24.EgDw |ĩ'XOzptjnЉGIU!bD|҂+ e~JmoNѭZ`oV1`g& ';- S=t]?L 1y\:Z58[!xv~}Tc3e0>vC7iY,?]鰘b{UOWG\uϘ3 IaJ׎BԚ՞"h% X&94JE&E=YL`b~PjgnFۄ3ƈtL5Q氏έJD GBKe4 - y-qVl~TC=JҤyNfP % phsI<W9!LD46ʌmJʽ[ 啃\2I-p=̩S<[9EITs#za* Rj3|Q>? RHٳҕ endstream endobj 261 0 obj << /Length1 1647 /Length2 13839 /Length3 0 /Length 14697 /Filter /FlateDecode >> stream xڭeX]% wwi-Cpii-;Cp<;g\}ݻ֮UU{ծ$UVc5s0J9؃YXVv&.v@ WY-/ OI) 4Y9K|-@h `cS=,,A U-Zzz`_O+ {7Q ,s+[ @\IYGVQ@#jbke 2ڻi/fVK` pqZuz@g;++=Vf$n%Svp:[9*KH;O1.Vaߝf//_dle=@2̬\m=Kl4\]-33/?um=]++ ֜ oLSV􋬽v3W܀: zof39<oHL}"7H"oWKz+4 g;8VWc;+[ݭw!joW!FVN&\Rۛme6uuvcKzMWLC33A8y_FC˚ԋ j3"vyBg>:yz黅8$GozF4r~h2zqvEpG|w%'poZ|f *KwiZlf}$eqJՓǙݠFa!Lݦi- G=B8_Xò_jFu(AQU3 hz`/Qn^:5 pbDGaL}6+1YLV͜Yaz=ђ[oVc`XgPvn .t"*GZq7{p+DoL7&3v!&aft x *H~F2dK%غmX;:3DB|p}~&Ȳ!Z[N&{H_זG]u~02 Rf#b ptE~];_i9yR/}p$Ey{RċL6Y4<+t=ޢD *l̝-T!կ9:Ȯ^σ _"p))_; iLѥAa[#YCzZ' ốaj@r<ԙ)z:t .a'R=(li8DhdCxKv 6p8vw:Ϻ4`w';F.tJJ^϶]EKazҭ;^taY1* Lx;`Ln.OZPh^FNwӥ  \; 5dQebg1H8{hHYǪKb5]s XJ@HnkMq@E#M|\~Eq-@ǧ2ۇ uq{?l 6@}KT0+'*?Ӽcl*0Ք9(i:>h^y@eJ&"(^$@|k/.r"m-9[5;e7\ȢPͳp34ò{@c0p"3@SKbN:K=8ʏ)؞S>IhD:'I`"vc3\|% "eM&B& Wa3ȤV!ͅ&Õv># ¸x3B3CrġڿzC wfRe<ʏe7A)WV7wM% 2QbȌ_ui": 3L&fg#zL*2?y_HΏI!81N/ ~`^mu  ۈr!jKvw F6q)6UU+ƢI Z>3jн p{ =Q7w.[ʼn_z8|;$ pε Voۮ̵[\"w jh9;"kdoOGTVz& AI5P Ҋ?x]b0urL:ꑬ ^'Uuy&w=@V=2ل63x*  ?κ"FUDb\UC6YΔ]6c,/ s+lOq]ŕߖWs=GsDkpـQ@Y2("6[E$WXl qzp?+o~͍q2֤<$$pڟᔭh2 SΪ v<7g$՟'_ڼ|v~`]se2ȔjMꁄT' m(vΜ1WOYilmvxڈdBS~-QҤvewyՌc%bjRlYv=-])$j׽⧩9ic&J.?\-aنdmh5(W}t?z%5l ߫6y6U1GX*FA c36m77e&o`זXlODb]% y̶@6{8=WF)-3Kodc\4һDzs6[Ew}u9"{ňȸ"$8$'4p ض7ĂJ^J( 82(qTE+{;?5bۢyźh?Pֈhӗ6{6&B٦$RS @nVji~e J>-, Im<oJi$ k'mp`NQ3Z $_6t{JVb* } P,@U^TlgZj殷_}:k3Cu(FBb!Jzou; k,&CQn>2[!yAQueTL&U:ˬT5k5Ov=niV!W^&.ɌcubǶר߽e"Xt9\:L{%}>LHjc˥4rNpӌ[Mj~Q XBV`.W{RU?bXs`w\f{|UN2j 7!Dc䘣x'bJ%S]H\Y!)|\=#vCup.&'|0pg.2楿5Ev巳;G9͚;,իx'0^sm:C\/?ܦo,_S?Rf6ʑqi~wy kp!xX T ^>fbEN+=O~k.$~P1KpAjY B,|S7Ċ ]L5:8ŠN2-{$/iU!a0'\wa* nDaRKvixKݰV1UvQzX7Euwe0uJ4i^d|'.(v)mG!yǨPcVc@)>qHRBʧ۳[,+cMpmĊp>!a'#U9~0Zlx`YN 0 YF}?) `߽x5-'R[4VڳśԟKwExy|'wr.g ʗ:i#n[L( =ݔwaq4 Wn~rM=@)v򼮙 \׺qBqmB:S_vQwxx{E{MJjTQ7#/U}Sp@tGğf#nyԎw19 RD:_\.۲2n/i =1,XOfG^QxBנRۻ,'sM?k]gzǺEflR礆a~z F8{[npr;Zf()ЍuFP0cl߉Xqj]G=("<_ I\DG%_B0rզӑdkOjW<%41@ LXyo ðaI! |].&s=)wϗHc9V4T2ԣ7fY)׊^թx/eK$wN)#.1ݓ!cc{ݞ]LaDJzbn"5>8H'\@;YՂEְ}#zOB US8t nd˭ E[|"wAIIt|o-cԷӘ NSr;}_1dG5 sU v4l~NwWijUI"La7~z?-g hN6aʹ]XvU.jL7YX'|GşO 茰RR$97HTw3XFWlkFqО\#YGC9Hkl A0A)~uzm2yaLYg3AnOͿzmǜk)N`fa[@NGC" #ܣ:ȁ]% gXjiWvoSJurmHLW͖}`D=ɢ- 5x@݉ 2C:ۼnm;hC/&aq3oOk.E~u>,ph&3v3ok}Оr:b l9BpG/ڐtVXi;*dW^ `B&?fhvTeiwlyn,Wiӥ -#oq[PUJmInb_ҿgmf2h-@Whe-$ /yR^6+H\-];\Aݿ7fcMuz(ŊXP;&2d&, "7z&ZS2'Z WT.Č:_JJξŔ.X;s U?5HWL|Z!HOY%. 1UGY?]DtĜ^kgvciAh L"oѹNU(_gj~Gc׌t-vzIǷ$0C8LYyɛ6F;Sg!  Xa_4i%}AWҬi,qul+5-f0De5{ZdxNPc`lfm?tu c!TZȾF&-GބljthIyrG)FÜ\߭j![ OO10^θmz:Q>6k\g-jKn}$\] >h^뀏O;*xoeNJp}1Snky >/瓱q7DS;*) GC0O1KYc3IrGC&I]:aBԴ3⺂гfZڢ`3K'Gf^B$nZSA^do:msp.FFukD$P%IQY ^Ryeҩ50ST6\Bgv8 tW[lkUNԾ|dN&Y_e)U~lHVs1RXurM Tk族 eĒ"E_W'a){wE!P4XV#|א/MoKÀk#e*4f;דh0?3GIYyw74_ rH\TB%]={!yȽbeAüFd`*qP[ ,n .)zhBNA⳿J>>Em4:[؍w@/H_D똩yaPΘ9b@Wų~܊V< T3V<͋cF+˄.?;ÄF&yf:n~ UƲ:RoU`^j+WJgM_rvLYC-lt_&HjT *"1U=>+śǒd4d>l|LM]kl,L]h?iX2N 0w 3eɻ1t0EfjxGq7|?+k+K3‰U~txw/j-'o ;0]%,2x3`wDBkZF?ÑwKn (aƾ.~(Ǭ X&+-^{xb+ѡt)7 ч%Ѫo-$<_nX}-$-om q9 e]Jkq9i9%#lYK; 7sIKvM.c7]~Dss14UoCBY!!T'(.#._ 2d.4[*\ϴ" xxpu=NKDy'Wym}JcHޏ7vwҘ.0! Uoc5y pNEp\Q~X*7<D;ԋDbG=`MH3 ,A{(VLUhZ]^9^{DpW:,@9a~uVE-&8<^m&XdC9.煼Atdȹ'IB)N3^,Dm`%7~`e~7*a,,qX/kC$@fk5%GH鞏gڶUE*9E,z _I?zaOĘJ@|>k0A꜂蒗 fɓm_&ILcwur416fbUyf]Vsԣ> /)HHE̾M'Y| 1PZquxِ\ݮ'{]VÆ!كܙsJ !,Dp&|tjJI }*I^RٴqZ6-JJ@S-_=XCOpI '\)hΗ?:Q SkCtt%ڨ5n}ÀG4 =xs3V& ԌٶcWK> Rf7C65TU\p|l@V%:/ΜbgH4^$*FA},niA~ h%W5aOo-'l5W!CB X), <ʛsǪwBW$&}Ug1\&sb4 bYR; `V*@xEa',Vjk^uu qTw#NDdo4SmnI {tLQ-l!^ߴ"^ojb>oC^`S&ԖU@(T~Ai|#<7ivpvĜE"Kn=am;M8Ѳpk$zu~dnS{/:Bp.B^VE%Ah:VŌ5m%dCk+ч7CQ%"7.q:x *+N"șu8¿/}wa5,ۦYsfK:96Yfct* ~jx78c*-So+IYWu?fq$:h~xyݺuϕ'ϺNK"'j:5bY@#Nntk"t7bj?k,CdI/o%]l 9CmaR}*ϨN J"f* t7']l ۉk E,B<}p!r@Nܽ JL6GTVQ sf *E»];yن;< ĊQjnxZ7n}ƾNSO'Hη" t@/qpb2qIC׼~Zt>Fn Ǫ nmOS;bǏڎPpjLISM: /:>acmиɋ2-5Z*Y $+0q{UISnP;%<1|4ע eO Xu/\/r@q#6Ԍdx1T ,SzxdǑQѸîLhLtzûWgV랷eok{2V^VZlwsׅ:LzKui|Ez#!N4:Zza&Upq+©6[IwZc>|Kg+J#B-GԘ7~G'zjpC<`*Ͳݓ 1E&)T(֚.f ^zGz+@O] ;7d  . Q.=908߬׶;}ljE<ߖ[5Ar`Vl38]-m:@,Y߯|~dfh +rruH\ۍ\c:/D^JΔ)r[LR0%s>(b 0m}Ws?l%9E~+CܬyvW(еlm9 oo{Gq+)y?pT7 BTxL="n~En:9 M#gI!pPs/.L=pTJ?-¯jM2[,Nٌ=U-*âΚ%9*~6>z}5]5Wq|V޷lToB+c\}ɻ&Y6S6"AvYҫWDD wݽiqgs'8_æEF1Yr-ۑjk\7ͬz hFy.U +4 Ϭ;X)1plԏpBCuK|zIJ ELz0"X*e SS֎v3r}WMKI1C](Kۖ֕%9gE8{SIwHp'JEAyӣEUBSV>/L]/f{X1on0{Csdt;)?]{fJ$`5F~ނL۬ѓSfˊ1J2Yk^t/jJE9ըpamv&NٚH!=2 }jn]%%栎;¡#5qź3^5Y`ڔ̧7JIۋl58\ >Tac)c[{֯l6&g3QStl͂*.)RvLr_Kź$1X'j5 V>R⼏^϶0u0V"{b* }-EPY0{3N1U 'dGO d_14skrW34"šd' )Y.!~Ž3~FBd4 7r;ltrT@BI~$ٳH~cM?"ZJXvafXv)S=۲XOr˖ Jt$S^Xue4$` W|ChC$ )5zZy3@{TL}!Y/fVX,)DXFk{K 2gl*Ϲ*ø9@NX8CRj~l7Ԇ!Aqr*w-֖ ˏދ!ANFw2kބg޴6BOmjjf-&i V3GWo^]ϲ؇{z쀨+p`& X⋫:6s w/9*KOp#=K[`|WD rbpBmbf2ki{0K(b%Tu-EݱTJ-{B6 "?Fc$ tdr;"hCH~W}9olMlJAT'^QD>e/0Q!W}ttPt@%m- M0Xۅotk:%s;16kW$MDOR ïWɣ`ߍ`;!5r|=,2FfZYg6z*"'#jx(a!_3#\GFjGbx{k3yi9]vψn6C@O {ٕi˸bRZd*O1b$X"K׻BID*X 7K6XZ/=<a2j3nQDւx0+jPmg= ^fNHbKCw_,3?/_y8+1/Ίq GZ-VAՆxQG.X.k$jΦCs=aettE'xv,6yY>G{X*ZoiWBSVT-'*j6f0 ` 0v՗LlI4No⌡SOM}[*yi5/p!|v?Hv KhW8/ ?Suh"ocU603X(sl_LPNoh-ۿ빮@C|9WSA!?OZtL*;^zyNZ#V^L a ?ӱ endstream endobj 267 0 obj << /Producer (pdfTeX-1.40.19) /Creator (TeX) /CreationDate (D:20180730113011+02'00') /ModDate (D:20180730113011+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) kpathsea version 6.3.1/dev) >> endobj 174 0 obj << /Type /ObjStm /N 85 /First 752 /Length 2853 /Filter /FlateDecode >> stream xZ[o~ׯ  nMvӤAdu*K$i}]ʔ(ٖ^fp\Lzɢ1qzTGUfP&b`wk;2Ds`R(fx OM) lDq4LAmPm<:ϔ@cg cG CBJ U \**%DJT` h4J Q QId!*((+P=4Q8+Ǵ ZZ2mx@m(A535Uaa#ʀ!P ( !#-#8\͡ ;ezYüD8潁,T݂vA'6pЮQ:ͬfQE, DJ(@ah)$Aw0Ru,z2$ 3Dxn"PNBď(IDT JR=[JG)=9QG|àg:ϛe{N'g~\MFjFE*zS]{/@C>ub #~,ٳgͰ @#j3 aRNQhpGI5e}O/SBn wXф ڸC;~–0؆nvmqæklI_SIlI:l'q8i:cl_'6%"VmTA'e(dXӝ}:k>ģ>9) <^R3t&|O z׶'YŬTlIHw,Z }WMhWGkԜq7oBŠw9a&M-W c|rNk.rw_^1'1T#`ϟ/JPp2a$w ,nF2!/_x|Ӡa5zo_J''l^?o!1.dЛ\񈏆1ӫqUϣ1^I TOҔhx>(gjPM&7WM}9{;?k ~O)?{VSR 1iO?%}+k>#~c>S~/OV:ƴjfĬ~r^H էv""nϦ  IfsQ:dwHaW$_L&iQrt(= \!^/~a (-!L^_$lQvXm6֗8ZnE+ח0 Zފ90@"V& J)4m[ٽӒEtԶN5>fZVb O6'fmS`{h2Oof_G{Ks Ao+5\͛X1o3ڈwf3YFe ˳g7eYyF}3-,*dyFCmv..7Krx4oYEgEdkEF~e^d?2-< /_l _2BQBǬ'T< /)˽K_xHZ)CM$l7Xy,!#4%V\PEz8]z) eAC]vr^ endstream endobj 268 0 obj << /Type /XRef /Index [0 269] /Size 269 /W [1 3 1] /Root 266 0 R /Info 267 0 R /ID [<102E740AB6C325A887631A437C7AEE9A> <102E740AB6C325A887631A437C7AEE9A>] /Length 731 /Filter /FlateDecode >> stream x%]LaǯSoRIJRI_!I*H:5{t`͑lƘƁ#loz~繯ٿ,`j[ͪC ^ >B'`q؋L!`:4D$’“WSɰ"ְJi4" V\ N*>h[3u%3LXSt: 뼯 \"^#@,X#ras|iv |uԅD!hEobvqPZN.wI+ fN]BTn?֒jb) i-Q{4!]FVKgg WK_FR Cˋ*4 ёzStmka?xAӒ zKpn$6.b HMKnb;yRCKw;C>)!v7'%zAb:?oeV9x-e<MxнOxII0B Pd`)3i>)3+)R~Dgf<8Ɗ,`40gH.K 01 \jz|  FËzR2ژ(>PUQ NPU %Le"hWU`,|E011GT1$ιrΕs|+bDou4g{ endstream endobj startxref 231682 %%EOF oaklisp-1.3.7/prebuilt/doc/lim/000077500000000000000000000000001332762442600163515ustar00rootroot00000000000000oaklisp-1.3.7/prebuilt/doc/lim/lim.pdf000066400000000000000000007003041332762442600176310ustar00rootroot00000000000000%PDF-1.5 % 3 0 obj << /Length 461 /Filter /FlateDecode >> stream xmRM0W["vEp@7q7R=Nlhx޼73ZE\pTD8,JO&V~U$DŽ"H~]C+҇~TN[b',2L%dKIZmpx.P`"6Lj$:q%&5Q5 W%ǮS%͹/Gwjpmἵ0%׷Z+S! |V<k]KdjkwXįq6>ꮑc$ ~s,&BH|U'M py[Vy5̀.Dĉ?բ_oOҼ\i8pQM?Uшޥ |]fL儥Ԩ}Dx͂@@KymvOLOk>[OߪAgY^K,4>>Th endstream endobj 9 0 obj << /Length 179 /Filter /FlateDecode >> stream xU?0w>ō4?(FtpUA6gR]ݕ&.isL)͘S6xt]{TRs J?='T1ɿ0ŋ\MH"faD-E4]oahVDhUߥ[ꟍ&zC endstream endobj 13 0 obj << /Length 831 /Filter /FlateDecode >> stream xMo@oCJ(Ql ش,XGƑφ^wfށ/Ow4$Ջ'HQƼ_WVnZsbE^(DD\#RNjt^AHqS8o tG)^YĘpEv+2/Tm6!~0TtPvT-UM˭\*C !B %aHFe\!]_EL)D" $;|{Y]IاcTEpPb wt&ȇ 2GqZEֵ4* e󿺌H2LLAD/H٩j/!A@x;R016XlC(GHڲs(7RΫUu01;ףXMqS?? 7CzeAy_jK}9%9UTE35LZHQ6Vaa^yVZ50v$5ܪW 0f%fhU/rG∥adQEZΘI̖v 8uUڤtUl8P \C pSX/ew#TSLo6kUˀ :4ܸz|d8|}$CcA;4͝2 {/ *yZn5,\Z%)=x3уVy~ b $ٯX?~?+3/ss[,~-k qDG Gec'~)aS5xd^7p0SI'*/[M1[|nR2F8I[9uu;o endstream endobj 17 0 obj << /Length 806 /Filter /FlateDecode >> stream xMs0>}Z1Nt:=PI,ug<6x5[ڄ1[!NݝPܛK41 4bBDz "^{@>w..z{?ޠ endstream endobj 29 0 obj << /Length 1519 /Filter /FlateDecode >> stream xYM6p[V߂ܒ!U{[61 ȳN0e$nu-wZ(|Y(P8Az{D]c}fIn<ၲ!(}xSv}[)Q^WiiGfonZhE[M+L"zYi75CnYYݮn R=n^H[e cOۑ׻}QM6k >Xf >EFN#Quح:0^EVnv[kj7wUR*]Uf.uѨbڋޝ!^|gyak`8/<*q1x D0Xu p(4ET lj rA`'s_B2Jذd~ a#aYfx쩌p^2%!r$Q#1 Dm"N0)'C)agUz 5BBڹ!z[uت~#csB"tLs(&P" ?-)^&. 4ɑ5A AaYNZB(vAPcN9N1s94U2u0 1zTTR|JAh´, uzZoPCBQ<Ɯ$dnnU u ځH%zANJyI[\mRDAe!.3lZg ȹ 87U9P"PWO.{nDqpڀqc9 )xcL8Un٥d_蔂bfv?9häZ@ƽA֒s՟P2C a$"ùU{oy|\~Q)FFV~w}CB?Ϛ%QۢW.зd|;_8!f,S!٘H~c6B6/:tSj;AxL1Iϓ9ϧPvj+`$D&+l/CtXx;8ΡJ 3_nU/Yy]DXY 3z懐q_8iεʵw`rSG}M~<0mKv;9dZ1+?SYNgAUP "SulUk @!K7wfz`WvoNW~/ϟOEY\p!^F߮(Q'+דSJڳ LB"U72p2 n컜(j8E]qfW?%w endstream endobj 36 0 obj << /Length 1501 /Filter /FlateDecode >> stream xXn6+61|Z]Mv.%W{)EtX(>=P" OҤ͟MH4ǪL,XEDWHΑĸnCuO $21$S\H#ӹ#30z=I 1%1Dٿ.XR\ϱ2E=+? cIXIfiZgY3嶪cΧB"LЧoL -|##23ۼ4YG3 7jLјEBObG+jD<91bXG}[,dQ.=H]6.B"PY rNyE:%eV&C-MB@o(gE@  ̴I^4CwjR rʈ^,jiq: 5d;,NEL]D`K-D$F/1KSSްdmc]ڦГ5Sd q6H;v|AK5ea(@㬼rڥ$u]'-r&)IL~o )9}=,$s& R :>:~3ڊ_,@Ԧ9ض늯0H6h&ǶڃJK]n}w#d09F z/OIƥ/n\n}J͡ @wId`]vaqmx9N[Y΀=`Oy+m@W,;elg25+NZ( tn|~ l endstream endobj 39 0 obj << /Length 1413 /Filter /FlateDecode >> stream xڽWY6~ϯpbx: ES4@ )}H D wxȖ/ov/^lC8qSVjSovd׊mJ9NA׍ax0JR+;`pR0jq˧D Vl OpMwÐM+AƼ@NgdoŠDh'<]PQI#*e%A%gd(@s c&dMIV |+\6^SZK1p`9ikz֟Tq **hpm)?3R Jxd@Dr9" G(b۔`=dՖ}bJEa9*I5#yamĚ1pJ:#^d=K h2L|Hs[mITKʎj$}'7 K4[8/OȎw";OxOI^.~`pn9epCǍKJ҄͝]#Æc7D#.r9흘(A/@To^jYEZ!%Q~R~5T] 7hݴQ{LN7(3M2#VTI${3"':ϧ+' c.^9֌%Aݳ1Y5 C0otk!@:M!z^R'WO9Gm4揻6`1aʦ yiwi<|vtV ` ;yY1*儝sW%w4Z& XwL)N*;@ P { `.UVUI=9x dD hX`6ܸ7]7 >#g7p# 9}qh:\x4KhF Anٕ-I\A1"+9ōDosxpe# ~'F.ћ'>m$n㩓=yR+j3ў](a"Gʟ#ҁƷˇc]qj!V%e$V-$-Ph2eG#Cy [i#ϮՋ'x0 tZl 0c$:%\ }{ IږHJH"cdB7N 1b?cG:`3rƇrŠP&ϭSi #'Ǔ'at22Ӭ]V̟|b01]/,\S4d*BWSc1>~|ݚЖ?L@ί'{Wx Awk]t Ʊ73yo@[ yhJTp|qG݋I< endstream endobj 42 0 obj << /Length 471 /Filter /FlateDecode >> stream x՗AO0+r\Te{ƶT p z]&dQ>F2$,FjNI}ϱ|=1!gP!pf^\rjB`ڔ?ruRS>joƧB_hXpەބY[5ukE+rr<·ƍɀZP;q]hO;G F:`<洲jI GCN' 19Ƭ}̡-eCYWu[^=3tOq0p>G./b b}5&Sǰ~$uu?z@S{'Puߤ P`D㶳 &k{/:(:Gf~].|]/#ldhS N E;@ 2snڪl޷Ǟ˒J.bp&ى endstream endobj 45 0 obj << /Length 1521 /Filter /FlateDecode >> stream xڽXK6W!2P|:h) (|kzeV#K$gCWiaaJa滟X2!b]LbF>6?Xl埫_`ޤR,ޖӁ,SqxaQ LDLD~;vIDeSԦLb$0]T#ѩ m}(Aq\|8/0d<]՜!.9HS A?4SD-Vi18D?<L *f>QpԙFf/MhEz ,SDm*<S$Io4v9o8OkF:-ل/K?Mz(C -Um uy{^Je0w&cg"%Q/G(ڊdm|I7,oQzIqr`SWg}۴5 {ys~WurÆ`,| 'nߜhR,ZI鵋M)vk ݘ^{cO.;!\sXg1i秼:C*,ιA·0ҏQ4u6UN[ӟ:X_K֮A;bc-jgj[hH2$.qUC"bDwZ VS̮9?4HAW0_W_b!iߙlᯆ;P,T?SHͮ3}; $IDu̜K`8e{ ;.>AcVμfNP7ͥ0U(cSֽW>G@ TRRR":)]Ӭ>}2 gJ曖6]Or]K_󓁹^OK&z^]@@)bT c]U,i NR"cgz2?2eYp2Bmtspԓ陖]νPB&nD@Z:( w`Vpgu[q`; R]<!MF [q1X8B4|¢n5,ERXЊ[{S|]C-DzFj0/b(7pBYU9$(73o&7iFf+KdPk!#a \|1B8Wg"9Jmh ]#_8G%eAh&X2ؿe:Y1p 4> stream xXKo6W!"bhEomĵhMCzvҠ(r4|qy e!(F7`)\D7E[cSw}{nPcU\(IbF};؊zI aWbƒ8fQ-T'E DPE(i43G/fqࣧ*\L'+/(㜌"/6A\B„BRQ2h꼓"~K8qoBJ3` c)Ѵ/z0%$K3yS u]{1:Z>uɡXA #"4.q#< Hܟ@k-;펤`j7E`ʸ㩻6[4z#qn=+⦆-{i cWX4C(:}omu(8;^j'8a5Xel.ܹjQDb(oTUx0|{^ Y %AN(Ou~هedּ7mgvr*#$D{7рeB- ROBiJpFNIE 1F G e Z TƝ )HQ-%D*۸[l@ JUڡy.drÜ|e ʰO-d-Q0 L` BsPa^dîƖ=),PeaYff82E8谘cX:I]JM`)'0`NI1GJe[-=_ّocân;A~aG6zQDcHf9  )ysvMy,:?t*@q򐸭k_iwݑW!HTx_GDe)b (agW[ [a[hhR8 VVL[3]_Rب`dƯ̆xKv#5s&l2yUV8d2.ӹ-apwҭ{cܫgrm_JݱP7ܻ~p9\V9|aJ# 8$VZTs 9lL p<6ᩢuX9m> stream xՖ1KA[7fn@,DN-ƼbBǕE 7o?acuuHArJm.4"x c8ޔn:T4YzE5Lb(*"SL"ݯdOϛasl$v_1:АuFg2f8_5|au =ӇƇ\\os0݇/{w7|}w/S|Гp<7iW.hu endstream endobj 56 0 obj << /Length 1743 /Filter /FlateDecode >> stream xڽXK6W,P#ǩhh/)MLʢJI83$%[zwb9o7,JsBSnW9ʓ$\\l(8M$u\w>CJ~ϯPv*)pW$+*ݹ!)#Z=Өٸ6ʏ9uViԹ]=-c?YYF{/Z=x0N9k]e"^<͢s IO.)7J [iFde(cqVl\msJo `dY`G3DkWF`lc=48)ɓ4*[{S;p @J}RJA2fހ#2 v|*훭$ f4$?LgvJ8mljS*oB,#P -/* a暣ϣ^͌=CŸnA^εIlU4G_^4>;N=h7!9D eP*9TaA`Z$e@hi ggYhu:c9_pͽT68<`3>;7t xie٣ џ̢%X]yFNq8h8is~KxʀtavZ?}9. !2"~ 2E7+&"x1yC/(EO4EIG4S·1z}Џj䥇DXbyf/SEۭK<oҽLm*CIϮT\/ٻa-'O,3HY˾m*5i\q8+ܟ%ޭuӸdzz;Byƙ3 q.nbag à$*7iㄸl)RCUI>}'SRO<j )W@)rPlFdܩ!nTdGth%L9,~ jtU]6 1\0s `9˅oljf^(+I"Xme̸PZfU祶6jZTRV,fYL1ip-Mpo^o endstream endobj 59 0 obj << /Length 2277 /Filter /FlateDecode >> stream xYK04(<6@A0-v2jnj'>U$jfriR,w߾1IOw2yhJh,ovFk*s̻rec2n3ݿ/)ɔnY3dqиͳw3eb)9} X <BT_LgWDn@%2y?[8^B ,WVQHXYB,ʫ燛nPsp>^Ќ$: NW p'N"Vрzmu=)w_ua7 rN$D**0:dO(7[d;_z_ <+-. 8,?]8G%]yU=)%fӎ?h׺_ֹ7%l:뭬@Kv؉3or t8hUey@TPޘK:nV+\koX~6@_?_c^:$|32}J$Kȏ^N0^^Gѷ'<1l%/kr$4^2A w9x STvBLЧ$C۴ EӍN%ݭ6UV{]?ntQ{Af2m(pv pnG& lPxA_/IHB;$,>rzcJ#q{CV궦EI+kjoc}E^{/]xߥ} NEp_Ӌg^<>ux 3-hM񾽟+O}{\r]+oCN㐍>:Ņc"#fx^_쏗BODΝqYjoyj5X}E9Y 3#o;N;il=xYVy*6U1DA޶ٯO) !}uNZu6 cF :X{#9|(Yswh= cM4 !)Oc#.0UƊēD ;"q%B|䝽Ba#8Zbo/lE'EIX%௚NU܆QXm4 #nj B ;j2%0 aLנ诜Rx`2E o%H)ǔŒ23Sћ}_a>U o"7O/ Ԕ-d٤e.͍"[[ m׌j}l~r< j@pQ\4TU/#`*#R.Ӌt1SyY6 <=̾sChxB"|3"0}fDW^R@'ŦԖU[~@,k,-~IO<|IAX WP#O4uuG)$0%:YGBҫ83<6}~@N 5x/ >q~TN@PiiEـITc68|1z*Ϯ<.0@WҌi꫿֌ endstream endobj 62 0 obj << /Length 934 /Filter /FlateDecode >> stream xڵVK6ϯ2UP5bA ylզRŷ$ ȶY$ٳiьˤ6}m>|lY.il4[W]Y,یo9-WWb,eU)m~+#m.{hReʎ^7[)(_ޡGQv 0):xYj|,Tbt":Kb۲Mu?g4D7ݺrd纖" KcMRy*h(R篚Pz̄ += KaŊeA~ܞ=K: zJ^E}OGl 3>7KC(bi( s?U~kn_Dd MD ^{Y =9@1cD3M}.8P!Z@C7q*j+(IL9y BY|z@)-:B@ܦ'Ai&914.\rMC (sb+s]?.-*'M H5{А( bbmI,qY`R۔U%Ӓ/Vuy_ו}$4GO2ND蓴FCKfUҮO! Ih&I!(3) 4;d vq =#=&"B٘]"%:Zv“!DIlb;w)yLhG(ܳ Xʣ5G4O6E}m|æ8Wڷ-C>M[w}s| Y~}>qi5sbʮk~ݼR?ݰz8ܻz0s]> stream xڭYKW2UYxpSJU28JFRv=F/ ƚuDﯻ?=} \0iqXzvN]I]w?O+[&Dio tڛʜ兤/N]SƥbeR̓ȄaTgLIK_Hf'q?s.[WSy+7];aRr`԰8^l^5cSWӨ,R,3\zm^f*9irf4ru+UbZ-|gYa 3[(%bfe[#Xzm"V`7ژTBke Jc:۪%b>'2⣣QVJ gK`V2--\6; lm<xg?y* :vq8DmX\dCmQpDllV$我c׎^Tx3Iwi(),rW6Y–#/f`"MaDv>Mi&dV 7)g胋ʭkgeZDu+YDgac 3`(.G L1 5Fߓ6os;D/G+Uδ.~oO7z0"iւϾAKqwR\ r %l\D\tc]6> - &p@Fݥ,d91e!9 C<5H! rJNO&cFe(ZÔ˦kp ~*,!`j["Uq_=o!9 Z"oۉX0ca)EYy2iP3jf8jyq%et7T=%i^.XvЦEGq0W*wHƮsǒ_S_kS٧oao"mV 1l:7As!j & 6cuG|CT @ a;s%=f:0 I[19k`t D43H\㥥 % O/H3=QV[>1_QGOa| ޙ<A:Q'+wHHb frg=[zyQ$G ~z jafڏ|<8|=jq NR-Gh@Z=nצ> {Bn/Ya:6UItd]8>Q-і\%]X]r%<%.x̩y=Tcq5WFE1˃;ߘn՚ـLЇTp,320 3ޡ@*=TS_:v]$#ǟĄI붅=9isOA2fP9Ϭ8V{C λ2hwmh =(7A\s؎DC >T5a.$%ߝ\ժ7ݭ U C qp)Ʊ}aEf}ᳺ^Rufo{;(A gUKYKy]o1AE49hR_Pv+2)ݘZlD6ͲjV5lI"cq˗Mh (}fC.܉b S/֛\{c֝q'?ůpzǙPx[z8/m_/{QO@ᩲuS{[nGOOu-=*i8UMOLkDXs>}ub9+]p`;br1-[mPݕܬ-G@U׈ wu{[^i |톬ɘ#4~g3/Ǐ@Q˕vUJ2<T(}'N@P?J0 /mG,73࡝?|[yoRJ Y\g@9ڢbo^p훿>}?53 endstream endobj 68 0 obj << /Length 1912 /Filter /FlateDecode >> stream xڭYKs6WHUHf*!-DBST<@2)Sg̋ ѯ g$i*)WO_{sl~)Mϧ_Wt(5QL_Ҥ15n >y X1Ftr p#}կI EWmlX۷3θ`l:Spt.n5G*l3q%j7"PcD 9fMn Am,AYN8Ke0$$#&OkCO\&#dު<xtd2Pvݶ!˓ΖA:38pVB`ܴ9hrp,j{gj{՟"9lc;S\KwU8Ag7@Ss8dXP|?` ??6mWݛjD=㨳[+(7Oc}&=D6C6ph:50;{u0i6 +VHUqxO*a#BճzX"3w^?sD|h*[qJxda!oQr*| ^}X @C SBuB\1Bs9U(M#crF]^%DN@\B LDgxgp|IM0NYIAr,KIW9"=mݥCt!r%: "sB)ڜw}6DU` g$ n*a \JL|8\e gq~;,9ʈs/-+3Á&"Iq埳)n;P.u{vEXG,Ǭ부UV%BSzl}amC´u BA)?2Gi.2tWJ cMaQ~'hnI-Ђ|+| 3*MQNFT{a/p91e8\ {bñtӆuS_z b (Fwݦ]k ixP.; {ky>F^H'%iC'llm8+iH)tZ4\7㛏1BT?px7r 0e*|k즷3F@ E>" ;T`p҄  I8|9Q؝;Cls 6N2HE)guWDV"Tn¾g-._EGɧ6pjv1hy휚|y9>d+n:]` *z匓L&` Ǖ^5 ׋K?¿ݍ m;\o&3"eRNJ?Nf ezN4!e R"qT$.=Ie3"bDъMEbfBFB]߃mFj(-HA3_f^4%Z}] ˯qݽ<}0Ʉ{ 8j,K" p[?7p6ÝZoƉՔ鋪{i"*ͧ"\}n"rXXZtkt̽ciNqJ u5Hϓ endstream endobj 71 0 obj << /Length 2559 /Filter /FlateDecode >> stream xڭYK۸ϯ-T$wOu%!DqD)rBR~ק ȞF~B~z#&Y?lRIyx6~ITl+ UI$Sx:ڌnd۔dSy#wPh1K£WyT4h.΍]$$[S v'*r`O#tm ϥH{/r8I0#Ruoli+lf~+xtC2 Ʊxdh2u֜y#5w$p$ `QtG3GGs=VԲwwEU\{BӻS PtL*A)$%)$]9ޖws1mE%QY%Peqc"nSm|&bI61''E4CxXexWqIף;yT0}wBwcoS}1TGkF"vXٲʡ$:]kIQۏ]ЗhAb. t2-7z<[YW2zA4tFTμAIU\9nS{s,h`oX)N(1rTf^R+R1{Ulx@H|%x)##P n4iyax;ij$g v=!gВtA;.aWX~r_>@k ǣuUjt0eJxNY5z@'f߸M**X㥯j>s( ćѪkw;]N8?Ū38UT,K./08} hL)1O%BРb.OhcEлIqDM+34v#a`Y 5e/ZSC,aRچi$SZ]>-EJyhT?Ս[^קc=s=N?ssWXf+4'kdb35&* :.{a9N4(6@Ky9!'ۜov2W(&sP,@QviаPR9+j(כs5aOVqԗWa^:Cc dɢ\T %"B$Cd]e30B~+*ƬݸGK O#y?#}iuﹷ@hlJSd>KQ>M&)RP]cywU6t^~[~Gưԭg2 ṘVΖ}UNUV3{1JWfG $w1_&'e @JB4C8%qȩMw5` mw\_6dizf׬C gq|J4>SK G&o ǟ{effe;v6vkb<õ~ 7i81|IO?w &$K@ft`d<6|KO!g* l+D2J׈r8BA%8&t.ϸL2_ơ< y!ǺLF$΅o2c F9ߢlΗI̔ )9ayuȰ6"Pi Ӝ2g1ay44 _ дb<7&b^[M<ۏL߂ًy ˛7&+o$"_, WMż+/!B(Юy ˥z h%C:: endstream endobj 75 0 obj << /Length 2562 /Filter /FlateDecode >> stream xڕَoVu>f 6@fAh;::En5&y"Y,uR?<1;,yf^eO=?v/Soo`?\gjo~țўf_^~c,(t|&|n[Z2OǡC;9 )C[E 2Q\늧U~CZygSegbwT VLB/ c>p \Mg<箭yP3=4f:Tip'uߐ{!ٴk׎goGqဒ"*ꕁ N`l0¬?( _uqVCOyQ[yq cJ8S o6HdZ'tyӰ< vsw2Zf yp^ƖMr 0--,bpLj%ޖC<fKU[N=+U\MoXSμ0R) sp} 5QU-2s(`rG;CvHB?J@W G{v0vԋ-{_~4yr2: ,;k,}[ޟ/GIrZيJN/lsd6õ-7,r@aK$2Sv0ޯ.ݵ#H'GVsтۯ lY8I@ĂT|r93/KG$A.| X)UI\s%N%^mbڋG~05rH=Ł  A쥁fL1XΞq8t5&M 0:SE߁8DJ>iO^V:3׶ZX TzKC%#eňGg7CJِ_8aű 7x:vjIf8[SM> R/ILcU?6Ŕ+L(N0&JFu㜡KnWP2ɰH0TSn؎79-H,V2J(LXi]lEf9#3~][$Āa:`iE]+NK|gG(]R[yBDŀ!ReGB;@UmDye:r ψtFs!)`.2q)e2q䚨j4TS nF_9N璠0CuX<,3Wr ~rKuO6V]0m;mB"3\Z>b T "ǟ;~f,x4V c,ס?s1KBB}:(̐Gf])׷%Yַ-L:w1WlNpLN45$o5C":tycX$rHSaҰԟ$C";;<& +-d XD"?xy^JhqDTy08خsC!㖋fՁz%N W{kTܝ󵣕 $Lņ;u?hdtN e]&C$q㱃PƭJp2wFybE'k_p+Yo<ɂ 9ҁP|0UzsypX슉"[N"H~2q ]^!26HƆ3]3%Bwp\tzAF$}\]-m,#$oDXLr$FVy;$D/)9!e:.ԕܬ&Pc))Z?9$$Liv4za1<:R?廟D7ge='Ҡ":X Ԣ8+ۑ q@Lc#|/^8&"ajfgݾo +DgyOwX#d9"#$1.!#_'NtWOpݝj@I<%0v>GyǍ!b^x"/ S}hCyYĈ ZbƩQZSWe/\=)]9U9usTqB$$:SY#@bX-fA"A Y x|Ɔ:聯\c~ho3?+X=t=G1&¿`\|LE!Jsgˉۍ7޶!j #e5ԏ< ql u;@~59*>d챴Ո*䠤vnKPnth!qv@_\M-Ur:or_7hΤ˶]A"Ȑk&ҥ틱:7(Fl} lٱd9fӎRF .y^UT9C QUyq*N\Clˣ/"nٙi-omqIPϋ/eLtX'Ti]K4*Lkh=C-_Xy[&&h(33/:vῧg' endstream endobj 78 0 obj << /Length 2639 /Filter /FlateDecode >> stream xڭے}YEEǜ34iN$D%Gٿ/@Z٫X/aQUb]bFY)z(We] lmW5HD6j2-L߷Ee[Dі6\K/@[-pjek{5@hw`%p*ꇪp{*Z*T*!T }(KjCZ:8 pDtk C\bDPL6( %u<,(0" tv)angb<+(C[mS@Ѐ:'Ӂ6:=lk;N:gGA?D;R=qڮ|CWp^HQnIPPnK3F)?D%WmW"l+sֵWaczjvߚ(TX滱nshdkE9d\[JiE$lW͸Zxg?; I ,:|b%ƊMjN݁ Ǯ=R`oH)% tRD] f-֫$$I[+c+g|1ȁ+ECUFzp«KUcnkl bJ $N`i=eʙ< qFtgve$Mcgw57[? *%q][5\-Aj%A-7O`6@i\USt,#ዬ ._, LævB.qkjCupeA' ,"s!ՠf\X1̰ɕEm ;Ʃ` endstream endobj 81 0 obj << /Length 2837 /Filter /FlateDecode >> stream xڭˎ_K7֊;`6 &f6dvD%Geɖ7sIdX,ֻAG"I& s.Ru ޶ec}}T juSN2/dږs֣G8v'm[ ϮkZoBM54 %:m؛]Gf Sk04p_8O+W#_4PI1tWHMoة,"Ef7ط2hKanOeu r`kcݙ' 6_Ȩp) ?A`:N7:Nj?zу#j+9 f~Y6'j'ɑH oE|# SٗU :A,>6@1S"i|J$ASan? e|8s2pע[wp ]Y-47ԠfiDaUlct/*ɾ݈l@m hy{2B||4'L:"3[ QKs02m,Ñ''DxZTbIql: .wo3GD:[AԊ:EzoSrq,=nL8!O:SpV`TپOpD[y䖑=pYI[/ΉwJ҉ضREIx1~WUk $JIXǁʮF*f?A$|h9@*`}R@q+ .fn-̂"W AN\s4ȋ+-+hזg/3G1}6I8w0,ARЉW " lO*I0K ޸LG0m{E0B fPV{By6i`f'yna@E>}Idb#y Ђq`w/[&Sf0KLyc%^N0*.ib%]Ī13rTF*$ABʇY$ޔKB}D!sT-I͏+sdρWEܩ" ww"$V.֜Ʀ48>G.W>o?b=~hQheMuz%԰* "߼i~|zr/a0DZO<)sr (ivu_sH U{X՞OIh lx]  |Tf0-t3ue1_Iq9>"~NGx-Н9GYu' " d}7Lge)4 (,N$xj`C[7z4#n@QvȠ:sż"xf^-< 2rP-5[ܵBq4`c|;LyJ;V PǀM[wǧ]9g|6d6[zl-O h%5@L'?M\VGn EԗɔPdfM̓_pr,0ռBaڛ՘:-5&.2 m&%*ݰ, /@v _*B#uo?T! /; 'Ո pR[ȿdQ?E%ٷԍ:󩽐_7Y$*tJB*!Toõ j8S}d氣O0:fWfÃKSqTP?G_uz"toA.O3A`;#r\nAɏ+gq endstream endobj 84 0 obj << /Length 2902 /Filter /FlateDecode >> stream xڥZK۸ϯP©0@ZWT尻DKBR3n4@HM_?ݚ/OJZzaL/VߒzUtV;]+?Z͊m ws2rw&yKi}}Ӷ|}np%æ{S%M*C ۵ v$T ŬPTd,$&&,7:p |3͜“cNڤ)mhO:@{T;zG3L/+P֞_6'n; OKi8ixLi]erg2rGc-$ ߵx[mQ131wugЅ6p(]ɽ_J8+02ě2q߶C̊ ˌ/_UV7t!fHBӝ[jZ!a#ts~CJVݼۺ*pbN:#2-ι:~roX ~tZGoho$2?mVaE:{B babRr|f| D³]|{WQm%""_0σ-/ =pv ij_*mP|53)+n2.LplF{RL( ^}H?J|)yhLƎAZ^x\x ܇Yn;bb9]e.n.^ (.y5q -d^Sw4@|c cA ]pLhȫ. 䲂93d&8nv[&x!}^f0V; j^05C6 _^5t]Ң3ݘEr;BE֨wz.doi/Jz زZ%ejb+Hϒ6Kz꟧_Ӫm`yJ30 aӇGq<0hѠhTJ!Ia#QrML0ѕYJaГ<1Ls r EbP{JLKȌ9Uj3RJfJc6kPInuڂY-r6eC,,n9 jCW@gyRy] \ ktGFhrKvz#_*r ӱ`U;aUαkJĸ[qilVqY 1B̝Yn.~#rv+p".HJq?sh! +$zւ QC78e`Rc$hd NzSv4 +3a T35/\))& ajk 0reVqY}p3w@!܌ôpw%ӄ_xDp4tl 7{H pnԞB0'MG]`GtY2byp+om".q0rCՆ{sd zh2.TowpcUbʎ&daҷLD1(|"4r --PL#@ZpW>EU:dym]kzCOՓriy-# gW>=Luh4o\457 7߀9 \L iD]c7si zFN ,#N0d\ʡAU/hܟ>Prq"?:!ksAr}C^vJ.)Fv>(\+5g Q]C!!XL~CuzI~y>iKpU{51puT N!LOgեF)1Rګό'{bK$1 endstream endobj 87 0 obj << /Length 2396 /Filter /FlateDecode >> stream xڭ˒6>_V*!)6vbO(H2|} >fVr!w7/Ui(7M*7iQ7}dQ+f: ޚ.`f_J"̵%dfpvp*VE',0/ۺ6%{i؞~Jw֖c}Z̊(Xg0; xe4NI0):4x<z4*=Z'6hQ ;sojȣv-VQIf V0(]Q@:_Ʊ(14tBr-,ғC_zGk6X {nb G` Ģt-) 1JO r8Oŵw&E">c{B3> tֶ0*ӝm3\_o$JB5 ؁fe[BjiH*)"C8FcP/@T4 ^5ߎ_R刖v2&®u3T5۔2B[~W,E6FvB XEދS΀:DEnvPP?B#Å&}Ë<{3Ӎh#6* `<߼m*X*6wnyB!zכZXb˷^ܾzzk `y`^ Ve t)YHCjfЃG888t#ξCObx!8_UGxG { sZ8\ߠڱS4F vQ"^$-x'?jg^EIWF m@P#&8@=:à@>y>եߢH TezôJ*[+>,O%w]&]usZ~|~Eǣe~ ,fŵpVa$j"qvD$.EC }v ĢK Q`)}&,jjJSdH,yk3H3WgY˛?W +fX:Tȶ/{0N7je7N5|x>bw`zgc, 8Qu#1U.ڝZZbR.r|KŚ8~Z#b XK. ϋl9 ,<ʁ$48J=8oy`Nf|j7wxM)o-35 |GOEiw G c(a( zO"pñՌ bFz(]•oSZ˾-PQsǕTh8_a/5Ao@_SBhcVnQNa \n(DĬ| MՂ endstream endobj 90 0 obj << /Length 1352 /Filter /FlateDecode >> stream xXKo6WEV^To`@涻J-5z3ȱn Qvs`d9[/dLax6lau-f);cua5"abfL]zx hM_(S#иdmLkq} )0{Eaq!X&2/ ,3払,զH h0t­~$2 AXٹ„[Ť. GVAšp+9 yLcan}2Ǻ=4-$WSLw[UviS_?b:5U# c좆NMmn 7uj?:Eo(agrʑvS7DLQmDR w)i4,a4$I%"]NTNEZY 0e3xM9^6 u}HdvtfO"`֔hYw'/n^^SGqOz<7NSUaHU4FUC@[%AOAhC0k9ioq6LqH0VV )K>|W.' -aQįKvQt{'AˤvN"-.m(*I!~2BI^\K)گNb&,JLb%dwS_&,v'hnNٱ{)em?rNx/gv[-ݼhoSG,,љ4_$k~+shB endstream endobj 94 0 obj << /Length 2229 /Filter /FlateDecode >> stream xڭYMsWj0lU=$Z紳J%PtAhxtݯ~sx|ZX1ů&4ǟǃXp "ΔZ/6_-|y*9<,˝^??*\0SIl-ȋm\I~i0cY<w.hc OvX1nt6{.}[~/P6Tf+%Rcimhk۰]eg,xr+Y0irhAw$7_oXh&]S>d2D!DŽpȲOxË7KͳUoҴKgpTf3~{Ò;_fG/e=!3r]mA3."rfs0|D@1ʲN~Tw[adb5$#hȉ64LW-[g/K^FhTKx˦hj6Ah_kBr--}x é{ꬓ+6=lV͕Uն|v~y .)Y! i?. VTL-rؚtnQbK>d,NnW"L~[{5 m±BM#ưS lw5uCUw1 6\fbEwњKTq-3j_u9ͯ_c7ICg%5q%u)e㧙خ<-9[hSHe[SZV5]ߞ6$b"GYkjũE.P,!@YRo!J}* N]iGX_sy ws7%&! 1eaKZ,* ԮT'Pao*p̈|טg_,7(Ks}]gIȼRlvL\]?!+!?_$TMWe]og BbydaW;T?pDGD!a+$ Xuk +I1=j\OZ+S{j&G\ a^qsU4NDR_!M-7H݆ }O~w3c_D{AAw /X_ \Tq@˧;(aMЅ.ŞFZj6>M/U{n΀2hzv~#>$2-].aXH% %XB+Xe-U0kҔXWab}r4t)'4 Aͺp^)ߍ1NCV pėp ?ꑿ JY s=65@9?/4$gCP 3q3FMY^y 4Lʃ+I GB-u7ެ(KJ'F]e;EŝȿRepuH %>c0KsدiqҚ&z\u `C9Lp_X {# x<# 09nb,Ko.v"M9>; fo/pmsA@i  VF0]WM `:" cLH]4)y7nF4B 32Xb\ ˥X:n]x$FoWQ$6PKO XXxRG@xd8(9FR$->'`1]L❑SU04( PHbF tJ.ԣkO"GL$qUdX8䭕PY K8?U}g endstream endobj 97 0 obj << /Length 2848 /Filter /FlateDecode >> stream xڭK8)|tEtDa/́*b1Tcݳ~S zFde"域>Bن A7/,GB3<7n1cߝv}6O+z3[PDrLp0MnB,]Tuu7dku_v_+?Ǯ|) GvۘsGm_OOZd GK#P6=z|>U`{o/l[kc?i[9|1eqٗi@|v}U}<oҁ7Lˑ7{T;uۼ]q`C;o59l&~PbFΎ\>R= [mZES{wa8f 0!4safaZn>U띑88QmacC(=t|/4408vׄvs:С#GTm;1~2Wۅݺ8+c|ޱ>{{eg*|W35 šl`kN>R;x+ma6Ft7SN|H)/PǺߞ=Ї7dCB2' Zaf aØD_oPfSWmZsqdj:#CBRd(/eT}UFDZ/vZ c qQXg0=JrHFR{w4|ؕu=08b8$D؋IfHrfAMpŒF)3ɪDx*%v6Z5|z;3L;Lc$3@@fDLG2#lP,$Sg9+܄8}NWPLfDUhDdGD#lt19,mQn9}u(׊>/3OW' ,e(<usqo+tz3L :Stxّ.XRH:qp#b9+pza3H 4txpHe(#qXr#)psSק}@`AIs1(Ob>Qy55~= 2rm+MTyf AH?ˬ{!4L|$:F6t lFtd3† S\haunKo3X)_QT7Stx.UthW4)mMo3lI_`ӕg 5#O:#";a3O'f^fscΠ{.+ծ疦섓7.\a0B"4}j-]N)R$5TH$)U]O)Y*Pd2}jjFLjL(P.&5Ah{ܑ4^ٗM@,P6o^I'R-@&}JWk(:F,t܁eDHG,#lDI9fn O4?bv0 X=LcrAXFt2Qe$r 3oDM-[*W9d"]~+'bF,]1~XGu2O'E"pKHE"*B,Ä/p 2LWɌREEivAO!GPKmk> stream xڭMs60"Ôq ( |Xo$+ %-I^F=?Z 0Ϋ0N=wP&0X6fU|=2#"()T:HEw<5w>Swُ`2`M̙d I;WHc("ʴ OLffӡl;;J(zY*{F`B-#I ÆC0ƹ 2, $in"3HvA_v P3^& pGQ]R˲~I`G^;°;pMpp /þq3l 2~kZLe0&x(~y9{%qD$F >D;;?lwG7}Xlgyuj܍9Z`^QL$$vC$;~XoTAC&0xEdHO{iғ0FQ6ؔ ] )Co]sJi 8x#A ,"o7 m2n i}";$1X < ;c;wљF`)zMLԼNLe7ퟓP/j󮈾w~XoOIEps. ;ߒL >Dfv_P/F`&ӋGg"*@G?$h\n\a}4tj cUqMt7_Oo_Dv.BVBfӅ(TrS8,wdQQ y`̔3*6L2p@L[9PPr2 7fVl}Z20rz2bF\ ߠnrbޥ aϐXnbs/V 7p3-ىȤȰHJAh!Dɏ beWOT/^Dΰɦm̠J )U!7<>&^== "i_= ^8SpH'{A:ÆO#?lқ4E0Bї߿/Pߗ$@3Ͱ%ify҅.0t.vǶkiס^z߇ tx]}Ad:3Cy zpґ)aMe)^ f 'l#2 eF6}(0-}d6r0$.KxL‚O)(2G% H5 xe}e7% &Dݑt%w4c3bq4fA FJB 8\+Ujv]z8$،H6|fPT " HsLWd,A)HDḇqz $/_-ȠYHNX(=£/=d%"p<$1Æ} *9S##T-r?R ܟW90 q>\nԙm  SfӨUgD~ݾt}ݶk_}mxNꥇƾbC$F"nVaX? ]hӥcU +%._.6 w{ ~1 .}pV#}3Xɏlm3Y=:-O~sn)#d 'xT5mMXcOW,Ӌ q,c3}43̰Sr? a"K)P\H6}ff endstream endobj 104 0 obj << /Length 2594 /Filter /FlateDecode >> stream xڭMs6:3oti@K\N_P$!PLj' `OwLي+J9RD \"iaMjxz(w/7?6u@_~zhWJ}$?ƫ_V1U;SBꯛw;R!Iψq8sjR+~=oa1R%b+B!+T DobkwOm[!ZHG1,&B˜T) Hb~mDWM4t%0AeQ&rI͚qʁF BEGY8S(!KݮœwѮY&VYc'=aG?I*L̨[ǘ16lD RH1KI&.\nf0mQ`PaQL@@ 6T@29PLd򾆟c97.=;LS?å^xPd-ɔP@h (*8MKDD(;s@C]jѾaU:s0XΊЅӏ& M *̡gV4/6z*h{iK^B9T:80All P ;hOY&px`1a?XErLU <2P5aSywh&7~~{{l}`ʡdL,zupdS&͕*}0X1y0 3m3|ڋ3ç$O@L 6\FPU:iyhMhqd3 ' N , <1&˰>@gi^¹: 3: HD 8*)A(F$kfgƃdS& LIKa^zK0(0h5#$,c) Nih6 Pi!ʊ@P6l燣2u29ɮZu}0D]s"U<.9hٜh!-~8!Qذ~a8K}tݜj?~ݝj=%^H 6$gx Vj[q?۫{)wڽ kKf{ p!3($Fn>Y(a#T^Ic$6a/ڭ#kҤ_1kltr zofYC[ɲؐ16lB 55|lh1pcSF?e(-`Q{q;{^& M LMsLhOVh4084s0h A`æJm,@,iD(lTӿ(:L>YT5S 3C3 $nkkظ%30aD Fݮ\ŚS􇌧f&)U endstream endobj 107 0 obj << /Length 1679 /Filter /FlateDecode >> stream xڽɮ60Ћ ČHZ))z94=mj3,)}9`K7>FN&BIwO]vIPS#"d}lgʄ{m >vRrA"U$> 7 Mp[U^Fȱg zs'׹&w+ǿ\>o$X{q>Ҳ9wMS$Гk2ںTB=Ui`qKvtp$ER8v#TMD ЎMA*t{i@>AS@dM 1k"wC&$.0G" RFf rzI4 tlD(%*&ӥ"0𕀆" I%G@Ds骂^-=mE3MDF~gבa"LZ4)lD`KL0-_B P8hQ$t4|Rv{bFQ',ܔqPjZ:#[g,Hdt,,z23֒\M@;NsL77UYm; P*~@a3OhN,d8 hM:^d^ sFD'PbD7 B/=x;3sSKC$:3oԖ^bJ@Lڻsu;bHZ0:z=rG} d-~s$H~Ȏ[Z5^fNwTo%ye Mv}P&]IH)2P_+W;@)JP=8?3ُ.!uXف\l51ZCą,Ѳ9 V{JdQ/F9pڡl >JY\4HtrRKoxA>9kzJO~/ybe(>Dx&U"oQ *w*Kr/HtRҡcIyOf~P(+%!nt`[ܹaW`:xxmF>ԶLPdiw yL &@nIu[-%\L8v fm C 6 sŎ 6*N @ -N>-C ceT/r$F#mofr `i)PڅEfj3 GSy ׭)9Ƀf^-8VbOG葱S0NzÎ軦9X S BW nn {@SQ< {0@tK?比hV&RBo|Z yt!o ?\^+-&% x|oJX$FFʁ/8DF4i<9+J|9@G$Lupi3ҩ%m^mu.5ڠ&gB7>[90ʳ;*iլk}Eڣ}U /e3Rv)y=KɩڂgjrRKHo><~V endstream endobj 110 0 obj << /Length 1893 /Filter /FlateDecode >> stream xڝXKs6 W($\=zsvvMZc5R/@U6^,A𠿺y(6\,aSMK&7'_0*M6NVq|uH4n 2MJ)aW?6n{'* Qdo\m k~ULkᙎboY,t}`ܢQ5}FR.xȯXpxE.BVyDq[&k&)pNUݦj]3_<$DY%%29kGBVН PzK7pc֞)Yzwzd~8bzB JsMr[+n8s?3x}ޗb d؋-0%OFO^O\nn8QpHB=iK"yߵ/6/,>q;q6cX\p:=?z('-nMK#kɺ&j0h;6j۾%Jn@[&6(K#9[]<Odt ,!2RҐzeJ P3#:U;k!P&7R4+11 }!$ =7F3>*#4-d(^ uE +IJW/6z}[z`ԵBU&cuA»*dώ[د? Nh' HVw~K{G򮉝]6, ߮ ^au2`T - pz8^)rn^MZW% w&L;b\/N㼕'3'<<8Ov&ù_=1l<%"@d gsiuZ <}3Wt"(ňKnj #:8 >1P %frGt[b<ˬ҅QBC%$͸fwIzu}6^|m#uq[d|JqC1估C䀼B\Bp-泏͕Dń<RqPEwd"G|Xၴ3@Z*Ve g"<{WUv盯𯪫N1NAL"f:mEܚ))?'$d zC GWOm)X-\U;7s3+̋m< endstream endobj 114 0 obj << /Length 2607 /Filter /FlateDecode >> stream xڭZOs6S3"ַ;v[ۃb˱&䗗~J~n2(~Hyca"qmu]ueu,/+ibWSS |:UƮj3T&ʺKadLgjtg[7/χ_p;'[]0br|.8S-^v~_v߻f11%i+, WygS0c`.%fN\"tМ%a9\aC3lF:Ln03o^4_q]xm$M]5l }W~*ao^3ͷ̲OwAv^Eӌ4&Mz~Ѐ?#Sb 4nxM |WBH&'U55*s|V4W|^W]!]M>_4]lWǗǢ!9@8 cpIȺ5 Ny0u ʶ>4_BDSFPSJ, YUc!2&ݠZ}j}|ܖڅ F~CMWulCQmJPpԳJ g]ҠAYl?!؎ 0ą W&_iz̥@Uݜ֕JcZ*uҏ9!d*l `׶_ j"˪D{AYPT.%d$Z0U(襁sJ4@+GQ̸lPZ̘.\DH/`&JW2~!d2yP:cV_q`нmE<:9X4n碎bug]ozx|i;2~@W6}eA@R2sS7gN9ѝtCzu5Hg6P+c!|d/A3Yp G7Vֻz*6bi@VfSҐ>{%~eVng.-K^s^-cݾhqs_^Mzӟ"<$!ջVǺ}4>ӌ{Ighj%ESCL3' oUn_487+d9ό |06Bo|87 ќJs> qQ^XZ- ?D*̨lHwy5OV ގ1yQ2CB;y[P P.?$#a2ƥ8stc()/:X&[&LP|:!OJcWbEϼi*ڮqdL0a3?RhdvK~N'!voZAAHw;siT9iTgRr`B1.`qwDZ3s\1L `# ,Ib{M_CG-;^r 7xPe$l׼:D6h<9xk C $% &<[̍ .FxEN-1=8>6]bQ0!펮+z},چ+ o߱1VtGxy( XiSN>վ쳛s/!!yN .jH_0ќMіM FjvXD<.q((HDI,|x֥UkQ endstream endobj 117 0 obj << /Length 1764 /Filter /FlateDecode >> stream xڭYK6 QY"E$:hȒG k׾$E>'%B0L7J'-Ye ~!t-m<5_v ӯxwtD,6J۹C?۴]9߯Wn"["ݎ{u<ҷUӳϿ&/Xr&'a\UӬb,O xhoBBb?TuH3n633Le 7\0n[eҳz}CRq_7gT9v\w0J7跒pUO}SzbjK]0Z7]B/nU5Map eK[B$7%V8ꜷZrqdZq^Cp o:oy+ 3Ba6`7ܿYZ;eN5!)Ѕ;31Ϙ.R+.kof磖Žqo౔=x ˯\*["uIx(պfHysݬtpYsx:V3sg[`F~h sB`$D &#sOH=GC -m(F|s!„xCe"rLBan~k,6U=3e*-2Uݖ ?юq.m=[,-}FsT|a욹{U3b)Uu|I*u~@> krvDz*c?e'.#>l@Kit@uaڗFXjA%XTv XOZ]vێ}n7_ahܖ -h~ЄTms) Kaf NZ ˡaU+λhU$_VSKQ"W۱^sD:qеMTLzBjrRTHU{ `q} nm&<3!`A8a>`qdS9bhƅFuw*fl#q+=݅"2׽Ҫd9ZS:,9uN?,BkRNq>~ &rb>lP8zx0ngQ*p_b!o᧭~:Jv"DG+c'PqJʋ9aQdoh2B##lWuloq#[ʂqB9ec endstream endobj 120 0 obj << /Length 1026 /Filter /FlateDecode >> stream xڥVK6pJS E-遒jT)jPvN{H7Q?m>|J7$6&^mwMʓ"JlmV_ҬÄ _mVaVFEu3ևOIcȆ}sD3*jws(r=ҭXMc+T-ia ӊs#wHPxνa.:e_തqbu]D`t3)؁G,aC`2MZL6I"s$-,`ϻm{O#M.I+c,)LޑK .5R)>:gqERFނwF+*s)_ ^;<-f-WVׯFZrƦ#,pvRhO=(S]LG2K0E)ܚ<_~Q%vWc}%r> uB>.;q:Y4biqp~!iv3@- ޑ%1~޷m|wuRSygis\RaZנLI4ZG\dשA #TƦDY':]|3/K0" pGS8NuQ.JvFݴU2pɌB[Pl~1qe@D l3噁J)ˈC0Y[xr'ClTy*;c)+giC޷" tfxISSg͵W?G#z, ߋxn}ȩUs@$&ڌ 55 iB+K_3V}wHr,|g ^|HPɽ[U_ZnN!kXi3#gdy3zP?%P endstream endobj 123 0 obj << /Length 3067 /Filter /FlateDecode >> stream xڭYKϯ n6kplHOf}|h8oU_?fEQ;viGQKT0>PWc7GGpL͋ak7 U`!LsyZ/Gq*5ڵ7ס1ԞX.*8><⥤`Є} ~Q:+B35zx`F9WcIJ3j|ڦO8s9;uMZMbiI|`2W삪qmŰudnpyݼ!:u#X}{2%'LJ{ eugB=wm8^Ͷ=UieM.:T@b޷yHO$V߶? vYDA9Ì;+1ZZ.7۵ܪNm? 0R2* gx>ɏohd0t I_^n xywt́n*?VwogPXwX7Ծ?_43#:?nnW2ienmwmA i2sM6MՁFu|9gwh67tgl{͢mʹPOR~3 Kg7J&:_N! p:Fه*Q ?o) XXO:NH55Su>VC{a /5wfp};+; ȁ\mޥ BD3vh'*~»̚VRi̶*xP?|o[ag¬7W  g[0َ~ t8enDpۢrYVyܬHfsoahi=}B=A2⎮m\F2qHΒW?IZg$ Ľ#q *BJa߮Kb E\jNP"e")B 8(;܄;~RzBeU s _\0"OUF6ܴr$=إ;SZ#.y>Q-/k% RClrqbRރml6MĩZMuU;-f,d5=l\( Ĵo 2xgWdU"خ3-W^otu&Wzpe@\!E$`nA~DAx[JJ |R*a #-}(/oUaU!&r$oLpl]2m`+Q8I3ȏ4"[ȡxQn =;*Jؓќ׌q$ wc# /b%u =HW5{j0ΏEq+AMAH'v "aIzZXgGU=(*{5`k0>c@b5uR~DlnEգ!PRGD^B"8[&H{ǎ;c~&@*RY  :Bv#sn?e1LQp{Nu:~Ј!|za8Tɲ '/@#Njzz-JbMD6Ak%^dpׄg .GԡJ<;z%̲]H6tŅB(h:ɹ'>>1 P2Uf_AN@V*@ ),L8"Uחs-!92䦗teWY2 eLzJJ(x)F|Z%D-!ʠ}}ۅ [.(im"Ol|fAZN⚔ PHۻA#\?vq0gD8q|v aBFk~h[ +D},A"6R L=43$_{V endstream endobj 126 0 obj << /Length 1978 /Filter /FlateDecode >> stream xXI6%h3%AL.[2YkkZIN˯Otrb껇 N#wTR19A g4RYq-hOoN Bk&3ľ87o,H[ļuݣ.DW(ZU[GD0;?U{iG׹fw)rtwimZOdzDʌDz\|%Cєf᢫cW:,xdaGڗix.0ɸ\3r}M[3^kQO{/A(Gz}K*ɗ3К[4o8 J&*@zt SOk]?:W 5 裹$&,#Ύx%\1 fIфAJΪkwbH%2ӭȆ U[T4;qK5GQm;Pn:\p&C8hHu5CQ5Q3pi q7D ֐rd,HAdޘLiMseq\oRK""p@]dhĉ"[WV0A8|:9]!H0T#\*7rL)9o|bmBz<T?7'{֧[! 1!*ZJYBt&&BT҂VSu4@ZؽPYpC%'1 !r"~p 䄐wL!U3DRY2u)>̫)KS5- DvcdR3\Sc#j_hP^KK0HpUBT~dxKk^-*MNJan$Bg "핪PJOB?\hWQ= Щ~-@rw]P LnY6$⼫bY13LLpiʸZR-P,Sj)d6v\#p2)BClH؛-;8‘əĴ%V F_̥R1!#X^ج-O f՘lH =<@^wqH|,Nl)Lށ|2~Tp7yTq^8F$_D(`RؕJe82 N.-23& DLשby~~Dn̙߰&x*˸%<,5N ZNQ9 ]<ssf鉓{]ɺ<_g&k;b|ӵQj4M҇ FXda׹C}~/ڔ1w}CX|#ng,U${J9$-edzHfM kU[e®cBb](~Rl!,/$x OZ!Y@1V!3!u}󪿠Q"GP1R?-XɅbYc65`h{~Xx~nu"يy~C#j|cgwo F}%C ApAIÇ?1q endstream endobj 129 0 obj << /Length 1867 /Filter /FlateDecode >> stream xڕXK6WR@bE"DOmmSȡ K,$[w3ѢeM _~݃,7"˪L7M)6benGñ۝ȓ&:RI+>6{FZAm鵭4 SPxejNAtǢAm ɯtakzGV5 XC4z9Uk:ާNSxctnzlLE#P ){E%1vB`}Vm =ԩyU7T'}5@ s׶k%36CWp,WqlxN\7:({1k:I\fEhż 1~pXG74`<=/G2sA,e&ar<Ӥ4 UٺɎB-p1Uphm8 Niޠ?/=|J1hߣmEب;>\)g>Gwrm^? ɭ+K<]o@/9>՘t 8ZÌΫSL~+oUzVI Nj_p}k^͋yo5Ȑ^xeAk+iQ0W,:ܰ'5S}8XP;M *"Q~ia_V=RFo+ W^ɫK,xТX;d0@`^N 訟4#=$i"$ OpwWer-@~>pKH3m(&'AUyen$z`ET0_ѢRFO!嗾Y5^R>nRD@L<iC$U 2p 49n輷uP펃y۸'ȅ.6ǵ Ҫj#zU&C*@< s l`i6vADxüj1!˓9x$ %JY*᲎#*82'Oܫk&Vi5Uy RmB7`|Ќx=Z*BWʮcQ䷉z@t#~H)2gj7QH{R?̀u@@AP&8W&l]~=*mW@(0IzI_Vuy]aCeH&nіL\pz$:PKR"vlVz)£RO4>\ϙ/WfG@qpd>k~ˊĪqgm(YW̑~0o 1wA6職@B1R!5P@ذ|Y\$ƞ(+['ZCXC1]2k?ݫ-qUǩMZ'pd5-~N\7llW T4 FM 1H\O)됻{WuyF?zq! KU@}(/MMwAVr_֠=cfn× 3LX[Nn-DMRR 24k2PzE\*tjAFcPEfe ,:5=cjʍ4;Dfڿ% OV,/5XK hd%Ρ^e?yьޜ9?q7I_LQ􈁤vaLeF|;r[-qviLƉ\%P`qxxn ||Do)I\"*I׾Ϳ[1 endstream endobj 133 0 obj << /Length 2469 /Filter /FlateDecode >> stream xڵYl,: ցӐeUPH#9Zht4GʫFF2.d]YY/_c86th!UYZҠ_%2$Ksj]far?nyծ%X$c/\=Wӱio}mPO Ԙ SM+ִ.ܞYna[=MFۇ(J-jwD?tkk{ipn "MV]gڵS3fu,E) K7(8ndTBmҭ}dbt(Ʊ+b$IGn!- Ҡ$vqj-klP]s=F*LLZCsMpYM$w`$̴,kU][:Kv:KBʢ?f#3Ei8L^zv{G)D]nwj7t 3pקkia,SlX |\=F vpcQVO,摂-K!`K[4T y{V啛bAp:HU7x9߄W;XGm os5р%ӵU]1>%=nh^M{r`%hx9*,-k`WpDsTEv)N-lμs2 TNM aB1$8E1ad6vzĂ}I7 Bw5+&#vdh߈݄Yz}1.XlЭ@1ǔTG4>whgn(![}7:`K=|!/ @jdUFnz9je[{/ݰj-p ZAr Ǵp<@G+}94*硲P moiT!U/brb&j9 kW{YΗ{!ͻlJ/, ]íe/ Q>!Gw3HTR gdd|"PJ`$CBH + Iq#JO$hj8a{1Ǥjp)oFWiKgکf'0:tϻ$!$}/H}%HU6ZZdXyzd/? ^TMޔI^'ETb<ԋbzO%K v} "ݙ^aD$(ܿEGL"$ʯ3-̝d{҅Vn*HsB}g\"TV>\.grSŠMyyL<}.X#s0ꪧ38BGs9!{-ѻϥZ\Y[E1.Ҁt#BD#m(Rgt J<2JZC 1,/a߇?<~"A^ endstream endobj 136 0 obj << /Length 2288 /Filter /FlateDecode >> stream xڽXKϯh @žv3AF.hnkW =*,]bXGW`y˧S*R1韑pTRE=8zj^KFz X[R',})Ʋ1Y-[?,~q 5OX'N}q뭩eI}ZD7qQkttiwC[ؾ7&qtn;h&yGﶟ$=87bR5}`H,fYu^lg7qPՌW*i;|XHA xdKpyd|ZզtK0$Ǎb/nt=vQ\̙L?~cюM %Y!\'Sr8!"UT۽aQf,EXGxM]iբoGLo8?:=UEʔ|kCt$ s oIHի.7Ԏ m7*CRNf+{ }B*ౣ=oF,s1*N 'n51ХޛW[\LSW܈BӺEp1pTR4f^ 9ۈ4Z섮Em}d ƎMz)'j{!R.AI 7QCABZpBH 7lIu0 XMu$Siu"gY6R5.8ptla'ڻJSzz>P@b1 Cu5U59%ɘ|' 'Y{&fCu]ljgTDbEk`\L+0=sA:T!+mGk`E5]DCO-rwFJ1klT{3YI#_@> stream xڽZKoϯ0CԀ+"E`'dAVQK =x}X^ǽE.T,Ç> y9˔w;s&KcD=~TDu8Q{"J^ U1s7=K"}Ѩ]GO;G#ԵϧGϥjDZ"ue?0n$Q8x^8 /\GEyWcOkeπo[ִ%Mu|(D8 z5X2wA 1|.sS=VH1>||SY w ĒLb Yi3꒶U{Q6&#(tDԌ]Ԍ,ƮPHO;"tHwp$UõxTZIѿʮSю$}iS7Lx/Ʈ)+1|cS}F0OZ&'YĘqMnIaX}I &` [ q@)g Ħ%X$ا,w:10oaD:([5A4iLv):IAڐW5^ض˩1bG/q'}z ,9"Cޟ:2-Xe&c}:+ >XfLr!sƳLjeRu+PRkfL4o-=|KMK „sEU[5>`2 JmVtŪ^&oĨЩbi:}8P]eaP]P*eҨ2KYz?ͿM?v老p%Ƌa+I8M)`lk. mY2<~'hR0B$^:(|ceN?hS( '(pɈ.PO>)|C齤=MK/C Γ-׭ʷEmfww)EA,?RxmԅD6|\9YZgga6^fv}N 5Ӊ}@n䃫2(妿@w4T69Y!lӂXnMtwmQ~6xL&˻> 0`*"%ӣJ~ƞ[0*QR b-W5Pu-q@ ݇5I9h%1.4~ VB.j lО x5b^[Y㛞KσHeSu8غ6vv#jgFLM SsRs<$WR+#痾f=GN23wVV/݃]{Euem#B%M-dC-3<9Dc)jxlҨGSѧRQkGXp wB٨U>Чˆi$oUQ6NKuO2h+1iRA+P#s6Rq}bN@ؗk-t{]'q 98ۮ{ºem{ܾ/ΚO>ZtpD?S^"s%Xa)X6h:C7>|῝q endstream endobj 142 0 obj << /Length 1868 /Filter /FlateDecode >> stream xڽXK-20VD=f7;AvMl@[͌,:$=br8⣪zM5t62墇#D׋rD7j76O~v0';h`|Lꈺ#:hQ'vPJ^\qb*֯IcO&Ay0@;3zZ7ՠ7nT2:)0˲Zrw A,7^EgJ۳^dZY!y+>]R$b^cz_cu ^4>kUrh9 ~Ґe b+k}lꙸY%{Zv&@EV'1 ;R%',tN |89Ny7>aӘ =vm.jcX"IٓwI^bÔsd6?"ql3#RiYH F0oafOٽ%W3r+}=H{pm(x>AG7i#\0sK`,|-˘n n&5d47H{|dnOS&a_[Rj.3 ]B90{t DR' YBj14ݏX(#nE)"nHdq.!+nHBܰB[p8+2][%/ rhiV?`:e[" W3^~!vދ3"RL.܍@gHNlo?,fuIm(vR70E#M:yD}-S48D$< J @ ( 8f޶[ J_/.ށkC3jgx5"<]]"ldU=}'Gg+6JUZj~lnOvz Kϫ" OO}_oyS?S­mB|孷8HELLE{ _C#JY.<6{1AA$[]M(2nh= ._dtۈT(uiN6yӈwDhN:Kr; ˢm-̆r|hЍ[B/2oN>2.4]ݢm=D58=3^Ymu7/.oե޾fO:I޼F;эPAT8Û-aǸUzcz|koMɅI^0Khb8) endstream endobj 145 0 obj << /Length 2412 /Filter /FlateDecode >> stream xڵَ}/ȘC$ ldlc!YbקU,G<bxgT,~],!C+vbJJm7AG"Ѵ:AKC~V\ÔKJJE¦)P~ MKT44aEKV$BaLH0.:P";1ZsZ:d>Qmqmgɫ/O(rV$s4ܹsZ)e68ni^ΎNWit}-EA" |0 N0AQv.Z:Xym$4upP]6ЍPMOD.;Z;O#耊xɕ^31^%XPL& v l" Sh4A3#ȥFn;0Ӣ >"Bb%Ǫϴ=.CZv`)c"oNP^ -8Y D8rpuWj,׶#&>x7Jt8%~Metb=BjNJ[|a۟dob >./+QeM>n)CВVfEq" /|\1GbtljPB~U2x>>Pt [6pQ"* O"2­V)&Așw:T,s$l&gpWe0s;\<hِf30u0B1) "@s[/5r1hv8^ha<S=f$et =MHF:BJG4'm)*6Ʀ'[4Өf,W@IdOq '-bQ(M$6K Y~۔6) ZCY4NJ3F}:ݭitFT=BݼU,+OsuV6Rm("﹘r)Z̴-ƪ} 01?WM>igX81p>#lJ V: (t#p_x&E/B5\}q8m+ W\R@VW7ҺA'nh.7f bHY):U7xH|"QĆh~5&sYgw̬k(- Xa8n"R lsB[ZޏĒz]bm׋t~j9W:dh+z."ee (Z~fM|?tP+.Q0{-l{vv4qXe>F&&҈Ṯ6X3tj%m*`iX6+vtn̫v q[+-wg*4x'hLckӡ.U)Ga0W e0kܻSE'2@ºG߲V'`FXOx=掋պ|~?8 hP,M}b"4dW(H{R@7H론ϲAUkq/ʰ¹3H t @bVfopq|]K|e|VZ&-֔4`4AUKΧ'3W%X#ҫVtj%'sգ=asiPb_g/j>Z f0C9{7"||7f I-I`w4ӗ)V6 Uۻk[䕁M:C5P@[*.T"tfsŅ"^RG}Fy@rx)6_DZM1.9 CCgu`'"gs ={iG`x),{x P^V"(/] )"sikp1 I+Ff+h r$Pךh4,zom ^{Kwo:7)ݕ^˩= f( h`zZVHFϡ/m FA)"+L2l[q􎁓,cgW_d ]U cqvenY"ѿTc7pkPNױ6|WtW_pRSXWYr%33ۅ<ިwPl-B+&zgKf?u!;hzrigo'0PMxS})D+L2FEs7Eo&<|2 _\+p>npC(~G y҉P&$Ow ƫ. endstream endobj 148 0 obj << /Length 2652 /Filter /FlateDecode >> stream xڭZKϯC`rH]yV%N*JFPv2FֈAXp B/z?3_ ΢8Yء1\ŧ=|?KQ$AR &bx?&ti+AjRt_T]Mk G/E]f4z0}ojkQuE]`ָP+g 91LJ',2ea*'Nj&pXF"bk2`=9Ϩ-U8AfJiV|9[1gȈ$cXH--=.F'Υ)sD,5 =2&1Gn}YʨBwFX PEc8qGAɐ7xcucxEM$[R ۺZ'.r_VQ cbA a섏(@ JSerFd @ϰ8= v-Om]5 qgg=~vf{,0 ~xQ=қ1 k)3E0\W:aBہ$ ^]Տ][ǝ @ѥ=;doS>š,JbA4fZp#L^OzcH3Ky+q:'#@׿@RETc`}ד>N~_u{ LKujŐ9&Ւ,Ϲ}u4|W}@'VXu Ɲ۽ uvS&BE]&7wHb xo#-Q/Xɐ=OW&>b`asx@cOf~ ugTBDcE4~ é+4@㙀4.x=x9M9^gq^K3U " 5%8;VJp΃Ou]9X3-|yMW[j *}FVpCi[[PmtfGrj{)enUQofC$ҸuYS7Z;?'ֱ*eֿUmg2<r]VY"1l-ڰs:JW{|0=nMmƸ,ž" X|*LSlH_ <.SD\r8RdHrovGO P3Zvl^gc!T\s Z"l7K lFH d?[K ^rVH:PX_BA]b8G%Lhld(#2J!WV|6˱C|4ݱՉJcYTɯjpSq@n+r. ^$ ah(F@>の@%S@KFJ7PE:LV*d.̡TfĚ,OR&oݵs׶Rnc3*4x"<8d跞+%?X{FH1٪;vH_T7Ug剎 +EZf0mA?QKăGΞT0yjS7)T- ŴvSi_ endstream endobj 152 0 obj << /Length 1923 /Filter /FlateDecode >> stream xɎbxll.6؀}Hz$b( &g` AKu+{D?H) 󃌤P~Ȣ\Dpt|%GfaEA?*{WקI$"]h\KcdHrUW&ERٟ~qxP[_}{y.byR@;+fg05PnArbDK2{bI.^ K:R2Dž+ѿy=sHYƱ\,! ` GJ-SQ2Gt*ޑ`q4M}IY=\̮"NQ!NGZ,C[6đcT#[I7'C$AFB Mhbùihl4:.^8 :K g!;( eDB-Y2|9,yַ#T|7q>Nybs7\mt`aASJdsߚ\PsIlճ`~]UKjI0!r8.B`K(o<ީ{AM;^f'a<Fˆؼ8 Y;ץC{M6zn;*Mud }ފ 8aLyX>l endstream endobj 155 0 obj << /Length 951 /Filter /FlateDecode >> stream xڥVˮ8 ߯UO?L``m#c96LٱS@WRh:<<#;HNR*P>Gi"޸`}̲|mL;YUFCe0h[;\ ]$+GΗ-2:ӣպj0ta~έLE߆^_n$24 AJеg1߼ƌF6Y}w#]~nkll2CՕgc{ق%Klkk}PH*fr={)%Y&1E[ =XGnRtm,i0EnKt0 _AȣObaU;L1C Zf!Q  o\P"\Fq]L۵;ÇK/4e*pXzchjږYKl'jM(A.KVH>E>POnd3HJΝbv}$ɒ 0bOH w/(Rh?fۺ@R2:.|{= t{+.Y_\JF\~ I~]fj<=qqlFӢsޭ|5p=CJ0ٝX((ZPDQ~;TGOgN:>4 Y|ƣͥ6 ]yx2{* endstream endobj 158 0 obj << /Length 1198 /Filter /FlateDecode >> stream xWK6W9I@- =5nEP%A赲tgJm{E 盏3CneYD9DCH1Σmoe?!Iq( sۣr7dAȚ%Hĵ`o5G$%tmW@YD*(EӮW+Ov<CBE|nrSuWk)~io8\GU݃Iuc;\t:! qp<I;*f6?n7n(<2CTDv=*X+蓕l4G˨n~ۼ6C W$C0A̿dy aU racD+HW 8N9E4}ߔM=a{WoR$[`*^-ak"ԯG4z#ڭ8z`OF+t"2s̞Կ+,Zָ"1+?wU+n͖,!_mX7I9hF Nd7FDH!ya'':=߻@h\PjN㘹l])vh:a n([3~Pc&ޥ . E^/1L Qxbp3 CE endstream endobj 161 0 obj << /Length 2578 /Filter /FlateDecode >> stream xڕYK6ϯh,@ xzm^xbes`Knzx}EGc`ObUX8$̋\힎\2]qdzLv?4 OEǤ 3Ňi0NHg 4$e_c`:{[vw<ٽNgk;ڸfV`dpdYim794/,  "2G^56ͫ$L735͓KWQ`^ࣈUgn>rOi%Ũn;!˞|硒EnJjk^B5_(}}3U1U}S^1L?p7 [^P0*3VV}{qhASs%$O[ML {spOg1qm'mNfe7M0S'£0W#ee{3jA/|9ܟ#J*#OaGˋ}rV̵Nc^FeL6 wz%Z zc%Qyƒ=v U1S P l WȣzȜ tdL7BY#7|Ez[1͈W2O# Ck.٢aMB4}eHig A 8SSHZǭ؍ ii {@R~w Y|!ǝUwZό 8ǡ0K㼱 8j@0Bdٱd=>XVzܨq˰ ZC oP, O{NpZp I^^mАq,o G 1/'32TNL+*Lb\ ݦw?&)7$*7ހ~hMËyB۹{5#a#e8|mjEXa3xh)dӖ)dgw袭>"U܃ :|A|iZäLA(M348[8-k S"fJ6;MW:miZނ=MFZNX`D4Aɢf8LJ.}bz?r'½B=}ԓ} o\n".E.n&-) ;9rնr@~.OCK@ bEa"dO pYM+=pnd3T iNbq8YC3Qe m?Y,$+n#F h)4tb0I{!YK7*FHe%{ \Ck=C*%y)>==|{@WvjMÝ2UD&`=iô@śo}'^?+/O[L0ҋ%|S[ѱ`HA-71~R/0d_9r=I&Τqj6mP/}֑QT#8Yu7z]`C_E_BZxf g&~$_d{vp (8.ĒϜ> stream x}1o w F pmJMvp vھrqx4QJ8kTR)d)䕎m }8XC,oRB m} 8mBcүk3DT 1y(6PD"n"؊T!tVȢ|(נK?)}Y: )5:ݼIZ \aL+džӜF'5l [LI]#-OB~!ɘy=Vc~{ endstream endobj 167 0 obj << /Length 1560 /Filter /FlateDecode >> stream xڕW6 +|<$%ZRri6vڝ遖hT6wLs1E$~{}QDWuWU%V[QEY?ٻv덐,l+ڔM^Lt'3 fY 4QezI%ly^mڅ71C0ÁvP4vŊR]|ImUgNz$uf̴${Zz_¬mt M8IXRäz?:Mz !3_d#Www9rK>?rRʛeɜb%RpZV+HՓN9pg);pl^Oc!h<}c44<&44*?ě_7s\Ɔ#`S|[^';ܺ5]0,jH`z;W#.qx}oۄ@&ҝa @S'Y':0IF'È1Єvr Zsa5@7W09yW28j  D@=Z@҈u>LAQଂUopҮ]$ZNOCNi%E jZ d13}w&s Up \DCu6O4Tn5\%h^xu YV{ifH i%lRC}0p F-Hݪ>viD$ahM9(~aoFI@5/^!DgpDv)T6&aP> ѴGZ_naTO!ӊ HMv$t"?CC#!$X︨0`iWa !FbW4=^ju2 Bid ;9;O9{Jz\r#%*HDGklfl5V,"bK/ 'V?کHKZNɧ2!&K2Z`**3g5 Z?/<(E{]^ϵ 8u.zFDߧNèOSnJ:gb^F,uJ+qgQ!/o$dڏhG|hLNEʳQ,I c6/IJn>:aN ö\[3f݀/.v!gRISOzb F8K&N喢O!'WЎ4pz| m?uiBC Ub/Iɖ^$B9:ӪT<UxCw}آ *}xf_B5sH ~^ffNcFTѰd="GlV{}1#ϓ٧6}O o/aTiqY%orsQ~.lnVf^r" !C0{clDj!RLڄI~]);*cg#Vk-@] G(sXGSpbgiAu%DttjzAe)VY{7 endstream endobj 171 0 obj << /Length 462 /Filter /FlateDecode >> stream xmSn WR6kG5REI:6lV~}VmӼ7 y:Z2E&xǗLVEuuh/bz^YT/BSuDY"¢J:xT?VR j]RoҢ?ZsNʄ>џ?8 [A2^L/KTu[/}( -nme=X@3!ipj:8Y+wᶎdQdY^wBjRJCb¸}"}ŪXe9i|l7 endstream endobj 5 0 obj << /Type /ObjStm /N 100 /First 824 /Length 1238 /Filter /FlateDecode >> stream xZn6+!$`܂tQ$7:]ךּ\Qrs ޼YG TUP&3I-J)GL9 q# MQ*VjZ)bL@H{SK0B e qVYj ״QA2c"P=9oD1UsMDN+ NȤkW$T% $Ss %BTLTDi 1FxLS9(x͍ aHP!A@5~u8#Df#/2q,;M&|Yb0=)cÑVh bUvywvAf@SG[DHlb0 VF`Cb.@,aq׉ac0w@\d*CNf03!PZG&C1dA䦊 jV-6 fD0dك҇`1bԸbKjnnۯiiݧԛifpu??tPtO~qW/v)“&vo_Ӡh) \a{:|T a? :-ւC8)N8q ?]c!tb_\G,-6k,@O1VaS’b9X2&cٱǼ@j]Av#VV)!Ћ?K S.CZl6Sg- gi43Z*qΐy,/&YLau-b<[RNE}MK:DQEAYku)hwq \ށUq⚇\u[p'wRnp1Z Y!ǞXҜ=Z"RyՐUњ~>gcM,{j!oQrl;[rU̼JkqL?⎮|U٫R|gڵ7Ʊ|մm⨞CǗ94ϡW*kŽ{Ixxַǹ?EeBRlaD8wgI!7Ĺ#~m%l,X};YVsg|Em16Yinp%ZqĽ6D@5?h1nxo=[%zN endstream endobj 174 0 obj << /Length 938 /Filter /FlateDecode >> stream xڍUKs8 WHD{sm'6ͬ=EflnIN^w@>\ݼ&ᒚ°dh^P!e&ɭ}~2E~_77HV)I$kIr(/ >r4!UT/rФUZO{oSo>|CYGGJ~(4Bsw]Z_!$І2I*FɺGuFj۶*P/}vسN?0J3jE~i|,1}{ K A ,m_ eaD@(D>LP mJE5@LauyaP}}<ϙPЄ?YY'[; "+Udwzݻ/8K[*C7K1C`X˖И` ɡ -M^\6~ endstream endobj 178 0 obj << /Length 914 /Filter /FlateDecode >> stream xWkO0_aiBjb# +h0 ݺ6A$sV۷a?rhKRcI b;wkps($Ry AdJewØgz$]m2֣ 'I&bxy86y.R%K_5 ’|[gdN"/A:ywW\1&t]UBCd udޭHb%U7Pq\ A#\mJNr&º(<7 z"hU#h=޲Sr.Ckۛ/.y,6sxwoW/uUqw=׫ޓgTc>Q{T^Gc'clbAйPP 8瘁+@@Ѩ+A1}fh4|e?7uT6D,r1ȵ@OmDŽ7eg*jxyMpݛ6VIcNB,u4uk<G'l4֜6C-i>g2LaQ&id OtYA+~V1XUW5#ZFO,FnTB _/R Ez?girjH3]Ho%>d}mmEY?> stream xڽ[k0)ĠbYka1RJ"&_);4;n꧊F\::|r{21 #`|xބ:ȑViˤ=n } 0 8؅g>f! M1-<97aIg+"m4߃sv[A@Ʊ+*)ed. & ]$\AD!#gkI1̀6"9z!yvY?FX+h!VjR* & -w6 \,M\W8>k}ڙS <fe$ehQjZ2*wf4(^L\Vѕnv⫒M!p^T P4%CCb,u}mqb!fd5TD"sԕ5661;!HxPcO:$H,>hW@b n۠,W$FjFiVncLsKs&õ;(dPk=7e>S'Lj6˾u5~JN^Ÿ䶺E6fԋ.LEs0SOzEWz1z.d̿zѱ(ឝB;W85; Ĝ6abۋ) )9\o]- 0@ȌAmj (d~F?ߓoN3H`f*2z8u1?6z Q1i}BQtr[_Fv^`M\?E $ϕjukdY_m#36OpBճݠGW endstream endobj 184 0 obj << /Length 731 /Filter /FlateDecode >> stream xŘAo0[iv *MZӦ]rvp1)hԴYo?BLTC1jrBϫ{Bp9 V m?)0aă ~^x΍e? kn~޷H E$Q$vCeS*_݀! ,)(~sȩR8Vv$ۼ )rXwg;}ٟWiTylSVj0HÑ8,v*QU)'8 #??X^o v2!G3wTx(B1AԪ bBq#0@}{`nޙg6ԕWȢ6d<!qˀMwsJR SB =Vm/åbvVPJ6`lj%zPY E9OĝP>1ājTpt!F@u:bv; liΤU㌳4[o8)4N?io,o9TwVSy;HO9ЬSn<x\-_Mnϧo=qBYZeJZEJZTz-m1(-?8&){_C:R |[my(=H-Doi%Gti-mI>BN?Fq'dWZWBl;?ɻk՗ O endstream endobj 187 0 obj << /Length 846 /Filter /FlateDecode >> stream xW]o }ϯ15`lT:4MR$aupv#6q/ù .C0F1s ܎LL7ׄq! è^\N aZQBbMY_fb09Lba_O )ŃAZ6y#90'lRˆIײab=dZEă0p7G5<\T)'Q'ۯ:,+"*VkK8:]B;uY3(vi]4M_%uioy1yMg1 gd]RiY DU 9 Z%Db^)2:ZhXh-IMlk% cI Œq޴Mw1s߷ڣ?\G|؈{\Q=.]> stream xڽK6+t-JF|q* )P聖hLvkחYw8=ӇRE\)6Qʣ4h]_{pۗW}ť4yr?g5Yd gT4j*zΌ<ԯ$kJ*R}"yNKfV 1>H7juuO1[׵vL5kh3 [J'N; f\JE^t?F䏝bg7qb]A}{Uo>[=~XOkb\p$1áLb::*맺cB|54ת2`*yF*甧y oо[zcI0Ov]_$e3\vÜqF4y 0b< * 9c։) >ꇬ&s3I:u< Ex9V{>!i`+F?AN)W/;b!T"R<:BUwj+ Uݼ{l$o+.46꾀iI4^oM0;]|EoI2sB+8\MjA5`s"zN8K3 jN)y;D}[|z'n >a"[s\7"V q(~AKqQ8r.(W8@/Rv?r%4s=}Z= # endstream endobj 194 0 obj << /Length 1001 /Filter /FlateDecode >> stream xڽMo8:@CSCbnȢ6/mi$lڰ{ ߇3 |^G< Ii4q:>- =e#Ix0~ )K cچ$BQ$^gnU[jB! QaƑ+)!|-ϛn=wRi'*evZ^X]%>b:}*F.sNЉ.Q{ͧ:A1#-01bci6iwt %E4^{:Ws8-`mfaą~7A]< eR0ӹn確!eqZK#mn K]=ޢ]pwu@-^w[d6;Dn{'Qli+٨4O`-56vg endstream endobj 197 0 obj << /Length 1059 /Filter /FlateDecode >> stream xڵXKo6Wxo6TDJZEb5zi{eV/P$*Q4r7!~g8oyJsٟ6d||?nw}azoOo' R$`t9$1uB⺒A;jxa[梼ph!*Ńफ़ z#5F2Kqy+ w #;wI .^`:<qMg4|Hn71~%TgךĽ|/?Pc<'pllw)UN\rv~8zŝvX=L/?l& @a(ҁ뫎gM=FN|/gy.zO!`ia,}w[yd`F/@KALwf|1衞5HQnol+z[+x-+%Rb! qI2I֑jŐX1R/l<5-|  =,^(  x!EuafPWKw1\[/Zq00x_V4 endstream endobj 200 0 obj << /Length 223 /Filter /FlateDecode >> stream xڝj1>ԓB3&9P҃I*[O߰B @BC5_D |ZUN*6 b55<__C0%Hc> stream xڍT6 t7HIHw8  0C4"Hw7)H4(Hw)- _̳֬uk?, Z\V0K" ߿f{ga6D<Y! @( IH"Ȯ&JƍkmH ˆk(%&[aGnFjLKrNS'^?zzi2zx9-$ARan$-pv,i+n]5qnOHET[4ګi v -քN)ft \yo.I#QU;֭pwoKk!sHAV^`>&N*sr]Jf7LFvlw( ZsS7 la~IBIYom¼$uRϠ-73yۖ*n\26Otxq$3ۂ!3qퟪ:i6W[Zkf:h $l50RfXB ca0# ,X);5*s4_J׫vr/-TpX%ZڴMI\ml-R;i,lU [6%S(m_5wh"El<ژIV&+H>D_C"ev`zN+)c8a؛NGSXcB'y(v<]][8u_]!'uZV50U'!ahMpdx2jDd{&C b~xK!NtJ R* zBfIZ|g 6%`O??rD X6l4ąy~K{#"jb}kk᝖G RC^ww&o1ni) v^CN A?*V{:ޱa*#ÿ@I-׶om{l,&%w_"w-/l1o9u˶Ij7=1ݕYBLd1TRO~ƜEnЦ괢v)Kq!*TF#ܬHӶ [{QeE&"dwޕjqm 4n7we!s45! ͓9Yf\=gWfݔQ=էu*>l~btYf SqR^2z\/63ų 6LZ!i{VQ)fUD|GjO&TҞsҹz1Ɵo.~zx>֙Y9+$_ 1<+֊u7Ɉ{)SUgpnd% 9h['e S:$⒪ a}f*#<]ޱSJWSUt=3VWx@58il$ζe !6.u竍h/6FM|W/OAv=A=.`G2[B3ƝLelgqưB>jвEqȂ[eu]DLa 3G?hԖn 6{e'lY#!7mYVy"۩ ߤ̋)!*Tgxx.uOb8̿#ǸNN e%<Îa B#LXRQSwtu5E~VPCէy,>hͽ(c`Vv0g>Laƭ#~"Ng7UMP! r'q2T&mjCjPAL«O+EzDX5a*P)+wv<y^/UW< pK*mj]_d}F7,e4Wt:<`Djf=}zsѬ.olJ%S;wdֻ>Ɨ>oց﹓XAh^_$8 եkKNIg1瑩ʏze~wv#gߍvMf#6=#?GO+=,W\:DgD̬7|`^9}\gv 7W~2±{o.w] zhNMNh,'`4v" =G8|ұC, of,%$ˊ:늚92~ Cu1.) k.߹O<î{r?xޜh۾" @]96TMҭ!8p4+U-IHD3!kW\%R74h3Ѷ1*CPY,1s,MǬ<$Ԡ8^[_Ng1 jDCѶeulZG,J?toE ]'<,]t8;bͽ]}pTJ&aܰKqk]cܪHzՁ}Xeh475v߅fX%/?6M_fRH%c;1 kb^L٭5hYSD϶~T36]I+gP|_݂`aR{C KV. "+gl޾5]n%o~ &:f;QZQ8dd w#aooH53=l2%# Az@zr}0"+r}2eu5%!Ļ~}=w9\3(#2!_kizF{P&zώ3#t+wM}YEW^?Inl ~'?ƼIpF;ʅ4m;:H3O>M/ l-kΫ-D{3c5vLu끞NZ?0e_w]I:@G,~Eϑ݁s5orօg"Q0n@\?@g|HټJI1g&9u^x l VF^炤GZͦ7OgՃt@aA!ga=~E1߅Y}£gmF>j–'ڝzk0p:3]=|x'{( 1<<h T[ٔ?&FO,Low:)#x[V8s`08g.5a(v ',Zl['@,~D&a秊_3g$Co~c:O#aN!iɽ?!vy,,QxG27h~|Wqߵǝ"t-17a5s$1 -_$ޘx^&ϠK;Jչˊ#wgrrѿy:)[4@6QOWn :&n*grOSSYy8 ΢`,OhŬFnm]}X5K[GED/sPnޖmJ-8䷺&]wtr%A1^a l}5T_w+hu*rR16W!Eݥ/7|tf+X i1/+<ܣ͉ &$gQ봉Rzur@biJ;| wQI#X-9#ʦ)_iAI Z ήĪ_%2u-=\ڀ]r`K/˽|Ay.XlG5 Yps<){3Lqq;&zGޭ,(_C"X5 `H?e zf4=B,pشfp>F'xMN1y'ϑ2+(/?@Iەd/rv.aUe`{@EƬ]êH@P7y@9C@)[\7mZE*{Xl:n I(aת5 r {?N10:E-Ko%N |9{"!P͕\KFoAs>CKHI4)b dz=ܞTxy>jZbg֯Qc;R쾊X]KuYfN\Ö ߡ,MuYyʽ DV6?a\I# ]&'ETI9Ts^6")*|N9Z ٣ k+LFu>9>6*Գ4lz@NX7oٌCNvPOQKEP<.bqu.uFĭXN ltaE@p1y|w֨㔄o=&}׌I|@ep4#5Zk<)첤-jHy۔_pHVI"]o^ eet+1=538hiZ&]mŧd-H%LJB7rJ%>?zbdKnyF5ea=Dm (-\-z8;.DE\hq yf4zR;7sȔeyJJ+vvsS8F[s|[ekb{̫gs]ӆJ$/_W㰙q5Ft@,|:~3lt2H#RA؂\]P;&rO۠v9ꩊ~+SjL?qR1w00ul!o=SGP+$ߓ@7>2 #"?A`J, i3& ʼn)r&/|I|6 B~bGZ`-Z 3]|2@ƩZoG9j UЕ}f2`Q|w`'D (Uͬ=Ʉw^YFG*1gd8 ,wB5MJnp.j؄b~b<1y7e~"%`mP{Fӹ uʚ}zүw%{&9WoS1DAZ`E3f~6 ~K2S;d nDkqwWw6·1]Ojf45J #%/Af$WZ#4=5Psn~6t0 ԦFYD7op3 (c+lm FKFM.}J{E4öe4-A{2蔒|Y5|N(#Fw,k1时dNC2imK,|i^ЋAxlD^LsbŻU; vGB֌%<] !TXso$Pɏj@$ C6\T8eyS@ $-~_>!ufB JD3)ͳN+v dS 2*\ v.{E'|1T'2k8{eaQ'.DYXhj͠{jupH#zyL|.8s9fMRmKXTXN,D3zϞ^VVl|we/\%[bp{~ZT;>8ocLs^X> stream xڍtTS.JS!Ф{bBI.J R" HrsZgygy¨#k+/X T`^0quRP ֧`q($@ PH8E톰`+ p7 4{3D Gp?JKc0.b||Pg4/ND`=8~ hA&%b ?~}-' Dc3ܑ6p7{8h߻ ; ]HoE8m% ^"m~Nh6E8AߝC%Y]xhE#~ 6(gg8&՟ ^7ߟ:"QH߿-ickw>C$ugB`"{~7vB~\[p?-G䋆z;iA v$cp?6vn/=^6(˧g gP^/ / }g(o"mQ]=e `ŴPX,aoNQW!%w'a# uF8y`Y*@?Մ ܝ;b ò" G^pf3@uPhį 6 V`0G%Upه"%<~!a&®k Bm^ "Ql EZ/!Q=7n8 #BC^6z򬾗86y_dyӥ8f4{N\idТ%zqzw^!=u{ SW&}蘦H^1uGJu鳐ǘ?NdRh>!J&]'oR^!SS$6/u[걕IkL!W_3QW 9!}2ɻ/ (_%7cG+Nĭ#٠Gd2`f >S*NMɲF̕VkE%wݘ 8d-z}KR%džzYgr\A|1Yz=fN$7R$DJk:ct$۷ V|Fz2pk^ H:PvH:0Bᬲ"oL$>v?wJgjІvt{_LG,Z&vLyv. r ȱHQ.L:"umm-GE?rF_=,gMT%Xϧ׭jhvnu1 R00s?,Wl{R4(eЋeA~g!uΫ >vWi{ĉɮ,t{+=pm%nOur#8\-I^p{RƓr*-KYne4`E&Fo-㜋w@R>{K1arBZu7ƁG7g Ց" y;u۞ӔE1M( q+rAxMaxl,TjSSƕik[b:^ZX\iU˴7g}wN9-LIݔ>΄n:2$AFW-l*h[3'oRH}Qhnkv0JU 65LO*OjJV]cLƜoC&agd#r4xtZHҼLp`º`k|ɓz.{?e m'fwu {Os[]kX P5r`EO^*qVT,| S0}^{jxC#)d槉섚|#R+X:XC鹪Ť_߬`\dAEG[Ons-h"<Z)A|\[mN2_`FM8(.r%)ݢr(9&aTPhj„ܗ@z!=AfX?VRm ߶x7gA Ѧ7Ka`Iý\^6>_)'zBR2̺cFMseqq_?}Ԅv,w6X^Tߘ&3z|R!qÔ,"v,՗ l} 1mwNT寮<Y5o/ғy!+Wv8F $( T'm0uM$#VՉA~= q܂LY+\.5W$lJw${,07:tLUA~)Uli{RѸzF^l)oSY^݉NOfq;/rKe쾀UW|a tk^B&Ʀ %؃NS± _7O՟ܡ[ӻθA~f!"u ̭m&qF0'm?5rQ%S)I£{Do+ECw&w Lǟ "oJGR<LDRzэsz:ܜ;KNAeki\b7s^hҊ ?zs;gQy)Ujll$6~QTě[ZL D s4+#&̈/2wa%zwջ0$;џ.+-ȫue//tvt?mC{JB6ѤQUp' vA'=GS ׄ" R'mڦSiV\7琧/͝rKq)ڞ]Q%La1rPd]gAt|a/`+;ɅS uG ѡ՜I>d$FI晄>H3Ch:q=8f)Vx T[ &nçb0ƽlq'{űGPD+r+Ň3G R[ȯe}EX3x3[kICeB\C K bLCk͚XaaRrQ+Ց,{TA16MmHAmXEy>N׀[G#h#.wWrx1Pũ܋a|e/xEF͒[]D6݌JKzϞ8?!16e9͋wYk kɜl7 O,G.,Z8㎰.ALg"y0".9>nUJ=nԝtqMv}(gs=Ig߫Vo:e|6j_{+^ Y[NAldԽ5v}1ff^(A%;> N5.y;b84>;B"VzW+FI&Q"mEGѢ,ZL>Ko cOл]>q<͝Л\#yC ozWjw'y3lGiJgQq: l~MB&^Qڍ[lo;]Y5p+Ԥ7)Zl;Ȫu6\{썃+1/pk_UZ-MɸnꈌGsO4 D%~t,_agj _>I dAP}U{ eT\j(EE{霰a=DDNLW gy36qQ͞9 ¡͹Er^{W9+ɮ\ =FE4gɑ%X~2.z 3|%E<+Z@P!/=s9?DmdE19SGdYĶWeQLXZAhW-lin8I9N7r`(˫}I h  5c7U8,] 98+㱁|uQW-w3JR a2C+L&Y",OcRen!AQc$;*m֋R?5ڶMqO0, 3q}w̕>&F=QH"Ј#I*ϖb~}*TCe1ЧNdH-١-ދ?"6QyGB˰jLJ&䜩">[0Xaz7ZӅvy-ޣ͚H#{&̄kvW}( ؍x~Lgl_e"Sa*B}9ap6hy4\C ӹIH"b\va2C!E3ŞYhONa&2ԘOShj8Owezg@Iʈ}* Sm+ m> gk_>+prZ<9]-OTeSN9oۡIDžMaq!~ Btqi 79n\' ،ܰL5 &Ṁ z:`[9w+UuL#Z5B7W"}hw%ɲtjpv*Ttx0)ak[⻏L_I$,+gP81LzR*X~"sN ?cw'SJGB}[B*ƅD'jJ\<"l-* b^(Z͏GY7#k=ŀΡIV/v_!V͖8K'%~E[,Y ;*.+x3l~]|uY^vG4_;M_ V%J\,vÒJg2Mg /ۃ*17|3c*gUrKuWЬq S%͇bE RB2JoF$vE3q<`jtE<{?u} endstream endobj 217 0 obj << /Length1 1463 /Length2 6660 /Length3 0 /Length 7657 /Filter /FlateDecode >> stream xڍtTZ-)&Dz һBS$$!ҫޫ#ޫ)?Zﭬd3sfagW"-aH_H(P @ Pqp$B0S`yZH@ $@ o"-P¡-&s&fWB x+-tss8: 6|789Ю0(Wm#Og[\iqaknC8_G 04pC C~nBB+W"8w0 鈂 <5Q}(q /"yq ׄߕC zul0p_- Js}*8OY]_#n k8j Jwri(E01 (0w+[_ ^($ `}n !r ;m p+ fG'5 c_ w<^kOٵH+ha|Hw(_XLH>΢ U?k$[`׿npKy-Z?7;&_Y_T]~~7Z.kk!Tc؟ՂA.@@a5U0.ceG,p_KGt_ _/fY_׊]/οTAX!6LXLA!k! W sa\FM$DCa׏5.g;į`N.׃l1QvAڭ\?0;̊xzi%dWzRƿ8q*74匌0"3`}4ܪ ב ˅NS-ahs^Oq#/vjznox_8y6ak:HSuLmT? 9/24/`ϳH|rϝ|x2gE3KHɒpG Lq(F95>y.R>Ҷ /;& 9lqykO9Gq5G.6;fi.k|htӉ_8HԈI@g95[\4ՏxB4I5,.Pfu(>yF sSߊMf{ľX*ޡU}c`^Wp9)G9mM1 1-)3=INY wFVKIXUÒ+\LD1ѧ 8.j(C5â/B 9fV(W$'vH2։}m`ks1Ulg2RƫjIQƕ;Pe90.>Rip֮9VQZӯGmtf %F|p n,&YRKgd:Ҕ~muX#t펗/3'._"(v]NMB$.o<'It5^q:_ɍ1%ϰ:΢`nN03So]]-W\$mpӊ@'XQuiֲe%[+J$ DS3-bo& h> ¥zaYGj~xQO{{瞯8m#7. .-$Dl.[IsHa& #T= 8}vcX9I!f^):!94X4ѵdAχ>|T!Rj%2,Ht'P^D9= ]AiЕWryt4!#T v(Ux0S"^Hq#9,oRCSqd"s<\̲SO:Tʾ(h8Kx? \8jF:Z}(=% }6=SV=)Ͻ|}gJbT\id?t($IE 9bbˉH b=8TXdXV hyѿZNW",\kL]Ƚ%g g6J\c]Z Q(G)EDgUO2 14qל|{ y7'몱 pǫ(QQ&Ar/iǸfߊQ߮/ձTKKi5/z0rj8b˥lR 3m@]P60 vboXz~.h#NGJe?oyh/,c+[PCwi4s.2,P8װd]h|as` d0Zoj`լk0yhլӜ'zW4bX#1 kŞ׷˜l*7nm W'AFA-t-"C/B+0xflu62dK1(( X*C3yvP Sn {([C\ZD[gt=A a,?3%^?V܎L'&eJ?SAEG/C(#L+N?sr{*: :褬Ղs^JI/5 a)CPdK*]l/!Y:U~(^6Qk~1oDLw@HҜ۳-uk.1uY̳OPtW94~/aLT}\[,g obX`?6Gm&JS޲عB+KG(4ת:.Qtt@a5Gq$L*߅$ZohߖtqHJ rEjd` ։G1ޔ ͫ~>dgOV[j_xÊMSnRO%0t6þPj3 !d*!ӾkqFI**89rV&OIfS$$-Ui.~fL]\k :$b-NAN Y~= &[o)! wNVF9qaٓ{Pe&NIǺ:* 7K}fEBZֺta=ŷf- Щ,Mg|." a#0w(j+Zkl><ą_}5{s#IwG;pR#Zy0(1>54?~gﮙv*u{OGܴp#.C-ZB ac߷aLe4UN0f RwQ`Ju)8&AIՊ颦YxU}YHu6 ο=KftzfCQ/%ޔ-BSǽч&9TQa ̶kr^3D?XOt."suBO ;w|vƛrZ_ZNC"ErX@(8- nIj{5Vxŧi:|f)NA7ɆOo4!v0ixRrEµ#k˧FP^? ^|>ΓaO1:,Z(|W]n_UhRmYnv xgeD-Ȫܴ.=J-msIhK\5Ho%0%D껩#P>U]³C5@L9hE2Eu|CożMjѣCc˙bCI|K˂{hi19F^'58aq6)!^!OӀò\j] =3 jW4V+y YmϘˤdņ]yֵȧbN_C4sv/q^kl$\عL6=Z%OF6L-%<| D+%3H*j",33#3̝4 oz<;:2O ΡE uy笮ߜaC+CxtǾ/4ߗTᓴ(g+#g֮J}TA!7o P&1CEAp TCp}R PMnY畭` ۆҳ{F mEur/5{t=F%4'`Z}}OO~鑓?y oRtfqLi̊w49'p|] #p%e و_IH7t̛ys1O8^9PX5F}KrЋ?x4@14O vZ -,fjY{L |oɴTAJZ|C̻'w.%Os![&mTȿ%44vNE35cPg4ݱ\}t>rlRJQAS&ir=RTƗ3⦽ d97 M(BWOxw<"7W& 3N3.n&?(LfM ZnUji ӣ\"8.JnyHc,9qCCQ9еӗxq8:#l]8(`ܻ5~ 2%uwg.d @G'u-,`ۑ9)wgKV#fꢄfr~G<&o6+vBGv*T:I@0+3𸗧RnhNŹ)?Q}\B:@-}kd;NPKE]LjX48+yWu)Mָ**Aj8@>̂Ey;wW\TʼnT| {?nļvŖ&rs1g4㲼!-i?(~1Kckkf~sȤĸ8"~WG`#-8]ԏRrcNsY.b ~߰к-9: g-!Nרt*q.C޺hc[Ed]Lt^ux1B!O3 x9"LG:,X Q4xVyD8ri-pK -_yL>E5-ꕡ,:&\ZI;qJS zKլ'&%vޏqDY7dhL`#S_kg.oNfXc++Wž`#XB#W&5@cf7ZH;`v@tU ݻJɺ!xqA<%[|; =6OxdrΐǴ g%V-J~5`y5;f<-1I|<8Ft[11\$GNW޹p,+ \d |jgqPmm܏ 1 2HȐї_[&& YXtiJ妥ڼ\2GƗvi.o\xĕ #%߻ ٦MvᧆE=֏ o* -N}njzrW|m%YN?Uۭ mE'Ȣc8iǎ{<<"K+߶Ƭ IhR֜T #D5y<;P `AP>qKZ5W?hk2=%~|^5;Lrn\8_14 1cZ?%nq:k ޭPO^&-إ>TF{pWFXY@FJD;%d?t =ɧfH#:<3)K7cWw Oi/~DE?9[9"~^f@myfyTe:rnrPTi+x2->|f6}2I =s_,АMf1O9/7}ڤ\cH .4݋Eo$Wܿǩ3}GVAc[SrG^`u ":*ҹK 2Uq[0lteH1MzL~Mywpq+ڊش`$+2:mV7 2㦞7i@Eͻ?W;fH2`ݚ`={ endstream endobj 219 0 obj << /Length1 1408 /Length2 6450 /Length3 0 /Length 7407 /Filter /FlateDecode >> stream xڍtT6%%Ȁt) ݩ00- )Jt HH|=Y{_}훕IGWn VÐ@> C >+ AY.&zy0@H&PsBPLB@ ( /C@h00UCx~d.+ BځQ@P> Fz##;$Iݝ>Cv=0jrn``A6Hw +0 rpY]}U X௫@og l6(@@0_ ( P%w .V.'$W%+¬ᎎ`> uüm 0k_-X: ή`U,Pߘ- N0~_o'bF{#@n`J@ bXm!0`5yDE< @'30濇o*/o^!Q( &C|E }Ua6pbQ>_ g,-8`7B}gvW]+[KhA_z_](kQo'? :V B,K `kU uȯ /jP*0jiRf]" 5b$~>r]SD CeQGڹ@!?jruqAmo {`4J}jY:wލa ֍'޳.-D8IU/\Ne?|YS8cPژtsm7фyglm7=̦ύQfzkC"VladՊn|ny4MmܙԞhkLhe?h<O_!r?t-)qB%|V ?ŏCȠvYªu:M3^|49cSIù86 LUzd@н|_ϯ=2Gxl TKd_RzۂD4z5hluVŋUd%yQvNs?aTEjgFy/~dBJI/Q~VxhJiq+}"P$_ Ζq6}\^qaBǘ4pnKv ڰr#nY:lOjz7o2+ *3{օq{]xJۚZPINFifM=9 ֧' 8!&Pͬ~G wLF#3;:J|!vv cmű1}UCD=^lpDa#IaG̟ͫM/҉#^ t67nW=oUߖOa7M\Ǥk>HThN%P8UL,ޚF >W3Dq̻GzS'k) $\ 7kfg@Dkj%D=CvU}L$Aᒯ qDIBW*&I ALb쑓 KȫS'hXn3еd`q v)eLּeq+D3+S 5Jw1(&BClZRYyg?=n^&Fv=jwY\OT N ?VH*I+RHum1X 0V;hi`SfU`wi%h$s<4[#\5Y}%D/p?.~ޓBgJHYakcYo׍o "=Dۊp*E:WP ķWr,ziI5hhA sk8V\%`9ˍ^4QOaR1^"i9+gG-\jw| cE1P+[&^O3؄O(iߟj78E+Qtu0F{㶁{$Ӿ먒Z>;pԤ // =M /ZHӁ'Hq+Pa~.wcv:<)CPANr18jqÑ].3gZWtr.4'ļJZ{!SSϒ~~uhq毟7phtsc6a-v`ѕ=z]ƹd˦e4`rgw^ߌpWytoki:WL, zo<٘SweaVR8CNǛF<%O}+l%vXɼ"57*m/j%G+0fԚf{}%rRޮQ1+d$w5]}劁ź~&ޥT6QDk?R 7Pۈf6`&])^j $qNSŎex _1fFGe0r:yGMg7*t \/UJ#>q*dl/"h)GC qƫS9TػHrJ޴ׯ\`΁$}3ţڈA 1;$gb{pL!⪳b}2Ÿ.Fp.8|)Fi %f|D֛Ymf\iޯ,ZڗiAj D1R#f8XtHX,V~[B=~r'<ł5mWyq3mh&ջ j-v9E`{y>#b_ .tݣ9Qoy^V=14n<28+r݀ul94$3 gKwߎD2[ª*x㒃N~Bku53}8FQsQZKĴZӁ }35SfǾ{^׵w_y's NڵlGk]|'φaoڢ\AW,Amaq́3ZpVy4oX2Π(I6M"Fll"}}\|" MXטV6]4stq(pI]ꐾHIV 컽0V֖}f%^ZÝWei9HGKTɲp),W.V)O[ϐ&G+OIP{eփøv'3Gn+tʤ> wf_5;6.3M+a|[#wr3hlJ.LvG9xaLE 5EiZ&rC62`Y9Qo^) m^/w?J|Ұscܮ#A?w\k$r@OiăYOUW5âzQǃ"1p%i,xAЊ.U*`{Y{$b/'%2{i+r,Yhfw2ɰ*Mj+[D~*|҇.wK$(]Azfƭ"ܶc)y VܬJ FT.!T]B;aYlߣ jvk(DFV)4!S1oW=iIf>$xN734 4@wSe}Þ-ecL'(h"LZ?V## ϖNF,X{*ɦR(=ΊLub7"{W%mVb%_hl|i߬~A~c\VE}{QU#Y:H8^2krx 9h\sQִj]xtƺh\5Y8M$1ˡ%Ix]km矘:&~>ZT IK,w4-J>ed2ՃoҲǗߜ-ϳÅz2Ч!"O;ͩ$үN,eBfD=zOݨ{q-ר̳ؕ"#B|Id;NKM}|Y[ˤj@ jd ԌtަXXc{ endstream endobj 221 0 obj << /Length1 1516 /Length2 6782 /Length3 0 /Length 7813 /Filter /FlateDecode >> stream xڍxT[.MT) H H#!H JMR#]zi R齈 x޵]Y+y̞NVYl6U(BB"BB„P 7Nn qCBpPrPhLB Mw(K%BB"ܤ -@GCJo7 ߏ.07()) qApqFF0W()pxBQC* r)M`EE!P 7 `vqBF=/c o?޿A῝A`0vP-B@p_ y0 w O}H@Baj}*p[%3BO[OsO+;(W.&p;DC "bBb@; kuAe@v/!I{El`b CZXz%Za8-T5T60S//$_R\bAp;@tw4g@@+G菅Ą7T+S; AP rQ)Agߦ!߬ =Z@Q!ѿp(RՇ/׼p> uàC } MA3}U`a@ބ^Wb_ z*m!^ #PhFWcEAWoFD~%h;!a ?E4o )a/-!C=@0qt`g(W`w77"׿/ &K: mV:`)y렍6PlYG?zQǝ9Aiy( Uǝ&[Dz*~#  $D6^^#7Ingd,iXmg,l˨Adqw,2܍5LƮA[ch{Ze~>7]@JU8-&KPR?-Ub[$ؙRYj+ms8"S}-"JA7">v-1Xe$iLrNgSd8دuP3pknt%X 1xOCDi.f%-Se`Tׇ1 =z ceq\v'pZaƜ ?u+H5`֖ݳVC)8Fka?`Ү&H^rv5T4ߘ|X{#C\*L!pi| FBO0 vjVot}e`v (oI.&J4ڰpM|2@bOkҧbĝn)F>EtLZfl{ǐn|3uK fPM5V/֬*Ģz҈5lphq.-b^wG2)l+@I_HewAv k09ym g䵗j.g )k5}Ex|"h'[Qt{+rNnRqx#yypʁpWMeT_B]IZʁ-ΎVwZC]fF,̦))0fXL6ůy#`J⢅..PiDM.s9L̳ɺ*rݲ9|$T\o`2Ev̛7?6hN ZJgv fs+G PL6yzzjZ Nm?SIW8JRPjEetq'R e)6}9w'I6Y:%Ff,_hjIEc֊ Yw' woy*(;ҒL[S吶9ݡm(h\[afzeQj 8qEB~$0E kj ˆF̫Zww<:,~25jog'yrh!#qDGv[n9مc]} U4YP7I@$5k}pAqDHwhq$;IAQeKcM߈q+reO' |33WS>_E q*{/T[z-o f\p ]ԊuғB >Bu'<$,;oGgM=F[Ͱz|dI~)bŝb'D|\77^LfĚ/- (PA(S\Q|i*3f5l⼌Rw?7ro@>o*C u,M}-'- w`G~/<`4,R}4_eY|#=AÒ3o"=Kp 7k%V,. Mn筝EҾuy2I:yQ׫'yH)̬iw9Rm|ԔXك ݏB1DI/ 4D=2lz:dmobMӗi]Kig5gaJjj ؃zڜ؛~ȳ.66,XeuF,@;rk搨[#o[$A8i=j|0n޶  ^IK8,DĥZ*˲V%gyhƘ_GH+^-Oϱ.9<@+ `ёGkMp&F-)wX$Y6x e[syw4L0 fy}P`Q|f +pvPQO[q5m6&O曦YB.POK{Q C|NrqR(=YwӛKoObITIofI,j3aRuK&qy}Z"컫x̴L8}+0snNwg&,h.hnmZ)CK-jb9\4H]4tn$zU?jO&& {KLO2K)k2!#B _5_c@D4Q~ZU},Yj)=@ӐPA0g9KB@GAhO3Q'_]tc}0 Rb@١dz@R:Qs_[U֤b"E{S3e(VYns}3v0DʼnqB/)0a|ZߎA1G<[ / K,?wz0T-rXEKGMCܑ)Dz"LKpWbY֬CS:FA@%cjI; Si)1WAOD*˟ٞ<. $_v+#5%Dmy,ouh-<љZ-9.V܃9!,يPE$3xe i<HH3˵!I2f?o_'սt AzT(a?"nC+8.zS1 0ham'sHPXgj>ZLoݹY7k/?uy \*= iLRe7:e0*D:8U1!t\ BhZ.ϔ {^} #?(0]*$/z[Dt 28Dz>=xy1JbWjn+&=dbl1~OS?M"ίxU >+f[Z` ? ӛMt&yТxBu=W$I<䒚ȝR<eҊ)VUAJ!c\i=1R~]9<'9#群ǒ :E0oJрXq$LĬI_vnB!%ׅJM528 +9[}Г rzxTTPֆ5dVf:Iɛ݅[ Y,Q=zô Y-$D́.~m}^ˣr[f⨊l1Uu*PR.Ϳ-lDPqӜX^ZR~0jJ;!+U-,BL‰jg=<|^~'*nzU-յ[#%ӄa8-N8?|t'{TmL'OݯkAr( =%Pn(hE!V]J ةqId;!wV n?3_⒔۸T!~W)MZ [г3%^ŧAl ~0M(i'6R{ex|i/f Sm\̾A5tM%Yv$ܯA i/ *c]G\`V4Z cRnwkZ 5c[6zᖳ*/Gfo:h;#첹=-M3,nUo2Y*xTe{LV14cz\~5n\Lis,"{,i \pK5Ty& slAebՆzM%եim$`,^">,m=Zg8tb]!T{L~߷zMz/ KHg4?TO\i6nf)eH7dhxO?V9VCVW Hj{0 etMŰbq]9+p;a $I삷gY舓4ˆMj#؝<3@--bSv -ǺѡW*[x|SIr nJ MpBI:9F`dV/BO'Ey|~4 )WKfg(wd%d֝]?Sj,F ] Gg.[u79~0JmUULisjO[ 80 = ,nL8VO|Y/#J5D7H_2˻6 Ve»mv5#lWԻ7OIH^fɺi0c Un\W<][k  YώM[5  r"G^~<ѻ, ;uo^j휆? ~;I ٲ {JХG.qCtaNDJy@t%yql1~4ZXIL3DA 6PW%0ć o=5ZROe )[MvB DP#D&43yLzvC U<=H˱]-ҰS]{LyX<,-ue^w\q7ua{V.u%cN )5aأY$%!~,mѵ3j -rn~E>;pi}S4]E"?=926SZ?>RwDL옦|+2!0 4]CulF:~Gq\]_o;*jҲ??^>^dr2Kx'0-Ю>0`JςȀ6w],(M lY ʾ]B.Yڣt4_l+(~Ms Op`*r>>=g#c. R»U'r;m+k+%ZCz݅MI?H{]pyD|č});7؋ϔ2MH˦0~:3mʱGcV?&2d"@}OoxmQ~:/9KMJ\ m] N..CDj|b> stream xڍuTݶ-AzW*]z 1 JIWHA.EQ491#\ss~04Q#nQ81Xob% %@`8sA< F/1u(G:.@1 < EDcPO$Q,G A:8N"0HԇaP D|Q_sA] 4AI@9Xx34uDb&h{$ 31h~]+(Dy`qI(?(7` uEo_G 0$2JK;O[bpSO.giރ_H7.g<i Oz#^T?mw@21[nPރCYLEtHT,`W]8XpTr[YqpƽJ@2̷ss}9=;呴Lt:ɽLstRj%IL\#y牠ݝ35)򃭇{os+@ZtD_\qkڈ΃%mב~UH'K&4.Hڛ>TU$cV0dܬV *_1!;Wӻz62%42=t*lթz¾5Ξw 4(=E7wW}Wj'ˆ؇KLIYvb)IMCvXAQY{rj3ӯzln7x9e?KwvG8u@~E:ۇ&NFw "AtN_ ~鮨(lVaHhY<廻 ekfI:}:ThZUIs||XtP~ p|#λ',($1I[IQvS\|j՟D~-5"BGpef 5Ӕ@rZg,Ys#vR(M,˴s]SnJb%|Պ^+!?Pr9NXb׻lmqk<#c:hfsX /%2{!Lq1SvBlu 1W?r|91PaU{}:.dk"rnywĞ #-*-L\yE+8KL0= /3]Pk*+[|84Rpdu?^B4kg]AzLYWJawW(C }G K!nvuwNKUՁ4|1G|eQ[&w=p/\$ 6J1 ^p^ե"jHټ0p?ϜX%XgLj](n׭<ԕG7io~|hqQ0Wr[e|+t=< *a.WXMq3x)uܡV+ ږ 'L#K_i-r^~QZ2%ґg&$&~zyR{J$P|`b;M5,tX_]\zt٧ Z>7b#*S}@ʵGИi`q . R]clpxn|^Yu7QQa{aKϤxIszv>Uqp ~~8=Zm wtlE:׌YHouM.WٮvClQTr*e}9 .+5yiG{W*-⬢f%w}D@t#0=ز[CqÃ1ܧ'[H^e!F(4~gndW"UݷznE @xP9|gNyY,4CiC3*d3-1mG jMS%w sezh._b7W/(Mj,ƲQK&h%Qxee[ܙCsӓBэ(dVtܳ$/q 73CCQ%buE2[{O $aSˋe #Ku/EdV]6yo'X?=f@Y^sqj%::(8/&op*Q#EM/lyA V 4\evTL;^e#5:7lͧb*;4pԨYQE6 c|3rBW._z4dDc?;ΑPxLQKÁb95WnlYۙ;R:yqw!z>A5}TnGXF,`7IR} e,CMhJ]g 2HΆZcCgMu$wҹzሙDJ#hz֘H>,>4D)Kڲ{'yThL'*|>fB^oF)_lDBN3%iY2r!O=ToX*Lqv&0]($!VȦb1YD`?ENtvopޡ(b*JM]twgI(uy m~ |eA̭{Y(µ@ֵ典)to,hkxJ+j!69t>-/IKQ/Mle0 MoU6xMyBqekVzEN)fEThUƇa>I[(ȸ4xZ|sˆ#x{ (8;cȩh1f6F+SJ ӡf YPFOZUSEI0(~zC2@Uz[6fY^rt𠿜b )#^TB "DRk.F& PJ-׶H_P:7c^I3i#f "F{$(-S'rŝoZf9sإٔrUՇ ͤ$ʕID~O :VShV.2',[άr.omYڬ#дy\6:@}^|]}Z>p;Iu]v篗pVod6s(3`+3yam'ki Zm{Ib'E?M9A_wq/H$YH>$Bxߜ T] ҥ)C/E{oAҔ\X'Y&.Sτ]߀J*ǩ.WIp7ގ 8\sG>AhQS(%_ͣ{Φjϓj0*Xjj̢vObs,Fec 9z?aN-s} qK:K*7kwѨ ^&Ē1 vBԟVBh`XIwy'^dwAzmƴDž{Js֛aSu$1y#Q SF؍z tJ@RG/[zFڙeOkE!e}s*[bq+*Cd }ZR )~K+O87ߙRu^뚰xS[U]5ꚡJ~K7cIÄwrv "z3sRnsC\H4$[2d$z|I_=4H^%Jq R%Ty $`="* yjqlR)A.YFVb+mltbG) &(̔Tm|p}KUwӭ=R2*ѢgkJP j7ogONȮ,x-C(,|_Ŀr}7ߴ<4;}@JB )uMz7/b7Rȃ .Wiڭ+"%ȼf̉}v#abh0/g1GYcͨʶYt>z0zuY: ~'{$L9aT*hYu]'ߟ)WudMkW(}ŎqpUU8o{P|nvso7|݌a иwJ-=iq0:՗ _5yMmܵpŵ\)2|FJ9& 5|{NEor~3yNppGG!GNmT)=^l')*Dld ˣ}Ǫ5i?>7t ąWAO\f?YjD/ByK%Y8_!߹)muxVhwDNSÃ՝K+$2rvc+).Eo]gLٸa֨ #&kBT ZK消/ݎe.7Pf~29:p%7FATd?:Ro6OGpePkـim} endstream endobj 225 0 obj << /Length1 1612 /Length2 16099 /Length3 0 /Length 16938 /Filter /FlateDecode >> stream xڬct]&vvl۶mgǶTlfŮTض>=ߟcq9&cS(1;%Xy  @Kw_! A āfVV @ @ECGGLSwzp,1%eE)@ t1(Ỳ@ ?2q\f̀NN@{kW׿kW9 _98 jbUY\qYh Wfb pz0vu3/pwv.@Ks;_T?oٛ89yk㿬W n@; F8ֿ>vcQd,,;O_ghab` 0Z1):u c[ov_tS40 gؙMAȸ-_B-v+[Y,LV_r s/*&ԭl)=ǿU@_:R˽#GCT 2q8:fa?x L\zSffWϕp0s4WL6swqN߄_z֖l2s FXGÝ*ZK3yj[gx?;N>eiӁEd4Ũ(B +δ^-oAr2kLCt\=ya?:!e4'`5Q?=RL迁ǧO3H;%Iu6vo1|S Eg滥xA}X=6P"მ.Ri3s8uOS һ*V;y 6# w9cTSۖ_~""S\3o:z%s>92GodXVfmfWOvK#"D 9΀|#IAyQX]B2@K+}rǖXs`OQꨲe{9.مt8ŢHeocQIUx3áq} 7SqFiMi~@ - 9;`{G͑;Ke:Ҕe@?<>^aK-*g,bxRHʤ`MA@㪼]wz_")V(B+GmmvV+2h@T\ EwUiEl$riAܹk?䓜m$oս.Ǘʁ% p>5?[9Mwr~u'I S =.3VSѸja?|4kӁh܈IEʹ ^(B{`JoW@er#0'B,`ƫ-i4sa\[A۷`iR{qywuҟLNva">#GsH-urtS"5Vob/Jp.Y-m%Nyv.oSG=A6"O7(D߾2D]=4mȼ<4[`( u9\);6#}0ȫ_{Oa.hW=BRjEՓ|h DĤ.;$jV+Y owȓZ G\ĘF2rNn5A`Wlƀ9cY @HہнeZnM6^/R-$f1GXY:p @̭5~KmGdڔqg[ѥٛrRt-1Zvϗuhy<]6!oD]p4Cye5C+#L95f Gq4SRrk7G~vs:) I>X'%ib3RZ.hxȡhPyFss҂jc]xUXpaT |זtH҉*G}+qQmP% PݚV*r*Fىd S1%mv+gFrm,t?CrӭR&@#dDM}V0'T9"7~o?cz¯kNj;E'TL2dawo=B6/bf1bwJ̜u+b<;{={R5펓ח_#9:= B|_$2'J#~ 7@{BUGh ^--臭LZl?&02Q{S/]%h# FgȨ)X=sG˹Ylyș<U'lL;~.1u{[ c0o\>5!9GrvF<sCsޭM: TDZOiGHMܒ[_ HŰdڧ_<ѽcn͚^2HjAQUSWovej*ѻ^"tanuOQ ҶKu&İpѧՊ̠BOf8ך6re#R$!`M8c9pƯ4w QAʦqG$K9q7U^=kv.z`s&0Wޘ)-7ȵw('s67>(pwtmbқQG(y ݈{IT"Vg I`*28>1@Llz?0-+`nY/R@U9'aߗ UFPS ƍi!: ~*('|we 戆C`3vH97k kRټA 4I13/-0Csd<6Y~eyr,Ÿ^/q#=.lWL_t@w\,N'谺^辰WE]S(7YN{!)]z] d G\BXOЂa>y!.)ZjC}սT+nkA25>Y10-J;З}8R;.78:I7m5\@B\\̞TC1XJ_eO̊7CB82O2 5PpU+껝7]z,Do76UvkϚA+d91`Π1h#q*^ 0mH8nDݔe RW ɢޠUlOMhɄ̍9>*'H"Y3Y;yQD}Pa`Rv* CE71g1'u RL}mG …'=Bd[Udƍ`c@8C+e9Mss|6̨U!I*qiWagfBrn `#INWo˴Ј>Dj㵝xeTBa崀'B;WCˆs.Ց[`C[K"#nt?нحKa &6>(s;ϼF̫J=1~|&A)qP"S%@AUP4Dxx^^(g($ϑ91bP]z-pmN6ykVBg.SМwDّR`/H)3\USÆq-MHѶ>8#rfBTNJ;EZ5:`@X n#WPQ#pDiCalUϹKbd\1PvOl}[aio}:Kٵ"Cl0惻U@5^owmɎ~ 9j?dM aԇe% 꿙Fpk]Xds?b؜C"?bJ-`l u{2MjXע V>N+yGt cmk)l1X`܅ 2Vg 2gׯ3@dA-Zꡜ<-ED| 6]v3)\oFضRoVYXZI'}YC 9zҘv-9ge{N'w}(Nh$>ZB |xx4;K]c"rgb[:c㐜O61S .4v"_v)|GCbgMς \nqCZDcuvz?0e!,% { WۖSk?G>A.(*pVc#4:O V ?Mdaj@f 2Fd% 4_ `TrBEԺR(7YmʿG)Sx7 U TU{e4kB-"REDA>*NfjYEo`e?eOjT~ >`B/ #pCsRL ],8|`kP(Q~n RR3L7}քmF]űluK6?s尫[7`4K$UDoO=ck`_'eלzW>+$d sRu$lELz*yD#*?b*>}+ * ϡ Y#$0žd9<]gϣ@(/֋QuŇ5c-'9to3tӥaҼ8@}w39⌠/k?oP)/GS8lEg!BW^jϟn}_=\ۼ[ Wi\LV i%UbCwڶ7BG~'[j}'kY] eU4P4m_HCW OqƘg!{:!l;`5h2/fOGuIGqD+Jt%e8>OuQFh@1\ܝH)pQ15A R!i6[ca~&xp0vT80xŸ?[Ol4 yAǁ$;n3̀]UojU UXP&@ 5~Hݥ?գ̡eTL|ߩnFf455˃uA>mӾZު=sKCaP^鑹PtӄlF>AzF>3K_t޳S(;$G5PãJΙGkiL " G&l7agW19̼[Hm=?|(q0MI½g8`?ųF\ʨ 5`\ԈDi(\zbHIpfm|ɣHd׆ɩI7dl*n΢MI͸K|/ ݖ/W}>Pƛj|٤m4ZY@hTWƴ?F+Bds>3 /+`kZ-wDLpegӳl6w͈LhD1s4Tyuq]ɟ_uI/ iVLvw\٥%pIkR'c2 hs2t~ڟbw/?η2$_JCѴm {U~CTw:3?UcNu ^}A(m-BZVH{(&$/w$\)DwMu6aehA^]܅o$\{%0@բݚd,Kaa sMZ2a"k~ Q۪XsT&mkpiF58}?lS)e, ѼxE%E*(WqisrTKn5Ç'b| {E0vdȨ#@I%WX4 #Mu/\Tsvss?gl#SXAOd33P,ٜi czH녟1ޙQ0T{ @zf+ i.[A]J6F{O(jRTxn xمg@Fѽ 0T (B7]oJEo!7U\e{Ҙd&^zZ9ۻ)} nQўM!9qN\&hMۛpGr4nI[!TR@3C@!"qK*jZz: ȝ;A IdA˂Fg19y{z-pY4J^-S+e絤,TO#mAMd`~J6S-'WQiJ]Xu1Fk:a1a-ZKziAT6)Lv?B3<˓SBk8E :1m,R*S;ϰ#)lRߜ]?~Uܧ>i3[3^K|0oь}C26sv]I66.yB)"!5]i3NJOd?ވpNCf|0 ˼W5Eetа˒21SAOҭ;S` Ɗ5[Nxk|"~$3EE 8y([ @I3qF^=vVӜpUM?zqN,q? l؜XXt9`q@v7b\0J˫>y+X+H"u!hQdCnnet53jʩD}0_?-`)HKPcV0!?;OtLEaft08L 'YBKt$!~q u"NVAAjji~sA+%S(bp%A*6sK]JvId㸣qUqިYc4!U7ó˘c`:DR ǢP:H_Q s\\,^uqԍa%IBlm5*#&`gof<Nވ4ӡ'1 voWG!ƾ J jACUESܨd5רB ej{P.1F0ZF9¤Lʤ 9QMCFS`+ MXpb cvpD8t*a6RXpbZ{dUU2RPXb,a_榉~;a8ZKlqm߸)`vb`|0EfzF3m` wzjY[@A^IH9ށ&hj{nч;m;BKK>ʰȰ%.Wo2!E *3SPe̝}~pbcn }K69?3(WDe"=%l7A(Ջ6z{ל%Ml$SFUg0Z@!dؖ0ǯ/{2R?}`}b]blV1@wK$;/t Ef7g|1}fUqxj188KRI-KSZ6Z^;G=wdJ A0i#h9O, H- ]>ڗKHuʇd^Bqr5v`.σ TMaF$.G@زV Ld3_ݷl&ܡXUڮglXTJL d@QHǑKA$t18Z 3߬v-8Eݬ`K^@5K KS3  4SoR\ZD ht,w= ;F/6"Vؚ(rB>nKYTO_(cPj Z딆wYRe+]E5>BΒa+ HH[rwH-%XofL'i'2^ݲ1^Mԩ6Z*w,XaˀОٝC[Vxo4kʕ.漾=G|q|{='v~y?foçX.b˖ _<_>WhoCs3e%6ivIFb"1 '0PkR dSGmYV|T!#%,!Xȶt^PeF:9>nuu:8f:`MOn4":ߕь{ HYw x=jVg<8SqD p.!K-ؐ.kgNC>yBZ?˪7.83jִK=Ȥ-.f8֯{ V;"XYe] D"i0瓋}C=Ti3aծC.&Gw{)XIBZcw'xߒkWExv rLV1|lOcDI)bnX]h,jOO$pߛ4c7$J玭Pwa])'Â3xvΦ/8팋Eu1n Aj¢0&)fAkL~Ix|w3O1ukհY]gpz=4d4x -y'sU\L!Gn:zUi2HZ>NztC?}MJ&"`lY8\ CbTUaa8""~䜟kq[_csBl'QFTez.uWEH^<3Eզ{Vij0@nUSaؼ޹ t7{݇A[2H% K-g*rN^2z9y}xx/lM# ,)g`~;S&y;I1{k;gQY$ p; ),C&+=v];^&[XKhGޏ̠?h#B Ո4BznE7mnc۴N۾elf_1)S"C#"3B&ks *f Tܳ5Odx&?Qva^xHx::0/ͧy*[7Q-[Y 4RGDik-kV68azGN!P.I<|yY>&0c䩖'ybUǒqTV_l 8ѫ[2E#ۜp.{֘]eE!#y9IuypN |#Gz_.L+򸺰lWٺe2{ĮPP'H+HLT:u+?wH":9RhW‰xUޡǹsx:w{>[9d40Uy'IՙW~(RLC\/"l|)S|oZ!JRb9ZMjjfkU4Ct,bcKzMݏE%2Lt o.1gПwQuC–8C['ՁZ.* #XbD0q:AĺAܟd$V81,VԖS7<<$5 $gdRR]>;Uݽ36Cդ CTj~>ٸXZ1*Kr9+yFi Xo5BSW\ȃ~긖g7Qe*%^ݚCQϥ|8w2Cl?!W+`LW 70žCGٳXL/x΃yeCh¦m=r6 ]4զK;!%dHh浪hQD_7 9c)[)|sLOAŋK(&2 -?8nW9[nĚ3"zH,DHq0~<7+* Sa{*bϐ 'GcW y s^77&YB3+Bf)(.w MA+ &pKkH4RY4pt`Iֳ_^lrp)y]uVy 4SQ NGT;3D''Jj~`E]2s?8I8X(y4x=g_B Gf5}ڐ;SqcY&y%SAբWZyo]$FeExC HuĨ ۆ5x^hݎ@$724߂yf"Rk?m5%[(ZQ&ν+IBb4N{P8NҧlIc 1javHZ"FA٥tVh9*.(ۻ[IN<E=WOs8 e3A\oh'OGc;vpGPh_~S1.zpSѻ- ΙʟXC&0>Fhର驂^a|tX>")f '==ycm)5=CN 2So1IK`d(LHNh7 \Nnx"~է*~jvkIFgE%@,Q!7j_Kp,Iz_*7 y K9qCh!qOjUtiAЬdP`'* T첱; 12d&.6UgC4)8%H҆M_mT;AEwzbɥ]@ݠ2lS ]aŌJ;e/TYKB7J{côazDMZY#I۲p(LSns I*E(AZ`tarT'gCHo挠>T6FӓRsZ.X>\3ѷlV&dZ^w;uy M &zYK޴qyb~W*#,3dLJFU1ᑧ֌&/nyӄx %(`pK-*wQm7O'+"EWONANMwc=>{NMH88.{J~&hB6I ~sg,#!I Mjkq ]g9w3^6,$,1@DSv#/o Ez-5Vta# ͇_e8R Դ1, ݿ98,bLrs]\ԉ9-3Տň>Ai(pTEm=UYS\6]^wdUp9({卒Ʋʢn8F{u¨WQůlIk/Da^Ty?;68dR (dHӊ.EA ͓4.Зz_3>XiJ.Pt9Rv;FLS #YfB k JB"y$r,"nmi/=p M:$M?vXv (SqpV&Z7h{Ԫ %B*Bh/[?R%5!$Gosd^E!0Z~J>>̩Ƭ"K%hrF6+zGDa6qkQk͛yI2Ek)cU4lSzI}t|N`нvėmAѲqqrs bkKZ+{0"6݌./|p g]ɦv2nַzݵ:r,V#D;J:_*.>N%M(> stream xڭVeXk.qwAkq 'hpww.%$,ݙڝ֩:%JCM b 8Aٸ9j`GKw7U ] xP]AP0I 胬2 %$$J8{mlF]-}&Y~,E5KkZG9nEf>CP?EDžG Z<3->4^5|VLƾ (V.VjQ(z4_hk ZFu풡SvS:Р|{epތ<0 yzK-qxȘ@)ֆb{41oarz֝6RUӺcx/KT7zLvU(av3_S5 rݾbGz_,>p޼m &b$ʮ; 'j-Hm.FXڹ[s.kv:xb[XbވK%+}QoXSG{2kRJBwv/gb_횲Y.`:6nZ8&Qcى=}a$>H9'Ǹs<~F2E۞q>aS#^-sլ^ `,Hd #Wׂ-WF`3[ [=-H25obk=Nid4dMxaWI2̋FHU}tE2 woW]sq/" c[+&eUF e^_NGX y_֨P7"r͇3bU;+ gez~ k0op@}HL޾fvk^+:x؏Ff,,O{l%F+D"#h6*!Qܐ"[W-b75 K^&ljgXw` YM4d|Hʧ&"Xv cSƜ*-OE[ʄ's+]V\뎠8KuJΩįp\w7We X{aO#SnR$e`YsoP̜[C\!Y?+Pp~DhRŇ'I˒VqKb7r 6[3`,d٤`c(V`*KX/ywngx Cxv% x2-0a4!g%SI}P_ (paP}~ 䃢p&*&j}Oo:"F _T*lcfKa#G;\R- nMթyԏRsxcy)_Ύ.(ywJ~nΩIDYlIч|s ͡m`ƒ;p ֛` ޽KS4iFQ^TDM ]Nզ1I$0&^)sh6L8c{19ʄZK"ƞcclBhT՟CX"0AFb<ZEMKdê%y_MEZnX˩jxJ<8-?4xY'DO)vi^/j񩕓H҉\>Qnѫ5mH܏'CB!}}ٞ5ӕwOX2!JŬQj:rÞt9 +W4j\pQ .&0tf}ޙ^a"H%armg8g1uoߤ1Z7 aN L?ܳBVmhxȰ{ƾRo*PX}}Q1>5ՉXn%]~=;#)F$~(۠hk6{zJ'{ѝn͗TS[.FwZ9#,HyC](lnT@±pYFϏ{nw*k i_F\;HC.4~X07Wݟo*I[ÚޜApIz1& /TƋ`RpRtN6ZБmpQK8ή aݴ8K?,۴&(~*œz')[뀶 &>E#\hϯ >QόwAAs$z1\r3m4[2PGi` }#1zdFm:hBE_)l=V=z/]O98~pY׆4̃ д<2nX:,*|}XV"-\w>boLy뚦(U;QGwOnGja1 e2^1%{. dGlY>)N쥎߲Giu^s>(ya=f2,+tG%R _U_`t!?6i*a u8&65#oGd!yz[ji/|/}=gPyq^/(+4.;,bQ*]ո.|{V)Zp,F-#wЅAo׫5kK!W-`o#5iifv|50fop:vРfDUaWkCJ/* 3hji`_!wSj_ fbq69ۛdvMeR/W;f+\6aȎ}'g}h*adlaOpVmc?8e` &]PDZ"M,op_:jxODA\A;v"_}sO8(eބbyN,%^&nW.M$I=TM ^rH^Tv#勵?!;|K'cЋ%4&JHl`0`r͌~A"Z.UU":m߲W+ֶŠ5~{F [@ׅĒq]'IC-RPZh;Q%_TݧY1V_3rӸ\(., 1 %~2ܭN7sQ@`giWr(R(AAGh&hJ̛!T}Blݛ[lQVwkEktA^ثcHŒ]3;~QQdW%[ vo_@<&RDbO["PW,a?(PxHdM!uɠr]CiGM/q Yrh1ב};<AOjpzEHLԎn,O8˨!vk l|si4Zw>M<}jyv_$&nhNYb%V՝༅X yFQqapϠX  [ޙ–wzѹt'Z_O&fsO FU;8a!5d1:69/Ơm3-?ű}'8mX4''+B/FmOT<@zQRm*,^(cmפ@}s<@ 2x0>ƙYJ8dWDzwII +z9lhdgjJ`mS9Z$U$lwDJLW4Ca'~_&7DwO?BGrޮR$]-y,wQFx E EkZud#Ҋ۰*QC#l 4PummJ9벺KOijbG'~olMKv4Bw@4J/ ,ukÔ172?Åެz7Ŷ9Y`,fec:pzx=q*WeK0ʱ^WqV\*>;0TV_Ùи 2O 0}nUľC˛ƣgcEXtӉ/E?kOH7R[tD\Kc]>ѰH1w*`~.=FD:Sd1蜔\u[bۆeȓ7Q9M-]gD % yC xJɒYXrSHMbGAU;7ia ͔m DJoSO)zq~A9\X~^F|hl#&#B:>SD:H`o6kpٜ'o@Ur 0mQQfL1CۥwhvPirc~;zRj-'7x%w/ω+Kږ:fU> stream xڭeP$ܲ%5иK[㮍;4. 9sN7QSV̕{GTD+ %\xƮܲr@SK\ hbio'fhMb@  jdinRS֠O?!c|e:[(mlv._׉*@ 0D%TjIjlci49fN&v% 08;M,Ҁ&@\tw3k.K;W|E+hld(&o.F.vr;"MM\i_//3O-c h:[ڙ':tOֽ翲8X8mYj|6cgWL: Q3_$Ll<@38Fy{;DoEyo>Wh Wy#ۯzd_ @CjI1K1>)ۙoT`fd5LN6v/]5R=3ZXX#]@;JKgZUy)@ů%pQt?[7_`DD=\zV6毻EP_@y3rq|?OzFQq13ڴem%.Wq@%{`̟.XCb:}=C! E;ܕo5! S<mg4#=6ݩԽ6):8iKш\݆`R?ܝPR/y"`u| u+@'{p@3IZ[x"r`txh6'/8ōDmA[zU!=Cάj?JawV.E=P/ZDLɵdNe``!>E-1"lnRWm+UyZ)=D[? {tя:c?v7(`])(H(VՏdcb >kƎeWIJ<5/tpƟAgei/>$E,LJ4.$}G^M]KS^ zW96%Ԕu@ .x3s[ N0YG yZ}8YuΊP`לLSΪn39ݳe67jAT 7R]PwQ-7h%> Ϯ{B`uuDC;.'+fیS>`|QhP>:ʂ&ì{!טmF]ýR_zDZv W6*`5C(wZwn>v䄜xjCԋ2VD+<~AZ5\2n5SR.{QnO4P{ͬ@!::/KI}E S|ziLi.S=+W]QaeƫuM5S mr<ʹt m ǐH9{,}|r & &ثW߬e~,sD!fEEʍt(䗢_YxƝGO݈0iy󀗟ti1-WB^\ ݳvN65ZI(Z4ʉ"& pw,ۭNvRPخ9~ CNin {&P x/XRr4,Cuk[;F% <YXm\Do)RiD/qQc\“-al$ ]!CXo]Kj$z 䗙b8}3^bXq5584T'a}J07@t]I TaMC/ uNx̼Vƙ 4mN`ѸZb)~eeYTA0 oKCeN?Rl}Ҩg:YDdl޷<]VCSԮu\ l2cj9V\i1׼XʎK+Y' sьGZ2m"w.ܪc j![Ї'o) bHXonhrD"1 ?5p^;CUQlǓKLZtvmSєDkxAXs-y(k|:$!cjgwQZ0[b<(VǩN'rߴb:d~P P9% i;_\g8ӹ-_úD)b3T1[?`K}/tDJ[e[!,W n~* 04Ѩ w .DCTCHBݽ +|D=v,&|G15r쉌!A.ݥ!n0r,B N~|glPA 3eN TZ8hx /US3tZ lQh"br%͔^'9lߠ$6ohfHVj0nV$ 3Գzxރb_@h7TЁwPOoV@wӈ?`W<}~ɳiyLfd>nSAzkRAu)0 0oj6|`\1Jr\wuuA ȵ"l0_sYHnaIxe {' /?dv諘R{1hc 7Vl;_ŒKeǂvS{N ueKt nr[0skd{y11D*>֌3~,cʂy&`Rqc ߯0^ l? .+ M!lZ}&ZX<U+3Ii9w;EoLC46)i?c%USֽ!}8t{aKHI! bp Tp=n8l~ 7#YFFo 6: \E+`T/e xEdj\{YaOb:Vh4c,Sq9g% x@N辳d]SRW$jf~pd]+ mn܌sl9.gڶS`j2:wSH0N!%Ԑ8#>5>V^Q C*1ꃆVﺭH,Qя$. 221_BΚđgTQXѳ;.΀AlՖ 0@r~Lݑpۃ8$.a_QeX`f + .Jm4t6&Ȝ`IUI#{ qs-PF_Jn-rpA2lti0~ UFDȜzehF=> /J;VDӧy&&M.?ZazhF(1!%W/zd&L\/HP˸̔ԄÈʥ 7ԨYgۄ~ڮ%Wbkٌ@Vj܂g8uTh\Xmdx/!]t- -x1/TOo~?ͤXj1T6mA\.sdbՏME5F]mr6EI=+֜I4\dgym?ڄs/eѲܖ'OJS-rۓ.: D& D/$2D ".ة %ƬڲU$JuRQV*zk_jb#C8ڥi)V? XR?puǓ ~}|5'AQ-i݈ n;.m$Z)f `0_u~ٞ@y+u9`1:L(~lukt 4\7sI+%0_H!5pB)2,Rvp݅KCEyϓFsUg(OV]7 ]IZxɂCr])=#e#'l4|r^mH.^Ur| 8wĦ@bSb ܅\_;nGb>h2]fR HT6C/ fȔ-|ǹi"B?ݯK.hi(`ȫBB+doz$)+s$ ۅEZ'lO[*SE5l.c?M[p[MKOʄ[-B) dlT3'jQLy-n)S>1bj7CZ~Bg6eu,+2b_R0vyF!jts[l"ʕY54dS1B&d>3J`])`~z{a]XN :{NMѳWf1/y^}-KgS\b0@REp4. WsQ0d^]pP\nT&3t\SڷeZ^9h{`xA;3DJ&p'(F1D$&>YW1Fz71e*?+u$~u+0kJU c>b)*PK+퓿]SYK&5@m.8^c~ڔ [4uhŋR@$BTR:ozKAƭw[qIM=L^^%W X9~"`]4U4/]i3%婈*ܨ) qGęW,]?"2O<Nd%JVp2.|n^+Y!*IƃjtG^l.@@m܉_ EmC}P& OeyqM$L %t%e2zPvHss!NF^Z;bM_7fY K'&fI5hՍ"%mx s?" bW,fh`.k/# #%ds=kY:GN+SqJi;6SZN'5Rs/U34$')&%]ZqdF$ۋሤW|tz@UMc"kҧ4x$Z\.w0o+C=EԐ\PLFI-ռQخ5O h>ntT'C-{6ڱ/@ FlKUl >qVsAV6Df#XrMt%zdL ~I])6ynO QT(̫T'y`S@p o4;$Y0Ѕrb豓۩XLoU:7j9 LX;Hmu"ٷӊߌhŗew3T3 }oWdYSH#N.S9W5/,Dӱ3wh7%_ڼ鮘8RAOQ?T8o싳ͳ6+c@T%|wD,5Vϕt,E'zuH(xa:8PH3G*;fܿiοSܑtljrq.l:9dۥr|Lus@p8pnDKEvf kԪk_UiHbk.GMv@&.>QZ RC=׿ k)M|n#W{~t36@,p8`Wwc`B[UkSɂVyB>͆Ȇ JYT*"1Twek%0ZƜR0>tVJn/M{(}uϲUQK\لr:ƶB;ƙ{jܰ9gGop)$1_0t$tLHCx8HvP\vJ|iq̒DČir3@a}gWs9`s@|s&^ @EHM ̨MH^efҙNCi!Doxif sZ$Je^3d9#sw d9y5zbAbZQNnĢE:zP,E5fV,dϩz{#4j7:o'R|ķ{ &U8P7tO%ePZmE8O9**cu^u`iHo\ӖxDe% U RJ( `hqESsb P+;-}q'+1Kѳ͕9$cC%" D<f3j"-sO 'ۦ\ۇž3 VdXWL>a@!F'43 ɕeɴ9$]m>> qu06;v˜3J#\e5o;/5d5s2,9[ j5O+gM,t:[z{֍4)7T@B~(i-#pݮ^3 ohaz+URҽ=;A9 (Hx~>}D 8l@,{2q`5\y/Ť;%NI nodx%_=I ^ ҒZ4hKLmPkk4Yo)c6}C<"+*"@Tsu1Y<+u5l5ƱVsie+T 52Y]_꺋H6͡U $ɾʲPJLvGjmOj%놳`1Zk(zz؎] ReYݧdvg Nr8x23 vX{JeE|V, +g!$7}3nýQ6ĬY%5=gƳLDl6B P\j&^|AP k1Jp|)VfZ*L"":ԗp"p7l$k QL'$QzO'VM6K*.䋣W0DVȂFpv")]؅2հA,p2S$$.wJD_k`Y &'HPDa&j$y<~8pJ6=M2h7?tvA/ 3P\AjCjmaC~=F_pSA$2('G G*[q%Ci3Lir/ EPMM1ls/t1IPX@g vN_("OlpaR.=lUoDT]*FR(O/&Ӓv5kcTe+tx4Q$p%~KEWPȏ1As@ٸ#o)b9*u)()jYi9Ayj(m/w ;AH;$DR5A=",0u]BR^sPH[`B}:B[^lYw808uT0׮j\U' QIn5W+ (ߝ`99ݻMv%p\:ѬVZuT*T^B0^^y_V=ڏ;d ,#8 X@.mOqso-+.^mmd؞\Fi{=..(OY#X9EqEhUODꑮo@@Rn[^ҰUGjQ` mI 1Zփ8&%}ۢM/%'jҮ'oqz=ko)pSBǃBJ>$B2q!>+("p+Rߪ['N>6>M{*g%(muq|f`,+UBߏz!8bv(Bgg*i{N Br>~E-qM-o}8/t7sCY(youI=hORo-DHХ!M=/Q%8PW@i(kϵM3m d`υl^ĭvG*zse#0LƲ9'aÛg%Q]' IHүڹ, Zyg|1uŗ >3t_ӡ܀ eC/^s̨-Mh\fƆ^u2Cْ=aSxh={1衪"B?I׳ '#w`&h]R9(6p VD= ;Gtp` 6*,@[5`sb}y$_&J*J|<ޚDwxor>1")Ό[JL$Jǐե{h1N.G-I?S%7&WY{>8%L2>9(]dz peJV;DwnR U5_eapo|g4#/ж*0kAJA!}uؽb.WAPEIX wGx 1d .qs* kc3kz傩ZmTUGG4NBg  |W̬Ostο,p13weM)%4̎zU') uhL2 bҤ WٚiJPM%CFDUqHQ42:Se+Y2U)}3jx;rf~gߺ%0x)wA36aq/-l-i4y:84P֢t!f]ݶOCb-ro^LDQ-P V[e|2s_Z/k'v(pb6"U|3>D3PUi0qoKx,1WKZ6.$>1qq 93H6O:Qu;|jQ"H|aDx=v2;}j|7h]yp7/sߗIqtz^~Xm:\~X ׵w2״wB%oyL ~͡8 MǦ+ !f\QhLK{ Zj5'nm:%ĢLHZrJJU1 S|]6<oe(݀7Ǖ&{y1HO,eI_4(CmwޮsmA۸.k'ׂ[1ЪBj+ ְU}xѿcMm Y.ꯆ=>E2 (;΃5'6]Z;{ptt?b]'Twj)|)rμU0•i8PAy~ 'vB4I3`%"y)y"og~,wqy8,m(Ct"G|{[k&SK4_ց5qkPUAd $@j=ڨg0:vx<6|ӰoaFJE_ڼ\R9liĄ *o=J]6"W\ݶ0+IP!~CɀJ] x"㊗CA@f <,=%̖:E!׿#GLx˘X޼dQ.!Jb'4kYA5Nͳ *zQ=!Qq#$f~O#`0a(DǭRD̴HXHɰKPL aw w?DNЯ)uɚW"ǤAhPܿC.tl(d0@!YAXi{hZ*4×&p ᖺ QT)TcASY! N0+5\,'yȘor1\DQԪkM&/Trz- ظ:!:]iDJ1 `6@@eq4ۂ>彆!3WZ%eS{>t S|UaTQDD*q7RZwHW?5MgXȵ8ؼ LtWK2Α]]ͭQdh N85^o(NxBIp{jdԒw95P\Ey}2{o jчHp-_ӵUi +$/ DoM ?J3qaqj*|9j #5~| c:|11j9{0e*源dga5jiMCe|r-C?鰘 4M~9G?-"wKet" Uw݋O8ldKC>䋦ʣ.X6ձsQOmܹhm(@ M=dNvnY=ogud0]\=v Nahmgij܂f{I(؀ kᅵ9vPM6^Py:{un]DEl\8&߆`H4'MDH)L0an@yaX1"G$F3b9Bh^5bյ~S@{࢙\y;TFm +͡ 2KZ'Z'RBCl"R ]bgdy r̛(Ko9g؊p3n7/] ˶:3yw/&/OL;V%)Z:6WE# [k)lm:yG-s!:J,v֫`GZ8)WYڬ\JuIJ+49W11 Nh endstream endobj 231 0 obj << /Length1 1630 /Length2 18370 /Length3 0 /Length 19217 /Filter /FlateDecode >> stream xڬcp}&vvmcQ6:ضm۶;tKF hm7斶p슴zS5 voFvSߔ;Hoz/=Wh kky# {dl @ϡ6rXZ{E/5L LVZ:IXM-M,fFg/)@_l&?l!&/]񻢌bOYo&u?~)q[;VGO?fGǿ$?=4lgd\3<) >l_ҠZ_m]a^8tfqp˚'xGCFӗIIwQ1\#zQvBIpwRIYpƟ5$>2jpldx.;7$+SRfF5j'۲ 1c:s%+0>вqUh|4Ka7qukQթ3CLԙPҔ#g8)"jw;}`ATS-飘Bh#(E %o6bOYULmBqڧ`*iH)Cq}ң՝*qAp渿QxƣaXKTV Z>ח-IiѸfNĉN~fHrFO8^"/a kUP-/y1=BP-1GFs&՚pq]? h70u? 6J }XoW׌ܜ*L. &$Pl"]4WXB&ՄS]JMs\Ul=f*Me)4"yez$M*4dĪmPlBJ Q\1YA(b—/Uᬖ8A{JBP`k5O UbWlNXlw1}VtJF(L_}yUcz٧bGw{e9!ڋm4H 齩umxNM74`VO7>Xke Ϧ.{ԵM*ޣHq52?tIJ|4@DK$bw(<UkhqcFGћkjҧ_I=}Ѱ;Ot;1%q&>dFc.,hćmV/O$i:(I41)Eϱt+P .7̙I?==#!{&:V\-i fv5.,#8qq$^4bz|I)E;-vKyϛͬr\seIMX^X*14AܟAڔ( 2if_#* ٶz z/Vʅ[VWZ,p2;ѦwN'`N$K6Ue6:F+j K{SvARs(u_6jr&zƐ'P!?Oc7>^ A%8]M2dQ/U"@(8C Zk0b\X H5|'^>ZS"3iw $$fܯ8A359jLԽ1yFk 䞷G(_3Q&, &,<̳`B,)1#|H1축ATF]7 iLT! 2 Qb0P3e/Zi 1{k rwjxLv^[MdPiX^jY}|nIsŝ.@skpX L&מuދu;ڎ-ᝑ+38uj Ɯ-vY:r:@G:,K?VbħT+UKCγ:³-D L'M@+s3}KњI("ce[H E=S"iv jMw. CYSWQBR`QOD&YzJO„r͛vx8\%jILF+cX)S'1q%fdb7T8ѮCE^ƜsnFؔ?Ae 68'óaH]Y }ҡLTHl( km(Ki5 _U߂$:^!^䇪:(Z䦸I$zv#j[T/ }+edYOw& Ug^/5Ïg͑s% PWBaEn!ibsrY\R3>OS:?%{qT=(׃u8>"!*zzqnM;~NP[E% h[BᯖjÙY 1i | O]Q_gs,E]7a{#-کi<8qF^  € ك(a D]dUhM"(/9{IkWo;d-'HQæAb>u ɘw op h,$e\ ]1NA@zFBA E*cKe5 <7@?L\l4A`^To+eYhG`PI?\~Iqo4mo?4DST>f`S+ވm#tˆ5څ+=j"ַl'umt\DVك YIzqz5q|hқK䗒VzȆTӤwuui3q9ˡU&P4 -@̴47%  Uf8lW; e%)VoP\VH 9̛1t 8F jKn\OL G 2wxKЫ,pö/] 2_MCʒO"*VA .O힂;gXwgn5|h BnhL!%a%D]WƓq5VP[˭T&4pTe!:M<6|lRj`$IegB?Nd=8m`sLx9"|&/b:q2@mjlxm-q|[OB{3>EՄ4®OamYAU]~R wS ]R󐄛jf5 l%ݥd߄>WnK.)a]CfE',b ǘkM xr0E*`d0Rb&gDkOnDb&skQLP״LJt@Hԋ#nh 4~ /7FFIJsm?A@-̫xg(^=^]M_lеx0NI(g>r@'=r8IPo1>4֩:/κsg_;k7wi0ZJ[u\;0UO8VuXC oea=־Y.Oe-Wq*[.B+Ǽs rr4BV]Km#gHLh֭!5L<;!h2CuўG.%!5ޡm/Ѕwe>Q?N24L(w]D'6 vNs#Y0IrbG;Je\+nؕ92WړG-ܽW]nkR"hbPfrF3'Й'%#5>vˠS_lekdrN+ڴ)KfJ74U 3JDv:rGbujY̊4 +1Oũ:4L"z{֘tgC,i$~W#؃YPVb;qiX̼aJNM7l/&*uT k8S-Ql_)OcYVhv%C@MW&A^&A[^d1Ogpgh4Z$ބ ٮǕ/Z49Ș0M72ӟ?U.h4e;+&0؄Rš%ʮˤ !s6NHH5~?Vrܮyfc;8O?&ΛLwoUaNJɌY lGq.P*,,t'g"c`1ѥiBC7őOR– >/0Z_ cq*TA",I\#+Qn麯Pw7+-׀)Ʀdv%2Bxz { kΚ Jd/ :W7eKumKb^=-+Qb6yla/ݺ]q%#7\xڔK1%CfQ}jcֽUnAMCj0\jȚɦtVO,+; e5r8;xȫ}4ʄz<;!`ǖAkʘ]/u1Ϗx狾ڭFi~!~PZٳ3CS|r-B2f >~Br%RG MpTyakG#k0'P@lԭQ#5LVϼ)(q.xұ p |\hMh-5^@B1(Z ٚEX‚1t8x7, ˩s <]Ja/XO !$VcoREGD:Xa&;uYOE~1X$i7Xl<AuTjgr\ BRP1_jڬ4'MfQ+R{%EDF >Ȃ!f]];'FI4D5=|:Fx=[鹕3hi( QkTAJC:j\uM^>9R$,6Bբ,g4Gٓ+ި'E|DU:[Kges ,$ s 5u5:,\5,3A^'׉X}z7_E' `_p`M4yit YZ, 0ߘ KG8B8]DR4a8DAayVC`v5EN]3?Sd2h~ڟM5kXMz3ad,/#/"*V˹h}:tA{}q!VM̳(4Usč[SY{\Jpf3:=@@[HuTrca2}l$@qЯ9zv)oa2qC[@jᐞ.Ƀݍl$u%Yp+4|z4\j/A-9"~?JjLzF['AǬ(uJ+{QAζFE9ڟqA 94oj (QJ`;<Й V$ HZcȳe(Qcl-+|6ol6 ʐq,I%%%4 쳍(iGS9qQh|cɒ2qK%hLU'c{VVU xUcүEqu\wár %*Itf9ꀔ iM.>{n=]QeӢ,jůC18N < |DJ-w%^ cxEm&13mmc^% SRR0uϒ8;gkw'[uv\4n({Bٖ/]Y|->¿wjdz;:ixPr, V$%Bs3%~gl~M4?{6}|)(N8ŷ"KrX/NxlX2N62-ݮ4뮲45"53"mӫvl/J%n7L 0tn2jST<!90Γ`3g\#n} B^]j<滘` I% P"Ch?Ǜwm*~&t0f)k[b༽,-jV[7' ?e TSI ݳ׌ا{y{mH)g#BCݪz#9´`s'ܫB8y k'A_RUH]؊eFX(=C^Kyi[]TzuT*\vWU5v,#@0+.mU|*@܄t1y hP*b $Ԓg΁hd\AHϧ\fߚ侱i* XLj]sA?;ڜWhosF"֏I[r&m)LR{Mx;c'Iv4}Ѹ|#P7p#>խ/q^|)z aѥػFc+/Z{U.\ gNΧd$ b@R9!3NOutMCahu- &:RyBgC2‡3?]="Kk ?rxw!Uj\qJ1gc4rrY%UM"Oܒ&%IyTzcfؤ;dR1 X(%-zF*[H]Jm%thLմ^Ə Lw)SRRdۙR*ޭ<+~РՓBL|#6zW,$_[|HwRr\89#;95N˟M1U4\ {w`mVC bi`6 z/詗lB ӸݍlnчvRs*9i<Ϙ }1 G[%x51RSy&{7"q kfWL$r;@P/?a:Ox|b给Tf,r6G2ͭ#{|XBT\Hlj{ ױK#6YuT38nKPѕ-uNrM_~8?3vmzbvsǟes2hIj؉8Ԗ`E+ݮWRm# }d (;tnXd5!pz0 h)EL$+ ~f1`#f8[ 9oeUtI/?|1a?[SZ"~2% z4Qp_ͥ~v !n\Ӆ6d'F:sz_=tJ9 r $hKy񻟮kK|$i:ӓN65]fpPJ.  >!H<^]uTCXndkrP~m00%%$ݤQ +QI]u|IhnN) *jz̻*7;c'JqpN\{0T\*yXkC\Aڬnl*Z hưjEG^_ߠUGĞngR!sZ:hVOW.駶@g$v )ĦAMuixLŷBCƈgkhTg(At< 2 l~82Ww4{MTT뙎D~O,!(+QpʶyBi어Q*rB<hx8em}=?vf9ފ%ģCɓE +4jб"™Tkݬ**߄HBhH5 7S RBs{1e(y)[Fegm3蓫̋- j-y&D(Y.!v nHPj;qXA`Qy;jC#cI-s~7ϣr#%Źvd7ktX0>G+4!&/t7"Yu0 9O%q;39ɬn딻~;bIL e>9z$ʆ<_~ߕ1 NrSeO r' )}+hŷp)#&Z}2JNn^"RI;yaLŲ-Tpj;E-8/} QҙVka9vNfs3h$pLJK ߹%߆ '$H'pĀơٓl؀ʏ oiDQŊtX}`=SlUgEl{H -(WagDE Xh:>bGT!U+ W!:MfVMDT"q%b!)G퇺ºuc1Y7kVהhQ>d>>]Z ͅLqEج>Jܒ`jF܆ gPAWҲy !W8~O g>.<`%r}\r6xY𲳫K;E:K=EV_ 13W =#b + r/3%ט@q J\CrG"ܵy0xyF vB XM_Hu!Cxiԭ:1Ҟ{4\gҬgQ'(a͂Em9i;02FG7.mW>OZyw(ͥM^s֒CM]c칉rtv;9}`JR%3qMgO2.w&)u?w EP-{K縟}_Svqۑƨ*S6*ؤ ߛj+@57\ij4ȬC77ouWƿ5_-VXuy[.Cʋ돝+yE⡈m{/p?[uu?SϚ6?lFV^b;TuY!_J(J<3[>tiֹ]GC - ֊O$ %YjCv1wʟώ ZU\a[bNOuR}0لWC7~+B9~*G!=Lp;CbC4{qJ5nC#~)>գ>ÒTL0x$*{tS[Lpr:JaXj1RxKo;Є%>W"S$J@Nb#ذ3v>Q2ndr!Ӝeu wj?8 .U5wXV҃mK4; -/'gJ)IMCv:7@H%Fg I!Y-34;X_=W 3 4r1P)]UZ&Z)Di~7`쁝 mV:!k$٨$6W[ nOzK=V9oBVT]qrf&aL'uT=VbS`gR)3$)J Zq'mܽqbn]qv*hw؛Qf s6(#FRI %?0nXg8HM/Fby۪ZER~6N7^QKɯ\(/S>{uQ mss.!Y""٦VH'Xf2\1LME9Ug-٢C;4г945@V2#~q5ixwd)Qb?ȺJ'?s,6߆@'͘4LZG+%pV{拺\{4M>㵧 ^EG+m ëCH(y,BBoqHPgY]ƫ&2d(1Ztu),^u8ƔҰ+ `ezyD-,(xu|uvh/8Cz'lJDQcϺ_ /I3P^uobUW+P)Vpn`MY(UB"=>A[nQ/8g!LRcm/ E!5mZ!||.FNSm'|~R6̕.%- \ԴePg;r{ ud1wA|\-Es]|[b2艌]FMY"jWo42%+uAe%AXyEJՕL,BSuz<+fW\l1TGXcبX%$45(4@ EVQpFU?׭q߿rjgOfүߘ3 ]wҸk-E'V8U &Y/ف4d;Wu&}k4_P GkY}dyrkpxý~1e#w|k̠FwQ2 ~x "`/m®1ln*Fz@xHكlR >=TΚ?O^QzMX?}8D1-)-S!fqp\wKLl=1Vweΐk4+l;dD;\ 푟.0.윙}zҮJdZJ鑍&d|( fdh2E!zXS]]@ 학U)2:f ;lže(n>B힀ᢠ+gdܝ8Y}i9;0msEH|W؞T s0z$, `!q3Oc^+A+҉1(*}Tk׺K#I` ވrN=4tvqIsoYIb9N2 Dz w͐F}GRÔɎHLdFNZ"Eܯ;SG2WE!] V4rc/pwR3 4I 2s]5ï"ܹ1eE0v%D0\%,HUPGO\Z 'Q%ؓ3DN`niq*[-LX 0%S$. 69|7A|}pB2;X<]u{;fDW-Y<ߜybqM kONG~. ЮH"Չx&fq^Y_ߤZ_ꇤXL?/w]bqMN3msȨPd2-`Pmd;0m-1U_"3E|wM%T`0,Lk1g>5e`Ig1rv"҄ag9(4'ާ.LOCCMuӒa?f^ҎxRXkZe_ֹF% !Una4SAl+H5r+βvG0 EzijD)aE"\L:8Ō'!L>S^|4&GVYǒ 62 eTS>E0A ]FyC R]hnܸtP%-P]j]05u;-%kXZ!0Ht͕S_koe;e54AR0P|X&G^F>k:i/OвyL(=d%icfk+߾ CC&3EDpX)J`^xyYZ|j pn`f0մg<䬡'Ľ9 «X !Z_f(8𜄧$/u:pD5e5Uka@a/~3Pɱ ,-JNtg#^j·Us-imN*%5;j73}=-w8nh(;ZHZdJn@i{|l]*:m_-ct;^KDSh?^Sm5) R  ]!~}C|\Ok.hEOjZ\1?/I{h+h/4̲7WBoagC\Ž-xXIFqӃNjqh1wދ?p#%R7Iݚa9Ώƒ l׮6|BYi' ADR}TcO-uXݚ W|& "4mApÒN=J'oUIuVڰB5u]jEgD5j{}A] TSmYC¨,Wϸh@@݋{{\MIJšUl?n8 z..bQW5w:Z$uF@5n1_*",{}2qx֪.9#B+#5.&ƒ&O2&MgUq7hƜ~xgY^Vd ֚*Br%f#5f tAd`0jRׯAH@q4+P =L')Ncj W+o+CUV͵4mδ<BƃJFKcn闶- Y MXcF#nRʑf& Ǒ Vb$Wʑե CNeݡ>7Ќq ,//'qA3a4.žݛ(`EvIW=jSX ?b]ݼR#ff 7`6MQԈ TʮJKdʺ/3]Bee@' Գ!sbkLa+ݠ67W 6D'Sg f)?HƯRY6F1NTyDFv%QfJ Ox\5\H/Qjc^_ֲGS^F.6pd&B5<8%N ݎ֎ltgAVt^~4e10GD<` >U2kꡢlS/GKXGxmў5> =ܯ5oQkABx/M>ѻR0PH!+@ *D1Ug=¡EΕɺd(ƾRCa6@ު}> stream xڭeX]ݲ%wl;65C!us~_?z֬1kT5ko %Uza3{s {;zf&YV[^USP:Č]yf1sS  jrPh-@z:-?Av.)U.V  - TPHۙ;-B4MiNпS{;3?93vM=LN@g3v WkWBNw);8:\*I;O+cb;{;M])__1bO,sd7_2'puYgt'sKc'3_ ߪ7vpy_W@gs<3ߘ.c[i; {3ӿf;뀨Iہ<f .CTfA[j]_%\A cۿ 9;hg @ϰ;8@-r5CYUfL bj0=̝@@;"|:11L hjck uW:*iJE?#iۛ?T""ozfn= ':r]]&&&f`?8 ~oBmC/:9L@546s67/$ō#ݕ,Ў4^k%6xJOsӪU3;+Q~2@8a[&OD=Yi= azfV}J#5k晴ǍqU+:Qꃈ?I9.? fzc57؉S%yM)v#U#?6 ˊ @J{9&}8sQU`8iX/d*^zkR(5f|leQ[(fr{$Ս[1ZqM5UJ3.tu-^?s'W!Pƀs"&`RՄ4<+WIhM;^U2hT58~(ft?n+.6$sػ\!A=n i# n?$BTnmynFz[i4b,Dl>Nac9ߴ-$ʢlGĆk`}$<{ʻ#qC,PTFoQ]y֊N0*l̙*_n+!SŞ|=iڂ/O[ SHWG ̷G;Ɂ=55*urk_;ׅl `~! yZ5T5GhdAVKt AE;Ut5R!fOw3&1 l-=DiOW;m7C Y|F :Db]Ǖ4Rw9p^vMi?>fw1vr'&{$Ф-`ۋZ%AAr&>auzCmbWWD;pvK_@|@g|:_HicHAX$g^\cInM]$c:t6E!1Xhdx D *6GXٱ{AO7yUB#UnX)7yҥZ:k}^V{:]"c챒ݒO8/T][-L  vvV)uC^ \P۲@\ ,ijB7aV~2D)iO"!ۂm+dt)Ge.м⮔TR]Dc52ʍa/(Bo=ّj^oLS1oSVU}3ԡ0dKwURo0WֵTŖdO~#MߕpYV'k9|0{ ,gvkNuR59(K&۸BY/1 3<\X>H1 ȣC%^: Ch/ u2HJu٬ vyGn(P| J!1,2/=߼=S@V 2ؕ 53C(LK!RA(UZbS Ey6$Tg[w7p9>0. Vv, pν*|Wm UEɱ0.vq?u46u{`f; ;v7E ӽ^'޸JίV;^Xy+X3 -~Dx*Jn {'NvٸT2?,Qs~s"6ѳ9!cu\~Eif!b^:?p̸vj h\9ep3O:׵ꋇ?TØ%HJjͯ+ՉАlgZER ΪJ\8Y&:"JWv)8yx/h &/#^`OvZYT,YNTx#|A]T 5GrECvK0Y%·ߢX[[Gљe {!lJ@yz%VB AX244#dnߠZ?P@<'ܯTWjljoR<٩B%}ᮚw8[eIv.0jBk3G[MnLNa Na3+:g%zvQEr 4]#zHTY}Y/"^4} 4s;і XQ(sң#-zlGxySITF;CE{&cid氊q~3”A0TߘӬhgeO,EsQөpq)!~Y4hC=#<o"mځGl9+pq\iayO;/B;^ M*[ wWtabVǜT_}=Meݸ"VuXn _K%iS[>ynӥAYᜬ>HrgT9rs9DB?uyWGrTdVgEGL4v1f[9!D:Y9>i4/՘K[.xhd{G(NkeA 3:ʪ [!|Jq9⠛Ojiמp^9s2@ϮU?Y7qW|;>*˪1g<ڒ=A C0uyv:G.^GNແ(#ȷq5 ASxnaGP `w ~Ae$lcwKxk]C;]ͼ):f`>n;<֙i%g+$TKVcN?T5ܟ};a;֒=HHhNm oj1tɴyGmʐ7~? }/$#hVR67] /h,`+L1U- yJQ_}Lpw3H"uyLDIY[9 i7LK{M"<,P@1F/u6 %#FO2޽9{|\9'U&)qݏRbV%.F5l`T?;r$ 9ڈ3Lȵ1"-n 3V `G1=v ;m#5Ztb^'le maX:gOr(:v(غC6 Z4sm8_{5ԢHElȑܻI:H̚x)."vh©@:ir0$Zv8SAMge*X٬ZCq- ze/q}riM+cwxJ=>5]-z2\)$#]ʴUG 617;a.L~?)8f}f5oh=hnTB83nQ;v/ҵQGAϭekA^Z,W* lXM$ վom>>\ 1vIz}TQks%.GzrDWP)Cem7<"ku`,_ BO4({ΞҫYBAM&)֟e)A,=:se#iiܽt~\RqOM -#Z 3?kfY"L `S'm;pC݄9&w06cƊzePɮ"?mE{P> ϳ )aGx-tLS8=៍PaU$`0m 5z@[ y{ĝ;H}A_ctdҏڦEg S1[bw[|q&i yCYe@YuNUn6a-k :Yl}۔25[;w҃hmaFip^~TÃċ>U>H* .eNQ; $}pM6iL#ˏ.o?DPyOQcb$N0M ɶE"L=)fd•Mx^H9V~8 23Dt†`- '02fI TJ 4ր UəsRf&$%u9}Iэ^./zi,߳nFQA5~z/wcJ:|2:@.iriqx3}]1>Jĵg a?t:]V1 n|p-vSMصiK{a!&o_)ʫ>2ٜK*eu.~:ڮ4 {([sBhEZЋtﬕᥜKmFDLW($|xo~7bixk0{0s؊I5{ "~&QN48RXF]I/ WS$+2ۄ !zP)Ѯ,o8M9'EiA'?eߘ̯ {[AѡWa;9՛S 8@36V龟r1(z xkPl(@[4GӶȄĕ,0TP*ltej~q?9i7>U+A}y!%6ؒבX4_@o/sAKf7C]_IM#ĭcZ Al7@ذҒ+y⌺ Ѫ4\+dNѺ$jL90򜂖@g{\:VwjJM>0EƗ3fR2矜BN7[2[iM!\kLN}s [0~DNbFxMBxw򠜋߈U?RcozK"d@.@{=yxh#\'G~gLpՋ|hK9T$ {aU sP !WNiMz-@^M^rs_O[MBðy>t4>twL6Y窙p6A7uο/^`P%ʄ8KDZEF%q\xF~Z5 %9"ޓxȁk&rjuB[^u6v [\R~1h8/j뾧MiZX&r8^Sڣn{R'[2H 딶ظ֌@qҀ| K9e}7P2_ gU_SΰVON}sƱTIl^,,X;aTͻ4)kSkDãrILEp-m XoyB\U\"3r[>cB h<5V69on3vbrW:zwhEg7QͥN%Z76frx%LDB]@H$ BʠT%рߛCKtu? Ъ<䝣WiF5>;Tlɣ`+4+~QyTpn'@R5Y^RR'-&7HmHo}#BR5YP2%SܸB} [GhcWBhI8]m. .@&9}3F֙;y7|qL8͊յ]A{UÒeAe6%}zP8.Ci3:5}&6,GU/bb4cYLZE",9k-\@GȌEP2UE?t*6qIn: pK]t|oT)1݈3$t&v'Oradp!3 ;THRq]̙Y,DɒD#"DUR%v\]'!'*%2rU'b*ޫq1ܴ-]CL|RkBGhGY 5bu)27X$!OV_#h:E l619t"aYtC>۬x*y%br'!F-T ?Nk&9\p'RяP=r05:4 \,CdpY#Ӂck;*/?}\(7@q!gJw!ɜÛ$c8%Jkл E}ﯾ]ҵPyNHӹL6MўH8`*!>[/gBxK/g$, ^N~[Dc)iK4n) F/^RO(/9ԡ!T[ӳ?h} MzF? D#M}["bvnl8lrB Bbςt!Џ<@z]qVgrsLt|4?,g KjBITDo:VL]KUثBd@;q٨. Űr5|4hrI (r{mI[” 7 ;/dȇ$f.9XB \VzG#1f$A#]@N(ЫN.wȩ$hj/ ? Vb?Cg]Ld̷X2>#wѥ(U4K"|=MXrF\2 60X1P~[i(]vz?\wUtzVi%X{8s\=?ghC]Aqq1#/y[2aJR[FtSX~dp!ʨǹ>tk{Q[9SA|M2")T&v4\6 yygC(FU0ºom. +ObXXyQ+Z9./YޚG=NigFs&py!\``8K 7'DR^ԋQcZl%P+ӳ|k O;=?4f;):eG^Q(ςCXw wEo˗̠!.CIn wlf%fREUZBvv[Ҷ"*mx2mנuܟ>S1lo @ Erpi79C<6ɛ.(Z( E۠ qwaeF7)p!:Q2C'w{>#c+ L߸bg8HH.gH' Yj-EYsŰxuR$TN)F]xn]z5HGf~wI|!s [_XP$Oe#!q֫Up>1Sڭ10dPFB;l my֍̌\A@ 9 J΍R ʘ8;5/W lhr,r̔O #9c W%pCH!ٕsglzo“r,{Ʋ~ zL)Vsns!t9i[ u'vG!Gw(.cxd[3u 4TݗVv90؝<:m,E[Dj;ArɿY+|LKH=mmBL6}VƽǂipR'|Sxv4 r}Ay#r :e8!lMJî|F$Vi]ZoFHs]4ϏR`ч=Wz| bh?IWdp  Dc!t y|4ԪxB#0#|&hix*88GL (<[78 ps90ңnW#mI]b^Wa9mz*bDG!!/Ne(WIK`ǍUd*uRE^v߾>THJJ jڴcLVy}.>ש*BVNjN2q" #nx`?!;^5t%ᬣ}> OQc#jW QEB jM*8T|} O}&p4Rӂ=tS5 WH|Ԯ;Y1ykм G^kdlg=]ryFt?$mMdOñ+uY}W>w2Bs` r֭Q,[M8c㊿ eNmI%DYR-U]ptY !<K Aeڱ>bKܢw Ts+OԽD \RmݸyYLF]0:^~fg)4.%T!mb myFqgp.6̨D_ΘyĆkW[<qAĨsr(l yLUa. :}710FsE䁺$U,"vroNvtN輦*B)0S4bH)^Cn Ȓ;kbv@Xsғ ϴp4VDYgk8~TbZe@|5`+=p\p>{G=<0u&WuMۻ@BDES3e PJwB[.{/*|[9CБswP%Pϡaj/,3Qqh\*/j$8Ա$óߣ!͌[ u >19Gc=CY5KR=GzGM@tLD޷&|fiy F\c߼YwUS1Wfnff8HzZ^phҢ揓@HӍo#WOىW#sźY\2#-GQNi3ҥ̌L#2ƶ(`#ՓF|݊MqRN7$l&<J|D G#KɼZm@07ܕȣk5ĬW F5 <R-.0{1~.CElik3 Aksd5e3>ո."V^XfE.}eeZ{|7 p%%MBacXpr1CVgWex &譊iExY PvU 7FT~*fwDP^?s1vH}NV ױ/4#tU ͉l0}$r?3mgǾYѸµ?2z![zH-w F(x6Ĺ:j!.S{mT-!m"wCdd'zLCf-V08j}c@L'Nk2HeZ'xfXrgQݲϡ6bVʭz54V%<px[s2 4QCX GO] }%Ռ=k3A3}AJ8񷚨mz ndOϒ׀SD.V#(&M7J|C]v03sHv3)NÉT94wwI\E ~,бQ+oa ϲ}bYJ8O =>}jr2\E[ j7#V2rYX.H! VZ;yF}9bkN2WpɃZQGI?0s'*a99ҳwD1#BfcA_~Sń[+[NM9OFE"G2P3Xt@u*_%+s'wú%ǭYؠ(uV(nwL+(g1M|qMrwaC8< g~wWLyn5"g]sw*SZa;,^gN~N.IEdUo?0aj`u[:>gh\Y($> endobj 175 0 obj << /Type /ObjStm /N 66 /First 570 /Length 2787 /Filter /FlateDecode >> stream xZ[S~~Jm!!! Ry00M6_4ه-j$MEk&E3 zǔ }dJkfU@Sc.нe>莌CE DŤD7qr41 *IV Q2D E"`( DdZ@%VIɌ`(3>J ؎Yir``F  JJ UxLA`yԂ V Niü 1G큉 v|IF3Ȃu@`Yp$= y|v5|a[n/:yFO7xO>d)!c붊ry'Զ)mx.j~ߦatĬ,m5hg?Xbfi啅hix,MGp͍ bkKPnTNc{2?^ mYV `Θmk+YZX(G*<<&hm:mfiN(󭥵5 yk'߆# Qq'W?&=L</{yԯc^yQՅXƓu'|? 3%!͏~w='߫ w6)Ƣ]~OT~/x}~|ȯ||¯^cIw&7W3X|('tKDqw\/2sUT={x{A@Uw6=, fybJh닟)fŇY&jOZ3U6'lJiVrg Y6ʴ4W^Z̢=6QΓ~a~0V{̢M;N@w[91NŮ&[#m,6u+6ێl:gmk\}'k*Se=z|Y~c]F3Ld:ߙ{( `mfd3wLtۜ?I?C͔Am=TIc&|KQx«iqT%iUnJFqԅW,2z39>= /kJ_N^o.K_lV.eS]*#{*ǻx<;2lI,fgm^^ٔqſw>#6G̢.RW70Ӑm endstream endobj 240 0 obj << /Type /XRef /Index [0 241] /Size 241 /W [1 3 1] /Root 238 0 R /Info 239 0 R /ID [ ] /Length 658 /Filter /FlateDecode >> stream x%IHQ79<\<]!2++,( E.$$j"UpѪiQT\(۔{953 fZ(pF>̫T1@zuD|Z@@`ի%؋'`)Nʉ*hD"$X8[B$JH7ti:j&k L&`Mz-ȁݑy" }#-" a_%D1loؙe-`JvT\-^5[KRxmojy]k=fسzCh.ԒD+읆ۈ6ا)D;lA":a?KblA {UKJ##9~b?;*=HJNk8ԦI@g;Jg1 J@t'1`$16ipvV=p!0]=y/)sbRFi}c\,pYxr!`&_=keH\0+eH\p4`R\*4`H\h,p9MX > stream xڭWn6}W\@ IQEf7@b[}JS@]\J7@?~7[jlce^f9of$ (CH0[(4(cl<V(4_u^_`sDP9HpD!Rʟ4 %i[qʅNTs=0CIb1 ! U^}vaL-#خo=hӪj1e%|s1) ź^d8kv=jAP8gl& D1IXfQy/;;y{`Y r+tوe!;'IXhy?9O0!w5xD;VJ||:vu=Zp ySV}ڡ\X|1)A[~*gce]e •TV,SPpŷO^51D0ͻOeo,ę%EN!{8D4&᫮,M L(( Q,x1K 0]?!8X7B!"Cd4 HKSHp+BVo3 tX_z^&͒dؖ_ƫ'vwCv a 9==dr8ʤzjΰrNKQfe$88uy-Z(PFXe@yBI2*_HP -yr99qx,@x1rϩ\t@/2t;#G "Rrd=l=.HNa, lT捿 -{N߰h+͡Nj+0l[U? LOx5j+;վ];u7O4ͷZ)Qy%G\HzXQ"{%*VXH5M47'*ՙ6~׊?jŰRĺ_{u}" endstream endobj 13 0 obj << /Length 1838 /Filter /FlateDecode >> stream xڭ[r6+8L*-Mp&Yd&qWifBKT]Ni鋍)}s. o..3pdryߔ om^Hr.Yq1){is,UpqsѿTћZT|)3$X 3Ϊuўݩ&߷7U#wg10JN5Z&/4Y??$$?Kw\m/H H;o:93 Ur$2g)QB}EԽ^Lwv\*p ĀSĤ*#f- wnZ)b-u=Ĉidצ <_1IsޘĔo҄eGN#!%4MRQuǀd8y9$~$~ 079szflX6L. a(!eZ};zU,7|t N}4<yiY/6ˌC_e^3?m f<Xu˓e*Eؒ6X&sܖp!l86\, q_`ݲƲ:TG(EU;no5GoE/J:&z~ 916 mh0iO2r!(a@p\LB@ yT.(~l7$- Z k16mZ:*ofxB0xZN(#<8N6'm8ό˹*@Ȏ auM&,M32*a?EKD E2ᨘl#E ͜  ҡKQ$ G†CB' -v5W͚po2DuʳqSmھ=YwZwd0[;kA9^(Cq UmЯQ!㜽0?gP~q9cUǦ8 l!N6FxfsmEo)V+ K%{(2JlSNdc"Д;Ɔ aɥÃh<ym&ߌ? hǦZS+ Y\jU@o$*a֩ ys6 q#D &ن0SMyIgu:ΚŷN ) /X@&R*7JiVRBw ̬b endstream endobj 17 0 obj << /Length 1921 /Filter /FlateDecode >> stream xڵ[n7}W/`zy(NRzyul@I}gwI+(g ,rrqsrLpF7# tlazsz&|\&ͻ7'OjaYh8wҍ5G-F~>>}S 8}TL)~ A8g֢BJ0t;Sa?`R ɤ*iyQ2)l7bQ=Qlv$^@U]V͙)$L;e!%:DQvI_,=I(V WibKdV/jag1u\>jG=2z"jT&aռ:[Do=Er;Yo2"a zb}XfEι.|sbQLøNū6_Gߺ#}٫gSv=g$hA3)ktskt]J閷m("K#9;໔7<༔l,/=Em?h1tͨ3VӘQKVa HA2ar"EыiHf8uW(Y LTLY_St͸_=u7?uj/$Ë` 0XQ,  /u'F*#dYE@Ĭb0 fR:U \l,VY( X5R̯Vl>z^UAV\Ұ,b$aKy kh(S֦(e:W}8\ܙ`%ؒnNOL. JAq]Biҿ; ' NWdS|IB 5 u7kVk0=;E.,18\尳Fق@2 L렂0<oT{jm)HRKV )vzjغ55@ϫOL-1DF} UOfobvLcТҡɌSW^eHbr.e*{B}L!L]6$:)k$i;+f9 ﴟ0a^dlPdm%X p^o% "lkm L\-惢|FqF&"J R#i&%6t+QGu+!( JC@Da0@ib04J+Wqsw 7 -%>Bh8 Gh 4F" FʕЅ:JoQmlΆ ᅀB`x!` P uYY`"0BV1 Ȫ)4ͱ2}$Eaى&o2;ܹM& dvX3=k |3$ [˝Nc" W m F*#JsJx=mƌ z@@D=`0@0Z c 8T|4kr< 1UQx <F"  o0FNxxOoxZyP[$]64kKh4xHC0{tzFLa7ot&w0Dh)qiFL0Z'Hh:Faq(i F_Yy!⍦4q!Yx|ȼo(FUsVUlxzUެL7uk'ޗ0_%tx&JΊ̯0gJ1œsp)h ol| ,X/}^y" endstream endobj 20 0 obj << /Length 1387 /Filter /FlateDecode >> stream xڭX[F~@CAg̴R%RJe#c.o 3`bTR^;;6wpp E\;_ߊ,SG[W hyR0ҟUl"-roK` ݺ,-\M*-!\"󰫑[ߩ>V޼r(vUy\Aa[/'i+d2 ߝQDu„܍Z -uI2RMY%g鋹gN!`&ྻ;ٗ}ʪ©hJónM,~ݩ:4yl}O2ô8d^<5i3a "$$HPb302MB'sIOM׆.`NcIT]@F]T]`@ $$0}U U)Ƽ5A/'qd{n;qwpnCbmDTv8l;0L9V#oƄ6Ms(|D: .9VyER=`~qԊ1uLD]Q{qnO5v8iqh\FލqY80# U9vLsqZÌ>NC;45a Z*}AcZ)1]V8mni8O=7[?fO5p`.| s5{^Cqz̙/O:ao&gpl­6 ?bwXRu&;!ݱH=p j2{H,qfo!cBؙ{6k*=Cd(& {N$J3 8&_ `*$-1GRnl?vl W#v :fT?fۤKu֟Fs1#nW#r݌i\/|+K.g endstream endobj 24 0 obj << /Length 1314 /Filter /FlateDecode >> stream xڭXMo8W؋\ )uo)Cv7F/mäBe˕l~gHlśBș73o#]..?,apdKpA&_?r]T0*sWڦ]|[}xy mP7DŽg?n&YUr}x9+%RW0Fr3"'@&F*o~z{yT3&Hfmo%yTsC1=V*{Z0/Q-&°wfc nn*‘O= Ly7}[wgx6ȳӔnjVg7ȸTQ;gg7HCئgb4c.iAtiC TloϰiMCU噥՞"\`!7H!޵Bɴ)_)wI/UilNQ/?f̈6j*A( xs(j8(Yo:F"?ǀSuZk]𬧨yE_l EyQ\ Ĉ K6UГ AxX3P@֬Λ杷om\Eg5hdiq(0nSMK)Tax[̽ !hIedRLd`b*0ҏNzYRIIWU` 1e1}`ʇdGi`r&Гy>5?( 2 ݮ8VRiwl 1>h܋tIHwn)4!:l'Ra ]޽ E.Ң) Megz]__gCw3RQکDf"'g}>`q%AR5=Lq)9<6SGo 8ic(yZS[0Fo0͖'(sIz;͢k5zKixR9v* [asA/cB`ud:6Bwos՝JaQª&!C)1B! EŜBcH<~5`6y<3BmBIvgP" upÎ)?:u~'d s>e@}~ !Y~jCY[tKo-6Qq`7ԡaRG%|oHP h,6oH3safz1HM)S/dac]aq2UxHSweo endstream endobj 27 0 obj << /Length 1707 /Filter /FlateDecode >> stream xڭKs6"D02}̴git[b62咔wӂl1Ŗ@` j R$׷ ՌVɇٙRg|]̭m*o @&+%Ci)1BS #E|O?vOXGqDD3, BȰjYl/od= E Cn| Zvf76FFNl&1yzyO jPV_\^U{ђ *#KP Z1|ɪ{+gn2Toyn\70fl’bYս #@peDsY|S/YVz@ &1(5_7*Cc}I)1[GwBJ|14xPf+W ^[dȽ7|j}Kxnm`~ѬgrѺq1 JfҦ QEL݌ծAIw)ܛ؅?0ܯmtcD$2F/+sR *1&}RB;+n.(y#z##WxMqarU-F։>bZImY]Pc9#u]diW,}bS&}}W0*ˋ{Z6BlE;+/dQJAyX WmE4I%u 2tx]=)!mj!$rn]{Q~VL[w/[%a"{r۶jj0RkrWخ)x<(6`מa<ǐ/❾%f/޷e'ӡ_S赲 5цhat9o*)\hOV&OwAwY+ȔT:D 9}e#_pp;ՇFo vUexgcᐂϩpai|JCMzH(LI}^'l=\,/OUXo#Xm@B0bnXs3UBK|L;|+o1;:s8 =0W}>`\3${\2VKj]8397(۶!S[+^hb^p5"\938BHGC&YHc*GbIh3T=ah0U٥q ^b44 0rUHd:"G@"-OCDh^{u#n۔H,u`9BbtJ1{cN%q_1Z#d PŪi-kb8U8BҀ~YiZW,>ICX=Rhų5> stream xڭYo7)o9 @6ڦߒ<+)Ƿp1+$d#g5Ǚ 7w )'}^&\->~S&_ut?|jB*fwh1ǟ.(VN ,7 ,#s B/IX)Y3 K6hK-d;Wz_lAh3|T:|?j=tsndr8.I;G؍,E!J L~4Tî?" }<6þje|HQNjg!Na2N^\G3ZCC ˜̓tp~tz1oL.9DWhTU9f:dJtmxL}j's2rh$p4$<4Efr@6u@$@ Rb,DZN@fbX?^"^9Veaa( E9ׁV`ÁPB)MqF;%*=%n!  VmoGҗvxM$ 6ͳSK$"ZMyUlPl8(ՏʳJƈ[}ve˺ub<l8oI0fOA'Z[O # 0:O%,cTӻvq1i" wms0+VKM8VAX۷98x$p@8%frܹ e'G-&# +<,K>m/UIٱ `r: _V]ux2Nlu+u$KEKr"L<9@%wsTF+ H0&Zh /P`0'Z9"vBìz-ڸF 0D&BSw BI:c0SN]2 g Y endstream endobj 34 0 obj << /Length 454 /Filter /FlateDecode >> stream xڵSMO0WdđJa%V{ 8T6I]رS@8{oތZ,A&P` 'UwA~W'F=~H_.Lp)$KFCͺYfVu7{pA𼁨H2|"ԣy2TbYk + $¶ pv0!Qj+mOe7} aKfNdݼ]Hd[v~g;{ q3(eqsr*5LE?nyxmzӪ(p1XU{t.^ʬ` oӇ!>&2Ua㍝+/p^yg3vg٭tbR\K/@t1"1)@i]| |TwcV\J%R+H +0Y/ y endstream endobj 37 0 obj << /Length 1863 /Filter /FlateDecode >> stream xڭYK60z+D)thv[ķ$%G75;Ç,mbK93Ù-gTF-f'ֳ"m/AZri ;#gDJtق$N!{ sY\J |UAy"'[γrm6۬eUTŷfM0* |K3`]cHm^zEApFQH%j\}0nijozf&%Q OGHLALHbP@gɎ$Ӱ5I}fͪηm^E"܏0?rN$gOüx1'ͬɶָޭ]YS.[RZ-~oJZ t 5/6-WIug&{=Zk$L>T:G'D?2=1<%:O?.fF&k (X% IF>G֦Fytѓ`Jp6m~ÃF&Vߤ0"<1{KbeSrUA̽|E*.0 zY#mlW_wHuȟx>J%ӀSn=s8Où>ٷl;I? h) fcS K#ܦ_٢FJm'#!GI}h0״CyA$x_i<JVO4CI`ȞTn,g+Lh݄fCT ,Za8@*\eP_T5kWD?:9Ң0#%ŠGz MeiuαiᡟT+kK[uBc͗hpLŇ4b~ v̞T^Kd}3؛<vSh[k[w:˧U]q{%᯶uJ.7%4mJm4<%oS2ךWDGXMy?h#$6D}Oé[y"#aݤJmhfHBPfScX|1S'k;Ȕ c;4Sr4 P =%-gNyrb*jI"!BipA{uSppO /1䒄 M!OMl?<\;<^iGKCB"i Hp CBFd4B y7>S~k|0t0C%DJL#K@6pu@lp0>zb\A .a Sp؞lB7Z# ߸{tތ\A<5}F>R.'{7wՠ}3 /]!v(ct-@^ڿ΋)K3kflI[7; 8AOI,c%T6[`k浮!{`kMEro˫["Gw6Hym4mV[ď| - - ΢u.!ʮYtMZu-p?̴ L3;W endstream endobj 40 0 obj << /Length 513 /Filter /FlateDecode >> stream xڽT;o0+4Ri>e0<4H(A[ہhȸ/)ʑ\'( }wbyGDBBФ%'+ʐ𲨒j~~/>z_9%9"K '(,WzgZBA8t#c~tg=f$̑?jc]4}Х KjrݧPmNn7Zp)#tI '(4bܥ9]("&V֧s5'keS3b?v$fۦ0c )-{= {?8 IBk#γkVra}S {{`tk+2ĔLU1O] `b˵o #2 I 'QFmkm7㉚2u,hu PTzht") d^Z+(jl/Dд' #%DRDW2YѿGB9 tI%CV$p^_Rü'œ%a!fq[,Ԕ endstream endobj 43 0 obj << /Length 592 /Filter /FlateDecode >> stream xڭTˎ0W]gPu@BB;`I܎EUlj4iӎF|}Ϲs~sx&o8"B!7&EMƾ8`ƌZLnU)*-Tc@q{~Ъ* fD$ R?Uhmg<\4se|kbQz@ahIb'zYh}Y91i)ȝA)w6Ǫs8FO+sjkXCJ+?]'{MN<1U D$I:R?mO) rO˩V1|9YlbNaӱY[jQ,U`_Q³/i|g!X[]$__6,zw=E0 nFcƮ-d7a0DٿĕEN⧳*~O\rnI9X*9WT j5Wu3] طbcVh5]A:51Yp;hbCF% /vGB'nOW[{bb7wǃ endstream endobj 46 0 obj << /Length 983 /Filter /FlateDecode >> stream xڥVKo6W=I1"E5tC=HtVQ?%K7hp^73??|%Kd*6FM&`U߃F[kl% ;6kg0WY37Y^pxA ta+KT䷨n_BM&<'&T!'a>#H:"2*t9VQ@$:F?^AbIlQ6USӛv\{qPq;>h,ƺN~^sĂ'2WB*7Ov,T,*Uī iw/u(=fE>y/' endstream endobj 49 0 obj << /Length 351 /Filter /FlateDecode >> stream xڭRK0﯈,/]7eA7v,aoҴt2A<=}˻.&[PJqTHI4*_ =^oV2y)<6?BFJ@3)")Vi iZt[(\?Glk #H*ezUE-*j7}qlnfUǶޛ͸8u]%"'ddf9zO}6> |Y~ qCS?Q%-ͫA_Ec׍[)֙%z, ?fFs~ 4fG"<쇗")K} 7o!GPE{d^L>(? endstream endobj 58 0 obj << /Length1 1993 /Length2 13183 /Length3 0 /Length 14385 /Filter /FlateDecode >> stream xڍPҀQ ۹3{V [WdbW&v {g6o"23݌Jn[oO;[;[@o S  S 00v,@𿣿;XƏ翿t&d+fT*mzvf33+7 q -鷯$Oo]l&=:LLo?.(+w[O_uvzY۷]_Su?+lkmuNo 21Z8[M,-`hgfb?2z{>fomy7-ca:83 ;;mMnO1dxk`j׍rpCF`MF'Q7%[LS7ŔMo1K\o1~3Q7ePMlFO73MoKo:c[뷣`4jF"n&od|O_vo}XoXoZoFaʲpp/u s,\8JJJ<ccg݀KƼA5Amw߄]wgwS=ڝa2nzPWĨ?.x +!;UOѪQ:EyFYs8$0Np4hn(73h9i὏Y =~y(Waq%!FO^,+ՔPoQОstdbc@_ek*$Xq\xZ9-hYQc#b6!PD%45Q5 L~~"n~wniʺϯY򜴻= ݐN: 8~yOLHವT4OT&H ͉sxa N+^K -Gץ:=_{岏v?"B\WqZ4)NŤ[HuF#HYi'}6B- *64OjvUt@3^7U2p`R%lkJt4k,JeTT9U=+atScr/UWv蘤^  \.`3;q34CQ˲<6UŵSYvΆH!ڴΙ.An{O{dY! k}TRwSeNz bo69;S;L/t+Fy46}ꚅߦ/P[!b-T豣17y~c!q ح'*=O/c1]ze6|D{8ufyBBƐq>80RIڜ3Nks.R}&wV1mPhuPMX(-p&IT1jq*_nILFE 8$/x0n@'Bc@ԁgb.~*⠖q|'2sIK(%?օwIj.0G V;mM=}VOdKjZUݕivUM y>*ηG̘>l_V;Ўc~g6;eXƺsOnSx#54sWF6c3ia9f,(˲m0P){S]egEǘ\Yw?щMĿT@/'5%ry!ThpNq" }+WyC ō,CD;1 rgn{? PTr|]@ttMp"fkSA f?(p5^тxՅ\K_=.D.hۄ}/M8QC$MLYG#⬮FNK2Q]eӒ5M(>&A=MRLcVOuyZI1F1|wt89,7'#I1zHa=n/i$_#hw.s˙Z lLi4Ü|ڱJZd|"k~=)'u~g F)9MR¼##yeDPbT?@_l/ [`cP 4lkӶh,cȚar&PͿ%xsYFmwIԻgIA>_*Eu'2ɲ~$3{!?q_r] zDCXvɒp1 ߥX}kғ8fbQz O(QAj5-c9$rՑ{i\1m.JHI=4tkS;XssKz[PԜV!HEQioB# AωQ}ӷIQړz ,X]DxagDDY(֫S:Y惂Ⱥ[WjrlEiSy?TruqUuvߜ gDf(+k,ʟ5Nf׸;Ời1L#gw-_OP2pG.+Ay8yD8|s8_+NXWˮ=Ec8ql0AAeGL7lQv8]`q7Nl 3rJ8 ѥ9[ٹ0di"8%3 ?Ϻợ.RD˴ZiՎQIp>zk]^#, oe2"C/ [ą+g3 w0Ԡ5:">oI:la wty!p6'ͤj#\5 i{#@Pi[q&8Ccќ5S6 rT{c \0YғV>o qOy=mV6舻\"tY“Ak͢[r b|ge-RsҲJNzԠ>')!^;1se~RB2?؟kȈJ[`wҽd9NlZj`6;j3` ~mf`/RڦT48gC"Tn9ϸd& yslnX8\g(\Ő" |΅3shҿm:"ԗ^RjeJ#鑢/2.-*H眩(SNZ=JTS}uOű!Q˽ZeP)ǐ툍yKwk>2B:`Jdԑ<rR2? ,>փQOLLJkA a>(0AH)`P poRto꽒BwPjCMʡ.֔G3Coλ0qr:"~zߔg#,nX09)Obvř祫6V|&x捏g[6 uKY$ Ba*TE&rWO\0vqk4jnar~Rg{ B 7V]| =);dF[Ju!6b(|`1(ѠMP"Rsҍ]3A#~7Iqe- Qo9 Sfp`xcaq{?gYq=$Nreʯ$K f7x{σGIDO&q1b`ՙ'@uVkktg |qxiOZ/?6ȱa\q~FzfPUD[PW7Jz&-gTJXXbO=m3K>6'VJ􅾍[×vKt_u0ͩG^ڟ0KWCXWC=3`5ZMBu.;9lSOfz$QёM?qjh"FSrJ ?J\K1!mz"mAJ"5jvt#zcV+D*Ga%4*+b.4?XԂs,q&K':Ӥ+u_l60@QT<,իK㮕5o7c|Xiyu.5o%,O#H𭎸n:ʑR4ݓ%k hyq W5;9RH{Y3 wtBw_7#iSOgQ¤ZHzg<]ȮHG]qD]Ɲ֨ V ZZsju 54.,uW*8cIGruN^GSg^0:厏`y^{f_&)BURu O7˫Aɹ_,^pN!`nVqc< 6# 8'6"R'rRNx0²,X^bkQRѬ)cG MDeU1:/8%e^$ag8a:kft/ߛ(0b;ym|0~͜vyɐ eIX~m Fr߂ ӄʟqmlx7KY\ ^` JU7ٶ\]zK,pWQI=UBlY`4 \4="TjN&+we ѱDϓ`){1cZB![NGJ6Gi82wmֈ Td9&ۖ9#Rmn_?N]Vz8 A"K> eր'!EaI4}&)+'Y+|^ڕI#ٖ"!JNdWT~1&q SWN]]y!{]O{9+HrM 颁z'‹1gr-_ m{\O2c{`, EXSâD0][<g}¶Rm(﹕Rо8y@ [5IЌzfXS]͘|-A&3 {%~wn5i]ټ hu%`]eyy||A${V;O + >d2p&h5?Y!.$s|CQ5DQUBf=3KRgba n?KuV%%pqcz\/Qr"W΍RIi疰Jͨq9:n c*qR &\b ՀB= ƙz5`Qv>~K⥂@HgP4DŽ6\HM S`&E%=i̥6K9SoxJ0¦a.]9["ljnQ9r; s_1=ȨT8K$+}*H>'F)е݈d}đdE]!V\WDe -#}dT= JGGQS(x LA2g{a&CDձ( / aS56R(X#C,a=McMNnK[CFBpMT.&Kbz9*+Ñ ]M5+RƔc( ПվVN:ۘL}Pڛxe2Hwql+RRwՉ'9⇿Z,O#s^C .k .pe gqvjf@Eyi/LM?C*Fʮlz֮8uUa\Hš'/3jq5~J"rId;TP  EvWn6v=ûOaqB)/|ծpZkB %.LjWy[ *OY݅†c}|m"z7ag2;>Fr<B 0{j6+{6oLyvp?ŗz"1זM9ira- T~?Xv 'N& ™5$r7'Bf]dor zPY {v vs2Cg$' )v^2D:EW\,1OU&Й*|?zxV#IG r1sˌzɳ$Y݋?1"Og i<.Tg*K U&#K7UGμbbA~tG7`"/ԁA[byKb#tQ j7>ϣ5@6ZMݣ/+^'Q_p壴~ȳO]h6N_ 3H'OaE^Aީ耚Ma 16i۩Bb,lAi8nP+ mM*vꛚjŋ Q!bZEɤM*T9bqUd#O&SY2GPtD㓟i &/E| %+`|>0ü_?&CLn`w?Rr ;+rm?|E1~tЎfk"Hp.RОATL)@ K)?Sl`ux,kl&ָWũ - m8N*HBJtnLJ6[4;;#}HV p k4;gǫ9&@ ]xfbD'rlq'ַF&XZ/E $nMRa^^; B cEK6cJbq*M)pq˜>mpAVq2rր?D^hkGczQV5XI;Tmpq3g_,;,N[njاŲ#BG#s8Q̇3 S#8bCȿLЬ\wnê ]@7?y ޼*@K1>Wİs'ʫF ie_&vJfL#򗗵|ݻ0cxVkQ,ry|[aңg/0 (RpQWۀod@!_t;ޘi0$Q`i 1&nL/6.#*(tI)k5{T+Y/L6ERs̬d@ `ng2%iu撄R#ы*hm*dW&x5 ;))Fwg^jmeī3%!溶vN~1y!ݻ15 2l/(zr%el`(鍱Ԫi0nUK Ӄ1K! ub3nγXMxED>l>G~h?9۞*;8>Rv&b;>_1k5_LK__KW xmAt04 u0JFnŌ%i b A昂Q$<a-F?fvE=HLu@:g<%b6j&}߲^QHWoKKi`,L8[TB ɭtJQ|EL^+9:לD֭_Z L  A߭rziįV!f`aׂȧrv'xn4g*@,>84AGN2cˡPYښ%@|fYm#M.hsY=p{jg=:p͓bgҼaj/,'HC__ 5òX>- ^WR$ ,6r3WZ`oʗKh(t+>vQ&N6 vK~F.x$0 jHb;I%:2* N@"d\v*ȿ1Zua[ŴE12E5j""sOI6o?Ih=-⎹ߴPY\6AVW84ƣ\ZL!/U hIg_ql4"~jty:2:rګ 2HrYC>\rqZ3PvN*8*R` ӰyoM;!ud!e ֆQIl9=~@weē6 *j+yo/1MuZi@aݷ'M|QjwdyA0e$a7-1uVs!*zm=T#1l/3m׈PiJii& U*Q)wlsͭqm[Dp--Sf1ڳd}-j8n`RT' cGm22 A1 nYcՌ-Օ8E.͇9nFDLP1VA5"u!oE/>[w+MUC3?&”1\SIa,`e)C߱`#*02Ky$zek5 ad>}z=>0BVX>ni{$3G& Z~8T];;Gy&),d-G=2i|ى̯n{bJnk^#QUL֣de^WHCYF{5,1ﱝ pr1^ nKMCOP]#/ vb9WH bz2Յ*0.؀8فxWMz%;ҙ\[0z~)OpX OB++DCM _|r$? ~'K@e~;& Oՠt޼H,sm{4uݴ==: lؿU fLxت^liL riQ}رrI&6-B/n: ë+y1̯6Tnk]4r9p s;1(n'|/l3urQaN#e y1::)%Z͂eG_' j+8 { `2<[E /qWʮZkXÍ䵪f{ݿ mЇKk)j ~5|Y>u%Ig> stream xڍP- -47k n%Hp \;3{EUֶs>4*,bf ){.PT9Y9Pih4P[_nT-3"/4>!9[ 8CwH-9{F le }.O9G8@67M 榶u{s0_)腬P66777VS;gV{'+fj P9\AL@NƊJа;W:[99e ȟd? ̀d߉?ML!`l (K)BݡSos)G)1Ulv::m;)XHف PgI@;ػA2, CX8iB. Yɿ(.|V (rͭ~p'rwX>[z9P'׿P@ 0Y!dv,/ g/gyYCl=qlZ 2ZLN7&.nbbppEiTLXY=n?%߹U #rvnvS,7oCR.lY.P^RA."b,y V#Y PCͭT˟~[f TZgI7K[^1n%?[/.Z1b}<wB}|6߮?,~^YpllNf+7lg?s9ϫfl zY3Syj6gw~^s?)-Oӟ݆Ǿ<_?^?d:7mo.Cuֈ͖v2ל7ۗH*V.>wZxKKt렩)9^qW1nR,Z`[h]^\uIt. OonWȣݗ`Ԍ0/1˘"D"3bcN}"eB9,[刺\FDMGH {hK|7Q`ƫ`gֽI< 9i.GZ%X-uh;p3If\c'Jeʯ8/@-ŗZ.-m^yLbZ5{:.\'5_7 lh~ Z?lqA 4 :M$y=iW-1p=]v1wYOyݩI[7l@'֤|"kη&9io?,Gө V&KNWY%K<ֹgz d;f* =ϧ920Mp%tB&8 T A:X0BSt}щgj8*os(>|Z}{)YɊ0U-!7#-EJ59v05-3EV2RjʍR;!L=ڻ^Uhdg$ m}P9IImlrr=?人7D&o.xь?}sWN^CGe`11yR}]{w0TZhyϥ!{s2?m.e.W 4+ܪ{mpbҲsE,]CѮ^<+ םNYDWp ?tY ڙ LC%ĥ3z,п PfJUۻOFx0 %F&報J0 "Javs%.%;d1+c!FwFHʛ<|sѫ5S,h9훒ѮwDo-Ji#ʗӣ| ?*6Ho"ąE=`kͱ>*os[[^0/\T?t;B$DM@. h_Ja TpіLTUfJ{^ m=[+N{m*c^&\ͧum}v] Svf4s&H]9+l:3lѨ cPW`*?)[ʰlCjAH!Q"$|Rj 4>}a&+mf3=:Ǧ_YoWLrdQeA[yB=Uʆ9̘tÒ>f)_Dlқ29 xk-E0sΉrщ6~#~RpT2Xw)_hb^TͮPy} `sx't򵎿mw?adE|R1$$YQ1u$3+1nFbWF+29 z-rji NPfU\3MvYe RJK]k%~򏲥hϘ7QDѸ[:85hpcʥ $z(_w*h,*9;uJmGF*~IduZV[$=\QZVH/6kE CR;G:PW#p ]aKSw5SK77=?Hۖ/x$Ke~ewHvyLeq¢zg7/Ab.b\yfn LhIPZ7e 2A&^|7w"luiT%ËxدNmpƏ&|..Ls"̾4_+WؓRǓI+G:w-_uXT \12HcS.gY?RAu%%]R Qb>wJ!UymRhJak;`_ݯ0 |S V/T'!$Hk/z[ jTʷq@_Ҙo㜜-W*3z!t&dN7J }zE-ӍHh9ܰKl=Ѷ'9Opݖz͞( p; Mm S&NVOUtSvnJަ_E>zhOnr^Nwr% b 'L(Z=8Z^D%/Upj.lD2y4_3>uDaey;+'0NnG9Do1pՀS4\3QXi4d p/sdVm_mvڪCJ5˸edC+9%2yY@|SB`Q$'A0^72Z{-iBV5vT,/|o_$mDIصmUu &.`h ϸ+8gDR'C7j% b#^V]z@poAETIo; WB1$M0^ =L;f'PBu =:0g\Ogud͠~-6;%ny^XP7CiLb^D%KOkwNbD\M8`}IXYIݭ,"y]󂷕dwisC$~+D3!}`R]NE]钩1A2~׆%0A~qK+Ĩ"h 26!6QY;DǦ++sF%Uv &VR ̧Vb,7N\c\IL;,ݠ.I*ߡTtG$|𹿬kh4B󛜡~,?En|S.R=r.p zsN?wuүGUg(kXpS|Âlakϣ`Lf ^6 &޶/\I+Ldm|WPlP8JE|[|"<`k?k}$8mckTc=HJkNJM7!uh㞜7?]״DMy^Q} tu19~ j|')ȴmYjoMMz[ k(zxc2kIZR 1߭+X1X._fغNH%] DG[!-ŠX,1̸ ͦE.O;qD4KLu7ݬ_8y'>ؼV(*m3&k\q᳞Nh~w:wF kr-!9bnmj<1[ivaF~H+߇fu#xnL?` Tmtcnh# lAB!/^Vھ+4.ҸwD0Nۗww"o"0-0I=^jw.}:#cZeB(sE(-VVæQ1.R)B8:K^2賺|zaU,:6sj>NO{~,s^SӲvgEElM6[BEfrޯV$妼u0}Ƌ$z4v, ^$%"QN_NPjd75!~2#%CLAiWHt`ȸLu^x'=g.RpCsATVƄakߺ1TZ 9N ZP4U.Z#98c4ơIFoP{.{:{u)LժYNٵuqDOqt NX4˥,>7?'F~8=UW< ɹv0˓{â~ZIGMOSP,ٮ#>`~9%#ׁ5]5V{-KFf%Ȉ ՌԀ7׻ xaAFJN坺BNIb$&l>,6XOAs̡ty.bay%- Ri.[CoO8fdTx *Ɏt7YS $oS=xoV`Vԭ, MGISz'ۤ"˘=>VKw+ŸeB'uzBry=(AE=NK`|ZuGc4lsDYFY L1JsaNLˇiP;yϣ!>Ar1 XR6È=;<}''h1͉Q=8᜿0_죤Px1Sp(ϸ,rn6Z>pMں4V{y OCnzWEeiU*$F:*VcUr|c$ƚ֟^4[/偧bf\1^әA;Ͷ):ss0x:egP3)Y$NLK-ar9;n;i$G #? ࣜv#ݒd TD4b y8Kk?n}[K m.S+_5;?s6!f܎ W~R#'|1@S&CpR.֠lP ҿ#ў"_&q6~M3 "kr\`Y& Py`Ĉnm K4x]Cv<.2Z)I:s2()uY6 +F J#Ϩ%ٲӛ >Rz/nrhL3;6½cfp\# _iFL$Yr{Yȥb R%t\Sph+=+_;K=kqޚ]16۱hǽ4HuJβ!E'E:'80SPTԅSl@1Tc 5BTMFb qT)lĊ[ɀwIa2NEƀ Q iL|_ƥ{k^{⽨"5䔭ae1aW8|3^xx72CZCjpKɿ|Z8|K;)(I'%#e_X-fƤYV6uEJXc]H+QTQ@.Kl':Z͵fH_: aX=I*TOgu[^Km߶o"t$mIA7'Kt%')kL/VGe~H:շ$N>:Q{RhPߦJ8]Y R$@7>UƨBy08~$O٫2B10JZЩݖ.Iy#ܟrEp[=gO>Ɲ&_d,8SP^8KBO$f_O/ ôamX4u'J[%1lJF|5^\\"l$=`X؆ҏ$-? e]9UL8{b]QTrK6I𰔪/\ RLϽZCɣX@] Ymʹ tN@?ᾒ %c# ,enEAb֚oR i_v*7Jy݃3Wu P,IHԓ\7 hN[p*ͫ\kpecf/b3{k߅FSi/yˉBi&Ry>QGzue˫V2=GTk-+83>ѵ|p{I+*v_aC(y.bkp'9tLPzIB'Ҵ njx f= '{eGN`4h9`~A?+H?*RF@GQ?t@ СD6YMIY3sGT_e #]&-"QCLe=*q]C/Sjj{WX|< <5PWh,>}gÑL+\8TUC`p4lTpKK!4Ph-fL Z]zO>fڎ鵹AQƯA Bܗ\'ؚcu5D?_#/;.+e^ l둎Uyxu I?ymӞu1kuBƘM5BΥVuu[5+ԁ7ӴC?LoW땚Nq{1aaZG:hEE6=\X9Zi,Y_Ff!B&JݴJC6RZ^edu%}xᒶȣQx29}!eʓt\^.&nHrZN-qY,㳴x⨤WnP&]pX3>_ o_Ua1l9lGlsCgÚyҥv7ƾO:@\u{ %沂$<"/ vgZxv_-> &Ym9Y }peҧCuGC%r"_xdL}mXi.leeԶCR3ۤp1F*/2VpUјj4&\7̹֫ Te O.]49C*4e.\CS[4P4tkR%Xw} + &^bø%ϐe[[Pe<1C8|߽- W 6`O0ʫգg]ifawىZq`gc BTX"g*nӧ0!uv[>Btdr֮аէ?EJ<*/h:,T !a4W47Ƌ dD/y7|} qv_#Wʿfz3u^Z(ŠH!v$RJ_fo`*6MpF)G OQܧbOor32EHR߆%6n2\)s)-7&c nwSm)ߞ {g}uRo$0^K_ d @Ejw2 8&v9樔o1bg?9f@16c^x %&fsw [\ 5~, m^00'Dڑ-아/ӛAAH2YZS9Ӂ+߲C3L[ ̦WT=Gc`a?7JjU}%;c%"eVzEѹ{D3UR'2rmReiv^ȍb(k4:|<ϧlEkVS:.wχ{8??n4+Ј}BF=V16 D]hImdN =Dzնswgg6(VĤL7qdTI0J0WLqcOb•Ӵ-4<3⊝OgKEC׵F \F.nCeV@tKw ȅ>Ѿˠ$X h[afU&~$7n5BH94Vipϔ_x.:{:9uq+J-@vz3!U("*Io5@dRcV!x6$8\C8KG x bß 2n֛"LԎl>lڅHl#lI^Y;"-nYJ+yjC[B3W{,箬Q?CD`l:;L>FlJN]-l (oe`v 0`UԱ|Q~=7TJrPTn2 ahn.jFDmz4tUqܠXTcH'؎QDkWC) Wݥ]0GG3Sv_?k9ŊiڃŞ?Xnh˰Xn }j̪xy+ab1PXF3e[w6 U$z>}7Nj{ }Y1}@Xk nr ӵozkSJ0*<1}\i詾f?jTC Mb64ZPo=,m bqjHnfEAY6> stream xڌPX-qwww wwwwwww N!@33wWWT5:49*P֙ *`bbe`bb#'Wp##::Ya 4t Avvk3+ ?v<1CW <@G.jghaf J?_TfnnN6@G cC[9jgltO*>sgg{FF777C';G3j:9@tt~5 P09@o#X[m@.&@G(9@UZhXo:?030_,lr64675ZXr tC[_Nv CWC kC#_$iىW€,nk"jgcuvU#4vƿ7kekf051Մ= PZ `gbbf@wcs_<)AxLAM},Lp^N@ O33`4$Awp0 ` zZ{6k¢"ꪴwNDEgagpsq8ٙ>dhOL]mM 9ԀRq]&v&c3r#(7$\RS m,=1qy;)ߦϬ<k A@1Z8IXM,&r_ddV331/d[n'#RA)mL~0vH,/fQ4a#3j`jk 8"'Q70FF'Q7b0JF,F߈(F|(oʧ/S@#P>O7b0F#P"nP-"VD_7H@ @\p=P Cq@FR#GCc+ 1Ê__m;(5+Kbc_$b4RG  ,@C'=qp*"kC?"7 A>_JyYA߅0 ? 6gao$:iM1F;2+(ѯK쏄:](C jglHu6P Y58]8^/t&=,v@#*8מAq3hR+d99m,X_6@?6ZcfU; `t6wAc4ppU5A@Px? hhE:?7#hqk_?t@w1겝1oecpza<7O 䇚^=.OH0)uفێ߄SP6ũֈ~zu4Äu&)w={OP;[}72S|&4LO&Fdx y R!w!IC/u?*cԣu rI Ҡ]#/[@˛y%I9a-a}\ܬVcq!&G9NU^8gz&PAɍ 6#$tTvTMq"4[Ն̶ gbū5g :v -h;sqHǪ:b[!3%G@uKFɜp Z 9Ԭj}8B3CjTu:x[WןJ |ҤN]Ccf.v,iC&%\=#(UQS>Qpx؛.#G`=@x@jFK隰AP#|}>=1E,BIƀr:Ż,6!E괗bZ!JtniNBCCJl9LE홏3&DNR1G =Z/K* e3XErC/1sr4c6z[7{|bI\2QYƔhwҷ9B;^!.T[,_cZp7}&{{F)TeVT1@ָxk=@H8=s,+kUC"Qk==)VznιmPCK)L~w|c1&A.WLoJ%cRQ[ʚvǚCt4AՑDHA :5Pd~K6j=3VoO]B굄m#\>i "+sܹIvÛ@oXONvDHR߽wK]"RTŵ˳[f&{JQ|ia2x :Z[=gkmC A#2\„N3cz's˷ w(z >4Z`w<^kNfnp*:ٵZp"ԷQh3v90o)SqfY7 hZj+>"sSל :@i O7_*ĝmg+n{(:RGkϦ:ys<)=L=-nНe=A <}1Ejbgp]8w"Vͣ J1{60G7qϦ _,l^cj^)q3Aʮ^ߜ4T)fd6u 蕡q-{PJ8/(^%-}1Tq$aBܣBs{%KvXje7шIz4R9ǜ%8$U#]BAS;j]DxFn;V㐾XMm؞ru7>3Wv{MY#*QѾ`bXԠs))+vѿZKj$1Y&=yVP>6v0RzRm࣏VAmɲF3O tjo@?"QSB-j) ͗4!~g1W| ^j!VB+ҝZ7~-9 C&^%?Ln>Ю&D#{vۢz9aR9W핽ƧX X;#8-dA#9ho}n'bœ`}z" ˩-'FbXrgE_pyr*Z:W o l#r NX:"_mAc7lˀIf.CAoJGZQ #R٠՝>%E?0bVN٣EٟevM;0HK l5FFZ 6Ho0JFuwSP'ZCf&3a:InT&ivvDe!v,H|] aҽzp=w5:d&bj(Cm;Iފ GnFN"0˙c-,fW?08Qv֧`Ӊ:n4qImN]3w&+ҿS2csrhz]#_sBQȻ[NNL,!%؂'*;ܗ*2fb[:jilt/q+R5BKoz]ig1-C.9i=# sZsnc& 0FOTA Kl?=KT\A_˫ķ#٫]Jo#wځy1_и)`{L9w[}mrh:=:I*.2C3%`OuJutGTj]8ϻ[XÅFfo\p;&X q76)TW8^܎D 8r T#"YG(pkv%?#hQH=]0e8T$ӾM4oLl4a?v5c|W ϲ1hl 9D:{ti?cg7g"ˬ\ 7Kl,or-?+Ͻe|UJԪK&I50]Y?"SˆVOVi4_ /0zwGĤL9[!sjZZ )g \?7_1̧ r:mC1N4fB+6V\jBqzAS#emU,)rUM}mLU> ؄ 1ѽq"htնVzEAD *kXC3="0}-w un戋!/wXGNEX72`}6xoza2uNpڋVɕȈt0CR},y uUڣFMhÉ~<lY#.fg|x|u/@[@^t(Z~F!┷~I:T'\ȅNS[yy6zh: ^/Oyf7ZJ*W3 kqs`Zh?;qb]0 s%;X!54ϟo[w>NUEKU,H_E³͌}TX׺zA{h΅)sGS>R>> |7h*1e(-p18fh;pѲDΊU3q×q6xe-pgN! y1JTJcp-)rs9a-Wl&TPG܃Q D,?r*!HRl! U>o =HG yFKt׎T'x, }8=_5O?h ]/Ԙ4))ةvG v*!ۊE8K?HqGs5$f{ _~|,1`ҡ qB _mj#{u'aZ 3=W0 XDKO bxGDؘEDhWGQ TO 0Al]KB[P9"K_uڻa ~FD$'\O'{Wܫh;rZ4 zέUrvImm0!^VC]hF#YGdj-sWK 8pճϠ^~췔uW M;%D;4/HsPa~p+Si\uܦmX B=̱#u-2c XJ5UtikLC#>= yxvڈF$?d|NWB+ h"GFK 2FxǓv'W&(Uxr*IeRZ`Ƨ^& zIҎTUzZ1 P'}3cTIڿALAH|œjdnL0>+P['{7:vҫVrTQG“B6S!>_J*?Sլ"+rI E{tqVǏd)rX`-~6Tkyf\`qn̚4a93`3SN:q!L$R)$[v1$4Qu{0/6UXjëJ: +d>0roPI"#RLw5o s^LZ:cⳋ{55SBaDM= 3%J-u dtJmT:wfg$ħF/xe|)F쯴F`{귃K:n6?OK{IWQ<:N6=0QTςހ{]/k~n7v y #M@SqT3_D"^:{.WdXyv>0W$}癇m!%d}]BYG5ŃWoj^j?yb/SgeUFA48=5AR}FXciW+R:`-ტ\ő=k1XXa3ZHrr#MX{ BZI e|Ӹ(8\e "%&^-9ç. z2N310Ϟ 9 EKbWtw'b d!)&2.hHn]t KUZ;)QCZo]Oa">uIOI%*Lit=_JvϏZ:'nvr14]t,&+آ=eY!0NAd]96 u}#g5@ݍοט$e޹ u`" wLN]b%FL'QrYTL/u l~(\;TtG-կ='4q|g$i>1L:ĝ+:Kڮ;cק  θZ%≯\ďm*6gʻ[m U:{7 gx79.p_0/ͥzS\=zg9G[a@"Kͺ-WZ9F^mLr#DZz|,|>SDpc@bkHHl?y`Bki.v ̧úR՗.R& XGS*0Wl*1{f8N؛$UւH1c~ xO゙K:vN']0ݛJ-u]#".-KDUB爟1O1~R8p7gTL)+ {]pC3alC7RM<(f=Pvx6SQ1ƈ19Gڋw&1 ]~+ a̓;y`Q!b dwgQ7tiq9臡O"ĂԸJ.O,6v7DQP+ࣂ2od-C=?O76h![vKLjG'!%[LtKu+^Lzn ѮUf4␠Ѹ nMGdR-Y DS!/W6>6"m-=u>M.pԉqVBz/iD2XQj(+.M~WpszȔl^|oIZ2^Ǟv/ 1m.|y_-Z SV QwV o^mnHgEV~}<:iu<׶e_zgcg z{Sw#\b(:w  &S79{md#ZPr6邆B8:͖,eE{8j. u ägci  |+M Rp vrk1eͬy5yO*ԄhLq/g'ihȗWx©;,;fA| ;v_UNr/yx&BJV]|GpU&4*SEj<9s!VOn齪b}q bpSQtd:$Njol< oTgӒGhTk_#l_)ʏ @! F4B-n|wȘeb}b˳ݓ'89ë-Bn46}l1TtBۉ㓇Si( _8X qzC0mnOCN9Ӻ08Q֧pKZ׈t*Q9O3Z^)?ԋ%+`DgxEDzpȑr9ֽ:--oX/DKEwj6׭Fhva%PĶpd1XnP4WkK-htOooqnN]([_7WP~~*%Qm9l~~r/m:R# vg8GysL%㘰ЙU\<Ą6JiMDUeGx+bThc2U@Qb˶ X3K\Xޣ ]gY .W2/^K6zLO|}eKv2kބ;q:uudԗEҩ[cȟGa_g Zt.ZtK|pVS~ZykY[tUr||FĽ臃@6-bZm9;Wp&&lJc Τs'H`=p&3GG+ 8m+mÊu)yP0cU|wJ6qu\X>_ 2ir09>;v+9j AAYzȮ'r'քv}rH N9r3>5y~m"Gږ$ayċd) [NkC`d3p"BPVP|k6F@bvlW Lrja|mh΅|Iѹ֮ RoRmŝ@O_-f~d' ǘc#h%# 8EhzxD`v@!c_Q*l'I.vZDt1>^⻑櫩^i衋 O!;;hhjP4~uq~v!ODWHFAˋ oKuֹRAd"7u7b!^((#7xw9%֋цEOɵpa~dPJ?H}6|[?P 3:TO#[Wk!&J?YIZ kľpb_sԥ2]Lq zYU!QpOr*h8Wz#EySG2"sTQgZqoy>7PZ"ޜshN0fd Ms|5gO^瑮f3ϭ+#INuƥP 88ּ¿V⿱CJ2 un;H:/Nmʽ~7o+BEVken Z\ )}ub>F*'|: :M;Zj^4.HT {vbE#bRQ僕| Oۃ]V ʾx?KK,+}*JxvXfӭ>'z ߔ:ǖ2[ ΢FH 8Nﶲ"ǐNϛ[|UoYËG )hky\XC['D!Nup>"K8 Q's lxZBC7KxmQl ct~|~ )٨QϕA/ e/YL6ͮm*n9%Jxd6Ax$/F.}K*' G]:5BZUQj?S;4 f!U`:Dx_~-R"%vqFz.ʋ鰢1q;,!1!1򍒟CEԌل`E'$z7J!y+-!-P+żGd$mt*]ZܩO{3Tm 1Zi!vՔ+󂑊l.qQn:(핉%UI hi#3.tLlEv6(^^Ga`ֻlSh^` e UO6ƹPLv ' V5n:̻!4/%1Wu:nVswdnݏYg`3 zO=Q*H )AGVz~k z_Y"RP6﹌Fn*)h\1ϗ +̐iAJs4i pGs-d5qrce=)cyUd\V1,G2v KD8Ic() >T$5>JkyFw=bӤ< ' X-4AvdI lE\z~@P`>4|;gӋO2vZc޴8}ƱajV #iA>2 C=w3.X JB^ĿmY3<.J7e(^sӟ#b`NvnKtI9!rJ et_y o+'{cTZzk {~O 2yМS; {~~QPnO>1LRw\RgL3?B%F$L]8"qQ\en6>XY՝ؤkyHuy'@S2. [3Id+"LLKCš}?<>i,'^CgƵn =z zkᄳv~iHLNSrp ;Ao?sߪl%~ 1Pwx%GcR: `c2 ϋ -HUP%ld!XlO91;o/u w$`}8XIoscbjЎ%_2ېܘnDr"n $;@>^:¬/o\VtpΓV9ү,3FJ+䱌a|Sʋk-z <^KR@ +2 \f{rUvTAw hD] !ZaC0o0h_s[c}h5Db|&t Y2j|}Ἶ"\)Ӧ2Z\+IvpDrO*9?c *"3jZ:&3e9FQ#&5S'HFWuuS칓EQ02UiXr;׶}љb!6<{sb&u2$tw"BKTg;&.zdR`մ9^M,w 4o;"N < tYЙm]^=pXgtheL8 MaM Sϥ-.NGpaB,4SUBuh]C݀@5]Hv'ó;!ȁuz)D,"ka=X;v (B2)dR3To+e3ܬ$\jLc ]Oꎽ=EVJT]NEЇ4Fє8Z{^iն hr-fxqx~ FþD]]Ә1!>`+’X1bc2umh >OJQŧZ`2hշRЂxϻ5Sql $KIR,W8ʨ7 2?G({gD Yسpg?~v4K ڲœ!zW=mETq֒SZ5LRS#: n/m[1%OO?r[p+5?i.\_I + *]>̚L\3Wl&G;M0TιNl4}J"Մ0< >Kij!ar$4L*6jv[X8h'l cUJyth$^a@$z5kk84R5HVKU]p, {8fěsb ET6"^S_N"{AQXU,;eNR_"dʥW0gХ]J)[ yeZ=~ϻ DmXRcqµBA5(L^#g¨gʀ]Te؈j+Ǧ)Y-/ꝛB Y)}>~#~+`1L"]]Sw.hE(Ji+DU]<3IH4+P`4vv&vvMh>w{_mR 'l6l*Q5]{߽eNljqYTkK"dTwiOUOs"'3w mM l BZ5{s]Ji'%em$j1<Q>׻JVˆypL :|R-29i;$G-[Uknp9[aYw#R(”s*ዯxRiJ&?5(D!x;ӥed6˜aPmjz˜wI}b Sy̪a`ɺ^ZZQ:(k"|sn_gL++i%VJ~.l!gUJ+gGdot {2(g73 4;FLגa]|)VÅv]v |_DWR<[xhкW;.juʏh]]Kcin[D8+TE n?`Dih˩TW7טFqB)5q jXuޠBم ET hC7gEf3LL]!zWkxRuKN2lϳK_JrWD ȦOcSh9teMY^-&fҬtU ߗ vǻ/V?J+.JSjZcEصHo)F(:PPNAPx#D(Q |wVzoObg!0\Sj޺Jɥf!؍g}.7g020Neυֻ!PB2 9q?M07^,P264͊<_u{UkqO>>~5ՋO[є4PgsrCuaN) HqDC;Ilx4LOܢӏ45)lM^ca~c=qKՓDf^3ž7rĜ% #`M‰_`_8 v֪ 8%P6 ,/Pxs(8iF=Skn5'rd;u~˛쒑8"I:;]!^b؇k5"&6c J:{АVN$1_kG?;pFēgC"E'Y.wrVW<ۊfR9C̔x ou.'c)\%+yŽ^Yđcg' ?v_%"753f̭poZos̹n5:ؙخyq=ZVƠwVJO!Bx2VY nQ/_w/"#á T/LC#+E-?MIW=:G̽5"UX)ٔ& B lG%O-_0]ꞇ 9Jd=:x9hT8Ց˚*Lei֩tֺ!d cQ$l?]yWsFv[%v̖7F3#U5(C%m([tSgUvoi93!t[)Nϡ_ !cLCSُ G;`$L;Ҵ+2.L[ҽIT {hI&'EA rEӪY; ?r~dÊd#+O"(*-7`;}r솏ƂL$ܵ{qX~bz.8}Ȝ?Jb ij gU9WTgBݨp؅5a訌6 G_=2! 6*p3@1|w7/3%N oiUgZtx"ǜ=ekX[̑Kv1=8aU|D ",1tjx !6#ƫ(Jm0>ǗM37*IyP 7 k\yXsߥ2YyxG?]r*[x<_t:-(NS5sAj ׄMPlPOe8Z M[z;^䪄=1]ew9K`dРgRwlǗ$Wt;Lٛ#yU0Ƥ楖5 kJ{ D0p;kܭϏnrUY?\X/-wVL(76*)Aܱ.끪93>%y.S SZHtQѦZ+P iMH5B׿UAӂnZKHcnYgyWi~EKUSn3iK=vQxo=!A8~B2v U2ᢵ%׍> k7 nkOmM^oV1bwBK@Ŭlܷ: Z~MH+n}v!{p[13Fkp!xvW`zmP4|G.TȈBC).䪎;}r= 3I8eyYgK`QY(д 7WAqYMC;g%v͹R7ZW?e Vg!uvy:pm$Zh:#Q׶|Wi7wwi|O6` FF.rs2fx-+Kvt0J#@9K^T0'\ UY'6.13ֈ* j.rL~U"ύnT rѡ2cZY)]*! ΔY5SPxQnLNq1ȝk)k6}&ΰ Tp|ۛ%QMgLs|LDDv$^Ӿ536ѪZiV ה" iEE7SЉ;$~ZiKyQ|?l%P!_S{Q=㢷0`|At!J tdL#%͓حVTNE/ BV:K+E?!~&fm]h|n.js#`7cހCdTPD\X)Pl.̻@}T_:w!ԛ4iJO Ջz~bY)o^yg+5{^?J%5r\vK+,):"vl$t~TB{b]H+ZQn{!S'."q\@ p4{ߟ-X%s:xxa}<9wR'(+8:$Sg OBr Y% F* c}VG%PIu,o &vI^͍.3TUW:'|Sg(j6&zF+Mr)N+\ N lDgT,>.j0F)X#76*rпak7x](ᑗC};XlRDx̠xz8hjӌ,x5wi}?U׷ݪ^&J7`[,' SvN5jͫ%J9޺u{E1i/VCFO'}^Æ4S w0`ϯx,> stream xڍP\-kpK=@#ݸw!8![9sUծǔ\kUMC"a 1B,)e >;;+;;' - #@hb6s}S n.  ;;]_gA; P.(4RG/g2[08$ 30@𲢅=@bz  +Zrh]@K*f:cEhـ\kB\=̜=vyp[/4@_J0+ǿMI688@`kPUbute-ٻ@^@f/*7J^= g wli^vYl)qp]]P~' rZl_'kxV &,ٴ '7!/&جvvv> aMm~zi P]܁Wg7?P88 W9Fh~9|g'E{Ͽ^e {'PTSe$%!o.. ';@-o53U'UlU.`ϟ`7 E@4nn?)$foMq9xѬ!/SP_3 9We$F,hrK,ٵ= T~*vL?.2` 9;y2@?!/)|Vg''`SmlF|6#vk`|u9r؜_]_99l^un2-. h8 i `Ia`^tnsGG%#hZP7 :->& S;-( x}$,Z>ON>o`Bw(8zy~ Q«X:cX4Kk9G@BĈ}1{u==L{U譿nJK'!5>)'oş1XG82"Q(wzmףh=am#7Hgd[ꐢwuBsn SEix QկQ_;' *ev\(j?ΓtᯗC?XS( ]-c%k7Y4gk !vCm̼b70Tߦڒ,c(t7o|2`%\yWd:e@{EoyO"!%.P:9S3M@S 3LZ n (D>/2 RCV룟u'{Ñj.{B_Z3O2ugpBhZƩ7}s+p`ZowԎh!.M~?DޕW_$>~Hq_dBxoBL53R Z#yV'̍s:F*O+J4<:*υ sNz sz3nҖ yG+L"NWL=rv+itȶWM\bMExPL$!VePuĉe*6򵜊\%jgs%㼱Jqu#P }_G`\݂͟lF3QnXe%d/-ae/j^G b7)B!f`[Q) )g!GFsq7D$Fv]YY|V\'H2vA,Ro8ĉeUEQQ/茪O?,- h40''v}_8أHGO{?x+ĕ "#ӂOM!M1*-Lxr[DRbG_ ]yB8G?b]%O͐k b@prܑNxe^r=dMX$#M AǦZUtjj\41cY״C{V3h 6a-|m!ln*%m`ml}JnR> Uڢ-IYɅe6 *{M9$Y@W;Bm͛5Z&Ls(}ɱC< :59OqϾF8w\[m~iםӌ*TKUꌋ4hQL[PMKztPZTNǞmlv"y(9ܥmAj[DDCs}*4@lhBN`/}&ˆ:`Q ) N9A=rU+˦BSiD|&":>XZKOD24!Xg [GxVfv"C IRG71lw Qa?R?bv2~1V((OjGD5Ӽ1.,ma^qMMƸnI`}d1 }`'7Il3 ^s,06SBH];\M;x?N 9"u"E llovG9j4}q?KT2Չt웯2׋GەKq Y Ya޾/3-F(u?W.FIi[*贚kLoDɻ1`JVHsfeU'=OAҙg9zIKK~@gC)3&zn}S6omfU1 h{UKm-᧤!~ӝz˄*oRE'*qirHv :FYvr JQ%O*bCtb& shwZBclt#@֌rx'ֳ :q@rlPf3gs/-婳 d"pS[M`ޙݴBK^^#snUUԾC$qM"Ф(GГʟNry=$S?<ˣbO>`]?1 <ç,(LϪ4)C}vc{5Kְ“,*+.a$D{Q4^ ŅIi(wV7_ ,+M&S涵h&1Tu5qm &5$%pZUhT;}"j&j9 6 $u!y!%tD,]7y6C^8 9bt\'RT"XS&c-H;< ׯmi\X[\#R]w\D.r?Ȩ"4GYo@q;ŹY$`W^s$fS+n 0z~Q< %Vu]U itprO+*۰NqVs_`T#4&֤ٛ/+rR9xI|_ٕ߆?DcaJu9Xa~t1 oM+ KP ~9; 6R0|=2ԫdCz[ z8Cy f˹(%uE( +!=qke[s6^Q:#[:fC+1` n>Gu;WJCGܯҝ&s_kcߦK-@?KM۴Kx[l0-tUˁ5?}o}; ݑMlļJ13=͕ ۺM5y}QCW7~#L{Ƶ N;G6u);&QRUwG"CN#,Xw#FP6HRʧۤszv/YңO>xt D&p 9 &"+O\vy?`.d6CwEHSqƍnndzu@JHvloayȚNMSSOdO9e $`޵N<~&Z'Du̚Dor$plXӮ[y5Z <3&⾖Y`-)H'ng .4Rpy7k+.O`Wna87aʄ% L}ү#. s^I)6sR*v&[鮔^!Vw[D89P =6,8 U8tRc2(ek'Z_ }9@SO0&tXvmlY.}<{prvc,|iMI]9Bz0lצB5鍷"fE2j! Q|s$qt<9fM,?J -XU:>EԲBE#or:iCG|Y#sJcW=V?'zWEmt'JT#t$ȱ= 7DQ  :ulf҉@1N j>e5w6⫥7YT-),ڈ"ԭhVM#'gŝ{z%܌^N{-L݆f6RH{nɈs/|+%Ơc/NO]Z:QV$SXKNAf=3Q"hLAs`~uJ~/5s jmxT~T'kYo|#VՉVwpl-ѹ ʓcj8Β*B~TH=E=rMdt脽=ًj\:zic{zC,ksmZklWuZ{=qS*:? vɷ><iY%gǵwUj^K2U߈Ƶt!!<Y`*B2 ݠ&woOo~f+Ξ:kpDh\1Vs(K<"r{gGfGn%xĶVbtU>5aTbY#>NL'%5=q66uw\Ԕ5߶]}cXQ%Ts=IAMBCҾ\AE^)ޅ`:[N7}>?9ģQB$NZ+dz`ŝE-Gܔ7$cQQLhQe*ԷK'^xܜvԽN-b,XZT̼oY$[ЌK6+T얉%];gK:` TBq&^;|*>uJ.twmv_'ȯs + Uv֍ZG - ۳rʉYaMޒ*?cd89 L^w>a_`eˮw>O2 v~&1t湑1CnI13 &ow\.fۀ7zXg/&]\ι[܌hFo0 0}+t>'~S%3cF]1efN<+VcJRYJcDV˭EaC@<X,EOʦ,?OjLQ=?o%ä()Q̘GhTp`e8Ăگ=No:KxQ'@XnO6yhy]Ŝ~u%j^C\hvUgxp3x- % [2GJz.mO'کt.9EK4$x>|%&qF4}ڥʧs [ 'dcA >ba3:Ug{ BxTz=@D^M4g= !Ó; m䊢Wĩu6(!X⦮Q!%x5 |f[|$ħ*Vj5*{5nP?kAwHQT;Rut4ZHG( q"-~d_8*V$yS-넦wC Awg8B*QF0ȂU*j#^SU#ܞPe"xRC-1wRu4 ]:k"fW+؜`n$u9ГR[g7LE`!T} W_7;(xK"VͨU5vGEgs%N3w4K1&2%H `&T?.aXHuN]xq|9אK;Cz1}9˂|h PrAa9\mAkJ=/DȢYyxע0{llZM rIςG<@*Q-^gvZT8꯬+FꁲSPyHybL\B<?l>{ SW*^9\%6[N_"$ċ.'-E3GrJ5z\8)4\tBRϽzõK'%Z4"{%eQWe]g&.;3ZJijx'D>(Qqڋ yQdL,!GC4k`.j;,6ϟmϰ& Bvy2t'ղ&f=kG-xEp5MP=o~),Q($j?V vࣷxpZ@q+O9_>FwICu8 `X?@72.<$k'$䕟CSH[֪ !/5,-l&qS_=g8VhMͬ@vbկ"%$Wau9)՞56O љ (+4 @bRĻ7aM ]]:ܢe0OBQ*b#ĵ2z>H,Ȧ)D053ɶ?,`@Lԍ;Zz> stream xڍxTSۺ5"wkҥޛH !@HRIo)Qt Ҥ+"Ͻ㽑1o~m9#FN(G e ňo;1 G!e c650 G!:^HI1 Po S;E:($M̭;`uA )ew'F;" p()`0>>>"`wY_ǸLh7 kdg4bn =@hl Vj =ȿz6+ݟ_`Fj`|1B0@`o0v~h( ̇x=0h4kF_i۬tREC4PvD {#`p5G{A`&ۜPFRR@}!. y@;3x<0 8 !@4(?\@'8p:ÑΎ5Ca >2 DEt,5T/  ,&@ $@JJ#V CdjO|g.P߿~(`@gWݑ?,s0X裰Z@7tNp/jcX5(#Gk}NFp /e77 5B0( |XAܰw4]PYW A9$ #ƞ5v%aUMf3`(O_ JD 7e^4 /̢ r#:딙}7G VVb%0{UnrVG]Pp+g(y\q:dcVr|TˇR=[>_u̘x=G\a{ T6^fW g*qm߿;XHV&_#$e69WGET"==gAjt@{WjMoP=G,9fDIZRb\sp:g~Gӱ~OϬp}`8wN٦#?Z~+A핲"ę7EVFzWbb7kZ+PZ z)F]/v酥;IzQAVk4wLO{z&.gl_Jkƃ綀Ғ>o *\6ΐwtPd,Gs~ 6h[A^[i84}3[ _M(c-岺|RUxSF=}In@ׯA`Mr^zױ/~53a&ERfMcbyj0Mw[~bOC\Zn;{Uߚӳ'M{ϗ3M+ ҍwQ;[Fv Y> ԥNCZn|3pIlCF ݱQ4COֵޯm [ϳq*eiGRY6My:<#4b^xҰ!0!M6G/dBk*Hǘm6H"L~ƥQᭆ@SdoDh_?>>DMQ;Q>;tr`!-U=[^|6L&Zdnm7CyUJ怔wF(Gpf IdzY ?x16=}f7'nȖRJ4im͎?l/LzZiaa.ӔP.q;4XY(KREreNTX?pV`T88( zr`H`:CK6U<ZZo0PIjPمr0:jPLYm16 ȶ=V"=8r"R3]($F{ؗiI2p{x|)yJnv<e]V: Օ;!{ha[>_SU;,ćc>cT2~hVٟo:oo8Vnv3 6epIZfGO>%S_˓xq8f:6GOm|̯ ~%9׈]9+5,yOr'N+0CNh­X6Y<ИԐְKbr83n'6MUwhlj#A_Wf4l(ˣLM\f, /M ^ޜh)+f!ޥ4;rHqdI>'‚|&P2}˸4:V/+0]%gwM#VRnόzFƨ]c-Lm~tXyp5(*|FZN ~L,=_(F ZX +q[b`;K'9'z?qY6VZ(»bK~eLJ6Y~|x썳0cqmdoE.a%gF^/C <~Tr5?=u-l!D0z.}W;.xY0uq{gºs*='+ P)K1*!#VR gh6뮱o ֠u}{ DfczI,byyNJrp:$W?3~g fxyڟ6LHN Oc}#KYNHȭM""f$ПR*{ KniVLE=m?`_S[16Yn K*Zpi )YL9 e޷ڵ0ؑ-+0 I жnO,*8 Z.Y4/=~̺tfÌYGeoVҒ ;5xM,N޻/4Q98IXD&cw]NƾHle%ml  :{( tT :C9< EȎF93P(c+%qab&3 yݘu8jT_i<,^fLӭfqPF.U"j;/z=Y'y*Y9UT\DU4 FЬizu'e6_y;| hO{9dw\$u更ƻ4F ua 5`F:+ED|bLeBZ:z x`=eXi AGfsBUk ]`\͢ᢵXraqqޫ?Z /j)U-3F>`G>I5ZN+q| Y.Ii|3ʔ)=j㷄?uxtތ5>+@wu*sy&HHB̝?dvZ{Vtwoց{1Ø-Wȃ^m=mT Vx>3lo< Ӈ\]'%q?x%S ~K/SNICu ׫ J&hC4+&@lM^F?~ )\{l"֋mM ykTW6 p|̌muFj* =j~nٮ;)X1eVVe^QYk '!}$0CQyHKٓUk-VGPjZ`@Od6#.Zj GLG~[i5zTNN 5u\4ڴkF/Onlݸ3wz6Z}dr ] ՟^WK?&k(GC͞"՚1eVԉ"Frf/txS'bܼJh|Q𓯍XuTz`GډgV/D6__wr6_0Ģ^h#zi:^iٲ-G&o`z"ɐDi4BĪHa|rC[cKV6D`jn8 sSu)Pe(fyVRTщ;bUk)].9msKz('%8EI-f/^t'ZAuC ,8~ۣ8<(ƛ_(hKYFXg`AyPdqdIi(\e֎j8s^9ō/}J8S3N4H-rS! َbE{lg![bL+aA2Ƣ}% А|WCSuM(]6lcKo\Vݙ<ħǰTٌG30T*O[!Ŕ6{Gcju\=ҷРJtQeUPL5c~VFr5~<4K\08dC;R`ME?r]z;P+PX {PGCr}#jKֻ q܅']L-R%0;/xcFTpJmDOĨc9tc&F86'9!ypADr43#{7 }s&*H hY)זWнRs!z7lwIU:LJYj,\!}0,OO}2K`9 ˩؜5~ /;#dLuϞ湙gjSGWZ>GVU)t _Er|laY#=6@vȕŽo xOղ4]&!4kY.qus&owng> %('陈>nmQ兗 bM^ęs:t#^&"ֲ3֙" \OILތ8!kEuFl]ѩ C-Ħ(Q4¡:AŲSL b- CשƖmO N&0&i9vUY\NߕߓJfj<=}+,^шMU|Jj F4l=7kkL$mV7cb`vij齁/oEHm9/Ǿgۛx j΂" I.K3O>*<^7oiᷓj:$T~IYD ^e~:;tLXqS:6@ \$1\{`a1zz N I]w5B|RIaJq4TC-vt4HpX.Z" V}K!^P0$6B6!;ED mi klE endstream endobj 68 0 obj << /Length1 1958 /Length2 13588 /Length3 0 /Length 14799 /Filter /FlateDecode >> stream xڍP Pܡhphq!8ݝ"Ŋkq)PŊ^̽$gIUMAv`gFf^*̊HEjlJdi#M&ff(gHX,,\Vff9Č\-Mri;0 J-hM,<<\mA&F`- @?!h-yl?,- '+Gy#[߭1"RT-,Rؙ99oKl ree _Ʋ#%Og#;[{#%`fi(H2:;8ٽYY@BX `98Z;;1:Y#a,6Od6wl2ц=M `fff w ?z؃T!~` d 8;|_04q-Doha~ 1lG̤")'wUع8 ,f63(Y]?@r] BXvoh!.3gD%HO=_?z#[K-ޘrvoVWdjb@gm1/;T/%Wcl, E;'?n7/f{[2[鍚@o;y&v,+'Q/4If#֣0! qA<&".f? qdAoQAoQLEs;Tb+]qy֚Dd9h[ӢvpF&[?7fB^zU!AK JNi^5[dWGNF~{̗{' rc]R{R u(O)aInZmI)ҭx EUM7pdJb)̖v?C>f솠T+E/,#&?'`,^ܡpD$T^j_8tr(SkF18DH? ֡>`K(ޭc@M#UqW!C3?q7;I*cuzқm0t':Fl?HC/UHd}@5:8oc?Pӆ'B7> 11:X) 70/'(jc5P8G γ1T;Oֿj J%/HQvC7~ ^E+Yhβ UeʄHiÍe) d,sb`d&qG6ӛ /e;m h~,R쒑.Y~ַ/rd?%V- <~ָϫf)LZTybRB +L0uSA(\'|\f|'v\ {ʉT8u;Fi:25} Y3<^zv 5=:T]]$ ?5@T[NnE^r 1O{;^R U N{֮e h/ }˒_AtK_3͑&'dq5 .| Ö7Gt j0 EmծVK2#yyZ;#sE,^AQ#?l9RγqU3aT->me*$B="/ţɕNZM?%Q;~'}@uEj*CӘZX8J| R̟>`;-0Y7Etv^=2k{ίyqX̬=\}}^UBI'zdz#~ew5,4FRMv,#{9޻g*ݍaw>?-BcGKȣv D4"ֿ^WcҼ?{Z4̈ DTODųjK#NPd8d;cTz!X9U Ɔ]V \nv皅HYV-zLvԞg:&ջ&(+<₪S"3 ,wN^4=3#?Y8mҽeH^Q(Bfn;>n=ކ~;ՎIWM/_Z'#$I<]{eħBPI)_KPxHqMxU-A.2F9Dct 6Ý|'CbRS.J~#3n*`~7CY[$kU( ؜|t{)P 5*  ]8R5}}Yƹ+;SG`Ih~='^G1֔G[ړ5Pa^79WAOxX:{aYKMւ'eT; cϗL AL2艃[AYJOqla=<]I3fGoj˽)W=rKYRYVgU~k\CvR$&~n {B+oRƞ-&/gLKLTJb8O @*[KAz}Ël;rm /}"B(Hw||P.{ ؝ڕDGE\CW7Ayq tyڠTDN8Dհ3LLGexnAAHOO R!8!{I\fҒNʔ~I@Hϊw6,lu=wfx`VrM}@ղL!s1WF A R XPC@+KH4r0cld(zd1~I78>Ly.utxvTA1|:;v|[{>H`ϩd#azq8'WC]Jy[E:_175]~m~>vQxD4iٽ F.yD(d"G0)GC,yak p^;gU|Φ(ȣO= Xp^kDd):[VDTcxb*[-ْ}%[H Sv6>pF|~Q9G*7dH#<+^3U U=> 'GWEĔU˖xh|cYITYN&.5D_)}W }) gt‚ ieUJX/LPKe-, Fi8rs/|9wM(=1wxMs!VCmSd3NFY8B(=O!rvjkN (w^z֯'1/@R=x`/=DxZOG_d19|#!j}zA3Lt$bF>ži7"`ݵ1@-Ktu#Dp©luAWն:N: F fAUYU }??# 5,)Jx"p߻ 0e7'@X V2(ľl?1>gUd7C'"lRK$ǂ#Bl`xn4I\ĞѸhFSM/Bv j2ƲA\ՅJ^4Oa&w0﷨\8'[)j.p \4BMZ տY(W2ڙ;Y~}h=vuoFaqPn{MV,Z rl]h%CLW?<@vN5zQfER ٔ@59y*'ATWCP㤖PX\ ݃O!0VtE߬o(sA룫zo-pcI Q}mrP5"ԯ818PgNj]Q>\t_p$/ѭ3#*nꞑ#k4fiŎ9QHtw~FJplEQ^~|VA9w|=v##\5UfN:AuQ,*WR3}QX4MU[ILX $\3,q[a#G _!- '(U{R]*7fGq]agnKܾ^`ƶ`͐g򔓛sú# }'>껶g^B j#j-u(ՑϯcYkZ̦kp+=40+RD?K()"}QX|ebai"?C2?pV~qn;cz2q NLjjj&":m gy筲}-e40p]_rbpzDXŇFgU+ 0?m%PV7[Mmef쇿|WД0NNpіz Ne:ґ\7|}j sp+c҉U("¯ _7L,<+y'Be3AjXuop)DtGyIdZ,(W!ռ<AfFh8'V,2reمF!‘;oytѼ%mhNjm`Ȅ=Q6'gziNmh8]1!,t(=g(#gE}{ 1֊P~->܀$[AYZž=cyvX #y9LPOU wkd$B DSbAzp셐&z"DNⓐlw/(uN,"E60aNo 7c;>6ꢋįn4P=B~L@\BMR^~<-P#gEhIXy1AZF-{<8f=2#NEBsdSq~m9QgbV^6x]⒡CH+PA׺xjej8/PZS‘n7!ʄ]L޽?[! x2"ȜD&HFs`ۋ>(H>m\?'}&$Z;̍c !isQ&4iY}ޗץ5apa{Z^t>oay&6zC^qcW!!%ظL KHenA~ kWOE#,b9Q30I\q'v^ -vnۮ^EuR uҠ hLu=A"7ͮVĦ fM&@*ZgY̓cbrgG'3}3 c'GV4ϸз!֬&Gv]@H I-5GG Yv:c\n@IHNX Y8K?g!m$q[֙cMɀVD+a+c-ʫ70qpZ)GHu&{S7}b-=%ŘY~aô58!t6l#@$(ئru_$ X{a>ꅦ~e3},qO!`@ؾpGoUq~b^I1_ÌB#~0\4pYtA6X ewkI1 UY c>y%QT:1\^7Wi$oW栕K9 QPrr5$G06tWG .Y}6R"XƋ IW2S<,g苢ܻ*qA~I'{~w?L\U!A. Ȳ`fxT[[-ZE cc|$m07y<)lQFKԻ.8}MF. ݝEG$ݥ?{َ%.7'×<{*vd2;M2l"'ӏEG;c>u3Ewq*^= =`_Ac֟ /"} ba7FWB~eO%nzz#Bo|岯T"D`gq}D-C&D:>+s uGW+"cӔ^HtAx$`9Z}{cI*g6kھ4&&knfڰ^$u>V%!Yҿm5 \6Sqn@NXX]gd"GR^%>VG=Ȧ8hC%-$Xe߆Cqڂ]WU`g ks8!=iM'qZ;^*_9an_ jNr :Vc> ~pՐ4@lH=x)] &#zq{3 bmTIQp1 $JHs&%犖zwujb2ӝE s.dRD^ygsdTaRBCD'{_vNɿA1wz48Ibl%WI`?Yoo9M(1 zbHV-~ؔ~L<8Av^Tb톡ĚJD"Kw$Xy6 ʯ; b%J9-}G8`?4OBg +Wy&cxE7f@=E?Z~M NvvplxA^'a-Nj5OIBo_[u v}O"KI;${),?ivbV؝9B Z uhXO!jI 6.r}aj9_{3tFh0v :&GN:5fc/X{ jIgEȤgv, -ԄY1'5lс 2i2d![)z_=,3W)-̀9ffRQUrR\!O_zD?5ۇ7֓S $K) \`\wӒI J $&ӲxFTF#1YLiҚDXVOWzDp\T[20$/چ5>ʥZ@%gfg G͸W('te4)MǑ5kSͳk9krVJNj]zY}Dw~< osPJ /(|[\[_Wh(89 tmXY 8sOYdwp:<;FraP #^=^Qd!#B`[7y\~ Uy%cG g[+5=Iغv*(G/+J|Wl Q@~40C!ͦGa2#3BF;&%z@sߓ |-{p5(ljx9cu3VSY[Т"PvLXBY; 0~Y`Q>!蠊FZIpS$=&9QL ǔB3 M' &OAf>ގi߫q7SU J򿋌XH̪Ip4)^Qf^*Llz (Ǹ~ןiDV=Lswe(ק.0r>}zo)tmf3nJ`j "!-tĠM$] eH̽N'Ӏ<Vr'P<[P.>3$[s;RandIiaTt~oѰ},=oX$2GԸhkQqI&d4&y_GjA—'87ڋT#gzTÍތ^jׇm~iic;)YCt4Z۲(+LQ{d<8:}XZa~.q-(9+bio9,aHX[cc6q<%Qij7lSnEe+ SAcw3 }׊ucT3j1mz;ę8nn@ʆ f뱥_LG΃ jgtů1?B+?+Maz.Mc 4]r+wxbT``ġX8)DԴ4Cg=v)gɌ8]d=xz,߁+3*+Br +'dN2EF1dVMid(zۜ;ea?;` d`\ +]Xa u#c!DGweP 6Iiέ_ 1$z4_f! Jԛ;O~v"I<ğPWy͆ 0q9ɥM3PR}gFmh (~2(%D+x)Oͧ4F?&|JSh j٢w:i4œAwqRDUrCGˆ߭ōD o)u,4SZ1NK|M$U͈+',)96* [Yb`Ud#|O'F;b*ǸU [&tQ?]̂ʃBrH7$D^2'ÄIbuA߅-i>+OF,H\sbx endstream endobj 70 0 obj << /Length1 2403 /Length2 9474 /Length3 0 /Length 10877 /Filter /FlateDecode >> stream xڍTSJK@Z;c hnnASBZ%D$y^9{?A׀KfVA\|ܼ-CC>~/7//?3! H($M@ jugOXOD+?A8@ hqaP0Yw@ # K vPvAz0 6IUˋ熹Ks >v~ I`0!` p@zit\п5S7߿mK\\P`qt5Nj[ !@3)W@ w+ 8Αd 00" B݇:Aa^P!;w^C. y=ȑF=*AA0K/$ }px/$Cn-!pCa ]"ߤ(G_$ QC|;ӺCb x _$CHI  Ȗ@NwPmRr;wTd6H2ywt dlͿg<@Ka$|73<9]LopԱ8 "Jj#l"w"DzBY߃zGw.6/ O#.F i~A\Am 2W%1#s s!6w%wH?͇β28qCu"< 2Cd<x^ ?R4DHK`]€<ܑD _o: | I:ք^Txq Gb)Qyn(H<(sxɔr?#FK]=;UNqb]FG֞ITvt$KSŏrCLֆ=n<ѸLJQQ<6 jOjLc?3VrBejfHou SkX׺(%?&3;~9-"ۤ=t^Cx9ޘ=&IM)_/W|JS/J)ITgf`進SapwSM;)赈Ρ-lh3N>cn;푇 D 9+UY4csnn掯I*xTLo;?Y& \ s/eT4wUO>nft;JSoreڔa{D;Cw:.[C9GD)Tq3E;׺~N㡯_ ɣ$uۇGޟIh7Nי$zg P`8-``)Jr@eĜ y*7]$ 93 Z) uw a`:8@yˊTy{ KnS=m';, ŹR W^ dnxWhFT-lt4Mi1*8^pX[+gt;M>2P@@_H2Ӹ_`mK3:T3vY5_]["upT&L6DVe~zpES"*FmngHFPq|p<1qa7<=ܵ,fty}veSog;`b?P W4x`ݘy`ptNf-ُ6JswZO]bbo4 .\dR~39Ya[~`oyYm8 䢗[O#~nN{& O[;M%taXLg<%n"?4xTFp%A{hN(-T0̽MH|څ*sJqP.W.^bS!P 㔬ďX^>gU D_Q3Ŝ*kɁ6/{U__Cc)RJ~􅊯Eιd2(Aݣl# ( qQLTܡк⭝}N.J@Tš*jjÑ-O#h.3$Dwm~ro~klSPz·G[o ɦ@гC2V[YӞ줰4PMq*o`ȶtCcOqsuV@rT/}sm ^^J\S^XN䣧H`JZˍV9/ra[}>Έ O4 kh~k@CgOI]@;RHHBY.@DS &$&[4Dq;vPSg嶨gy}n~.s>DB)3f! RIMpE]|6QX4ff1lOT3@|E^ N o2u\ɰ6HDc}tjPt"6(~{`|}dlZmFZ9CRCmw,\+yK'V%x388=8&'-gP621澸O E}0)RuIžbDw`+ho\ruGV\.i3F o}gjv=DIa v-igAM 1l/|#'`c *XT az1ԺTio:S7hf]1wg=BDܡdpa7__${z [BT1|axW-=mRmlJn$lӝt8|Rܼ_l#Ebgweċ*vh%/heWS zrK\;o@e5Q7!P@EתWM;jN\ak '۩]drvl/vz27.->%vՍL?uh^`IBqJۤTSɌxTodD"yڄZЈ}EFaB/"( VZЍeÚ1EDE[ו t𘈗wH%!hb,b|vȳ0$&bfe-7I]41'?gޓ~R]gF[S|d67DN5&MYs҅qĻT,.;n%K 4_MɥՋ7l!SԊs)p>\h?t`hMc kFGб/#ijE^Rn3JT.x9WIP `~y+/> (Ia&åW#1@'B랱 p]SXr2m2&1Aw `?8}^g_Ru$A@P5Dܩ}hws- ! -Ο:Ҽ^̶5+'"<`'}+XÍszlFt%nւ'˧V?͌y8GDX9u`e51LĐV %ҭ1Z]( #NEJ~KЀnr h$p,{5q%YD\@5X-dByZ:߼I ƞ5E'{-o1Aaj*$W0,A3( A;Bn#͂;hQi'\_xKFtcL0ٚbkw?^]x_F>쫤}.*G;JW;1u4*dS@/K*:F^9/Ev_K#7&%/G΅/V5WoCg(t{RvԺMTXBHS8 y`z"Hh;)0u2 h֤<~K"K.g~3H:^㰲l WJ6(n5sʞ˱go'>ͺ;D:$f@.Rv)Wu D0AVCAkgܱ}"ofw]FFQ*Ag(U`wc =@$M*}(@uIV?O=Džz6/nh+ELqmtY|wtT w)- ӆW-k?_a2mj:̓J3M cwlMdgg.P)'eNwA[{W,m r/UMy.KXTϺ/.p1F|$ɷb-!թ}wuLexM߉\w/"嶜Fp4N[3OSִ롆Q (6+~b%O_??˺1XR1UrߩU&ܜ>c1uHo`t X#05I]k)m4ǚmBLA1Dt&!oaXn}( 2g)өóL$ܵI?RRbJ-C}a67וwLAiۂ٦JO32SNc}?QLM |vfLT燽%ɘс;8$ `HmuUedl& !ۖ⓳Jű{[Wo,K5+VЧ.ս-:7I=!)M_I<#<Ngui5n(&y\ɛq[y_{_*eݿ2|7,>--Q3_[+ h![ Uu%a8v,#mb!5I -l),6Q6FRTd~x$&*UG9җ QF3T+U~5 玮ww֧'h˻9Xfv@yI;GSHWL4PuF+-dD \.Qci/E ê`lnu~PMޙOνjN0,gs0sz׵oz ۬HD>V=vYtCV?2UMzxeFckeS5Xi1X -# A-ڵ2GֶG\JM]ɇ%?~/ kd`G|Կ:N*(- ^Ecin:|~%(>㣺#P:;' $}1 ^IU _\ܰxManK <9K-t$z].Ihdu/^$i}0u6.CX&}E6vH]. "?>ɉyޯ{fѶs͍ehe`SB\GC ({ruF/;:Fk9wLdf TP%1P)뻸 z^F^C{4^%`Na/rZMT\Xk`gJgAz+G-:bji]KכͶi^f_⍱VT:NI/!0%>) z?4$Z?Ӷشܖ+jc~^3 1YPkd31i`ǸDFub$xjQ╟`RyRA<ů`="1AeS8Jt\r ȶ 0ŭG<Z8f"yܤ*Jͼ2aY8By/PF*MԩuKLX;Đ~/FrP Ff06Tx"5dupDcM眱!׼O}.pg,c*#3֌=>ÊFno"ݣU_',l? W.: g`YRN5K^gw<0PJqPРGnJ4|T9ű֙{TaC 8K PXI/G*Mrgk%Ll6xHOEAQNOصՌ _ޜkW?*߆<N"C; a~}T񄓬7jyMҕݕkqOAᖍI͠Gt|XZ:KL.?^"fд? |wZ#ZԿÌuLxkPmЫUWh:yҐ1G=Lby1It?X[A&RK= Op;X0"kPw "֧;F3I\?Kpϔ0a?hL;;qhO^|Ϭ Op7<<-\d&-8a16c RZ3$T{TK-%"o>n yX95D}%!碱d2D?QyLK=rg&2VT!2OƋ}8K7v&M}5}e?*q.; va-6r7oD]pQcg4vh򜺏YC/dzqaMNoY .Nʣ,gm?IyhR)NnV|5eIZHq<}7xOz``kh-m.o֠,Г+Aopi-Xp7[kL4|[91I1xY2j)D!Xm0Ŧ#@9OoAD'qrjg*E,|o1 Aƍk2u(hlQD]Pg7lQZc{>+\=I=gXe:p0ԉ iKq}ݭRxEN'_]xC]g;(JVb?ɛ(;.@&p"ĀAVrR ~;|1Cs{HGGǚD3yd/%*IxfU0'&Ekɳ1eJtj!^%kֆ/ҰY8 l']*bDeqEۖ՞ }x~[LL%1{eF/qt;h2iw-+/ڢIf?ws51%gspnuuKrYdMB)bN,d]A%bc!H(!6OX Dc8M WJQ/hgt|}lZ6bBd<|:m'_Nm!.Jk!!rL_Rh Ccɨo˘sj&1zhFOI«Gxe!-+Q|l p_w{h$~_j'N']$ BE,sl*Z8PiH%W*1M.&Wmk6| G5$C>)cn[>&<&A%e-{>2.EYfx3婫n+|=>e{r]?il ;+jvDDfxKT 5, z#p \RA =nB쬒d-#3@hyf?yP9g7R %2n<^ݦIys$^tqnƘʫ& UǍsø ί~#tDZiU/3Ux+V $ o vԼ?h+'߆*"К㱥j!{jg̾o'<6 endstream endobj 74 0 obj << /Producer (pdfTeX-1.40.19) /Creator (TeX) /CreationDate (D:20180730113009+02'00') /ModDate (D:20180730113009+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) kpathsea version 6.3.1/dev) >> endobj 9 0 obj << /Type /ObjStm /N 52 /First 395 /Length 1834 /Filter /FlateDecode >> stream xY[O[9~ϯ*JWU-!K#-IߌqrBJԇ=oc*h2)*cY( e_%W֪Dq`ʄڂ iMh"R``i~UP1>:E+1 3;0朲b<q؜^'Fr6h5*R@y)U ##s ꘀc6~;mFo&hbu1W9z;/_O0x=8/Q3=@ z=vw:0h[!dBb:2zsuy~8]S ||FGup-t~O |<<C0{"8XX<zã!?d{bzcoW9d~!`fD:Iv{ȵ;Jӽg~rġ yȪ=V&Ƿy=yEZc7Q?ɸ!^.Y#:[q=)ieVd2.oGe$ʴM!+a%BK{V]Jx:?}[\^ğ/dc<HvIXo㎲7?;JȐܟ|{6]|ZG0o0byvTp1F /_ 2>շ_={ o;.;VMVC L=m?;Ҏ'i)= r*{/߼8qr*I˷F7 T#5r /T/Gd̤1|&%Ŏ)";Ƶޘ çϟ%ڕkBh#hz|X>([%vk7Th~{!]x2ʧ>(_&tfWɕbWeY<}\|Bxܪ`}P6M^ۨ|S/n|;Ľլc^m:q{Ś \d{wžrB7;__c 8kg>:yi/?wsu*]~Z#A#gw]PC8AW<:qK7jR+[j>M7{4'./D "͵G endstream endobj 75 0 obj << /Type /XRef /Index [0 76] /Size 76 /W [1 3 1] /Root 73 0 R /Info 74 0 R /ID [<77567DC56CC61CB4A0BAFDD86B34A2E1> <77567DC56CC61CB4A0BAFDD86B34A2E1>] /Length 218 /Filter /FlateDecode >> stream xMJ`3Բ24 !"q宥[u wuw 3@: q"├\)E| n8[""6o[b 1%H8-%Dӹ#3#DݙYf,BFw+7';GSwg`@4 g_{w`Dw 7 7 S _ k w7   7  !P H ( !!!!+w!7`0w7!C!s!!!7!"w`wGW7"'";"O"["g"s""""""""{""7"w`@-@'J\T@@'N\T$@ 0@'J\T$ (#'R\T $ (@!@8d(@!@B@!@E@@!@G@!@K= @!@ObZ@!@Sׄ@!@W@a@'V\T@'J\T$@ (@'Z\T$@d(@'Z\T$@@'Z\T$@@@'Z\T$@@'Z\T$@= @'Z\T$@bZ@'Z\T$@ׄ@'Z\T$'N'^'b\Xw7#$$/$;$G $S$_$kw`@@@# G7$w$$$$ (   AePG$$w%`(4ww7%%c%w%%w%%%G% %G%%7%&7& 8AULQIAd%0QLG)#);)C)Ow`)[d(P'f@'j\T @'n@(L X0@@'r@(L" Xw [G7)g))))G) [$))***+ (%I@Q8587*7*O*[*gw`'v\X [****G*g ** #*+7++k(+w+7+w`'z (,,,,+,7,C,O#,s,7,,,,,wg`0 8\X/ ~7--K7-W-7-7--7-wP@( 8@L$X@( 8@L$X@( 8@L$X@(! 8'@(L X@( 8@L$X. '2\X/6:>BF @ѹɔɔɼȁ٤͝w.Kw.Ww.cw.ow.{w.w`P7.!s...,O { ..7.///'/37/?w`(@@@'̂\T(@(@@( @  @ (@@  @@@'̂'̆\TT \X,O 00'70;000w$`0 '\X070 C1+171C1O1s11111#w01`0'̊\T0'̊\T w711222'wp`@@@ @@ @'̎\T@'̎\T@ @@1 @@@C 8\XPP/ ̒w`Pw2_272222223 33#3/{3;3Gw"73S3g3{33233wl`3'R\T"@'J\T@"@'̖\T" 'J\X'̚\Xw2_3 G3,OG444/w4Cw4Ow4[w<`@'̞\T@'̢\T '̦'̪\Xw744g4441O5555'w(`@5/@ '\X5G75S5g555 0   Q4= G5kwP`@P@(@\T@@)@ P@(@\T@+$) Pww%w756K6_6k6w76w666 %I<9%76g6wd(P@'̮'̪\T@@8'̲@(L4 X@'̎\T(@P@'̶@'̺@(L% X/ ̾w`7[P'\T'\T(7(7P3P7P7P7P7P7P7P7P7P7P7 @9999999999999'\T8'R\T88'R\T8GP'\T.(''@h'\T@h@.(''@h'\T@h@p8A'\T8'R\T@@(P9998@9'\T'\T8'R\T 8'R\TPP@@p8A@@\T @'\T! @'\XP'\T#$@'\T$ $Y$0HQM$G>>>>w<)[d(P@0@@5@@'r@(LC Xw)7? @k@@@ = A<@ [*$@7@G@@Aw `@4$7AgA'A3A?AK AoA{AAAAAAwA (!  H9U<P AB ,BB#B/w\`@B;@'̎\T@((@''̪\T@@@# 8\X/ B[BBBwT`B'R\T@BB'\T''zC+C7 CCCO [$C[7CgCCCCCCCCwww(`@@@! (@$)w,7DD/23D;DGDSw D_ w<d(P@P \X@P8@(L X/ w4`@(@)@ @@(8\T$)$/ .w`w(`@@8\T@" 8\X/ .w0`@@'\T@@+$ @ѹɔɔɼȁ٤͝7D7D7DE 7EEG7ESE{7EFw`(7F+F?FSF_Fkw Fw w F w`w / 7FGFFFwg`@@@0@!$ @@" G '2\X(@((@@(@ @"@@'\T@@''̆\T\T,OGCGO/Gc,OGGG7GwH[wd`(@@@'̂\T(@@ (@ 2 @ ( 1 ww07HgII PwD`@@@! (@ I'2\X(@$)CJ7JCJOJ[ JgJs,Og(JJJJGJ#Jw,J`0@0'\T44$J7JJKKK'AK K3K?wKS K_KkKw7Kw `'̶'\Xw7"'KKKKKKK{KL LL+L7LC2LOL[w`PLg3{7LLLLLLMMGMwM;w MG7MS ,%I@Q8Ha$7MwGMwGM7N7N37Now [ NNNNw<`(@@P9@P@P9 '\X7NNOOO+w O7OCGOO $0Oww`6O7OOOO $D   AeP<MQw|d(P@@@'#@( ' @( '@( ' @( ''@(L# Xww6_7PSPPPPw`'LP7PwPPQw`@4$7QQGQSQ_QkwQw2_*:`wQwQ 4p<ͤٔձфwQGQGQGQGQGQGRGRGR/GR?GROGR_GRowRGR (PѕHЀЀٔ 4pѕHЀՈɕRRRRw`8'\XGRwRGSw`. X(''@h'\T@h'\T@8@9'\T(8'R\Tt(@@!>'̶'J\T(@$P '̶'J\T'̶'"\T7'R\T7'R'̆\T\T7'R\T7'R'̆\T\T7'R\T7'R'̆\T\T'\TS?'R\T'&SGA'*S?@9'\T'.'2\T@'\T$'.'6\T':@\'.'>\TSP'\T'̶'"\T'B\T#8'R\TTOP'\T8\T# '̶'J\TP8'\T#@7'R'̆\T\T'\TS?'R\T@pTA'FS?@9'\T@T'R\T@@'J\T @'\T$7'R\T7'R'̆\T\T7'R\T7'R'̆\T\T@7'R'̆\T\T'\TS?'R\T'N'FS?@9'\TT'R\T@'R\T@'\T$7'R\T7'R'̆\T\T7'R\T7'R'̆\T\T@7'R'̆\T\T'\TS?'R\T'&U'A'FS?@9'\T'̶@'N\T@'\T '̶'J\T $@'\T 8\Xw8{U[wUg (Y$ H9U<PGUsUUUw`U`@lP(@0@=@(@@@@(@$ @@(@)@D )0@'V\T@@0@ U'2\X@@@(@@)@T )('@@ 0@ @'Z\T@@h @@h'@@lP@ @h7@l( @lP'l @l @'h'^( @h0 @P @h@@@+0@ @4$  w7V?GVwVVVVw [V$w`07VgW'W3w `07W?X[XgXsXXXX7Xw [YY#Y/Y;gYOgY[Yg 7YsYY7YYYY7Y 70ZoZ{ w Z ZZ,Os(ZZGZ 8|սٔհѥ ,\ ɔѤ͹wZ ZZ[#[+[7[C[O[[w,`@P@1 (@@@ ,OC[g[{7[[[[[AK[[[\\w,`@@@'b\T" 8\X/ f7\3g\\7\w]w]w4d(P@'j'n@(L Xw`w4`@(@)@ @@(8\T$)$/ Fw0`@@8\T@8\T@2 8\X/ Fw(`@@8\T@" 8\X/ Fw`@@'r\T@@(@@)@ @@(@+$) 'v@'j\T @@'z\T 8\X$^s'~\X/ Fw`w7^g^^^7^7^wX`@l@l@@!@@(@!$@@@# _ '2\X&7_cGO_w__ 8|$ѹLս͑7_ww_w __7` wAK`wwg`@@@0@!$  `+'2\X(((@(@@'\T(@ @(@ (@ (@ (@'͂  7`kwl`@'̎\T@'͆'̪\T(@@@h(@@!@@'̂\T@@'̂'̆\T\T(@$(@@!1 @@'͊\T@ @'͎\T((@ @( ?( (@ @@  (@ @@(@ $$+@(  @@'͒\T@(@)(@@ @'͊'̆\T\T' '(@ `7` 88ф=0Q I!Q873S````aa aa#a/1Oa;aGGaSGak  I  #aawa`Da7aaaab 7bw7b+bbbbccw `  'J\Xw7"'cc/c;cGLcSc_ckcw2ccw7cdddLdddw`(@>$w7ddeee [e'e3e?eKe_ 0%I@Q8 MA7ek7ewH`@@'J'͖'b\T'J'͚'b\XwT`'\T@@@ )@fg@fP'\T'\T7f7gw,`(( (@!0(7(@ w<`@@@@>@'V\T@'J\T1 w,d(P(PL@@@3 g[gggog{gggwgw `@((w7ghh/h;hG1OhS (TMPP8QL=0Q Y$h_ hghsw`Oh7hhhwwwwww@`@P@@)@'͞\T@@(@\T" wwP7hiii'i3w(`'͢ L'ͦ LP7kwkklw(`@0l@ '\XlClglsl{lll7lm7n 7n7n 0%I@Q890!Q ,%I@Q8Y01           7o/ , TY01oooooo $@MHIP P9I0L7o $@ATU 0Y0w2_pCGpOw4`po'ͪ'\T'N\Xppp*;wpwpw Pѥ<ɕэ٤Ѹwq  8PѥЀم<ͤw8`8q'ͪ'\T'N\XqKqWGqcwqqwwqw4`q'ͪ'\T'N\X7q7r3 4AeP@M%0PGrgrrrwr dɅXɅ4=!P٤Ʉ rw8r`0@'ͮ\T 0@" 'Ͳ\XP7rtttttttt7u wh`@@@'r'Ͷ'b\T'&u''̪\T@'ͺ\T4 7u/u_@Vw `3'R\T@';\TPluu'R\T=u@ u'̚\X0'̎\T(@@!\@'J\T@0'͊\T@'J\T(@$P|@'J\T@|0'̖\T| 'J\X0'̚\X7ucuuuwuuvvvwh`@''\T@$)@''̪\T@'''̆\T \Xv_vkvwvvwvv7vGvvvwD`@'̎\T@''̪\T@@8\T / Awwwp`@'\T@%t(@@!@@@'͊\T@@'͊'̆\T\T(@$P! 23K3w/w;7wG1OxxB[(xx' (TI=\eH= QT9= QLMQ87x3Gxg xwxxxGxxx+ xxxxyywyww `@(@ '\Xw7y?z?zSz_zkGzw,Ozzzzzzwzw`(@@$)@$()@$()@$()@$()@$()@$()@$(@($)z{ {{#w`(@(@(@@P2@( @((@ P9$@((@ ((@(  P99$@A @((@ ((@(  ((@(  P999$@@))+(@@" 7{/{s7{{ {{{{w{{w ͥw{w `@@B '̚\X7{|/|C|O|[w`@@" w`& X =0QXHᕐMռѤͤw`$7|g23|||wX`@l@l@@!@@(@!$@@@# |'2\Xt}7}C}OwX`07}[ 8|$ѹLս͑ }ow,`@@'̂'\T \Xw}w}w`Aw}7}} w}}G}}~1O~~#~/~;,O~G~S QL H ( =0Q H ~_+~gwa`4gJ1~s7~~~~wg`0w`((@(@''\T\T(@''\T\T(@@@@b  @@6@@6 (@$P~~~fC~2_ ~~#k3~w c/7"' +72CO[o{Lw`@@'^@'j\T@'\T@@'\T2 '\X'@'j\T#@'\T@'\T@'\T@'\T2 '\X'v@'j\T @'z\T @@2 '2\Xw7tw`w7d+?KWco{Lgw`@'̎\T(@@!1@@'͊\T@@@@\@$ \@'J\T'@@'J\T(@$PwHg`0(@@!@@'͊\T@'J\T(@$P (T1%TMѼս 8P1%TMw@`'\T@@@@" +@@'\TwT`'\T@@$-@@7P'\T'\TGo4{7w``@'''b\X@2@$'\X'''b\X@h/g7{wGB[ w`sO5g7#w4`@@ @@(@\T)'^wgi77o+?_hO/Oo3G[oh aJ1';Oo$3Ss';Ocw+?Sg{/CWk 3G[o#7K_s';Ocw+?Sg{w`'L7w/;O $HT[gsG6w8d(PPP(@!>(@ @@@ 8@(L$ X(@ @@@8@(L$ X(@ @@@8@(L$ X@P@" \X'͂(@!<(@ @@@8@(L$ X(@ @@@8@(L$ X(@ @@@8@(L$ X@@@8@(L$ X@@@8@(L$ X/( wd(P@@@!+@@'͊\T~@@(@@@'"@(Le X@@'J\T(@ @P@@'&'̲@(LT XwD`@''*\T@(''.\T \Xw<`'2@@P$(@'6':\XwT`'2@@P$(@6@@':'̆\T \XG8{>U[w|`'P'\T8'R\T'>\T(@@((@gP'\T@)(@ '^7 8III<9 1MH 0d4ɼT 77 4tTM /; 8IU 9H0P <0GS_k7w7w 0lTѸ͕ѱwD`0''B'F\T0'\T0w4`@$@)@)'\T$ ( ,XA<QH9=$4=!PM%0PG7G/CwOw[w`P4@4@40'J\T4P4P4(4P4PP@P90@d@('f@@ {'2\T'^P4(4@P9@@@D )@l@ '2\T'^@@P9@@D )@@'N\T@@@@D )@@@@@)@l'R\TD @@P +'2\T'^@@'R\T@'R\T@@(00@4@l04) w7AK@w`4w`w0`@8@'\T$/ VwG/G;GWGB; 0ltw`'Z73SGAK/G #GxGK ,O_AgAw`'̂\X7+7CwO[gwsG ow`@@(@ @( (@( @ @( ((@)( (@( @ (@( @)(@( @)(@( (@(@@@(@@)(@s B[1Ow4d(P@'^'n@(L X $  1XTG#CZ7wC 7Os7ww`@'̎\T@(!f(@`t(@@!XQt(@@@!E@@'͊\T@@'͊\T@\T(@@'͊'\T\T@@'͊'\T\T@@@@@! '^(@$'^(@$P$'^$w7  3?K ,!P=0Q IAKWGc,Ozcw7G7w{ 73S#/wDd(P@@@@2 \X@@@8@(L3 X/ w`@ )8\X/ bT;GO[gs7w4`(@'J\T) 'J\Xw7'3w\`@l@l@@!@@(@!$@@@3 ?'2\X@@2 7vO PIXѹLս͑,OGcwX`4G7'7/w`@$)8\X/ bCO[ 8Qe <%0QLGgws~#7AKGwa`07'3?GS_lCkbwGw7"'"Lw7'3www? 4t$́Ʉw`@@'@'j\T#@'\T@'\T@'\T@'\T2 '\X'f@'j\T @@2 'j\X'v@'j\T @'z\T @@2 o'2\Xw7wLgw7dL  [+7Ch7Ogo{w 80ф1%TMѼս 8P1%TM %L8G7G#/wl`@(@ P(@P9 '\X@(@@@?@@@@)'\T@B w;wGGw`((@ w73SSs  9$=0 wO w`w8`@$@)@@(@\T@# 'n\Xwg7CWcow{wwwwwww ww#/;GSw_wkwwwwwwwwwwwwww+w7CwOw[gwswwwwwwwwwww'w3w?wKwWwcwow{wwwwwwwwwwww ww#w/w;wGwSw_wkwwwwwwwwwwwwwwwww+w7wCwOw[wgwswwwwwwwwwwwwwww'w3w?wKwWwcwow{wwwwwwwwwwww ww#w/w;wGSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSw `'r67w ;GS_ , U5TQ0lCkw7Gwwwwwwww'w3w?wKWwAKc $H1XTQL- <QLGw ,X٥ɕw (wT`0 +'\X0| Cg'\XPS{fCwl`@'v\T':@':'z@'~@ '΂'n\T$#/;w\P@8'R\T8'̲@(L X8'̲@(L X/ Ά[gsTw`'Ί @P'\T''Ύ@'Β\T@'r\T@'Ζ\T @#'Κ\T'@('Ζ\T'Ξ\X@(@'΢\T@ @@\T@" 'J\X@@pA" 'Φ\Xw,`@@'R\T \Xw (A=P%\H>w8`(@@P@(@ (@$) !\8 77;w @ѥ؀Ѐ HѥЀЁɥ͔ww XѥلᥴܴЀw`0w7G[gst   $ 7 0 PA5<%Q1 0l5eL1=1L!M%$Q 9=$QL1dw7uk/ (!PLQPHwG'3?KWcoH{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{   # / ; G S _ k w               + 7 C O [ g s               ' 3 ? K W c o {              # / ; G S _ k w               + 7 C O [ g s           '3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs    ' 3 ? K W c o {           ! !!#!/!;!G!S!_!k!w!!!!!!!!!!!""""+"7"C"O"["g"s"""""""""""####'#3#?#K#W#c#o#{###########$ $$#$/$;$G$S$_$k$w$$$$$$$$$$$%%%%+%7%C%O%[%g%s%%%%%%%%%%%&&&&'&3&?&K&W&c&o&{&&&&&&&&&&&' ''#'/';'G'S'_'k'w'''''''''''((((+(7(C(O([(g(s((((((((((())))')3)?)K)W)c)o){)))))))))))* **#*/*;*G*S*_*k*w***********++++++7+C+O+[+g+s+++++++++++,,,,',3,?,K,W,c,o,{,,,,,,,,,,,- --#-/-;-G-S-_-k-w-----------....+.7.C.O.[.g.s...........////'/3/?/K/W/c/o/{///////////0 00#0/0;0G0S0_0k0w000000000001111+171C1O1[1g1s111111111112222'232?2K2W2c2o2{222222222223 33#3/3;3G3S3_3k3w333333333334444+474C4O4[4g4s444444444445555'535?5K5W5c5o5{555555555556 66#6/6;6G6S6_6k6w666666666667777+777C7O7[7g7s777777777778888'838?8K8W8c8o8{888888888889 99#9/9;9G9S9_9k9w99999999999::::+:7:C:O:[:g:s:::::::::::;;;;';3;?;K;W;c;o;{;;;;;;;;;;;< <<#>>>'>3>?>K>W>c>o>{>>>>>>>>>>>? ??#?/?;?G?S?_?k?w???????????@@@@+@7@C@O@[@g@s@@@@@@@@@@@AAw AA'A3 A?AK7AWw#AwA7AY;C;CGCSw `@8$/ Ϊ7CgCCCC7CD 7D DDD1O,ODDD{DDGDEZE'E3EGESE_ 587Ekw$E`E'R\T@@AP0@@90@@20'ή\T@@'0'β\T@@0'ζ\T@@0'κ\T@@0'r\T$$$$$$$008\T@@'ξ\T 9'00E'Κ\T008\T@@'ξ\T 90'\X/ wZF'7F3FOFcFoF{w<`'@ '^@@8\T / C7Fw(`@@'\T '\X7F KFFFwwGwgGwC`07GgGGw4`@P(@@)8\T$(/ fw7G*AGGGH ^H#H/H;HOH[^;2HgHsHw\`'\TPH@9'\T@@H'2\T@'\T! w`$w7HII XQLIPXHᕐMռѤͤw`@l lI'I;IGIStI_Ik 9= w0`@@P@((@ ()GIww`7IIII ,8UH94MPGIwI`0ws7IGJJw ( =0Q HGJ+JCw!7`D7JKGJ_GJkb#kJJJfCJJ7J73S7"'`}KKw0`(@ (@(!((Lg7K'KCKcKoK{7K L_LkLwL 4t$́Ʉw`PtLw7dLLLLLLLLMMMM'w`( GM3fC#kMCMOM[7Mg %MQ${MM MMMw`@($7NON'N3N?7NKO?7OKOO7OOPPB[ PP'GP3POwd(P@P@@'n#@( '@( '@( ' @( ''@(L$ XwwW7PPQQQ+7Q7Qc7QoQ7QoQ7QoQQQ7QoQ7QoQR7RR'R37QoR?7QoROR_RkRwR7QoR7QoR7QoR7QoR7RR7QoR7QoR7QoS7QoSS/S;7QoSG7QoSW7QoSg7QoSw7QoS7QoS7QoSS7QoS7QoSS7QoS7QoSTT7QoT'T7TC7QoTO7QoT_7QoTo7QoT7QoT7QoT7QoT7QoT7QoT7QoT7QoT7QoT7QoU7QoU7QoU/7QoU?7QoUO7QoU_7QoUo7QoU7QoU7QoU7QoU7QoU7QoU7QoU7QoU7QoU7QoV7QoV7QoV/7QoV?7QoVO7QoV_7QoVo7QoV7QoV7QoV7QoV7QoV7QoV7QoV7QoV7QoV7QoW7QoW7QoW/7QoW?7QoWO7QoW_7QoWo7QoW7QoW7QoW7QoW7QoW7QoW7QoW7QoW7QoW7QoX7QoX7QoX/7X?7XcX7XcX7X7XcY[7XcYk7XcY{7XcY7XcY7XcY7XcY7XcY7XcY7XcY7XcY7XcZ 7XcZ7XcZ+7XcZ;7XcZK7XcZ[7XcZk7Z{7XcZ7ZZ7Z[37Xc[?7Xc[O7Xc[_7Xc[o7Xc[7Xc[7Xc[7[[[[\\wh`|''̪\T.|''̪\T̶'̶ͪP7\w\G\S\g\slC\";2\\\w8QS`0'>\T''.\T \X7\#k\7\^7^C7^7^7^7_+7_[7_7_7b7bcS?cw (P9= aPLP P<,MQGcdd 7d7d+ @фЁհLͤ  @ $HɔɼձM (L$ɼЀTdWdcdp ddGdddwddd e#e/e;peGgeSwe_ekesee Geeeqegeee ,\ɜMwewf LLɼ̀ԁ̈́ɅwfwqfAKqf+f7w`8'J\XwfKGfW7fffw$`@@'\T wl`@P@@('\T@)@'Ͳ\T$ (@)@'Ͳ\T@ PP7g+7gS7ggwpg`@$0@'͒\T@ k@''\T@! 0@pgA2 '\Xw7h#hchwhhthhAKhw `u@@$h@@ h@@! 0'̎\T#'R\T(0'͊\T@''͊\Tl@@q -@(#0@@" (#(l@@@@'r\Tl@(P$@' '.\T\Ta(@!@@@z(! P@(!  P@@ P@0'͊\T@''͊\T@@@# @@ P@0'͊\T@''͊\Tl@@@@'r\Tl@(P$@@'\TP@(! @@@# #x@@ P@0'͊\T@''͊\Tl@@@@'r\Tl@(P$@@'\TP@(! #@@@# #T@@ P@0'͊\T@''͊\Tl@@@@'r\Tl@(P$@@'\TP@(! /@@(! #.@@(! #X@@@# #l@@@@'r\Tl@(P$@@'\TP@(! #.@@(! #@@@# #@@ P@0'͊\T@''͊\T@@@# Zmm mm#m/m;w` 8\X/ gGmGmS7m_gmmmmmmmnnnn+n7nCnOn[ngnsnnnnnnnnnnnoooo'o3o?oKoWocooo{ooooooooooop pp#p/p;pGpSp_pkpwpppppppppppqqqq+q7qCqOq[qgqsqqqqqqqqqqqrrrr'r3r?rKrWrcror{rrrrrrrrrrrs ss#s/s;sGsSs_skswssssssssssstttt+t7tCtOt[tgtstttttttttttuuuu'u3u?uKuWucuou{uuuuuuuuuuuv vv#v/v;vGvSv_vkvwvvvvvvvvvvvwwww+w7wCwOw[wgwswwwwwwwwwwwxxxx'x3x?xKxWxcxox{xxxxxxxxxxxy yy#y/y;yGySy_ykywyyyyyyyyyyyzzzz+z7zCzOz[zgzszzzzzzzzzzz{{{{'{3{?{K{W{c{o{{{{{{{{{{{{{| ||#|/|;|G|S|_|k|w|||||||||||}}}}+}7}C}O}[}g}s}}}}}}}}}}}~~~~'~3~?~K~W~c~o~{~~~~~~~~~~~ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO7[mmw,A3`0@10'\T$ 7w`7'R\T (7'R\T P # 'J\X@'̚\T(@'̎\T'\T7'R\T (7'R\TP7@9'\TWt7'R\T(@(@ P @'̚\X@@!/@@@'͊\T'N\T@@! @'J\T@(@P(@ '͂'͂@'\T) 'J\X7u w0`@@@'̂'̆\T$ \Xw73S0'H[#w<`@(@ @(@@)@( '^w`@B;((@@@''̪\T(@'̂'\T\T@(@@! (@@6(@$ 7/gsAK $D 9M=09$= =Q8ITGwEG7{w `P@@ '\X[#Gw wZ' @MѸw37?wS`@0@# \XwZ_7kw$`@@@@# '\Xw4`@''.\T\T$'v\X7 '3?7K7WwpC`''̪\T4@'r''b\TDp@'̆\T''ͺ\T7u/kwGwP`@@@('\T)'"\X@@($)'"\Xw M4LTw7G7K#/;GG `єɽѤ̀՝w`$w7kwI;7,D_,O ,-40 5w$`@)'\T (7+  X8U1Maw7`07C QL HGw!7`47 49<8]9%07G'3lC?KwH`@'r'͖'b\T'r'͚'b\XzWcow`@{7/w`@ '2\X@(@@P@@P@@ @P@@P@@(@ @1 1 @@'&\T@@ @@@@R @@@@@@R '*'̪\XL+7?KWcow7{w7#k+ 77GO[gwd`'2@@P$(@'r)@ 'r+P@@':\T '.\X2st$Sw `@4@4 7S'w`'\TP3@9'\T@'\TPH@9'\T@@;P'\T@'\T(@ )(@'2\Tt@'6\T@@@()@6@((8\T)'^$'^$@'\T/ :w``@'>'.\T\T8@'͒\T@@@@B +8@@8 / B«w4`'@B·'2\X7/;G1OS 0QL= Q8MQ8G_wwwwwwD`@@P@)@@(@2 \X@(@\T$PwwQ7wçûw,`'F'n\T@Lw0P88'̲@(L X/JN/RN/VN'/ZN/^N/w` 7?/bN/fNGOW_/jN/nN/rN/vNw`g/zN/~N/ςN/φNow/ϊN/ώN/ϒN/ϖN/ϚN/ϞN/ϢN/ϦN/ϪNć/ϮN/ϲNďė/϶Nğħ/ϺN/ϾN/N/N/N/N/N/N/N/N/N/N/N/N/N/N/N/N/N/N/ N/N/N/N/N/N/"N/&N/*N/.N/2N/6N/:N/>N/BN/FN/JN/NN/RN/VN/ZN/^N/bN/fN/jN/nN/rN/vN/zN/~N/ЂN/ІN/ЊN/ЎN/ВN/ЖN/КN/ОN/ТN/ЦN/ЪN/ЮN/вNw$`'ж\T@Lw4d(P@88'̲@(L X/ко/оw`(@ '=(@ '5(@ '-(@ '%(@ ' (@ '(@ ' @@@ŷ'2\T@@@3 \X/о/о/о/о/о/о/о/о/о/о/ о/о/о/о/о/о/"о/&оw4d(P'*'̲@(L X/.оw4d(P@@P8'̲@(L% X/ 2w4d(P@@P8'̲@(L% X/ 2/6о/:о/>о/Bо/Fо/Jо/Nоw4d(P'R'̲@(L XGS_kww(`PB(7ƃwƧƳƿ2wQS`P47wH d (PP @@ @ @ @ @@@@@+@(! @@@ 8@(L X(@!5@@)@ \X(@ @@@8@(L X(@ @@@8@(L X@@@8@(L X(@ @@@8@(L X(@ @@@8@(L X(@ @@@8@(L X@@@8@(L X/( w@ `@@@ @ @ @@P9999999@+@)@ \Xw< `@@@ @ @ @P999999@+@)@ \Xw8`@@@ @ @P99999@+@)@r \Xw4`@@@ @P9999@+@)@b \Xw0`@@@P999@+@)@R \Xw,`@@P99@+@)@B \Xw(`@P9@+@)@2 \Xwd(PP(@@@'͊\T#@'V\T' '.\T\T'Z'͊\T@(@)@(@( @@ @ @ @@\T @@ @ @'̺@(L X@(@@ @ @ @@ @@@'^@ (L X/'2\X@@P@@(@@ @'͊\T5 P@@@@5 :@P@(@@ @'͊\T$ P@@@$ ,@ @(@@@'͊\T# @@@# ,@@P(@@@'͊\T# '@@@'͊\T@@(@(@ @'͊\T3 @'b\Tf-@P((@@ @'͊\T+@P((@@ @'͊\TP(@@@' '.\T\T0(@!@9(!P@0(@ (@(@@@'͊\TD @@@@@@s #@@@# #w\`@@(@)@(@)@@'̎\T@'̎\T@@U Ƀ'\Xwd(P@(!@@8'̲@(L$ X@$\X@8\T@(@(@)@ @@)@c 8\X@(@)@ @@@) @ 8\X@(@)@ @@@ @) @ 8\X@(@@@ @ @)@ 8\X/fjnWc $@YL9%\ 9U<PGoʛw`0w,`@P@ @)@@(  ʧʳʿfC7;O[7gO[gs̗̻̋7u/7G΋ Χλ 8IX $0 P0G7u/G+77C7_77G7w7g (LA=P01XYU1=QHwl`@@@B@@@ @(@))'\T@(\T(@$)'rwww(`(@@$(@$)w8`@P@(@@)$'N\Xw8`@@$@@)'R\T$(ww `8 'v\Xww w@g`@$0@@ 0@pA" '\Xwhw77‹ԗԣԯwGch7ԻwGGllll'3?llKllllllllllllllWlllllllllllllllllllllllllllllllcowllՃllllllllllllllllllllllllllՏ՛էlճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճճGջGwG x# /;xCGSh_kww@X`''̪\T4'r''b\X7u/փG`֏֛֧Gֳ#vC B;u?G[cׇכףׯ '/?G[c؃؋ؗ/ث/7ORO7Q7Q7Ws{هٟٗ 3;wKo[{ڃR7ڏڟڧڷڿ[#o/?GW_wۋ۟ۧۿ 7?S[܃܋ܣܫ#+OWwݟݧ 3;[coޏޗ޳޻ 3;S[{߃߫߳+3S[g#+[cwIOWk s #+KS_wx[#;Cck#+ħC[cKSow+3?go')#/[c?J+KR7w3;S[g{ J1'GOks~_OWcw'3GOks?Gck3;ck#+OWw/7KSgo{/7S[g{ +3[c{ogg;Cck+3_gs3;ck #+?Ggo{;Cckw/7KSow#CKck '/?Ggo{ 3;S[wOW{ +3GOw +3S[g#/C$K_g'3OW/7C_gGOgo{;u/7W_w_PO'GOkse/7C[cwJC;Cck'CKWowGOgo{  # C K o w         + 3 K S          ' / ; W _ k         # + 7 K S o w      [    ; C O k s         '/;W_s{rgU'GOckeZB/7OWow/7KSgo_ #+CK_gS8'GOckwOO5'CKgoo ;COow7?S[s{3;W_s{ ?Gď_w+3KS_w '/CK_gs#?GSks'ճ?OWks#GOow #+?GW_kCKs{   ; C [ c s {      !!+!3!O!W!k!s!!!!!!"""#"G"O"["{"""""""# O3###?#G#[#c########$#$+$C$K$c$k$w$$$$$$%%'%7%?%S%[%%3#%%%%%%%&7zw[&?&O&W&o&w&&&&&&&'''''C'K's'{''Us>''''''(((3(;([(c(((((((()))7)?)_)g){)))))ė)))***+*3*O*W*w*******++'+/+;+K+S+k+s+++++++++,,,7,?,W,_,,,,,,-- --/-7-O-W-k-s---------...;.C.[.c.o.......//#/+/7/C/S/[////////0#0+0K0S0o0w0000000011131;1_1g1111111122 2232;2O2W2k2s2222223 33+333C3K3g3o3{33333333444#}o4+4W4_4k4{44444444555'5O5W5{5555555666#6+6O6W6w6666666777#7/7;7_7g7777777888'8/8C8K8W8s8{88888899'9G9O9[79o9999999:::':?:G:W:_::::::::;;;';C;K;cg};k;;;;;;;;<E<<+<3>>'>;>C>c>k>w>>>>>>>ğfW???#?;?C?c?k?????????@@ @#@+@G@O@k@s@@@@@@@AAAAKASAcAkAAAAAAAQ7AABrBB+Q7B3B_BgBBBBBBBBBBCC#CCCKC_CgCsCCCCCCCCDDCDKDkDsDDDDDDDDEH GEE;Jk?ECEoEwEEEEEEEFF FlF'FWF_F{FFFFFFFG GG#G+GCGKG{GGGGGGGGHH H+H3HOHWHk΋ekHsHHHIw'HHHHHHI II'I/IGIOIcIkIIIIIIJJJJ'JSJ[JgJJJ#xJJJJJJKKK#KCpOS?KKKWKkKsKKKKKKKKLL#L3L;LKLSLgLoLLLLLLLLLLMMM'MGMOMgM{MMMMMMMMNN#NCNKNWNsN{NNNNNNNNOOO+O3OWO_OOOOOOOOP PPP3P;PSP[PPPPPPPPPQQQ/Q7QSQ[QQQQQQQQQRRRR3R;RSR[RoRwRRRRRRRSSS#S+S?SGS_SgSSSSSSTT'T3T[TcT{TTTTTTTTTUU'UGUOUoUwUUUUUUUVVV+V3VSV[VsV{VVVVVVVWWW#W;WCWWW_WWWWWWWWXX#X7X?XOXWXkXsXXXXXXXYYY/Y7YWY_Y{YYYYY}aYYYZZZ#Z?ZGZ_ZgZ{ZZCkZZZ[[ [7[?[K[k[s[[[[[[[\\[ \\S\[\s\{\\\\\>);\\]]]#]+]7]C]SR8][]o]w]]]]]od]^ ^^3^;^W^_^^^^^^^^___/_7_C_W___o_w_______```#`/`?`G`W`_`s`{``````a aa/a7aSa[awaaaaaaab bb/b7bKbSb_bkbbbbbbbbbbcc c7c?cOcWcgcoccccccccd ddd;dCd[dcdsd{dddudddeee+e3eGaSJeOe_ege{eeeoeeff#f;fCfkfsffffffgg#g+gKgSgsg{ggg gggggh hh7h?hkhshhhhhhhhhii#i+i;iCiOi_igiiiiiiiijjj/j7jCjsj{jjjjjjjjkkk3k;kckkkM3gkkkkkkkkl7 l#l?lGlSlclklwlllllllmmm7m?m_mgmջlmmmmmmmnnn?nGn[Ro7ncn{nnnnnnno oo+o3oKoSooooooooppp'p3pKpSp_p{ppppppEֳmppqq'q/qSq[qoqwqqqqqqr rr/r7rCr[rcrrrlsrrrrrrs#s+s7s_sgsssssssstt't/tCtKtktstttttttttuuu/u7uOuWuouwuuuuuuu*/uv v'v/v;vGvovwvvvvvvw ww3w;wcwkwwwwwwxxx/x7xCxOx_xgxxxxxxxxxyDyyOyWykysyR8yyyy'yyyz zzz3z;zWz_zzzzzczzzz{{{{3{;{G{c{k{{{{{{{{||'|/|O|W|o|w||||||}} }}+}3}O}W}c}o}}}}}P3}}}}~#~+~K~S~k~s~~3~~~~'/GO_gxgZ#;Cks 3;OWwqcT'/CKO_;C[c /7KSw /77Wc{;COks#/KSgo7?S[g '/KSgo 3;W_#OW#+W_w?Gck #3;OW{ '/;S[s{+3GOckwwlg`(0(((0(@'̂'\T\T((@@ ! @@6(@(@ _vC'wW`@0\T0@@0'͊'\T\T@@@0'z\T@)@@@+>@@@@(04000! 00(@'~\ T'^@@@Dp[A'т\T@(04'^    Kw8P'&A'̲@(L X7u w #/ ;GH;S_ $QL- A4wl`t@PG@kP9(@'ц\T 'ъ\XS@P99 P9AK7ww x $D5= 1%@9$1%73S77Cw`P7w`0 \XwZ7GwP`@'̎\TP(@(@  @@@'͊\T(@ ,O7#O[g/ zwC`D/ юw7z? w{`0'̚\X7w(`@'z\T$8\X/ ђ77CWco $@9e HI 8Lw`P{w`(@  .FwAKw`@(g@'z@'іj@'њ@'ў7@'Z ;@'Ѣd@'Ѣ"@'Ѧ?@'ѪS@'Ѯ'Ѳws7#/;wtJ[`@4@4@4@'r'Ѷ@'Β\T'Ѷ'@'Β\T''3 'b\Xw7G  I w `@4@4 w ~` @ 47[s7"'w`(!73 4x٥ͤɕaw  #/G7x/K;G[S_kw`(7ww`w7 7 3?Kw`0|7WoL GMOggwX`@@>@@P@@ @ @@PP$@@"  73O[gG~ (TLЁMwsww D$́ɄMЀP1H9$! Iw4`'@<'2\X7w  9= 9PMPw0`@@@(@\T)'^wwû7' GwG)GyGؗG9[GcG'GKG7GGGGKG;GNG=GGG)G>G+w[wgs T$͸Q%A< ܀ɄLMwwwSgEw$`'Ѻ\TѾ7;So73Ss{wQS`0@4w #/;wG @ɽхѸɄ屸ɼwS dљɔ͕ЁLɄѸ@ȁLԁ͸ 4p$ɼЀɄѸw_wkwwT ,`YLU1$9%9%0QM$HdcwL`@@'r'͚'b\T$'r''b\Xw7Skw`@'\T':@'\X@''\T@ @'\Tճ@@'\T! '2\Xl@@@o@$'\X@'\T@@@# )\X # /; GSH;_k/ w`@@(@)'ͪ'"\T@@'̶'\T@'̶'\T@'̶''*\T'̶'"\T'ͪ'"\T@@( @( @( @( @( @( @( @( @ (  @ (  @'̶'\T'̶'"\T  09= 9%PQT9=$w77T+ 8=I9heL= 4M0G7=/ 7cw`'j\Xw`g@@$?@@ @@!  ;@@1 d@@A "@@Q S@b wTd(P'ͪ'\T@'ͪ'@(L Xw`'Ί @P'\T'@(@@@?@@@"@$$@'\T@)@p;A'\T" 9 ;@@@d@$$@@'r\T$@(@)@'r\T$H@(@'r\T}@(@)@'r\Te@(@'r\TO@(@)@)@)@'r\T3@(@)@% @ @@'J\T@@'J\T@9@99@@'J\T P999P@ '\Xk@ '\Xw@ '\X@ '\X@b '\X@R '\X@2 '\XS@-@'\T@'\T@pA'\T@'\T@'J\T# P999g@'2\XwH_`@$@@'\T@ 0@pA" '\Xw``@'\T@@'\T@'\T@@'\T+! @@" '\X 777Gw `8 '\Xw``@l@)(@'2\T6P@@1 '>\X@0@('V\T@6$)7ww`P   GjOWOWOWlOWOW OWOW3OWGOW[GeOWOWoOWOWOWG' ,9= %QLUPQ8 (P9=8IP9%4%Q8 4=H7  IXeP@CZO[o{7#4/ G'  P0G3m?7KA (LIII<A<9%8\Q%HG I=Q4GG 0QA1QM$Gc AePGׇ $D=UD5H%Q%M%0MPGׯ (PM=4@P%M<Y%P9a$5TG 0 XI=P0QM$G  G/ Q49 GG 4! L5=01 Gc UI ! 8 9 9a<Gث 4t-4T89%IX $01XTG (LUHXU1@ =HG $ AM, G7 ,$1X@I$GWh Gه ,X19TMM9T9$XU1Gٟ $@=1 LA9$QTI=@PG (LQLAT ULAePP1 G   <1= Q9<Q9XLG[ Gڏ Gڧ 85eL1=L%IP8Gڿ 0G 0QML8P<G  XG/ `GG   ULIPQ G_#K YHGۋ  =@Q9$IGۧSc $9T%8G  QM=8G $@A< 8<4%a$8G U@LG? (L =0Q1A<I=%P8G[  $%Q8ePG܋  EL9T Gܫ $H I Gk ,X9$ !L 4=H! HG $@A<<8AQTQT1%G+ 49115ILGW <=9$%0QL9G 8Q%\< 9@%0Gݧ  Y9T%IeG e9G (TIPPAHP1G <Q49 19$ M0G; 8%5 P9UH! MHGo ,9%5<Q8I<Gޗ  XI=PG޻ (5= 9ILG (LQ5I9$ AIXLG $I=! G; 8I QLQPMHG[ (PM9$QI90 IPG߃ QIG߳ , 4=HI G 0QU<QU@=@QHG a%L!PG 81 @05%H%Q$XG3 =I@M%4Gg 1%TG  IIG ,! TH @LG ILG 0-4 A5<a0G 0h9$%L1A4@9%H4P!Q<G+ ! HGc $D$1X4!Q<G M G  ]= 8LG3 (9= EL9TPG 8| 5$0%$MPI@%U9 49U ,G  HGW YEGs  HG $D-9T]=8 8M9<UIPQ G  ! PG  M%0HPG   G <QL8IA`MM9=$G+;o QPG_ $Y$IA4G 0I@Q9$%Q%Gw $IP !MG 8QM ! P=8G $D A<<I LQA$I<G 8U1$9%9%MGC $HM%IPGk $QLUE1G $H%5U8%Q%= Q9TG ,M%I %Q@9<G 0I=! I G $=UD%P5Q8  Q1IMGC $HA=P01X 8<Gc (L1 M<%Y89=H94PG 8IX $0I G 9%I G ,`9$= QM8Q99$QL 8G 0-4<0QM$GS %LGw 4III<A<9%8G (LA<QH9=$=8P9U<G =IG (LIQL9$9$QU@QLH4G# (LQL8HHP1 G? 4MUIPUQ HGo 4%5U8%Q%LG -=@G ,X%I@Q%4Y$= %Q8U8=%P8G $== P<G ,XIM0PLIPP@1 G/ QU@ (! LU0Gw+?  I= % 0G  5 0G  5U8G 5= 94PG 0 XI=P%10G I  9T G;Gc 54IGg Y$5H@G 4!P=PP-<8G $@E9TQ=TL%1@9% G (9$M4LGk 8I= % 04 $G' ,I9T! IGO 0MUIPUQ HGs (P=I@  0MIII<G  IXG A4G 1G 89$=8Q8%5HQ89$4=I ! IG A4Gc A4G A4G $I1!L9$G A4G 4Q49 Y$5H@G !P]=HG3 0I=814IPGO7  MIII<G (T9$=5H PQ9<1=HG (L %@Xd%I1 MXG $i0 dM9<G 4Q! I9%0G (=QLH=1LPGG 1DGk  19$ M0G 4a%49$94HG 89U1  0Q`IG 0M%0P XI=PG HIUP8G (L5= 94%18QA<9=$LG; (8$Q<=%P8Gk 0=0<1$G 4%9TQ%81$i$G 8M%0LPATeQH@G' =0A<G $HM8PII=H%0Q%4G+ 4@ M %HGW ( L9<IG  M9T9$G ,=QLHI8MG/S 85$4Q$PG  IG  IG7  IGS[  IG{ ,) <Q eP@G $D=0 <L5Q8G (PIII<A<9%8A@8G EUTG ( ULIPQ G7M3 )=8A5TGg 4! HQ9$HG $H9%I !MP1G MHELG 4$1X01LG (PQM= % 4Q89=$=8G3 -<M%0@Gc ,M%0LP<IG 0Q9$I%Q XG $1%MG (LAaQI<!L%I81 0G <I Q=0Q MIG 89$= M8UDQ8GC $H=8PAd=PU1$Gk  =01G  IQLG (L 9$II<Q 8MHQG M%0PG QLQHG ,`=89 1HI<A<QH9=$G3  9$Gs ,\1Td1$U<UAPLPIP5G; 4AL% 05I<G %9T9<G $!  H$G (LI4$,%18850LG; $H9= 9PIPAM8IQ8Gk  ] G 4=!L \9I0LGCg <5= 9%P@0M<G % 9%0G 1- <G+ 4M1Q AePGGo $!M%HQ!G{ ,9I40AG $D ATM%QMH! IG ,\I1MLPIPA P0G (HP1 G <QLQHMU\d-I<GC ,! - I8MG 89TA`Q <G 4MUIPUQ HG 49$%9$P==0@G ]H9$G7 0A4%\!PIGS U1@LGw 0M%0PIQL9$G $MU\d-I<G ,MT0H <0G 89= U=P8H<LG 4IX =8  ,G#  =0QHGK (L11$0Q<9$M%0PGk 0=I9h HG  1%8G $IX885G  0M1G UHG  54G/ 49= 9QLI<%$8GG 45= 1%@IY0G{ $HQeP= 0QM$G 88]9%\9%MG ==HPG <%%$%1PMQLG =  HHG; 0M9T9$IG[ 8-<M%00@ <0G 0lA=P01XH1=LXIX $M0G ,I\Q$! IG Q=$G 0d9%I@  =H1 =IHHG $@! \HQ% AM GW $%P= 09 4G a%5U8G $MH8P5G (TI1MLM9$UIP%Q M9<G  %I@Q8ALG %P0G3 (TQa HLP T%$%1PMQLGO $D%LQ IG 411$0IG $!  H$G7 8M9TQ9%\9%MG <=I@@QYMIG3?W $D9=4=Q$HI<UI Gg  G_ QU<G QU<G 4=8!PH9%G 5eL1=G/ 58MGK 4MPPI  9T Gg 4=!PG 81%Q0<MQG $@M 4 I  <I LG 0IQL9$0QM$G (%9$%Pi%0G3 0lA=@IMI<01(LA5TGW %!PG 18G 4QY$IM%0PG $D1% 0Q9<U9$%Q9<G  M%0IAP <G ,%I@Q81@ GC 4Aa9=1H0Gg ,X=I@  0H=IHHG QA<9=$LG $DQLH@45%H%Q$XG+ ,\Y9$-<9$II=H= Q8Q`G $IQL9$GO3K $IQL9$G{ 4III<MHIPPG $D11$$054%PG $DMPP8QL P0G  G 4Q@!  =01LG7 $=QLH-QLG_  I@IPGSk  5= QU4MG  @G  ULQLG $19$ M0G 8I1\d9IG' ,UMxI@P1$GO %P4Gss $@Aa9IY<9%0G <9  PYIG 8MT$HQ8UIHQ@G  HQM$IG $I=! GC UMxI@Gc (AePM%0PG 4t=PU IHQ8U1$9%9%MG IQL9$G i%LG $HIP IX $0QU<G 8Y$ HIUQM$ $GC 8 9MA1TP9$Gk  9= QLQ8G $H$9T%8XU0G  11 <PG 5%PMG ,%5U8LG' = 54GW <9 M  L<Gw  QIYG $@QI%18! HG  IX% G 0d-4<9@= A<I=%P8G $!  H$GO'OW 0=0=09= G 4E4G $DQ 9! aI@%ML9<Gc{ ,E- Q=TG <A<$8UA8P1$G # $H= %Q8U8=%PL8i$G K (4=!PG w 4MU@ Q`9=0G (4,1 0G <9$9$QL 8G 0=0$54a%G   A4MPG 3 ,\9%IT 89%1XTG S M%0%PdG 9e G 8 008 %10QLG  0hI Q M I=LaI@%ML9<G /r , e %HY1G ; 09= QLQ8e,G k (-4DUTG $@ 0AU88G 8U1!LU9$ 4MHG ,QM$=8G  Q%I<G 7 (@=!@0G S (@=!@0G w $A<QH9=$G ,X=81 8%M<89= U=PHG 9 1HG 89U4! =P!QIG + ,-40@ <G O 0I9T! MIG s 85= QU@<MQG  IG  IG  IG 19$9$G3K ,%I@Q8%=8LG;  IG_ $=QLHY9G{ $H5eQ@9I%X59<Q9G  5eLG (III<AePG 0Q49 QLMUPG 8M%1 I0M4G' Q=$GO =1 LGk (P5%L1@U4%Q0e1@QLAG 0d =0%QXA< 8<4%a$8G $DQMX%H1=8G AL G  %8Y <G7 $IX $M0GW -18GwSc (PM=48PY%P9a$5TG 5DeQ@G  =QLHAGk  ATMG ! HG7 MPPGS  Q=Go ,9= 9QL84G 0d5= 9%L%5$I08!$I=LG  Q=8G  Q=H $@U=@ĽPG  =0L-PG+ Q9$9IGK 8IQL9$L 5d1<Gg 0=@Q9$IPG 0=9$@A$G (T5= 1%@I=PQaM99=$G  9$ `PG 4 ULQL1X$L8G' 9=GO $5L!AI<GR_7 IQL5G $HU1$9%9%0QM$G ,IPAM8IQ8G (LI=814i$%Q%M%0PG 01=QM$= Q9TGK $!Q<]IM$Go 8QL8HIII<G (H! HG 9G 9$G $@IQL5I@%5$Y%PG 4=LQH<%9$PGO M9$QIGw ,`%L18IQLQ TITII=HG $a%4ePM@G   =89 G 0dH0QM$MT9$UQ 89=$LG %@HG?   =0%QXG[ 50G{ =I@M LG I I=HG ()=8A5TM%0PG I=11G A4I G (50M%0PG; UIPM!PG_ 09e%5\ 9$G{'GO $DAA9eP@III<G (PIQL9$U<UAPLPIP5G[o <I4P,1%=8MG aU1@L $Q=H%HQ!G_ 9U(,G Q4= G 8U=L H= =Q8ITG $9= PLAdG MMXG  M G  1\,QLG3Gg  I! 8PG_w IELPG  IG , =0QA$G ,I9TeP@G  IG/  IGK (==0AU,XHGs  HG = G  9$ $PG  9$G 1TdG ,9U1  0Q`G#  Y9eP@GS H9=LGs IXe$G ,\a%5U8A<9= a%49$G 1eG $Q%41- <G/ 11$0  %@G?  4=HGW ,X-4L%IP8M P 1 Gs 4x=UD5H%Q%M%0MP=PQ%Q%G ,`EHI%TM1L%!L %%Q9<G7G $D=I@  0III<G# <Q%\< I@%QM9<GO $DUI ! 8,dUD0Gw (LIU 9H' 4I=814I=G>C =G>w (TEL9T%P 0I% d<G> 1%Q0G>+ $5H9%I YMP1G? $-18e<G?# 85$0 4G?C  =0$54G?k -4G? Y9M%0PG?3K $=0$@G?  1<G?  1LQ I<G@ ,0P9!PG@+ (PLI=4G@O $D@=!@0QA<%5$hG@s $@]HQ%H0 M0XG@ $%IP%1@eG@  !PG@ HGA 0hQLU IHQ8U1$9%9%MGA  IGAS $Q1QL- GAk QU4aGA $D=I@  0a%49$GA Q1IGASg I GA %!\0GB ,\5= 1%@I=I4Q`%M89<GB3 (QUIT <(GBg I=4GB I<GB U1$GB (5= Q49=$GB ,%9%8GB 8%0U 810GC# =1QGCKo %I\PGCs M%1@dGC  IX $0GC $@Q9$AIQHIY0GC <I Q= =A49T M I=LaI@%ML9<GD <5= 1%@I =01GDK  MU@ Q`GDs ! HGD (=1 LM%0PGD 09%P8d 5TIGDw ,\Q=8H11Xd1I9a%49$GE ,XHe109$-=XU HGEC <9$1<85GEw $%P@0M<GE (UMxI@a PGE  4=HGE QLGF 0h9%8%I@Q8I=LPXMHGF' 0=1Q%MQ$GF_ ,XQ%\$ UA8P5=HQL9%HGF 0M 0PPAdGF QL8GF %=@9=LGF  E9GG  %I@Q49 GG+ 0dYHQI1%T%%88M%0PGGK   10 GG aQ GG'GO 85UL%Q%M%0MPGG <=IP1L!MGH , XI=PLPGH3 M%0PGHW 50@GHs I!P]<GH <9$= QM8Q9GH[   ULGH M0PGH =0GI =0@GI/ 5= 9GIO Q9T1$GIk 8]= =PXP1GI AePMGI <-41<1 <9@= A<I=%P8GI  9$GJ ,XPQL9L0P <Y%PGJ' 5U8IGJg  GJ e,A<GJ  QH9=$1GJ 8 ULEL9$aMGJ $9= U(QGK <A49HYMHGK# %aPGKW ,X1 I AM, UHGK MGK MGK ,`%$eM<I 8%Q1 e0=I1XGK M$GL# M8GL; 1LGLS MHGLo  !=LGL MTGL ]89%0GL' $I@ %QGL ,5 9%0QGM 8MeL5PX%MH9<GM' Q%=8P @GMg $H! IQ Ha%5U8GM Q%=8HGM ! HGM  - GM 4) <Q 9TM  41\\,!Q$IGN#/_ (%L8IGNW  IGN{ Q%=`HGN  IGN 8Aa9= %A40GN  IGN  IGO $DIP9%4%Q8 4=HGO3 ,XI%Q 9<M%1@Ld1ePGO_g{ =1- GO < 008 51QM$GO ,1%LIP5GO H0GP $9%XMIGP; $@Aa9E- Q=TGP[ $@1= M9<9PMPXGP 4=0=I@M LGP MHLGP U=H8GQ (HP-<8GQ7 $HQL P0A<QH9=$GQ[ $DI\4Q=< =%PM8GQ 15HGQ I=LPGQ%C  A4GQ/ Q=5$LGR YHMIGR; 9$GR[ 0Q ! IIMI<GRw $5$@QIGR7W <9=09H! 1%8GR $-4 11GR 9%GS 5%PGS+ $@IQ@ GSG $= %Q8U8GSg $D=UD1P-$I@%`GS 0hIII<1TM 4 I H<IGS 4t1U4A%P %0%Q9<IP=%=@Q8GSakJ (T4,50%\!PY9GT3   =0eP@GTc  QU<GT 5= 1%@GT (%I@4M%0PGT 9$dGT 49$I  9T GT <UQLQIQ=GU' 8QLI<I@ <MLGUO $H%U9`4!  HIPGUw  9GU 0MPP8QLGU_w ,QU<4MLGU 09= 9QLXU0GV 4%0MxATHGV3  Q%P4GV[ <9$QL10Q4= GV{ IU9$GV IXGV <9%9U<XMIGV $LM5di$GW $= QMGW# U@!LGWC 4QL%I 9GW_  a0GW (TH9=L1 IA`MM9=$GW 0MxATPH1%GW (PIPIPA P0GW I%QLGX# Q GX? U=!QHGXW (%I\P9%0GXs =1I<GX QXGX 0dHQM$I=UD1P-$I@%`GX <9$QL1050GY 4-40 <Y%PGY7 (!PQL9%HGY_ 89$QU<4MLGY Q=81%8GY GY $@UI ! 8,0dMMGY (IQL9$HGZ# $I !P-9TGZG  L9<GZg (T1L1XQTeI<%49%`GZ (TMA <)Q 90!QGZ <!P5=89$I=PGZ ,`Ii9$U IHQ8 =01G[ # 89 5I<1QIG[K (L9=0%$dQM8 UH=%P8G[s I\9%8G[ AA9G[ 0-4Y8 =0G[ 9G\ 4pA=P01X1%T%%88M%0PG\ $A=P01XG\[ =11G\{ 4! H9]<M G\ IXM%0PG\+K (9=00 0G\ 1LG]R?7S  EG]C Q0G][ <Q49 MH8P5G]w_ <9IP5eL1=G] ,\I1!L9$ %- 8a%49$G] 4QU<QU@QLH4G^ ,IP@Q$A<G^; (L5L18%$%1PQLG^_  Q=H0QG^ $DM9$UIP%Q M9<%\!PG^ A= dG^ ,I8MIII<G^  08G_GH 90!QG_C   MG__ (TA<<8AQTQT1%Te1G_w ,a%5U8eP@G_ $Q19IQG_   4G_  X1I <G`  =G`/  Y9G`G 9%4MTG`_  =4G`{ ,\=H%8! MHQ9T1$G` <=dITA=P%\HG` ,IQL9$% G` ,IQL9$% Ga ,IQL9$% Ga7 0=1 LY<IGa[ 0 =019eLaPGa $@UMxI@=8P9U<Ga $AeP@HGa 0Q9$0HQM$Ga ,Q4= eP@Gb M1Gb7 M1Gbk Y0Gb  Gb $ ULIQL9$Gb  Gb ,XI=Q4@MH% HY%PGc 0Gc? PGcW (9 01Gco XGc YHGc 8Aa9=1HM0Gc ,Y9=I$58Q8Gc 0 0M1= Q9TGd   =0%Q9<GdC Gdc 0|Q4= Gd{  ==08Gd ,\) <Q A<9= a%49$Gd Ih<Gd ,-4L%IP8Ge %I@Q8Ge3  1XGeO ==5eLGeg 4pQLAT%9$%P@0 =HMM < (PGe 49%L1MA 'G 0h=I@M L%U09$9$%0QLGe  ULY0Gf# (TM9$QI4=!P4-XHGfC $@QM= =Q8IT=8Gfs (T%!\09T%8XU0GfO{ 8=8L P4,AGf <9 5I<1I<Gg 45%L1@X=Q HGg+ <-409<01GgS =UDPGg{ =0Gg  DLGg $M%0PP1%Gg 4HQM$IM%0PGg $D! IQ LHQ TGh ,`9$QL10Q4= %\!PY9Gh? 49$I@%Q Ghs ) <Q Gh IPGh = 0M8Gh  Q0Gh (!P4=!PGi  Gi+  QLGiO $I\4Q=<Gig 4-4<M%0PGi <MU4 PYIGi  =0HGi 4IQL9$0Q8 Gi  1Gj 0l9 %9<1 a9P=%L88 5TMIGjC LPGj{ 54XGj I8MGj (%!\MP @ $5HY<$Gj 09U1 P01%Gk (T9= IQLQ T9$IQLQ T9=$Gk; I<aUGkk 4=I@I@0Q8 Gk  MP1XTGk AHQI<Gk $De4-49$5TGk ,%1Q$QM$Gl# PGlS 1=Glw#7 $D]L @IQ%\8 !PGl 4MeL5P=01 Gl =IGl (LQ =i%H 9UH! LGm 4Q=Q4= Gm? Q1QL,Gmg I IGm 5eL1=Gm ,`III<! %88I%Q eI<Gm $ 08e<Gm (TM P 1  I% d<Gn 1@ GnG  QL HGnc  LPPGn 0-=P9=LIGn $@I Q M I=LLGn =I@ Gn $I=! Go  9= 9%PTGo3 ,`9$QL1050%\!PY9GoS?[ 5%PMGo ,M 4=!PGo $H1 %MLeIX $M0Go ,M ELITGpc{ $ 011QM$Gp3 , L 1TDGp_  =0Gp  =0Gp $@X1H8=10Q Gp $M15I<Gp 4 MA < (PGq $D L 1T4DQT`Gq/ =1- Gq[ $HHe10 4L!Q<Gqw 0%I\PIQL9$Gq ,A9$QTI=@PGq 8= 54Q%L8Gq (9= 0L%5$PGr  IUPGrC (T0QLM=@%Q$X%5U8Grc (I! 8%80Gr5$ MELGr 5%0Q$Gr (L XI=P !Le,U`Gr (LIXL8IU< 9= U=PHGs7 ,= 9UH! Gsg 0l9$UDQ<-%04I  <I Gs  9$Gs 9%8!PGs $D9= 9PY9=I$58Q8Gt ==8@Gt/ 8M%0P8III<GtK =I9hGts Q$QHGt %!Q Gt Q 9! Gt a8PGt7W , P0Q9eHGu  Q%88Gu7 1 0HGuW (UDE%LQ=TGuw $9= Q%9=$Gu I= Gu <9= 9P =0Y1MIGu ,IQL9$LPGv /7 (LUDE%LQ=TA`8HGvG (T1 \0!Q$U<UAPP1$Gvw $IX $0Gv %@HGv (TIP IX $09$QU<Gv 4=0Q $IXLGw (PH1XI@Q9$=0A<Gw; ,` 9<H1=L%QT9<5eL1=Gwk 05eL1=P1Gw <=4e$=0Q 9=$Gw 0III<50Gw 4!P5$I@PGxC[c  1U8GxO  % 5H@Gxg %L8Gx 0IX $0e,Gx (II=@ %0dGxo < 9$II<Q 8MHGx 0d$|QM8114=!P\!Q$9XGy I<GyW  Y$%1HQLGys 0HQM$IIGy'G  Wu 8 <QLGy 1=QM$Gz 0=  XI=PGz; $@He10H! HGz_  <a%4IGz 1QLGz MM <Gz  %Q10Gz  I=`G{  1XLMG{ 0M%0%PdMHG{G M%0PG{k 4pA<<8AQTQT1%A@81TdG{ 9P!PG{'/ $H9$I$Q =P X@G| <QLATPIPMAG|/ ! HG|W 0d%I\PIQL9$%\!P1L!LLG|w ! HG| IXG|  =0=0G|;O QQA<G} (III<9$G}3Wks IX$G}o IXLG} 8Q49  %1@QLG} 1U0 G} (TIX $090!Q%49%`G} 49I0=IHHG~+  I=! G~S ,%Q$1XTG~s (PI= % 0%I@Q84 $ , =0Q1LQ<G~ XLU1G~ E9UTG $8%QXG/  e,GO ,XQM4, =0%QX=8Gg G U1!LG 0G <G M=8$LG# (T5= 1@`AM$e0QL1dGC 0IQLA$MM Gs  9= G (TMM 50= L5Q9G / $9= @LI%G <I8MQII=HG =IG; 4IXX8IAePGW QLIPG ,]H1 MUMG (9 (PA5TG (%I\P! HG <A4I@A<@HQIG I=814G/ =4=1T (P ],MHIMa%49$G_ $DIP IX $09$G  M=@%Q$9<G  IMT9$IPG QLMUPG $DA4M\P!Q$IG  I 1GC $@AaMH=%LP81 Gc  99G <!\PQPQA49$G  99$G (IP9%4=QHG $@Q9T HX%I1 G M=8A\G7 $DQM= QM8Q9=8GS 19TMMG -4 =08G $DE I%TL! 1UIG $D9$4=I ! IG ,-4@A=HIG 4!PH1I@Ph $PLM!0Gc $H1$G <QL!LQL- A4G (P9= T89%1XTG  Q49 A<G 4=0Q Y$PG7[ (%4HIGO AaHPGs (P1 \0!Q$9$QU@%0G 5U8IG 4Q49 IM%0PG $I=! Gc{ 01ALQ$UI ! 8G/  IGS  IGoƒ« $@M=@%Q$9<9$M%0PG (HT%Q80G³  IG 0IQL9$% G I! 8G? 0IQL9$% Gg U= Q8 ,!PUH%Q84G (%I\P1%G  IUPMG 9IXG 0! L1=@e $G/ PGS 0d9e  MMI<A<QH9=$LGo (A\ULQG $H5= 4MQ9$%Q9<G  MAG'; 1=G , UE,%Q<eG; 4IX 8IM=@G_ 8=I@M HL9T9G 0Q9$MIQ 9=$G 0Q@! I! 8G $D=8UMxI@ 18IG ,XeLQ8P`1 IQ8dG# (TUI ! 8I==0AU,P1GWCg (I=4LUPG 0U8Md=PA=@G $=0PAdG (PI=Q4= IQ81< P0G ,`%L1A4<I@%Q9<90!QG+ $=0 <G_ Q@IP8G ,XQLATQL8HIQL5LG  U10 Goà  UHQU<G $H9%=IH H9I0G 0%5U8UGG 8]8 eI$= Gk MHi$G 49%,<4=!PG <! MI@\HI<GËë  1G  1G# MU@ G; $DMHY1<X%I1 MGW ,\QL!L 9M=09$= =Q8ITG 0dAL9\ ]eX%Q I!PLG %Q$G ,%U9`P4G ó 01LG; YLQ9 G[ ,` ]eX%Q I!P= Q9TG{ 1AL $G (LM   HQ,A<=%P8G 85eLLG  AePG %!PHG3 9$GO  I=PGw 41HM4QT`G =1 LG  MM 50Gm'ww3w_?w`@($8\Xw7K*ċw\`@'&ėA'\T'ъ'*\T''.\T \Xg #GS_kw Ńŏ7śGkwL,ww`07 3?S_k7wC ǻw<`@ ?@@ P999?$P99w`P7w #`0@\T4$7/www,`(@'̎\T '͊\X7',Wco ,0ф<w0`P@@ @)@@+@@" $7{[wH{d(P@$@$D@@pA'̲@(L" X/ LgG7SF?{ʇʓʟʫʷBGZwG  #/;GS_kGw˃ˏ˛˧˳˿0+77w`PgKk̋7̗D]̷̫}w`0w~`P4w2_77?'w`( !73Og7s{L+77Ckw΃w`Lg7ΏΫοw`@w7 #w` 'J\X7/_eKkww`@4$wσϧ7ϳS+pCt  wl`@@@ @@@@!PP@@@ @@@@!PP$(@"  7?7S 8$́ɄMЀa1@MTw4`'@;'2\X7WOkwуw|d(P@@@' #@( '@( '@( ' @( ''@(L# X,O7+?KWc҇ғҟҫҷ 8Q7   !M MMD77kӧӳӿ77g7ճ76O'3w?K_w4`'Ѿ'"'&\TѾ7֋7֟7ַ+7CO[gs׋חף7ׯ777;ٟ7٫wTTGdc3?KWwT`(@'*'̆\T\T@@'.'̆\T '͚'b\XAK;7{wσڻwσ 4pPɄь wdgdg'̗ 3?7KGo  = 4t<ͤ̀Ѥ D<ͤ̀Ѥ̠х 8|ᔠѤռȁw`'\T(8'R\T8@9'\T'28'R\T'2!P {('B\T'^ۯ'ͪ'\T'ͪ@'6\T'\T@'\T 7 $AUL%IMI< 0w4S`P4':\T4@4P4$AKq37G{܏ܛܧ ,\Ʉ 8|Ɍٽwܳw`8'J\Xwܿ=S+2Ow+kww<`@@(@)@(@@8'J\TB P99w HɽLɌٽAKqw `8 '΢\XwwUw,`@@P@(@ )'w,`@P9@@'>\T! (wL`@P@)@($\X@(@\T@ @)@" '\X3w`'f@2@?P'\T@l@l(@@!@@'̂\T@_P'\T(@$P0*@P'\T@0@@@(ݟP'\T(@6$)'^'͂7ݿgwwwww'w3w?wKwWwcwow{w`@' '.\T\T@ (!0(@!@0(@" !P0(@!@9(!P@! A(@! (@A(@!P@1 a(@!  (@a(@B !P1wo 7އw0`8@'͒\T@$)P/ B (ѕL=7m'3?JKw8W`0@0\T0'͊\T$ 0'z\XGWco 9\PG  Q0G  =UD%PQ8G G 8G (L%@ 9U<IPU4aPG# GS  9IXļGk (L9%I Q0=IHHG  I<G (PQLAT9T%8Y$IG   G 1 MTLG 4x1 \0!Q$U IHQ89= 9%PQT9=$G; 8IXLGw $@UE1M P 1 G 0X1H48-G  M%I G ,) <Q  !LG ! L5G+ 0P$8IXGG =Q4Gk (P%!LQ5UL%Q%M%0MPG A4G{ߓߛ ,MH0P9!P 4QL- L94PG $@9I0I<  G/ $H9Ue89%\@Q=HQ G[ ,MUIPUQ HG 81= 0a%49$G 4=0<-1%G $H@0QIG 4E I%T4QT`G $D%5U8ALPQLGC 09= 5ULMHGo III<Gߧ߿ Q1=4G  9 G 9%,G 0(9%<= Q9TG $Q==P9,G? <IU 9H@P =HMMG_ $1XG 0A9$QTIQL5G $@-4 =0X8%I1 G 05= 1%@1$G  ULELG IA=A<LG3 % 5H@GS (T9e  MMI<UMHGs I9%0G , XI=PeP@G Q ! G (=QLHA$G (LMHQ15HU= Q8HG' UDQ<Gc $@9%LQI<IXLG 5G $I !P-9TG (TM=48PY%P9a$5TG 5HY<G  ULHG3  MMGS  !M0QGk PG? 1U80G <-9T]=884=I G (T-4UD 0!MP1G 4H<M%0PG'Gk I=LPG[ UQLGws  IG)k  HG $@Q=U<%MPM%0PG 4IP !MU`G G7 ,-4XQ I<GO (PHQL15I= Q9TIGs AaHG (=0A$G $HIII<A<9%8HG I@a%G <QL8HQU<QU@G+ M@PGS $1 =0QGo YeHG ,\9I40A9HIXLG $@9= 9P)=8A5TM%0PG <G G' A8G? o# I=4Gc  IG 1 PG $@8]9%\ 9U<PG ,XI=Q4I 9U<P=IHHG $1U8P0AdG/  01GO 8%I@Q8M%0P8Gw  aQLG $@A49HYMHGR/7 $M=@%Q$XG ,|4!Q<G Q%9G3 $@5HAU=d$HIXLGS (P\5H==P%Q 9<G 4!PU8I4=QHG ,%5U8%L9G  QPG   QG $@ ,I G3 Y8GS QLI=`Go 1G ,A9Q9ELG 4p A<<I LQA$I<M P 1 G $!  HIPG 4I 9$=I@PG' (L9$I 940P <Y%PG[ H<0@G (LH I M%0TP%Q80G MG 1  0 G 1%0G 0hQU IHQ8U1$9%9%MG/ %!PM8Gg AA9G ,\-4 M=0Y9=I$58Q8G =9$@G HG+ Q0 HG <% L01M5HG7 IQL9$G_ =I\8G 4t9$UDQ<-%04=I ! IG $D=H%8Q9T1$G 4!P=P-<8G 41U4A%Pe0IPG+3c $DQ49 Q4= eP@G_k Q0$dG (PY$TH89%1XTG 8=8=IH0H 5G <Q8I5TMQ8G' ,`4, ]eX%Q I!PGO  QHG %L5U8G 54DG 0G  PG 1%G QUITG# (H=IHHG?  YHMIGc IM%0PG Y01G  $ $H-4 D!MP1G   ULAePG !PIXG  I MELGC (LI9$IQLQ T9=$LGo7  A]0G 8=0< 4%0G 8QL8HA9$QTG =1$G?[ %L18G; QH9ITGWc{ 4HLAATMHLG Q9eHG ( UL%QLQUPG  !Q8G $D1HML! 1UIG $DI8MaQ III<G7 $Q%9 Gc (T=I@  09= Q%9=$Gƒ (M P 1 G³  IG <IP =I@M MLG 1DG' $DY9$MIPAdI@GC =IGo 8YL9%\9%MGË ,\A<<8AQTQT1%A@8Gó AAe0G7Gkw77w@`P(@'̎\T@$@@(@ 7uwt`'v@'Β\T@'z\T@@'ζ\T $'~\X@'B'.\T \X O{T  +#7Cw({`@00'̚\X7Ob/w(`08\T$ 'F\X/ JwS7F'#/wD;`@@'ξ\T'0@wC@'N\T@'R\T0P999P9jc0@40'V\T@'R\T(0P999P9D 0@IG0'Z\T@'R\T0P999P9 \0 }0P99P900P99o'2\T" 'ъ\XZ3+Cw`$w `P4'4'Ύ@'Β\T@@@'^\T$@4!g@(@)'r\TP@)(4 @'2\T$'r'b'b\Xw+ 7Ocw7w0`@@'̎\T@@ '\X7 #/wL`@'̎\T8@@'̎\T@8\T@@2 'f\X/jn7cSwL`@8P''*\T88'r'F'b\X7w(`@@'z\T 'r\X7gsg 7gZLZC'3?KWZ%co{ZCZ=SpK #Z+/;GS_w`Pkww`)(w0~`0   'J\X'rw`w4`@@'v\T'z\T@$7wp`@@@@!@@@@@ ! @@@" @@!@@@@@  @@@" ! [/;LGS_kw(`@'~\T 'v\X7wLw`(@>$Lgο7gS_kw`(w7ww0`8@'҂\T@$(P/ BE 7'w(`0 |@$':g{1Ow`@@'^@'j\T#@'̞\T@'̢\T@0'҆\T'\TQ 0'Ҋ\X'v@'j\T @'z\T @@2 'Ҏ'^'b\X7w` B 8$́ɄMЀa1@MTw` 7 wwwwwwww`w7k  Gw0`@@(@)@@2 '2\Xwx`P'Ғ\T'Җ\T@$'Қ\T'Ҟ P'\T'^@pA 'Ң\Xw<`@@(@)@(@)@@@S '2\XKuO KMN&o{wl`@@(@)'Ҧ 'v@'j\TP@@'z\T2 '*\X'@'Β\T @@2 'Ҫ'n\X@'Ѷ@'Β\T@'\T@('Ү\TPP'% '^@@'\T'*\T1 'Ҧ@ 'v@('j\TPP@)@('z\T@3 '*\X@@2 'Ҳ'n\XwL`@@(@)@(@)@(@)@@@@'Ҷ'Һt 'n\Xw<`@@(@)@(@)@@@S 'Ҿ'n\Xw8`@ ?(@ (@ @ '\X*O7 ;ww`Pw`'\XwD`(@ ((a(@!@z(!P (@@ +?Sg{wH d (P @@ @ @ @ @@\T@@@@'̺@(L Xw`+@@$-@@ 0@@! 1@@1 2@@A 3@@Q 4@@a 5@@q 6 @@ 7 @@ 8 @@ 9 @ wL`P@@$@@$)@$)@$)@$)wdd(P@@@L! X@(@(@)@(@)@(@)@(@@@ @@)@8@(L X/ jw8`@(@)''*\T@@" '*\X7T $@,Twσ37AKw@`@'*\T@'.'͚'b\T 77#7K7u/7u/S{̗  w$` '\X7 4pP͕Ոɕ $w [`' '\Xw7Ccwwww4`@'@@'\T '\Xwq܏7f77777+wqW7c7f 4ɘ 4M 4ɘ 4Mw`07u/7K7W7c77[7g7773777w< `@0'V\T@ 00 +'2\X s  wG7  {  wX`D7     67 G     I%Q 9<G{ ' C $M%0PPAdGߧ $=QLHHG ,X 9MA1TPA<I=%P8G $H9$L4P9IG $@Q=89A<I=%P8GG AD9@Gs ,L09!PG $I=! G 9= LG <9%(9%<=@Q9$G  9%4G 0dU= 0U=dPPM% XU0G3 ]9T9$Gk %\PG  Q9$HG ,\-4 Y]d!$PPI G (Qa <MPG ,%Q$! IG (5UL@ P,G? 5= 1@`Gc %!P8GwA3`0@10'͊'\T\T@@@@*@@@+>@@@@(04000! 00(@'~\T'^@@@'& KA'т\T@(04P7 cG?  w4`@@P@((@@\T! ()wA3`00@''̪\T4@4@t(@@!P@0'͊'̆\T\T(@$P@8t(@@!0)t@@'͊\T@P@(0@(10'͊'\T\T@@@)(@$P$      # /# ; Gw7 SG T  wP{d(P@$@$@$D@@@p A'̲@(L2 X+  '3w?wK wW`0cwmw w <͕ɼɅдɽM KC[# 8|ɼɅL͸ѹw`4w+w 73GS_/ "wp`@@'̪\T@(@@!@@@'͊\T@@'͊'̆\T\T(@$! 7kwww\`@'̎\T8@@@8\T@ P(@@'b\T+'r! /nI w`wxd(P3'R\T@'z\T'@(L X@'''b@(L X7^_7'7u/3.F?K Wcxo{% x x?  #/;c GSx_kwW  #/;GS_JCkAK7wF?;GS~h_kww4`@@'v\T'\T@${7d w@`@'\T0 @'\T 0 P7#dwx`@@@'\T ('v\X@(@(@'\T@@@'\T! @@2 7w`Lg7eK#/w;73SGSdc_Y{kww@`00 ':00'͊\T(04$wp{7;wggw+w7wC`@@'^@'j\T%@'̞\T@'̢\T@0'҆\T'\T@0<R 'Ҋ\X'v@'j\T @'z\T @@2 O'2\X7&w`27'C;GS7_wX`@$@P@@pkA@@pA ''̪\Xww7h #+7c CO7[H; TьЁɘɄ͕͸ɄLwww ,\Յ̀w`'@pAP'\T''\TP ''\T888(L'^'Ҟ P'\T'^E' \T88)\X'^w[ TьЁɘɄ͹ьɄ͜Mgsws ' ,`55$%Q3?wD`(P@'\T@(@@@" $'>\X \͸́ͥ́_w7w'w3w?wKwWwcwow{wwwwwww wt`@88 'ͪ'\T'ͪ@'6\T w'ͪ'\T 8'\X/w0ʳ`0  '2\X4wڻ  ww,ʳ`0@$@'\T 4w(ʳ`00P4$'\Xw 8`,'R\T@'\T@''\Tl@3-@PP(@P9@'\T # \.@PP((@P9@'\T =PP(P@ # o@ P@'\T #@@2  '2\X@@'"\T@@'v\T@Q Q ':@@P@@S #@@@@T @''\Tl@@@@o@ճ@l@(PPP$/@@'\T!P@ @@@'&\T @@@@'V\T @'\Tf P@@c #|o@ @ @'\Tb #dճ@P@@c #@@@OW@($@P@@c # |@@@@d #@@ '*'n\X':@/@(P@@3 # @@'"\T@@R 'v\X@''\Tl@@@@o@ճ@l@(PPP$+@@'\T@@'&\T@@@@'V\T @'\TD P@@C #<o@ @@'\TB Jճ@P@@C s@@@OW@($/@(P@@C #(@@'"\T@@b 'v\X@@b '*'n\X':@@'>\T''.\T\T'.'n\T'^P@@@'\T ':@@@@# #@''\Tl@@@@o@ճ@l@(PPP$@@@'V\T@'\T3 ճ@@!!'\T@@@'\T3 o@ @@'\T2 # @@@OW@($@@@3 #\@@R '*'n\X':@@P@@C #@@'"\T@1 1 @''\Tl@@@@o@ճ@l@(PPP$b@@'\TP@@'&\T @@@@'V\T @'\TU @/@P@@@(@@ @'\TT #.@@@(@@@ @'\TV #(P@@S #po@ @@'\TR #\ճ@P@@S #@@@OW@($@P@@S @@'"\T@1 1 @@r '*'n\X@@'"\T@ .@(@)PP'~@/.@(&@)@.@(@)@.@(@)PP$PP$PP"/"s'\T'^@'>\T''.\T\TA 'v\X/ 2/ 6 ""#"" HѼ܀ȁռͤw0`# 'r':'b\Xw [`00\X \Xw7#/G#7#AKq##wq#AKq##w`'\T(d;PP*OPB@9999'\T'\TPB@9'\T@'>\T@'\T$h'B\T@8\T'B\Tetd;'R\Td;'R\T'B\Td;'R\T(!8@'F\T@d;'R\T@ @8\T'B\Td;'R\T$'^'^@@'J\T@l'B\T'R\T @'N\T@'^'B\T@'R\T@'B\T'R\T P@'V\T'^''B\T@Z@'\T! / ^k$$w`( '͊\Xw `$'2\Xw`( '͊\Xw`( '͊\Xw,%7`0@'͒\T@ )P7%Cw4`@'r\T @'\T$)wL`@'r\T@'\TP@'\T+$P%/ b7&&&;&G&Sw,`8@'2\T P99/ f/ jw8`@@'n\T''.\T \Xw`P@'\T (@'\T@'&\T (@@@($ @'V\T@' '.\T\T'r'͊\T@@@@@T \X@@'v'n\T'z/ zw(`@P)'~\T w0`@*'Κ\T'zwt`@'\T@@@'\T@'2\T" P99#@'2\T" P99wh`@'\T':@@@ @@@ @$$'zw(`@P]'~\T / ӂwP`@@'n\T''.\T\T''.\T \Xm* H М؁ɄLLM7+FO++'+3w`@0 'R\T@'\T 'R\T@ 'R'̆\T\ >7>ŗ>w` '\X7>>???'7?3?S?_?k?w%?σ??oϧ?wT`0 ??'\X0|P4@@7'\X7@_S@@7@A7AggB <̀՝=UD%PQ8MMw`B`@(@@'@'j\T5@'̞\T@'̢\T@@@@! 0@('Ӣ\T@0'Ӧ\T@0<R 'Ҋ\X'^@'j\T@'̞\T@'̢\T@0'Ӧ\T@0<R 'Ҋ\X' @'j\T @@2 'Ӫ\X'v@'j\T @'z\T #@@2 B'2\X7C+DOD[DgODsDw`7'wDDD/ w$`8)8'Ӯ\Xw`8(8\XDDDDw,`@@ @(@\T@*)gDDD c EEGE#E'E3w0`E? 'r'Ӳ'b\X7E{7E7Ew`P8\XwEwEwE 8Յȵ͔ɅռɕwE7FF+FFFFF7FG;GGGSG_GkGwGGGGGwGGGG+sGHHHBH+H7wHC  HOHo H{HHHHwl`@@P@('Ӷ\T@$l@@@'Ӻ'z\T@s@@)(@))(@@)'f\TUt(''@h'\T@h'\TS?'R\T@ @@pA'FS?@9'\T@@'*\T@'\T @@)'b\Ta #@H'ͪ'\T('B\X 7I7I+7I?7I7J7J/7J7J7J7KK7K7K7LS7L7L MM+7M7MwM XՍ܁͔̀Ѥ͝M  8{84w 4p МɹЀɅэɔGMMM Xѹ$ɔɔɼɕ ́ͅɅЁwMNNNN+ N7NCNON[ L$Ʌ սѸ܀Ȁ 4p$ɼЀɄь DPЀѼԁ͕ @Pф̈́Ѥ܀͔ ɹT  ѽ#NgNsTNN (T$ɼЀwd[`@$0 N'2\T'^D@@pNA'Ң\TP4@@" \X7Ow `'Ӿ'̪\X7O'wqOS7O_7OwqOwOwPwwZPwZPwP+wZ/WP7PEwPf+PP X\͕ьMͅ܀ɔͤȀPw%7`@@'\T @@P'Κ\T'^0@'͒\T@@0@''\T4@@Qg'Κ\ T@@@+0@@4 Pw`5Q7QQQQwQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQR QRR3QRGR[QQQQQQQQQQQQQQQQQQQRoRRRRQQRQQQQQRQQRQSQQQS#QQS7SKQS_QQQQQQQQQQQQQQQQQQQQQQQQQQQQQSsQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSSwS H܁̈́ɼxw`P7SSSSw,` 'R\T '\X7S TOT[TgwTsw,`@@'\T@ )P7TmTwW`@4@4(4(40''̪\T40t(@@!P@0'͊'̆\T\T(@$P 7T KU7UCw_,7UOK?UUUw` 8\X/ *sAoUU7UGV w`8wL`@@'r''b\T$'r'F'b\XVZVwhV`@'\T *O'R\T@P @'\T8\T(0'̎\T / Jw.C 7VxWWWw`@P@ &O@P99 P9@(! 8\Xm@(@>P999P9m@W+99(@'B'̪\T 'ъ\X/ w`(Ew(WK`@'V@ '\X7WWWsFO_WWwW`0d WWWWWYCWW7Ww X`@0@\T4 AK+0? X7X3@kXGXSX_wX`@'̎'\T@(@''*\T@'̪\T'@ ''̆\ T'͊'̆\T(@@@! 'v@('j\T@@@)@('z\T# @(@@'''͊@(@ @@ @'~\T'^@(@@ @ @@)@ )@@@\T@ @ @\T@(@( wx`@'̎\T@@'̪\T@(@@!@@'͊\T@@'͊'̆\T\T(@$ 7XSY+Y7YCwx`@ @1 @(@(@@@\T@(@@)@@8\T@b @@@(@@)8\T@b / jwd`(@!! (@@@@@'b\T@@@@@@8\T@ @ @@ @8\T @f \X/ n7YOYw8`@@('\T)'ͮ\XPw7YYZ ZZ# ,1d 8l1dLt @Tݽ=% H1I@Q9$4 %Lw\`'\TP3@9'\T@Z/'2\T@'\T 7Z{ZZZZAZZwD`@@' '.\T\T@'̂'̆\T$ \X 1XwZ`Z'\Tt@ [ '\T@t0'\Tr@P99P9@0'\Tc@P99P9@0'\Tt @ c@P99P9PP9999991 '\X7[3FO[g[s[w@[`P@0'\Tt0'\T 'ъ\X7[87[[[w([`t@ ['\T@'\TG@ *O'R\T0'\T*OG@@'\T((@99'\TG0'\T@'\T$G@P D@P99P9@t@ c@P99P9PP9991 '\X7\;3\\\w \`0@\T4$wZ\7\]?]K]_]k]ww]`(0'̎\T! ]'2\XP0@'̎\T( @@('\T@2 'ъ\X@t@('\T]P9P999'\T$)7]FO]]^=SZ^wT^`@00'\T@00'\T@'\T'̎\T@@B 7^S___w\_`0'̎\T@(0'>\T'&_A'\T'\Tt0'\T'0 @P99P9/t0'\T@P?@P99_P99_`P99P999'\TG@@@'ц\TPG@`t@` @P99P9P999991 '\X7`'`K`W`k`w`JJ `Mͤ́ɔ̈́屸Ѐ͕՝ <Mͤݽх̀w`@  @'J\T'^@(@ P@`'̚\T@@B '̚\X@@('N\T@@@(@PP@E )'\X7`|/bbbw`P@kbbbLbccwc`007c+cGcSc_x/7ck (T$хЁwcw`@@'f@'j\T@'Ӛ\T@'Ӟ\T@'v\T2 ' @'j\T@0'v\T@0'v\T2 '\X'v@'j\T @'z\T c'2\X7cLdddddw`0(( 7dw`w7deee'w `''\X7eGe[eoe{e%7dceeGe HфЁͽLͤɱͽ  @ $HսМM (L$ɼЀw@`@0 |@@ee'\T'r7fSf'w,`8@8@P8@'̎\T@'̎\T@@ @@'\T@@! (P9@2 P99@@@@@'\TP' \T@@(@'\T'>\T@)@@'\T@(f[@'Ӻ\TP@$@'\T' \T$)@8@81 8/w`(@ ''̞\T@'\TP@@(@ '"'̞\T@'\TP$@((@@@@(<@;@)@A @@@<@C '̦'̪\Xggfwfwf <8ոɔ՝5%PMLLw$f`@@'^@'j\TI@'̞\T@'̢\T@0 @0'&\TQ 0'Ҋ\X0@'\T@0'*\TQ 0'Ҋ\X0@'*\T@R 'Ҋ\X' @'j\T @@2 '.\X'v@'j\T @'z\T @@2 f'2\X7g'/h7hChO/ h[hg7hs7hhhi Z_ii#i/i;iG7u/iSZi_ikiw#i7i i <͕HЀѸw$`i '\Xw`Pw$`D'2'6\X7j'7jo7j7jw`'\T@':\T'>P>'B'F'J'N\T'^@'\T  jkΧkkk+wl`k@''\T(@@ '@'j\TP@! @@2 '\XP# k7kCΧkOk[kgksk kkGkkH;kkkk kkΧkllk#ll'7l3 4lll ٔllmmmwm' 0lݽ́ѥ題w(`@@R m3'2\Xw`Pw`H'R\T@T'R\T'R\TP@ @@m@'\T$'͂'\T (#@9'\T@@1'N\T@'\Ta w`'\Xw`'V\XwT`'\TP3@9'\T@@'N\T@'\Ta wT`'\T(#@9'\T@@'N\T@'\Ta w `@@R 'N\XwT`'\T (#@9'\T@@'N\T@'\Ta wT`'\T(#@9'\T@@'N\T@'\Ta w8`(@ s@R 'J\X'w|`@ m'2\X'\T@'Z\T#@9'\T@@'N\T@'\Ta wT`'\TP3@9'\T@@'N\T@'\Ta wT`'\T(#@9'\T@@'N\T@'\Ta w$`~@B 'J\Xmn nn#w|d(P@ @8@(L X@( @8@(L X@( @8@(L X@P8@(L X/^bfj7n7nKnnn7o̗oWwocooo{oooonooooTop  pp# @ ɰ呄̀ɼɼw8`@888\Tp/'2\Xw[`P4w,po`@0'\T@ )P7p{wL_`@@@\T 0@@@@('\T@1 )PwDp`@@'\T 0 '\X p'2\X7q_7q7r7r_7r7rssEE'sss/sK7sWsssstAKqtt \͹ɍL܁Lɕɰ呄Ʌt/t;w 8MɱɌMtGw`wQ7tStkt7twuwuwuwuwuwuwuwuwuwuwvwvwvwv'wv3wv?wvKwvWwvcwvov{vvvvv7vw`P7xxxxyw` `0''\T y'Κ\X@0'''̆\T \X7yS4/Myy7yw4`@@'̎\Tz@ '\XzwxA3`(@ @z'2\T'^(40(@@!P@0'͊'̆\T\T(@$P7{23{cwh{o`@$@p{{A0'̎\T(@@!@0'͊\T@'n\T(@$P7T K{{{{{{w{`(''@h'\T@h'\T8'R\T0@p{A(P9998@9'\T@''r'b\T@'\T! 7|y|/|;w |G`'07|S}}}#}/};@w}G}Sw}_`@48\X/ v}k}}}}?wZ}7}./~'~3~?Cxw` ~Kww~W`07~c~~~~~~w`@'̎\T(@(@@!7@@'͊\T@@'͊\T@@'͊'̆\T\T@@@'͊'̆\T\T(@(@" 7~[o{wx`@ @1 @(@(@\T@@@(@@)8\T@+1 @(@@)@@8\T@+ / w$`@@'z\T w7g LЁɼLͅ= H/ ~w7+7CO[gLs M1w 9$ww4`@0@\T@0@\T@0@# \X7Cw4`@0'V\T@( 0'V\X7 w$G%  9Q ! w ww`@( (@'̎\T P@'\T'>\T4 @'2\T$'r'b'b\X7+C77wDW`'Ԃ@'Ԇ\T08\T 0'Ԋ\T$(/ ԎwZ7$G=S 4t &Ow `@0@# 'Ԓ\X7'3pK?wKwW wHc`t@ o'\T@'\TG@ *O'R\T@*O@9'\TG@P D@P99P9G0'\T)tP00@@G@('\Tc@(P99'ъ\T@)@# )t@ c@P99P9PP9999'\T@'\T1 7$3+w `t '\X&O'3?w$`@@@8\T \X/ Ԗw`k 7_  w`7'R\T 7'R\T(!P # 'J\X@('\T7'R\T (7'R\TP7@9'\T@'Ԛ\T@)'r\T@))PP@'Ԛ\T@'J\T@@)('N\zT@@)'r\T@))PP@'̚\T@@)('N\NT#@@)'r\T@))PP,@'J\T@@)('N\"T(@'J\T@'7'R\TP@'\T@'\T1 77w7^'[w`(00? 7'x/73w? (T$хЁwK`@@'f@'j\T!@'\T@'\T@0@0@0@0R '\X' @'j\T @0@02 '\X'v@'j\T @'z\T W'2\X7?w`@"$w$`@'Ԟ\T$7 ww` w7'kw7 @Ѐ̀ЁͽѤ  @w`0 |7ww4{w4{+777gg3w?wK <8ոɔձȽMMwW`@(0 '@! @@@PP@@PP'̦@-@'̞\Tt@0@@ @0'\XP@P@)$)$@B 'Ԣ\X'@'j\T@'\T@'\T@B !@@B w'2\X74# wt`@@'@'j\T@@2 'v@'j\T @'z\T @@2 '2\X7GG/ Ԧ73S337C wL`@@'r''b\T$'r'r'b\X $DTѸOswwH`@( @P9@*@(@+ @P9@)+@))@+(w`(w(`@,@@)@ (w(`'2'Ԫ\TCww 7H; 7H;?K+Wco{Gw 7Gw   7H;COF{([gw|`(P@@B@'r\T@'>\T''.\T2 \XP@'r\TP(@@@"  sw 7 PTݽɼфɅэɔ Ʉ՜ѹMw  M @HոɔͰɄєѹ1O wwwwwL`@ '2\XS(@ 'B'̪\Xwʳ`P473SS_kwwP`@' '.\T\T@9(!0($@Z(!7($W($!g H;!H; S{ @PɄЁȁѹȀwlpo`@P@0''̆\T$ \XP@ @'Ԯ\T@@0''̆\T$ \X' lL͸НɽIi< 8Iwdp`@@'\T@@P0@1 4@@P 0@'Բ\T1 4'͂w@`'b@'Β\T@@'Զ\T '̪\Xw\`6O'R\T(!@GP'\T'̶'"\X'^w(`@'J@ 'Ժ\Xw `'N 'Ԇ\Xw``@'Ծ\T@'\T@@'Ԃ\T@@'\TWdsccP7oW{Ewt`'R\T @'\Td;'R\T(!@'\T''^'\Xw77KWc7owq7w`P4wt7w`PP@'\T@@! ':@@@''.\T\TB ''n\Xo@''͊\T@)@'\T':@@''.\T\T'.'n\T'^P@@@@B @@+@@B 7;7k7G77K77K77K777?77777C77G7 3*{?KWkww`PP@'\T@@'\T @'\T1 @'v\T'z@@@" '~@$0@x@'v\T'z@'~@ P@''n\T':@ P@''n\T@'\T@@'\T@'\T@Q @@+1 @'v\T'z@@P9@@''n\T@@''n\T@@" #':@@@''n\T@@" #P@@@@2 #|@@+@@2 #Xw`$wZK7W DфЁȁɕ́MɼwTd(P@$@P'\T@pcA'̲@(L X4Mw`@''.\T\T'V\T'\TPH@9'\T@P'\T@'\T@@P@(@(''.\T\T@'\T @(P'\T'^) (L̈́д3 LЁ́єͅЁЁLɕwHW`P(0@ $@@0'͊\T'ъ\T(@ 7?mw `@) (8\X7S23w {7 K7w,`@@(P$8'\Xw{`@4$+7CwO`03@@'ξ\Tw0G 0'\T@8\T'ъ\TP999P99P9 'ъ\X'0 0'\X0[9 P9/ w}# 7{c7EwZ}77wl`P4P4P4'@'\T0@pA'n\T00'ъ\T$47 [#w #`@@" 0'\Xw7/ o{7#w?w`@'̎\T@@'̪\T(@@(@@!@@@'͊\T@@'͊'̆\T\T(@$ w7K wt`@@$@@('\T@@(''т\T$)'z\X@@)'z\T$(7+7/ 7Ckzw77LOw,[`0@\T0@\T0 \X7g3%Cwl`'Ԃ@'Ԇ\T08\T@' '̆\T0'Ԋ\T(0P999 '\X/ Ԏ7G+77% 4tɼɅL  Q w K`@0@\T4 7Wsw `'Ԃ 'Ԇ\XCw w7w`08\X/ 7FO=Sw `0 'n\X73CO[Wg7s7 $9 0M1wX`@'\T *O'R\T@P @'\T$8\X(/ J77CWco{jk3?w wl`0'̎\T0'\T@'\T@'\T'\T@'"\T@@@\T@@@@@ $lt@PG@P9 S@P99P9@'\T'ъ\TG@@@'ц\TP'ъ\T'&@'Β\T00'>\T'&A'\T'\Tb 'ъ\X! '2\Xw 7K+7wC  w@`@(@\T)'*\X@@)'*\T$(7O w`P7[w`00?7';GSx/7_7 (T$хЁw(`00'f'̪\X7w`P7 C/;GwD`(@ ((A(@!@Z(!P(@@ 7SwH`@4(40'̎\T4$'r''b\Xw`0 |77@K7WDw`@PP @(@@@@P9@+'^ )@(@<@;P@@>@+@@@3 )w|`@@@@$P@'̎\T@'̎\T@@!@@@@@@@@'.@!$(((@@'B'̪\Tvt@@@m@(@^at@(@@@( 4@@(<@(@;;@@@@>@@*@@@)PP@+'^@)*'^@@@(<@(@;;@@>@*(@@@@)@D )'^@)$)'^q (@@@@'2\T@)@(@@@'2\T@)@(@@'Ӧ\T@<@@'&\T@@'&\T'Ӧ\T@@'Ӧ\T @@ @@@'&\T@'*\T@'6\T  '6\X@@@@@ @'&\T'Ӧ\T'*\T '6\X77ggw Dɔɽ̀՝LLw`(0 7co{M{  8̀%P%UDXwt`@@'@'j\T@@2 'v@'j\T @'z\T @@2 '2\X7WKWc[o{7g <'3?w7K7#w(s`''ӊ'b\X7G#w$s`(''@h'\T@hkt(''@h'\T@h'\T8'R\T00P'\T@pA(P9998@9'\T@''ӊ'b\T@'\T@'\T 00'*\X7GGw Χ w<`@'\T'6':'b\X #+w,`(''@h'\T@hkt(''@h'\T@h'\T8'R\T0007P'\T@psA(P9998@9'\T@''ӊ'b\T@'\T@'\T 000'b'*\X7GOC+7 CW7cw w`@'̎\T@(!>-(@'͊\T'Ӻ\T(-(@'͊\T'Ӻ\T((@@! @@@@# '\XPPP7wm 77 7'7; DЁM%0Pѥ͝7K_k̗ w7GS{o7GS{w'ew3  Y?+WhEc\؃wZwww@`@@'J\T_'B\T$'>\XwqK7Tq+w@`'@@'\T@@@" '\XP77w`]S‡w0“`'P94@(9P94P4Ÿ«·w0`@@'v'n\T'zw`@P)'~\T@'̎\T@@@@$@@!@@7'\T'^@''̪\TP@(@@!"@@(@@@@'͊'̆\T\T@@@)P(@3 Q wP`@ @@'B'n\T'^8@'2\T" P99/ Fw`@ @@'B'n\T'^@'2\T'Ӓ\T '2\X'\TP@9'\T@'2\T@'\T'zw`@ @@'B'n\T'^@'2\T'Ӓ\T$'\TP@9'\T@'2\T@'\T'z '2\Xw\`@ @@'B'n\T'^T'R\T@'2\T" 'J\Xwx`@ @@'B'n\T'^'\T(,@9'\T@'2\T@'\T1 w`@ @@'B'n\T'^@'2\T@))@@ã'\T'^@)(@2 ('\Xwx`@ @@'B'n\T'^'\T (,@9'\T@'2\T@'\T1 wD`@ @@'B'n\T'^@'2\T! w8`@ @@'B'n\T'^Pwd`@ @@'B'n\T'^@'2\TW'\T! wx`@ @@'B'n\T'^'\T(,@9'\T@'2\T@'\T1 wx`@@@@'N'n\T$'\T@,@9'\T@'2\T@'\TA w8`@ @@'B'n\T'^Pwx`@ @@'B'n\T'^'\T(,@9'\T@'2\T@'\T1 w`@'2\T@'R\T@ @@@@@@U \X@@@@@B;$ '\T@P]'~\TA w`@@@@+ŋ'\T'^@@'"\T@'2\T@''.\T\T@'̎\T(@ (@R '͊\X@'V\T@'>'.\T\T@a 1 '\X/ Zw`@ @@'B'n\T'^@'\T(':@ 1 '^'n\X#@@'\T|@ @'\T(@" @@" |@(@'\T#@(@ 'z@'\T(@" @@" @'\T$̗wƇƓƟƫƷ v{ w7H;3w?KWco{LJǓǟǫǷ««7 wx+`c0@@\0@@'000'b\TP$$@' @P99 '\Xw 7O$Gȗȣȯ \ɅɄ̈́ռɼw|`@''.\T'\T8''.\T\T'ъ'*\T''.\T \X Ȼ ($w JwW`0wHA3`P(0@ $@@0'͊\T'ъ\T(@ 7wl`@@'̎\T(@'̂'\T\T|@ @'f'n\T  ''̪\XE #/;L3GwwS`07_FOɷw`@@8\TP@@'̎\T ! '>\X@('ή\T4@(@'̎\T@@'j\T@('ή\T @@3@P992 @)@z@P992 @8\T@)@&O@(P99" /nrEw `' '\X87\#/w `' '\X;w`8'\T@@'v\TP@@'z'̆\T \X@'\T @'\T$P@@'z'̆\T\TP@@'~'̆\T \Xw`Pw 7ʏʣʷC[#w@`0 8C00P9998C0P997'3wP@(@( @( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X8@L$X/ՂՆՊՎՒ7ˣwX`@'̎\T(@@!@@@'͊'̆\T\T(@$$7̷̫wP`@P@@('\T)'\X@@)'\T$(w7 Kw(`@'z\T$8\X/ Ֆ7C'3_wT`8@?P'\T''.\T\T(88$/ ՚w<`P@'>\T@ @@('ъ\T$)$SL_w8k`0@\T40@\T40@\T4$7w$GͳͿ%Cww$`@0'J\T4$73ηw`0%w`@0@# \X7FO+777Kw `'Ծ '\XCw`$7Ͽ=Sw$`0@'\T4$7G/;G9wH`@@'V\T@@@2 '͊\X@@2 S'2\Xw`0WЋw\З`'F@'Ԇ\T@8\T@'՞\T@@ 0'բ'\T$~(d;'R\Td;'R'̆\T\T ;g'̪P99g'P99P99g'P99P9099?0P900'&A' \T'ъ\T9P9990'&A'\T9$'>\X/ զwZ7#Wkwуя7ћҳ+kw `t '\X P \ոɕɄ՜ѹЁɕфMw`@'\T0'\T'̎\T0'̎\T X0'>\T'&A'\T'\T@t@0'\TG@P 0'̎\T('F\T@ S@P99P9PP9999! '\X'2\Xc_kw7Ӄӳw<`@@()'ժ\X@@)'ժ\T$(7ӿK?+7w0d(P@8'̲@(L X/ ծ7W{ԇԓ[ԟwԫ`07Էw,`(@$'f'̪\Xx/7w,`00'f'̪\X7CO[Wgsw$`@@ P7 _Ջ՗գw0`@P9''.\T \X7կwX`@'>\T@'>\T@P@(@( @)$)@(@2 (!wL`@@'ղ\T@(@)@@PP@@@R P999/wL`@'̎\T@'̎\T@@ @@2 '\X@@2 !9;wGwSwD`P @(@@2@@@P9@+'^ )@@@+ )@(@;P@@>@+@@@3 )@(@@@P9@+'^ )@(@;P@@>@+@@@C )@@(@;P@@>@+@@@C )@(@(@;;P@@>@+@@@)@D )wh`P @@(@@E@@ _'2\T'^P@+ )@@@+ )@(@;@@P@@@@@@+@@?@d )@6@@ ֗'2\XP@+ )@(@;@@P@@@@@@+@@?@t )@(@(@;@@P@@@@@@+@@?@)@u )7ggw`@@'̦@'j\T@'̢\T0 @'̞\T1 0'Ӻ\XP' @'j\TP'v@'j\T @'z\T @@2 '2\X77gWcow {ׇ 8|̀%8PI<wt`@@'@'j\T@@2 'v@'j\T @'z\T @@2 ד'2\X7?KW9cow,{`@4@4P4P4 7؇1o{هw7ٓ3 #/wT`('ն7'B@h'@h@p_A$ \XwL`@@ @@@8\T@B'r/ պTw|s`0'̎\T@@0@'\T0 o@'\T'^@0'վ\Tۓ@" '\X7ۣT ,`ѕHMw,`@@(P$8'\Xw|s`0'̎\T@@0 @'\T0 ?@'\T'^@0'վ\TO@" '\X7_ ܯܻ7H;# $ф#'T3? <ѕHUMxI@MЀMw,`@@(P$8'\Xw`0'̎\T@@00K@'\T0 ޗ@'\T'^@0'վ\Tާ@" '\X7޷c  #Cw0`OP'\T('B\X7 wWc ww`@''\T@@)@@'\T@@@P P@! @@'\T@@@B +@@'''̆\T\T1 m1Ow@d(P@@@" 8\X@@8@(L" X/^w`@@@# 99w`w`w`P7c7 COw(N`00[@ '\X7o S{#/w(NC`0;@ '\X7{77P77SWW\7o7w`@$(''@h'\T@h@@@pA0'\T0@p?A" '\X_kwwP`@@'@@'\T@@@$''̆\T$ \Xo h P͸L͝Ѐ؁эɼ 4t$ɼЀѹw D ͤѹ 4t$ɼЀѹ <$ɔɄѼɽ @ѕHЀɼ͔ᔀэո+AK7C 8PэͤԀ <ѕH `܁ ̈́ռɕՈ Ѽɔѹє 0h$ɼЀѹ̀wW PPЀMѸєɄь DLɕЀȀco{Acv{ H;̗̗ w@`@'''b\T$ P'\X7+7'KWco{''̗ #/o;GS_kw `' 'Ԇ\XmwAK wH`'0P00'b'̆\T \X'7W_kw7uwA3`0$c@wX`'00@ 0'̎\T@'b\T0'ъ\T0 0'V\X7'}kS_kwwwwxKAKAKAKw`0wʷ 7W'3?[#KwW`0'Ӻ\XAK7cwwwwwww0`(@ 'B'̪\Xw`@@@ @@T@'̎\T@'̎\T@ B@@1 (@(@@ @@'͊\T@@'͊\Tb 'Ӻ\X@@'͊\T@@'͊\T'Ӻ\T(@$PPP7kw@`P@@ @@('\T@@($))7u/ 7wE _Lw<`@0@\T4@0@\T4@0@\T4 7G+7%7Cw`j@((@'̎\T @'\T'β\TPP@'\T'>\T4@'\T'>\T4 @'2\T$'r'b'b\X7+%w `0@\T4$7'~?KwW`0wt`'Ѳ@'Β\T&'z@'\T'Β\T@'\T'\T$' PPwc`0 \X7oG=Sw(`@0@'͞\T4 7s ,\ МLȁM9pKwww$`j@@ P999w`Pw7w4`@0''͞\T$0'\XwZ7#sww`'08'z0'Β\T'0'\T'Β\TP8'Z0'Β\T 0'\TcP8'Ѣ0'Β\T 0'\T'P8'Ѣ0'Β\T0'\T$'2\X8/++t7w `t '\X P \ոɕɄ՜ѹЁ7CFO+7Cw0`8@'͒\T@$)P/ w``@@@ @'r\T@(@('Ӻ\T @)@" )'Ӻ\XPP7[ww$`'2\X7!s[+w7`07CKCwx/7w<`@'\T0@'\T0 '\X7?R 7 ?KWwH`@'κ\T (@ (@  !c'2\X7gw77S 8ф͕ѱѤͤ 8ф͕ѱѤͤw`@gg @ɔɽ̀w `00'Ҋ\X7$L  8̀%8P9wt`@@'@'j\T@@2 'v@'j\T @'z\T @@2 '2\X7/Z_w`3'R\T@@@" 'N''b\XP@@0000 @% '\X@3@'\T@@" 'N''b\X C'2\X7w@`@@@'z\T@! -'2\Xw7;WcoO{Gw`8l8l''B' \T@''B'F\T@J8lF8lBP>88w  PЁLͤМх܀ѤɄA w  wPs`@4@4@P'\T@" 'r'ӊ'b\X O 4xѕ܁LѤɄA   wPs`@4@4@[P'\T@" 'r'ӊ'b\X#w$`(''@h'\T@hkt(''@h'\T@h'\T8'R\T00P'\T@pA(P9998@9'\T@''ӊ'b\T@'\T@'\T 00'*\X7GTT  LUMxI@ٽLɼMѥ@   wT`@4@4@4@P'\T@2 'r'ӊ'b\X3 4Ɍ'?  <(ٕ((@ѹЀ͕ͤᔀѤ((ٔх<ͤᔀ܀ͤ)Ёāѽɼ((0(( ()LЀ́ѱ(ɔ̀ɼIH)LфѤ((ɡ8ɡЁх((ѥѤ͔Ѐͤ(((дȁ̀崀ᔴ)ѤwL`T'R\T@''̪\T'2\T 'J\X7Kww  ͐_ Dwwww@ʳ`@@'g'\T'rP47# d4ɽ̀ѸЁѸLѹɔ܁Ȁ wLN`@4@4P'\T@" 'r':'b\XS{T @=ɕpЀMw0NC`@4$'r''b\XwP`@''.\T\T'ъ\T$''̪\Xw `''т\XP77OEP7[sEP7Ew `' '\Xw8`PP''̪\T@P@ '\Xwl`@8@@8'\T'^8@8'"\T@! 8'\X'^w `8 '\X7+t7CO[gsH;v{7v{ #/7;kww7v{s̗ 7W  # /; 8$ɼЀwT`G@'\T@@'6''b\T[ '\Xw`@'\T @@@- @@@" @@@':@@''\TP$$$ @'\TP {̗H;oH; ̗#/H;;G S_H;kw'H;x7wmw`\00@'\T0@'&\TPP5@g0@'\TP99'\T0@'*'̆\T\T@@'.'̆\T\T $7sw7_kw,`0@\T0@\T 0 \X7   7 7 S7 C  ?D www3+w `07 'G G S _x[#w k`0AKc7 wX 7  O7 k7 7 7 w`@'̎\T@'̎\T@@(@@!P(@@!A @@@'͊\T@@'͊\T@($@( 7 / 27 OE [ g s_ L wT `@'J@'Ժ\T0'z 0'\T00$7 s_kww<`@'>\T@'\T@'\T %C 0lɼɅLLQw0`@0@\T4@0@\T4 7%w`0 \X73?CwK`@0@# \X7Wx=Sw`?@( @''2\T'@'̎\T(! @)'>'\T4(@'̎\T P'>\TP94'͂$'r'b'b\Xw7[~=SWw(`@'@ '\XwZ7wT `@@'6''b\T@0'6'͞\T 0'6\X77CO[+gw \ Mͤ܀̀фɼɄͽѤѕwGws`'z0'Β\T*'0'\T'Β\T'&0'\T'Β\T'0PPP@00'>\T@@@0'V\T'0@A @(Q 0'V\X@@('V\T@)@( 7w0`P@@'b'̆\T\T7,s+77 <ͽw`7^_[w4`000'*'̪\X7/x/7+w(`@'Ӟ\T$':\X7?_kww`P7o 4x$фЀ͕LLw`77Cwx`@@!,P @@@@@ P@+@@r )@(P@@@@@@+(@@T )P@" wt`P @@@@ @@'&\T@+! )@ P(@+(@@# P@(@+(@@# )gg[wg`c'R\T00s@'\T$#'R\T ( 6(0 -@'J\T'^0'>\T@@('N\T@)@$@(@@'>\T)'N'^'b\X74gk  8|̀%`PI<wt`@@'@'j\T@@2 'v@'j\T @'z\T @@2 '2\X7Z_   (T1lei= M8t 0 LTݽ%U0 I<1 $@9%H4P% Mw`D7J 0d8̈́ффwD`@@@'z\T@@@B +'2\X,O7?e3gs7{3w7w7 <ѕHɘЁЁL <ѕHɘЁЁLT+ ,`ѕHMw,`@@(P$8'\Xwxk`0'̎\T000@'\T0 G@'\T'^@0'վ\TW '\X7g   <ѕHɘЁЁLH   w,`T'R\T 'B\X7+w L77 + @ѕ9TH I ЁLѼ  @w ʳ`0((T [ g 8$ɼЀԁɸɄьT s   $Ʌ+P7 Q3]S   +P7 hPO !+P7O3!!;!Ww!cw!ow`!{`@0'B'.\T\T@8\T@0!8\T'r!8\X/ ӆ!!!!" "o"#"/7";G"ck"o"{W""w,`@@@'J\T 'R\Xė""W""w0`8@'͒\T@$)P/ F7"#w`@''.\T\T(@'͊\T@'V\T@@@'̎\T@'\T@#t(@@!@@'͊\T@@'͊'̆\T\T(@$P@(@'͊'̆\T\T@''.\TR \Xo#+c#7#CH;#O#[ #g#sw8#`000B;#@ '\X7#G#̗ ###$$ P 8ͤԀ$$+$7$C' $O$[7$gG$'$$7$G%' %%7%'G%g̗ %s%7%G%o%%7%G%w & `0 '\Xx&m&#w|&/`c0P00'~'̆\T \X0c0PP00'J'̆\T \X'͂wZ&S7&_'C'O'['g's''''''w``@@'̎\T(@'̂'\T\T |@8P@'N'n\T$/ Rw7'(_(s((=S(((((b/(w(`'@'\T0R'Ѫ 0'Β\T 0? 0P99'\T 4'0 Dp(A'\T@'V'n\T 0'Z\T@'ъ\T 0'Z'̆\T \X'^7)?7)w)w``@@'͊\T@((@@'b\T9(@(@'\T'ъ\T 9wH`@(@@@@('ή\T$@@" @)@( w\`@'^\T@'^\T'&)A'\T'ъ\T '>\X))))w )`@40'ъ\X7)~****w*`07*wd(P@@@@@@@a @( @8@(Lr X@( @8@(Lr X@( @8@(Lr X@( @8@(Lr X@8@(Lr X/ՂՆՊՎՒw$`@@@@@E w `@@@@4 w`@@@# w`wp`@'̎\T@'\T(@@!@@'͊\T@@'͊'̆\T\T(@$ / b7*c*++_+L++w+7`@( (@'̎\T P*@'\T'>\T4@'\T'>\T4@'f\T'>\T4 @+W'2\T$'r'b'b\X7++~+++%C+w(+`@0@\T@0@# \X7+FO,,+,7%w,,C`t0'j\T P99w7,OCw,c`"@((@'̎\T @'\T'β\TPP@'\T'>\T4 @,o'2\T$'r'b'b\X7,,3,,,=S 4pɼɅL1- <w(,`0'Z\T$8\X/ n7--7-K-W-c-oW-{7--w(`@'6@ '\X-w `8 '\X/ n7--./--. .+.#w4./`0@\T0@'n\T0 \X7.;.w..u`.w$`@'\T$,7.,...wt`@@(@)@@'̪'*\TS?'R\T@P@((@'j\T@@R ()\X)w`7.G///'/3w/?`0(!7/K/c/o/{x/ /w /`0000 7////w/w4d(P@@8@(L X/ r70 0#0C0Ow`3'R\T=#@'J\T\@'J\T@'v\T @''.\T\TP@ @@@2 'N\X@@" 'J\X 'J\Xw70[h00wh`@'̎\T@'̎\T@@ @@'\T@@!$((@@!t@8@8(@ @(@)(@<;@(8'^(@ @(@)(@<;8@>'̞\T8@B (@ @(@)(@<;8@>'̞\T8@B @(8@>'̞\T8@B @8 @8@'>\T8'^@'>\T@(8(@!@@ 8)(@@<;@@)(@@<;#@c(!?@@ 8))(8)( (<;@<; 8)(@ (<;@))(@)( (<;@<;y@ (!8@@ d(8))(8)(d(<;@= <; d(8)(@d(<;d(@))(@)(d(<;@= <;=@@  (8))(8)(<;@bZ<;  (8)(@<; (@))(@)(<;@bZ<;(@!( @@!<@@@'Ӣ\T @ @'*\TP@@@ @'\T<@P@@'*\T(@#  @@'*\T@@'ղ\T@)P@(@ @)@'*\T(@(@ @@'\T @ @'*\T@ + P@@'&\T@(# /z~ւֆgg0 89$5TLw0w0`0700301 4x̀%>>/>;>G>Sx>w>>> >>w7>>'s>>wl`@@'̎\T(@'̂'\T\T|@ @'֚'n\T  '֞'̪\Xw7?G??????@+@@w<`8j@'֢@P99P999 '\XAK-7w8@G`0@\T40@\T4 0@\T 4$]K@S@_@kw@ww`ڷG@@@?@3+@w@`P'R'̆\T\T@4P4P4P4P40'β'Ӗ\T @@'2\T' 'r'b'b\X7A =A;AGASA_AkwAw`4/ ֦7AAAA_ALAwA 0hɼɅL$w$A`08\T08\X/ n7AB+B?BKBW%CBcw,Bo`0@\T40@\T4$7B{~BBB%wB`0C @ɼɅL4-=0Q Y$wB`08\X/ ֪7B~C C=Sw0C#`0'j'\T 9w7C/)'CCCO=SC[wCg`@48\X/ ֮WCsw,`'@'\T8\X/ n7CCCCCC+Cw<C`0@\T40@'\T40@\T4$7CGD#D/D;g'w4`@@@'b'\T\T" 7DGDDDw`7DNDDD[wD`07E EEE 4ɅIELP7EwE`07EEEF7FwFkw`@$Fw7FFFw@`@' '.\T\T!(@!$~(!P7FFF7FGGwGS`07uG_Gk 8|̀%P8w`"GwG7GoGGG9[GZ_wG`P447GaHHwD`@P@()@@\T(@)@@# '\X7H+QSH{HH3wH`P0*7H0HH7HII#wx`@@ @@@@@! @@@@'b\T@ @@@@@'b\T@@1 (@@)@# ) M M <ѕHɘЁЁLI/ICIO ѥ7I[I $D MwI (wp`T'R\T@''̪\T'2\T'J\TT'R'̆\T \X7IwJOJ[lJoDkJ؃w `8 '\XS{J+P7JhEJ+P7JJ(JKP7'dsP7+P7K/hEK;+P77/KWKsP7KKEwL`@@'6\T@@'\T@'V\T '\Xwd`@@'ֲ\T@@@pKA'\T@'ֶ'\T1 PPKwXpo`@$P@@pL A0'\T'&LGA@" 'ֺ\Xw7LLLLLLMTMM `=ȀЁЁЁɔ刀ЀхMw8«`@4@4 'r''b\X̗ M'M3w@`@'''b\T$M?P'\X7M̗ MMw@`@'''b\T$MP'\X7N+NN̗ NNwDo`(0 N '\X0O@ '\X7O[TOOAc (P͸wH#`@4@4@'\T@" 'r':'b\X#OO OO7OGP+ P7PC ,XսѸwX`@@@'r'֎'b\TPO@" 'r':'b\XS{PwP $@=սѸwP`@@@'r'֎'b\T 'r''b\X PP 4xэLռɕwlǟ`@4@@@'r'֎'b\T0PP'\T@2 'r':'b\X#PP t4PЀ܁̈́ɕф܁Ѥ(хMw@«`@4@4P@" 'r':'b\XTQQ `=ȀͤЀЀхЀфMw8«`@4@4 'r''b\XQxQ+ww `'V '\XmQ7wQC`P4wQO 7Q[GQsQQ QQ QQΧQQQ>S QQw`>SRRRR'R3R?RKRWRcRowl`@@'̎\T(@'̂'\T\T|@ @'־'n\T  '֞'̪\Xw7RS SS+S7SCSOS[SgSsSb/S7S$[SSS7S7T]KT/T;TGTS3+T_ @ɅX͕͕մLw0Tk`3@'\T 0P9997Tw&;TTTCx[#/ 7T"TTU _U7U#U?wHUK`/S0'j\T0'j\T0'j\T P9999w7UWUkUU%CUw U`0@\T0 \X7UUUV%Cww V`@0@\T4 7VVKV_=SwVk`47VwV=SVw`P7VVGWWWW+W7+WCw<WO`@0@\T@0@'Ԓ\T@0@# \X7W[$GX'X3X?w``(@! XK'2\X(@ $-(@@)'b'\T \X7X0'XXXw`7XF?XY YwY#`@@'@'j\T0@'\T@'\T02 !'v@'j\T @'z\T @@2 Y/'2\X7YcoZZ#Z/x/Z;wZG`07ZSgZZw\`@ Z'2\X(@ Z(@ 'B'̪\X7Z[3s[?w`(w7uw`w7uw``@@'Z\T@d(@'Z\T@ (@'Z\T@'V\T@B 'J\Xgg>;[K[W [c[oQc[{w`@$7[[\\'\39\?w\K`P447\W \wP`PP@@@! )@(@@\T)P@(@@+@@" )7\\\] ]3w$]#`PP0(GP]/w];w`7]G7][w]oTJ[]{]whd(P@''.\T\T@'β\T''\T8'̲@(L X/ 7]wt`@''̪\T'2\T''\T `o('B\X'r7`q```q`a aa#qa/a?aKaW P7 \]S5CacaoP7Ja{aEP75CaaE P7 \POP77aaE+P7hPOa+P7b?bb+bGwbSw`8'R\Xb_bkbww<`@@8\T8@ 8'^wH`@''.\T\T@''.\T\T !w0po`@$@pbA 0'\Xw7b#bcU> c cc' @$ɼЀɄ՜ѹЀwT`c3@'\T@@'6''b\TcG '\X cc @LЀȁŔɤ՝ЁЁwT`c@'\T@@'6''b\Tc '\XwcCc cd L=սѸ܀͹ь X=սѸ܁Ѥٕͱ͹ьw0o`@4$'r''b\X dTd#d/S{d;dGwX{`0dS@'\T0 0(d@ '\Xd '\X7d#dd (T$ɼЀѼTee#ee+ 8$ɼЀLTe7eC (T$ɼЀѼ eOe[egxese7ewe`P47eBf{fffff>S ff7fH;gg# g/g;' gGgSH;g_gkgwgggfCggggggwl`@@'̎\T(@'̂'\T\T|@ @'֚'n\T  ''̪\Xw7gKAh[hghshhh7hh+hw(h`P4'Ծ '\X7h3jkjwjw0`P@@$@@(@ wj`P4P4$oP+jjd jj3+wLj`@0@'\T0@4 '0@'Բ\T47jjkk/ 7k k'k3_w`( '͊\Xk?LkKwkW`0w7kckwk%Ckw8k`F0'j\T0'j\T P999w7kkkCw,k`0'j\T P99w7k=Swl`0l=SwXl`'@'\T08'n\TP0''̆\T 'Ԓ\X/ 7l?3mmmmm+mwm`P4@'\T40@'\T@@'̎\T(!@('>\T4@)'>'\T4 @m'2\T0 0'>\T4'4$'r'b'b\X7no3ooo D$Ё0 <IPP1$ͤw4`@@@'͊'\T\T" 7o p/p;pGw`'\X7pSCpppp 4t$́Ʉwp`@@'*@'j\T@'\T0 @'\T1 0 P' @'j\TP'v@'j\T @'z\T @@2 p'2\X7q qqqx/7w4q`0'Ԟ\T0'Ԟ\XP7qGr LPхȀ͕ф̈́՝ww<d(P@@@" @@8@(L" X/ rLs sts#s/s;sGGwt`@@'@'j\T@@2 'v@'j\T @'z\T @@2 sS'2\XGws7sssssZ_sw,s`000\TP4$47sw\`@ڟt@@)@@pt+A'\T@+)'! )w7tKt{ttt3ët7twtw`87t uu+u7uCugwusw`''\T''\T@P9''̪\Tu@@'\T@puA'vS@@'\T@pvcA'v@@'\T '&w A'wO'\T@!''w_@@'\T '&woA'x@ @'\T '&xA'@$@$'@@@'@$@@pxA'' @'ъ\T'\T@\T@\T@\T@\T@\T6O'R\T(!y;P'\T'̶'"\T'^' @'ъ\T'\T6O'R\T(! ykP'\T'^ P DɠЀ͕ɔɄѸw `B;('B\X_y{ #JS_yOJ[_<J[7';+P7GhES+P7ohPO{+P7'hEP7EP7bEP7'dsP7#7?7=wD`@@8\T @$P'\X'^w0po`@$@pA 0'\XPt##/; P @ͤɄѸͤ#GS P ,`Ȁ͕Ʉ՜ѹ7_wG#S_S{ kw PѥЀѼЀͤL ,luL  w {`@4@4 T T 1w@`@' \T 0P'4'w`@'β\T P4P4P4@4'7@'\TP4P4P4@'\T4 @''2\T$'r'b'b\X7_@k+7>S [g sw<'s`@'''b\T@$07G#>S 7G#>/;'GlCS?#_kwwl`@@'̎\T(@'̂'\T\T|@ @'־'n\T  ''̪\Xw`Sw`@'V\T'N@'Ԇ\T0$h4@' \T0,@'00@@'@'&_A'\T9P99999'\LT@@'hkP9@P0P9@P0P9@P9@'@'&A'\T9P9P9P99999'\T'\T@'V\T'4'4! '4'47$G$[P d D#/w ;`0 '\X7G_/ 7`_w`0w7%Cw`0w7Cw3`0=S?AKKwD_`d;'R\T(d;'R'̆\T\TS@((@'̎\T @'\T'"\TPPB@'\T''\T40'"'\T4@'\T'&A'\T4@'\T'>\T4 @'2\T@0@ 'r''b\X7KWco{+ <ɼɅLхw`@'J@'Ժ\T008'Ӗ\T0'\T'&\T0'PP$X(''@h'\T@h'\TS?'R\T@DD@pA'FS?@9'\T0''\T0'\T'*\T@'\T$@g@P99'\T3@'*'̆\T\T@@'.'̆\T\T1 $/ *7/cswD`@@@! ,@ '2\X(@$)7wH`@+'̚\T@@'N\T@@B '̚\X7"'Z;GS[_ 4t$́Ʉwk`@@'@'j\T@'\T@'\T@00@@0R '\X'v@'j\T @'z\T @@2 '.' 'b\X7w7w`k'R\T@#00@$ '\X@N0 0@'\T'r0-@'J\T0 +@'J\T0(@ @@'\T'ri@2 'J\Xk'R\T! '2\X7OLo{m$SGw 3 @$́Ʉ!L0PQcw`@$7+7CO[w,g`000\TP4$4w `@@8\T w0`@@P@(@@\T! )w7sw`7w8`@@@'2\T'6': \X?3,(?K Wc7o7s w   wwt`'\T8T@9'\T@8'J\T@'\T$k'B\T$  ռw`P9'\TPE@9'\Tt@8'>\T'\T@'\T$'.\T'B\T$  ռwD`PP9@'\T'.\T P999  ռ  wT`@@'r\T$@@(@{@)@'r\Te@(@Y@)@'r\TC@(@)@56O'R\T(!P'\T'̶'"\T'^P@'>\Ts P999P@r '\X@R '\XP@B '\X@2 '\X@" '\X$'\X  w(`@'B\T$'F\Xw,`@88p;A '\Xw ,܀Ѥw $+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{‡“Ÿ«· #/;GS_kwÃÏÛçóÿ+7CO[gsċėģįĻ'3?KWco{Ňœşūŷ #/;GS_kwƃƏƛƧƳƿ+7CO[gsNjǗǣǯǻ'3?KWco{ȇȓȟȫȷ #/;GS_kwɃɏɛɧɳɿ+7CO[gsʋʗʣʯʻ'3?KWco{ˇ˓˟˫˷ #/;GS_kw̧̛̳̃̏̿+7CO[gs͋͗ͣͯͻ'3?KWco{·ΓΟΫη #/;GS_kwσϏϛϧϳϿ+7CO[gsЋЗУЯл'3?KWco{чѓџѫѷ #/;GS_kw҃ҏқҧҳҿ+7CO[gsӋӗӣӯӻ'3?KWco{ԇԓԟԫԷ #/;GS_kwՃՏ՛էճտ+7CO[gs֋ֻ֣֗֯'3?KWco{ׇדן׫׷ #/;GS_kw؃؏؛اسؿ+7CO[gsًٗ٣ٯٻ'3?KWco{ڇړڟګڷ #/;GS_kwۃۏۛۧ۳ۿ+7CO[gs܋ܗܣܯܻ'3?KWco{݇ݓݟݫݷ #/;GS_kwރޏޛUoާ7޳ '3?KWco{߇ߓߟ߫߷ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kwޏD'3?KWco{ #/;GS_kw+7CO[gsg w`JP7J\(5CP7oEP75C'YP7P77\+P7#hE/+P7KhEWP7sEw``'J'N@P@@(\T@@@(\TP@(@2 P99@)$)w` ,w<`8@ $P'\X'^WTT w`@@@@#{'\T'^@P]'~\T@'r\T7@(@)@'r\T@(@)@@pA 'R'̪\XP@ '\X@b '\X@B '\X7TS{  S{w m 8|ɼɅL؀w+`@@'ξ\T70'\T00P99C'2\,T 0 k0'Z\T@'R\T0P999P900P99'2\T 'ъ\X7;O[gs #w4's`@'V\T0@ '\X7TKW cow('s`0{@ '\X7  7fC3?R{KW'c7ob/+7KWw `" P99w `" P99w<k`@0@\T4@0@\T4@ 0@\T 4 7w^?WE$GPd wL`@0@'\T0@4 '0@'Բ\T47/ Z7+S__kww`0%w`0CWwpKwwd`@'\T'>\T'Ѣ@'Β\T$@'\T '2\X 4xɼɅL0 M0w4`@0@\T4@0@'͞\T4 7'3?+Kw|`@8''\T8'\TW'ͪ'\T'ͪ@'6\T88'\XwwD`@0@\T4@0@'͞\T4@0@\T4 \ 88ф=0Q I!Q8w$`@'\T$(7'3?  7"'EKWc[ow({`00'*'̪\X7GS_x/7k $    <Tݽᕰѹ̀Mw w`@4@4 Kt sGSwt`@@'@'j\T@@2 'v@'j\T @'z\T @@2 '2\X7'9[3Z_?w8`@ @@\T@)$'^\X'7Kѷw`www{CO[w`w`@@(@)@ T'R\T@)@)g'\T'^@(@'b\T@@P@@@'f\Td 8\X8@@pA'\T@@@@r P'\X ?'2\X/ j77&Ok ,\@ww w#w/wl`@'n\T@8\T8\T6O'R\T(! OP'\T'^$7_7+ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw    + 7 C O [ g s               ' 3 ? K W c o {              # / ; G S _ k w               + 7 C O [ g s               ' 3 ? K W c o {            #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{   # / ; G S _ k w           !!!!+!7!C!O![!g!s!!!!!!!!!!!""""'"3"?"K"W"cP"ow"{I""""""""""####+#7#C#O#[#g#s###########$$$$'$3$?$K$W$c$o${$$$$$$$$$$$% %%#%/%;%G%S%_%k%w%%%%%%%%%%%&&&&+&7&C&O&[&g&s&&&&&&&&&&&''''''3'?'K'W'c'o'{'''''''''''( ((#(/(;(G(S(_(k(w((((((((((())))+)7)C)O)[)g)s)))))))))))****'*3*?*K*W*c*o*{***w*U******++++++7+C+O+[+g+s+++++++++++,,,,',3,?,K,W,c,o,{,,,,,,,,,,,- --#-/-;-G-S-_-k-w--5-w-Ro--+P7-hE-P7\PObP7b\?+P7-.Hk.'.Cz._.k. ,\̝ЀЀф#.. .. .. XPMэͤɄѸͤ (P$ɼЀ՝w`8 ....e_w`@@@@//['\T'^@P]'~\T@) //'\T'^@(''.\TB \X /0S{0S{00'10370?1x1+m17'1C t0 Ʉռ́LսمȀٽѹѹ 84؁ɄɼMwL1O`\00@'\T@ @@@3 '\XPPw71[3111T11#11T12 <TЀMɽ͕wT's`@4@@'V\T2P'\T$'r''b\X 2_2k#2w2 @TЀЁɤьwD's`@4@2P'\T$'r''b\X>S 22w`[lC23 3373+wP`@@'B'.\T\T'ժ\T''.\T \X73Guk333=S33444+4+w4774Cw4{b/4w4`@'J@'Ժ\TP40$@00'\T@@40@'j\T4'2\T04$'^0'0'̎\T(  0'Z  0'r\T@PPP$@g'P99'\Tܣ@'*'̆\T\T $C4553/55'?53w 5?`0 '\X75KG555w(`@@'z\T 8\X/ b_L%CW575 $HMͤѽ5w,5`@0@\T@0@# 'Ԓ\X76FO636?6KE6W6c \ЁL܁L͹ɽ76o+666666w`)))-676677+777"'E7C7O7[[7gw7s`@@'@'j\T@'\T0@'\T02 '\X'f@'j\T @@2 'Ӫ\X'v@'j\T @'z\T @@2 7'2\X77g88x/78K88m 88 @$́ɄHQ<0Pw`@@'@'j\T@@2 !'̦@'j\T '@'j\T@'\T@'\T@2 !'v@'j\T@ @'z\T@2 !@@'v'.\T\T2 !'v@'j\T @'z\T @@2 8'2\X797KC99999w\`@@(@(@(@(@(@\T@)@)@)@)@)@V '\X'7:ѣ:W:c:o:{7:7:7;#(;;;;wuC ;< ,\ɄЁL 0l$ɼЀ՝w<w<# >7>#7>w? w`@'׆\T'&?A@p?A@\T'B@@'\T99B('@P':'~\TB@@)@('@\T1 w\`.(''@h'\T@h@?P'\T@.(''@h'\T@h@p@A'\T8'R\T@@(P9998@9'\T@'׊\T'&@7A@p@KA@\T'B@@'\T99B(''\TP7P7 (#P3uuCO@999999'\T@ @'N\T@'\T$B@@)@('@\T! @'\T! @'\X@P9'\T$(#P zW͆&׎גWז`ךמכͶh Gע%Ss&oצhkͺVתo׮Y/ײ2:^j5JN-/R?̪n~#fOr[7׶`׺'wb]S(׾ZΎ߿BvCv0Β7d&G'zQ܃Ѷ̆PO cܣeGN'1ӺRS>{^+ժk*+<_W̎͊7Jsb[{Ԣ\:k {c̲4W͂GJ81JCk"&*.26g:>CB_FJN/R VKZ ^-kbNf-jNngr vzs~-؂O؆؊O+؎X7Z{GXkfؒ+ؖsؚt؞sآ{ئS.r/fGbI Z [Rw 3ت~kn [o+SS#^خKCز7n77_6ӖczQg͒ضzׂ҂?3т-غ[ؾj{Բ;[ъ.~"WzͮVSr*uz_AKCC*2\SrG{R6c:q̚V̂CgK% P3J*^C_vٗvAj?.oӪ7W`sS.77ğҎO`ħe Gow"G&*^.w26:>K KNuO{M&o+~B*+F+Jg͎GԞN6#̦rX13zͪr"޳23z]R^!V3Z>9vKκ#^bfe+/V|̖;wζJ*jfn rԮv'z~;قنh7يَْn2(ٖVsٚ@Gֶٞ٢٦p٪gٮۿٲٶSٺپďėr3){WW ֢0#8sWWKkB  ͢3ͦH"GS^W|O"wZT[&*~9G.2([Ӿ:6/:s#>BFu/JN ̺'&c7",7^(b#ZR ̮K̶LVWRur~KFAGӊ«Ӳ&VG;Nk6EoO2o ZOnkҪҲaҾ_:[Һ3Ҷ$վjO^/^ Ңwcq'<[ΚG bw_v1'fjgWnargvJήzmβ{"^'C~[ڂ7V_ZSԚ[*:چ}OvBiNڊtk֎^`H+.ݟ" ΂ O*;ڎ'ڒ5{z+~2KvWږ~K#:QS~&k" ښOڞYڢsڦ"ڪnsڮrSڲ#ڶںr[ӒR#bJBRVvF΢t&0JLΞ$/ھ'ΦΖ#ΊlDkW6wQiC:s++/#kw3>yf;R W692G" .K6>MG\s c[ f?־֚VmNz *^3,W^ ͖P ͚-,֞ C׆O"&_׊{*..26oҮq_:GҦ>VSRB FoJr N{R=wVBZ^Pbvof'j=Bnxr/v z.~ۂoۆiF;Cۊ@ێ.ے7ۖGۚoֺI'B(bf۞ۢۦ+c۪HkۮZ۲G۶zۺFekն o۾ >oG:BF7JKN +VPS/FW 'DC"NJcֲI:m_vQ4ѺѾ?}+&Ӷc"M֊'sF̢̞lҊOC>H&3*T.5Ӧw26Ӣ҆&7 ղCl?^ /"g߫K̊TO"Ã&m*.2ߓ*3C#&6{fRpӞKӚ::#>Q/BHӮ8Fb JkNRVZ^VbYfj<n$#rKvQz*w~W܂܆Sж{܊P܎UoܒJSܖ ܚ'/ܞܢ>Җ#ܦҞҒAܪ;6Ԫ)7ܮKܲ:?ܶeܾܺU?p{qS2Қ/ +cb2؃{S7SwT/S?T;TOT[K< c |Ws"&T*-.{2@k6m:k>xBuoFm7J'NRn?V>ZZ^bfj&o͞NCԒ;yO bwz #іњf9Ѣ/ѮѦ)ѪZ[Ѳў?;ZV+*g. [fNhncr2v3 zK~u֒)_V1݂՞t'֖݆݊(ݎ}ݒZ]բ2ݖ*ݚ ݞOݢnݦݪwݮs_rݲ;cԊݶ6wݺݾ;b۟~$CvawzJ jK KԆ1_;ԺOԶW;>z c"T>Nc?{ C6oVS@F+BPJfkNRV>Z?c c ;Ͳ/3Ծ|'{Ԃ5OljAFξ<ц R@>BDkcwNsgs[yh [w; 0,^ o #"S_&js~B_6n!b27YwZw.;*k.+'2&6HO:'>B3FqJNRvV%Z^3gbfS ``w`Cwg`0((00@''̪\T@(@@!@@'̂\T@@'̂'̆\T\T(@$ 7`e[akawaaaaaaa7aw8P'&dA'̲@(L X7e+e7b/eC Dս МɔՕͥɼMw7eOWeeeW}eeeewLe`@0@'\T0@4 '0@'Բ\T47ef ff#9f/w$`f;'\XWfOf[w0fg`0@\T40@'\T4$7fs~ffffw`'zf7fgggg'JCg3g?gKgWw`)))+ggc7gogggg7"'ggg[g <$́Ʉ%PM4wg`@@'@'j\T@'\T@'\T@00@@0R '\X'f@'j\T @@2 '.\X'v@'j\T @'z\T @@2 h'2\X7hCGix/_oj j1Oj#j/j; 8|$́Ʉw`@@'@'j\T@@2 ' @'j\TP'v@'j\T @'z\T @@2 jG'2\X7j/jjj9[wT`@@(@(@(@(@\T@)@)@)@)@E '\X'7jяkkkoKwt`@'r\T(@(g@( ;@$@('2\T@ )'2\XPPw`Pk''\TPE@9'\TG@@'>\T'\T@'\T$'>\T9P999'B\T@'~\T'ײ\T \Xw `@P@ '\X3k3k?@kKkWkc kok{7k7l  lWlk7lwmmwmw`'& @mP'\T'^@P@&@'\T8'خ\T'& @mP'\T'^! @"@(@'\T@)@@@@B @@'.\T@B @(@)@'\T@>@@('\T@@@@R '&@@@'>\TmP'\T'^@@'.\T@R )#@@'.\T@B #d/ ww`6O'R\T(!n+P'\T'̶'"\T'^@P9(@$P@! '>\X@('\T@)@@@'\T@@pnKA'\T@'\TP99 w`':\T(@@@pnA'\T'&oA@'B'.\T\T'ֺ\T''خ\T@2 P997o/w`Pw`8'.\X TP܀ѤMɔw`8'\Xw`Pw`8'.\Xwowowowopppp'w@p3p?pK@pWwpcwpowp{wpwpwpwpwpppgppqgq'qGqggqsqqgqqqgr r+rKgrWrwrgrrrgrss/gs;s[s{gsssgsstgtt?t_gtkttgtttguu#uCguOuouguuuguvv'gv3vSvsgvvvgvvw gww7wWgwcwwgwwwgwxx;gxGgxgwxswxwxwxwxwxwwx,Oxxxwxwywywyy+y7wyKwyWGwycyoy{yyGwyy{yyyyyy C B+ zzzz'z3z?zKzWzczoz{gzzzLgzLgzLgzz{{{#{7{C{O{[ {g{s{{w{w{w{w{{{{w{w{ |||w|'w|3w|?w|Kw|Ww|cw|o|{|||w|w|w|w|w|w|w|w|q} q}}+w}7w}Cw}Ow}[w}gw}sw}w}w}w}w}Lg}AK}w}w}w}w}w~w~w~,O~' w~;w~Gw~Sw~_w~kw~ww~w~w~w~w~w~~w~w~w~www '3?KwWwcwo{     #wCwOw[wgwswwwwwwww'3?KWco{ww wOww  #/www;wGwSw_wkwwwwww``he{?BP@)99P999P99P9 997w/wwwwwwww+w7wCwOw[wgwswwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'w3w?wKwWwcwow{wwwAK_|AK[g_{|ww ww#w`@@'r\Tc@)@'r\TM@(@)@'r\T5@(@)@''@'͒\TT'R\T@'J\T@)'R\TP@+q P@b '\X/@B '\X;@" '\XG$'\X7Sww'w3w?wKwWwcwow{wwwwwwwwwwww w4#w0`@@'r\T$@)@'r\T$@(@'r\T$H@(@)@)@'\T@$@@'\T'f\T@@('"\T@()PP9!@@(@99h@@P9 @) @ @999P999P99P9{c@@99P999 P999h@@P9@@('"\TP @) @@ @999P999P99P9! @@@@('"\TP@(P9P'ъ\T9{c@@99P999 P999!@@9@s 99/@2 '\X;@" '\XG$'\X7Sw7Kwg+P7shE+P7hE)7w#OOe_'3^_?KoW$ccb/o1\xm{w` 7W_T 7 # wp`@'̎\T(@@ P@@'͊\T"@@1 \@@A (@1 7'=S$cw`(@ '2\X+'\T?'\TS'\Tg'\T{ #/r@P99;GS@P99c@P99Sc@P99r@P99_kwS@P99c @P99c,@P99     # ( -$     # ( -$     # ( -$     # ($     # ($999999999999999999999999999999999999999999w`@'̎\T@''̪\T@#t(@@!@@'͊\T@@'͊'̆\T\T(@$P w$`@P99$P9+w<7`@0'\T@0'\T$ 0'\X7Cs&SD3+w `0 '\X7w3?K=S  01WWcow({`0@\T0 'n\X7W7 #w,/`'@'\T08\X/ 7;CO[gJCsJCw`))))7xG7"'[' <$́Ʉ1@MTw3`O'R\T@C00?@$ '\X@ 80 S@'\T000@! 0@c@4 '\X0@0@@0@@w @U '\X@C_c0 @'\T@@@'z\T#'R\T@@'\TF{'R\T@@@@@@$P@@@'z\T@ @'\T(@@@2 O'R\T! '2\X7 'w23? 8|$́Ʉw`(!7K__kwwL`@@(@(@(@\T@)@)@)@4 '\X'7P&O7B[@ '3w`@'̎\T(@(@ P@@'͊\T.@ @@2 'b\X/@P(@ wP`@'b\T@@@'̎\T@'̎\T@" 'f\X ?w0`S@'Ӻ\T'ۢ'g@'Ӻ\T'ۦ{@'Ӻ\T'۞ @'2\T@Q(''@h'\T@h'\TS?'R\T@pA'fS?@9'\T@@@\T@@'\Ta @@@\T 7   $@w' 4̈́w`(@(2(88@'\TP98'ъ\T8@'\T@'\T(8 P999wH`@(88p3A'خ\T'ۊ\T )(P99w`@)$)!w`6O'R\T(!8'\T(7(7@99'\T@P'\T'̶'"\T@'\T '^777C771O77777g777'K7W7'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw77777 7'7C7cww7777O7[w7{777S;bk7#S/bk777Ow7 w7777';7G[7g{777c7o7w7w#7/C7Os77777 7#_kw77^7'7_77777v{O[gs777 O7[77773_oD_DL+777777777'7[7;7ŋ/7;O7[7Ɨ77G7ǟ7+7ʳw˛7˧7η7C7ϣ777G7 7C7/7O7ԋwԿ77W7՟7737؟^; 77?7ww 8Ʌ=I 8Ʌ=I 8Ʌ=I 8Ʌ=I 4Ʌ9U(,7'7k7ۻ77;7܏w!O7+7s7ݿ7+7s7޻7o7{ߏ7ߛ߯7߻777/7;7SO77;Ok777777GO~ 77Ww`@@'r\TE@)@'r\T0@(@) PZ@99P9@'ъ\T99P99P9B 99 @" '\X$'\X7#ww 7+77O777_7777/77737k7777 7_77777C7 7_777+7S7777?777_777wGS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{7w'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{   # / ; G S _ k w         7 7 S7 S 7 /(3 + 7w`@@'r\TK@)@'r\T6@(@)@'\T'@'͒\T@ @@-@@@ '@P9@  C@" '\X O$'\X7 [7 {7777 7#7;77777K7{777 7;7k7777+|_+k=SwwD`@@'r\T @)qo@" 9$'\X7wP@P@( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X''̲@(L X/"&*.77-P7-\HkP7\lw `'Ѷ 'Β\X7kw#OS^;7G/;+GxSw_`00P997k4 77T#wX`@'B'.\T\T''\T''.\T \X77CO=S[gs L|͸ܵѤЁЁɄ͜ $04 $04 $04 $04?}POCCc&OCCc&O}POC]SC'i3C?CKcWCcoC{CCc&OiCcb/ w\`@@'6''b\T@0'6\T@0'6\T 0'6\X>QO#/W;GD3+wLS`@0@'\T0@4 '0@'Բ\T47_У=SWwx`_/00@'݂\T9{@'՞\T90'j'\T0'j\T P99999997W#+w`0'ݮ\T0'r\T@@8\T@(@)G@S@0'̎\T >S@P99P9@0'̎\T@'\T'ъ\T0'>\T'& A'\T'\Tb 'ъ\X +'2\XA {'2\X/ 27s#/JC;JCGSJC_kww`())-7E7.[          <Tݽ́Lw `@4@4 8+7w`7CSWcowD`@@(@(@\T@)@)@# '\X'7{P7@1O      0hЁMԀw `P8'\X ';Gw `'Ӻ'z\X7Sw`@))(@'β\T3@8'J\T@@8@8'J'̆\T\T8(8$@((@)(@# P999 w(`'&@@@$ 'ͺ\XwD`('('@@h@@h@@h wH`('('@@h'&@h@@h$w@`P@T'R\T''̆\T \X@@p3wp`0@@P'Ͷ'̪\T0@@4! @((@@ @ ()@@@@(@($@)$))@Mw0P(@ P'@L$XwPd(P@(@ '@L XP' @(L Xw0P(@ P'@L$XwPd(P@ @' @(L X(@ P'@L Xw4d(P@@8@(L X/ 6w$`@@@# 8'̪\X/ :w$`@@@# 8'̪\X/ >wD`@@@8@'R\T''\T4 '̪\X/ Bw`1+71CO[gsJC1JC'3?1KWco{JC1 JC#/;GS_1kwJC1+7JCCO[gs1JC  1  ' 3 ? K WJC c o {   1      JC  ! !!#!/1!;!G!S!_!k!wJC!!!!!!1!!!!!"JC"""+"7"C"O1"["g"s"""JC""""1""w`( '͊\Xw`( '͊\Xw`( '͊\Xw`( '͊\Xw`( '͊\Xw` ( '͊\Xw `'r'z\Xw `''غ\X7"7##w `'r'\Xw `'Ӻ'\Xw `''\XwTP@ (''̪\X@''̪\T(8@(L X/ FwP@(@( @( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X8@L$X/JNRVZ7#whP8P8#'ͪ'\T''r'@L$X/ ^whP8P8$O'ͪ'\T''r'@L$X/ bw` !w`!w` w` !wP@(!8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X$'2\X/fjnrv7%?%wP@(!8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X%'2\X/z~߂߆ߊ7&W&w`1#w`=Vsw`'w` w` ww`:w`&&?w`8@'͒\T@$)((i@P99P9''P99''\T'̪\T((@P99P9''P99''\T'̪\T@'̆'̆\T\T8@@8 / ߎw`8@'͒\T@$)(P@p&A''P99''\T'̪\T@p'@''ͺ\T8@@8 / ߒwT`8@'͒\T@$)((@P99P9''ѶP99''\T'̪\T((c@P99P9''P99''\T'̪\T@'̆'̆\T\T((~@P99P9''P99''\T'̪\T@''̆\T\T8@@8 / ߖw4d(P@''̲@(L# X7'7w(7'w`4Cw$`''2\Xkw`3cw`@}w0`'Ӻ'.'*'̪\Xw`( ':\Xw`(@ X@'r\T((@@)':\T(@@(':\T @'ζ\T$'.\X@'N\T'>\X$1w`@'̎\T@$1(@@'(@'͊\T':\T ((@@(@'͊\T':\T((@(@'͊\T':\T(@" Jk''G'w `'B'̪\Xw``@@P99@'V\T' '.\T\T'Z'͊'̆\T$ \XJ ( (G(#w8P'&(/A'̲@(L Xw `(O'\Xw`'f\XwH`(8   '@ 2(8($8/ ߚw`''̪\T@p@'v'ͺ\T'&3S@@'ͺ\T'&"'@''ͺ\T$w`''̪\T@pC@'v'ͺ\T'&@@'ͺ\T'&7@''ͺ\T$w8`@$@pu/'N@ 'ͺ\XKg(_(kW(w((w@`@OW@''͊'̆\T \Xw@`@l@''͊'̆\T \XwD`8@'͒\T@@@" +8@@! 8/ wL`@$@@@'ڢ\T'@pA@" 'ښ\Xw`PP@'\T@@\T! ':@@''.\T\TA ''n\Xo@''͊\T@)@'\T':@@''.\T\T'.'n\T'^P@@@@B @@+@@B wX`@@'V\T' '.\T\T'r'͊'̆\T \Xw0`@$@pGA$'ڶ\Xw<`@'r\T @)'ھ\T$((LLw`('׎'ך&'n\T'מ@!(@(@'2\T'''̆\T\T@('ז@6(@6# '^w8`@P9''.\Tw `@'@ P@@@'\T1 '@ @@@3 '\X'@@@ P@@@P@$$ @'β\T P@@@'\T1 'Ύ@'Β\T @'r\T @@@3 '\X@(('\T w`@(g@ )("@ P@@@4 )('\X@@@@@@)('\T@))(@)))(3 '\X?@"@)@P@)@ @@@S ('\X@@@('\T$S@ @@@3 '\X@ @@@3 '\X ;@ @@@3 '\X7@@@@)('\T1 '̎\X@@@'\TP@)@'r\T@@@@('\T$)@@'>\T@@@'\T@'>\T'ъ\T@b '*\Xw`@@7@(@)@(@@ @' '\Tq @@@@'β\T$)@(@Q (@)$)@@'\T@A @ @@('Κ\T@@)+@@)_P'\T'\T@'Ԯ\T@@''̆\TT \Xw`@@'r\T$@)@'r\T$@(@'r\T$X@(@'r\T$@( @$@)@'r\T$P@(@'r\T$@)@'r\T$@)@'r\T$H@(@)@% @)@'r\Tm@(@)@] @)@'r\TG@)@9@)@+(''@h'\T@h@ @P9@P99@9@ C '\XP@ 2 '\XP@ " '\X)@  '\XP@  '\Xk@ '\XP@ '\X)@ '\X)@ '\X)@ '\X)@ '\X @r '\X)@b '\X)@R '\X)@B '\X)@2 '\Xw0`@@'r\T}@)@'r\Tg@(@)@'r\TO@(@)@@@''\T tP@@@P$) @@@@@@  @@@ '\X @@@()('\T@(@)$)P@ '\Xk@b '\X)@B '\X)@2 '\Xw4`@@P@'r\T)Pw4`(@@'r\T(@$)$w`@$@$@@'r\T$8@)@'r\T$@(@'r\T$@(@)@'r\T$(@(@'r\Tu@(@)@)@)@'r\TW@(@)@H@@ @'\T@@@'\T@'\T@'\T@ @ @@@@p*A@$@$@@@p*@@ 4 'ͺ\XP@ '\Xk@ '\Xw@ '\X@r '\X@R '\X@B '\X+@2 '\XwPd(P@+P'\T@(@'@L Xw`8@'͒\T@@ )(@+#'͊\T;@P99P9''P99''\T'̪\T8@@8! / ߞw`8/ Rw<d(P@$@p+/A'̲@(L XwX`@'r\T'R@(@)'r\T))PPPwX`@'r\T'J@(@)'r\T))PPPwX`@'r\T'N@(@)'r\T))PPPw`@+@'N\TK@'B'.\T\T@'^'\T+@'b\T P99@'b'\T@'V'Ӗ\T g@" P99 %@'^\Tg P99'F@(@)('b\T$'b\X'J@()(@('r\T'N@((P'@()(@)'b\T@'V\T@)(P$[@@# P999@(@)@'b\T@'b\T@'V\T=@)(@'V\T@)(g@@@@P@@@b P99@ Hk@R P99@@S P999@'r\T ,@('\TP @(@@C )99@@C P999w`@@'r\T+@)@'r\T@(@)@! 'b\XP@B '\X,@" '\X,$'\Xw`@'׆\T'&,+A@p,?A@\T'B@@'\T99B('t@'2\T':@@@\T'rB@@)@('@\TA 7,[w`PPP@@A@ ,gP'\T'^@'>\T@'>\T@Q (@(t@@P@(@(@'͊\T@)))@@(@(@)@(@)@)@'̎\T((@@'͆'̪\T(@@C@(@)(@)(@)P@))4(@@( (@ (@@( (@ @@'̂'̆\T\T(@@B P @@ @@@@@  )# @(@@(@)@(@)@((@$(@@ @'n'̆\T\T@@ ) ,w'2\X((@ @'̂'\T\T(@ @@ @ @ )(@L@@'\T@@7@'Ԯ\T@@@,P'\TP@ @-#P'\T@@@''̆\T\T$@ @ @ )#8(@  @@@ @ )#q -7'2\Xw`'\T@T@9'\T'&@@'~\T''̪\T''ͺ\T\T@'\Tgw``@(''.\T\TP@p-sA@@)(@p-A" 'خ\Xw4`P@@ @(@@))+$)$w<`P@@@))@)P@+@@@2 $w4`@'\T-@ @'\T(((@'\T0((@ (@!@ (!P@ (@! )@ @@'"\T@@R  @@@) @@@ @@@@''͊\T@@$$$$@@R 1 -'2\Xw`@'\T@'\T( @.7'2\T'r@P@'\T@'\T@)@'\T! '\X@)@@@$@@@(\T" w8`'2'&.sAP99 'ۖ\Xw`.@'ъ\T'׆\T'&.A@p.A@\T'B@@'\T99B('@'ۚ\T'ۆ\TB@@)@('@\T! $'ۂ\Xw `.@'ъ\T'\T@P9''̪\T'\T@T(7(7@999'\T?t@@P@(@.P'\T'\T@T@9'\T@@'J\T@'\T$@@'R\T)@'\Tgw<`@p/A//@'ъ\T 'j\Xw4`P(@(@!$@@(@ 7/Cw`@\T'B@@'\T99B('@\TB@@)@('@\T! wH`@@'\T@P@(@/{P'\T)w<`'N@N'J@ JwX`@@'\T@@@@''̆\T4 \X@@2 /'Κ\Xwl`@'β\Th@@P99P9@C P999@@@@@P@@@(g$$P@ qo@@C P999 @P@ qo@@C P999 @,'f\Th@@P99P9Z@P99@P@ @\TP9999S P999@(g?'f\Th@@P99P9Z]S@g@'\TP99P999@@'\T@ @\TP9999S P999'f\T@P@P@JC@P99@)'\T1@P99@('\T@'h@@P99P9ZS@P99@@@ @\TP9999c P999h@@P99P9@c P999w0`@g@P99 P999e_O//^_//w(`@'̞\T$'̎\Xw`<((''\T''*\T-(<(''\T''*\T"'"'&'&'̞\T'>\T('̦'̪\T*3'./ ('&0A'2\T ('&0'A'2\T('&0GA'2\T('&0gA'2\TP9999''\XwD`P@@$'̊\X@@'\T(@ 70700wD`=@(@@! @\T(@$@@=B 'v\XwP`(@ @@(@ $(@@'&\T@@ 'v\Xw@`@p0A@p0A ''̪\Xw@`@p0A@p1A ''̪\XwT`@$@@@p1/A@p1SA ''̪\Xwl`'P@@(@@@(  @@ @@@@@C @@!@@R @)@@C P1k1w11wH`@(@)@@1'ͪ'\T@@" '*\XwL`@(@)@@'*\T@@1'ͪ'\T! wl`@(@)@@1'ͪ'\T@@'*\T@@2'ͪ'\T! wH`@p2;@'V'̪\T ''ͺ\XwH`@p2o@'V'̪\T ''ͺ\XwH`@p2@'V'̪\T ''ͺ\Xwld(P@@T'R\T 8\X@( @8@(L X2'2\X/ w`Cww`DGw`EOw`Fw`Pi3w`L3w`PP9wH`@(@(@('ъ\T@*@)@+'$(fR73'R[333?3Kwd`P'ܲ'6\T'ܮ@('ܮܮ'ܲ'Ԫ\Tw\`'ܢ'̪\TL'&3W'r'ܢ'ͺ\T'\XR33R333w<`'Қ\T'@P'\T' \Xw`P'Қ\T''\TP ''\T@@@(L'^E' \T@)\X'^wh`@$'Қ\T'@@p3A'ܢ'̪\T'\T' \TPw`'ж\Tw0`P''\T'\Xw`'(!8'3P'\T('(@@!'F (@4'P'\T'r(@$P'^gSc4k4w^'444w`'\TPE@9'\TG@T'R\T'\T'\T@'\T '>\Xw8`@@@'\T'\T! '>\X*w44e{44g=S4w`@@'r\TO@)@'r\T9@(@'r\T#@(@)@@)P@99@c P999P@R '\X4@2 '\X4@" '\X4$'\X75w5;555w`@5'\T@(@'\T(@@'b\T@5'\T@@(@'\TP@ (@@'b\T@@@'r\TU@9P@c P999wl`@@@'Ӻ\T$@'r\T@)@@'\T@(@@'\T" w\`@P@@)'\T@('ή\T (@(@'͊\T@( w`@@(@)@(@)@(@@'r\Tc@(@'r\TM@(@9@)@'r\T#@(@)@)@@\T@'\T@@@@ @p5A  '\X6'@ '\X@ '\X63@ '\X6?@ '\Xw`P@@ '>\X@(@(@@@@2 )@(@'r\T@(P@@)@@'\T'ъ\TB @@@B )w `6K( P99w4`@'r\T6W( (Pw `6c( P99w\`@$@$@@(@)@(@)@(@@ @p6oA@ @P@ @ '2\Xw\`@'\T6'&6A@('j'\T@ '\Xw@`@'r\T@(]oPv@@'r\Ta@(]o@M@)@'r\T7@(@)@'r\T@(@)@]o@ @P99@9@ P999P@ '\X6@r '\X7@R '\X]o@B '\X7@2 '\X]o@@P99P9@# P999wh`P@$@'r\TU@(P U@@ )99U@@ P999w8`P@$Z@@@$ P9999w``@$@$@@@@@T \X@@@p7A@@@@(@V ('6\Xw`@$@$@@@@@T \X@'β\T%Z]Sg@P99@P999@@@ @\T@T P9999'Ύ@'Β\TZ]S@@P999@@@ @\T@T P9999@'\TE@'\T@'β\T@@@@'\T$@@]S@@P999'*\T@ @d \X@@@@ @\T@@c '&\X@('\T#@('\T'β\T@@('\T'\TPPJ@('\T@) @@@@ @\&T'f\T@@@@@@@)'6\TJC@P99@'&\T$1@P99@c '&\X'f\T@)@@@@p7KA@@@@@('6\T1@P99@c '&\Xw`@$(wT`@P@@)@)@'>\T@(@@)':\T@(@\T2 wT`@P@@)@)@'B\T@(@@)'F\T@(@\T2 w `@$(P9wx`(@@P(@@!! '>\X@@@8'т\T(@ @(('̎\T@@!@@@" )/ ߢw|`@@' \T'J\T'&7AHk@'̎\T'^\T@@p7A'\T2 9w``@@' \T'J\T@'̎\T'^\T@'V'\T! Hkwd`@$ (@'̎\T!@$'Z\X'b'^@'ֺ\T'f\T@'R'\T@'^\T'j'\Th8@h271 @(P99P999P99P9Z888 @9P9999P999P999P9@@ @p8A'\T'ъ\TC 99w`@'^\T'j'\T@'j'\T'&9A@$@ 9@@@@p9+A'B\T'>\T9o@'F\TP999C P999wT`@(((''.\T\T@(((''.\T\T !w$`@((($(((wt`@PP@(P9@)@ @@A '>\X@(@(@@\T@@@@3 )@@@P9@3 )w4`@@'Β\T@@\T@2 Pw(`@( @9{'2\T'r(''@h'\T@h. l(''@h'\T@h. ((@'\TP999P9PP9(@'\T@$@2@ @9'2\T'r@'>\T@'͎\T@(@'>\TR P99@(c@(1@)(@tP@@@@(( @@()\T)@@($)@@@@@@v )@(@'\T@ @9'2\T'^@@(@)@(@'ή\T$@)) @ @ @ @@@'\T( @ @ )#]@))(G@'\T @@'͒\T@ ( @@)'\TP@@'\T @99@@@ @@@p:'A@@@(@@ )# @@))('\T @'͎\T(( @ @'\TP999 @ @((@@ @'\T@'͎\T@@($99 @'͎\T((( @ @ )#l@" @ @ @ @ @'\T'\T@'\T( @ @ )#x@" @ @ @ @ @'\T'\T@'\T( @ @ )#,/@" @ @ @ @ @'\T'\T@'\T( @ @ )#c@~ @@'\T'͒\T@( @@)P@@@@'\T$; @@@'\T(@'\T@@@@@ @ @@@p:WA @'\T@@(@@ )#@@@@@@)@'\T'ъ\T #|A@* @ @ @ @ @'\T @'\T'\T@'\T( @ @ )# ;'2\X$@'\X#w@`@'\T (@! !PPw$`@(@ wH`(@@@'\T@'\T@2 Pw@`(@!@@@!$ ;S'2\XwP`(@!@@@(!$ ;'2\X(@!w``@!@!P(@!@@$(;'2\Xwp`@(!@@(@!@@ @(!@@@(!$$$ <'2\X((@$wT`('@ @ >>#>/>;>G>S>_>k>w>>>>>>>>>>>????+?7?C?O?[?g?s???????????@@@@'@3@?@K@W@c@o@{@@@@@@@@@@@A AA#A/A;AGASA_AkAwAAAAAAAAAAABBBB+B7BCBOB[BgBsBBBBBBBBBBBCCCC'C3C?CKCWCcw4`@''\T@$)P7CoCCCCCCCCDDDD'D3D?DKDWDcDoD{DDDDDDDDDDDE EE#E/E;EGESE_EkEwEEEEEEEEEEEFFFF+F7FCFOF[FgFsFFFFFFFFFFFGGGG'G3G?GKGWGcGoG{GGGGGGGGGGGH HH#H/H;HGHSH_HkHwHHHHHwd`P''B'.\T\T@$@()@'ͮ\T@@(($))w`@(@m@)@(@(@)@(&O@P99Q P9@(@m@)@(@)@(@(P@(@&O @)@(@(P@(@z@)@(@(HP9w<`@(8'\T@@@@# )\X/ ߦw`@(@w1@)@(@(@#@)@(@)@(w@@'>\TP999P99 P9@(@?@)@(@PHP9@(@?@)@(@HP9@(@?@)@(@'\T  +@P991 P9@(@m#@)@(@(@)@(@(HP9/(3H(3I w `''̪\Xw`@'׆\T'&IA@pI+A@\T'B@@'\T99B('@@\TB@@)@('@\TA w`@'"\T'&IGA@pI[A@\T'B@@'\T99B('@@\TB@@)@('@\TA w`'.w`'̶w`':wHd(P@ '̶@8@(L X@8@(L X/ ߪwHd(P@ '̶@8@(L X@8@(L X/ ߮w `'̶ 'N\Xw`@w0`@'V\T@'V\T w0`@'V\T@'V\T !w0`@'V\T@'V\T !w0`@'V\T@'V\T !w0`@'V\T@'V\T !w0`@''͊\T$w0`@'V\T@'V\T w0`@'V\T@'V\T !w0`@'V\T@'V\T !w0`@'V\T@'V\T !w0`@'V\T@'V\T !w4P@B;'ъ@L$X|oI+I=S=SwD`@@'r\T @)@" 9I$'\XwIwIwIwIwIw4`S@'B'̪\T$Iw `' 'Β\X7J 3J+J7JCOJOw\J[`@'6\T0 @'Ԫ\T0@DDDDpJgA$'Ң\X7KKKmKwK`07KWKKK KKTKKwX`@'B'.\T\T'V'\T''.\T \X7L LLL=SLLL  M MM#M/hM;MGMS M_MkMwMMM M&OMMMM+Mb/MMNN!cNN+N7w NC`0 '\X7NOVNc=SNoWN{pKNwN`07NWNN+Nw `t '\X P \ոɕɄ՜ѹЁɕфM L ɔɔɼɈЁLѼȁՍw@N`8@'\T008\X'/߲զ7NO'O3O?OK~_JCOWJCOcOo1O{Ow`())+7OxOOO/ vZ7OGOOOO[OHP P2P#P/w`7P;?PPPw4d(P@@8'̲@(L$ X/ ߶7PPQQ'Q3uQ?QK1OQWB[Qc QoQQw4`@'"\T@$(GQ1O[cGwQQwQ1Q1Q11Q1QJCJCQJCRJC1RR1R'R31R?JCRKRWJCRcRo1R{1RR1RRJCRJCRRJCRRJCR1RS 1SS#1S/JCS;SGJCSSS_1Sk1SwS1SSJCSJCSSJCSSJCS1SS1TT1TT+JCT7TCJCTOT[1TgTs1TT1TTJCTTJCTTJCTTJCTU1UU1U'U31U?UKJCUWUcJCUoU{1UU1UU1UUJCUUJCUUJCUV JCVV#1V/V;1VGVS1V_VkJCVwVJCVV1VV1VV1VVJCVVJCWWJCWW+JCW7WC1WOW[1WgWs1WWJCWWJCWW1WW1WWJCWXw8`@@@''غ'̆\T% \Xw4`@@''غ'\T \XwXwXwX'wX3wX?wXKw0`XW(@ 'B'̪\X P\Ʉ4<͉ͤԀ4U<=0͹ P\ɄY$͉ͤԀDQ=T9$P͸ <a4Ȁ͕ф̈́՝wXcwXowX{wXwXwl`@ X'2\X@( P(@'^\T8pXA'\T$'\X/ ߺ <9%4Ȁ͕ф̈́՝wYwYwYwY+wY7wl`@ YC'2\X@( P(@'^\T8pYA'\T$'\X/ ߾w(`8P99$P9w(`8Y8'B\XwX`(@! Y'2\XC(P99m(@P999 P99w`Z# <8Ёxɕд#Z/Z;7ZG^ZZ7Zw `Z'2\X v{ [[7[+H;[k[w 8|սٔհѥ ,\ ɔѤ͹ ,X͹$ 4pɅXMѽM $D͹$LL/)))k[)))))3k)w`@''\T'ت\T@8 8@(8'>\TPP88@98@9899" 8'\XwxP8@!@@ 88@ P$88''@(L X8'̲@(L X [w`8'R\T@'̎\T8(@@'͊\T@@(@)@(@)@(@['ͪ'\T @'̎\T@!@ @'̎\T@ ['2\X @@ \Xg\S\+Hk\7W,w`Pw`8'.\X/ M  t01LхM屸͸ѹЀ$IX4́@ѽ 8|XɄ͔͹ML L <\Mȁ0͔հՄLwL`@(@(!(@@)(@))(8'͊\T P999w<`@('ێ\T8'خ\T )(P99 < ռɕՐȵո <ͼфͥw0`'&\CAP9 'ۖ\X  w`Pw`8'.\X  w `8 'R\X w8`>'R\TP99$P9  <MѽM^;\7\G\\w `'*'&w `'*'&w `'"'w `'"'*w`(w`(8\X/ w `(8'F\Xw`88w `(8'J\Xw`8w$`8)8'N\Xw`8(w7\]]] (PѸ܁Ѥ (Pѥ܀ (TѸ܁Ѥ (Pѥ܀w4P8'^'̲@(L Xw4P8'b'̲@(L Xw4P8'f'̲@(L X 8ͽ7]'c]W]c]ow<]{`'ܶ\T4'Ғ\T'ܦ\T4O]7]R]]w,`88'*\T'\X ,\L͐ Dս ѽ̀ɄلѡЀO]7]S^S^_C^ku^w^g=S^=S^w`@@'r\T5@)@'r\T@(@)@F@@P99C P999P@B '\X^@" '\X^$'\X7^w_k_w__77w4`8)88P999 8'\X?6___#_#_u_wd`@8''\T8'\T''\T8\T@# '.\Xg_w`Hk=S3_``w0`8@@@$ 8)8)'2\XwT`'f\T8@@@@8)'6\TJC8P99@3 '&\Xw`w`Hkw`@'^\T'j'\T@'j'\T@$@ `'@@@8p`3A'B\T'>\T`w@'F\TP9993 P999``g`JC`wX`Fu/g@P99P9998@'Z\T P999w`Hkg`wD`@P@88@'\TP999" P99g` L$ѼɅЀ́ѹ` (PɹTٰ͔ ,XɹTw0`(8@'\T$8*w`@88('\T@$8*8'\T@(8*8)@)'ъ\T8+6O'R\T(! `P'\T'^P8'\X Lѹ$ɔɔɼ͕ɌL DͤռȀԁ͸ @ͤռȀ̀ HМͤ T͹$ь1LP P,Ʉ՜ѹ (PTݽȁT{a aa# <0噤эЀ L0噤э刀ᔀ? < МЁ < МȀMw4`@@' ''̆\T \XVsa/a;aGďaSėa_ak]SawHaPOaa1aJCaa#aamaarawbSbzb +b+wb7IGbCbO4b[bgCbs kb[bbib?bbk3bbb#bcbccDc~c';c3c?>cKEcW*cckcotCc{ccc}cwc?c'cwcc/c7c?d dd#Gd/Wd;_dGdS?d_kdkdw'd!kddSdwd7dRd.dddJdeJe~_e e+Se7ceCCeOće[h_egesoKee}e'eweGeOee5'eğeOefħfofwf'f3Kf? KfKNfWuOfc{foMf{&of#ffw4`@@'''̆\T \XVsfffďfėff]SfHfPOg g1g#JCg/g;#gGgS3g_rgkwgwSgzg +gwgIGgg4ggCg kg[ghihhh+#h7chChOh[Dhg~hs;hh>htChhhh}hwh?h'hwii/i7i'?i3i?iKGiWWic_ioi{?ikii'i!kiiSiwi7iRi.ij jJj#j/Jj;~_jG jScj_Cjkćjwh_jjoKjj}j'jwjGjOjj5'jğkOkkħk+ok7wkCkOKk[ KkgNksuOk{kMk&ok#kkmk_kt|ipWipczpo/(3w`Pw`8'.\Xw`Pw`8'.\Xwp{wp,p+=S7p7p7p7q 7q#iq7w `'׾ 'Β\X7qCf7qKqqw`8@8pqA'Ғ\T'\T8'Ԫ\TP'ֶ8'\T@P8888pqA'\T'^'\Xw|rC`'ܾ'̪\T4'ܚ\T4=+4=+4P4@4@'r'ܪ'b\T$rOr[xrgwrs`07rr7r rrw`@'̎\T@'̎\T(@@ P@@ P(@@'͊\T (@@'͊\T !P(@@'͊\T (@@'͊\T !P(@$7rSrr=S$cr8i#`Wi#++i#++i#+++ mrs yss#+s/7s;Gskswsssssws`07s=SsWsswt`07tVt#+t/wDt;`P4'Ѣ0'Β\T08\X'/ n7tG~tot{tJCtJCttw`()))7twttt/ v7t4tu u[u#u/Lu;wP`@ uG'2\X'@?u'2\X7uOv3v?vKwvWwX`@A @)@)@)@)@)@ @( @( @( @( @( @\T@g '\X7vcPkvvv8vB[w  ռv v7vdLgww#7w/wcJJ~_~_1wo1w{11w1w1JCwJCw1JCwJCw11w1wJC1w1wJCJCwJCx JCJCxJCx#JC1x/x;1xGxS1x_1xkxw1xx1xJCxxJCxx1xJCxxJCxy1y1yy+1y7yCJCyO1y[yg1ysyJCyJCyyJCyyJCyJCyyJCyyJCz1zz1z'z31z?1zKzW1zczo1z{JCzzJCzz1zJCzzJCzz1z1z{ 1{{#JC{/1{;{G1{S{_JC{kJC{w{JC{7{{7{|7|7|7}7}37}G7}W7}{7}7}~ <ᅴȀ͕ф̈́՝w`8\Xw~7~77'7_7{ <Ȁ͕ф̈́՝w`8\Xw 81 P Ẍ́ɄѸНȀ̝̀mw<`'Ӻ'6@ 'r'*'b\XTw0` 'r'j'b\X HPͤ܁̈́܀ɄL̗ w@`@'''b\T$ P'\X7OGg 0d$ٸɕ T ܀̈́Ʉ͔gKw@`'&A'&AP99 'ۖ\Xw,+`000\TP4$477Wwcwo`0'Z\X7{Gw0`0'&A '\X7Ow`07+Gw`'Қ\T@'6\T(040(!'0'\T'\T'^@'Ԫ\T' \TP7G"G'=S?3w`@@'r\T=@)@'r\T'@(@)@F@$#@P99P99C P999P@B '\X?@" '\XK$'\X7Wwh#/g;?6GSWWW=Sg_3k7wgwD`@P@88@'\TP999" P99g22 4xH́ͅѹS7+7CO[gs&O 3$(,048<@'D3H?LKPWTcToX{\`dhlptx|g #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kwJJJJJJJ&O+7CO[gsJ'3g?KWJcoJ{JJ JJ#J/;LKJGS_JkwJJJLKJJ+J7JCOJ[gssJJJJJJJJJJJ'J3J?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw77DOw(`@@@@@E P99999w$`@@@@4 P9999w `@@@# P999w` P99w`P9wD`@@'@@'\T''̆\T$ \X7[xe_w$`8'z\T8\Xwt`8\T8'6\TP8@88'Ԫ\T'Қ\T8''ܞ\T' \Xyw`077w`'Ӻ\X70'w0`4P4' '\X7g'3?KWco{w`0=S9w`07+w(`P4' '\X7Wo{JCJCw`)()-7E/ /7  D$́Ʉ=UD%P5Q8 D$́Ʉ=UD%P5Q8wd`@ '2\X'̦@('@W'2\X73+77CswP`@1 @)@)@)@)@ @( @( @( @( @\T@V '\X7PWS?c  wp`P4V@w4d(P@$@8@(L" X/ 6JJJJJJJJ~_~_~_~_1111+1711C1O11[1g1JCsJC1JCJC1JCJC1JCJC111JC11JC11JC11'JCJC3JC?JCJCKJCWJCJCcJCwXd(P@@@'͊'̆\T\T@$@(@8@(L3 X/ Fwd(P@@@@@@@a @( @8@(Lr X@( @8@(Lr X@( @8@(Lr X@( @8@(Lr X@8@(Lr X/JNRVZw$`@@@@@E w `@@@@4 w`@@@# w`w`w$`@@@@! ! w8`@@@@!@@ @@@!! 1 wH`@@@@!@@ @@@!@@ @@@!1 A wd(P@@@@!@@ @@@!@@ @@@!@@ @@@!@@ @(! @8@(Lb X(@ @8@(Lb X(@ @8@(Lb X(@ @8@(Lb XQ /jnrv7ow`w$`@@@@! ! w8`@@@@!@@ @@@!! 1 wH`@@@@!@@ @@@!@@ @@@!1 A wd(P@@@@!@@ @@@!@@ @@@!@@ @@@!@@ @(! @8@(Lb X(@ @8@(Lb X(@ @8@(Lb X(@ @8@(Lb XQ /~߂߆ߊ7 o 0hѹɔ { DLфɄ՜ѹЀЀw\|`@'\T@@'6''b\T0@ '\X7  w8`'ے'ے'2P999 'ۖ\Xw$`'ےP9 'ۖ\Xw #`P4@4$/7;!Ow`D7gw`@) (w`47_#/fkw\;`P@'6\T0@\T@4P@@'Ԫ\T@P7G~{wd`@'6\T(04(0! D@pA'Ң\T@'Ԫ\TP7S+Hk7??Cw`@@'r\T=@)@'r\T'@(@)@F@<@P99P99C P999P@B '\XO@" '\X[$'\X7gw3?gK?6]o=Sw$`@('̎\T$ W!crRo{ 8DA cccx//ccc $(,04<@HPTX\`dlptx| L8 $ #/;GSLK_kwLKSSS+7CO[gsLKJ'3?KWco{SSS #/;GS_kwLK+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ wT`'\TP3@9'\T@@'N\T@'\T! wT`'\TP3@9'\T@@'N\T@'\T! MwPpo`@@'@@'\T@@@$''̆\T$ \X#e_/;GS_wk`0wpg`0'\T0(@@! (@0@'͊\T@@'͊'̆\T\T(@$$7wwD`@@'r\T$@(@)@'r\T$@(@'r\T$`@(@)@'r\T$@(@'r\T$@(@)@)@)@'r\T$8@(@)@% ; @@@d @$ @'2\T'r4P4@4P4P4d @4@'\T 4 0 @'\T 0@4@'>\T4@'>\T4@'>\T 4@00'"\T@ 'r''b\XP@ '\X#@ '\X/@ '\X;@r '\XG@R '\XS@B '\X_@" '\X7ks #>/;GS_k=SwWpKw`0Ewt`0Ic0'j\T0'j'\T99'0$+k0'j\T@ 997Ws~_w`)()+7w/ #7O [gs+ @$́Ʉ=UD%PQ8 @$́Ʉ=UD%PQ8w`@ '2\X'@'̦@@@'̦'.\T\T ''^'b\X7_kww0`@@(@)@(@)@@@S 8\X/ wH`@! @)@)@)@@(@(@(@\T@E '\X7P?   gJJJJJJJJJJJJJJJJ~_~_~_~_~_~_w`K'R\TS;r@P99sGc@P99999999$'\Xw`K'R\TS;r@P99sGc@P99999999$'\X#+7 4PѸэ wD|d(P@4@'r''b@(L$ XCe_Owd`@8\T8@p[A@p{A ''̪\X@($8\X/!Ow`@4$7zfw`07G'kw43`P4@'r'ܪ'b\Tg~?wT`8@pKA'Ғ\T'\T8'Ԫ\T'\XwDc`(4'ܚ\T4@'r'ܪ'b\T ooe{??{w`@@'r\T=@)@'r\T'@(@)@F@@P99P99C P999P@B '\X@" '\X$'\X7wK+Kw.hC]]]C]Y;;YY;;';3Y?;K;WYcoLKLKLKY{;LK;LK;YYLK;LKLKLKLK;YLKYLK;YY Y;#;/;;;GYSY_;kLKLKLK;w;YYLK;YYLKLKYYLKLKLKY;LKLK;;LK;;Y+Y7YCLKYOLKLKLKLKLKY[YgYsY;;YYYYYYYYY;Vs/CďWėk]SPO1JC&O 3+r7wKS_ +swIG4C k['i;OcDw~g>tC}w+??'Swg{/7?GW_?/'C!kWSkw7R.J~_ cC3ćGh_[o}'wGOğc#/ħCoWwkK KNuO{M&o #3n{GS_k1xmw$`$w'2\X=Sb/ 4xɼɅL4!Q<`?+2O+7CwO` 050)'̎\T@ [gP99#@P99?@P99 sP99990'̎\TP99$P977W?'3=S?EK+Wwc`07ow`)())7ww@P@P8pA'̲@(L X/ 7#/;<+GS @$́Ʉ=4=1Tw`@ _'2\X'@>'̦@@@'̦'.\T\T >'Ҏ'^'b\X7£ww@`@ @)@)@@(@(@\T@4 '\X7P+'3?MKWCcTo{Çe_w `8(8\Xw`8wÓ!Ow4ß`@'Z\Të@ '\X7/fw`07kgw`P8\X~kzw??ăw`@@'r\T_@)@'r\TI@(@)@'r\T1@(@)@"?P@P999P@P999d P9999P@b '\Xď@B '\Xě@" '\Xħ$'\X7ijwH`W'D ;3LKLK;?;KLKWLK;cLKLK;oLK;{LKLK;Ň;œLKLK;ş;ū;ŷLK;;;LKLKLKLK;;LKLKLK;; LK;;#;/;;;GLKLKLKLKLK;SLK;_;k;w;ƃ;Ə;ƛƧLK;Ƴ;ƿ;;;;;;;LKww+w7wCwOw[wgwswwNjwǗwǣ#ǯwmwwwwwww+w7wCwOw[wgwswwȋwȗwȣwȯwȻwwwwwwwww'w3w?wKwWwcwow{wɇwɓwɟwɫwɷwwwwwww ww#w/w;wGwSw_wkwwwʃwʏwʛwʧwʳwʿwOwwwwww'w3w?wKwWwcwow{wˇ.[K˓˟ TɽɕѸ܁ɼ̀͜=S˫˷++2O`? &O#i/i;ww4G`'0 08\X'/ n7S~̟̇̓w`P7̫W#/?D;EGSw_`0w`(()-7kEs̓͏͛wX`'\TPH@9'\T@8'*\T@'\T / 7ͧ,sͳͿ:W D$́Ʉ5H9%Iw$`@:'7?7Kίw0d(P@8'̲@(L X/ 7P+7C$SO[z gs7ϋ!O 0PMw`0'\X7fOwd`'Ҟ P'\T'^(4'6'&7A'\T4gGS?ڷڟ_kw<`?BP@)99 P9997wwOM[o{jчLKѓџLKLKLKLKLKLKLKLKLKѫLKѷLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLK7 7G7[777ֿ7+7ח77w77w7w37?7߿7?777w7?77_77777s7777o777;77777777K7777K7777'7777{77777G77G7O7777s7;77 7 7 K7 7 7 37 7+7w7777777w7g7W7G777'77xK=S+2O`?jjw4`@0@\T@0@\T@ 0@# \X7/;Gwl`PG@'\T'B\T'>\TP999c'B\T$7S\'9Ew`(()+7w'3/ R7?KW)cowP`'@@@'̦'.\T\T 'Ӫ\X 'Ӫ\X7{wd`@($@''\T@@''ز\T@'*\T@# 8\X/ ww\`@P@(@(@(@(@(@\T@)@)@)@)@)@'\T@b 7P+7CWuCO[S{gswD`'@(@@@@!P@@@ P)!Ow`0'̆\XO 4x͕Ɍw`@) (Zڷڟw`@@'r\TS@)@'r\T=@(@)@'r\T&@(@)O @@@999[7g@P99P99c P999@B '\X@" '\X$'\X7w U   k LKLKLKLKLKLKLKLKLKLKw<`@(@Vs@(@w@)@(S@P99Q P9@(@Vs @(@rP@(@Vs$@(@m@)@(@)@(m(@@P999@r P99@(@Vs@(@&O@)@(&O(@P99Q P9w`@(@@(@r@)@(w@P99Q P9@(@@(@w@)@(r@P99Q P9@(@@(@m@@2 P99@(@@(@&OP9w`@(@@(@m@@2 P99@(@@(@&OP9w`@(@ď@(@w@)@( S@P99R P99@(@ď@(@r P9@(@ď@(@&O@)@(&O(@P99Q P9w`@(@ė@(@w@)@( S@P99R P99@(@ė@(@r P9@(@ė@(@&O@)@(&O(@P99Q P9wl`@(@@(@&O@)@(&O(@P99Q P9wl`@(@]S@(@&O@)@(&O(@P99Q P9w`@(@PO@(@m@@2 P99@(@PO@(@&OP9w\`@(@@(@w@)@( S@P99R P99@(@@(@r! P9@(@@(@&O@)@(&O(@P99Q P9@(@@(@1!P9@(@@(@JC!#P9w`@(@1@(@m@@2 P99@(@1@(@&OP9w`@(@JC@(@m@@2 P99@(@JC@(@&OP9wt`@(@&O#@)@(@(@&O@)@(&O@@P99q P97!/w4`@(@3@)@(@(@3 @)@(@@P@(@3@)@(@(@(@&oP9@(@3@)@(@(@(@MP9@(@3@)@(@(@(@uOP9@(@3@)@(@(@(@NP9@(@3@)@(@(@(@ KP9@(@3@)@(@(@(@KP9@(@3@)@(@(@(@oP9@(@3@)@(@(@(@P9@(@3@)@(@(@(@P9@(@3@)@(@(@(@]SP9@(@3@)@(@(@(@ėP9@(@3@)@(@(@(@ďP9@(@3@)@(@(@(@"P9@(@3#@)@(@(@(@"+P97"7w`@(@r)@)@(@(@c@)@(@@ #[@r P99w`@(@w)@)@(@(@c@)@(@@ #g@r P99wt`@(@S#@)@(@(@c@)@(@@P9w<`@(@ +@(@w@)@(S@P99Q P9@(@ + @(@rP@(@ +$@(@m@)@(@)@(m(@@P999@r P99@(@ +@(@&O@)@(&O(@P99Q P9w`@(@w-@)@(@(@&O@)@(z@P99&O(@P99r P99w`@(@IG$@(@m@)@(@)@(m(@@P999@r P99@(@IG@(@&O@)@(&O(@P99Q P9wX`@(@@(@m@@2 P99w`@(@4$@(@m@)@(@)@(m(@@P999@r P99@(@4@(@&O@)@(&O(@P99Q P9wX`@(@@(@m@@2 P99w`@(@C=@)@(@(@m/@)@(@(%@)@(@@!&O@P99m(( @@P999 P99@(@C9@)@(@(@m+@)@(@(!@)@(@@!&O@P99C@@P99 P99@(@C@)@(@(@z@)@(@(@P@(@C@)@(@(@w@)@(@(@$P9@(@C/@)@(@(%@(@m@)@(@(@)@(@( #sP9@(@C/@)@(@(%@(@m@)@(@(@)@(@( #P9@(@C4@)@(@(*@(@m @)@(@(@)@(@(  ##P99@(@C;@)@(@(@m-@)@(@)@(@@@(!m(@@P999C@@P99 P99@(@C@(@&O@)@(&O(@P99Q P9w`@(@ k@(@w@)@(S@P99Q P9@(@ k @(@rP@(@ k$@(@m@)@(@)@(m(@@P999@r P99@(@ k@(@&O@)@(&O(@P99Q P9@(@ k@)@(@(@ @P99Q P9w<`@(@[@(@w@)@(S@P99Q P9@(@[ @(@rP@(@[$@(@m@)@(@)@(m(@@P999@r P99@(@[@(@&O@)@(&O(@P99Q P9wX`@(@@(@m@@2 P99w`@(@i$@(@m@)@(@)@(m(@@P999@r P99@(@i@(@&O@)@(&O(@P99Q P9wX`@(@@(@m@@2 P99w`@(@@(@m@@2 P99@(@@(@&OP9wX`@(@D@(@m@@2 P99w`@(@~@(@w@)@(#S@P99R P99@(@~@(@r#P9@(@~@(@m@@2 P99@(@~@(@&OP9wl`@(@g@(@&O@)@(&O(@P99Q P9wX`@(@>@(@m@@2 P99wX`@(@tC@(@m@@2 P99w`@(@@(@w@)@(#S@P99R P99@(@@(@r#P9@(@@(@&O@)@(&O(@P99Q P9w`@(@@(@w@)@(#S@P99R P99@(@@(@r#P9@(@@(@m@@2 P99@(@@(@&OP9w`@(@@(@w@)@(#S@P99R P99@(@@(@r#P9@(@@(@&O@)@(&O(@P99Q P9w`@(@}$@(@m@)@(@)@(m(@@P999@r P99@(@}@(@&O@)@(&O(@P99Q P9@(@}@)@(@(@PO @P99Q P9w`@(@w$@(@m@)@(@)@(m(@@P999@r P99@(@w@(@&O@)@(&O(@P99Q P9w`@(@?$@(@m@)@(@)@(m(@@P999@r P99@(@?@(@&O@)@(&O(@P99Q P9@(@?@)@(@(@(@o$P9@(@?@)@(@(@]S @$P9@(@?@)@(@(@ ?@P99Q P9w`@(@'@(@m@@2 P99@(@'@(@&OP9w`@(@w@(@w@)@($S@P99R P99@(@w@(@r$'P9@(@w@(@m@@2 P99@(@w@(@&OP9w`@(@@(@w@)@($3S@P99R P99@(@@(@r$?P9@(@@(@m@@2 P99@(@@(@&OP9wl`@(@/@(@&O@)@(&O(@P99Q P9w|`@(@7'@(@m@)@(@)@(m(@@P999@r P99wX`@(@?@(@m@@2 P99w`@(@@(@m@@2 P99@(@@(@&OP9w`@(@G@(@m@@2 P99@(@G@(@&OP9w`@(@W@(@w@)@($KS@P99R P99@(@W@(@r$WP9@(@W@(@&O@)@(&O(@P99Q P9w`@(@_@(@w@)@($cS@P99R P99@(@_@(@r$oP9@(@_@(@&O@)@(&O(@P99Q P9w`@(@?@(@m@@2 P99@(@?@(@&OP9w`@(@@(@w@)@(${S@P99R P99@(@@(@r$P9@(@@(@&O@)@(&O(@P99Q P9w`@(@'@(@w@)@($S@P99R P99@(@'@(@r$P9@(@'@(@m@@2 P99@(@'@(@&OP9wX`@(@!k@(@m@@2 P99w`@(@S@(@w@)@($S@P99R P99@(@S@(@r$P9@(@S@(@m@@2 P99@(@S@(@&OP9w`@(@w@(@w@)@($S@P99R P99@(@w@(@r$P9@(@w@(@&O@)@(&O(@P99Q P9wt`@(@7#@)@(@(@c@)@(@@P9w`@(@R)@)@(@(@c@)@(@@ $@r P99w`@(@.)@)@(@(@c@)@(@@ $@r P99w`@(@@(@w@)@($S@P99R P99@(@@(@r$P9@(@@(@m@@2 P99@(@@(@&OP9w`@(@$@(@m@)@(@)@(m(@@P999@r P99@(@@(@&O@)@(&O(@P99Q P9w`@(@J@(@m@@2 P99@(@J@(@&OP9@(@J@(@PO% P9@(@J@(@%P9w`@(@~_@(@m@@2 P99@(@~_@(@&OP9@(@~_@(@PO%#P9@(@~_@(@%/P9w|`@(@c'@(@m@)@(@)@(m(@@P999@r P99w`@(@C$@(@m@)@(@)@(m(@@P999@r P99@(@C@(@&O@)@(&O(@P99Q P9wl`@(@ć@(@&O@)@(&O(@P99Q P9w`@(@h_@(@w@)@(%;S@P99R P99@(@h_@(@r%GP9@(@h_@(@&O@)@(&O(@P99Q P9wX`@(@@(@m@@2 P99w\`@(@@(@w@)@(%SS@P99R P99@(@@(@r%_P9@(@@(@&O@)@(&O(@P99Q P9@(@@(@JC%kP9@(@@(@1%wP9w|`@(@}'@(@m@)@(@)@(m(@@P999@r P99w`@(@'@(@w@)@(%S@P99R P99@(@'@(@r%P9@(@'@(@&O@)@(&O(@P99Q P9w|`@(@w'@(@m@)@(@)@(m(@@P999@r P99w|`@(@G'@(@m@)@(@)@(m(@@P999@r P99w|`@(@O'@(@m@)@(@)@(m(@@P999@r P99w`@(@ğ@(@w@)@(%S@P99R P99@(@ğ@(@r%P9@(@ğ@(@&O@)@(&O(@P99Q P9w`@(@c9@)@(@(@S'@)@(@@$%%%%P999997%w`@(@@(@w@)@(&S@P99R P99@(@@(@r&P9@(@@(@&O@)@(&O(@P99Q P9w`@(@ħ@(@w@)@(&S@P99R P99@(@ħ@(@r&P9@(@ħ@(@&O@)@(&O(@P99Q P9wl`@(@o@(@&O@)@(&O(@P99Q P9wl`@(@w@(@&O@)@(&O(@P99Q P9w`@(@@(@w@)@('S@P99R P99@(@@(@r'P9@(@@(@m@@2 P99@(@@(@&OP9w`@(@K@(@w@)@('S@P99R P99@(@K@(@r''P9@(@K@(@&O@)@(&O(@P99Q P9w`@(@ K@(@w@)@('3S@P99R P99@(@ K@(@r'?P9@(@ K@(@&O@)@(&O(@P99Q P9w`@(@N@(@w@)@('KS@P99R P99@(@N@(@r'WP9@(@N@(@&O@)@(&O(@P99Q P9w`@(@uO@(@w@)@('cS@P99R P99@(@uO@(@r'oP9@(@uO@(@&O@)@(&O(@P99Q P9w`@(@{@(@w@)@('{S@P99R P99@(@{@(@r'P9@(@{@(@&O@)@(&O(@P99Q P9w`@(@M@(@w@)@('S@P99R P99@(@M@(@r'P9@(@M@(@&O@)@(&O(@P99Q P9w`@(@&o@(@w@)@('S@P99R P99@(@&o@(@r'P9@(@&o@(@&O@)@(&O(@P99Q P9w`@(@#@(@w@)@('S@P99R P99@(@#@(@r'P9@(@#@(@m@@2 P99@(@#@(@&OP9w`@(@@(@m@@2 P99@(@@(@&OP9x'''+2O'( (b/(#w (/`0GC[0 0P990כ0'j\TP99+0'j\TP992O090909`W@'V\T94{ @'֒\T9W @'֖\T9 @'݂\T9{ @'՞\T9 0'j\T P99999999999997(;V(((w\(`'\T@*O@9'\T08\T@'F\T@'\T1 / J7((;((())w`(())7)wc)3)?)K/ 7)Wg)c)o){wP`'@@@'̦'.\T\T '.\X '.\X7))wT`@P@(@(@(@(@\T@)@)@)@)@'\T@R 7)O**hgO**+*7!Of*Cڷ+*O*[w`@@'r\TC@)@'r\T.@(@)Oc@@99[7g@'r\T@(@P99P99C P999*g@" '\X*s$'\X7*w++++?+K[+W&O+c&O+o&O+{&O+&O+&O+m+&O+w`@(@#@(@w@)@(+S@P99R P99@(@#@(@r+P9@(@#@(@&O@)@(&O(@P99Q P9w$`@(@m@@)@(@)@(@(@m.@)@(@)@(@@!@@@!(@@!PPm@@@P999 P9 @(@m1@)@(@)@(@(@&O@)@(@@!&O@@P99 P9 &O+&O+3+z+m, 3,&O,#&O,/&O,;&O,G&O,S&O,_&O,k&O,w'&O,&O,&O,&O,&O,&O,&O,&O,&O,&O,&O,&O-&O-&O-&O-+&O-7&O-C&O-O&O-[&O-g1JJC&O-s&O-&O-&O-m-&O-&O-&O-&O-&O---.?w`@(@O@(@w@)@(.S@P99R P99@(@O@(@r.P9@(@O@(@&O@)@(&O(@P99Q P9&O.'&O.3&O.?&O.K&O.W&O.c&O.o&O.{&O.&O.&O.&O.&O.&O.&O.&O.&O.&O.&O.&O/ &O/&O/#=S//y/;+2O/G/S+/_b//kwL/w`@0@'\T0@4 '0@'Բ\T47/з///w/`08\X/ J7////Ew`))(-7/EK00#0// N7u/0;?0G0Sw(`@@(@)@@2 8\X/ wL`@P@(@(@(@\T@)@)@)@'\T@B 70sFc0+ws01Hk1+1=S1'w`@@'r\T7@)@'r\T!@(@)@g@P99B 1399P@B '\X1?@" '\X1K$'\X71Ww1w222'X232?&O2K&O2W2c2o/O&O2{&O2=S2222+22w2` 072[233w`P733?$33K3W3cw`))(+73ow7333/ i;33w3wx`@/@*P@(@(@\T@@)@)@@PP@(@(@\T@+@)@# )! PP73_Gc4 4'+=SW43w`@@'r\T9@)@'r\T#@(@)@S@4?99B 4K99P@B '\X4W@" '\X4c$'\X74ow8F8838?8K8W8c8o8{888w8` 078V888w `8 '\X/ զ78s999'w`))()793w9K9W9c <эj/9o9{799w8`@P@)@'ت\T@@\T 9/:WW:w`@@'r\T$@)PP@@#d?@@'>\T'&:A'\T'ъ\T9@@  @@P999@@h@'&:3A'\T@P999 @@'r\T+@(@'r\T@(c@@)@)@c@9 :w'2\X@@'r\TH@(@'r\T;@(c@0@)@'r\T$@(@)@'r\T@(@)@@) @ @@@P99@ ####@@'r\Ty@(@'r\Tl@(c@a@)@'r\TT@(@)@'r\TE@(@'r\T8@(@-@)@'r\T @(@)@)@ @)@ @@@99P99@@  # # ########@@'r\TL@(@'r\T?@(c@4@)@'r\T'@(@'r\T@(@)@)@) @@@@99P99 @@ #p#####:$'\X7:w@" '\X>$'\X7>w?+3?7?K?W?c?o?{??y?????w?`07?V?@@w`P7@g@?@K@Ww`()(+7@cv@{@@ s@@@@w`'f\X@:n[@@w`@@'r\To@)@'r\TY@(@'r\TC@(@)@'r\T+@(@)@@)h@?+@P999P99P9@ 99P@r '\X@@R '\X@@2 '\XA @" '\XA$'\X7A#BWwBc&OBoBBr/B=SBBBBBBBBCCwC`07C+VC?CKCWw `' '\X7Cc~CCw`()()7CvCCCB CC CPO:n[DDD=SD'w4`@@'r\T$@)@'r\Tk@(@'r\TU@(@)@'r\T>@(@)@)h@8@''z\T)@P99P99P9Pqo@9 @P99P9999 P999D3@R '\XD?@2 '\XDK@" '\XDW$'\X/ 7DowEoOE{EE:EEEEEEEEFFFwF+`07F7KFKFWw(`@@'j\T 'N\X7FcFw`)((-7FDFFF FFhF:FF=SGG=SGG'G3w`@@'r\Tg@)@'r\TQ@(@)@'r\T9@(@)@*hcOYW@P99P99YW@P99P99P99b G?99P@b '\XGK@B '\XGW@" '\XGc$'\X7GowH'?H3HGHSH_=SHk$cHwHHHHHHHwH`07Hl'Hw`I7Iw`)((+7I#vI;IGISO I_Ik?IwIII=SI CIIIppIIw`@@'r\TC@)@'r\T-@(@)@]o4{YW@P99P99I9B I99P@B '\XJ@" '\XJ$'\X7JwK_oKkKK=K=SK$cKKKKK+b/wK`47K2kwL `4w`)(()7LvL/L;LGX LSL_כLkLwLOLLhLppLLLLd[Lw@`@@'r\T$@)@'r\Tq@(@)@'r\TY@(@)@K@'β\TF@@@P999c P999h4{YW@P99P99P9FL@L99P999c P999P@b '\XM@B '\XM@" '\XM$'\X7M+wO[;OgO{Ob/O=SOOOOOwO`0w`(((-7ODOP P P#P/P;TPGPSP_PkPwpe_PFPPd[POPPd[PPw0`@@'r\T$@)@'r\T$@(@)@'r\T$@@(@)@'r\T$@(@)@%'f\T'f\Tqo  @P99 @ @@P99]#@P9999@ @P999P999  @P99 @ @P99]#@@P99999Z@Z @@P999P99F @ @@P999P999P999F @ @@P999P999P9999@P9999 P9999P@ '\XP@b '\XP@B '\XP@" '\XQ$'\X7QwQ{QQQ$QQQQyR Rw`(((+7R#vSR;RGRS R_RkORw[R_RRRRRRR1R4{PORd[RQ +S#[SSw`@@'r\T/@)@'r\T@(@)h@'&S+A'\T@C 99SC@" '\XSO$'\X7S[wT;nTGT[TgLgTs=STTTTw`((()7Tv3TTTXO TTUTUU{cU'FU3U?POUKPOUWUce_4{ +Uo#[U{w`U9_=SUw`@@'r\TW@)@'r\TA@(@)@'r\T)@(@)'f\Th@@P99P9@@@pUA'\Ts 99V@B '\XV@" '\XW$'\X7WwWWWWX $cXw`))),7X#DX;XGXSX_XkXw[XXXXFX4{4{JCX +XX_=SwP`@''.\T\T8''.\T\T'ъ\T''.\T\TqoF@X99 @8@P99X99@P999 c@P998@P99X99YW@P99P999 @P998@P99Y99F@Y99P999 P99999#}+YY+w`@@'r\TG@)@'r\T1@(@)@'r\T@(@)qo@@@pY7A'\Tb 9Z?@B '\XZK@" '\XZW$'\X7Zcw[#g[/[C[Ow`)))*7[[v[s[[[[[PO[PO[[[[e_ ?[\]#]#]#\e_#}+\w`@''.\T\T8''.\T\T'ъ\T''.\T\TqoF@\'99 @8@P99\399@P999 @P998@P99\?99F@\K99P999 P9999#}+\W\cw`@@'r\TG@)@'r\T1@(@)@'r\T@(@)qo@@@p\oA'\Tb 9]+@B '\X]7@" '\X]C$'\X7]Ow^0o^^#^/w`)))(7^;u^S^_^kM^w^ ^cOcOPO^PO^c ?^e_#}^]#]#^e_#}+^w`@''.\T\T8''.\T\T'ъ\T''.\T\TqoF@^99 @8@P99^99@P999 P999#}+^_w`@@'r\TA@)@'r\T,@(@)'f\Th@@P99P9}o@@p_A'\T9S P999_@" '\X_$'\X7_w`wF```w`()),7`D```G#``sa܃?ae_#}a]##}+a'w`@B@@'r\T@(@)B@8pa3A'\T9@B 9a@" '\X@@'r\T @(@@@'r\T @(b@_3aw`@@'r\T+@)@'r\T@(@)F@a@'ъ\TC 99a@" '\Xa$'\X7awb[ Cbgb{bw`())*7bubbbbbbQ?b#}wd`@'z\T@@@'ή\T$]Sg@P99 8P999{=S_3b@#3c w`@@'r\T+@)@'r\T@(@) C@c@'ъ\TC 99c#@" '\Xc/$'\X7c;weB+eeew`())(7fuff+f75fCfOf[ fg@#3fs@#3fw`@@'r\T$@)@'r\T$h@(@)@'β\T@@@@@'r\T+@(@)@'r\T@(@)@@@B !P@ '\Xf@r '\Xf@R '\X@P@(@'Z\T@(@@@(@'̎\T(@'\T$ @@" P@'f\T'f\T@$t@@@P99P9h@( @P99P99P9}o@f99@u @P99P99P99 @4 @@'r\T@(@ @)b@9P9$ @'\T$ f@'\T$P9 @ @pfA'\T'ъ\T9P999 P9999g@" '\Xg'$'\X7g3wgghhw`)(),7h+D[hChOh[hghsPOhhh@#3?hh=Sw``@@'r\T@(@)B@8phA'\T9@2 9h$'\X@#3hw`@@'r\TG@)@'r\T2@(@)'f\Th@(@P99P99P9}o@@phA'\T9S P999i@" '\Xi$'\X7iwjwrjjjw`)()*7juojjjLjjckkkgk'w(`8@ P999I=S@#3w`@+@@'r\T@(@)B@8pk3A'\T9@B 9k[@" '\X@@'r\T@(@ @)b@B 9@#3kgw`@@'r\TG@)@'r\T1@(@)'f\Tt@PZ@qo@P9P9@'ъ\T9ks999T P9999k@" '\Xk$'\X7kwl/l;lOl[w`)()(7lguOlllx_lܣlllw(`8@ P999I=S@#3fg=Slw`@@'r\T3@)@'r\T@(@)Z@P99qo@9C l999m@" '\Xm$'\X7mwmR3mmmw`((),7mD3mnn8'_Wn (T$хЁn'g=Sg=SnOw`@@'r\T+@)@'r\T@(@)Z@qo@9C n[999ng@" '\Xns$'\X7nwpgpp/p;w`(()*7pGu#p_pkpwp (T$хЁg=S:g=Spw`@@'r\T$@)@'r\T$`@(@)@'r\T$@(@'r\Tk@(@)@)@'&pA'\T'f\Tt@@'&'\T@''\T'ۮ'\T}o@@9b@@'>'\T9P9 @'ъ\T9P999 P9999qw@R '\Xq@B '\Xq@" '\Xq$'\X7qws sssw`(()(7susss7sg=Sw`@<t'2\X@@'r\T&@(@)@'r\T@(@)@'r\T @(@)@@@'r\T@(@)@'r\T@(@)@ @@@c P999g;t/=S3t;tGw`@@'r\T$P@)@'r\T$@(@'r\T$@(@)@'r\T$D@(@)@)@&@@'r\T@(@)@@P@'\T tS@'\T$P'f\T'f\Th@@P99P9 @ @P99}ow @@P999@7@t_99P99P9 @'ъ\T9b @P99P999P99P9@tk9P999 P999tw@R '\Xt@2 '\Xt@" '\Xt$'\X7twu!+uuvw`))(,7vD v'v3v?bvK ,\4ɽ=ՄLg;vW=S3vcڟr;vov{=Svw0`@@'r\T$@)@'j'\T@'j'\T@'.'\T'ֶ'\T'\Tg@9v'2\T'^@@@@'&vA'\T99@'&'\T9P999@'&vA'\TB 9w$'\X7w+wxaxxxw`))(*7xtxxxyg;y=Sr;yy'=S 84ɽM@Q܀Lw4`FPO@P99@ P999w `YW (P993wd`@@'r\T$`@)@'r\T$@(@)@'r\Tl@(@)'f\T'f\Th@YW@P99P99@@P99P99Z]S(PO@P99P99@P999PO@P99FPO@P99?@ @99P999P9999 P999y3@B '\Xy?@" '\XyK$'\X7yWwz%z{{w`))((7{'t{?{K{W1{cg;r;{o+4{{{{w`@@'r\T$@)@'r\T$p@(@)@'r\T$@(@)@u@'r\T*'f\T!+@(@P9P @)9@ @P9999P999s P999T'R\T@'J\T@T'R\T''̆\T\TF{g@P99P999@c P999P@b '\X{@B '\X{@" '\X{$'\X7{w}'c}3}G}Sw`()(,7}_C}w}}JC}r;+4{}B}J}}wd`@@'r\T$`@)@'r\T$@(@)@'r\Tk@(@)@\@'r\T*'f\Ta@(@P9P @)9@ @P9999P999s P999T'R\T@'J\T@T'R\T''̆\T\T}P@b '\X}@B '\X}@" '\X}$'\X7~wS]o_sw`()(*7tk+TJgJwL`@@'r\T$0@)@'r\Tw@(@)@'r\T_@(@)@P@'r\T*'f\T%@(@P9P @)9@ @P9999P999s P999Fg@P99P999@c P999P@b '\X@B '\X@" '\X'$'\X73ww`()((7+tkCO[gJaJsBJw`@#@@'r\TO@)@'r\T9@(@)@'r\T!@(@)@YW@P99@s P999P@r '\X@R '\X@2 '\X@" '\X@@'r\T1@)@'r\T$@(@'r\T@(@)@)F@@@99s P999###|@@'r\TD@)@'r\T7@(@'r\T*@(B@@)@'r\T@(@)@ '2\X####@@'r\TY@)@'r\TL@(@'r\T?@(B@4@)@'r\T'@(@)@@)@'r\T@(@)@F @ )9 ##x#l#`#T#H#<#07ww`)((,7C JTJ#/e_;G ,`4ɽᔀMw`@@'r\T9@)@'r\T$@(@)@qo@B 9h@(P9]o@)@99C P999S@" '\X_$'\X7kww`)((*7t?JPOe_'3=S3w<`@@'r\T?K$'\X7Wwo{w`)(((7te_3=SgWw`@@'r\Ts@)@'r\T]@(@)'f\T@'j'\T@)'ъ\T@@s P999h@@P99P9 @@@@pOA'\T@(P9P999s P999@" '\X+$'\X77wEw`(((,7C H8MUIPUQ HՅ͕̀Mw`@$@@'r\TJ@(@)@P@@ @'2\$Tqo@9@@p?A'Pqo@98@'\TP999R P99[@2 '\X3gwH`@@)@(@)@(@)'Pqo@9@@e '\X7swgw`(((*7sg+ @8ɕMIQLQ TITw`8P9=S3wD`@@)@(@)@(@)PPqo@9@@e '\X77wz3w`((((7s w``@@'r\T$X@)@'r\T$@(@)@'r\Ti@(@)@[c@hG#[ @@/P'\TP999F@ @P999P99999@9P9999P999c P999P@b '\X{@B '\X@" '\X$'\X7wqow`))-7CkCF LɅ\͉ͤԀ͸)@'w`@@'r\T$`@)@'r\T$@(@'r\T$@(@)@'r\T$P@(@)@'r\T}@(@)@)'f\T'f\T @@@P999Z@P99P99h @1@P99P99P9@JC @P997(@P999P999P9 @'ъ\T99qo @9P9999P99P9@ @399 P999?@r '\XK@R '\XW@2 '\Xc@" '\Xo$'\X7{wO#/w`))+7;sS_k_wGG)@};=Sw`@@'r\T$@)@'r\T$P@(@'r\T@(@)@'r\Th@(@)@)'f\T'f\T @@P99Z@P99qo@9h @1 @P99P99P9@JC @P99P99P9 @'ъ\T99P9999P99P9@@P99 P999@R '\X@2 '\X@" '\X$'\X7wKS#Wkww`)))7s)};=S;=SwD`@@'r\T @)?@" 9$'\X7wBw`()-7CC'3};?K;Wc=S=Sw`@@'r\T7@)@'r\T!@(@)'f\Th@@P99P9@P9@'ъ\TS 99o@" '\X{$'\X7ww`()+7s[/ };;#B=S/w`@@'r\To@)@'r\TZ@(@)'f\Th@;9P9@#AK@P9@'&GA'\T'ъ\T9P99Oqo@9AK@P99P999T P9999@" '\X$'\X7w7tCWcw`())7os; };;B=Sw<`@@'r\T$@(@'r\To@(B@[@)@'r\TE@(@)@7@)@'r\T!@(@)@g@P99@ P999P@ '\X@r '\XP@b '\X@B '\XB@2 '\X@" '\X$'\X3=Sw`@@'r\T5@)@'r\T@(@)@g@P99B P99P@B '\X@" '\X $'\X7whw`)(-7C'K3_e_?KWc3=SWow`@@'r\T;@)@'r\T%@(@)@POܣYW@P99P99B P99P@B '\X{@" '\X$'\X7w/w`)(+7s g'3e_W-O?w`@@'r\Tk@)@'r\TU@(@)@'r\T>@(@)@'β\T ! K'2\X @@''\T9@9P9@@'&'\T9c P999@B '\X@" '\X$'\X7w w`)()7r-k'Bg3-O L$́ѹQ$QHMմ̀3=Sc?Kw `@@'r\Tm@)@'r\TX@(@)@'β\T t@@C 99"t@@P@(@))@W'\T'^)@''ز\T@99@'&'ز\TB 9@" '\X$'\X77KWw`((-7cB{NB3=Sc (PɽՄL ,X$ɼѤ3=Swt`@@'r\T$@)@'r\T$(@(@)@'&A'\T@''\T@''\T@'&[A'\T@'&A'\T+h@'&A'\T@@@'&A'\T'ъ\T 99S@@'ۮ'\Tqo@9 P999@" '\X$'\Xw'+3GSw`((+7_rw-3=S3=Sw`@('β\T@@'r\T)@(@'r\T@(@)@)@@@99R P99@" '\X$'\Xw0`@T'R\T 'J\XwD`@'"\T@$@@ @( ;! w`P99w$`F@@ P999=S7w #/w`(()7;rS_kNw=Sg=Sw,`@@'r\T}@)@'r\Th@(@)@'\T@@'\T'β'Ӗ\T@@@'β\T$ @'β'Ӗ\T ! '2\X g'̪P99g'P99P99@9@S 99@" '\X$'\X7w!'3w`)),7?BWcog{ <4ɽɄѕɔͥL\=Sw `@@'r\Tw@)@'r\Ta@(@'r\TK@(@)@)@@'r\T@('"\TPP@@( g'P99P9@@)@@(@)8@@@9@99qo@9 P999@2 '\X@" '\X$'\X/ 7}ow`))*7rw +\=S+G7=SC/ wOZ[o{w`))(7rW+G=S7w[Ug{w`(),7Bs+Gw`@#x@@'r\TG@)@'r\T1@(@'r\T@(@)@)Z@qo@9}o@9t P9999@B '\X@2 '\X@" '\X@@'r\Tv@)@'r\Ti@(@'r\T\@(@)@'r\TM@(7@B@)@'r\T5@(@)@,@)'f\Th@ @P99P9Z@@@P99}o@9P9999 P999 #######@@'r\T4@)@'r\T'@(@'r\T@(@)@@)B@}o@9s P999####@@'r\T @)@7wwBw`()*7r+-'=S3wx`@u@@'r\Ta@)@'r\TK@(@)@'r\T3@(@)@'r\T@(@)@ @@@ P9999P@ '\X@r '\X@R '\X'@2 '\X3@" '\X@@'r\T2@)@'r\T%@(@)@'r\T@(@)@ @@s ?999#X#L#@#47Kwi_w`()(7r #/O;'=SG3p.Sg_kw|`@@'r\T%@)@@) (Z@(U@)9# w999$'\X7w3F?Kw`)(,7WB{o{'=Sp.g3w`@@'r\T9@)@@) ('f\Th@@(P99P9Z@@B@)9P99993 P999$'\X7YW3?w`)(*7Kqco{O+p.gg3wD`@@'r\T$ @)@'r\Ts@(@)@'r\T[@(@)@L@'β\T@0@T'R\T'J\T@'β\T@(P99@P9@)'ъ\Tr 9YW@P99@s P999P@b '\X@B '\X@" '\X$'\Xww`)((7q7COS[pg[#n[s7ww`((,7BSPO[#n[w`@@'r\Tc@)@'r\TM@(@)@?@'β\T "@B P99@T'R\T'J\T@'β\T "@R P99c@(P99@R )9P@B '\X@" '\X$'\X7'w'w`((*73qKWco[#n[{w`@@'r\T$@@)@'r\T$@(@)@'r\T$@(@)@'r\T$(@(@)@'r\Ts@(@)@'r\T[@(@)@Lqo @O=P@P999P@P999999P999O @ @P99999 P99999P@ '\X@ '\X@ '\X@b '\X@B '\X@" '\X$'\X7w;w`(((7qsVn['F3&O?FK[kkVg#>cw`@@'r\T$@)@'r\T$@(@)@'r\T$8@(@)@'r\Tw@(@)@i'f\T'f\Th@P @P999P99@P@P999P99P99@P9O=@@999P999O @ @P9P99999 P999999P@ '\XW@b '\Xc@B '\Xo@" '\X{$'\X7wCuMO[w`)-7gB+{C_<=<VWykcow`@@'r\TE@)@'r\T/@(@);@h@H@99P999P99P9@99C P999@" '\X$'\X7Rw`)+7qGgK'3?e_?=Sw`@@'r\TU@)@'r\T?@(@)h@K9P9FW@P99c99Fo@P9999@9999B P99{@" '\X$'\Xw?w`))7q'77){'<){3=S{7?ww`(-7BP3 <z wh`@@'r\T$h@)@'r\T$@(@'r\T$@(@)@)'f\T@#@@'r\TY@(@)@'r\TA@(@)@3;@@? @#H@ @#9P999P999P99 @99P99 P999P@ '\X/@ '\X;@ '\X@@'r\T7@(@)@.;@? @#H @ @#9P999P999P99 @99 P999#L#@@@*;@?@#H @\99P999P99@99 P999G@2 '\XS@" '\X_$'\X7kw.›w`(+7¯kJx/G=SSw$`@@'r\Ty@)@'r\Tc@(@'r\TM@(@)@'r\T5@(@)@'@)S#@@P999 99P99P9@ 99P@r '\X@R '\X#@2 '\X/@" '\X;$'\X7Gw'w`()73KGS_*kwBŃ #=S/w`@@'r\T$X@)@'r\T$@(@)@'r\T$@(@)'f\T'f\T'f\T'f\T@'&ŏA'\T;@h@ @P99P9t @ @@GHk@''\T9@H@S#ūHk@@@'̎\TP9999ŷ99P99P9@99P999P999P999@ @9P9999P9999P999 P999@B '\X@" '\X$'\X7w`),7p %Sq'#S?w`'f\XB/ūo=SGw`@@'r\Tc@)@'r\TM@(@)'f\T;@S#ūHk@,H @;99P999999ŷ99P99P9@99S P999G@" '\XS$'\Xw`)*7_ps7NjZ8ǗG=SGw`(,7ǣAǷWUw`(*7`sWw`((771,ğ+O7CħOe[GgsowȋȗȣGȯȻ^wK KNuO'{3M?&oK+Wco*+{+ɇgɓɟɫ#ɷ';h7 #n/(;VsG@GS]S_kwʃpʏgʛۿʧʳSʿďėr3+7CO){[gWWs 0#ˋ8s˗WˣW˯˻T[ /S7w3G/#kg####g #3G*s+,//232K33$4g4{677'737G788{8>> BGCC#DkD_!s";NOPPP+P?S+S{SSSSST;TTTUU0V7\^^'C^;^_^`cw 73g`bfC6Ki?kG7'rr)ukv+vCGvwy+z{NS';Ocw)Sg`KLiwGoC_ cEEE3ExF[PWPkPPPp2_ggghhLl,AKcw‹Ÿ  $(@DX\`dlptx  $(,048<@DHLPTX\`dhlptx|į7Wwŗ  $(,048<@DHLP \hlptx|3o/C3Gww s2?c,O/dcwI'wO'%cWkGKPяѣѷkwcSPH;hc?[G[ZC;OCdd3K_s#GkΧF?ΫGK  o!S!g!""̗$ $$3$G$[$o$$$%BS&_&s*{g*u+5CLBB+cH _PQ3QS#./{W7XkZ[\\'^+^?ce3f3fGfgfsfffj jjjms n/nCnWnkç cYC87cwPKc'33]Kx}k'gWFO@kZh0'~zm|/@Gw{kBÏėĻŻSc7G_w?Sg{ˏ УзC;7,Wv{z1O}`WOσo wCW7"&;'s)')E+C~s/4''ʣ>?#@'EBCKKz?R{ce[]]"l'>\uuuqu y'yW>S?I"kho '' t{s;48ZS6GO HH'H/# $JH7HWK&HwHwHHSHHII3IGI[I{IIII2I%m#KJJ/JCJWJkJ CJc JJJKKK+K?ZKSKgddKKKKKQKLLJ[JoL+L?LSLgL{LLLLLLMS?I/M7lCpM/S ?kgMCkM[u#gMoMMMMMMNNN+N?NSNgN{NNNNN.N;OL7+!O'O;\SOOOcOwOO@OOOOPPPPP'P;[+LPOPcPwPPPPPPQQ'Q;_QOQoQQQQRR#R7R[ORoRwRRRRRRSS'S;SOScSSSJTgT{TTTTTTUUU/UCUWUkUUUUUUUV VV3VGV[VotkwUkB+kUVVVVVVVWW#W7VKWKW_WsWsWWWWWX XX3XGX[XoXXXXXXXYYY/YCYWYk[Z23 7 K*[K2ZZZZZggZ[[#[7J 7 G?GG_[K[_[s[[[eKhe[23 7G?GG_[[[[\y+\' Kn#$S#W#k####$$%%%+%&&&/&C7HIwI;PXY\ λ0_3Dcd ; zW&W`כh G%SsohkVoY/:5-/?~#O[7`'w]S(Z߿vC07dG'zQ܃POcܣeG'1RS{^+k+<_W7sb[{\:k{c4WGJ81JCkgC_/ K -kN-Ng s-OO+X7Z{GXk+sts{S/GI  [Rw3~k[o+SS#KC777_6cQgz?3-[j{;[WSu_AKCC\SG{cqVCgK%P3J*C_ٗA?o7W`sS77ğO`ħeGowG^wK KNuO{M&o+*++gG6#rX13"޳23]!39K#e+/|wJ*f ';h7n(Vs@GpgۿSďėr3){WW 0#8sWWKk 3H"GS^W|OwT[9G([/s#u/ 'c7,7(# KLWu~KAG«&G;kEoOo Oka_[3$O/ wcq'<[G w_1'gWagJm{'C[7_S[}Oitk`H+ݟ"  O;'5{+KWK#QS~k OYs"sS#r[#bBvFt0L$/'#lDkWwQiCs++/#kw3yf; W9G KMG\sc[?mz ^3,W^ P -, CO_{oq_GVS or {=wBPvo'=x/ .oi;C@.7GoI'(+cHkZGzek o oG7K+VPS/FW 'DCcI:m_Q4?}+cM.?Ru;YWFi_BUZ}o! + /htBS#Oqoz3gEJ['s]oc%a!+ gR3rB+ CF0ogn{;o?O&O3FwUMHKlOCH3T5w&7Cl?^/g߫KTOÃmߓ3C#{RpK#Q/H8b khVY<$#;w /KS?Q*wWS{PUoJS '/>#A;)7K:?eU?p{qS/+cI7KJo< c|WsT-{@kmkxuom7'n?>ZUޏoNC;yO w #f9/)[?;V+g [fhc23 Ku)_1t'(}]2* Onws_;c6w;۟$Caw K K1_;OW;z cTNc?{ CoS@+Pfk>?cc ;/3|'{5OlA< @DkcwNsgs[yh [w;0,^#mrwSz +wIG4C k[i?k3#cD~;>E*ktC}w?'w/7?GW_?k'!kSw7R.JJ~_ ScCćh_oK}'wGO5' o #S_cjsB_6!b2؃dJ.[n{g MD,|o|g3#?#{"{\jZ?v'445ga a/aS7b0K7.;k+'&HO'3qv%3g\T8'\T 8'\TPP@@p8A@@\T @'2\T !@'B\XP'F\T#$@'2\T$ $$YH0$MQG>>>>w<[)d(P@0@@5@@'@(L CXw)7 ?k@@@@  ='"'\T(@$P '"'\T'"'\T7'\T7''\T\T7'\T7''\T\T7'\T7''\T\T'.\T?S'\T'GSA'?S@9'2\T''\T@'2\T$''\T'@\''\TSP'\T'"'\T'\T#8'\TOTP'\T8\T# '"'\TP8'B\T#@7''\T\T'.\T?S'\T@pTA'?S@9'2\T@T'\T@@'\T @'2\T$7'\T7''\T\T7'\T7''\T\T@7''\T\T'.\T?S'\T''?S@9'2\TT'\T@'\T@'2\T$7'\T7''\T\T7'\T7''\T\T@7''\T\T'.\T?S'\T''UA'?S@9'2\T'"@'\T@'2\T '"'\T $@'2\T 8\Xw{8[UwgU ($YH $w7ddeee[ 'e3e?eKe_e 0@I%8QM A7ke7ewH`@@'''\T'''\XwT`'.\T@@@ )@gf@fP'\T'R\T7f7gw,`((( @!(0(7@  w<`@@@@>@'\T@'\T 1w,d(P(PL@@@ 3[gggog{ggggwgw `@((w7gh/h;hGhO1Sh (TPMP8LQ0= Q$Y_h ghshw`Oh7hhhwwwwww@`@P@@)@' \T@@(@\T "wwP7hii'i3iw(`'L 'L P7kwkklw(`@0l@ '\XClglsl{llll7lm7 n7n7n 0@I%8Q09Q! ,@I%8Q0Y1           7/o , T0Y1oooooo $@HMPIP 90IL7o $@TA U0Y0w_2CpGOpw4`op''\T'\Xppp%wpwpw P<Еٕw q 8P<w8`8q''\T'\XKqWqGcqwqqwwqw4`q''\T'\X7q73r 4PeA@0%MPGgrrrrwr dX4P!=̹ЁС rw8r`0@'\T 0@ "'\XP7rtttttttt7 uwh`@@@''"'\T'u'n'\T@'&\T4 7/u_u@Vw `3'\T@'*\TPluu'\T=u@ u'\X0'\T(@@!\@'\T@0'\T@'\T(@$P|@'\T@|0'\T| '\X0'\X7ucuuuwuuvvvwh`@'.'2\T@$)@'6'\T@'.'2'\T \X_vkvwvvvwvv7vGvvvwD`@'\T@':'\T@@8\T / >Awwwp`@'B\T@t%(@@!@@@'\T@@''\T\T(@$P !323K/w;w7GwO1xx[B(x'x (T\=IHe =TQ =9LQ8QM73xGgx wxxxxGxxx+ xxxxyywyww `@(@ 'F\Xw7?y?zSz_zkzGwzO,zzzzzzwzw`(@@$)@$()@$()@$()@$()@$()@$()@$(@($)z {{#{w`(@(@(@@P2@( @((@ P9$@((@ ((@(  P99$@ A@((@ ((@(  ((@(  P999$@@))+(@@ "7/{s{7{{ {{{{w{{w w{w `@@ B'\X7{/|C|O|[|w`@@ "w`& X0= QXHнMԹс́w`$7g|32|||wX`@l@l@@!@@(@!$@@@ #|'\Xt7}C}O}wX`07[} 8|$Lс o}w,`@@''J\T \Xww}}w`Aw}7}}w }}G}}~O1~#~/~;~O,G~S~ LQ H (0= Q H _~+g~wa`4gJ1s~7~~~~wg`0w`((@(@'b'J\T\T(@'b'J\T\T(@@@@ b @@6@@6 (@$P~~~Cf~_2 ~~k#3~w /c7'" +72CO[o{Lw`@@'@'\T@'N\T@@'R\T 2'V\X'Z@'\T#@'R\T@'N\T@'N\T@'R\T 2'V\X'@'\T @'\T @@ 2'\Xw7tw`w7d+?KWco{gLw`@'\T(@@!1@@'\T@@@@\@$ \@'\T'V@@'\T(@$PwHg`0(@@!@@'\T@'\T(@$PǁӁ߁ (T1T%Mс 8P1T%Mw@`'.\T@@@@ "+@@'^\TwT`'.\T@@$-@@7P'\T'R\TݟGo{4Âςۂ7w``@'b'V'\X@2@$'f\X'b'V'\X@/hg7{ÃwGσ[B w`sOg57#w4`@@ @@(@\T)'wgi77oτ+?_DžhO/OoÆ׆3G[oÇׇh aJ1';Oo$ˈ߈3SsÉ׉';OcwNJۊ+?Sg{ˋߋ/CWkό 3G[oӍ#7K_sÎ׎';OcwǏۏ+?Sg{ːߐw`'jL7w/;O $HT[gsG6˒w8d(PPP(@!>(@  @@@8 @(L $X(@  @@@8@(L $X(@  @@@8@(L $X@P@ "\X'(@!<(@  @@@8@(L $X(@  @@@8@(L $X(@  @@@8@(L $X@@@8@(L $X@@@8@(L $X/(nrvz~wd(P@@@!+@@'\T~@@(@@@'@(L eX@@'\T(@ @P@@''@(L TXwD`@''\T@('J'\T \Xw<`'@@P$(@''\XwT`'@@P$(@@@''\T \XGד{8>[Uw|`'P'\T8'\T'\T(@@((@gP'\T@)(@ '7 8IIw8`(@@P@(@ (@$) \!8 77;w @而Ёԑرॹ H而Ёܥww X而ЁٕСرнܥȕw`0w7G[gst   $ ȍ7 0P <5AQ%1 0lLe5=1L1M!$% Q$=9LQd1w7ku/ (P!LPQHwG'3?KWcoH{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{  # / ; G S _ k w               + 7 C O [ g s               ' 3 ? K W c o {              # / ; G S _ k w               + 7 C O [ g s            '3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs   ' 3 ? K W c o {             !!#!/!;!G!S!_!k!w!!!!!!!!!!!!"""+"7"C"O"["g"s""""""""""""###'#3#?#K#W#c#o#{############ $$#$/$;$G$S$_$k$w$$$$$$$$$$$$%%%+%7%C%O%[%g%s%%%%%%%%%%%%&&&'&3&?&K&W&c&o&{&&&&&&&&&&&& ''#'/';'G'S'_'k'w''''''''''''(((+(7(C(O([(g(s(((((((((((()))')3)?)K)W)c)o){)))))))))))) **#*/*;*G*S*_*k*w************+++++7+C+O+[+g+s++++++++++++,,,',3,?,K,W,c,o,{,,,,,,,,,,,, --#-/-;-G-S-_-k-w------------...+.7.C.O.[.g.s............///'/3/?/K/W/c/o/{//////////// 00#0/0;0G0S0_0k0w000000000000111+171C1O1[1g1s111111111111222'232?2K2W2c2o2{222222222222 33#3/3;3G3S3_3k3w333333333333444+474C4O4[4g4s444444444444555'535?5K5W5c5o5{555555555555 66#6/6;6G6S6_6k6w666666666666777+777C7O7[7g7s777777777777888'838?8K8W8c8o8{888888888888 99#9/9;9G9S9_9k9w999999999999:::+:7:C:O:[:g:s::::::::::::;;;';3;?;K;W;c;o;{;;;;;;;;;;;; <<#</<;<G<S<_<k<w<<<<<<<<<<<<===+=7=C=O=[=g=s============>>>'>3>?>K>W>c>o>{>>>>>>>>>>>> ??#?/?;?G?S?_?k?w????????????@@@+@7@C@O@[@g@s@@@@@@@@@@@@AAw A'A3A ?AKA7WAw#AwA7A;Y;CGCSCw `@8$/ 7gCCCCC7C D7D DDDO1O,DDD{DDGDEZ'E3EGESE_E 857kEw$E`E'\T@@AP0@@90@@20'\T@@'0'\T@@0'"\T@@0'&\T@@0'\T$$$$$$$008\T@@'*\T 9'.00E'\T008\T@@'*\T 90'2\X/ 6wZ'F73FOFcFoF{Fw<`':@ '@@8\T / C7Fw(`@@'>\T 'B\X7FK FFFwwGwgGwC`07GgGGw4`@P(@@)8\T$(/ w7G*AGGG H^#H/H;HOH[H;^2gHsHHw\`'.\TPH@9'2\T@@H'\T@'2\T !w`$w7HII XLQPIXHнMԹс́w`@l l'I;IGISIt_IkI  =9w0`@@P@((@ ()GwIw`7IIII ,8HU49PMGIwI`0ws7IGJJw (0= Q HG+JCJw7!`D7KJG_JGkJbk#JJJCfJJ7J7S37'"`}KKw0`(@ (@(!((gL7'KCKcKoK{K7K _LkLwLL 4t$ɝ耠w`PtLw7dLLLLLLLLMMM'Mw`(  G3MCfk#CMOM[M7gM %$QM{MM MMMw`@($7NO'N3N?N7KN?O7KOOO7OOPP[B P'PG3POPwd(P@P@@'#@( 'F@( 'J@( 'N @( 'R'V@(L $XwwW7PPQQ+Q77QcQ7oQQ7oQQ7oQQQQ7oQQ7oQQR7R'R3R7oQ?R7oQOR_RkRwRR7oQR7oQR7oQR7oQR7RR7oQR7oQR7oQS7oQS/S;S7oQGS7oQWS7oQgS7oQwS7oQS7oQS7oQSS7oQS7oQSS7oQS7oQSTT7oQ'T7TCT7oQOT7oQ_T7oQoT7oQT7oQT7oQT7oQT7oQT7oQT7oQT7oQT7oQT7oQU7oQU7oQ/U7oQ?U7oQOU7oQ_U7oQoU7oQU7oQU7oQU7oQU7oQU7oQU7oQU7oQU7oQU7oQV7oQV7oQ/V7oQ?V7oQOV7oQ_V7oQoV7oQV7oQV7oQV7oQV7oQV7oQV7oQV7oQV7oQV7oQW7oQW7oQ/W7oQ?W7oQOW7oQ_W7oQoW7oQW7oQW7oQW7oQW7oQW7oQW7oQW7oQW7oQW7oQX7oQX7oQ/X7?X7cXX7cXX7X7cX[Y7cXkY7cX{Y7cXY7cXY7cXY7cXY7cXY7cXY7cXY7cXY7cX Z7cXZ7cX+Z7cX;Z7cXKZ7cX[Z7cXkZ7{Z7cXZ7ZZ7Z3[7cX?[7cXO[7cX_[7cXo[7cX[7cX[7cX[7[[[[\\wh`|'Z'\T|'^'\T"'"P7\wG\S\g\s\Cl\;"2\\\w8SQ`0'\T'J'\T \X7\k#\7\^7C^7^7^7^7+_7[_7_7_7b7bc?Scw (P =9PaPLP ,<MQGcd d7d7+d @ЁLܡ́̕  @ɽ $HɁ̡M (L$ɕСȽTWdcddp ddGdddwddd #e/e;epGegSew_ekeseee Geeeqegeee ,\ɽؕMwewf LLɵȁ̕؅wfwqfKAq+f7fw`8'\XwKfGWf7fffw$`@@'b\T wl`@P@@('f\T@)@'\T$ (@)@'\T@ PP7+g7Sg7ggwpg`@$0@'\T@ k@'n'j\T@ !0@pgA 2'n\Xw7#hchwhhhthhKAhw  `u@@$h@@ h@@ !0'\T#'\T(0'\T@'r'\Tl@@ q-@(#0@@ "(#(l@@@@'\Tl@(P$@'v'\T\T(a@!@@@(z! P@( ! P@@ P@0'\T@'r'\T@@@ #@@ P@0'\T@'r'\Tl@@@@'\Tl@(P$@@'z\TP@( !@@@ ##x@@ P@0'\T@'r'\Tl@@@@'\Tl@(P$@@'z\TP@( !#@@@ ##T@@ P@0'\T@'r'\Tl@@@@'\Tl@(P$@@'z\TP@( !/@@( !#.@@( !#X@@@ ##l@@@@'\Tl@(P$@@'z\TP@( !#.@@( !#@@@ ##@@ P@0'\T@'r'\T@@@ #Zm mm#m/m;mw` 8\X/ ~gGGmSm7_mgmmmmmmmnnn+n7nCnOn[ngnsnnnnnnnnnnnnooo'o3o?oKoWocooo{oooooooooooo pp#p/p;pGpSp_pkpwppppppppppppqqq+q7qCqOq[qgqsqqqqqqqqqqqqrrr'r3r?rKrWrcror{rrrrrrrrrrrr ss#s/s;sGsSs_skswssssssssssssttt+t7tCtOt[tgtsttttttttttttuuu'u3u?uKuWucuou{uuuuuuuuuuuu vv#v/v;vGvSv_vkvwvvvvvvvvvvvvwww+w7wCwOw[wgwswwwwwwwwwwwwxxx'x3x?xKxWxcxox{xxxxxxxxxxxx yy#y/y;yGySy_ykywyyyyyyyyyyyyzzz+z7zCzOz[zgzszzzzzzzzzzzz{{{'{3{?{K{W{c{o{{{{{{{{{{{{{{ ||#|/|;|G|S|_|k|w||||||||||||}}}+}7}C}O}[}g}s}}}}}}}}}}}}~~~'~3~?~K~W~c~o~{~~~~~~~~~~~~ #/;GS_kw+7CO[gsǀӀ߀'3?KWco{Áρہ #/;GS_kw˂ׂ+7CO[gsǃӃ߃'3?KWco{Äτۄ #/;GS_kw˅ׅ+7CO[gsdžӆ߆'3?KWco{Çχۇ #/;GS_kwˈ׈+7CO[gsljӉ߉'3?KWco{Êϊۊ #/;GS_kwˋ׋+7CO[gsnjӌߌ'3?KWco{Íύۍ #/;GS_kwˎ׎+7CO[gsǏӏߏ'3?KWco{Ðϐې #/;GS_kwˑב+7CO[gsǒӒߒ'3?KWco{Óϓۓ #/;GS_kw˔ה+7CO[gsǕӕߕ'3?KWco{Öϖۖ #/;GS_kw˗ח+7CO[gsǘӘߘ'3?KWco{Ùϙۙ #/;GS_kw˚ך+7CO[gsǛӛߛ'3?KWco{ÜϜۜ #/;GS_kw˝ם+7CO[gsǞӞߞ'3?KWco{ßϟ۟ #/;GS_kwˠנ+7CO[gsǡӡߡ'3?KWco{âϢۢ #/;GS_kwˣף+7CO[gsǤӤߤ'3?KWco{åϥۥ #/;GS_kw˦צ+7CO[gsǧӧߧ'3?KWco{èϨۨ #/;GS_kw˩ש+7CO[gsǪӪߪ'3?KWco{ëϫ۫ #/;GS_kwˬ׬+7CO[gsǭӭ߭'3?KWco{îϮۮ #/;GS_kw˯ׯ+7CO[gsǰӰ߰'3?KWco{ñϱ۱ #/;GS_kw˲ײ+7CO[gsdzӳ߳'3?KWco{ôϴ۴ #/;GS_kw˵׵+7CO7[mǶmӶ߶w,3A`0@10'b\T$ 7w`7'\T (7'\T P # '\X@'\T(@'\T'.\T7'\T (7'\TP7@9'2\TtW7'\T(@(@ P @'\X@@!/@@@'\T'\T@@! @'\T@(@P(@ ''@'2\T) '\X7u w0`@@@''\T $\Xw7S3'0[H#w<`@(@ @(@@)@( 'w`@;B((@@@'J'\T(@''J\T\T@(@@! (@@6(@$ 7/gsKAǸӸ߸ $D9 0=M$9 =8Q=TIGwGE7{w `P@@ '\X#[˹G׹w wZ' @M̡ԱЁхѹw37?wS`@0@ #\XwZ_7kw$`@@@@ #'\Xw4`@'J'\T\T$'\X7 '3?7K7WwpC`'n'\T4@'''\TDp@'\T'V'&\T7/ukwGwP`@@@('f\T)'\X@@($)'\Xw 4MLTw7ǻG7K#/;GG `СѡЁ̕ȝЁw`$w7kw;I7,_D˼O,׼ ,4-05 w$`@)'>\T (7+  8X1UMaw7`07C˾ LQ HG׾w7!`47 4<98]0%97G'3Cl?KwH`@'''\T'''\XzWcow`@{7/w`@ '\X@(@@P@@P@@ @P@@P@@(@ @ 1 1@@'\T@@  @@@@ R@@@@@@ R''\XL+7?KWcow7{w7k#+ 77GO[gwd`'@@P$(@')@ '+P@@'\T '\X2stS$w `@4@4 7S'w`'.\TP3@9'2\T@'.\TPH@9'2\T@@;P'\T@'2\T(@ )(@'\Tt@'\T@@@()@6@((8\T)'$'$@'2\T/ w``@''\T\T8@'\T@@@@ B+8@@8 / w4`'Z@B'\X7߈/;GO1S 0LQ =8Q8QMG_wwwwwwD`@@P@)@@(@ 2\X@(@\T$PwwQ7ww,`''\T@Lw0P88'@(L X///'///w` 7?//GOW_////w`g////ow////// //////"/&/*/./2/6/:/>/B/F/J/N/R/V/Z/^/b/f/j/n/r/v/z/~/////////////////////////////////// /////w$`'"\T@Lw4d(P@88'@(L X/&*/.*w`(@ '2=(@ '65(@ ':-(@ '>%(@ 'B( @ 'F(@ 'J @@@'\T@@@ 3\X/N*/R*/V*/Z*/^*/b*/f*/j*/n*/r*/v*/z*/~*/*/*/*/*/*w4d(P''@(L X/*w4d(P@@P8'@(L %X/ w4d(P@@P8'@(L %X/ /*/*/*/*/*/*/*w4d(P''@(L XGS_kww(`P(:7w2wSQ`P47wHd ( PP@ @@ @ @ @ @@@@+@(! @@@8 @(L X(@!5@@)@ \X(@  @@@8@(L X(@  @@@8@(L X@@@8@(L X(@  @@@8@(L X(@  @@@8@(L X(@  @@@8@(L X@@@8@(L X/(rvz~nw@` @@@@ @ @ @P9999999@+@)@ \Xw<` @@@@ @ @ P999999@+@)@ \Xw8`@@@@ @ P99999@+@)@ r\Xw4`@@@@ P9999@+@)@ b\Xw0`@@@P999@+@)@ R\Xw,`@@P99@+@)@ B\Xw(`@P9@+@)@ 2\Xwd(PP(@@@'\T#@'\T'v'\T\T''\T@(@)@(@(@ @@ @ @ @\T@ @@ @ '&@(L X@(@@@ @ @ @@ @@'@( L X/'\X@@P@@(@@@ '\T 5P@@@@ 5:@P@(@@@ '\T $P@@@ $,@ @(@@@'\T #@@@ #,@@P(@@@'\T #'@@@'\T@@(@(@@ '\T 3@'\Tf-@P((@@@ '\T+@P((@@@ '\TP(@@@'v'\T\T(0@!@(9!P@(0@( @(@@@'\T D@@@@@@ s#@@@ ##w\`@@(@)@(@)@@'\T@'\T@@ U'R\Xwd(P@(!@@8'@(L $X@$\X@8\T@(@(@)@ @@)@ c8\X@(@)@ @@@)@ 8\X@(@)@ @@@@ )@ 8\X@(@@@@ @ )@ 8\X/Wc $@LY\%9 '''(((;(C(W(_(((((((() )#)+);)[)c))))))))))**7*?*O*W*s*{*******+#+++K+S+_+o+w++++++++++,,;,C,[,c,{,,,,,,,-'-/-;-S-[-s-{---------. ..;.C._.g..........#/+/G/O/[/g/w////////00G0O0o0w0000000001#171?1W1_1111111111 2'2/2;2W2_2s2{222222233/373O3W3g3o333333333444+474G4o}O4{4444444445 5#5+5C5K5s5{555555566+636G6O6s6{666666667'7?7G7S7_777777778#8+878K8S8g8o8{88888899#9C9K9k9s997999999::':C:K:c:k:{:::::::::;';C;K;g;o;;g};;;;;;;<<7<E?<O<W<{<<<<<<<<==3=;=O=/mW=c=w========>>7>?>K>_>g>>>>>>>>>??Wf+???G?_?g??????????@@'@/@G@O@k@s@@@@@@@AAA'A7A?AoAwAAAAAAAAABQ7B#B3B×r;BOBQ7WBBBBBBBBBBBC#C?CGCgCoCCCCCCCCCCC#D+DgDoDDDDDDDDDEE'E HG3E_EkJ?gEEEEEEEEFF'F/FCFlKF{FFFFFFFFGG/G7GGGOGgGoGGGGGGGGGH'H/HOHWHsH{HHkeHHHHwI'HHHIII/I7IKISIkIsIIIIIIIII+J3JCJKJwJJJJJJ#xJJJJJK'K?KGKgKOp?SoK{KKKKKKKKK LL?LGLWL_LoLwLLLLLLLLLLLMM'MCMKMkMsMMMMMMMMNNN'NGNgNoN{NNNNNNNNNOO3O;OOOWO{OOOOOOOO PP/P7PCPWP_PwPPPPPPPQ QQ#Q7Q?QSQ[QwQQQQQQQQRRR+R3R?RWR_RwRRRRRRRRR SS+S3SGSOScSkSSSSSSSTTCTKTWTTTTTTTTTTUU#UCUKUkUsUUUUUUUUVV+V3VOVWVwVVVVVVVVVVW'W?WGW_WgW{WWWWWWWWXX?XGX[XcXsX{XXXXXXXXXX+Y3YSY[Y{YYYYYYYY}aYZZ3Z;ZGZcZkZZZZZZCkZZ['[/[[[c[o[[[[[[[[\\'\;\[ C\w\\\\\\\\\>;)]]+]3]G]O][]g]w]R8]]]]]]]]od^/^7^W^_^{^^^^^^^^__7_?_S_[_g_{________```'`?`G`S`c`k`{```````` aa/a7aSa[awaaaaaaaa bb/b7bSb[bobwbbbbbbbbbbbcc'c/c[cccsc{ccccccccc dd/d7dCd_dgddddddddudee+e3eOeWekeSaJseeeeeeeff?fGf_fgffffffffg'gGgOgogwgggggg ggghh/h7h[hchhhhhhhhh ii#i+iGiOi_igisiiiiiiiiijj;jCjSj[jgjjjjjjjjjjk3k;kWk_kkkk3Mgkkkkklll?l7 Glclklwlllllllllmm+m3m[mcmmmmlmmmmmnn3n;ncnknnoR7nnnnnnnoo/o7oOoWooowoooooooop'pCpKpWpopwppppppppq׹Em q#q+qKqSqwqqqqqqqqrr/r7rSr[rgrrrrrrslrrrsssGsOs[sssssssss tt'tKtStgtotttttttttuu#u+u7uSu[usu{uuuuuuuuuv*/#v/vKvSv_vkvvvvvvvvw/w7wWw_wwwwwwwxx+x3xSx[xgxsxxxxxxxxxyyy;yDCysy{yyyyR8yyyy'yzz/z7zCzWz_z{zzzzzzzczz{{'{7{?{W{_{k{{{{{{{{|||'|K|S|s|{|||||||}}'}/};}O}W}s}{}}}}}}}}3P} ~~~G~O~o~w~~~~~3~~'3KSksgxZ #3;G_gӀۀ /7W_s{ہcqT#+KSgoOׂ߂3;_gÃ˃ '/S[owׄ߄ /7S[7{Dž7?_gsۆ'?GSow߇ #7?[cwψ/7KSowÉˉ/7CW_{ˊӊ?Gs{ӋۋGO{Ì#7?ckˍӍ#/?GW_s{ӎێ '/KS_wˏӏ7?OWksאߐwlg`(0(((0(@''J\T\T((@@  !@@6(@(@ _'3Cv?KwW`@0\T0@@0''J\T\T@@@0'\T@)@@@+>@@@@(04000! 00(@'\T '@@@DpA'\T@(04'   K w8P'ǑA'@(L X7u#/w ;GS _k;Hw $LQ -4Awl`#u@Pk@P9(@'\T '\Xw@P99 P9KAӒ7w x+ $D =5@%1$9%17S37[7gw`P7wÓ`0 \XwZϓ7ۓGwP`@'\TP(@(@  @@@'\T(@ O,37Gs/ zwC`D/ w7?z w{`0'\X7w(`@'\T$8\X/ 7[g{ $@9 eHI8 Lw`Pw`(@  .wFÕϕKAەw`@(g@'@'j@'@' [@'_ @'d@'"@'c@'w@''ws7;GS_wt[J`@4@4@4@''"@'\T'"'@'\T''n 3'\Xw7k  Iw `@4@4 w ~` @ 477'"×ϗۗw`(!73  4xͥaw# /;GSG[SxK_k[ww`(7˘טw`w7 #/7; Wcowǁ`0|7{L˙י GsMggwX`@@>@@P@@ @ @@PP$@@ " 73sG~ (TĹMwww D$ɝMнPH1$9 !Iw4`'Z@<'\X7'3?w  =9P9PMw0`@@@(@\T)'ww7KǛ G+w?G+)GyGG9GGKGoG[GGkGoG_G'NG=GkG)G?GOwwǜӜߜ T$ՍХ%Q\X@'6\T@@@ #)\X #/;G S_ kw;H/ Bw`@@(@)''\T@1'"'\T@@נ'"'\T''"'\T@'"''\T'"'\T''\T@@( @( @( @( @( @( @( @( @(  @(  @'"'\T'"'\T  0 =9P%9TQ$=9w7;T#/ 8I=h9Le4 =0MG;3=/ F7gˢw`'\Xw`g@@$c@@ @@ !_ @@ 1d@@ A"@@ Qw@ bwTd(Pע''\T@''@(L Xw`' @P'\T'V@(@@@c@@@"@$$@'J\T@)@p?A'N\T "9_ @@@d@$$@@'\T$@(@)@'\T$H@(@'\T}@(@)@'\Te@(@'\TO@(@)@)@)@'\T3@(@)@%@ @ @'\T@@'\T@9@99@@'\T P999P@ 'R\Xo@ 'R\X{@ 'R\X@ 'R\X@ b'R\X@ R'R\X@ 2'R\Xw@-@'J\T@'V\T@pˣA'N\T@'Z\T@'\T #P999g@'\XwHc`@$@@'^\T@ 0@pA "'n\Xw``@'b\T@@'f\T@'N\T@@'^\T+ !@@ "'N\X Ϥ7ۤ77Kw `8 'j\Xw``@l@)(@'\T6P@@ 1'\X@0@('\T@6$)7ww`P   Gj{O{O{OӦl{O{O{O#{O7{OK{O_Ge{O#{Os{O#{O{O#GK , =9LQ%PU8Q (P8=9PI4%9Q%84 H=7  XIPe@GZS_s7Ǩ#4Өߨ/ nG+ P 0G37mC7OA (LII۸ 1QGK> 48=I41=IGg> =G> (TLET9P%0 %Id <G> %10QG>/ $H5%9I PMY1G+? $1-8<eGG? 85$04 Gg?  0=$45G? 4-G? 9Y0%MPG?7O $0=@$G?  <1G@  L1 Q$gL7gWcow`(w7{w0`8@'\T@$(P/ E 7+w(ǁ`0| @$'kO1w`@@'@'\T#@' \T@'\T@0'\T'V\T Q0'\X'@'\T @'\T @@ 2'''\X7w` B 8$ɝMнa@1TMw` 7 wwwwww ww`w7o  Gw0`@@(@)@@ 2'\Xwx`P'\T'\T@$'\T'  P'\T'@pA '\Xw<`@@(@)@(@)@@@ S'\XOsuo MN&wl`@@(@)' '@'\TP@@'\T 2'\X'n@'\T @@ 2''\X@'"@'\T@'J\T@('\TPP':% '@@'J\T'\T 1'@ '@('\TPP@)@('\T@ 3'\X@@ 2''\XwL`@@(@)@(@)@(@)@@@@'"'& t'\Xw<`@@(@)@(@)@@@ S'*'\Xw8`@ (?@ (@ @ '\Xs*7 ؅?ww`Pw`'j\XwD`(@ (((a@!@(z!P( @@  /CWkwHd ( P@ @@ @ @ @ @\T@@@@'&@(L Xw`+@@$-@@ 0@@ !1@@ 12@@ A3@@ Q4@@ a5@@ q6@ @ 7@ @ 8@ @ 9@ wL`P@@$@@$)@$)@$)@$)wdd(P@@@L !X@(@(@)@(@)@(@)@(@@@@ @)@8@(L X/ w8`@(@)'.'\T@@ "'\X7T $@,Tw77KAw@`@'\T@'''\T 77'7O7/u7/u{S  w$` '\X7 4pPЕ՝̅ $ɽw [`'2 '6\Xw7Gg{www4`@':@@'>\T 'B\Xwq7f7777#7/wq[7g7f 4ɽ 4M 4ɽ 4Mw`07/u 7#O7#[7g77#_7k777777#7w<# `@0'\T@ 00/ '\Xw   wG7    wX`D7     67 G     I Q%<9G+ G  $0%MPPdAG $LQ=HHG ,X9 AMT1P@@@@(04000! 00(@'\T'@@@'O A'\T@(04P7g kC  w4`@@P@((@@\T !()w3A`00@':'\T4@4@t(@@!P@0''\T\T(@$P@t8(@@!0t)@@'\T@P@(0@(10''J\T\T@@@)(@$P$     ' 3 '? K w7W G T  wP{d(P@$@$@$D@@@p A'@(L 2X+  +7wCw7O w[`0g{mw w <Ɂ؅M7 OC#[  8|Ɂ̥Ĺw`4w+{ 7#7KWc/ "wp`@@'\T@(@@!@@@'\T@@''\T\T(@$ !7owww\`@'\T8@@@8\T@ P(@@'\T+' !/FIw`wxd(P3'\T@'\T'J@(L X@'J'V'@(L X7_^7+7/u7.FC3O [gxs% x7 xc '3? KWxco{{ #ϖ '3?KWcCJoKA7{?F?KW~hco{w4`@@'\T'N\T@${7dw@`@'R\T0  @'V\T 0 P7'dwx`@@@'Z\T ('\X@(@(@'Z\T@@@'^\T !@@ 27w`gL7Ke'3w?7S3KWcdcYo{w@`00 '00'\T(04$wp7; wgg#w/w;wG`@@'@'\T%@' \T@'\T@0'\T'J\T@0< R'\X'@'\T @'\T @@ 2S'\X7&w`27+g?KW7cwX`@$@P@@poA@@pA 'b'\Xww7h/ '#/;g GS7_;H TԹѕȅɝ́ՍХɝ́Lwww ,\̕եȕ̍w`'f@pAP'j\T'f'n\TP 'f'r\T888(L''  P'\T'E'v\T88)\X'w_ TԹѕȅɝѥ́Mkwww + ,`$55%Q?7CwD`(P@'z\T@(@@@ "$'\X \Ёc{7w+w7wCwOw[wgwswwwwwwww  wt`@88# ''\T'@'\T{ ''\T 8'B\X/~w0`0  '\X4  ww,`0@$@'\T 4w(`00P4$'\Xw8 `;,'\T@'6\T@'r':\Tl@3-@PP(@P9@'6\T #\ .@PP((@P9@'6\T =PP(P@ # @ P@'6\T #@@ 2 '\X@@'\T@@'\T@ Q Q'@@P@@ S#@@@@ T@'r':\Tl@@@@@@l@(PPP$/@@'z\T!P@@ @@'\T@ @@@'\T@ '6\T fP@@ c#|@ @@ '6\T b#d@P@@ c#@@@{O@($@P@@ c#| @@@@ d#@@ ''\X'@/@(P@@ 3# @@'\T@@ R'\X@'r':\Tl@@@@@@l@(PPP$+@@'z\T@@'\T@@@@'\T@ '6\T DP@@ C#<@ @@'6\T BJ@P@@ Cs@@@{O@($/@(P@@ C#(@@'\T@@ b'\X@@ b''\X'@@'\T'J'\T\T''\T'P@@@'6\T '@@@@ ##@'r':\Tl@@@@@@l@(PPP$@@@'\T@'6\T 3@@!!'R\T@@@'6\T 3@ @@'6\T 2# @@@{O@($@@@ 3#\@@ R''\X'@@P@@ C#@@'\T@ 1 1@'r':\Tl@@@@@@l@(PPP$b@@'z\TP@@'\T@ @@@'\T@ '6\T U@/@P@@@(@@@ '6\T T#.@@@(@@@@ '6\T V#(P@@ S#p@ @@'6\T R#\@P@@ S#@@@{O@($@P@@ S@@'\T@ 1 1@@ r''\X@@'\T@ .@(@)PP'@/.@(&@)@.@(@)@.@(@)PP$PP$PP3"w"'R\T'@'\T'J'\T\T A'\X/ /  ""'"" Hсн܅́ͥw0` # '''\Xw [`00\X \Xw73#G#7#KAq##wq#KAq##w`'.\T(_dP?Ps*PB@9999'2\T'.\TPB@9'2\T@'\T@'2\T$h'\T@8\TÃ'\Tte_d'\T_d'\T'\T_d'\T(!8@'\T@_d'\T@ @8\TÃ'\T_d'\T$''@@'\T@l'\T?'\T @'\T@''\T@'\T@'\T?'\T P@'\T'''\T@@'2\T !/ o$$w`( '\Xw `$'\Xw`( '\Xw`( '\X#w,;%`0@'\T@ )P7G%w4`@'\T @'^\T$)wL`@'\T@'>\TP@'^\T+$P%/ 7 &&?&K&W&w,`8@'\T P99/ / w8`@@'\T'J'\T \Xw`P@'6\T( @'z\T@'\T( @@@($ @'\T@'v'\T\T''\T@@@@@ T\X@@''\T'/ w(`@P)'\T w0`@*'\T'wt`@'2\T@@@'6\T@'\T "P99G@'\T "P99wh`@'6\T'@@@ @@@ @$$'w(`@P]'\T / wP`@@'\T'J'\T\T'6'\T \Xm* H ЁɥLLM7 +OF+++7+w`@0/'\T@'f\T/'\T@/''\T\T<'V7/'\T@'f\T#@P9/'\T'b\T/''\T\T'7C+s*o+{++w4`@@''\T\T@ 8\X/ KA7+g+w+`00@':'\T4@4@t(@@!P@0''\T\T(@$P@t<(@@!4t-@@'\T@P@(@(0\T0@@0''J\T\T@@@)(@$P$7+?Ko,{,, ,L1 QPe@G+ w`@($wx3A`(4(40':'\T40t(@@!P@0''\T\T(@$P,,,,7,,3GM,,'--T-w0`@$@p+-A$'6\X7C- -wP`@8P''\T888'''\X3-7 --7-'.3.G.S._.7k./7/'/wZ{73/$[/g/s/x/7/D/Z/K//d/Cx//w/`4wZ/7 0+0C0O0[0w8P'g0A'@(L X71w72C2O27[2272C3wO37[33333w`3'\T7@ @@'\T "'\XP@ @3@ #'\X @@@'\T3@ $'\X 4'\X7G4C44444w$`(@ $'b\X74/ /CG`Z;57G5#6/6;6ZG67S6g666Z676G778Z878;8O8[8g8Zs878+979C9:O97 [9g9w7s9x999E9Z9wϖ 7:x_;k;w;CJ;CJ;1w`@(U@ )''\XB@ )''n\X@$@)) @;'\T'@'V\T'\T ;'\X77<g<<<7<gK==2'=3=wX?=`00?(0  @'^\T$$(000@@!$$(7K=+c=o={=7=w=`@@'@'\T @@ 2'\X'v@'\T@'\T@' \T@'\T 2'@'\T @'\T ='\X7=>>>w`@-@'\T@@'\T$@ 0@'\T$#'\T@P@@@$@(@'\T@'\T)@@@@@> >7>>w` 'Z\X7>>??+?77?W?c?o?{?%????wTǁ`0 ??'R\X0|P4@;@'R\X7c@w@@7@A7AggB <̕ȝЁDU=P%8QMMw`B`@(@@'Z@'\T5@' \T@'\T@@@@! 0@('\T@0'\T@0< R'\X'@'\T@' \T@'\T@0'\T@0< R'\X'v@'\T @@ 2'\X'@'\T @'\T #@@ 2B'\X7/CSD_DkDswDDw`7+wDDD/ ޛw$`8)8'\Xw`8(8\XDDDDw,`@@ @(@\T@*)gDDD g EEGE'+E7Ew0`CE '''\X7E7E7Ew`P8\XwEwEwE 8͕̕ЁչЕwE7 FF+FFFFF7F?GKGWGcGoG{GGGGG{GGGGGOwG HH#HB/H;HwGH  SHsH HHHHHwl`@@P@('"\T@$l@@@'&'\T@s@@)(@))(@@)'\TtU('6':@h'.\T@h'.\T?S'\T@@ @pA'?S@9'2\T@@'\T@'2\T @@)'\T a#@H''\T('\X 7I7/I7CI7I7J73J7J7J7J7OK7K7K7WL7L7L #M/M7;MMwM XɽȁɕȽэȝM  {884w 4p ЁԹGMMM X$ɹɁȕ ́Ѕ́wM NN#N/N ;NGNSN_N L$ ѕȕܡȕн 4p$ɕСɅѕ DPнсȕ @PɕсСܕȕ͍ T  'kNwNTNN (T$ɕСнwd[`@$0 N'\T'D@@pNA'\TP4@@ "\X7Ow `'*'\X7+OwqWO7cO7OwqOwOw PwwZPwZ#Pwϖ/PwZ[/ϖ;PPEwP+fPP X\ȥM܅ԹܡɕȕեȕPw;%`@@'.\T @@P'\T'0@'\T@@0@'2'6\T4@@kQ'\T @@@+0@@4 Pw`5Q7QQQQwQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQ#R7RQKR_RQQQQQQQQQQQQQQQQQQQsRRRRRQQRQQQQQRQQRQSQQQ'SQQ;SOSQcSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQwSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSSwS HЕЁ́ɕxw`P7SSSSw,`/'\T 'f\X7S ST_TkTwwTw,`@@'2\T@ )P7TmTwW`@4@4(4(40':'\T40t(@@!P@0''\T\T(@$P 7TK ;UGUw_,7SU?KUUUw` 8\X/ ~s*oAUU7UGV w`8wL`@@'':'\T$'''\XCVZVwhV`@'>\T s*'\T@P @'B\T8\T(0'\T / wG. 7Vx WW#Ww`@P@ s&@P99 P9@(! 8\Xm@(@>P999P9m@/W99(@''\T '\X/ Fw`(Ew(OW`@'@ 'J\X7[WwWOF_WWwW`0/dWWWWWZCWW7Xw X`@0@\T4 KA+C0 #X77Xk@KXWXcXwX`@''N\T@(@'N'\T@'\T':@ 'b'\T ''\T(@@@ !'@('\T@@@)@('\T #@(@@':'b'@(@@ @@ '\T'@(@@  @@ @)@ )@@@\T@@ @ \T@(@( wx`@'\T@@'\T@(@@!@@'\T@@''\T\T(@$ 7XS/Y;YGYwx`@ @ 1@(@(@@@\T@(@@)@@8\T@ b@@@(@@)8\T@ b/ wd`(@! !(@@@@@'\T@@@@@@8\T@@ @ @@ 8\T@ f\X/ 7SYYw8`@@('f\T)'\XPw7YYZZ'Z ,1d 8l1dLt @T=H %1@I$9Q4% ХLw\`'.\TP3@9'2\T@3Z'\T@'2\T 7ZZZZZAZZwD`@@'v'\T\T@''\T $\X X1wZ`Z'R\T#u@ ['R\T@#u0'2\Tr@P99P9@0'2\Tg@P99P9@0'2\T#u@  g@P99P9PP999999 1'V\X77[OFk[w[[w@[`P@0'\T#u0'2\T '\X7[;8[[[w([`#u@ ['R\T@'.\Tk@ s*'\T0'Z\Ts*k@@'^\T((@99'2\Tk0'2\T@'2\T$k@P D@P99P9@#u@ g@P99P9PP999 1'V\X7?\7\\\w \`0@\T4$wZ\7\C]O]c]o]{]w]`(0'\T! ]'\XP0@'\T( @@('2\T@ 2'\X@#u@('2\T]P9P999'V\T$)7]OF]] ^w=Z^wT#^`@00'b\T@00'b\T@'f\T'\T@@ B7W^___w\_`0'\T@(0'\T'_A'N\T'V\T#u0'2\T'.0 @P99P9/#u0'2\T@P?@P99_P99_`P99P999'V\Tk@@@'\TPk@`#u@` @P99P9P99999 1'V\X7+`O`[`o`{``JJ `ḾɱЁЅȝй <ḾԹɕȹw`@  @'\T'@(@ P@`'\T@@ B'\X@@('\T@@@(@PP@ E)'J\X7`/|bbbw`Pk@bbbLb cӸcw#c`007/cKcWcccSx7oc (T$w{c`@@'@'\T@'\T@' \T@'\T 2'v@'\T@0'\T@0'\T 2'j\X'@'\T @'\T c'\X7cLdddddw`(0( 7dw`w7dee+ew `'2'n\X7Ke_eseee[%cdeeGe HЁLܡ́䁌  @ɽ $HЁ̕M (L$ɕСȽw@ǁ`@0| @@ee'R\T'7fS+fw,`8@8@P8@'\T@'\T@@ @@'r\T@@! (P9@ 2P99@@@@@'\TP'v\T@@(@'\T'\T@)@@'V\T@(_f@'&\TP@$@'J\T'v\T$)@8@8 18/z~w`(@ '' \T@'\TP@@(@ '' \T@'\TP$@((@@@@(<@;@)@ A@@@<@ C''\Xggfwfwf <8յɥȝЁP%5MȀLLw$f`@@'@'\TI@' \T@'\T@0 @0'\T Q0'\X0@'\T@0'\T Q0'\X0@'\T@ R'\X'v@'\T @@ 2'\X'@'\T @'\T @@ 2f'\X7+g/;hGhShS _hkh7wh7hhiiZi'i3i?iKi7/uWiZcioi{i'i7i i <HԵСѕѕхХw$`i '\Xw`Pw$`D''\X7+j7sj7j7jw`'.\T@'\T'P''''\T'@'2\T  j kk#k/kwl`k@'n'j\T(@@ 'V@'\TP@ !@@ 2'j\XP' ;kGkSk_kkkwkk kkKkk;Hkokk kkkll#l+l77l 4̍lll مllmmmw+m 0lɽԹܥw(`@@ R7m'\Xw`Pw`H'\T@T'\T'\TP@ @@m@'\T$''.\T( #@9'2\T@@1'\T@'2\T aw`'j\Xw`'\XwT`'.\TP3@9'2\T@@'\T@'2\T awT`'.\T(#@9'2\T@@'\T@'2\T aw `@@ R'\XwT`'.\T( #@9'2\T@@'\T@'2\T awT`'.\T(#@9'2\T@@'\T@'2\T aw8`(@  s@ R'\X'Vw|`@ m'\X'.\T@'\T#@9'2\T@@'\T@'2\T awT`'.\TP3@9'2\T@@'\T@'2\T awT`'.\T(#@9'2\T@@'\T@'2\T aw$`~@ B'\Xmnn'nw|d(P@ @8@(L X@(  @8@(L X@(  @8@(L X@P8@(L X/7n7nKnnn7 o[ogosoooooonooooTpp p'p @ ЕЁɕɕɁС́ɽȹw8`@888\T3p'\Xw[`P4w,sp`@0'2\T@ )P7pwLc`@@@\T 0@@@@('>\T@ 1)PwDp`@@':\T 0 'f\X p'\X7cq7q7r7cr7r7r ssEEKs#s3sOs7[ssssstKAqtt \ЅLLЁ́ɕ؅3t?tw 8M䁤̹ЁɽMKtw`wQ7Wtott7twuwuwuwuwuwuwuwuwuwuwvwvwvw+vw7vwCvwOvw[vwgvwsvvvvvvv7vw`P7xxxxyw` `0'.'2\T y'\X@0'.'2'\T \X7Wy/4Myy7yw4`@@'\Tz@ '\Xzwx3A`(@  @z'\T'(40(@@!P@0''\T\T(@$P7{32g{whs{`@$@p{A0'\T(@@!@0'\T@'\T(@$P7TK {{{{{{w{`('6':@h'.\T@h'.\T8'\T0@p{A(P9998@9'2\T@'2''\T@'2\T !7|y3|?|w K|`K07W|}}'}3}?}@wK}W}wc}`@48\X/ o}}}}}?wZ}7}3.+~7~C~Cxw` O~ww[~`07g~~~~~~~w`@'\T(@(@@!7@@'\T@@'\T@@''\T\T@@@''\T\T(@(@ "7~_swx`@ @ 1@(@(@\T@@@(@@)8\T@+ 1@(@@)@@8\T@+ / Fw$`@@'\T w7g # LЁɍLܡ=H С/ w7/;GS_kMw 1Mw 9$ww4`@0@\T@0@\T@0@ #\X7Ӏ߀Cw4`@0'\T@( 0'\X7{K$%  9 Q !wϖ ww`@( (@'\T P@'V\T'\T4 @Á'\T$'''\X7#/C7;wD[`'@'\T08\T 0'\T$(/ wZ7K$Âςۂw= 4t 䁤s&w `@0@ #'\X7+7opCwOw[ wHg`#u@ s'R\T@'.\Tk@ s*'\T@s*@9'2\Tk@P D@P99P9k0'2\Tt)P00@@k@('2\Tg@(P99'\T@)@ #)#u@ g@P99P9PP9999'V\T@'2\T 177$+w `#u '2\Xs&+7Cw$`@@@8\T \X/ wϖo` 7cυ  w`7'\T 7'\T(!P # '\X@('.\T7'\T (7'\TP7@9'2\T@'\T@)'\T@))PP@'\T@'\T@@)('\Tz@@)'\T@))PP@'\T@@)('\TNG@@)'\T@))PP,@'\T@@)('\T"(@'\T@+7'\TP@'J\T@'2\T 17;{7'^ˆ׆'[Ӹw`(00? 7+Sx77wC (T$wO`@@'@'\T!@'V\T@'R\T@0@0@0@0 R'j\X'v@'\T @0@0 2'j\X'@'\T @'\T ['\X7τÇ?χۇw`@"$w$`@' \T$7 ww` w7+o{7 @Թн̕Ёѥн  @ɽwǁ`0| 7ww {4w#{4/7;7gg7wCwO <8յɥХ̽MMw[`@(0 'Z@ !@@@PP@@PP'@-@' \Tt@0@@ @0'r\XP@P@)$)$@ B'\X'Z@'\T@'N\T@'R\T@ B!@@ B{'\X7׌G4 wt`@@'Z@'\T@@ 2 '@'\T @'\T @@ 2'\X7Kˍ׍G/ 7S3W7;G wL`@@'':'\T$'''\X $DT͕ȁѕѹSwwwH`@( @P9@*@(@+ @P9@)+@))@+(w`(w(`@,@@)@ (w(`''\TCww 7ǎ;H 7;HCO+[gs{G 7{G  7;HGSF(_kw|`(P@@B@'\T@'\T'J'\T 2\XP@'\TP(@@@ " ww Òے7 PTɵсɽɁ յMw  M @HյɅ́ɕЁсO1 ˓דwwwwwL`@ '\XW(@ ''\Xw`P47S3Sco{wP`@'v'\T\T@(9!(0$@(Z!(7$(W$k! ;HÔ!ϔ۔;H {S  @Pȵȕwlsp`@P@0'2'\T $\XP@ @'\T@@0'2'\T $\X+ lLЁ̡̽ԱI\Xw7;O[g+7swq7Ӗwߖ`P4wt7w`PP@'6\T@@ !'@@@'J'\T\T B'B'\X@'r'\T@)@'6\T'@@'J'\T\T''\T'P@@@@ B@@+@@ B7?7o7K77O77O7ǚ7O7Ǜ7 7C7777ϝ7G7מ7K7ǟ 7*CO[o{w`PP@'F\T@@'2\T @'6\T 1@'\T'@@@ "'@$0@x@'\T'@'@ P@'J'\T'@ P@'N'\T@'F\T@@'2\T@'6\T@ Q@@+ 1@'\T'@@P9@@'R'\T@@'V'\T@@ "#'@@@'Z'\T@@ "#P@@@@ 2#|@@+@@ 2#Xw`$wZO7[Ӣ DЁЕ䵉MɕwTd(P@$@ P'\T@pgA'@(L X4Mw`@'J'\T\T'\T'.\TPH@9'2\T@P'\T@'2\T@@P@(@('J'\T\T@'^\T @(P'\T') (L͡Ѕ37 LЁсLСwHW`P(0@ $@@0'\T'\T(@ 7Cmw `@) (8\X7W32w {7K 7#w,`@@(P$8'B\Xw{`@4$/;GwS`03@@'*\T0k0 '2\T@8\T'\TP999P99P9 '\XK00 '2\X0_9 P9/ bw'} 7g7EwZ}7ϓϦۦ7wl`P4P4P4'f@'j\T0@pA'\T00'\T$47ϧ#[w '`@@ "0'n\Xw73 s7'wCw`@'\T@@'\T(@@(@@!@@@'\T@@''\T\T(@$ w7O wt`@@$@@('f\T@@('2'\T$)'\X@@)'\T$(7˩/;/ r7Goz{37 7MSw,_`0@\T0@\T0 \X7k7%Cǫwlӫ`'@'\T08\T@'v'\T0'\T(0P999 'z\X/ 7G#/7;% 4tɁ̥Ĺ Q  w O`@0@\T4 7[ww `' '\XCwϖ w7wӬ`08\X/ ~7߬OF w=w `0 '\X7#7GS_{k7w7ӭ $90 1MwX`@'>\T s*'\T@P @'B\T$8\X(/ 7߭;G[gs#jWkcwϖ wl`0'\T0'\T@'\T@'\T'>\T@'\T@@@\T@@@@@ $l#u@Pk@P9 w@P99P9@'>\T'\Tk@@@'\TP'\T'@'\T00'\T'A'N\T'V\T b'\X !ϯ'\Xwϖ 7O/;wG  w@`@(@\T)'\X@@)'\T$(7S w`P7'[Ӹw`00?7+?KWSx7c7 (T$w(`00''\X7Ӳ߲w`P7g3?KwD`(@ (((A@!@(Z!P(@@  7WwH`@4(40'\T4$''.'\Xwǁ`0| 77@O7[Dw`@PP/@(@@@@P9@+' )@(@<@;P@@>@+@@@ 3)w|`@@@@$P@'\T@'\T@@!@@@@@@@@'@!$(((@@''\Ttv@@@m@(@^ta@(@@@( 4@@(<@(@;;@@@@>@@*@@@)PP@+'@)*'@@@(<@(@;;@@>@*(@@@@)@ D)'@)$)' q(@@@@'\T@)@(@@@'\T@)@(@@'\T@<@@'\T@@'\T'\T@@'\T@ @@ @@'\T@'\T@'\T '\X@@@@@@ '\T'\T'\T '\X7۴7ggw DȽ̕ȝЁLLw`(0 7τgsM  8̕ȝ%PDU%Xwt`@@'Z@'\T@@ 2'@'\T @'\T @@ 2'\X7۸WO[gs7gùϹ۹ <+7Cw7O7'w(w`'2''\X7G'w$w`('6':@h'.\T@htk('6':@h'.\T@h'.\T8'\T00P'\T@p߻A(P9998@9'2\T@'2''\T@'B\T@'2\T 00'\X7 G#{G üϼ ۼw<`@'\T'''\X  '#/w,`('6':@h'.\T@htk('6':@h'.\T@h'.\T8'\T000;P'\T@pwA(P9998@9'2\T@'2''\T@'B\T@'2\T 000''\X7G#Og/; ̍G[7gw þ׾w`@'\T@(!>-(@'\T'&\T(-(@'\T'&\T((@@! @@@@ #'\XPPP7wm 777+7? DЁ0%MPܥȝ7Oco {7G{So7G{Sw+ew7  ZC+[hEg\wZwwϖw@`@@'\T`'\T$'\XwqO7Tq#/w@`':@@'>\T@@@ "':\XP7;w`w]w0`'VP94@(9P94P4w0`@@''\T'w`@P)'\T@'\T@@@@$@@!@@;'R\T'@':'\TP@(@@!"@@(@@@@''\T\T@@@)P(@ 3 QwP`@ @@''\T'8@'\T "P99/ w`@ @@''\T'@'\T'\T '\X'.\TP@9'2\T@'\T@'2\T'w`@ @@''\T'@'\T'\T$'.\TP@9'2\T@'\T@'2\T' '\Xw\`@ @@''\T'T'\T@'\T "'\Xwx`@ @@''\T''.\T(;,@9'2\T@'\T@'2\T 1w`@ @@''\T'@'\T@))@@'R\T'@)(@ 2('j\Xwx`@ @@''\T''.\T( ;,@9'2\T@'\T@'2\T 1wD`@ @@''\T'@'\T !w8`@ @@''\T'Pwd`@ @@''\T'@'\T['R\T !wx`@ @@''\T''.\T(;,@9'2\T@'\T@'2\T 1wx`@@@@''\T$'.\T@;,@9'2\T@'\T@'2\T Aw8`@ @@''\T'Pwx`@ @@''\T''.\T(;,@9'2\T@'\T@'2\T 1w`@'\T@'\T@ @@@@@@ U\X@@@@@;B$'R\T@P]'\T Aw`@@@@/'R\T'@@'\T@'\T@'J'\T\T@'\T(@ (@ R'\X@'\T@''\T\T@ a 1#'R\X/ w`@ @@''\T'@'6\T('@ 1''\X#@@'6\T|@ @'6\T(@ "@@ "|@(@'6\T#@(@ '@'6\T(@ "@@ "@'6\T$ v w7;H7wCO[gs7wx/`c0@@\0@@'000'\TP$$@'v@P99 'z\Xw 7SK$ \܅ܕɕͥɁ́w|`@'J'\T'N\T8'J'\T\T''\T'6'\T \X  ($w JwW`0wH3A`P(0@ $@@0'\T'\T(@ 7wl`@@'\T(@''J\T\T|@ @''\T  'Z'\XE'3?WLKwwW`07cOFw`@@8\TP@@'\T  !'\X@('\T4@(@'\T@@'\T@('\T @@3@P99 2@)@z@P99 2@8\T@)@s&@(P99 "/Ew `'2 'j\X;8\'3w `'f 'j\X?w`8'B\T@@'\TP@@''\T \X@'>\T @'B\T$P@@''\T\TP@@''\T \Xw`Pw7 7C#[w@`0 g800P999g80P997+7wP@(@( @( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X8@L$X/7wX`@'\T(@@!@@@''\T\T(@$$7 wP`@P@@('f\T)'b\X@@)'b\T$(w7K w(`@'\T$8\X/ 7C+7`wT`8@CP'\T'6'\T\T(88$/ w<`P@'\T@ @@('\T$)$3WMcw8o`0@\T40@\T40@\T4$7{K$%Cww$`@0'\T4$77w`0%w`@0@ #\X7OF#/7;7Ow `'* 'j\XCw`$7w=w$`0@'N\T4$7 G3?K:wH`@@'\T@@@ 2'\X@@ 2W'\Xw`0{w\`'@'\T@8\T@' \T@@ 0''n\T$~(_d'\T_d''\T\T_ g'P99g'nP99P99g'VP99P9099c0P900'A'v\T'\T9P9990'A'N\T9$'\X/ wZ7'[o{7+ow `#u '2\X P \ɽյյ́ѥMw`@'f\T0'f\T'\T0'\T X0'\T'A'N\T'V\T@#u@0'2\Tk@P 0'\T('\T@ w@P99P9PP9999 !'V\X'\Xgco{7w<`@@()'\X@@)'\T$(7?K#/;w0d(P@8'@(L X/ 7['[Ӹw`07w,`(@$''\XSx7w,`00''\X7 GS_Wkww$`@@ P7_w0`@P9'J'\T \X7wX`@'\T@'\T@P@(@( @)$)@(@ 2(!wL`@@'\T@(@)@@PP@@@ RP9993wL`@'\T@'\T@@ @@ 2'r\X@@ 2!9?wKwWwD`P/@(@@2@@@P9@+' )@@@+ )@(@;P@@>@+@@@ 3)@(@@@P9@+' )@(@;P@@>@+@@@ C)@@(@;P@@>@+@@@ C)@(@(@;;P@@>@+@@@)@ D)wh`P/@@(@@E@@ c'\T'P@+ )@@@+ )@(@;@@P@@@@@@+@@?@ d)@6@@ '\XP@+ )@(@;@@P@@@@@@+@@?@ t)@(@(@;@@P@@@@@@+@@?@)@ u)7ggw`@@'@'\T@'\T0 @' \T 10'&\XP'v@'\TP'@'\T @'\T @@ 2'\X7;g[gs{  8|̕ȝ%P8\T0@pCA "'n\Xco{wP`@@':@@'>\T@@@$':'\T $\Xo h PՍЁLȕССɁСЁ́ 4t$ɕС̹́w  D ́ȵн̹ 4t$ɕС̹́ <$ЁԵсЕ @HɹСȹ#/KA;G 8PԍԹܹ <Hɹ؅ԕ ` ́չЕЁ ́сԹЅ́ѹ 0h$ɕСȹw[ PPнMЁѕѕ́Ʌѕȹ DLȅЕнȕѕgsAv ;H w@`@'B'F'\T$P'\X7/7+O[gs++'3o?KWcow `'. '\Xm{KA wH`'0P00''\T \X'V7Wco{7uw3A`0$3AwX`K00@ 0'\T@'\T0'\T0 0 '\X7+o}Wcow{wwxOKAKAKAw `0w7 7[+7C#[Ow[`0'&\XKA7g{wwwwww0`ۇ(@ ''\Xw`@@@ @@T@'\T@'\T@ B@@ 1(@(@@ @@'\T@@'\T b'&\X@@'\T@@'\T'&\T(@$PPP7ow@`P@@ @@('f\T@@($))7u/ J7{E `3Mw<`@0@\T4@0@\T4@0@\T4 7G#/;%7Gw`j@((@'\T  @'V\T'\TPP@'V\T'\T4@'Z\T'\T4 @'\T$'''\X7+%w `0@\T4$7+~COw[`0wt`'@'\T&'@'Z\T'\T@'Z\T'\T$'vPPwg`0 \X7sGw=w(`@0@' \T4 7w ,\ ЁLM:opwww$`j@@ P999w`Pw7w4`@0'N' \T$0'N\XwZ7'w{w`'.08'0'\T'R0'\T'\TP8'0'\T 0'V\TgP8'0'\T 0'Z\TKP8'0'\T0'Z\T$'\X8/^bfj#+/#u;w `#u '2\X P \ɽյյ́7GOF/;Gw0`8@'\T@$)P/ nw``@@@ @'\T@(@('&\T @)@ ")'&\XPP7_3ww$`'\X7s! #'[/w;`07GCK{Sx7w<`@'R\T0@'V\T0 'j\X7?R 7#CO[wH`@'&\T (@ (@  !g'\X7gw77W 8ѥؕȕԱѱ 8ѥؕȕԱѱw`@gg @Ƚ̕ȝw `00'\X7$L  8̕ȝ%P89wt`@@'Z@'\T@@ 2'@'\T @'\T @@ 2'\X73Zw`3'\T7@@@ "''r'\XP@@0000@ %'\X @7@'\T@@ "''r'\X G'\X7w@`@@@'\T@ !-'\Xw7?[gsSGw`8l8l':''v\T@':''\T@8l8lP88w  PLܡ͹ЁȅѡA w   wPw`@4@4@P'\T@ "'''\X S 4xȁLѡA   wPw`@4@4@_P'\T@ "'''\X'w$`('6':@h'.\T@htk('6':@h'.\T@h'.\T8'\T00P'\T@pA(P9998@9'2\T@'2''\T@'B\T@'2\T 00'\X7GTT  LxMU@IСLɁMܥȝ@   wT`@4@4@4@P'\T@ 2'''\X37 4̍ɽ+C  (<̹((@С́̅ѹ((م؅ԅ<ɕͥܡȝ̽)ԽɁ̡((0(( 䥕)(LݥЍнԱ(ɵɁHIL)ѥ((С́8ȁС́((сȽС́(((ȅ̍)wL`T'\T@'z'\T'\T '\X7Ow{  ѡȕ_ Dwwww@`@@+k'R\T'P47' d4хLԹɕȕ wLN`@4@4P'\T@ "'''\X{ST  @=ЕpнMw0GN`@4$''~'\XwP`@'J'\T\T#'\T$''\Xw `'2'\Xϖ;P;SEϖ;P_wEϖ;PEw `'6 'j\Xw8`PP''\T@P@ '\Xwl`@8@@8'B\T'8@8'\T@ !8'B\X'w `8 '6\X7/t;GS_'kw;Hv7v'37?ow{7vw# 7[ ' 3? 8$ɕСwT`K@'\T@@''F'\T_ '\Xw`@'2\T @@@- @@@" @@@'@@'r':\TP$$$ @'6\TP ;Ho;H'3;H?K Wc;Ho{+;Hx7wmw`\00@'.\T0@'\TPP5@g0@'.\TP99'z\T0@''\T\T@@''\T\T $7ww7co3w,`0@\T0@\T0 \X7   7 7W 7 G  ?D wwwO3w `07+ GK W c x#[wo `0KAg7{ #X 7 S 7o 7 7 7 w`@'\T@'\T@@(@@!P(@@! A@@@'\T@@'\T@($@( 7 / 7S E_ k w `3 M wT `@'@'&\T0' 0'\T00$7 wco{w<`@'\T@'B\T@'N\T %C 0lɁ̥ĹLQw0`@0@\T4@0@\T4 7%w`0 \X7#7CCwO`@0@ #\X7[xw=w`c@( @+'\T'V@'\T(! @)''N\T4(@'\T  P'\TP94'$'''\Xw7_~w={w(`@'N@ 'J\XwZ7wT`@@'''\T@0'' \T 0'\X7;ӕGS_+kw \ ḾС́ɁɁѥw#kww`'0'\T*'R0'\T'\T'0'\T'\T'.0PPP@00'\T@@@0'\T'.0@ A@( Q0'\X@@('\T@)@( 7w0`P@@''\T\T7s,#/7; <ɽɥw`7_^'[Ӹw4`000''\X7/ #Sx7/w(`@' \T$'\X7Cco{w`P7o 4x$ѥ耠LLw`77Gwx`@@!,P/@@@@@ P@+@@ r)@(P@@@@@@+(@@ T)P@ "wt`P/@@@@ @@'\T@+ !)@ P(@+(@@ #P@(@+(@@ #)֟gg_wk`'\T00w@'\T$#'\T( 6(0  -@'\T'0'\T@@('\T@)@$@(@@'\T)'''\X7g4o  8|̕ȝ%P`' \T8@ B(@ @(@)(@<;8@>' \T8@ B@(8@>' \T8@ B@8 @8@'\T8'@'\T@(8(@!@@  8)(@@<;@@)(@@<;#@(c!?@@ 8))(8)(( <;@<; 8)(@( <;@))(@)(( <;@<;y@( !8@@ (d8))(8)((d<;@ =<; (d8)(@(d<;(d@))(@)((d<;@ =<;=@@ ( 8))(8)(<;@Zb<; ( 8)(@<;( @))(@)(<;@Zb<;(@!( @@!<@@@'\T@ @ '\TP@@@@ '\T<@P@@'\T(@ #@ @'\T@@'\T@)P@(@ @)@'\T(@(@ @@'\T @@ '\T@ + P@@'\T@( #/gg0 8$9T5Lw0w0`0700W01 4x̕ȝ%P<Hwt`@@'Z@'\T@@ 2'@'\T @'\T @@ 21'\X7K1_1111111w1`D71112 ,X8ѥн̕w(`@@@'\T !)72S2_2k2ww2`PP472j232?222272wp`@@ '(@@)@8\T@@:@(@))'2\T !)(\X'/ &wh`@@ @)@(o3@ #'\X@(3@'\T@@ ")'*\X # DɝԵ@ɕȕ   wTk`@4@4@403P'\T@ 2'''\X833 4Е3w3w`@4P'\T'"'\T'.\T(s6@9'2\T@T'\T'\T@'2\T?4P'\X7[4w44445w`@$@'\T @@'.\TP@ '@'\T$@'\TP@@p5A'N\T(@'\T!&'n@'J\T'\T@'J\T@'V\T'\TPP@)@'J\T 2'\XPPw0`@@@ @)@@+@@ "  /5;5 G5ϖ;P S5k5Eϖ;PG5w55E5ϖ;P 55E;P'Z;Pϖ;P55E;P'Z;P5767g66 ,ȽЅ 0dнؕԥ؅ȥw76/7C7O7[7g7s7{S77w(`007@ '\X77v /8;87G8;H8v 8878;H889wD`8@'\T@@@@ 2+8@@8/ v 997'9Gk9'w999 <ԍw8#`00@@;B$ 9P'\X79  ::T#:/:kU+;H;:G: S:_:w<`k:@'\T'''\X7:o::w<`;@'\T'''\X7+; {;;w@`0;@'\T'''\X7; 3<?<w(`00K<@ '\X7<{S< =w(`00=@ '\X7w==xm=KA=7=w=`@'B\T@'\T0'f\T*@4'@'\Tg@'f\T0'f\T' 4@'>\T @'B\T$@'\T0'f\T @4c4\47>>3>?>K>W>x{>>>> >>w7>>w'>>wl`@@'\T(@''J\T\T|@ @''\T  ' '\Xw7K??????3?3@+@@w<`8j@'@P99P999 'z\XKA;-w8K@`0@\T40@\T40 @\T4 $O]W@c@o@w{@w`G@@@?@O3@w@`P?''\T\T@4P4P4P4P40''\T @@'\T'V '''\X7A=?AKAWAcAoAw{A`4/ 7AAAA`3AMAwA 0hɁ̥Ĺ$w$A`08\T08\X/ 7A/BCBOB[B%CgBw,sB`0@\T40@\T4$7B~BBB%wB`0C @Ɂ̥Ĺ4-0= Q$YwB`08\X/ 7B~CCw=w0'C`0''N\T 9w73C+)GCSCw=_CwkC`@48\X/ {wCw,`':@'j\T8\X/ 7CCCCC#C+Cw<C`0@\T40@'N\T40@\T4$7CG'D3D?Dg'w4`@@@''J\T\T "7KDDDDw`7DNDDD'[ӸwE`07EEEE 4؅LEIP7EwE`07EEEF7FwoFw`@${F7FFFw@`@'v'\T\T(!@!$(~!P7FFF7FKGwWG`07u7cGoG 8|̕ȝ%P8w`"{GG7GoGGG9GZwG`P447GaH#HwD`@P@()@@\T(@)@@ #'n\X7/HWQHHH3wH`P0*7H0HH7HI'Iwx`@@ @@@@@! @@@@'\T@ @@@@@'\T@@ 1(@@)@ #) M M <Hɹ؅ԕɽL3IGISI 7_II $D MwI (wp`T'\T@'z'\T'\T'\TT''\T \X7IwSJ_JmsJDJw `8 '2\X{SJ+;PJhEJ+;PJJ#)JK;P'd;P+;P3KhE?K+;P[/[KwKϖ;PKKEwL`@@'\T@@'N\T@'\T 'f\Xwd`@@'\T@@@pKA'N\T@'"'n\T 1PPLwXsp`@$P@@pLA0'>\T'KLA@ "'&\Xw7LLLLLLMTMM `=ȕɵЕMw8`@4@4 ''~'\X +M7Mw@`@'B'F'\T$CMP'\X7M MMw@`@'B'F'\T$MP'\X7/NNN NNwDs`(0  N '\X0O@ '\X7_OTOOA (PСՍйwH#`@4@4@'B\T@ "'''\X'OO OO7OG/P ;PGP ,XȅѕȕwX`@@@'''\TSP@ "'''\X{S{PP $@=ѕȕwP`@@@'''\T ''~'\X PP 4xȅLչЕwl`@4@@@'''\T0PP'\T@ 2'''\X'PP t4ṔȕснЕѕѡ(Mw@`@4@4P@ "'''\XT QQ `=ȕнЕȵСсMw8`@4@4 ''~'\X#Qx/Qww `' 'j\Xm;QwGQ`P4wSQ 7_QGwQQQ QQ QQQQQW> QQw` W>RRR+R7RCROR[RgRsRwl`@@'\T(@''J\T\T|@ @'*'\T  ' '\Xw7RS#S/S;SGSCSS_SkSwSSSbS7S_$SSS7S7TO]3T?TKTWTO3cT @Xс́Lw0oT`4@'>\T 0P9997{T?&TTTCx#[/ .7T"TUU`3U7'UCUwHOU`w/0'\T0'\T0'\T P9999w7[UoUUU%CUw U`0@\T0 \X7UUU V%Cww V`@0@\T4 7#VOVcVw=woV`47{VVw=Vw`P7VVG WW#W/W#;W+GWw<SW`@0@\T@0@'\T@0@ #\X7_WK$+X7XCXw``(@! OX'\X(@ $-(@@)''J\T \X7X'0XXXw`7X?FYYYӸw'Y`@@'Z@'\T0@'N\T@'R\T0 2!'@'\T @'\T @@ 23Y'\X7gYoZ'Z3ZSx?ZwKZ`07WZgZZw\`@ Z'\X(@ Z(@ ''\X7Z7[wC[w`(w7uw`w7uw``@@'\T@(d@'\T@( @'\T@'\T@ B'\Xgg_>O[[[ g[s[cQ[w`@$7[[\+\7\9C\wO\`P447[\ \wP`PP@@@ !)@(@@\T)P@(@@+@@ ")7\\]]]3w$']`PP0(GP3]w?]w`7K]7_]ws]T_J]]whd(P@'J'\T\T@'\T'2'6\T8'@(L X/ :7]wt`@'z'\T'\T>'>'B\T s`('\X'7`q```q`aa'aq3aCaOa[a ;P \w]G5gasaϖ;PJaaEϖ;PG5aaE ;P \OPϖ;P[aaE+;PhOPa+;Pb?b/bKbwWbw`8'\Xcbob{bw<`@@8\T8@ 8'wH`@'J'\T\T@'J'\T\T !w0sp`@$@pbA 0'>\Xw7b#bcU>Ϥ c c+c @$ɕСյСwT`7c@'\T@@''F'\TKc '\X cc @LСɕȝЁwT`c@'\T@@''F'\Tc '\Xwcgc dd L=ѕȕܥСѹ X=ѕѡw0s`@4$''~'\X dT'd3d{S?dKdwX`0Wd@'\T0 0(d@ '\Xd '\X7d'dd (T$ɕСѹT ee'#e/e 8$ɕСLT;eGe (T$ɕСсн Se_ekexwee7ewe`P47eBffffffW> ff7f;Hg'g 3g?g' KgWg;Hcgog{ggggCfggggggwl`@@'\T(@''J\T\T|@ @''\T  '^'\Xw7gKA_hkhwhhhh7hh+hw(h`P4'* 'j\X7h7oj{jjw0`P@@$@@(@ wj`P4P4s$/Pjj/djjO3wLj`@0@'f\T0@4 'V0@'\T47jjkk/ F7k +k7k`w`( '\X3CkMOkw[k`0w7gk{kk%Ckw8k`G0'\T0'\T P999w7kkkCw,k`ׄ0'\T P99w7kw=wl`0lw=wXl`'6@'j\T08'\TP0'J'\T '\X/ N7Cl7mmmm#m+mwm`P4@'b\T40@'f\T@@'\T(!@('\T4@)''N\T4 @m'\T0 0'\T4'.4$'''\X7no7ooo D$0< PIP$1w4`@@@''J\T\T "7o 3p?pKpw`'f\X7WpCpppӸp 4t$ɝwp`@@'@'\T@'N\T0  @'R\T 10 P'v@'\TP'@'\T @'\T @@ 2p'\X7qτqqqSx7w4q`0' \T0' \XP7qGs LPȅȕեȕȝйw<d(P@@@ "@@8@(L "X/ ۇLsst's3s?sKsGwt`@@'Z@'\T@@ 2'@'\T @'\T @@ 2Ws'\X{Gs7sssssZsw,s`000\TP4$47tw\`@t@@)@@p/tA'R\T@+)'V !)w7Ottttt3t7twtw`87t/#u/u;uGukuwwuw`'V'Z\T'^'Z\T@P9'b'\Tu@@'f\T@puA'6Wv@@'f\T@pgvA'6v@@'f\T 'wA'6Sw'Z\T@!'j'6cw@@'f\T 'swA'6x@@ 'f\T 'xA'6@$@$'6@@@'6@$@@pxA'6'V@ '\T'n\T@\T@\T@\T@\T@\Ts6'\T(!?yP'\T'"'\T''^@ '\T'r\Ts6'\T(! oyP'\T' P DɕЅЕɁɝԵѹw `;B('\X_y #wJ_sy_J_æ<_J7+?+;PKhEW+;PshOP+;P'hEϖ;PөEϖ;PbE;P'd;P'7C73=wD`@@8\T @$êP'\X'w0sp`@$@pߪA 0'>\XPt''3? P @ȵɝԵс́Ѕ'KW P ,`ȕեȕյ7cwK'Wc{S o{ PܥССL ,lLu  w `@4@4 T T ìϬ۬1w@`@'v\T0 PK4'Vw`@'\T P4P4P4@4'[@'J\TP4P4P4@'V\T4 @+'\T$'''\X7ck@#/;W> _k ww<w'`@'2'z'\T@$07Gî'ϮۮW> 7G'?3?'KClW'?co{wl`@@'\T(@''J\T\T|@ @'*'\T  '^'\Xïϯۯw`+S w`@'\T'@'\T0$h4@'v\T0,@'~00@@'@'cA'N\T9P99999'z\TL@@'hP9@P0P9@P0P9@P9@'@'A'N\T9P9P9P99999'V\T'z\T@'\T'.4'.4 !'.4'.47K$߰_$#P/dD'3w ?`0 'f\X7Kc/ 7`DZ`3ӱ߱w`0w7%C w`0w7#Cw7`0w=CKAOwDc`_d'\T(_d''\T\Tw@((@'\T  @'V\T'\TPPB@'V\T'J'N\T40''N\T4@'V\T'A'N\T4@'Z\T'\T4 @'\T@0@ '''\X7O[gs#+ <Ɂ̥Ĺw`@'@'&\T008'\T0'\T'\T0'.PP$X('6':@h'.\T@h'.\T?S'\T@DD@pA'?S@9'2\T0''N\T0'\T'\T@'2\T$@g@P99'z\TW@''\T\T@@''\T\T 1$/ 73gwwD`@@@ !,@ '\X(@$)7Ǵ #wH`@/'\T@@'\T@@ B'\X7'"Z?KW'[Ӹc 4t$ɝwo`@@'Z@'\T@'N\T@'R\T@00@@0 R'V\X'@'\T @'\T @@ 2''v'\X7{7ǵwӵ`'\T@#00ߵ@ $'\X@N0 0@'\T'0-@'\T0 +@'\T0(@  @@'\T'i@ 2'\X'\T !'\X7SLsmS${G 3 @$ɝL!0PcQw`@$7#/;GS_w,k`000\TP4$4w `@@8\T w0`@@P@(@@\T !)w7wǷw`ӷ7߷w8`@@@'\T'' \XC7;,(CO [g7s7w w   wwt`'.\T8T@9'2\T@8'\T@'2\T$'\T$  w`P9'.\TPE@9'2\T#u@8'\T'2\T@'2\T$'\T'\T$  wD`PP9@'V\T'\T P999    wT`@@'\T$@@(@{@)@'\Te@(@Y@)@'\TC@(@)@5s6'\T(!P'\T'"'\T'P@'\T sP999P@ r'R\X@ R'R\XP@ B'R\X@ 2'R\X@ "'R\X $'R\X  w(`@'\T$'\Xw,`@88p?A 'N\Xw ,ѥw $úϺۺ #/;GS_kw˻׻+7CO[gsǼӼ߼'3?KWco{ýϽ۽ #/;GS_kw˾׾+7CO[gsǿӿ߿'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{U; +7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{D+7CO[gs'3?KWco{ #/;GS_kw w`J;PJ\#)G5ϖ;PsE;PG5'Z;P;P[\+;P'hE3+;POhE[ϖ;PwEw``''@P@@(\T@@@(\TP@(@ 2P99@)$)w` ,w<`8@ $P'\X'[TTw`@@@@''R\T'@P]'\T@'\T7@(@)@'\T@(@)@@pA ''\XP@ 'R\X@ b'R\X@ B'R\X7T{S  {Sw  m# 8|Ɂ̥Ĺ؅ȥw/`@@'*\T;0'f\T00P99G'\T, 0 0'\T@'\T0P999P900P99'\T '\X7?S_kw 'w4w'`@'\T0@ '\X7TO[ gsw(w'`0@ '\X7 7Cf7CRO['g7s #Sb/;O[w `" P99w `" P99w<o`@0@\T4@0@\T4@0 @\T4  7{C^[EK$P/dwL`@0@'f\T0@4 'V0@'\T47 #/ 7/W`cow{`0%w`0C{wopwwd`@'V\T'\T'@'\T$@'V\T '\X 4xɁ̥Ĺ0 0Mw4`@0@\T4@0@' \T4 7+7#C+Ow|`@8''N\T8'\T[''\T'@'\T88'B\XwwD`@0@\T4@0@' \T4@0@\T4 \ 88ѥؕн0= QI8Q!w$`@'^\T$(7 +7C  7'"EO[g'[Ӹsw(`00''\X7KWcSx7o $    <T䱕Mw {`@4@4  Lt KsSwt`@@'Z@'\T@@ 2'@'\T @'\T @@ 2'\X7+97ZCw8`@ @@\T@)$'\X'V7Ow`www #GS_w`w`@@(@)@ T'\T@)@)k'R\T'@(@'\T@@P@@@'\T d8\X8@@pA'n\T@@@@ rP'\X C'\X/ 77s&o ,\@襹w{w'w3wl`@'\T@8\T8\Ts6'\T(! SP'\T'$7c7/'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{  # / ; G S _ k w               + 7 C O [ g s               ' 3 ? K W c o {              # / ; G S _ k w               + 7 C O [ g s            '3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs   ' 3 ? K W c o {             !!#!/!;!G!S!_!k!w!!!!!!!!!!!!"""+"7"C"O"["g"Qs"w"I"""""""""" ####/#;#G#S#_#k#w############$$$+$7$C$O$[$g$s$$$$$$$$$$$$%%%'%3%?%K%W%c%o%{%%%%%%%%%%%% &&#&/&;&G&S&_&k&w&&&&&&&&&&&&'''+'7'C'O'['g's''''''''''''((('(3(?(K(W(c(o({(((((((((((( ))#)/);)G)S)_)k)w))))))))))))***+*7*C*O*[*g*s*****w*CU****** ++#+/+;+G+S+_+k+w++++++++++++,,,+,7,C,O,[,g,s,,,,,,,,,,,,---'-3-?-K-W-c-o-{---C5-w-R--+;P-hE-;P\OPb;Pb\?+;P- .H+.G.zc.o.. ,\ԹнСѹ#.. .. .. XPMԍȵɝԵс́Ѕ (P$ɕСȝйw`8 ....ew`@@@@/_/'R\T'@P]'\T@) //'R\T'@('6'\T B\X /0{S0{S0+01707C0#1x/1m;1'G1 t0 СչLȕ 84ɽȁɵɁMwLS1`\00@'.\T@ @@@ 3'n\XPPw7_17111T11'11T12 <TнM̹wTw'`@4@@'\T2P'\T$''z'\X c2o2'{22 @TнɕѽwDw'`@4@2P'\T$''z'\XW> 22w`[Cl2 3 3#37/3wP`@@''\T\T'\T'J'\T \X7K3ku333w=33 44#4+/4w;47G4w4Sb4w4`@'@'&\TP40$@00'n\T@@40@'\T4'\T04$'0K0'\T( 0 ' 0 '\T@PPP$@g'6P99'z\T@''\T\T $G4557/5+5?75w C5`0 'f\X7O5K555w(`@@'\T 8\X/ `3M%C{575 $HḾ5w,5`@0@\T@0@ #'\X76OF76C6O6E[6#g6 \ɽȁ䥹LLЅЁ7s6+666666w`)))-6766#7/7;77'"EG7S7_7'[Ӹk7ww7`@@'Z@'\T@'R\T0@'N\T0 2'V\X'@'\T @@ 2'\X'@'\T @'\T @@ 27'\X77g88Sx78K88m 88 @$ɝH{g>>7'>7>w? w`@'\T'?A@p?A@\T'@@'.\T99('::@P''\T@@)@('::@\T 1w\`.('6':@h'.\T@h@?P'\T@.('6':@h'.\T@h@p@A'.\T8'\T@@(P9998@9'2\T@'\T';@A@pO@A@\T'@@'.\T99('::'.\TP7P7( #P3uugO@999999'2\T@@ '\T@'2\T$@@)@('::@\T !@'2\T !@'B\X@P9'F\T$(#PJN/R{zJ&7?W?` "hV njbKw%Z^h&VoSY:5S-?G~s[[" a&+fw]2)*Z.2vrg606:[R> BeFϭJKC'NzRQ"OPvJ6:ke+V1&wRZ_>/3k/<^{_?72#^bb7{;\f:jϪnkrv{{4kz+J~81jCJ߳g7S o-N-N/-3OOO[XJZVkZXOt t|wSk/I ^+RNrvz~ϬW~?vz~OowWGgK77F7J߷N7R۵V'ng7Qng7"z'cR36W-&_*Ͼfj.2?6[7:Wb>#߇wVuc.oA2gC?w\^GBRFqVgbog: &JvWPNJZ*C7Aco7N{R`Vw7Z7^Ob`fjnr+evkz ~ow;K#^O2o :NBsu6JM>&FOZO*/k^#G CG6rXNW1#NRW2];V!j W#9o&'OeBS2|3*{"KF*f #K7_[hn#)Vk@ ˲"q"w&*.26:>BrFWJߴNRϩV)Z^{Wb G08f{jXnKrvz/~;WHBk"S{^s|{T ˍk9(* 3Gs#Su!&+[c[,(G/O"LjWuo~A:k&k6;lE2s/oSoa*7__&W"$*sSwKq6<:[/Gw.71RKr'z{ bkJBm{g';JS_s}F it~Z`BOHN3"J; RV  Bs_3:K5,F O[O2'6wQ>~/s +Ys"׺TG"Ӽ&rGjbBRbv.:'F^tB0>?L %bSf*K?#m.D26:{>bfQzirB#DFJN+ROVG/Zk^bWw3.f;yj_f{ n9>kFKkM~\vgj_rvzz c*3n~ï.z W^{,/^+/P'-Z,^ g s_{oqjk?wV? /r=CPvnr+>x/ ;.ig;A#/[Ks&KI;( OzHZk"{&ke" * s.G߶;ovO26W:wP>/>B{FF.K 6gDÉgIJ;2mRBz4&*cNO}"CMRˏ>7VZ'^3bf j?lsngr'HWCT6[&vgncl^rv'z/k~fOTs+mg3VGVRRCp ?KGSQ;bH8/b7+VY7<G$OQ*[w"QUwJ KjSr  n7>## A?א[)Oc:"e&7*U.??2pfwq3v6O:ˊ>BF JNRbV2Z^S7Sw3TcS?TST_Tob<fj# nr dvz}~ {sU.@moxu[m'cn>3Z gN<bsy~/G ?fC90)73 _?OV BJgh2/3ov)1 Kt7CZ(f}7]'27*   P3nVs;Z'"6& *;g$a ojo 1J_&>s."_W/zzcӎNTO.6c:> 2gpwf@OPf>?vn_ S6W*K|.s52lA+*^=: >Ӏ2@BEFkJNRNVgZ^yb/hf[jwn_rv1z,~^  GSjZBV#^6 "fbV2Z7Yw{Z_.oK+'sHK7Wr3ۆv%3{<CCXd.nh/ND, ||Wc#"#&*."26\:;j>cZBKvF5J#5NC5RVZ/a^Sabwaf[jncro0vCz~#8#5?\7K\w{^q^s;Ps\OP^^ϖ;P-^^Eϖ;P^^E/_w__/_#;_G_{SS_{S__;^k_w_____ XPMԍȵɝԵс́Ѕ (P$ɕСȝй HṔՍЁ́ ,\$ɕСՙ{S___3_w_`0d'0'\TC'''0'Z\T'6\T)0'\T'\T( 'n''0'\T('6\TPPP'V''0'6\XPP1_x_c`m`wH``g0P00''\T \X'V7+`~?`K`W`;c`o`T{`` ` PLнȕ;`T`` TLн䁈 ```W> ``w`Cwg`0((00@'J'\T@(@@!@@'\T@@''\T\T(@$ 7`_eoa{aaaaaaa3a7aw8P'dA'@(L X7e+;eSbGe D ЁɅЕȥХɁMw7Se[eeeW}eeeewLe`@0@'f\T0@4 'V0@'\T47eff'f:3fw$`?f'R\X{Sf_fw0kf`0@\T40@'N\T4$7wf~ffffw`'#f7fggg+gCJ7gCgOg[gw`)))+g gg7sggggg7'"ggg'[Ӹg <$ɝ耠P%4Mwg`@@'Z@'\T@'N\T@'R\T@00@@0 R'V\X'@'\T @@ 2'\X'@'\T @'\T @@ 2 h'\X7GhGjSx_jjO1'j3j?j 8|$ɝw`@@'Z@'\T@@ 2 'v@'\TP'@'\T @'\T @@ 2Kj'\X7j/jjj9wT`@@(@(@(@(@\T@)@)@)@)@ E'\X'V7jkkkoowt`@'\T(@(g@(_ @$@('\T@ )'\XPPw`P+k'.\TPE@9'2\Tk@@'\T'2\T@'2\T$'\T9P999'\T@'\T'\T \Xw `@P@ 'F\X37kCk@Ok[kgk# skk7k7 l  [lol7{lmmwmw`' @mP'\T'@P@&@'Z\T8'\T' @mP'\T' !@"@(@'\T@)#@@@@ B@@'\T@ B@(@)@'\T#@>@@('\T#@@@@ R'@@@'\TmP'\T'@@'\T@ R)#@@'\T@ B#d/ {w`s6'\T(!/nP'\T'"'\T'@P9(@$P@ !'\X@('B\T@)@@@'J\T@@pOnA'N\T@'V\TP99 w`'\T(@@@pnA'N\T'oA@''\T\T'&\T'j'\T@ 2P9973ow`Pw`8'\X TPѥMХԹɁСȁw`8'B\Xw`Pw`8'\Xwowowowoppp+pw@7pCpOp@[pwgpwspwpwpwpwpwpwpppgppqg+qKqkqgwqqqgqqrgr/rOrg[r{rrgrrrgrs3sg?s_ssgsssgsstg#tCtctgotttgtttgu'uGugSusuuguuugu v+vg7vWvwvgvvvgvvwgw;w[wggwwwgwwwgwx?xgKxgkxwwxwxwxwxwxwxwwxO,xxxwxw ywyw#y/y;ywOyw[y{Ggysyyyy{Gyyyyyyyy C OB ;zzz+z7zCzOz[zgzszzgzzzgLzgLzgLzz{{'{;{G{S{_{ k{w{{{w{w{w{w{{{{w{w{ |||w+|w7|wC|wO|w[|wg|ws|||||w|w|w|w|w|w|w|w}q}q}/}w;}wG}wS}w_}wk}ww}w}w}w}w}w}gL}KA}w}w}w}w}w~w~w~O,+~ w?~wK~wW~wc~wo~w{~w~w~w~w~w~w~~w~w~w~www +7COw[wgws     'wGwSw_wkwwwwwˀw׀wwww+7CO[gsww ǁӁ߁wSww '3www?wKwWwcwow{wwwÂςw``#ie?BP@)99P999P99P9 ۂ997wSÃσwۃwwww ww#w/w;wGwSw_wkwwwwwwwww˄wׄwwwwwwwwwwwwwwwwwww7wwww+w7wCwOw[wgwswwwwKADž_ۅ|KA_k_|wwww'w`@@'\Tc@)@'\TM@(@)@'\T5@(@)@''f@'\TT'\T@'\T@)'\TP@+ qP@ b'R\X3@ B'R\X?@ "'R\XK$'R\X7Www+w7wCwOw[wgwswwwwwwwǐwӐwߐwwwww5'w0`@@'\T$@)@'\T$@(@'\T$H@(@)@)@'b\T@$@@'f\T'\T@@('\T@()PP9!@@(@99#i@@P9@ )@ @ 999P999P99P9{@@99P999 P999#i@@P9@@('\TP@ )@ @@ 999P999P99P9!@ @@@('\TP@(P9P'\T9{@@99P999 P999!@@9@ s993@ 2'R\X?@ "'R\XK$'R\X7Ww7Owk+;PwhE+;PhE)7ǒw#OSe+7_^COo[$gSbs1\xmw` 7cWT˓ ד; ' wp`@'\T(@@ P@@'\T"@@ 1\@@ A(@ 17+w=$˔הw`(@  '\X/'R\TC'R\TW'R\Tk'R\TǕӕߕ'3r@P99?Kw@P99g@P99Wg@P99r@P99co{w@P99g@ P99Öϖۖ g@,P99      # ($-      # ($-      # ($-      #$(      #$(999999999999999999999999999999999999999999w`@'\T@'b'\T@t#(@@!@@'\T@@''\T\T(@$P w$`ӻ@P99$P9#/w<;`@0'N\T@0'N\T$0 'N\X7G wW&ǗDӗO3w ߗ`0 'f\X7{7COw= 0 1[{gsw(`0@\T0 '\X7;W'w,3`'6@'j\T08\X/ N7?GS_kCJwCJw`))))7˚Kx7'"'[Ӹ+ <$ɝ耠@1TMw7`O'\T@g00C@ $'\X@ 80 W@'\T000@! 0@g@ 4'\X0@0@@0@@{@ U'\X@Cc0 @'\T@@@'\T#'\T@@'\TF'\T@@@@@@$P@@@'\T@@ '\T(@@@ 2O'\T !Û'\X7/+w27C 8|$ɝw`(!7O_co{wL`@@(@(@(@\T@)@)@)@ 4'~\X'V7P˜לs&7[B#@ +7w`@'\T(@(@ P@@'\T.@ @@ 2'\X/@P(@ wP`@'\T@@@'\T@'\T@ "'\X Cw0`W@'&\T''k@'&\T'@'&\T'  @'\T@Q('6':@h'.\T@h'.\T?S'\T@pA'?S@9'2\T@@@\T@@'2\T a@@@\T ߝ7    $@w+ 4w`(@(2(88@'Z\TP98'\T8@'J\T@'V\T(8 P999wH`@(88p7A'\T'\T )(P99w`@)$)!w`s6'\T(!8'.\T(7(7@99'2\T@ǞP'\T'"'\T@'2\T '7۞77G7ϟ۟7O1777;7k777+O7[7ˢע+7CO[gsǣӣߣ'3?KWco{äϤۤ #/;GS_kw˥ץ+7CO[gsǦӦߦ'3?KWco{777ק777+7G7gww777ߨ7S7_w 7777;Sob7'/Sob7;7Sw7w7ˬ߬77 7+?7K_7k777g7sǰ7Ӱw7w'73G7Sw777ñ777#co{77^7+7c77777vS_kw77϶7S7_77777_sD_D/L7 77777 777+7_7?737?S7_777K77/7w777G7777K77G737S7w77[77777;^77C7ww 8؅I= 8؅I= 8؅I= 8؅I= 4؅(U9,7+7o777?7ws! #7/7w77/7w77s77777737?7Ws77?Sk777777KS77[w`@@'\TE@)@'\T0@(@)/PZ@99P9@'\T99P99P9 B99@ "'R\X$'R\X7'w/w#7/77S777c7777377777o77777c77777G77c777/7W7777C777c777wKWco{ #/;GS_kw+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs7w+7CO[gs'3?KWco{ #/;GS_kw+7CO[gs   ' 3 ? K W c o {          7 7W 7W  7 SW(/ ; w`@@'\TK@)@'\T6@(@)@'b\T'f@'\T@ @@-@@@ 'f@P9@f G @ "'R\XS $'R\X7_ 7 7;777'7?77777O77777?7o7777/|c+ow={wD`@@'\T @)q@ "9$'R\X7wP@P@( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X'6'@(L X/7;-;P-\H;P\mw `'" '\X7ow#WO;^7G3?+KxWwc`00P997o4 ;;T'wX`@''\T\T'2'N\T'J'\T \X7;GSw=_kw L|Сѡ؁́ͱЁ 0$4 0$4 0$4 0$4?'}OPggs&ggs&'}OPgw]g+j7gCgO[ggsgggs&jg3Sbw\`@@'''\T@0'\T@0'\T 0 '\X>SQ'3[?KDO3wLW`@0@'f\T0@4 'V0@'\T47cw={wx`S_00@'\T9@' \T90''N\T0'\T P99999997'W+w`0'\T0'\T@@8\T@(@)k@S@0'\T >w@P99P9@0'\T@':\T'\T0'\T'A'N\T'V\T b'\X /'\X A'\X/ 7 w'3CJ?CJKWCJco{w`())-7E7.'[Ӹ          <TȅХȥХLw `@4@4 ׮#8/;w`7GS[gswD`@@(@(@\T@)@)@ #'z\X'V7P7@O1      0hMԹw `P8'B\X +?Kw `'&'\X7Ww`@))(@'\T3@8'\T@@8@8''\T\T8(8$@((@)(@ #P999 w(`'@@@ $'&\XwD`('n('j@@h@@h@@h wH`('n('j@@h'@h@@h$w@`P@T'\T'B'\T \X@@7pwp`0@@P'"'\T0@@4 !@((@@ @ ()@@@@(@($@)$))@#Mw0P(@ P'j@L$XwPd(P@(@ 'j@L XP'v@(L Xw0P(@ P'r@L$XwPd(P@ @'v@(L X(@ P'r@L Xw4d(P@@8@(L X/ w$`@@@ #8'\X/ w$`@@@ #8'\X/ wD`@@@8@'\T'R':\T 4'\X/ w`1 #/;1GS_kwCJ1CJ+7C1O[gsCJ1CJ'3?KWc1o{CJ1 #/;CJGS_kw1CJ  1 + 7 C O [ CJg s     1      CJ !!!'!3!1?!K!W!c!o!{!CJ!!!!!!1!!!!! "CJ"#"/";"G"S"1_"k"w""""CJ""""1""w`( '\Xw`( '\Xw`( '\Xw`( '\Xw`( '\Xw`( '\Xw `''\Xw `'2'&\X7"7'#w `''R\Xw `'&'R\Xw `'2'6\XwTP@ (':'\X@':'\T(8@(L X/ wP@(@( @( 8@L$X@( 8@L$X@( 8@L$X@( 8@L$X8@L$X/7#whP8P8$''\T'bf''b@L$X/ whP8P8S$''\T'jn''j@L$X/ w` !w`!w` w` !wP@(!8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X$'\X/7C%%wP@(!8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X(@ 8@L$X%'\X/7[&&w`1'w`=Vw`(w` w` w`:w`&&@w`8@'\T@$)((j@P99P9'R'P99'R':\T'\T((@P99P9'R'nP99'R':\T'\T@''\T\T8@@8 / w`8@'\T@$)(P@p&A'R'nP99'R':\T'\T@p'@'V'&\T8@@8 / wT`8@'\T@$)((@P99P9'R'"P99'R':\T'\T((@P99P9'R'nP99'R':\T'\T@''\T\T((~@P99P9'R'nP99'R':\T'\T@'J'\T\T8@@8 / w4d(P@'j'@(L #X7;'w(7'w`4?Cw$`''\Xw`3'cw`@ ~w0`'&'''\Xw`( '\Xw`(@ ДX@'\T((@@)'\T(@@('\T @'"\T$'\X@'\T'\X$1w`@'\T@$1(@@('@'\T'\T( (@@(@'\T'\T((@(@'\T'\T(@ "oJ''G(w `''\Xw``@@P99@'\T'v'\T\T'''\T $\XJ ((G'(w8P'3(A'@(L Xw `S('R\Xw`'\XwH`(8  'V@ (28($8/ w`'n'\T@p@''&\T'S3@@'&\T''"@'V'&\T$w`'n'\T@pG@''&\T'@@'&\T';@'V'&\T$w8`@$@p/u'@ '&\XkKc(o([{(((w@`@{O@'r''\T \Xw@`@l@'r''\T \XwD`8@'\T@@@ "+8@@ !8/ nwL`@$@@@'\T'V@p#A@ "'\Xw`PP@'6\T@@\T !'@@'J'\T\T A'B'\X@'r'\T@)@'6\T'@@'J'\T\T''\T'P@@@@ B@@+@@ BwX`@@'\T'v'\T\T'''\T \Xw0`@$@pKA$'"\Xw<`@'\T @)'*\T$((LLw`(''&'\T' @!(@(@'\T'.':'\T\T@('@6(@6 #'w8`@P9'z'\Tzw `@'6@ P@@@'N\T 1'R@ @@@ 3'J\X'Z@@@ P@@@P@$$ @'\T P@@@'N\T 1'@'\T @'\T @@@ 3'J\X@(('R\T w`@(g@ )("@ P@@@ 4)('N\X@@@@@@)('F\T@))(@)))( 3'F\Xc@"@)@P@)@ @@@ S('F\X@@@('F\T$w@ @@@ 3'V\X@ @@@ 3'R\X_ @ @@@ 3'b\X[@@@@)('F\T 1'\X@@@'F\TP@)@'\T@@@@('F\T$)@@'\T@@@'F\T@'\T'\T@ b'\Xw`@@7@(@)@(@@ @'v'N\T q@@@@'\T$)@(@ Q(@)$)@@'.\T@ A@ @@)'\T@@/)@@c)P'\T'R\T@'\T@@':'\T T\Xw`@@'\T$@)@'\T$@(@'\T$X@(@'\T$@( @$@)@'\T$P@(@'\T$@)@'\T$@)@'\T$H@(@)@% @)@'\Tm@(@)@]@ )@'\TG@)@9@)@+('6':@h'.\T@h@@ P9@P99@9@ C'F\XP@ 2'R\XP@ "'R\X)@ 'R\XP@ 'R\Xo@ 'R\XP@ 'R\X)@ 'R\X)@ 'R\X)@ 'R\X)@ 'R\X @ r'R\X)@ b'R\X)@ R'R\X)@ B'R\X)@ 2'R\Xw0`@@'\T}@)@'\Tg@(@)@'\TO@(@)@@@'j'N\Tt P@@@P$)@ @@@@@ @ @@ 'F\X@ @@()('F\T@(@)$)P@ 'R\Xo@ b'R\X)@ B'R\X)@ 2'R\Xw4`@@P@'\T)Pw4`(@@'\T(@$)$w`@$@$@@'\T$8@)@'\T$@(@'\T$@(@)@'\T$(@(@'\Tu@(@)@)@)@'\TW@(@)@H@@@ 'F\T@@@'F\T@'Z\T@'^\T@@ @ @@@p *A@$@$@@@p*@@ 4'&\XP@ 'R\Xo@ 'R\X{@ 'R\X@ r'R\X@ R'R\X@ B'R\X+@ 2'R\XwPd(P@+P'\T@(@'r@L Xw`8@'\T@@ )(@'+'\T_@P99P9'R'nP99'R':\T'\T8@@8 !/ w`8/ w<d(P@$@p3+A'@(L XwX`@'\T'@(@)'\T))PPPwX`@'\T'@(@)'\T))PPPwX`@'\T'@(@)'\T))PPPw`@+@'\TK@''\T\T@''n\T+@'\T P99@''N\T@''\T g@ "P99  &@'\Tg P99'@(@)('\T$'\X'@()(@('\T'@((P'@()(@)'\T@'\T@)(P$[@@ #P999@(@)@'\T@'\T@'\T=@)(@'\T@)(g@@@@P@@@ bP99@ H@ RP993@@ SP999@'\T  ,@('f\TP @(@@ C)993@@ CP999w`@@'\T+@)@'\T@(@)@ !'\XP@ B'R\X,@ "'R\X#,$'R\Xw`@'\T'/,A@pC,A@\T'@@'.\T99('::t@'\T'@@@\T'@@)@('::@\T A7_,w`PPP@@A@ k,P'\T'@'\T@'\T@ Q(@(t@@P@(@(@'\T@)))@@(@(@)@(@)@)@'\T((@@''\T(@@C@(@)(@)(@)P@))4(@@( (@  (@@( (@ @@''\T\T(@@ BP@ @ @@@@@ )# @(@@(@)@(@)@((@$(@@@ ''\T\T@@ ) {,'\X((@@ ''J\T\T(@ @@@ @ )(@L@@'.\T@@7@'\T@@@,P'\TP@ @'-P'\T@@@'.'\T\T$@@ @ )#8(@ @ @@@ )# q ;-'\Xw`'.\T@T@9'2\T'@@'\T'n'\T'V'&\T\T@'2\Tgw``@(':'\T\TP@pw-A@@)(@p-A "'\Xw4`P@@ @(@@))+$)$w<`P@@@))@)P@+@@@ 2$w4`@'2\T-@ @'6\T(((@'6\T(0(@ (@!@( !P@( @ !)@ @@'\T@@ R @@@) @@@ @@@@'r'\T@@$$$$@@ R 1-'\Xw`@'F\T@'6\T( @;.'\T'@P@'F\T@'2\T@)@'6\T !'Z\X@)@@@$@@@(\T "w8`''w.AP99 '\Xw`.@'\T'\T'.A@p.A@\T'@@'.\T99('::@'\T'\T@@)@('::@\T !$'\Xw `.@'\T'n\T@P9'b'\T'.\T@T(7(7@999'2\Tt?@@P@(@.P'\T'.\T@T@9'2\T@@'\T@'2\T$@@'\T)@'2\Tgw<`@p/A3/@'\T '\Xw4`P(@(@!$@@(@ 7G/w`@\T'@@'.\T99('::@\T@@)@('::@\T !wH`@@'B\T@P@(@/P'\T)w<`'@'@ wX`@@':\T@@@@':'\T 4\X@@ 2/'\Xwl`@'\T#i@@P99P9@ CP999@@@@@P@@@(g$$P@ q@@ CP999 @P@ q@@ CP999 @,'\T#i@@P99P9Z˲@P99@P@@ \TP9999 SP999@(g?'\T#i@@P99P9Zw]@g@'V\TP99P999@@'V\T@@ \TP9999 SP999'\T@P@P@CJ@P99@)'Z\T1@P99@('Z\T@'#i@@P99P9Zw@P99@@@@ \TP9999 cP999#i@@P99P9@ cP999w0`@g@P99 P999eO//_^//w(`@' \T$'\Xw`(<(''\T'^'\T(-(<''\T'^'\T'''' \T'\T(''\T3'/( ' 0A'\T( '+0A'\T('K0A'\T('k0A'\TP9999'j'N\XwD`P@@$'\X@@'f\T(@ 70700wD`=@(@@! @\T(@$@@= B'\XwP`(@ @@(@ $(@@'\T@@ '\Xw@`@p0A@p0A 'b'\Xw@`@p0A@p1A 'b'\XwT`@$@@@p31A@pW1A 'b'\Xwl`'P@@(@@@(  @@ @@@@@ C@@!@@ R@)@@ CPo1Ǜ{111wH`@(@)@@1''\T@@ "'\XwL`@(@)@@'\T@@1''\T !wl`@(@)@@1''\T@@'\T@@2''\T !wH`@p?2@''\T 'V'&\XwH`@ps2@''\T 'V'&\XwH`@p2@''\T 'V'&\Xwld(P@@T'\T 8\X@(  @8@(L X2'\X/ ~w`Cw`Dkw`ESw`Fw`Pj3w`L3w`PP9wH`@(@(@('\T@*@)@+'V$(?f;R+3_R73C3O3wd`P''\T'@('''\Tw\`''\TL'[3'''&\T'J\XR33R333w<`'\T'f@P'j\T'v\Xw`P'\T'f'n\TP 'f'r\T@@@(L'E'v\T@)\X'wh`@$'\T'f@@p3A''\T'j\T'v\TPw`'"\Tw0`P'B'>\T':\Xw`'>(!8'>3P'\T('>(@@!'FF (@+4P'\T'(@$P'ggSo4{4'^444w`'.\TPE@9'2\Tk@T'\T'.\T'2\T@'2\T '\Xw8`@@@'.\T'2\T !'\X*4ˊ4e44w=4w`@@'\TO@)@'\T9@(@'\T#@(@)@@)P@99@ cP999P@ R'R\X4@ 2'R\X4@ "'R\X4$'R\X7 5w5_555w`@5'^\T@(@'\T(@@'\T@5'^\T@@(@'\TP@ (@@'\T@@@'\TU@9P@ cP999wl`@@@'&\T$@'\T@)@@'j\T@(@@'j\T "w\`@P@@)'n\T@('\T (@(@'\T@( w`@@(@)@(@)@(@@'\Tc@(@'\TM@(;@9@)@'\T#@(@)@)@@\T@'z\T@@@@@ p5A 'N\X+6@ 'R\X;@ 'R\X76@ 'R\XC6@ 'R\Xw`P@@ '\X@(@(@@@@ 2)@(@'\T;@(P@@)@@'r\T'\T B@@@ B)w `O6( P99w4`@'\T[6( (Pw `g6( P99w\`@$@$@@(@)@(@)@(@@@ ps6A@@ P@@ '\Xw\`@'b\T6'6A@(''N\T@ '\Xw@`@'\T@(]Pv@@'\Ta@(]@M@)@'\T7@(@)@'\T@(@)@]@@ P99@9@ P999P@ 'R\X6@ r'R\X7@ R'R\X]@ B'R\X7@ 2'R\X]@@P99P9@ #P999wh`P@$@'\TU@(P U@@ )99U@@ P999w8`P@$Z@@@ $P9999w``@$@$@@@@@ T\X@@@p7A@@@@(@ V('\Xw`@$@$@@@@@ T\X@'\T%Zw]g@P99@P999@@@@ \T@ TP9999'@'\TZw]@@P999@@@@ \T@ TP9999@'~\TE@'\T@'\T@@@@'f\T$@@w]@@P999'\T@@ d\X@@@@@ \T@@ c'\X@('~\T#@('\T'\T@@('\T'f\TPPJ@('\T@) @@@@@ \T&'\T@@@@@@@)'\TCJ@P99@'\T$1@P99@ c'\X'\T@)@@@@pO7A@@@@@('\T1@P99@ c'\Xw`@$(wT`@P@@)@)@'\T@(@@)'\T@(@\T 2wT`@P@@)@)@'\T@(@@)'\T@(@\T 2w `@$(P9wx`(@@P(@@! !'\X@@@8'\T(@ @(('\T@@!@@@ ")/ w|`@@'v\T'\T'7AH@'\T'\T@@p7A'N\T 29w``@@'v\T'\T@'\T'\T@''N\T !Hwd`@$( @'\T!@$'\X''@'&\T'\T@''N\T@'\T''N\T#i8@#i3?71@ (P99P999P99P9Z888@ 9P9999P999P999P9@@@ p8A'N\T'\T C99w`@'\T''N\T@''N\T' 9A@$@/#9@@@@p/9A'\T'\Ts9@'\TP999 CP999wT`@((('J'\T\T@((('J'\T\T !w$`@((($(((wt`@PP@(P9@)@ @@ A'\X@(@(@@\T@@@@ 3)@@@P9@ 3)w4`@@'\T@@\T@ 2Pw(`@( @9'\T'('6':@h'.\T@h.l ('6':@h'.\T@h. ((@'V\TP999P9PP9(@'Z\T@$@2@ @9'\T'@'\T@'\T@(@'\T RP99@(g@(1@)(@tP@@@@(( @@()\T)@@($)@@@@@@ v)@(@'r\T@ @9'\T'@@(@)@(@'\T$@))@ @ @ @ @@'J\T(@ @ )#+]@))(G@'V\T@ @'\T@ (@ @)'Z\TP@@'J\T@ 99@@@ @@@p+:A@@@(@@ )#@ @))('n\T@ '\T((@ @ 'V\TP999@ @ ((@@@ 'J\T@'\T@@($99@ '\T(((@ @ )#l@"@ @ @ @ @ 'V\T'R\T@'J\T(@ @ )#x@"@ @ @ @ @ 'V\T'V\T@'J\T(@ @ )#,S@"@ @ @ @ @ 'V\T'b\T@'J\T(@ @ )#g@~@ @'V\T'\T@(@ @)P@@@@'F\T$;@ @@'V\T(@'J\T@@@@@@ @ @@p[:A@ 'V\T@@(@@ )#@@@@@@)@'j\T'\T #|B@*@ @ @ @ @ 'Z\T@ 'V\T'^\T@'J\T(@ @ )#  ;'\X$@'B\X#w@`@'B\T (@! !PPw$`@(@ wH`(@@@'F\T@'V\T@ 2Pw@`(@!@@@!$ W;'\XwP`(@!@@@(!$ ;'\X(@!w``@!@!P(@!@@$(;'\Xwp`@(!@@(@!@@ @(!@@@(!$$$ #<'\X((@$wT`('f@ @w<'\T(E@(@$(@$)_<w`@@(@)<@'\T@&@@)s6'\T(! @@<P'\T'@@ aP9@*s6'\T(! @<P'\T'?=7@9 BP99@@ BK='\Xw\`@(C@(@(='\Xw4`@'v'2\T@$)P7==>>>'>3>?>K>W>c>o>{>>>>>>>>>>>> ??#?/?;?G?S?_?k?w????????????@@@+@7@C@O@[@g@s@@@@@@@@@@@@AAA'A3A?AKAWAcAoA{AAAAAAAAAAAA BB#B/B;BGBSB_BkBwBBBBBBBBBBBBCCC+C7CCCOC[CgCw4`@'~'2\T@$)P7sCCCCCCCCCDDD+D7DCDOD[DgDsDDDDDDDDDDDDEEE'E3E?EKEWEcEoE{EEEEEEEEEEEE FF#F/F;FGFSF_FkFwFFFFFFFFFFFFGGG+G7GCGOG[GgGsGGGGGGGGGGGGHHH'H3H?HKHWHcHoH{HHHHHHwd`P'~''\T\T@$@()@'\T@@(($))w`@(@m@)@(@(@)@(s&@P99 QP9@(@m@)@(@)@(@(P@(@s& @)@(@(P@(@z@)@(@(HP9##w<`@(8'2\T@#@@@ #)\X/ w`@(@1@)@(@(@#@)@(@)@(@@'\TP999P99 P9@(@?@)@(@PHP9@(@?@)@(@HP9@(@?@)@(@'F\T O @P99 1P9@(@m#@)@(@(@)@(@(HP9###SW(IW(Iw `':'\Xw`@'\T'IA@p/IA@\T'@@'.\T99('::@@\T@@)@('::@\T Aw`@'\T'KIA@p_IA@\T'@@'.\T99('::@@\T@@)@('::@\T Aw`'w`'"w`'wHd(P@ '"@8@(L X@8@(L X/ wHd(P@ '"@8@(L X@8@(L X/ w `'" '\Xw`@w0`@'\T@'\T  w0`@'\T@'\T !w0`@'\T@'\T !w0`@'\T@'\T !w0`@'\T@'\T !w0`@'r'\T$w0`@'\T@'\T  w0`@'\T@'\T !w0`@'\T@'\T !w0`@'\T@'\T !w0`@'\T@'\T !w4P@;B'@L$X|I+Iw=w=wD`@@'\T @)7@ "9I$'R\XwIwIwIwIwIw4`W@''\T$Jw `' '\X7J7/J;JǹGJSSJw\_J`@'\T0 @'\T0@DDDDpkJA$'\X7KKKmKwK`07KOWKK KKTKLwX`@''\T\T''N\T'J'\T \X7LLLLw=LLM  MM'M3Mh?MKMWM cMoM{MMMM Ms&MMMM+MSbMM NNg!#N/N;Nw GN`0 'f\X7SNVgNw=sN{NopNwN`07NWNN+Nw `#u '2\X P \ɽյյ́ѥM L ɁLсЅͥؕw@N`8@'j\T008\X'V/7N+Oӕ7OCOOO_~CJ[OCJgOsO1OOw`())+7OxOOO/ Zv7OOGOOO'[ӸPIPP2'P3Pw`7?P?PPPw4d(P@@8'@(L $X/ "7PPQ+Q7QuCQOQO1[Q[BgQ sQQQw4`@'\T#@$(GQO1g[{GQQwQ1Q1Q11Q1QCJCJQCJRCJ1RR1+R7R1CRCJOR[RCJgRsR1R1RR1RRCJRCJRRCJRRCJR1SS1S'S13SCJ?SKSCJWScS1oS1{SS1SSCJSCJSSCJSSCJS1SS1 TT1#T/TCJ;TGTCJST_T1kTwT1TT1TTCJTTCJTTCJTTCJTU1UU1+U7U1CUOUCJ[UgUCJsUU1UU1UU1UUCJUUCJUUCJVVCJV'V13V?V1KVWV1cVoVCJ{VVCJVV1VV1VV1VVCJVVCJ WWCJ#W/WCJ;WGW1SW_W1kWwW1WWCJWWCJWW1WW1WWCJWXw8`@@@'2'&'\T %\Xw4`@@'2'&'J\T \XwXwXw+Xw7XwCXwOXw0`[X(@ ''\X P\ɹ4<́Е4<U0=Е P\ɹ$ÝЕDT=Q$9P <4aȕեȕȝwgXwsXwXwXwXwl`@ X'\X@( P(@'\T8pXA'N\T$'V\X/ & <4%9ȕեȕȝw YwYw#Yw/Yw;Ywl`@ GY'\X@( P(@'\T8pYA'N\T$'V\X/ *#w(`8P99$P9w(`8Y8'\XwX`(@! Y'\Xg(P99m(@P999 P99w`'Z <8xЅ#3Z?Z7KZ^ZZ7Zw `Z'\X v [#[7/[;Ho[{[ 8|مՅЕ̥ ,\ ̥ɁсЅй ,X$Ѕ 4pXMԹM $D$ЅLL3)))o[)))))7o)w`@'j'J\T'\T@8 8@(8'\TPP88@98@9899 "8'F\XwxP8@!@@ 88@ P$88'f'j@(L X8'@(L X [w`8'\T@'\T8(@@'\T@@(@)@(@)@(@[''\T@ '\T@!@@ '\T@ ['\X@ @ \Xg#\w/\H;\{,w`Pw`8'\X/ N  t0L1͕ḾС$XI4@ 8|Xɥ́ЅML L <\ȑM0ͽLwL`@(@(!(@@)(@))(8'\T P999w<`@('\T8'\T )(P99 < չЕյȹ <ЁͥХw0`'G\AP9 '\X  w`Pw`8'\X  w `8 '\X w8`>'\TP99$P9  <MԹM쀌Ёѹ;^\7\G\\w `''w `''w `''w `''w`(w`(8\X/ .w `(8'\Xw`88w `(8'\Xw`8w$`8)8'\Xw`8(w7\ ]]] (Pѕȁѡ (PܥС (Tѕȁѡ (PܥСw4P8''@(L Xw4P8''@(L Xw4P8''@(L X 8ɽɥ7+]c[]g]s]w<]`'"\T4'\T'\T4S]7]R]]w,`88'\T':\X ,\Ĺܹѡȕ͹ D ܕСȕ̹S]7]SW^c^go^u{^^w=^w=^w`@@'\T5@)@'\T@(@)@CF@@P99 CP999P@ B'R\X^@ "'R\X^$'R\X7^wo_ׂ{___;;w4`8)88P999 8'j\Xc+6___G_G_u_wd`@8'z'N\T8'n\T''N\T8\T@ #'\Xg_w`Hw=7_``w0`8@@@ $8)8)'\XwT`'\T8@@@@8)'\TCJ8P99@ 3'\Xw`w`Hw`@'\T''N\T@''N\T@$@/+`@@@8p7`A'\T'\T{`@'\TP999 3P999``g`CJ`wX`CFSug@P99P9998@'\T P999w`Hg`wD`@P@88@'\TP999 "P99g` L$с́сн` (PTͽٕ ,XT蕑w0`(8@'Z\T$8*w`@88('N\T@$8*8'j\T@(8*8)@)'\T8+s6'\T(! `P'\T'P8'B\X L$ɹȝɥѽȁL D́ȅȁͥȝ @́ȅḁ̏ȝ HٕЁ T$ѥ1PLP ,յ́сȅ (PTѕȁTaa'a <0ԍн L0ԍйc < Ё < Ёȕ̽ѥMw4`@@'v'2'\T \XV3a?aKaWacaoaw]{aHaOPaa1aCJaaGaamaara bwbz#bO /b;bkIGb+Sb4_bkbgwb b\bbjbcbbWkbbb$bbcӻcDc~+c_7cCc>OcE[c#+gcscgtccc7c'}cc?c'ccc/c7d?dd'dG3dW?d_Kd#Wd@cdood{d(d!dd+Sdd7d Sd.dddJd eJe_~#e /ew;e'cGe?CSe_e_hke3weooee ~e'eekeSee'5eeOeffofw+f7fOCfo OfN[fsugfsfMf&f'ffw4`@@'~'2'\T \XVffffffw]fHgOPgg1'gCJ3g?gGKgWg3cgrog{gwgzgO ggkIg+g4gggg g\g hjh#h/h$;hGhShӻ_hDkh~wh_hh>hgthhh7h'}hh?h'hii/i7+i?7iCiOiG[iWgi_si#i@ioii(i!ii+Sii7i Si.jjjJ'j3jJ?j_~Kj Wj'ccj?Coj{j_hj3joojj ~j'jjkjSjj'5j kOk#k/ko;kwGkSkO_ko kkNwksukkMk&k'kkmk_kt|j[pjgpzspSW(w`Pw`8'\Xw`Pw`8'\Xwpwp,p+w=7p7p7p7q7'qj;qw `'* '\X7Gq7fqoqqw`8@8pqA'\T'j\T8'\TP'"8'.\T@P8888pqA'>\T'':\Xw|Gr`'*'\T4'\T4O=4O=4P4@4@'''\T$Sr_rxkrwwr`07rr;r rrw`@'\T@'\T(@@ P@@ P(@@'\T (@@'\T !P(@@'\T (@@'\T !P(@$7rSrrw=$r9Gi{`GiO+Gi+OGi+O+ mssys's+3s7?sGos{ssssssws`07sw=s{sswt`07tV't#+3twD?t`P4'0'\T08\X'V/ 7Kt~stttCJtCJttw`()))7twttt/ v7t4uuu'[ñ'u3uL?uwP`@ Ku'\X'Z@?u'\X7uO7vCvOvw[vwX`@ A@)@)@)@)@)@@ (@ (@ (@ (@ (@ \T@ g'R\X7gvkPvvv8v[Bw  v v7wdgLw'w73wgwJJ_~_~1sw1w11w1w1CJwCJw1CJwCJw11w1wCJ1w1wCJCJxCJxCJCJxCJ'xCJ13x?x1KxWx1cx1ox{x1xx1xCJxxCJxx1xCJxxCJx y1y1#y/y1;yGyCJSy1_yky1wyyCJyCJyyCJyyCJyCJyyCJyyCJz1zz1+z7z1Cz1Oz[z1gzsz1zCJzzCJzz1zCJzzCJzz1z1{{1{'{CJ3{1?{K{1W{c{CJo{CJ{{{CJ{7{{7||7|7|7}77}77K}7[}7}7}7}~ <ȕեȕȝw`8\Xw~7~77+7c7 <ȕեȕȝw`8\Xw 8 1P XԹХɝԵȕН̕mw<`'&'@ '''\XTw0`ǀ '''\X HPͽԹХ́ܥСɝ́L w@`@'B'F'\T$P'\X7SGgǁ 0d$ٽ T ȁ܅́ɝ́сЅ́og3w@`'ӁA' AP99 '\Xw,/`000\TP4$47;[wgws`0'\X7Gw0`0'ÂA 'N\X7߂ sw#`07/Gw`'\T@'\T(040(!'f0'r\T'j\T'@'\T'v\TP7Gk"+w=c7w`@@'\T=@)@'\T'@(@)@CF@G$@P99P99 CP999P@ B'R\XC@ "'R\XO$'R\X7[w i'3g?c+6KW{{{#w=gc7o7{gwD`@P@88@'\TP999 "P99g3#3## 4xH̕Åw7υۅ #/;GS_kws& 3ˆ$׆(,048<@+D7HCLOP[TgTsX\`dhlpLJtӇx߇|g'3?KWco{Èψۈ #/;GS_kwˉ׉+7CO[gsNJӊߊ'3?KWc#o#{CJCJCJCJCJ#ËCJϋ#ۋ##CJs& ####/;#GS#_k#w##ˌ׌##CJ##+7gC#O[CJg#sCJ###ǍCJӍߍ#CJ##CJCJ'CJ3#?oLCJK#W#cCJo#{CJ###ÎCJώCJێ##oL CJCJ##/CJ;CJGSCJ_kw#sCJCJCJCJˏCJ׏CJ#CJCJCJCJCJ+CJ7CJC#O#[gsǐӐߐ'3?KWco{Ñϑۑ #/;GS_kw˒ג+7CO[gsǓӓߓ'3?KWco{77DSw(`@@@@@ EP99999w$`@@@@ 4P9999w `@@@ #P999w` P99w`P9wD`@@':@@'>\T'B'\T $\X7_yew$`8'\T8\Xwt`8\T8'\TP8@88'\T'\T8'f' \T'v\XǕyӕߕw`07; w`'&\X7'0Öϖw0ۖ`4P4'6 'j\X7k+7CO[gsw`0w=:w`07Ǚۙ+w(`P4': 'j\X7WsCJCJw`)()-7Eǚ/ /7Ӛߚ D$ɝ耠DU=P%8Q5 D$ɝ耠DU=P%8Q5wd`@ '\X'@('Z@['\X73#/;7GwwP`@ 1@)@)@)@)@@ (@ (@ (@ (@ \T@ V'N\X7WP˜ל?Sc  wp`P4V@ w4d(P@$@8@(L "X/ JJJJJJJJ_~_~_~_~11#11/1;11G1S11_1k1CJwCJ1CJCJ1CJCJ1CJCJ˝11ם1CJ11CJ11CJ11+CJCJ7CJCCJCJOCJ[CJCJgCJwXd(P@@@''\T\T@$@(@8@(L 3X/ wd(P@@@@@@@ a@(  @8@(L rX@(  @8@(L rX@(  @8@(L rX@(  @8@(L rX@8@(L rX/w$`@@@@@ Ew `@@@@ 4w`@@@ #w`w`w$`@@@@!  !w8`@@@@!@@ @@@! ! 1wH`@@@@!@@ @@@!@@ @@@! 1 Awd(P@@@@!@@ @@@!@@ @@@!@@ @@@!@@ @(! @8@(L bX(@  @8@(L bX(@  @8@(L bX(@  @8@(L bX Q/7sw`w$`@@@@!  !w8`@@@@!@@ @@@! ! 1wH`@@@@!@@ @@@!@@ @@@! 1 Awd(P@@@@!@@ @@@!@@ @@@!@@ @@@!@@ @(! @8@(L bX(@  @8@(L bX(@  @8@(L bX(@  @8@(L bX Q/7 s 0hЕԹɕ  DLɽɥѕյнСw\|`@'\T@@''F'\T0@ '\X7˟ w8`'''P999 '\Xw$`'P9 '\Xw '`P4@4$37?s!w`D7gנw`@) (w`47c'3?fkw\?`P@'\T0@\T@4P@@'\T@P7Kwd`@'\T(04(0! D@pA'\T@'\TP7S/H;ccGw`@@'\T=@)@'\T'@(@)@CF@7<@P99P99 CP999P@ B'R\XS@ "'R\X_$'R\X7kw#7C;gOc+6]w=w$`@('\T$ ##[!gr Ss 8DB gggxSSgggǣ $(,04<@HPTX\`dlptx|ӣߣ L8 $'3?KWoLco{oLwwwäϤۤ #/;GS_kwoLCJ˥ץ+7CO[gsǦӦߦwww'3?KWco{oLçϧۧ #/;GS_kw˨ר+7CO[gsǩөߩ'3?KWco{êϪ۪ #/;GS_kw˫׫+7CO[gsǬӬ߬wT`'.\TP3@9'2\T@@'\T@'2\T !wT`'.\TP3@9'2\T@@'\T@'2\T !NwPsp`@@'^@@'>\T@@@$'^'\T $\X'e3?KWcwo`0wpg`0'B\T0(@@! (@0@'\T@@''\T\T(@$$7{íϭۭwD`@@'\T$@(@)@'\T$@(@'\T$`@(@)@'\T$@(@'\T$@(@)@)@)@'\T$8@(@)@%_ @ @@d@ $ @'\T'4P4@4P4P4d@ 4@'b\T4 0  @'f\T0 @4@'\T4@'\T4@'\T4 @00'\T@ '''\XP@ 'R\X'@ 'R\X3@ 'R\X?@ r'R\XK@ R'R\XW@ B'R\Xc@ "'R\X7ow'>3?KWcow={{opw`0Ewt`0I0'\T0''N\T99'.0$+0'\T@ 997wW˯_~w`)()+7ׯw/ #7S _kw/ @$ɝ耠DU=P%8Q @$ɝ耠DU=P%8Qw`@ '\X'Z@'@@@''\T\T 'b''\X7۰τco{w0`@@(@)@(@)@@@ S8\X/ 2wH`@ !@)@)@)@@(@(@(@\T@ E'J\X7?P۱   g JJJJJJJJJJJJJJJJ_~_~_~_~_~_~w`o'\T;Sr@P99Ksg@P99#999999$'>\Xw`o'\T;Sr@P99Ksg@P99#999999$'>\X'/; 4Pԍ wD|d(P@4@''F'@(L $XGeSwd`@8\T8@p_A@pA 'b'\X@($8\X/.6s!w`@4$7z?fw `07G+kw47`P4@'''\TgCwT`8@pOA'\T'j\T8'\T':\XwDg`(4'\T4@'''\T seccw`@@'\T=@)@'\T'@(@)@CF@@P99P99 CP999P@ B'R\X@ "'R\X$'R\X7wo;o+˴.״hC+]+]+]C+]Y__YY__+_7YC_O_[YgsoLoLoLY_oL_oL_YYoL_oLoLoLoL_ǵYӵoLYߵoL_YYY_'_3_?_KYWYc_ooLoLoL_{_YYoL_YYöoLoLY϶Y۶oLoLoLY_oLoL__ oL__#Y/Y;YGoLYSoLoLoLoLoLY_YkYwY__YYYY˷Y׷YYYY_V3G[ow]OP1ӸCJs&3/r;OwcO wkI+4ǹ۹g \+j?SgD{~g>gt˺ߺ7'}/?C'Wk/7?ϻGW_ @3(G![+So7 S.ӼJ_~'c#?C7K_h_3s ~'ýk׽Sg'3Go[woOo NsuӾM&'#7nKǹWco1xmw$`${'\Xw=ϿۿSb  4xɁ̥Ĺ4Q!<c`Os2##/;GwS`0 50)'\T@ _kP99$@P99?@P99 wP99990'\TP99$P977W?+7w=CEO+[wg`07sw`)())7ww@P@P8pA'@(L X/ :7'3?O<KW @$ɝ耠4=T1=w`@ c'\X'Z@>'@@@''\T\T >'''\X7ww@`@ @)@)@@(@(@\T@ 4'F\X7+P+7CMO[ggTsew `8(8\Xw`8ws!w4`@'\T@ '\X7/?fw`07 kgw`P8\Xo{{ccw`@@'\T_@)@'\TI@(@)@'\T1@(@)@"?;P@P999P@P999 dP9999P@ b'R\X@ B'R\X@ "'R\X$'R\X7wH{`+D _7oLoL_C_OoL[oL_goLoL_soL_oLoL__oLoL___oL___oLoLoLoL__oLoLoL__oL__'_3_?_KoLoLoLoLoL_WoL_c_o_{___oL________ _oLw#w/w;wGwSw_wkwwwwwwGwmwwww ww#w/w;wGwSw_wkwwwwwwwwwwwwwwwww+w7wCwOw[wgwswwwwwwwwwwwwwww'w3w?wKwWwcwow{wwwwwwwOwwwwww+w7wCwOw[wgwsww.oǹ T̽Е̹Ёɭȥ́w=3+Os2#c`s&'j3j?w4K`K00 8\X'V/ 7W~w`P7W'3?D?E#KWwc`0w`(()-7owEwX`'.\TPH@9'2\T@8'\T@'2\T / >7s,{: D$ɝ耠H5%9Iw$`@:'7C7Ow0d(P@8'@(L X/ B7P/;GS$S_z kw7s! 0PȅMw`0'J\X7?fswd`'  P'\T'(4'';A'N\T4gkWccow<`?BP@)99 P9997{wSM_sjoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoLoL77K7_7777/777{77w7w77C77C777{7C77c777;7w7777s777?77777777O7777O77#77+77 7777777K77K7S77 77w7?77 7 7O 7 7 77 7 7/7w7777777{7k7[7K7;7+77#yow=C3Os2#c`jjw4`@0@\T@0@\T@0 @ #\X73?Kwl`Pk@'2\T'\T'\TP999'\T$7W+\:Ew`(()+7w+7/ V7CO[*gswP`'Z@@@''\T\T '\X '\X7wd`@($@''N\T@@'j'\T@'\T@ #8\X/ 2ww\`@P@(@(@(@(@(@\T@)@)@)@)@)@'\T@ b7P/;G[GuS_{SkwwD`'@(@@@@!P@@@ P)s!w`0'\Xs 4x́ɥѽw`@) (Zw`@@'\TS@)@'\T=@(@)@'\T&@(@)O+ @@@999[[g@P99P99 cP999@ B'R\X@ "'R\X$'R\X7w U    oLoLoLoLoLoLoLoLoLoLw<`@(@V@(@@)@(w@P99 QP9@(@V @(@rP@(@V$@(@m@)@(@)@(m(@@P999@ rP99@(@V@(@s&@)@(s&(@P99 QP9##w`@(@@(@r@)@(@P99 QP9@(@@(@@)@(r@P99 QP9@(@@(@m@@ 2P99@(@@(@s&P9##w`@(@@(@m@@ 2P99@(@@(@s&P9##w`@(@@(@@)@( w@P99 RP99@(@@(@r P9@(@@(@s&@)@(s&(@P99 QP9##w`@(@@(@@)@( w@P99 RP99@(@@(@r P9@(@@(@s&@)@(s&(@P99 QP9##wl`@(@@(@s&@)@(s&(@P99 QP9##wl`@(@w]@(@s&@)@(s&(@P99 QP9##w`@(@OP@(@m@@ 2P99@(@OP@(@s&P9##w\`@(@@(@@)@(!w@P99 RP99@(@@(@r!P9@(@@(@s&@)@(s&(@P99 QP9@(@@(@1!P9@(@@(@CJ'!P9##w`@(@1@(@m@@ 2P99@(@1@(@s&P9##w`@(@CJ@(@m@@ 2P99@(@CJ@(@s&P9##wt`@(@s&#@)@(@(@s&@)@(s&@@P99 qP9##73!w4`@(@3@)@(@(@3 @)@(@@P@(@3@)@(@(@(@&P9@(@3@)@(@(@(@MP9@(@3@)@(@(@(@suP9@(@3@)@(@(@(@NP9@(@3@)@(@(@(@o P9@(@3@)@(@(@(@OP9@(@3@)@(@(@(@oP9@(@3@)@(@(@(@7P9@(@3@)@(@(@(@P9@(@3@)@(@(@(@w]P9@(@3@)@(@(@(@P9@(@3@)@(@(@(@P9@(@3@)@(@(@(@#"P9@(@3#@)@(@(@(@/"P9###7;"w`@(@r)@)@(@(@g@)@(@@ _#@ rP99###w`@(@)@)@(@(@g@)@(@@ k#@ rP99###wt`@(@w#@)@(@(@g@)@(@@P9###w<`@(@O @(@@)@(w@P99 QP9@(@O  @(@rP@(@O $@(@m@)@(@)@(m(@@P999@ rP99@(@O @(@s&@)@(s&(@P99 QP9##w`@(@-@)@(@(@s&@)@(z@P99s&(@P99 rP99##w`@(@kI$@(@m@)@(@)@(m(@@P999@ rP99@(@kI@(@s&@)@(s&(@P99 QP9##wX`@(@+@(@m@@ 2P99##w`@(@4$@(@m@)@(@)@(m(@@P999@ rP99@(@4@(@s&@)@(s&(@P99 QP9##wX`@(@@(@m@@ 2P99##w`@(@g=@)@(@(@m/@)@(@(%@)@(@@!s&@P99m((@ @P999 P99@(@g9@)@(@(@m+@)@(@(!@)@(@@!s&@P99g@@P99 P99@(@g@)@(@(@z@)@(@(@P@(@g@)@(@(@@)@(@(@$P9@(@g/@)@(@(%@(@m@)@(@(@)@(@( w#P9@(@g/@)@(@(%@(@m@)@(@(@)@(@( #P9@(@g4@)@(@(*@(@m @)@(@(@)@(@(  ##P99@(@g;@)@(@(@m-@)@(@)@(@@@(!m(@@P999g@@P99 P99@(@g@(@s&@)@(s&(@P99 QP9##w`@(@ @(@@)@(w@P99 QP9@(@  @(@rP@(@ $@(@m@)@(@)@(m(@@P999@ rP99@(@ @(@s&@)@(s&(@P99 QP9@(@ @)@(@(@ +@P99 QP9##w<`@(@\@(@@)@(w@P99 QP9@(@\ @(@rP@(@\$@(@m@)@(@)@(m(@@P999@ rP99@(@\@(@s&@)@(s&(@P99 QP9##wX`@(@@(@m@@ 2P99##w`@(@j$@(@m@)@(@)@(m(@@P999@ rP99@(@j@(@s&@)@(s&(@P99 QP9##wX`@(@@(@m@@ 2P99##w`@(@@(@m@@ 2P99@(@@(@s&P9##wX`@(@D@(@m@@ 2P99##w`@(@~@(@@)@(#w@P99 RP99@(@~@(@r#P9@(@~@(@m@@ 2P99@(@~@(@s&P9##wl`@(@g@(@s&@)@(s&(@P99 QP9##wX`@(@>@(@m@@ 2P99##wX`@(@gt@(@m@@ 2P99##w`@(@@(@@)@(#w@P99 RP99@(@@(@r#P9@(@@(@s&@)@(s&(@P99 QP9##w`@(@@(@@)@(#w@P99 RP99@(@@(@r#P9@(@@(@m@@ 2P99@(@@(@s&P9##w`@(@7@(@@)@(#w@P99 RP99@(@7@(@r#P9@(@7@(@s&@)@(s&(@P99 QP9##w`@(@'}$@(@m@)@(@)@(m(@@P999@ rP99@(@'}@(@s&@)@(s&(@P99 QP9@(@'}@)@(@(@OP @P99 QP9##w`@(@$@(@m@)@(@)@(m(@@P999@ rP99@(@@(@s&@)@(s&(@P99 QP9##w`@(@?$@(@m@)@(@)@(m(@@P999@ rP99@(@?@(@s&@)@(s&(@P99 QP9@(@?@)@(@(@(@o$P9@(@?@)@(@(@w] @$P9@(@?@)@(@(@ ?@P99 QP9##w`@(@'@(@m@@ 2P99@(@'@(@s&P9##w`@(@@(@@)@($w@P99 RP99@(@@(@r+$P9@(@@(@m@@ 2P99@(@@(@s&P9##w`@(@@(@@)@(7$w@P99 RP99@(@@(@rC$P9@(@@(@m@@ 2P99@(@@(@s&P9##wl`@(@/@(@s&@)@(s&(@P99 QP9##w|`@(@7'@(@m@)@(@)@(m(@@P999@ rP99##wX`@(@?@(@m@@ 2P99##w`@(@@(@m@@ 2P99@(@@(@s&P9##w`@(@G@(@m@@ 2P99@(@G@(@s&P9##w`@(@W@(@@)@(O$w@P99 RP99@(@W@(@r[$P9@(@W@(@s&@)@(s&(@P99 QP9##w`@(@_@(@@)@(g$w@P99 RP99@(@_@(@rs$P9@(@_@(@s&@)@(s&(@P99 QP9##w`@(@@@(@m@@ 2P99@(@@@(@s&P9##w`@(@@(@@)@($w@P99 RP99@(@@(@r$P9@(@@(@s&@)@(s&(@P99 QP9##w`@(@(@(@@)@($w@P99 RP99@(@(@(@r$P9@(@(@(@m@@ 2P99@(@(@(@s&P9##wX`@(@!@(@m@@ 2P99##w`@(@+S@(@@)@($w@P99 RP99@(@+S@(@r$P9@(@+S@(@m@@ 2P99@(@+S@(@s&P9##w`@(@@(@@)@($w@P99 RP99@(@@(@r$P9@(@@(@s&@)@(s&(@P99 QP9##wt`@(@7#@)@(@(@g@)@(@@P9###w`@(@ S)@)@(@(@g@)@(@@ $@ rP99###w`@(@.)@)@(@(@g@)@(@@ $@ rP99###w`@(@@(@@)@($w@P99 RP99@(@@(@r%P9@(@@(@m@@ 2P99@(@@(@s&P9##w`@(@$@(@m@)@(@)@(m(@@P999@ rP99@(@@(@s&@)@(s&(@P99 QP9##w`@(@J@(@m@@ 2P99@(@J@(@s&P9@(@J@(@OP%P9@(@J@(@%P9##w`@(@_~@(@m@@ 2P99@(@_~@(@s&P9@(@_~@(@OP'%P9@(@_~@(@3%P9##w|`@(@'c'@(@m@)@(@)@(m(@@P999@ rP99##w`@(@?C$@(@m@)@(@)@(m(@@P999@ rP99@(@?C@(@s&@)@(s&(@P99 QP9##wl`@(@@(@s&@)@(s&(@P99 QP9##w`@(@_h@(@@)@(?%w@P99 RP99@(@_h@(@rK%P9@(@_h@(@s&@)@(s&(@P99 QP9##wX`@(@3@(@m@@ 2P99##w\`@(@@(@@)@(W%w@P99 RP99@(@@(@rc%P9@(@@(@s&@)@(s&(@P99 QP9@(@@(@CJo%P9@(@@(@1{%P9##w|`@(@ ~'@(@m@)@(@)@(m(@@P999@ rP99##w`@(@'@(@@)@(%w@P99 RP99@(@'@(@r%P9@(@'@(@s&@)@(s&(@P99 QP9##w|`@(@'@(@m@)@(@)@(m(@@P999@ rP99##w|`@(@k'@(@m@)@(@)@(m(@@P999@ rP99##w|`@(@S'@(@m@)@(@)@(m(@@P999@ rP99##w`@(@@(@@)@(%w@P99 RP99@(@@(@r%P9@(@@(@s&@)@(s&(@P99 QP9##w`@(@g9@)@(@(@w'@)@(@@$%%%%P99999###7%w`@(@@(@@)@(&w@P99 RP99@(@@(@r&P9@(@@(@s&@)@(s&(@P99 QP9##w`@(@@(@@)@(&w@P99 RP99@(@@(@r&P9@(@@(@s&@)@(s&(@P99 QP9##wl`@(@o@(@s&@)@(s&(@P99 QP9##wl`@(@w@(@s&@)@(s&(@P99 QP9##w`@(@@(@@)@('w@P99 RP99@(@@(@r'P9@(@@(@m@@ 2P99@(@@(@s&P9##w`@(@O@(@@)@('w@P99 RP99@(@O@(@r+'P9@(@O@(@s&@)@(s&(@P99 QP9##w`@(@o @(@@)@(7'w@P99 RP99@(@o @(@rC'P9@(@o @(@s&@)@(s&(@P99 QP9##w`@(@N@(@@)@(O'w@P99 RP99@(@N@(@r['P9@(@N@(@s&@)@(s&(@P99 QP9##w`@(@su@(@@)@(g'w@P99 RP99@(@su@(@rs'P9@(@su@(@s&@)@(s&(@P99 QP9##w`@(@@(@@)@('w@P99 RP99@(@@(@r'P9@(@@(@s&@)@(s&(@P99 QP9##w`@(@M@(@@)@('w@P99 RP99@(@M@(@r'P9@(@M@(@s&@)@(s&(@P99 QP9##w`@(@&@(@@)@('w@P99 RP99@(@&@(@r'P9@(@&@(@s&@)@(s&(@P99 QP9##w`@(@'@(@@)@('w@P99 RP99@(@'@(@r'P9@(@'@(@m@@ 2P99@(@'@(@s&P9##w`@(@@(@m@@ 2P99@(@@(@s&P9##y''C'Os2(#((Sb'(w 3(`0gG0 0P9900'\TP99+0'\TP99s209#0909{`@'\T94@ '\T9W@ '\T9@ '\T9@ ' \T90 '\T P99999999999997?(V(((w\(`'.\T@s*@9'2\T08\T@'\T@'2\T 1/ 7((?((())w`(())7)gw7)C)O)/ 7[)gg)s))wP`'Z@@@''\T\T '\X '\X7))wT`@P@(@(@(@(@\T@)@)@)@)@'~\T@ R7)O **ghO#*/*;*s!?f3G*O#S*_*w`@@'\TC@)@'\T.@(@)O@@99[[g@'\T@(@P99P99 CP999k*@ "'R\Xw*$'R\X7*w#+7/+C+O+[+s&g+s&s+s&+s&+s&+s&+m+s&+w`@(@G@(@@)@(+w@P99 RP99@(@G@(@r+P9@(@G@(@s&@)@(s&(@P99 QP9##w$`@(@m@@)@(@)@(@(@m.@)@(@)@(@@!@@@!(@@!PPm@@@P999 P9 @(@m1@)@(@)@(@(@s&@)@(@@!s&@@P99 P9 ###s&+s&+3+z,m,3,s&',s&3,s&?,s&K,s&W,s&c,s&o,s&{,'s&,s&,s&,s&,s&,s&,s&,s&,s&,s&,s&,s& -s&-s&#-s&/-s&;-s&G-s&S-s&_-s&k-1JCJs&w-s&-s&-s&-m-s&-s&-s&-s&-s&---.cw`@(@O@(@@)@(.w@P99 RP99@(@O@(@r.P9@(@O@(@s&@)@(s&(@P99 QP9##s&+.s&7.s&C.s&O.s&[.s&g.s&s.s&.s&.s&.s&.s&.s&.s&.s&.s&.s&.s&.s&/s&/s&/s&'/w=3/y?/Os2K/3W/+c/Sbo/wL{/`@0@'f\T0@4 'V0@'\T47////w/`08\X/ 7////Ew`))(-70OE0'030/ N 7/u?0cK0W0w(`@@(@)@@ 28\X/ FwL`@P@(@(@(@\T@)@)@)@'z\T@ B7w0gF0w+s01H1O#1w=+1w`@@'\T7@)@'\T!@(@)@@P99 B7199P@ B'R\XC1@ "'R\XO1$'R\X7[1w1x 22+2?X72C2s&O2s&[2g2s2SSs&2s&2w=2222+22w2`0 72_2 33w`P7#3C37$O3[3g3w`))(+7s3;w333/ J_i33w3wx`@/@*P@(@(@\T@@)@)@@PP@(@(@\T@+@)@ #) !PP73_cG4 +4O#w={74w`@@'\T9@)@'\T#@(@)@w@C499 BO499P@ B'R\X[4@ "'R\Xg4$'R\X7s4w8F#878C8O8[8g8s883888w8`0 78V888w `8 'j\X/ 78w99+9w`))()779wO9[9g9 <Sjs99799w8`@P@)@'\T@@\T 9/:{{:w`@@'\T$@)PP@@#dc@@'\T':A'N\T'\T9@@ /@@P999@@#i@'7:A'N\T@P999 @@'\T+@(@'\T@(@@)@)@@9 {:'\X@@'\TH@(@'\T;@(@0@)@'\T$@(@)@'\T@(@)@@)@ @ @@P99@ ####@@'\Ty@(@'\Tl@(@a@)@'\TT@(@)@'\TE@(@'\T8@(@-@)@'\T @(@)@)@@ )@@ @@99P99@@ # # ########@@'\TL@(@'\T?@(@4@)@'\T'@(@'\T@(@)@)@)@ @@@99P99@ @ #p#####:$'R\X7:wG<S<g<s<K<$<<<<C<<<<w<`07<V ==#=w `' '\X7/=ӕC=O=[=w`()(-7g='E=====wd`@(P@''N\T@8\T@'j'N\T@'\T / F=x={w`CFwD`@(?g@(P99P999 P99 <4ѥMɕMw=w`@@'\T$@)@'\T$H@(@)@'\T{@(@)@l@'\T@K@T'\T'\T@'\T2@'=A'N\T#i@@''N\TCF@@@P99P999 P999={Y@P99@@P99 sP999P@ b'R\X=@ B'R\X>@ "'R\X>$'R\X7>w/?3;?O?[?g?s????y?????w?`07?V? @@w`P7#@gC@O@[@w`()(+7g@v@@@ @@@+@w`'\X@:n@@w`@@'\To@)@'\TY@(@'\TC@(@)@'\T+@(@)@@)#i@?O@P999P99P9@ 99P@ r'R\X@@ R'R\XA@ 2'R\XA@ "'R\XA$'R\X7'A[BwgBs&sBBBSrBw=BBBBBBBB CCw#C`07/CVCCOC[Cw `': 'j\X7gC~CCw`()()7CvCCC3B CC COP:nDDDw=+Dw4`@@'\T$@)@'\Tk@(@'\TU@(@)@'\T>@(@)@)#i@8@'>'\T)@P99P99P9 Pq@9@ P99P9999 P9997D@ R'R\XCD@ 2'R\XOD@ "'R\X[D$'R\X/ N7sDwsEsEEEC:EEEEEEEE FF#Fw/F`07;FOOF[Fw(`@@'\T '\X7gFӒFw`)((-7FDFFF FFhF:FFw=GGw=G+G7Gw`@@'\Tg@)@'\TQ@(@)@'\T9@(@)@*#isc{Y@P99P99{Y@P99P99P99 bCG99P@ b'R\XOG@ B'R\X[G@ "'R\XgG$'R\X7sGw+HC7HKHWHcHw=oH${HHHHHHHHwH`07H+lHw`I7Iw`)((+7'Iv?IKIWIS cIoI?{IIIIw=Ig IIIppIIw`@@'\TC@)@'\T-@(@)@]4{Y@P99P99I9 BI99P@ B'R\X J@ "'R\XJ$'R\X7#JwcKoKKK=Kw=K$KKKKK+SbwK`47K2wL`4w`)(()7Lv3L?LKLX WLcLoL{L'LsLL#iLppLLLLdLw@`@@'\T$@)@'\Tq@(@)@'\TY@(@)@K@'\TCF@@@P999 cP999#i4{Y@P99P99P9CFL@L99P999 cP999P@ b'R\X M@ B'R\XM@ "'R\X#M$'R\X7/Mw_O_kOOOSbOw=OOOOOwO`0w`(((-7ODPPP 'P3P?PTKPWPcPoP{PpePCFPPdOPPPdPPw0`@@'\T$@)@'\T$@(@)@'\T$@@(@)@'\T$@(@)@%'\T'\Tq+ @ P99 @ @ @P99G]@P9999Ͼ@@ P999P999 @ P99@ @ P99G]@@P99999Z@ZϾ@ @P999P99CF@ @ @P999P999P999CF@ @ @P999P999P9999@P9999 P9999P@ 'R\XP@ b'R\XP@ B'R\XP@ "'R\X Q$'R\X7QwQQQQ$QQQRyRRw`(((+7'RWv?RKRWR cRoRs{R[R_RRRRRRR1R4OPRdRQ O S#S#Sw`@@'\T/@)@'\T@(@)#i@'/SA'N\T@ C99GS@ "'R\XSS$'R\X7_Sw?ToKT_TkTLwTw=TTTTw`((()7T7vTTTsX TTUTUU{c+UCF7UCUOPOUOP[UgUe4 OsU#Uw`U9w=Uw`@@'\TW@)@'\TA@(@)@'\T)@(@)'\T#i@@P99P9@@@pUA'N\T s99V@ B'R\XV@ "'R\X W$'R\X7WwWWWXX$CXw`))),7'XD?XKXWXcXoX{X?[XXXXCFX44CJX OXXw=wP`@'J'\T\T8'J'\T\T'\T'6'\T\TqCF@X99 @8@P99X99@P999 @P998@P99X99{Y@P99P999 @P998@P99 Y99CF@Y99P999 P99999'}O#Y/Yw`@@'\TG@)@'\T1@(@)@'\T@(@)q@@@p;YA'N\T b9CZ@ B'R\XOZ@ "'R\X[Z$'R\X7gZw'[3[G[S[Cw`)))*7_[ vw[[[?[[[?OP[OP[[[[e ?[\G]G]G]\e'}O\w`@'J'\T\T8'J'\T\T'\T'6'\T\TqCF@+\99 @8@P997\99@P999 @P998@P99C\99CF@O\99P999 P9999'}O[\g\w`@@'\TG@)@'\T1@(@)@'\T@(@)q@@@ps\A'N\T b9/]@ B'R\X;]@ "'R\XG]$'R\X7S]w^0^'^3^w`)))(7?^uW^c^o^N{^^/^scscOP^OP^c ?^e'}^G]G]^e'}O^w`@'J'\T\T8'J'\T\T'\T'6'\T\TqCF@^99 @8@P99^99@P999 P999'}O^ _w`@@'\TA@)@'\T,@(@)'\T#i@@P99P9o}@@p_A'N\T9 SP999_@ "'R\X_$'R\X7_w{`F```w`()),7`D```GG``a?ae'}aG]'}O+aw`@B@@'\T@(@)B@8p7aA'N\T9@ B9a@ "'R\X@@'\T @(@@@'\T @(b@7aw`@@'\T+@)@'\T@(@)F@a@'\T C99a@ "'R\Xa$'R\X7aw_bG kbbbw`())*7bubbbbbbQ?b'}wd`@'\T@@@'\T$w]g@P99 8P999w=7cG@7cw`@@'\T+@)@'\T@(@)G @c@'\T C99'c@ "'R\X3c$'R\X7?cweOBeeew`())(7 fu#f/f;f5GfSf_f kfG@7wfG@7fw`@@'\T$@)@'\T$h@(@)@'\T@@@@@'\T+@(@)@'\T@(@)@@@ B!P@ 'R\Xf@ r'R\Xf@ R'R\X@P@(@'\T@(@@@(@'\T(@'\T $@@ "P@'\T'\T@$t@@@P99P9#i@#)@ P99P99P9o}@f99@u@ P99P99P99@ 4@ @'\T@(@ @)b@9P9$ @'R\T$ f@'R\T$P9@ @ pfA'N\T'\T9P999 P9999g@ "'R\X+g$'R\X77gwghh#hw`)(),7/h_DGhSh_hkhwhOPhhhG@7chhw=w``@@'\T@(@)B@8phA'N\T9@ 29h$'R\XG@7hw`@@'\TG@)@'\T2@(@)'\T#i@#)@P99P99P9o}@@phA'N\T9 SP999i@ "'R\Xi$'R\X7iw{jrjjjw`)()*7jsujjjLjjkkkg+kw(`8@ P999Iw=G@7w`@+@@'\T@(@)B@8p7kA'N\T9@ B9_k@ "'R\X@@'\T@(@ @)b@ B9G@7kkw`@@'\TG@)@'\T1@(@)'\Tt@PZ@q@P9P9@'\T9wk999 TP9999k@ "'R\Xk$'R\X7kw3l?lSl_lw`)()(7klSulllxllllw(`8@ P999Iw=G@7fw=lw`@@'\T3@)@'\T@(@)Z@P99q@9 Cl999 m@ "'R\Xm$'R\X7#mwmWRmmmw`((),7m7DmnnK8{_n (T$+nw=w=Snw`@@'\T+@)@'\T@(@)Z@q@9 C_n999kn@ "'R\Xwn$'R\X7nwpkp3p?pw`(()*7Kp'ucpop{pp (T$w=:w=pw`@@'\T$@)@'\T$`@(@)@'\T$@(@'\Tk@(@)@)@'pA'N\T'\Tt@@''N\T@'j'N\T''N\To}@@9b@@''N\T9P9@ '\T9P999 P9999{q@ R'R\Xq@ B'R\Xq@ "'R\Xq$'R\X7qws+ sssw`(()(7susss?7sw=w`@<t'\X@@'\T&@(@)@'\T@(@)@'\T @(@)@@@'\T@(@)@'\T@(@)@ @@@ cP999;3tw=7?tKtw`@@'\T$P@)@'\T$@(@'\T$@(@)@'\T$D@(@)@)@&@@'\T@(@)@@P@'R\T  Wt@'R\T$P'\T'\T#i@@P99P9/@@ P99o}w@ @P999@7@ct99P99P9@ '\T9b@ P99P999P99P9@ot9P999 P999{t@ R'R\Xt@ 2'R\Xt@ "'R\Xt$'R\X7twuO!uuvw`))(,7vD+v7vCvbOv ,\4=L;[vw=7gvs;svvw=vw0`@@'\T$@)@''N\T@''N\T@''N\T'"'N\T'n\Tk@9v'\T'@@@@'vA'N\T99@''N\T9P999@'wA'N\T B9#w$'R\X7/wwxaxxxw`))(*7xtxxxy;yw=s;y+yw= 84@MQ͕ܥСLw4`CFOP@P99@ P999w `{Y (P997wd`@@'\T$`@)@'\T$@(@)@'\Tl@(@)'\T'\T#i@{Y@P99P99@@P99P99Zw]#)OP@P99P99@P999OP@P99CFOP@P99?@@ 99P999P9999 P9997y@ B'R\XCy@ "'R\XOy$'R\X7[ywzC%z{{w`))((7+{tC{O{[{1g{;s;s{O#4{{w`@@'\T$@)@'\T$p@(@)@'\T$@(@)@u@'\T*'\TO!@(@P9P@ )9@@ P9999P999 sP999T'\T@'\T@T'\T'^'\T\TCF{g@P99P999@ cP999P@ b'R\X{@ B'R\X{@ "'R\X{$'R\X7{w+}7}K}W}w`()(,7c}C{}}}CJ}s;O#4}B}J}}wd`@@'\T$`@)@'\T$@(@)@'\Tk@(@)@\@'\T*'\Ta@(@P9P@ )9@@ P9999P999 sP999T'\T@'\T@T'\T'^'\T\T}P@ b'R\X}@ B'R\X}@ "'R\X}$'R\X7 ~wW]cww`()(*7tO#TJgJwL`@@'\T$0@)@'\Tw@(@)@'\T_@(@)@P@'\T*'\TC%@(@P9P@ )9@@ P9999P999 sP999CFg@P99P999@ cP999P@ b'R\X@ B'R\X@ "'R\X+$'R\X77w3#w`()((7/otGS_߳kJaJwBJw`@#@@'\TO@)@'\T9@(@)@'\T!@(@)@{Y@P99@ sP999P@ r'R\X@ R'R\X@ 2'R\X˃@ "'R\X@@'\T1@)@'\T$@(@'\T@(@)@)CF@@@99 sP999###|@@'\TD@)@'\T7@(@'\T*@(B@@)@'\T@(@)@ ׃'\X####@@'\TY@)@'\TL@(@'\T?@(B@4@)@'\T'@(@)@@)@'\T@(@)@CF@ )9 ##x#l#`#T#H#<#07w+DŽӄw`)((,7߄CJTJ'3e?K ,`4ɕͥMw`@@'\T9@)@'\T$@(@)@q@ B9#i@(P9]@)@99 CP999W@ "'R\Xc$'R\X7ow˅ׅw`)((*7CtJOPe+7w=7w<`@@'\TCO$'R\X7[wsw`)(((7#tÇχۇe7w=g{w`@@'\Ts@)@'\T]@(@)'\T@''N\T@)'\T@ @ sP999#i@@P99P9/@@@@pSA'N\T@(P9P999 sP999#@ "'R\X/$'R\X7;wEw`(((,7CӉ߉3 H8MPIU QUH̕ЍMw`@$@@'\TJ@(@)@P@@ @'\T$q@9@@pCA'^Pq@98@'Z\TP999 RP99_@ 2'R\X7kwH`@@)@(@)@(@)'^Pq@9@@ e'Z\X7wwNJۊw`(((*7s #/ @8Е͕MLQIT QTIw`8P9w=7wD`@@)@(@)@(@)PPq@9@@ e'Z\X7;wWznjw`((((7ӌsw``@@'\T$X@)@'\T$@(@)@'\Ti@(@)@[@#i#k'@ @3P'\TP999CF@@ P999P99999@#9P9999P999 cP999P@ b'R\X@ B'R\X@ "'R\X$'R\X7wqw`))-7oC׏gCF L\́Е)'@+w`@@'\T$`@)@'\T$@(@'\T$@(@)@'\T$P@(@)@'\T}@(@)@)'\T'\T/@@@P999Z˲@P99P99#i@ 1@P99P99P9@CJ@ P997(@P999P999P9@ '\T99q@ 9P9999P99P9@@ 799 P999C@ r'R\XO@ R'R\X[@ 2'R\Xg@ "'R\Xs$'R\X7wO'3w`))+7?sWco{kk)'@};Òw=ϒw`@@'\T$@)@'\T$P@(@'\T@(@)@'\Th@(@)@)'\T'\T/@@P99Z˲@P99q@9#i@ 1@ P99P99P9@CJ@ P99P99P9@ '\T99P9999P99P9@@P99 P999ے@ R'R\X@ 2'R\X@ "'R\X$'R\X7 wOGS[o{w`)))7s7Ó)};ϓۓw=;w= wD`@@'\T @)c@ "9$'R\X7#wÔBϔw`()-7GC+7};CO;[gw=w=w`@@'\T7@)@'\T!@(@)'\T#i@@P99P9@P9@'\T S99s@ "'R\X$'R\X7wǖw`()+7Ӗ_sS};;'Bw=3w`@@'\To@)@'\TZ@(@)'\T#i@?9P9@#oA3@P9@'KA'N\T'\T9P99Oq@9oA@P99P999 TP9999@ "'R\X$'R\X7w;tG[gw`())7s?s };;Bw=w<`@@'\T$@(@'\To@(B@[@)@'\TE@(@)@7@)@'\T!@(@)@g@P99@ P999P@ 'R\XǙ@ r'R\XP@ b'R\Xә@ B'R\XB@ 2'R\Xߙ@ "'R\X$'R\X7w=w`@@'\T5@)@'\T@(@)@g@P99 BP99P@ B'R\X@ "'R\X$'R\X7wÚ#iϚw`)(-7C+o7ceCO[g7w={sw`@@'\T;@)@'\T%@(@)@OP{Y@P99P99 BP99P@ B'R\X@ "'R\X$'R\X7w3˜w`)(+7לsg+7e{s-Cw`@@'\Tk@)@'\TU@(@)@'\T>@(@)@'\T  !O'\X/@@'j'N\T9@9P9@@''N\T9 cP999@ B'R\X@ "'R\X$'R\X7w˞/מw`)()7r-+Bg7s- L$$QHQMЁ7w=gCOw `@@'\Tm@)@'\TX@(@)@'\T t@@ C99t"@@P@(@))@['R\T')@'j'\T@99@''\T B9@ "'R\X$'R\X7ǟ;O[w`((-7gBNB7w=g (PL ,X$ɕȽ7w=wt`@@'\T$@)@'\T$(@(@)@'ǡA'N\T@'J'N\T@'V'N\T@'_A'N\T@'A'n\T+#i@'ӢA'N\T@@@'A'N\T'\T 99w@@''N\Tq@9 P999@ "'R\X$'R\Xw+/7KWw`((+7cr{-7w=7w=w`@('\T@@'\T)@(@'\T@(@)@)@@@99 RP99@ "'R\X$'R\Xw0`@T'\T '\XwD`@'\T@$@@ @(_  !w`ãP99w$`CF@@ P999ہw=ϣ7ۣw '3w`(()7?rWcoN{#w=gہw=w,`@@'\T}@)@'\Th@(@)@'b\T@@'f\T''\T@@@'\T$ @''\T  !'\X g'P99g'nP99P99@9@ S99ۥ@ "'R\X$'R\X7w!+7w`)),7CB[gs# <4ȵɅɁЁL\w=w `@@'\Tw@)@'\Ta@(@'\TK@(@)@)@@'\T@('\TPP@@( g'VP99P9@@)@@(@)8@@@9@99q@9 P999@ 2'R\X@ "'R\X$'R\X/ R7o}ǧۧw`))*7{r #//\w=+K;w=G/ VwSZ_sw`))(7[rǨ+KӨw=7ߨwǫUӫw`(),7B#/;+Kw`@#H@@'\TG@)@'\T1@(@'\T@(@)@)Z@q@9o}@9 tP9999G@ B'R\XS@ 2'R\X_@ "'R\X@@'\Tv@)@'\Ti@(@'\T\@(@)@'\TM@(;@B@)@'\T5@(@)@,@)'\T#i@@ P99P9Z@@@P99o}@9P9999 P999 #######@@'\T4@)@'\T'@(@'\T@(@)@@)B@o}@9 sP999####@@'\T)@)@'\T@(@'\T@(@)@ @)@ A@@'\T @)@7kwBw`()*7/r3?K-WKw=c7owx`@u@@'\Ta@)@'\TK@(@)@'\T3@(@)@'\T@(@)@ @@@ P9999P@ 'R\X{@ r'R\X@ R'R\X@ 2'R\X@ "'R\X@@'\T2@)@'\T%@(@)@'\T@(@)@ @@ s999#X#L#@#47w3i?S_w`()(7kr3OKw=7#q.˯ׯw|`@@'\T%@)@@) (Z@(U@)9 #999$'R\X7wCF?w`)(,7ðB۰Kw=#q. #7w`@@'\T9@)@/@) ('\T#i@@(P99P9Z@@B@)9P9999 3P999;$'R\X7G{Yw`)(*7qϲ۲OO#q.g g7wD`@@'\T$ @)@'\Ts@(@)@'\T[@(@)@L@'\T@0@T'\T'\T@'\T@(P99@P9@)'\T r9#{Y@P99@ sP999P@ b'R\X/@ B'R\X;@ "'R\XG$'R\XwS_sw`)((7qwdz#qӳ#[n߳7w w`((,7'WB?KWcOP#[now`@@'\Tc@)@'\TM@(@)@?@'\T "@ BP99@T'\T'\T@'\T "@ RP99@(P99@ R)9P@ B'R\X{@ "'R\X$'R\X7wgsw`((*7q÷Ϸ۷#[nw`@@'\T$@@)@'\T$@(@)@'\T$@(@)@'\T$(@(@)@'\Ts@(@)@'\T[@(@)@Lq@ s>3P@P999P@P999999P999O@  @ P99999 P99999P@ 'R\X#@ 'R\X/@ 'R\X;@ b'R\XG@ B'R\XS@ "'R\X_$'R\X7kwC;#7Cw`(((7Owqco{VnCFs&CF[#V/Gg;>GSw`@@'\T$@)@'\T$@(@)@'\T$8@(@)@'\Tw@(@)@i'\T'\T#i@P@ P999P99@P@P999P99P99@P9s>3@@999P999O@  @ P9P99999 P999999P@ 'R\Xú@ b'R\XϺ@ B'R\Xۺ@ "'R\X$'R\X7wuMǻw`)-7ӻ/Bg c<><#VúyϺۺw`@@'\TE@)@'\T/@(@)C;@#i@/H@/99P999P99P9@99 CP999;@ "'R\XG$'R\X7SR/COw`)+7[Kqo{ogecw=;w`@@'\TU@)@'\T?@(@)#i@9P9CFý@P99Ͻ99CF۽@P9999@9999 BP99@ "'R\X$'R\Xwc +w`))77+qKWco7{7{)<)w=7w3w`(-7?BS_kWPw<{ wh`@@'\T$h@)@'\T$@(@'\T$@(@)@)'\T@#@@'\TY@(@)@'\TA@(@)@3C;@@c@ H@@ 9P999P999P99@ 99P99 P999P@ 'R\X@ 'R\X@ 'R\X@@'\T7@(@)@.C;@c@ H@ @ 9P999P999P99@ 99 P999#L#@@@*C;@c@H@ #\99P999P99@99 P999@ 2'R\X@ "'R\X$'R\X7w.w`(+7o/;GJS_#+xӋw=w$`@@'\Ty@)@'\Tc@(@'\TM@(@)@'\T5@(@)@'@)GSk@@P999w99P99P9@ 99P@ r'R\X@ R'R\X@ 2'R\X@ "'R\X$'R\X7ww`()7O*Bk7 w=w`@@'\T$X@)@'\T$@(@)@'\T$@(@)'\T'\T'\T'\T@'A'N\TC;@#i@@ P99P9t@ @ @kH@'j'N\T9@H@GSH@@@'\TP9999#99P99P9@99P999P999P999@@ 9P9999P9999P999 P999/@ B'R\X;@ "'R\XG$'R\X7Sw`),7Kp_kww%Kq?Sw`'\XBw=G/;w`@@'\Tc@)@'\TM@(@)'\TC;@GSH@,H@ 99P999999#99P99P9@99 SP999@ "'R\X$'R\Xw`)*7p7Z8Gw=w`(,7A#{/U;w`(*7G`[{gw`((7s71,O+ek ow;K#'^3?KWcOoo {NsuM&OO*/k# #'#/;KG7S__k[hwn#)Vk@w]˲qw+7CO[gsrWߴϩ){W G08{X'3T?3 /S7w3G/k#g####g# 3Gs*+,//32K233$g4{467'737G778{88>> GBC#CkDD_s!;"NOPP+P?P+S{SSSSSS;TTTTUU07V\^'^C;^_^^c`w7 g3`bCfK6?iGk'7rr)ku+vCvGvw+yz{NSג';Ocw)Sg`KLiwGo_C cEE3EExF[WPkPPPPp_2ggghhLl,KAcw $(@DX\`dlptx  $(,048<@DHLPTX\`dhlptx|7Ww  $(,048<@DHLP \hlptx|3o/CWk 27cϖO,?Scd'IS+c%[oGKPo{gwP;H#chC_K_ZC?Sgdd3Ocw'Ko?FKO  #W!k!!""$#$7$K$_$s$$$$%Bwc&w&*g*u+#5CLBB/gH _P7QWQ'3.{;WoXZ#[\+\/^C^c7e7fKfkfwffffjjjjm 3nGn[non gYC;8g{POg+77O]xo}ӕ+ kWOFk@Zh߫Ӣ+0~zm/|@Ǵ{GoBwg;Kc{CWk G?;,[vzO1}υ[`So 7{C[;"?&'w+))EG+~w/+4+?'?+@EBGKK?zRc_e]]"+l>\uuuqu +y[yW>#CI"oho#߹+' tw?48[<g<{c(J< otk@@@@Q[  @@@[B#tA_wA3AGA[AoAAAAAaAB/BWBBBBBCGCoCCCCD7D_DDDDD'EOEwEEE6EFF+F?FSFgFoo{F?FFFF3PAF2'0τ#FOG?/GS_/CKCGcGGG[o_1GG>ZS6HO #H+H3H# $J;H[HK&{H{HHH߈SDžHH#I7IKI_IIIIII2I%m#KJ3JGJ[JoJJ CJgJJJKK/KCKZWKkKddKKKK#KQKLL_JsJ/LCLWLkLLLLLLLL MS?3IM;Clp3MS?okGMk_MuGgsMMMMMMMNN/NCNWNkNNNNNNN .N;OL/7!+O?OS\SOgO{OOO@OOOP PPP#P+P?P[+LSPgP{PPPǛPPPQQ+Q?Q_SQsQQQQQR'R;R_RSsR{RRRRRRSS+S?SSSgSSSSJkTTTTTTTT UU3UGU[UoUUUUUUUUV#V7VKV_VsVt{koU/BkUVVVVVVVW'W;WOVOWcWwWW#sWWWWWX#X7XKX_XsXXXXXXXX Y#Y3YGY[YoY_Z327 K *_K2ZZZZZkkZ['[;[J7  CGGcGO[c[w[[[[Keh_e327 CGGcG[[[\\+y+\K n'S$[#o#####$$%%/%% &&3&G&7H{II?PXY\ c03gDd_ /{z&7?W?`h Kw%hVoSY:5S-?G~s[[ a+w])Zvg0[ eϭKC'zQOPke+1wR_/3k/<{_?7#b7{;\:Ϫk{{4k+J81CJ߳g7S o-N-N/-3OOO[XZkXOtt|wSk/I +RϬW~?OowWGgK777߷7۵'g7Qg7z'c3W-_Ͼj?[7W#߇wucoAgC?w\GqVgog &WPJ*C7Aco7{`w77O`+ek ow;K#^Oo NsuM&OO*/k#GCG6rXW1#W2];! W#9o'OeS|3{K*f #K7_[hn#)Vk@˲qwrWߴϩ){W G08{XK/;WHk"S{^s|{T ˍk9( 3Gs#Su!+[c[,(G/OLWuo~Ak&k;lEs/oSoa7__W$sSwKq<[/Gw71K'{ bkJm{g';S_s} it`OH3";   s_3K5, O[O'wQ~/s+Ys"׺TGӼrGbBv'Ft0?L%SK?#mD{Qi#D+OG/kWw3;y_f{ 9kKkM\g_ c3nïz W^{,/^+/P'-,g s_{oqk?wV? /r=CPv+>x/ ;.ig;A#/[KsKI;(OHZk{ke  sG߶;oOWwP/{FK gDÉgI;mR4cO}CMˏ7.cRuC; {YCFiBUZo}! //3#itBGSOqWzE_J'+3]C%aO!+ kWRrOBG F0o_Css&3Fx7UMHo3?lsg'HWCT6[&gcl^'/kOTs+mg3GRCp?KGSQ;H8/b i7+VY7<G$ׂ_/wSOcSQ*[wQUwJ KS 7>##A?א[)Oc:e7U??pwq3Oˊ I;osJ<#  d} {sU.@moxu[m'cn>3ZCUgN<sy/G ?fC90)73_?OV gh2/3ov)1Kt7C(}7]'27*  P3ns;'6 ;g$a oo 1_s_W/zcӎTOc gpw@OPf>?_ SWK|s5lA+= Ӏ@EkNgy/h[w_1,^GmrwzO kI+4g \jcWk$ӻD~_>E#+gt7'}?'/7?GW_#@o(!+S7 S.JJ_~ w'c?C_h3oo ~'kS'5  GSgjB#6 "b2dJ.nh/ND,||Wc##"\;jcZKv5#5C5/aSawa[co0C#8_.oK+'sHK7Wr3ۆv%3{<CCXRoaklisp-1.3.7/src/000077500000000000000000000000001332762442600137645ustar00rootroot00000000000000oaklisp-1.3.7/src/Makefile.am000066400000000000000000000014471332762442600160260ustar00rootroot00000000000000# This file is part of Oaklisp. # # 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. # # The GNU GPL is available at http://www.gnu.org/licenses/gpl.html # or from the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA SUBDIRS = emulator world EXTRA_DIST = misc/README misc/testing-tests.oak misc/uniq.oak \ misc/unit-testing.oak oaklisp-1.3.7/src/emulator/000077500000000000000000000000001332762442600156145ustar00rootroot00000000000000oaklisp-1.3.7/src/emulator/.gitignore000066400000000000000000000000331332762442600176000ustar00rootroot00000000000000*.o /instr-data.c /oaklisp oaklisp-1.3.7/src/emulator/Makefile.am000066400000000000000000000036431332762442600176560ustar00rootroot00000000000000# This file is part of Oaklisp. # # 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. # # The GNU GPL is available at http://www.gnu.org/licenses/gpl.html # or from the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA bin_PROGRAMS = oaklisp oaklisp_SOURCES = cmdline.c data.c gc.c instr.c loop.c oaklisp.c \ signals.c stacks.c threads.c timers.c weak.c worldio.c xmalloc.c \ cmdline.h config.h data.h gc.h instr.h loop.h signals.h stacks.h \ stacks-loop.h threads.h timers.h weak.h worldio.h xmalloc.h if NDEBUG else BUILT_SOURCES = instr-data.c endif oaklisp_CPPFLAGS = $(AM_CPPFLAGS) oaklisp_CPPFLAGS += -DDEFAULT_WORLD=\"$(pkglibdir)/oakworld.bin\" if ENABLE_THREADS oaklisp_CPPFLAGS += -DTHREADS endif if NDEBUG oaklisp_CPPFLAGS += -DFAST endif # Things to consider as configure.ac options: # oaklisp_CPPFLAGS += -DMAX_NEW_SPACE_SIZE=16000000 # bootstrapping problem: to compile the emulator we need a working # oaklisp to generate instr-data.c. This is solved by trying to # generate it automatically if necessary, but if that fails instead # using a prebuilt copy. Note that when -DFAST is set instr-data.c is # not used and this is not an issue. OAK=oaklisp instr-data.c: instruction-table.oak $(OAK) $(OAKFLAGS) -- \ --locale compiler-locale \ --load "$<" \ --eval '(dump-instruction-table "$@")' \ --exit \ || cp ../prebuilt/src/emulator/instr-data.c $@ -$(INDENT) $@ EXTRA_DIST = instruction-table.oak instr-data.c CLEANFILES = instr-data.c oaklisp-1.3.7/src/emulator/cmdline.c000066400000000000000000000175011332762442600173770ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #define _REENTRANT #include #include #include #include #include #include "config.h" #include "data.h" #include "cmdline.h" #include "xmalloc.h" #include "stacks.h" enum { FLAG_ARG = 0, HELP_ARG, VERSION_ARG, WORLD_ARG, DUMP_ARG, DUMP_BASE_ARG, PREDUMP_GC_ARG, HEAP_ARG, VALSIZ_ARG, CXTSIZ_ARG, MAX_SEG_ARG, VERBOSE_GC_ARG, }; static void version(char *prog) { fprintf(stdout, "%s\n", PACKAGE_STRING); } static void usage(char *prog) { version(prog); fprintf(stdout, "\n" "Usage: %s emulator-options -- oaklisp-options\n" "\n" " emulator options:\n" "\n" "\t--help print this message and terminate\n" "\t--version print version number and terminate\n" "\n" "\t--world file world to load, default=\n" "\t %s\n" "\t--dump file dump world to file upon exit\n" "\t--d file synonym for --dump\n" "\t--dump-base b 10 or 16=ascii, 2=binary; default=2\n" "\t--predump-gc b 0=no, 1=yes; default=1\n" "\n" "\t--size-heap n n is in kilo-refs, default %d\n" "\t--size-val-stk n value stack buffer, n is in refs\n" "\t--size-cxt-stk n context stack buffer, n is in refs\n" "\t--size-seg-max n maximum flushed segment len, n is in refs\n" "\n" "\t--trace-gc v 0=quiet, 3=very detailed; default=0\n" "\t--verbose-gc v synonym for --trace-gc\n" "\t--trace-traps\n" "\t--batch disable trapping of SIGINT\n" #ifndef FAST "\t--trace-segs trace stack segment writes/reads\n" "\t--trace-valcon print entire value stack at each instr\n" "\t--trace-cxtcon print entire context stack at each instr\n" "\t--trace-stks print the size of the stacks at each instr\n" "\t--trace-instructions trace each bytecode executed\n" "\t--trace-methods trace each method lookup\n" #ifdef OP_TYPE_METH_CACHE "\t--trace-mcache trace method cache\n" #endif #endif "\t--trace-files trace filesystem operations\n" "\n" " oaklisp options:\n" "\n" "\tTry \"man oaklisp\" or run \"%s -- --help\"\n" "\n", /* "\type (MAP CAR COMMANDLINE-OPTIONS) to a running oaklisp\n" */ prog, DEFAULT_WORLD, DEFAULT_NEWSPACE, prog); } /* These store the command line arguments not eaten by the emulator, which the running world can access. */ static int program_argc; static char **program_argv; int program_arg_char(int arg_index, int char_index) { char *a; if (arg_index >= program_argc) return -1; a = program_argv[arg_index]; if (char_index > strlen(a)) return -1; return a[char_index]; } void parse_cmd_line(int argc, char **argv) { int retval, option_index = 0; #ifdef THREADS /* This is so value_stack.size and value_stack.filltarget can be set. Something is wrong because these should apply to all threads even the first, so they shouldn't need to know anything about threads ... ? */ int my_index; int *my_index_p; my_index_p = pthread_getspecific (index_key); my_index = *my_index_p; #endif { char *w = getenv("OAKWORLD"); if (w) world_file_name = w; } /* parse command line arguments */ while (1) { static struct option long_options[] = { {"help", no_argument, 0, HELP_ARG}, {"version", no_argument, 0, VERSION_ARG}, {"world", required_argument, 0, WORLD_ARG}, {"dump", required_argument, 0, DUMP_ARG}, {"d", required_argument, 0, DUMP_ARG}, {"dump-base", required_argument, 0, DUMP_BASE_ARG}, {"predump-gc", required_argument, 0, PREDUMP_GC_ARG}, {"size-heap", required_argument, 0, HEAP_ARG}, {"size-val-stk", required_argument, 0, VALSIZ_ARG}, {"size-cxt-stk", required_argument, 0, CXTSIZ_ARG}, {"size-seg-max", required_argument, 0, MAX_SEG_ARG}, {"trace-gc", required_argument, 0, VERBOSE_GC_ARG}, {"trace-traps", no_argument, &trace_traps, true}, {"batch", no_argument, &batch_mode, true}, #ifndef FAST {"trace-segs", no_argument, &trace_segs, true}, {"trace-valcon", no_argument, &trace_valcon, true}, {"trace-cxtcon", no_argument, &trace_cxtcon, true}, {"trace-stks", no_argument, &trace_stks, true}, {"trace-instructions", no_argument, &trace_insts, true}, {"trace-methods", no_argument, &trace_meth, true}, #ifdef OP_TYPE_METH_CACHE {"trace-mcache", no_argument, &trace_mcache, true}, #endif #endif {"trace-files", no_argument, &trace_files, true}, {0, 0, 0, 0}}; retval = getopt_long_only(argc, argv, "", long_options, &option_index); if (retval == EOF) break; switch (retval) { default: fprintf(stderr, "error: command line syntax\n"); case '?': /* getopt_long_only() already printed an error message. */ usage(argv[0]); exit(EXIT_FAILURE); break; case FLAG_ARG: /* variable set by getopt() itself */ break; case WORLD_ARG: world_file_name = optarg; break; case DUMP_ARG: dump_file_name = optarg; dump_flag = true; break; case DUMP_BASE_ARG: dump_flag = true; dump_base = atoi(optarg); if (dump_base != 2 && dump_base != 10 && dump_base != 16) { fprintf(stderr, "Error (command line parser): invalid" " dump base %s.\n", optarg); exit(EXIT_FAILURE); } break; case PREDUMP_GC_ARG: gc_before_dump = atoi(optarg); break; case HEAP_ARG: original_newspace_size = 1024 * atol(optarg); break; case VALSIZ_ARG: value_stack.size = atoi(optarg); value_stack.filltarget = value_stack.size/2; break; case CXTSIZ_ARG: context_stack.size = atoi(optarg); context_stack.filltarget = context_stack.size/2; break; case MAX_SEG_ARG: max_segment_size = atoi(optarg); break; case VERBOSE_GC_ARG: trace_gc = atoi(optarg); break; case HELP_ARG: usage(argv[0]); exit(EXIT_SUCCESS); break; case VERSION_ARG: version(argv[0]); exit(EXIT_SUCCESS); break; } } /* Check to make sure that the stacks will work. We need the following guarantee: we must be able to pull in segments to allow a (LOAD-STK 255) instruction. This means that the stack buffer must be at least 255. Furthermore, we must be able to satisfy this by unflushing segments. The unflushing routine only pulls in integral segments, so we must be able to unflush a maximal segment if there are only 254 elements in the buffer. Therefore we must have: value_stack.size >= 254 + max_segment_size */ if (value_stack.size < 254 + max_segment_size) { value_stack.size = 254 + max_segment_size; fprintf(stderr, "warning: using value stack of size %d.\n", value_stack.size); } /* put remainder of command line in variables accessed by Oaklisp-level argline instructions */ program_argc = argc - optind; program_argv = argv + optind; return; } oaklisp-1.3.7/src/emulator/cmdline.h000066400000000000000000000023401332762442600173770ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _CMDLINE_H_INCLUDED #define _CMDLINE_H_INCLUDED extern void parse_cmd_line(int argc, char **argv); extern int program_arg_char(int arg_index, int char_index); #endif oaklisp-1.3.7/src/emulator/config.h000066400000000000000000000036671332762442600172460ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ /* * Some configuration parameters explained: * ======================================== * * ASHR2 * Must do arithmetic right shift on its argument. * Use ((x)/4) if your compiler generates logical shifts for * ((x)>>2) * * * THREADS * If defined, heavyweight OS pthreads are enabled. * */ #ifndef _CONFIG_H_INCLUDED #define _CONFIG_H_INCLUDED #ifdef HAVE_CONFIG_H #include "../../config.h" #endif #define ASHR2(x) ((x)>>2) #ifdef THREADS #ifndef MAX_THREAD_COUNT #define MAX_THREAD_COUNT 200 #endif #endif /* Speed parameters */ /* Turn off most runtime debugging features that slow down the system. */ // #define FAST /* Toggle specific optimizations. */ /* Activate operation-method association list move-to-front. */ #ifndef THREADS #define OP_METH_ALIST_MTF #endif /* Activate operation-type method cache. */ #ifndef THREADS #define OP_TYPE_METH_CACHE #endif #endif oaklisp-1.3.7/src/emulator/data.c000066400000000000000000000050341332762442600166730ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ /* This file contains many tunable parameters */ #define _REENTRANT #include "config.h" #include "data.h" #include "stacks.h" /* spaces */ space_t new_space, old_space, spatic; ref_t *free_point = 0; #ifndef THREADS /* stacks, including default buffer size & fill target */ oakstack value_stack = {1024, 1024/2}; oakstack context_stack = {512, 512/2}; #endif /* Virtual Machine registers */ #ifdef THREADS ref_t e_t, e_nil, e_fixnum_type, e_loc_type, e_cons_type, e_env_type, *e_subtype_table, e_object_type, e_segment_type, e_boot_code, *e_arged_tag_trap_table, *e_argless_tag_trap_table, e_uninitialized, e_method_type, e_operation_type = 0; size_t e_next_newspace_size; size_t original_newspace_size = 128 * 1024; #else ref_t *e_bp, *e_env, e_t, e_nil, e_fixnum_type, e_loc_type, e_cons_type, e_env_type, *e_subtype_table, e_object_type, e_segment_type, e_boot_code, e_code_segment, *e_arged_tag_trap_table, *e_argless_tag_trap_table, e_current_method, e_uninitialized, e_method_type, e_operation_type, e_process = 0; register_set_t *reg_set; size_t e_next_newspace_size; size_t original_newspace_size = DEFAULT_NEWSPACE * 1024; instr_t *e_pc; unsigned e_nargs = 0; #endif /* This should generally be defined in the Makefile */ #ifndef DEFAULT_WORLD #define DEFAULT_WORLD "/usr/lib/oaklisp/oakworld.bin" #endif char *world_file_name = DEFAULT_WORLD; char *dump_file_name = "oakworld-dump.bin"; int dump_base = 2; /* 2=binary, other=ascii */ bool dump_flag = false; int trace_gc = 0; oaklisp-1.3.7/src/emulator/data.h000066400000000000000000000240021332762442600166740ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _DATA_H_INCLUDED #define _DATA_H_INCLUDED #include #include #include #include #include #include "config.h" #include "threads.h" #ifndef bool typedef int bool; #endif #ifndef false #define false 0 #define true 1 #endif /* reference type */ typedef size_t ref_t; /* instruction type */ typedef u_int16_t instr_t; /* space type */ typedef struct { ref_t *start; ref_t *end; size_t size; /* in size reference_t */ } space_t; extern space_t new_space, old_space, spatic; extern ref_t *free_point; /* Size of first newspace, in K */ #define DEFAULT_NEWSPACE 128 /* The following is for stack debugging */ #define PATTERN 0x0a0b0c0d #define CONTEXT_FRAME_SIZE 3 /* not a tunable parameter */ /* Garbage collection */ #define GC_EXAMINE_BUFFER_SIZE 16 #ifdef THREADS extern ref_t gc_examine_buffer_array[MAX_THREAD_COUNT][GC_EXAMINE_BUFFER_SIZE]; extern ref_t *gc_examine_ptr_array[MAX_THREAD_COUNT]; #define gc_examine_buffer gc_examine_buffer_array[my_index] #define gc_examine_ptr gc_examine_ptr_array[my_index] #else extern ref_t gc_examine_buffer[GC_EXAMINE_BUFFER_SIZE]; extern ref_t *gc_examine_ptr; #endif /* Virtual Machine registers */ typedef struct { ref_t *e_bp; ref_t *e_env; ref_t e_current_method; ref_t e_code_segment; instr_t *e_pc; unsigned e_nargs; ref_t e_process; } register_set_t; #ifdef THREADS extern ref_t e_t, e_nil, e_fixnum_type, e_loc_type, e_cons_type, e_env_type, *e_subtype_table, e_object_type, e_segment_type, e_boot_code, *e_arged_tag_trap_table, *e_argless_tag_trap_table, e_uninitialized, e_method_type, e_operation_type; #else extern ref_t *e_bp, *e_env, e_t, e_nil, e_fixnum_type, e_loc_type, e_cons_type, e_env_type, *e_subtype_table, e_object_type, e_segment_type, e_boot_code, e_code_segment, *e_arged_tag_trap_table, *e_argless_tag_trap_table, e_current_method, e_uninitialized, e_method_type, e_operation_type, e_process; extern instr_t *e_pc; extern unsigned e_nargs; #endif #define e_false e_nil extern size_t e_next_newspace_size, original_newspace_size; extern char *world_file_name; extern char *dump_file_name; extern int dump_base; extern bool dump_flag; extern bool gc_before_dump; extern int trace_gc; extern bool trace_traps; extern bool batch_mode; #ifndef FAST extern bool trace_insts; extern bool trace_segs; extern bool trace_valcon; extern bool trace_cxtcon; extern bool trace_stks; extern bool trace_meth; #ifdef OP_TYPE_METH_CACHE extern bool trace_mcache; #endif #endif extern bool trace_files; /* miscellanous */ #ifndef ISATTY #define ISATTY(stream) (isatty(fileno(stream))) #endif #define READ_MODE "r" #define WRITE_MODE "w" #define APPEND_MODE "a" #define READ_BINARY_MODE "rb" #define WRITE_BINARY_MODE "wb" /* Tag Scheme */ #define SIGN_16BIT_ARG(x) ((int16_t)(x)) #define TAGSIZE 2 #define TAG_MASK 3 #define TAG_MASKL 3l #define SUBTAG_MASK 0xff #define SUBTAG_MASKL 0xffl #define INT_TAG 0 #define IMM_TAG 1 #define LOC_TAG 2 #define PTR_TAG 3 #define PTR_MASK 2 #define CHAR_SUBTAG IMM_TAG #define TAG_IS(X,TAG) (((X)&TAG_MASK)==(TAG)) #define SUBTAG_IS(X,SUBTAG) (((X)&SUBTAG_MASK)==(SUBTAG)) /* #define OR_TAG */ #define REF_TO_INT(r) ((int32_t)r>>TAGSIZE) #define REF_TO_PTR(r) ((ref_t*)((r)-PTR_TAG)) /* #define REF_TO_PTR(r) ((ref_t*)((r)&~3ul)) */ /* This maybe used in slot calculations, where tag corrections can be done by the address calculation unit */ #define REF_TO_PTR_ADDR(r) ((ref_t*)((r) - PTR_TAG)) #define LOC_TO_PTR(r) ((ref_t*)((r) - LOC_TAG)) #define ANY_TO_PTR(r) ((ref_t*)((r) & ~TAG_MASKL)) #ifndef OR_TAG #define PTR_TO_LOC(p) ((ref_t)((ref_t)(p) + LOC_TAG)) #define PTR_TO_REF(p) ((ref_t)((ref_t)(p) + PTR_TAG)) #else #define PTR_TO_LOC(p) ((ref_t)((ref_t)(p) | LOC_TAG)) #define PTR_TO_REF(p) ((ref_t)((ref_t)(p) | PTR_TAG)) #endif /* Put q's tag onto p */ #define PTR_TO_TAGGED(p,q) ((ref_t)((ref_t)(p) + ((q) & TAG_MASK))) #define REF_TO_CHAR(r) ((char)((r)>>8)) #ifndef OR_TAG #define CHAR_TO_REF(c) (((ref_t)(c)<<8) + CHAR_SUBTAG) #else #define CHAR_TO_REF(c) (((ref_t)(c)<<8) | IMM_TAG) #endif #ifndef OR_TAG #define INT_TO_REF(i) ((ref_t)(((int32_t)(i)<> (__WORDSIZE-(TAGSIZE+1)); \ if ((highcrap != 0x0) && (highcrap != 0x7)) {code;} } */ /* The following is for 32-bit ref_t only */ #define OVERFLOWN_INT(i,code) \ { u_int32_t highcrap = (i) & 0xe0000000; \ if ((highcrap) && (highcrap != 0xe0000000)) {code;}} /* * Offsets for wired types. Offset includes type and * optional length fields when present. */ /* CONS-PAIR: */ #define CONS_PAIR_CAR_OFF 1 #define CONS_PAIR_CDR_OFF 2 /* TYPE: */ #define TYPE_LEN_OFF 1 #define TYPE_VAR_LEN_P_OFF 2 #define TYPE_SUPER_LIST_OFF 3 #define TYPE_IVAR_LIST_OFF 4 #define TYPE_IVAR_COUNT_OFF 5 #define TYPE_TYPE_BP_ALIST_OFF 6 #define TYPE_OP_METHOD_ALIST_OFF 7 #define TYPE_WIRED_P_OFF 8 /* METHOD: */ #define METHOD_CODE_OFF 1 #define METHOD_ENV_OFF 2 /* CODE-VECTOR: */ #define CODE_IVAR_MAP_OFF 2 #define CODE_CODE_START_OFF 3 /* OPERATION: */ #define OPERATION_LAMBDA_OFF 1 #define OPERATION_CACHE_TYPE_OFF 2 #define OPERATION_CACHE_METH_OFF 3 #define OPERATION_CACHE_TYPE_OFF_OFF 4 #define OPERATION_LENGTH 5 /* ESCAPE-OBJECT */ #define ESCAPE_OBJECT_VAL_OFF 1 #define ESCAPE_OBJECT_CXT_OFF 2 /* Continuation Objects */ #define CONTINUATION_VAL_SEGS 1 #define CONTINUATION_VAL_OFF 2 #define CONTINUATION_CXT_SEGS 3 #define CONTINUATION_CXT_OFF 4 #define SPACE_PTR(s,p) ((s).start<=(p) && (p)<(s).end) #define NEW_PTR(r) SPACE_PTR(new_space,(r)) #define SPATIC_PTR(r) SPACE_PTR(spatic,(r)) #define OLD_PTR(r) (SPACE_PTR(old_space,(r))||(full_gc&&SPACE_PTR(spatic,(r)))) /* Leaving r unsigned lets us checks for negative and too big in one shot: */ #define wp_to_ref(r) \ ( (u_int32_t)REF_TO_INT(r) >= (u_int32_t) wp_index ? \ e_nil : wp_table[1+(u_int32_t)REF_TO_INT((r))] ) /* This is used to allocate some storage. It calls gc when necessary. */ #define ALLOCATE(p, words, reason) \ ALLOCATE_PROT(p, words, reason,; ,; ) /* This is used to allocate some storage */ #define ALLOCATE_SS(p, words, reason) \ ALLOCATE_PROT(p, words, reason, \ { value_stack.sp = local_value_sp; \ context_stack.sp = local_context_sp; \ e_pc = local_e_pc; }, \ { local_e_pc = e_pc; \ local_context_sp = context_stack.sp; \ local_value_sp = value_stack.sp; }) /* This allocates some storage, assuming that v must be protected from gc. */ #define ALLOCATE1(p, words, reason, v) \ ALLOCATE_PROT(p, words, reason, \ { GC_MEMORY(v); \ value_stack.sp = local_value_sp; \ context_stack.sp = local_context_sp; \ e_pc = local_e_pc; }, \ { local_e_pc = e_pc; \ local_context_sp = context_stack.sp; \ local_value_sp = value_stack.sp; \ GC_RECALL(v); }) #define ALLOCATE_PROT(p, words, reason, before, after) \ { \ THREADY( \ while (pthread_mutex_trylock(&alloc_lock) != 0) { \ if (gc_pending) { \ before; wait_for_gc(); after; \ } \ } \ ) \ if (free_point + (words) >= new_space.end) \ { \ before; \ gc(false, false, (reason), (words)); \ after; \ } \ (p) = free_point; \ free_point += (words); \ THREADY( pthread_mutex_unlock (&alloc_lock); ) \ } /* These get slots out of Oaklisp objects, and may be used as lvalues. */ #define SLOT(p,s) (*((p)+(s))) #define REF_SLOT(r,s) SLOT(REF_TO_PTR(r),s) /* This is for the warmup code */ #define CODE_SEG_FIRST_INSTR(seg) \ ( (instr_t *)(REF_TO_PTR((seg)) + CODE_CODE_START_OFF) ) #ifdef THREADS #define reg_set register_array[my_index] #define value_stack (*value_stack_array[my_index]) #define context_stack (*cntxt_stack_array[my_index]) #define value_stack_address value_stack_array[my_index] #define context_stack_address cntxt_stack_array[my_index] #define e_code_segment ( (reg_set->e_code_segment) ) #define e_current_method ( (reg_set->e_current_method) ) #define e_pc ( (reg_set->e_pc) ) #define e_bp ( (reg_set->e_bp) ) #define e_env ( (reg_set->e_env) ) #define e_nargs ( (reg_set->e_nargs) ) #define e_process ( (reg_set->e_process) ) #else extern register_set_t *reg_set; #define value_stack_address &value_stack #define context_stack_address &context_stack #endif extern int create_thread(ref_t start_method); extern register_set_t* register_array[]; #endif oaklisp-1.3.7/src/emulator/gc.c000066400000000000000000000475241332762442600163650ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #define _REENTRANT #include #include #include #include "data.h" #include "weak.h" #include "xmalloc.h" #include "stacks.h" #include "gc.h" #ifdef USE_VADVISE #include #endif #define FORTHREADS THREADY( for (my_index=0; my_index> 2; fprintf(fd, "[%ld;tag:%lu;%c]", i, (unsigned long)(refin & TAG_MASK), suffix); } else fprintf(fd, "[%ld;tag:%lu]", (long)(refin >> 2), (unsigned long)(refin & TAG_MASK)); } #define GC_NULL(r) ((r)==pre_gc_nil || (r)==e_nil) /* This variant of get_length has to follow forwarding pointers so that it will work in the middle of a gc, when an object's type might already have been transported. */ static unsigned long gc_get_length(ref_t x) { if (TAG_IS(x, PTR_TAG)) { ref_t typ = REF_SLOT(x, 0); ref_t vlen_p = REF_SLOT(typ, TYPE_VAR_LEN_P_OFF); ref_t len; /* Is vlen_p forwarded? */ if (TAG_IS(vlen_p, LOC_TAG)) vlen_p = *LOC_TO_PTR(vlen_p); /* Is this object variable length? */ if (GC_NULL(vlen_p)) { /* Not variable length. */ len = REF_SLOT(typ, TYPE_LEN_OFF); /* Is length forwarded? */ if (TAG_IS(len, LOC_TAG)) len = *LOC_TO_PTR(len); return REF_TO_INT(len); } else return REF_TO_INT(REF_SLOT(x, 1)); } else { fprintf(stderr, "; WARNING!!! gc_get_length("); printref(stderr, x); fprintf(stderr, ") called; only a tag of %d is allowed.\n", PTR_TAG); return 0; } } static ref_t gc_touch0(ref_t r) { ref_t *p = ANY_TO_PTR(r); if (OLD_PTR(p)) if (r & 1) { ref_t type_slot = *p; if (TAG_IS(type_slot, LOC_TAG)) /* Already been transported. */ /* Tag magic transforms this: return(PTR_TO_REF(LOC_TO_PTR(type_slot))); to this: */ return type_slot | 1L; else { /* Transport it */ long i; long len = gc_get_length(r); ref_t *new_place = free_point; ref_t *p0 = p; ref_t *q0 = new_place; transport_count += 1; /* fprintf(stderr, "About to transport "); printref(r); fprintf(stderr, " len = %ld.\n", len); */ free_point += len; #ifndef FAST if (free_point >= new_space.end) { fprintf(stderr, "\n; New space exhausted while transporting "); printref(stderr, r); fprintf(stderr, ".\n; This indicates a bug in the garbage collector.\n"); exit(EXIT_FAILURE); } #endif for (i = 0; i < len; i++, p0++, q0++) { *q0 = *p0; *p0 = PTR_TO_LOC(q0); } return (PTR_TO_REF(new_place)); } } else { /* Follow the chain of locatives to oldspace until we find a real object or a circularity. */ ref_t r0 = r, r1 = *p, *pp; /* int chain_len = 1; */ while (TAG_IS(r1, LOC_TAG) && (pp = LOC_TO_PTR(r1), OLD_PTR(pp))) { if (r0 == r1) { /* fprintf(stderr, "Circular locative chain.\n"); */ goto forwarded_loc; } r0 = *LOC_TO_PTR(r0); r1 = *pp; /* chain_len += 1; */ if (r0 == r1) { /* fprintf(stderr, "Circular locative chain.\n"); */ goto forwarded_loc; } if (!TAG_IS(r1, LOC_TAG) || (pp = LOC_TO_PTR(r1), !OLD_PTR(pp))) break; r1 = *pp; /* chain_len += 1; */ } /* We're on an object, so touch it. */ /* fprintf(stderr, "Locative chain followed to "); printref(r1); fprintf(stderr, " requiring %d dereferences.\n", chain_len); */ GC_TOUCH(r1); /* (void)gc_touch(r1); */ /* Now see if we're looking at a forwarding pointer. */ forwarded_loc: return (r); } else return (r); } static ref_t loc_touch0(ref_t r, bool warn_if_unmoved) { ref_t *p = LOC_TO_PTR(r); if (OLD_PTR(p)) { /* A locative into old space. See if it's been transported yet. */ ref_t r1 = *p; if (TAG_IS(r1, LOC_TAG) && NEW_PTR(LOC_TO_PTR(r1))) /* Already been transported. */ return (r1); else { /* Better transport this lonely cell. */ ref_t *new_place = free_point++; /* make a new cell. */ ref_t new_r = PTR_TO_LOC(new_place); #ifndef FAST if (free_point >= new_space.end) { fprintf(stderr, "\n; New space exhausted while transporting the cell "); printref(stderr, r); fprintf(stderr, ".\n; This indicates a bug in the garbage collector.\n"); exit(EXIT_FAILURE); } #endif *p = new_r; /* Record the transportation. */ /* Put the right value in the new cell. */ *new_place = TAG_IS(r1, PTR_TAG) && (p = REF_TO_PTR(r1), OLD_PTR(p)) ? *p | 1 : r1; /* ? PTR_TO_REF(REF_TO_PTR(*p)) : r1; */ loc_transport_count += 1; if (warn_if_unmoved) { fprintf(stderr, "\nWarning: the locative "); printref(stderr, r); fprintf(stderr, " has just had its raw cell moved.\n"); } return (new_r); } } else return (r); /* Not a locative into old space. */ } static void scavenge(void) { ref_t *scavenge_p; for (scavenge_p = new_space.start; scavenge_p < free_point; scavenge_p += 1) GC_TOUCH(*scavenge_p); } static void loc_scavenge(void) { ref_t *scavenge_p; for (scavenge_p = new_space.start; scavenge_p < free_point; scavenge_p += 1) LOC_TOUCH(*scavenge_p); } #ifndef FAST /* This set of routines are for consistency checks */ #define GGC_CHECK(r) GC_CHECK(r,"r") /* True if r seems like a messed up reference. */ static bool gc_check_(ref_t r) { return (r & PTR_MASK) && !NEW_PTR(ANY_TO_PTR(r)) && (full_gc || !SPATIC_PTR(ANY_TO_PTR(r))); } static void GC_CHECK(ref_t x, char *st) { if (gc_check_(x)) { fprintf(stderr, "%s = ", st); printref(stderr, x); if (OLD_PTR(ANY_TO_PTR(x))) { fprintf(stderr, ", cell contains "); printref(stderr, *ANY_TO_PTR(x)); } fprintf(stderr, "\n"); } } static void GC_CHECK1(ref_t x, char *st, long i) { if (gc_check_((x))) { fprintf(stderr, (st), (i)); printref(stderr, x); if (OLD_PTR(ANY_TO_PTR(x))) { fprintf(stderr, ", cell contains "); printref(stderr, *ANY_TO_PTR(x)); } fprintf(stderr, "\n"); } } #endif static instr_t * pc_touch(instr_t * o_pc) { ref_t *pcell = (ref_t *) ((unsigned long)o_pc & ~TAG_MASKL); /* It is possible that the gc was called while a vm was executing the last instruction in a code block (hopefully a branch or funcall) in a multithreaded enviornment. So let's back up the pc one before gc'ing it. However, this means the gc generally should not be called until the loop has read at least one instruction in the code block. */ /* pcell--; Changed my mind. Moved POLL_GC_SIGNALS to top of loop. */ LOC_TOUCH_PTR(pcell); /* pcell++; */ return (instr_t *) ((ref_t) pcell | ((ref_t) o_pc & TAG_MASK)); } static void set_external_full_gc(bool full) { full_gc = full; } void gc(bool pre_dump, bool full_gc, char *reason, size_t amount) /* * pre_dump About to dump world? (discards stacks) * full_gc Reclaim garbage from spatic space too? * reason The reason for this GC, human readable. * amount The amount of space that is needed. */ { long old_taken; long old_spatic_taken; ref_t *p; #ifdef THREADS bool ready=false; int my_index; int i; int *my_index_p; my_index_p = pthread_getspecific (index_key); my_index = *my_index_p; gc_ready[my_index] = 1; set_gc_flag (true); #endif #ifdef THREADS /*Problem here is next_index could change if someone creates a thread while someone else is gc'ing*/ while (ready == false) { ready = true; for (i = 0; i < next_index; i++) { if (gc_ready[i] == 0) { ready = false; break; } } } #endif /* The full_gc flag is also a global to avoid ugly parameter passing. */ set_external_full_gc(full_gc); gc_top: if (trace_gc == 1) fprintf(stderr, "\n;GC"); if (trace_gc > 1) fprintf(stderr, "\n; %sGC due to %s.\n", full_gc ? "Full " : "", reason); if (trace_gc > 2 && !pre_dump) { FORTHREADS { fprintf (stderr, "value "); dump_stack (value_stack_address); fprintf (stderr, "context "); dump_stack (context_stack_address); } } if (trace_gc > 1) fprintf(stderr, "; Flipping..."); old_taken = free_point - new_space.start; old_spatic_taken = spatic.size; old_space = new_space; if (trace_gc > 2) fprintf(stderr, "old taken: %ld", old_taken); if (full_gc) new_space.size += spatic.size; else new_space.size = e_next_newspace_size; alloc_space(&new_space, new_space.size); free_point = new_space.start; transport_count = 0; if (trace_gc > 1) fprintf(stderr, " rooting..."); { /* Hit the registers: */ pre_gc_nil = e_nil; GC_TOUCH(e_nil); GC_TOUCH(e_boot_code); if (!pre_dump) { GC_TOUCH(e_t); GC_TOUCH(e_fixnum_type); GC_TOUCH(e_loc_type); GC_TOUCH(e_cons_type); GC_TOUCH_PTR(e_subtype_table, 2); /* e_nargs is a fixnum. Nor is it global... */ GC_TOUCH (e_env_type); GC_TOUCH_PTR (e_argless_tag_trap_table, 2); GC_TOUCH_PTR (e_arged_tag_trap_table, 2); GC_TOUCH (e_object_type); GC_TOUCH (e_segment_type); FORTHREADS { /* e_bp is a locative, but a pointer to the object should exist, so we need only touch it in the locative pass. */ GC_TOUCH_PTR(e_env, 0); GC_TOUCH (e_code_segment); GC_TOUCH (e_current_method); GC_TOUCH (e_process); } GC_TOUCH (e_uninitialized); GC_TOUCH (e_method_type); GC_TOUCH (e_operation_type); FORTHREADS { for (p = gc_examine_buffer; p < gc_examine_ptr; p++) GC_TOUCH(*p); } /* Scan the stacks. */ FORTHREADS { for (p = value_stack.bp; p <= value_stack.sp; p++) GC_TOUCH(*p); for (p = context_stack.bp; p <= context_stack.sp; p++) GC_TOUCH(*p); /* Scan the stack segments. */ GC_TOUCH(value_stack.segment); GC_TOUCH(context_stack.segment); } /* Scan static space. */ if (!full_gc) for (p = spatic.start; p < spatic.end; p++) GC_TOUCH(*p); } /* Scavenge. */ if (trace_gc > 1) fprintf(stderr, " scavenging..."); scavenge(); if (trace_gc > 1) fprintf(stderr, " %ld object%s transported.\n", transport_count, transport_count != 1 ? "s" : ""); /* Clean up the locatives. */ if (trace_gc > 1) fprintf(stderr, "; Scanning locatives..."); loc_transport_count = 0; if (!pre_dump) { FORTHREADS { LOC_TOUCH_PTR (e_bp); e_pc = pc_touch (e_pc); LOC_TOUCH(e_uninitialized); for (p = gc_examine_buffer; p < gc_examine_ptr; p++) LOC_TOUCH(*p); for (p = value_stack.bp; p <= value_stack.sp; p++) LOC_TOUCH(*p); for (p = context_stack.bp; p <= context_stack.sp; p++) LOC_TOUCH(*p); } /* Scan spatic space. */ if (!full_gc) for (p = spatic.start; p < spatic.end; p++) LOC_TOUCH(*p); } if (trace_gc > 1) fprintf(stderr, " scavenging..."); loc_scavenge(); if (trace_gc > 1) fprintf(stderr, " %ld naked cell%s transported.\n", loc_transport_count, loc_transport_count != 1 ? "s" : ""); /* Discard weak pointers whose targets have not been transported. */ if (trace_gc > 1) fprintf(stderr, "; Scanning weak pointer table..."); { long count = post_gc_wp(); if (trace_gc > 1) fprintf(stderr, " %ld entr%s discarded.\n", count, count != 1 ? "ies" : "y"); } } #ifndef FAST { /* Check GC consistency. */ if (trace_gc > 1) fprintf(stderr, "; Checking consistency...\n"); GGC_CHECK(e_nil); GGC_CHECK(e_boot_code); if (!pre_dump) { GGC_CHECK (e_t); GGC_CHECK (e_fixnum_type); GGC_CHECK (e_loc_type); GGC_CHECK (e_cons_type); GC_CHECK (PTR_TO_REF (e_subtype_table - 2), "e_subtype_table"); FORTHREADS { GC_CHECK (PTR_TO_LOC (e_bp), "PTR_TO_LOC(E_BP)"); GC_CHECK (PTR_TO_REF (e_env), "e_env"); } /* e_nargs is a fixnum. Nor is it global... */ GGC_CHECK (e_env_type); GC_CHECK (PTR_TO_REF (e_argless_tag_trap_table - 2), "e_argless_tag_trap_table"); GC_CHECK (PTR_TO_REF (e_arged_tag_trap_table - 2), "e_arged_tag_trap_table"); GGC_CHECK (e_object_type); GGC_CHECK (e_segment_type); FORTHREADS { GGC_CHECK (e_code_segment); GGC_CHECK (e_current_method); GGC_CHECK (e_process); } GGC_CHECK (e_uninitialized); GGC_CHECK (e_method_type); GGC_CHECK (e_operation_type); /* Scan the stacks. */ FORTHREADS { for (p = value_stack.bp; p <= value_stack.sp; p++) GC_CHECK1(*p, "value_stack.bp[%d] = ", (long)(p - value_stack.bp)); for (p = context_stack.bp; p <= context_stack.sp; p++) GC_CHECK1(*p, "context_stack.bp[%d] = ", (long)(p - context_stack.bp)); GGC_CHECK(value_stack.segment); GGC_CHECK(context_stack.segment); /* Make sure the program counter is okay. */ GC_CHECK ((ref_t) ((ref_t) e_pc | LOC_TAG), "e_pc"); } } /* Scan the heap. */ if (!full_gc) for (p = spatic.start; p < spatic.end; p++) GC_CHECK1(*p, "static_space[%ld] = ", (long)(p - spatic.start)); for (p = new_space.start; p < free_point; p++) GC_CHECK1(*p, "new_space[%ld] = ", (long)(p - new_space.start)); } #endif /* not defined(FAST) */ /* Hopefully there are no more references into old space. */ if (!pre_dump) free_space(&old_space); if (!pre_dump && full_gc) free_space(&spatic); #ifdef USE_VADVISE #ifdef VA_FLUSH /* Tell the virtual memory system that recent statistics are useless. */ vadvise(VA_FLUSH); #endif #endif if (trace_gc > 2 && !pre_dump) { FORTHREADS { #ifdef THREADS fprintf (stderr, "Thread %d\n", my_index); #endif fprintf (stderr, "value_stack "); dump_stack (value_stack_address); fprintf (stderr, "context_stack "); dump_stack (context_stack_address); } } { long new_taken = free_point - new_space.start; long old_total = old_taken + (full_gc ? old_spatic_taken : 0); long reclaimed = old_total - new_taken; if (trace_gc == 1) { fprintf(stderr, ":%ld%%", (100 * reclaimed) / old_total); } if (trace_gc > 1) { fprintf(stderr, "; GC complete. %ld ", old_total); if (full_gc) fprintf(stderr, "(%ld+%ld) ", old_spatic_taken, old_taken); fprintf(stderr, "compacted to %ld; %ld (%ld%%) garbage.\n", new_taken, reclaimed, (100 * reclaimed) / old_total); } /* Make the next new space bigger if the current was too small. */ if (!full_gc && !pre_dump && (RECLAIM_FACTOR * new_taken + amount > new_space.size)) { e_next_newspace_size = RECLAIM_FACTOR * new_taken + amount; #ifdef MAX_NEW_SPACE_SIZE if (e_next_newspace_size > MAX_NEW_SPACE_SIZE) e_next_newspace_size = MAX_NEW_SPACE_SIZE; #endif switch (trace_gc) { case 0: break; case 1: fprintf(stderr, ",resize:%ld", (long)e_next_newspace_size); break; default: fprintf(stderr, "; Expanding next new space from %ld to %ld (%ld%%).\n", (long)new_space.size, (long)e_next_newspace_size, (long)(100 * (e_next_newspace_size - new_space.size)) / new_space.size); break; } if ((size_t) (new_space.end - free_point) < amount) { #ifdef MAX_NEW_SPACE_SIZE if (((new_space.end - free_point) + amount) < e_next_newspace_size) { fprintf(stderr, "\nFatal GC error:" "Essential new space size exceeds maximum allowable.\n"); exit(EXIT_FAILURE); } #endif reason = "immediate new space expansion necessity"; goto gc_top; } } if (full_gc && !pre_dump) { /* Move _new to spatic, and reallocate new. */ /* (The reallocation cannot increase the size, just frees any extra.) */ spatic = new_space; realloc_space(&spatic, free_point - new_space.start); if (trace_gc > 1 && e_next_newspace_size != original_newspace_size) fprintf(stderr, "; Setting new space size to %ld.\n", (long)original_newspace_size); new_space.size = e_next_newspace_size = original_newspace_size; if (e_next_newspace_size <= amount) { e_next_newspace_size = RECLAIM_FACTOR * amount; switch (trace_gc) { case 0: break; case 1: fprintf(stderr, ",resize:%ld", (long)e_next_newspace_size); break; default: fprintf(stderr, "; expanding next new space %ld to %ld (%d%%).\n", (long)new_space.size, (long)e_next_newspace_size, (int)((100 * (e_next_newspace_size - new_space.size)) / new_space.size)); break; } new_space.size = e_next_newspace_size; } alloc_space(&new_space, new_space.size); free_point = new_space.start; } if (trace_gc == 1) fprintf(stderr, "\n"); if (trace_gc) fflush(stdout); } #ifdef THREADS my_index_p = pthread_getspecific (index_key); my_index = *my_index_p; gc_ready[my_index] = 0; set_gc_flag (false); #endif } /* This routine takes a block of memory and scans through it, updating all pointers into the window starting at old_start to instead point into the corresponding location in new_start. Typically new_start will be the same as start */ static void shift_targets(ref_t * start, size_t len, ref_t * old_start, size_t old_len, ref_t * new_start) { size_t i; for (i = 0; i < len; i++) { ref_t x = start[i]; if (PTR_MASK & x) /* is it a pointer? */ { ref_t *y = ANY_TO_PTR(x); size_t offset = y - old_start; if (y >= 0 && offset < old_len) /* into old window? */ start[i] = PTR_TO_TAGGED(new_start + offset, x); } } } oaklisp-1.3.7/src/emulator/gc.h000066400000000000000000000034111332762442600163550ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _GC_H_INCLUDED #define _GC_H_INCLUDED #include "config.h" #include "data.h" extern bool full_gc; extern void printref(FILE * fd, ref_t refin); extern void gc(bool pre_dump, bool full_gc, char *reason, size_t amount); #define GC_MEMORY(v) \ {*gc_examine_ptr++ = (v);} /* assert(gc_examine_ptr < &gc_examine_buffer[GC_EXAMINE_BUFFER_SIZE]);\ } */ #define GC_RECALL(v) \ {(v) = *--gc_examine_ptr;} /* assert(gc_examine_ptr >= gc_examine_buffer);\ } */ #ifdef THREADS extern int gc_ready[]; extern bool gc_pending; extern pthread_mutex_t gc_lock; #endif extern void set_gc_flag (bool flag); extern int get_next_index(); extern void free_registers(); extern void wait_for_gc(); #endif oaklisp-1.3.7/src/emulator/instr.c000066400000000000000000000025041332762442600171200ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA #define _REENTRANT #include "data.h" #ifndef FAST #include #include "instr-data.c" void print_pc(instr_t *e_progc) { if (SPATIC_PTR((ref_t *) e_progc)) fprintf(stdout, "%7ld[spatic] ", (long)((char *)e_progc - (char *)spatic.start)); else fprintf(stdout, "%7ld[new ] ", (long)((char *)e_progc - (char *)new_space.start + 4 * spatic.size)); } void print_instr(int op_field, int arg_field, instr_t *e_progc) { print_pc(e_progc); if (op_field == 0) fprintf(stdout, "%s\n", argless_instr_name[arg_field]); else fprintf(stdout, "%s %d\n", instr_name[op_field], arg_field); } #endif oaklisp-1.3.7/src/emulator/instr.h000066400000000000000000000016311332762442600171250ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA #ifndef _INSTR_H_INCLUDED #define _INSTR_H_INCLUDED #ifndef FAST extern void print_instr(int /* op_field */, int /* arg_field */, instr_t * /* e_pc */); extern void print_pc(instr_t * /* e_pc */); #endif #endif oaklisp-1.3.7/src/emulator/instruction-table.oak000066400000000000000000000036501332762442600217620ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988-2008 Kevin J. Lang & Barak A. Pearlmutter ;;; Dump a table of all the instructions in a format suitable for ;;; compilation into the emulator. (let ((aux (lambda (s instr i) (format s " \"~S\"," instr) (if (= (modulo i 10) 0) (format s " /* ~D */~%" i) (format s "~%"))))) (define (dump-instruction-table f) (let ((t0 (make simple-vector %argless-instructions)) (t1 (make simple-vector %arged-instructions))) (dotimes (i %argless-instructions) (set! (nth t0 i) (#^symbol (format #f "ILLEGAL-ARGLESS-~d" i)))) (dotimes (i %arged-instructions) (set! (nth t1 i) (#^symbol (format #f "ILLEGAL-ARGED-~d" i)))) (dolist (x (#^list-type opcode-descriptor-hash-table)) (destructure* (instr opcode argfield . #t) x (cond ((= opcode 0) (set! (nth t0 argfield) instr)) (else (set! (nth t1 opcode) instr))))) (with-open-file (s f out) (format s "// Automatically generated by instruction-table.oak~%~%") (format s "char *argless_instr_name[] = {~%") (dotimes (i %argless-instructions) (aux s (nth t0 i) i)) (format s "};~%~%") (format s "char *instr_name[] = {~%") (dotimes (i %arged-instructions) (aux s (nth t1 i) i)) (format s "};~%"))))) oaklisp-1.3.7/src/emulator/loop.c000066400000000000000000001412631332762442600167400ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************* * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * *********************************************************************/ #define _REENTRANT #include #include #include #ifndef FAST #undef NDEBUG #endif #include #include "config.h" #include "data.h" #include "stacks.h" #include "stacks-loop.h" #include "gc.h" #include "signals.h" #include "timers.h" #include "weak.h" #include "worldio.h" #include "loop.h" #include "cmdline.h" #include "xmalloc.h" #ifndef FAST #include "instr.h" #endif #define ENABLE_TIMER 1 bool trace_traps = false; /* trace tag traps */ bool trace_files = false; /* trace file opening */ bool batch_mode = false; /* disable trapping of SIGINT */ #ifndef FAST bool trace_insts = false; /* trace instruction execution */ bool trace_valcon = false; /* trace stack contents */ bool trace_cxtcon = false; /* trace contents stack contents */ bool trace_stks = false; /* trace contents stack contents */ bool trace_segs = false; /* trace stack segment manipulation */ bool trace_meth = false; /* trace method lookup */ #ifdef OP_TYPE_METH_CACHE bool trace_mcache = false; /* trace method cache hits and misses */ #endif #endif bool gc_before_dump = true; /* do a GC before dumping the world */ #ifdef FAST #define maybe_put(x,s) #else static inline void maybe_put(bool v, char *s) { if (v) { printf("%s", s); fflush(stdout); } } #endif #define INCREMENT_PC(pc,i) ((pc)+=(i)) #define NEW_STORAGE e_uninitialized static void maybe_dump_world(int dumpstackp) { #ifdef THREADS int *my_index_p; int my_index; my_index_p = pthread_getspecific (index_key); my_index = *(my_index_p); #endif if (dumpstackp > 2) { /* 0,1,2 are normal exits. */ /* will be changed */ dump_stack(&value_stack); dump_stack(&context_stack); } if (dump_flag) { if (gc_before_dump && dumpstackp == 0) { gc(true, true, "impending world dump", 0); dump_world(true); } else dump_world(false); } } static inline ref_t get_type(ref_t x) { #ifndef USE_SWITCH_FOR_GET_TYPE if (x & 0x1) { if (x & 0x2) return REF_SLOT(x, 0); else return *(e_subtype_table + ((x & SUBTAG_MASK) / 4)); } else { if (x & 0x2) return e_loc_type; else return e_fixnum_type; } #else switch (x & TAG_MASK) { case INT_TAG: return e_fixnum_type; case IMM_TAG: return e_subtype_table[(x & SUBTAG_MASK) >> 2]; case LOC_TAG: return e_loc_type; case PTR_TAG: return REF_SLOT(x, 0); } #endif } static inline ref_t * pcar(ref_t x) { return &REF_SLOT(x, CONS_PAIR_CAR_OFF); } static inline ref_t * pcdr(ref_t x) { return &REF_SLOT(x, CONS_PAIR_CDR_OFF); } static inline ref_t car(ref_t x) { return *pcar(x); } static inline ref_t cdr(ref_t x) { return *pcdr(x); } static inline ref_t assq(ref_t elt, ref_t lis, ref_t notfound) { while (lis != e_nil) { ref_t this = car(lis); if (car(this) == elt) return this; lis = cdr(lis); } return notfound; } static inline ref_t assqcdr(ref_t elt, ref_t lis, ref_t notfound) { while (lis != e_nil) { ref_t this = car(lis); if (car(this) == elt) return cdr(this); lis = cdr(lis); } return notfound; } static inline int lookup_bp_offset(ref_t y_type, ref_t meth_type) { return assqcdr(meth_type, REF_SLOT(y_type, TYPE_TYPE_BP_ALIST_OFF), INT_TO_REF(0)); } /* 6 is enough for current build... */ #define N_LATERS 100 static inline void find_method_type_pair(ref_t op, ref_t obj_type, ref_t *method_ptr, ref_t *type_ptr) { ref_t alist; ref_t car_cache; ref_t *locl = NULL; #ifdef OP_METH_ALIST_MTF ref_t thelist; ref_t *loclist; #endif /* stack of lists of types that remain to be searched */ ref_t later_lists[N_LATERS]; ref_t *llp = &later_lists[0]; /* points to first empty slot in table */ while (1) /* forever */ { /* First look for it in the local method alist of obj_type: */ #ifdef OP_METH_ALIST_MTF alist = thelist = *(loclist = &REF_SLOT(obj_type, TYPE_OP_METHOD_ALIST_OFF)); #else alist = REF_SLOT(obj_type, TYPE_OP_METHOD_ALIST_OFF); #endif while (alist != e_nil) { if (car((car_cache = car(alist))) == op) { maybe_put(trace_meth, "x\n"); #ifdef OP_METH_ALIST_MTF if (locl != NULL) { *locl = cdr(alist); *loclist = alist; *pcdr(alist) = thelist; } #endif *method_ptr = cdr(car_cache); *type_ptr = obj_type; return; } alist = *(locl = pcdr(alist)); maybe_put(trace_meth, "-"); } /* Not found in local alist, so stack the entire supertype list and then fetch the top guy available on the stack. */ /* TO DO: should gracefully handle overflown later lists table. */ if (llp == &later_lists[N_LATERS]) printf("internal error: overflown laters list table\n"); *llp = REF_SLOT(obj_type, TYPE_SUPER_LIST_OFF); llp += 1; while (*(llp-1) == e_nil) { if (llp == &later_lists[1]) return; llp -= 1; } locl = NULL; obj_type = car(*(llp-1)); *(llp-1) = cdr(*(llp-1)); } } void loop(ref_t initial_tos) { instr_t instr; u_int8_t op_field; u_int8_t arg_field; /* trap_nargs is used by instructions when they trap, to tell the trap code about a property of the instruction. (It might be better to instead the trap code look in a table.) */ unsigned trap_nargs; #ifdef THREADS int* my_index_p = pthread_getspecific (index_key); int my_index = *(my_index_p); #endif ref_t x = INT_TO_REF(0); /* x, y initialized for -Wall message */ ref_t y = INT_TO_REF(0); #if ENABLE_TIMER unsigned timer_counter = 0; unsigned timer_increment = 0; #endif /* These are "local" versions of some globals, to make sure the C compiler can keep these in registers or on the stack instead of reloading from main memory. */ instr_t *local_e_pc; ref_t *local_value_sp; ref_t *value_stack_bp = value_stack.bp; ref_t *value_stack_end = &value_stack.bp[value_stack.size]; ref_t *local_context_sp; ref_t *context_stack_bp = context_stack.bp; ref_t *context_stack_end = &context_stack.bp[context_stack.size]; LOCALIZE_ALL(); /* This fixes a bug in which the initial CHECK-NARGS in the boot code tries to pop the operation and fails. */ PUSHVAL_IMM(INT_TO_REF(4321)); PUSHVAL(initial_tos); /* These TRAPx(n) macros jump to the trap code, notifying it that x arguments have been popped off the stack and need to be put back on (these are in the variables x, ...) and that the trap operation should be called with the top n guys on the stack as arguments. */ #define TRAP0(N) {trap_nargs=((N)); goto arg0_tt;} #define TRAP1(N) {trap_nargs=((N)); goto arg1_tt;} #define TRAP0_IF(C,N) {if ((C)) TRAP0((N));} #define TRAP1_IF(C,N) {if ((C)) TRAP1((N));} #define CHECKTAG0(X,TAG,N) TRAP0_IF(!TAG_IS((X),(TAG)),(N)) #define CHECKTAG1(X,TAG,N) TRAP1_IF(!TAG_IS((X),(TAG)),(N)) #define CHECKCHAR0(X,N) \ TRAP0_IF(!SUBTAG_IS((X),CHAR_SUBTAG),(N)) #define CHECKCHAR1(X,N) \ TRAP1_IF(!SUBTAG_IS((X),CHAR_SUBTAG),(N)) #define CHECKTAGS1(X0,T0,X1,T1,N) \ TRAP1_IF( !TAG_IS((X0),(T0)) || !TAG_IS((X1),(T1)), (N)) #define CHECKTAGS_INT_1(X0,X1,N) \ TRAP1_IF( (((X0)|(X1)) & TAG_MASK) != 0, (N)) #define POLL_USER_SIGNALS() if ((signal_poll_flag) \ THREADY( && (my_index == 0))) \ {goto intr_trap;} #if ENABLE_TIMER #define TIMEOUT 1000 #define POLL_TIMER_SIGNALS() if (timer_counter > TIMEOUT) {goto intr_trap;} #else /* not ENABLE_TIMER */ #define POLL_TIMER_SIGNALS() #endif #ifdef THREADS #define POLL_GC_SIGNALS() if (gc_pending) { \ value_stack.sp = local_value_sp; \ context_stack.sp = local_context_sp; \ e_pc = local_e_pc; \ wait_for_gc(); \ local_e_pc = e_pc; \ local_context_sp = context_stack.sp; \ local_value_sp = value_stack.sp; \ } #else #define POLL_GC_SIGNALS() #endif #define POLL_SIGNALS() POLL_USER_SIGNALS() ; \ POLL_TIMER_SIGNALS() ; /* This is the big instruction fetch/execute loop. */ if (!batch_mode) enable_signal_polling(); #define GOTO_TOP goto top_of_loop; top_of_loop: while (1) /* forever */ { #ifndef FAST if (trace_valcon) DUMP_VALUE_STACK(); if (trace_cxtcon) DUMP_CONTEXT_STACK(); if (trace_stks) { printf("heights val: %d = %d + %d, cxt: %d = %d + %d\n", VALUE_STACK_HEIGHT(), local_value_sp - value_stack_bp + 1, value_stack.pushed_count, CONTEXT_STACK_HEIGHT(), local_context_sp - context_stack_bp + 1, context_stack.pushed_count); } { int val_buffer_count = local_value_sp - value_stack_bp + 1; int cxt_buffer_count = local_context_sp - context_stack_bp + 1; if (val_buffer_count < 1 || val_buffer_count > value_stack.size) { fprintf(stderr, "vm error: val_buffer_count = %d\n", val_buffer_count); exit(EXIT_FAILURE); } /* Should this be a zero ??? */ if (cxt_buffer_count < 0 || cxt_buffer_count > context_stack.size) { fprintf(stderr, "vm error: cxt_buffer_count = %d\n", cxt_buffer_count); exit(1); } } #endif POLL_GC_SIGNALS(); #if ENABLE_TIMER timer_counter += timer_increment; #endif instr = *local_e_pc; op_field = (instr >> 2) & 0x3F; arg_field = instr >> 8; #define signed_arg_field ((int8_t)arg_field) #ifndef FAST if (trace_insts) print_instr(op_field, arg_field, local_e_pc); #endif INCREMENT_PC(local_e_pc,1); /* fprintf(stdout, "Asserting...\n"); assert(value_stack_bp[-1] == PATTERN); assert(value_stack_bp[value_stack.size] == PATTERN); assert(context_stack_bp[-1] == PATTERN); assert(context_stack_bp[context_stack.size] == PATTERN); */ if (op_field == 0) { switch (arg_field) { case 0: /* NOOP */ GOTO_TOP; case 1: /* PLUS */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); { long a = REF_TO_INT(x) + REF_TO_INT(y); OVERFLOWN_INT(a, TRAP1(2)); PEEKVAL() = INT_TO_REF(a); } GOTO_TOP; case 2: /* NEGATE */ x = PEEKVAL(); CHECKTAG0(x, INT_TAG, 1); /* The most negative fixnum's negation isn't a fixnum. */ if (x == MIN_REF) TRAP0(1); /* Tag trickery: */ PEEKVAL() = -((long)x); GOTO_TOP; case 3: /* EQ? */ POPVAL(x); y = PEEKVAL(); PEEKVAL() = BOOL_TO_REF(x == y); GOTO_TOP; case 4: /* NOT */ PEEKVAL() = BOOL_TO_REF(PEEKVAL() == e_false); GOTO_TOP; case 5: /* TIMES */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); #ifdef HAVE_LONG_LONG /* "long long" here means int64 */ { int64_t a = (int64_t)REF_TO_INT(x) * (int64_t)REF_TO_INT(y); int highcrap = a >> (__WORDSIZE - (TAGSIZE+1)); if (highcrap && highcrap+1) TRAP1(2); PEEKVAL() = INT_TO_REF(a); } #else #ifdef DOUBLES_FOR_OVERFLOW { double a = (double)REF_TO_INT(x) * (double)REF_TO_INT(y); if (a < (double)((long)MIN_REF / 4) || a > (double)((long)MAX_REF / 4)) TRAP1(2); PEEKVAL() = INT_TO_REF((long)a); } #else { long a = REF_TO_INT(x), b = REF_TO_INT(y); unsigned long al, ah, bl, bh, hh, hllh, ll; long answer; bool neg = false; /* MNF check */ if (a < 0) { a = -a; neg = true; } if (b < 0) { b = -b; neg = !neg; } al = a & 0x7FFF; bl = b & 0x7FFF; ah = (unsigned long)a >> 15; bh = (unsigned long)b >> 15; ll = al * bl; hllh = al * bh + ah * bl; hh = ah * bh; if (hh || hllh >> 15) TRAP1(2); answer = (hllh << 15) + ll; if (neg) answer = -answer; OVERFLOWN_INT(answer, TRAP1(2)); PEEKVAL() = INT_TO_REF(answer); } #endif #endif GOTO_TOP; case 6: /* LOAD-IMM ; INLINE-REF */ /* align pc to next word boundary: */ if ((unsigned long)local_e_pc & 0x2) INCREMENT_PC(local_e_pc,1); /*NOSTRICT */ x = *(ref_t *)local_e_pc; PUSHVAL(x); /* skip pc over inline reference */ INCREMENT_PC(local_e_pc, sizeof(ref_t) / sizeof(instr_t)); GOTO_TOP; case 7: /* DIV */ /* Sign of product of args. */ /* Round towards 0. Obeys identity w/ REMAINDER. */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Can't divide by 0, or the most negative fixnum by -1. */ if (y == INT_TO_REF(0) || (y == INT_TO_REF(-1) && x == MIN_REF)) TRAP1(2); /* Tag trickery: */ PEEKVAL() = INT_TO_REF((long)x / (long)y); GOTO_TOP; case 8: /* =0? */ x = PEEKVAL(); CHECKTAG0(x, INT_TAG, 1); PEEKVAL() = BOOL_TO_REF(x == INT_TO_REF(0)); GOTO_TOP; case 9: /* GET-TAG */ PEEKVAL() = INT_TO_REF(PEEKVAL() & TAG_MASK); GOTO_TOP; case 10: /* GET-DATA */ /* With the moving gc, this should *NEVER* be used. For ease of debugging with the multiple spaces, this makes it seem like spatic and _new spaces are contiguous, is compatible with print_ref, and also with CRUNCH. */ x = PEEKVAL(); if (x & PTR_MASK) { ref_t *p = (x & 1) ? REF_TO_PTR(x) : LOC_TO_PTR(x); PEEKVAL() = INT_TO_REF( SPATIC_PTR(p) ? p - spatic.start : NEW_PTR(p) ? (p - new_space.start) + spatic.size : ( /* This is one weird reference: */ printf("GET-DATA of "), printref(stdout, x), printf("\n"), -(long)p - 1) ); } else PEEKVAL() = (x & ~TAG_MASKL) | INT_TAG; GOTO_TOP; case 11: /* CRUNCH */ POPVAL(x); /* data */ y = PEEKVAL(); /* tag */ CHECKTAGS_INT_1(x, y, 2); { int tag = (REF_TO_INT(y) & TAG_MASK); ref_t z; if (tag & PTR_MASK) { long i = REF_TO_INT(x); /* Preclude creation of very odd references. */ TRAP1_IF(i < 0, 2); if (i < (long)spatic.size) z = PTR_TO_LOC(spatic.start + i); else if (i < (long)(spatic.size + new_space.size)) z = PTR_TO_LOC(new_space.start + (i - spatic.size)); else { TRAP1(2); } } else z = x; PEEKVAL() = z | tag; } GOTO_TOP; case 12: /* GETC */ /* Used in emergency cold load standard-input stream. */ PUSHVAL_IMM(CHAR_TO_REF(getc(stdin))); GOTO_TOP; case 13: /* PUTC */ /* Used in emergency cold load standard-output stream and for the warm boot message. */ x = PEEKVAL(); CHECKCHAR0(x, 1); putc(REF_TO_CHAR(x), stdout); fflush(stdout); #ifndef FAST if (trace_insts || trace_valcon || trace_cxtcon) printf("\n"); #endif GOTO_TOP; case 14: /* CONTENTS */ x = PEEKVAL(); CHECKTAG0(x, LOC_TAG, 1); PEEKVAL() = *LOC_TO_PTR(x); GOTO_TOP; case 15: /* SET-CONTENTS */ POPVAL(x); CHECKTAG1(x, LOC_TAG, 2); *LOC_TO_PTR(x) = PEEKVAL(); GOTO_TOP; case 16: /* LOAD-TYPE */ PEEKVAL() = get_type(PEEKVAL()); GOTO_TOP; case 17: /* CONS */ { ref_t *p; ALLOCATE_SS(p, 3, "space crunch in CONS instruction"); POPVAL(x); p[CONS_PAIR_CAR_OFF] = x; p[CONS_PAIR_CDR_OFF] = PEEKVAL(); p[0] = e_cons_type; PEEKVAL() = PTR_TO_REF(p); GOTO_TOP; } case 18: /* <0? */ x = PEEKVAL(); CHECKTAG0(x, INT_TAG, 1); /* Tag trickery: */ PEEKVAL() = BOOL_TO_REF((int32_t)x < 0); GOTO_TOP; case 19: /* MODULO */ /* Sign of divisor (thing being divided by). */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); if (y == INT_TO_REF(0)) TRAP1(2); { long a = REF_TO_INT(x) % REF_TO_INT(y); if ((a < 0 && (long)y > 0) || ((long)y < 0 && (long)x > 0 && a > 0)) a += REF_TO_INT(y); PEEKVAL() = INT_TO_REF(a); } GOTO_TOP; case 20: /* ASH */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Tag trickery: */ { long b = REF_TO_INT(y); if (b < 0) { PEEKVAL() = ((long)x >> -b) & ~TAG_MASKL; GOTO_TOP; } else { PEEKVAL() = x << b; GOTO_TOP; } } case 21: /* ROT */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Rotations cannot overflow, but are not meaningful with an infinite-precision integer language model. This instr is used for computing string hashes. */ { unsigned long a = (unsigned long)x; long b = REF_TO_INT(y); if (b < 0) { PEEKVAL() = (a >> -b | a << (__WORDSIZE - 2 + b)) & ~TAG_MASKL; GOTO_TOP; } else { PEEKVAL() = (a << b | a >> (__WORDSIZE - 2 - b)) & ~TAG_MASKL; GOTO_TOP; } } case 22: /* STORE-BP-I */ POPVAL(x); CHECKTAG1(x, INT_TAG, 2); *(e_bp + REF_TO_INT(x)) = PEEKVAL(); GOTO_TOP; case 23: /* LOAD-BP-I */ x = PEEKVAL(); CHECKTAG0(x, INT_TAG, 1); PEEKVAL() = *(e_bp + REF_TO_INT(x)); GOTO_TOP; case 24: /* RETURN */ POP_CONTEXT(); GOTO_TOP; case 25: /* ALLOCATE */ { ref_t *p; POPVAL(x); y = PEEKVAL(); CHECKTAG1(y, INT_TAG, 2); ALLOCATE1(p, REF_TO_INT(y), "space crunch in ALLOCATE instruction", x); *p = x; PEEKVAL() = PTR_TO_REF(p); while (++p < free_point) *p = NEW_STORAGE; GOTO_TOP; } case 26: /* ASSQ */ POPVAL(x); PEEKVAL() = assq(x, PEEKVAL(), e_false); GOTO_TOP; case 27: /* LOAD-LENGTH */ x = PEEKVAL(); PEEKVAL() = (TAG_IS(x, PTR_TAG) ? (REF_SLOT(REF_SLOT(x, 0), TYPE_VAR_LEN_P_OFF) == e_false ? REF_SLOT(REF_SLOT(x, 0), TYPE_LEN_OFF) : REF_SLOT(x, 1)) : INT_TO_REF(0)); GOTO_TOP; case 28: /* PEEK */ PEEKVAL() = INT_TO_REF(*(u_int16_t *) PEEKVAL()); GOTO_TOP; case 29: /* POKE */ POPVAL(x); *(u_int16_t *) x = (u_int16_t) REF_TO_INT(PEEKVAL()); GOTO_TOP; case 30: /* MAKE-CELL */ { ref_t *p; ALLOCATE_SS(p, 1, "space crunch in MAKE-CELL instruction"); *p = PEEKVAL(); PEEKVAL() = PTR_TO_LOC(p); GOTO_TOP; } case 31: /* SUBTRACT */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); { long a = REF_TO_INT(x) - REF_TO_INT(y); OVERFLOWN_INT(a, TRAP1(2)); PEEKVAL() = INT_TO_REF(a); GOTO_TOP; } case 32: /* = */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Tag trickery: */ PEEKVAL() = BOOL_TO_REF(x == y); GOTO_TOP; case 33: /* < */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Tag trickery: */ PEEKVAL() = BOOL_TO_REF((long)x < (long)y); GOTO_TOP; case 34: /* LOG-NOT */ x = PEEKVAL(); CHECKTAG0(x, INT_TAG, 1); /* Tag trickery: */ PEEKVAL() = ~x - (TAG_MASK - INT_TAG); GOTO_TOP; case 35: /* LONG-BRANCH distance (signed) */ POLL_SIGNALS(); INCREMENT_PC(local_e_pc, ASHR2(SIGN_16BIT_ARG(*local_e_pc)) + 1); GOTO_TOP; case 36: /* LONG-BRANCH-NIL distance (signed) */ POLL_SIGNALS(); POPVAL(x); if (x != e_nil) INCREMENT_PC(local_e_pc,1); else INCREMENT_PC(local_e_pc, ASHR2(SIGN_16BIT_ARG(*local_e_pc)) + 1); GOTO_TOP; case 37: /* LONG-BRANCH-T distance (signed) */ POLL_SIGNALS(); POPVAL(x); if (x == e_nil) INCREMENT_PC(local_e_pc,1); else INCREMENT_PC(local_e_pc, ASHR2(SIGN_16BIT_ARG(*local_e_pc)) + 1); GOTO_TOP; case 38: /* LOCATE-BP-I */ x = PEEKVAL(); CHECKTAG0(x, INT_TAG, 1); PEEKVAL() = PTR_TO_LOC(e_bp + REF_TO_INT(x)); GOTO_TOP; case 39: /* LOAD-IMM-CON ; INLINE-REF */ /* This is like a LOAD-IMM followed by a CONTENTS. */ /* align pc to next word boundary: */ /* Do it in ?two? instructions: */ /* local_e_pc = (unsigned short*)(((unsigned long)local_e_pc + 3)&~3ul); */ /* Do it in ?three? instructions including branch: */ if ((unsigned long)local_e_pc & 0x2) INCREMENT_PC(local_e_pc,1); /* NOSTRICT */ x = *(ref_t *) local_e_pc; INCREMENT_PC(local_e_pc, 2); /* This checktag looks buggy, since it's hard to back over the instruction normally ... need to expand this out */ CHECKTAG1(x, LOC_TAG, 1); x = *LOC_TO_PTR(x); PUSHVAL(x); GOTO_TOP; /* Cons access instructions. */ #define CONSINSTR(a) \ { x = PEEKVAL(); \ CHECKTAG0(x, PTR_TAG, a); \ if (REF_SLOT(x,0) != e_cons_type) { TRAP0(a); } } case 40: /* CAR */ CONSINSTR(1); PEEKVAL() = car(x); GOTO_TOP; case 41: /* CDR */ CONSINSTR(1); PEEKVAL() = cdr(x); GOTO_TOP; case 42: /* SET-CAR */ CONSINSTR(2); POPVALS(1); *pcar(x) = PEEKVAL(); GOTO_TOP; case 43: /* SET-CDR */ CONSINSTR(2); POPVALS(1); *pcdr(x) = PEEKVAL(); GOTO_TOP; case 44: /* LOCATE-CAR */ CONSINSTR(1); PEEKVAL() = PTR_TO_LOC(pcar(x)); GOTO_TOP; case 45: /* LOCATE-CDR */ CONSINSTR(1); PEEKVAL() = PTR_TO_LOC(pcdr(x)); GOTO_TOP; /* Done with cons access instructions. */ case 46: /* PUSH-CXT-LONG rel */ PUSH_CONTEXT(ASHR2(SIGN_16BIT_ARG(*local_e_pc)) + 1); INCREMENT_PC(local_e_pc,1); GOTO_TOP; case 47: /* Call a primitive routine. */ fprintf(stderr, "Not configured for CALL-PRIMITIVE.\n"); GOTO_TOP; case 48: /* THROW */ POPVAL(x); CHECKTAG1(x, PTR_TAG, 2); y = PEEKVAL(); BASH_VAL_HEIGHT(REF_TO_INT(REF_SLOT(x, ESCAPE_OBJECT_VAL_OFF))); BASH_CXT_HEIGHT(REF_TO_INT(REF_SLOT(x, ESCAPE_OBJECT_CXT_OFF))); PUSHVAL(y); POP_CONTEXT(); GOTO_TOP; case 49: /* GET-WP */ PEEKVAL() = ref_to_wp(PEEKVAL()); GOTO_TOP; case 50: /* WP-CONTENTS */ x = PEEKVAL(); CHECKTAG0(x, INT_TAG, 1); PEEKVAL() = wp_to_ref(x); GOTO_TOP; case 51: /* GC */ UNLOCALIZE_ALL(); gc(false, false, "explicit call", 0); LOCALIZE_ALL(); PUSHVAL(e_false); GOTO_TOP; case 52: /* BIG-ENDIAN? */ #ifdef WORDS_BIGENDIAN PUSHVAL(e_t); #else PUSHVAL(e_false); #endif GOTO_TOP; case 53: /* VLEN-ALLOCATE */ POPVAL(x); y = PEEKVAL(); CHECKTAG1(y, INT_TAG, 2); { ref_t *p; ALLOCATE1(p, REF_TO_INT(y), "space crunch in VARLEN-ALLOCATE instruction", x); PEEKVAL() = PTR_TO_REF(p); p[0] = x; p[1] = y; p += 2; while (p < free_point) *p++ = NEW_STORAGE; } GOTO_TOP; case 54: /* INC-LOC */ /* Increment a locative by an amount. This is an instruction rather than (%crunch (+ (%pointer loc) index) %locative-tag) to avoid a window of gc vulnerability. All such windows must be fully closed before engines come up. */ POPVAL(x); y = PEEKVAL(); CHECKTAGS1(x, LOC_TAG, y, INT_TAG, 2); PEEKVAL() = PTR_TO_LOC(LOC_TO_PTR(x) + REF_TO_INT(y)); GOTO_TOP; case 55: /* FILL-CONTINUATION */ /* This instruction fills a continuation object with the appropriate values. */ CHECKVAL_POP(1); VALUE_FLUSH(2); CONTEXT_FLUSH(0); #ifndef FAST /* debugging check: */ if (local_value_sp != &value_stack_bp[1]) printf("Value stack flushing error.\n"); if (local_context_sp != &context_stack_bp[-1]) printf("Context stack flushing error.\n"); #endif x = PEEKVAL(); /* CHECKTAG0(x,PTR_TAG,1); */ REF_SLOT(x, CONTINUATION_VAL_SEGS) = value_stack.segment; REF_SLOT(x, CONTINUATION_VAL_OFF) = INT_TO_REF(value_stack.pushed_count); REF_SLOT(x, CONTINUATION_CXT_SEGS) = context_stack.segment; REF_SLOT(x, CONTINUATION_CXT_OFF) = INT_TO_REF(context_stack.pushed_count); /* Maybe it's a good idea to reload the buffer, but I'm not bothering and things seem to work. */ /* CHECKCXT_POP(0); */ GOTO_TOP; case 56: /* CONTINUE */ /* Continue a continuation. */ /* Grab the continuation. */ POPVAL(x); /* CHECKTAG1(x,PTR_TAG,1); */ y = PEEKVAL(); /* Pull the crap out of it. */ value_stack.segment = REF_SLOT(x, CONTINUATION_VAL_SEGS); value_stack.pushed_count = REF_TO_INT(REF_SLOT(x, CONTINUATION_VAL_OFF)); local_value_sp = &value_stack_bp[-1]; PUSHVAL_NOCHECK(y); context_stack.segment = REF_SLOT(x, CONTINUATION_CXT_SEGS); context_stack.pushed_count = REF_TO_INT(REF_SLOT(x, CONTINUATION_CXT_OFF)); local_context_sp = &context_stack_bp[-1]; POP_CONTEXT(); GOTO_TOP; case 57: /* REVERSE-CONS */ /* This is just like CONS except that it takes its args in the other order. Makes open coded LIST better. */ { ref_t *p; ALLOCATE_SS(p, 3, "space crunch in REVERSE-CONS instruction"); POPVAL(x); p[CONS_PAIR_CDR_OFF] = x; p[CONS_PAIR_CAR_OFF] = PEEKVAL(); p[0] = e_cons_type; PEEKVAL() = PTR_TO_REF(p); GOTO_TOP; } case 58: /* MOST-NEGATIVE-FIXNUM? */ PEEKVAL() = BOOL_TO_REF( PEEKVAL() == MIN_REF ); GOTO_TOP; case 59: /* FX-PLUS */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Tag trickery: */ PEEKVAL() = x + y; GOTO_TOP; case 60: /* FX-TIMES */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Tag trickery: */ PEEKVAL() = REF_TO_INT(x) * y; GOTO_TOP; case 61: /* GET-TIME */ /* Return CPU time */ PUSHVAL_IMM(INT_TO_REF(get_user_time())); GOTO_TOP; case 62: /* REMAINDER */ /* Sign of dividend (thing being divided.) */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); if (y == INT_TO_REF(0)) TRAP1(2); PEEKVAL() = INT_TO_REF(REF_TO_INT(x) % REF_TO_INT(y)); GOTO_TOP; case 63: /* QUOTIENTM */ /* Round towards -inf. Obeys identity w/ MODULO. */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Can't divide by 0, or the most negative fixnum by -1. */ if (y == INT_TO_REF(0) || (y == INT_TO_REF(-1) && x == MIN_REF)) TRAP1(2); /* Tag trickery: */ /* I can't seem to get anything like this to work: */ PEEKVAL() = INT_TO_REF((((long)x < 0) ^ ((long)y < 0)) ? -(long)x / -(long)y : (long)x / (long)y); { long a = (long)x / (long)y; if (((long)x < 0 && (long)y > 0 && a * (long)y > (long)x) || ((long)y < 0 && (long)x > 0 && a * (long)y < (long)x)) a -= 1; PEEKVAL() = INT_TO_REF(a); } GOTO_TOP; case 64: /* FULL-GC */ UNLOCALIZE_ALL(); gc(false, true, "explicit call", 0); LOCALIZE_ALL(); PUSHVAL(e_false); GOTO_TOP; case 65: /* MAKE-LAMBDA */ { ref_t *p; ALLOCATE_SS(p, 8, "space crunch in MAKE-LAMBDA instruction"); p[0] = e_operation_type; p[OPERATION_LAMBDA_OFF] = PTR_TO_REF(p + OPERATION_LENGTH); p[OPERATION_CACHE_TYPE_OFF] = NEW_STORAGE; p[OPERATION_CACHE_METH_OFF] = NEW_STORAGE; p[OPERATION_CACHE_TYPE_OFF_OFF] = NEW_STORAGE; POPVAL(x); p[OPERATION_LENGTH + METHOD_CODE_OFF] = x; p[OPERATION_LENGTH + METHOD_ENV_OFF] = PEEKVAL(); p[OPERATION_LENGTH] = e_method_type; PEEKVAL() = PTR_TO_REF(p); GOTO_TOP; } case 66: /* GET-ARGLINE-CHAR */ /* takes two args on stack, index into argv and index into that argument. Return a character (perhaps nul), or #f if out of bounds */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); { int c = program_arg_char(REF_TO_INT(x), REF_TO_INT(y)); PEEKVAL() = (c == -1) ? e_false : CHAR_TO_REF(c); } GOTO_TOP; case 67: /* ENABLE-ALARMS */ timer_increment = 1; PUSHVAL(e_nil); GOTO_TOP; case 68: /* DISABLE-ALARMS */ timer_increment = 0; PUSHVAL(e_nil); GOTO_TOP; case 69: /* RESET-ALARM-COUNTER */ timer_counter = 0; PUSHVAL(e_nil); GOTO_TOP; case 70: /* HEAVYWEIGHT-THREAD */ #ifdef THREADS PEEKVAL() = BOOL_TO_REF( create_thread(PEEKVAL()) ); #else PEEKVAL() = e_nil; #endif GOTO_TOP; case 71: /* TEST-AND-SET-LOCATIVE */ POPVAL(x); CHECKTAG1(x, LOC_TAG, 2); POPVAL(y); if (*LOC_TO_PTR(x) != y) { // fail PEEKVAL() = e_false; GOTO_TOP; } #ifdef THREADS if (pthread_mutex_trylock(&test_and_set_locative_lock) != 0) { PEEKVAL() = e_false; /* Failed to acquire lock. */ GOTO_TOP; } /* Start Critical Section. */ if (*(volatile ref *)LOC_TO_PTR(x) != y) { // fail PEEKVAL() = e_false; } else { // succeed *LOC_TO_PTR(x) = PEEKVAL(); PEEKVAL() = e_t; } pthread_mutex_unlock(&test_and_set_locative_lock); /* End Critical Section. */ GOTO_TOP; #else *LOC_TO_PTR(x) = PEEKVAL(); PEEKVAL() = e_t; GOTO_TOP; #endif #ifndef FAST default: printf("\nError (vm interpreter): " "Illegal argless instruction %d.\n", arg_field); UNLOCALIZE_ALL(); maybe_dump_world(333); exit(EXIT_FAILURE); #endif } } else { /* parametric instructions */ switch (op_field) { #ifndef FAST case 0: /* PARAMETERLESS-INSTRUCTION xxxx */ fprintf(stderr, "Error (vm interpreter): Internal error " "file: %s line: %d\n", __FILE__, __LINE__); exit(EXIT_FAILURE); #endif case 1: /* HALT n */ { int halt_code = arg_field; UNLOCALIZE_ALL(); maybe_dump_world(halt_code); exit(halt_code); } case 2: /* LOG-OP log-spec */ POPVAL(x); y = PEEKVAL(); CHECKTAGS_INT_1(x, y, 2); /* Tag trickery: */ PEEKVAL() = ((instr & (1 << 8) ? x & y : 0) | (instr & (1 << 9) ? ~x & y : 0) | (instr & (1 << 10) ? x & ~y : 0) | (instr & (1 << 11) ? ~x & ~y : 0)) & ~TAG_MASKL; GOTO_TOP; case 3: /* BLT-STACK stuff,trash */ { unsigned int stuff = arg_field & 0xf; unsigned int trash_m1 = arg_field >> 4; CHECKVAL_POP(stuff + trash_m1); { ref_t *src = local_value_sp - stuff; ref_t *dest = src - (trash_m1 + 1); while (src < local_value_sp) *++dest = *++src; local_value_sp = dest; } } GOTO_TOP; case 4: /* BRANCH-NIL distance (signed) */ POLL_SIGNALS(); POPVAL(x); if (x == e_nil) INCREMENT_PC(local_e_pc, signed_arg_field); GOTO_TOP; case 5: /* BRANCH-T distance (signed) */ POLL_SIGNALS(); POPVAL(x); if (x != e_nil) INCREMENT_PC(local_e_pc, signed_arg_field); GOTO_TOP; case 6: /* BRANCH distance (signed) */ POLL_SIGNALS(); INCREMENT_PC(local_e_pc, signed_arg_field); GOTO_TOP; case 7: /* POP n */ POPVALS(arg_field); GOTO_TOP; case 8: /* SWAP n */ x = PEEKVAL(); { ref_t *other; MAKE_BACK_VAL_PTR(other, arg_field); PEEKVAL() = *other; *other = x; } GOTO_TOP; case 9: /* BLAST n */ CHECKVAL_POP(arg_field); { ref_t *other = local_value_sp - arg_field; *other = POPVAL_NOCHECK(); } GOTO_TOP; case 10: /* LOAD-IMM-FIX signed-arg */ /* Tag trickery and opcode knowledge changes this PUSHVAL_IMM(INT_TO_REF(signed_arg_field)); to this: */ PUSHVAL_IMM((ref_t) (((int16_t) instr) >> 6)); GOTO_TOP; case 11: /* STORE-STK n */ { ref_t *other; MAKE_BACK_VAL_PTR(other, arg_field); *other = PEEKVAL(); } GOTO_TOP; case 12: /* LOAD-BP n */ x = *(e_bp + arg_field); PUSHVAL(x); GOTO_TOP; case 13: /* STORE-BP n */ *(e_bp + arg_field) = PEEKVAL(); GOTO_TOP; case 14: /* LOAD-ENV n */ x = *(e_env + arg_field); PUSHVAL(x); GOTO_TOP; case 15: /* STORE-ENV n */ *(e_env + arg_field) = PEEKVAL(); GOTO_TOP; case 16: /* LOAD-STK n */ /* All attempts to start this with if (arg_field == 0) for speed have failed, so benchmark carefully before trying it. */ { ref_t *other; MAKE_BACK_VAL_PTR(other, arg_field); x = *other; } PUSHVAL(x); GOTO_TOP; case 17: /* MAKE-BP-LOC n */ PUSHVAL(PTR_TO_LOC(e_bp + arg_field)); GOTO_TOP; case 18: /* MAKE-ENV-LOC n */ PUSHVAL(PTR_TO_LOC(e_env + arg_field)); GOTO_TOP; case 19: /* STORE-REG reg */ x = PEEKVAL(); switch (arg_field) { case 0: e_t = x; GOTO_TOP; case 1: e_nil = x; wp_table[0] = e_nil; rebuild_wp_hashtable(); GOTO_TOP; case 2: e_fixnum_type = x; GOTO_TOP; case 3: e_loc_type = x; GOTO_TOP; case 4: e_cons_type = x; GOTO_TOP; case 5: CHECKTAG1(x, PTR_TAG, 1); e_subtype_table = REF_TO_PTR(x) + 2; GOTO_TOP; case 6: CHECKTAG1(x, LOC_TAG, 1); e_bp = LOC_TO_PTR(x); GOTO_TOP; case 7: CHECKTAG1(x, PTR_TAG, 1); e_env = REF_TO_PTR(x); GOTO_TOP; case 8: CHECKTAG1(x, INT_TAG, 1); e_nargs = REF_TO_INT(x); GOTO_TOP; case 9: e_env_type = x; GOTO_TOP; case 10: CHECKTAG1(x, PTR_TAG, 1); e_argless_tag_trap_table = REF_TO_PTR(x) + 2; GOTO_TOP; case 11: CHECKTAG1(x, PTR_TAG, 1); e_arged_tag_trap_table = REF_TO_PTR(x) + 2; GOTO_TOP; case 12: e_object_type = x; GOTO_TOP; case 13: e_boot_code = x; GOTO_TOP; case 14: CHECKTAG1(x, LOC_TAG, 1); free_point = LOC_TO_PTR(x); GOTO_TOP; case 15: CHECKTAG1(x, LOC_TAG, 1); new_space.end = LOC_TO_PTR(x); GOTO_TOP; case 16: e_segment_type = x; BASH_SEGMENT_TYPE(); GOTO_TOP; case 17: e_uninitialized = x; GOTO_TOP; case 18: CHECKTAG1(x, INT_TAG, 1); e_next_newspace_size = REF_TO_INT(x); #ifdef MAX_NEW_SPACE_SIZE if (e_next_newspace_size > MAX_NEW_SPACE_SIZE) e_next_newspace_size = MAX_NEW_SPACE_SIZE; #endif GOTO_TOP; case 19: e_method_type = x; GOTO_TOP; case 20: e_operation_type = x; GOTO_TOP; case 21: e_false = x; /* wp_table[0] = e_false; */ /* rebuild_wp_hashtable(); */ GOTO_TOP; case 22: e_process = x; GOTO_TOP; default: printf("STORE-REG %d, unknown .\n", arg_field); GOTO_TOP; } case 20: /* LOAD-REG reg */ switch (arg_field) { case 0: PUSHVAL(e_t); GOTO_TOP; case 1: PUSHVAL(e_nil); GOTO_TOP; case 2: PUSHVAL(e_fixnum_type); GOTO_TOP; case 3: PUSHVAL(e_loc_type); GOTO_TOP; case 4: PUSHVAL(e_cons_type); GOTO_TOP; case 5: PUSHVAL(PTR_TO_REF(e_subtype_table - 2)); GOTO_TOP; case 6: PUSHVAL(PTR_TO_LOC(e_bp)) GOTO_TOP; case 7: PUSHVAL(PTR_TO_REF(e_env)); GOTO_TOP; case 8: PUSHVAL(INT_TO_REF((long)e_nargs)); GOTO_TOP; case 9: PUSHVAL(e_env_type); GOTO_TOP; case 10: PUSHVAL(PTR_TO_REF(e_argless_tag_trap_table - 2)); GOTO_TOP; case 11: PUSHVAL(PTR_TO_REF(e_arged_tag_trap_table - 2)); GOTO_TOP; case 12: PUSHVAL(e_object_type); GOTO_TOP; case 13: PUSHVAL(e_boot_code); GOTO_TOP; case 14: PUSHVAL(PTR_TO_LOC(free_point)); GOTO_TOP; case 15: PUSHVAL(PTR_TO_LOC(new_space.end)); GOTO_TOP; case 16: PUSHVAL(e_segment_type); GOTO_TOP; case 17: PUSHVAL(e_uninitialized); GOTO_TOP; case 18: PUSHVAL(INT_TO_REF(e_next_newspace_size)); GOTO_TOP; case 19: PUSHVAL(e_method_type); GOTO_TOP; case 20: PUSHVAL(e_operation_type); GOTO_TOP; case 21: PUSHVAL(e_false); GOTO_TOP; case 22: PUSHVAL(e_process); GOTO_TOP; default: fprintf(stderr, "Error (vm interpreter): " "LOAD-REG %d, unknown .\n", arg_field); PUSHVAL(e_false); GOTO_TOP; } case 21: /* FUNCALL-CXT, FUNCALL-CXT-BR distance */ /* NOTE: (FUNCALL-CXT) == (FUNCALL-CXT-BR 0) */ POLL_SIGNALS(); PUSH_CONTEXT(signed_arg_field); /* Fall through to tail recursive case: */ goto funcall_tail; case 22: /* FUNCALL-TAIL */ /* This polling should not be moved below the trap label, since the interrupt code will fail on a fake instruction failure. */ POLL_SIGNALS(); /* This label allows us to branch back up from a trap. */ /***********/ funcall_tail: /***********/ x = PEEKVAL(); CHECKTAG0(x, PTR_TAG, e_nargs + 1); CHECKVAL_POP(1); y = PEEKVAL_UP(1); e_current_method = REF_SLOT(x, OPERATION_LAMBDA_OFF); if (e_current_method == e_false) { /* SEARCH */ ref_t y_type = (e_nargs == 0) ? e_object_type : get_type(y); #ifdef OP_TYPE_METH_CACHE /* Check for cache hit: */ if (y_type == REF_SLOT(x, OPERATION_CACHE_TYPE_OFF)) { maybe_put(trace_mcache, "H"); e_current_method = REF_SLOT(x, OPERATION_CACHE_METH_OFF); e_bp = REF_TO_PTR(y) + REF_TO_INT(REF_SLOT(x, OPERATION_CACHE_TYPE_OFF_OFF)); } else #endif { /* Search the type hierarchy. */ ref_t meth_type, offset = INT_TO_REF(0); find_method_type_pair(x, y_type, &e_current_method, &meth_type); if (e_current_method == e_nil) { if (trace_traps) { printf("No handler for operation "); printref(stdout, x); printf(" type "); printref(stdout, y_type); printf("\n"); } TRAP0(e_nargs + 1); } /* This could be dispensed with if meth_type has no ivars and isn't variable-length-mixin. */ offset = lookup_bp_offset(y_type, meth_type); e_bp = REF_TO_PTR(y) + REF_TO_INT(offset); #ifdef OP_TYPE_METH_CACHE maybe_put(trace_mcache, "M"); /* Cache the results of this search. */ REF_SLOT(x, OPERATION_CACHE_TYPE_OFF) = y_type; REF_SLOT(x, OPERATION_CACHE_METH_OFF) = e_current_method; REF_SLOT(x, OPERATION_CACHE_TYPE_OFF_OFF) = offset; #endif } } else if (!TAG_IS(e_current_method, PTR_TAG) || REF_SLOT(e_current_method, 0) != e_method_type) { /* TAG TRAP */ if (trace_traps) printf("Bogus or never defined operation.\n"); TRAP0(e_nargs + 1); } /* else it's a LAMBDA. */ x = e_current_method; e_env = REF_TO_PTR(REF_SLOT(x, METHOD_ENV_OFF)); local_e_pc = CODE_SEG_FIRST_INSTR(e_code_segment = REF_SLOT(x, METHOD_CODE_OFF)); GOTO_TOP; case 23: /* STORE-NARGS n */ e_nargs = arg_field; GOTO_TOP; case 24: /* CHECK-NARGS n */ if (e_nargs == arg_field) { POPVALS(1); } else { if (trace_traps) printf("\n%d args passed; %d expected.\n", e_nargs, arg_field); TRAP0(e_nargs + 1); } GOTO_TOP; case 25: /* CHECK-NARGS-GTE n */ if (e_nargs >= arg_field) { POPVALS(1); } else { if (trace_traps) printf("\n%d args passed; %d or more expected.\n", e_nargs, arg_field); TRAP0(e_nargs + 1); } GOTO_TOP; case 26: /* STORE-SLOT n */ POPVAL(x); CHECKTAG1(x, PTR_TAG, 2); REF_SLOT(x, arg_field) = PEEKVAL(); GOTO_TOP; case 27: /* LOAD-SLOT n */ CHECKTAG0(PEEKVAL(), PTR_TAG, 1); PEEKVAL() = REF_SLOT(PEEKVAL(), arg_field); GOTO_TOP; case 28: /* MAKE-CLOSED-ENVIRONMENT n */ /* This code might be in error if arg_field == 0, which the compiler should never generate. */ { ref_t *p; ref_t z; #ifndef FAST if (arg_field == 0) { fprintf(stderr, "MAKE-CLOSED-ENVIRONMENT 0.\n"); fflush(stderr); } #endif ALLOCATE_SS(p, (long)(arg_field + 2), "space crunch in MAKE-CLOSED-ENVIRONMENT"); z = PTR_TO_REF(p); CHECKVAL_POP(arg_field - 1); *p++ = e_env_type; *p++ = INT_TO_REF(arg_field + 2); while (arg_field--) *p++ = POPVAL_NOCHECK(); PUSHVAL_NOCHECK(z); } GOTO_TOP; case 29: /* PUSH-CXT rel */ PUSH_CONTEXT(signed_arg_field); GOTO_TOP; case 30: /* LOCATE-SLOT n */ PEEKVAL() = PTR_TO_LOC(REF_TO_PTR(PEEKVAL()) + arg_field); GOTO_TOP; case 31: /* STREAM-PRIMITIVE n */ switch (arg_field) { case 0: /* get standard input stream. */ PUSHVAL((ref_t) stdin); GOTO_TOP; case 1: /* get standard output stream. */ PUSHVAL((ref_t) stdout); GOTO_TOP; case 2: /* get standard error output stream. */ PUSHVAL((ref_t) stderr); GOTO_TOP; case 3: /* fopen, mode READ */ case 4: /* fopen, mode WRITE */ case 5: /* fopen, mode APPEND */ POPVAL(x); /* How about a CHECKTAG(x,LOC_TAG,) here, eh? */ { char *s = (char *)oak_c_string((ref_t *) LOC_TO_PTR(x), REF_TO_INT(PEEKVAL())); FILE *fd; if (trace_files) printf("About to open '%s'.\n", s); fd = fopen(s, arg_field == 3 ? READ_MODE : arg_field == 4 ? WRITE_MODE : APPEND_MODE); free(s); PEEKVAL() = ((fd == NULL) ? e_false : (ref_t) fd); } GOTO_TOP; case 6: /* fclose */ PEEKVAL() = BOOL_TO_REF( fclose((FILE *) PEEKVAL()) != EOF ); GOTO_TOP; case 7: /* fflush */ PEEKVAL() = BOOL_TO_REF( fflush((FILE *) PEEKVAL()) != EOF ); GOTO_TOP; case 8: /* putc */ POPVAL(x); y = PEEKVAL(); CHECKCHAR1(y, 2); PEEKVAL() = BOOL_TO_REF( putc(REF_TO_CHAR(y), (FILE *) x) != EOF); GOTO_TOP; case 9: /* getc */ { int c = getc((FILE *) PEEKVAL()); /* When possible, if an EOF is read from an interactive stream, the eof should be cleared so regular stuff can be read thereafter. */ if (c == EOF) { if (ISATTY((FILE *) PEEKVAL())) { if (trace_files) printf("Clearing EOF.\n"); clearerr((FILE *) PEEKVAL()); } PEEKVAL() = e_nil; } else PEEKVAL() = CHAR_TO_REF(c); } GOTO_TOP; case 10: /* check for interactiveness */ PEEKVAL() = ISATTY((FILE *) PEEKVAL())? e_t : e_nil; GOTO_TOP; case 11: /* tell where we are */ PEEKVAL() = INT_TO_REF(ftell((FILE *) PEEKVAL())); GOTO_TOP; case 12: /* set where we are */ POPVAL(x); { FILE *fd = (FILE *) x; long i = REF_TO_INT(PEEKVAL()); PEEKVAL() = fseek(fd, i, 0) == 0 ? e_t : e_nil; } GOTO_TOP; case 13: /* change working directory */ POPVAL(x); { char *s = oak_c_string((ref_t *) LOC_TO_PTR(x), REF_TO_INT(PEEKVAL())); PEEKVAL() = chdir(s) == 0 ? e_t : e_nil; free(s); } /* if there is no chdir() then use this: */ /* PEEKVAL() = e_nil; */ GOTO_TOP; default: printf("\nError (vm interpreter): " "bad stream primitive %d.\n", arg_field); UNLOCALIZE_ALL(); maybe_dump_world(333); exit(EXIT_FAILURE); GOTO_TOP; } case 32: /* FILLTAG n */ /* This implements CATCH/THROW */ x = PEEKVAL(); CHECKTAG0(x, PTR_TAG, 1); REF_SLOT(x, ESCAPE_OBJECT_VAL_OFF) = INT_TO_REF(VALUE_STACK_HEIGHT() - arg_field); REF_SLOT(x, ESCAPE_OBJECT_CXT_OFF) = INT_TO_REF(CONTEXT_STACK_HEIGHT()); GOTO_TOP; case 33: /* ^SUPER-CXT, ^SUPER-CXT-BR distance */ /* Analogous to FUNCALL-CXT[-BR]. */ POLL_SIGNALS(); PUSH_CONTEXT(signed_arg_field); /* Fall through to tail recursive case: */ goto super_tail; case 34: /* ^SUPER-TAIL */ /* Do not move this below the label! */ POLL_SIGNALS(); /******************/ super_tail: /******************/ /* No cache, no LAMBDA hack, things are easy. Maybe not looking at the lambda hack is a bug? On stack: type, operation, self, args... */ { ref_t the_type; ref_t y_type; ref_t meth_type; POPVAL(the_type); CHECKTAG1(the_type, PTR_TAG, e_nargs + 2); x = PEEKVAL(); /* The operation. */ CHECKTAG1(x, PTR_TAG, e_nargs + 2); CHECKVAL_POP(1); y = PEEKVAL_UP(1); /* Self. */ y_type = get_type(y); e_current_method = e_nil; find_method_type_pair(x, the_type, &e_current_method, &meth_type); if (e_current_method == e_nil) { if (trace_traps) printf("No handler for ^super operation.\n"); PUSHVAL(the_type); TRAP0(e_nargs + 2); } /* This could be dispensed with if meth_type has no ivars and isn't variable-length-mixin. */ { ref_t offset = lookup_bp_offset(y_type, meth_type); e_bp = REF_TO_PTR(y) + REF_TO_INT(offset); } } x = e_current_method; e_env = REF_TO_PTR(REF_SLOT(x, METHOD_ENV_OFF)); local_e_pc = CODE_SEG_FIRST_INSTR(e_code_segment = REF_SLOT(x, METHOD_CODE_OFF)); GOTO_TOP; #ifndef FAST default: printf("\nError (vm interpreter): " "Illegal parametric instruction %d\n", op_field); UNLOCALIZE_ALL(); maybe_dump_world(333); exit(EXIT_FAILURE); #endif } } } /* The above loop is infinite. We branch down to here when instructions fail, normally from tag traps, and then branch back. */ /*************/ intr_trap: /*************/ /* clear signal */ /*signal_poll_flag = 0;*/ if (signal_poll_flag) { /* We notify Oaklisp of the user trap by telling it that a noop instruction failed. The Oaklisp trap code must be careful to return nothing extra on the stack, and to restore NARGS properly. It is passed the old NARGS. */ /* the NOOP instruction. */ arg_field = op_field = instr = 0; signal_poll_flag = 0; #if ENABLE_TIMER } else if (timer_counter > TIMEOUT) { /* We notify Oaklisp of a timeout trap by telling it that an "alarm" instruction failed. This instruction, bound to arg_field 127, does not really exist. There is, however, a handler function bound to that trap. */ arg_field = 127; op_field = 0; instr = (127 << 8); timer_counter = 0; #endif } else { /* How did we get here? Just do a user trap to get to the debugger. */ arg_field = op_field = instr = 0; } #ifndef FAST if (trace_traps) printf("\nINTR: opcode %d, argfield %d.", op_field, arg_field); #endif /* Back off of the current intruction so it will get executed when we get back from the trap code. */ INCREMENT_PC(local_e_pc, -1); /* Pass the trap code the current NARGS. */ x = INT_TO_REF(e_nargs); trap_nargs = 1; /**************/ arg1_tt: /**************/ CHECKVAL_PUSH(3); PUSHVAL_NOCHECK(x); /*************/ arg0_tt: /*************/ #ifndef FAST if (trace_traps) { printf("\nTag trap: "); print_instr(op_field, arg_field, local_e_pc); printf("Top of stack: "); printref(stdout, PEEKVAL()); printf("\n"); } #endif /* Trick: to preserve tail recursiveness, push context only if next instruction isn't a RETURN and current instruction wasn't a FUNCALL. or a CHECK-NARGS[-GTE]. */ if ((op_field < 20 || op_field > 26 || op_field == 23) && local_e_pc[0] != (24 << 8)) PUSH_CONTEXT(0); /* Trapping instructions stash their argument counts here: */ /* see below */ if (op_field == 0) { /* argless instruction. */ PUSHVAL_NOCHECK(e_argless_tag_trap_table[arg_field]); e_nargs = trap_nargs; /* Set the instruction dispatch in case the FUNCALL fails. */ instr = (22 << 2); op_field = 22; arg_field = e_nargs; goto funcall_tail; } else { /* arg'ed instruction, so push arg field as extra argument */ PUSHVAL_NOCHECK(INT_TO_REF(arg_field)); PUSHVAL_NOCHECK(e_arged_tag_trap_table[op_field]); e_nargs = trap_nargs + 1; /* Set the instruction dispatch in case the FUNCALL fails. */ instr = (22 << 2); op_field = 22; arg_field = e_nargs; goto funcall_tail; } } oaklisp-1.3.7/src/emulator/loop.h000066400000000000000000000022261332762442600167400ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _LOOP_H_INCLUDED #define _LOOP_H_INCLUDED #include "data.h" extern void loop(ref_t); #endif oaklisp-1.3.7/src/emulator/oaklisp.c000066400000000000000000000056471332762442600174360ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #define _REENTRANT #include #include #include #include #include #include "config.h" #include "data.h" #include "cmdline.h" #include "weak.h" #include "stacks.h" #include "worldio.h" #include "loop.h" #include "xmalloc.h" int main(int argc, char **argv) { #ifdef THREADS int my_index; int *my_index_p; pthread_key_create (&index_key, (void*)free_registers); #endif #ifdef THREADS my_index_p = (int *)malloc (sizeof (int)); *my_index_p = get_next_index(); pthread_setspecific (index_key, (void*)my_index_p); my_index_p = pthread_getspecific(index_key); my_index = *my_index_p; gc_ready[my_index] = 0; /* inc_next_index();*/ value_stack_array[my_index] = (oakstack*)malloc (sizeof (oakstack)); cntxt_stack_array[my_index] = (oakstack*)malloc(sizeof (oakstack)); value_stack.size = 1024; value_stack.filltarget = 1024/2; context_stack.size = 512; context_stack.filltarget = 512/2; gc_examine_ptr = gc_examine_buffer; #endif parse_cmd_line(argc, argv); init_weakpointer_tables(); init_stacks(); read_world(world_file_name); new_space.size = e_next_newspace_size = original_newspace_size; alloc_space(&new_space, new_space.size); free_point = new_space.start; #ifdef THREADS register_array[my_index] = (register_set_t*)malloc(sizeof(register_set_t)); #else reg_set = (register_set_t*)malloc(sizeof(register_set_t)); #endif /* Set the registers to the boot code */ e_current_method = e_boot_code; e_env = REF_TO_PTR(REF_SLOT(e_current_method, METHOD_ENV_OFF)); e_code_segment = REF_SLOT(e_current_method, METHOD_CODE_OFF); e_pc = CODE_SEG_FIRST_INSTR(e_code_segment); /* Put a reasonable thing in e_bp to avoid confusing GC */ e_bp = e_env; /* Tell the boot function the truth */ e_nargs = 0; /* Big virtual machine interpreter loop */ loop(INT_TO_REF(54321)); return 0; } oaklisp-1.3.7/src/emulator/signals.c000066400000000000000000000040171332762442600174220ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ /* Handle signals by polling. In order to do this signal_poll_flag is set to > 0 when a signal comes in, and is checked and reset by the bytecode emulator at frequent intervals when it is safe to field an interrupt. BUG: This can delay interrupt handling when waiting for input. */ #define _REENTRANT #include #include #include #include #include "config.h" #include "signals.h" int signal_poll_flag = 0; static void intr_proc(int sig) { signal_poll_flag++; } void enable_signal_polling(void) { signal_poll_flag = 0; if (signal(SIGINT, intr_proc) == SIG_ERR) fprintf(stderr, "Cannot enable signal polling.\n"); } #if 0 /* the following is not used and commented out */ void disable_signal_polling(void) { signal_poll_flag = 0; if (signal(SIGINT, SIG_DFL) == SIG_ERR) fprintf(stderr, "Cannot disable signal polling.\n"); } void clear_signal(void) { signal_poll_flag = 0; } #endif /* commented out */ oaklisp-1.3.7/src/emulator/signals.h000066400000000000000000000023531332762442600174300ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _SIGNAL_H_INCLUDED #define _SIGNAL_H_INCLUDED void enable_signal_polling(void); void disable_signal_polling(void); void clear_signal(void); extern int signal_poll_flag; #endif oaklisp-1.3.7/src/emulator/stacks-loop.h000066400000000000000000000130721332762442600202270ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA #ifndef STACKS_LOOP_INCLUDED #define STACKS_LOOP_INCLUDED #include "stacks.h" #define LOCALIZE_VAL() \ { local_value_sp = value_stack.sp; \ } #define UNLOCALIZE_VAL() \ { value_stack.sp = local_value_sp; \ } #define LOCALIZE_CXT() \ { local_context_sp = context_stack.sp; \ } #define UNLOCALIZE_CXT() \ { context_stack.sp = local_context_sp; \ } #define LOCALIZE_REGS() \ { local_e_pc = e_pc; \ } #define UNLOCALIZE_REGS() \ { e_pc = local_e_pc; \ } #define LOCALIZE_STKS() \ { LOCALIZE_VAL(); \ LOCALIZE_CXT(); \ } #define UNLOCALIZE_STKS() \ { UNLOCALIZE_VAL(); \ UNLOCALIZE_CXT(); \ } #define LOCALIZE_ALL() \ { LOCALIZE_STKS(); \ LOCALIZE_REGS(); \ } #define UNLOCALIZE_ALL() \ { UNLOCALIZE_STKS(); \ UNLOCALIZE_REGS(); \ } #define VALUE_FLUSH(amount_to_leave) \ { UNLOCALIZE_ALL(); \ stack_flush(&value_stack, (amount_to_leave)); \ LOCALIZE_ALL(); \ } #define CONTEXT_FLUSH(amount_to_leave) \ { UNLOCALIZE_ALL(); \ stack_flush(&context_stack, (amount_to_leave)); \ LOCALIZE_ALL(); \ } #define VALUE_UNFLUSH(n) \ { UNLOCALIZE_VAL(); \ stack_unflush(&value_stack, (n)); \ LOCALIZE_VAL(); \ } #define CONTEXT_UNFLUSH(n) \ { UNLOCALIZE_CXT(); \ stack_unflush(&context_stack, (n)); \ LOCALIZE_CXT(); \ } #define DUMP_VALUE_STACK() \ { UNLOCALIZE_VAL(); \ dump_stack(&value_stack); \ } #define DUMP_CONTEXT_STACK() \ { UNLOCALIZE_CXT(); \ dump_stack(&context_stack); \ } #define VALUE_STACK_HEIGHT() \ (local_value_sp - value_stack_bp + 1 \ + value_stack.pushed_count) #define CONTEXT_STACK_HEIGHT() \ (local_context_sp - context_stack_bp + 1 \ + context_stack.pushed_count) /* The top of stack is always visible. Therefore PEEKVAL() can be used as an lvalue. */ #define PEEKVAL() (*local_value_sp) /* When you are sure that the buffer has enough elements in it, use this for looking deeper into the stack */ #define PEEKVAL_UP(x) (*(local_value_sp-(x))) /* Use these when you are sure that overflows and underflows cannot occur. */ #define PUSHVAL_NOCHECK(r) { *++local_value_sp = (r); } #define POPVAL_NOCHECK() (*local_value_sp--) #define PUSHVAL(r) \ { \ if (local_value_sp+1 < value_stack_end) \ { *++local_value_sp = (r); } \ else { \ GC_MEMORY(r); \ VALUE_FLUSH(value_stack.filltarget); \ GC_RECALL(*++local_value_sp); \ } \ } #define PUSHVAL_IMM(r) \ { \ CHECKVAL_PUSH(1); \ PUSHVAL_NOCHECK((r)); \ } #define POPVAL(v) \ { \ CHECKVAL_POP(1); \ (v) = *local_value_sp--; \ } /* The following routines check that n elements can be pushed without overflow */ #define CHECKVAL_PUSH(n) \ { if (&local_value_sp[(n)] >= value_stack_end) \ VALUE_FLUSH(value_stack.filltarget); \ } #define CHECKCXT_PUSH(n) \ { if (&local_context_sp[(n)] >= \ context_stack_end) \ CONTEXT_FLUSH(context_stack.filltarget); \ } /* The following check that n elements can be popped without underflow. */ #define CHECKVAL_POP(n) \ { if (&local_value_sp[-(n)] < value_stack_bp) \ VALUE_UNFLUSH((n)); \ } #define CHECKCXT_POP(n) \ { if (&local_context_sp[-(n)] < context_stack_bp) \ CONTEXT_UNFLUSH((n)); \ } /* This routine avoids having a bogus reference in the segments */ #define BASH_SEGMENT_TYPE() \ { value_stack.segment = e_nil; \ context_stack.segment = e_nil; \ } /* This pops some elements off the value stack. It is inefficient because it copies elements into the buffer and then pops them off. A better thing should be written. */ #define POPVALS(n) \ { CHECKVAL_POP((n)); \ local_value_sp -= (n); \ } #define POPCXTS(n) \ { CHECKCXT_POP((n)); \ local_context_sp -= (n); \ } #define PUSH_CONTEXT(off_set) \ { \ CHECKCXT_PUSH(CONTEXT_FRAME_SIZE); \ local_context_sp[1] = INT_TO_REF((unsigned long)local_e_pc - \ (unsigned long)e_code_segment +((off_set)<<1)); \ local_context_sp[2] = e_current_method; \ local_context_sp[3] = PTR_TO_LOC(e_bp); \ local_context_sp += 3; \ } #define POP_CONTEXT() \ { \ CHECKCXT_POP(CONTEXT_FRAME_SIZE); \ e_bp = LOC_TO_PTR(local_context_sp[0]); \ e_current_method = local_context_sp[-1]; \ e_env = REF_TO_PTR(e_current_method); \ e_code_segment = SLOT(e_env,METHOD_CODE_OFF); \ e_env = REF_TO_PTR(SLOT(e_env,METHOD_ENV_OFF)); \ local_e_pc = (instr_t *) \ ((unsigned long)e_code_segment \ +REF_TO_INT(local_context_sp[-2])); \ local_context_sp -= 3; \ } #define BASH_VAL_HEIGHT(h) \ { int to_pop = VALUE_STACK_HEIGHT()-(h); \ POPVALS(to_pop); \ } #define BASH_CXT_HEIGHT(h) \ { int to_pop = CONTEXT_STACK_HEIGHT()-(h); \ POPCXTS(to_pop); \ } #define MAKE_BACK_VAL_PTR(v,dist) \ { CHECKVAL_POP((dist)); \ (v) = local_value_sp - (dist); \ } #endif oaklisp-1.3.7/src/emulator/stacks.c000066400000000000000000000147471332762442600172650ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #define _REENTRANT #include #include #include #include "config.h" #include "data.h" #include "xmalloc.h" #include "gc.h" #include "stacks.h" int max_segment_size = 256; static ref_t stack_top(oakstack *stack_p) { return *stack_p->sp; } static void stack_newtos(oakstack *stack_p, ref_t x) { *stack_p->sp = x; } static ref_t stack_pop(oakstack *stack_p) { if (stack_p->sp <= stack_p->bp) { stack_unflush(stack_p, stack_p->filltarget); } return *stack_p->sp; } static void stack_push(oakstack *stack_p, ref_t x) { if (stack_p->sp == stack_p->bp + stack_p->size) stack_flush(stack_p, stack_p->filltarget); *++stack_p->sp = x; } void stack_flush(oakstack * stack_p, int amount_to_leave) { /* flushes out the value stack buffer, leaving amount_to_leave */ segment_t *s; int i; int count = stack_p->sp - stack_p->bp + 1; int amount_to_flush = count - amount_to_leave; int amount_unflushed = amount_to_flush; ref_t *src = stack_p->bp; ref_t *end = stack_p->sp - amount_to_leave; /* flush everything between src & end, them move portion of buffer after end down to beginning of buffer. */ #ifndef FAST if (trace_segs) printf("seg:flush-"); #endif while (src <= end) { /* Flush a single segment. */ long size = amount_unflushed; if (size > max_segment_size) size = max_segment_size; /* allocate a new segment */ { ref_t *p; ALLOCATE(p, (size + SEGMENT_HEADER_LENGTH), "space crunch allocating stack segment"); s = (segment_t *)p; } /* fill in header of new segment */ s->type_field = e_segment_type; s->length_field = INT_TO_REF(size + SEGMENT_HEADER_LENGTH); /* link segment onto head of flushed segment list */ s->previous_segment = stack_p->segment; stack_p->segment = PTR_TO_REF(s); for (i = 0; i < size; i++) s->data[i] = *src++; amount_unflushed -= size; #ifndef FAST if (trace_segs) printf("%ld-", size); #endif } for (i = 0; i < amount_to_leave; i++) stack_p->bp[i] = *src++; stack_p->sp = &stack_p->bp[amount_to_leave - 1]; stack_p->pushed_count += amount_to_flush; #ifndef FAST if (trace_segs) printf(".\n"); #endif } /* This routine grabs some segments that have been flushed from the buffer and puts them back in. Because the segments might be small, it may have to put more than one segment back in. It grabs enough so that the buffer has at least n+1 values in it, so that at least n values could be popped off without underflow. */ void stack_unflush(oakstack * stack_p, int n) { long i, number_to_pull = 0; long count = stack_p->sp - stack_p->bp + 1; long new_count = count; segment_t *s = (segment_t *) REF_TO_PTR(stack_p->segment); ref_t *dest; #ifndef FAST if (trace_segs) printf("seg:unflush-"); #endif /* First, figure out how many segments to pull. */ for (; new_count <= n; s = (segment_t *) REF_TO_PTR(s->previous_segment)) { int this_one = REF_TO_INT(s->length_field) - SEGMENT_HEADER_LENGTH; #ifndef FAST if (trace_segs) printf("%d-", this_one); #endif new_count += this_one; number_to_pull += 1; } #ifndef FAST if (trace_segs) printf("(%ld)-", number_to_pull); #endif /* Copy the data in the buffer up to its new home. */ dest = &stack_p->bp[new_count - 1]; for (i = count - 1; i >= 0; i--) *dest-- = stack_p->bp[i]; /* Suck in the segments. */ for (s = (segment_t *) REF_TO_PTR(stack_p->segment); number_to_pull > 0; number_to_pull--) { /* Suck in this segment. */ for (i = REF_TO_INT(s->length_field) - SEGMENT_HEADER_LENGTH - 1 ; i >= 0; i--) *dest-- = s->data[i]; s = (segment_t *) REF_TO_PTR(s->previous_segment); #ifndef FAST if (trace_segs) printf("p"); #endif } stack_p->segment = PTR_TO_REF(s); stack_p->sp = &stack_p->bp[new_count - 1]; stack_p->pushed_count -= (int)(new_count - count); #ifndef FAST if (trace_segs) printf(".\n"); #endif } void dump_stack(oakstack * stack_p) { /* dump part of stack, which is not segmented */ ref_t *p; fprintf(stdout, "stack contents (height: %lu): ", (unsigned long)(stack_p->sp - stack_p->bp + 1 + stack_p->pushed_count)); for (p = stack_p->bp; p <= stack_p->sp; ++p) { printref(stdout, *p); putc(p == stack_p->sp ? '\n' : ' ', stdout); } fflush(stdout); } void init_stacks(void) { #ifdef THREADS int *my_index_p; int my_index; #endif ref_t *ptr; /* For debugging we allocate two ref_t more and initialise these with a special pattern to detect out-of-range writes with assert() */ /* Initialise value stack */ #ifdef THREADS my_index_p = pthread_getspecific (index_key); my_index = *my_index_p; #endif ptr = (ref_t *) xmalloc((value_stack.size + 2) * sizeof(ref_t)); *ptr = PATTERN; ptr[value_stack.size + 1] = PATTERN; value_stack.bp = ptr + 1; value_stack.sp = value_stack.bp; *value_stack.bp = INT_TO_REF(1234); /* This becomes e_nil when segment_type is loaded. */ value_stack.segment = e_nil; value_stack.pushed_count = 0; /* Initialise context stack */ ptr = (ref_t *) xmalloc((context_stack.size + 2) * sizeof(ref_t)); *ptr = PATTERN; ptr[context_stack.size + 1] = PATTERN; context_stack.bp = ptr + 1; context_stack.sp = context_stack.bp; *context_stack.bp = INT_TO_REF(1234); /* This becomes e_nil when segment_type is loaded. */ context_stack.segment = e_nil; context_stack.pushed_count = 0; } oaklisp-1.3.7/src/emulator/stacks.h000066400000000000000000000043461332762442600172640ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _STACKS_H_INCLUDED #define _STACKS_H_INCLUDED #include "config.h" #include "gc.h" #include "data.h" extern int max_segment_size; /* flushed stack segment. Allocated and gc'ed in the oaklisp heap. */ typedef struct { /* Do not rearange this structure or you'll be sorry! */ ref_t type_field; ref_t length_field; ref_t previous_segment; ref_t data[1]; } segment_t; #define SEGMENT_HEADER_LENGTH (sizeof(segment_t)/sizeof(ref_t)-1) /* stack type */ typedef struct { int size; /* size of stack buffer */ int filltarget; /* how high to fill buffer ideally */ ref_t *bp; /* pointer to this stack's "buffer" */ ref_t *sp; /* pointer to top element in stack */ ref_t segment; /* head of linked list of flushed segments */ int pushed_count; /* number of ref's in flushed segment list */ } oakstack; #ifdef THREADS extern oakstack *value_stack_array[]; extern oakstack *cntxt_stack_array[]; #else extern oakstack value_stack; extern oakstack context_stack; #endif extern void init_stacks(void); extern void stack_flush(oakstack * stack_p, int amount_to_leave); extern void stack_unflush(oakstack * stack_p, int n); extern void dump_stack(oakstack * stack_p); #endif oaklisp-1.3.7/src/emulator/threads.c000066400000000000000000000120761332762442600174200ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA #define _REENTRANT #include #include #include #include #include "threads.h" #include "xmalloc.h" #include "stacks.h" #include "loop.h" #include "gc.h" #ifdef THREADS int next_index = 0; pthread_key_t index_key; pthread_mutex_t gc_lock = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t alloc_lock = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t index_lock = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t test_and_set_locative_lock = PTHREAD_MUTEX_INITIALIZER; bool gc_pending = false; int gc_ready[MAX_THREAD_COUNT]; register_set_t* register_array[MAX_THREAD_COUNT]; oakstack *value_stack_array[MAX_THREAD_COUNT]; oakstack *cntxt_stack_array[MAX_THREAD_COUNT]; #endif #ifdef THREADS static instr_t tail_recurse_instruction = (22 << 2); #endif typedef struct { ref_t start_operation; int parent_index; int my_index; } start_info_t; #ifdef THREADS static void *init_thread(void *info_p); #endif int create_thread(ref_t start_operation) { #ifdef THREADS pthread_t new_thread; int index; start_info_t *info_p = (start_info_t *)malloc(sizeof(start_info_t)); index = get_next_index(); if (index == -1) { fprintf (stderr, "Max thread count of %d has been exceeded. No thread created\n", MAX_THREAD_COUNT); return 0; } gc_ready[index] = 0; info_p->start_operation = start_operation; info_p->parent_index = *((int *)pthread_getspecific(index_key)); info_p->my_index = index; if (pthread_create(&new_thread, NULL, (void *)init_thread, (void *)info_p)) // Error creating --- need to add some clean up code here !!! return 0; else return 1; #else return 0; #endif } #ifdef THREADS static void *init_thread (void *info_p) { int my_index; int *my_index_p; start_info_t info; my_index_p = (int *)malloc(sizeof(int)); info = *((start_info_t *)info_p); free(info_p); /* Retrieve the next index in the thread arrays and lock it so another starting thread cannot get the same index */ *my_index_p = info.my_index; my_index = *my_index_p; pthread_setspecific(index_key, (void *)my_index_p); /* Increment also releases the gc lock on next_index so another starting thread can get the lock, or a thread that is gc'ing can get the lock */ /* Shouldn't get interrupted for gc until after stacks are created. This is below here in the vm not checking intterupts until after we get to the loop */ value_stack_array[my_index] = (oakstack*)malloc (sizeof (oakstack)); cntxt_stack_array[my_index] = (oakstack*)malloc(sizeof (oakstack)); value_stack_array[my_index]->size = value_stack_array[0]->size; value_stack_array[my_index]->filltarget = value_stack_array[0]->filltarget; cntxt_stack_array[my_index]->size = cntxt_stack_array[0]->size; cntxt_stack_array[my_index]->filltarget = cntxt_stack_array[0]->filltarget; init_stacks (); register_array[my_index] = (register_set_t*)malloc(sizeof (register_set_t)); memcpy(register_array[my_index], register_array[info.parent_index], sizeof(register_set_t)); gc_examine_ptr = gc_examine_buffer; /* At this point, it should be OK if the garbage collector gets run. */ e_pc = &tail_recurse_instruction; e_nargs = 0; /* Big virtual machine interpreter loop */ loop(info.start_operation); return 0; } #endif void set_gc_flag (bool flag) { #ifdef THREADS int *my_index_p; int my_index; my_index_p = pthread_getspecific (index_key); my_index = *(my_index_p); if (flag == true) { pthread_mutex_lock (&gc_lock); gc_pending = flag; } else { gc_pending = flag; pthread_mutex_unlock (&gc_lock); } #endif } /* Increment uses the gc lock since we must be sure that a new thread does not get started and begin processing while the gc is already running. The get_next_index additionally ensures that no two threads get the same index when starting */ int get_next_index () { int ret = -1; #ifdef THREADS pthread_mutex_lock (&index_lock); if (next_index >= MAX_THREAD_COUNT) { ret = -1; } else { ret = next_index; next_index++; } pthread_mutex_unlock (&index_lock); #endif return (ret); } void free_registers () { } void wait_for_gc() { #ifdef THREADS int *my_index_p; int my_index; my_index_p = pthread_getspecific (index_key); my_index = *(my_index_p); gc_ready[my_index] = 1; pthread_mutex_lock (&gc_lock); gc_ready[my_index] = 0; pthread_mutex_unlock (&gc_lock); #endif } oaklisp-1.3.7/src/emulator/threads.h000066400000000000000000000021261332762442600174200ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA #ifndef _THREADS_H_INCLUDED #define _THREADS_H_INCLUDED #include #include "config.h" #ifdef THREADS extern int next_index; extern pthread_key_t index_key; extern pthread_mutex_t index_lock; extern pthread_mutex_t alloc_lock; extern pthread_mutex_t test_and_set_locative_lock; #endif #ifdef THREADS #define THREADY(x) x #else #define THREADY(x) #endif #endif /*_THREADS_H_INCLUDED*/ oaklisp-1.3.7/src/emulator/timers.c000066400000000000000000000056121332762442600172670ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #define _REENTRANT #include #include #include #include #include #include #include "config.h" #include "timers.h" #ifdef HAVE_GETTICKCOUNT unsigned long get_real_time(void) { return (unsigned long)GetTickCount(); } unsigned long get_user_time(void) { return get_real_time(); } #else #ifdef HAVE_GETRUSAGE #include #include unsigned long get_real_time(void) { unsigned long result; struct timeval tnow; if (0 != gettimeofday(&tnow, 0)) { fprintf(stderr, "ERROR (Time): Unable to obtain time of day; %s\n", strerror(errno)); exit(EXIT_FAILURE); } else { result = tnow.tv_sec * 1000 + tnow.tv_usec / 1000; return result; } } unsigned long get_user_time(void) { struct rusage rusage; unsigned long result; if (0 != getrusage(RUSAGE_SELF, &rusage)) { fprintf(stderr, "ERROR (Time): Unable to getrusage(); %s\n", strerror(errno)); exit(EXIT_FAILURE); } else { result = rusage.ru_utime.tv_sec * 1000 + rusage.ru_utime.tv_usec / 1000; return result; } } #else #ifdef HAVE_CLOCK unsigned long get_real_time(void) { #ifdef HAVE_LONG_LONG unsigned long long temp; temp = (unsigned long long)clock() * (1000ull / CLOCKS_PER_SEC); #else long temp; temp = (clock() * 1000) / (CLOCKS_PER_SEC); #endif /* caution: the clock() function on some systems with a high frequency clock (e.g. transputers ) give values modulo a not too big time span, so a wrap around can occur between to calls, which leads to odd results */ return (unsigned long)temp; } unsigned long get_user_time(void) { return get_real_time(); } #else unsigned long get_real_time(void) { return 0; } unsigned long get_user_time(void) { return 0; } #endif #endif #endif oaklisp-1.3.7/src/emulator/timers.h000066400000000000000000000023541332762442600172740ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _TIMERS_H_INCLUDED #define _TIMERS_H_INCLUDED /* the functions return milliseconds */ extern unsigned long get_real_time(void); extern unsigned long get_user_time(void); #endif oaklisp-1.3.7/src/emulator/weak.c000066400000000000000000000121701332762442600167100ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #define _REENTRANT #include #include #include #include "config.h" #include "data.h" #include "xmalloc.h" #include "gc.h" #include "weak.h" /* * Weak pointers are done with a simple table that goes from weak * pointers to objects, and a hash table that goes from objects to * their weak pointers. * In the future, this will be modified to keep separate hash tables * for the different areas, so that objects in spatic space need not * be rehashed. * Plus another one for unboxed values like fixnums. */ const int wp_table_size = 3000; const int wp_hashtable_size = 3017; ref_t *wp_table; /* wp -> ref */ int wp_index = 0; /* number of entries in wp_table */ /* A hash table from references to their weak pointers. This hash * table is not saved in dumped worlds, and is rebuilt from scratch * after each GC and upon booting a new world. * Structure of this hash table: * Keys are references themselves, smashed about and xored if deemed * necessary. * Sequential rehash, single probe. */ typedef struct { ref_t obj; ref_t wp; } wp_hashtable_entry; wp_hashtable_entry *wp_hashtable; /* The following magic number is floor( 2^32 * (sqrt(5)-1)/2 ). */ #define wp_key(r) ((unsigned long) 0x9E3779BB*(r)) /* >>10, == 2654435771L */ void init_weakpointer_tables(void) { wp_table = (ref_t *) xmalloc((wp_table_size + 1) * sizeof(ref_t)); wp_hashtable = (wp_hashtable_entry *) xmalloc(sizeof(wp_hashtable_entry) * wp_hashtable_size); } /* Register r as having weak pointer wp. */ static void enter_wp(ref_t r, ref_t wp) { long i = wp_key(r) % wp_hashtable_size; while (1) /* forever */ if (wp_hashtable[i].obj == e_false) { wp_hashtable[i].obj = r; wp_hashtable[i].wp = wp; return; } else if (++i == wp_hashtable_size) i = 0; } /* Rebuild the weak pointer hash table from the information in the table that takes weak pointers to objects. */ void rebuild_wp_hashtable(void) { long i; for (i = 0; i < wp_hashtable_size; i++) wp_hashtable[i].obj = e_false; for (i = 0; i < wp_index; i++) if (wp_table[1 + i] != e_false) enter_wp(wp_table[1 + i], INT_TO_REF(i)); } /* Return weak pointer associated with obj, making a new one if necessary. */ ref_t ref_to_wp(ref_t r) { long i; ref_t temp; if (r == e_false) return INT_TO_REF(-1); i = wp_key(r) % wp_hashtable_size; while (1) /* forever */ { temp = wp_hashtable[i].obj; if (temp == r) { return wp_hashtable[i].wp; } else if (temp == e_false) { /* Make a new weak pointer, installing it in both tables: */ wp_hashtable[i].obj = wp_table[1 + wp_index] = r; return wp_hashtable[i].wp = INT_TO_REF(wp_index++); } else if (++i == wp_hashtable_size) { i = 0; } } } #if 0 /* commented out */ #include void wp_hashtable_distribution(void) { long i; for (i = 0; i < wp_hashtable_size; i++) { ref r = wp_hashtable[i].obj; if (r == e_false) (void)putchar('.'); else { unsigned long j = wp_key(r) % wp_hastable_size; long dist = i - j; if (dist < 0) dist += wp_hastable_size; if (dist < 1 + '9' - '0') (void)putchar((char)('0' + dist)); else if (dist < 1 + 'Z' - 'A' + 1 + '9' - '0') (void)putchar((char)('A' + dist - (1 + '9' - '0'))); else (void)putchar('*'); } fflush(stdout); } } #endif /* commented out */ unsigned long post_gc_wp(void) { /* Scan the weak pointer table. When a reference to old space is found, check if the location has a forwarding pointer. If so, update it; if not, discard it. */ long i; unsigned long discard_count = 0; for (i = 0; i < wp_index; i++) { ref_t r = wp_table[1 + i], *p; if ((r & PTR_MASK) && (p = ANY_TO_PTR(r), OLD_PTR(p))) { ref_t r1 = *p; if (TAG_IS(r1, LOC_TAG) && NEW_PTR(LOC_TO_PTR(r1))) { wp_table[1 + i] = TAG_IS(r, LOC_TAG) ? r1 : r1 | PTR_TAG; } else { wp_table[1 + i] = e_false; discard_count += 1; } } } rebuild_wp_hashtable(); return discard_count; } oaklisp-1.3.7/src/emulator/weak.h000066400000000000000000000026331332762442600167200ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _WEAK_H_INCLUDED #define _WEAK_H_INCLUDED #include "data.h" void init_weakpointer_tables(void); void rebuild_wp_hashtable(void); ref_t ref_to_wp(ref_t r); extern unsigned long post_gc_wp(void); /* Weak pointer table and weak pointer hashtable */ extern const int wp_table_size, wp_hashtable_size; extern ref_t *wp_table; extern int wp_index; #endif oaklisp-1.3.7/src/emulator/worldio.c000066400000000000000000000216501332762442600174430ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /*********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-2000. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * ***********************************************************************/ #define _REENTRANT #include #include #include #include #include #include "config.h" #include "data.h" #include "xmalloc.h" #include "worldio.h" #include "weak.h" void xfread(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t r = fread(ptr, size, nmemb, stream); if (r != nmemb) { fprintf(stderr, "error: expected to read %lu elements of size %lu but received %lu\n", (unsigned long)nmemb, (unsigned long)size, (unsigned long)r); exit(EXIT_FAILURE); } } /* * Format of Oaklisp world image: * * UNUSED: * UNUSED: * * * * * * * */ static bool input_is_binary; /* These are for making the world zero-based and contiguous in dumps. */ static ref_t contig(ref_t r, bool just_new) { ref_t *p = ANY_TO_PTR(r); if (just_new) if (NEW_PTR(p)) return ((ref_t) (p - new_space.start) << 2) | (r & 3); else printf("Non-new pointer %lu found.\n", (unsigned long)r); else if (SPATIC_PTR(p)) return ((ref_t) (p - spatic.start) << 2) | (r & 3); else if (NEW_PTR(p)) return ((ref_t) (p - new_space.start + spatic.size) << 2) | (r & 3); else printf("Non-new or spatic pointer %lu found.\n", (unsigned long)r); return r; } #define contigify(r) ((r)&0x2 ? contig((r),just_new) : (r)) #define CONTIGIFY(v) { if ((v)&2) (v) = contig((v),just_new); } static ref_t read_ref(FILE * d) { /* Read a reference from a file: */ int c; /* It's easy to read a reference from a binary file. */ if (input_is_binary) { ref_t a; xfread((void *)&a, sizeof(ref_t), 1, d); return a; } else { ref_t a; unsigned long b; fscanf(d, " "); bool swapem = (c = getc(d)) == '^'; if (!swapem) ungetc(c, d); if (fscanf(d, "%lx", &b) != 1) { printf("Error reading cold load file, might be truncated.\n"); exit(EXIT_FAILURE); } a = b; #ifndef WORDS_BIGENDIAN if (swapem) a = ((a&0xFFFF) << 16 | (a&0xFFFF0000) >> 16); #endif return a; } /* input_is_binary */ } #define REFBUFSIZ 256 static ref_t refbuf[REFBUFSIZ]; static void dump_binary_world(bool just_new) { FILE *wfp = 0; ref_t *memptr; ref_t theref; /* CAUTION: STACK SPACE!!! */ int imod = 0; unsigned long worlsiz = free_point - new_space.start; unsigned long DUMMY = 0; fprintf(stderr, "Dumping in binary.\n"); wfp = fopen(dump_file_name, WRITE_BINARY_MODE); if (!wfp) { fprintf(stderr, "error opening \"%s\"\n", dump_file_name); exit(EXIT_FAILURE); } if (!just_new) worlsiz += spatic.size; putc('\002', wfp); putc('\002', wfp); putc('\002', wfp); putc('\002', wfp); /* Header information. */ fwrite((const void *)&DUMMY, sizeof(ref_t), 1, wfp); fwrite((const void *)&DUMMY, sizeof(ref_t), 1, wfp); theref = contigify(e_boot_code); fwrite((const void *)&theref, sizeof(ref_t), 1, wfp); fwrite((const void *)&worlsiz, sizeof(ref_t), 1, wfp); /* Dump the heap. */ /* Maybe dump spatic space. */ if (!just_new) for (memptr = spatic.start; memptr < spatic.end; memptr++) { theref = *memptr; CONTIGIFY(theref); refbuf[imod++] = theref; if (imod == REFBUFSIZ) { fwrite((const void *)refbuf, sizeof(ref_t), imod, wfp); imod = 0; } } /* Dump new space. */ for (memptr = new_space.start; memptr < free_point; memptr++) { theref = *memptr; CONTIGIFY(theref); refbuf[imod++] = theref; if (imod == REFBUFSIZ) { fwrite((const void *)refbuf, sizeof(ref_t), imod, wfp); imod = 0; } } if (imod != 0) fwrite((const void *)refbuf, sizeof(ref_t), imod, wfp); /* Weak pointer table. */ theref = (ref_t) wp_index; fwrite((const void *)&theref, sizeof(ref_t), 1, wfp); for (imod = 0; imod < wp_index; imod++) { theref = wp_table[1 + imod]; CONTIGIFY(theref); fwrite((const void *)&theref, sizeof(ref_t), 1, wfp); } fclose(wfp); } static void dump_ascii_world(bool just_new) { ref_t *memptr, theref; long i; int eighter = 0; char *control_string = (dump_base == 10 ? "%ld " : "%lx "); FILE *wfp = 0; fprintf(stderr, "Dumping in ascii.\n"); wfp = fopen(dump_file_name, WRITE_MODE); if (!wfp) { fprintf(stderr, "error: cannot open \"%s\"\n", dump_file_name); exit(EXIT_FAILURE); } fprintf(wfp, control_string, 0 /*val_stk_size */ ); fprintf(wfp, control_string, 0 /*cxt_stk_size */ ); fprintf(wfp, control_string, contigify(e_boot_code)); fprintf(wfp, control_string, free_point - new_space.start + (just_new ? 0 : spatic.size)); /* Maybe dump spatic space. */ if (!just_new) for (memptr = spatic.start; memptr < spatic.end; memptr++) { if (eighter == 0) fprintf(wfp, "\n"); theref = *memptr; CONTIGIFY(theref); fprintf(wfp, control_string, theref); eighter = (eighter + 1) % 8; } eighter = 0; for (memptr = new_space.start; memptr < free_point; memptr++) { if (eighter == 0) fprintf(wfp, "\n"); theref = *memptr; CONTIGIFY(theref); fprintf(wfp, control_string, theref); eighter = (eighter + 1) % 8; } fprintf(wfp, "\n"); /* Write the weak pointer table. */ fprintf(wfp, control_string, wp_index); eighter = 0; for (i = 0; i < wp_index; i++) { if (eighter == 0) fprintf(wfp, "\n"); theref = wp_table[1 + i]; CONTIGIFY(theref); fprintf(wfp, control_string, theref); eighter = (eighter + 1) % 8; } fclose(wfp); } void dump_world(bool just_new) { fprintf(stderr, "About to dump the oaklisp world.\n"); if (dump_base == 2) dump_binary_world(just_new); else dump_ascii_world(just_new); } static void reoffset(ref_t baseAddr, ref_t * start, long count) { long index; ref_t *next; next = start; for (index = 0; index < count; index++) { if (*next & 2) *next += baseAddr; next++; } } void read_world(char *str) { FILE *d; int magichar; if ((d = fopen(str, READ_BINARY_MODE)) == 0) { printf("Can't open \"%s\".\n", str); exit(EXIT_FAILURE); } magichar = getc(d); if (magichar == (int)'\002') { getc(d); getc(d); getc(d); input_is_binary = 1; } else { ungetc(magichar, d); input_is_binary = 0; #ifdef WORDS_BIGENDIAN printf("Big Endian.\n"); #else printf("Little Endian.\n"); #endif } /* Obsolescent: read val_space_size and cxt_space_size: */ (void)read_ref(d); (void)read_ref(d); e_boot_code = read_ref(d); spatic.size = (size_t) read_ref(d); alloc_space(&spatic, spatic.size); e_boot_code += (ref_t) spatic.start; { long load_count; ref_t *mptr, next; load_count = spatic.size; mptr = spatic.start; if (input_is_binary) { xfread((void *)spatic.start, sizeof(ref_t), load_count, d); reoffset((ref_t) spatic.start, spatic.start, load_count); } else while (load_count != 0) { next = read_ref(d); if (next & 2) next += (ref_t) spatic.start; *mptr++ = next; --load_count; } /* Load the weak pointer table. */ wp_index = read_ref(d); if (wp_index + 1 > wp_table_size) { fprintf(stderr, "Error (loading world): number of weak pointers in world" " exceeds internal table size.\n"); exit(EXIT_FAILURE); } load_count = wp_index; mptr = &wp_table[1]; if (input_is_binary) { xfread((void *)&wp_table[1], sizeof(ref_t), (long)wp_index, d); reoffset((ref_t) spatic.start, &wp_table[1], wp_index); } else while (load_count != 0) { next = read_ref(d); if (next & 2) next += (ref_t) spatic.start; *mptr++ = next; --load_count; } } /* The weak pointer hash table is rebuilt when e_nil is set. */ fclose(d); } oaklisp-1.3.7/src/emulator/worldio.h000066400000000000000000000022761332762442600174530ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _WORLDIO_H_INCLUDED #define _WORLDIO_H_INCLUDED extern void dump_world(bool justnew); extern void read_world(char *string); #endif oaklisp-1.3.7/src/emulator/xmalloc.c000066400000000000000000000076301332762442600174250ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #define _REENTRANT #include #include #include #undef NDEBUG #include #include "config.h" #include "data.h" #include "xmalloc.h" void * xmalloc(size_t size) { /* replacement for ansi-library-malloc */ void *ptr = malloc(size); if (ptr) { return ptr; } else { fprintf(stderr, "ERROR(xmalloc): Unable to allocate %lu bytes.\n", (unsigned long)size); exit(EXIT_FAILURE); return 0; } } void alloc_space(space_t * pspace, size_t size_requested) { /* size_requested measures references */ void *ptr = xmalloc(sizeof(ref_t) * size_requested); pspace->start = (ref_t *) ptr; pspace->size = size_requested; pspace->end = pspace->start + size_requested; } void free_space(space_t * pspace) { void *ptr = (void *)pspace->start; assert(ptr != 0); free(ptr); pspace->start = pspace->end = 0; pspace->size = 0; } /*This is called by gc. Can't acquire alloc lock from gc since inversion occurs with macro ALLOC_SS but no need*/ void realloc_space(space_t * pspace, size_t size_requested) { void *ptr = (void *)pspace->start; void *newptr = realloc(ptr, sizeof(ref_t) * (size_requested)); if (ptr == NULL) { fprintf(stderr, "error: realloc_space() does not expect a null pointer\n"); exit(EXIT_FAILURE); } /* This is called during a full GC to convert the old new space to the new spatic space. Any unallocated new space is trimmed. So this should be decreasing the size, or at worst leaving it the same. For that reason we do not expect the storage to be moved. If it is: uh oh! */ if (ptr != newptr) { fprintf(stderr, "error: realloc() with decreased size moved storage in realloc_space()\n"); exit(EXIT_FAILURE); } pspace->end = pspace->start + size_requested; pspace->size = size_requested; } void oak_c_string_fill(ref_t * oakstr, char *cstring, int len) { int i = 0; while (i + 2 < len) { unsigned long temp = *oakstr; cstring[i + 0] = 0xff & (temp >> 2); cstring[i + 1] = 0xff & (temp >> (8 + 2)); cstring[i + 2] = 0xff & (temp >> (16 + 2)); oakstr++; i += 3; } if (i + 1 < len) { unsigned long temp = *oakstr; cstring[i + 0] = 0xff & (temp >> 2); cstring[i + 1] = 0xff & (temp >> (8 + 2)); oakstr++; i += 2; } else if (i < len) { unsigned long temp = *oakstr; cstring[i + 0] = 0xff & (temp >> 2); /* oakstr++; */ i++; } cstring[i + 0] = '\0'; } char * oak_c_string(ref_t * oakstr, int len) { /* Converts an Oaklisp string, given by a pointer to its start and a length, to an equivalent C-string. The storage allocated by this routine must be free()-ed. */ char *const cstring = xmalloc(len + 1); oak_c_string_fill(oakstr, cstring, len); return cstring; } oaklisp-1.3.7/src/emulator/xmalloc.h000066400000000000000000000026301332762442600174250ustar00rootroot00000000000000// This file is part of Oaklisp. // // 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. // // The GNU GPL is available at http://www.gnu.org/licenses/gpl.html // or from the Free Software Foundation, 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA /********************************************************************** * Copyright (c) by Barak A. Pearlmutter and Kevin J. Lang, 1987-99. * * Copyright (c) by Alex Stuebinger, 1998-99. * * Distributed under the GNU General Public License v2 or later * **********************************************************************/ #ifndef _XMALLOC_H_INCLUDED #define _XMALLOC_H_INCLUDED #include #include "data.h" extern void *xmalloc(size_t size); extern void alloc_space(space_t * pspace, size_t size_requested); extern void free_space(space_t * pspace); extern void realloc_space(space_t * pspace, size_t size_requested); char *oak_c_string(ref_t * oakstr, int len); #endif oaklisp-1.3.7/src/misc/000077500000000000000000000000001332762442600147175ustar00rootroot00000000000000oaklisp-1.3.7/src/misc/README000066400000000000000000000000511332762442600155730ustar00rootroot00000000000000Miscellaneous material: contributed etc. oaklisp-1.3.7/src/misc/testing-tests.oak000066400000000000000000000012731332762442600202330ustar00rootroot00000000000000;;; From: Ken Kickey ;; (require 'unit-testing) ;; (load "unit-testing.oak") (add-eq-test 'one #t (= 1 1) "equal") (add-eq-test 'one #f (< 2 1) "less") (add-eq-test 'one 'foo (intern "FOO") "eq?") ;; interning case is UPPER (add-equal-test 'one "FOO" ((coercer string) 'foo) "equal?") (add-test 'one 37 (+ 36 1) = "addition") (add-test 'two 54 (max 32 1 54 7 23 7 21) = "max") (add-test 'two 'yes (if (> 2 1) 'yes 'no) eq? "if") ;;(add-test 'two 'error-failure (if (> 2 1) 'yes 'no) eq? "if failure") (ensure-exception-raised 'two generic-fatal-error (/ 7 0) "zero divisor exception") ;;(set! (verbose? unit-tests) #t) ;;(run-all-tests unit-tests) ;; EOF ;; oaklisp-1.3.7/src/misc/uniq.oak000066400000000000000000000004071332762442600163700ustar00rootroot00000000000000(define (uniq lis) (do ((alist '() (let ((x (car lis))) (cond ((assoc x alist) => (lambda (p) (set! (cdr p) (+ (cdr p) 1)) alist)) (else (cons (cons x 1) alist))))) (lis lis (cdr lis))) ((null? lis) alist))) oaklisp-1.3.7/src/misc/unit-testing.oak000066400000000000000000000253271332762442600200560ustar00rootroot00000000000000;;; FILE "unit-testing.oak" ;;; IMPLEMENTS Unit Testing for Oaklisp ;;; AUTHOR Ken Dickey ;;; COPYRIGHT (c) 2004 by Kenneth A Dickey; All rights reserved. ;;; This is free software. Permission to use, copy, modify and ;;; distribute this software for non-profit purpose is granted without ;;; fee. It is provided "as is" without express or implied warranty. ;;; The author disclaims all warranties with regard to this software. ;;; In no event shall the author be liable for any damages. ;;;USAGE SYNOPSIS ;; Tests are first created and added to a global UNIT-TESTS "database". ;; Tests are arranged by UNIT-NAME (just a symbol naming a set of tests). ;; ;; SPECIAL FORMS: ;; (ADD-TEST unit-name expected-result form =? . message) ;; ;; (ADD-EQ-TEST unit-name expected-result form . message) ;; => (add-test unit-name expected-result form EQ? . message) ;; ;; (ADD-EQUAL-TEST unit-name expected-result form . message) ;; => (add-test unit-name expected-result form EQUAL? . message) ;; ;; (ENSURE-EXCEPTION-RAISED unit exception-type form . message) ;; -> test that the form signals a (subtype of) exception-type ;; ;; All forms are "thunkified" by being wrapped in zero argument lambdas. ;; Internal usage is: (=? expected (thunk)) ;; ;; ;; TESTING OPERATIONS: ;; (RUN-ALL-TESTS unit-tests) => Run all suites of tests. ;; ;; (RUN-TESTS-FOR unit-tests 'whatever) => Run tests for unit named WHATEVER. ;; ;; (REMOVE-TESTS-FOR unit-tests 'whatever) => Remove tests for unit named WHATEVER. ;; ..handy before rereading a test defining file. ;; ;; If (VERBOSE? unit-tests) is false, only failures and exceptions are ;; reported, else successful tests are reported as well. ;; The default value is #f. Settable. ;; ;; If (BREAK-ON-ERROR? unit-tests) is true, errors and exceptions break ;; into the debugger, otherwise failures are just reported. ;; The default value is #f. Settable. ;; ;; Tests are typically written as separate files containing set-up & tear-down code. ;; @@QUESTION: Add optional set-up and tear-down forms to unit test suites? ;; ;; Note Also: ;; (RUN-TEST verbose-p break-on-error-p) ;; Run a single -- typically only used for debugging tests. ;; If no error, don't report unless VERBOSE-P ;; If error or exception, break into debugger if BREAK-ON-ERROR-P, else continue ;; ;; (make unit-name expected thunk =? . message) ;; @@QUESTION: Should take an output-stream? Currently all output ;; goes to (current-output-port). ;;;====================================================================== ;; @@FIXME: TABLE-WALK belongs in hash-table.oak ;; Should define WALK for SEQUENCE as well... (define-instance table-walk operation) ;; proc takes 2 args: (lambda (key val) ...) (add-method (table-walk (generic-hash-table table count size) self proc) (dotimes (index size) (let ((chain (nth table index))) (for-each (lambda (bucket) (proc (car bucket) (cdr bucket))) chain)))) (add-method (table-walk (eq-hash-table table count size) self proc) (dotimes (index size) (let ((chain (nth table index))) (for-each (lambda (bucket) (proc (car bucket) (cdr bucket))) chain)))) ;;;====================================================================== ;; @@FIXME: Is a reasnable naming convention for type FOO? (define-instance type '(verbose-p break-on-error-p) (list eq-hash-table)) ; really a symbol-table (add-method (initialize ( verbose-p break-on-error-p) self) (set! verbose-p #f) (set! break-on-error-p #f) (^super eq-hash-table initialize self)) ;; @@FIXME: This should not be required. Why not simply inherited? (add-method ((setter table-entry) () self key value) (^super eq-hash-table (setter table-entry) self key value)) (define-instance verbose? settable-operation) (define-instance break-on-error? settable-operation) (add-method (verbose? ( verbose-p) self) verbose-p) (add-method ((setter verbose?) ( verbose-p) self bool) (set! verbose-p bool)) (add-method (break-on-error? ( break-on-error-p) self) break-on-error-p) (add-method ((setter break-on-error?) ( break-on-error-p) self bool) (set! break-on-error-p bool)) (define-instance add-unit-test operation) (add-method (add-unit-test () self unit test-case) (set! (table-entry self unit) (cond ((present? self unit) => (lambda (bucket) (cons test-case (cdr bucket)))) (else (list test-case)))) test-case) (define-instance remove-tests-for operation) ;; @@FIXME: no way to remove table entries ?!? (add-method (remove-tests-for () self unit) (set! (table-entry self unit) #f)) (define-instance tests-for operation) (add-method (tests-for () self unit) (table-entry self unit)) (define-constant unit-tests (make )) (define-instance type '(expected thunk compare? message) (list object)) (add-method (initialize ( expected thunk compare? message) self expected-result the-thunk comparison-op? msg) (set! expected expected-result) (set! thunk the-thunk) (set! compare? comparison-op?) (set! message msg) self) (define-syntax (add-test unit expect form equivalent? . message) (let ((msg (if (pair? message) (car message) ""))) `(add-unit-test unit-tests ,unit (make ,expect (lambda () ,form) ,equivalent? ,msg) ))) (define-syntax (add-eq-test unit expect form . message) `(add-test ,unit ,expect ,form eq? . ,message)) (define-syntax (add-equal-test unit expect form . message) `(add-test ,unit ,expect ,form equal? . ,message)) (define-syntax (ensure-exception-raised unit exception-type form . message) (let ((msg (if (pair? message) (car message) ""))) `(add-unit-test unit-tests ,unit (make ,exception-type (lambda () ,form) ,msg) ))) (define-instance type '() (list )) (add-method (initialize () self exception-type thunk message) (unless (subtype? exception-type condition) (error "An requires an exception type: ~a" exception-type)) (^super initialize self exception-type thunk subtype? message) self) (define-instance run-test operation) (define-instance run-all-tests operation) (define-instance run-tests-for operation) ;; Run a ;; If no error, don't report unless VERBOSE-P ;; If error or exception, break into debugger if BREAK-ON-ERROR-P, else continue (add-method (run-test ( expected thunk compare? message) self verbose-p break-on-error-p) (let* ((caught-exception #f) (actual (bind-error-handler (general-error ;; catch every type of error (lambda (err-obj) (set! caught-exception err-obj) (format #t "~&*** EXCEPTION: ~a ~a" err-obj message) (describe err-obj) #f)) (thunk))) ) (cond (caught-exception => (lambda (err-obj) (if break-on-error-p (invoke-debugger err-obj) err-obj)) ;; return err-obj if not breaking ) ((compare? actual expected) (if verbose-p (format #t "~&PASSED: Expected: ~a Got: ~a ~a" expected actual message) #t) ;; compare => #t ) (else ((if break-on-error-p error warning) "~&*** FAILED: Expected ~a Got ~a ~a" expected actual message))))) (add-method (run-tests-for ( verbose-p break-on-error-p) self unit) (let ((unit-tests (tests-for self unit))) (if unit-tests (for-each (lambda (test) (run-test test verbose-p break-on-error-p)) (reverse unit-tests)) ((if break-on-error-p error warning) "~&HUH? No tests found for ~A" unit)))) (add-method (run-all-tests ( verbose-p break-on-error-p) self) (table-walk self (lambda (unit tests) (if tests (block (format #t "~&===>Starting Tests for ~a" unit) (for-each (lambda (test) (run-test test verbose-p break-on-error-p)) (reverse tests)) (format #t "~&===> Completed Tests for ~a~&" unit) ) ((if break-on-error-p error warning) "~&HUH? No tests found for ~A" unit))))) (add-method (run-test () self verbose-p break-on-error-p) ;; helper required for access to internals (%run-exception-test self verbose-p break-on-error-p)) (define-instance %run-exception-test operation) (add-method (%run-exception-test ( expected thunk compare? message) self verbose-p break-on-error-p) (unless (subtype? (get-type self)) (error "EXCEPTION TEST INVOKED ON NON-EXECEPTION: ~a" self)) (let* ((caught-exception #f) (actual (bind-error-handler (general-error ;; catch every type of error (lambda (err-obj) (set! caught-exception err-obj) err-obj)) (thunk))) ) (cond ((compare? (get-type actual) expected) (if verbose-p (format #t "~&PASSED: Expected: ~a Got: ~a of type ~a ~a" expected actual (get-type actual) message) #t) ;; compare => #t ) (caught-exception => (lambda (err-obj) (format #t "~&*** UNEXPECTED EXCEPTION: got ~a of type ~a expected ~a: ~a" err-obj (get-type err-obj) expected message) (describe err-obj) (if break-on-error-p (invoke-debugger err-obj) err-obj)) ;; return err-obj if not breaking ) (else ((if break-on-error-p error warning) "~&*** FAILED: Expected exception of type ~a Got ~a ~a" expected actual message))))) ;;; unit-testing.oak ends here oaklisp-1.3.7/src/world/000077500000000000000000000000001332762442600151135ustar00rootroot00000000000000oaklisp-1.3.7/src/world/.gitignore000066400000000000000000000000301332762442600170740ustar00rootroot00000000000000*.bin *.cold *.oa *.sym oaklisp-1.3.7/src/world/Makefile-vars000066400000000000000000000126161332762442600175320ustar00rootroot00000000000000# This included makefile data is automatically # generated by make-makefile.oak, and should not # normally be edited by hand. It can be regenerated # with 'make Makefile-vars'. COLDFILES = st.oa da.oa pl.oa do.oa em.oa cold-booting.oa kernel0.oa kernel0types.oa kernel1-install.oa kernel1-funs.oa kernel1-make.oa kernel1-freeze.oa kernel1-maketype.oa kernel1-inittypes.oa kernel1-segments.oa super.oa kernel.oa patch0symbols.oa mix-types.oa operations.oa ops.oa truth.oa logops.oa consume.oa conses.oa coerce.oa eqv.oa mapping.oa fastmap.oa multi-off.oa fluid.oa vector-type.oa vl-mixin.oa numbers.oa subtypes.oa weak.oa strings.oa sequences.oa undefined.oa subprimitive.oa gc.oa tag-trap.oa code-vector.oa hash-table.oa format.oa signal.oa error.oa symbols.oa print-noise.oa patch-symbols.oa predicates.oa print.oa print-integer.oa print-list.oa reader-errors.oa reader.oa read-token.oa reader-macros.oa hash-reader.oa read-char.oa locales.oa expand.oa make-locales.oa patch-locales.oa freeze.oa bp-alist.oa describe.oa warm.oa interpreter.oa eval.oa repl.oa system-version.oa top-level.oa booted.oa dump-stack.oa file-errors.oa streams.oa cold.oa nargs.oa has-method.oa op-error.oa error2.oa error3.oa backquote.oa file-io.oa fasl.oa load-oaf.oa load-file.oa string-stream.oa list.oa catch.oa continuation.oa unwind-protect.oa bounders.oa anonymous.oa sort.oa exit.oa cmdline.oa cmdline-getopt.oa cmdline-options.oa export.oa cold-boot-end.oa COLDFILESNONGEN = st.oa da.oa pl.oa do.oa em.oa cold-booting.oa kernel0.oa kernel0types.oa kernel1-install.oa kernel1-funs.oa kernel1-make.oa kernel1-freeze.oa kernel1-maketype.oa kernel1-inittypes.oa kernel1-segments.oa super.oa kernel.oa patch0symbols.oa mix-types.oa operations.oa ops.oa truth.oa logops.oa consume.oa conses.oa coerce.oa eqv.oa mapping.oa fastmap.oa multi-off.oa fluid.oa vector-type.oa vl-mixin.oa numbers.oa subtypes.oa weak.oa strings.oa sequences.oa undefined.oa subprimitive.oa gc.oa tag-trap.oa code-vector.oa hash-table.oa format.oa signal.oa error.oa symbols.oa print-noise.oa patch-symbols.oa predicates.oa print.oa print-integer.oa print-list.oa reader-errors.oa reader.oa read-token.oa reader-macros.oa hash-reader.oa read-char.oa locales.oa expand.oa make-locales.oa patch-locales.oa freeze.oa bp-alist.oa describe.oa warm.oa interpreter.oa eval.oa repl.oa top-level.oa booted.oa dump-stack.oa file-errors.oa streams.oa cold.oa nargs.oa has-method.oa op-error.oa error2.oa error3.oa backquote.oa file-io.oa fasl.oa load-oaf.oa load-file.oa string-stream.oa list.oa catch.oa continuation.oa unwind-protect.oa bounders.oa anonymous.oa sort.oa exit.oa cmdline.oa cmdline-getopt.oa cmdline-options.oa export.oa cold-boot-end.oa COLDFILESD = cold-booting.oa kernel0.oa do.oa kernel0types.oa do.oa kernel1-install.oa do.oa kernel1-funs.oa do.oa kernel1-make.oa do.oa kernel1-freeze.oa do.oa kernel1-maketype.oa pl.oa kernel1-inittypes.oa pl.oa kernel1-segments.oa pl.oa super.oa pl.oa kernel.oa pl.oa patch0symbols.oa pl.oa mix-types.oa st.oa operations.oa st.oa ops.oa st.oa truth.oa st.oa logops.oa st.oa consume.oa st.oa conses.oa st.oa coerce.oa st.oa eqv.oa pl.oa mapping.oa pl.oa fastmap.oa pl.oa multi-off.oa em.oa fluid.oa pl.oa vector-type.oa pl.oa vl-mixin.oa pl.oa numbers.oa pl.oa subtypes.oa pl.oa weak.oa pl.oa strings.oa pl.oa sequences.oa pl.oa undefined.oa da.oa subprimitive.oa da.oa gc.oa da.oa tag-trap.oa da.oa code-vector.oa da.oa hash-table.oa da.oa format.oa da.oa signal.oa pl.oa error.oa da.oa symbols.oa da.oa print-noise.oa da.oa patch-symbols.oa da.oa predicates.oa da.oa print.oa do.oa print-integer.oa do.oa print-list.oa do.oa reader-errors.oa do.oa reader.oa do.oa read-token.oa do.oa reader-macros.oa do.oa hash-reader.oa pl.oa read-char.oa pl.oa locales.oa do.oa expand.oa do.oa make-locales.oa do.oa patch-locales.oa do.oa freeze.oa do.oa bp-alist.oa do.oa describe.oa do.oa warm.oa do.oa interpreter.oa pl.oa eval.oa pl.oa repl.oa pl.oa system-version.oa do.oa top-level.oa pl.oa booted.oa st.oa dump-stack.oa do.oa file-errors.oa do.oa streams.oa do.oa cold.oa do.oa nargs.oa pl.oa has-method.oa pl.oa op-error.oa pl.oa error2.oa pl.oa error3.oa pl.oa backquote.oa pl.oa file-io.oa pl.oa fasl.oa pl.oa load-oaf.oa pl.oa load-file.oa pl.oa string-stream.oa pl.oa list.oa pl.oa catch.oa da.oa continuation.oa da.oa unwind-protect.oa da.oa bounders.oa do.oa anonymous.oa pl.oa sort.oa pl.oa exit.oa pl.oa cmdline.oa da.oa cmdline-getopt.oa da.oa cmdline-options.oa da.oa export.oa st.oa st.oa st.oa cold-boot-end.oa MISCFILES = macros0.oa obsolese.oa destructure.oa macros1.oa macros2.oa icky-macros.oa define.oa del.oa promise.oa bignum.oa bignum2.oa rational.oa complex.oa rounding.oa lazy-cons.oa math.oa trace.oa apropos.oa time.oa alarm.oa multi-em.oa multiproc.oa COMPFILES = crunch.oa mac-comp-stuff.oa mac-compiler-nodes.oa mac-compiler1.oa mac-compiler2.oa mac-compiler3.oa mac-code.oa assembler.oa peephole.oa file-compiler.oa compiler-exports.oa RNRSFILES = scheme.oa scheme-macros.oa TOOLFILES = tool.oa FILESFILES = files.oa MAKEFILES = make-makefile.oa # These are gravy. The first two are our standard # benchmarks. The others are neat. GRAVY = tak.oak compile-bench.oak prolog.oak prolog-examples.oak multiproc-tests.oak random.oak # Special rules for the compiler's source crunch.oa mac-comp-stuff.oa mac-compiler-nodes.oa mac-compiler1.oa mac-compiler2.oa mac-compiler3.oa mac-code.oa assembler.oa peephole.oa file-compiler.oa compiler-exports.oa : OAKLOCALE=--locale compiler-locale oaklisp-1.3.7/src/world/Makefile.am000066400000000000000000000074701332762442600171570ustar00rootroot00000000000000# This file is part of Oaklisp. # # 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. # # The GNU GPL is available at http://www.gnu.org/licenses/gpl.html # or from the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA # Bigendian machines need bigendian binary oaklisp worlds, so non-cold # worlds are only compatible across machines of the same endianity. workaroundpkglibdir=$(pkglibdir) workaroundpkglib_DATA = oakworld.bin include Makefile-vars ALLOAFILES = ALLOAFILES += $(TOOLFILES) ALLOAFILES += $(MAKEFILES) ALLOAFILES += $(FILESFILES) ALLOAFILES += $(COLDFILES) ALLOAFILES += $(MISCFILES) ALLOAFILES += $(COMPFILES) ALLOAFILES += $(RNRSFILES) ALLOAFILESNONGEN = ALLOAFILESNONGEN += $(TOOLFILES) ALLOAFILESNONGEN += $(MAKEFILES) ALLOAFILESNONGEN += $(FILESFILES) ALLOAFILESNONGEN += $(COLDFILESNONGEN) ALLOAFILESNONGEN += $(MISCFILES) ALLOAFILESNONGEN += $(COMPFILES) ALLOAFILESNONGEN += $(RNRSFILES) # The Oaklisp emulator executable. # Use "OAK=oaklisp --batch" unless compiling new emulator. OAK = ../emulator/oaklisp --batch # When cross-compiling, $(OAK) is for an emulator with a working # oakworld.bin, the "build" system in autotools terminology, while # $(OAKBOOT) is for the new architecture, the "host" system in # autotools terminology. $(OAKBOOT) will be used only for loading # partial worlds, loading extra files into them, and dumping them. OAKBOOT = ../emulator/oaklisp --batch # Flags for the emulator. # OAKFLAGS = --trace-gc=1 OAKFLAGS = # When bootstrapping add "OAKFLAGS+=--world ...../oakworld.bin" # generally: ../../prebuilt/src/world/oakworld.bin # ifeq ($(shell $(OAK) $(OAKFLAGS) -- --exit > /dev/null || echo oops),oops) # OAKWORLDFLAGS = --world ../../prebuilt/src/world/oakworld.bin # endif # How to compile oaklisp source files into oaklisp bytecode object files: .oak.oa: $(OAK) $(OAKFLAGS) $(OAKWORLDFLAGS) -- $(OAKLOCALE) --compile $* --exit # How to build a new cold world using the world builder tool: new.cold: $(COLDFILES) $(TOOLFILES) -rm -f new.cold new.sym $(OAK) $(OAKFLAGS) $(OAKWORLDFLAGS) \ -- \ --load tool \ --eval "(tool-files '($(COLDFILESD:.oa=)) 'new)" \ --exit # How to boot cold world into warm world: oakworld-1.bin: new.cold $(OAKBOOT) $(OAKFLAGS) --world new.cold --dump $@ # load successive layers of functionality onto the world oakworld-2.bin: oakworld-1.bin $(MISCFILES) $(OAKBOOT) $(OAKFLAGS) --world oakworld-1.bin --dump $@ \ -- \ $(foreach f, $(MISCFILES:.oa=),--load $(f)) \ --exit oakworld-3.bin: oakworld-2.bin $(COMPFILES) $(OAKBOOT) $(OAKFLAGS) --world oakworld-2.bin --dump $@ \ -- \ --locale compiler-locale \ $(foreach f, $(COMPFILES:.oa=),--load $(f)) \ --locale system-locale --exit oakworld.bin: oakworld-3.bin $(RNRSFILES) $(OAKBOOT) $(OAKFLAGS) --world oakworld-3.bin --dump $@ \ -- \ --eval '(define-instance scheme-locale locale (list system-locale))'\ --locale scheme-locale \ $(foreach f, $(RNRSFILES:.oa=),--load $(f)) \ --locale system-locale --exit # How to rebuild variables included by this Makefile itself: Makefile-vars: $(MAKEFILES) $(FILESFILES) $(OAK) $(OAKFLAGS) $(OAKWORLDFLAGS) \ -- \ --load files --load make-makefile --eval '(make-makefile "$@")' \ --exit CLEANFILES = oakworld-1.bin oakworld-2.bin oakworld-3.bin new.cold \ new.sym $(ALLOAFILES) oakworld.bin EXTRA_DIST = $(ALLOAFILESNONGEN:.oa=.oak) $(GRAVY) oaklisp-1.3.7/src/world/alarm.oak000066400000000000000000000032401332762442600167020ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;; ;; ;; Handles alarm traps which are arbitrarily generated by the bytecode ;; emulator. ;; #| (define (alarm n) (%disable-alarms) (format #t "*Bing*") (set! ((%register 'nargs)) n) (%reset-alarm-counter) (%enable-alarms) (%return)) |# (define alarm (add-method ((make operation) n) (pause) (set! ((%register 'nargs)) n) (%return))) ;;; avoid forward reference in tag-trap.oak (set! (nth %argless-tag-trap-table 127) alarm) ;; ;; Define atomic functions (op-codes) for turning alarms on and off. ;; (define-constant %enable-alarms (add-method ((make-open-coded-operation '((enable-alarms)) 0 1) (object)) (%enable-alarms))) (define-constant %disable-alarms (add-method ((make-open-coded-operation '((disable-alarms)) 0 1) (object)) (%disable-alarms))) (define-constant %reset-alarm-counter (add-method ((make-open-coded-operation '((reset-alarm-counter)) 0 1) (object)) (%reset-alarm-counter))) oaklisp-1.3.7/src/world/anonymous.oak000066400000000000000000000113351332762442600176420ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter (set! #*fancy-references #f) (define expression-table (make-eq-hash-table)) (define (reasonable-expression a-locale obj) (let ((ref (present? expression-table obj))) (cond ((and ref (let* ((expr (cdr ref)) (curval (dumb-but-safe-eval expr a-locale))) (if (eq? obj curval) expr nil))) => identity) (else (let ((expr (create-accessor-expression a-locale obj))) (cond (ref (set! (cdr ref) expr)) (else (set! (present? expression-table obj) expr) expr))))))) (define-instance create-accessor-expression operation) (add-method (create-accessor-expression (locale variable-table superiors) self value) (native-catch done (block (for-each-r variable-table (lambda (sym cell) (let ((guy (contents cell))) (when (eq? guy value) (throw done sym)) (let ((try (create-compound-accessor-expression self guy value))) (when try (throw done try)))))) (any? (lambda (sup) (create-accessor-expression sup value)) superiors)))) (define (create-compound-accessor-expression locale guy value) (let ((getter (could-you-get-this-value? guy value))) (and getter (let ((expr (map (lambda (z) (reasonable-expression locale z)) getter))) (and (not (any? null? expr)) expr))))) (set! fancy-accessor-guards '()) (set! fancy-accessor-operations '()) (define (could-you-get-this-value? guy val) (iterate next ((guards fancy-accessor-guards)(ops fancy-accessor-operations)) (cond ((null? guards) nil) ((and ((car guards) guy) (eq? ((car ops) guy) val)) (list (car ops) guy)) (else (next (cdr guards)(cdr ops)))))) (define (how-to-get-val ag ao) (push fancy-accessor-guards ag) (push fancy-accessor-operations ao)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Here is the extension mechanism. (how-to-get-val (lambda (x) (is-a? x coercable-type)) coercer) (how-to-get-val (lambda (x) (is-a? x settable-operation)) setter) (how-to-get-val (lambda (x) (is-a? x locatable-operation)) locater) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (dumb-but-safe-eval expr locale) (cond ((and (symbol? expr) (variable? locale expr)) => contents) ((is-a? expr self-evaluatory-mixin) expr) ((pair? expr) (let ((evexpr (map (lambda (x) (dumb-but-safe-eval x locale)) expr))) (if (and (>= (length evexpr) 2) (is-a? (first evexpr) operation) (got-a-method? (get-type (second evexpr)) (first evexpr))) (apply (first evexpr) (cdr evexpr)) nil))) (else nil))) (define-instance got-a-method? operation) (add-method (got-a-method? (type supertype-list operation-method-alist) ty op) (or (assq op operation-method-alist) (%get-an-ivar operation op 'lambda?) (any? (lambda (t) (got-a-method? t op)) supertype-list))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Here is the old version of this. #| (define reference-table (make-eq-hash-table)) (define (reasonable-expression a-locale obj) (if (eq? #*fancy-references 'really-fancy) (accessor-expression a-locale obj) (let ((ref (present? reference-table obj))) (cond ((and ref (let* ((expr (cdr ref)) (loc (variable? a-locale expr))) (cond ((and loc (eq? obj (contents loc))) expr) (else nil)))) => identity) (else (let ((expr (create-reasonable-expression a-locale obj))) (cond (ref (set! (cdr ref) expr)) (else (set! (present? reference-table obj) expr) expr)))))))) (define (create-reasonable-expression a-locale obj) (let ((vars (bound-var-list a-locale obj))) (cond (vars (car vars)) (else nil)))) (define-instance bound-var-list operation) (add-method (bound-var-list (locale variable-table) self val) (let ((vars '())) (for-each-r variable-table (lambda (sym cell) (when (eq? (contents cell) val) (set! vars (cons sym vars))))) vars)) |# oaklisp-1.3.7/src/world/apropos.oak000066400000000000000000000040371332762442600172760ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter (define-instance apropos operation) (with-operations (apropos2) (let ((check-in-list-and-print (lambda (place list-of-pairs key) (let ((skey (upcase (#^string key)))) (bind ((#*fancy-references #t)) (format #t "~&In ~A:~%" place)) (dolist (x list-of-pairs) (when (subsequence? skey (#^string (car x))) (format #t " ~A~%" (car x)))))))) (add-method (apropos (object) key . args) (cond ((= 0 (rest-length args)) (apropos2 #*current-locale key)) ((= 1 (rest-length args)) (apropos2 key . args)) (else (error "try (apropos ) ")))) (add-method (apropos2 (object) key place) (error "try (apropos ).~%")) (add-method (apropos2 (symbol) key place) (apropos2 place key)) (add-method (apropos2 (string) key place) (apropos2 place key)) (add-method (apropos2 (locale variable-table macro-alist) self key) (check-in-list-and-print self (#^list-type variable-table) key) (check-in-list-and-print "macro table" macro-alist key) (check-in-list-and-print "top level fluid variables" top-level-fluid-binding-list key)) (add-method (apropos2 (hash-table) self key) (check-in-list-and-print self (#^list-type self) key)))) ;;; eof oaklisp-1.3.7/src/world/assembler.oak000066400000000000000000000471151332762442600175740ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Barak A. Pearlmutter ;;; Assemble Oaklisp bytecode. ;;; Input format: A single s-expr, of the form (CODE () byte-code-list) ;;; where byte-code-list is a list of bytecodes. ;;; Output format: a list of code segments, where each code segment is ;;; a list of two things: a resolution list and a list of numbers. The ;;; Some bytecodes refer ;;; to constants, such as symbols and lists. Such references are ;;; emited as zeros and information to the linker detailing the ;;; location and desired reference are emited in an epilogue. Also, ;;; there are references to global variables. These are handled in a ;;; similar fashion. ;;; The main routine is ASSEMBLE. It takes a list of bytecodes as input ;;; and returns a list of code segment descriptors, each of which is ;;; a list of bytecodes and a list of instructions to the linker. These ;;; instructions are of the form (resolution-type address thing) where ;;; resolution-type is constant, variable or code, address is a zero based ;;; offset into the code, and thing is either a constant, a symbol, or ;;; the number of another code segment. (define (assemble codelist) ;; Input is of the form (code ivar-list instruction-list). (when (> #*compiler-noisiness 1) (format #t "assembling...") (flush standard-output)) (let ((scheduled-segments (list codelist)) (segment-count 1)) (iterate aux ((output '())) (cond ((null? scheduled-segments) (reverse output)) (else (let ((assembled-segment (assemble-code-segment (car scheduled-segments)))) (set! scheduled-segments (cdr scheduled-segments)) (aux (cons (list (map (lambda (resolvant) (cond ((eq? (car resolvant) code-key) (set! segment-count (+ segment-count 1)) (set! scheduled-segments (append scheduled-segments (list (third resolvant)))) (list (first resolvant) (second resolvant) (- segment-count 1))) (else resolvant))) (first assembled-segment)) (second assembled-segment)) output)))))))) (define (assemble-code-segment l) ;; Input is of the form (code ivar-list instruction-list). (unless (eq? (car l) 'code) (error "Input does not appear to be a code segment: ~A." l)) ;; Throw the answer to OK when done. (native-catch ok (iterate infinite-loop () ;; If an already assembled instruction is hacked so badly that the whole ;; code segment has to be reassembled, throw to REASSEMBLE. (native-catch reassemble (throw ok (iterate aux ((input (third l)) (addr 2) (output '(0 0)) (label-alist '()) (patch-alist '()) (resolution-alist `((,constant-key 0 ,(second l))))) (cond ((null? input) (unless (null? patch-alist) (error "Unresolved label ~A." patch-alist)) (list (reverse resolution-alist) (reverse (if (odd? addr) (cons 0 output) output)))) (else (let* ((this (car input))) (if (eq? (car this) 'LABEL) ;; Just found a label; record it and resolve forward refs. (let ((lab (cadr this))) (aux (cdr input) addr output (cons (cons lab addr) label-alist) ;; Run through resolving forward references: (iterate aux ((l patch-alist)(o '())) (cond ((null? l) o) ((eq? (caar l) lab) ((cdr (car l)) addr) (aux (cdr l) o)) (else (aux (cdr l) (cons (car l) o))))) resolution-alist)) ;; Encode and emit instruction: (let* ((opcode (car this)) (the-opcode-descriptor (opcode-descriptor opcode))) (when (null? the-opcode-descriptor) (error "Unrecognized opcode ~A" opcode)) (destructure (opcode-field arg-field-descriptor) the-opcode-descriptor (cond ((number? arg-field-descriptor) (if (null? (cddr the-opcode-descriptor)) (aux (cdr input) (+ addr 1) (cons (construct-instruction opcode-field arg-field-descriptor) output) label-alist patch-alist resolution-alist) ;; Uh oh, requires an inline argument. (cond ((eq? (caddr the-opcode-descriptor) 'long-label) (let* ((the-label (second this)) (place (assq the-label label-alist)) (output (list* (and place (make-long-label (- (cdr place) addr 2))) (construct-instruction opcode-field arg-field-descriptor) output))) (aux (cdr input) (+ addr 2) output label-alist (if place patch-alist (cons (cons the-label (lambda (other-addr) (set! (car output) (make-long-label (- other-addr addr 2))))) patch-alist)) resolution-alist))) (else (aux (cdr input) (+ addr (+ 1 (if (odd? addr) 2 3))) (list* 0 0 (let ((new-out (cons (construct-instruction opcode-field arg-field-descriptor) output))) (if (odd? addr) new-out (cons 0 new-out)))) label-alist patch-alist (cons (list (encode-resolution-symbol (caddr the-opcode-descriptor)) (+ addr (if (odd? addr) 1 2)) (second this)) resolution-alist)))))) ((eq? arg-field-descriptor 'unsigned) (aux (cdr input) (+ addr 1) (cons (construct-instruction opcode-field (unsigned-arg (second this))) output) label-alist patch-alist resolution-alist)) ((eq? arg-field-descriptor 'signed) (aux (cdr input) (+ addr 1) (cons (construct-instruction opcode-field (signed-arg (second this))) output) label-alist patch-alist resolution-alist)) ((eq? arg-field-descriptor 'register) (aux (cdr input) (+ addr 1) (cons (construct-instruction opcode-field (register-arg (second this))) output) label-alist patch-alist resolution-alist)) ((eq? arg-field-descriptor 'label) (let* ((place (assq (second this) label-alist)) (distance (and place (- (cdr place) addr 1)))) (if (or (not place) (tiny-number? distance)) (let ((output (cons (construct-instruction opcode-field (if place (signed-arg distance) 0)) output))) (aux (cdr input) (+ addr 1) output label-alist (if place patch-alist (cons (cons (second this) (lambda (other-addr) (let ((patched-instruction (patch-branch (car output) addr other-addr))) (cond (patched-instruction (set! (car output) patched-instruction)) (else (let ((new-instructions (longify-instruction this))) (set! (car input) (car new-instructions)) (set! (cdr input) (append (cdr new-instructions) (cdr input)))) (when (> #*compiler-noisiness 1) (format #t "~&Reassembling code segment.~%")) (throw reassemble nil)))))) patch-alist)) resolution-alist)) (aux (append (longify-instruction this) (cdr input)) addr output label-alist patch-alist resolution-alist)))) ((eq? arg-field-descriptor 'blt-arg) (aux (cdr input) (+ addr 1) (cons (construct-instruction opcode-field (blt-args (second this) (third this))) output) label-alist patch-alist resolution-alist)) (else (error "Internal error; bad arg field descriptor ~S.~%" arg-field-descriptor)))))))))))) (infinite-loop)))) (define (tiny-number? x) (and (integer? x) (<= (- (expt 2 7)) x) (< x (expt 2 7)))) (define (construct-instruction opcode arg) (+ (* opcode 4) (* arg 256))) (define (patch-branch old addr other-addr) (let ((distance (- other-addr addr 1))) (if (tiny-number? distance) (+ old (* (signed-arg distance) 256)) nil))) (define (unsigned-arg x) (cond ((or (< x 0) (> x 255)) (error "~D is out of range for an unsigned arg.~%" x)) (else x))) (define (signed-arg x) (cond ((or (< x -128) (< 127 x)) (error "~D is out of range for a signed arg.~%" x)) ((< x 0) (+ 256 x)) (else x))) (define (make-long-label distance) (if (and (< (- (expt 2 13)) distance) (< distance (- (expt 2 13) 1))) (* 4 (cond ((< distance 0) (+ (expt 2 14) distance)) (else distance))) (error "Even a long label can't go a distance of ~A." distance))) (define (blt-args stuff trash) (cond ((or (<= stuff 0) (>= stuff 16) (<= trash 0) (> trash 16)) (error "Instruction (BLT-STACK ~D ~D); arguments out of range." stuff trash)) (else (+ stuff (* (- trash 1) 16))))) (define (register-arg x) (iterate aux ((l register-list)(n 0)) (cond ((null? l) ;; Return an unused register number. (warning "Unknown register ~A." x) 69) ((eq? x (car l)) n) (else (aux (cdr l) (+ n 1)))))) (define register-list '(t nil fixnum-type loc-type cons-type subtype-table bp env nargs env-type argless-tag-trap-table arged-tag-trap-table object-type boot-code free-ptr cons-limit segment-type uninitialized next-newspace-size method-type operation-type false process)) ;;; Try and longify an instruction. Return a list of opcodes to replace the old one. (define (longify-instruction x) (destructure (op . stuff) x (cond ((assq op ;; Put instructions that are easy to longify in this list: '((branch . long-branch) (branch-nil . long-branch-nil) (branch-t . long-branch-t) (push-cxt . push-cxt-long) )) => (lambda (found) (let ((new-op (cdr found))) (when (> #*compiler-noisiness 1) (format #t "~&Longifying instruction ~A to ~A.~%" x new-op)) (list (cons new-op stuff))))) ;; Put instructions that longify in some odd way in a clause here: ((eq? op 'funcall-cxt-br) (when (> #*compiler-noisiness 1) (format #t "~&Longifying instruction ~A by expanding it.~%" x)) `((funcall-cxt)(long-branch ,@stuff))) (else (error "Can't longify the ~A opcode in ~A." op x))))) (define (encode-resolution-symbol x) (cond ((eq? x 'constant) constant-key) ((eq? x 'variable) variable-key) ((eq? x 'code) code-key) (else (error "Can't encode resolution symbol ~S." x)))) ;;; The mechanism for storing opcode descriptions: (define-instance opcode-descriptor settable-operation) (define opcode-descriptor-hash-table (make-eq-hash-table)) (add-method (opcode-descriptor (object) opcode) (cond ((present? opcode-descriptor-hash-table opcode) => cdr) (else #f))) (add-method ((setter opcode-descriptor) (object) opcode description) (set! (present? opcode-descriptor-hash-table opcode) description)) ;;; The mechanism for storing opcode notations: (define-instance opcode-notation settable-operation) (define opcode-notation-hash-table (make-eq-hash-table)) (add-method (opcode-notation (object) opcode) (cond ((present? opcode-notation-hash-table opcode) => cdr) (else #f))) (add-method ((setter opcode-notation) (object) opcode notation) (set! (present? opcode-notation-hash-table opcode) notation)) ;; Possible notations: ;; branch (some kind of branch) ;; in0 ;; in1 ;; in2 ;; in3 ;; inn (number consumed determined by inline argument) ;; out0 ;; out1 ;; notnil (never returns nil, out1 must be true) ;; nosides (no side effects) ;; commutes (commutative, in2 must be true) ;; ns (no stack except formals) ;;; Some syntax: (local-syntax (define-opcode opcode description . notation) `(block (set! (opcode-descriptor ',opcode) ',description) (set! (opcode-notation ',opcode) ',notation))) ;;; Describe all the opcodes: (define-opcode halt (1 unsigned) in1 ns) (define-opcode log-op (2 unsigned) in2 out1 notnil nosides ns) (define-opcode blt-stk (3 blt-arg)) (define-opcode branch-nil (4 label) in1 branch ns) (define-opcode branch-t (5 label) in1 branch ns) (define-opcode branch (6 label) in0 branch ns) (define-opcode pop (7 unsigned) inn out0 ns) (define-opcode swap (8 unsigned) in1 out1) (define-opcode blast (9 unsigned) in1 out0) (define-opcode load-imm-fix (10 signed) in0 out1 notnil nosides ns) (define-opcode store-stk (11 unsigned) in1 out1) (define-opcode load-bp (12 unsigned) in0 out1 nosides ns) (define-opcode store-bp (13 unsigned) in1 out1 ns) (define-opcode load-env (14 unsigned) in0 out1 nosides ns) (define-opcode store-env (15 unsigned) in1 out1 ns) (define-opcode load-stk (16 unsigned) in0 out1 nosides) (define-opcode make-bp-loc (17 unsigned) in0 out1 notnil nosides ns) (define-opcode make-env-loc (18 unsigned) in0 out1 notnil nosides ns) (define-opcode store-reg (19 register) in1 out1 ns) (define-opcode load-reg (20 register) in0 out1 nosides ns) ; special case: (define-opcode funcall-cxt (21 0)) (define-opcode funcall-cxt-br (21 label)) ; opcode chosen for clean emulator implementation: (define-opcode funcall-tail (22 0)) (define-opcode store-nargs (23 unsigned) in0 out0 ns) (define-opcode check-nargs (24 unsigned) in1 out0 ns) (define-opcode check-nargs-gte (25 unsigned) in1 out0 ns) (define-opcode store-slot (26 unsigned) in2 out1 ns) (define-opcode load-slot (27 unsigned) in1 out1 nosides ns) (define-opcode make-closed-environment (28 unsigned) inn out1 notnil nosides ns) (define-opcode push-cxt (29 label) in0 out0 ns) (define-opcode locate-slot (30 unsigned) in1 out1 notnil nosides ns) (define-opcode stream-primitive (31 unsigned) out1 ns) (define-opcode filltag (32 unsigned) in1 out1 ns) ; special case (define-opcode ^super-cxt (33 0)) (define-opcode ^super-cxt-br (33 label)) ; opcode chosen for clean emulator implementation (define-opcode ^super-tail (34 0)) (define-opcode noop (0 0) in0 out0 nosides ns) (define-opcode plus (0 1) in2 out1 notnil nosides commutes ns) (define-opcode negate (0 2) in1 out1 notnil nosides ns) (define-opcode eq? (0 3) in2 out1 nosides commutes ns) (define-opcode not (0 4) in1 out1 nosides ns) (define-opcode times (0 5) in2 out1 notnil nosides commutes ns) (define-opcode load-glo (0 6 variable) in0 out1 nosides ns) (define-opcode load-code (0 6 code) in0 out1 nosides ns) (define-opcode load-imm (0 6 constant) in0 out1 nosides ns) (define-opcode div (0 7) in2 out1 notnil nosides ns) (define-opcode =0? (0 8) in1 out1 nosides ns) (define-opcode get-tag (0 9) in1 out1 notnil nosides ns) (define-opcode get-data (0 10) in1 out1 notnil nosides ns) (define-opcode crunch (0 11) in2 out1 nosides ns) (define-opcode getc (0 12) in0 out1 ns) (define-opcode putc (0 13) in1 out1 ns) (define-opcode contents (0 14) in1 out1 nosides ns) (define-opcode set-contents (0 15) in2 out1 ns) (define-opcode load-type (0 16) in1 out1 nosides ns) (define-opcode cons (0 17) in2 out1 notnil nosides ns) (define-opcode <0? (0 18) in1 out1 nosides ns) (define-opcode modulo (0 19) in2 out1 notnil nosides ns) (define-opcode ash (0 20) in2 out1 notnil nosides ns) (define-opcode rot (0 21) in2 out1 notnil nosides ns) (define-opcode store-bp-i (0 22) in2 out1 ns) (define-opcode load-bp-i (0 23) in1 out1 nosides ns) (define-opcode return (0 24) ns) (define-opcode allocate (0 25) in2 out1 notnil nosides ns) (define-opcode assq (0 26) in2 out1 nosides ns) (define-opcode load-length (0 27) in1 out1 notnil nosides ns) (define-opcode peek (0 28) in1 out1 ns) (define-opcode poke (0 29) in2 out1 ns) (define-opcode make-cell (0 30) in1 out1 notnil nosides ns) (define-opcode subtract (0 31) in2 out1 notnil nosides ns) (define-opcode = (0 32) in2 out1 nosides commutes ns) (define-opcode < (0 33) in2 out1 nosides ns) (define-opcode bit-not (0 34) in1 out1 notnil nosides ns) (define-opcode long-branch (0 35 long-label) in0 branch ns) (define-opcode long-branch-nil (0 36 long-label) in1 branch ns) (define-opcode long-branch-t (0 37 long-label) in1 branch ns) (define-opcode locate-bp-i (0 38) in1 out1 notnil nosides ns) (define-opcode load-glo-con (0 39 variable) in0 out1 nosides ns) (define-opcode car (0 40) in1 out1 nosides ns) (define-opcode cdr (0 41) in1 out1 nosides ns) (define-opcode set-car (0 42) in2 out1 ns) (define-opcode set-cdr (0 43) in2 out1 ns) (define-opcode locate-car (0 44) in1 out1 nosides ns) (define-opcode locate-cdr (0 45) in1 out1 nosides ns) (define-opcode push-cxt-long (0 46 long-label) ns) ; Used by Bruce Horn for the Macintosh implementation: (define-opcode call-primitive (0 47)) (define-opcode throw (0 48) in2 ns) (define-opcode object-hash (0 49) in1 out1 notnil nosides ns) (define-opcode object-unhash (0 50) in1 out1 nosides ns) (define-opcode gc (0 51) in0 out1 ns) (define-opcode big-endian? (0 52) in0 out1 nosides ns) (define-opcode vlen-allocate (0 53) in2 out1 nosides ns) (define-opcode inc-loc (0 54) in2 out1 notnil nosides ns) (define-opcode fill-continuation (0 55) in1 out1 notnil ns) (define-opcode continue (0 56) in2 ns) (define-opcode reverse-cons (0 57) in2 out1 notnil nosides ns) (define-opcode most-negative-fixnum? (0 58) in1 out1 nosides ns) (define-opcode fx-plus (0 59) in2 out1 notnil nosides commutes ns) (define-opcode fx-times (0 60) in2 out1 notnil nosides commutes ns) (define-opcode get-time (0 61) in0 out1 notnil nosides ns) (define-opcode remainder (0 62) in2 out1 notnil nosides ns) (define-opcode quotientm (0 63) in2 out1 notnil nosides ns) (define-opcode full-gc (0 64) in0 out1 ns) (define-opcode make-lambda (0 65) in2 out1 notnil nosides ns) (define-opcode get-argline-char (0 66) in2 out1 nosides ns) (define-opcode enable-alarms (0 67) in0 out1 ns) (define-opcode disable-alarms (0 68) in0 out1 ns) (define-opcode reset-alarm-counter (0 69) in0 out1 ns) (define-opcode make-heavyweight-thread (0 70) in1 out0 ns) (define-opcode test-and-set-locative (0 71) in3 out1 ns) ;;; Bitwise operations are translated into LOG-OPs with the ;;; appropriate bitfields. Fill in the following truth table, and ;;; then construct a bitfield with the bits you get, as below. ;;; ;;; X ;;; 0 1 ;;; ------- ;;; 0 | 8 | 4 | ;;; Y | - - - | ;;; 1 | 2 | 1 | ;;; ------- ;;; ;;; #b8421 (define-opcode bit-and (2 #b0001) in2 out1 notnil nosides commutes ns) (define-opcode bit-nand (2 #b1110) in2 out1 notnil nosides commutes ns) (define-opcode bit-or (2 #b0111) in2 out1 notnil nosides commutes ns) (define-opcode bit-nor (2 #b1000) in2 out1 notnil nosides commutes ns) (define-opcode bit-xor (2 #b0110) in2 out1 notnil nosides commutes ns) (define-opcode bit-equiv (2 #b1001) in2 out1 notnil nosides commutes ns) (define-opcode bit-andca (2 #b0100) in2 out1 notnil nosides ns) ;;; List all the instructions with certain attributes. (define (instructions-with attributes) (iterate aux ((l (#^list-type opcode-notation-hash-table)) (yes '())) (cond ((null? l) yes) ((subset? attributes (cdr (car l))) (aux (cdr l) (cons (caar l) yes))) (else (aux (cdr l) yes))))) ;;; eof oaklisp-1.3.7/src/world/backquote.oak000066400000000000000000000075511332762442600175750ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; This is borrowed from the T 2.8 sources, ;;; courtesy of Olin Grigsby Shivers III. ;;; Oaklisp Modifications ;;; Copyright (C) 1988 Barak A. Pearlmutter and Kevin J. Lang ;;; Oaklisp Mods: ;;; ;;; More-than-two arg append clause removed ;;; Appropriate (macro? system-locale X). ;;; Copyright (c) 1984 Yale University ;;;; Backquote ;;; BACKQUOTE: Support for the amazing ` read macro character. (define *BACKQUOTE* 'QUASIQUOTE) (define *COMMA* 'UNQUOTE) (define *COMMA-ATSIGN* 'UNQUOTE-SPLICING) (define *QUOTE* 'QUOTE) (DEFINE (QUOTATION? X) ; Crash your T compiler if this is integrable (AND (PAIR? X) (EQ? (CAR X) *QUOTE*) (PAIR? (CDR X)) (NULL? (CDDR X)))) (define (commation? x) (and (pair? x) (eq? (car x) *comma*) (pair? (cdr x)) (null? (cddr x)))) (define (comma-atsignation? x) (and (pair? x) (eq? (car x) *comma-atsign*) (pair? (cdr x)) (null? (cddr x)))) ;;; Seems to me that with appropriate continuation-passing and/or ;;; multi-value returns, the following could be rewritten to do much ;;; less list consing, e.g. none in the case of `(X Y Z). KMP claims ;;; it's not worth it, and I tend to believe him. -JAR (DEFINE (EXPAND-BACKQUOTE X) (COND ((NULL? X) ''()) ((vector? x) (let ((l (#^list-type x))) (cond ((any? comma-atsignation? l) (list '#^simple-vector (expand-backquote l))) (else (let ((l1 (map expand-backquote l))) (if (every? quotation? l1) (list 'quote x) (cons 'vector l1))))))) ((ATOM? X) (LIST 'QUOTE X)) ((eq? (CAR X) *BACKQUOTE*) (EXPAND-BACKQUOTE (EXPAND-BACKQUOTE (CADR X)))) ((eq? (CAR X) *COMMA*) (CADR X)) ; ,mumble ((AND (PAIR? (CAR X)) (eq? (CAAR X) *COMMA-ATSIGN*)) ;; (,@mumble ...) (LET ((SPLICE-IN (CADAR X)) (TAIL (EXPAND-BACKQUOTE (CDR X)))) (COND ((AND (QUOTATION? TAIL) (null? (CADR TAIL))) ;; Use FOO rather than (APPEND FOO '()) SPLICE-IN) ;; ;;Removed this clause for Oaklisp, since APPEND takes 2 args only. ;;((AND (PAIR? TAIL) (EQ? (CAR TAIL) 'APPEND)) ;; ;; (APPEND FOO (APPEND BAR BAZ)) => (APPEND FOO BAR BAZ) ;; (list* 'APPEND SPLICE-IN (CDR TAIL))) (else (LIST 'APPEND SPLICE-IN TAIL))))) (else (let ((car-x (car x)) (cdr-x (cdr x))) (LET ((A (EXPAND-BACKQUOTE car-x)) (D (EXPAND-BACKQUOTE cdr-x))) (COND ((QUOTATION? D) (let ((cadr-d (cadr d))) (COND ((QUOTATION? A) ;; (CONS 'FOO 'BAR) => '(FOO . BAR) (let ((cadr-a (cadr a))) (LIST 'QUOTE ;; Share structure if possible. (if (and (eq? car-x cadr-a) (eq? cdr-x cadr-d)) x (CONS cadr-a cadr-d))))) ((null? cadr-d) ;; (CONS FOO '()) => (LIST FOO) (LIST 'LIST A)) (else ;; (CONS FOO 'BAR) => (list* FOO 'BAR) (LIST 'list* A D))))) ((AND (PAIR? D) (MEMQ (CAR D) '(LIST list*))) ;; (CONS FOO (LIST . BAR)) => (LIST FOO . BAR) (list* (CAR D) A (CDR D))) (else (LIST 'list* A D)))))))) (define quasiquote-expander (lambda (form) (destructure* (#t x) form (expand-backquote x)))) (define-syntax quasiquote quasiquote-expander) ;;; eof oaklisp-1.3.7/src/world/bignum.oak000066400000000000000000000552411332762442600170770ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter. ;;;;;;;;;;;;;;;;;;;;;; create the type ;;;;;;;;;;;;;;;;;; (define-instance bignum coercable-type '(sign digits) (list integer object)) (create-accessors bignum bignum- sign digits) (add-method (bignum-sign (fixnum) x) (if (negative? x) -1 1)) (add-method (bignum-digits (fixnum) x) (normalize-digitlist (cond ((negative? x) (list (- x))) ((zero? x) '()) (else (list x))) 0)) (define (bignum-digit-count x) (length (bignum-digits x))) (add-method (initialize (bignum sign digits) self sgn digs) (set! sign sgn) (set! digits digs) self) (add-method (#^bignum (fixnum) x) (make bignum (bignum-sign x) (bignum-digits x))) ;;; Make a bignum unless the thing will fit in a fixnum. (define (maybe-make-bignum sign digits) (if (or (and (= sign 1) (digitlist-< digits (bignum-digits least-positive-bignum))) (and (= sign -1) (digitlist-< digits (bignum-digits least-negative-bignum)))) (if (null? digits) 0 (iterate aux ((l digits) (place sign) (total 0)) (let ((total (fx-plus total (fx-times (car l) place))) (cdrl (cdr l))) (if (null? cdrl) total (aux cdrl (fx-times place bignum-base) total))))) (make bignum sign digits))) ;;; Base 10,000, little endian, signed magnitude. ;;; If you change this you have to change PRINT-4-BIGNUM-DECIMAL-DIGITS (define decimal-digits-per-bignum-chunk 4) (define-constant bignum-base (expt 10 decimal-digits-per-bignum-chunk)) (set! #*bignum-debug #f) (add-method (print (bignum sign digits) self stream) (cond (#*bignum-debug (format stream "#" sign digits) self) ;; Special case base 10: ((= 10 #*print-radix) (when (= sign -1) (write-char stream #\-)) (let ((rdigs (reverse digits))) (print (car rdigs) stream) (dolist (d (cdr rdigs) self) (print-4-bignum-decimal-digits d stream)))) (else (^super integer print self stream)))) (define (print-4-bignum-decimal-digits q stream) (let* ((q (print-place q 1000 stream)) (q (print-place q 100 stream)) (q (print-place q 10 stream))) (write-char stream (digit->char q)))) ;;;;;;;;;;;;;;;; interface functions ;;;;;;;;;;;;;;;; (add-method (minus (bignum sign digits) x) (maybe-make-bignum (- sign) digits)) (add-method (= (bignum sign digits) x y) (fselect-type y ((bignum) (and (= sign (bignum-sign y)) (equal? digits (bignum-digits y)))) ((number) #f) (otherwise (error "Domain error in second arg (= ~D ~D)." x y)))) (add-method (negative? (bignum sign) x) (= sign -1)) (add-method (< (bignum sign digits) x y) (let ((ytype (get-type y)) (xneg (= sign -1))) (if (eq? ytype fixnum) xneg (let ((yneg (negative? y))) (cond ((and xneg (not yneg)) #t) ((and (not xneg) yneg) #f) ((eq? ytype bignum) (xor xneg (let ((ydigits (bignum-digits y))) (iterate aux ((xd digits) (yd ydigits)) (cond ((null? xd) (if (null? yd) (samelen-digitlist-< digits ydigits) #t)) ((null? yd) #f) (else (aux (cdr xd) (cdr yd)))))))) ((subtype? ytype rational) (< (* x (denominator y)) (numerator y))) (else (error "Domain error in second argument (< ~S ~S)." x y))))))) (add-method (plus/2 (bignum sign digits) x y) (fselect-type y ((integer) (let ((ydigits (bignum-digits y)) (ysign (bignum-sign y))) (cond ((= sign ysign) (maybe-make-bignum sign (sum-digitlists digits ydigits))) ((digitlist-< ydigits digits) (maybe-make-bignum sign (diff-digitlists digits ydigits))) (else (maybe-make-bignum ysign (diff-digitlists ydigits digits)))))) ((number) (plus/2 y x)) (otherwise (error "Nonnumeric addition (plus/2 ~S ~S)" x y)))) (add-method (times/2 (bignum sign digits) x y) (if (zero? y) 0 (fselect-type y ((fixnum) (let ((ydigits (bignum-digits y)) (ysign (bignum-sign y))) (maybe-make-bignum (fx-times sign ysign) (if (< (if (negative? y) (- y) y) bignum-base) (simple-multiply-step (car ydigits) digits) (multiply-digitlists digits ydigits) )))) ((integer) (let ((ydigits (bignum-digits y)) (ysign (bignum-sign y))) (maybe-make-bignum (fx-times sign ysign) ;;(mult-digitlists digits ydigits) (multiply-digitlists digits ydigits) ))) ((number) (times/2 y x)) (otherwise (error "Nonnumeric argument (TIMES/2 ~S ~S)" x y))))) (add-method (quotient (bignum sign digits) x y) (fselect-type y ((integer) (let ((ydigits (bignum-digits y)) (ysign (bignum-sign y))) (maybe-make-bignum (fx-times sign ysign) (first (quorem-digitlists digits ydigits)) ))) (otherwise (error "bad second argument (QUOTIENT ~S ~S)" x y)))) (add-method (remainder (bignum sign digits) x y) (fselect-type y ((integer) (let ((ydigits (bignum-digits y)) (ysign (bignum-sign y))) (maybe-make-bignum sign (second (quorem-digitlists digits ydigits)) ))) (otherwise ;;(error "bad second argument (REMAINDER ~S ~S)" x y) (^super integer remainder x y) ))) ;;; For quotientm and modulo we copy the code from the emulator. (add-method (quotientm (bignum) x y) (let ((a (quotient x y))) (if (or (and (negative? x) (not (negative? y)) (> (* a y) x)) (and (negative? y) (not (negative? x)) (< (* a y) x))) (- a 1) a))) (add-method (modulo (bignum) x y) (let ((a (remainder x y))) (if (or (and (negative? a) (not (negative? y))) (and (negative? y) (not (negative? x)) (not (negative? a)))) (+ a y) a))) ;;;;;;;;;;;;;;;; addition ;;;;;;;;;;;;;;;; ;bignum-speed-test time: 22 msec (define (sum-digitlists l1 l2) (let ((root (cons 'root '()))) (labels (((step-both in1 in2 carry prevpair) (if (null? in1) (if (null? in2) (block ;both empty (when (not (= 0 carry)) (set (cdr prevpair) (list carry))) (cdr root)) ;in1 empty (let ((x (fx-plus carry (car in2)))) (step-one (cdr in2) (quotient x bignum-base) (set! (cdr prevpair) (cons (remainder x bignum-base) '()))))) (if (null? in2) ;in2 empty (let ((x (fx-plus carry (car in1)))) (step-one (cdr in1) (quotient x bignum-base) (set! (cdr prevpair) (cons (remainder x bignum-base) '())))) ;neither empty (let ((x (fx-plus (fx-plus carry (car in1))(car in2)))) (step-both (cdr in1) (cdr in2) (quotient x bignum-base) (set! (cdr prevpair) (cons (remainder x bignum-base) '()))))))) ((step-one in1 carry prevpair) (cond ((null? in1) ;done (when (not (= 0 carry)) (set (cdr prevpair) (list carry))) (cdr root)) ((zero? carry) ;done (set! (cdr prevpair) in1) (cdr root)) (else ;iterate (let ((x (fx-plus carry (car in1)))) (step-one (cdr in1) (quotient x bignum-base) (set! (cdr prevpair) (cons (remainder x bignum-base) '())))))))) (step-both l1 l2 0 root)))) ;;;;;;;;;;;;;;;;;;;;; subtraction ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;bignum-speed-test time: 64 msec (define (diff-digitlists l1 l2) (let ((root (cons 'root '()))) (labels (((step-both in1 in2 carry prevpair last-nonzero-pair) (if (null? in2) (if (null? in1) ;both empty (if (not (= 0 carry)) (error "negative result in diff-digitlist") (block (set (cdr last-nonzero-pair) '()) (cdr root))) ;in2 empty (let* ((x (fx-plus carry (car in1))) (xmb (modulo x bignum-base)) (newpair (cons xmb '()))) (step-one (cdr in1) (quotientm x bignum-base) (set! (cdr prevpair) newpair) (if (not (= 0 xmb)) newpair last-nonzero-pair)))) ;neither empty (let* ((x (fx-plus carry (- (car in1)(car in2)))) (xmb (modulo x bignum-base)) (newpair (cons xmb '()))) (step-both (cdr in1) (cdr in2) (quotientm x bignum-base) (set! (cdr prevpair) newpair) (if (not (= 0 xmb)) newpair last-nonzero-pair))))) ((step-one in1 carry prevpair last-nonzero-pair) (cond ((null? in1) ;done (when (not (zero? carry)) (error "negative result in diff-digitlist")) (set (cdr last-nonzero-pair) '()) (cdr root)) ((zero? carry) ;done (set! (cdr prevpair) in1) (cdr root)) (else ;iterate (let* ((x (fx-plus carry (car in1))) (xmb (modulo x bignum-base)) (newpair (cons xmb '()))) (step-one (cdr in1) (quotientm x bignum-base) (set! (cdr prevpair) newpair) (if (not (= 0 xmb)) newpair last-nonzero-pair))))))) (step-both l1 l2 0 root root)))) ;;;;;;;;;;;;;;;multiplication;;;;;;;;;;;;;;;;;;;; ; This uses the Strassen divide and conquer algorithm for long lists, ; and the regular n-squared algorithm for short lists. (define multiplication-tradeoff-point 16) ; Seems like a decent value, but not proven optimal. ; The value must be at least 2 to terminate recursion. ;bignum-speed-test time: 392 msec (define (multiply-digitlists x y) (if (or (null? x)(null? y)) '() (let* ((lenx (length x)) (leny (length y))) (labels (((guts x y lenx leny) ;enforce lenx >= leny (cond ((< leny multiplication-tradeoff-point);; N^2 algorithm (let ((accumulator (make list-type (- (+ lenx leny) 1) 0))) (iterate next2 ((digs y)(acc accumulator)) (when digs (let ((dig (car digs))) (when (not (zero? dig)) (iterate next1 ((accleft acc)(listleft x)(carry 0)(i lenx)) (if (= 1 i) (let* ((d (fx-plus (fx-plus carry (car accleft)) (fx-times (car listleft) dig))) (d/b (quotient d bignum-base)) (dmb (remainder d bignum-base))) (set (car accleft) dmb) (when (not (= 0 d/b)) (set (cadr (block (when (null? (cdr accleft)) (set (cdr accleft) (cons '() '()))) accleft)) d/b)) acc) (let ((d (fx-plus (fx-plus carry (car accleft)) (fx-times (car listleft) dig)))) (set! (car accleft) (remainder d bignum-base)) (next1 (cdr accleft) (cdr listleft) (quotient d bignum-base) (- i 1))))) )) (next2 (cdr digs) (cdr acc)))) accumulator) ) (else;; N^1.59 algorithm (let* ((lenx/2 (quotient lenx 2)) (ab (extract-subdigitlists x lenx lenx/2)) (a (cdr ab)) (b (car ab)) (cd (extract-subdigitlists y leny lenx/2)) (c (cdr cd)) (d (car cd)) (w (multiply-digitlists b d))) (if (not (null? c)) ;;regular case (let* ((u (multiply-digitlists (sum-digitlists a b) (sum-digitlists c d))) (v (multiply-digitlists a c))) (shift-sum-digitlists (shift-sum-digitlists v (diff-digitlists u (sum-digitlists v w)) lenx/2) w lenx/2)) ;;simplified case where c=0. (shift-sum-digitlists (diff-digitlists (multiply-digitlists (sum-digitlists a b) d) w) w lenx/2))))))) (if (> leny lenx) (guts y x leny lenx) (guts x y lenx leny)))))) ;(ex-sdl '(0 1 2 3 4 5) 6 2) -> '((0 1) . (2 3 4 5)) ;(ex-sdl '(1 0 0 3 4 5) 6 3) -> '((1) . (3 4 5)) ;(ex-sdl '(0 1 2 3 4 5) 6 7) -> '((0 1 2 3 4 5) . '()) (define (extract-subdigitlists l len part1-len) (if (> len part1-len) (let ((root (cons 'root '()))) (iterate next ((left l)(i part1-len)(prevpair root)(last-nonzero-pair root)) (if (= 0 i) (block (set (cdr last-nonzero-pair) '()) (cons (cdr root) left)) (let* ((carleft (car left)) (newpair (cons carleft '()))) (next (cdr left) (- i 1) (set (cdr prevpair) newpair) (if (= 0 carleft) last-nonzero-pair newpair)))))) (cons l '()))) (define (shift-sum-digitlists x y d) ;shifts x by d before summing (let ((root (cons 'root '()))) (iterate next ((y y)(d d)(prev-pair root)) (cond ((= 0 d) (set (cdr prev-pair) (sum-digitlists x y)) (cdr root)) ((null? y) (next y (- d 1) (set (cdr prev-pair) (cons 0 '())))) (else (next (cdr y) (- d 1) (set (cdr prev-pair) (cons (car y) '())))))))) ; this is used by times/2 and quorem-digitlists-to-get-digit. (define (simple-multiply-step dig l) (if (= 0 dig) '() (let ((root (cons 'root '()))) (labels (((step-one in1 carry prevpair) (cond ((null? in1) ;done (when (not (= 0 carry)) (set (cdr prevpair) (list carry))) (cdr root)) (else ;iterate (let ((x (fx-plus carry (fx-times dig (car in1))))) (step-one (cdr in1) (quotient x bignum-base) (set! (cdr prevpair) (cons (remainder x bignum-base) '())))))))) (step-one l 0 root))))) ;;;;;;;;;;;;;;;division;;;;;;;;;;;;;;;;;;;; ; Warning; this code assumes that two ; bignum digits fit into a fixnum. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;bignum-speed-test time: 2680 msec ; Diglist and divisor are digit-lists. ; Returns (list quotient remainder) (let ((last-inlist #t) (last-divisor #t) (last-quorem #t)) ;cache for last values computed (define (quorem-digitlists inlist divisor) (if (and (eq? inlist last-inlist) (eq? divisor last-divisor)) last-quorem (let ((lenin (length inlist)) (lendiv (length divisor))) (if (if (= lenin lendiv) ;this expression is (digitlist-< inlist divisor) (samelen-digitlist-< inlist divisor) (< lenin lendiv)) (list (list 0) inlist) ;quotient is 0 (iterate next ((todo (reverse (subseq inlist 0 (- lenin lendiv)))) (quotient-remainder (accumulating-quorem-digitlists-to-get-digit '() (subseq inlist (- lenin lendiv) lendiv) divisor))) (if (not (null? todo)) (next (cdr todo) (accumulating-quorem-digitlists-to-get-digit (first quotient-remainder) (let ((newdividend (cons (car todo) (second quotient-remainder)))) (if (equal? newdividend '(0)) '() newdividend)) divisor)) (block (set last-inlist inlist) (set last-divisor divisor) (set last-quorem quotient-remainder))))))))) ;; ;Returns (list (digit . old-digs) remainder) (define (accumulating-quorem-digitlists-to-get-digit old-digs inlist divisor) (let* ((quorem (quorem-digitlists-to-get-digit inlist divisor)) (quo (car quorem)) (rem (cdr quorem))) (list (if (and (= 0 quo)(null? old-digs)) '() (cons quo old-digs)) rem))) ; Call the following helper function only when you are sure ; that the quotient can be expressed by a single digit. ; all arguments are digit lists ;returns (digit . remainder) (let ((last-short-divisor #t) ;cache some internal info (fix-divisor #t) (last-long-divisor #t) (rev-divisor #t)) (define (quorem-digitlists-to-get-digit inlist divisor) ;; (when #*bignum-debug (%write-char #\|)) (let ((lenin (length inlist)) (lendiv (length divisor))) (cond ((if (= lenin lendiv) ; special case when answer is 0 (samelen-digitlist-< inlist divisor) (< lenin lendiv)) (cons 0 inlist)) ((< (+ lenin lendiv) 5) ; special cases for short digitlists (when (not (eq? last-short-divisor divisor)) (set! last-short-divisor divisor) (set! fix-divisor (if (= lendiv 2) (fx-plus (fx-times bignum-base (cadr divisor)) (car divisor)) (car divisor)))) (cond ((= lendiv 2) (let ((fix-dividend (fx-plus (fx-times bignum-base (cadr inlist)) (car inlist)))) (cons (quotient fix-dividend fix-divisor) (bignum-digits (remainder fix-dividend fix-divisor))))) ((= lenin 2) (let ((fix-dividend (fx-plus (fx-times bignum-base (cadr inlist)) (car inlist)))) (cons (quotient fix-dividend fix-divisor) (bignum-digits (remainder fix-dividend fix-divisor))))) (else (let ((fix-dividend (car inlist))) (cons (quotient fix-dividend fix-divisor) (bignum-digits (remainder fix-dividend fix-divisor))))))) (else ;; general case: 3+ digits in inlist, and 2+ or 3+ digits in divisor (when (not (eq? last-long-divisor divisor)) (set! last-long-divisor divisor) (set! rev-divisor (reverse divisor))) (let* ((rev-inlist (reverse inlist)) (inlist-hi (car rev-inlist)) (divisor-hi (car rev-divisor)) (guessdig (cond ((> inlist-hi 999) (quotient (fx-plus (fx-times 10000 inlist-hi) (cadr rev-inlist)) (if (= lenin lendiv) (fx-plus (fx-times 10000 divisor-hi) (cadr rev-divisor)) divisor-hi))) ((> inlist-hi 99) (quotient (fx-plus (fx-times 100000 inlist-hi) (fx-plus (fx-times 10 (cadr rev-inlist)) (quotient (caddr rev-inlist) 1000))) (if (= lenin lendiv) (fx-plus (fx-times 100000 divisor-hi) (fx-plus (fx-times 10 (cadr rev-divisor)) (quotient (caddr rev-divisor) 1000))) (fx-plus (fx-times 10 divisor-hi) (quotient (cadr rev-divisor) 1000))))) ((> inlist-hi 9) (quotient (fx-plus (fx-times 1000000 inlist-hi) (fx-plus (fx-times 100 (cadr rev-inlist)) (quotient (caddr rev-inlist) 100))) (if (= lenin lendiv) (fx-plus (fx-times 1000000 divisor-hi) (fx-plus (fx-times 100 (cadr rev-divisor)) (quotient (caddr rev-divisor) 100))) (fx-plus (fx-times 100 divisor-hi) (quotient (cadr rev-divisor) 100))))) (else (quotient (fx-plus (fx-times 10000000 inlist-hi) (fx-plus (fx-times 1000 (cadr rev-inlist)) (quotient (caddr rev-inlist) 10))) (if (= lenin lendiv) (fx-plus (fx-times 10000000 divisor-hi) (fx-plus (fx-times 1000 (cadr rev-divisor)) (quotient (caddr rev-divisor) 10))) (fx-plus (fx-times 1000 divisor-hi) (quotient (cadr rev-divisor) 10))))))) (guessdig ; adjust in case rounding threw us out of bounds (cond ((< guessdig 1) 1) ((>= guessdig bignum-base) (- bignum-base 1)) (else guessdig))) (guessprod (simple-multiply-step guessdig divisor)) (lowbound (diff-digitlists inlist divisor))) (iterate next ((dig guessdig)(prod guessprod)(first-try #t)) ;iterate to fix guess (cond ((digitlist-< inlist prod) ;; (when #*bignum-debug (%write-char #\-)) (if first-try (next (- dig 1) (diff-digitlists prod divisor) #f) (let* ((distance (diff-digitlists prod inlist)) ;recurse (quorem (quorem-digitlists-to-get-digit distance divisor))) (if (null? (cdr quorem)) (cons (- dig (car quorem)) '()) (cons (- dig (car quorem) 1) (diff-digitlists divisor (cdr quorem))))))) ((digitlist-< lowbound prod) (cons dig (diff-digitlists inlist prod))) (else ;; this case never happens (%write-char #\+) (next (1+ dig) (sum-digitlists prod divisor) #f)))) )))))) ;;;;;;;;;;;; assorted stuff ;;;;;;;;;;;;;;;;;; (define (normalize-digitlist l carry) (if (null? l) (if (= carry 0) '() (normalize-digitlist (list carry) 0)) (let* ((x (+ carry (car l))) (x/b (quotientm x bignum-base)) (xmb (modulo x bignum-base))) (cons xmb (normalize-digitlist (cdr l) x/b))))) (define (digitlist-< l1 l2) (let ((len1 (length l1)) (len2 (length l2))) (if (= len1 len2) (samelen-digitlist-< l1 l2) (< len1 len2)))) (define (samelen-digitlist-< l1 l2) (iterate next ((l1 (reverse l1))(l2 (reverse l2))) (cond ((null? l1) #f) ((= (car l1)(car l2)) (next (cdr l1)(cdr l2))) (else (< (car l1)(car l2)))))) ;;; NOTE: bignum-speed-test, balanced tree fact, etc. moved to bignum2.oak. ;;; Convoluted code defeats constant folding. No big numbers in bignum.oa! (define most-negative-fixnum (ash-left (let ((x 1)) x) 29)) (define most-positive-fixnum (- (+ most-negative-fixnum 1))) (let* ((l0 (list most-positive-fixnum)) (l1 (normalize-digitlist l0 0)) (l2 (normalize-digitlist l1 1)) (l3 (normalize-digitlist l2 1))) (define least-positive-bignum (make bignum 1 l2)) (define least-negative-bignum (make bignum -1 l3))) #| ; The following version of sum-digitlists might be useful ; on a machine that lacks integer division instructions. (define-syntax (iterative-positive-quorem (number divisor quotient-name remainder-name) . body) (let ((labsym (genvar))) `(iterate ,labsym ((,quotient-name 0) (,remainder-name ,number)) (cond ((< ,remainder-name ,divisor) ,@body) (else (,labsym (1+ ,quotient-name)(- ,remainder-name ,divisor))))))) (define (sum-digitlists l1 l2) (let ((root (cons 'root '()))) (labels (((step-both in1 in2 carry prevpair) (if (null? in1) (if (null? in2) (block ;both empty (when (not (= 0 carry)) (set (cdr prevpair) (list carry))) (cdr root)) ;in1 empty (iterative-positive-quorem ((+ carry (car in2)) bignum-base quo rem) (step-one (cdr in2) quo (set! (cdr prevpair) (cons rem '()))))) (if (null? in2) ;in2 empty (iterative-positive-quorem ((+ carry (car in1)) bignum-base quo rem) (step-one (cdr in1) quo (set! (cdr prevpair) (cons rem '())))) ;neither empty (iterative-positive-quorem ((+ carry (car in1)(car in2)) bignum-base quo rem) (step-both (cdr in1) (cdr in2) quo (set! (cdr prevpair) (cons rem '()))))))) ((step-one in1 carry prevpair) (cond ((null? in1) ;done (when (not (= 0 carry)) (set (cdr prevpair) (list carry))) (cdr root)) ((zero? carry) ;done (set! (cdr prevpair) in1) (cdr root)) (else ;iterate (iterative-positive-quorem ((+ carry (car in1)) bignum-base quo rem) (step-one (cdr in1) quo (set! (cdr prevpair) (cons rem '())))))))) (step-both l1 l2 0 root)))) |# (add-method (bit-not (bignum) x) (- (+ 1 x))) ;;; eof oaklisp-1.3.7/src/world/bignum2.oak000066400000000000000000000040431332762442600171530ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter. (define (bignum-speed-test) (set frog1 (apply * (subseq prime-list 0 60))) (set frog2 (apply * (subseq prime-list 60 45))) (set frog3 (* frog1 frog2)) (set frog4 (make bignum 1 (reverse (bignum-digits frog3)))) (%gc) (set junk (quotient frog1 123456)) (map quotient (list (time (10) (+ frog3 frog4)) (time (10) (- frog3 frog4)) (time (5) (* frog1 frog2)) (time (1) (quotient frog4 frog2))) '(1000 1000 1000 1000))) ; (), 1, (1 . 2), ((2 . 3) . 1), ((1 . 4) . (2 . 3)) (define-instance insert-balanced-tree operation) (add-method (insert-balanced-tree (null-type) self new) new) (add-method (insert-balanced-tree (object) self new) (cons self new)) (add-method (insert-balanced-tree (cons-pair the-car the-cdr) self new) (let ((old-car the-car)) (set! the-car (insert-balanced-tree the-cdr new)) (set! the-cdr old-car)) self) (define-instance multiply-tree operation) (add-method (multiply-tree (null-type) self) 1) (add-method (multiply-tree (object) self) self) (add-method (multiply-tree (cons-pair the-car the-cdr) self) (* (multiply-tree the-car) (multiply-tree the-cdr))) (define (fact n) (iterate next ((n n)(tree '())) (if (zero? n) (multiply-tree tree) (next (- n 1)(insert-balanced-tree tree n))))) ;;; eof oaklisp-1.3.7/src/world/booted.oak000066400000000000000000000033461332762442600170710ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter ;;; We're up enough now to attempt a read-eval-print loop upon reboot. (define (%get-an-ivar t o v) (contents (car (%locate-ivars t o (list v))))) (let* ((reboot-lambda (lambda () (set! ((%register 'nil)) (the-runtime nil)) (set! ((%register 't)) (the-runtime t)) (set! ((%register 'cons-type)) (the-runtime cons-pair)) (set! ((%register 'object-type)) (the-runtime object)) (set! ((%register 'fixnum-type)) (the-runtime fixnum)) (set! ((%register 'loc-type)) (the-runtime locative)) (set! ((%register 'env-type)) (the-runtime %closed-environment)) (set! ((%register 'segment-type)) (the-runtime stack-segment)) (set! ((%register 'method-type)) (the-runtime %method)) (set! ((%register 'operation-type)) (the-runtime operation)) (warm-boot) ;; (format t "warm boot actions ~S~%" warm-boot-actions) (top-level))) (reboot-method (%get-an-ivar operation reboot-lambda 'lambda?))) (set! ((%register 'boot-code)) reboot-method)) oaklisp-1.3.7/src/world/bounders.oak000066400000000000000000000036411332762442600174340ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter (define-instance find-bound-vars operation) (define-instance find-vars operation) (define-instance for-each-r operation) (add-method (for-each-r (eq-hash-table table) self op) (let ((op (lambda (x) (op (car x) (cdr x))))) (dotimes (i (length table)) (for-each op (nth table i))))) (add-method (find-bound-vars (locale variable-table) self val) (for-each-r variable-table (lambda (sym cell) (when (eq? (contents cell) val) (format #t "~&~A's bound to that.~%" sym))))) (add-method (find-vars (locale variable-table) self pred?) (for-each-r variable-table (lambda (sym cell) (when (pred? (contents cell) sym) (format #t "~&~A (~A)~%" sym (contents cell)))))) (define-instance find-sorted-vars operation) (add-method (find-sorted-vars (locale variable-table) self pred?) (let ((outlist nil)) (for-each-r variable-table (lambda (sym cell) (when (pred? (contents cell) sym) (push outlist sym)))) (sort outlist (lambda (a b) (< (#^string a) (#^string b)))))) (define (find-and-print-sorted-vars locale pred?) (dolist (x (find-sorted-vars locale pred?)) (format #t "~&~A~%" x))) oaklisp-1.3.7/src/world/bp-alist.oak000066400000000000000000000016031332762442600173220ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter. (define-instance get-bp-alist operation) (add-method (get-bp-alist (type type-bp-alist) self) type-bp-alist) oaklisp-1.3.7/src/world/catch.oak000066400000000000000000000061551332762442600167000ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;appropriate types and operations;;;;;;;;; (define-instance escape-object type '(value-stack-offset ;These stack offsets are manipulated context-stack-offset ; only by the micro-engine. saved-wind-count saved-fluid-binding-list) (list object)) (%your-top-wired escape-object) (define-constant %escape-object-length 5) (define throw (add-method ((make operation) (escape-object saved-wind-count saved-fluid-binding-list) tag value) (unwind %windings %wind-count saved-wind-count) ; (set! fluid-binding-list saved-fluid-binding-list) (set-current-fluid-bindings saved-fluid-binding-list) (%throw tag value))) (define-constant %throw (add-method ((make-open-coded-operation '((throw)) 2 1) (escape-object) tag value) (%throw tag value))) ;;; %FILLTAG can never be actually called without losing, only the ;;; open coded version works, so we don't bother with a method for it. (define-constant %filltag (make-open-coded-operation (lambda (ignore) `((filltag ,#*filltag-offset))) ;info from the compiler 1 1)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;how catch should be compiled;;;;;;;;;;; (define-syntax (native-catch var . body) `(%catch (let ((,var (%filltag (%allocate escape-object %escape-object-length)))) (set! ((%slot 3) ,var) %wind-count) ; (set! ((%slot 4) ,var) fluid-binding-list) (set! ((%slot 4) ,var) (get-current-fluid-bindings)) ,@body))) (define-syntax (catch v . body) `(native-catch ,v (let ((,v (lambda (val) (throw ,v val)))) ,@body))) ;;; The following method occurs in mac-code. I am showing it here so ;;; that its relationship to the NATIVE-CATCH macro and the %FILLTAG ;;; open coder will be clear. #|| (add-method (gen-code (ast-catch-node expression) self cont) (let ((end-cont (if (eq? cont 'next) (gensym "endcatch") cont))) (let* ((body-code (bind ((#*barrier-node (if (eq? cont 'tail) #*barrier-node (combn-op expression))) ;the LET lambda (#*filltag-offset (1+ (if (eq? cont 'tail) (nguys-to-pop self) 0)))) (gen-code expression 'tail)))) (splice (list (if (eq? end-cont 'tail) '() (list `(push-cxt ,end-cont))) body-code (if (eq? cont 'next) (list end-cont) '())))))) ||# oaklisp-1.3.7/src/world/cmdline-getopt.oak000066400000000000000000000034231332762442600205240ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1999 Barak A. Pearlmutter. ;;; This can be made more sophisticated later, with command completion etc. ;;; For now is is quite rudimentary. (define (getopt options args) (let aux ((args args)) (if (null? args) '() (cond ((strip-dashes (car args)) => (lambda (a) (cond ((ass equal? a options) => (lambda (o) (let ((n (cadr o)) (f (caddr o))) (let ((stuff (head (cdr args) n))) (catch-errors (general-error (lambda (err) (format standard-error "~&An error occurred while processing switch ~A args ~S~%" a stuff) (report err standard-error) (format standard-error "~%"))) (apply f stuff))) (aux (tail (cdr args) n))))) (else (format standard-error "~&error: unknown switch: ~A" a) (exit 1))))) (else args))))) (define (strip-dashes a) (let ((n (length a))) (and (> n 1) (equal? (nth a 0) #\-) (let ((dashlen (if (equal? (nth a 1) #\-) 2 1))) (and (> n dashlen) (subseq a dashlen (- n dashlen))))))) oaklisp-1.3.7/src/world/cmdline-options.oak000066400000000000000000000046531332762442600207230ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1999 Barak A. Pearlmutter. (define commandline-options `(("help" 0 ,(lambda () (format #t " Oaklisp level options. --help Print this message & exit. --eval expr Evaluate Oaklisp expression, which is one arg so be sure to quote for shell. --load file Load a file. --compile file Compile file.oak yielding file.oa --locale x Switch to locale x, eg system-locale (default), compiler-locale, scheme-locale (for RnRS compatibility). --pthreads Number of pthreads to allocate. --exit Exit upon processing this option. Example: oaklisp --trace-gc 2 -- --locale scheme-locale --compile myfile --exit ") (exit 0))) ("eval" 1 ,(lambda (x) (eval (read (make string-input-stream x)) #*current-locale))) ("load" 1 ,(lambda (x) (load x #*current-locale))) ("compile" 1 ,(lambda (x) (format #t "~&Compiling ~S..." x) (flush standard-output) (bind ((#*compiler-noisiness 0)) (compile-file #*current-locale x)) (format #t "...done.~%"))) ("locale" 1 ,(lambda (x) (set! #*current-locale (eval (read (make string-input-stream x)) #*current-locale)))) ("pthreads" 1 ,(lambda (x) (set! heavyweight-thread-count (read (make string-input-stream x))) (unless (integer? heavyweight-thread-count) (exit 1 "-pthread option takes integer argument.~%")))) ("exit" 0 ,(lambda () (exit 0 ""))))) (define (cmdline-eat) (set! argline (getopt commandline-options argline))) (add-warm-boot-action cmdline-eat) oaklisp-1.3.7/src/world/cmdline.oak000066400000000000000000000023671332762442600172320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1999 Barak A. Pearlmutter (define (get-argv i) (let aux ((rchars '()) (j 0)) (let ((c (get-argline-char i j))) (cond ((eqv? c #\nul) (#^string (reverse rchars))) ((eqv? c #f) #f) (else (aux (cons c rchars) (+ j 1))))))) (define (get-argline) (let aux ((rargv '()) (i 0)) (let ((a (get-argv i))) (if a (aux (cons a rargv) (+ i 1)) (reverse rargv))))) (define argline '()) (define (fetch-argline) (set! argline (get-argline))) (add-warm-boot-action fetch-argline) oaklisp-1.3.7/src/world/code-vector.oak000066400000000000000000000130721332762442600200240ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;(initialize %code-vector '(ivar-map) (list variable-length-mixin object)) ;;; Define NTH properly for %CODE-VECTORs. ;;; We conditionalize on whether we're under a big-endian regime at load ;;; time, thus avoiding the check repeatedly at runtime. (cond ((%big-endian?) (add-method (nth (%code-vector) self n) (let* ((n2 (quotient n 2)) (x (%vref self n2))) (if (not (zero? (modulo n 2))) ;; Low 16 bits: (bit-or (ash-left (bit-and (%pointer x) #x3FFF) 2) (%tag x)) ;; High 16 bits: (bit-and #xFFFF (ash-right (%pointer x) 14))))) (add-method ((setter nth) (%code-vector) self n x) (let* ((n2 (quotient n 2)) (x0 (%vref self n2)) (x1 (if (not (zero? (modulo n 2))) ;; Low 16 bits: (%crunch (bit-or (bit-and (%pointer x0) (bit-not #x3FFF)) (ash-right x 2)) (bit-and x #x3)) ;; High 16 bits: (%crunch (bit-or (bit-and (%pointer x0) #x3FFF) (ash-left x 14)) (%tag x0))))) (set! (%vref self n2) x1)))) (else (add-method (nth (%code-vector) self n) (let* ((n2 (quotient n 2)) (x (%vref self n2))) (if (zero? (modulo n 2)) ;; Low 16 bits: (bit-or (ash-left (bit-and (%pointer x) #x3FFF) 2) (%tag x)) ;; High 16 bits: (bit-and #xFFFF (ash-right (%pointer x) 14))))) (add-method ((setter nth) (%code-vector) self n x) (let* ((n2 (quotient n 2)) (x0 (%vref self n2)) (x1 (if (zero? (modulo n 2)) ;; Low 16 bits: (%crunch (bit-or (bit-and (%pointer x0) (bit-not #x3FFF)) (ash-right x 2)) (bit-and x #x3)) ;; High 16 bits: (%crunch (bit-or (bit-and (%pointer x0) #x3FFF) (ash-left x 14)) (%tag x0))))) (set! (%vref self n2) x1))))) (define-instance remap-your-ivars operation) (add-method (remap-your-ivars (%code-vector) self remap-alist real-ivar-map) (let* ((len (length self)) (new-code-vector (make %code-vector len)) (limit (* len 2))) (set! ((%slot 2) new-code-vector) real-ivar-map) (iterate aux ((i 0)) (cond ((< i len) (set! (%vref new-code-vector i) (%vref self i)) (aux (+ i 1))) (else (iterate aux ((i 0)) (cond ((<= limit i) new-code-vector) (else (let ((x (nth new-code-vector i))) (cond ((= x #x600) ;; LOAD-IMM, op=0 and arg=6. (aux (+ i (if (odd? i) 3 4)))) (else (let ((op (bit-and #x3F (ash-right x 2)))) (if (or (= op 12) ;load-bp (= op 13) ;store-bp (= op 17)) ;make-bp-loc (let* ((arg (ash-right x 8)) (xlate (assq arg remap-alist))) (if xlate (set! (nth new-code-vector i) (bit-or (ash-left op 2) (ash-left (cdr xlate) 8))))))) (aux (+ i 1))))))))))))) ;;; Redefine %INSTALL-METHOD-WITH-ENV so it creates new code bodies when ;;; there's an ivar mismatch. (add-method (%install-method-with-env (type operation-method-alist ivar-list) self op code-body env) (let ((code-ivar-map ((%slot 2) code-body))) (iterate aux ((real-ivar-map ivar-list) (check-ivar-map code-ivar-map) (i 0) (remap-alist '())) (cond ((not (null? check-ivar-map)) (let ((x (car check-ivar-map))) (cond ((or (null? x) (eq? x (car real-ivar-map))) (aux (cdr real-ivar-map) (cdr check-ivar-map) (+ 1 i) remap-alist)) (else (let ((p (position-in-list x ivar-list))) (cond ((null? p) (error "Variable ~A declared in ADD-METHOD isn't in ~A, the ivars of ~A." x ivar-list self)) (else (aux (cdr real-ivar-map) (cdr check-ivar-map) (+ i 1) (cons (cons i p) remap-alist))))))))) (else (let ((the-method (%allocate %method 3)) (the-code-body (if (null? remap-alist) code-body (remap-your-ivars code-body remap-alist ivar-list)))) (set! ((%slot 1) the-method) the-code-body) (set! ((%slot 2) the-method) env) (cond ((and (eq? self object) ((%slot 1) op)) (set! ((%slot 1) op) the-method)) (else (when (and ((%slot 1) op) (not (eq? ((%slot 1) op) 0))) ;; Toss it on to OBJECT's OPERATION-METHOD-ALIST: (set! ((%slot 7) object) (cons (cons op ((%slot 1) op)) ((%slot 7) object)))) ;; Flush the method cache (set! ((%slot 2) op) 0) ;; install the newly created method (let ((the-ass (%assq op operation-method-alist))) (set! ((%slot 1) op) nil) (if the-ass (set! (cdr the-ass) the-method) (set! operation-method-alist (cons (cons op the-method) operation-method-alist)))))) op)))))) (define-constant %make-lambda-with-env (add-method ((make-open-coded-operation '((make-lambda)) 2 1) (%code-vector) some-code an-environment) (%make-lambda-with-env some-code an-environment))) ;;; eof oaklisp-1.3.7/src/world/coerce.oak000066400000000000000000000027231332762442600170530ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter. ;;; Define a kind of type that can be coerced to. Such types have a ;;; coercer operation, which can be applied to an instance of some other ;;; type in order to coerce it to this type. For example, to coerce a ;;; number X to floating point, write ((COERCER FLOAT) X) or, with read ;;; macros, (#^FLOAT X). ;;; This definition goes in "KERNEL" so primitive types can be coercable. ;(define-instance coercable-type type '(co-op) (list type)) (define-constant-instance coercer (mix-types oc-mixer (list foldable-mixin settable-operation))) (add-method (coercer (coercable-type co-op) self) co-op) (add-method ((setter coercer) (coercable-type co-op) self new-op) (set! co-op new-op)) ;;; eof oaklisp-1.3.7/src/world/cold-boot-end.oak000066400000000000000000000035171332762442600202430ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988, Kevin J. Lang & Barak A. Pearlmutter ;;; This file goes at the end of the cold boot. ;;; Turn off the annoying alliterative ampersands. (set! monitor-for-bruce #f) ;;; Turn off the cold load streams so the whole concept will get GCed. (set! standard-input 0) (set! standard-output 0) (%write-char #\newline) (%write-char #\C) (%write-char #\o) (%write-char #\l) (%write-char #\d) (%write-char #\space) (%write-char #\b) (%write-char #\o) (%write-char #\o) (%write-char #\t) (%write-char #\e) (%write-char #\d) (%write-char #\.) (%write-char #\newline) (%write-char #\newline) (%write-char #\O) (%write-char #\a) (%write-char #\k) (%write-char #\l) (%write-char #\i) (%write-char #\s) (%write-char #\p) (%write-char #\space) (%write-char #\s) (%write-char #\t) (%write-char #\o) (%write-char #\p) (%write-char #\p) (%write-char #\e) (%write-char #\d) (%write-char #\space) (%write-char #\i) (%write-char #\t) (%write-char #\s) (%write-char #\e) (%write-char #\l) (%write-char #\f) (%write-char #\.) (%write-char #\.) (%write-char #\.) (%write-char #\newline) ;;; Halt so the world will dump. ((%halt 0)) ;;; eof oaklisp-1.3.7/src/world/cold-booting.oak000066400000000000000000000021351332762442600201700ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter and Kevin J. Lang (%write-char #\C) (%write-char #\o) (%write-char #\l) (%write-char #\d) (%write-char #\space) (%write-char #\b) (%write-char #\o) (%write-char #\o) (%write-char #\t) (%write-char #\i) (%write-char #\n) (%write-char #\g) (%write-char #\space) (%write-char #\.) (%write-char #\.) (%write-char #\.) (%write-char #\newline) ;;; eof oaklisp-1.3.7/src/world/cold.oak000066400000000000000000000025561332762442600165400ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter and Kevin J. Lang ;;; Define both input and output streams that might work during the cold ;;; load process, so we can have a gander at error messages and maybe poke ;;; about. (let ((cold-load-input-stream (make type '() (list input-stream object))) (cold-load-output-stream (make type '() (list output-stream object)))) (add-method (really-read-char (cold-load-input-stream) self) (%read-char)) (add-method (write-char (cold-load-output-stream) self char) (%write-char char)) (set! standard-input (make cold-load-input-stream)) (set! standard-output (make cold-load-output-stream))) ;;; eof oaklisp-1.3.7/src/world/compile-bench.oak000066400000000000000000000102371332762442600203170ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang ;;; Define the stuff to link in fasl format code segments, and to load files. (define-instance %ivar-map locatable-operation) (add-method ((locater %ivar-map) (%code-vector ivar-map) self) (make-locative ivar-map)) (define (link-code-segment locale segment) (iterate aux0 ((inputs segment) (outputs '()) (code-resolution-lists '())) (cond ((null? inputs) (let ((outputs (reverse outputs))) (dolist (crl (reverse code-resolution-lists)) (dolist (clause crl) (set! (contents (cdr clause)) (nth outputs (car clause))))) (car outputs))) (else (let* ((input (car inputs)) (resolution-list (first input)) (code (cddr (second input)));the cddr strips off the zeros where the ivar list belongs. (instruction-count (length code)) (word-count (quotient (+ instruction-count 1) 2)) (v (make %code-vector word-count))) (iterate aux ((c code) (i 0)) (cond (c (set! (nth v i) (car c)) (aux (cdr c) (+ i 1))) (else (iterate aux ((resolution-list resolution-list) (code-number-to-locs-alist '())) (cond ((null? resolution-list) (aux0 (cdr inputs) (cons v outputs) (cons code-number-to-locs-alist code-resolution-lists))) (else (let ((clause (car resolution-list))) (destructure (which where what) clause (cond ((eq? where 0) (cond ((not (or (eq? which 'constant) (eq? which 2))) (error "Bad resolution clause ~S; only constants can be put in the IVAR-MAP slot." clause)) (else (set! (%ivar-map v) what) (aux (cdr resolution-list) code-number-to-locs-alist)))) (else (let ((where-loc (make-locative (%vref v (- (quotient where 2) 1))))) (cond ((or (eq? which 'constant)(eq? which 2)) (set! (contents where-loc) what) (aux (cdr resolution-list) code-number-to-locs-alist)) ((or (eq? which 'variable)(eq? which 0)) (set! (contents where-loc) (or (variable? locale what) (let* ((x variable-undefined-value) (y (make-locative x))) (format #t "Warning: installing ~S in ~A.~%" what locale) (set! (variable? locale what) y) y))) (aux (cdr resolution-list) code-number-to-locs-alist)) ((or (eq? which 'code)(eq? which 1)) (aux (cdr resolution-list) (cons (cons what where-loc) code-number-to-locs-alist))) (else (error "Weird resolution clause ~S." clause))))))))))))))))))) (define (load-code-segment locale segment) ((%install-method-with-env object (make operation) (link-code-segment locale segment) %empty-environment) 'loaded)) (define (load-oa-file locale file) (load-code-segment locale (with-open-file (s (append (#^string file) ".oa") in) (let ((red (read s))) (if (pair? (caar red)) red (make-oa-list red)))))) #| (define (load-oa-file locale file) (load-code-segment locale (let ((s (open-input-file (append (#^string file) ".oa")))) (block0 (read s) (close s))))) |# (define (load-oak-file locale file) (dofile (append file ".oak") (lambda (expr) (format #t "~A...~%" expr) (dumb-eval (expand-groveling locale expr) '() locale)))) (define (load-omac-file locale file) (dofile (append file ".omac") (lambda (expr) (dumb-eval expr '() locale)))) ;;; eof oaklisp-1.3.7/src/world/compiler-exports.oak000066400000000000000000000020621332762442600211230ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1999 Barak A. Pearlmutter & Kevin J. Lang ;;; The last two variables exported might already be in system-locale ;;; due to forward references; hence the check. (dolist (v '(cc compile-file compile-code-fragment)) (when (not (variable-here? system-locale v)) (export-sharing-cell compiler-locale system-locale v))) ;;; eof oaklisp-1.3.7/src/world/complex.oak000066400000000000000000000144241332762442600172630ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Complex numbers! Oh boy! ;;; (define-instance complex type '(the-real-part the-imag-part) (list number object)) (add-method (initialize (complex the-real-part the-imag-part) self x y) (set! the-real-part x) (set! the-imag-part y) self) (define (make-complex i j) (if (eq? j 0) i (make complex i j))) ;;; This controls how complex numbers are printed. ;;; ;;; Possible values are STRUCTURE, I-NOTATION, and (some day) POLAR ;;; which will cause 3+4i to print as #C(3 4), 3+4i, and (some day) ;;; 5@0.92729521. (set! #*complex-display-style 'structure) (add-method (print (complex the-real-part the-imag-part) self stream) (case #*complex-display-style ((structure) (format stream "#C(~A ~A)" the-real-part the-imag-part)) ((i-notation) (unless (zero? the-real-part) (format stream "~A" the-real-part)) (let ((im (cond ((negative? the-imag-part) (write-char stream #\-) (- the-imag-part)) (else (write-char stream #\+) the-imag-part)))) (unless (= im 1) (format stream "~A" im)) (write-char stream #\i))) ;; trig stuff is unimplemented: ;((polar) ; (format stream "~A@~A" (abs self) (phase self))) (else (error "Unknown complex printing style ~S." #*complex-display-style)))) (add-method (exact? (complex the-real-part the-imag-part) self) (and (exact? the-real-part) (exact? the-imag-part))) (define-instance real-part operation) (define-instance imag-part operation) (add-method (real-part (complex the-real-part) self) the-real-part) (add-method (imag-part (complex the-imag-part) self) the-imag-part) (add-method (real-part (number) self) self) (add-method (imag-part (number) self) 0) (define-instance abs-squared operation) (add-method (abs-squared (complex the-real-part the-imag-part) self) (+ (* the-real-part the-real-part) (* the-imag-part the-imag-part))) (add-method (abs-squared (number) x) (* x x)) (add-method (abs (complex) self) (sqrt (abs-squared self))) (add-method (plus/2 (complex the-real-part the-imag-part) x y) (make-complex (+ the-real-part (real-part y)) (+ the-imag-part (imag-part y)))) (add-method (minus (complex the-real-part the-imag-part) self) (make complex (- the-real-part) (- the-imag-part))) (define-instance conjugate operation) (add-method (conjugate (complex the-real-part the-imag-part) self) (make complex the-real-part (- the-imag-part))) (add-method (conjugate (number) self) self) (add-method (times/2 (complex the-real-part the-imag-part) x y) (efselect-type y ((complex) (let ((y-real (real-part y)) (y-imag (imag-part y))) (make-complex (- (* the-real-part y-real) (* the-imag-part y-imag)) (+ (* the-real-part y-imag) (* the-imag-part y-real))))) ((number) (make-complex (* the-real-part y) (* the-imag-part y))))) (add-method (/ (complex the-real-part the-imag-part) x y) (efselect-type y ((complex) (* (/ x (abs-squared y)) (conjugate y))) ((number) (make-complex (/ the-real-part y) (/ the-imag-part y))))) (add-method (/r (complex the-real-part the-imag-part) x y) (efselect-type y ((complex) (/ x y)) ((number) (* (/ y (abs-squared x)) (conjugate x))))) (add-method (= (complex the-real-part the-imag-part) x y) (and (= the-imag-part (imag-part y)) (= the-real-part (real-part y)))) #|| (add-method (sqrt (complex) z) (* (sqrt (abs z)) (cis (/ (phase z) 2)))) ||# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Try defining some new generic arithmetic operators: (define-instance signum operation) (add-method (signum (real) x) (cond ((= x 0) 0) ((> x 0) 1) (else -1))) (add-method (signum (complex) x) (/ x (abs x))) #|| (define pi 3.141592653589793d0) (define-instance phase operation) (add-method (phase (real) x) (cond ((= x 0) 0) ((> x 0) pi) (else (- pi)))) (add-method (phase (complex the-real-part the-imag-part) x) (atan2 the-imag-part the-real-part)) (add-method (^ (number) x y) (^r y x)) (define-instance ^r operation) (add-method (^r (float) y x) (exp (* (ln x) y))) (add-method (^r (integer) y x) (cond ((= y 1) x) ((= y 0) 1) ((< y 0) (/ 1 (^r (- y) x))) (else (let* ((y2 (quotient y 2)) (p (^r y2 x)) (p2 (* p p))) (* p2 (^r (- (- y y2) y2) x)))))) (add-method (^r (fraction) y x) (^r (#^float y) x)) (add-method (^r (complex the-real-part the-imag-part) y x) (* (^ x the-real-part) (cis (* the-imag-part (ln x))))) (define-instance exp operation) ;(add-method (exp (float) x) ; (z:exp x)) ;(add-method (exp (real) x) ; (z:exp (#^float x))) (add-method (exp (complex the-real-part the-imag-part) x) (* (exp the-real-part) (cis the-imag-part))) (define-instance cis operation) (add-method (cis (number) x) (make-complex (cos x) (sin x))) (add-method (cis (complex the-real-part the-imag-part) z) ;; cis(a+bi) = exp(i*(a+bi)) = exp(-b+ai) (* (cis the-real-part) (exp (- the-imag-part)))) (define-instance cos operation) (define-instance sin operation) (define-instance atan2 operation) (add-method (atan2 (real) y x) (efselect-type x ((real) (cl:atan (#^float y) (#^float x))) ((complex) (error "Arc Tangent in Complex case unimplemented")))) (define-instance ln operation) (add-method (ln (real) x) (cond ((> x 0) ...) ((< x 0) (make complex (ln (- x)) pi)) (else (error "Natural Log of Zero.")))) (add-method (ln (complex the-real-part the-imag-part) z) (make complex (ln (abs z)) (phase z))) ||# ;;; eof oaklisp-1.3.7/src/world/conses.oak000066400000000000000000000142261332762442600171060ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Barak A. Pearlmutter & Kevin J. Lang (local-syntax (define-cxr cxr op-list) (labels ((nestify (lambda (l a) (if (null? l) a (list (car l) (nestify (cdr l) a)))))) (let ((nestified (nestify op-list 'x))) `(block (define-constant ,cxr (make-cxr ',op-list)) (add-method (,cxr (pair) x) ,nestified) (add-method ((setter ,cxr) (pair) x y) (set! ,nestified y)) (add-method ((locater ,cxr) (pair) x) (make-locative ,nestified)))))) (let* ((opencodtypes (list open-coded-mixin operation)) (opencodop (mix-types oc-mixer opencodtypes)) (foldableopencodop (mix-types oc-mixer (cons foldable-mixin opencodtypes)))) (define (make-open-coded-operation code in-count out-count) (make opencodop code in-count out-count)) (define (make-foldable-open-coded-operation code in-count out-count) (make foldableopencodop code in-count out-count)) (define (make-fancy-open-coded-operation other-types code in-count out-count) (make (mix-types oc-mixer (%append other-types opencodtypes)) code in-count out-count))) ;; note: %append is used here because append isn't defined until later ;; Cons-pair is initialized properly in the kernel files. (define-constant cons (add-method ((make-open-coded-operation '((cons)) 2 1) (object) x y) (cons x y))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (labels ((map-list (lambda (x) (if (null? x) x (cons (list (car x)) (map-list (cdr x)))))) (reverse-aux (lambda (x y) (if (null? x) y (reverse-aux (cdr x) (cons (car x) y))))) (setify (lambda (x) (cond ((eq? x 'car) 'set-car) ((eq? x 'cdr) 'set-cdr) (else (error "~A isn't CAR or CDR." x))))) (locify (lambda (x) (cond ((eq? x 'car) 'locate-car) ((eq? x 'cdr) 'locate-cdr) (else (error "~A isn't CAR or CDR." x))))) (make-cxr (lambda (sequence) (let ((cxr (make (mix-types oc-mixer (list open-coded-mixin locatable-operation)) (reverse-aux (map-list sequence) '()) 1 1))) (set! (setter cxr) (make (mix-types oc-mixer (list open-coded-mixin operation)) (reverse-aux (map-list (cons (setify (car sequence)) (cdr sequence))) '()) 2 1)) (set! (locater cxr) (make (mix-types oc-mixer (list open-coded-mixin operation)) (reverse-aux (map-list (cons (locify (car sequence)) (cdr sequence))) '()) 1 1)) cxr)))) (define-constant car (make-cxr '(car))) (add-method (car (cons-pair the-car) self) the-car) (add-method ((setter car) (cons-pair the-car) self y) (set! the-car y)) (add-method ((locater car) (cons-pair the-car) self) (make-locative the-car)) (define-constant cdr (make-cxr '(cdr))) (add-method (cdr (cons-pair the-cdr) self) the-cdr) (add-method ((setter cdr) (cons-pair the-cdr) self y) (set! the-cdr y)) (add-method ((locater cdr) (cons-pair the-cdr) self) (make-locative the-cdr)) (define-cxr caar (car car)) (define-cxr cadr (car cdr)) (define-cxr cdar (cdr car)) (define-cxr cddr (cdr cdr)) (define-cxr caaar (car car car)) (define-cxr caadr (car car cdr)) (define-cxr cadar (car cdr car)) (define-cxr caddr (car cdr cdr)) (define-cxr cdaar (cdr car car)) (define-cxr cdadr (cdr car cdr)) (define-cxr cddar (cdr cdr car)) (define-cxr cdddr (cdr cdr cdr)) (define-cxr caaaar (car car car car)) (define-cxr caaadr (car car car cdr)) (define-cxr caadar (car car cdr car)) (define-cxr caaddr (car car cdr cdr)) (define-cxr cadaar (car cdr car car)) (define-cxr cadadr (car cdr car cdr)) (define-cxr caddar (car cdr cdr car)) (define-cxr cadddr (car cdr cdr cdr)) (define-cxr cdaaar (cdr car car car)) (define-cxr cdaadr (cdr car car cdr)) (define-cxr cdadar (cdr car cdr car)) (define-cxr cdaddr (cdr car cdr cdr)) (define-cxr cddaar (cdr cdr car car)) (define-cxr cddadr (cdr cdr car cdr)) (define-cxr cdddar (cdr cdr cdr car)) (define-cxr cddddr (cdr cdr cdr cdr)) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define first (lambda (x) (nth x 0))) (define second (lambda (x) (nth x 1))) (define third (lambda (x) (nth x 2))) (define fourth (lambda (x) (nth x 3))) (define fifth (lambda (x) (nth x 4))) (define sixth (lambda (x) (nth x 5))) (define seventh (lambda (x) (nth x 6))) (define eighth (lambda (x) (nth x 7))) (define ninth (lambda (x) (nth x 8))) (define tenth (lambda (x) (nth x 9))) (add-method (length (list-type) inlist) (labels ( ((loop7 remaining count) (if (null? remaining) (+ 7 count) (loop0 (cdr remaining) (+ 8 count)))) ((loop6 remaining count) (if (null? remaining) (+ 6 count) (loop7 (cdr remaining) count))) ((loop5 remaining count) (if (null? remaining) (+ 5 count) (loop6 (cdr remaining) count))) ((loop4 remaining count) (if (null? remaining) (+ 4 count) (loop5 (cdr remaining) count))) ((loop3 remaining count) (if (null? remaining) (+ 3 count) (loop4 (cdr remaining) count))) ((loop2 remaining count) (if (null? remaining) (+ 2 count) (loop3 (cdr remaining) count))) ((loop1 remaining count) (if (null? remaining) (+ 1 count) (loop2 (cdr remaining) count))) ((loop0 remaining count) (if (null? remaining) count (loop1 (cdr remaining) count))) ) (loop0 inlist 0))) #| (add-method (length (list-type) l) (iterate aux ((l l)(n 0)) (if l (aux (cdr l) (+ n 1)) n))) |# ;;; eof oaklisp-1.3.7/src/world/consume.oak000066400000000000000000000106631332762442600172660ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter (labels (((consume1 val arg . args) (if (= 0 (rest-length args)) val (consume1 val . args)))) (define (consume-args val . args) (if (= 0 (rest-length args)) val (consume1 val . args)))) (labels (((helper1 op list-head prev-pair a) (set! (cdr prev-pair) (list a)) (op (cdr list-head))) ((helper2 op list-head prev-pair a b) (set! (cdr prev-pair) (list a b)) (op (cdr list-head))) ((helper3 op list-head prev-pair a b c) (set! (cdr prev-pair) (list a b c)) (op (cdr list-head))) ((helper4 op list-head prev-pair a b c d) (set! (cdr prev-pair) (list a b c d)) (op (cdr list-head))) ((helper5 op list-head prev-pair a b c d e) (set! (cdr prev-pair) (list a b c d e)) (op (cdr list-head))) ((helper6 op list-head prev-pair a b c d e f) (set! (cdr prev-pair) (list a b c d e f)) (op (cdr list-head))) ((helper7 op list-head prev-pair a b c d e f g) (set! (cdr prev-pair) (list a b c d e f g)) (op (cdr list-head))) ((helper8+ op list-head prev-pair a b c d e f g h . rest) (let ((new-last-pair (cons h '()))) (set! (cdr prev-pair) (cons a (cons b (cons c (cons d (cons e (cons f (cons g new-last-pair)))))))) (cond ((> (rest-length rest) 7) (helper8+ op list-head new-last-pair . rest)) ((< (rest-length rest) 4) (cond ((zero? (rest-length rest)) (op (cdr list-head))) ((= (rest-length rest) 1) (helper1 op list-head new-last-pair . rest)) ((= (rest-length rest) 2) (helper2 op list-head new-last-pair . rest)) (else (helper3 op list-head new-last-pair . rest)))) (else (cond ((= (rest-length rest) 4) (helper4 op list-head new-last-pair . rest)) ((= (rest-length rest) 5) (helper5 op list-head new-last-pair . rest)) ((= (rest-length rest) 6) (helper6 op list-head new-last-pair . rest)) (else (helper7 op list-head new-last-pair . rest)))))))) (define (listify-args op . rest) (let ((list-head (cons '() '()))) (cond ((< (rest-length rest) 4) (cond ((= (rest-length rest) 1) (helper1 op list-head list-head . rest)) ((= (rest-length rest) 2) (helper2 op list-head list-head . rest)) ((= (rest-length rest) 3) (helper3 op list-head list-head . rest)) ((zero? (rest-length rest)) (op '())))) ((< (rest-length rest) 8) (cond ((= (rest-length rest) 4) (helper4 op list-head list-head . rest)) ((= (rest-length rest) 5) (helper5 op list-head list-head . rest)) ((= (rest-length rest) 6) (helper6 op list-head list-head . rest)) (else (helper7 op list-head list-head . rest)))) (else (helper8+ op list-head list-head . rest))))) ) #| (labels (((listify-args-aux listify-argsofar op guy . rest) (if (zero? (rest-length rest)) (iterate inline-reverse! ((old (cons guy listify-argsofar)) (new nil)) (cond ((null? old) (op new)) (else (let ((o (cdr old))) (set! (cdr old) new) (inline-reverse! o old))))) (listify-args-aux (cons guy listify-argsofar) op . rest)))) (define (listify-args op . rest) (cond ((zero? (rest-length rest)) (op '())) (else (listify-args-aux '() op . rest))))) |# (labels (((bla-aux bla-so-far op guy . rest) (if (zero? (rest-length rest)) (op (cons guy bla-so-far)) (bla-aux (cons guy bla-so-far) op . rest)))) (define (backwards-listify-args op . rest) (cond ((zero? (rest-length rest)) (op '())) (else (bla-aux '() op . rest))))) oaklisp-1.3.7/src/world/continuation.oak000066400000000000000000000076231332762442600203310ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; First class continuations. The interface is call/cc, like it should be. (define-instance continuation type '(val-segs val-offset cxt-segs cxt-offset saved-windings saved-wind-count) (list object)) (%your-top-wired continuation) ;;;(add-method (length (type instance-length) self) ;;; instance-length) ;;;(define-constant %continuation-size (length continuation)) (define-constant %continuation-size 7) (set! %%cleanup-needed #f) (define (call/cc f) (bind () (block0 (%call/cc f) (when %%cleanup-needed (set! %%cleanup-needed #f) (rewind %%join-count %%new-windings %%new-wind-count))))) (define call-with-current-continuation call/cc) (define-constant %continue (add-method ((make-open-coded-operation (lambda (ignore) '((continue))) 2 1) (continuation) self v) (%continue self v))) (define-constant %fill-continuation (add-method ((make-open-coded-operation (lambda (ignore) '((fill-continuation))) 1 1) (continuation) self) (%fill-continuation self))) ;;; WARNING! CAUTION! Do not modify this definition of %CALL/CC ;;; unless you really know what you are doing. It is carefully tuned ;;; to leave exactly the right amount of stuff on the stack when ;;; %FILL-CONTINUATION is called. ;;; ;;; If the compiler is changed, it would be wise to make sure that ;;; this still works. (define (%call/cc f) (let ((tag (%fill-continuation (%allocate continuation %continuation-size)))) (set! ((%slot 5) tag) %windings) (set! ((%slot 6) tag) %wind-count) (f (lambda (v) (let ((join-count (find-join-point %windings %wind-count ((%slot 5) tag) ((%slot 6) tag)))) (unwind %windings %wind-count join-count) ;; We'd like to do this now, but we're in the wrong stack context, ;; so we'll remember to do it once we get there. ;;(rewind join-count ((%slot 5) tag) ((%slot 6) tag)) ;;This is the first time I've been forced to pass parameters by ;; stashing them in globals in Lisp! (set! %%join-count join-count) (set! %%new-windings ((%slot 5) tag)) (set! %%new-wind-count ((%slot 6) tag)) (set! %%cleanup-needed #t) ) (%continue tag v))))) #| ;;; This is the code generated by the preceding DEFINE: ((LOAD-CODE (CODE () ((CHECK-NARGS 1) (LOAD-IMM 5) (LOAD-GLO-CON CONTINUATION) (ALLOCATE) ;; F and the continuation object are on the stack here, and the saved ;; continuation should have the stack checkpointed without those ;; two guys on it. This is controled in the emulator code for the ;; fill-continuation instruction. (FILL-CONTINUATION) (MAKE-CELL) (LOAD-STK 0 TAG) (MAKE-CLOSED-ENVIRONMENT 1) ;; (LOAD-CODE (CODE () ((CHECK-NARGS 1) (LOAD-STK 0 V) (LOAD-ENV 2 TAG) (CONTENTS) (LOAD-GLO-CON %CONTINUE) (STORE-NARGS 2) (BLT-STK 3 1) (FUNCALL-TAIL)))) (LOAD-GLO-CON %INSTALL-LAMBDA-WITH-ENV) (STORE-NARGS 2) (FUNCALL-CXT) (LOAD-STK 2 F) (STORE-NARGS 1) (BLT-STK 2 2) (FUNCALL-TAIL)))) (LOAD-GLO-CON %INSTALL-LAMBDA) (STORE-NARGS 1) (FUNCALL-CXT) (LOAD-GLO %CALL/CC) (SET-CONTENTS) (RETURN)) |# ;;; eof oaklisp-1.3.7/src/world/crunch.oak000066400000000000000000000264721332762442600171040ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Barak A. Pearlmutter and Kevin J. Lang ;;; A linear graph transformation language implemented with a hairy ;;; macro. Assume two real instructions, no labels. ;;;;;; Features: ;;; ;;; ,x in LHS matches a variable first time; same as ,(identity i) later. ;;; ;;; names for insts in RHS: 1, 2. ;;; ;;; names for classes of insts in FORALL constructs: ;;; ;;; ,(...) in LHS must match computed value. (define (split-crunch stuff) (let* ((i (subsequence? '(=>) stuff)) (lhs (subseq stuff 0 i)) (stuff (tail stuff (+ i 1))) (i (subsequence? '(=>) stuff)) (test (if i (subseq stuff 0 i) '#t)) (rhs (if i (tail stuff (+ i 1)) stuff))) (list lhs (if (pair? test) `(and ,@test) #t) rhs))) (define crunch-class-alist '()) (define-syntax (define-crunch class . stuff) (let ((crunch (split-crunch stuff))) (cond ((assq class crunch-class-alist) => (lambda (it) (push (cdr it) crunch))) (else (push crunch-class-alist (cons class (list crunch))))) 'generic-undefined-value)) ;;; The following macro does all the work. ;;; Helper functions: (define (substitute old new form) (cond ((null? form) form) ((equal? old form) new) ((pair? form) (cons (substitute old new (car form)) (substitute old new (cdr form)))) (else form))) ;;; Take a rhs and substitute in things for numbers. (define (flush-inumbers rhs things) (if (null? rhs) '() (cons (if (number? (car rhs)) (nth things (- (car rhs) 1)) (car rhs)) (flush-inumbers (cdr rhs) things)))) ;;; Take a forall crunch and expand it out. Returns a list of crunches. (define (expand-forall crunch listproc) (destructure (lhs test rhs) crunch (destructure* (('forall v . attributes) . stuff) lhs (let ((instrs (listproc attributes)) (var (varify v))) (map (lambda (instr) (substitute var instr (list (cdr lhs) test rhs))) instrs))))) ;;; Expand out all the FORALLs (define (expand-foralls crunch-list listproc) (iterate aux ((l crunch-list)(a '())) (if (null? l) (reverse a) (let* ((crunch (car l)) (lhs (car crunch))) (if (null? lhs) (aux (cdr l) (cons crunch a)) (let ((lhs0 (car lhs))) (if (and (pair? lhs0) (eq? (car lhs0) 'forall)) (aux (append (expand-forall crunch listproc) (cdr l)) a) (aux (cdr l) (cons crunch a))))))))) ;;; Take x and return ,x. (define (varify x) (list (car ',x) x)) (define (var? x) (and (pair? x) (eq? (car x) (car ',x)))) (define unvarify second) ;;; Take x and return `x. (define (backquotify x) (list (car '`x) x)) ;;; Process a crunch. Returns code which evaluates YESPROC called on ;;; the new list of instructions if it matches and evaluates NOCODE if ;;; it doesn't. INSTRS is a list of the variables that the LHS forms ;;; of CRUNCH are bound to. (define (do-a-crunch crunch instrs yesproc nocode) (destructure (lhs test rhs) crunch (tease-lhs instrs lhs '() nocode test (lambda (bound-vars test nocode) (if-ify test (yesproc (map backquotify (flush-inumbers rhs (map varify instrs)))) nocode))))) ;;; For DEBUGGING: (define (test-a-crunch stuff) (let ((c (split-crunch stuff))) (do-a-crunch c (map genvar/1 (car c)) (lambda (l) (cons 'list l)) `'NOCHANGE))) ;;; For constructing forms. (define (let-ify var val body) (if (and (pair? body) (eq? 'let* (car body))) (destructure* ('let* clauses body) body `(let* ((,var ,val) ,@clauses) ,body)) `(let* ((,var ,val)) ,body))) (define (and-ify new test) (cond ((eq? test '#t) new) ((and (pair? test) (eq? (car test) 'and)) `(and ,new ,@(cdr test))) (else `(and ,new ,test)))) (define (if-ify test yes no) (if (eq? test '#t) yes `(if ,test ,yes ,no))) ;;; Tease apart the LHS while binding variables. ;;; instrs are bound to things that we hope match lhs. (define (tease-lhs instrs lhs bound-vars nocode test yesser) (if (null? instrs) (yesser bound-vars test nocode) (tease-form (car lhs) (car instrs) bound-vars nocode test (lambda (bound-vars test nocode) (tease-lhs (cdr instrs) (cdr lhs) bound-vars nocode test yesser))))) ;;; Tease apart a single LHS clause. (define (tease-form form var bound-vars nocode test yesser) (cond ((null? form) (yesser bound-vars test nocode)) ((symbol? form) `(if (eq? ',form ,var) ,(yesser bound-vars test nocode) ,nocode)) ((is-a? form self-evaluatory-mixin) `(if (eq? ,form ,var) ,(yesser bound-vars test nocode) ,nocode)) ((var? form) (let ((x (unvarify form))) (if (or (not (symbol? x)) (memq x bound-vars)) (yesser bound-vars (and-ify `(eq? ,x ,var) test) nocode) (let-ify x var (yesser (cons x bound-vars) test nocode))))) ;; At this point we know FORM must be a list of things. ((and (var? (car form)) (symbol? (unvarify (car form))) (not (memq (unvarify (car form)) bound-vars))) ;; This clause avoids useless shuffling of variables. ;; It can be removed without loss of correctness (let ((vcar (unvarify (car form)))) (let-ify vcar `(car ,var) (if (null? (cdr form)) (yesser (cons vcar bound-vars) test nocode) (let ((vcdr (genvar))) (let-ify vcdr `(cdr ,var) (tease-form (cdr form) vcdr (cons vcar bound-vars) nocode test yesser))))))) (else ;; Must be a list of things: (let ((vcar (genvar))) (let-ify vcar `(car ,var) (tease-form (car form) vcar bound-vars nocode test (if (null? (cdr form)) yesser (lambda (bound-vars test nocode) (let ((vcdr (genvar))) (let-ify vcdr `(cdr ,var) (tease-form (cdr form) vcdr bound-vars nocode test yesser))))))))))) (define (car-er l x) (if (not (null? l)) (car l) x)) ;; PROC wants current element of L1, next element of L1, and current of L2. (define (hairmap proc l1 l2 default) (if (null? l1) '() (cons (proc (car l1) (car-er (cdr l1) default) (car l2)) (hairmap proc (cdr l1) (cdr l2) default)))) ;; PROC wants current element of L1, code for next element of L1, and ;; current of L2. (define (hairmap1 proc l1 l2 default) (if (null? l1) '() (cons (proc (car l1) (call-er (cdr l1) default) (car l2)) (hairmap1 proc (cdr l1) (cdr l2) default)))) (define (call-er l default) (if (null? l) default `(,(car l)))) (let ((!=lhsl (lambda (n c) (!= n (length (car c)))))) (define (catagorize-crunches cl) (iterate aux ((l cl)(m 0)) (if (null? l) (iterate aux ((i 1)(o '())) (if (> i m) (reverse o) (aux (+ i 1) (cons (del !=lhsl i cl) o)))) (let ((lhsl (length (car (car l))))) (aux (cdr l) (if (> lhsl m) lhsl m))))))) ;;; Really do it. Assume a max of two forms in LHS. (define (hairy-code crunches listproc) (let ((l (catagorize-crunches (expand-foralls crunches listproc))) (yup (lambda (l) `(list ,@l)))) `(list ,@(map (lambda (cl i) (let ((invars (map genvar/1 (iota i))) (vcl (map genvar/1 cl))) `(lambda ,invars (labels ,(reverse (hairmap1 (lambda (this next crunch) `(,this (lambda () ,(do-a-crunch crunch invars yup next)))) vcl cl `'nochange)) ,(call-er vcl `'nochange))))) l (iota (length l)))))) ;;; The termination interface (define-syntax (emit-crunchers class listproc) (let ((it (assq class crunch-class-alist))) (block0 (new-hairy-code (cdr it) (eval listproc #*current-locale)) (set! (cdr it) '())))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This procedure sorts the productions according to the ; length of their left-hand-sides, and returns a list ; of expression matching functions, each of which only ; handles a given LHS length. (define (new-hairy-code raw-crunch-list listproc) (let ((hacked-crunch-list (catagorize-crunches (expand-foralls raw-crunch-list listproc)))) (cons 'list (map hash-table-hairy-code hacked-crunch-list (iota (length hacked-crunch-list)))))) ; The following procedure generates the code for a single ; pattern matching function which handles all of the productions ; in crunch-list (whose LHS's must be of equal length). ; The generated function uses the first opcode in its ; first argument as a key for retrieving from a hash table ; a sub-function that only tries to apply the productions ; that are relevant for that opcode. ; The sub-functions are generated using a different procedure ; that causes the relevant productions to be tried sequentially. (define (hash-table-hairy-code crunch-list lhs-len) (if (< (length crunch-list) 10) (sequential-hairy-code crunch-list lhs-len) ;fast enough (let* ((sorted-crunch-list (combine-similar-neighbors (sort crunch-list crunch-key-less?) crunch-key-equal?)) (crunch-key-list (map caaaar sorted-crunch-list)) (invars (map genvar/1 (iota lhs-len)))) `(let ((cruncher-lookup-table (make-eq-hash-table))) ,@(map (lambda (crunchers crunch-key) `(set! (table-entry cruncher-lookup-table ',crunch-key) ,(sequential-hairy-code crunchers lhs-len))) sorted-crunch-list crunch-key-list) (lambda ,invars (let ((cruncher (present? cruncher-lookup-table (car ,(car invars))))) (if (not cruncher) 'nochange ((cdr cruncher) ,@invars))))))) ) ; This is Barak's procedure that combines ; a bunch of crunchers into a big labels expression ; that sequentially runs through all of the tests in ; crunch-list with no function calls. (define (sequential-hairy-code crunch-list lhs-len) (let ((invars (map genvar/1 (iota lhs-len))) (crunch-var-names (map genvar/1 crunch-list)) (yup (lambda (l) `(list ,@l)))) `(lambda ,invars (labels ,(reverse (hairmap1 (lambda (this next crunch) `(,this (lambda () ,(do-a-crunch crunch invars yup next)))) crunch-var-names crunch-list `'nochange)) ,(call-er crunch-var-names `'nochange))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (crunch-key-less? a b) (< (#^string (caaar a)) (#^string (caaar b)))) (define (crunch-key-equal? a b) (eq? (caaar a) (caaar b))) ; '(a a b c c c d e) eq? --> '((a a) (b) (c c c) (d) (e)) (define (combine-similar-neighbors inlist similar?) (if (null? inlist) '() (iterate next ((remaining (cdr inlist)) (group-so-far (list (car inlist))) (listout '())) (if (null? remaining) (reverse (cons group-so-far listout)) (let ((this-guy (car remaining))) (if (similar? this-guy (car group-so-far)) (next (cdr remaining) (cons this-guy group-so-far) listout) (next (cdr remaining) (list this-guy) (cons group-so-far listout)))))))) ;;; eof oaklisp-1.3.7/src/world/da.oak000066400000000000000000000013471332762442600162000ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA (%write-char #\-) oaklisp-1.3.7/src/world/define.oak000066400000000000000000000021601332762442600170400ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang and Barak A. Pearlmutter ;;; Define define-constant and related forms. (define-syntax (define-constant var . body) `(block0 (define ,var . ,body) (freeze-in-current-locale ',(if (pair? var) (car var) var)))) (define-syntax (define-constant-instance var typ . args) `(block0 (define-instance ,var ,typ . ,args) (freeze-in-current-locale ',var))) ;;; eof oaklisp-1.3.7/src/world/del.oak000066400000000000000000000032471332762442600163610ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1989 Barak A. Pearlmutter & Kevin J. Lang ;;; When a unix level DEL signal comes in, this is what gets signaled. (define-instance user-interrupt type '() (list proceedable-condition object)) (add-method (report (user-interrupt) self stream) (format stream "User interrupt.~%")) (add-method (initialize (user-interrupt) self) (^super proceedable-condition initialize self "Resume the interrupted computation.")) ;;; This handles the emulator's interface to a user interrupt, which ;;; consists of pretending that a NOOP instruction failed and passing the ;;; old value of NARGS to be restored before returning. (define (usr-intr n) (signal user-interrupt) (set! ((%register 'nargs)) n) (%return)) (set! (nth %argless-tag-trap-table 0) usr-intr) ;;; Make this condition land us in the debugger instead of being ignored: (set! #*error-handlers (append! #*error-handlers (list (cons user-interrupt invoke-debugger)))) ;;; eof oaklisp-1.3.7/src/world/describe.oak000066400000000000000000000041721332762442600173730ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter&Kevin J. Lang ;;; A simple describe facility. ;;; You can define your own DESCRIBE methods to shadow this one. (define-instance describe operation) (add-method (describe (object) x) (deep-describe x)) (add-method (describe (fixnum) x) (if (negative? x) (^super object describe x) (let ((o (object-unhash x))) (if o (deep-describe o) (^super object describe x))))) (let ((describe-frame (make operation))) (add-method (describe-frame (type ivar-list) self frame obj) (cond ((eq? self variable-length-mixin) (format #t "~& from ~A:~%" self) (dotimes (i (- ((%slot 1) obj) ((%slot 1) (get-type obj)))) (format #t " ~D : ~S~%" i (%vref obj i)))) ((not (null? ivar-list)) (format #t "~& from ~A:~%" self) (iterate aux ((vars ivar-list)(fp frame)) (when vars (format #t " ~A : ~S~%" (car vars) (contents fp)) (aux (cdr vars) (%increment-locative fp 1))))))) (define (deep-describe x) (bind ((#*forcible-print-magic #f)) (let ((ty (get-type x))) (bind ((#*fancy-references #t)) (format #t "~&~S is of type ~S.~%" x ty)) (when (= (%tag x) %pointer-tag) (let ((loc-x (%set-tag x %locative-tag))) (iterate aux ((alist (get-bp-alist ty))) (when alist (describe-frame (caar alist) (%increment-locative loc-x (cdar alist)) x) (aux (cdr alist)))))))) x) ) ;;; eof oaklisp-1.3.7/src/world/destructure.oak000066400000000000000000000110171332762442600201600ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter (define (destructure-2 pattern expr body expr-important noper) (cond ((symbol? pattern) `(let ((,pattern ,expr)) ,body)) ((and (not noper) (or (eq? '#f pattern) (eq? '#t pattern) (eq? 'quote (car pattern)))) (if expr-important `(block ,expr ,body) body)) ((eq? '#t pattern) (if expr-important `(block ,expr ,body) body)) ((eq? '#f pattern) (let ((v (genvar))) `(let ((,v ,expr)) (if (null? ,v) ,body ,(noper v '#f))))) ((eq? 'quote (car pattern)) (let ((v (genvar))) `(let ((,v ,expr)) (if (eq? ,v ',(second pattern)) ,body ,(noper v (second pattern)))))) (else (let* ((v (genvar)) (inner (destructure-2 (car pattern) `(car ,v) (destructure-2 (cdr pattern) `(cdr ,v) body #f noper) #f noper))) (if noper `(let ((,v ,expr)) (if (pair? ,v) ,inner ,(noper v pattern))) `(let ((,v ,expr)) ,inner)))))) ;;; This is for destructuring lists. As in ;;; (destructure (a (b c) (d . e) f) my-list ;;; (crunch-on a c b d f e)) ;;; Sort of the inverse of backquote. ;;; In the pattern, #t's are placed in positions to be ignored. In order to ;;; be compatible with destructure*, #f's and (QUOTE x)'s are also ignored. (define-syntax destructure (lambda (form) (destructure (#t pattern expr . body) form (destructure-2 pattern expr `(block ,@body) #t #f)))) ;;; DESTRUCTURE* is just like DESTRUCTURE, except that positions with ;;; #F's and ()'s are required to be #F's and ()'s, and positions with ;;; 'FOO, alias (QUOTE FOO), are required to have the literal value ;;; FOO in them, where FOO is not evaluated. Positions with #T's have ;;; the corresponding value ignored; use '#T to check for a literal #T. ;;; Destructure* is primarily useful in macro expanders, where it can ;;; be used to do much of the syntax checking. #|| (define (contains-#t x) (or (eq? x '#t) (and (pair? x) (or (contains-#t (car x)) (contains-#t (cdr x)))))) ||# (define (destr-signaler-lambda found desired) ;;(if (contains-#t desired) ;; `(signal-destructure-error ,found "a list") `(signal-destructure-error ,found ',desired) ;) ) (define-syntax destructure* (lambda (form) (destructure (#t pattern expr . body) form (destructure-2 pattern expr `(block . ,body) #t destr-signaler-lambda)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; This is even hairier. It is like DESTRUCTURE* except that instead ;;; of an error in the event of a match failure, there are multiple ;;; templates, and each template gets a chance to match. Syntax is ;;; ;;; (destructure** expr ;;; (template1 . body1) ;;; (template2 . body2) ;;; ... ;;; [(OTHERWISE . nomatch-body)] ) ;;; ;;; If no OTHERWISE clause is passed, an appropriate error is signaled. (define-syntax (destructure** expr . clauses) (let* ((v (genvar)) (tags (map genvar/1 clauses)) (tags0 (append (cdr tags) '(#f)))) (if (null? clauses) `(error "No DESTRUCTURE** clauses, so none match ~S." ,expr) `(let ((,v ,expr)) (labels ,(map (lambda (this next clause) (destructure* (pattern . body) clause `(,this (lambda () ,(if (eq? pattern 'otherwise) (if next (error "Nonterminal clause ~S in DESTRUCTURE**." clause) `(block . ,body)) (destructure-2 pattern v `(block . ,body) #f (if next (lambda (a b) `(,next)) destr-signaler-lambda))))))) tags tags0 clauses) (,(car tags))))))) ;;; (define (signal-destructure-error found required) ;;(cerror "Proceed destructuring anyway." ;; "While destructuring, ~S was found where ~S is required." ;; found required) (error "While destructuring, ~S was found where ~A is required." found required)) ;;; eof oaklisp-1.3.7/src/world/do.oak000066400000000000000000000013471332762442600162160ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA (%write-char #\.) oaklisp-1.3.7/src/world/dump-stack.oak000066400000000000000000000016701332762442600176630ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;this function uses a really evil compiler-dependent trick. (define (dump-stack arg . rest) (format #t "~A~%" arg) (set! rest (+ 1 rest)) (dump-stack . rest)) oaklisp-1.3.7/src/world/em.oak000066400000000000000000000013471332762442600162150ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA (%write-char #\M) oaklisp-1.3.7/src/world/eqv.oak000066400000000000000000000016431332762442600164060ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter (define-constant eqv? (add-method ((make (mix-types oc-mixer (list foldable-mixin operation))) (object) x y) (eq? x y))) ;;; eof oaklisp-1.3.7/src/world/error.oak000066400000000000000000000024511332762442600167420ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Barak A. Pearlmutter and Kevin J. Lang ;;; This file defines a simple interface to the error system. Like Common ;;; Lisp, use ERROR if it's fatal and CERROR if it could be corrected and ;;; proceded from. ;;; This holds how many recursive debuggers we're inside. (set! #*debug-level 0) (define (warning format-string . format-args) (format standard-error "~&Warning: ") (format standard-error format-string . format-args)) (define (poison . args) (listify-args (lambda (args) (error "The poison function was called with args ~S." args)) . args)) ;;; eof oaklisp-1.3.7/src/world/error2.oak000066400000000000000000000056201332762442600170250ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; This is a stopgap error handling system. It defines the following ;;; macros: ;;; ;;; (error-return "Specify a value to be returned from this construct." ;;; . body) ;;; ;;; (error-restart "Specify some new values for these variables." ;;; ((var1 val1)(var2 val2)) ;;; . body) ;;; ;;; The implementation involves making catch tags and stashing them in a ;;; data structure bound to a fluid variable. (set! #*restart-handlers '()) (define-syntax (error-return message . body) (let ((tag (genvar))) `(native-catch ,tag (bind ((#*restart-handlers (cons (list ,message (lambda (x) (throw ,tag (and x (car x)))) 1) #*restart-handlers))) ,@body)))) ;;; This utility function is used below for rebinding only the supplied vars. (define (subst-vals-in old new) (cond ((null? new) old) (else (cons (car new) (subst-vals-in (cdr old) (cdr new)))))) (define-syntax (error-restart message variables . body) (let ((aux (genvar)) (tag (genvar)) (tag0 (genvar)) (messvar (genvar)) (temps (map (lambda (x) (genvar)) variables))) `(native-catch ,tag0 (let ((,messvar ,message)) (iterate ,aux ,variables (destructure ,temps (subst-vals-in (list ,@(map car variables)) (catch ,tag (throw ,tag0 (bind ((#*restart-handlers (cons (list ,messvar ,tag ,(length variables)) #*restart-handlers))) ,@body)))) (,aux ,@temps))))))) (define (show-handlers) (format #t "~& Active handlers:~%") (iterate aux ((i 0)(l (reverse #*restart-handlers))) (when (not (null? l)) (format #t " ~D: ~A~%" i (caar l)) (aux (+ i 1) (cdr l))))) (define (ret n . args) (listify-args (lambda (args) (let* ((handlers #*restart-handlers) (nhandlers (length handlers)) (handler (nth handlers (- nhandlers (1+ n))))) (destructure (message tag arg-count) handler (format standard-error "~&Invoking handler \"~A\"~%" message) (cond ((< arg-count (length args)) (error "Handler \"~A\" was passed ~D args but takes only ~D.~%" message (length args) arg-count)) (else (tag args)))))) . args)) ;;; eof oaklisp-1.3.7/src/world/error3.oak000066400000000000000000000047421332762442600170320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; This file contains nice macros and functions for doing typical things ;;; with the error system. ;;; This binds a handler to some class of errors. When such an error ;;; occurs, an appropriate error object is created and the given handler ;;; is then applied to it. Invoke-debugger is a useful handler when ;;; within some other context which is trying to handle a class ;;; of errors that shouldn't be so handled in a limited dynamic context. (define-syntax (bind-error-handler (error-type handler) . body) `(bind ((#*error-handlers (cons (cons ,error-type ,handler) #*error-handlers))) ,@body)) ;;; This construct has a number of different variations, depending on how ;;; much stuff you pass in after the error-type, if any. The simplest form ;;; simply returns #f from the construct if the given type of error occurs. ;;; In more complex forms, if the error occurs the first operation after ;;; the error-type is invoked on the error, and if no error occurs ;;; the other lambda is invoked on the result of the computation. ;;; Syntax: (CATCH-ERRORS (error-type [error-lambda [non-error-lambda]]) ;;; . body) (define-syntax (catch-errors (error-type . more-stuff) . body) (let ((v (genvar))) (destructure** more-stuff (() `(native-catch ,v (bind-error-handler (,error-type (lambda (err) (throw ,v #f))) ,@body))) ((error-lambda) `(native-catch ,v (bind-error-handler (,error-type (lambda (err) (throw ,v (,error-lambda err)))) ,@body))) ((error-lambda noerror-lambda) `(native-catch ,v (,noerror-lambda (bind-error-handler (,error-type (lambda (err) (throw ,v (,error-lambda err)))) ,@body))))))) ;;; eof oaklisp-1.3.7/src/world/eval.oak000066400000000000000000000030341332762442600165360ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter (define (eval form locale) (subeval (expand-groveling locale form) locale)) (define (subeval form locale) (#*top-level-evaluator form locale)) (set! #*top-level-evaluator interpreter-eval) (define (hybrid-eval form locale) ((if (contains-add-method? form) compiler-eval interpreter-eval) form locale)) (let ((warned-yet? #f)) (define (compiler-eval form locale) (unless warned-yet? (warning "compiler isn't loaded, using interpreter.") (set! warned-yet? #t)) (interpreter-eval form locale))) (define (contains-add-method? form) (and (pair? form) (not (eq? 'quote (car form))) (or (eq? '%add-method (car form)) (contains-add-method? (car form)) ;close enough for (contains-add-method? (cdr form))))) ;rock and roll. oaklisp-1.3.7/src/world/exit.oak000066400000000000000000000034731332762442600165670ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter (let ((exit-aux (lambda (args) (destructure (status . format-args) args (flush standard-error) (cond ((null? format-args) (format standard-output "~&Oaklisp stopped itself") (when (not (= 0 status)) (format standard-output " (status ~D)" status)) (format standard-output ".~%")) (else (apply format standard-output format-args))) (flush standard-output) (flush standard-error) (cond ((= 0 status) ((%halt 0))) ((= 1 status) ((%halt 1))) ((= 2 status) ((%halt 2))) ((= 3 status) ((%halt 3))) ((= 4 status) ((%halt 4))) ((= 5 status) ((%halt 5))) ((= 6 status) ((%halt 6))) ((= 7 status) ((%halt 7))) ((= 8 status) ((%halt 8))) ((= 9 status) ((%halt 9))) ((= 10 status) ((%halt 10))) (else (format standard-output "(exit status ~D out of range)~%" status) (flush standard-output) ((%halt 10)))))))) (define (exit . args) (cond ((= 0 (rest-length args)) (listify-args exit-aux #*debug-level . args)) (else (listify-args exit-aux . args))))) ;;; eof oaklisp-1.3.7/src/world/expand.oak000066400000000000000000000075711332762442600171000ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;; The quick and dirty macro expander written in T ported back to Oaklisp. (define-instance expand-groveling operation) (define-instance idiosyncratically-grovel operation) (define (improper-list? x) (if (pair? x) (cdr (last-pair x)) x)) (define (make-proper x) (if (pair? x) (let ((the-copy (copy x))) (set! (cdr (last-pair the-copy)) nil) the-copy) '())) (define (safe-length self) (if (pair? self) (+ 1 (safe-length (cdr self))) 0)) (define (map-proper-part op l) (let ((improper-part (improper-list? l))) (if improper-part (let ((proper-answer (map op (make-proper l)))) (set! (cdr (last-pair proper-answer)) improper-part) proper-answer) (map op l)))) (define (special-form? sym) (or (eq? sym 'quote) (eq? sym '%block) (eq? sym '%if) (eq? sym '%add-method) (eq? sym '_%add-method) (eq? sym '%make-locative) (eq? sym '%labels))) ; eventually (%unwind-protect unwind-protect0 catch %fluid-bind) (define trace-expansion nil) (add-method (expand-groveling (locale) self form) (if trace-expansion (format #t "~&expand-groveling ~S~%" form)) (cond ((is-a? form self-evaluatory-mixin) form) ((not (pair? form)) (if (special-form? form) (warning "Special form specifier ~A used as a variable.~%" form)) form) ((special-form? (car form)) (idiosyncratically-grovel self form)) (else (let ((m (macro? self (car form)))) (cond (m (expand-groveling self (m form))) (else (map-proper-part (lambda (x) (expand-groveling self x)) form))))))) (add-method (idiosyncratically-grovel (locale) self form) (if trace-expansion (format #t "~&idiosyncratically-grovel ~s~%" form)) (let ((s (car form))) (cond ((or (eq? s '%if) (eq? s '%block) (eq? s '%make-locative)) `(,(first form) . ,(map (lambda (x) (expand-groveling self x)) (cdr form)))) ((or (eq? s '%add-method) (eq? s '_%add-method)) (destructure* (kind (op (typ . ivars) . args) body) form `(,kind (,(expand-groveling self op) (,(expand-groveling self typ) . ,ivars) . ,args) ,(expand-groveling self body)))) ((eq? s '%labels) `(,(first form) ,(map (lambda (x) (destructure (var val) x `(,var ,(expand-groveling self val)))) (second form)) ,(expand-groveling self (third form)))) ((eq? s 'quote) form) (else (error "Form ~S can't be idiosyncratically groveled." form))))) ; for later use in idiosyncratically-grovel ;((memq s '(catch %fluid-bind)) ; `(,(first form) ,(second form) ; . ,(map (lambda (x) (expand-groveling self x)) ; (cddr form)))) ;this is a more correct version of expand-groveling ;(define (expand-groveling self form) ; (cond ((symbol? form) form) ; ((is-a? form self-evaluatory-mixin) ; form) ; ((special-form? (car form)) ; (idiosyncratically-grovel self form)) ; ((macro? self (car form)) ; (expand-groveling self ((macro? self (car form)) form))) ; (t (map-proper-part (lambda (x) (expand-groveling self x)) form)))) ; ;;; note 11 was (else `(add-method ((',make ',operation) . ,(cadr form)) . ,(cddr form))))))) oaklisp-1.3.7/src/world/export.oak000066400000000000000000000020021332762442600171220ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;Copyright (C) 1987 Barak A. Pearlmutter & Kevin J. Lang (define (export-sharing-cell source destination variable) (let ((try (variable-here? source variable))) (if try (set! (variable-here? destination variable) try) (warning "~S not found in ~S; can't export.~%" variable source)))) oaklisp-1.3.7/src/world/fasl.oak000066400000000000000000000106331332762442600165370ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang ;;; Define the stuff to link in fasl format code segments, and to load files. (define-instance %ivar-map locatable-operation) (add-method ((locater %ivar-map) (%code-vector ivar-map) self) (make-locative ivar-map)) ;;; Codes used in the resolution list to mark different clause types. (define-constant variable-key 0) (define-constant code-key 1) (define-constant constant-key 2) (define (link-code-segment locale segment) (let ((already-warned #f)) (iterate aux0 ((inputs segment) (outputs '()) (code-resolution-lists '())) (cond ((null? inputs) (when already-warned (format #t ".~%")) (let ((outputs (reverse outputs))) (dolist (crl (reverse code-resolution-lists) (car outputs)) (dolist (clause crl) (set! (contents (cdr clause)) (nth outputs (car clause))))))) (else (destructure ((resolution-list ('0 '0 . code)) . #t) inputs (let* ((instruction-count (length code)) (word-count (quotient (+ instruction-count 1) 2)) (v (make %code-vector word-count))) (iterate aux ((c code) (i 0)) (cond ((not (null? c)) ;;(destructure (xi xj . rest) c ) (let* ((xi (car c)) (xj (if (null? (cdr c)) 0 (cadr c))) (rest (if (null? (cdr c)) nil (cddr c)))) (set! (%vref v i) (if (%big-endian?) (%crunch (bit-or (ash-left xi 14) (ash-right xj 2)) (bit-and xj #x3)) ;(bit-or (ash-left xi 14) xj) (%crunch (bit-or (ash-left xj 14) (ash-right xi 2)) (bit-and xi #x3)) ;(bit-or xi (ash-left xj 14)) )) (aux rest (+ i 1)))) ;;((not (null? c)) ;; (set! (nth v i) (car c)) ;; (aux (cdr c) (+ i 1))) (else (iterate aux ((resolution-list resolution-list) (code-number-to-locs-alist '())) (cond ((null? resolution-list) (aux0 (cdr inputs) (cons v outputs) (cons code-number-to-locs-alist code-resolution-lists))) (else (let ((clause (car resolution-list))) (destructure (which where what) clause (cond ((eq? where 0) (cond ((eq? which constant-key) (set! (%ivar-map v) what) (aux (cdr resolution-list) code-number-to-locs-alist)) (else (error "Bad FASL patch clause ~S, only constants may be placed in the IVAR-MAP slot." clause)))) (else (let ((where-loc (make-locative (%vref v (- (quotient where 2) 1))))) (cond ((eq? which constant-key) (set! (contents where-loc) what) (aux (cdr resolution-list) code-number-to-locs-alist)) ((eq? which variable-key) (set! (contents where-loc) (or (variable? locale what) (let* ((y (%make-cell (make-undefined-variable-value what)))) (cond ((not already-warned) (format #t "~&Variables installed in ~S: ~S" locale what) (set! already-warned #t)) (else (format #t ", ~S" what))) (set! (variable? locale what) y) y))) (aux (cdr resolution-list) code-number-to-locs-alist)) ((eq? which code-key) (aux (cdr resolution-list) (cons (cons what where-loc) code-number-to-locs-alist))) (else (error "Weird FASL resolution clause ~S.~%" clause))))))))))))))))))))) (define (load-code-segment locale segment) (bind ((#*current-locale locale)) ((%install-method-with-env object (make operation) (link-code-segment locale segment) %empty-environment) ;; Code segments don't have CHECK-NARGS, so the operation isn't ;; going to get popped, so we don't pass anything extra: ;'loaded )) 'loaded) ;;; eof oaklisp-1.3.7/src/world/fastmap.oak000066400000000000000000000106501332762442600172440ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter (add-method (map1 (operation) op oldcopy) (and oldcopy (let ((newcopy (cons (op (car oldcopy)) nil))) (iterate next ((oldpair (cdr oldcopy))(last-newpair newcopy)) (if oldpair (next (cdr oldpair) (set! (cdr last-newpair) (cons (op (car oldpair)) nil))) newcopy))))) (add-method (map2 (operation) op l1 l2) (and (not (null? l1)) (not (null? l2)) (let ((newcopy (cons (op (car l1)(car l2)) '()))) (iterate next ((oldpair1 (cdr l1)) (oldpair2 (cdr l2)) (last-newpair newcopy)) (if (and (not (null? oldpair1)) (not (null? oldpair2))) (next (cdr oldpair1) (cdr oldpair2) (set! (cdr last-newpair) (cons (op (car oldpair1)(car oldpair2)) '()))) newcopy))))) ; 3.1 sec for 10000 (now 2.2) (add-method (map! (operation) op lis) (iterate next ((l lis)) (cond (l (set! (car l) (op (car l))) (next (cdr l))) (else lis)))) ; 2.8 sec for 10000 (add-method (for-each1 (operation) op l) (iterate next ((l l)) (when l (op (car l)) (next (cdr l))))) ; 3.1 sec for 10000 (add-method (mem (operation) pred ob l) (iterate next ((l l)) (cond ((null? l) '()) ((pred ob (car l)) l) (else (next (cdr l)))))) ; 1.4 sec for 10000 (define (memq ob l) (iterate next ((l l)) (cond ((null? l) '()) ((eq? ob (car l)) l) (else (next (cdr l)))))) ; 3.2 sec for 10000 (add-method (ass (operation) pred ob l) (iterate next ((l l)) (cond ((null? l) '()) ((pred ob (caar l)) (car l)) (else (next (cdr l)))))) ; 1.5 sec for 10000 (define (assq ob l) (iterate next ((l l)) (cond ((null? l) '()) ((eq? ob (caar l)) (car l)) (else (next (cdr l)))))) ;%assq takes 0.06 sec for 10000 ; 2 sec for 10000 (was 8 before method cache) (with-operations (last-pair-next) (add-method (last-pair-next (pair) self prev-cdr) (last-pair-next (cdr self) self)) (add-method (last-pair-next (object) self prev-cdr) prev-cdr) (add-method (last-pair-next (forcible) self prev-cdr) (last-pair-next (force self) prev-cdr)) (add-method (last-pair (pair) self) (last-pair-next (cdr self) self))) #| ; 5 sec for 10000 (was 20) (add-method (last-pair-a (pair) self) (iterate last-pair ((self self)) (if (is-a? (cdr self) pair) (last-pair (cdr self)) self))) ; 4 sec for 10000 (with-operations (lpoc-next) (add-method (lpoc-next (pair) oldpair last-newpair) (let ((newpair (cons (car oldpair) nil))) (set! (cdr last-newpair) newpair) (lpoc-next (cdr oldpair) newpair))) (add-method (lpoc-next (object) oldobj last-newpair) (set! (cdr last-newpair) oldobj) last-newpair) (add-method (last-pair-of-copy (pair) oldpair) (let ((newpair (cons (car oldpair) nil))) (lpoc-next (cdr oldpair) newpair)))) |# #| ; now the correct definition lives back in mapping.oak (add-method (append (pair) oldcopy b) (let ((newcopy (cons (car oldcopy) b))) (iterate next ((oldpair (cdr oldcopy))(last-newpair newcopy)) (if oldpair (next (cdr oldpair) (set! (cdr last-newpair) (cons (car oldpair) b))) newcopy)))) |# #| (CODE () ( (CHECK-NARGS 2) (LOAD-STK 1 B) (LOAD-STK 1 OLDCOPY) (CAR) (CONS) (LOAD-STK 0 NEWCOPY) (LOAD-STK 2 OLDCOPY) (CDR) LABEL0 (LOAD-STK 0 OLDPAIR) (BRANCH-NIL ELSE1) (LOAD-STK 4 B) (LOAD-STK 1 OLDPAIR) (CAR) (CONS) (LOAD-STK 2 LAST-NEWPAIR) (SET-CDR) (BLAST 2) (CDR) (BRANCH LABEL0) ELSE1 (POP 2) (BLT-STK 1 2) (RETURN) )) |# ;reverse takes 2.1 sec ;reverse! takes 2.2 sec oaklisp-1.3.7/src/world/file-compiler.oak000066400000000000000000000110001332762442600203260ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; file compiler ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (set! canonical-extension-numbers '((".oak" . 0) (".omac" . 1) (".ou" . 2) (".oc" . 3) (".oa" . 4))) (define (canexno ex) (cdr (assoc ex canonical-extension-numbers))) (set! compiler-from-extension ".oak") (set! compiler-to-extension ".oa") ;;; valid values: 0, 1 or 2. (define #*compiler-noisiness 1) (set! #*compiling-a-file? #f) (define (print-appropriate-noise form) (when (> #*compiler-noisiness 0) (bind ((#*print-length 3) (#*print-level 2)) (format #t "~&~A" form) (flush standard-output)))) (define (print-sp x) (when (> #*compiler-noisiness 1) (format #t " ~A" x) (flush standard-output))) (define (include-stage? from-no to-no this) (let ((this-no (canexno this))) (and (< from-no this-no) (>= to-no this-no)))) ;;; The next three functions are the exported interface to the compiler. (define (compile-file the-locale file-name) (let ((from-no (canexno compiler-from-extension)) (to-no (canexno compiler-to-extension)) (sub-locale (make locale (list the-locale)))) ;; (format #t "from: ~a to: ~a~%" from-no to-no) (let ((s1 (if (include-stage? from-no to-no ".omac") (lambda (form) (block0 (bind ((#*current-locale sub-locale)) (expand-groveling sub-locale form)) (print-sp 'macro))) identity)) (s2 (if (include-stage? from-no to-no ".ou") (lambda (form) (block0 (append! (bind ((#*compiling-a-file? #t)) (gen-code (compile the-locale form) 'next)) (list '(pop 1))) (print-sp 'code))) identity)) (s2b (if (include-stage? from-no to-no ".ou") (lambda (forms) `(code () ,(append! (splice forms) (list '(return))))) identity)) (after-reading (if (>= from-no (canexno ".ou")) car identity)) (s3 (if (include-stage? from-no to-no ".oc") (lambda (form) (destructure* ('code () form) form (when (> #*compiler-noisiness 1) (format #t "Peephole optimizing... ") (flush standard-output)) `(code () ,(peephole-optimize form)))) identity)) (s4 (if (include-stage? from-no to-no ".oa") (lambda (form) (make-oaf-list (assemble form))) identity))) (let ((s12 (if (or (not (eq? s1 identity)) (not (eq? s2 identity))) (lambda (forms) (map (lambda (form) (block (print-appropriate-noise form) (block0 (s2 (s1 form)) (when (> #*compiler-noisiness 0) (format #t "~%"))))) forms)) identity))) (write-file (append file-name compiler-to-extension) (block0 (s4 (s3 (s2b (s12 (after-reading (read-file (append file-name compiler-from-extension))))))) (when (> #*compiler-noisiness 1) (format #t " writing...") (flush standard-output)))) (when (> #*compiler-noisiness 0) (format #t "~&")) #f)))) (define (compiler-eval form locale) ((%install-lambda (link-code-segment locale (assemble `(code () ;; The (POP 1) is needed because of the check-nargs hack. ((pop 1) ,@(peephole-optimize (bind ((#*compiling-a-file? #f)) (gen-code (compile locale form) 'tail)))))))))) (define (cc x) (peephole-optimize (bind ((#*compiling-a-file? #f)) (gen-code (expand-compile #*current-locale x) 'tail)))) (define (compile-code-fragment which-locale sexpr continuation-code) (peephole-optimize (gen-code (expand-compile which-locale sexpr) continuation-code))) ;;; More non-exported stuff: (set! #*top-level-evaluator hybrid-eval) ;;; eof oaklisp-1.3.7/src/world/file-errors.oak000066400000000000000000000051111332762442600200360ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; Define some error types to signal when file system stuff fails. Below, ;;; fs is used as an abbreviation for file system. (define-instance fs-error type '() (list general-error)) (define-instance proceedable-fs-error type '() (list proceedable-error fs-error)) (define-instance error-opening type '(name) (list proceedable-fs-error)) (define-instance error-opening-read type '() (list error-opening object)) (define-instance error-opening-write type '() (list error-opening object)) (define-instance error-opening-append type '() (list error-opening object)) (add-method (initialize (error-opening name) self filename) (set! name filename) (^super proceedable-fs-error initialize self (format #f "Supply a file to ~A instead (none to retry \"~A\")." (what-attempting self) filename))) (add-method (report (error-opening name) self stream) (format stream "Unable to open ~S for ~A access.~%" name (what-attempting self))) ;;; If passed no new filename return the old one. (add-method (really-invoke-debugger (error-opening name) self) (or (^super proceedable-fs-error really-invoke-debugger self) name)) (define-instance what-attempting operation) (add-method (what-attempting (error-opening-read) self) 'read) (add-method (what-attempting (error-opening-write) self) 'write) (add-method (what-attempting (error-opening-append) self) 'append) (define-instance error-changing-directory type '(name) (list proceedable-fs-error object)) (add-method (initialize (error-changing-directory name) self filename) (set! name filename) (^super proceedable-fs-error initialize self (format #f "Supply a directory to change to (none to retry \"~A\")." filename))) (add-method (report (error-changing-directory name) self stream) (format stream "Unable to change to directory \"~A\".~%" name)) ;;; eof oaklisp-1.3.7/src/world/file-io.oak000066400000000000000000000033411332762442600171340ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Barak A. Pearlmutter & Kevin J. Lang ;;; Oddly enough, here we do NOT define the OS specific ways to ;;; manipulate file descriptors. Rather, in this file we do the ;;; standard sexpr level filesystem interface: READ-FILE and WRITE-FILE, which ;;; read all the forms out of a file into a list and write a form to a ;;; file, respectively. (define (read-file file) (with-open-file (s file in) (read-until the-eof-token #f s))) (define (write-file file obj) (error-restart (format #f "Try writing ~S again (optionally under another name)." file) ((file file)) (with-open-file (s file out ugly) (bind ((#*print-level #f) (#*print-length #f) (#*print-radix 10) (#*print-escape #t) (#*symbol-slashification-style 't-compatible) (#*fraction-display-style 'normal)) (print obj s)))) #f) (define (dofile file op) (with-open-file (s file in) (iterate aux () (let ((x (read s))) (unless (eq? x the-eof-token) (op x) (aux)))))) ;;; eof oaklisp-1.3.7/src/world/files.oak000066400000000000000000000074611332762442600167210ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; Keep the loader from printing the in-between dot files: ;;; The files that a cold world is made of: (define between-files '(st da pl do em)) (define kernel-files '( cold-booting kernel0 do kernel0types do kernel1-install do kernel1-funs do kernel1-make do kernel1-freeze do kernel1-maketype pl kernel1-inittypes pl kernel1-segments pl super pl kernel pl patch0symbols pl )) (define layer1 '( mix-types st operations st ops st truth st logops st consume st conses st coerce st )) (define layer2 '( eqv pl mapping pl fastmap pl multi-off em fluid pl vector-type pl vl-mixin pl numbers pl subtypes pl weak pl strings pl sequences pl )) (define layer3 '( undefined da subprimitive da gc da tag-trap da code-vector da hash-table da format da signal pl error da symbols da print-noise da patch-symbols da predicates da )) (define layer4 '( print do print-integer do print-list do reader-errors do reader do read-token do reader-macros do hash-reader pl read-char pl locales do expand do make-locales do patch-locales do freeze do bp-alist do describe do warm do interpreter pl eval pl repl pl system-version do top-level pl booted st dump-stack do file-errors do streams do cold do ;cold load streams nargs pl has-method pl op-error pl error2 pl error3 pl backquote pl file-io pl fasl pl load-oaf pl load-file pl string-stream pl list pl catch da continuation da unwind-protect da )) (define layer5 '( bounders do anonymous pl sort pl exit pl )) (define layer6 '( cmdline da cmdline-getopt da ;; This should come last so its warm boot action will be last cmdline-options da )) (define layer7 '( export st st st cold-boot-end )) (define all-the-layers `(,@kernel-files ,@layer1 ,@layer2 ,@layer3 ,@layer4 ,@layer5 ,@layer6 ,@layer7)) ;;; The following are not in the cold world, but are loaded later: (define misc-files '( macros0 obsolese destructure macros1 macros2 icky-macros define del promise ;; autoload bignum bignum2 rational complex rounding lazy-cons math trace apropos time ;; pretty-print alarm multi-em multiproc )) (define compiler-files '( crunch mac-comp-stuff mac-compiler-nodes mac-compiler1 mac-compiler2 mac-compiler3 mac-code assembler peephole file-compiler compiler-exports )) (define batch-compiler-files '(batch-compiler)) (define scheme-files '(;;scheme-upgrade scheme scheme-macros)) ;; On machines that make programs handle backspace, load "streams-bs" ;; into the world. It depends on continuations, so don't put it into ;; the cold world load. ;;; eof oaklisp-1.3.7/src/world/fluid.oak000066400000000000000000000056711332762442600167230ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;;; This file contains code that implements fluid variables. (define top-level-fluid-binding-list (list (cons nil nil))) (define get-current-fluid-bindings (add-method ((make operation)) (let ((z (or %no-threading (%load-process)))) (if (eq? z 0) fluid-binding-list (fluid-bindings z))))) (define set-current-fluid-bindings (add-method ((make operation) new-binding-list) (let ((z (or %no-threading (%load-process)))) (if (eq? z 0) (set! fluid-binding-list new-binding-list) (set! (fluid-bindings z) new-binding-list))))) (define add-to-current-fluid-bindings (add-method ((make operation) c-cell) (let ((z (or %no-threading (%load-process)))) (if (eq? z 0) (set! (cdr top-level-fluid-binding-list) (cons c-cell (cdr top-level-fluid-binding-list))) (append! (fluid-bindings z) (cons c-cell nil)))))) ;;; This is to be called at warm boot time: (define (revert-fluid-binding-list) (set! fluid-binding-list top-level-fluid-binding-list)) ;(define (revert-fluid-binding-list) ; (set-current-fluid-bindings top-level-fluid-binding-list)) ;(define (revert-fluid-binding-list) ; (set-current-fluid-bindings (cons (cons nil nil) nil))) ;;; And at cold boot time too, I suppose: (revert-fluid-binding-list) #| ;;; This must be delayed until later in the world building process. (define-syntax (fluid x) `(%fluid ',x)) |# (define-constant-instance %fluid locatable-operation) (add-method (%fluid (symbol) sym) (iterate aux () (let ((x (%assq sym (get-current-fluid-bindings)))) (cond (x => cdr) (else (cerror (format #f "Try looking up (FLUID ~S) again." sym) "(FLUID ~S) not found." sym) (aux)))))) (add-method ((setter %fluid) (symbol) sym val) (let ((x (%assq sym (get-current-fluid-bindings)))) (cond (x (set! (cdr x) val)) (else (add-to-current-fluid-bindings (cons sym val)) val)))) (add-method ((locater %fluid) (symbol) sym) (iterate aux () (let ((x (%assq sym (get-current-fluid-bindings)))) (cond (x (make-locative (cdr x))) (else (cerror (format #f "Try looking up (FLUID ~S) again." sym) "Locative to (FLUID ~S) not found." sym) (aux)))))) ;;; eof oaklisp-1.3.7/src/world/format.oak000066400000000000000000000170651332762442600171100ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter and Kevin J. Lang ;;; Formatted output. Fancy version with modularity and lots of features. ;;; Format directive syntax: ;;; ;;; ::= '~' LISTOF( { | | '' } ) [':'] ['@'] ;;; LISTOF(x) ::= { '' | { x ',' }* x } ;;; ::= ''' ;;; ::= [ '+' | '-' ] + ;;; (let ((formats (lambda (arglist) (apply format arglist) (#^string (car arglist))))) (define (format stream control-string . args) (if (null? stream) (let ((s (make string-output-stream))) (listify-args formats s control-string . args)) (formati (if (eq? stream #t) standard-output stream) control-string 0 (length control-string) . args)))) (define (formati stream control-string index limit . args) (iterate aux ((index index)) (if (< index limit) (let ((char (nth control-string index))) (cond ((eq? char #\~) (format-parse-directive stream control-string (+ index 1) limit . args)) (else (write-char stream char) (aux (+ index 1))))) (if (zero? (rest-length args)) #f (listify-args format-arg-count-error stream control-string . args))))) (define (format-arg-count-error arglist) (destructure (stream control-string . arglist) arglist (cerror "Ignore the excess arguments." "After processing ~S to ~A, ~D argument~P ~S remained unconsumed." control-string stream (length arglist) (length arglist) arglist))) (define (format-parse-directive stream control-string index limit . args) (labels ((parse-list (lambda (char index the-list) (cond ((eq? char #\,) (parse-list (nth control-string index) (+ index 1) (cons nil the-list))) ((eq? char #\') (let ((quoted-char (nth control-string index))) (eat-comma (nth control-string (+ index 1)) (+ index 2) (cons quoted-char the-list)))) ((number-starter? char) (labels ((parse-number (lambda (char index num neg?) (let ((cn (#^number char))) (cond ((and (<= (#^number #\0) cn) (<= cn (#^number #\9))) (parse-number (nth control-string index) (+ index 1) (+ (* num 10) (- cn (#^number #\0))) neg?)) (else (eat-comma char index (cons (if neg? (- num) num) the-list)))))))) (cond ((eq? char #\-) (parse-number (nth control-string index) (+ index 1) 0 #t)) ((eq? char #\+) (parse-number (nth control-string index) (+ index 1) 0 #f)) (else (parse-number char index 0 #f))))) (else (find-colon char index the-list))))) (eat-comma (lambda (char index the-list) (if (eq? char #\,) (parse-list (nth control-string index) (+ index 1) the-list) (parse-list char index the-list)))) (find-colon (lambda (char index the-list) (if (eq? char #\:) (find-atsign (nth control-string index) (+ index 1) the-list #t) (find-atsign char index the-list #f)))) (find-atsign (lambda (char index the-list colon?) (if (eq? char #\@) (terminate (nth control-string index) (+ index 1) the-list colon? #t) (terminate char index the-list colon? #f)))) (terminate (lambda (char index the-list colon? atsign?) (destructure (arg-count op) (nth format-control-table (#^number (upcase char))) (cond ((eq? 0 arg-count) (op the-list colon? atsign? char stream) (formati stream control-string index limit . args)) ((eq? 1 arg-count) (formati1 stream control-string index limit the-list colon? atsign? char op . args)) (else (error "Format control arg may be only 0 or 1."))))))) (parse-list (nth control-string index) (+ index 1) '()))) (define (formati1 stream control-string index limit the-list colon? atsign? char op arg . args) (op the-list colon? atsign? char stream arg) (formati stream control-string index limit . args)) (define (number-starter? c) (or (eq? c #\+) (eq? c #\-) (eq? c #\0) (eq? c #\1) (eq? c #\2) (eq? c #\3) (eq? c #\4) (eq? c #\5) (eq? c #\6) (eq? c #\7) (eq? c #\8) (eq? c #\9))) ;;; A general way to define format control thingies: (define-instance format-control-table simple-vector 128) (let ((x (list 1 (lambda (the-list colon? atsign? char stream arg) (error "Unknown format control character ~C, argument ~S." char arg))))) (dotimes (i 128) (set! (nth format-control-table i) x))) (define (define-format-control char arg-count lamb) (set! (nth format-control-table (#^number (upcase char))) (list arg-count lamb))) ;;; The way they work: (define-format-control #\A 1 (lambda (the-list colon? atsign? char stream arg) (bind ((#*print-escape #f)) (print arg stream)))) (define-format-control #\~ 0 (lambda (the-list colon? atsign? char stream) (write-char stream #\~))) (define-format-control #\% 0 (lambda (the-list colon? atsign? char stream) (newline stream))) (define-format-control #\& 0 (lambda (the-list colon? atsign? char stream) (freshline stream))) (define-format-control #\S 1 (lambda (the-list colon? atsign? char stream arg) (bind ((#*print-escape #t)) (print arg stream)))) (define-format-control #\B 1 (lambda (the-list colon? atsign? char stream arg) (bind ((#*print-radix 2)) (print arg stream)))) (define-format-control #\D 1 (lambda (the-list colon? atsign? char stream arg) (bind ((#*print-radix 10)) (print arg stream)))) (define-format-control #\O 1 (lambda (the-list colon? atsign? char stream arg) (bind ((#*print-radix 8)) (print arg stream)))) (define-format-control #\X 1 (lambda (the-list colon? atsign? char stream arg) (bind ((#*print-radix 16)) (print arg stream)))) (define-format-control #\R 1 (lambda (the-list colon? atsign? char stream arg) (cond ((null? the-list) (error "Roman numerals are not yet implemented.")) (else (bind ((#*print-radix (last the-list))) (print arg stream)))))) (define-format-control #\C 1 (lambda (the-list colon? atsign? char stream arg) (print arg stream))) (define-format-control #\P 1 (lambda (the-list colon? atsign? char stream arg) (if (!= arg 1) (write-char stream #\s)))) (define-format-control #\! 1 (lambda (the-list colon? atsign? char stream arg) (cond ((and #*fancy-references (reasonable-expression #*current-locale arg)) => (lambda (expr) (format stream "~S " expr)))) (bind ((#*print-radix 10)) (print (object-hash arg) stream)))) ;;; This can't be CL compatible, because it has no way to communicate a new ;;; index back to the main routine. ;;; ;;; Ultimately, this should ignore whitespace following the newline. (define-format-control #\newline 0 (lambda (the-list colon? atsign? char stream) )) ;;; eof oaklisp-1.3.7/src/world/freeze.oak000066400000000000000000000025321332762442600170710ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;; The locale structure looks like this: ;; ;; SYSTEM ;; / \ ;; COMPILER SYSTEM-INTERNALS ;; / \ ;; SCRATCH COMPILER-INTERNALS ;; ;; System-locale gets filled in from the boot world by patch-locales.oak. (set! #*current-locale system-locale) (let ((remember-to-freeze (freeze-in-current-locale #f))) (define (freeze-in-current-locale variable) (set! (frozen-here? #*current-locale variable) #t)) (dolist (variable remember-to-freeze) (freeze-in-current-locale variable))) ;;; eof oaklisp-1.3.7/src/world/gc.oak000066400000000000000000000023061332762442600162010ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter (define-constant %gc (add-method ((make-open-coded-operation '((gc)) 0 1) (object)) (%gc))) (define-constant %full-gc (add-method ((make-open-coded-operation '((full-gc)) 0 1) (object)) (%full-gc))) ;;; Maybe there should be an interface to the next-newspace-size register ;;; here. And maybe RECLAIM_FRACTION should be a register with an interface ;;; here instead of a C compile-time constant. ;;; eof oaklisp-1.3.7/src/world/has-method.oak000066400000000000000000000023721332762442600176440ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; Define the has-method? operation. (define (has-method? typ op) (let ((it (%get-an-ivar operation op 'lambda?))) (and (not (eq? it 0)) (or (and it (subtype? typ object)) (really-has-method? typ op))))) (define-instance really-has-method? operation) (add-method (really-has-method? (type supertype-list operation-method-alist) self op) (or (%assq op operation-method-alist) (any? (lambda (typ) (really-has-method? typ op)) supertype-list))) ;;; eof oaklisp-1.3.7/src/world/hash-reader.oak000066400000000000000000000204121332762442600177710ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; This file defines the # reader dispatch macro character. ;;; The hash dispatch macro character. (define-instance hash-macro-chars simple-vector 256) (define (errorful-hash-macro-reader stream char arg) (signal unknown-#-macro char arg) the-unread-object) (dotimes (c 256) (set! (nth hash-macro-chars c) errorful-hash-macro-reader)) ;;; Hash macro reader functions take three args: the stream, the ;;; character, and the argument, the number between the # and the ;;; macro char. Non-negative, NIL if none. (define-nonterminating-macro-char #\# (lambda (stream char) (iterate aux ((i nil)) (let ((c (read-char stream))) (if (digit? c 10) (aux (+ (* (or i 0) 10) (digit-value c))) (let ((c (upcase c))) (let ((p (nth hash-macro-chars (#^number c)))) (cond (p (p stream c i)) (else (signal unknown-#-macro i c) the-unread-object))))))))) (define (define-hash-macro-char char func) (set! (nth hash-macro-chars (#^number (upcase char))) func)) ;;; #*FOO reads as (FLUID FOO), like the old ^V FOO when ^V was on Symbolics & Macs ;;; #^FOO reads as (COERCER FOO), like the old ^Y FOO when ^Y was on Symbolics & Macs (define (define-quotelike-#-macro-char c sym) (define-hash-macro-char c (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (list sym (read stream))))) (define-quotelike-#-macro-char #\* 'fluid) (define-quotelike-#-macro-char #\^ 'coercer) ;;; The #+ and #- reader conditionals. (set! #*features '()) (define-instance feature? settable-operation) (add-method (feature? (symbol) s) (memq s #*features)) (add-method ((setter feature?) (symbol) s bool) (cond (bool (if (not (memq s #*features)) (set! #*features (cons s #*features)))) ((memq s #*features) (set! #*features (setdifference #*features (list s))))) bool) (add-method (feature? (pair) x) (let ((s (car x))) (cond ((eq? s 'and) (every? feature? (cdr x))) ((eq? s 'or) (any? feature? (cdr x))) ((eq? s 'not) (when (not (null? (cddr x))) (error "~S is a bad feature specifier, as not only takes one argument." x)) (not (feature? (second x)))) (else (error "~S is an unknown feature specifier." x))))) (define-hash-macro-char #\+ (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (if (feature? (read stream)) (read stream) (block (bind ((#*read-suppress #t)) (read stream)) the-unread-object)))) (define-hash-macro-char #\- (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (if (feature? (read stream)) (block (bind ((#*read-suppress #t)) (read stream)) the-unread-object) (read stream)))) (set! (feature? 'oaklisp) #t) (set! (feature? 'scheme) #t) (define-hash-macro-char #\C (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (let ((l (read stream))) (when (cddr l) (cerror "Ignore the excess components." "#~C~A is ill formed: too many components." char l)) (make-complex (car l) (cadr l))))) (define-hash-macro-char #\. (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (eval (read stream) #*current-locale))) (define-hash-macro-char #\b (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (bind ((#*input-base 2)) (read stream)))) (define-hash-macro-char #\o (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (bind ((#*input-base 8)) (read stream)))) (define-hash-macro-char #\d (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (bind ((#*input-base 10)) (read stream)))) (define-hash-macro-char #\x (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (bind ((#*input-base 16)) (read stream)))) (define-hash-macro-char #\r (lambda (stream char arg) (iterate aux ((arg arg)) (cond ((null? arg) (aux (signal must-have-#-arg char arg))) (else (bind ((#*input-base arg)) (read stream))))))) (define-hash-macro-char #\( (lambda (stream char arg) (let* ((r (read-until #\) nil stream)) (l (length r)) (arg (or arg l))) (when (< arg l) (cerror "Ignore the excess componants." "The construct #~D~S puts more things in the vector than it is long." arg r)) (let ((v (make simple-vector arg))) (iterate aux ((i 0)(r r)(default nil)) (if (< i arg) (let ((it (if r (car r) default))) (set! (nth v i) it) (aux (+ i 1) (if r (cdr r) nil) it)) v)))))) ;;; A finite state machine augmented with a counter: (define-hash-macro-char #\| (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (iterate aux ((level 1) (c (read-char stream))) (cond ((eq? c the-eof-token) (signal eof-in-#pipe level)) ((eq? c #\#) (let ((c (read-char stream))) (if (eq? c #\|) (aux (+ level 1) (read-char stream)) (aux level c)))) ((eq? c #\|) (let ((c (read-char stream))) (if (eq? c #\#) (if (= level 1) the-unread-object (aux (- level 1) (read-char stream))) (aux level c)))) (else (aux level (read-char stream))))))) (define-hash-macro-char #\T (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) #t)) (define-hash-macro-char #\F (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) nil)) ;;; For some T compatibility, this code deals with #[symbol "..."], and could ;;; be augmented to understand similar constructs like #57[code-vector ...]. (define-hash-macro-char #\[ (lambda (stream char arg) (let ((selector (read stream))) (cond ((hash-bracket-option selector) => (lambda (op) (op char arg selector stream))) (else (block0 (cerror "Return a value." "The #~A~A~A construct is unknown." (or arg "") char selector) (read-until #\] #f stream))))))) (let ((hash-bracket-option-alist '())) (define-instance hash-bracket-option settable-operation) (add-method (hash-bracket-option (object) x) (cond ((assq x hash-bracket-option-alist) => cdr) (else #f))) (add-method ((setter hash-bracket-option) (object) x op) (cond ((assq x hash-bracket-option-alist) => (lambda (p) (set! (cdr p) op))) (else (push hash-bracket-option-alist (cons x op)) op)))) (set! (hash-bracket-option 'symbol) (lambda (char arg selector stream) (when arg (cerror "Ignore the argument." "The #~D~A~S construct is malformed; no argument is taken." arg char selector)) (let ((l (read-until #\] #f stream))) (when (not (null? (cdr l))) (cerror "Ignore the extra stuff." "This contruct takes only one thing to coerce.")) (#^symbol (car l))))) (set! (hash-bracket-option 'delay) (lambda (char arg selector stream) (when arg (cerror "Ignore the argument." "The #~D~A~S construct is malformed; no argument is taken." arg char selector)) (destructure* (val num) (read-until #\] #f stream) (delay val)))) (define-hash-macro-char #\E (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (let ((x (read stream))) ;; (make-exact x) x))) (define-hash-macro-char #\I (lambda (stream char arg) (when arg (signal cant-have-#-arg char arg)) (let ((x (read stream))) (cerror "Return the corresponding exact number." "Inexact numbers are not supported.") x))) ;;; eof oaklisp-1.3.7/src/world/hash-table.oak000066400000000000000000000166221332762442600176260ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; The access interface is PRESENT?, same as for SAT-TREEs. Returns ;;; a PAIR whose CAR is the key and whose CDR is the associated value. ;;; A different interface to hash tables is provided by the T-style ;;; TABLE-ENTRY operation which returns the associated value or #f if ;;; the key isn't in the table. ;;; The setter of either operation can be used to add, modify, and ;;; remove associations. ;;; Set PRESENT? to a new value, not a (key . val) pair. ;(define-instance present? settable-operation) ;(define-instance table-entry settable-operation) (define-instance hash-table type '() '()) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; generic hash tables (define-instance generic-hash-table type '(table count size key-op =?) (list hash-table object)) (add-method (initialize (generic-hash-table key-op =? table count size) self the-key-op the-=?) (set! key-op the-key-op) (set! =? the-=?) (set! count 0) (set! size 17) (set! table (make simple-vector size)) (dotimes (i size) (set! (nth table i) '())) self) (add-method (present? (generic-hash-table key-op =? table count size) self x) (ass =? x (nth table (modulo (key-op x) size)))) (add-method ((setter present?) (generic-hash-table key-op =? table count size) self x v) (let* ((key (key-op x)) (index (modulo key size)) (lslot (make-locative (nth table index))) (slot (contents lslot)) (entry (ass =? x slot))) (if v (if entry (set! (cdr entry) v) ;modify (block ;insert (set! (contents lslot) (cons (cons x v) slot)) (set! count (+ count 1)) (when (> (+ count count) size) (resize self (+ 1 (+ size size)))))) (when entry ;remove (set! (contents lslot) (del (lambda (k p) (=? k (car p))) x slot)) (set! count (- count 1))))) v) (define-instance resize operation) (add-method (resize (generic-hash-table key-op table count size) self new-size) (let ((old-table table) (old-size size)) (set! table (make simple-vector new-size)) (set! size new-size) (dotimes (i new-size) (set! (nth table i) '())) (dotimes (i old-size) (dolist (entry (nth old-table i)) (let* ((key (key-op (car entry))) (j (modulo key size)) (jloc (make-locative (nth table j)))) (set! (contents jloc) (cons entry (contents jloc)))))) self)) ;;; String hash tables: (define-instance string-hash-key operation) #|| (add-method (string-hash-key (string char-count) s) (iterate aux ((i 0) (k 0)) (if (= i char-count) k (aux (+ i 1) (bit-xor (rot-left k 7) (%character->fixnum (nth s i))))))) ||# ;;; Maybe the following will speed up reading: (add-method (string-hash-key (string char-count) s) (if (eq? char-count 0) 0 (let ((n (quotient (+ char-count (- %chars-per-word 1)) %chars-per-word)) (p0 (make-locative (%vref s 0)))) (iterate aux ((i 0) (k 0)) (if (= i n) k (aux (+ i 1) (bit-xor (rot-left k (- (* 8 %chars-per-word) 1)) (contents (%increment-locative p0 i))))))))) (define (make-string-hash-table) (make generic-hash-table string-hash-key equal?)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; EQ? hash tables (define-instance eq-hash-table type '(table count size) (list hash-table object)) (add-method (initialize (eq-hash-table table count size) self) (set! count 0) (set! size 17) (set! table (make simple-vector size)) (dotimes (i size) (set! (nth table i) '())) self) (add-method (present? (eq-hash-table table count size) self x) (%assq x (%vref-nocheck table (modulo (object-hash x) size)))) (add-method ((setter present?) (eq-hash-table table count size) self x v) (let* ((lslot (make-locative (nth table (modulo (object-hash x) size)))) (slot (contents lslot)) (entry (%assq x slot))) (if v (if entry (set! (cdr entry) v) ;modify (block ;insert (set! (contents lslot) (cons (cons x v) slot)) (set! count (+ count 1)) (when (> (+ count count) size) (resize self (+ 1 (+ size size)))))) (if entry (block ;remove (set! (contents lslot) (del (lambda (k p) (eq? k (car p))) x slot)) (set! count (- count 1))) #f))) ;noop v) (add-method (resize (eq-hash-table table count size) self new-size) (let ((old-table table) (old-size size)) (set! table (make simple-vector new-size)) (set! size new-size) (dotimes (i new-size) (set! (nth table i) '())) (dotimes (i old-size) (dolist (entry (nth old-table i)) (push (nth table (modulo (object-hash (car entry)) size)) entry))) self)) (define (make-eq-hash-table) (make eq-hash-table)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; EQUAL-HASH-TABLE (define (tree-hash x) (tree-hash-aux x 0)) (define (tree-hash-aux x d) (cond ((= d 4) #x162534) ((pair? x) (bit-xor (tree-hash-aux (car x) (+ d 1)) (rot-left (tree-hash-aux (cdr x) (+ d 1)) 17))) ((string? x) (string-hash-key x)) ((vector? x) (vector-hash-key-aux x d)) (else (object-hash x)))) (define (vector-hash-key-aux x d) (let ((l (length x))) ;; First clause is not portable--relies on uniqueness of the empty vector. (cond ((zero? l) (object-hash x)) (else (bit-xor (bit-xor (rot-left l 23) (rot-left (tree-hash-aux (nth x 0) (+ d 1)) 17)) (bit-xor (rot-left (tree-hash-aux (nth x (modulo 7 l)) (+ d 1)) 11) (tree-hash-aux (nth x (modulo 39 l)) (+ d 1)))))))) (define-instance equal-hash-table type '() (list generic-hash-table)) (add-method (initialize (equal-hash-table) self) (^super generic-hash-table initialize self tree-hash equal?)) (define (make-equal-hash-table) (make equal-hash-table)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; shared methods (add-method (print (hash-table) self stream) (format stream "#" (length self) self)) (dolist (typ (list generic-hash-table eq-hash-table)) (add-method (length (typ count) self) count) (add-method (#^list-type (typ table size) self) (iterate aux ((i 0)(l '())) (if (= i size) l (aux (+ i 1) (append (nth table i) l))))) (add-method ((setter length) (typ table count size) self new-length) (when (!= new-length 0) (error "Attempt to set hash table ~S to non-zero length." self)) (set! count 0) (dotimes (i size) (set! (nth table i) '()))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; table-entry interface, like in T (define-instance table-entry settable-operation) (set! (setter table-entry) (setter present?)) (add-method (table-entry (hash-table) tab key) (cond ((present? tab key) => cdr) (else #f))) ;;; eof oaklisp-1.3.7/src/world/icky-macros.oak000066400000000000000000000021421332762442600200270ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Barak A. Pearlmutter and Kevin J. Lang ;;; The following two things are a hack, but they should speed up string ;;; access by a lot, and this optimization is anything but premature. (define-syntax (%fixnum->character x) `(%crunch (ash-left ,x 6) 1)) (define-syntax (%character->fixnum x) `(ash-left (%data ,x) -6)) ;;; End of icky macros that compile to tense code. oaklisp-1.3.7/src/world/interpreter.oak000066400000000000000000000204251332762442600201550ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; APPLY is a good thing to have in a lisp. #| (labels (((apply0 op arglist . rest) (if (null? arglist) (op . rest) (apply0 op (cdr arglist) (car arglist) . rest))) ((general-apply args) (let ((op (car args)) (args (apply list* (cdr args)))) (apply op args)))) (define (apply op x . args) (cond ((= (rest-length args) 0) (apply0 op (reverse x) . args)) (else (listify-args general-apply op x . args))))) |# (labels (((partially-reverse-4 inlist) (labels (((loop3 old new) (if (null? old) new (loop0 (cdr old) new))) ((loop2 old new) (if (null? old) new (loop3 (cdr old) new))) ((loop1 old new) (if (null? old) new (loop2 (cdr old) new))) ((loop0 old new) (if (null? old) new (loop1 (cdr old) (cons old new))))) (loop0 inlist '()))) ((apply4-aux op rev-chunk-list . rest) (if (null? rev-chunk-list) (op . rest) (let* ((chunk1 (car rev-chunk-list)) (a (car chunk1)) (a-cdr (cdr chunk1)) (b (car a-cdr)) (b-cdr (cdr a-cdr)) (c (car b-cdr)) (c-cdr (cdr b-cdr)) (d (car c-cdr))) (apply4-aux op (cdr rev-chunk-list) a b c d . rest)))) ((general-apply args) (let ((op (car args)) (args (apply list* (cdr args)))) (apply op args)))) (define (apply op inlist . args) (if (> (rest-length args) 0) (listify-args general-apply op inlist . args) (if (null? inlist) (op) (let* ((rev-chunk-list (partially-reverse-4 inlist)) (chunk1 (car rev-chunk-list))) (let ((a (car chunk1)) (a-cdr (cdr chunk1))) (if (null? a-cdr) (apply4-aux op (cdr rev-chunk-list) a) (let ((b (car a-cdr)) (b-cdr (cdr a-cdr))) (if (null? b-cdr) (apply4-aux op (cdr rev-chunk-list) a b) (let ((c (car b-cdr)) (c-cdr (cdr b-cdr))) (if (null? c-cdr) (apply4-aux op (cdr rev-chunk-list) a b c) (let ((d (car c-cdr))) (apply4-aux op (cdr rev-chunk-list) a b c d) ))))))) ))))) (define (interpreter-eval form locale) (i-eval form '() locale)) (define (i-eval expr env locale) (let ((typ (get-type expr))) (cond ((eq? typ symbol) (contents (lookup-var expr env locale #f))) ((eq? typ cons-pair) (i-eval-pair expr env locale)) ((or (eq? typ fixnum) (eq? expr #t) (eq? expr #f)) expr) ((symbol? expr) (contents (lookup-var expr env locale #f))) ((is-a? expr self-evaluatory-mixin) expr) ((pair? expr) (i-eval-pair expr env locale)) (else (cerror "Consider it a constant." "~A found in evaluated position." expr) expr)))) ;;; The primitive special forms: ;;; (%ADD-METHOD (op (typ . ivars) . args) body) ;;; (%CATCH (let (v tag) form)) ;;; (%LABELS clause-list body) ;;; (%MAKE-LOCATIVE sym) ;;; (%BLOCK . forms) ;;; (%IF test a b) ;;; (QUOTE obj) ;;; (REST-LENGTH var) (define (i-eval-pair expr env locale) (let ((op (car expr))) (cond ((eq? op 'quote) (car (cdr expr))) ((eq? op '%make-locative) (lookup-var (cadr expr) env locale #t)) ((eq? op '%if) (i-eval (if (i-eval (car (cdr expr)) env locale) (car (cdr (cdr expr))) (car (cdr (cdr (cdr expr))))) env locale)) ((eq? op '%block) (iterate aux ((l (cdr expr))) (if (null? l) nil (let ((cdrl (cdr l))) (cond ((null? cdrl) (i-eval (car l) env locale)) (else (i-eval (car l) env locale) (aux cdrl))))))) ((eq? op '%labels) (i-eval-labels expr env locale)) ((eq? op '%catch) (i-eval-catch expr env locale)) ((eq? op '%add-method) (i-eval-add-method expr env locale)) ((eq? op 'rest-length) ;; Legality check for symbolhood and length here? (length (i-eval (cadr expr) env locale))) (else (let ((op (i-eval op env locale))) ;; If this evaluated things in the other order, ie. right ;; to left like the compiler, typing (SET! A B) wouldn't ;; install A before the error looking up B. (iterate aux ((l (cdr expr)) (r '())) (cond ((pair? l) (aux (cdr l) (cons (i-eval (car l) env locale) r))) (else (apply op (if (null? l) (reverse r) ;; Rest arguments. (append (reverse r) (i-eval l env locale)))))))))))) ;;; Environments are implemented as opposing ribs of symbols and locatives. (define (lookup-var sym env locale auto-install) (iterate aux ((env env)) (if (not (null? env)) (let ((this-pair (car env))) (iterate aux1 ((vars (car this-pair)) (locs (cdr this-pair))) (cond ((eq? sym vars) ;This clause is for rest args. (let ((x (map contents locs))) (make-locative x))) ((or (null? vars) (symbol? vars)) (aux (cdr env))) ((eq? sym (car vars)) (car locs)) (else (aux1 (cdr vars) (cdr locs)))))) (cond ((variable? locale sym) => identity) (else (if auto-install (warning "Installing ~A in ~A.~%" sym locale) (cerror (format #f "Install ~S in ~S." sym locale) "Variable ~S not found in ~S." sym locale)) (set! (variable-here? locale sym) (%make-cell (make-undefined-variable-value sym)))))))) (define (i-eval-catch expr env locale) (destructure* (#t (('add-method (#t #|makop|# #t #|typ|# thevar) body) #t #|escape|#)) expr (native-catch tag (i-eval body `( ( (,thevar) . (,(make-locative tag)) ) ,@env ) locale)))) (define (i-eval-labels expr env locale) (destructure* (#t clauses body ) expr (let ((vars (map car clauses)) (locs (iterate aux ((l clauses)(r '())) (if (null? l) r (aux (cdr l) (cons (let ((x nil)) (make-locative x)) r)))))) (let ((env (cons (cons vars locs) env))) (iterate aux ((clauses clauses)(locs locs)) (cond ((null? clauses) (i-eval body env locale)) (else (set! (contents (car locs)) (i-eval (car (cdr (car clauses))) env locale)) (aux (cdr clauses) (cdr locs))))))))) ;;; The following two functions really belong somewhere else. (define (proper-list? l) (iterate aux ((l l)) (cond ((null? l) t) ((pair? l) (aux (cdr l))) (else nil)))) (define (proper-length l) (iterate aux ((l l) (n 0)) (cond ((pair? l) (aux (cdr l) (+ n 1))) (else n)))) (define (i-eval-add-method expr env locale) (destructure* (#t ( op ( typ . ivars ) . args ) body ) expr (let ((op (i-eval op env locale)) (typ (i-eval typ env locale))) (let ((rest-args-okay? (not (proper-list? args))) (desired-args (proper-length args)) (f (lambda (rest-arglist) (let ((arg-locs (mapcdr (locater car) rest-arglist)) (ivar-locs (and rest-arglist ivars (%locate-ivars typ (car rest-arglist) ivars)))) (i-eval body `((,ivars . ,ivar-locs) (,args . ,arg-locs) ,@env) locale))))) (add-method (op (typ) . rest-args) (if (or (< (rest-length rest-args) desired-args) (and (not rest-args-okay?) (not (= (rest-length rest-args) desired-args)))) ((if rest-args-okay? incorrect-nargs-gte incorrect-nargs) desired-args . rest-args) (listify-args f . rest-args))))))) (define-instance %locate-ivars operation) (add-method (%locate-ivars (type ivar-list) self obj var-list) (let ((frame-loc (%increment-locative (%set-tag obj %locative-tag) (cdr (%assq self ((%slot 6) (get-type obj))))))) (iterate aux ((l var-list)(locs '())) (cond ((null? l) (reverse locs)) (else (aux (cdr l) (cons (%increment-locative frame-loc (position-in-list (car l) ivar-list)) locs))))))) ;;; eof oaklisp-1.3.7/src/world/kernel.oak000066400000000000000000000057661332762442600171050ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; This comes after kernel0 and kernel1, so ADD-METHOD should work now. ;;; It is time to set up some standard bindings. ;;; T and NIL are defined by the world builder ;; This early definition of EQ? is necessary for mapping, but EQ? is redefined ;; properly later. (define (eq? x y) (eq? x y)) (define-instance coercable-type type '(co-op) (list type)) (add-method (initialize (coercable-type co-op) self the-ivar-list the-supertype-list) (^super type initialize self the-ivar-list the-supertype-list) (set! co-op (add-method ((make operation) (self) self) self)) self) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Define some primitive types. ;; ;; This mixin is for the compiler's benefit: (define-instance self-evaluatory-mixin type '() '()) ;;; The cons heirarchy is: ;;; ;;; sequence ;;; \ ;;; list-type ;;; / \ ;;; pair null-type (only instance is "()") ;;; / ;;; cons-pair (define-instance sequence type '() '()) (define-instance list-supertype type '() (list coercable-type)) (define-instance list-type list-supertype '() (list sequence)) (add-method (make (list-supertype) self len initial-element) (iterate aux ((l '()) (i len)) (if (zero? i) l (aux (cons initial-element l) (- i 1))))) (define-instance pair type '() (list list-type)) (initialize null-type '() (list self-evaluatory-mixin list-type object)) (initialize cons-pair '(the-car the-cdr) (list pair object)) (%your-top-wired cons-pair) (add-method (initialize (cons-pair the-car the-cdr) self new-car new-cdr) (set! the-car new-car) (set! the-cdr new-cdr) self) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Yet more types (initialize locative '() (list object)) (set! ((%slot 0) string) coercable-type) (initialize string '() (list self-evaluatory-mixin object)) ;;;;;;;; (define-instance symbol coercable-type '(print-name) (list object)) ;;;;;;;;;; ;; This was moved here from promise.oak so system code can add methods to it. (define-instance forcible type '() '()) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (is-a? obj typ) ;Determine whether OBJ is-a TYP (subtype? (get-type obj) typ)) ;;;; eof oaklisp-1.3.7/src/world/kernel0.oak000066400000000000000000000062741332762442600171600ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang ;;; This is the lowest level kernel code in Oaklisp. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Set up some registers. (set! ((%register 'nil)) (the-runtime nil)) (set! ((%register 't)) (the-runtime t)) (set! ((%register 'cons-type)) (the-runtime cons-pair)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Make TYPE (let ((type0 (%allocate nil 9))) (set! ((%slot 0) type0) type0) (set! ((%slot 1) type0) 9) ;instance-length (set! ((%slot 2) type0) nil) ;var-length? (set! ((%slot 4) type0) ;ivar-list '(instance-length variable-length? supertype-list ivar-list ivar-count type-bp-alist operation-method-alist top-wired?)) (set! ((%slot 5) type0) 8) ;ivar-count (set! ((%slot 6) type0) '()) ;type-bp-alist (set! ((%slot 7) type0) '()) ;op-meth-alist (set! ((%slot 8) type0) 't) ;top-wired? (set! type type0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Make OBJECT (let ((object0 (%allocate type 9))) (set! ((%slot 1) object0) 1) ;instance-length (set! ((%slot 2) object0) nil) ;var-length? (set! ((%slot 3) object0) '()) ;supertype-list (set! ((%slot 4) object0) '()) ;ivar-list (set! ((%slot 5) object0) 0) ;ivar-count (set! ((%slot 6) object0) (cons (cons object0 1) '())) ;type-bp-alist (set! ((%slot 7) object0) '()) ;op-meth-alist (set! ((%slot 8) object0) nil) ;top-wired? (set! object object0)) ;;; tell the machine where object lives. (set! ((%register 'object-type)) (the-runtime object)) ;;; Back patch the supertypes of TYPE (set! ((%slot 3) type) (cons object '())) ;;; Back patch TYPE's TYPE-BP-ALIST (set! ((%slot 6) type) (list (cons type 1) (cons object 9))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Make OPERATION (let ((operation0 (%allocate type 9))) (set! ((%slot 1) operation0) %simple-operation-length) ;instance-length (set! ((%slot 2) operation0) nil) ;var-length? (set! ((%slot 3) operation0) ;supertype-list (cons object '())) (set! ((%slot 4) operation0) '(lambda? cache-type cache-method cache-type-offset)) ;ivar-list (set! ((%slot 5) operation0) (- %simple-operation-length 1)) ;ivar-count (set! ((%slot 6) operation0) ;type-bp-alist (cons (cons operation0 1) (cons (cons object 0) '()))) (set! ((%slot 7) operation0) '()) ;op-meth-alist (set! ((%slot 8) operation0) t) ;top-wired? (set! operation operation0)) oaklisp-1.3.7/src/world/kernel0types.oak000066400000000000000000000050121332762442600202320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang ;;; This program defines some types in a crude way so that ;;; we can send messages to everything. ;;; Most of these these types must be adjusted later in the boot ;;; process so that their inheritance relationships will be correct. (set! ((%slot 0) %code-vector) type) (set! ((%slot 0) cons-pair) type) (set! ((%slot 0) string) type) (set! %method (%allocate type 9)) (set! %closed-environment (%allocate type 9)) (set! null-type (%allocate type 9)) (set! fixnum (%allocate type 9)) (set! locative (%allocate type 9)) (set! ((%register 'fixnum-type)) (the-runtime fixnum)) ;(set! ((%register 'cons-type)) (the-runtime cons-pair)) (set! ((%register 'loc-type)) (the-runtime locative)) (set! ((%register 'env-type)) (the-runtime %closed-environment)) (set! ((%register 'method-type)) (the-runtime %method)) (set! ((%register 'operation-type)) (the-runtime operation)) ;; The MAKE-CLOSED-ENVIRONMENT instruction has been modified to disallow ;; an argument of 0: ;(set! %empty-environment (%make-closed-environment)) (set! %empty-environment (%varlen-allocate %closed-environment 2)) (let ((booter ((%register 'boot-code)))) (set! ((%slot 0) booter) %method) (set! ((%slot 2) booter) %empty-environment)) (set! %sort-of-init (%allocate operation %simple-operation-length)) (set! ((%slot 1) %sort-of-init) 0) (_add-method (%sort-of-init (type supertype-list type-bp-alist operation-method-alist) self) (set! supertype-list (list object)) (set! type-bp-alist `((,self . 1))) (set! operation-method-alist nil)) (%sort-of-init %code-vector) (%sort-of-init cons-pair) (%sort-of-init string) (%sort-of-init %method) (%sort-of-init %closed-environment) (%sort-of-init null-type) (%sort-of-init fixnum) (%sort-of-init locative) (set! ((%slot 0) '()) null-type) oaklisp-1.3.7/src/world/kernel1-freeze.oak000066400000000000000000000023541332762442600204320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Barak A. Pearlmutter & Kevin J. Lang (let ((remember-to-freeze '())) (define (freeze-in-current-locale variable) (if variable (push remember-to-freeze variable) remember-to-freeze))) ;; Now freeze everything that should have been frozen in the files preceding ;; this that couldn't be because this stuff wasn't defined yet: (dolist (v '(operation object make type %varlen-make initialize nil t %method fixnum cons-pair locative %closed-environment)) (freeze-in-current-locale v)) ;;; eof oaklisp-1.3.7/src/world/kernel1-funs.oak000066400000000000000000000040761332762442600201300ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;;;;;;;;;;some functions defined here for expediency;;;;;;;;;; (set! subtype? (%allocate operation %simple-operation-length)) (set! %length (%allocate operation %simple-operation-length)) (set! %memq (%allocate operation %simple-operation-length)) (set! %append (%allocate operation %simple-operation-length)) (set! ((%slot 1) subtype?) 0) (set! ((%slot 1) %length) 0) (set! ((%slot 1) %memq) 0) (set! ((%slot 1) %append) 0) ;;; SUBTYPE? code goes here because of some load dependencies. (add-method (subtype? (type type-bp-alist) self potential-super) (not (null? (%assq potential-super type-bp-alist)))) (add-method (%length (object) l) (iterate aux ((l l) (n 0)) (if (null? l) n (aux (cdr l) (+ n 1))))) (add-method (%memq (object) ob l) (cond ((null? l) '()) ((eq? ob (car l)) l) (else (%memq ob (cdr l))))) (add-method (%append (object) a b) (cond ((null? a) b) ((null? b) a) (else (cons (car a) (%append (cdr a) b))))) #| (add-method (subtype? (type supertype-list) self potential-super) (or (eq? self potential-super) (iterate aux ((l supertype-list)) (cond ((null? l) nil) (else (let ((cdrl (cdr l))) (cond ((null? cdrl) (subtype? (car l) potential-super)) ((subtype? (car l) potential-super) t) (else (aux cdrl))))))))) |# oaklisp-1.3.7/src/world/kernel1-inittypes.oak000066400000000000000000000026111332762442600211760ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; time to back patch some types (set! variable-length-mixin (make type '() '())) (initialize %closed-environment '() (list variable-length-mixin object)) (%your-top-wired %closed-environment) ;this provides no protection (initialize %code-vector '(ivar-map) (list variable-length-mixin object)) (%your-top-wired %code-vector) ;this provides no protection (initialize %method '(the-code the-environment) (list object)) (add-method (initialize (%method the-code the-environment) self c e) (set! the-code c) (set! the-environment e) self) oaklisp-1.3.7/src/world/kernel1-install.oak000066400000000000000000000112741332762442600206210ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; define install-method ;;; Bugs: ;;; all offsets in this file of the form (%SLOT x) should be symbolic. ;;; ;;; ADD-METHOD should bomb on non-operations, or at least on undefineds. (set! %install-method-with-env (%allocate operation %simple-operation-length)) (set! ((%slot 1) %install-method-with-env) 0) (_add-method (%install-method-with-env (type operation-method-alist ivar-list) self op code-body env) (when (eq? op 0) (error "ADD-METHOD with operation 0! Type: ~A, Code-body: ~A, Env: ~A." self code-body env)) ;; Check the ivar maps for consistency (let ((code-ivar-map ((%slot 2) code-body))) (iterate aux ((real-ivar-map ivar-list) (check-ivar-map code-ivar-map)) (cond ((null? check-ivar-map) nil) (else (let ((x (car check-ivar-map))) (cond ((or (null? x) (eq? x (car real-ivar-map))) (aux (cdr real-ivar-map) (cdr check-ivar-map))) (else (error "Too early to remap ivars in code" x (car real-ivar-map))))))))) ;; flush the method cache (set! ((%slot 2) op) 0) ;; create and install the method (let ((the-method (%allocate %method 3))) (set! ((%slot 1) the-method) code-body) (set! ((%slot 2) the-method) env) (cond ((and (eq? self object) ((%slot 1) op)) (set! ((%slot 1) op) the-method)) (else (when (and ((%slot 1) op) (not (eq? ((%slot 1) op) 0))) ;; Toss it on to OBJECT's OPERATION-METHOD-ALIST: (set! ((%slot 7) object) (cons (cons op ((%slot 1) op)) ((%slot 7) object)))) (let ((the-ass (%assq op operation-method-alist))) (set! ((%slot 1) op) nil) (if the-ass (set! (cdr the-ass) the-method) (set! operation-method-alist (cons (cons op the-method) operation-method-alist))))))) op) (set! %install-method (%allocate operation %simple-operation-length)) (set! %install-lambda-with-env (%allocate operation %simple-operation-length)) (set! %install-lambda (%allocate operation %simple-operation-length)) (set! ((%slot 1) %install-method) 0) (set! ((%slot 1) %install-lambda-with-env) 0) (set! ((%slot 1) %install-lambda) 0) (_add-method (%install-method (object) self op code-body) (%install-method-with-env self op code-body %empty-environment)) #| (add-method (%install-lambda (object) code-body) (%install-method-with-env object (make operation) code-body %empty-environment)) (add-method (%install-lambda-with-env (object) code-body env) (%install-method-with-env object (make operation) code-body env)) |# ; note : calls to the following operations are no longer emitted by the compiler ; instead, the open coded operation %make-lambda-with-env is used. ; this new operation is defined in code-vector.oak ; also, the compiler has been changed to only use the "with-env" version ; of %install-method (add-method (%install-lambda (object) code-body) (let ((the-op (%allocate operation %simple-operation-length)) (the-method (%allocate %method 3))) (set! ((%slot 1) the-method) code-body) (set! ((%slot 2) the-method) %empty-environment) (set! ((%slot 1) the-op) the-method) the-op)) (add-method (%install-lambda-with-env (object) code-body env) (let ((the-op (%allocate operation %simple-operation-length)) (the-method (%allocate %method 3))) (set! ((%slot 1) the-method) code-body) (set! ((%slot 2) the-method) env) (set! ((%slot 1) the-op) the-method) the-op)) (set! error (%allocate operation %simple-operation-length)) (set! ((%slot 1) error) 0) (add-method (error (object) arg . rest) (%write-char #\F) (%write-char #\a) (%write-char #\t) (%write-char #\a) (%write-char #\l) (%write-char #\space) (%write-char #\b) (%write-char #\o) (%write-char #\o) (%write-char #\t) (%write-char #\space) (%write-char #\e) (%write-char #\r) (%write-char #\r) (%write-char #\o) (%write-char #\r) (%write-char #\.) (%write-char #\newline) ((%halt 69) arg)) ;;; eof oaklisp-1.3.7/src/world/kernel1-make.oak000066400000000000000000000036351332762442600200720ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1987 Kevin J. Lang and Barak A. Pearlmutter ;;; how to make things ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Make MAKE (set! make (%allocate operation %simple-operation-length)) (set! %varlen-make (%allocate operation %simple-operation-length)) (set! ((%slot 1) make) 0) (set! ((%slot 1) %varlen-make) 0) (set! variable-length-mixin 'not-really-varlen-mixin) (add-method (make (type instance-length) self . args) (if (subtype? self variable-length-mixin) (%varlen-make self . args) (let ((new-guy (%allocate self instance-length))) (initialize new-guy . args)))) ;;; This %varlen-allocate instruction exists to close a tiny GC ;;; window. (add-method (%varlen-make (type instance-length) self ncells . args) (let* ((guylen (+ instance-length ncells)) (new-guy (%varlen-allocate self guylen))) (initialize new-guy ncells . args))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Make INITIALIZE (set! initialize (%allocate operation %simple-operation-length)) (set! ((%slot 1) initialize) 0) ;;; This took (self . more) and check if more was empty; no more. (add-method (initialize (object) self) self) ;;; eof oaklisp-1.3.7/src/world/kernel1-maketype.oak000066400000000000000000000062051332762442600207700ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang and Barak A. Pearlmutter ;;; how to make types (add-method (initialize (type instance-length variable-length? supertype-list ivar-list ivar-count type-bp-alist operation-method-alist top-wired?) self the-ivar-list the-supertype-list) (set! variable-length? nil) (set! supertype-list the-supertype-list) (set! ivar-list the-ivar-list) (set! ivar-count (%length ivar-list)) (set! operation-method-alist '()) (set! top-wired? nil) ;; Got to compute type-bp-alist and instance-length together: (set! instance-length 1) (set! type-bp-alist '()) (iterate nextsuper ((supers-to-do supertype-list)(type-table (list self)) (top-wired-guy? nil)(var-len-guy? nil)) (if supers-to-do (let ((guy (car supers-to-do))) (cond ((eq? guy variable-length-mixin) (when var-len-guy? (error "type init: can't include vl-mixin twice")) (set! variable-length? t) (set! instance-length 2) (nextsuper (cdr supers-to-do) type-table top-wired-guy? (list guy))) (((%slot 8) guy) (when top-wired-guy? (error "type init: can't combine two top-wired types")) (nextsuper (cdr supers-to-do) type-table (list guy) var-len-guy?)) ((%memq guy type-table) (nextsuper (cdr supers-to-do) type-table top-wired-guy? var-len-guy?)) (else (nextsuper (%append ((%slot 3) guy) (cdr supers-to-do)) (cons guy type-table) top-wired-guy? var-len-guy?)))) (block (when (and top-wired-guy? var-len-guy?) (error "type init: can't have both vl-mixin and a top-wired type")) (iterate layout ((guys-to-do (%append top-wired-guy? (%append type-table var-len-guy?)))) (if guys-to-do (let ((guy (car guys-to-do))) (set! type-bp-alist (cons (cons guy instance-length) type-bp-alist)) (set! instance-length (+ instance-length ((%slot 5) guy))) (layout (cdr guys-to-do))) self)))))) ;;; Value is: 0 for never add-methoded, NIL for regular operation, the method ;;; if it's a lambda. (add-method (initialize (operation lambda?) self) (set! lambda? 0) ;; The cache could be initialized to something innocent here, but I'm not ;; going to bother, as the uninitialized value shouldn't be a type anyway. self) (set! %your-top-wired (make operation)) (add-method (%your-top-wired (type top-wired?) self) (set! top-wired? t)) ;; fix the problem with subtyping a top-wired variable-length type. oaklisp-1.3.7/src/world/kernel1-segments.oak000066400000000000000000000016721332762442600210010ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Barak A. Pearlmutter & Kevin J. Lang (define-instance stack-segment type '(previous-segment) (list variable-length-mixin object)) (set! ((%register 'segment-type)) (the-runtime stack-segment)) ;;; eof oaklisp-1.3.7/src/world/lazy-cons.oak000066400000000000000000000057301332762442600175330ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1888 Kevin J. Lang & Barak A. Pearlmutter (define-instance lazy-cons type '(car-thunk cdr-thunk car-flag cdr-flag) (list pair object)) (add-method (initialize (lazy-cons car-thunk cdr-thunk car-flag cdr-flag) self new-car-thunk new-cdr-thunk) (set! car-thunk new-car-thunk) (set! cdr-thunk new-cdr-thunk) (set! car-flag nil) (set! cdr-flag nil) self) (add-method (car (lazy-cons car-thunk car-flag) self) (if car-flag car-thunk (let ((newcar (car-thunk))) ;; Critical section; would be a good idea to disable interrupts. (set! car-flag #t) (set! car-thunk newcar)))) (add-method (cdr (lazy-cons cdr-thunk cdr-flag) self) (if cdr-flag cdr-thunk (let ((newcdr (cdr-thunk))) ;; Critical section; would be a good idea to disable interrupts. (set! cdr-flag #t) (set! cdr-thunk newcdr)))) (add-method ((setter car) (lazy-cons car-thunk car-flag) self val) (set! car-flag #t) (set! car-thunk val)) (add-method ((setter cdr) (lazy-cons cdr-thunk cdr-flag) self val) (set! cdr-flag #t) (set! cdr-thunk val)) (add-method ((locater car) (lazy-cons car-thunk) self) (car self) (make-locative car-thunk)) (add-method ((locater cdr) (lazy-cons cdr-thunk) self) (cdr self) (make-locative cdr-thunk)) (define-syntax (lcons a d) `(make lazy-cons (lambda () ,a) (lambda () ,d))) (define-instance lmap operation) (add-method (lmap (operation) op l) (if (null? l) '() (lcons (op (car l)) (lmap op (cdr l))))) (define (square-list n) (make lazy-cons (lambda () (* n n)) (lambda () (square-list (+ n 1))))) (define (integer-list n) (make lazy-cons (lambda () n) (lambda () (integer-list (+ n 1))))) (define (fair-merge l1 l2) (if (not (null? l1)) (lcons (car l1) (fair-merge l2 (cdr l1))) l2)) ;;; This print method isn't really necessary: (add-method (print (lazy-cons car-thunk cdr-thunk car-flag cdr-flag) self s) (let ((f #*forcible-print-magic)) (cond ((eq? f 'transparent) (^super pair print self s)) ((eq? f '#f) (format s "#[LAZY-CONS ~A ~A ~!]" (if car-flag car-thunk "?") (if cdr-flag cdr-thunk "?") self)) ((eq? f 'indicate) (format s "#L") (^super pair print self s)) (else (error "Unknow (FLUID FORCIBLE-PRINT-MAGIC) option ~S." f))))) ;;; eof oaklisp-1.3.7/src/world/list.oak000066400000000000000000000067171332762442600165750ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;(define-instance backwards-args-mixin type '() '()) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; handy list utilities ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (iota n) (iterate step ((i n)(l '())) (if (zero? i) l (step (- i 1) (cons i l))))) (define (iota0 n) (iterate step ((i (- n 1)) (l '())) (if (< i 0) l (step (- i 1) (cons i l))))) (define (splice inlist) ;this performs ((a)(b c)(d)) --> (a b c d) (iterate step ((in (reverse inlist)) (out '())) (if (not (null? in)) (step (cdr in) (append (car in) out)) out))) ;;;;;;;;;;;;;;;; (define-constant-instance list (mix-types oc-mixer (list backwards-args-mixin open-coded-mixin operation)) (lambda (n) (cons '(load-reg nil) (make list-type n '(reverse-cons)))) nil 1) (labels (((list-aux1 a) (list a)) ((list-aux2 a b) (list a b)) ((list-aux3 a b c) (list a b c)) ((list-aux4 a b c d) (list a b c d)) ((list-aux5 a b c d e) (list a b c d e))) (add-method (list (object) . rest) (cond ((= 0 (rest-length rest)) '()) ((= 1 (rest-length rest)) (list-aux1 . rest)) ((= 2 (rest-length rest)) (list-aux2 . rest)) ((= 3 (rest-length rest)) (list-aux3 . rest)) ((= 4 (rest-length rest)) (list-aux4 . rest)) ((= 5 (rest-length rest)) (list-aux5 . rest)) (else (listify-args identity . rest))))) ; listify-args now gets the arguments ; off the stack more cheaply than this older code ; ((list-aux-gen listsofar guy . rest) ; (if (zero? (rest-length rest)) ; (reverse! (cons guy listsofar)) ; (list-aux-gen (cons guy listsofar) . rest)))) ; (else (list-aux-gen '() . rest))))) ;;;;;;;;;;;;;;;; (define-constant-instance list* (mix-types oc-mixer (list backwards-args-mixin open-coded-mixin operation)) (lambda (n) (cond ((zero? n) (error "Attempt to open code LIST* with no args.")) (else (make list-type (- n 1) '(reverse-cons))))) nil 1) (labels (((list*-aux1 a) (list* a)) ((list*-aux2 a b) (list* a b)) ((list*-aux3 a b c) (list* a b c)) ((list*-aux-gen listsofar guy . rest) (if (zero? (rest-length rest)) (reverse!* listsofar guy) (list*-aux-gen (cons guy listsofar) . rest))) ((reverse!* l dot-part) (iterate aux ((old l) (new dot-part)) (cond (old (let ((o (cdr old))) (set! (cdr old) new) (aux o old))) (else new))))) (add-method (list* (object) one . rest) (cond ((= 0 (rest-length rest)) (list*-aux1 one . rest)) ((= 1 (rest-length rest)) (list*-aux2 one . rest)) ((= 2 (rest-length rest)) (list*-aux3 one . rest)) (else (list*-aux-gen '() one . rest))))) ;;; eof oaklisp-1.3.7/src/world/load-file.oak000066400000000000000000000103411332762442600174420ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; This defines the main interface for loading files, LOAD, which ;;; loads the most processed version of the file it can find, unless given ;;; an explicit extension. Can also be given an explicit locale as an ;;; optional second argument. (let* ((load-with-ext ;; Return file if found and loaded, #f or error if not found ;; depending on not-found-okay. (lambda (file ext locale not-found-okay) (let ((op (cond ((equal? ext ".oak") load-oak-file) ((equal? ext ".omac") load-omac-file) ;;((equal? ext ".ou") ...) ;;((equal? ext ".oc") ...) ((equal? ext ".oa") load-oa-file) (else (error "File type ~S unloadable.~%" ext))))) (if not-found-okay (catch-errors (error-opening-read) (op locale file) ext) (block (op locale file) ext))))) (load-aux (lambda (args) (destructure (file . args) args (let ((locale (cond ((null? args) #*current-locale) (else (when (cdr args) (cerror "Ignore the extra arguments." "Extra args to load: ~S." (cdr args))) (car args))))) (cond ((file-extension file) => (lambda (ext) (load-with-ext (file-base file) ext locale #f))) ;; Try lots of different filetypes. ((any? (lambda (ext) (load-with-ext file ext locale #t)) '(".oa" ".oak" ".omac")) => (lambda (ext) (format #t "~&Loaded ~A~A.~%" file ext))) (else (error "No loadable file ~S found.~%" file)))))))) (define (load file . args) (listify-args load-aux ((if (symbol? file) downcase identity) (#^string file)) . args))) ;;; These utility functions belong elsewhere: ;;; This includes the "." as part of the extension. (define (file-extension file) (let ((len (length file))) (iterate aux ((i (- len 1))) (if (= i -1) #f (let ((c (nth file i))) (cond ((eq? c #\.) (tail file i)) ((eq? c #\/) #f) (else (aux (- i 1))))))))) (define (file-base file) (cond ((file-extension file) => (lambda (ext) (head file (- (length file) (length ext))))) (else file))) ;;; (define (load-oa-file locale file) (load-code-segment locale (with-open-file (s (append file ".oa") in) (make-oa-list (read-oaf-list s))))) #|| (define (load-oa-file locale file) (load-code-segment locale (with-open-file (s (append (#^string file) ".oa") in) (let ((red (read s))) (if (and (pair? (car red)) (pair? (caar red))) red (make-oa-list red)))))) (define (load-oa-file locale file) (load-code-segment locale (let ((s (open-input-file (append (#^string file) ".oa")))) (block0 (read s) (close s))))) (define (load-oak-file locale file) (bind ((#*current-locale locale) (#*print-length 3) (#*print-level 2)) (dofile (append file ".oak") (lambda (expr) (format #t "~A...~%" expr) (eval expr locale))))) ||# (define (load-oak-file the-locale file-name) (let* ((raw-forms (read-file (append file-name ".oak"))) (sub-locale (make locale (list the-locale)))) (bind ((#*current-locale the-locale) (#*print-length 3) (#*print-level 2)) (dolist (raw-form raw-forms) (format #t "~A...~%" raw-form) (let ((expanded-form (bind ((#*current-locale sub-locale)) (expand-groveling sub-locale raw-form)))) (subeval expanded-form the-locale)))) 'loaded)) (define (load-omac-file locale file) (dofile (append file ".omac") (lambda (expr) (subeval expr locale)))) ;;; eof oaklisp-1.3.7/src/world/load-oaf.oak000066400000000000000000000102431332762442600172710ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang (define (make-oa-list oaf-list) (let ((sym-vec (#^simple-vector (car oaf-list)))) (labels (((rewrite-syms clause) (let ((car-clause (car clause))) (if (> car-clause (- 5 1)) (list (- car-clause 5) (cadr clause) (nth sym-vec (caddr clause))) clause)))) (map! (lambda (blk) (list (map! rewrite-syms (triplify! (car blk))) (cadr blk))) (cadr oaf-list))))) (define (make-oaf-list oa-list) (let* ((sym-hash (make-eq-hash-table)) (counter 0) (new-list (map (lambda (blk) (list (untriplify! (map! (lambda (clause) (let ((sym (caddr clause))) (if (symbol? sym) (let ((num (or (table-entry sym-hash sym) (block0 (set! (table-entry sym-hash sym) counter) (set! counter (1+ counter)))))) (list (+ 5 (car clause)) (cadr clause) num)) clause))) (car blk))) (cadr blk))) oa-list))) (list (map! car (sort (#^list-type sym-hash) (lambda (a b) (< (cdr a)(cdr b))))) new-list))) ; these functions reverse the order of the triples ; also, they are extremely side-effecting, so watch out. (define (untriplify! inlist) (iterate step ((in inlist) (out '())) (if in (step (cdr in) (let ((carin (car in))) (set! (cdr (cdr (cdr carin))) out) carin)) out))) (define (triplify! inlist) (iterate step ((in inlist) (out '())) (if in (let* ((cddrin (cdr (cdr in))) (nxtrip (cdr cddrin))) (step nxtrip (block (set! (cdr cddrin) nil) (cons in out)))) out))) (define (dumb-read-number stream) (let* ((the-char (peek-char stream)) (sign (if (eq? the-char #\-) (block (read-char stream) -1) 1))) (iterate next ((worknum 0)) (let* ((the-char (read-char stream)) (num-val (- (%character->fixnum the-char) (#^number #\0)))) (cond ((and (>= num-val 0) (<= num-val 10)) (next (+ (* worknum 10) num-val))) ((eq? the-char #\)) (unread-char stream the-char) (* worknum sign)) ((or (eq? the-char #\space) (eq? the-char #\tab) (eq? the-char #\newline) (nth standard-read-table the-char) 'whitespace) (* worknum sign)) (else (error "~C encountered by dumb-read-number." the-char))))))) ;;; This does what its name implies, going circularly through the list ;;; of functions. (define (read-list-using-functions stream function-list) (skip-whitespace stream) (unless (eq? #\( (read-char stream)) (error "stream ~a not positioned at a list" stream)) (iterate next ((worklist '())(funlist function-list)) (skip-whitespace stream) (let ((the-char (peek-char stream))) (cond ((eq? #\) the-char) (read-char stream) (reverse! worklist)) (else (next (cons ((car funlist) stream) worklist) (cond ((cdr funlist) => identity) (else function-list)))))))) (define (read-oaf-list stream) (read-list-using-functions stream (list read (lambda (stream) ;list of body clauses (read-list-using-functions stream (list (lambda (stream) ;one body clause (read-list-using-functions stream (list (lambda (stream) ;resolution part (read-list-using-functions stream (list dumb-read-number dumb-read-number read))) (lambda (stream) ;code part (read-list-using-functions stream (list dumb-read-number)))))))))))) oaklisp-1.3.7/src/world/locales.oak000066400000000000000000000103521332762442600172320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; Define locales (define-instance locale type '(variable-table frozen-symbols superiors macro-alist) (list object)) (add-method (initialize (locale variable-table frozen-symbols superiors macro-alist) self sups) (set! frozen-symbols '()) ;start out with nothing frozen here (set! variable-table (make-eq-hash-table)) (set! superiors sups) (set! macro-alist '()) self) (define-simple-print-method locale "Locale") (define-instance variable? settable-operation) (define-instance variable-here? settable-operation) (define-instance macro? settable-operation) (define-instance macro-here? settable-operation) (define-instance frozen? settable-operation) (define-instance frozen-here? settable-operation) (define-instance find-locale operation) (add-method (find-locale (locale superiors) self sym pred?) (if (pred? self sym) self (iterate aux ((locale-list superiors)) (if locale-list (or (find-locale (car locale-list) sym pred?) (aux (cdr locale-list))) nil)))) (add-method (variable? (locale) self sym) (let ((where (find-locale self sym variable-here?))) (if where (variable-here? where sym) nil))) (add-method ((setter variable?) (locale) self sym loci) (set! (variable-here? (or (find-locale self sym variable-here?) self) sym) loci)) (add-method (variable-here? (locale variable-table) self sym) (let ((x (present? variable-table sym))) (if x (cdr x) nil))) (add-method ((setter variable-here?) (locale variable-table) self sym loci) (cond ((null? loci) (set! (present? variable-table sym) nil)) (else (set! (present? variable-table sym) (if (eq? loci t) (%make-cell (make-undefined-variable-value sym)) loci))))) (add-method (macro? (locale superiors) self sym) ; (let ((loc (find-locale self sym macro-here?))) ; (if loc (macro-here? loc) nil)) (or (macro-here? self sym) (any? (lambda (loc) (macro? loc sym)) superiors)) ) (add-method ((setter macro?) (locale variable-table) self sym expander) (set! (macro-here? (or (find-locale self sym macro-here?) self) sym) expander)) (add-method (macro-here? (locale macro-alist) self sym) (let ((entry (assq sym macro-alist))) (if entry (cdr entry) nil))) (add-method ((setter macro-here?) (locale macro-alist) self sym expander) (when (variable? self sym) (warning "installing macro ~S in ~S where it is already a variable.~%" sym self)) (let ((entry (assq sym macro-alist))) (cond ((null? expander) (if entry (set! macro-alist (del! eq? entry macro-alist)) (warning "~S already isn't a macro in ~S.~%" sym self))) (entry (set! (cdr entry) expander)) (else (set! macro-alist (cons (cons sym expander) macro-alist))))) expander) (add-method (frozen? (locale) self sym) (frozen-here? (find-locale self sym variable-here?) sym)) (add-method ((setter frozen?) (locale) self sym new-phase) (set! (frozen-here? (find-locale self sym variable-here?) sym) new-phase)) (add-method (frozen-here? (locale frozen-symbols) self sym) (if (variable-here? self sym) (memq sym frozen-symbols) (error "Symbol ~A not installed in ~A so shouldn't be checked for FROZEN-HERE?." sym self))) (add-method ((setter frozen-here?) (locale frozen-symbols) self sym new-phase) (let ((old-phase (frozen-here? self sym))) (cond ((and new-phase (not old-phase)) (set! frozen-symbols (cons sym frozen-symbols))) ((and (not new-phase) old-phase) (set! frozen-symbols (delq sym frozen-symbols)))))) ;;; eof oaklisp-1.3.7/src/world/logops.oak000066400000000000000000000024111332762442600171100ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter (define (xor a b) (if a (not b) b)) (define (and* . args) (cond ((= (rest-length args) 0) t) (else (and*aux . args)))) (define (and*aux arg . args) (cond (arg (if (= (rest-length args) 0) arg (and*aux . args))) (else (consume-args nil . args)))) (define (or* . args) (cond ((= (rest-length args) 0) nil) (else (or*aux . args)))) (define (or*aux arg . args) (cond (arg (consume-args arg . args)) (else (if (= (rest-length args) 0) nil (or*aux . args))))) oaklisp-1.3.7/src/world/mac-code.oak000066400000000000000000000356411332762442600172700ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; handy list utilities ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (swap-car-with-nth inlist n) `(,(nth inlist n) ,@(subseq inlist 1 (- n 1)) ,(car inlist) ,@(tail inlist (+ n 1)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; generate code to copy args down before tail calls ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; plan-blt generates the sequence of swap,blast,and pop instructions ; that is used to copy the top of the stack down in tail recursive positions. ; (plan-blt 2 3) returns ((swap 2)(blast 4)(blast 2)), ; which converts (3 2 1 d d) to (3 2 1). (labels (((build-model old new) ;sends 2,3 to (3 2 1 d d) (reverse (append (map (lambda (d) 'd) (iota old)) (iota new)))) ((count-trash-on-top x) ; sends (d d 3 2 1 d) to (2 3 2 1 d) (iterate step ((count 0)(l x)) (if (or (null? l) (number? (car l))) (cons count l) (step (+ 1 count) (cdr l))))) ((plan-blt old new) (iterate step ((plan '())(model (build-model old new))) (cond ((= (length model) new) (reverse plan)) ((number? (car model)) (let* ((delta (- (length model) (car model))) (swapped (swap-car-with-nth model delta))) (if (number? (car swapped)) (step (cons `(swap ,delta) plan) swapped) (step (cons `(blast ,delta) plan) (cdr swapped))))) (else (let ((counted (count-trash-on-top model))) (step (cons `(pop ,(car counted)) plan) (cdr counted)))))))) (define (blt-stack n m) (cond ((zero? m) '()) ((zero? n) (list `(pop ,m))) ((> n 16) (plan-blt m n)) ;arguments reversed (else (append (make list-type (quotient m 16) `(blt-stk ,n 16)) (list `(blt-stk ,n ,(remainder m 16)))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; primitive continuation definition ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This supplies the continuation epilogue code for ;things like constants and variable references. (define-instance primitive-continuation operation) (define-instance nguys-to-pop operation) (define-instance pop-args operation) (define-instance pop-args-before-labels-jump operation) (set! #*barrier-node #f) (with-operations (number-of-args-to-pop) (add-method (number-of-args-to-pop (ast-contour-node) self) 0) (add-method (number-of-args-to-pop (ast-method-node arglist) self) (+ (length arglist) (if (and (contn-transparent? self) (not (eq? self #*barrier-node))) (number-of-args-to-pop (node-enclosing-contour self)) 0))) (add-method (number-of-args-to-pop (ast-labels-node) self) (if (and (contn-transparent? self) (not (eq? self #*barrier-node))) (number-of-args-to-pop (node-enclosing-contour self)) 0)) (add-method (nguys-to-pop (ast-node enclosing-contour) self) (number-of-args-to-pop enclosing-contour)) (add-method (pop-args (ast-node enclosing-contour) self n-to-blt) (blt-stack n-to-blt (number-of-args-to-pop enclosing-contour))) (add-method (pop-args-before-labels-jump (ast-node enclosing-contour) self n-to-blt stop-contour) (bind ((#*barrier-node stop-contour)) (blt-stack n-to-blt (number-of-args-to-pop enclosing-contour))))) (add-method (primitive-continuation (ast-node) self cont) (cond ((eq? cont 'next) '()) ((eq? cont 'tail) (append (pop-args self 1) (list '(return)))) (else `((branch ,cont))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; generate the code for variable references ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance compute-offset operation) (define-instance gen-access-code operation) (add-method (compute-offset (ast-variable-node var-type name) self the-map) (or (position-in-list name the-map) (error "CodeGen: can't find variable ~S in ~S map ~S" name var-type the-map))) ;;; Hey, Kevin, isn't the following routine a little inconsistent in the way ;;; it handles globals? I don't understand. ;;; Is it true that this is always called in LOAD mode now, since %SET has ;;; been flushed? (add-method (gen-access-code (ast-variable-node var-type name source-contour) self cont store?) (append (cond ((eq? var-type 'stack) `((,(if store? 'store-stk 'load-stk) ,(compute-offset self (node-stack-map self)) ,name))) ((eq? var-type 'evar) `((,(if store? 'store-env 'load-env) ;; Note the extra offset of 2 here: ,(+ 2 (compute-offset self (contn-envlist source-contour))) ,name))) ((eq? var-type 'ivar) `((,(if store? 'store-bp 'load-bp) ,(compute-offset self (methn-ivarmap source-contour)) ,name))) ((eq? var-type 'global) `((load-glo ,name))) (else (error "gen-access: Error in var-type for ~S" (list var-type name)))) (primitive-continuation self cont))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; the code generator ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; The gen-code operation takes two arguments, an ast node and a continuation, ; which may be one of three things: the symbol TAIL, the symbol NEXT, ; or a label, which can be any other symbol. (define-instance top-level-gen-code operation) (add-method (top-level-gen-code (ast-node) self) (block0 (list 'code '() (peephole-optimize (block0 (gen-code self 'tail) (print-sp 'code)))) (print-sp 'done))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance gen-code operation) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Definitions for the primitive forms (with-operations (nargs-prologue) (add-method (nargs-prologue (ast-method-node arglist rest-name) self) (if rest-name (let ((real-nargs (length (cdr arglist)))) (if (= 0 real-nargs) ;; The (POP 1) is here due to the new operation nargs discipline. (list `(pop 1) `(load-reg nargs)) (list `(check-nargs-gte ,real-nargs) `(load-imm ,real-nargs) `(load-reg nargs) `(subtract)))) (list `(check-nargs ,(length arglist))))) (add-method (gen-code (ast-method-node ivarmap status body arglist) self cont) (cond ((eq? status 'code) (append (list `(load-code (code ,ivarmap ,(append (nargs-prologue self) (gen-code body 'tail))))) (primitive-continuation self cont))) ((eq? status 'inline) (gen-code body cont)) (else `((,status is the wrong kind of method)))))) (labels (((how-to-load value name) (if name `(load-imm ,value ,name) `(load-imm ,value)))) (add-method (gen-code (ast-constant-node value name origin) self cont) (cond ((or (not #*compiling-a-file?) (eq? value #t) (null? value) (number? value) (symbol? value) (string? value) (char? value) (pair? value)) (list* (how-to-load value name) (primitive-continuation self cont))) ((eq? origin nichevo) (warning "~S should not be an inline constant.~%" value) (list* (how-to-load value name) (primitive-continuation self cont))) (else (gen-code origin cont))))) (add-method (gen-code (ast-variable-node) self cont) (gen-access-code self cont #f)) (add-method (gen-code (ast-set-node variable expression) self cont) (append (gen-code expression 'next) (gen-access-code variable cont #t))) (let ((gen-makloc-code (make operation))) (add-method (gen-makloc-code (ast-variable-node var-type name source-contour) self cont) (append (cond ((memq var-type '(stack evar global)) (error "CodeGen: the makloc node around ~S should have been removed by fold-contents" (list var-type name))) ((eq? var-type 'ivar) (list `(make-bp-loc ,(compute-offset self (methn-ivarmap source-contour)) ,name))) (else (error "Makloc: Error in var-type for ~S" (list var-type name)))) (primitive-continuation self cont))) (add-method (gen-code (ast-make-locative-node variable) self cont) (gen-makloc-code variable cont))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Definitions for the composite forms. (add-method (gen-code (ast-block-node body) self cont) (if (< (length body) 1) (error "CodeGen: Empty body in block.") (iterate step ((in body)(out '())) (if (= 1 (length in)) (append out (gen-code (car in) cont)) (step (cdr in) (splice (list out (gen-code (car in) 'next) (list '(pop 1))))))))) (add-method (gen-code (ast-if-node predicate consequent alternate) self cont) (let ((alt-label (gensym "ELSE")) (arm1-cont (if (eq? cont 'next) (gensym "ENDIF") cont))) (splice (list (gen-code predicate 'next) `((branch-nil ,alt-label)) (gen-code consequent arm1-cont) (list `(label ,alt-label)) (gen-code alternate cont) (if (eq? cont 'next) (list `(label ,arm1-cont)) '()))))) (add-method (gen-code (ast-labels-node gensymlist lambdalist body) self cont) (let ((end-cont (if (eq? cont 'next) (gensym "ENDLABELS") cont))) (bind ((#*barrier-node (if (eq? cont 'tail) #*barrier-node self))) (splice (list (if (eq? end-cont 'tail) '() (list `(push-cxt ,end-cont))) (gen-code body 'tail) (iterate step ((gen gensymlist)(lam lambdalist)(out '())) (if (null? gen) out (step (cdr gen) (cdr lam) (append (cons `(label ,(car gen)) (gen-code (car lam) 'tail)) out)))) (if (eq? cont 'next) (list `(label ,end-cont)) '())))))) ;; see catch.oak for an explanation of the following method. (add-method (gen-code (ast-catch-node expression) self cont) (let ((end-cont (if (eq? cont 'next) (gensym "ENDCATCH") cont))) (let* ((body-code (bind ((#*barrier-node (if (eq? cont 'tail) #*barrier-node (combn-op expression))) ;the LET lambda (#*filltag-offset (1+ (if (eq? cont 'tail) (nguys-to-pop self) 0)))) (gen-code expression 'tail)))) (splice (list (if (eq? end-cont 'tail) '() (list `(push-cxt ,end-cont))) body-code (if (eq? cont 'next) (list `(label ,end-cont)) '())))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Definitions for compiling combinations (with-operations (open-code label-code inline-code regular-code combo-op get-jump-info) (add-method (combo-op (ast-combination-node op rest-name) self) (cond ((not (eq? rest-name nichevo)) regular-code) ((and (is-a? op ast-constant-node) (is-a? (constn-value op) open-coded-mixin)) open-code) ((and (is-a? op ast-variable-node) (eq? 'label (varn-var-type op))) label-code) ((and (is-a? op ast-method-node) (eq? 'inline (methn-status op))) inline-code) ((is-a? op ast-method-node) (error "CodeGen: ~S is the wrong status for a car position method." (methn-status op))) (else regular-code))) (add-method (gen-code (ast-combination-node) self cont) ((combo-op self) self cont)) (add-method (get-jump-info (ast-labels-node labellist lambdalist gensymlist) self name) (let* ((the-lambda (rib-lookup labellist lambdalist name)) (the-target (rib-lookup labellist gensymlist name)) (nargs-required (length (methn-arglist the-lambda)))) (cons the-target nargs-required))) (add-method (label-code (ast-combination-node op args) self cont) (let* ((name (varn-name op)) (source-contour (varn-source-contour op)) (jump-info (get-jump-info source-contour name)) (the-target (car jump-info)) (nargs-required (cdr jump-info))) (if (eq? cont 'tail) (if (= (length args) nargs-required) `(,@(splice (map (lambda (x) (gen-code x 'next)) (reverse args))) ,@(pop-args-before-labels-jump self (length args) source-contour) (branch ,the-target)) (error "CodeGen: Wrong number of arguments to operation ~S" name)) (error "Compiler error: branch to ~S not tail recursive" the-target)))) (add-method (open-code (ast-combination-node op args) self cont) (let* ((n-args (length args)) (opval (constn-value op)) (desired-n-args (get-n-arguments opval)) (open-coder (copy (get-byte-code-list opval))) (bytes (if (list? open-coder) open-coder (open-coder n-args)))) (if (or (null? desired-n-args) (= n-args desired-n-args)) `(,@(splice (map (lambda (x) (gen-code x 'next)) (if (is-a? opval backwards-args-mixin) args (reverse args)))) ,@(if (eq? cont 'tail) (pop-args self n-args) '()) ,@(copy bytes) ,@(cond ((eq? cont 'next) '()) ((eq? cont 'tail) (list '(return))) (else `((branch ,cont))))) (error "CodeGen: Wrong number of arguments to operation ~S" opval)))) (add-method (inline-code (ast-combination-node op args) self cont) (let ((label? (not (memq cont '(next tail))))) (if (= (length args) (length (methn-arglist op))) (splice (list (splice (map (lambda (x) (gen-code x 'next)) (reverse args))) (gen-code op (if label? 'next cont)) (if (eq? cont 'tail) '() (blt-stack 1 (length args))) (if label? `((branch ,cont)) '()))) (error "CodeGen: Wrong number of arguments to inline lambda")))) (add-method (regular-code (ast-combination-node op args rest-name) self cont) (let* ((nmyargs (length args)) (totalmyargs (+ 1 nmyargs))) (splice (list (splice (map (lambda (x) (gen-code x 'next)) (reverse args))) (gen-code op 'next) (if (eq? rest-name nichevo) `((store-nargs ,nmyargs)) (splice (list (gen-code rest-name 'next) (if (= 0 nmyargs) '() (list `(load-imm ,nmyargs) '(plus))) (list `(store-reg nargs) `(pop 1))))) (if (eq? cont 'tail) (pop-args self totalmyargs) '()) (cond ((eq? cont 'tail) `((funcall-tail))) ((eq? cont 'next) `((funcall-cxt))) (else `((funcall-cxt-br ,cont))))))))) oaklisp-1.3.7/src/world/mac-comp-stuff.oak000066400000000000000000000071041332762442600204320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang and Barak A. Pearlmutter (define-instance get-ivar-list operation) (add-method (get-ivar-list (type ivar-list) self) ivar-list) (define-instance side-effect-free? operation) (add-method (side-effect-free? (object) self) #f) (add-method (side-effect-free? (foldable-mixin) self) #t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; set utility functions ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (subset? x y) (null? (setdifference x y))) (define-instance map-with-arg operation) (add-method (map-with-arg (operation) op l arg) (if (null? l) '() (cons (op (car l) arg) (map-with-arg op (cdr l) arg)))) (define-instance walk-with-arg operation) (add-method (walk-with-arg (operation) op l arg) (iterate step ((left l)) (when (not (null? left)) (op (car left) arg) (step (cdr left))))) (define (rib-lookup keys vals thing) (let ((pos (position-in-list thing keys))) (if pos (nth vals pos) (error "Can't find ~S in rib ~S" thing keys)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Things that must be set up in compiler locale. ;;; ;;; ;;; ;;; Perhaps this stuff should go into a seperate file that goes into ;;; ;;; compiler-locale. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-constant _%install-method-with-env (make-open-coded-operation (lambda (n) (if (not (= n 4)) (error "_%install-method-with-env takes 4 args, not ~A." n) (let ((l0517 (gensym "L-IM-")) (l0518 (gensym "L-IM-")) (l0519 (gensym "L-IM-")) (l0520 (gensym "L-IM-"))) `(;;(CHECK-NARGS 4) (LOAD-IMM 3) (LOAD-GLO %METHOD) (CONTENTS) (ALLOCATE) (LOAD-STK 3 CODE-BODY) (LOAD-STK 1 THE-METHOD) (STORE-SLOT 1) (POP 1) (LOAD-STK 4 ENV) (LOAD-STK 1 THE-METHOD) (STORE-SLOT 2) (POP 1) (LOAD-GLO OBJECT) (CONTENTS) (LOAD-STK 2 TYP) (EQ?) (BRANCH-NIL ,L0519) (LOAD-STK 2 OP) (LOAD-SLOT 1) (BRANCH ,L0520) (LABEL ,L0519) (LOAD-REG NIL) (LABEL ,L0520) (BRANCH-NIL ,L0517) (LOAD-STK 0 THE-METHOD) (LOAD-STK 3 OP) (STORE-SLOT 1) (BRANCH ,L0518) (LABEL ,L0517) (LOAD-STK 1 TYP) (LOAD-SLOT 7) (LOAD-STK 1 THE-METHOD) (LOAD-STK 4 OP) (CONS) (CONS) (LOAD-STK 2 TYP) (STORE-SLOT 7) (POP 1) (LOAD-REG NIL NIL) (LOAD-STK 3 OP) (STORE-SLOT 1) (LABEL ,L0518) (POP 3) (BLT-STK 1 2) ;;(RETURN) )))) nil 1)) ;(freeze-guys flat-compiler-locale ; '( _%install-method-with-env %make-closed-environment %make-cell)) oaklisp-1.3.7/src/world/mac-compiler-nodes.oak000066400000000000000000000210511332762442600212640ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; define the AST node types ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance ast-node type '(enclosing-contour stack-map) (list object)) (define-instance ast-constant-node type '(value name ;name is for documentation purposes origin) ;origin holds folded node (list ast-node)) (define-instance ast-if-node type '(predicate consequent alternate) (list ast-node)) (define-instance ast-set-node type '(variable expression) (list ast-node)) (define-instance ast-contour-node type '(localvars ;names added in this contour nojumplist ;localvars that are referenced except in car position closedlist ;localvars that are closed over environment ;lexically apparent external variables envlist) ;external variables that are closed over (list ast-node)) (define-instance ast-method-node type '(method-type ;type to add the method to op ;the operation status ;'method,'inline, or 'code inlabels? ;labels clauses are special ivarlist ;ivars declared ivarmap ;assumed layout of ivars in type arglist ;arguments declared heaplist ;args that must be moved to heap primitivep ;whether its the crude open coded kind body rest-name) (list ast-contour-node)) (define-instance ast-labels-node type '(labellist ;label names lambdalist ;this is a rib parallel to labellist gensymlist ;another rib body) ;we'll keep this here for now (list ast-contour-node)) (define-instance ast-make-locative-node type '(variable) (list ast-node)) (define-instance ast-block-node type '(body) (list ast-node)) (define-instance ast-variable-node type '(var-type name source-contour car-pos?) (list ast-node)) (define-instance ast-combination-node type '(op args tail-pos? rest-name) (list ast-node)) (define-instance ast-catch-node type '(expression) (list ast-node)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; set up accessors ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (create-setters ast-block-node blkn- body) (create-setters ast-constant-node constn- value name origin) (create-setters ast-node node- enclosing-contour) (create-setters ast-method-node methn- inlabels?) (create-accessors ast-node node- stack-map) (create-accessors ast-if-node ifn- predicate consequent alternate) (create-accessors ast-set-node setn- variable expression) (create-accessors ast-contour-node contn- localvars envlist closedlist nojumplist environment) (create-accessors ast-method-node methn- method-type op status ivarlist arglist heaplist ivarmap rest-name body) (create-accessors ast-labels-node labn- gensymlist labellist lambdalist body) (create-accessors ast-make-locative-node maklocn- variable) (create-accessors ast-variable-node varn- var-type name source-contour car-pos?) (create-accessors ast-combination-node combn- op args tail-pos? rest-name) (create-accessors ast-catch-node catchn- expression) (define-set-manager heap? ast-method-node heaplist) (define-set-manager evar? ast-contour-node envlist) (define-set-manager localvar? ast-contour-node localvars) (define-set-manager closed-over? ast-contour-node closedlist) (define-set-manager cant-jump? ast-contour-node nojumplist) (add-method (equal? (ast-constant-node value) self x) (equal? value x)) ;notice this function is not symmetric ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; debugging stuff ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;listify takes an AST and converts it to a list representation suitable for printing (define-instance listify operation) (add-method (listify (ast-node) self) '(astn)) (add-method (listify (ast-if-node predicate consequent alternate) self) (list 'ifn (listify predicate) (listify consequent) (listify alternate))) (add-method (listify (ast-constant-node value name) self) (if name (list 'constn value name) (list 'constn value))) (add-method (listify (ast-set-node variable expression) self) (list 'setn (listify variable) (listify expression))) (add-method (listify (ast-method-node method-type status op ivarlist arglist inlabels? primitivep heaplist ivarmap body) self) (list (if primitivep 'primethn 'methn) (if inlabels? (list 'inlabels status) status) `(type ,(listify method-type)) `(op ,(listify op)) `(ivars ,@ivarlist) `(args ,@arglist) `(heap ,@heaplist) `(env ,@(contn-envlist self)) `(loc ,@(contn-localvars self)) `(lex ,@(contn-environment self)) `(closed ,@(contn-closedlist self)) `(nojump ,@(contn-nojumplist self)) (listify body))) (add-method (listify (ast-labels-node labellist gensymlist lambdalist body) self) (list 'labn labellist gensymlist `(closed ,@(contn-closedlist self)) `(nojump ,@(contn-nojumplist self)) (map listify lambdalist) (listify body))) (add-method (listify (ast-contour-node localvars) self) (list 'contn (contn-transparent? self) localvars)) (add-method (listify (ast-make-locative-node variable) self) (list 'maklocn (listify variable))) (add-method (listify (ast-block-node body) self) `(blkn ,@(map listify body))) (add-method (listify (ast-variable-node var-type name) self) (list var-type name)) (add-method (listify (ast-combination-node op args tail-pos? rest-name) self) (let ((mylist `(,(if tail-pos? 'tailcombn 'combn) ,(listify op) ,@(map listify args)))) (if (eq? rest-name nichevo) mylist (list* 'restcall (listify rest-name) mylist)))) (add-method (listify (ast-catch-node expression) self) (list 'catchn (listify expression))) (add-method (print (ast-node) self stream) (print (listify self) stream)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; define methods for walking the AST ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (local-syntax add-map-walk (lambda (form) (let ((typ (second form)) (vars (cddr form)) (arg (genvar)) (op (genvar))) (let ((fixedvars (map (lambda (x) (if (atom? x) x (car x))) vars))) `(block (add-method (walk-ast (,typ . ,fixedvars) self ,op) ,@(map (lambda (x) (if (atom? x) `(,op ,x) `(for-each ,op ,(car x)))) vars) ,@(if vars '() '(nil))) (add-method (map-ast! (,typ . ,fixedvars) self ,op) ,@(map (lambda (x) (if (atom? x) `(set! ,x (,op ,x)) `(set! ,(car x) (map ,op ,(car x))))) vars) self) (add-method (walk-ast-with-arg (,typ . ,fixedvars) self ,op ,arg) ,@(map (lambda (x) (if (atom? x) `(,op ,x ,arg) `(walk-with-arg ,op ,(car x) ,arg))) vars) ,@(if vars '() '(nil))) (add-method (map-ast-with-arg! (,typ . ,fixedvars) self ,op ,arg) ,@(map (lambda (x) (if (atom? x) `(set! ,x (,op ,x ,arg)) `(set! ,(car x) (map-with-arg ,op ,(car x) ,arg)))) vars) self)))))) (define-instance walk-ast operation) (define-instance map-ast! operation) (define-instance walk-ast-with-arg operation) (define-instance map-ast-with-arg! operation) (add-map-walk ast-if-node predicate consequent alternate) (add-map-walk ast-node) (add-map-walk ast-constant-node origin) (add-map-walk ast-set-node variable expression) (add-map-walk ast-variable-node) (add-map-walk ast-method-node op method-type body) (add-map-walk ast-labels-node body (lambdalist)) (add-map-walk ast-make-locative-node variable) (add-map-walk ast-block-node (body)) (add-map-walk ast-combination-node op (args) rest-name) (add-map-walk ast-catch-node expression) oaklisp-1.3.7/src/world/mac-compiler1.oak000066400000000000000000000174451332762442600202530ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; build the AST ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This looks at a piece of code and determines its type. (define-instance node-type-to-build operation) ;;; Bound to #t while parsing the user code. (set! #*worry-about-constants #f) (add-method (node-type-to-build (object) form) (if #*worry-about-constants (cerror "Consider it a constant." "~A found in evaluated position." form)) ast-constant-node) (add-method (node-type-to-build (self-evaluatory-mixin) form) ast-constant-node) (add-method (node-type-to-build (symbol) form) ast-variable-node) (add-method (node-type-to-build (pair) form) (let ((kar (car form))) (cond ((eq? kar 'quote) ast-constant-node) ((eq? kar '%if) ast-if-node) ((eq? kar '%set) ast-set-node) ((eq? kar '%catch) ast-catch-node) ((eq? kar 'rest-length) ast-variable-node) ((eq? kar '%add-method) ast-method-node) ((eq? kar '_%add-method) ast-method-node) ((eq? kar '%make-locative) ast-make-locative-node) ((eq? kar '%block) ast-block-node) ((eq? kar '%labels) ast-labels-node) (else ast-combination-node)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This returns the parse tree for a piece of code. (define (code->ast form) (if (is-a? form ast-node) form (make (node-type-to-build form) form))) ;this handy variant fills in the enclosing-contour slots ;of code to be inserted in the tree. (define (addedcode->ast form model-node) (let ((new-ast (code->ast form))) (stash-enclosing-contour new-ast (node-enclosing-contour model-node)) new-ast)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The following initialize methods do the work of walking the code ;and building the AST. (add-method (initialize (ast-node enclosing-contour stack-map) self) (set! enclosing-contour nil) (set! stack-map nil) self) (add-method (initialize (ast-if-node predicate consequent alternate) self form) (cond ((and (eq? (car form) '%if) (= (length form) 4)) (set! predicate (code->ast (second form))) (set! consequent (code->ast (third form))) (set! alternate (code->ast (fourth form)))) (else (error "Error parsing ~S as a %IF." form))) (^super ast-node initialize self)) (add-method (initialize (ast-constant-node value name origin) self form) (set! name nil) (set! origin nichevo) (cond ((or (is-a? form self-evaluatory-mixin) (atom? form)) (set! value form)) ((and (eq? (car form) 'quote) (pair? (cdr form))) (set! value (cadr form))) (else (error "Error parsing ~S as a constant." form))) (^super ast-node initialize self)) (add-method (initialize (ast-set-node variable expression) self form) (cond ((and (eq? (car form) '%set) (= (length form) 3) (symbol? (second form))) (set! variable (code->ast (second form))) (set! expression (code->ast (third form)))) (else (error "Error parsing ~S as a %SET." form))) (^super ast-node initialize self)) (add-method (initialize (ast-variable-node name var-type source-contour car-pos?) self form) (cond ((symbol? form) (set! var-type '()) (set! source-contour '()) (set! car-pos? '()) (set! name form)) ((eq? (first form) 'rest-length) (set! var-type '()) (set! source-contour '()) (set! car-pos? '()) (set! name (second form))) (else (error "Error parsing ~S as a variable." form))) (^super ast-node initialize self)) (add-method (initialize (ast-contour-node localvars nojumplist closedlist environment envlist) self locals form) (set! #*contour-nodes? #t) (set! localvars locals) (set! nojumplist nil) (set! closedlist nil) (set! environment nil) (set! envlist nil) (if (not (every? symbol? localvars)) (error "Variables names must be symbols in ~S." form)) (^super ast-node initialize self)) (define (genlabel/1 x) (gensym "LABEL")) (add-method (initialize (ast-labels-node labellist gensymlist lambdalist body) self form) (set! #*labels-count (1+ #*labels-count)) (cond ((and (eq? (car form) '%labels) (= (length form) 3) (list? (second form))) (set! labellist (map first (second form))) (set! gensymlist (map genlabel/1 labellist)) (set! lambdalist (map (lambda (x) (let ((the-code (code->ast (second x)))) (if (is-a? the-code ast-method-node) the-code (error "~S is not a lambda" (second x))))) (second form))) (set! body (code->ast (third form)))) (else (error "Error parsing ~S as a %LABELS." form))) (^super ast-contour-node initialize self labellist form)) (add-method (initialize (ast-method-node method-type status op primitivep inlabels? ivarlist ivarmap arglist heaplist rest-name body) self form) (destructure* (kind-o-method (inop (typ . ivars) . args) bod) form (unless (or (eq? kind-o-method '%add-method) (eq? kind-o-method '_%add-method)) (error "Error parsing ~S as a %METHOD." form)) (set! status 'method) (set! inlabels? nil) (set! ivarlist ivars) (set! ivarmap nil) (set! heaplist nil) (set! primitivep (eq? kind-o-method '_%add-method)) (set! rest-name (improper-list? args)) ;; rest-name goes on front of arglist: (set! arglist (if rest-name (cons rest-name (make-proper args)) args)) (set! op (code->ast inop)) ;see below (set! method-type (code->ast typ)) (set! body (code->ast bod)) (^super ast-contour-node initialize self (union ivarlist arglist) form))) (add-method (initialize (ast-make-locative-node variable) self form) (cond ((and (eq? (car form) '%make-locative) (= (length form) 2) (symbol? (second form))) (set! variable (code->ast (second form)))) (else (error "Error parsing ~S as a %MAKE-LOCATIVE." form))) (^super ast-node initialize self)) (add-method (initialize (ast-block-node body) self form) (if (not (eq? (car form) '%block)) (error "Error parsing ~S as a BLOCK." form)) (cond ((> (length form) 1) (set! body (map code->ast (cdr form)))) ((= (length form) 1) (set! body (list (code->ast '()))))) (^super ast-node initialize self)) (add-method (initialize (ast-combination-node op args tail-pos? rest-name) self form) (set! tail-pos? nil) (set! rest-name (improper-list? form)) (let ((proper-form (if rest-name (make-proper form) form))) (cond ((> (length proper-form) 0) (set! op (code->ast (car proper-form))) (set! args (map code->ast (cdr proper-form)))) (else (error "Error parsing ~S as a combination." form)))) (if rest-name (set! rest-name (code->ast rest-name)) (set! rest-name nichevo)) (^super ast-node initialize self)) (add-method (initialize (ast-catch-node expression) self form) (cond ((and (eq? (car form) '%catch) (= (length form) 2)) (set! expression (code->ast (second form)))) (else (error "Error parsing ~S as a %CATCH." form))) (^super ast-node initialize self)) ;;; eof oaklisp-1.3.7/src/world/mac-compiler2.oak000066400000000000000000000352101332762442600202420ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; top-level compiler sequencer ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance compile operation) (define-instance expand-compile operation) (labels (((annotate-the-tree astree) (block (when #*contour-nodes? (mark-inline-lambdas astree) (if (> #*labels-count 0) (mark-tail-nodes astree))) (top-level-resolve-variables astree)))) (add-method (expand-compile (locale) self form) (compile self (block0 (expand-groveling self form) (print-sp 'mac)))) (add-method (compile (locale) self form) (bind ((#*labels-count 0) (#*contour-nodes? #f) (#*barrier-node #f) (#*worry-about-constants #f)) (let ((astree (bind ((#*worry-about-constants #t)) (code->ast form)))) (print-sp 'tree) (annotate-the-tree astree) (print-sp 'ann) (iterate step ((pre-count #*labels-count)) (print-sp #*labels-count) (when (> #*labels-count 0) (set! astree (rewrite-labels-v astree)) (when (not (= pre-count #*labels-count)) (annotate-the-tree astree) (print-sp 'ann) (step #*labels-count)))) (set! astree (fold-constants-v astree self)) (print-sp 'fold) (when #*contour-nodes? (set! astree (insert-method-maker-v astree))) (print-sp 'insert) (set! astree (heapify-variables-v astree)) (print-sp 'heap) (when #*contour-nodes? (stash-stack-map astree nil)) (print-sp 'stack) (set! dog2 astree) astree)))) ; NAMING CONVENTION: ;All of the AST-walking operations defined below perform side effects on ;the tree. If an operation actually deletes and inserts nodes, then the value ;it returns is important, so its name should end in "-v". ;If the side effects are only on the internal state of the ;nodes, then the name should have no suffix. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; identify inline lambdas ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This step marks methods generated from lambdas in the car position ;by changing their status from 'method to 'inline. ;Labels nodes already have a status of 'inline. (define-instance mark-inline-lambdas operation) (with-operations (you-are-in-car-pos) (add-method (mark-inline-lambdas (ast-node) self) (walk-ast self mark-inline-lambdas)) (add-method (mark-inline-lambdas (ast-variable-node car-pos?) self) (set! car-pos? nil)) ;erase previous analysis (add-method (mark-inline-lambdas (ast-method-node status inlabels?) self) (set! status 'method) ;erase previous analysis (set! inlabels? nil) ;erase previous analysis (walk-ast self mark-inline-lambdas)) (add-method (mark-inline-lambdas (ast-combination-node op) self) (walk-ast self mark-inline-lambdas) (you-are-in-car-pos op)) (add-method (mark-inline-lambdas (ast-labels-node lambdalist) self) (walk-ast self mark-inline-lambdas) ;; These guys must be marked as inline, (for-each you-are-in-car-pos lambdalist) ;; and inlabels. (walk-with-arg (setter methn-inlabels?) lambdalist t)) (add-method (you-are-in-car-pos (ast-node) self) t) ;no-op (add-method (you-are-in-car-pos (ast-variable-node car-pos?) self) (set! car-pos? t)) (add-method (you-are-in-car-pos (ast-method-node status rest-name) self) (if (and (am-I-a-lambda? self) (not rest-name)) (set! status 'inline))) ) #| ;old versions of the above. (add-method (you-are-in-car-pos (ast-method-node status op ivarlist method-type) self) (if (and (null? ivarlist) ;No ivars. (and (is-a? op ast-combination-node) (is-a? (combn-op op) ast-variable-node) (equal? (varn-name (combn-op op)) 'make) ;Operation is made at (= 1 (length (combn-args op))) ;installation time. (is-a? (car (combn-args op)) ast-variable-node) (equal? (varn-name (car (combn-args op))) 'operation)) (is-a? method-type ast-variable-node) ;Method is for object. (equal? 'object (varn-name method-type))) ; (set! status 'inline))) (add-method (you-are-in-car-pos (ast-method-node status op ivarlist method-type) self) (if (and (null? ivarlist) ;No ivars. (and (is-a? op ast-combination-node) (equal? (combn-op op) make);Operation is made at (= 1 (length (combn-args op)));installation time. (equal? (car (combn-args op)) operation)) (is-a? method-type ast-constant-node);Method is for object. (eq? object (constn-value method-type))) (set! status 'inline))) |# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Define contour-transparency, which is the ability to search on up ;through the contour for names, as opposed to closing over them. (define-instance contn-transparent? operation) (add-method (contn-transparent? (ast-contour-node) self) nil) (add-method (contn-transparent? (ast-method-node status) self) (eq? status 'inline)) (add-method (contn-transparent? (ast-labels-node) self) t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; identify combinations in tail-recursive spots relative to labels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance mark-tail-nodes operation) (with-operations (you-are-in-tail-pos) (add-method (mark-tail-nodes (ast-node) self) (walk-ast self mark-tail-nodes)) (add-method (mark-tail-nodes (ast-labels-node) self) (walk-ast self mark-tail-nodes) (you-are-in-tail-pos self)) (add-method (mark-tail-nodes (ast-combination-node tail-pos?) self) (set! tail-pos? nil) ;erase previous analysis (walk-ast self mark-tail-nodes)) (add-method (you-are-in-tail-pos (ast-node) self) nil) ;no-op (add-method (you-are-in-tail-pos (ast-if-node consequent alternate) self) (you-are-in-tail-pos consequent) (you-are-in-tail-pos alternate)) (add-method (you-are-in-tail-pos (ast-labels-node) self) (walk-ast self you-are-in-tail-pos)) (add-method (you-are-in-tail-pos (ast-block-node body) self) (you-are-in-tail-pos (last body))) (add-method (you-are-in-tail-pos (ast-combination-node op tail-pos?) self) (set! tail-pos? t) (if (is-a? op ast-method-node) (you-are-in-tail-pos op))) ;so that LET will work. (add-method (you-are-in-tail-pos (ast-method-node status body) self) (if (eq? status 'inline) (you-are-in-tail-pos body)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; resolve lexical variables ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;sequencer for variable resolution (define-instance top-level-resolve-variables operation) (define-instance resolve-variables operation) (add-method (top-level-resolve-variables (ast-node) self) (let ((dummy-contour (make ast-contour-node nil nil))) (resolve-variables self '() dummy-contour))) (add-method (resolve-variables (ast-node) self outerenv outermethod) (stash-environment self outerenv) (stash-enclosing-contour self outermethod) (classify-variables self) (propagate-evars self)) (set! dummy-contour (make ast-contour-node nil nil)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The environment slot of a contour node contains a list of all ;external lexical variables that are visible in that method. (define-instance stash-environment operation) (add-method (stash-environment (ast-node) self outer-env) (walk-ast-with-arg self stash-environment outer-env)) (add-method (stash-environment (ast-contour-node localvars environment) self outer-env) (set! environment outer-env) (append localvars outer-env)) (add-method (stash-environment (ast-method-node method-type op body) self outer-env) (let ((new-env (^super ast-contour-node stash-environment self outer-env))) (stash-environment method-type outer-env) (stash-environment op outer-env) (stash-environment body new-env))) (add-method (stash-environment (ast-labels-node lambdalist body) self outer-env) (let ((new-env (^super ast-contour-node stash-environment self outer-env))) (map-with-arg stash-environment lambdalist new-env) (stash-environment body new-env))) #| (with-operations (proceed) (add-method (stash-environment (ast-contour-node localvars environment) self outer-env) (set! environment outer-env) (proceed self outer-env (append localvars outer-env))) (add-method (proceed (ast-method-node method-type op body) self outer-env new-env) (stash-environment method-type outer-env) (stash-environment op outer-env) (stash-environment body new-env)) (add-method (proceed (ast-labels-node lambdalist body) self outer-env new-env) (map-with-arg stash-environment lambdalist new-env) (stash-environment body new-env))) |# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The enclosing-contour slot of a node provides a pointer back to the contour ;that contains the node. This facilitates references to the various ;variable lists in the method. The outermost nodes point back ;to a dummy contour that has no arguments. (define-instance stash-enclosing-contour operation) (with-operations (proceed) (add-method (stash-enclosing-contour (ast-node enclosing-contour) self enc-cont) (set! enclosing-contour enc-cont) (proceed self enc-cont)) (add-method (proceed (ast-node) self enc-cont) (walk-ast-with-arg self stash-enclosing-contour enc-cont)) (add-method (proceed (ast-method-node method-type op body) self enc-cont) (stash-enclosing-contour method-type enc-cont) (stash-enclosing-contour op enc-cont) (stash-enclosing-contour body self)) (add-method (proceed (ast-labels-node lambdalist body) self enc-cont) (map-with-arg stash-enclosing-contour lambdalist self) (stash-enclosing-contour body self))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The classify-variables operation figures out where variables live, ;e.g. on the stack, in the closed-environment, or wherever. (define-instance classify-variables operation) (add-method (classify-variables (ast-node) self) (walk-ast self classify-variables)) (add-method (classify-variables (ast-variable-node var-type name source-contour) self) (iterate step ((contour (node-enclosing-contour self))) (cond ((memq name (contn-localvars contour)) (set! source-contour contour) (set! var-type (cond ((is-a? contour ast-labels-node) 'label) ((memq name (methn-arglist contour)) ;it's a method 'stack) (else 'ivar)))) ((contn-transparent? contour) (step (node-enclosing-contour contour))) ((memq name (contn-environment contour)) (set! source-contour contour) (set! var-type 'evar)) (else (set! var-type 'global))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This operation notices evars and records them in the envlist ;field of their enclosing methods. ;If a method cannot supply a variable closed over by an ;inner method, then the variable must be closed over by ;the outer method too. ;This also fills in the nojumplist field of contours. (define-instance propagate-evars operation) (add-method (propagate-evars (ast-node) self) (walk-ast self propagate-evars)) (add-method (propagate-evars (ast-variable-node var-type name source-contour car-pos?) self) (cond ((eq? var-type 'evar) (set! (evar? source-contour name) t)) ((and (not car-pos?) (eq? var-type 'label)) (set! (cant-jump? source-contour name) t)))) (add-method (propagate-evars (ast-contour-node envlist closedlist nojumplist) self) (set! envlist '()) (set! closedlist '()) (set! nojumplist '()) (walk-ast self propagate-evars) (for-each (lambda (x) (iterate step ((contour (node-enclosing-contour self))) (cond ((localvar? contour x) (set! (closed-over? contour x) t)) ((contn-transparent? contour) (step (node-enclosing-contour contour))) (else (set! (closed-over? contour x) t) (set! (evar? contour x) t))))) envlist) (set! nojumplist (append nojumplist closedlist))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; rewrite non-jumpable labels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;a labels can be compiled using jumps if every reference to a label ;is a function call in a tail recursive position. (define-instance rewrite-labels-v operation) (with-operations (look-for-non-tail-call your-out-of-place) (add-method (rewrite-labels-v (ast-node) self) (map-ast! self rewrite-labels-v)) (add-method (rewrite-labels-v (ast-labels-node labellist lambdalist body) self) (map-ast! self rewrite-labels-v) (look-for-non-tail-call self) (if (or (contn-nojumplist self) (any? methn-rest-name lambdalist)) (block (set! #*labels-count (- #*labels-count 1)) (code->ast `((%add-method ((',make ',operation) (',object) . ,labellist) ;see below (%block ,@(map2 (lambda (lab lam) `(%set ,lab ,lam)) labellist lambdalist) ,body)) ,@(map (lambda (x) nil) ;should really be undefined value labellist)))) self)) (add-method (look-for-non-tail-call (ast-node) self) (walk-ast self look-for-non-tail-call)) (add-method (look-for-non-tail-call (ast-combination-node op tail-pos?) self) (walk-ast self look-for-non-tail-call) (if (not tail-pos?) (your-out-of-place op))) (add-method (your-out-of-place (ast-node) self) nil) (add-method (your-out-of-place (ast-variable-node var-type name source-contour) self) (if (eq? var-type 'label) (set! (cant-jump? source-contour name) t)))) ;;was `((%add-method ((make operation) (object) . ,labellist) oaklisp-1.3.7/src/world/mac-compiler3.oak000066400000000000000000000351231332762442600202460ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; do some constant folding when appropriate ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;some of these use eq? get-type instead of is-a? (define-instance fold-constants-v operation) (add-method (fold-constants-v (ast-node) self locale) (map-ast-with-arg! self fold-constants-v locale)) (add-method (fold-constants-v (ast-variable-node var-type name) self locale) ; (format #t "folding ... ~a ~a ~%" self locale) (if (and (eq? var-type 'global) (variable? locale name) (frozen? locale name)) (let ((new-node (addedcode->ast `(quote ,(contents (variable? locale name))) self))) (set! (constn-name new-node) name) (set! (constn-origin new-node) self) new-node) self)) (let ((constant-pred (lambda (x) (eq? ast-constant-node (get-type x))))) (add-method (fold-constants-v (ast-combination-node op args rest-name) self locale) (map-ast-with-arg! self fold-constants-v locale) (cond ((and (every? constant-pred (cons op args)) (side-effect-free? (constn-value op)) (eq? nichevo rest-name)) (catch-errors (general-error (lambda (err) (format standard-error "~&Error applying ~S to ~S while constant folding ignored.~%" (constn-value op) (map constn-value args)) (report err standard-error) self) (lambda (result) (let ((new-node (addedcode->ast `(quote ,result) self))) (set! (constn-name new-node) 'folded) (set! (constn-origin new-node) self) new-node))) (apply (constn-value op) (map constn-value args)))) (else self)))) (add-method (fold-constants-v (ast-if-node predicate consequent alternate) self locale) (map-ast-with-arg! self fold-constants-v locale) (if (eq? ast-constant-node (get-type predicate)) (if (constn-value predicate) consequent alternate) self)) (add-method (fold-constants-v (ast-method-node ivarlist ivarmap primitivep method-type status arglist body) self locale) (map-ast-with-arg! self fold-constants-v locale) (set! ivarmap '()) (when ivarlist (cond ((ivar-heuristic method-type ivarlist locale) => (lambda (heurmap) (set! ivarmap heurmap))) (primitivep (error "Couldn't generate heuristic map for ~S~%" (listify self))) (else (set! ivarmap ivarlist)))) (cond ((and (eq? 'inline status) (= 1 (length arglist)) (eq? ast-variable-node (get-type body)) (eq? self (varn-source-contour body))) (let ((new-node (addedcode->ast `(quote ,identity) self))) (set! (constn-name new-node) 'identity) new-node)) (else self))) ;The next two methods insure that no frozen substitutions ;will occur in l-value positions. (add-method (fold-constants-v (ast-set-node expression) self locale) (set! expression (fold-constants-v expression locale)) self) (add-method (fold-constants-v (ast-make-locative-node) self locale) self) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; attempt to determine the ivar map ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The true layout of the ivars in the type for which a method is being compiled ;cannot be determined until load-time. However, the following heuristic ;guesses the layout and the rest of the compilation proceeds accordingly. ;The code object which is produced has a slot which contains the presumed ;ivar map. When the loader calls the %install-method routine, the guess ;is compared with the correct map, and the code is patched if necessary. (define-instance ivar-heuristic operation) (add-method (ivar-heuristic (object) self ivarlist locale) nil) (add-method (ivar-heuristic (ast-variable-node var-type name) self ivarlist locale) (and (eq? var-type 'global) (let ((v (variable? locale name))) (and v (ivar-heuristic (contents v) ivarlist locale))))) (add-method (ivar-heuristic (ast-constant-node value) self ivarlist locale) (ivar-heuristic value ivarlist locale)) (add-method (ivar-heuristic (type ivar-list) self ivarlist locale) (if (subset? ivarlist ivar-list) (munch-together ivarlist ivar-list) #f)) (define (munch-together ivarlist ivar-list) ;; ivarlist is the requested one, ivar-list the real one. (cond ((null? ivar-list) '()) ((memq (car ivar-list) ivarlist) (cons (car ivar-list) (munch-together ivarlist (cdr ivar-list)))) (else (let ((x (munch-together ivarlist (cdr ivar-list)))) (if (not (null? x)) (cons #f x) '()))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (guarded-value-probe thing required-type accessor value) (and (is-a? thing required-type) (eq? value (accessor thing)))) ;This predicate only works after constant folding has occurred, or if ;lambda is macro expanded with make, operation, etc., inserted as constants. (define-instance am-I-a-lambda? operation) (add-method (am-I-a-lambda? (ast-method-node op ivarlist method-type) self) (and (null? ivarlist) (and (is-a? op ast-combination-node) (guarded-value-probe (combn-op op) ast-constant-node constn-value make) (= 1 (length (combn-args op))) (guarded-value-probe (car (combn-args op)) ast-constant-node constn-value operation)) (guarded-value-probe method-type ast-constant-node constn-value object))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; add code to generate closures ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This operation inserts the code that makes closures and methods ;at run time. The method node is left in the tree, but ;its status is downgraded from 'method to 'code. ;After this point in the compilation, it is no longer necessary to ;mess around with the op and method-type fields in method nodes, ;so for efficiency, they are erased. ;the following open-codable operations must be defined in flat-compiler-locale ; _%install-method-with-env, %make-closed-environment, %make-cell (define-instance insert-method-maker-v operation) (add-method (insert-method-maker-v (ast-node) self) (map-ast! self insert-method-maker-v)) (add-method (insert-method-maker-v (ast-method-node status op method-type body primitivep) self) (let ((envlist (contn-envlist self))) (map-ast! self insert-method-maker-v) (cond ((eq? status 'method) (set! status 'code) (let* ((lambda-p (am-I-a-lambda? self)) (wrapping (if primitivep (addedcode->ast `(,_%install-method-with-env ,method-type ,op ,self ,(if envlist `(,%make-closed-environment ,@(map (lambda (x) `(%make-locative ,x)) envlist)) `%empty-environment)) self) (addedcode->ast (splice (list (list (if lambda-p ; (if envlist '%install-lambda-with-env '%install-lambda) %make-lambda-with-env ; (if envlist '%install-method-with-env '%install-method) '%install-method-with-env )) (if lambda-p '() (list method-type)) (if lambda-p '() (list op)) (list self) (if envlist (list `(,%make-closed-environment ,@(map (lambda (x) `(%make-locative ,x)) envlist))) (list `%empty-environment) ; '() ))) self)))) (classify-variables wrapping) (set! op nichevo) ;these have been plugged (set! method-type nichevo) ;into the wrapping wrapping)) (else (set! op nichevo) (set! method-type nichevo) self)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; compile heap variables ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;sequencer for heap variable operations (define-instance heapify-variables-v operation) (add-method (heapify-variables-v (ast-node) astree) (determine-heap-vars astree) (set! astree (indirect-to-heap-v astree)) (set! astree (fold-contents-v astree)) (insert-heap-prologue astree) astree) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Stack variables must be moved to the heap if they are closed ;over or locatives are made to them. This operation records ;in the heaplist field of a method which of its arguments must ;be moved to the heap. Checking for %MAKE-LOCATIVEs suffices ;to find closed-over variables, since the closure-building code ;already inserted generates locatives to such variables. (define-instance determine-heap-vars operation) (with-operations (you-are-being-located) (add-method (determine-heap-vars (ast-node) self) (walk-ast self determine-heap-vars)) (add-method (determine-heap-vars (ast-method-node heaplist) self) (set! heaplist '()) (walk-ast self determine-heap-vars)) (add-method (determine-heap-vars (ast-make-locative-node variable) self) (you-are-being-located variable)) (add-method (you-are-being-located (ast-variable-node name var-type source-contour) self) (if (eq? var-type 'stack) (set! (heap? source-contour name) t)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This operation replaces references to environment, heap, and ;global variables with indirect references. (define-instance indirect-to-heap-v operation) (add-method (indirect-to-heap-v (ast-node ) self) (map-ast! self indirect-to-heap-v)) (add-method (indirect-to-heap-v (ast-variable-node var-type name source-contour) self) (if (or (eq? var-type 'evar) (eq? var-type 'global) (and (eq? var-type 'stack) (heap? source-contour name))) (addedcode->ast (list contents self) self) self)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This operation folds (%set (contents x) y) to ((setter contents) x y) ;and (%make-locative (contents x)) to x. ;This is necessary because indirect-to-heap-v inserts indirections ;after the macro expansion phase. ;;; Hey, Kevin, since %SET is no longer in the language, could this pass ;;; be flushed? (define-instance fold-contents-v operation) (add-method (fold-contents-v (ast-node) self) (map-ast! self fold-contents-v)) (labels (((contents-node? node) (and (is-a? node ast-combination-node) (is-a? (combn-op node) ast-constant-node) (eq? contents (constn-value (combn-op node)))))) (add-method (fold-contents-v (ast-set-node variable expression) self) (map-ast! self fold-contents-v) (if (contents-node? variable) (addedcode->ast (list (setter contents) (car (combn-args variable)) expression) self) self)) (add-method (fold-contents-v (ast-make-locative-node variable) self) (map-ast! self fold-contents-v) (if (contents-node? variable) (car (combn-args variable)) self))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This operation adds to a method the prologue code ;for moving arguments from the stack to the heap. (define-instance insert-heap-prologue operation) (add-method (insert-heap-prologue (ast-node) self) (walk-ast self insert-heap-prologue)) (add-method (insert-heap-prologue (ast-method-node heaplist body) self) (walk-ast self insert-heap-prologue) (when heaplist (if (not (is-a? body ast-block-node)) (set! body (addedcode->ast `(%block ,body) body))) (let ((prologue (map (lambda (var) (addedcode->ast `(%set ,var (,%make-cell ,var)) body)) heaplist))) (for-each classify-variables prologue) (set! (blkn-body body) (append prologue (blkn-body body)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; determine the stack map at every node ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; The stack-map slot of a node contains a map of the stack at the ;;; moment the code for that node executes. These maps have the ;;; format '(a b c 0 0 d e f), where a is the variable on the top of ;;; the stack, and the zeros represent anonymous junk from the point ;;; of view of the node. ;;; Note: the following code assumes that every form leaves exactly ;;; one result on the stack. (define-instance stash-stack-map operation) (with-operations (proceed) (add-method (stash-stack-map (ast-node stack-map) self outer-map) (set! stack-map outer-map) (proceed self outer-map)) (add-method (proceed (ast-node stack-map) self outer-map) (walk-ast-with-arg self stash-stack-map outer-map)) (add-method (proceed (ast-method-node arglist body status inlabels?) self outer-map) ;beware hack: if it's a real inline lambda , (a b)+(0 0 x y)->(a b x y) ; but if it's in a labels, (a b)+(x y)->(a b x y) (let ((newmap (if (eq? status 'inline) (append arglist (if inlabels? outer-map (tail outer-map (length arglist)))) arglist))) (stash-stack-map body newmap))) (add-method (proceed (ast-set-node variable expression) self outer-map) (stash-stack-map expression outer-map) (stash-stack-map variable (cons 0 outer-map))) (add-method (proceed (ast-combination-node op args rest-name) self outer-map) (let ((backwards? (and (is-a? op ast-constant-node) (is-a? (constn-value op) open-coded-mixin) (is-a? (constn-value op) backwards-args-mixin) (eq? rest-name nichevo)))) (iterate step ((stack-map outer-map) (arglist (if backwards? args (reverse args)))) (cond ((null? arglist) (stash-stack-map op stack-map) (or (eq? rest-name nichevo) (stash-stack-map rest-name (cons 0 stack-map)))) (else (stash-stack-map (car arglist) stack-map) (step (cons 0 stack-map) (cdr arglist)))))))) (set! nichevo (make ast-node)) oaklisp-1.3.7/src/world/macros0.oak000066400000000000000000000173711332762442600171640ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang and Barak A. Pearlmutter ;;; This file goes in the cold load. It gets macros that absolutely must ;;; be in the cold load, or we'd get too mad. (define-syntax (make-locative place) (cond ((symbol? place) `(%make-locative ,place)) (else (let ((place (expand-groveling #*current-locale place))) (cond ((symbol? place) `(%make-locative ,place)) (else `((locater ,(car place)) ,@(cdr place)))))))) (define-syntax set (define-syntax set! (lambda (form) (destructure* (#t place value) form (labels ((normal (lambda (place) `((setter contents) (make-locative ,place) ,value)))) (if (symbol? place) (normal place) (let ((place (expand-groveling #*current-locale place))) (if (symbol? place) (normal place) `((setter ,(car place)) ,@(cdr place) ,value))))))))) (define-syntax (or . clauses) (if (null? clauses) ''#f (if (null? (cdr clauses)) (car clauses) (let ((var (genvar))) `(let ((,var ,(car clauses))) (if ,var ,var (or ,@(cdr clauses)))))))) (define-syntax (and . clauses) (cond ((null? clauses) 't) ((null? (cdr clauses)) (car clauses)) (else `(if ,(car clauses) (and ,@(cdr clauses)) '#f)))) (define-syntax if (lambda (form) (destructure** form ((#t test then-form) `(%if ,test ,then-form if-undefined-value)) ((#t test then-form else-form) `(%if ,test ,then-form ,else-form))))) ;;; Fancy COND that hacks =>'s. (define-syntax cond (lambda (form) (destructure** form ((#t) `cond-undefined-value) ((#t (guard)) guard) ; tail recurse ((#t (guard) . clauses) `(or ,guard (cond ,@clauses))) ((#t (guard '=> op) . clauses) (let ((v (genvar))) `(let ((,v ,guard)) (if ,v (,op ,v) (cond ,@clauses))))) ((#t (guard . body) . clauses) `(if ,guard (block ,@body) (cond ,@clauses)))))) (let* ((make-add-method-expander (lambda (what) (lambda (form) (destructure* (#t (op . cdr-info-part) . body) form (let* ((bit (and cdr-info-part (pair? cdr-info-part) (list? (car cdr-info-part)))) (type-info (if bit (car cdr-info-part) ;; This hack makes (ADD-METHOD (X Y) ...) ;; put # in the .oa file. `(',object))) (args (if bit (cdr cdr-info-part) cdr-info-part)) (typ (car type-info)) (ivars (cdr type-info))) `(,what (,op (,typ ,@ivars) ,@args) (block ,@body))))))) (regular-expander (make-add-method-expander '%add-method))) (define-syntax native-add-method regular-expander) (define-syntax add-method regular-expander) (define-syntax _add-method (make-add-method-expander '_%add-method))) (define-syntax (lambda varlist . body) (let ((improper-part (improper-list? varlist))) (cond ((if improper-part (or (not (every? symbol? (make-proper varlist))) (not (symbol? improper-part))) (not (every? symbol? varlist))) (error "Malformed formal parameter list ~S." varlist)) (else `(add-method ((',make ',operation) ,@varlist) ,@body))))) #| (let ((f (lambda (form) (destructure* (#t rawclauses . body) form `(%labels ,(map (lambda (clause) (if (symbol? (car clause)) clause (destructure* ((var . args) . body) clause `(,var (lambda ,args ,@body))))) rawclauses) (block ,@body)))))) (define-syntax labels f) (define-syntax letrec f)) |# (let ((f (lambda (form) (destructure* (#t raw-clauses . body) form (let* ((canonical-clauses (map (lambda (clause) (if (symbol? (car clause)) clause (destructure* ((var . args) . body) clause `(,var (lambda ,args ,@body))))) raw-clauses)) (label-list (map first canonical-clauses)) (value-list (map second canonical-clauses)) (expanded-value-list (map (lambda (form) (expand-groveling #*current-locale form)) value-list))) (if (any? (lambda (x) (or (not (list? x)) (null? x) (not (eq? '%add-method (car x))))) expanded-value-list) `(let ,(map (lambda (lab) (list lab ''())) label-list) ,@(map (lambda (lab val) `(set! ,lab ,val)) label-list expanded-value-list) ,@body) `(%labels ,(map list label-list expanded-value-list) (block ,@body)) )))))) (define-syntax labels f) (define-syntax letrec f)) (define-syntax (let clauses . body) ;; For R3RS compatibility, make the LET into an ITERATE if it ;; starts with a symbol. (cond ((symbol? clauses) `(iterate ,clauses . ,body)) (else (dolist (clause clauses) (when (cddr clause) (cerror "Ignore it and proceed." "malformed clause ~S." clause))) `((lambda ,(map-and-reverse car clauses) ,@body) ,@(map-and-reverse cadr clauses))))) (define-syntax (iterate label clauses . body) (cond ((not (symbol? label)) (error "Illegal syntax in ITERATE; ~S must be a symbol." label)) (else `(labels (((,label ,@(map car clauses)) ,@body)) (,label ,@(map cadr clauses)))))) ;;;;;;;;;;;;;;;;; (define-syntax (the-runtime the-var) `(contents (identity (make-locative ,the-var)))) (define-syntax (fluid x) `(%fluid ',x)) ;(define-syntax (bind clauses . body) ; (let ((place1 (genvar)) (place2 (genvar))) ; `(let* ((,place1 (make-locative fluid-binding-list)) ; (,place2 (contents ,place1))) ; ,(if (null? clauses) ; 'nil ; `(set! (contents ,place1) ; (list* ,@(map (lambda (clause) ; (destructure* (('fluid var) val) clause ; `(cons ',var ,val))) ; clauses) ; ,place2))) ; (block0 (block ,@body) ; (set! (contents ,place1) ,place2))))) (define-syntax (bind clauses . body) (let ((old-binding-list (genvar))) `(let ((,old-binding-list (get-current-fluid-bindings))) ,(if (null? clauses) 'nil `(set-current-fluid-bindings (list* ,@(map (lambda (clause) (destructure* (('fluid var) val) clause `(cons ',var ,val))) clauses) ,old-binding-list))) (block0 (block ,@body) (set-current-fluid-bindings ,old-binding-list))))) (define-syntax (block0 form0 . body) (let ((v (genvar))) `(let ((,v ,form0)) ,@body ,v))) (define-syntax (block . body) `(%block ,@body)) ;;; DOLIST, again just like in Common Lisp, except that the variable isn't ;;; bound when the (optional) result form is evaluated. (define-syntax (dolist (var l . exit-body) . body) (let ((itt-var (genvar)) (v-label (genvar))) `(labels (( (,v-label ,itt-var) (if (null? ,itt-var) (block ,@exit-body) (let ((,var (car ,itt-var))) ,@body (,v-label (cdr ,itt-var)))) )) (,v-label ,l)))) (define-syntax (dolist-count (var l vari . exit-body) . body) (let ((itt-var (genvar)) (v-label (genvar))) `(labels (( (,v-label ,itt-var ,vari) (if (not (null? ,itt-var)) (let ((,var (car ,itt-var))) ,@body (,v-label (cdr ,itt-var) (+ 1 ,vari))) (block ,@exit-body)) )) (,v-label ,l 0)))) ;;; eof oaklisp-1.3.7/src/world/macros1.oak000066400000000000000000000170001332762442600171520ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; macros (first chunk) ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-syntax (comment . x) ''comment) (define-syntax (let* clauses . body) (if (null? clauses) `(block ,@body) `(let (,(car clauses)) (let* ,(cdr clauses) ,@body)))) (define-syntax define (lambda (form) (destructure** form ;; This clause is for when you go (DEFINE (fluid FOO) 'BAR). ((#t ('fluid var) val) `(set! ,@(cdr form))) ((#t ('fluid var) . #t) (error "Malformed expression ~S." form)) ((#t (var . arglist) . rhstuff) `(set! ,var (lambda ,arglist ,@rhstuff))) ((#t var val) `((setter contents) (make-locative ,var) ,val))))) ; When compiling a file (using compile-file or load-oak-file), ; macro expansion occurs in a sub-locale that is augmented with ; the local syntax of that file, and so #*current-locale is temporarily ; rebound to the sub-locale. It is bound to the actual current locale ; during the load phase. ; ; When evaluation occurs as the result of an ordinary call to eval, ; like at the behest of the read-eval-print-loop, this split does not ; occur, so the following three forms are equivalent. (define-syntax (define-syntax sym def) (cond ((pair? sym) (let ((v (genvar))) `(define-syntax ,(car sym) (lambda (,v) (destructure* (#t . ,(cdr sym)) ,v ,def))))) (else ;; Load time: `(set! (macro-here? #*current-locale ',sym) ,def)))) (define-syntax (local-syntax sym def) (cond ((pair? sym) (let ((v (genvar))) `(local-syntax ,(car sym) (lambda (,v) (destructure* (#t ,@(cdr sym)) ,v ,def))))) (else ;; Compile time: (set! (macro-here? #*current-locale sym) (eval def #*current-locale)) ''local-syntax))) (define-syntax (define-local-syntax sym def) (cond ((pair? sym) (let ((v (genvar))) `(define-local-syntax ,(car sym) (lambda (,v) (destructure* (#t ,@(cdr sym)) ,v ,def))))) (else ;; Compile time: (set! (macro-here? #*current-locale sym) (eval def #*current-locale)) ;; Load time: `(set! (macro-here? #*current-locale ',sym) ,def)))) ;;; (define-syntax (define-instance loc typ . args) (let ((t1 (genvar)) (t2 (genvar))) `(let ((,t1 (make-locative ,loc)) (,t2 ,typ)) (if (eq? (get-type (contents ,t1)) ,t2) (contents ,t1) (set! (contents ,t1) (make ,t2 ,@args)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Parallel assignment. Similar to the ZetaLisp form with the ;;; analagous name. For example, (pset (a b) (b c) (c a)) is a ;;; typical use, as is (pset ( (car x) (cdr x) ) ( (cdr x) (car x) )). ;;; The tricky cases are like (pset (a 6) ((car a) 5)). ;;; ;;; Maybe this should be optimized to not make a locative when the ;;; location is a simple variable. But not for global variables, ;;; which is hard. (define-syntax (pset . clauses) (let ((locvars (map genvar/1 clauses)) (valvars (map genvar/1 clauses))) (when (any? (map null? (map cddr clauses))) (error "Malformed PSET clause within ~S." `(pset ,@clauses))) `((lambda ,locvars ((lambda ,valvars ,@(map (lambda (locvar valvar) `(set! (contents ,locvar) ,valvar)) locvars valvars)) ,@(map cadr clauses))) ,@(map (lambda (clause) `(make-locative ,(car clause))) clauses)))) ;;; DOTIMES, just like in Common Lisp (define-syntax (dotimes (var limit . exit-body) . body) (let ((exit-form (and exit-body (destructure* (a) exit-body a))) (v-limit (genvar)) (v-label (genvar))) `(let ((,v-limit ,limit)) (labels (( (,v-label ,var) (cond ((< ,var ,v-limit) ,@body (,v-label (+ ,var 1))) (else ,exit-form)))) (,v-label 0))))) ;;; DO, just like in Common Lisp and R3RS. (define-syntax (do clauses (test . exit-body) . body) (let ((clauses (map (lambda (c) (destructure** c ((var init) `(,var ,init ,var)) ((var init iter) c) (otherwise (error "Malformed DO clause ~S." c)))) clauses)) (aux (genvar))) `(iterate ,aux ,(map list (map car clauses) (map cadr clauses)) (cond (,test ,@exit-body) (else ,@body (,aux ,@(map caddr clauses))))))) (define-syntax (when test . body) `(if ,test (block ,@body) when-undefined-value)) (define-syntax (unless test . body) `(if (not ,test) (block ,@body) unless-undefined-value)) (define-syntax (while test . body) (let ((v (genvar))) `(iterate ,v () (if ,test (block ,@body (,v)) while-undefined-value)))) (define-syntax (select-type selector . clauses) (let ((tv (genvar))) `(let ((,tv (get-type ,selector))) (cond ,@(map (lambda (clause) (destructure** clause (('otherwise . body) `(else ,@body)) ((types . body) `((or ,@(map (lambda (ty) `(subtype? ,tv ,ty)) types)) ,@body)))) clauses))))) (define-syntax (fselect-type selector . clauses) (labels (((aux normal-clauses otherwise-clause v expr) (let ((tv (genvar)) (lab (genvar))) `(iterate ,lab ((,v ,expr)) (let ((,tv (get-type ,v))) (cond ,@(map (lambda (clause) (destructure* (types . body) clause `((or ,@(map (lambda (ty) `(subtype? ,tv ,ty)) types)) ,@body))) normal-clauses) ;; Check if the thing we got is forcible; if so ;; force it and restart the case. ((subtype? ,tv forcible) (,lab (force ,v))) ,@(if otherwise-clause (destructure* ('otherwise . body) otherwise-clause `((else ,@body))) '()))))))) (labels (((aux2 v expr) (if (null? clauses) (aux clauses #f v expr) (let ((lc (last clauses))) (if (eq? (car lc) 'otherwise) (aux (subseq clauses 0 (- (length clauses) 1)) lc v expr) (aux clauses #f v expr)))))) (if (symbol? selector) (aux2 selector selector) (destructure* (v expr) selector (aux2 v expr)))))) (define-syntax (eselect-type selector . clauses) `(select-type ,selector ,@clauses (otherwise (error "Inappropriate type.~%")))) (define-syntax (efselect-type selector . clauses) `(fselect-type ,selector ,@clauses (otherwise (error "Inappropriate type.~%")))) (define-syntax (case key . clauses) (let ((keyvar (genvar))) `(let ((,keyvar ,key)) (cond ,@(map (lambda (clause) (destructure** clause (('else . body) clause) (('otherwise . body) clause) ((things . body) `((or ,@(map (lambda (th) ;; Some things can be compared with ;; EQ? while others require EQV?. `(,(if (or (fixnum? th) (not (number? th))) 'eq? 'eqv?) ',th ,keyvar)) things)) ,@body)))) clauses))))) ;;; eof oaklisp-1.3.7/src/world/macros2.oak000066400000000000000000000134561332762442600171660ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; macros (second chunk) ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-syntax (create-accessors typ prefix . vars) `(block ,@(map (lambda (x) (let ((pre-x (#^symbol (append (#^string prefix) (#^string x))))) `(block (set! ,pre-x (make operation)) (add-method (,pre-x (,typ ,x) self) ,x)))) vars))) (define-syntax (create-setters typ prefix . vars) `(block ,@(map (lambda (x) (let ((pre-x (#^symbol (append (#^string prefix) (#^string x))))) `(block (set! ,pre-x (make settable-operation)) (add-method (,pre-x (,typ ,x) self) ,x) (add-method ((setter ,pre-x) (,typ ,x) self val) (set! ,x val))))) vars))) (define-syntax (create-locaters typ prefix . vars) (let ((the-type (genvar))) `(let ((,the-type ,typ)) ,@(map (lambda (x) (let ((pre-x (#^symbol (append (#^string prefix) (#^string x))))) `(block (set! ,pre-x (make locatable-operation)) (add-method (,pre-x (,the-type ,x) self) ,x) (add-method ((locater ,pre-x) (,the-type ,x) self) (make-locative ,x)) (add-method ((setter ,pre-x) (,the-type ,x) self val) (set! ,x val))))) vars)))) (define-syntax (with-operations names . body) `(let ,(map (lambda (x) `(,x (make operation))) names) ,@body)) ;This makes things like frozen-here? by doing things like ;(define-set-manager frozen-here? locale frozen-symbols) (define-syntax (define-set-manager pred typ ivar) (let ((element (genvar)) (newstatus (genvar))) `(block (define-instance ,pred settable-operation) (add-method (,pred (,typ ,ivar) self ,element) (memq ,element ,ivar)) (add-method ((setter ,pred) (,typ ,ivar) self ,element ,newstatus) (if ,newstatus (if (not (memq ,element ,ivar)) (set! ,ivar (cons ,element ,ivar))) (set! ,ivar (delq ,element ,ivar))) ,newstatus)))) (define-syntax (push location expr) (if (symbol? location) `(set! ,location (cons ,expr ,location)) `(let ((loc (make-locative ,location))) (set! (contents loc) (cons ,expr (contents loc)))))) (define-syntax (pop location) (if nil;; (symbol? location), but can't check if it's a stack var... `(prog0 (car location) (set! location (cdr location))) `(let* ((loc (make-locative ,location)) (val (contents loc))) (set! (contents loc) (cdr val)) (car val)))) (define-syntax (swap loc1 loc2) `(let ((l1 (make-locative ,loc1)) (l2 (make-locative ,loc2))) (let ((v1 (contents l1))) (set! (contents l1) (contents l2)) (set! (contents l2) v1)))) (let ((option-set-alist '( ((in) . open-input-file) ((out) . open-output-file) ((append) . open-output-file-append) ((out ugly) . open-output-file-ugly) ((append ugly) . open-output-file-append-ugly) ))) (define-syntax (with-open-file (var file . options) . body) `(let ((,var (,(cdr (ass setequal? options option-set-alist)) ,file))) (wind-protect () (block ,@body) (close ,var))))) (define-syntax (with-input-from-string (var str) . body) `(let ((,var (make string-input-stream ,str))) ,@body)) (define-syntax (modify-location place proc) (labels ((normal (lambda (place) `((setter contents) (make-locative ,place) (,proc ,place))))) (if (symbol? place) (normal place) (let ((place (expand-groveling #*current-locale place))) (if (symbol? place) (normal place) (let ((varlist (map (lambda (x) (genvar)) place))) `(let ,(map list varlist place) (set! ,varlist (,proc ,varlist))))))))) ;;; Mutant BLOCK that captures nested DEFINE forms and mutates into ;;; a big LABELS form. ;;; Implementation: skim the DEFINEs off the top, separating the ;;; lambda's from the non-lambdas. Outer LET binds the non-lambda's ;;; to their external values. Then a LABELS sets up the lambda ones. ;;; Then destructuve assignments give all the non-lambda ones their ;;; new values. (define-syntax (mit-block . body) (iterate aux ((body body) (rvdefs '()) (rldefs '())) (destructure** body (( ('define (func . args) . def) . body) (aux body rvdefs (cons `(,func (lambda ,args ,@def)) rldefs))) (( ('define func ('lambda args . def)) . body) (aux body rvdefs (cons `(,func (lambda ,args ,@def)) rldefs))) (( ('define var val) . body) (aux body (cons `(,var ,val) rvdefs) rldefs)) (( ('define . a) . b) (error "Malformed definition ~S before ~S." `(define ,@a) b)) (otherwise (let* ((inner `(%block ,@(map (lambda (vdef) `(set! ,@vdef)) (reverse rvdefs)) ,@body)) (mid (if (null? rldefs) inner `(labels ,rldefs ,inner))) (outer (if (null? rvdefs) mid `(let ,(map (lambda (vc) `(,(car vc) (make undefined ',(car vc)))) rvdefs) ,mid)))) outer))))) ;;; eof oaklisp-1.3.7/src/world/make-locales.oak000066400000000000000000000025111332762442600201430ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;; currently, the locale structure looks like this: ;; ;; SYSTEM . . . OAKLISP ;; / \ ;; COMPILER USER ;; ;; ;; ;; system-locale gets filled in from the boot world by patch-locales.oak. ;; oaklisp-locale will be filled with stuff exported from system-locale. (define-instance system-locale locale '()) (define-instance compiler-locale locale (list system-locale)) (define-instance oaklisp-locale locale '()) (define-instance user-locale locale (list oaklisp-locale)) ;;; eof oaklisp-1.3.7/src/world/make-makefile.oak000066400000000000000000000054171332762442600203060ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1992 Barak A. Pearlmutter & Kevin J. Lang (define (make-makefile name) (with-open-file (outfile name out) (let* ((aller (lambda (x) (format outfile " ~A.oa" (downcase (#^string x))))) (aller1 (lambda (x) (if (not (memq x between-files)) (aller x))))) (format outfile "# This included makefile data is automatically~%") (format outfile "# generated by make-makefile.oak, and should not~%") (format outfile "# normally be edited by hand. It can be regenerated~%") (format outfile "# with 'make Makefile-vars'.~%") (format outfile "~%") (format outfile "COLDFILES =") (for-each aller between-files) (for-each aller1 all-the-layers) (format outfile "~%") (format outfile "COLDFILESNONGEN =") (for-each aller between-files) (for-each aller1 (remove all-the-layers 'system-version)) (format outfile "~%") (format outfile "COLDFILESD =") (for-each aller all-the-layers) (format outfile "~%") (format outfile "MISCFILES =") (for-each aller misc-files) (format outfile "~%") (format outfile "COMPFILES =") (for-each aller compiler-files) (format outfile "~%") (format outfile "RNRSFILES =") (for-each aller scheme-files) (format outfile "~%") (format outfile "TOOLFILES = tool.oa~%") (format outfile "FILESFILES = files.oa~%") (format outfile "MAKEFILES = make-makefile.oa~%") (format outfile "~%") (format outfile "# These are gravy. The first two are our standard~%") (format outfile "# benchmarks. The others are neat.~%") (format outfile "~%") (format outfile "GRAVY = tak.oak compile-bench.oak prolog.oak prolog-examples.oak multiproc-tests.oak random.oak~%") (format outfile "~%") (format outfile "# Special rules for the compiler's source~%") (format outfile "~%") (for-each (lambda (f) (format outfile "~a.oa " (downcase (#^string f)))) compiler-files) (format outfile ": OAKLOCALE=--locale compiler-locale~%"))) name) oaklisp-1.3.7/src/world/mapping.oak000066400000000000000000000451031332762442600172450ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Define some mapping functions and stuff: ;; ;;; These guys are generic; see definitions in sequences.oak. (define-instance head locatable-operation) (define-instance tail locatable-operation) (define-instance last locatable-operation) (define-instance last-pair operation) (add-method (last (pair) self) (car (last-pair self))) (add-method ((locater nth) (pair) self n) (iterate aux ((self self) (n n)) (cond ((zero? n) (make-locative (car self))) ((negative? n) (error "Negative index to (LOCATER NTH).")) (else (aux (cdr self) (- n 1)))))) (add-method ((setter nth) (pair) self n new-value) (set! (contents (make-locative (nth self n))) new-value)) (add-method (nth (pair) self n) (iterate aux ((self self) (n n)) (cond ((zero? n) (car self)) ((negative? n) (error "Negative index to (LOCATER NTH).")) (else (aux (cdr self) (- n 1)))))) (add-method ((locater tail) (pair) self n) (cond ((< n 1) (error "Illegal index to LOCATER TAIL of a list.")) ((= n 1) (make-locative (cdr self))) (else (make-locative (tail (cdr self) (- n 1)))))) (add-method ((setter tail) (pair) self n new-value) (set! (contents (make-locative (tail self n))) new-value)) (add-method (tail (list-type) self n) (iterate aux ((self self) (n n)) (cond ((zero? n) self) (else (aux (cdr self) (- n 1)))))) (add-method ((locater last) (pair) self) (make-locative (car (last-pair self)))) (add-method (last-pair (pair) self) (cond ((pair? (cdr self)) (last-pair (cdr self))) (else self))) (add-method ((setter length) (pair) self new-len) (set! (tail self new-len) nil) new-len) ;;; How to copy lists: ;;; NOTE This is not optimal. We could use make to make an empty list and ;;; then fill it with an iterate, avoiding all these funcalls. (add-method (copy (pair) self) (cons (car self) (copy (cdr self)))) (add-method (copy (null-type) self) nil) (add-method (copy (object) self) self) ;;; EQUAL? (add-method (equal? (pair) x y) (or (eq? x y) (and (pair? y) (equal? (car x) (car y)) (equal? (cdr x) (cdr y))))) (add-method (equal? (object) x y) (eq? x y)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance map operation) (define-instance map1 operation) (define-instance map2 operation) (define-instance map3 operation) (define-instance map4 operation) (define-instance map5 operation) (define-instance general-map operation) (define-instance mapcdr operation) (define-instance for-each operation) (define-instance for-each1 operation) (define-instance for-each2 operation) (define-instance for-each3 operation) (define-instance for-each4 operation) (define-instance for-each5 operation) (define-instance general-for-each operation) (define-instance for-each-cdr operation) (define-instance map! operation) (add-method (mapcdr (operation) op l) (cond ((null? l) '()) (else (cons (op l) (mapcdr op (cdr l)))))) (add-method (map (operation) op l . args) ((cond ((= 0 (rest-length args)) map1) ((= 1 (rest-length args)) map2) ((= 2 (rest-length args)) map3) ((= 3 (rest-length args)) map4) ((= 4 (rest-length args)) map5) (else general-map)) op l . args)) (add-method (map1 (operation) op l) (cond ((null? l) '()) (else (let ((x (op (car l)))) (cons x (map1 op (cdr l))))))) (add-method (map2 (operation) op l1 l2) (cond ((null? l1) '()) (else (let ((x (op (car l1) (car l2)))) (cons x (map2 op (cdr l1) (cdr l2))))))) (add-method (map3 (operation) op l1 l2 l3) (cond ((null? l1) '()) (else (let ((x (op (car l1) (car l2) (car l3)))) (cons x (map3 op (cdr l1) (cdr l2) (cdr l3))))))) (add-method (map4 (operation) op l1 l2 l3 l4) (cond ((null? l1) '()) (else (let ((x (op (car l1) (car l2) (car l3) (car l4)))) (cons x (map4 op (cdr l1) (cdr l2) (cdr l3) (cdr l4))))))) (add-method (map5 (operation) op l1 l2 l3 l4 l5) (cond ((null? l1) '()) (else (let ((x (op (car l1) (car l2) (car l3) (car l4) (car l5)))) (cons x (map5 op (cdr l1) (cdr l2) (cdr l3) (cdr l4) (cdr l5))))))) (labels (((aux args) (destructure (op . args) args (aux1 op args))) ((aux1 op list-of-lists) (cond ((null? (car list-of-lists)) '()) (else (cons (apply op (map car list-of-lists)) (aux1 op (map cdr list-of-lists))))))) (add-method (general-map (operation) op . lists) (listify-args aux op . lists))) (define-instance map-and-reverse operation) (define-instance map-and-reverse1 operation) (define-instance map-and-reverse2 operation) (define-instance map-and-reverse3 operation) (define-instance map-and-reverse4 operation) (define-instance map-and-reverse5 operation) (define-instance general-map-and-reverse operation) (add-method (map-and-reverse (operation) op l . args) ((cond ((= 0 (rest-length args)) map-and-reverse1) ((= 1 (rest-length args)) map-and-reverse2) ((= 2 (rest-length args)) map-and-reverse3) ((= 3 (rest-length args)) map-and-reverse4) ((= 4 (rest-length args)) map-and-reverse5) (else general-map-and-reverse)) op '() l . args)) (add-method (map-and-reverse1 (operation) op a l) (cond ((null? l) a) (else (map-and-reverse1 op (cons (op (car l)) a) (cdr l))))) (add-method (map-and-reverse2 (operation) op a l1 l2) (cond ((null? l1) a) (else (map-and-reverse2 op (cons (op (car l1) (car l2)) a) (cdr l1) (cdr l2))))) (add-method (map-and-reverse3 (operation) op a l1 l2 l3) (cond ((null? l1) a) (else (map-and-reverse3 op (cons (op (car l1) (car l2) (car l3)) a) (cdr l1) (cdr l2) (cdr l3))))) (add-method (map-and-reverse4 (operation) op a l1 l2 l3 l4) (cond ((null? l1) a) (else (map-and-reverse4 op (cons (op (car l1) (car l2) (car l3) (car l4)) a) (cdr l1) (cdr l2) (cdr l3) (cdr l4))))) (add-method (map-and-reverse5 (operation) op a l1 l2 l3 l4 l5) (cond ((null? l1) a) (else (map-and-reverse5 op (cons (op (car l1) (car l2) (car l3) (car l4) (car l5)) a) (cdr l1) (cdr l2) (cdr l3) (cdr l4) (cdr l5))))) (labels (((aux args) (destructure (op a . args) args (aux1 op a args))) ((aux1 op a list-of-lists) (cond ((null? (car list-of-lists)) a) (else (aux1 op (cons (apply op (map-and-reverse car list-of-lists)) a) (map cdr list-of-lists)))))) (add-method (general-map-and-reverse (operation) op a . lists) (listify-args aux op a . lists))) (add-method (for-each (operation) op l . args) ((cond ((= 0 (rest-length args)) for-each1) ((= 1 (rest-length args)) for-each2) ((= 2 (rest-length args)) for-each3) ((= 3 (rest-length args)) for-each4) ((= 4 (rest-length args)) for-each5) (else general-for-each)) op l . args)) (add-method (for-each1 (operation) op l) (if l (block (op (car l)) (for-each1 op (cdr l))))) (add-method (for-each2 (operation) op l1 l2) (if l1 (block (op (car l1) (car l2)) (for-each2 op (cdr l1) (cdr l2))))) (add-method (for-each3 (operation) op l1 l2 l3) (if l1 (block (op (car l1) (car l2) (car l3)) (for-each3 op (cdr l1) (cdr l2) (cdr l3))))) (add-method (for-each4 (operation) op l1 l2 l3 l4) (if l1 (block (op (car l1) (car l2) (car l3) (car l4)) (for-each4 op (cdr l1) (cdr l2) (cdr l3) (cdr l4))))) (add-method (for-each5 (operation) op l1 l2 l3 l4 l5) (if l1 (block (op (car l1) (car l2) (car l3) (car l4) (car l5)) (for-each5 op (cdr l1) (cdr l2) (cdr l3) (cdr l4) (cdr l5))))) (add-method (for-each-cdr (operation) op l) (if l (block (op l) (for-each-cdr op (cdr l))))) (add-method (map! (operation) op l) (cond ((null? l) '()) (else (set! (car l) (op (car l))) (map! op (cdr l)) l))) (define-instance every? operation) (add-method (every? (operation) pred? l) (iterate aux ((l l)) (if (null? l) #t (let ((cdrl (cdr l))) (if (null? cdrl) ;; Carefully tail recurse: (pred? (car l)) (and (pred? (car l)) (aux cdrl))))))) ;;; True if any element of l passes pred?: (define any? (make operation)) (add-method (any? (operation) pred? l) (cond ((null? l) nil) ;; Carefully tail recurse ((null? (cdr l)) (pred? (car l))) (else (or (pred? (car l)) (any? pred? (cdr l)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance ass operation) (define-instance rass operation) (define-instance assq operation) (define-instance assv operation) (define-instance assoc operation) (define-instance rassq operation) (define-instance mem operation) (define-instance del! operation) (define-instance del operation) (define-instance cdr-ass locatable-operation) (define-instance cdr-assq locatable-operation) (define memq (lambda (x seq) (mem eq? x seq))) (define memv (lambda (x seq) (mem eqv? x seq))) (define member (lambda (x seq) (mem equal? x seq))) (define delq (lambda (x seq) (del eq? x seq))) (define delq! (lambda (x seq) (del! eq? x seq))) (add-method (mem (operation) pred ob l) (cond ((null? l) '()) ((pred ob (car l)) l) (else (mem pred ob (cdr l))))) (add-method (del! (operation) pred ob inlist) (let ((outlist (cons 'a inlist))) (iterate step ((kons outlist)) (if (set! (cdr kons) (mem (lambda (x y) (not (pred x y))) ob (cdr kons))) (step (cdr kons)))) (cdr outlist))) #| (add-method (del (operation) pred ob inlist) (iterate loop ((in inlist)(out '())) (if (null? in) (reverse out) (if (pred ob (car in)) (loop (cdr in) out) (loop (cdr in) (cons (car in) out)))))) |# (add-method (del (operation) pred ob inlist) (let ((list-head (cons '() '()))) (iterate next ((inlist inlist)(last-newpair list-head)) (if (null? inlist) (cdr list-head) (if (pred ob (car inlist)) (next (cdr inlist) last-newpair) (let ((newpair (cons (car inlist) '()))) (set! (cdr last-newpair) newpair) (next (cdr inlist) newpair))))))) (add-method (ass (operation) pred ob l) (cond ((null? l) '()) ((pred ob (caar l)) (car l)) (else (ass pred ob (cdr l))))) (add-method (rass (operation) pred ob l) (cond ((null? l) '()) ((pred ob (cdar l)) (car l)) (else (rass pred ob (cdr l))))) (add-method (assq (object) key l) (ass eq? key l)) (add-method (assv (object) key l) (ass eqv? key l)) (add-method (assoc (object) key l) (ass equal? key l)) (add-method (rassq (object) key l) (rass eq? key l)) (add-method (cdr-ass (operation) pred ob l) (cdr (ass pred ob l))) (add-method ((setter cdr-ass) (operation) pred ob l new) (let ((entry (ass pred ob l))) (if entry (set! (cdr entry) new) (error "No association to set.")))) (add-method ((locater cdr-ass) (operation) pred ob l) (let ((entry (ass pred ob l))) (if entry (make-locative (cdr entry)) (error "No association to locate.")))) (add-method (cdr-assq (object) ob l) (cdr-ass eq? ob l)) (add-method ((setter cdr-assq) (object) ob l new) ((setter cdr-ass) eq? ob l new)) (add-method ((locater cdr-assq) (object) ob l) ((locater cdr-ass) eq? ob l)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; List manipulation (add-method (reverse (list-type) self) (iterate aux ((new '()) (old self)) (if (null? old) new (aux (cons (car old) new) (cdr old))))) (add-method (reverse! (list-type) self) (iterate aux ((old self) (new nil)) (cond (old (let ((o (cdr old))) (set! (cdr old) new) (aux o old))) (else new)))) (define-instance append operation) (define-instance append! operation) #| ; replaced by new definitions that ; take a variable number of arguments (add-method (append (pair) a b) (cons (car a) (append (cdr a) b))) (add-method (append (null-type) a b) b) (add-method (append! (pair) a b) (let ((x (last-pair a))) (set! (cdr x) b) a)) (add-method (append! (null-type) a b) b) |# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (labels (((append-aux1 a) a) ((append-aux2 oldcopy b) (cond ((null? oldcopy) b) ((pair? oldcopy) (let ((newcopy (cons (car oldcopy) b))) (iterate next ((oldpair (cdr oldcopy))(last-newpair newcopy)) (if (not (null? oldpair)) (next (cdr oldpair) (set! (cdr last-newpair) (cons (car oldpair) b))) newcopy)))) ((subtype? (get-type oldcopy) forcible) (append-aux2 (force oldcopy) b)) (else (append-type-error "list" oldcopy)))) ((append-aux3 a b c) (append-aux2 a (append-aux2 b c))) ((append-aux4 a b c d) (append-aux2 a (append-aux2 b (append-aux2 c d)))) ((append-aux-gen inlist) (iterate step ((in (cdr inlist)) (out (car inlist))) (if (not (null? in)) (step (cdr in) (append-aux2 (car in) out)) out)))) ; after the old definitions have been removed from the source code, ; the following two methods can be replaced by one for list-type (add-method (append (pair) . rest) (cond ((= 2 (rest-length rest)) (append-aux2 . rest)) ((= 3 (rest-length rest)) (append-aux3 . rest)) ((= 4 (rest-length rest)) (append-aux4 . rest)) ((< 4 (rest-length rest)) (backwards-listify-args append-aux-gen . rest)) ((= 1 (rest-length rest)) (append-aux1 . rest)) (else (error "internal error: append received ~a args" (rest-length rest))))) (add-method (append (null-type) an-empty-list . rest) (cond ((= 2 (rest-length rest)) (append-aux2 . rest)) ((= 3 (rest-length rest)) (append-aux3 . rest)) ((= 4 (rest-length rest)) (append-aux4 . rest)) ((< 4 (rest-length rest)) (backwards-listify-args append-aux-gen . rest)) ((= 1 (rest-length rest)) (append-aux1 . rest)) ((= 0 (rest-length rest)) '()) (else (error "internal error: append received ~a args" (rest-length rest))))) ) (labels (((append!-aux1 a) a) ((append!-aux2 a b) (if (null? a) b (let ((x (last-pair a))) (set! (cdr x) b) a))) ((append!-aux3 a b c) (append!-aux2 a (append!-aux2 b c))) ((append!-aux-gen inlist) (iterate step ((in (cdr inlist)) (out (car inlist))) (if (not (null? in)) (step (cdr in) (append!-aux2 (car in) out)) out)))) ; after the old definitions have been removed from the source code, ; the following two methods can be replaced by one for list-type (add-method (append! (pair) . rest) (cond ((= 2 (rest-length rest)) (append!-aux2 . rest)) ((= 3 (rest-length rest)) (append!-aux3 . rest)) ((= 1 (rest-length rest)) (append!-aux1 . rest)) (else (backwards-listify-args append!-aux-gen . rest)))) (add-method (append! (null-type) an-empty-list . rest) (cond ((= 2 (rest-length rest)) (append!-aux2 . rest)) ((= 3 (rest-length rest)) (append!-aux3 . rest)) ((= 1 (rest-length rest)) (append!-aux1 . rest)) ((= 0 (rest-length rest)) '()) (else (backwards-listify-args append!-aux-gen . rest)))) ) ; Unless there are zero arguments, calls to append that invoke ; the method for object will call the error handling system, which ; will force delayed values if necessary, or else report an error. (dolist (x (list append append!)) (add-method (x (object) . rest) (if (zero? (rest-length rest)) '() (listify-args (lambda (args) (bind ((#*fancy-references #t)) (failed-funcall (cons x args)))) . rest)))) ;;; Consider removing this type checking later. (define (append-type-error type-name offending-value) (bind ((#*fancy-references #t)) (error "the append method for ~A cannot handle its second argument ~A" type-name offending-value))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Lists as sets: (define-instance union operation) (add-method (union (list-type) a b) (cond ((null? a) b) ((memq (car a) b) (union (cdr a) b)) (else (union (cdr a) (cons (car a) b))))) (define-instance intersection operation) (add-method (intersection (list-type) a b) (iterate aux ((rest a)(answer nil)) (cond ((null? rest) answer) ((memq (car rest) b) (aux (cdr rest) (cons (car rest) answer))) (else (aux (cdr rest) answer))))) (define-instance setdifference operation) (add-method (setdifference (list-type) a b) (cond ((null? a) nil) ((memq (car a) b) (setdifference (cdr a) b)) (else (cons (car a) (setdifference (cdr a) b))))) (define-instance setxor operation) (add-method (setxor (list-type) a b) (cond ((null? a) b) ((null? b) a) ((memq (car a) b) (setxor (cdr a) (del eq? (car a) b))) (else (cons (car a) (setxor (cdr a) b))))) (define-instance setequal? operation) ;;; This definition is inefficient. (add-method (setequal? (list-type) a b) (null? (setxor a b))) (define-instance subset? operation) (add-method (subset? (null-type) a b) #t) (add-method (subset? (list-type) a b) (and (memq (car a) b) (subset? (cdr a) b))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; This is used by the thing that remaps the ivar references in ;;; code blocks: (define (position-in-list x l) (iterate aux ((l l) (i 0)) (cond ((null? l) nil) ((eq? x (car l)) i) (else (aux (cdr l) (+ i 1)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; make REMOVE-METHOD, an analogue to ADD-METHOD, in terms of ;;; LOCAL-METHOD, an access operation for types' methods. ;;; #|| (define-instance local-method settable-operation) (let ((local-method0 (make settable-operation))) (add-method (local-method (operation) op typ) (local-method0 typ op)) (add-method (local-method0 (type operation-method-alist) typ op) (let ((pair (%assq op operation-method-alist))) (if meth (cdr meth) nil))) (add-method ((setter local-method) (operation) op typ new-method) (set! (local-method0 typ op) new-method)) (add-method ((setter local-method0) (type operation-method-alist) typ op new-method) (cond ((null? new-method) (let ((meth (%assq op operation-method-alist))) (if meth (set! operation-method-alist (set-difference local-method (list meth)))))) (else (set! local-method (cons (cons op new-method) operation-method-alist)))) new-method) ) (define-instance remove-method operation) (add-method (remove-method (operation) op typ) (set! (local-method op typ) nil)) ||# ;;; eof oaklisp-1.3.7/src/world/math.oak000066400000000000000000000027611332762442600165460ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Barak A. Pearlmutter & Kevin J. Lang (define prime-list (labels (((prime? n) (iterate aux ((l prime-list)) (let* ((i (car l)) (n/i (quotient n i))) (cond ((< n/i i) #t) ((= (* i n/i) n) #f) (else (aux (cdr l))))))) ((primes-list n) (if (prime? n) (lcons n (primes-list (+ 1 n))) (primes-list (+ 1 n))))) (lcons 2 (primes-list 3)))) (define (factor n) (iterate step ((left n) (factors '()) (tries prime-list)) (let* ((try (car tries)) (try-square (* try try))) (cond ((= 1 left) factors) ((zero? (modulo left try)) (step (quotient left try) (cons try factors) tries)) ((> try-square left) (cons left factors)) (else (step left factors (cdr tries))))))) ;;; eof oaklisp-1.3.7/src/world/mix-types.oak000066400000000000000000000035511332762442600175520ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Define mixin management tools. ;; (define-instance mixin-manager type '(type-alist) (list object)) (add-method (initialize (mixin-manager type-alist) self) (set! type-alist '()) self) (define-instance mix-types operation) (add-method (mix-types (mixin-manager type-alist) self types) ;; Run through the list looking for what we want. (iterate aux ((l type-alist)) (if (null? l) ;; not on list, make it. (let ((newtype (make type '() types))) (set! type-alist (cons (cons types newtype) type-alist)) newtype) ;; We want to write test (EQUAL? TYPES (CAAR L)) here, but ;; EQUAL? doesn't work yet so the comparison is done inline, ;; element by element. (labels ((non-equal-exit (lambda () (aux (cdr l))))) (iterate loop ((x types) (y (caar l))) (cond ((null? x) (if (null? y) ;; They are equal, return the right type: (cdar l) (non-equal-exit))) ((or (null? y) (not (eq? (car x) (car y)))) (non-equal-exit)) (else (loop (cdr x) (cdr y))))))))) ;;; eof oaklisp-1.3.7/src/world/multi-em.oak000066400000000000000000000045651332762442600173520ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;; ;; The functions in this souce file assist in the creation and management ;; of heavyweight threads. ;; ;; ;; Creates a new heavyweight thread ;; This method takes one argument, the function to be run in the ;; virtual machine running on the new heavyweight thread. ;; The given function should loop forever. If it returns, a seg-fault ;; will occur (it's not a bug, it's a feature). ;; This function returns t if the thread is created, nil if it could ;; not be created. ;; (define-constant %make-heavyweight-thread (add-method ((make-open-coded-operation '((make-heavyweight-thread)) 1 1) (object) target) (%make-heavyweight-thread target))) ;; ;; Returns the variable stored in the "process" register. Each virtual ;; machine has its own process register. It is used with the process ;; scheduler (see multiproc.oak) to keep track of what process is currently ;; being executed on this heavyweight thread. ;; (define-constant %load-process (add-method ((make-open-coded-operation '((load-reg process)) 0 1) (object)) (%load-process))) ;; ;; Stores the variable in the "process" register. The compliment of ;; %load-process. ;; (define-constant %store-process (add-method ((make-open-coded-operation '((store-reg process)) 1 1) (object) value) (%store-process value))) ;; An atomic operation that tests the value in a locative and sets it ;; to NEW if the value is currently OLD. A boolean is returned to ;; indicate success or failure. (define-constant %test-and-set-locative (add-method ((make-open-coded-operation '((test-and-set-locative)) 3 1) (locative) loc old new) (%test-and-set-locative loc old new))) oaklisp-1.3.7/src/world/multi-off.oak000066400000000000000000000016571332762442600175220ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; This is to guard all usage of thread-related functions so they don't ;;; get used during the cold boot process. In particular: fluids. ;;; Set this to FALSE when threading is turned on. (define %no-threading 0) oaklisp-1.3.7/src/world/multiproc-tests.oak000066400000000000000000000037371332762442600207770ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;; regression tests start here... (process-id (current-process)) (%make-heavyweight-thread start-busy-work) (define x (make mutex)) (acquire-mutex x) (release-mutex x) (define y (delay (+ 1 2))) (define z (future (+ 1 2))) (define (test-fn) (while t (format t "~s~%" (process-id (current-process))))) (process-run-fn test-fn nil) (process-run-fn test-fn nil) (process-run-fn test-fn nil) (test-fn) (set! #*thing 'adf) #*thing ; Should return symbol ADF (bind ((#*hello "hello")) #*hello) ; Returns "hello" #*hello ; Should error (bind ((#*hello "hello")) (set! #*world "world")) #*world ; Returns "world" #*hello ; Should error (set! #*forcible-print-magic #f) ;;; TO DO ;;; register for # instructions until alarms ? ;;; at least make interval modifiable ;;; change C thread maker so malloc'ed stuff doesn't get into oaklisp space ;;; rationalize process descriptor table C vs Oaklisp interface ;;; process priorities ;;; make threads extra "level" in build process. Prior to that being ;;; loaded, NO THREAD STUFF AT ALL. ;;; ability to build emulator without thread support ;;; race conditions (symbol tables, hash tables, add-method) ;;; performance ;;; make sure throwing out of thread gets an error ;;; completely rewrite allocation subsystem oaklisp-1.3.7/src/world/multiproc.oak000066400000000000000000000341761332762442600176400ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; queue.oak (define (make-queue) (list '())) (define (enqueue obj q) (if (null? (car q)) (block (set! (car q) (list obj)) (set! (cdr q) (car q))) (block (set! (cdr (cdr q)) (list obj)) (set! (cdr q) (cdr (cdr q))))) (car q)) (define (dequeue q) (pop (car q))) (define (qappend q1 q2) (if (not (null? (car q2))) (block (set! (car q1) (append (car q1) (car q2))) (set! (cdr q1) (cdr q2)))) (car q1)) (define (qempty? q) (null? (car q))) ;;; potpourri.oak (set! #*fancy-references #t) (define-syntax (until test . body) `(labels ((fn (lambda () ,@body (if ,test #t (fn))))) (fn))) ;;; process.oak ;;; This is the initial process object class. The current-process ;;; object is stored in a register of the virtual machine for uniform ;;; access from the task code independant of which virtual machine ;;; (i.e. pthread) is running the task. ;;; The count of process id number is protected by a mutex, however, ;;; which requires that some process already be running. The first ;;; process is created before mutexes are defined, therefore, and so ;;; initialization of this class is redefined after the first one is ;;; made (as a warm boot action). See process2.oak for more code. (define-instance process type '(pid process-fluid-binding-list) (list object)) (define-instance process-id operation) (define-instance fluid-bindings settable-operation) (define-instance copy-fluid-bindings operation) (define trace-processes #t) (add-method (initialize (process pid process-fluid-binding-list) self) (when trace-processes (format #t "init: oak process descriptor~%")) (set! pid 0) (set! process-fluid-binding-list (map (lambda (z) (cons (car z) (cdr z))) fluid-binding-list)) self) (add-method (process-id (process pid) self) pid) (define (current-process) (%load-process)) (add-method (fluid-bindings (process process-fluid-binding-list) self) process-fluid-binding-list) (add-method ((setter fluid-bindings) (process process-fluid-binding-list) self new-fluid-binding-list) (set! process-fluid-binding-list new-fluid-binding-list)) (add-method (copy-fluid-bindings (process process-fluid-binding-list) self) (map (lambda (z) (cons (car z) (cdr z))) process-fluid-binding-list)) ;;; mutex.oak ;;; A solution to the critical section problem for multiple ;;; asynchronous processes, which must have shared access to a set of ;;; access flags and a contended turn value. ;;; This is supposed to be used to build higher-level access control ;;; objects, so that the amount of time spent using the lock to achive ;;; something is small and so processes will not have to be in busy ;;; waiting for very long. ;;; In practice, if we get this system running across multiple ;;; processors and have a situation that we don't expect to tkae very ;;; long to resolve, this may be adequate because the waiting process ;;; on another processor will not have to context switch itself out ;;; and back in because of being put on some waiting list. ;;; A process had better not release a mutex it has not acuired, for ;;; obvious reasons. ;;; This implementation uses a low-level %TEST-AND-SET-LOCATIVE opcode ;;; which is atomic. The mutex has a location that controls access to ;;; the critical section between an arbitrary number of asynchronous ;;; tasks, which is important in a future system with no reasonable ;;; bounds on the number of processes. ;;; %TEST-AND-SET-LOCATIVE is used to create a spin-lock, so mutexes ;;; spin lock too. Hence semaphores should be used when possible. (define-instance mutex type '(access-cons) (list object)) (define-instance acquire-mutex operation) (define-instance release-mutex operation) (add-method (initialize (mutex access-cons) self) (set! access-cons (cons nil nil)) self) (add-method (acquire-mutex (mutex access-cons) self) (until (%test-and-set-locative (car access-cons) #f #t))) (add-method (release-mutex (mutex access-cons) self) (set! (car access-cons) nil)) ;;; process2.oak ;; see process.oak for an explaination (define *pid-counter* 1) ;; the 0th process is not created with this counter (define *pid-counter-mutex* (make mutex)) (define (new-pid) (let ((newp nil)) (acquire-mutex *pid-counter-mutex*) (set! newp *pid-counter*) (set! *pid-counter* (+ *pid-counter* 1)) (release-mutex *pid-counter-mutex*) newp)) ;;; -------------------------------------------------- ;;; bootstrap initial process and redefine initialization ;;; redefine the initialization for processes after the first... ;;; redefine fluid operations ater the first... ;;; -------------------------------------------------- (define (setup-initial-process-object) (%store-process (make process)) (add-method (initialize (process pid process-fluid-binding-list) self) (set! pid (new-pid)) (set! process-fluid-binding-list (copy-fluid-bindings (current-process))) self) (spawn-heavyweight-threads)) ;;; XXX removed to make it boot!!! ;;; (add-warm-boot-action setup-initial-process-object) ;;-------------------------------------------------- ;;; testandset.oak ;;; Test-and-set in terms of mutexes. When the test (a predicate on ;;; the test-and-settable object) is true, the new value is assigned ;;; and returned, otherwise #f is returned. ;;; This is NOT the same as %test-and-set-car behavior, where the only ;;; predicate is (essentially) null? and the only non-null value is ;;; #t; here the predicate can be any function and the set value can ;;; be any non-nil value (so that success/failure can be distinguished ;;; when the set value is returned). (define-instance test-and-settable type '(ts-value) (list mutex)) (define-instance test-and-set operation) ; for debugging purposes only... (define-instance tsval operation) (add-method (initialize (test-and-settable ts-value) self) (set! ts-value '()) (^super mutex initialize self) self) (add-method (test-and-set (test-and-settable ts-value) self test new-value) (let ((set? #t)) (acquire-mutex self) (if (test ts-value) (set! ts-value new-value) (set! set? #f)) (release-mutex self) (if set? new-value #f))) (add-method (tsval (test-and-settable ts-value) self) ts-value) ;;; schedule.oak ;;; in order to avoid deadlock, the interrupt that invokes context ;;; switching must be disabled during scheduler interaction on a ;;; per-virtual-machine basis (between virtual machines, a mutex is ;;; used to preserve the critical section) ;;; at context switch time, the process register is fixed: ;;; ;;; * when a process is switched out, lwp gets the current process ;;; and saves it ;;; ;;; * when a process is switched in, start gets the saved process and ;;; sets it ;;; ;;; * when process-run-fn is called, it creates a new process and ;;; task and adds the block to the scheduler ;;; ;;; because the scheduler is acquired whenever these things are ;;; happening, it should not be possible for two different pthreads ;;; to think they are running the same process at any time (this ;;; would clearly be bad because then two threads of computation ;;; could acquire the same mutex at the same time) (define *scheduleQ* (make-queue)) (define *scheduleQ-mutex* (make mutex)) (define (acquire-scheduler) (%disable-alarms) (acquire-mutex *scheduleQ-mutex*)) (define (release-scheduler) (release-mutex *scheduleQ-mutex*) (%enable-alarms)) (define (lwp thunk) (acquire-scheduler) (enqueue (cons (%load-process) thunk) *scheduleQ*) (release-scheduler)) (define (start) (let ((next nil)) (acquire-scheduler) (if (qempty? *scheduleQ*) '() (set! next (dequeue *scheduleQ*))) (when next (%store-process (car next))) ;; fix process register and proceed (%reset-alarm-counter) (release-scheduler) (when next ((cdr next))))) ;;; pause causes a context switch. here is an easier-to-read version, ;;; it's expanded in order to make it atomic instead of just depending ;;; on lwp and start being atomic #| (define (pause) (call/cc (lambda (k) (lwp (lambda () (k #f))) (start)))) |# (define (pause) (let ((next nil) (pid (process-id (current-process)))) (acquire-scheduler) (when trace-processes (format #t "pause: acquired sched~%")) (call/cc (lambda (k) ;; (lwp (lambda () (k #f))) (enqueue (cons (%load-process) (lambda () (k #f))) *scheduleQ*) ;; (start) (if (qempty? *scheduleQ*) '() (set! next (dequeue *scheduleQ*))) (when next (%store-process (car next))) ;; fix process register and proceed (when trace-processes (format #t "pause: pre-reset alarm counter~%")) (%reset-alarm-counter) (release-scheduler) (when next ((cdr next))))))) ;;; no longer calls lwp because this must create a new process object (define (process-run-fn fn args) (acquire-scheduler) (enqueue (cons (make process) (lambda () (apply fn args) (start))) *scheduleQ*) (release-scheduler) nil) ;;; when heavyweight threads have nothing else to do, they have to be given ;;; a job that keeps them monitoring the scheduler. probably a sleep should ;;; be added to this (as another opcode which makes the VM sleep) to make ;;; busy waiting take less machine time (define (busy-work) (while #t (pause))) ;;; this is the function that bootstraps a new heavyweight process... ;;; start new hw threads as (%make-heavyweight-thread start-busy-work) ;;; THIS IS DONE AT WARM BOOT TIME AND SHOULD NOT BE DONE BY A USER (define (start-busy-work) (process-run-fn busy-work nil) (start)) ;;; -------------------------------------------------- ;;; Check to see if the user added a -pthreads option ;;; and launch some heavyweight threads accordingly. ;;; -------------------------------------------------- (define heavyweight-thread-count 1) (define (spawn-heavyweight-threads) (when (> heavyweight-thread-count 1) (format t "Spawning ~s pthreads.~%" heavyweight-thread-count) (dotimes (i (- heavyweight-thread-count 1)) (unless (%make-heavyweight-thread start-busy-work) (format t "Could not start heavyweight thread ~s.~%" (+ i 1)))))) ;;; semaphore.oak ;;; semaphores in terms of queues and mutexes. ;;; When processes wait on a semaphore, they are put in the queue as a ;;; pair of a process object and the closure representing it's ;;; continuing computation. This can then be moved directly to the ;;; scheduler when the semaphore is signaled. (define-instance semaphore type '(s-value s-Q) (list mutex)) (define-instance wait operation) (define-instance signal operation) (add-method (initialize (semaphore s-value s-Q) self) (set! s-value 0) (set! s-Q (make-queue)) (^super mutex initialize self) self) (add-method (wait (semaphore s-value s-Q) self) (acquire-mutex self) (set! s-value (- s-value 1)) (if (< s-value 0) ;; add to s-Q and block until woken (call/cc (lambda (c) ;; since context switching preserves current-process, ;; we should be able to just grab and go (enqueue (cons (current-process) (lambda () (c nil))) s-Q) (release-mutex self) (start))) (release-mutex self)) nil) ;;; WARNING: make sure that no other virtual process acquires a ;;; semaphore without first acquiring the scheduler! disabling alarms ;;; only prevents interrupts from occuring within the current pthread! ;;; (this should not be a problem since only these routines should ;;; acquire the semaphore) (add-method (signal (semaphore s-value s-Q) self) (acquire-scheduler) (acquire-mutex self) (set! s-value (+ s-value 1)) (when (<= s-value 0) ;; wake up the next blocked process (enqueue (dequeue s-Q) *scheduleQ*)) (release-mutex self) (release-scheduler) nil) ;;; future.oak ;;; futures: promises in a multitasking world (define-instance future-obj type '(flag val scheduled? dependantsQ sched-policy err-policy) (list forcible mutex)) (add-method (initialize (future-obj flag val scheduled? dependantsQ sched-policy err-policy) self oper) (set! scheduled? (make test-and-settable)) (set! dependantsQ (make-queue)) (set! sched-policy 'unused) (set! err-policy 'unused) (set! flag #f) (set! val oper) ;;(^super forcible initialize self) (^super mutex initialize self) self) (add-method (force (future-obj flag val scheduled? dependantsQ sched-policy err-policy) self) (acquire-mutex self) ; this mutex prevents dependants from enqueueing badly (if flag (block (release-mutex self) val) (call/cc (lambda (c) ;; suspend the current task into the destination queue (enqueue (cons (current-process);; process calling force (lambda () (let ((result (force self))) (c result)))) dependantsQ) (release-mutex self) ; now that we're enqueued, we're safe ;; someone claim responsibility for and initiate future computation (let ((schedule? (test-and-set scheduled? null? #t))) (when schedule? (process-run-fn (lambda () (let ((newval (val))) (acquire-mutex self) (set! flag #t) (set! val newval) (release-mutex self) ;; at this point no more people will ;; be trying to add themselves... (acquire-scheduler) (qappend *scheduleQ* dependantsQ) (release-scheduler))) nil))) (start))))) (define-syntax delay (lambda (form) `(make future-obj (lambda () . ,(cdr form))))) (define-syntax future (lambda (form) `(let ((foosym (make future-obj (lambda () . ,(cdr form))))) (process-run-fn force (list foosym)) foosym))) oaklisp-1.3.7/src/world/nargs.oak000066400000000000000000000024751332762442600167310ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; Some entry points. (let ((bad-nargs (lambda (stuff) (destructure (extra-okay requested op . args) stuff (signal (if extra-okay nargs-gte-error nargs-exact-error) op args requested))))) (define (incorrect-nargs requested op . args) (listify-args bad-nargs #f requested op . args)) (define (incorrect-nargs-gte minimum-requested op . args) (listify-args bad-nargs #t minimum-requested op . args))) (set! (nth %arged-tag-trap-table 24) incorrect-nargs) (set! (nth %arged-tag-trap-table 25) incorrect-nargs-gte) ;;; eof oaklisp-1.3.7/src/world/numbers.oak000066400000000000000000000447371332762442600173010ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; This contains definitions for all the numeric stuff. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; The numeric type heirarchy is as follows. Entries with *s are ;;; instantiable. ;;; ;;; number ;;; / \ ;;; real complex* ;;; / \ ;;; rational float* ;;; / \ ;;; integer fraction* ;;; / \ ;;; fixnum* bignum* (define-constant-instance number coercable-type '() (list self-evaluatory-mixin)) (set! #^number (make (mix-types oc-mixer (list foldable-mixin operation)))) (add-method (#^number (number) x) x) (define-constant-instance real type '() (list number)) (define-constant-instance rational type '() (list real)) (define-constant-instance integer type '() (list rational)) ;;; This gets redone when float.oak is loaded: (define-instance float type '() (list real)) (define-constant fixnum (the-runtime fixnum)) (initialize fixnum '() (list integer object)) ;;; Tell the bytecode emulator about this: ;(set! ((%register 'fixnum-type)) (the-runtime fixnum)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-instance / operation) (define-instance /r operation) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; These are the operations that get trapped to when the corresponding ;;; instruction fails. That is the only time they should ever be called. ;;; They should never be called directly by user code, or system code ;;; either for that matter. (define-instance plus/2 operation) (define-instance times/2 operation) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (labels ((+/2 (lambda (x y) (+ x y))) (+/3 (lambda (x y z) (+ x y z))) (+/4 (lambda (x y z p) (+ x y z p))) (+/5 (lambda (x y z p d) (+ x y z p d))) (+/>5 (lambda (x y z p d q . args) (let ((z (+ x y z p d q))) (cond ((= 0 (rest-length args)) z) ((= 1 (rest-length args)) (+/2 z . args)) ((= 2 (rest-length args)) (+/3 z . args)) ((= 3 (rest-length args)) (+/4 z . args)) ((= 4 (rest-length args)) (+/5 z . args)) (else (+/>5 z . args))))))) (define-constant + (add-method ((make-fancy-open-coded-operation (list foldable-mixin) (lambda (n) (make list-type (- n 1) '(plus))) nil 1) (object) . args) (cond ((= 0 (rest-length args)) 0) ((= 1 (rest-length args)) (%return)) ((= 2 (rest-length args)) (+/2 . args)) ((= 3 (rest-length args)) (+/3 . args)) ((= 4 (rest-length args)) (+/4 . args)) ((= 5 (rest-length args)) (+/5 . args)) (else (+/>5 . args)))))) (add-method (plus/2 (fixnum) x y) (cond ((eq? (get-type y) fixnum) (plus/2 (#^bignum x) y)) (else (plus/2 y x)))) (add-method (times/2 (fixnum) x y) (cond ((eq? (get-type y) fixnum) (times/2 (#^bignum x) y)) (else (times/2 y x)))) (define-constant 1+ (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((load-imm 1)(plus)) 1 1) (number) x) (+ 1 x))) (define-constant minus (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((negate)) 1 1) (fixnum) x) (if (most-negative-fixnum? x) least-positive-bignum (- x)))) (define-instance subtract/2 operation) (add-method (subtract/2 (number) x y) (+ x (- y))) (labels ((-aux (lambda (x y . args) (if (zero? (rest-length args)) (- x y) (-aux (- x y) . args))))) (define-constant - (add-method ((make-fancy-open-coded-operation (list foldable-mixin) (lambda (n) (cond ((zero? n) (error "The - operation requires at least one argument.")) ((= n 1) '((negate))) (else (make list-type (- n 1) '(subtract))))) nil 1) (number) x . args) (if (zero? (rest-length args)) (- x) (-aux x . args))))) (labels ((*/2 (lambda (x y) (* x y))) (*/3 (lambda (x y z) (* x y z))) (*/4 (lambda (x y z p) (* x y z p))) (*/5 (lambda (x y z p d) (* x y z p d))) (*/>5 (lambda (x y z p d q . args) (let ((z (* x y z p d q))) (cond ((= 0 (rest-length args)) z) ((= 1 (rest-length args)) (*/2 z . args)) ((= 2 (rest-length args)) (*/3 z . args)) ((= 3 (rest-length args)) (*/4 z . args)) ((= 4 (rest-length args)) (*/5 z . args)) (else (*/>5 z . args))))))) (define-constant * (add-method ((make-fancy-open-coded-operation (list foldable-mixin) (lambda (n) (make list-type (- n 1) '(times))) nil 1) (object) . args) (cond ((= 0 (rest-length args)) 1) ((= 1 (rest-length args)) (%return)) ((= 2 (rest-length args)) (*/2 . args)) ((= 3 (rest-length args)) (*/3 . args)) ((= 4 (rest-length args)) (*/4 . args)) ((= 5 (rest-length args)) (*/5 . args)) (else (*/>5 . args)))))) (define-constant remainder (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((remainder)) 2 1) (fixnum) x y) (cond ((zero? y) (error "Illegal second arg: (REMAINDER ~D ~D).~%" x y)) ((eq? (get-type y) fixnum) (remainder x y)) ((eq? (get-type y) bignum) (remainder (#^bignum x) y)) (else ;;(error "Illegal second arg: (REMAINDER ~D ~D).~%" x y) (^super integer remainder x y) )))) (define-constant modulo (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((modulo)) 2 1) (fixnum) x y) (cond ((zero? y) (error "Illegal second arg: (MODULO ~D ~D).~%" x y)) ((eq? (get-type y) fixnum) (modulo x y)) ((eq? (get-type y) bignum) (modulo (#^bignum x) y)) (else (^super integer modulo x y))))) (add-method (modulo (real) x y) (- x (* y (floor (/ x y))))) (add-method (remainder (real) x y) (- x (* y (truncate (/ x y))))) (define-old-name mod modulo) (define-constant quotient (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((div)) 2 1) (fixnum) x y) (cond ((zero? y) (error "Illegal second arg: (QUOTIENT ~D ~D).~%" x y)) ((eq? (get-type y) bignum) 0) ((eq? (get-type y) fixnum) ;; Watch it, this can cause an infinite loop. ;(warning "Call to (QUOTIENT ~D ~D).~%" x y) (quotient x y)) (else (error "Illegal second arg: (QUOTIENT ~D ~D).~%" x y))))) (define-old-name div quotient) (define-constant quotientm (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((quotientm)) 2 1) (fixnum) x y) (cond ((zero? y) (error "Illegal second arg: (QUOTIENTM ~D ~D).~%" x y)) ((eq? (get-type y) fixnum) ;; Watch it, this can cause an infinite loop. ;(warning "Call to (QUOTIENTM ~D ~D).~%" x y) (quotientm x y)) (else (error "Illegal second arg: (QUOTIENTM ~D ~D).~%" x y))))) (define-constant zero? (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((=0?)) 1 1) (fixnum) x) (zero? x))) (add-method (zero? (number) x) nil) (define-constant negative? (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((<0?)) 1 1) (fixnum) x) (negative? x))) (add-method (negative? (real) x) (< x 0)) (define-constant positive? (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((LOAD-IMM 0) (<)) 1 1) (fixnum) x) (positive? x))) (add-method (positive? (real) x) (< 0 x)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Comparison operators ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; NOTE: < and = must be defined for all subtypes of real; the other ;;; comparison operators are defined in terms of these. (define-constant = (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((=)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (= x y)) ((number) #f) (otherwise (error "Illegal second arg (= ~D ~D).~%" x y))))) (define-constant < (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((<)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (< x y)) ((bignum) (not (negative? y))) ((rational) (< (* x (denominator y)) (numerator y))) ((float) (if (zero? x) (< x (float-sign y)) (< (#^float x) y))) (otherwise (error "Illegal second arg (< ~D ~D).~%" x y))))) ;;; (define-constant > (make-fancy-open-coded-operation (list foldable-mixin backwards-args-mixin) '((<)) 2 1)) (define-constant >= (make-fancy-open-coded-operation (list foldable-mixin) '((<) (not)) 2 1)) (define-constant != (make-fancy-open-coded-operation (list foldable-mixin) '((=) (not)) 2 1)) (define-constant <= (make-fancy-open-coded-operation (list foldable-mixin backwards-args-mixin) '((<) (not)) 2 1)) (add-method (> (object) x y) (> x y)) (add-method (>= (object) x y) (>= x y)) (add-method (!= (object) x y) (!= x y)) (add-method (<= (object) x y) (<= x y)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Rotations and shifts (define-constant rot-left (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((rot)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (rot-left x y)) (otherwise (error "Illegal second arg (ROT-LEFT ~D ~D).~%" x y))))) (define-constant rot-right (add-method ((make-fancy-open-coded-operation (list foldable-mixin backwards-args-mixin) '((negate)(swap 1)(rot)) 2 1) (fixnum) x y) (rot-left x (- y)))) (define-constant ash-left (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((ash)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (ash-left x y)) (otherwise (error "Illegal second arg (ASH-LEFT ~D ~D).~%" x y))))) (define-constant ash-right (add-method ((make-fancy-open-coded-operation (list foldable-mixin backwards-args-mixin) '((negate)(swap 1)(ash)) 2 1) (fixnum) x y) (ash-left x (- y)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Bitwise operations (define-constant bit-not (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-not)) 1 1) (fixnum) x) (bit-not x))) (define-constant bit-and (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-and)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (bit-and y x)) (otherwise (error "Bad second arg (BIT-AND ~D ~D)." x y))))) (define-constant bit-or (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-or)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (bit-or y x)) (otherwise (error "Bad second arg (BIT-OR ~D ~D)." x y))))) (define-constant bit-xor (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-xor)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (bit-xor y x)) (otherwise (error "Bad second arg (BIT-XOR ~D ~D)." x y))))) (define-constant bit-nand (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-nand)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (bit-nand y x)) (otherwise (error "Bad second arg (BIT-NAND ~D ~D)." x y))))) (define-constant bit-andca (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-andca)) 2 1) (integer) x y) (bit-and x (bit-not y)))) (define-constant bit-nor (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-nor)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (bit-nor y x)) (otherwise (error "Bad second arg (BIT-NOR ~D ~D)." x y))))) (define-constant bit-equiv (add-method ((make-fancy-open-coded-operation (list foldable-mixin) '((bit-equiv)) 2 1) (fixnum) x y) (fselect-type y ((fixnum) (bit-equiv y x)) (otherwise (error "Bad second arg (BIT-EQUIV ~D ~D)." x y))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-constant-instance abs (mix-types oc-mixer (list foldable-mixin operation))) (define-constant-instance expt (mix-types oc-mixer (list foldable-mixin operation))) (define-constant-instance expt/r (mix-types oc-mixer (list foldable-mixin operation))) (add-method (abs (real) x) (if (negative? x) (- x) x)) (add-method (expt (number) x y) (expt/r y x)) (add-method (expt/r (integer) n a) (cond ((negative? n) (/ 1 (expt/r (- n) a))) ((zero? n) 1) (else (let* ((rec (expt/r (quotient n 2) a)) (srec (* rec rec))) (if (even? n) srec (* a srec)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; recoded below to allow multiple arguments ; ; (define-constant-instance max ; (mix-types oc-mixer (list foldable-mixin operation))) ; (define-constant-instance min ; (mix-types oc-mixer (list foldable-mixin operation))) ; ; (add-method (max (object) x y) ; (if (> x y) x y)) ; (add-method (min (object) x y) ; (if (> x y) y x)) ; These macros should be flushed when it becomes convenient. ; The open coded function is faster. (local-syntax (max-macro2 clause1 clause2) (let ((var1 (genvar)) (var2 (genvar))) `(let* ((,var2 ,clause2) (,var1 ,clause1)) (if (> ,var2 ,var1) ,var2 ,var1)))) (local-syntax (max-macro . clauses) (let ((n-clauses (length clauses))) (cond ((zero? n-clauses) (error "max requires at least one argument")) ((= 1 n-clauses) (car clauses)) (else `(max-macro2 ,(car clauses) (max-macro ,@(cdr clauses))))))) (local-syntax (min-macro2 clause1 clause2) (let ((var1 (genvar)) (var2 (genvar))) `(let* ((,var2 ,clause2) (,var1 ,clause1)) (if (< ,var2 ,var1) ,var2 ,var1)))) (local-syntax (min-macro . clauses) (let ((n-clauses (length clauses))) (cond ((zero? n-clauses) (error "min requires at least one argument")) ((= 1 n-clauses) (car clauses)) (else `(min-macro2 ,(car clauses) (min-macro ,@(cdr clauses))))))) (let* ((generate-bytecodes-for-max2 (lambda () (let ((noswap (generate-symbol 'noswap))) (copy `((load-stk 1) (load-stk 1) (<) (branch-nil ,noswap) (swap 1) (label ,noswap) (blast 1) ))))) (generate-bytecodes-for-max (lambda (n) (cond ((zero? n) (error "max requires at least one argument")) ((= 1 n) '()) (else (splice (map (lambda (ignore) (generate-bytecodes-for-max2)) (iota (- n 1))))))))) (define-constant max (make-fancy-open-coded-operation (list foldable-mixin) generate-bytecodes-for-max nil 1))) (let* ((generate-bytecodes-for-min2 (lambda () (let ((noswap (generate-symbol 'noswap))) (copy `((load-stk 1) (load-stk 1) (<) (branch-nil ,noswap) (swap 1) (label ,noswap) (blast 1) ))))) (generate-bytecodes-for-min (lambda (n) (cond ((zero? n) (error "min requires at least one argument")) ((= 1 n) '()) (else (splice (map (lambda (ignore) (generate-bytecodes-for-min2)) (iota (- n 1))))))))) (define-constant min (make-fancy-open-coded-operation (list foldable-mixin) generate-bytecodes-for-min nil 1))) (labels (((max-helper-1 a) a) ((max-helper-2 a b) (max-macro a b)) ((max-helper-3 a b c) (max-macro a b c)) ((max-helper-4 a b c d) (max-macro a b c d)) ((max-helper-5+ a b c d e . rest) (let ((max-so-far (max-macro a b c d e))) (cond ((> (rest-length rest) 3) (max-helper-5+ max-so-far . rest)) ((= (rest-length rest) 3) (max-helper-4 max-so-far . rest)) ((= (rest-length rest) 2) (max-helper-3 max-so-far . rest)) ((= (rest-length rest) 1) (max-helper-2 max-so-far . rest)) (else max-so-far))))) (add-method (max (object) . rest) (cond ((> (rest-length rest) 4) (max-helper-5+ . rest)) ((= (rest-length rest) 4) (max-helper-4 . rest)) ((= (rest-length rest) 3) (max-helper-3 . rest)) ((= (rest-length rest) 2) (max-helper-2 . rest)) ((= (rest-length rest) 1) (max-helper-1 . rest)) (else (error "MAX requires at least one argument"))))) (labels (((min-helper-1 a) a) ((min-helper-2 a b) (min-macro a b)) ((min-helper-3 a b c) (min-macro a b c)) ((min-helper-4 a b c d) (min-macro a b c d)) ((min-helper-5+ a b c d e . rest) (let ((min-so-far (min-macro a b c d e))) (cond ((> (rest-length rest) 3) (min-helper-5+ min-so-far . rest)) ((= (rest-length rest) 3) (min-helper-4 min-so-far . rest)) ((= (rest-length rest) 2) (min-helper-3 min-so-far . rest)) ((= (rest-length rest) 1) (min-helper-2 min-so-far . rest)) (else min-so-far))))) (add-method (min (object) . rest) (cond ((> (rest-length rest) 4) (min-helper-5+ . rest)) ((= (rest-length rest) 4) (min-helper-4 . rest)) ((= (rest-length rest) 3) (min-helper-3 . rest)) ((= (rest-length rest) 2) (min-helper-2 . rest)) ((= (rest-length rest) 1) (min-helper-1 . rest)) (else (error "MIN requires at least one argument"))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;(define-instance exp operation) ;;; Make the usual equality tests work on numbers. (dolist (op (list eqv? equal?)) (add-method (op (number) x y) (and (eq? (get-type x) (get-type y)) (= x y))) (add-method (op (fixnum) x y) (eq? x y))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Open code EVEN? and ODD? sometime in the future. (define-constant even? (add-method ((make (mix-types oc-mixer (list foldable-mixin operation))) (integer) x) (zero? (remainder x 2)))) (define-constant odd? (add-method ((make (mix-types oc-mixer (list foldable-mixin operation))) (integer) x) (not (zero? (remainder x 2))))) (define-instance exact? operation) (define-instance inexact? operation) (add-method (exact? (number) x) #f) (add-method (exact? (rational) x) #t) (add-method (inexact? (number) x) (not (exact? x))) ;;; eof oaklisp-1.3.7/src/world/obsolese.oak000066400000000000000000000025031332762442600174220ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang and Barak A. Pearlmutter ;;; A macro for declaring an obsolescent synonym for a newly renamed operation. ;;; BUGS: I doubt this works for settable operations. Perhaps this should ;;; operate at the locale level, so it could catch any reference. (define-syntax (define-old-name old new) `(define ,old (let ((already-warned #f)) (lambda ( . args ) (unless already-warned (set! already-warned t) (format standard-error ,(format #f "~~&Warning: ~A is obsolete, use ~A instead.~~%" old new)) (set! ,old ,new)) (,new . args))))) ;;; eof oaklisp-1.3.7/src/world/op-error.oak000066400000000000000000000052251332762442600173600ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1986 Kevin J. Lang and Barak A. Pearlmutter ;;; This entry point strips off the arg field that we don't care about ;;; that the emulator stuck on because funcall is an arged ;;; instruction. (define (no-handler-for-operation n . args) (listify-args failed-funcall . args)) ;;; Leave autoforcing turned off until the facility actually comes up. (define forcible-magic #f) ;;; This function actually does the work. (define (failed-funcall args) (destructure (op . args) args (cond ;; It would be nice if the user level error system could ;; handle this: ((and forcible-magic ;; IS-A? not used because it might force the promise, and ;; then the promse would end up not getting forced. Clear? (subtype? (get-type op) forcible)) (apply (force op) args)) ((not (is-a? op operation)) (signal not-an-operation op args)) ((and (not (null? args)) (is-a? op locatable-operation) (has-method? (get-type (car args)) (locater op))) (when monitor-for-bruce (%write-char #\%)) (contents (apply (locater op) args))) ;; In an ideal world this would be handled at user level: ((and forcible-magic (not (null? args)) ;; IS-A? not used because it might force the promise, and ;; then the promse would end up not getting forced. Clear? (subtype? (get-type (car args)) forcible)) (apply op (force (car args)) (cdr args))) (else (signal operation-not-found op args))))) (set! (nth %arged-tag-trap-table 21) no-handler-for-operation) (set! (nth %arged-tag-trap-table 22) no-handler-for-operation) ;;; This is in direct analogy with the above. (define (no-^super-handler n . args) (listify-args failed-^super . args)) (define (failed-^super args) (destructure (the-type op . args) args (signal ^super-not-found the-type op args))) (set! (nth %arged-tag-trap-table 33) no-^super-handler) (set! (nth %arged-tag-trap-table 34) no-^super-handler) ;;; eof oaklisp-1.3.7/src/world/operations.oak000066400000000000000000000113671332762442600200020ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Define open-codable operations. ;; (define-instance open-coded-mixin type '(byte-code-list n-arguments n-values) '()) (define-instance fixnum-open-coded-mixin type '() (list open-coded-mixin)) (define-instance locative-open-coded-mixin type '() (list open-coded-mixin)) (define-instance object-open-coded-mixin type '() (list fixnum-open-coded-mixin locative-open-coded-mixin)) (define-instance foldable-mixin type '() '()) (define-instance backwards-args-mixin type '() '()) ;;; Was for backward compatibility. ;;;(define no-side-effects-mixin foldable-mixin) (add-method (initialize (open-coded-mixin byte-code-list n-arguments n-values) self blist nargs nvals) (set! byte-code-list blist) (set! n-arguments nargs) (set! n-values nvals) ;; NOTE: this is a hack; mix-types should install an appropriate initialize ;; method, and then we'd be able to brag about mix-types more. ;; Okay, now for an explanation. Without the cond, you just ^super to ;; operation, and then settable- and locatable- operations don't get ;; initialized correctly, oops. (^super (cond ((is-a? self locatable-operation) locatable-operation) ((is-a? self settable-operation) settable-operation) (else operation)) initialize self)) (create-accessors open-coded-mixin get- byte-code-list n-arguments n-values) (define-instance oc-mixer mixin-manager) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Define locatable operations and contents. ;; The order of definitions here is very important. ;; (define-instance settable-operation type '(the-setter) (list operation)) (add-method (initialize (settable-operation the-setter) self) (set! the-setter (make operation)) (^super operation initialize self)) (define-instance locatable-operation type '(the-locater) (list settable-operation)) (define-constant-instance setter (mix-types oc-mixer (list foldable-mixin locatable-operation))) (add-method (setter (settable-operation the-setter) self) the-setter) (add-method ((setter setter) (settable-operation the-setter) self new-setter) (set! the-setter new-setter)) (define-constant-instance contents (mix-types oc-mixer (list locative-open-coded-mixin locatable-operation)) '((contents)) 1 1) (set! #|define-instance|# (setter contents) (make (mix-types oc-mixer (list locative-open-coded-mixin operation)) '((set-contents)) 2 1)) ;;; CONTENTS is open coded. (add-method (contents (locative) self) (contents self)) ;; As is (SETTER CONTENTS). (add-method ((setter contents) (locative) self new-value) (set! (contents self) new-value)) (add-method (initialize (locatable-operation the-locater) self) (set! the-locater (make operation)) (^super settable-operation initialize self) ;; It's harder to jam this guy down into the error system. (add-method ((setter self) (object) composite-object new-value) (when monitor-for-bruce (%write-char #\@)) (set! (contents (the-locater composite-object)) new-value)) #| (add-method (self (object) composite-object) (when monitor-for-bruce (%write-char #\%)) (contents (the-locater composite-object))) |# self) (define-constant-instance locater (mix-types oc-mixer (list foldable-mixin locatable-operation))) (add-method (locater (locatable-operation the-locater) self) the-locater) (add-method ((locater locater) (locatable-operation the-locater) self) (make-locative the-locater)) (set! #|define-instance|# (locater setter) (make operation)) (add-method ((locater setter) (settable-operation the-setter) self) (make-locative the-setter)) (set! #|define-instance|# (locater contents) (make (mix-types oc-mixer (list locative-open-coded-mixin operation)) '() 1 1)) (add-method ((locater contents) (locative) self) self) (define-constant-instance identity (mix-types oc-mixer (list object-open-coded-mixin operation)) '() 1 1) (add-method (identity (object) self) self) ;;; eof oaklisp-1.3.7/src/world/ops.oak000066400000000000000000000027101332762442600164100ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1987 Kevin J. Lang and Barak A. Pearlmutter ;;; make some operations before their definition files (define-instance print operation) (define-instance fill! operation) (define-instance equal? operation) (define-instance reverse operation) (define-instance reverse! operation) (define-instance copy operation) (define-instance remove operation) (define-instance remove-if operation) (define-instance subseq operation) (define-instance subsequence? operation) (define-constant-instance length settable-operation) (define-constant-instance nth locatable-operation) (define-constant-instance present? locatable-operation) ;early error messages shouldn't die. (add-method (print (object) self stream) (write-char stream #\&)) ;;; eof oaklisp-1.3.7/src/world/patch-locales.oak000066400000000000000000000021531332762442600203270ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter (define (patch-locales) (iterate go ((varloc %%varloc)(symloc %%symloc)(count 0)) (print-noise #\&) (when (< count %%nvars) (set! (variable-here? system-locale (%set-tag symloc %pointer-tag)) varloc) (go (%increment-locative varloc 1) (%increment-locative symloc %%symsize) (+ 1 count))))) (patch-locales) oaklisp-1.3.7/src/world/patch-symbols.oak000066400000000000000000000020001332762442600203640ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter (iterate go ((curloc %%symloc)(count 0)) (print-noise #\~) (when (< count %%nsyms) (let ((this-one (%set-tag curloc %pointer-tag))) (intern this-one) (go (%increment-locative curloc %%symsize) (+ 1 count))))) ;;; eof oaklisp-1.3.7/src/world/patch0symbols.oak000066400000000000000000000020041332762442600203730ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter (iterate go ((curloc %%symloc)(count 0)) (when (< count %%nsyms) (let ((this-one (%crunch (%data curloc) %pointer-tag))) (set! ((%slot 0) this-one) symbol) (go (%increment-locative curloc %%symsize) (+ 1 count))))) ;;; eof oaklisp-1.3.7/src/world/peephole.oak000066400000000000000000000146571332762442600174250ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Barak A. Pearlmutter and Kevin J. Lang ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; peephole optimizer ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; This is a rewrite of the peephole optimizer that should both ;;; faster and more modular. ;;; Interface function: (peephole-optimize instruction-list). Extra fields ;;; in the instructions are comments. Labels are bare symbols in the list. (local-syntax peep (lambda (form) `(define-crunch peephole ,@(cdr form)))) ;;; Single instruction optimizations: (peep (BLAST 1) => (BLT-STK 1 1)) (peep (POP 0) => ) (peep (BLT-STK ,n 0) => ) (peep (BLT-STK 0 ,n) => (POP ,n)) ;(peep (NOOP) => ) ;;; Pure branches: (peep (LABEL ,l) (BRANCH ,l) => 1 (load-glo-con infinite-loop) (load-glo-con signal)(store-nargs 1) (funcall-cxt)) (peep (forall x branch in0) (,x ,l) (LABEL ,l) => 2) (peep (forall x branch in1) (,x ,l) (LABEL ,l) => (POP 1) 2) ;;; Branch interactions: (peep (NOT)(BRANCH-NIL ,l) => (BRANCH-T ,l)) (peep (NOT)(BRANCH-T ,l) => (BRANCH-NIL ,l)) (peep (forall x in0 out1 notnil nosides)(,x)(BRANCH-T ,l) => (BRANCH ,l)) (peep (forall x in0 out1 notnil nosides)(,x)(BRANCH-NIL ,l) => ) (peep (forall x in1 out1 notnil nosides)(,x)(BRANCH-T ,l) =>(POP 1)(BRANCH ,l)) (peep (forall x in1 out1 notnil nosides)(,x)(BRANCH-NIL ,l) => (POP 1)) (peep (forall x in2 out1 notnil nosides)(,x)(BRANCH-T ,l) =>(POP 2)(BRANCH ,l)) (peep (forall x in2 out1 notnil nosides)(,x)(BRANCH-NIL ,l) => (POP 2)) ;;; Pure stack motion: (peep (SWAP ,n)(SWAP ,n) => ) (peep (BLT-STK ,a ,b) (BLT-STK ,c ,d) => (>= a c) (>= (+ c d) a) (< (+ b d) 17) => (BLT-STK ,c ,(+ b d))) (peep (BLT-STK ,g ,n) (POP ,m) => (<= g m) => (POP ,(+ n m))) (peep (LOAD-STK ,k)(BLT-STK 1 ,n) => (> n k) => (POP ,k) (BLT-STK 1 ,(- n (+ k 1)))) (peep (LOAD-STK ,k)(BLT-STK 1 ,n) => (<= n k) => (POP ,n) (LOAD-STK ,(- k n))) (peep (LOAD-STK ,n)(BLAST ,(+ n 1)) => ) (peep (LOAD-STK ,n)(STORE-STK ,(+ n 1)) => 1) (peep (LOAD-STK 1) (BLT-STK 2 1) => (SWAP 1)) (peep (LOAD-STK 1) (BLT-STK 2 2) => (BLAST 2)) (peep (LOAD-STK 2) (BLT-STK 2 2) =>(BLT-STK 1 1)(SWAP 1)) (peep (LOAD-STK ,k)(BLT-STK ,g ,n) => (>= (+ 1 k) (+ g n)) => (BLT-STK ,(- g 1) ,n) (LOAD-STK ,(- k n))) (peep (POP ,a) (POP ,b) => (POP ,(+ a b))) (peep (STORE-STK ,a)(POP ,n) => (BLAST ,a)(POP ,(- n 1))) ;;; Stack motion interactions: (peep (forall x in0 out0 ns) (,x)(BLT-STK) => 2 1) (peep (forall x in0 out1 ns) (,x)(BLT-STK ,g ,n) => (BLT-STK ,(- g 1) ,n) 1) (peep (forall x in1 out1 ns) (,x)(BLT-STK) => 2 1) ;;; Screws up peephole termination proof by using extra stack: ;(peep (forall x in2 out1 ns) (,x)(BLT-STK ,g ,n) => (BLT-STK ,(+ g 1) ,n) 1) ;;; Screws up tail recursion: ;(peep (forall x in2 out1 ns) (BLT-STK ,g ,n)(,x) => 2 (BLT-STK ,(- g 1) ,n)) (peep (forall x in0 out1 nosides) (,x) (POP ,n) => (POP ,(- n 1))) (peep (forall x in1 out1 nosides) (,x) (POP) => 2) (peep (forall x in2 out1 nosides) (,x) (POP ,n) => (POP ,(+ n 1))) (peep (forall x in2 commutes) (SWAP 1)(,x) => 2) (peep (SWAP 1)(REVERSE-CONS) => (CONS)) (peep (SWAP 1)(CONS) => (REVERSE-CONS)) ;;; to speed fibb ? ;(peep (LOAD-IMM 0) (LOAD-GLO-CON ,v) (=) => (LOAD-GLO-CON ,v) (=0?)) ;;; Miscellaneous: (peep (LOAD-IMM 0) (=) => (=0?)) (peep (LOAD-GLO ,x)(CONTENTS) => (LOAD-GLO-CON ,x)) (peep (MAKE-BP-LOC ,n)(SET-CONTENTS) => (STORE-BP ,n)) (peep (LOAD-IMM ,x)(EQ?) => (null? x) => (NOT)) (peep (LOAD-IMM ,x)(NOT) => (LOAD-IMM ,(not x))) (peep (CONS) (CAR) => (BLT-STK 1 1)) (peep (REVERSE-CONS)(CDR) => (BLT-STK 1 1)) (peep (CONS) (CDR) => (POP 1)) (peep (REVERSE-CONS)(CAR) => (POP 1)) (peep (LOCATE-CAR)(CONTENTS) => (CAR)) (peep (LOCATE-CDR)(CONTENTS) => (CDR)) (peep (LOCATE-CAR)(SET-CONTENTS) => (SET-CAR)) (peep (LOCATE-CDR)(SET-CONTENTS) => (SET-CDR)) (destructure* (t1 t2) (emit-crunchers peephole instructions-with) (define peephole/1 t1) (define peephole/2 t2)) ;;; Output rewrites: (define-crunch peepout (blt-stk 1 1) => (blast 1)) (define-crunch peepout (load-imm ,n) => (tiny-number? n) => (load-imm-fix ,n)) (define-crunch peepout (load-imm ,x) => (null? x) => (load-reg nil)) (define-crunch peepout (load-imm #t) => (load-reg t)) (define-crunch peepout (load-code (code ,ivarmap ,instrs)) => (load-code (code ,ivarmap ,(peephole-optimize instrs)))) (destructure* (t1) (emit-crunchers peepout instructions-with) (define peepout/1 t1)) ;;; Main routine: ;;; Turn this on to watch the optimizer in action. (define peeptrace #f) (let ((output-rewrite (lambda (inguy) (let ((it (peepout/1 inguy))) (if (eq? it 'nochange) inguy (car it)))))) (define (peephole-optimize instruction-list) (when peeptrace (format #t "~&~A~%" instruction-list)) (iterate step ((left '()) (right instruction-list)) (cond ((null? right) ;; Finished. (let ((e (map! output-rewrite (reverse! left)))) (when peeptrace (format #t "~A~%" e)) e)) ((null? left) ;; Maybe move right: (let* ((i (car right)) (j (peephole/1 i)) (k (cdr right))) (if (eq? j 'nochange) (step (cons i left) k) (step left (append! j k))))) (else (let* ((i2 (car right)) (rr (cdr right)) (j (peephole/1 i2))) (if (eq? j 'nochange) (let ((att (peephole/2 (car left) i2))) (if (eq? att 'nochange) ;; Move right: (step (cons i2 left) rr) ;; Stay to left of new stuff: (block (when peeptrace (format #t "~&~A || ~A~%~A~%" (reverse left) right att)) (step (cdr left) (append! att rr))))) (step left (append! j rr))))))))) ;;; eof oaklisp-1.3.7/src/world/pl.oak000066400000000000000000000013471332762442600162270ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA (%write-char #\+) oaklisp-1.3.7/src/world/predicates.oak000066400000000000000000000040471332762442600177370ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter ;;; The following can fail for things that don't inherit from OBJECT, ;;; or that do it in the wrong order. These anomalous conditions should ;;; probably be detected at type creation time, and cause the type to be ;;; uninstantiable. (define (type-pred typ) (let ((op (make operation))) ;; Force delays and check 'em again. (add-method (op (forcible) self) (op (force self))) ;; Yes for instances of TYP. (add-method (op (typ) self) #t) ;; No is the default. (add-method (op (object) self) #f) op)) (define (inverse-type-pred typ) (let ((op (make operation))) ;; Force delays and check 'em again. (add-method (op (forcible) self) (op (force self))) ;; No for instances of TYP. (add-method (op (typ) self) #f) ;; Yes is the default. (add-method (op (object) self) #t) op)) (define number? (type-pred number)) (define integer? (type-pred integer)) (define fixnum? (type-pred fixnum)) (define symbol? (type-pred symbol)) (define string? (type-pred string)) (define char? (type-pred character)) (define pair? (type-pred pair)) (define list? (type-pred list-type)) (define atom? (inverse-type-pred pair)) (define procedure? (type-pred operation)) (define vector? (type-pred simple-vector)) ;null? is defined in subprimitive.oak. oaklisp-1.3.7/src/world/print-integer.oak000066400000000000000000000055731332762442600204100ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; How to print integers. Lets try to be fast out there... (define (digit->char x) (%fixnum->character (+ x (if (< x 10) (#^number #\0) (- (#^number #\A) 10))))) (define (print-place x place stream) (let ((q (quotient x place)) (r (remainder x place))) (write-char stream (digit->char q)) r)) (add-method (print (integer) self stream) (cond ((negative? self) (write-char stream #\-) (print (- self) stream) self) ((zero? self) (write-char stream #\0) self) (else (let ((base #*print-radix)) ;; Successive division; push onto list (iterate aux ((digits '()) (rem self)) (cond ((zero? rem) (dolist (d digits self) (write-char stream (digit->char d)))) (else (aux (cons (remainder rem base) digits) (quotient rem base))))))))) (add-method (print (fixnum) self stream) (cond ((negative? self) (write-char stream #\-) (print (- self) stream) self) ((zero? self) (write-char stream #\0) self) ((= #*print-radix 10) ;; Special case base 10. ;; Have to add another digit here is FIXNUMS get bigger, and take one ;; off if they get smaller. Because this goes in the cold world, ;; none of these can be bignums, as the world builder doesn't know ;; how to format them in memory. (labels ((d9 (lambda (q) (d8 (print-place q 100000000 stream)))) (d8 (lambda (q) (d7 (print-place q 10000000 stream)))) (d7 (lambda (q) (d6 (print-place q 1000000 stream)))) (d6 (lambda (q) (d5 (print-place q 100000 stream)))) (d5 (lambda (q) (d4 (print-place q 10000 stream)))) (d4 (lambda (q) (d3 (print-place q 1000 stream)))) (d3 (lambda (q) (d2 (print-place q 100 stream)))) (d2 (lambda (q) (d1 (print-place q 10 stream)))) (d1 (lambda (q) (write-char stream (digit->char q)) self))) (cond ((< self 10) (d1 self)) ((< self 100) (d2 self)) ((< self 1000) (d3 self)) ((< self 10000) (d4 self)) ((< self 100000) (d5 self)) ((< self 1000000) (d6 self)) ((< self 10000000) (d7 self)) ((< self 100000000) (d8 self)) (else (d9 self))))) (else (^super integer print self stream)))) ;;; eof oaklisp-1.3.7/src/world/print-list.oak000066400000000000000000000060211332762442600177130ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; A hairy print method for lists. With abbreviation, hooks for using this ;;; code to print vectors, etc. (add-method (print (null-type) self stream) (write-char stream #\() (write-char stream #\))) ;;; Print methods for lists. The trick here is a helper function, ;;; PRINT-LIST-END, which prints the tail of a list. It takes a second ;;; argument which is true if a delimiter (ie white space or "(") was ;;; just printed, a third which is the number of elements printed so fat, ;;; and a fourth which is a string to close the list with, normally ")". (set! #*print-level #f) (set! #*print-length #f) (set! #*print-escape #t) (set! #*print-radix 10) (define-instance print-list-end operation) ;;; Note: the code below is duplicated to some extent in the methods for ;;; pretty-print for pairs in print-pretty.oak, so if the code below is hacked ;;; the hacks should be copied over. (add-method (print (pair) self stream) (if (and #*print-level (<= #*print-level 0)) (write-char stream #\#) (let ((the-car (car self))) (bind ((#*print-level (and #*print-level (- #*print-level 1)))) (cond ((and (quotelike-prefix? the-car) (pair? (cdr self)) (null? (cddr self))) (write-char stream (quotelike-prefix? the-car)) (print (cadr self) stream)) ((and (eq? the-car 'unquote-splicing) (pair? (cdr self)) (null? (cddr self))) (write-string ",@" stream) (print (cadr self) stream)) ((and (eq? the-car 'unquote) (pair? (cdr self)) (null? (cddr self))) (write-char stream #\,) (print (cadr self) stream)) (else (write-char stream #\() (print-list-end self #t #*print-length ")" stream))))))) (add-method (print-list-end (object) self delimiter? len ending stream) (write-string " . " stream) (print self stream) (write-string ending stream)) (add-method (print-list-end (null-type) self delimiter? len ending stream) (write-string ending stream)) (add-method (print-list-end (pair) self delimiter? len ending stream) (when (not delimiter?) (write-char stream #\space)) (cond ((and len (= len 0)) (write-string "..." stream) (write-string ending stream)) (else (print (car self) stream) (print-list-end (cdr self) #f (and len (- len 1)) ending stream)))) ;;; eof oaklisp-1.3.7/src/world/print-noise.oak000066400000000000000000000016571332762442600200670ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter (let ((count 0)) (define (print-noise char) (if (= count 0) (%write-char #\nl)) (%write-char char) (set! count (modulo (+ 1 count) 50)))) oaklisp-1.3.7/src/world/print.oak000066400000000000000000000027641332762442600167540ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; Print methods for some standard system types that print in a simple way. (define (define-simple-print-method typ name) (add-method (print (typ) self stream) (format stream "#<~A ~!>" name self) self)) (define-simple-print-method object "Object") (define-simple-print-method type "Type") (define-simple-print-method coercable-type "Coercable") (define-simple-print-method operation "Op") (define-simple-print-method settable-operation "SettableOp") (define-simple-print-method locatable-operation "LocatableOp") (define-simple-print-method variable-length-mixin "VLmixin") (add-method (print (locative) self stream) ;(format stream "#" self (contents self)) (format stream "#" self)) ;;; eof oaklisp-1.3.7/src/world/prolog-examples.oak000066400000000000000000000224611332762442600207320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;;;;; Copyright (C) 1993 Barak A. Pearlmutter & Kevin J. Lang (define p-member (relation ((a) (p-member ,a (,a . ,_))) ((a x) (p-member ,a (,_ . ,x)) :- (p-member ,a ,x)))) (define p-append (relation ((x) (p-append () ,x ,x)) ((a x y z) (p-append (,a . ,x) ,y (,a . ,z)) :- (p-append ,x ,y ,z)))) (define p-length (relation (() (p-length () 0)) ((a x j i) (p-length (,a . ,x) ,i) :- (p-length ,x ,j) (is ,i ,(+ j 1))))) (labels ((p-reverse3 (relation ((a) (p-reverse3 () ,a ,a) :- !) ((a x y z) (p-reverse3 (,a . ,x) ,y ,z) :- (p-reverse3 ,x (,a . ,y) ,z))))) (define p-reverse (relation ((a b) (p-reverse ,a ,b) :- (p-reverse3 ,a () ,b))))) (define p-delete (relation ((x l) (p-delete ,x (,x . ,l) ,l)) ((x y z l) (p-delete ,x (,y . ,l) (,y . ,z)) :- (p-delete ,x ,l ,z)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define parent (relation ((x y) (parent ,x ,y) :- (father ,x ,y)) ((x y) (parent ,x ,y) :- (mother ,x ,y)))) (define ancestor (relation ((x y) (ancestor ,x ,y) :- (parent ,x ,y)) ((x y z) (ancestor ,x ,z) :- (parent ,y ,z) (ancestor ,x ,y)))) (define father (relation (() (father sam julie)) (() (father ted sam)))) (define mother (relation (() (mother julie dave)) (() (mother anna julie)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define pfact (relation (() (pfact 0 1) :- !) ((n m l) (pfact ,n ,m) :- (pfact ,(- n 1) ,l) (is ,m ,(* l n))))) ;; munch([],[],[]). ;; munch([A|X],[B|Y],[[A,B]|Z]) :- munch(X,Y,Z). (define munch (relation (() (munch () () ())) ((a b x y z) (munch (,a . ,x) (,b . ,y) ((,a . ,b) . ,z)) :- (munch ,x ,y ,z)))) ;; noah([],[]). ;; noah([A,B|X],[[A,B]|Y]) :- noah(X,Y). (define noah (relation (() (noah () ())) ((a b x y) (noah (,a ,b . ,x) ((,a ,b) . ,y)) :- (noah ,x ,y)))) ;; my_member1(A,L) :- append(_,[A|_],L). ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define p-member2 (relation ((a l) (p-member2 ,a ,l) :- (p-append ,_ (,a . ,_) ,l)))) ;; my_times(0,B,0) :- !. ;; my_times(A,B,C) :- D is A-1, my_times(D,B,E), C is E+B. (define ptimes (relation (() (ptimes 0 ,_ 0) :- !) ((a b c d e) (ptimes ,a ,b ,c) :- ,(set! d (- a 1)) (ptimes ,d ,b ,e) (is ,c ,(+ e b))))) ;; take_out_n(X,0,L,L) :- !. ;; take_out_n(X,N,[X|L],L1) :- M is N-1, take_out_n(X,M,L,L1). ;; take_out_n(X,N,[Y|L],[Y|L1]) :- take_out_n(X,N,L,L1). ;; splice_in_for(X,S,[],[]). ;; splice_in_for(X,S,[X|L],L1) :- splice_in_for(X,S,L,L2), append(S,L2,L1). ;; splice_in_for(X,S,[Y|L],[Y|L1]) :- splice_in_for(X,S,L,L1). ;; count_fringe([],0) :- !. ;; count_fringe([A|B],N) :- !, count_fringe(A,N1), count_fringe(B,N2), N is N1+N2. ;; count_fringe(_,1). (define count-fringe (relation (() (count-fringe () 0) :- !) ((a b n n1 n2) (count-fringe (,a . ,b) ,n) :- ! (count-fringe ,a ,n1) (count-fringe ,b ,n2) (is ,n ,(+ n1 n2))) (() (count-fringe ,_ 1)))) ;; every_third([],[]). ;; every_third([A],[A]). ;; every_third([A,_],[A]). ;; every_third([A,_,_|X],[A|Y]) :- every_third(X,Y). (define every-third (relation (() (every-third () ())) ((a) (every-third (,a) (,a))) ((a) (every-third (,a ,_) (,a))) ((a x y) (every-third (,a ,_ ,_ . ,x) (,a . ,y)) :- (every-third ,x ,y)))) ;; count_down(0,[blast_off]) :- !. ;; count_down(N,[N|X]) :- M is N-1, count_down(M,X). ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This loops after finding one solution when used in right-to-left mode. ; Putting a cut in the first clause would cause it to find no solutions. ; This behavior is consistent with quintus prolog. ; By the way, this is a standard benchmark for prolog systems, and ; and we appear to be about 1000 times slower than quintus prolog. ;; naive_reverse([],[]). ;; naive_reverse([A|X],Y) :- naive_reverse(X,X1), append(X1,[A],Y). (define naive-reverse (relation (() (naive-reverse () ())) ((a x x1 y) (naive-reverse (,a . ,x) ,y) :- (naive-reverse ,x ,x1) (p-append ,x1 (,a) ,y)))) (define weird-reverse (relation (() (weird-reverse () ())) ((a x x1 y) (weird-reverse (,a . ,x) ,y) :- (weird-reverse ,x ,x1) (oak-append ,y ,x1 (,a))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; this version works in both directions ;; good-reverse(A,B) :- good-reverse(A,[],B). ;; good-reverse([],A,A) :- !. ;; good-reverse([A|X],Y,Z) :- good-reverse(X,[A|Y],Z). (define good-reverse (relation ((a b) (good-reverse ,a ,b) :- (good-reverse3 ,a () ,b)))) (define good-reverse3 (relation ((a) (good-reverse3 () ,a ,a) :- !) ((a x y z) (good-reverse3 (,a . ,x) ,y ,z) :- (good-reverse3 ,x (,a . ,y) ,z)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; this code doesn't work from right to left, even with quintus prolog ;; bad_reverse(A,B) :- bad_reverse(A,[],B). ;; bad_reverse([],A,A). ;; bad_reverse([A|X],Y,Z) :- !, bad_reverse(A,B), bad_reverse(X,[B|Y],Z). ;; bad_reverse(X,[],X). (define bad-reverse (relation ((a b) (bad-reverse ,a ,b) :- (bad-reverse3 ,a () ,b)))) (define bad-reverse3 (relation ((a) (bad-reverse3 () ,a ,a)) ((a b x y z) (bad-reverse3 (,a . ,x) ,y ,z) :- ! (bad-reverse ,a ,b) (bad-reverse3 ,x (,b . ,y) ,z)) ((x) (bad-reverse3 ,x () ,x)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ordered([]). ;; ordered([_]). ;; ordered([A,B|X]) :- not(B (?- (p-member ,a ,(iota 5))) ;;; A=1 more? ;;; A=2 more? ;;; A=3 more? ;;; A=4 more? ;;; A=5 more? ;;; () ;;; > (define-syntax (?- . queries) (let ((l (logic-varlist queries)) (done (genvar))) (if (null? l) ; if there are no variables in the query, we report its truth value, ; but do not search for extra ways of satisying a true statement. `(native-catch ,done ,(process-rhs queries `(lambda () (throw ,done #t)) `(throw ,done #f))) `(with-logic-vars ,l (native-catch ,done ,(process-rhs queries `(lambda () ,@(map (lambda (v) `(format #t "~A=~S " ',v ,v)) l) (unless (y-or-n? "more") (throw ,done #t))) `(throw ,done #f))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; this is similar to the ?- macro, but instead of pausing ; to print the satisfying assignments, it collects them in a list. (define-syntax (collect-solutions . queries) (let ((l (logic-varlist queries)) (done (genvar)) (solutions (genvar)) (workvar (genvar))) (cond ((zero? (length l)) (error "collect-solutions makes no sense ~a" "when the query contains no logic variables")) ((= 1 (length l)) `(with-logic-vars ,l (let ((,solutions '())) (native-catch ,done ,(process-rhs queries `(lambda () (set! ,solutions (cons (deep-copy ,(car l)) ,solutions))) `(throw ,done #f))) (reverse! ,solutions))) ) (else `(with-logic-vars ,l (let ((,solutions '())) (native-catch ,done ,(process-rhs queries `(lambda () (let ((,workvar '())) ,@(map (lambda (v) `(set! ,workvar (cons (deep-copy ,v) ,workvar))) (reverse l)) (set ,solutions (cons ,workvar ,solutions)))) `(throw ,done #f))) (reverse! ,solutions))) ) ))) (define (deep-copy x) (let ((x (follow-chain x))) (cond ((eq? x _) _) ((logic-variable? x) x) ; used to be (make regular-logic-variable) ((pair? x) (let ((a (deep-copy (car x))) (d (deep-copy (cdr x)))) (if (and (eq? a (car x)) (eq? d (cdr x))) x (cons a d)))) (else x)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Use this macro if you want prolog to just run through the various ; solutions without doing anything with them. This is useful for ; benchmarking, or when oaklisp side effects are used inside the ; prolog program to record the answers. (define-syntax (justrun . queries) (let ((l (logic-varlist queries)) (done (genvar))) `(with-logic-vars ,l (native-catch ,done ,(process-rhs queries `(lambda () nil) `(throw ,done #f)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Logic variables can be integrated with the rest of the Oaklisp ;;; language in a principled way. In this file we first define a new ;;; kind of forcible object, a logic variable, and then use it to ;;; write a general unifier with the ability to back out of ;;; unifications. This in turn is used to build a prolog system which ;;; is slightly compiler-based, and which is integrated seamlessly ;;; with the rest of Oaklisp. (define-instance logic-variable type '() (list forcible)) (add-method (force (logic-variable) self) (error "Attempt to force ~S, an undetermined logic variable." self)) ;;; Note: A reserved object, a special unbound logic variable value, ;;; could be stored in the val slot, eliminating the need for the flag. (define-instance regular-logic-variable type '(flag val) (list logic-variable object)) (add-method (initialize (regular-logic-variable flag) self) (set! flag #f) self) (add-method (force (regular-logic-variable flag val) self) (if flag val (^super logic-variable force self))) (add-method (print (regular-logic-variable flag val) self stream) (if (and flag #*forcible-print-magic) (^super logic-variable print self stream) (format stream "#_~!" self))) (add-method (print (regular-logic-variable flag val) self stream) (if (and flag #*forcible-print-magic) (^super logic-variable print self stream) (format stream "#_~!" self))) (add-method (print (regular-logic-variable flag val) self stream) (cond ((and flag #*forcible-print-magic) (^super logic-variable print self stream)) (else (format stream "#_~!" self)))) (add-method (print-list-end (regular-logic-variable flag val) self . args) (if (and flag #*forcible-print-magic) (print-list-end (force self) . args) (^super object print-list-end self . args))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; For convenience and efficiency, _ is bound to a magic logic ;;; variable that doesn't really get unified to things. (define-instance anonymous-logic-variable type '() (list logic-variable object)) (add-method (print (anonymous-logic-variable) self stream) (format stream "#_")) (define-instance _ anonymous-logic-variable) ;;; For efficiency, this is used, once, deep inside the unifier. (define-instance follow-chain operation) (add-method (follow-chain (regular-logic-variable flag val) self) (if flag (follow-chain val) self)) (add-method (follow-chain (object) self) self) (define logic-variable? (type-pred logic-variable)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; This gets passed two args and a continuation, which is called when ;;; the args are unified. Then the unification is backed out of, and ;;; then unify returns. (define-instance unify operation) (add-method (unify (regular-logic-variable flag val) self other k) (cond ((eq? self other) (k)) (flag (unify val other k)) (else ;; The wind-protect wouldn't have to protect the entry part ;; except for first class continuations. The exit part is ;; protected because ! FAIL does a throw. (wind-protect (block (set! val other) (set! flag #t)) (k) (block (set! flag #f) (set! val #f)))))) (add-method (unify (object) self other k) (let ((other (follow-chain other))) (cond ((eq? self other) (k)) ((logic-variable? other) (unify other self k)) ;; ?? ;; ((equal? self other) (k)) ((and (pair? self) (pair? other)) (unify (car self) (car other) (let ((cdr-self (cdr self)) (cdr-other (cdr other))) (lambda () (unify cdr-self cdr-other k))))) ;; ((and (eq? (get-type self) (get-type other)) (= (%get-length self) (%get-length other)) (= (%tag self) %pointer-tag)) (slotsky-unify self (%set-tag self %locative-tag) other (%set-tag other %locative-tag) 1 (%get-length self) k)) (else #f)))) (add-method (unify (anonymous-logic-variable) a b k) (k)) (define (slotsky-unify o0 loc0 o1 loc1 i len k) (if (= i len) (k) (unify (contents (%increment-locative loc0 i)) (contents (%increment-locative loc1 i)) (lambda () (slotsky-unify o0 loc0 o1 loc1 (+ i 1) len k))))) ;;; A macro for making some logic variables for a while. (define-syntax (with-logic-vars varlist . body) `(let ,(map (lambda (v) `(,v (make regular-logic-variable))) varlist) ,@body)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (labels (((ordered-union a b) (iterate next ((a (reverse a))(b b)) (cond ((null? a) b) ((memq (car a) b) (next (cdr a) b)) (else (next (cdr a) (cons (car a) b))))))) (define (logic-varlist x) (cond ((comma-expr? x) (cond ((pair? (cadr x)) '()) ((eq? (cadr x) '_) '()) ; don't shadow global logic var _ (else (list (cadr x))))) ((pair? x) (ordered-union (logic-varlist (car x)) (logic-varlist (cdr x)))) (else '())))) (define (y-or-n? prompt) (iterate aux () (format #t "~A? " prompt) (flush standard-output) (flush standard-input) (let ((c (read-char standard-input))) (cond ((eq? c #\newline) #t) ((eq? c #\y) (read-char standard-input) #t) ((eq? c #\n) (read-char standard-input) #f) (else (format #t "type ('y' or #\newline) or 'n' ... ~%") (aux)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Some stuff for dealing with reader syntax and backquotes and such. ;;; Is x of the form ,x ? (define (comma-expr? x) (and (pair? x) (eq? (car x) 'unquote))) ;;; Like putting a backquote in front of something: (define (backquotify x) (list 'quasiquote x)) ;;; This emits code that unifies the expressions e1 and e2, executes ;;; the code, ununifies them, and returns. (define (sym-unify e1 e2 code) (cond ((or (comma-expr? e1) (comma-expr? e2)) (if (or (equal? e1 ',_) (equal? e2 ',_)) code `(unify ,(backquotify e1) ,(backquotify e2) ,(lambdify code)))) ((and (pair? e1) (pair? e2)) (sym-unify (car e1) (car e2) (sym-unify (cdr e1) (cdr e2) code))) ((equal? e1 e2) code) (else (warning "Unable to symbolically unify ~s and ~s." e1 e2) '#f))) ;;; This takes a chunk of code, and makes it into a chunk of code that ;;; returns a function which, if called, does the same thing as the ;;; original code. (define (lambdify code) (destructure** code ((x) x) (otherwise `(lambda () ,code)))) (define (has-! clauses) (and (not (null? clauses)) (or (memq '! (cddar clauses)) (has-! (cdr clauses))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (process-clauses clauses cformals k cutfail) (if (null? clauses) '#f (process-clause (car clauses) cformals k (process-clauses (cdr clauses) cformals k cutfail) cutfail))) (define (process-clause clause formals k failcode cutfail) (destructure** clause ((vars lhs) (set save-vars vars) (set save-lhs lhs) `(block (with-logic-vars ,vars ,(sym-unify formals (cdr lhs) `(,k))) ,failcode)) ((vars lhs ':- . rhs) (set save-vars vars) (set save-lhs lhs) (set save-rhs rhs) `(block (with-logic-vars ,vars ,(sym-unify formals (cdr lhs) (process-rhs rhs k cutfail))) ,failcode)))) (define (process-rhs rhs k cutfail) (if (null? rhs) `(,k) (let ((munched-rest (process-rhs (cdr rhs) k cutfail))) (cond ((eq? (car rhs) '!) `(block ,munched-rest ,cutfail)) ((comma-expr? (car rhs)) `(when ,(cadar rhs) ,munched-rest)) (else `(,(caar rhs) ,(lambdify munched-rest) ,@(map backquotify (cdar rhs)))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (is k x y) (unify x y k)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Here is a more complicated version that contains a couple ; of optimizations which improves speed on the knights-tour ; problem by about a factor of 2. ; When a variable first occurs on the left hand side as ; a bare match with an input argument, we just use let ; to bind an oaklisp variable to whatever value came in, rather ; than making a new logical variable and then unifying it ; with the incoming argument. ; Also we provide a mechanism for set! so that temporary ; RHS variables can be implemented as ordinary oaklisp variables. (define (analyse-lhs-variables input-list) (let* ((vars-to-copy '()) (seen-it '()) (hacked-list (map (lambda (expr expr-no) (if (comma-expr? expr) (let ((the-variable (cadr expr))) (if (memq the-variable seen-it) expr (block (set seen-it (cons the-variable seen-it)) (set vars-to-copy (cons (cons the-variable expr-no) vars-to-copy)) (list 'unquote 'first-reference the-variable) ))) (block (set seen-it (union seen-it (all-atoms-in expr))) expr))) input-list (iota0 (length input-list)) ))) (list (reverse vars-to-copy) hacked-list))) (define (all-atoms-in inlist) (cond ((pair? inlist) (union (all-atoms-in (car inlist)) (all-atoms-in (cdr inlist)))) ((null? inlist) '()) (else (list inlist)))) (define (sym-unify e1 e2 code) (cond ((and (comma-expr? e1) (comma-expr? e2) (= 3 (length e2)) (eq? 'first-reference (second e2))) ; the value was directly copied by hacked-with-logic-vars, ; so we don't need to unify here. code) ((or (comma-expr? e1) (comma-expr? e2)) (cond ((or (equal? e1 ',_) (equal? e2 ',_)) code) ; not always a win ; ((or (null? e2) (number? e2) (symbol? e2)) ; `(when (unifiable-with-constant? ,(backquotify e1) ,(backquotify e2)) ; (unify ,(backquotify e1) ; ,(backquotify e2) ; ,(lambdify code)))) (else `(unify ,(backquotify e1) ,(backquotify e2) ,(lambdify code))))) ((and (pair? e1) (pair? e2)) (sym-unify (car e1) (car e2) (sym-unify (cdr e1) (cdr e2) code))) ((equal? e1 e2) code) (else (warning "Unable to symbolically unify ~s and ~s." e1 e2) '#f))) (define-syntax (hacked-with-logic-vars varlist formal-list lhs-vars-to-copy rhs-vars-to-set . body) `(let ,(map (lambda (v) (cond ((assq v lhs-vars-to-copy) ; Copy the incoming argument now so that ; we don't have to unify later. `(,v ,(nth formal-list (cdr (assq v lhs-vars-to-copy))))) ((memq v rhs-vars-to-set) ; we are going to assign a value later with set!, ; we don't need to make a logic variable now. `(,v variable-undefined-value)) (else `(,v (make regular-logic-variable))))) varlist) ,@body)) (define (process-clause clause formals k failcode cutfail) (destructure** clause ((vars lhs) (let* ((result (analyse-lhs-variables (cdr lhs))) (vars-to-copy (car result)) (hacked-lhs (second result))) `(block (hacked-with-logic-vars ,vars ,(map second formals) ,vars-to-copy () ,(sym-unify formals hacked-lhs `(,k))) ,failcode))) ((vars lhs ':- . rhs) (bind ((#*rhs-vars-to-set '())) (let* ((result (analyse-lhs-variables (cdr lhs))) (vars-to-copy (car result)) (hacked-lhs (second result)) (processed-rhs (process-rhs rhs k cutfail))) `(block (hacked-with-logic-vars ,vars ,(map second formals) ,vars-to-copy ,#*rhs-vars-to-set ,(sym-unify formals hacked-lhs processed-rhs)) ,failcode)))))) (define (process-rhs rhs k cutfail) (if (null? rhs) `(,k) (let ((munched-rest (process-rhs (cdr rhs) k cutfail))) (cond ((eq? (car rhs) '!) `(block ,munched-rest ,cutfail)) ; this is the special hack for set! forms ((let ((x (car rhs))) (and (comma-expr? x) (pair? (second x)) (= 3 (length (second x))) (memq (car (second x)) '(set set!)))) (set #*rhs-vars-to-set (cons (second (second (car rhs))) #*rhs-vars-to-set)) `(block ,(second (car rhs)) ,munched-rest)) ((comma-expr? (car rhs)) `(when ,(cadar rhs) ,munched-rest)) (else `(,(caar rhs) ,(lambdify munched-rest) ,@(map backquotify (cdar rhs)))))))) ; (define-instance unifiable-with-constant? operation) ; ; (add-method (unifiable-with-constant? (regular-logic-variable flag val) ; self the-constant) ; (if flag ; (unifiable-with-constant? val the-constant) ; #t)) ; ; (add-method (unifiable-with-constant? (object) self the-constant) ; (eq? self the-constant)) ;;; eof oaklisp-1.3.7/src/world/promise.oak000066400000000000000000000077651332762442600173040ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Barak A. Pearlmutter & Kevin J. Lang ;;; Promises. There is an abstract type, FORCIBLE, which the really ;;; low level system code checks for when trapping out. Things that ;;; actually delay their computation, or do it concurrently, or read ;;; it off disk, or whatever, should inherit from it. ;; Moved back much earlier, so system code can add methods for forcible. ;;(define-instance forcible type '() '()) (define-instance force operation) (add-method (force (object) self) self) (add-method (force (forcible) self) (bind ((#*forcible-print-magic #f)) (error "Attempt to force ~S, which has no FORCE method." self))) ;;; This switch determines whether forcible things force themselves before ;;; printing. ;;; Possible values are: ;;; ;;; value style of (DELAY 'FOO) ;;; ;;; #F # ;;; INDICATE #[DELAY FOO 3462] ;;; TRANSPARENT FOO (set! #*forcible-print-magic 'transparent) (add-method (print (forcible) self s) (let ((f #*forcible-print-magic)) (cond ((eq? f 'transparent) (print (force self) s)) ((eq? f '#f) (format s "#" self)) ((eq? f 'indicate) (format s "#[DELAY ~S ~!]" (force self) self)) (else (error "Unknow FORCIBLE-PRINT-MAGIC option ~S." f))))) (add-method (print-list-end (forcible) self . args) (if #*forcible-print-magic (print-list-end (force self) . args) (^super object print-list-end self . args))) ;;; Simple R3RS style promises, except they get automatically forced. (define-instance promise type '(flag val) (list forcible object)) (add-method (initialize (promise flag val) self oper) (set! flag #f) (set! val oper) self) (add-method (force (promise flag val) self) (if flag val (let ((newval (val))) ;; Critical section; would be a good idea to disable interrupts. (set! flag #t) (set! val newval)))) (define-syntax delay (lambda (form) `(make promise (lambda () . ,(cdr form))))) ;;; This switch determines whether the error system forces things ;;; and retries operations that fail due to something being a forcible ;;; object. Time to turn it on... (set! forcible-magic #t) ;;; When multiple dispatch is up, this should dispatch on the second arg ;;; symetrically. (add-method (eqv? (forcible) self other) (eqv? (force self) other)) #|| ;;; NOTE: Neither of these are actually activated, because IS-A? is really ;;; critical, and we don't want to actually slow down the system. Load one ;;; if you actually want to use promises and want things that do TYPECASE ;;; to work on them. All the type predicates use IS-A? (see predicates.oak) ;;; so this should make them automatically force delays too. On the other ;;; hand, the type predicates could be switched to use dispatch without ;;; warning upon suitable benchmarks. ;;; A patch to do similar things to the system predicates is commented out ;;; in predicates.oak ;;; Not modular, but maybe faster: (define (is-a? obj typ) (iterate is-a? ((obj obj)) (let ((typ2 (get-type obj))) (if (and forcible-magic (subtype typ2 forcible)) (is-a? (force obj) typ) (subtype? typ2 typ))))) ;;; Modular, but maybe slower: (add-method (is-a? (forcible) self typ) (if forcible-magic (is-a? (force self) typ) (^super object is-a? self typ))) ||# ;;; eof oaklisp-1.3.7/src/world/random.oak000066400000000000000000000023351332762442600170720ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 2002, Barak A. Pearlmutter ;;; Modified from code by Troy Ross (define random-device "/dev/urandom") (define random-device-stream #f) (define random256 (lambda () (unless random-device-stream (set! random-device-stream (open-input-file random-device))) (#^number (read-char random-device-stream)))) ;;; (define random259200 ;;; (let ((rand-seed 444)) ;;; (lambda () ;;; (set! rand-seed (modulo (+ 54773 (* 7141 rand-seed)) 259200)) ;;; rand-seed))) oaklisp-1.3.7/src/world/rational.oak000066400000000000000000000151641332762442600174270ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986,7,8 Kevin J. Lang & Barak A. Pearlmutter. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Define the FRACTION type, which consists of those rationals that ;;; are not integers. (define-instance fraction type '(the-numerator the-denominator) (list rational object)) (add-method (initialize (fraction the-numerator the-denominator) self top bot) (set! the-numerator top) (set! the-denominator bot) self) ;;; This controls whether fractions are printed 7/3, 21/3, or 2.333333. ;;; ;;; Possible values: NORMAL, FANCY, and FLOAT for regular (potentially ;;; improper) fractions, proper ones, and decimal series. (set! #*fraction-display-style 'normal) ;;; This controls how many digits past the decimal point are printed in ;;; FLOAT mode. (set! #*float-digits 10) (add-method (print (fraction the-numerator the-denominator) self stream) (case #*fraction-display-style ((normal) (format stream "~A/~A" the-numerator the-denominator)) ((fancy) (let ((num (cond ((negative? the-numerator) (format stream "-") (- the-numerator)) (else the-numerator)))) (cond ((< num the-denominator) (format stream "~A/~A" num the-denominator)) (else (let* ((y (quotient num the-denominator)) (z (- num (* y the-denominator)))) (format stream "~A~A/~A" y z the-denominator)))))) ((float) (labels (((pos x) (let* ((y (truncate x)) (radix #*print-radix)) (format stream "~D." y) (iterate aux ((x (- x y)) (digits #*float-digits)) (cond ((or (zero? x) (zero? digits)) #f) (else (let* ((x (* x radix)) (y (truncate x))) (format stream "~D" y) (aux (- x y) (- digits 1))))))))) (cond ((negative? the-numerator) (format stream "-") (pos (- self))) (else (pos self))))) (else (error "Unknown fraction printing style ~S." #*fraction-display-style)))) (add-method (plus/2 (fraction the-numerator the-denominator) x y) (fselect-type y ((rational) (let ((numy (numerator y)) (deny (denominator y))) (fx/ (+ (* the-numerator deny) (* numy the-denominator)) (* the-denominator deny)))) ((complex) (plus/2 y x)) (otherwise (error "Illegal second arg: (%PLUS ~A ~A)~%" x y)))) (add-method (times/2 (fraction the-numerator the-denominator) x y) (fselect-type y ((rational) (fx/ (* the-numerator (numerator y)) (* the-denominator (denominator y)))) ((complex) (times/2 y x)) (otherwise (error "Illegal second arg: (%TIMES ~A ~A)" x y)))) (add-method (/ (rational) x y) (fselect-type y ((rational) (fx/ (* (numerator x) (denominator y)) (* (denominator x) (numerator y)))) ((complex) (/r y x)) (otherwise (error "Illegal second arg: (/ ~A ~A)" x y)))) (add-method (/r (rational) x y) (fselect-type y ((integer) (fx/ (* (denominator x) y) (numerator x))) ((rational) (fx/ (* (denominator x) (numerator y)) (* (numerator x) (denominator y)))) (otherwise (error "Illegal second arg: (/ ~A ~A)" x y)))) (add-method (minus (fraction the-numerator the-denominator) self) ;; Make the fraction directly, since no normalization will be needed. (make fraction (- the-numerator) the-denominator)) (add-method (subtract/2 (fraction the-numerator the-denominator) x y) (fselect-type y ((rational) (let ((numy (numerator y)) (deny (denominator y))) (fx/ (- (* the-numerator deny) (* numy the-denominator)) (* the-denominator deny)))) (otherwise (^super number subtract/2 x y)))) ;;;;;;;;;;;;;;;;;;;;; ;;; Comparison ;;;;;;;;;;;;;;;;;;;;; (add-method (= (fraction the-numerator the-denominator) x y) (fselect-type y ((fraction) (and (= the-numerator (numerator y)) (= the-denominator (denominator y)))) ((number) #f) (otherwise (error "Illegal second arg (= ~D ~D)." x y)))) (add-method (< (fraction the-numerator the-denominator) x y) (fselect-type y ((rational) (< (* the-numerator (denominator y)) (* (numerator y) the-denominator))) (otherwise (error "Illegal second arg (< ~D ~D)." x y)))) ;;; For speed: (add-method (negative? (fraction the-numerator) x) (negative? the-numerator)) (add-method (positive? (fraction the-numerator) x) (positive? the-numerator)) ;;;;;;;;;;;;;;;;;;;;;; (add-method (abs (fraction the-numerator the-denominator) self) (if (negative? the-numerator) ;; Sure to be no normalization, so make the fraction directly. (make fraction (- the-numerator) the-denominator) self)) #|| (add-method (sqrt (fraction the-numerator the-denominator) self) (/ (sqrt the-numerator) (sqrt the-denominator))) ||# (define-instance numerator operation) (define-instance denominator operation) (add-method (numerator (fraction the-numerator) self) the-numerator) (add-method (denominator (fraction the-denominator) self) the-denominator) (add-method (numerator (integer) self) self) (add-method (denominator (integer) self) 1) ;;;;;;;;;;;; (define (fx/ top bot) (labels (((aux top bot neg?) (if (= bot 1) (if neg? (- top) top) (let ((d (gcd top bot))) (if (= d bot) (quotient (if neg? (- top) top) bot) (make fraction (quotient (if neg? (- top) top) d) (quotient bot d))))))) (cond ((zero? bot) (error "Division by zero: (FX/ ~D ~D)." top bot)) ((zero? top) 0) ((negative? top) (if (negative? bot) (aux (- top) (- bot) #f) (aux (- top) bot #t))) (else (if (negative? bot) (aux top (- bot) #t) (aux top bot #f)))))) (define (gcd a b) (iterate gcd ((a a)(b b)) (cond ((< a b) (let ((p (* a (quotient b a)))) (if (= p b) a (gcd (- b p) a)))) ((> a b) (let ((p (* b (quotient a b)))) (if (= p a) b (gcd (- a p) b)))) (else a)))) (define (lcm a b) (cond ((or (= a 0) (= b 0)) 0) (else (/ (* a b) (gcd a b))))) ;;; eof oaklisp-1.3.7/src/world/read-char.oak000066400000000000000000000127201332762442600174370ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; Thanks to Richard O'Keefe for a few modifications ;;; Syntax: '#\' or '#\' ({'s' 'c' 'm' 'shift' 'control' 'meta'}'-')+ ;;; Where (define-hash-macro-char #\\ (lambda (stream char arg) (when arg (cerror "Ignore the font specifier." "A #~A~C was encountered, but #~C does not understand fonts yet." arg char char)) (unread-char stream char) (let* ((token (read stream)) (str (#^string token)) (len (length str))) (cond ((= len 1) (nth str 0)) (else (let ((token (upcase-first-char token))) (cond ((#^character token) => identity) (else (cerror "Supply a character to be returned instead." "The token ~S cannot be interpreted as a character." str))))))))) (define (upcase-first-char sym) (let* ((str (#^string sym)) (char (nth str 0)) (nchar (upcase char))) (cond ((eq? char nchar) sym) (else (let* ((len (length str)) (str2 (make-string len))) (dotimes (i len) (set! (nth str2 i) (nth str i))) (set! (nth str2 0) nchar) (#^symbol str2)))))) (let ((named-character-table '())) (add-method (#^character (symbol) sym) (cond ((assq sym named-character-table) => cdr) (else nil))) (add-method ((setter #^character) (symbol) sym char) (let ((char (#^character char))) (cond ((assq sym named-character-table) => (lambda (x) (set! (cdr x) char))) (else (push named-character-table (cons sym char)) char)))) (add-method (#^symbol (character) char) (cond ((rassq char named-character-table) => car) (else #f)))) ;;; Note: The ASCII name for the character with all bits off is ;;; NUL. Not NULL, N-U-L, three letters. The correct name has ;;; been added. "null" is still there so old code won't break. ;;; The ASCII name DEL for #o177 has also been added. In order ;;; to help port code from other Schemes, the following names have ;;; been added: ;;; altmode = #\esc ;;; escape = #\esc ;;; rubout = #\del ;;; They are not "standard" names (indeed, the only standard names ;;; are #\Space and #\Newline). They are placed in the table early ;;; so that the ASCII names will be generated in output. (set! (#^character 'null) 0) ; Idiosyncratic name (set! (#^character 'nul) 0) ; ASCII name. (set! (#^character 'soh) 1) (set! (#^character 'stx) 2) (set! (#^character 'etx) 3) (set! (#^character 'eot) 4) (set! (#^character 'enq) 5) (set! (#^character 'ack) 6) (set! (#^character 'bel) 7) (set! (#^character 'bs) 8) (set! (#^character 'ht) 9) (set! (#^character 'nl) 10) ; Weird name (set! (#^character 'lf) 10) ; ASCII name (set! (#^character 'vt) 11) (set! (#^character 'np) 12) ; Weird name (set! (#^character 'ff) 12) ; ASCII name (set! (#^character 'cr) 13) (set! (#^character 'so) 14) (set! (#^character 'si) 15) (set! (#^character 'dle) 16) (set! (#^character 'dc1) 17) (set! (#^character 'dc2) 18) (set! (#^character 'dc3) 19) (set! (#^character 'dc4) 20) (set! (#^character 'nak) 21) ;; Previously removed so #\^V would print as #\^V so T could read it. ;; No longer necessary, since the world builder is running in Oaklisp not T. (set! (#^character 'syn) 22) (set! (#^character 'etb) 23) (set! (#^character 'can) 24) ;; As above, used to be commented out so #\^Y would be generated for T. (set! (#^character 'em) 25) (set! (#^character 'sub) 26) (set! (#^character 'altmode) 27) ; A common name (set! (#^character 'escape) 27) ; A common name (set! (#^character 'esc) 27) ; ASCII name (set! (#^character 'fs) 28) (set! (#^character 'gs) 29) (set! (#^character 'rs) 30) (set! (#^character 'us) 31) (set! (#^character 'delete) 127) ; A common name (set! (#^character 'rubout) 127) ; A common name (set! (#^character 'del) 127) ; ASCII name ;;; These go at the end so that these characters will get printed this way. (set! (#^character 'return) 13) (set! (#^character 'newline) 10) (set! (#^character 'form) 12) (set! (#^character 'page) 12) (set! (#^character 'tab) 9) (set! (#^character 'space) 32) (set! (#^character 'backspace) 8) (set! (#^character 'bell) 7) (set! (#^character 'fluid) 22) (set! (#^character 'coercer) 25) #| (define (read-fancy-char stream) (labels (((after-quote r-charlist) (normal (cons (read-char stream) r-charlist))) ((normal r-charlist) (let* ((char (read-char stream)) (syntax (nth standard-read-table char))) (cond ((or (eq? syntax 'constituent) (and (not (symbol? syntax)) (eq? (car syntax) 'nonterminating-macro))) (normal (cons char r-charlist))) ((eq? syntax 'single-escape) (after-quote r-charlist)) (else (unread-char stream char) (parse-token (reverse! r-charlist)))))) ((parse-token charlist) ( |# oaklisp-1.3.7/src/world/read-token.oak000066400000000000000000000220111332762442600176340ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1992 Kevin J. Lang & Barak A. Pearlmutter ;;; Stuff to do token reading and parsing. ;;; This seems as nice a place as any: (set! #*input-base 10) ;;; Read tokens: NFA. Recognizes number with either the format ;;; ['-']+['/'+] or ['-']+'.'* or ;;; ['-']'.'+ Anything else except "." and "..." is a symbol. ;;; At some point this must be augmented to include general floats: ;;; ['-']{ *.+ | +['.'*] }[{'e'|'d'|'s'}*] (define (read-token stream) (let ((base #*input-base)) (labels (( (intern-it c r-charlist escaped?) ;; We're finished with this token, and it is a symbol. (unread-char stream c) (cond ((and (not escaped?) (eq? (car r-charlist) #\.) (null? (cdr r-charlist))) the-dot-token) (else (when (and (not escaped?) ;; For efficiency, ;; (equal r-charlist '(#\. #\. #\.)) ;; is expanded inline. Could this be a ;; compiler optimization? (eq? (car r-charlist) #\.) (let ((d1 (cdr r-charlist))) (and d1 (eq? (car d1) #\.) (let ((d2 (cdr d1))) (and d2 (eq? (car d2) #\.) (null? (cdr d2)))))) #|| (destructure** r-charlist (('#\. '#\. '#\.) (cerror "Treat the '...' as if it were escaped." "The token '...' can not be read unescaped.")) (otherwise )) ||# ) (cerror "Treat the '...' as if it were escaped." "The token '...' can not be read unescaped.")) (intern (#^string (reverse r-charlist))))) ) ( (digits1 c r-charlist n neg? first?) ;; We are in the first block of digits following the start of ;; the token. Preceded by an optional sign. ;; NEG? is whether a '-' started this token. ;; FIRST? is whether at least one digit has been read. (if (eq? c the-eof-token) (if first? (intern-it c r-charlist nil) (block (unread-char stream c) (if neg? (- n) n))) (let ((c-syntax (%vref/ci standard-read-table c))) (cond ((or (eq? c-syntax 'constituent) (and (not (eq? c-syntax 'whitespace)) (not (eq? c-syntax 'single-escape)) (not (eq? c-syntax 'illegal)) (eq? (car c-syntax) 'nonterminating-macro))) (cond ((digit? c base) (digits1 (read-char stream) (cons (upcase c) r-charlist) (+ (* n base) (digit-value c)) neg? #f)) ((and (not first?) (eq? c #\/)) (digits2 (read-char stream) (cons c r-charlist) 0 (if neg? (- n) n))) ((eq? c #\.) (digits3 (read-char stream) (cons c r-charlist) n 1 neg? first?)) (else (simple-symbol c r-charlist nil)))) ((eq? c-syntax 'single-escape) (read-escaped (read-char stream) r-charlist)) ((eq? c-syntax 'illegal) (simple-symbol c r-charlist nil)) ((or (eq? c-syntax 'whitespace) (eq? (car c-syntax) 'terminating-macro)) (if first? (intern-it c r-charlist nil) (block (unread-char stream c) (if neg? (- n) n)))) (else (signal bad-syntax-table-entry c c-syntax))))) ) ( (simple-symbol c r-charlist escaped?) ;; Reading something that appears to not be a number, ;; but that doesn't have any escaped characters yet. (if (eq? c the-eof-token) (intern-it c r-charlist escaped?) (let ((c-syntax (%vref/ci standard-read-table c))) (cond ((or (eq? c-syntax 'constituent) (and (not (eq? c-syntax 'whitespace)) (not (eq? c-syntax 'single-escape)) (not (eq? c-syntax 'illegal)) (eq? (car c-syntax) 'nonterminating-macro))) (simple-symbol (read-char stream) (cons (upcase c) r-charlist) escaped?)) ((eq? c-syntax 'illegal) (cerror "Ignore the illegal character" "Illegal char ~C encountered while reading token." c) (simple-symbol (read-char stream) r-charlist escaped?)) ((eq? c-syntax 'single-escape) (read-escaped (read-char stream) r-charlist)) ((or (eq? c-syntax 'whitespace) (eq? (car c-syntax) 'terminating-macro)) (intern-it c r-charlist escaped?)) (else (signal bad-syntax-table-entry c c-syntax))))) ) ( (read-escaped c r-charlist) ;; We just read an escape character, so the next one is ;; accepted literally. (when (eq? c the-eof-token) (signal eof-after-slash (#^string (reverse r-charlist)))) (simple-symbol (read-char stream) (cons c r-charlist) #t) ) ( (digits2 c r-charlist n numerator) ;; We're reading the block of digits following the '/' in ;; a fraction. (if (eq? c the-eof-token) (if (eq? (car r-charlist) #\/) (intern-it c r-charlist nil) (block (unread-char stream c) (/ numerator n))) (let ((c-syntax (%vref/ci standard-read-table c))) (cond ((or (eq? c-syntax 'constituent) (and (not (eq? c-syntax 'whitespace)) (not (eq? c-syntax 'single-escape)) (not (eq? c-syntax 'illegal)) (eq? (car c-syntax) 'nonterminating-macro))) (cond ((digit? c base) (digits2 (read-char stream) (cons (upcase c) r-charlist) (+ (* n base) (digit-value c)) numerator)) (else (simple-symbol c r-charlist #f)))) ((eq? c-syntax 'single-escape) (read-escaped (read-char stream) r-charlist)) ((eq? c-syntax 'illegal) (simple-symbol c r-charlist #f)) ((or (eq? c-syntax 'whitespace) (eq? (car c-syntax) 'terminating-macro)) (if (eq? (car r-charlist) #\/) (intern-it c r-charlist nil) (block (unread-char stream c) (/ numerator n)))) (else (signal bad-syntax-table-entry c c-syntax))))) ) ( (digits3 c r-charlist num denom neg? first?) ;; Reading digits after decimal point. ;; num is what numerator will be (except sign) if ends now. ;; denom is what denominator will be if ends now. ;; neg? is leading minus on number. ;; first? is true iff starting post-dot and there were no pre-dot digits. (if (eq? c the-eof-token) (if first? (intern-it c r-charlist nil) (form-decimal c num denom neg?)) (let ((c-syntax (%vref/ci standard-read-table c))) (cond ((or (eq? c-syntax 'constituent) (and (not (eq? c-syntax 'whitespace)) (not (eq? c-syntax 'single-escape)) (not (eq? c-syntax 'illegal)) (eq? (car c-syntax) 'nonterminating-macro))) (cond ((digit? c base) (digits3 (read-char stream) (cons (upcase c) r-charlist) (+ (* num base) (digit-value c)) (* denom base) neg? #f)) (else (simple-symbol c r-charlist #f)))) ((eq? c-syntax 'single-escape) (read-escaped (read-char stream) r-charlist)) ((eq? c-syntax 'illegal) (simple-symbol c r-charlist #f)) ((or (eq? c-syntax 'whitespace) (eq? (car c-syntax) 'terminating-macro)) (if first? (intern-it c r-charlist nil) (form-decimal c num denom neg?))) (else (signal bad-syntax-table-entry c c-syntax))))) ) ( (form-decimal c num denom neg?) (unread-char stream c) (let ((x (/ num denom))) (if neg? (- x) x)) ) ) (let* ((c (read-char stream)) (c-syntax (%vref/ci standard-read-table c))) (cond ((eq? c-syntax 'constituent) (cond ((eq? c #\-) (digits1 (read-char stream) (list c) 0 #t #t)) ((eq? c #\.) (digits3 (read-char stream) (list c) 0 1 #f #t)) (else (digits1 c nil 0 #f #t)))) ((eq? c-syntax 'single-escape) (read-escaped (read-char stream) nil)) (else (error "Internal error in reader: ~C of class ~A starts a token." c c-syntax))))))) (define (digit? c base) (let ((cn (#^number c))) (cond ((<= base 10) (and (<= (#^number #\0) cn) (< cn (+ (#^number #\0) base)))) (else (or (and (<= (#^number #\0) cn) (<= cn (#^number #\9))) (and (<= (#^number #\A) cn) (< cn (+ (#^number #\A) (- base 10)))) (and (<= (#^number #\a) cn) (< cn (+ (#^number #\a) (- base 10))))))))) (define (digit-value c) (let ((c (#^number c))) (cond ((<= c (#^number #\9)) (- c (#^number #\0))) ((<= c (#^number #\Z)) (- c (- (#^number #\A) 10))) (else (- c (- (#^number #\a) 10)))))) ;;; eof oaklisp-1.3.7/src/world/reader-errors.oak000066400000000000000000000206621332762442600203710ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; Define some types of errors to be signaled by the reader. (define-instance read-error type '() (list general-error)) (define-instance proceedable-read-error type '() (list proceedable-error read-error)) (define-instance unknown-construct type '() (list proceedable-read-error)) (define-instance error-in-# type '(char arg description) (list proceedable-read-error)) (define-instance unknown-#-macro type '() (list error-in-# unknown-construct object)) (define-instance cant-have-#-arg type '() (list error-in-# object)) (define-instance must-have-#-arg type '() (list error-in-# object)) (define-instance illegal-#-arg type '(reason) (list error-in-# object)) (define-instance list-end-error type '(list-so-far stuff-after-dot) '()) (define-instance unexpected-eof type '() (list read-error)) (define-instance eof-in-#pipe type '(level) (list error-in-# unexpected-eof object)) (define-instance eof-reading-until type '(list-so-far terminator) (list unexpected-eof object)) (define-instance eof-reading-chars-until type '(list-so-far terminator) (list unexpected-eof object)) (define-instance eof-after-slash type '(token-so-far) (list unexpected-eof object)) (define-instance eof-in-list-end type '() (list list-end-error unexpected-eof object)) (define-instance dot-in-list-end type '() (list list-end-error proceedable-read-error object)) (define-instance extra-object-in-list-end type '(thing) (list list-end-error proceedable-read-error object)) (define-instance illegal-dot-in-list type '(list-so-far terminator) (list proceedable-read-error object)) (define-instance dot-outside-list type '() (list proceedable-read-error object)) (add-method (initialize (dot-outside-list) self) (^super proceedable-read-error initialize self "Ignore the '.' token.")) (add-method (report (dot-outside-list) self stream) (format stream "A dot token (.) was read outside of a list.~%")) (add-method (initialize (list-end-error list-so-far stuff-after-dot) self the-lsf the-sad) (set! list-so-far the-lsf) (set! stuff-after-dot the-sad) self) (add-method (report (list-end-error list-so-far stuff-after-dot) self stream) (format stream "within the dotted ending of the list beginning ~S" list-so-far) (if stuff-after-dot (format stream " [ . ~S].~%" (car stuff-after-dot)) (format stream ".~%"))) (add-method (initialize (error-in-# char arg) self the-char the-arg) (set! char the-char) (set! arg the-arg) (^super proceedable-read-error initialize self (compose-proceed-message self))) (define-instance compose-proceed-message operation) (add-method (compose-proceed-message (error-in-# char arg) self) (format #f "the #~A~A construct." (or arg "") char)) (add-method (report (error-in-# char arg) self stream) (format stream "#~A~A construct" (if arg arg "") char)) (add-method (report (unknown-#-macro) self stream) (format stream "The ") (^super error-in-# report self stream) (format stream " is unknown.~%")) (add-method (compose-proceed-message (unknown-#-macro) self) (format #f "Ignore the ~A." (^super error-in-# compose-proceed-message self))) (add-method (report (cant-have-#-arg) self stream) (format stream "The ") (^super error-in-# report self stream) (format stream " is malformed; no argument is taken.~%")) (add-method (compose-proceed-message (cant-have-#-arg) self) (format #f "Ignore the illegal argument in the ~A." (^super error-in-# compose-proceed-message self))) (add-method (report (must-have-#-arg) self stream) (format stream "The ") (^super error-in-# report self stream) (format stream " requires an argument.~%")) (add-method (compose-proceed-message (must-have-#-arg) self) (format #f "Supply the required argument to the ~A." (^super error-in-# compose-proceed-message self))) (add-method (initialize (illegal-#-arg reason) self the-reason . args) (set! reason the-reason) (^super error-in-# initialize self . args)) (add-method (report (illegal-#-arg reason) self stream) (format stream "The contruct ") (^super error-in-# report self stream) (format stream "~A.~%" reason)) (add-method (compose-proceed-message (illegal-#-arg) self) (format #f "Supply an appropriate argument to the ~A." (^super error-in-# compose-proceed-message self))) (add-method (initialize (eof-in-#pipe level) self the-level) (set! level the-level) (^super unexpected-eof initialize self)) (add-method (report (eof-in-#pipe level) self stream) (if (= level 1) (format stream "EOF encountered within a #| ... |# construct.~%") (format stream "EOF encounted within ~D levels of #| ... |# constructs.~%" level))) (add-method (initialize (eof-reading-until list-so-far terminator) self the-list-so-far the-terminator) (set! list-so-far the-list-so-far) (set! terminator the-terminator) (^super unexpected-eof initialize self)) (add-method (report (eof-reading-until list-so-far terminator) self stream) (format stream "EOF reading a list to be terminated by a '~A' that began ~S.~%" terminator list-so-far)) (add-method (initialize (eof-reading-chars-until list-so-far terminator) self the-list-so-far the-terminator) (set! list-so-far the-list-so-far) (set! terminator the-terminator) (^super unexpected-eof initialize self)) (add-method (report (eof-reading-chars-until list-so-far terminator) self stream) (format stream "EOF reading a token to be terminated by a '~A' that began ~S~%" terminator list-so-far)) (add-method (initialize (eof-after-slash token-so-far) self the-token-so-far) (set! token-so-far the-token-so-far) (^super unexpected-eof initialize self)) (add-method (report (eof-after-slash token-so-far) self stream) (format stream "EOF after a '\\'; the token began ~S.~%" token-so-far)) (add-method (initialize (eof-in-list-end) self a b) (^super list-end-error initialize self a b) (^super unexpected-eof initialize self)) (add-method (report (eof-in-list-end) self stream) (format stream "EOF encountered ") (^super list-end-error report self stream)) (add-method (initialize (dot-in-list-end) self a b) (^super list-end-error initialize self a b) (^super proceedable-read-error initialize self "Ignore the extra dot.")) (add-method (report (dot-in-list-end) self stream) (format stream "Extra '.' encountered ") (^super list-end-error report self stream)) (add-method (initialize (extra-object-in-list-end thing) self the-thing a b) (set! thing the-thing) (^super list-end-error initialize self a b) (^super proceedable-read-error initialize self (format #f "Ignore the ~S." thing))) (add-method (report (extra-object-in-list-end thing) self stream) (format stream "Extra object (~S) encountered " thing) (^super list-end-error report self stream)) (add-method (initialize (illegal-dot-in-list list-so-far terminator) self the-list-so-far the-terminator) (set! list-so-far the-list-so-far) (set! terminator the-terminator) (^super proceedable-read-error initialize self "Ignore the dot token.")) (add-method (report (illegal-dot-in-list list-so-far terminator) self stream) (format stream "The '.' token was read in a list to be terminated with a '~A' that began ~S~%" terminator list-so-far)) (define-instance bad-syntax-table-entry type '(char entry) (list proceedable-read-error object)) (add-method (initialize (bad-syntax-table-entry char entry) self the-char the-entry) (set! char the-char) (set! entry the-entry) (^super proceedable-read-error initialize self (format #f "Ignore the unreadable character."))) (add-method (report (bad-syntax-table-entry char entry) self stream) (format stream "Malformed syntax table entry ~S encountered when reading a ~C.~%" entry char)) ;;; eof oaklisp-1.3.7/src/world/reader-macros.oak000066400000000000000000000127541332762442600203440ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C)1986 Kevin J. Lang & Barak A. Pearlmutter ;;; Reader character macros. (define (define-macro-char char func) (set! (nth standard-read-table char) (cons 'terminating-macro func))) (define (define-nonterminating-macro-char char func) (set! (nth standard-read-table char) (cons 'nonterminating-macro func))) ;;; A facility for keeping track of "quotelike" reader macros so the printer ;;; can utilize them. (let ((quotelike-prefixes '())) (define (quotelike-prefix? prefix) (let ((p (assq prefix quotelike-prefixes))) (if p (cdr p) nil))) (define (register-quotelike-prefix char prefix) (let ((p (assq prefix quotelike-prefixes))) (if p (set! (cdr p) char) (set! quotelike-prefixes (cons (cons prefix char) quotelike-prefixes)))))) (define (define-quotelike-macro-char char prefix print-form) (if print-form (register-quotelike-prefix char prefix)) (define-macro-char char (lambda (stream char) (list prefix (read stream))))) ;;; Use the above facilities to define some useful stuff. (define-quotelike-macro-char #\' 'quote #t) (define-quotelike-macro-char #\` 'quasiquote #t) (define-quotelike-macro-char #\ 'fluid #f) ; ascii 22, blob. (define-quotelike-macro-char #\ 'coercer #f) ; ascii 25, rightarrow. ;;; (define (errorful-macro-reader stream char) (warning "a '~A' in an illegal context was ignored.~%" char) the-unread-object) ;;; Let there be readable lists: (define-macro-char #\( (lambda (stream char) (let ((e (read-until #\) #t stream))) e))) (define-macro-char #\) errorful-macro-reader) ;;; Let programs written at Indiana be readable as well: (define-macro-char #\[ (lambda (stream char) (let ((e (read-until #\] #t stream))) e))) (define-macro-char #\] errorful-macro-reader) ;;; "Reserved for the user." (define-macro-char #\{ errorful-macro-reader) (define-macro-char #\} errorful-macro-reader) (define-macro-char #\" (lambda (stream char) (#^string (read-charlist-until stream char)))) (define-macro-char #\| (lambda (stream char) (#^symbol (#^string (read-charlist-until stream char))))) (define-macro-char #\; (lambda (stream char) (iterate aux () (let ((c (read-char stream))) (cond ((or (eq? c the-eof-token) (eq? c #\return) (eq? c #\nl)) the-unread-object) (else (aux))))))) (define-macro-char #\, (lambda (stream char) (let ((n (peek-char stream))) (cond ((eq? n #\@) (read-char stream) (list 'unquote-splicing (read stream))) (else (list 'unquote (read stream))))))) ;;; Read characters up to and including the terminator. #|| ;;; This old code has been replaced by the non-recursive version below ;;; which is more efficient and gives better error messages as well. (define (read-charlist-until stream char) (let ((c (read-char stream))) (cond ((eq? c char) nil) ((eq? c the-eof-token) (error "EOF encountered while reading characters until a ~C." char)) (else (let ((c (if (not (eq? (nth standard-read-table c) 'single-escape)) c (let ((c (read-char stream))) (if (eq? c the-eof-token) (error "EOF encountered after a single escape while reading characters until a ~C." char)) c)))) (cons c (read-charlist-until stream char))))))) ||# (define (read-charlist-until stream char) (iterate aux ((list-top nil)(list-ending nil)) (let ((c (read-char stream))) (cond ((eq? c char) list-top) ((eq? c the-eof-token) (signal eof-reading-chars-until (#^string list-top) char)) (else (let* ((c (if (not (eq? (nth standard-read-table c) 'single-escape)) c (let ((c (read-char stream))) (when (eq? c the-eof-token) (signal eof-after-slash (#^string list-top))) c))) (nl (cons c nil))) (cond ((null? list-top) (aux nl nl)) (else (set! (cdr list-ending) nl) (aux list-top nl))))))))) ;;; This can replace the above if we ever feel like it. Read-charlist-until2 ;;; reads until the passed function is true of the next character read. ;;; Should be benchmarked. #|| (define (read-charlist-until stream char) (read-charlist-until2 stream (lambda (c) (eq? char c)))) ||# (define (read-charlist-until2 stream func) (iterate aux ((list-top nil)(list-ending nil)) (let ((c (read-char stream))) (cond ((func c) list-top) ((eq? c the-eof-token) (signal eof-reading-chars-until (#^string list-top))) (else (let* ((c (if (not (eq? (nth standard-read-table c) 'single-escape)) c (let ((c (read-char stream))) (when (eq? c the-eof-token) (signal eof-after-slash (#^string list-top))) c))) (nl (cons c nil))) (cond ((null? list-top) (aux nl nl)) (else (set! (cdr list-ending) nl) (aux list-top nl))))))))) ;;; eof oaklisp-1.3.7/src/world/reader.oak000066400000000000000000000172061332762442600170570ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; Code to read character sequences and produce Oaklisp objects. Common Lisp ;;; compatible where convenient. ;;; Reader syntax table: (define-instance read-table type '() (list simple-vector)) ;;; The nth method for read tables is pretty inner loopy, so the call ;;; to #^number has been removed in favor of open code. (add-method (nth (read-table) self char) (%vref-nocheck self (ash-left (%data char) -6) ; (#^number char) )) (add-method ((setter nth) (read-table) self char val) (set! (%vref self (#^number char)) val)) ; this name is short for "vref with character index" (define-constant-instance %vref/ci operation) (add-method (%vref/ci (variable-length-mixin) self char) (%load-bp-i (ash-left (%data char) -6))) (define-instance standard-read-table read-table 256) ;;; Read table entries are: ;;; WHITESPACE ;;; CONSTITUENT ;;; SINGLE-ESCAPE ;;; ILLEGAL ;;; (TERMINATING-MACRO . operation) ;;; (NONTERMINATING-MACRO . operation) ;;; The MULTIPLE-ESCAPE type entry is not needed, as in the absence of ;;; packages '|' can be a simple terminating reader macro. (dotimes (c 256) (set! (nth standard-read-table c) (cond ((= c (#^number #\\)) 'single-escape) ((<= c (#^number #\space)) 'whitespace) ((<= c (#^number #\~)) 'constituent) (else 'illegal)))) ;;; A switch for turning off most computation while in a #- thing: (set! #*read-suppress #f) ;;; The canonical unread object, for being returned by things that ;;; were supposed to read something but read a nothing instead, like ;;; the #\; reader macro. (define-instance unread-type type '() (list object)) (define-simple-print-method unread-type "Unread") (define-instance the-unread-object unread-type) ;;; Blow off whitespace (define (skip-whitespace stream) (iterate aux () (let ((c (peek-char stream))) ;; The first three eq? clauses in the or is for speed, ;; and of dubious correctness, and should be benchmarked. (cond ((or (eq? c #\space) (eq? c #\tab) (eq? c #\newline) (and (not (eq? c the-eof-token)) (eq? (%vref/ci standard-read-table c) 'whitespace))) (read-char stream) (aux)) (else nil))))) ;;; Read expressions until the closing delimiter is hit, consuming it. ;;; CLOSING-DOT? tells whether improper dotted syntax is allowed. (define (read-until closing-delimiter closing-dot? stream) (iterate aux ((list-top nil)(list-ending nil)) (skip-whitespace stream) (cond ((eq? (peek-char stream) closing-delimiter) (read-char stream) list-top) (else (let ((x (subread stream))) (cond ((eq? x the-unread-object) (aux list-top list-ending)) ((eq? x the-dot-token) (cond (closing-dot? (iterate aux () (let ((x (subread stream))) (cond ((eq? x the-unread-object) (aux)) ((eq? x the-dot-token) (signal dot-in-list-end list-top '()) (aux)) ((eq? x the-eof-token) (signal eof-in-list-end list-top '()) (aux)) (else (iterate aux () (skip-whitespace stream) (cond ((eq? (peek-char stream) closing-delimiter) (read-char stream) (cond ((null? list-top) x) (else (set! (cdr list-ending) x) list-top))) (else (let ((y (subread stream))) (cond ((eq? y the-unread-object) (aux)) (else (signal extra-object-in-list-end y list-top (list x)) (aux)))))))))))) (else (signal illegal-dot-in-list list-top closing-delimiter) (aux list-top list-ending)))) ((eq? x the-eof-token) (signal eof-reading-until list-top closing-delimiter) (aux list-top list-ending)) (else (let ((nl (cons x nil))) (cond ((null? list-top) (aux nl nl)) (else (set! (cdr list-ending) nl) (aux list-top nl))))))))))) #|| ;;; The following definition has been obsoleted by the above more ;; complex but non-recursive version with better error messages. (define (read-until closing-delimiter closing-dot? stream) (iterate aux () (skip-whitespace stream) (cond ((eq? (peek-char stream) closing-delimiter) (read-char stream) '()) (else (let ((x (subread stream))) (cond ((eq? x the-unread-object) (aux)) ((eq? x the-dot-token) (cond (closing-dot? (iterate aux () (let ((x (subread stream))) (cond ((eq? x the-unread-object) (aux)) ((eq? x the-dot-token) (cerror "Ignore the dot." "Read a second '.' inside a list construct closed by ~C." closing-delimiter) (aux)) ((eq? x the-eof-token) (error "EOF reading the dotted ending of a list that was to be terminated with ~C." closing-delimiter)) (else (iterate aux () (skip-whitespace stream) (cond ((eq? (peek-char stream) closing-delimiter) (read-char stream) x) (else (let ((y (read stream))) (cond ((eq? y the-unread-object) (aux)) (else (error "Second object read after dot of a list to be terminated with ~C." closing-delimiter)))))))))))) (else (cerror "Ignore the dot." "Read a '.' inside a list construct closed by ~C ~ not allowing one." closing-delimiter) (aux)))) ((eq? c the-eof-token) (error "EOF encountered while reading a list that was to be terminated with ~C." closing-delimiter)) (else (cons x (read-until closing-delimiter closing-dot? stream))))))))) ||# ;;; And now for READ. (define (read stream) (iterate aux () (let ((obj (subread stream))) (cond ((eq? obj the-eof-token) the-eof-token) ((eq? obj the-unread-object) (aux)) ((eq? obj the-dot-token) (signal dot-outside-list) (aux)) (else obj))))) ;;; This is like READ, except that it returns the unread object or the ;;; dot token when it sees them. The functionality here was seperated ;;; out from READ to make reading list type syntax easier. (define (subread stream) (iterate aux () (let ((c (peek-char stream))) (if (eq? c the-eof-token) (read-char stream) (let ((c-syntax (%vref/ci standard-read-table c))) (cond ((eq? c-syntax 'whitespace) (read-char stream) (aux)) ((eq? c-syntax 'illegal) (error "The character ~C is illegal." (read-char stream))) ((or (eq? c-syntax 'constituent) (eq? c-syntax 'single-escape)) (read-token stream)) (else (read-char stream) ((cdr c-syntax) stream c)))))))) ;;; In order to read dotted lists correctly, the right thing to do it ;;; to return a magic thing, THE-DOT-TOKEN, when a '.' is read as a ;;; single, unescaped token. Like the unread object, this is never ;;; returned by READ. (define-instance dot-token type '() (list object)) (define-simple-print-method dot-token "dot") (define-instance the-dot-token dot-token) ;;; eof oaklisp-1.3.7/src/world/repl.oak000066400000000000000000000063321332762442600165550ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter ;;; Read eval print loop for Oaklisp. (define (read-eval-print-loop) (format #t "~&Oaklisp evaluation loop.~%") (bind ((#*print-length 7) (#*print-level 3) (#*print-escape #t) ;; Current input (#*- #f) ;; Previous inputs: (#*+ #f) (#*++ #f) (#*+++ #f) ;; Previous macro expanded inputs: (#*? #f) (#*?? #f) (#*??? #f) ;; Previous outputs: (#** #f) (#*** #f) (#**** #f)) (let ((message (if (zero? #*debug-level) "Return to top level." (format #f "Return to debugger level ~D." #*debug-level)))) (error-restart message () (show-handlers) (let ((out-of-here (and (not (zero? #*debug-level)) #*up-a-debug-level))) (iterate aux () (native-catch uptag (bind ((#*up-a-debug-level uptag)) (dotimes (i (+ #*debug-level 1)) (write-char standard-output #\>)) (write-char standard-output #\space) (flush standard-output) (set! #*+++ #*++) (set! #*++ #*+) (set! #*+ #*-) (let ((r (bind-error-handler (read-error (lambda (x) (format standard-error "~&Malformed user input.~%") ;; Flush typeahead here? (invoke-debugger x))) (read standard-input)))) (clear-backspace-buffer standard-input) (cond ((eq? r the-eof-token) (cond ((not (interactive? standard-input)) (format #t "~&Exiting: EOF on non-interactive control stream.~%") (flush standard-output) (exit)) ((zero? #*debug-level) (format #t "~&Type (exit) to leave Oaklisp.~%") (aux)) (else (write-char standard-output #\newline) (throw out-of-here #f)))) (else (set! #*- r) (let ((m (bind-error-handler (general-error (lambda (x) (format standard-error "~&Unable to macroexpand ~S.~%" r) (invoke-debugger x))) (let ; error-restart ; "Try to macroexpand it again (args: expr, locale)." ((exp r) (loc #*current-locale)) (expand-groveling loc exp))))) (set! #*??? #*??) (set! #*?? #*?) (set! #*? m) (let ((v (bind-error-handler (general-error invoke-debugger) (subeval m #*current-locale)))) (set! #**** #***) (set! #*** #**) (set! #** v) (bind-error-handler (general-error (lambda (x) (format standard-error "~&Unable to print result.~%") (invoke-debugger x))) (print v standard-output)) (write-char standard-output #\newline)))))))) (aux))))))) oaklisp-1.3.7/src/world/rounding.oak000066400000000000000000000034011332762442600174320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; The rounding stuff from R3RS. (define-instance floor operation) (define-instance ceiling operation) (define-instance truncate operation) (define-instance round operation) (dolist (op (list floor ceiling truncate round)) (add-method (op (integer) x) x)) (add-method (floor (fraction the-numerator the-denominator) x) (quotientm the-numerator the-denominator)) (add-method (ceiling (fraction the-numerator the-denominator) x) (+ (quotientm the-numerator the-denominator) 1)) (add-method (truncate (fraction the-numerator the-denominator) x) (quotient the-numerator the-denominator)) ;;; This rounds to the nearest integer, breaking ties by rounding to even: (add-method (round (fraction the-numerator the-denominator) x) (let ((f (quotientm the-numerator the-denominator))) (cond ((= the-denominator 2) ;; round to even: (if (even? f) f (+ 1 f))) (else (let ((m (modulo the-numerator the-denominator))) (if (< (+ m m) the-denominator) f (+ 1 f))))))) ;;; eof oaklisp-1.3.7/src/world/scheme-macros.oak000066400000000000000000000053511332762442600203410ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; The following macro definitions are different from those in ;;; system-locale in a non-upward-compatible way. These definitions ;;; should NOT be loaded into system-locale. They may be compiled ;;; there, though. ;;; Because all forms that take implicit bodies ultimately put a BLOCK ;;; around these bodies, the above also makes ADD-METHOD, and hence ;;; LAMBDA, as well as stuff like COND clause bodies, get the horrible ;;; MIT Scheme define-capturing semantics. (define-syntax (block . body) `(mit-block . ,body)) ;;; That committee must have Algol on the brain. (define-syntax (begin . body) `(block . ,body)) ;;; Here, we make the dotted arglist syntax do the R3RS thing, getting ;;; bound to a list of things. We do this by hacking ADD-METHOD to ;;; wrap a LABELS if appropriate. (define-syntax (add-method (op . stuff) . body) (cond ((improper-list? stuff) => (lambda (improper-part) (let ((proper-part (make-proper stuff)) (auxvar (genvar))) (cond ((and (not (null? proper-part)) (list? (car proper-part)) (not (null? (cdr (car proper-part))))) ;; There are ivars, have to close over them. `(native-add-method (,op ,(car proper-part) . ,improper-part) (let ((,auxvar (lambda (,improper-part) (destructure ,(cdr stuff) ,improper-part ,@body)))) (listify-args ,auxvar . ,improper-part)))) (else ;; No ivars, make external lambda `(let ((,auxvar (lambda (,improper-part) (destructure ,(if (and (not (null? proper-part)) (list? (car proper-part))) ;; clause (cdr stuff) stuff) ,improper-part ,@body)))) (native-add-method (,op ,@(if (and (not (null? proper-part)) (list? (car proper-part))) (list (car proper-part)) (list)) . ,improper-part) (listify-args ,auxvar . ,improper-part)))))))) (else `(native-add-method (,op . ,stuff) . ,body)))) ;;; eof oaklisp-1.3.7/src/world/scheme.oak000066400000000000000000000110621332762442600170530ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter & Kevin J. Lang ;;; This is a compatibility package for R3RS Scheme. ;;; This file defines things that are part of R3RS but that are not ;;; part of standard Oaklisp, usually because they are non-generic ;;; versions of operations which have generic variants in Oaklisp, but ;;; sometimes because we just decided to be gratuitously incompatible. ;(define (boolean? x) #f) ;(add-method (boolean? (truths) x) #t) ; ;(define (boolean? x) (is-a? x truths)) ; ;(define (boolean? x) (or (eq? #f x) (eq? #t x))) ; ;(define (boolean? x) (if (not x) #t (eq? x #t))) ; (define (boolean? x) (eq? x (not (not x)))) (define-constant set-car! (setter car)) (define-constant set-cdr! (setter cdr)) (define list-tail tail) (define list-ref nth) (define symbol->string #^string) (define string->symbol #^symbol) (define-constant char=? =) (define-constant char? >) (define-constant char<=? <=) (define-constant char>=? >=) (define char-ci=? (lambda (c1 c2) (= (upcase c1) (upcase c2)))) (define char-ci? (lambda (c1 c2) (> (upcase c1) (upcase c2)))) (define char-ci<=? (lambda (c1 c2) (<= (upcase c1) (upcase c2)))) (define char-ci>=? (lambda (c1 c2) (>= (upcase c1) (upcase c2)))) (define (char-whitespace? c) (eq? 'whitespace (nth standard-read-table c))) (define char->integer #^number) (define integer->char #^character) (define char-upcase upcase) (define char-downcase downcase) (define string-length length) (define string-ref nth) (define string-set! (setter nth)) (define-constant string=? =) (define-constant string? >) (define-constant string<=? <=) (define-constant string>=? >=) (define string-ci=? (lambda (c1 c2) (= (upcase c1) (upcase c2)))) (define string-ci? (lambda (c1 c2) (> (upcase c1) (upcase c2)))) (define string-ci<=? (lambda (c1 c2) (<= (upcase c1) (upcase c2)))) (define string-ci>=? (lambda (c1 c2) (>= (upcase c1) (upcase c2)))) (define substring subseq-indexes) ; (define string-append append) (define (string-append . args) (if (zero? (rest-length args)) "" (append . args))) (define string->list #^list-type) (define list->string #^string) (define string-copy copy) (define string-fill! fill!) (define (make-vector n) (make simple-vector n)) (define vector-length length) (define vector-ref nth) (define vector-set! (setter nth)) (define vector->list #^list-type) (define list->vector #^simple-vector) (define vector-fill! fill!) (define input-port? (type-pred input-stream)) (define output-port? (type-pred output-stream)) (define (call-with-input-file string proc) (with-open-file (s string in) (proc s))) (define (call-with-output-file string proc) (with-open-file (s string out) (proc s))) (define (current-input-port) standard-input) (define (current-output-port) standard-output) (define (eof-object? x) (eq? x the-eof-token)) (define close-input-port close) (define close-output-port close) (define write (let ((write0 (lambda (obj port) (bind ((#*print-escape #t)) (print obj port))))) (lambda (obj . rest) (if (zero? (rest-length rest)) (write0 obj standard-output . rest) (write0 obj . rest))))) (define display (let ((display0 (lambda (obj port) (bind ((#*print-escape #f)) (print obj port))))) (lambda (obj . rest) (if (zero? (rest-length rest)) (display0 obj standard-output . rest) (display0 obj . rest))))) ;;; Argument order incompatibility hackaround: (add-method (write-char (character) char stream) (write-char stream char)) ;;; with no args: (add-method (newline (object)) (newline standard-output)) (define (write-line x) (print x standard-output)) #| (add-method (read (object)) (read standard-input)) |# ;;; eof oaklisp-1.3.7/src/world/sequences.oak000066400000000000000000000130731332762442600176060ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter (add-method (subsequence? (sequence) s1 s2) (let* ((l1 (length s1)) (l2 (length s2)) (ldiff (- l2 l1))) (iterate loop2 ((i2 0)) (if (> i2 ldiff) #f (iterate loop1 ((i1 0)) (if (>= i1 l1) i2 (if (eq? (nth s1 i1) (nth s2 (+ i1 i2))) (loop1 (1+ i1)) (loop2 (1+ i2))))))))) ;;; NOTE: the following definition would make two identical vectors, where ;;; one of them is an odd lazy-evaluating kind, not be equal, which is bad. ;;; Having a SEQUENCE-TYPE operation which returns the right "high level" ;;; sequence type might work. (add-method (equal? (sequence) a b) (or (eq? a b) (and (eq? (get-type a) (get-type b)) (let ((l (length a))) (and (= l (length b)) (or (zero? l) (let ((lm1 (- l 1))) (iterate aux ((i 0)) (cond ((= i lm1) (equal? (nth a lm1) (nth b lm1))) ((equal? (nth a i) (nth b i)) (aux (+ i 1))) (else #f)))))))))) (add-method (fill! (sequence) self val) (dotimes (i (length self) self) (set! (nth self i) val))) ;;; Note: this must be shadowed for list-type, since you can make neither ;;; cons-pair nor null-type with this interface. (add-method (reverse (sequence) self) (let* ((len (length self)) (new (make (get-type self) len)) (len-1 (- len 1))) (dotimes (i len new) (set! (nth new i) (nth self (- len-1 i)))))) (add-method (reverse! (sequence) self) (let ((len (length self))) (iterate aux ((a 0) (b (- len 1))) (cond ((<= a b) (let ((x (nth self a))) (set! (nth self a) (nth self b)) (set! (nth self b) x) (aux (+ a 1) (- b 1)))) (else self))))) (add-method (copy (sequence) self) (let* ((len (length self)) (new (make (get-type self) len))) (dotimes (i len new) (set! (nth new i) (nth self i))))) #| (add-method (append (sequence) s1 s2) (let* ((len1 (length s1)) (len2 (length s2)) (len (+ len1 len2)) (new (make (get-type s1) len))) (dotimes (i len1) (set! (nth new i) (nth s1 i))) (dotimes (i len2 new) (set! (nth new (+ i len1)) (nth s2 i))))) |# ; this method contains an internal special case for simple-vectors (add-method (append (sequence) . rest) (listify-args (lambda (args) (let* ((lens (map length args)) (car-type (get-type (car args))) (new-guy (make car-type (apply + lens))) (new-guy-setter (if (eq? car-type simple-vector) (setter %vref-nocheck) (setter nth)))) (iterate outerloop ((sources args) (lens lens) (offset 0)) (if (null? sources) new-guy (if (subtype? (get-type (car sources)) forcible) (outerloop (cons (force (car sources)) (cdr sources)) lens offset) (let* ((source (car sources)) (source-type (get-type source)) (source-accessor (if (eq? simple-vector source-type) %vref-nocheck nth)) (len (car lens))) (when (not (eq? car-type source-type)) (append-type-error car-type source)) (iterate innerloop ((from 0)(to offset)) (if (= from len) (outerloop (cdr sources)(cdr lens)(+ offset len)) (block (new-guy-setter new-guy to (source-accessor source from)) (innerloop (1+ from)(1+ to))))))))))) . rest)) (add-method (subseq (sequence) self index len) (let ((new (make (get-type self) len))) (dotimes (i len new) (set! (nth new i) (nth self (+ index i)))))) ;;; Sometimes one wants two indexes rather than an index and a length. ;;; SUBSEQ-INDEXES takes and sequence and two indices. It returns the ;;; subsequence from START (inclusive) to END (exclusive). (define (subseq-indexes seq start end) (subseq seq start (- end start))) (add-method (tail (sequence) self index) (subseq self index (- (length self) index)) ;(let* ((len (length self)) ; (nlen (- len index)) ; (new (make (get-type self) nlen))) ; (dotimes (i nlen new) ; (set! (nth new i) (nth self (+ index i))))) ) (labels ((copy-first-chunk (lambda (l i) (if (zero? i) '() (cons (car l) (copy-first-chunk (cdr l) (- i 1))))))) (add-method (subseq (list-type) self index len) (copy-first-chunk (tail self index) len))) ;;; From beginning to INDEX (exclusive). (add-method (head (sequence) self index) (subseq-indexes self 0 index)) (add-method (last (sequence) self) (nth self (- (length self) 1))) (add-method (#^list-type (sequence) v) (let ((len (length v))) (iterate aux ((i (- len 1))(l '())) (if (= i -1) l (aux (- i 1) (cons (nth v i) l)))))) ;;; Selection (add-method (remove (pair) x y) (if (eq? (car x) y) (remove (cdr x) y) (cons (car x) (remove (cdr x) y)))) (add-method (remove (null-type) x y) x) (add-method (remove-if (pair) x pred) (if (pred (car x)) (remove-if (cdr x) pred) (cons (car x) (remove-if (cdr x) pred)))) (add-method (remove-if (null-type) x pred) x) ;;; eof oaklisp-1.3.7/src/world/signal.oak000066400000000000000000000253651332762442600170770ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter and Kevin J. Lang ;;; This file defines the error system, which is based on error types ;;; and objects and signaling them, similar to the ZetaLisp mechanisms. ;;; When an error occurs the appropriate type of error object is ;;; created, then the appropriate message to send to that guy is ;;; looked up on the #*error-handlers list, and then that ;;; message is sent to the error tail recursively, so if the method ;;; for that returns a value that's what the signal call returns. ;;; This is an alist of error types and operations. (set! #*error-handlers '()) (define-instance condition type '(continuation) '()) (define-instance general-error type '() (list condition)) (add-method (initialize (condition continuation) self) (set! continuation #f) self) (define-instance proceedable-mixin type '(message) '()) (add-method (initialize (proceedable-mixin message) self the-mess) (set! message the-mess) self) (define-instance proceedable-error type '() (list proceedable-mixin general-error)) (add-method (initialize (proceedable-error) self the-mess) (^super proceedable-mixin initialize self the-mess) (^super general-error initialize self)) (define-instance proceedable-condition type '() (list proceedable-mixin condition)) (add-method (initialize (proceedable-condition) self the-mess) (^super proceedable-mixin initialize self the-mess) (^super condition initialize self)) ;;; Call remember-context on an error with an argument that takes the error ;;; and stashes it away somewhere, and then returns to the nearest top ;;; level or something like that. You can look at the error object, ask ;;; it to report, and stuff like that; but if you call invoke-debugger or ;;; proceed on it, it will bop into the error context and then do it. (define-instance remember-context operation) (add-method (remember-context (condition continuation) self after) (when continuation (error "Context already stored for this error.")) (let ((op (call/cc (lambda (k) (set! continuation k) (after self) (error "The arg to remember-context returned."))))) (set! continuation #f) (op self))) ;;; (define-instance invoke-in-error-context operation) (add-method (invoke-in-error-context (condition continuation) self op) (if continuation (continuation op) (op self))) ;;; Invoke the debugger at the given error. (define-instance invoke-debugger operation) ;;; Write a description of the error to the given stream. Return the ;;; description as a string if passed nil. (define-instance report operation) (add-method (invoke-debugger (condition continuation) self) (invoke-in-error-context self really-invoke-debugger)) ;;; (define-instance really-invoke-debugger operation) (define nested-error-limit 20) (add-method (really-invoke-debugger (condition) self) (bind ((#*debug-level (+ #*debug-level 1))) (when (and nested-error-limit (> #*debug-level nested-error-limit)) (exit 1 "Too many nested debuggers!~%")) (format standard-error "~&Error: ") (report self standard-error) (read-eval-print-loop))) (add-method (really-invoke-debugger (proceedable-mixin message) self) (error-return message (^super condition really-invoke-debugger self))) ;;; This is what to do with an error that has no other handler. (push #*error-handlers (cons general-error invoke-debugger)) ;;; Some errors can be proceeded from. (define-instance proceed operation) (add-method (proceed (proceedable-error) self value) (invoke-in-error-context self (lambda (self) value))) ;;; This is the big interface: signal. (let ((signal-aux (lambda (args) (destructure (error-type . args) args (let ((the-error (apply make error-type args))) (iterate aux ((l #*error-handlers)) (cond ((null? l) ;; No handler found, ignore the signal. #f) ((subtype? error-type (caar l)) ;; Found one, invoke it. ((cdar l) the-error)) (else ;; Keep looking. (aux (cdr l)))))))))) (define (signal error-type . args) (listify-args signal-aux error-type . args))) ;;; The error type to signal when something that isn't an operation is ;;; called as if it were one. (define-instance not-an-operation type '(op arglist) (list proceedable-error object)) (add-method (initialize (not-an-operation op arglist) self the-op the-arglist) (set! op the-op) (set! arglist the-arglist) (^super proceedable-error initialize self (format #f "Return a value from the call to ~S." the-op))) (add-method (report (not-an-operation op arglist) self stream) (let ((count (length arglist))) (format stream "call to ~S, which isn't an operation, with ~D arg~P" op count count) (when arglist (format stream ": ")) (print-comma-separated-list arglist stream) (format stream ".~%"))) (add-method (really-invoke-debugger (not-an-operation op arglist) self) (^super proceedable-error really-invoke-debugger self)) ;;; The error type to signal when an operation on some object has no ;;; handler. (define-instance operation-not-found type '(op arglist) (list proceedable-error object)) (add-method (initialize (operation-not-found op arglist) self the-op the-arglist) (set! op the-op) (set! arglist the-arglist) (^super proceedable-error initialize self (format #f "Return a value from the call to ~S." the-op))) (add-method (report (operation-not-found op arglist) self stream) (let ((count (length arglist))) (format stream "no method for ~S with ~D arg~P" op count count) (when arglist (format stream ": ")) (print-comma-separated-list arglist stream) (format stream ".~%"))) (add-method (really-invoke-debugger (operation-not-found op arglist) self) ;; I'm a little dubious about this code: (native-catch return-value (error-return (format #f "Retry applying ~A to ~S." op arglist) (throw return-value (^super proceedable-error really-invoke-debugger self))) (apply op arglist))) ;;; The error type to signal when an operation on some object has no ;;; handler when called using ^super. (define-instance ^super-not-found type '(typ op arglist) (list proceedable-error object)) (add-method (initialize (^super-not-found typ op arglist) self the-typ the-op the-arglist) (set! typ the-typ) (set! op the-op) (set! arglist the-arglist) (^super proceedable-error initialize self (format #f "Return a value from the call to ~S." the-op))) (add-method (report (^super-not-found typ op arglist) self stream) (let ((count (length arglist))) (format stream "no ^SUPER method above ~S for ~S with ~D arg~P" typ op count count) (when arglist (format stream ": ")) (print-comma-separated-list arglist stream) (format stream ".~%"))) (add-method (really-invoke-debugger (^super-not-found typ op arglist) self) ;; I'm a little dubious about this code: (native-catch return-value (error-return (format #f "Retry applying ^SUPER ~S ~A to ~S." typ op arglist) (throw return-value (^super proceedable-error really-invoke-debugger self))) (apply ^super typ op arglist))) ;;; Similarly, something to signal when you get the incorrect number ;;; of arguments: (define-instance nargs-error type '(op args wanted) (list proceedable-error)) (add-method (initialize (nargs-error op args wanted) self top targs twanted) (set! op top) (set! args targs) (set! wanted twanted) (^super proceedable-error initialize self (format #f "Return a value from the call to ~S." op))) (add-method (report (nargs-error op args wanted) self stream) (format stream "~D argument~P required by ~A, ~D received" wanted wanted op (length args)) (when args (format stream ": ")) (print-comma-separated-list args stream) (format stream ".~%")) (add-method (really-invoke-debugger (nargs-error op args) self) (native-catch return-value (error-return (format #f "Retry applying ~A to ~S." op args) (throw return-value (^super proceedable-error really-invoke-debugger self))) (apply op args))) (define-instance nargs-exact-error type '() (list nargs-error object)) (define-instance nargs-gte-error type '() (list nargs-error object)) (add-method (report (nargs-gte-error) self stream) (format stream "at least ") (^super nargs-error report self stream)) ;;; Maybe this should really go in format.oak and some control directive ;;; should use it? (define (print-comma-separated-list l stream) (cond ((null? l)) ((null? (cdr l)) (format stream "~S" (car l))) (else (format stream "~S, " (car l)) (print-comma-separated-list (cdr l) stream)))) ;;; The ERROR function: (define (error format-string . format-args) (signal generic-fatal-error format-string . format-args)) (define-instance generic-fatal-error type '(message) (list general-error object)) (add-method (initialize (generic-fatal-error message) self format-string . args) (listify-args (lambda (args) (set! message (apply format nil format-string args)) (^super general-error initialize self)) . args)) (add-method (report (generic-fatal-error message) self stream) (write-string message stream)) ;;; The CERROR function: (define (cerror format-string . format-args) (signal generic-proceedable-error format-string . format-args)) (define-instance generic-proceedable-error type '(message) (list proceedable-error object)) (add-method (initialize (generic-proceedable-error message) self proceed-message format-string . args) (listify-args (lambda (args) (set! message (apply format nil format-string args)) (^super proceedable-error initialize self proceed-message)) . args)) (add-method (report (generic-proceedable-error message) self stream) (cond ((not stream) message) (else (write-string message stream)))) ;;; Something to signal whenever an infinite loop is encountered. (define-instance infinite-loop type '() (list generic-fatal-error)) (add-method (initialize (infinite-loop) self) (^super generic-fatal-error initialize self "infinite loop encountered.")) ;;; eof oaklisp-1.3.7/src/world/sort.oak000066400000000000000000000055231332762442600166030ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; A generic sorting facility. (define-instance sort operation) (define-instance sort! operation) (add-method (sort (sequence) v <=?) (sort! (copy v) <=?)) (add-method (sort! (sequence) v <=?) ;; This does a stupid bubble sort. Should be fixed. (let ((len (length v))) ;;(vsort v (make simple-vector len) 0 0 len) (when (> len 0) (dotimes (i (- len 1)) (iterate aux ((j (+ i 1))) (when (< j len) (when (<=? (nth v j) (nth v i)) (swap (nth v i) (nth v j))) (aux (+ j 1)))))) v)) ;;; Practice run for the Indiana Parenthesis Sweepstake Open: (labels ([sort-aux ;; Sort the first LEN elements of L. MERGER is used to ;; merge sublists. (lambda (l len <=? merger) (cond [(< len 2) l] [else (let* ([len/2 (quotient len 2)] [len/2b (- len len/2)] [lb (tail l len/2)]) (merger (sort-aux l len/2 <=? merger) len/2 (sort-aux lb len/2b <=? merger) len/2b <=?))]))] [merge!-aux ;; Destructively merges the first LENA guys of LA with the ;; first LENB guys of LB. (lambda (la lena lb lenb <=?) (cond [(zero? lena) lb] [(zero? lenb) la] [(not (<=? (car lb) (car la))) (set! (cdr la) (merge!-aux (cdr la) (- lena 1) lb lenb <=?)) la] [else (set! (cdr lb) (merge!-aux la lena (cdr lb) (- lenb 1) <=?)) lb]))] [merge-aux ;; Merge the first LENA guys of LA with the first LENB guys of LB. (lambda (la lena lb lenb <=?) (cond [(zero? lena) lb] [(zero? lenb) la] [else (let ([a (car la)] [b (car lb)]) (if (<=? b a) (cons b (merge-aux la lena (cdr lb) (- lenb 1) <=?)) (cons a (merge-aux (cdr la) (- lena 1) lb lenb <=?))))]))]) (add-method (sort! (list-type) l <=?) (let* ([len (length l)] [l (sort-aux l len <=? merge!-aux)]) (unless (zero? len) (set! (cdr (tail l (- len 1))) nil)) l)) (add-method (sort (list-type) l <=?) (let* ([len (length l)] [l (sort-aux l (length l) <=? merge-aux)]) (head l len)))) ;;; eof oaklisp-1.3.7/src/world/st.oak000066400000000000000000000013471332762442600162420ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA (%write-char #\*) oaklisp-1.3.7/src/world/streams.oak000066400000000000000000000251561332762442600172760ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Barak A. Pearlmutter&Kevin J. Lang ;;; Generic streams, and specific ones for file and terminal I/O. (define-instance stream type '() '()) (define-instance input-stream type '(peek-buff) (list stream)) (add-method (initialize (input-stream peek-buff) self) (set! peek-buff #f) self) ;;; INPUT-STREAM is an abstract type that defines these: (define-instance read-char operation) (define-instance unread-char operation) (define-instance peek-char operation) ;;; In terms of this: (define-instance really-read-char operation) ;;; Like this: (add-method (read-char (input-stream peek-buff) self) (if peek-buff (block0 peek-buff (set! peek-buff #f)) (really-read-char self))) (add-method (unread-char (input-stream peek-buff) self c) (if peek-buff (error "Can't unread two characters.") (set! peek-buff c))) (add-method (peek-char (input-stream peek-buff) self) (or peek-buff (set! peek-buff (really-read-char self)))) ;;; For internal use only, something to check if there is a char in the ;;; unread buffer. (define-instance unread-chars settable-operation) (add-method (unread-chars (input-stream peek-buff) self) (if peek-buff 1 0)) (add-method ((setter unread-chars) (input-stream peek-buff) self val) (unless (zero? val) (cerror "Proceed." "can only set UNREAD-CHARS to 0, not ~D." val)) (set! peek-buff #f)) ;;; OUTPUT-STREAM is similar, but doesn't have to do any of that stuff. (define-instance output-stream type '() (list stream)) (define-instance write-char operation) ;;; Define a distinguished object, the-eof-token. (define-instance eof-token type '() (list object)) (define-simple-print-method eof-token "EOF") (define-instance the-eof-token eof-token) ;;; How to do carriage returns without typing #\newline, which is ugly: (define-instance newline operation) (define-instance freshline operation) ;;; If nothing better is known, a freshline request must do a newline: (add-method (freshline (output-stream) self) (newline self)) (add-method (newline (output-stream) self) (write-char self #\NEWLINE)) ;;; Make (format s "~&") work for selected streams: (define-instance freshline-hacking-mixin type '(on-a-new-line) (list)) (add-method (initialize (freshline-hacking-mixin on-a-new-line) self) (set! on-a-new-line #t) self) (add-method (freshline (freshline-hacking-mixin on-a-new-line) self) (unless on-a-new-line (write-char self #\NEWLINE))) (add-method (write-char (freshline-hacking-mixin on-a-new-line) self char) (set! on-a-new-line (eq? char #\NEWLINE))) ;;; UNIX file descriptor I/O: ;;; Define our primitives. ;;; The STREAM-PRIMITIVE opcode is here for your OS dependent pleasure. ;;; UNIX dependent in this case. (define-constant-instance %stream-primitive (mix-types oc-mixer (list foldable-mixin operation))) (let ((sp-alist '())) (add-method (%stream-primitive (object) n) (let ((x (assq n sp-alist))) (cond (x => cdr) (else (let ((op (make (mix-types oc-mixer (list open-coded-mixin operation)) `((stream-primitive ,n)) (nth '(0 0 0 2 2 2 1 1 2 1 1 1 2 2) n) 1))) (set! sp-alist (cons (cons n op) sp-alist)) op)))))) #|| ;;; This is what all the stream primitives do: ;;; The number of arguments is listed in the list passed to nth above. (define (get-stdin) ((%stream-primitive 0))) (define (get-stdout) ((%stream-primitive 1))) (define (get-stderr) ((%stream-primitive 2))) (define (fopen-read string-loc len) ((%stream-primitive 3) string-loc len)) (define (fopen-write string-loc len) ((%stream-primitive 4) string-loc len)) (define (fopen-append string-loc len) ((%stream-primitive 5) string-loc len)) (define (fclose fd) ((%stream-primitive 6) fd)) (define (fflush fd) ((%stream-primitive 7) fd)) (define (putc fd char) ((%stream-primitive 8) fd char)) (define (getc fd) ((%stream-primitive 9) fd)) (define (interactive? fd) ((%stream-primitive 10) fd)) (define (ftell fd) ((%stream-primitive 11) fd)) (define (fseek fd position) ((%stream-primitive 12) fd position)) (define (chdir string-loc len) ((%stream-primitive 13) string-loc len)) ||# ;;; Streams that go to Unix file descriptors: (define-instance file-stream type '(fd) '()) (add-method (initialize (file-stream fd) self the-fd) (set! fd the-fd) self) (define-instance file-input-stream type '() (list file-stream input-stream object)) (define-instance file-output-stream type '() (list freshline-hacking-mixin file-stream output-stream object)) (add-method (initialize (file-input-stream) self the-fd) (^super file-stream initialize self the-fd) (^super input-stream initialize self)) (add-method (initialize (file-output-stream) self the-fd) (^super freshline-hacking-mixin initialize self) (^super file-stream initialize self the-fd)) (add-method (write-char (file-output-stream) self char) (^super freshline-hacking-mixin write-char self char) (^super file-stream write-char self char)) ;;; For use in writing .oa files and similar stuff that never gets freshline ;;; messages because it's not for people to read: (define-instance ugly-file-output-stream type '() (list file-stream output-stream object)) ;;; (define-instance open-input-file operation) (define-instance open-output-file operation) (define-instance open-output-file-append operation) (define-instance open-output-file-ugly operation) (define-instance open-output-file-append-ugly operation) (add-method (open-input-file (string) self) (iterate aux ((filename self)) (let ((the-fd ((%stream-primitive 3) (make-locative (%vref filename 0)) (length filename)))) (cond ((not the-fd) (aux (signal error-opening-read filename))) (else (make file-input-stream the-fd)))))) (add-method (open-output-file (string) self) (iterate aux ((filename self)) (let ((the-fd ((%stream-primitive 4) (make-locative (%vref filename 0)) (length filename)))) (cond ((not the-fd) (aux (signal error-opening-write filename))) (else (make file-output-stream the-fd)))))) (add-method (open-output-file-append (string) self) (iterate aux ((filename self)) (let ((the-fd ((%stream-primitive 5) (make-locative (%vref filename 0)) (length filename)))) (cond ((not the-fd) (aux (signal error-opening-append filename))) (else (make file-output-stream the-fd)))))) (add-method (open-output-file-ugly (string) self) (iterate aux ((filename self)) (let ((the-fd ((%stream-primitive 4) (make-locative (%vref filename 0)) (length filename)))) (cond ((not the-fd) (aux (signal error-opening-write filename))) (else (make ugly-file-output-stream the-fd)))))) (add-method (open-output-file-append-ugly (string) self) (iterate aux ((filename self)) (let ((the-fd ((%stream-primitive 5) (make-locative (%vref filename 0)) (length filename)))) (cond ((not the-fd) (aux (signal error-opening-append filename))) (else (make ugly-file-output-stream the-fd)))))) (add-method (really-read-char (file-stream fd) self) (or ((%stream-primitive 9) fd) the-eof-token)) (add-method (write-char (file-stream fd) self char) ;; Note: this returns #t on success, #f on failure: ((%stream-primitive 8) fd char)) ;;;;;;;;;;;; (define-instance close operation) (define-instance flush operation) (add-method (close (file-stream fd) self) (cond ((null? fd) (cerror "Proceed." "attempt to close ~S, which is already closed." self)) (((%stream-primitive 6) fd) (set! fd nil)) (else (cerror "Ignore the problem." "couldn't close ~S." self)))) (add-method (flush (file-stream fd) self) (cond ((null? fd) (cerror "Proceed." "attempt to flush ~S, which is closed." self)) ((null? ((%stream-primitive 7) fd)) (cerror "Ignore the problem." "error flushing ~S." self)) (else nil))) (define-instance interactive? operation) (add-method (interactive? (file-stream fd) self) ((%stream-primitive 10) fd)) (add-method (interactive? (stream) self) nil) ;;; Position returns the current position of the "read head" in a file (define-instance position settable-operation) (add-method (position (file-stream fd) self) ((%stream-primitive 11) fd)) (add-method (position (file-input-stream) self) (- (^super file-stream position self) (unread-chars self))) (add-method ((setter position) (file-stream fd) self pos) (unless ((%stream-primitive 12) fd pos) (cerror "Proceed." "unable to set the position of ~A to ~D." self pos)) pos) (add-method ((setter position) (file-input-stream) self pos) ;; Clear out any unread characters: (set! (unread-chars self) 0) (^super file-stream (setter position) self pos)) ;;; The current working directory. Settable. Currently does not use a ;;; primitive to try to figure it out for real, but just remembers. (define-instance cwd settable-operation) (let ((the-cwd #f)) (add-method (cwd (object)) the-cwd) (add-method ((setter cwd) (string) self) (iterate aux ((filename self)) (cond (((%stream-primitive 13) (make-locative (%vref filename 0)) (length filename)) (set! the-cwd filename) #t) (else (aux (signal error-changing-directory filename))))))) ;;; define this as a no op for now; used in top-level, so it has to be ;;; in the cold world, but backspace hacking streams use continuations ;;; so we don't want them in the cold world load. (define-instance clear-backspace-buffer operation) (add-method (clear-backspace-buffer (input-stream) self) #f) ;;; SETUP-STANDARD-STREAMS should be called at warm boot time. (define (setup-standard-streams) (set! standard-input (make file-input-stream ((%stream-primitive 0)))) (set! standard-output (make file-output-stream ((%stream-primitive 1)))) ;; Stop buffer skew from desyncing error messages: ;; (set! standard-error (make file-output-stream ((%stream-primitive 2)))) (set! standard-error standard-output) #f) (add-warm-boot-action setup-standard-streams) ;;; eof oaklisp-1.3.7/src/world/string-stream.oak000066400000000000000000000036641332762442600204170ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang ;;; Magic streams that don't really do i/o, but save or get their ;;; stuff from strings. Used mostly for (FORMAT NIL ...) and some ;;; Common Lisp like things. (define-instance string-output-stream type '(accumulated) (list output-stream object)) (add-method (initialize (string-output-stream accumulated) self) (set! accumulated '()) self) (add-method (write-char (string-output-stream accumulated) self char) (set! accumulated (cons char accumulated)) char) (add-method (#^string (string-output-stream accumulated) self) (#^string (reverse accumulated))) ;;; Calling this a STRING-INPUT-STREAM is a misnomer; actually, it can get ;;; its input from any sequence. (define-instance string-input-stream type '(the-string index len) (list input-stream stream object)) (add-method (initialize (string-input-stream the-string index len) self stuff) (set! the-string stuff) (set! index 0) (set! len (length the-string)) (^super input-stream initialize self)) (add-method (really-read-char (string-input-stream the-string index len) self) (if (= index len) the-eof-token (block0 (nth the-string index) (set! index (+ index 1))))) ;;; eof oaklisp-1.3.7/src/world/strings.oak000066400000000000000000000275631332762442600173150ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Barak A. Pearlmutter and Kevin J. Lang ;;; This file defines strings. It uses the ARRAY stuff. ;;; Add in variable-length-mixin and make fancy NTH methods (initialize string '(char-count) (list simple-vector)) (define-constant %chars-per-word 3) ;;; Try to make only one empty string. The following works, because the ;;; world builder makes only one empty string. (define (make-string len) (if (zero? len) "" (let* ((word-count (quotient (+ len (- %chars-per-word 1)) %chars-per-word)) (s (make string word-count len)) (loc (make-locative (%vref s 0)))) (dotimes (i word-count s) (set! (contents (%increment-locative loc i)) (bit-or (#^number #\NULL) (bit-or (ash-left (#^number #\NULL) 8) (ash-left (#^number #\NULL) 16)))))))) (add-method (initialize (string char-count) self word-count len) (set! char-count len) self) (add-method (length (string char-count) self) char-count) ;;;;;;;;;;;;;;;;; #| (add-method (nth (string char-count) self n) (if (<= char-count n) (error "Index ~D into ~S out of bounds." n self) (%fixnum->character (bit-and #xFF (let ((d (modulo n %chars-per-word)) (x (%vref self (quotient n %chars-per-word)))) (cond ((= d 0) x) ((= d 1) (ash-left x -8)) ((= d 2) (ash-left x -16)))))))) (add-method ((setter nth) (string char-count) self n new-c) (if (<= char-count n) (error "Index ~D into ~S out of bounds." n self) (let ((m (quotient n %chars-per-word)) (i (* (modulo n %chars-per-word) 8))) (set! (%vref self m) (bit-or (bit-and (%vref self m) (bit-and #xFFFFFF (bit-not (ash-left #xFF i)))) (ash-left (%character->fixnum new-c) i)))))) |# ;;;;;;;;;;;;;;;;; (add-method (nth (string char-count) self n) (if (or (negative? n) (<= char-count n)) (error "Index ~D into ~S out of bounds." n self) (%fixnum->character (bit-and #xFF (let ((d (modulo n %chars-per-word)) (x (%vref-nocheck self (quotient n %chars-per-word)))) (cond ((= d 0) x) ((= d 1) (ash-left x -8)) ((= d 2) (ash-left x -16)))))))) (add-method ((setter nth) (string char-count) self n new-c) (if (or (negative? n) (<= char-count n)) (error "Index ~D into ~S out of bounds." n self) (let ((m (quotient n %chars-per-word)) (i (* (modulo n %chars-per-word) 8))) (set! (%vref-nocheck self m) (bit-or (bit-and (%vref-nocheck self m) (bit-and #xFFFFFF (bit-not (ash-left #xFF i)))) (ash-left (%character->fixnum new-c) i))) new-c))) (add-method ((locater nth) (string) self n) (error "sorry, (locater nth) doesn't work on strings (e.g. ~a)" self)) ;;;;;;;;;;;;;;;;; (define-instance upcase operation) (define-instance downcase operation) (add-method (print (string) self stream) (cond (#*print-escape (write-char stream #\") (write-string-with-slashes self #\" stream) (write-char stream #\")) (else (write-string self stream)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Coerce any kind of sequence to a string. (add-method (#^string (sequence) seq) (let* ((len (length seq)) (s (make-string len))) (iterate aux ((i 0)) (cond ((< i len) (set! (nth s i) (nth seq i)) (aux (+ i 1))) (else s))))) ;;; The following code coerces only lists to strings, but is highly optimized. ;;; This code packs characters in by threes instead of shifting and or'ing ;;; each one in individually, and avoids the overhead of the nth's. (let ((fill-string (make operation))) (add-method (fill-string (variable-length-mixin) s l len) (iterate aux ((i 0)(l l)(to-do len)) (cond ((zero? to-do) s) ((= 1 to-do) (set! (%load-bp-i i) (%character->fixnum (car l))) s) ((= 2 to-do) (set! (%load-bp-i i) (bit-or (%character->fixnum (car l)) (ash-left (%character->fixnum (cadr l)) 8))) s) (else (let* ((c0 (%character->fixnum (car l))) (l1 (cdr l)) (c1 (%character->fixnum (car l1))) (l2 (cdr l1)) (c2 (%character->fixnum (car l2)))) (set! (%load-bp-i i) (bit-or c0 (bit-or (ash-left c1 8) (ash-left c2 16)))) (aux (+ i 1) (cdr l2) (- to-do %chars-per-word))))))) (add-method (#^string (list-type) l) (if (null? l) "" (let* ((len (length l)) (s (make string (quotient (+ len (- %chars-per-word 1)) %chars-per-word) len))) (fill-string s l len) )))) ; Note: the following 3 macros exist ONLY to ; improve the readability of the following procedure. ; They use %load-bp-i, and hence will break in other contexts. (local-syntax (get-3-from-string instring i) `(let ((the-word (%load-bp-i ,i))) (list (%fixnum->character (bit-and 255 the-word)) (%fixnum->character (ash-right (bit-and (ash-left 255 8) the-word) 8)) (%fixnum->character (ash-right (bit-and (ash-left 255 16) the-word) 16))))) (local-syntax (get-2-from-string instring i) `(let ((the-word (%load-bp-i ,i))) (list (%fixnum->character (bit-and 255 the-word)) (%fixnum->character (ash-right (bit-and (ash-left 255 8) the-word) 8))))) (local-syntax (get-1-from-string instring i) `(let ((the-word (%load-bp-i ,i))) (list (%fixnum->character (bit-and 255 the-word))))) (let ((quick-vref-helper (make operation))) (add-method (quick-vref-helper (variable-length-mixin) instring char-count) (let* ((n-in-last (modulo char-count %chars-per-word)) (n-full-words (quotient char-count %chars-per-word))) (iterate loop ((outlist (if (zero? n-in-last) '() (if (= 1 n-in-last) (get-1-from-string instring n-full-words) (get-2-from-string instring n-full-words)))) (down-counter (- n-full-words 1))) (if (negative? down-counter) outlist (let ((next-triple (get-3-from-string instring down-counter))) (set (cdddr next-triple) outlist) (loop next-triple (- down-counter 1))))))) (add-method (#^list-type (string char-count) instring) (quick-vref-helper instring char-count))) #| (add-method (#^string (list-type) l) (if (null? l) "" (let* ((len (length l)) ;;(s (make-string len)) (s (make string (quotient (+ len (- %chars-per-word 1)) %chars-per-word) len))) (iterate aux ((i 0)(l l)(to-do len)) (cond ((zero? to-do) s) ((= 1 to-do) (set! (%vref s i) (%character->fixnum (car l))) s) ((= 2 to-do) (set! (%vref s i) (bit-or (%character->fixnum (car l)) (ash-left (%character->fixnum (cadr l)) 8))) s) (else (let* ((c0 (%character->fixnum (car l))) (l1 (cdr l)) (c1 (%character->fixnum (car l1))) (l2 (cdr l1)) (c2 (%character->fixnum (car l2)))) (set! (%vref s i) (bit-or c0 (bit-or (ash-left c1 8) (ash-left c2 16)))) (aux (+ i 1) (cdr l2) (- to-do %chars-per-word))))))))) |# (add-method (#^string (character) s) (#^string (list s))) (define-instance write-string operation) (add-method (write-string (string char-count) self stream) (dotimes (i char-count) (write-char stream (nth self i)))) (add-method (reverse (string char-count) self) (let ((new (make-string char-count))) (dotimes (i char-count new) (set! (nth new i) (nth self (- char-count (+ i 1))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; String predicates ;;; (add-method (= (string) x y) (equal? x y)) ; WARNING, the following method assumes that the ; unused high bits in the last word of a string are ; always initialized to the same value. This is currently ; true (see the make-string method), but you should watch ; out in the future. (labels (((string-guts-equal? a b n-chars) (let ((n-words (quotient (+ n-chars (- %chars-per-word 1)) %chars-per-word)) (a-loc (make-locative (%vref-nocheck a 0))) (b-loc (make-locative (%vref-nocheck b 0)))) (iterate aux ((i (- n-words 1))) (cond ((zero? i) (= (contents a-loc) (contents b-loc))) ((= (contents (%increment-locative a-loc i)) (contents (%increment-locative b-loc i))) (aux (- i 1))) (else #f)))))) (add-method (equal? (string) a b) (or (eq? a b) (and (eq? (get-type a) (get-type b)) (let ((l (length a))) (and (= l (length b)) (or (zero? l) (string-guts-equal? a b l)))))))) (add-method (< (string) s1 s2) (let ((l1 (length s1)) (l2 (length s2))) (iterate aux ((i 0)) (cond ((= i l2) #f) ((= i l1) #t) ((< (%character->fixnum (nth s1 i)) (%character->fixnum (nth s2 i))) #t) ((> (%character->fixnum (nth s1 i)) (%character->fixnum (nth s2 i))) #f) (else (aux (+ i 1))))))) (add-method (upcase (character) c) (let ((c (%character->fixnum c))) (%fixnum->character (cond ((and (<= (#^number #\a) c) (<= c (#^number #\z))) (- c (- (#^number #\a) (#^number #\A)))) (else c))))) (add-method (downcase (character) c) (let ((c (%character->fixnum c))) (%fixnum->character (cond ((and (<= (#^number #\A) c) (<= c (#^number #\Z))) (- c (- (#^number #\A) (#^number #\a)))) (else c))))) (add-method (upcase (string) self) (#^string (map upcase (#^list-type self)))) (add-method (downcase (string) self) (#^string (map downcase (#^list-type self)))) (define (write-string-with-slashes s delimiter-to-avoid stream) (dotimes (i (length s)) (let ((c (nth s i))) (if (or (eq? c delimiter-to-avoid) (eq? c #\\)) (write-char stream #\\)) (write-char stream c)))) (define-instance requires-slashification? operation) (add-method (requires-slashification? (string) s) (let ((len (length s))) (iterate aux ((i 0)) (if (= i len) #f (let ((c (nth s i))) (or (eq? c #\") (eq? c #\\) (aux (+ i 1)))))))) ; the coercion here between strings and char-lists ; is for speed, not just convenience. (add-method (append (string) . rest) (listify-args (lambda (args) (#^string (apply append (map (lambda (x) (let ((x (if (is-a? x forcible) (force x) x))) (if (not (string? x)) (append-type-error "string" x) (#^list-type x)))) args)))) . rest)) #| (add-method (append (string char-count) x y) (let* ((y (#^string y)) (l1 (length y)) (l2 (+ char-count l1)) (s (make-string l2))) (dotimes (i char-count (iterate aux ((i char-count) (j 0)) (cond ((< j l1) (set! (nth s i) (nth y j)) (aux (+ i 1) (+ j 1))) (else s)))) (set! (nth s i) (nth x i))))) |# ; this method is simply wrong ; (add-method (copy (string char-count) s) ; (if (zero? char-count) s ; (let ((l (quotient (+ len (- %chars-per-word 1)) %chars-per-word)) ; (n (make string l char-count))) ; (dotimes (i l n) ; (set! (%vref n i) (%vref s i)))))) (add-method (copy (string char-count) s) (if (zero? char-count) s (let* ((l (quotient (+ char-count (- %chars-per-word 1)) %chars-per-word)) (n (make string l char-count))) (dotimes (i l n) (set! (%vref n i) (%vref s i)))))) (add-method (remove (string) s c) (#^string (remove (#^list-type s) c))) (add-method (subseq (string) self index len) (let ((new (make-string len))) (dotimes (i len) (set! (nth new i) (nth self (+ index i)))) new)) ;;; eof oaklisp-1.3.7/src/world/subprimitive.oak000066400000000000000000000203021332762442600203260ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter (define-constant %fixnum-tag 0) (define-constant %immediate-tag 1) (define-constant %locative-tag 2) (define-constant %pointer-tag 3) (define-constant %character-subtag (bit-or (ash-left 0 2) %immediate-tag)) (define-constant %wp-subtag (bit-or (ash-left 1 2) %immediate-tag)) (define-constant %increment-locative (add-method ((make-open-coded-operation '((inc-loc)) 2 1) (locative) self i) (%increment-locative self i))) (define-constant (%set-tag ref tag) (%crunch (%data ref) tag)) (define-constant get-type (add-method ((make-foldable-open-coded-operation '((load-type)) 1 1) (object) self) (get-type self))) (define-constant get-time (add-method ((make-open-coded-operation '((get-time)) 0 1) (object)) (get-time))) (define-constant %get-length (add-method ((make-open-coded-operation '((load-length)) 1 1) (object) self) (%get-length self))) #|| ;;; Maybe %get-length should not be open coded, but rather should be ;;; defined as follows. The LOAD-LENGTH instructions could then be ;;; removed from the emulator. (define (%get-length x) (let ((typ (get-type x))) (if ((%slot 2) typ) ((%slot 1) x) ((%slot 1) typ)))) ||# (define-constant eq? (add-method ((make-foldable-open-coded-operation '((eq?)) 2 1) (object) x y) (eq? x y))) (define-constant null? (add-method ((make-foldable-open-coded-operation '((not)) 1 1) (object) x) (null? x))) (define-constant not null?) (define-constant %allocate (add-method ((make-open-coded-operation '((allocate)) 2 1) (type) self size) (%allocate self size))) (define-constant %varlen-allocate (add-method ((make-open-coded-operation '((vlen-allocate)) 2 1) (type) self size) (%varlen-allocate self size))) (define-constant %data (add-method ((make-open-coded-operation '((get-data)) 1 1) (object) self) (%data self))) (define-constant %pointer %data) (define-constant %tag (add-method ((make-foldable-open-coded-operation '((get-tag)) 1 1) (object) x) (%tag x))) (define-constant %crunch (add-method ((make-open-coded-operation '((crunch)) 2 1) (fixnum) x y) (%crunch x y))) (define-constant most-negative-fixnum? (add-method ((make-foldable-open-coded-operation '((most-negative-fixnum?)) 1 1) (object) x) (most-negative-fixnum? x))) (define-constant fx-plus (add-method ((make-foldable-open-coded-operation '((fx-plus)) 2 1) (fixnum) x y) (if (eq? (get-type y) fixnum) (fx-plus x y) (error "Illegal second arg ~S to FX-PLUS." y)))) (define-constant fx-times (add-method ((make-foldable-open-coded-operation '((fx-times)) 2 1) (fixnum) x y) (if (eq? (get-type y) fixnum) (fx-times x y) (error "Illegal second arg ~S to FX-PLUS." y)))) (define-constant get-argline-char (add-method ((make-open-coded-operation '((get-argline-char)) 2 1) (fixnum) x y) (if (eq? (get-type y) fixnum) (get-argline-char x y) (error "Illegal second arg ~S to GET-ARGLINE-CHAR." y)))) ;;; The following is for use only at boot time, for feedback before the I/O system is up. (define-constant %write-char (add-method ((make-open-coded-operation '((putc)) 1 1) (character) x) (%write-char x))) (define-constant %print-digit (add-method ((make-open-coded-operation '((load-imm 48)(plus)(ash 6)(load-imm 1)(crunch)(putc)) 1 1) (integer) x) (%print-digit x))) (define-constant %read-char (add-method ((make-open-coded-operation '((getc)) 0 1) (object)) (%read-char))) (define-constant %assq (add-method ((make-open-coded-operation '((assq)) 2 1) (object) x y) (%assq x y))) ;;; This is for use in a tail recursive position when you want to fool the ;;; compiler into just emiting a return. See the code for +. (define-constant %return (add-method ((make-open-coded-operation '() 0 1) (object)) (%return))) (define-constant-instance %load-bp-i (mix-types oc-mixer (list open-coded-mixin locatable-operation)) '((load-bp-i)) 1 1) (set! (setter %load-bp-i) (make (mix-types oc-mixer (list open-coded-mixin operation)) '((store-bp-i)) 2 1)) (set! (locater %load-bp-i) (make (mix-types oc-mixer (list open-coded-mixin operation)) '((locate-bp-i)) 1 1)) (define-constant-instance %register (mix-types oc-mixer (list foldable-mixin operation))) (let ((reg-operation-alist '())) (add-method (%register (object) reg) (cond ((assq reg reg-operation-alist) => cdr) (else (let ((op (make (mix-types oc-mixer (list open-coded-mixin settable-operation)) `((load-reg ,reg)) 0 1))) (set! (setter op) (make (mix-types oc-mixer (list open-coded-mixin operation)) `((store-reg ,reg)) 1 1)) (set! reg-operation-alist (cons (cons reg op) reg-operation-alist)) op))))) (define-constant-instance %halt (mix-types oc-mixer (list foldable-mixin operation))) (let ((status-operation-alist '())) (add-method (%halt (object) status) (cond ((assq status status-operation-alist) => cdr) (else (let ((op (make (mix-types oc-mixer (list open-coded-mixin operation)) (lambda (n) `((halt ,status))) nil 1))) (add-method (op (object)) (exit status "((%HALT ~D))~%" status)) (set! status-operation-alist (cons (cons status op) status-operation-alist)) op))))) (define-constant-instance %slot (mix-types oc-mixer (list foldable-mixin operation))) (let ((slot-operation-alist '())) (add-method (%slot (object) slot) (cond ((assq slot slot-operation-alist) => cdr) (else (let ((op (make (mix-types oc-mixer (list open-coded-mixin locatable-operation)) `((load-slot ,slot)) 1 1))) (set! (setter op) (make (mix-types oc-mixer (list open-coded-mixin operation)) `((store-slot ,slot)) 2 1)) (set! (locater op) (make (mix-types oc-mixer (list open-coded-mixin operation)) `((locate-slot ,slot)) 1 1)) (set! slot-operation-alist (cons (cons slot op) slot-operation-alist)) op))))) (define-constant second-arg (add-method ((make-foldable-open-coded-operation (lambda (n) (if (< n 2) (error "A function passed ~D arguments can't return it's second." n) (list (list 'load-stk 1) (list 'blt-stk 1 n)))) nil 1) (object) a b . args) (listify-args car b . args))) (define-constant %push (add-method ((make-open-coded-operation (lambda (n) '((load-imm 0))) nil 1) (object) . args) 0)) (define-constant %make-cell (add-method ((make-open-coded-operation '((make-cell)) 1 1) (object) x) (make-locative x))) (define-constant %make-closed-environment (add-method ((make-open-coded-operation (lambda (n) (list `(make-closed-environment ,n))) nil 1) (object) . args) (listify-args (lambda (args) (let* ((l (length args)) (v (make %closed-environment l))) (dotimes (i l) (set! (nth v i)(nth args i))) v)) . args))) (define-constant %big-endian? (add-method ((make-open-coded-operation '((big-endian?)) 0 1) (object)) (%big-endian?))) (define-constant %simple-operation-length 5) ;;; This is temporary, until ^super is open coded directly. (define-constant %^super-tail (add-method ((make-open-coded-operation '((^super-tail)) 3 1) (object) the-type the-op self) (error "Non-open-coded call to %^super-tail."))) ;;; eof oaklisp-1.3.7/src/world/subtypes.oak000066400000000000000000000046061332762442600174730ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Barak A. Pearlmutter & Kevin J. Lang ;;; Set up the immediate types. ;;; There are 6 bits of immediate subtype tag: (define-instance subtype-table simple-vector 64) (define-instance illegal-immediate type '() (list object)) (add-method (print (illegal-immediate) self stream) (format stream "#" (ash-left (%data self) -6) (bit-and (%data self) #x3F) (%tag self))) (dotimes (i 64) (set! (nth subtype-table i) illegal-immediate)) (define (setup-subtype-table) (set! ((%register 'subtype-table)) subtype-table)) (setup-subtype-table) ;;; Now for characters (define-constant-instance character coercable-type '() (list self-evaluatory-mixin object)) (set! #^character (make (mix-types oc-mixer (list foldable-mixin settable-operation)))) (add-method (#^character (character) x) x) (set! (nth subtype-table 0) character) (define-instance graphic? operation) (add-method (graphic? (character) self) (let ((cn (#^number self))) (and (<= (#^number #\!) cn) (<= cn (#^number #\~))))) (add-method (print (character) self stream) (cond (#*print-escape (write-char stream #\#) (write-char stream #\\) (cond ((and (not (graphic? self)) (#^symbol self)) => (lambda (p) (print p stream))) (else (write-char stream self)))) (else (write-char stream self)))) (add-method (#^character (fixnum) x) (%crunch (ash-left x 6) 1)) (add-method (#^number (character) x) (ash-left (%data x) -6)) (add-method (= (character) x y) (eq? x y)) (add-method (< (character) x y) (if (char? y) (< (%character->fixnum x) (%character->fixnum y)) (error "Incompatible types: (< ~S ~S)." x y))) ;;; eof oaklisp-1.3.7/src/world/super.oak000066400000000000000000000022301332762442600167420ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;;; Define the ^super operation, which is basically written in ;;; microcode. One day ^super should be open coded everywhere. (define (^super the-type the-op self . args) ;; Hack NARGS and tail off to the ^SUPER opcode. ;; This leaves an unnecessary (RETURN) in the object file. (set! ((%register 'nargs)) (- ((%register 'nargs)) 2)) (%^super-tail the-type the-op self)) ;;; eof oaklisp-1.3.7/src/world/symbols.oak000066400000000000000000000150141332762442600173000ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;;; This file defines the Symbol datatype. ;(initialize symbol '(print-name) (list object)) (add-method (initialize (symbol print-name) self the-print-name) (set! print-name the-print-name) self) (define symbol-table (make-string-hash-table)) (define-instance intern settable-operation) (add-method (intern (string) self) (cond ((present? symbol-table self) => cdr) (else (set! (present? symbol-table self) (make symbol self))))) (add-method (intern (symbol print-name) self) (if (present? symbol-table print-name) (warning "attempt to reintern symbol ~S ignored.~%" self) (set! (present? symbol-table print-name) self))) ;;; The following variable is used so that the symbols.oa file does ;;; not have to be manually edited each time symbols is recompiled. (set! #*symbol-slashification-style #f) (add-method (print (symbol print-name) self stream) (cond ((and #*print-escape (requires-slashification? self)) (cond ((eq? #*symbol-slashification-style 't-compatible) (cond ((eq? self '||) (write-string "#[symbol \"\"]" stream)) (else (dotimes (i (length print-name)) (write-char stream #\\) (write-char stream (nth print-name i)))))) (else (write-char stream #\|) (write-string-with-slashes print-name #\| stream) (write-char stream #\|)))) (else (write-string print-name stream)))) (add-method (#^string (symbol print-name) self) print-name) (add-method (#^symbol (string) self) (intern self)) (add-method (#^symbol (sequence) self) (intern (#^string self))) (let ((counter 0)) (define (gensym x) (block0 (#^symbol (format #f "~A~D" x counter)) (set! counter (+ counter 1))))) (define generate-symbol gensym) (define (genvar) (gensym "v")) (define (genvar/1 ignored) (genvar)) ;(add-method (append (symbol) a b) ; (#^symbol (append (#^string a) (#^string b)))) (add-method (append (symbol) arg . rest) (format #t "warning: we are phasing out append for symbols (e.g. ~a)~%" arg) (listify-args (lambda (args) (#^symbol (apply append (cons (#^string arg) (map #^string args) )))) . rest)) ;;; Things that can make a symbol require slashification: ;;; A lower case character. ;;; First character not a constituent. ;;; Any chararacter other than the first neither a contituent nor a ;;; non-terminating macro character. ;;; Being || or |.| or |...|. ;;; Looking like a number: either an integer, or a fraction, or an ;;; integer with an embedded decimal point. ;;; ;;; Only the last condition is hairy. We use a DFA, with states: ;;; --n1-- --n2-- --n3-- --n4-- ;;; ['-'] * ['/' *] ;;; ['-'] * ['.' *] ;;; ['-'] '.' * ;;; The initial '-' doesn't get a state because it's handled (along with ;;; initial non-terminating macro chars) by some prologue code. (add-method (requires-slashification? (symbol print-name) self) ;; It is somewhat unfortunate that || |.| and |...| get interned because ;; they are mentioned below. In fact, in the initial world, these are the ;; only symbols requiring slashification. (or (eq? self '||) (eq? self '|.|) (eq? self '|...|) (let ((l (length print-name)) (base #*print-radix)) (labels ( ((n1 i) ;; Before first char of first block of digits (if (= i l) #f (let* ((c (nth print-name i)) (c-syntax (nth standard-read-table c))) (n1.5 i c c-syntax)))) ((n1.5 i c c-syntax) ;; Before first char of first block of digits (half done) (if (and (or (eq? c-syntax 'constituent) (and (pair? c-syntax) (eq? (car c-syntax) 'nonterminating-macro))) (digit? c base)) (n2 (+ 1 i)) (cond ((eq? c #\.) (n3 (+ 1 i))) (else (scan.5 i c c-syntax))))) ((n2 i) ;; After first char of first block of digits (if (= i l) #t (let* ((c (nth print-name i)) (c-syntax (nth standard-read-table c))) (if (and (or (eq? c-syntax 'constituent) (and (pair? c-syntax) (eq? (car c-syntax) 'nonterminating-macro))) (digit? c base)) (n2 (+ 1 i)) (cond ((eq? c #\/) (n3 (+ 1 i))) ((eq? c #\.) (n4 (+ 1 i))) (else (scan.5 i c c-syntax))))))) ((n3 i) ;; Before required digit of the last block of digits (if (= i l) #f (let* ((c (nth print-name i)) (c-syntax (nth standard-read-table c))) (if (and (or (eq? c-syntax 'constituent) (and (pair? c-syntax) (eq? (car c-syntax) 'nonterminating-macro))) (digit? c base)) (n4 (+ 1 i)) (scan.5 i c c-syntax))))) ((n4 i) ;; Before optional digit of the last block of digits (if (= i l) #t (let* ((c (nth print-name i)) (c-syntax (nth standard-read-table c))) (if (and (or (eq? c-syntax 'constituent) (and (pair? c-syntax) (eq? (car c-syntax) 'nonterminating-macro))) (digit? c base)) (n4 (+ 1 i)) (scan.5 i c c-syntax))))) ((scan i) ;; Scan along for a character that requires slashification (if (= i l) #f (let* ((c (nth print-name i)) (c-syntax (nth standard-read-table c))) (scan.5 i c c-syntax)))) ((scan.5 i c c-syntax) (if (and (or (eq? c-syntax 'constituent) (and (pair? c-syntax) (eq? (car c-syntax) 'nonterminating-macro))) ;; Got to be constituent and not lowercase char too. (let ((cn (#^number c))) (or (< cn (#^number #\a)) (< (#^number #\z) cn)))) (scan (+ 1 i)) #t)) ) (let* ((c (nth print-name 0)) (c-syntax (nth standard-read-table c))) (or (not (eq? c-syntax 'constituent)) (if (eq? c #\-) (n1 1) (n1.5 0 c c-syntax)))))))) ;;; eof oaklisp-1.3.7/src/world/system-version.oak.in000066400000000000000000000014751332762442600212320ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter (define system-version "@PACKAGE_STRING@") oaklisp-1.3.7/src/world/tag-trap.oak000066400000000000000000000133511332762442600173310ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;;; Copyright (C) 1987 Barak A. Pearlmutter & Kevin J. Lang ;;; Set up the tables needed by the tag trap mechanism. (define %arged-instructions 35) ;;; was 67 before multithreading instructions. Would be 70+ now ;;; except for ALARM which is at 127. TO DO: move it down. (define %argless-instructions 128) (define-instance %argless-tag-trap-table simple-vector %argless-instructions) (define-instance %arged-tag-trap-table simple-vector %arged-instructions) (let ((aux (lambda (args) (destructure (i . args) args (error "unexpected trap from argless instruction ~D, args ~S." i args))))) (dotimes (i %argless-instructions) (set! (nth %argless-tag-trap-table i) (lambda ( . args) (listify-args aux i . args))))) (let ((aux (lambda (args) (destructure (i arg . args) args (error "unexpected trap from arged instruction ~D ~D, args ~S." i arg args))))) (dotimes (i %arged-instructions) (set! (nth %arged-tag-trap-table i) (lambda (arg . args) (listify-args aux i arg . args))))) ;;; And these are the things that can go wrong here: (set! (nth %argless-tag-trap-table 1) plus/2) (set! (nth %argless-tag-trap-table 2) minus) ;(set! (nth %argless-tag-trap-table 3) eq?) ;(set! (nth %argless-tag-trap-table 4) not) (set! (nth %argless-tag-trap-table 5) times/2) (set! (nth %argless-tag-trap-table 7) quotient) (set! (nth %argless-tag-trap-table 8) zero?) (set! (nth %argless-tag-trap-table 11) %crunch) (set! (nth %argless-tag-trap-table 12) %read-char) ;These are for noise at (set! (nth %argless-tag-trap-table 13) %write-char); cold boot time. (set! (nth %argless-tag-trap-table 14) contents) (set! (nth %argless-tag-trap-table 15) (setter contents)) ;(set! (nth %argless-tag-trap-table 16) get-type) (set! (nth %argless-tag-trap-table 18) negative?) (set! (nth %argless-tag-trap-table 19) modulo) (set! (nth %argless-tag-trap-table 20) ash-left) (set! (nth %argless-tag-trap-table 21) rot-left) ;(set! (nth %argless-tag-trap-table 22) (setter %load-bp-i)) ;(set! (nth %argless-tag-trap-table 23) %load-bp-i) ;(set! (nth %argless-tag-trap-table 25) %allocate) (set! (nth %argless-tag-trap-table 26) %assq) ;(set! (nth %argless-tag-trap-table 28) %peek) ;(set! (nth %argless-tag-trap-table 29) (setter %peek)) (set! (nth %argless-tag-trap-table 31) subtract/2) (set! (nth %argless-tag-trap-table 32) =) (set! (nth %argless-tag-trap-table 33) <) (set! (nth %argless-tag-trap-table 34) bit-not) (set! (nth %argless-tag-trap-table 39) contents) (set! (nth %argless-tag-trap-table 40) car) (set! (nth %argless-tag-trap-table 41) cdr) (set! (nth %argless-tag-trap-table 42) (setter car)) (set! (nth %argless-tag-trap-table 43) (setter cdr)) (set! (nth %argless-tag-trap-table 44) (locater car)) (set! (nth %argless-tag-trap-table 45) (locater cdr)) (set! (nth %argless-tag-trap-table 48) throw) (set! (nth %argless-tag-trap-table 50) object-unhash) ;(set! (nth %argless-tag-trap-table 51) %gc) ;(set! (nth %argless-tag-trap-table 52) big-endian?) (set! (nth %argless-tag-trap-table 53) %varlen-allocate) (set! (nth %argless-tag-trap-table 54) %increment-locative) (set! (nth %argless-tag-trap-table 55) %fill-continuation) (set! (nth %argless-tag-trap-table 56) %continue) ;(set! (nth %argless-tag-trap-table 57) reverse-cons) ;(set! (nth %argless-tag-trap-table 58) most-negative-fixnum?) (set! (nth %argless-tag-trap-table 59) fx-plus) (set! (nth %argless-tag-trap-table 60) fx-times) ;(set! (nth %argless-tag-trap-table 61) get-time) (set! (nth %argless-tag-trap-table 62) remainder) (set! (nth %argless-tag-trap-table 63) quotientm) ;(set! (nth %argless-tag-trap-table 64) %full-gc) ;(set! (nth %argless-tag-trap-table 127) alarm) ;;; By writing things this way we prevent open coding: (define (trap-bit-op arg x y) (let ((op (cond ((= arg #b0001) bit-and) ((= arg #b1110) bit-nand) ((= arg #b0111) bit-or) ((= arg #b1000) bit-nor) ((= arg #b0110) bit-xor) ((= arg #b1001) bit-equiv) ((= arg #b0100) bit-andca) (else (error "Illegal instruction (BIT-OP #b~B) with args ~S, ~S.~%" arg x y))))) (op x y))) (set! (nth %arged-tag-trap-table 2) trap-bit-op) ;;; These aren't defined yet, so this stuff gets done later. ;(set! (nth %arged-tag-trap-table 21) no-handler-for-operation) ;(set! (nth %arged-tag-trap-table 22) no-handler-for-operation) ;(set! (nth %arged-tag-trap-table 24) incorrect-nargs) ;(set! (nth %arged-tag-trap-table 25) incorrect-nargs-gte) ;(set! (nth %arged-tag-trap-table 26) (setter %slot)) ;(set! (nth %arged-tag-trap-table 27) %slot) ;(set! (nth %arged-tag-trap-table 30) (locater %slot)) ;(set! (nth %arged-tag-trap-table 32) %filltag) ;;; As above with no-handler-for-operation, this gets done later: ;(set! (nth %arged-tag-trap-table 33) no-^super-handler) ;(set! (nth %arged-tag-trap-table 34) no-^super-handler) ;;; Plug into the emulator: (define (setup-tag-traps) (set! ((%register 'argless-tag-trap-table)) %argless-tag-trap-table) (set! ((%register 'arged-tag-trap-table)) %arged-tag-trap-table) nil) (setup-tag-traps) ;;; eof oaklisp-1.3.7/src/world/tak.oak000066400000000000000000000025311332762442600163670ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter (define (tak x y z) (cond ((not (< y x)) z) (else (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y))))) #| ;;; hacked for siod (define (tak x y z) (if (< y x) (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y)) z)) |# ;;; This tests the effect of block compilation: (define (tak2 x y z) (iterate tak ((x x)(y y)(z z)) (cond ((not (< y x)) z) (else (tak (tak2 (- x 1) y z) (tak2 (- y 1) z x) (tak2 (- z 1) x y)))))) (define (macnine x) (if (> x 100) (- x 10) (macnine (macnine (+ x 11))))) oaklisp-1.3.7/src/world/time.oak000066400000000000000000000017151332762442600165510ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter (define (*time f n) (let ((before (get-time))) (dotimes (i n (/ (- (get-time) before) n)) (f)))) (define-syntax (time (n) . body) `(*time (lambda () . ,body) ,n)) ;;; eof oaklisp-1.3.7/src/world/tool.oak000066400000000000000000000536531332762442600166000ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; A quick and dirty Oaklisp file linker. ;;; (C) Barak A. Pearlmutter and Kevin J. Lang, Fall 1986, Winter 1992. ;;; Potential bugs noticed while porting: ;;; ;;; count-variable calls count-symbol always. Count-symbol always allocates ;;; storage, even if the symbol already exists. Is this a core leak? ; the input to this program is a bunch of files, each of which ; contains a big list whose format is ; ; (( ; ((constant 14 ((foo bar) baz)) ; (variable 2 append) ; these offsets are ; (code 28 6)) ; in terms of 16 shortwords ; (100 343 232 ... ) ; 16 bit opcodes ; ) ; ( ; another code block ; ) ; ) (define cell-size 1) (define pair-size 3) (define symbol-size 2) (define method-size 3) (define null-size 1) (define t-size 1) (define type-size 9) (define coercable-type-size 10) (define int-tag 0) (define imm-tag 1) (define loc-tag 2) (define ptr-tag 3) (define return-opcode (* 24 256)) (define noop-opcode 0) (define value-stack-size #x1abc) (define context-stack-size #x2abc) (set! world-array-size 0) (define cache-pairs? #t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;macros for speed ; Not any more --BAP ; this code depends on bignums (define (tagize-int x) (+ int-tag (* 4 (if (negative? x) (+ x (expt 2 30)) x)))) (define (tagize-imm x) (+ imm-tag (ash-left x 2))) (define (tagize-ptr x) (+ ptr-tag (ash-left x 2))) (define (tagize-loc x) (+ loc-tag (ash-left x 2))) (define (store-world-int x word-addr) (store-world-word (tagize-int x) word-addr)) (define (store-world-ptr x word-addr) (store-world-word (tagize-ptr x) word-addr)) (define (store-world-loc x word-addr) (store-world-word (tagize-loc x) word-addr)) (define (zero-enough? x) (destructure** x ('0 #t) (('0 . '0) #t) (otherwise #f))) (define (store-world-word word word-addr) (let ((oldword (nth world word-addr))) (if (zero-enough? oldword) (set! (nth world word-addr) word) (error "Attempt to overwrite <~s ~s>." word word-addr)))) (define (store-world-opcodes o1 o2 word-addr) (store-world-word (cons o1 o2) word-addr)) ;;; End of what used to be macros for speed ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;top level stuff ; (set! stashed-inlist #f) (set! var-table #f) ;impose an ordering on variables (set! var-list #f) (set! blk-table #f) (set! sym-table #f) (set! pair-table #f) (set! the-empty-string #f) (define (init-tables) (set! var-list '()) (set! the-empty-string #f) (set! var-table (make-eq-hash-table)) (set! blk-table (make-eq-hash-table)) (set! sym-table (make-eq-hash-table)) (set! pair-table (make-equal-hash-table))) (define (tool-files in-files out-file) (format #t "reading ...") (let ((in-names (map (lambda (na) (extensionize na ".oa")) in-files))) (tool (map (lambda (name) (format #t " ~a" name) (flush standard-output) (read-oa-file name)) in-names) in-files) (format #t "~%") (dump-tables (extensionize out-file ".sym")) (format #t "symbol-table~%") (dump-world (extensionize out-file ".cold")) (cons 'world out-file))) (define (tool inlist in-names) (set! stashed-inlist inlist) (init-tables) (count-things inlist) (format #t "counts~%") (compute-base-addresses) (format #t "base-addrs~%") (init-world) (format #t "world-init~%") (layout-symbols-and-variables) (format #t "syms-and-vars~%") (layout-handbuilt-data) (format #t "handbuilt~%") (patch-symbols) (format #t "symbol-patches~%") (build-blk-table inlist) (format #t "blk-table~%") (spew-opcodes inlist in-names) (format #t "opcodes~%") (set! stashed-inlist #f) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;first pass ; count everything ; initialize symbol and variable tables (define reg-code-delta 4) ;extra opcode units per block (define top-code-delta -2) ;in actual world (set! blk-count 0) (set! opc-count 0) (set! var-count 0) (set! sym-count 0) (set! dat-count 0) ;words (set! max-blks 0) ;most blocks in one file ; (define (count-things inlist) (set! dat-count 0) (set! blk-count 0) (set! opc-count (- reg-code-delta top-code-delta)) ; header for top code blk (for-each count-variable vars-to-preload) (dolist (fil inlist) (let ((nblks (length fil))) (set! opc-count (+ opc-count (+ top-code-delta (* reg-code-delta (- nblks 1))))) (set! max-blks (max nblks max-blks)) (set! blk-count (+ nblks blk-count)) (dolist (blk fil) (print-dot) (count-opcodes blk) (dolist (x (first blk)) (let ((keyword (first x))) (cond ((eq? 2 keyword) ;constant (count-data (third x))) ((eq? 0 keyword) ;variable (count-variable (third x))) ((eq? 1 keyword) ;code ;;noop ) (else (error "bad inline patch keyword ~S.~&" keyword)))))))) (set! var-list (reverse! var-list)) (set! var-count (length var-table)) (set! sym-count (length sym-table)) (set! dat-count (+ dat-count (handbuilt-data-size))) (format #t "~&ops:~s vars:~s syms:~s cells:~s~%" opc-count var-count sym-count dat-count)) (define (count-opcodes blk) (let ((op-co (length (second blk)))) (if (odd? op-co) (error "<~s> odd # of opcodes is ~n ~&" op-co blk)) (set! opc-count (+ opc-count op-co)))) (define (count-variable v) (if (not (toble-probe v var-table)) (push var-list v)) (count-symbol v)) (define (count-symbol v) (set! dat-count (+ (string-size (#^string v)) dat-count)) (toble-probe v sym-table)) (define (count-data d) (cond ((symbol? d) (count-symbol d)) ((number? d) ) ((char? d) ) ((null? d) ) ((eq? d '#t) ) ((pair? d) (set! dat-count (+ pair-size dat-count)) (count-data (car d)) (count-data (cdr d))) ((string? d) (set! dat-count (+ (string-size d) dat-count))) (else (error "count: bad inline constant <~s> ~&" d)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;second pass ; layout symbols and variables ; build block table (set! start-of-opc-space 0) (set! start-of-var-space 0) (set! start-of-sym-space 0) (set! start-of-dat-space 0) (set! next-free-dat 0) (define (compute-base-addresses) (set! start-of-opc-space 0) (set! start-of-var-space (+ start-of-opc-space (quotient opc-count 2))) (set! start-of-sym-space (+ start-of-var-space (* var-count cell-size))) (set! start-of-dat-space (+ start-of-sym-space (* sym-count symbol-size))) (set! world-array-size (+ start-of-dat-space dat-count)) (set! next-free-dat start-of-dat-space)) (define (alloc-dat n) (let ((old-addr next-free-dat)) (set! next-free-dat (+ next-free-dat n)) (if (> next-free-dat world-array-size) (space-error 'data) old-addr))) (define (layout-symbols-and-variables) (let ((nextvar start-of-var-space) (nextsym start-of-sym-space)) (dolist (name var-list) (toble-set name nextsym sym-table) (set! nextsym (+ nextsym symbol-size)) (toble-set name nextvar var-table) (set! nextvar (+ nextvar cell-size))) (toble-walk (lambda (name addr) (if (not addr) (block (toble-set name nextsym sym-table) (set! nextsym (+ nextsym symbol-size))))) sym-table))) (define (patch-symbols) (toble-walk (lambda (name addr) (store-world-ptr where-nil-lives addr) (store-world-word (string-alloc (#^string name)) (+ 1 addr))) sym-table)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; The blk table is a little strange. ; Its keys are special code numbers computed by uniq-blkno. ; The entries are conses (addr . kind), where kind says ; what sort of code munching needs to be done to append the ; top level blocks. (set! first-regular-blk-addr 0) (define (uniq-blkno filno blkno) (+ blkno (* max-blks filno))) (define (build-blk-table inlist) (let* ((nfils (length inlist)) (next-blk-addr (+ start-of-opc-space (quotient (- reg-code-delta top-code-delta) 2))) (allocate-blk (lambda (blk toplevelp) (let ((old-addr next-blk-addr) (nwords (quotient (+ (length (second blk)) (if toplevelp top-code-delta reg-code-delta)) 2))) (set! next-blk-addr (+ next-blk-addr nwords)) (if (> next-blk-addr start-of-var-space) (space-error 'code) old-addr))))) (dolist-count (fils inlist filno) (let ((blk (first fils))) (set! (contents (toble-install (uniq-blkno filno 0) blk-table)) (cons (allocate-blk blk #t) (if (= filno (- nfils 1)) 'lastoplevel 'toplevel))))) (set! first-regular-blk-addr next-blk-addr) (dolist-count (fils inlist filno) (dolist-count (blk (cdr fils) blknom1) (set! (contents (toble-install (uniq-blkno filno (+ 1 blknom1)) blk-table)) (cons (allocate-blk blk #f) 'regular)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;third pass ; throw code out into the world (define (spew-opcodes inlist in-names) (format #t " spew") (store-world-ptr where-%code-vector-lives start-of-opc-space) (store-world-int first-regular-blk-addr (+ 1 start-of-opc-space)) (store-world-ptr where-nil-lives (+ 2 start-of-opc-space)) (do ((fils inlist (cdr fils)) (filno 0 (+ filno 1)) (in-names in-names (and (not (null? in-names)) (cdr in-names)))) ((null? fils)) (if in-names (format #t " ~A" (car in-names)) (format #t "?")) (flush standard-output) (dolist-count (blk (first fils) blkno) (print-dot) (let* ((patches (first blk)) (opcodes (second blk)) (info (toble-get (uniq-blkno filno blkno) blk-table)) (base-addr (car info)) (blk-kind (cdr info)) (regp (eq? blk-kind 'regular)) (delta (quotient (if regp reg-code-delta top-code-delta) 2)) (delbase-addr (+ delta base-addr))) (when regp (store-world-ptr where-%code-vector-lives base-addr) (store-world-int (+ 2 (quotient (length opcodes) 2)) (+ 1 base-addr))) (iterate opStep ((ops opcodes)(addr delbase-addr)) (cond (ops (when (>= addr base-addr) (store-world-opcodes (first ops) (second ops) addr)) (opStep (cddr ops) (+ 1 addr))) ((eq? 'toplevel blk-kind) (changereturntonoop (- addr 1))))) (dolist (pat patches) (let* ((patkind (first pat)) (pataddr (+ delbase-addr (quotient (second pat) 2))) (patval (third pat)) (patref (cond ((eq? 2 patkind) (constant-refgen patval)) ((eq? 0 patkind) (tagize-loc (toble-get patval var-table))) ((eq? 1 patkind) (tagize-ptr (car (toble-get (uniq-blkno filno patval) blk-table)))) (else (error "Unknown patkind in pat ~S." pat))))) (when (>= pataddr base-addr) (store-world-word patref pataddr))))))) (format #t "~%")) ;this is a hack to string the top-level blocks together (define (changereturntonoop addr) (let* ((them (get-world-opcodes addr)) (op1 (car them)) (op2 (cdr them))) (cond ((= op2 return-opcode) (overwrite-world-opcodes op1 noop-opcode addr)) ((and (= op1 return-opcode) (= op2 noop-opcode)) (overwrite-world-opcodes noop-opcode noop-opcode addr)) (else (error "bad ops in toplvl blk end <~s ~s> ~&" op1 op2))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;cons up inline constants ; (define (constant-refgen c) (cond ((symbol? c) (tagize-ptr (toble-get c sym-table))) ((null? c) (tagize-ptr where-nil-lives)) ((eq? c '#t) (tagize-ptr where-t-lives)) ((number? c) (tagize-int c)) ((char? c) (tagize-imm (ash-left (#^number c) 6))) ((pair? c) (if cache-pairs? (caching-pair-alloc c) (pair-alloc c))) ((string? c) (string-alloc c)) (else (error "refgen: bad constant data <~s> ~&" c)))) (define (pair-alloc c) (let ((newpair (alloc-dat pair-size))) (store-world-ptr where-cons-pair-lives newpair) (store-world-word (constant-refgen (car c)) (+ 1 newpair)) (store-world-word (constant-refgen (cdr c)) (+ 2 newpair)) (tagize-ptr newpair))) (define (caching-pair-alloc c) (cond ((present? pair-table c) => cdr) (else (let ((newp (pair-alloc c))) ;; Note that this code assumes that C is not EQUAL? to any of its ;; subexpressions. (set! (present? pair-table c) newp) newp)))) (define (string-size c) (let* ((strlen (length c)) (strwordlen (+ 3 (quotient (+ strlen (- 3 1)) 3)))) strwordlen)) (define (string-alloc c) (let ((strlen (length c))) (if (> strlen 0) (real-string-alloc c strlen) (or the-empty-string (let ((e-s (real-string-alloc c strlen))) (set! the-empty-string e-s) e-s))))) (define (real-string-alloc c strlen) (let* ((strwordlen (+ 3 (quotient (+ strlen (- 3 1)) 3))) (newstring (alloc-dat strwordlen)) (strlist (map #^number (#^list-type c)))) (store-world-ptr where-string-lives newstring) (store-world-int strwordlen (+ 1 newstring)) (store-world-int strlen (+ 2 newstring)) (string-alloc-aux (+ 3 newstring) strlist strlen) (tagize-ptr newstring))) (define (string-alloc-aux i l to-do) (iterate aux ((i i)(l l)(to-do to-do)) (cond ((= to-do 0) ) ((= to-do 1) (store-world-int (car l) i)) ((= to-do 2) (store-world-int (bit-or (car l) (ash-left (cadr l) 8)) i)) (else (let* ((c0 (car l)) (l1 (cdr l)) (c1 (car l1)) (l2 (cdr l1)) (c2 (car l2))) (store-world-int (bit-or c0 (bit-or (ash-left c1 8) (ash-left c2 16))) i) (aux (+ i 1) (cdr l2) (- to-do 3))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;hand-built things ; (define vars-to-preload '(nil t cons-pair %code-vector string %%symloc %%nsyms %%symsize %%varloc %%nvars)) (set! where-nil-lives #f) (set! where-t-lives #f) (set! where-string-lives #f) (set! where-cons-pair-lives #f) (set! where-%code-vector-lives #f) (set! where-boot-method-lives #f) (define (handbuilt-data-size) (+ null-size t-size method-size (* 2 type-size) (* 1 coercable-type-size))) (define (layout-handbuilt-data) (set! where-nil-lives (alloc-dat null-size)) (set! where-t-lives (alloc-dat t-size)) (set! where-string-lives (alloc-dat coercable-type-size)) (set! where-cons-pair-lives (alloc-dat type-size)) (set! where-%code-vector-lives (alloc-dat type-size)) (store-world-ptr where-nil-lives (toble-get 'nil var-table)) (store-world-ptr where-t-lives (toble-get 't var-table)) (store-world-ptr where-string-lives (toble-get 'string var-table)) (store-world-ptr where-cons-pair-lives (toble-get 'cons-pair var-table)) (store-world-ptr where-%code-vector-lives (toble-get '%code-vector var-table)) (store-world-loc start-of-sym-space (toble-get '%%symloc var-table)) (store-world-loc start-of-var-space (toble-get '%%varloc var-table)) (store-world-int sym-count (toble-get '%%nsyms var-table)) (store-world-int var-count (toble-get '%%nvars var-table)) (store-world-int symbol-size (toble-get '%%symsize var-table)) (layout-boot-method) ) (define (layout-boot-method) (set! where-boot-method-lives (alloc-dat method-size)) (store-world-ptr where-nil-lives where-boot-method-lives) (store-world-ptr start-of-opc-space (+ 1 where-boot-method-lives)) (store-world-ptr where-nil-lives (+ 2 where-boot-method-lives)) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;random junk ; (define (space-error which) (error "Out of ~s space." which)) (define (print-dot) (write-char standard-output #\.) (flush standard-output)) (define (pw) (dotimes (i (length world)) (format #t "~s " (nth world i)))) (define (extensionize base ext) (append (downcase (#^string base)) ext)) (define (read-oa-file file) ;file already has an extension (let ((red (read-file file))) (cond ((not (null? (cdr red))) (error "File ~S, should contain but one form, but has ~A." file (length red))) ((and (pair? (car (car red))) (pair? (caar (car red)))) (car red)) (else (make-oa-list (car red)))))) (define (make-oa-list oaf-list) (let ((sym-vec (#^simple-vector (first oaf-list)))) (labels (((rewrite-syms clause) (let ((car-clause (car clause))) (if (> car-clause (- 5 1)) (list (- car-clause 5) (second clause) (nth sym-vec (third clause))) clause)))) (map! (lambda (blk) (list (map! rewrite-syms (triplify! (first blk))) (second blk))) (second oaf-list))))) ; this function reverses the order of the triples. ; also, it is extremely side-effecting, so watch out. (define (triplify! inlist) (iterate step ((in inlist) (out '())) (if in (let* ((cddrin (cdr (cdr in))) (nxtrip (cdr cddrin))) (step nxtrip (block (set! (cdr cddrin) nil) (cons in out)))) out))) ;;; Note: the caller of PRINT-HEX must bind (FLUID PRINT-RADIX) to 16 ;;; or results are unpredictable. (define (print-hex num ndigits outfile) (cond ((not ndigits) (when (or (negative? num) (and (not (eq? (get-type num) fixnum)) (> num #xffffffff))) (error "Can't PRINT-HEX #x~X with ~D digits" num ndigits))) ((= ndigits 4) (cond ((negative? num) (error "Can't PRINT-HEX #x~X with ~D digits" num ndigits)) ((< num #x10) (write-char outfile #\0) (write-char outfile #\0) (write-char outfile #\0)) ((< num #x100) (write-char outfile #\0) (write-char outfile #\0)) ((< num #x1000) (write-char outfile #\0)) ((> num #xffff) (error "Can't PRINT-HEX #x~X with ~D digits" num ndigits)))) (else (error "Can't PRINT-HEX #x~X with ~D digits" num ndigits))) (print num outfile)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;test stuff ; (define testlist '( ( ; start of file 1 ( ; start of block ((constant 6 ((foo bar) 1)) (code 10 1) (constant 0 ()) (variable 2 append)) (0 0 0 0 100 343 0 0 232 1 0 0 2 3 4 5 5 6 7 6144) ;18 ) ; end of block ( ; start of block ((constant 4 12) (constant 0 (ivar1 ivar2)) (constant 6 dog) (variable 10 dog)) (0 0 2 3 0 0 0 0 100 343 0 0 54 23 6144 0) ;14 ) ; end of block ) ; end of file ( ; start of file 2 ( ; start of block ((constant 0 ()) (variable 2 nil) (variable 4 foo)) (0 0 0 0 0 0 9 8 7 6 5 6144) ;12 ) ; end of block ) ;end of file ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;world accessor functions ; (set! world nil) ;this holds an array of words. ;opcodes are stored as pairs. (define (init-world) (let ((array-size world-array-size)) (set! world (make simple-vector array-size)) (dotimes (i array-size) (set! (nth world i) 0)))) (define (overwrite-world-opcodes o1 o2 word-addr) (set! (nth world word-addr) (cons o1 o2))) (define (overwrite-world-word word word-addr) (set! (nth world word-addr) word)) (define (get-world-word word-addr) (nth world word-addr)) (define (get-world-opcodes word-addr) (nth world word-addr)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;write output files ; (define (dump-world filename) (let ((actual-size next-free-dat) (world world)) (with-open-file (outfile filename out) (write-world-header outfile) (bind ((#*print-radix 16)) (dotimes (i actual-size) (when (zero? (modulo i 8)) (format outfile "~%")) (let ((guy (nth world i))) (cond ((number? guy) (write-char outfile #\space) (print-hex guy #f outfile)) ((pair? guy) (write-char outfile #\^) (print-hex (car guy) #f outfile) (print-hex (cdr guy) 4 outfile)) (else (error "Unknown guy ~S." guy)))))) ;; Size of weak-pointer table: (format outfile "~%0~%")) (format #t "~&Total words:~D~%" actual-size))) (define (write-world-header outfile) (bind ((#*print-radix 16)) (print-hex value-stack-size #f outfile) (format outfile " ") (print-hex context-stack-size #f outfile) (format outfile " ") (print-hex (tagize-ptr where-boot-method-lives) #f outfile) (format outfile " ") (print-hex next-free-dat #f outfile) (format outfile "~%"))) (define (dump-tables filename) (write-file filename `((variables ,(ordered-toble->alist var-table var-list)) (symbols ,(reverse (toble->alist sym-table)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; toble stuff ; (define (toble-install key toble) (if (toble-probe key toble) (error "Key ~S already installed in table ~S." key toble) (toble-probe key toble))) (define (toble-get key toble) (let ((slot (toble-probe key toble))) (if (not slot) (error "Key ~S not found in table ~S." key toble) (contents slot)))) (define (toble-set key value toble) (let ((slot (toble-probe key toble))) (if (not slot) (error "Key ~S not found in table ~S." key toble) (set! (contents slot) value)))) ;;; BAP: TOBLE-PROBE used to be a macro for speed. (define (toble-probe key toble) (cond ((table-entry toble key)) (else (set! (table-entry toble key) (%make-cell nil)) #f))) ;;; BAP: Fix quick fix. (define (toble-walk lamder toble) ;; LAMDER is to be applied to each key,value pair. (dolist (a (#^list-type toble)) (lamder (car a) (contents (cdr a))))) (define (toble->alist toble) (map (lambda (x) `(,(car x) ,(contents (cdr x)))) (#^list-type toble))) (define (ordered-toble->alist toble keylist) (map (lambda (key) (cons key (contents (table-entry toble key)))) keylist)) (define (toble-clear x) (set! (length x) 0)) oaklisp-1.3.7/src/world/top-level.oak000066400000000000000000000015751332762442600175260ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter (set! top-level (lambda () (format #t "~&Welcome to ~A~%" system-version) (read-eval-print-loop))) oaklisp-1.3.7/src/world/trace.oak000066400000000000000000000061701332762442600167110ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter ;;; This file defines a native, extremely primitive trace facility. It works ;;; by encapsulating operations and setting the new capsule back into the ;;; variable where the original came from. (define-instance encapsulated-operation type '(the-real-op) (list operation)) (add-method (setter (encapsulated-operation the-real-op) self) (setter the-real-op)) (add-method (locater (encapsulated-operation the-real-op) self) (locater the-real-op)) (add-method (print (encapsulated-operation the-real-op) self stream) (format stream "#" (real-op self))) (add-method (initialize (encapsulated-operation the-real-op) self op) (set! the-real-op op) self) (define-instance real-op locatable-operation) (add-method ((locater real-op) (encapsulated-operation the-real-op) self) (make-locative the-real-op)) (add-method (real-op (encapsulated-operation the-real-op) self) (real-op the-real-op)) (add-method (real-op (operation) self) self) ;;; Some listification targets, to avoid making a lambda every time. (define (in-message args) (let ((op (car args)) (args (cdr args))) (format standard-error "~&Enter ~A with ~A~%" op args) (apply op args))) (define (out-message args) (let ((op (car args)) (args (cdr args))) (let ((ans (apply op args))) (format standard-error "~&Exit ~A with ~A.~%" op ans) ans))) (define (in-out-message args) (let ((op (car args)) (args (cdr args))) (format standard-error "~&Enter ~A with ~A.~%" op args) (let ((ans (apply op args))) (format standard-error "~&Exit ~A with ~A.~%" op ans) ans))) ;;; The encapsulation operators. (define (encapsulate-in op) (add-method ((make encapsulated-operation op) (object) . args) (listify-args in-message op . args))) (define (encapsulate-out op) (add-method ((make encapsulated-operation op) (object) . args) (listify-args out-message op . args))) (define (encapsulate-in-out op) (add-method ((make encapsulated-operation op) (object) . args) (listify-args in-out-message op . args))) ;;; A miniature interface. (define-syntax (trace-variable-in v) `(set! ,v (encapsulate-in (real-op ,v)))) (define-syntax (trace-variable-out v) `(set! ,v (encapsulate-out (real-op ,v)))) (define-syntax (trace-variable-in-out v) `(set! ,v (encapsulate-in-out (real-op ,v)))) (define-syntax (untrace-variable v) `(set! ,v (real-op ,v))) oaklisp-1.3.7/src/world/truth.oak000066400000000000000000000021441332762442600167560ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1989 Kevin J. Lang & Barak A. Pearlmutter ;;; Define the canonical truth value, that has a print syntax #T. The ;;; world builder has it made already, so we patch the reference. (define-instance truths type '() (list self-evaluatory-mixin object)) (set! ((%slot 0) t) truths) (define-constant else t) (add-method (print (truths) self stream) (format stream "#T")) ;;; eof oaklisp-1.3.7/src/world/undefined.oak000066400000000000000000000041421332762442600175510ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; This file creates undefined values. INITIALIZE and PRINT methods ;;; are provided for them, but you shouldn't be able to do much else ;;; to them. ;;; When making an undefined value pass one argument, a description of ;;; where the undefined value came from. (define-instance undefined type '(origin) (list object)) (add-method (initialize (undefined origin) self the-origin) (set! origin the-origin) self) (add-method (print (undefined origin) self stream) (format stream "#" origin self)) ;;; Some canonical undefined values: (define-instance variable-undefined-value undefined 'variable) (define-instance ivar-undefined-value undefined 'ivar) (define-instance if-undefined-value undefined 'if) (define-instance cond-undefined-value undefined 'cond) (define-instance when-undefined-value undefined 'when) (define-instance unless-undefined-value undefined 'unless) (define-instance while-undefined-value undefined 'while) (define-instance generic-undefined-value undefined 'generic) ;;; (define (make-undefined-variable-value sym) (make undefined (append "variable " (#^string sym)))) ;;; (define (setup-undefined-ivar) (set! ((%register 'uninitialized)) ivar-undefined-value) nil) (setup-undefined-ivar) ;;; Defered until warm.oak: ;;(add-warm-boot-action setup-undefined-ivar) ;;; eof oaklisp-1.3.7/src/world/unwind-protect.oak000066400000000000000000000103161332762442600205720ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; The global %WINDINGS holds a list of items of the form ;;; (UNWIND-LANBDA WIND-LAMBDA . FLUID-BINDING-LIST), and the global ;;; %WIND-COUNT holds the length of %WINDINGS. Continuations store ;;; the values of these two variables for use when they're continued, ;;; and catch tags hold just the value of %WIND-COUNT which suffices. ;;; When continuing a continuation, the caller unwinds to the join ;;; point and then the callee winds back up to the destination point. ;;; Set up the necessary globals used for holding the winding stack. (define (unset-windings) (set! %windings '()) (set! %wind-count 0)) (unset-windings) (add-warm-boot-action unset-windings) ;;; This routine returns the height of the join point. (define (find-join-point windings0 count0 windings1 count1) (labels ((aux (lambda (windings0 windings1 count) (cond ((eq? windings0 windings1) count) (else (aux (cdr windings0) (cdr windings1) (- count 1))))))) (cond ((= count0 count1) (aux windings0 windings1 count0)) ((< count0 count1) (aux windings0 (tail windings1 (- count1 count0)) count0)) (else (aux (tail windings0 (- count0 count1)) windings1 count1))))) ;;; Usage: (rewind join-point new-%windings new-%wind-count) (labels ((rewind-aux (lambda (from-count to to-count) (unless (= from-count to-count) (rewind-aux from-count (cdr to) (- to-count 1)) (set! %windings to) (set! %wind-count to-count) (let ((item (car to))) ; (set! fluid-binding-list (cddr item)) (set-current-fluid-bindings (cddr item)) ((cadr item))))))) (define (rewind from-count to to-count) (unless (= from-count to-count) (rewind-aux from-count to to-count) (set! %windings to) (set! %wind-count to-count)))) ;;; Usage as above. (define (unwind from from-count to-count) (iterate aux ((w from)(c from-count)) (set! %windings w) (set! %wind-count c) (unless (= c to-count) (let ((item (car w))) ; (set! fluid-binding-list (cddr item)) (set-current-fluid-bindings (cddr item)) ((car item))) (aux (cdr w)(- c 1))))) ;;; The standard interface to this facility: (define (dynamic-wind before during after) (before) (push %windings (list* after before (get-current-fluid-bindings))) (set! %wind-count (+ %wind-count 1)) (block0 (during) (pop %windings) (set! %wind-count (- %wind-count 1)) (after))) ;;; And now some fancy interfaces: ;;; This one keeps you from having to do lambda wrapping: (define-syntax (wind-protect before during after) ;; `(dynamic-wind (lambda () ,before) (lambda () ,during) (lambda () ,after)) (let ((a (genvar))(b (genvar))) `(let ((,b (lambda () ,before)) (,a (lambda () ,after))) (,b) (push %windings (list* ,a ,b (get-current-fluid-bindings))) (set! %wind-count (+ %wind-count 1)) (block0 ,during (pop %windings) (set! %wind-count (- %wind-count 1)) (,a))))) ;;; This one does different things depending on whether the entries ;;; and exists are normal or abnormal. (define-syntax (funny-wind-protect normal-before abnormal-before during normal-after abnormal-after) `(block ,normal-before (push %windings (list* (lambda () ,abnormal-after) (lambda () ,abnormal-before) (get-current-fluid-bindings))) (set! %wind-count (+ %wind-count 1)) (block0 ,during (pop %windings) (set! %wind-count (- %wind-count 1)) ,normal-after))) ;;; eof oaklisp-1.3.7/src/world/vector-type.oak000066400000000000000000000027011332762442600200700ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1988 Kevin J. Lang & Barak A. Pearlmutter ;;; The abstract vector type: (define-instance vector-type coercable-type '() (list self-evaluatory-mixin sequence)) (add-method (print (vector-type) self stream) (cond ((and #*print-level (= #*print-level 0)) (write-char stream #\#)) (else (write-string "#(" stream) (let ((nmi (- (length self) 1))) (bind ((#*print-level (and #*print-level (- #*print-level 1)))) (iterate step ((i 0) (l #*print-length)) (cond ((and l (= l 0)) (write-string "..." stream)) ((<= i nmi) (print (nth self i) stream) (cond ((< i nmi) (write-char stream #\space) (step (+ i 1) (and l (- l 1)))))))))) (write-char stream #\))))) ;;; eof oaklisp-1.3.7/src/world/vl-mixin.oak000066400000000000000000000107171332762442600173600ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter ;(initialize variable-length-mixin '() '()) ;; %VREF uses a magic instruction to index off the base pointer. (define-constant-instance %vref locatable-operation) (add-method (%vref (variable-length-mixin) self n) (let ((len (- ((%slot 1) self) ((%slot 1) (get-type self))))) (if (or (>= n len) (< n 0)) (error "%VREF index ~D into ~S out of bounds; limit is ~D." n self len) (%load-bp-i n)))) (add-method ((setter %vref) (variable-length-mixin) self n x) (let ((len (- ((%slot 1) self) ((%slot 1) (get-type self))))) (if (or (>= n len) (< n 0)) (error "SETTER %VREF index ~D into ~S out of bounds; limit is ~D." n self len) (set! (%load-bp-i n) x)))) (add-method ((locater %vref) (variable-length-mixin) self n) (let ((len (- ((%slot 1) self) ((%slot 1) (get-type self))))) (if (or (>= n len) (< n 0)) (error "LOCATE %VREF index ~D into ~S out of bounds; limit is ~D." n self len) (make-locative (%load-bp-i n))))) ;; We get the length by directly accessing the length field. This isn't ;; relative to the base pointer; it's part of the memory format of variable ;; length objects. (add-method (length (variable-length-mixin) self) (- ((%slot 1) self) ;total length of ourself in memory ((%slot 1) (get-type self)))) ;length of the non-variable-length part of ourself (add-method (initialize (variable-length-mixin) self ncells) self) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; the following operation does no bounds checking (define-constant-instance %vref-nocheck locatable-operation) (add-method (%vref-nocheck (variable-length-mixin) self n) (%load-bp-i n)) (add-method ((setter %vref-nocheck) (variable-length-mixin) self n x) (set! (%load-bp-i n) x)) (add-method ((locater %vref-nocheck) (variable-length-mixin) self n) (make-locative (%load-bp-i n))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Define the simple vector type: (define-constant-instance simple-vector coercable-type '() (list vector-type variable-length-mixin object)) ;;; Try to make only one empty vector. (let ((the-empty-vector (make simple-vector 0))) (add-method (initialize (simple-vector) self ncells) (if (zero? ncells) the-empty-vector self))) (add-method (nth (simple-vector) self n) (%vref self n)) (add-method ((setter nth) (simple-vector) self n x) (set! (%vref self n) x)) (add-method ((locater nth) (simple-vector) self n) (make-locative (%vref self n))) (add-method (#^simple-vector (list-type) l) (let* ((len (length l)) (v (make simple-vector len))) (iterate aux ((l l)(i 0)) (cond ((not (null? l)) (set! (nth v i) (car l)) (aux (cdr l) (+ i 1))) (else v))))) (add-method (#^list-type (simple-vector) v) (iterate aux ((i (- (length v) 1))(l '())) (if (negative? i) l (aux (- i 1) (cons (%load-bp-i i) l))))) #| (add-method (#^simple-vector (sequence) x) (let* ((len (length x)) (v (make simple-vector len))) (dotimes (i len v) (set! (nth v i) (nth x i))))) |# (let ((filler (make operation))) (add-method (filler (variable-length-mixin) v l) (iterate next ((i 0)(l l)) (when (not (null? l)) (set! (%load-bp-i i) (car l)) (next (1+ i)(cdr l))))) (add-method (#^simple-vector (list-type) x) (let* ((len (length x)) (v (make simple-vector len))) (filler v x) v))) (labels ((fill-it (lambda (i v a . args) (set! (nth v i) a) (if (zero? (rest-length args)) v (fill-it (+ i 1) v . args))))) (define (vector . args) (if (zero? (rest-length args)) (make simple-vector 0) (fill-it 0 (make simple-vector (rest-length args)) . args)))) #|| (define (vector . args) (listify-args #^simple-vector . args)) ||# ;;; eof oaklisp-1.3.7/src/world/warm.oak000066400000000000000000000031601332762442600165550ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1987 Kevin J. Lang & Barak A. Pearlmutter (define warm-boot-actions '()) (define (warm-boot) (%write-char #\W) (%write-char #\a) (%write-char #\r) (%write-char #\m) (%write-char #\space) (%write-char #\b) (%write-char #\o) (%write-char #\o) (%write-char #\t) (%write-char #\i) (%write-char #\n) (%write-char #\g) (%write-char #\space) (dolist (op warm-boot-actions) (op) (%write-char #\.))) (define (add-warm-boot-action op) (set! warm-boot-actions (append! warm-boot-actions (list op))) op) ;;; Due to load order constraints, some things go here rather than in ;;; the files they are defined in. ;;; from UNDEFINED: (add-warm-boot-action setup-undefined-ivar) ;;; from TAG-TRAP: (add-warm-boot-action setup-tag-traps) ;;; from SUBTYPES: (add-warm-boot-action setup-subtype-table) ;;; from FLUID: (add-warm-boot-action revert-fluid-binding-list) ;;; eof oaklisp-1.3.7/src/world/weak.oak000066400000000000000000000020601332762442600165340ustar00rootroot00000000000000;;; This file is part of Oaklisp. ;;; ;;; 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. ;;; ;;; The GNU GPL is available at http://www.gnu.org/licenses/gpl.html ;;; or from the Free Software Foundation, 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA ;;; Copyright (C) 1986 Kevin J. Lang & Barak A. Pearlmutter (define-constant object-hash (add-method ((make-open-coded-operation '((object-hash)) 1 1) (object) x) (object-hash x))) (define-constant object-unhash (add-method ((make-open-coded-operation '((object-unhash)) 1 1) (fixnum) x) (object-unhash x))) ;;; eof