pax_global_header00006660000000000000000000000064142313731140014511gustar00rootroot0000000000000052 comment=b3023dca3845e6f4701c32b4b043eae05c70ca96 usbrelay-1.0/000077500000000000000000000000001423137311400131775ustar00rootroot00000000000000usbrelay-1.0/.gitignore000066400000000000000000000000711423137311400151650ustar00rootroot00000000000000build/ dist/ gitversion.h usbrelay *.so *.egg *.egg-info usbrelay-1.0/50-usbrelay.rules000066400000000000000000000005471423137311400163310ustar00rootroot00000000000000SUBSYSTEM=="usb", ATTR{idVendor}=="16c0",ATTR{idProduct}=="05df", MODE="0666" KERNEL=="hidraw*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", MODE="0660", GROUP="usbrelay", TAG+="systemd" ENV{SYSTEMD_WANTS}="usbrelayd.service" KERNEL=="hidraw*", ATTRS{idVendor}=="0519", ATTRS{idProduct}=="2018", MODE="0660", GROUP="usbrelay", SYMLINK+="usbrelay%b" usbrelay-1.0/Dockerfile000066400000000000000000000002571423137311400151750ustar00rootroot00000000000000# Base image. FROM debian:10 # Install dependencies. RUN apt update && apt install -y \ make \ gcc \ git-core \ libhidapi-dev \ python3-dev \ python3 usbrelay-1.0/LICENSE.md000066400000000000000000000431521423137311400146100ustar00rootroot00000000000000GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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. {description} Copyright (C) {year} {fullname} This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. {signature of Ty Coon}, 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 Lesser General Public License instead of this License. usbrelay-1.0/Makefile000066400000000000000000000041501423137311400146370ustar00rootroot00000000000000CFLAGS += -O2 -Wall HIDAPI = hidraw LDFLAGS += -lhidapi-$(HIDAPI) PYTHON_INCLUDE=$(shell python3-config --includes) PREFIX=/usr #Default 32 bit x86, raspberry pi, etc.. LIBDIR = $(PREFIX)/lib #Catch x86_64 machines that use /usr/lib64 (RedHat) ifneq ($(wildcard $(PREFIX)/lib64/.),) LIBDIR = $(PREFIX)/lib64 endif #Catch debian machines DEB_HOST_MULTIARCH=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null) ifneq ($(DEB_HOST_MULTIARCH),) ifneq ($(wildcard $(PREFIX)/lib/$(DEB_HOST_MULTIARCH)/.),) LIBDIR = $(PREFIX)/lib/$(DEB_HOST_MULTIARCH) endif endif all: usbrelay libusbrelay.so python: usbrelay libusbrelay.so libusbrelay_py.so libusbrelay.so: libusbrelay.c libusbrelay.h $(CC) -shared -fPIC $(CPPFLAGS) $(CFLAGS) $< $(LDFLAGS) -o $@ usbrelay: usbrelay.c libusbrelay.h libusbrelay.so $(CC) $(CPPFLAGS) $(CFLAGS) $< -lusbrelay -L./ $(LDFLAGS) -o $@ # Command to generate version number if running from git repo DIR_VERSION = $(shell basename `pwd`) GIT_VERSION = $(shell git describe --tags --match '[0-9].[0-9]*' --abbrev=10 --dirty) # If .git/HEAD and/or .git/index exist, we generate git version with # the command above and regenerate it whenever any of these files # changes. If these files don't exist, we use ??? as the version. gitversion.h: $(wildcard .git/HEAD .git/index) echo "#define GITVERSION \"$(if $(word 1,$^),$(GIT_VERSION),$(DIR_VERSION))\"" > $@ usbrelay.c libusbrelay.c: gitversion.h #We build this once directly for error checking purposes, then let python do the real build libusbrelay_py.so: libusbrelay_py.c libusbrelay.so $(CC) -shared -fPIC $(PYTHON_INCLUDE) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -L./ -lusbrelay -o $@ $< python3 setup.py build clean: rm -f usbrelay rm -f libusbrelay.so rm -f libusbrelay_py.so rm -rf build rm -f gitversion.h install: usbrelay libusbrelay.so install -d $(DESTDIR)$(LIBDIR) install -m 0755 libusbrelay.so $(DESTDIR)$(LIBDIR) install -d $(DESTDIR)$(PREFIX)/bin install -m 0755 usbrelay $(DESTDIR)$(PREFIX)/bin install_py: install libusbrelay.so libusbrelay_py.so python3 setup.py install --prefix=$(DESTDIR) .PHONY: all clean install usbrelay-1.0/README.md000066400000000000000000000420541423137311400144630ustar00rootroot00000000000000# USB Relay Driver For Linux Latest Stable Release 0.9 ([Zip](https://github.com/darrylb123/usbrelay/archive/refs/tags/0.9.zip), [tar.gz](https://github.com/darrylb123/usbrelay/archive/refs/tags/0.9.tar.gz)) ![alt text](usbrelay.jpg "USB Relay") A cheap USB relay available from Ebay with 1,2,4 or 8 relay output. The double throw relay ratings are 10A 250VAC each. The USB device is HID compatible and comes with Windows control software. This code can control the relay vi HIDAPI which is a cross platform library. This code was tested under linux both on x86 and Raspberry Pi ARM. The program is command line only as it is likely to be used by shell scripts. The output of lsusb for the device is: ``` Bus 001 Device 003: ID 16c0:05df Van Ooijen Technische Informatica HID device except mice, keyboards, and joysticks # lsusb -v -d 16c0:05df Bus 001 Device 003: ID 16c0:05df Van Ooijen Technische Informatica HID device except mice, keyboards, and joysticks Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x16c0 Van Ooijen Technische Informatica idProduct 0x05df HID device except mice, keyboards, and joysticks bcdDevice 1.00 iManufacturer 1 www.dcttech.com iProduct 2 USBRelay2 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 34 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 20mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 No Subclass bInterfaceProtocol 0 None iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.01 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 22 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 20 Device Status: 0x0000 (Bus Powered) ``` ___ ## HIDAPI http://www.signal11.us/oss/hidapi HIDAPI is a fairly recent addition to linux and is available as a package for Fedora 20 but not for Pidora (F18). The package was built for Pidora (Fedora 18) using the F20 hidapi source package. ### Installing Debian Packages: This code is a maintained package in Debian (and Raspian). Use normal apt-get commands: ``` $ sudo apt-get install usbrelay ``` ### Installing Fedora Packages: The packages are available in Fedora36+ ``` $ sudo dnf install usbrelay-common usbrelay-python3 usbrelay-mqtt ``` Other Linux platforms will need to build the source, see below ### Protocol: The relay modules does not set the USB serial number but has a unique serial when the HID device is queried, the current state of the relays is also sent with the serial. The HID serial is matched and the ON/OFF command is sent to the chosen relay. ### Building The Code: The usual make, make install dance assuming the hidapi and hidapi-devel packages have been installed. Note that there are two options for the hidapi library: hidapi-hidraw or hidapi-libusb. Different distributions have better results with one or the other. YMMV. ``` $ sudo apt-get install libhidapi-dev libhidapi-hidraw0 git $ git clone https://github.com/darrylb123/usbrelay $ cd usbrelay $ make $ sudo make install ### Test with a usbrelay plugged in $ sudo usbrelay ### Build the python interface using the instructions below To choose the alternative hidapi libraries, add the option to the make command line ### hidapi-hidraw - This is the default if no option is given $ make HIDAPI=hidraw ### hidapi-libusb $ make HIDAPI=libusb ``` ### Docker Build: You can also build using Docker. Assuming you have Docker installed (only tested with version 18), execute the build script: ``` $ ./build.sh ``` The usbrelay binary, libusbrelay.so and libusbrelay_py.so libraries will be built in the root directory of the repo. ### Usage: The code needs to access the device. This can be achieved either by running the program with root privileges (so sudo is your friend) or by copying 50-usbrelay.rules to /etc/udev/rules.d ``` $ sudo cp 50-usbrelay.rules /etc/udev/rules.d $ sudo udevadm control -R ``` Add users that need to operate the relays to the usbrelay group: ``` sudo usermod -a -G usbrelay ``` ``` $ sudo usbrelay --help Usage: usbrelay [OPTION...] [ACTION...] Control or query USB HID relays. -d, --debug Produce debugging output -q, --quiet Be quiet -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Without ACTION, the actual state of all relays is printed to stdout. ACTION can be one of: RELID_N=[0|1] to switch the N-th relay off or on RELID=NEWID to change relay ID Report bugs to https://github.com/darrylb123/usbrelay/issues. ``` Running the program without arguments will display each module that matches device 16c0:05df or 0519:2018. The program can be invoked with the debug (-d) or quiet (-q) flags. The debug information is sent to stderr while the state is sent to stdout for use in scripts. The only limit to the number of these relays that can be plugged in and operated at once is the number of USB ports. Using neither the -d or -q flags just prints the state of the relays to stdout. ``` $ sudo usbrelay PSUIS_1=1 PSUIS_2=0 $ sudo usbrelay -d (--debug) Device Found type: 16c0 05df path: /dev/hidraw1 serial_number: PSUIS Manufacturer: www.dcttech.com Product: USBRelay2 Release: 100 Interface: 0 PSUIS_1=1 PSUIS_2=0 $ sudo usbrelay -q (--quiet) $ ``` To get the relay state ``` $ sudo usbrelay PSUIS_1=1 PSUIS_2=0 ``` To use the state in a script: ``` $ eval $(sudo usbrelay) $ echo $PSUIS_2 0 ``` To set the relay state of 1 or more modules at once: ``` $ sudo usbrelay PSUIS_2=0 $ sudo usbrelay PSUIS_2=1 PSUIS_1=0 $ sudo usbrelay PSUIS_2=0 PSUIS_1=1 0U70M_1=0 0U70M_2=1 ``` Operate relay 9 to set the state of all relays together ``` $ sudo usbrelay PSUIS_9=0 $ sudo usbrelay PSUIS_9=1 0U70M_9=1 ``` The path to a device can be used in lieu of the serial, this can be useful for devices with corrupted serials ``` $ sudo usbrelay /dev/hidraw1_1=0 ``` Alternatively if using libusb instead of hidraw you may use the usb device path ``` Device Found type: 0519 2018 path: 0001:0015:00 serial_number: A0001 Manufacturer: Ucreatefun.com Product: HIDRelay Release: 1 Interface: 0 Number of Relays = 9 Module_type = 2 $ sudo usbrelay 0001:0015:00_1=0 ``` Change the serial permanently Use the fictitious relay 0 to set the serial permanently. If you have duplicate serials, make sure only one is plugged in when you change it. Maximum of 5 character serial. It is probably sensible to change one module at a time to avoid serial collisions. You may also use the device path to set the serial as above ``` $ sudo usbrelay ZXCV_1=0 ZXCV_2=0 $ sudo usbrelay ZXCV_0=ZAQ12 # or /dev/hidraw4_0=ZAQ12 ZXCV_1=0 ZXCV_2=0 Setting new serial $ sudo usbrelay ZAQ12_1=0 ZAQ12_2=0 ``` ### Python Extension: This also optionally includes a python extension. In order to build the python extension, you must have the Python 3 development libraries installed. The docker build process will produce the python library as well. Debian: ``` ##Install Python3 dev package # sudo apt install libpython3.5-dev ``` Fedora: ``` ##Install Python3 dev package # dnf install python3-devel ``` With the dependency installed, the library can be built and installed with: ``` ##Build libusbrelay_py.so $ make python ##Install to global python $ sudo make install_py ``` Once installed, the library can be used by any python script, assuming it is running as a user with suitable permissions per the changes to udev above. The following is a test script included as test.py, showing how to use the library: ``` import usbrelay_py import time count = usbrelay_py.board_count() print("Count: ",count) boards = usbrelay_py.board_details() print("Boards: ",boards) for board in boards: print("Board: ",board) relay = 1 while(relay < board[1]+1): result = usbrelay_py.board_control(board[0],relay,1) print("Result: ",result) relay += 1 relay = 1 while(relay < board[1]+1): result = usbrelay_py.board_control(board[0],relay,0) print("Result: ",result) relay += 1 ``` Once the library is installed, you can run the test script in python as follows: ``` $ python3 test.py ``` It will turn on and then off every relay attached to every board on your system. ### Fine-grained UDEV permissions When using many relays on a system, which is shared by several users and it is not desired to give all users access to all relays, one can add the following line to udev rules, e.g. `/etc/udev/rules.d/50-dct-tech-usb-relay-2.rules`. SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", IMPORT{program}="/usr/bin/usbrelay --quiet --export-id $devnode" This ensures that subsequent rules can use relay ID stored in the ID_SERIAL environment variable to match different relays. For example giving permissions for different relays to different users can be achieved by the following rules: SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ENV{ID_SERIAL}=="PSUIS", MODE="0600", OWNER="user1" SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ENV{ID_SERIAL}=="0U70M", MODE="0600", OWNER="user2" ## Support for Ucreatefun USB Modules ![alt text](ucreatefun.jpg "USB Relay") A USB relay became available that is supported by the software but with severe limitations - Status of the relays is not available - There is no serial so there can only be one of these modules attached to a system, unless referred to by device path. The module has a USB serial number of A0001 on every module. - The number of relays is not available The module has a USB device ID of 0519:2018. There are modules with 1,2,4,and 8 relays. The module accepts a request for relay 9 which turns on/off all relays. Operating the module works the same as for the DccTech modules except the serial used is A0001 Running usbrelay without arguments prints all possible relays (8) to stdout. ``` $ sudo usbrelay A0001_2=1 # Turns on relay 2 $ sudo usbrelay /dev/hidraw4_1=1 $ sudo usbrelay A0001_9=1 # turns on all relays ``` ## Referencing devices by physical USB port Symbolic links can be used to devices to allow physical USB ports to be referenced. The following line in a /etc/udev/rules.d file will create a symbolic link with the name of the USB port: ``` KERNEL=="hidraw*",KERNELS=="*-*", SYMLINK+="usbrelay%b" ``` The default 50-usbrelay.rules udev file creates these links for UCREATEFUN relays. The following example has a ucreatefun usb relay plugged into a USB port and 2 dcttech relays plugged into a USB hub attached to another port: ``` $ ls -l /dev/hidr* crw-------. 1 root root 243, 0 Mar 9 15:23 /dev/hidraw0 crw-------. 1 root root 243, 1 Mar 9 15:23 /dev/hidraw1 crw-------. 1 root root 243, 2 Mar 9 15:23 /dev/hidraw2 crw-------. 1 root root 243, 3 Mar 9 15:23 /dev/hidraw3 crw-------. 1 root root 243, 4 Mar 9 17:47 /dev/hidraw4 crw-------. 1 root root 243, 5 Mar 9 17:36 /dev/hidraw5 crw-------. 1 root root 243, 6 Mar 9 17:47 /dev/hidraw6 lrwxrwxrwx. 1 root root 7 Mar 9 17:47 /dev/usbrelay3-10.1:1.0 -> hidraw4 lrwxrwxrwx. 1 root root 7 Mar 9 17:47 /dev/usbrelay3-10.3:1.0 -> hidraw6 lrwxrwxrwx. 1 root root 7 Mar 9 15:23 /dev/usbrelay3-5:1.0 -> hidraw0 lrwxrwxrwx. 1 root root 7 Mar 9 15:23 /dev/usbrelay3-5:1.1 -> hidraw1 lrwxrwxrwx. 1 root root 7 Mar 9 15:23 /dev/usbrelay3-5:1.2 -> hidraw2 lrwxrwxrwx. 1 root root 7 Mar 9 15:23 /dev/usbrelay3-6:1.0 -> hidraw3 lrwxrwxrwx. 1 root root 7 Mar 9 17:36 /dev/usbrelay3-9:1.0 -> hidraw5 $ sudo usbrelay OMG12_1=0 OMG12_2=0 QWERT_1=0 QWERT_2=0 A0001_1=-1 A0001_2=-1 A0001_3=-1 A0001_4=-1 A0001_5=-1 A0001_6=-1 A0001_7=-1 A0001_8=-1 A0001_9=-1 $ sudo usbrelay -d /dev/usbrelay3-10.1:1.0_1=1 /dev/usbrelay3-10.3:1.0_2=0 /dev/usbrelay3-9:1.0_2=0 Orig: /dev/usbrelay3-10.1:1.0_1=1, Serial: /dev/usbrelay3-10.1:1.0, Relay: 1 State: ff Orig: /dev/husbrelay3-10.3:1.0_2=0, Serial: /dev/usbrelay3-10.3:1.0, Relay: 2 State: fd Orig: /dev/usbrelay3-9:1.0_2=0, Serial: /dev/usbrelay3-9:1.0, Relay: 2 State: fd Found 3 devices Device Found type: 16c0 05df path: /dev/hidraw4 serial_number: ASDFG Manufacturer: www.dcttech.com Product: USBRelay2 Release: 100 Interface: 0 Number of Relays = 2 Module_type = 1 Device Found type: 16c0 05df path: /dev/hidraw6 serial_number: 48VZ7 Manufacturer: www.dcttech.com Product: USBRelay2 Release: 100 Interface: 0 Number of Relays = 2 Module_type = 1 Device Found type: 0519 2018 path: /dev/hidraw5 serial_number: A0001 Manufacturer: Ucreatefun.com Product: HIDRelay Release: 1 Interface: 0 Number of Relays = 9 Module_type = 2 Serial: /dev/usbrelay3-10.1:1.0, Relay: 1 State: ff 1 HID Serial: ASDFG Serial: /dev/usbrelay3-10.1:1.0, Relay: 1 State: ff Serial: /dev/usbrelay3-10.3:1.0, Relay: 2 State: fd 2 HID Serial: 48VZ7 Serial: /dev/usbrelay3-10.3:1.0, Relay: 2 State: fd Serial: /dev/usbrelay3-9:1.0, Relay: 2 State: fd 3 HID Serial: A0001 Serial: /dev/usbrelay3-9:1.0, Relay: 2 State: fd target fd ucreate 2 f0 f0 Serial: /dev/usbrelay3-10.1:1.0, Relay: 1 State: ff --- Found Serial: /dev/usbrelay3-10.3:1.0, Relay: 2 State: fd --- Found Serial: /dev/husbrelay3-9:1.0, Relay: 2 State: fd --- Found ``` Any ### MQTT support MQTT support requires the successful installation of the python library described above. Check this first (with a module plugged in) by running: ``` sudo python3 test.py ``` MQTT support provides capability of using Home Assistant or nodered with usbrelay. The capability is made up of: - usbrelayd - usbrelay.service - usbrelayd.conf #### usbrelayd A python daemon using libusbrelay to connect to an MQTT server. When the daemon starts, it publishes the state of all usbrelay devices found and subscribes to command topics for each relay. To install: ``` sudo useradd usbrelay sudo apt-get install python-paho-mqtt (Debian) dnf install python3-paho-mqtt (Fedora) sudo cp usbrelayd /usr/sbin sudo cp usbrelayd.conf /etc/usbrelayd.conf ``` Modify /etc/usbrelayd.conf to suit your circumstances. #### usbrelay.service A systemd unit for controlling and monitoring the usbrelayd daemon The systemd service file references your MQTT broker hostname as mymqttbroker. Either create that hostname in DNS or /etc/hosts. Alternatively, If you are using an external MQTT broker, modify the service file accordingly. To install: ``` sudo cp usbrelayd.service /etc/systemd/system sudo systemctl daemon-reload ``` #### 50-usbrelay.rules A udev rule file that reacts and starts/stops the usbrelayd.service when a module is pluggedin or removed. The file should be installed with the initial installation. To install: ``` sudo cp 50-usbrelay.rules /etc/udev/rules.d sudo udevadm control -R ``` #### Operation After installation and configuration confirm the correct operation. ``` systemctl status usbrelayd usbrelayd.service - USB Relay MQTT service Loaded: loaded (/etc/systemd/system/usbrelayd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2021-06-24 15:23:01 AEST; 2s ago Main PID: 1151364 (python3) Tasks: 1 (limit: 14159) Memory: 14.4M CPU: 117ms CGroup: /system.slice/usbrelayd.service └─1151364 /usr/bin/python3 /usr/local/sbin/usbrelayd mymqttbroker Jun 24 15:23:01 xxx.local systemd[1]: Started USB Relay MQTT service. Jun 24 15:23:02 xxx.local python3[1151364]: Modules Connected: 1 Jun 24 15:23:02 xxx.local python3[1151364]: State: stat/OMG12/1 OFF Jun 24 15:23:02 xxx.local python3[1151364]: Subscribed: cmnd/OMG12/1 Jun 24 15:23:02 xxx.local python3[1151364]: State: stat/OMG12/2 OFF Jun 24 15:23:02 xxx.local python3[1151364]: Subscribed: cmnd/OMG12/2 ``` MQTT Topics for controlling usbrelays - Current state: stat/SERIAL/Relay (eg stat/OMG12/1 ) - Command: cmnd/SERIAL/Relay ON/OFF (eg cmnd/OMG12/2 ) Using mosquitto client tools ``` mosquitto_sub -h your_mqtt_broker -t stat/OMG12/1 mosquitto_pub -h your_mqtt_broker -t cmnd/OMG12/1 -m ON ``` Enjoy usbrelay-1.0/build.sh000077500000000000000000000007161423137311400146410ustar00rootroot00000000000000# Builds the usbrelay binary using docker. Docker needs to be installed for this to work. IMAGE_NAME='usbrelay' IMAGE_TAG='v2' # Build the docker image. sudo docker build -t $IMAGE_NAME:$IMAGE_TAG . # build the usbrelay source inside the container. sudo docker run --rm -v "$PWD":/build -w /build $IMAGE_NAME:$IMAGE_TAG make python # Give file ownership back to the host user:group. sudo chown -R $USER:$USER usbrelay libusbrelay.so libusbrelay_py.so build/ usbrelay-1.0/changelog000066400000000000000000000007221423137311400150520ustar00rootroot00000000000000 * Wed Jan 26 2022 Mark E. Fuller - 0.9.0-3 - restore minimal Python module - why are man and test.py not installing? * Tue Jan 25 2022 Mark E. Fuller - 0.9.0-2 - continued spec development and upstream improvements * Sat Jan 22 2022 Mark E. Fuller - 0.9.0-1 - bump version * Thu Jan 20 2022 Mark E. Fuller - 0.8.0-1 - first attempt versions of spec file and packaging usbrelay-1.0/libusbrelay.c000066400000000000000000000237351423137311400156720ustar00rootroot00000000000000/* libusbrelay: Control USB HID connected electrical relay modules Copyright (C) 2014 Darryl Bond Library version Copyright (C) 2019 Sean Mollet This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include "libusbrelay.h" #include "gitversion.h" //Global variables relay_board *relay_boards = 0; int relay_board_count = 0; int i, k; const char *libversion = GITVERSION; //Private function prototypes static int get_board_features(relay_board * board, hid_device * handle); int known_relay(struct hid_device_info *thisdev); /** * Enumerate all possible relay devices in the system */ const char * libusbrelay_version(void){ return libversion; } int enumerate_relay_boards(const char *product, int verbose, int debug) { int result = 0, relay = 0; struct hid_device_info *devs, *cur_dev; int num_opened = 0, num_error = 0; //Enumerate all HID USB devices devs = hid_enumerate(0, 0); //Count the number of returned devices cur_dev = devs; // if (debug) fprintf(stderr,"Library Version: %s\n",libversion); while (cur_dev != NULL) { // Check if the HID device is a known relay else jump over it if (known_relay(cur_dev)) { relay_board_count++; } cur_dev = cur_dev->next; } if (debug) fprintf(stderr,"enumerate_relay_boards()Found %d devices\n", relay_board_count); //Allocate a buffer for the relays if (relay_board_count > 0) { relay_boards = calloc(relay_board_count, sizeof(relay_board)); //Fill the relay structs cur_dev = devs; while (cur_dev != NULL) { // skip unknown HID devices relay_boards[relay].module_type = known_relay(cur_dev); if (relay_boards[relay].module_type) { //Save the path to this device relay_boards[relay].path = malloc(strlen(cur_dev->path) + 1); memcpy(relay_boards[relay].path, cur_dev->path, strlen(cur_dev->path) + 1); // Ucreatefun relays do not have any information returned from the HID report // The USB serial is also fixed so this is copied to the module serial so that something can make the module unique if (relay_boards[relay].module_type == UCREATE) { relay_boards[relay].relay_count = 9; //No way of finding number of relays for these boards memset(relay_boards[relay].serial, 0x0, sizeof(relay_boards[relay].serial)); wcstombs(relay_boards[relay].serial, cur_dev->serial_number, Serial_Length); } else { // The product string is USBRelayx where x is number of relays read to the \0 in case there are more than 9 relay_boards[relay].relay_count = atoi((const char *)&cur_dev->product_string[8]); } //Open it to get more details hid_device *handle; handle = hid_open_path(cur_dev->path); if (handle) { num_opened++; result = get_board_features(&relay_boards[relay], handle); hid_close(handle); } else { num_error++; perror(cur_dev->path); result = -1; } //Output the device enumeration details if debug is on if (result != -1 && debug) { fprintf(stderr,"Device Found\n type: %04hx %04hx\n path: %s\n serial_number: %s\n", cur_dev->vendor_id, cur_dev->product_id, relay_boards[relay].path, relay_boards[relay].serial); fprintf(stderr,"Manufacturer: %ls\n Product: %ls\n Release: %hx\n Interface: %d\n Number of Relays = %d\n Module_type = %d\n", cur_dev->manufacturer_string, cur_dev->product_string, cur_dev->release_number, cur_dev->interface_number, relay_boards[relay].relay_count, relay_boards[relay].module_type); } if (result != -1 && (verbose||debug)) { for (k = 0;k < relay_boards[relay].relay_count; k++) { if (relay_boards[relay].module_type == UCREATE) { // State cannot be determined print -1 printf("%s_%d=-1\n", relay_boards[relay].serial,k + 1); } else { if (relay_boards[relay].state & 1 << k) { printf("%s_%d=1\n", relay_boards[relay].serial,k + 1); } else { printf("%s_%d=0\n", relay_boards[relay].serial,k +1); } } } } relay++; } do { cur_dev = cur_dev->next; } while (cur_dev != NULL && !known_relay(cur_dev)); } } hid_free_enumeration(devs); if (num_opened == 0 && num_error > 0) fprintf(stderr, "Unable to open any device - Use root, sudo or set the device permissions via udev\n"); return result; } /** * Command a relay at a particular /dev path to switch to a given state */ int operate_relay(const char *serial, unsigned char relay, unsigned char target_state,int debug) { unsigned char buf[9]; // 1 extra byte for the report ID int res = -1; hid_device *handle; relay_board *board = find_board(serial,debug); if (board != NULL && relay > 0 ) { if(debug) fprintf(stderr,"operate_relay(%s,%c) %s path\n",serial,relay, board->path ); handle = hid_open_path(board->path); if (handle) { if (board->module_type == DCTTECH) { buf[0] = 0x0; //report number buf[1] = target_state; buf[2] = relay; buf[3] = 0x00; buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x00; buf[8] = 0x00; if ( relay == 9 ) { // operate all relays for (char i = 1; i <= board->relay_count; i++ ) { buf[2] = i; res = hid_write(handle, buf, sizeof(buf)); } } else { if ( relay <= board->relay_count) res = hid_write(handle, buf, sizeof(buf)); } } if (board->module_type == UCREATE) { unsigned char ucreate; if (target_state == 0xff) ucreate = 0xF0; else ucreate = 0x00; ucreate += relay; buf[0] = 0; //report number buf[1] = ucreate; buf[2] = 0x00; buf[3] = 0x00; buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x00; buf[8] = 0x00; res = hid_write(handle, buf, sizeof(buf)); } } else { res = -1; } if (res > 0) { if (board->module_type == DCTTECH) //Update our relay status res = get_board_features(board, handle); } else { fprintf(stderr, "operate_relay() Unable to write or unknown relay\n"); fprintf(stderr, "Error: %ls\n", hid_error(handle)); } hid_close(handle); } return (res); } int set_serial(const char *serial, char *newserial,int debug) { unsigned char buf[9]; // 1 extra byte for the report ID int res = -1; hid_device *handle; relay_board *board = find_board(serial,debug); if (board != NULL) { handle = hid_open_path(board->path); if (handle) { buf[0] = 0x0; //report number buf[1] = CMD_SET_SERIAL; buf[2] = newserial[0]; buf[3] = newserial[1]; buf[4] = newserial[2]; buf[5] = newserial[3]; buf[6] = newserial[4]; buf[7] = 0x00; buf[8] = 0x00; res = hid_write(handle, buf, sizeof(buf)); } else { res = -1; } if (res > 0) { //Update our copy of the serial number res = get_board_features(board, handle); } else { fprintf(stderr, "set_serial() Unable to write()\n"); fprintf(stderr, "Error: %ls\n", hid_error(handle)); } hid_close(handle); } return (res); } /** * Find a board path given a relay board serial */ relay_board *find_board(const char *serial,int debug ) { char *respath = NULL; int isdevice = 0; if (strncmp(serial, "/dev/", 5) == 0) { respath = realpath(serial, NULL); } for (i = 0; i < relay_board_count; i++) { if (respath != NULL) { if (strcmp(relay_boards[i].path, respath) == 0) isdevice = 1; } if ((strcmp(relay_boards[i].serial, serial) == 0) || (strcmp(relay_boards[i].path, serial) == 0) || isdevice) { if(debug) fprintf(stderr,"find_board(%s) path %s\n",serial,relay_boards[i].path); if (respath) free(respath); return &relay_boards[i]; } } if (respath) free(respath); return NULL; } /** * Return the count of relay boards */ int get_relay_board_count() { return relay_board_count; } /** * Return the actual relay_board structs */ relay_board *get_relay_boards() { return relay_boards; } /** * Return all allocated resources and perform any other cleanup */ void shutdown() { /* Free static HIDAPI objects. */ hid_exit(); for (i = 0; i < relay_board_count; i++) { free(relay_boards[i].path); } if (relay_board_count > 0) { free(relay_boards); } } //Private functions /** * Load the board serial and relay status * This intentionally reuses a handle as it's meant to be called by the * other functions while they have one already open */ static int get_board_features(relay_board * board, hid_device * handle) { unsigned char buf[9] = { 0 }; //Get the features of the device buf[0] = 0x01; int ret = hid_get_feature_report(handle, buf, sizeof(buf)); if (ret == -1) { perror("hid_get_feature_report\n"); } if (board->module_type == DCTTECH) { //Set the serial number (0x0 for termination) memset(board->serial, 0x0, sizeof(board->serial)); memcpy(board->serial, buf, Serial_Length); //Byte 7 in the response contains the target_state of the relays board->state = buf[7]; } else if (board->module_type == UCREATE) { return ret; } return ret; } // Function to check if the product is known and return the type int known_relay(struct hid_device_info *thisdev) { char product[255]; if (thisdev == NULL) return 0; sprintf(product, "%ls", thisdev->product_string); if (!strncmp(product, "USBRelay", 8)) return DCTTECH; if (!strncmp(product, "HIDRelay", 8)) return UCREATE; return 0; } usbrelay-1.0/libusbrelay.h000066400000000000000000000032671423137311400156750ustar00rootroot00000000000000/* libusbrelay: Control USB HID connected electrical relay modules Copyright (C) 2014 Darryl Bond Library version Copyright (C) 2019 Sean Mollet This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* relay.h */ #ifndef __USBRELAY_H #define __USBRELAY_H //Configuration #define CMD_ON 0xff #define CMD_OFF 0xfd #define CMD_SET_SERIAL 0xfa #define DCTTECH 1 #define UCREATE 2 #define Serial_Length 5 extern const char *gitversion; //Struct for relay boards typedef struct relay_board { //+1 for the \0 string terminator char serial[Serial_Length+1]; unsigned char relay_count; unsigned char state; char *path; int module_type; } relay_board; //Public methods int enumerate_relay_boards(const char *product,int verbose, int debug); int operate_relay(const char *path,unsigned char relay, unsigned char state,int debug); int set_serial(const char *path,char *newserial,int debug); relay_board *find_board(const char *serial,int debug); int get_relay_board_count(void); relay_board* get_relay_boards(void); void shutdown(void); const char *libusbrelay_version(void); #endif usbrelay-1.0/libusbrelay_py.c000066400000000000000000000143651423137311400164010ustar00rootroot00000000000000/* libusbrelay_py: Control USB HID connected electrical relay modules Copyright (C) 2014 Darryl Bond Library version Copyright (C) 2019 Sean Mollet This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include "libusbrelay.h" #include "Python.h" //Static function declarations static PyObject *usbrelay_init(PyObject *self, PyObject *args); static PyObject *usbrelay_board_count(PyObject *self, PyObject *args); static PyObject *usbrelay_board_details(PyObject *self, PyObject *args); static PyObject *usbrelay_board_control(PyObject *self, PyObject *args); //Required because this won't be used here, that's intentional: Python uses it // #pragma GCC diagnostic push // #pragma GCC diagnostic ignored "-Wunused-variable" // #pragma GCC diagnostic pop static PyMethodDef UsbRelayMethods[] = { {"init", usbrelay_init, METH_VARARGS, "Initialize the module and enumerate relay boards"}, {"board_count", usbrelay_board_count, METH_VARARGS, "Return the count of enumerated boards"}, {"board_details", usbrelay_board_details, METH_VARARGS, "Return details on the enumerated boards"}, {"board_control", usbrelay_board_control, METH_VARARGS, "Control a relay on a specific board"}, {NULL, NULL, 0, NULL} /* Sentinel */ }; static struct PyModuleDef usb_relaymodule = { PyModuleDef_HEAD_INIT, "usbrelay_py", /* name of module */ NULL, /* module documentation, may be NULL */ -1, /* size of per-interpreter state of the module, or -1 if the module keeps state in global variables. */ UsbRelayMethods}; PyMODINIT_FUNC PyInit_usbrelay_py(void) { //Attempt to enumerate the relays while we're here // int result = -1; // result = enumerate_relay_boards(NULL,0,0); //Give Python our API return PyModule_Create(&usb_relaymodule); } // /** // * Initialize the usb_relay system with an optional product string // * Including enumerating the attached boards // */ static PyObject *usbrelay_init(PyObject *self, PyObject *args) { const char *product = NULL; int result = -1; //If there is no argument, product will remain null //Which is fine PyArg_ParseTuple(args, "s", &product); result = enumerate_relay_boards(product,0,0); return Py_BuildValue("i", result); } /** * Retrieve the count of attached relay boards */ static PyObject *usbrelay_board_count(PyObject *self, PyObject *args) { int board_count = 0; board_count = get_relay_board_count(); //Just in case they didn't initialize, we'll try once to get a different result if (board_count == 0) { enumerate_relay_boards(NULL,0,0); board_count = get_relay_board_count(); } return Py_BuildValue("i", board_count); } /** * Retrieve the names of attached boards and their relay counts and statuses */ static PyObject *usbrelay_board_details(PyObject *self, PyObject *args) { PyObject *result; PyObject **boards; int board_count = get_relay_board_count(); relay_board *relay_boards = get_relay_boards(); boards = malloc(sizeof(PyObject *) * board_count); //Pack up our board information into Python Typles int i; for (i = 0; i < board_count; i++) { boards[i] = Py_BuildValue("(sii)", relay_boards[i].serial, relay_boards[i].relay_count, relay_boards[i].state); } //This is not the ideal way to do this, but hand-brewing a va_list is generally considered "bad" and not portable switch (board_count) { default: result = Py_BuildValue("()"); break; case 1: result = Py_BuildValue("(O)", boards[0]); break; case 2: result = Py_BuildValue("(OO)", boards[0], boards[1]); break; case 3: result = Py_BuildValue("(OOO)", boards[0], boards[1], boards[2]); break; case 4: result = Py_BuildValue("(OOOO)", boards[0], boards[1], boards[2], boards[3]); break; case 5: result = Py_BuildValue("(OOOOO)", boards[0], boards[1], boards[2], boards[3], boards[4]); break; case 6: result = Py_BuildValue("(OOOOOO)", boards[0], boards[1], boards[2], boards[3], boards[4], boards[5]); break; case 7: result = Py_BuildValue("(OOOOOOO)", boards[0], boards[1], boards[2], boards[3], boards[4], boards[5], boards[6]); break; case 8: result = Py_BuildValue("(OOOOOOOO)", boards[0], boards[1], boards[2], boards[3], boards[4], boards[5], boards[6], boards[7]); break; case 9: result = Py_BuildValue("(OOOOOOOOO)", boards[0], boards[1], boards[2], boards[3], boards[4], boards[5], boards[6], boards[7], boards[8]); break; case 10: result = Py_BuildValue("(OOOOOOOOOO)", boards[0], boards[1], boards[2], boards[3], boards[4], boards[5], boards[6], boards[7], boards[8], boards[9]); break; } free(boards); return result; } /** * Set a relay status */ static PyObject *usbrelay_board_control(PyObject *self, PyObject *args) { const char *serial; int relay; int status; int result = -1; //If there is no argument, or it's ill formed, we just refuse to do anything if (PyArg_ParseTuple(args, "sii", &serial, &relay, &status)) { char target_state = CMD_OFF; if (status) { target_state = CMD_ON; } result = operate_relay(serial, relay, target_state,0); } return Py_BuildValue("i", result); } usbrelay-1.0/rpm/000077500000000000000000000000001423137311400137755ustar00rootroot00000000000000usbrelay-1.0/rpm/usbrelay.spec000066400000000000000000000052161423137311400165030ustar00rootroot00000000000000%global fork fuller %global branch rpm Name: usbrelay Version: 0.9 Release: %autorelease Summary: USB-connected electrical relay control, based on hidapi License: GPLv2 URL: https://github.com/%{fork}/%{name}/ Source0: %{url}archive/%{branch}.tar.gz Source1: ./%{name}.sysusers BuildRequires: gcc BuildRequires: git BuildRequires: hidapi-devel BuildRequires: make BuildRequires: python3 BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: systemd-rpm-macros %global common_description %{expand: \ This package includes programs to operate some USB connected electrical relays. Supported relays USB ID: - 16c0:05df - 0519:2018} %description %{common_description} %package common Summary: Common files needed for all usbrelay interfaces %description common %{common_description} %package -n python3-%{name} Requires: %{name}-common%{_isa} = %{version}-%{release} Summary: Python 3 user interface for usbrelay %description -n python3-%{name} %{common_description} . This package includes the usbrelay Python 3 module. %package mqtt Requires: %{name}-common%{_isa} = %{version}-%{release} Requires: python3-%{name}%{_isa} = %{version}-%{release} Summary: Support for Home Assistant or nodered with usbrelay %description mqtt %{common_description} . This package provides the MQTT support for using usbrelay with Home Assistant or nodered. %prep %autosetup -n %{name}-%{branch} %build %set_build_flags make python HIDAPI=libusb %install make install DESTDIR=%{buildroot} %py3_install # manual copy/install operations from README install -d %{buildroot}%{_udevrulesdir}/ install 50-usbrelay.rules %{buildroot}%{_udevrulesdir}/ install -d %{buildroot}%{_sbindir} install usbrelayd %{buildroot}%{_sbindir} install -d %{buildroot}%{_sysconfdir}/systemd/system install usbrelayd.service %{buildroot}%{_sysconfdir}/systemd/system/ install usbrelayd.conf %{buildroot}%{_sysconfdir}/ # install test function (since users need to test relay boards) install -d %{buildroot}%{python3_sitearch}/%{name} install test.py %{buildroot}%{python3_sitearch}/%{name}/ %check # verify that Python module imports # can't test here as this required hardware(?) %pre %sysusers_create_compat %{SOURCE1} %files common %license LICENSE.md %doc README.md %{_bindir}/usbrelay %{_libdir}/libusbrelay.so %{_udevrulesdir}/50-usbrelay.rules %files -n python3-%{name} %{python3_sitearch}/%{name}_py*.so %{python3_sitearch}/%{name}_py*.egg-info %{python3_sitearch}/%{name}/* %files mqtt %{_sbindir}/usbrelayd %{_sysconfdir}/systemd/system/usbrelayd.service %{_sysconfdir}/usbrelayd.conf %changelog %autochangelog usbrelay-1.0/rpm/usbrelay.sysusers000066400000000000000000000003421423137311400174440ustar00rootroot00000000000000#Type Name ID GECOS Home directory Shell u usbrelay - "user for MQTT" /run/usbrelay /sbin/nologin g usbrelay - "usbrelay privileged group" - - usbrelay-1.0/setup.py000066400000000000000000000020511423137311400147070ustar00rootroot00000000000000from setuptools import setup, Extension module1 = Extension( 'usbrelay_py', libraries= ['usbrelay'], library_dirs= ['./','/usr/lib','/usr/lib64','/usr/lib/x86_64-linux-gnu','/usr/lib/aarch64-linux-gnu','/usr/lib/arm-linux-gnueabihf'], sources = ['libusbrelay_py.c'] ) setup( name = 'usbrelay_py', version = '1.0', description = 'USB Relay board control from Python', url = 'https://github.com/darrylb123/usbrelay', author = "Sean Mollet", author_email = "sean@malmoset.com", license = 'GPL-2.0', ext_modules = [module1], classifiers = [ 'Intended Audience :: Science/Research', 'License :: OSI Approved :: GNU General Public License v2 (GPLv2)', 'Operating System :: POSIX :: Linux', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', ], ) usbrelay-1.0/test.py000066400000000000000000000010341423137311400145260ustar00rootroot00000000000000import usbrelay_py import time count = usbrelay_py.board_count() print("Count: ",count) boards = usbrelay_py.board_details() print("Boards: ",boards) for board in boards: print("Board: ",board) relay = 1 while(relay < board[1]+1): result = usbrelay_py.board_control(board[0],relay,1) print("Result: ",result) relay += 1 relay = 1 while(relay < board[1]+1): result = usbrelay_py.board_control(board[0],relay,0) print("Result: ",result) relay += 1 usbrelay-1.0/ucreatefun.jpg000066400000000000000000003346451423137311400160610ustar00rootroot00000000000000JFIF2Processed By eBay with ImageMagick, z1.1.0. ||B2C   %# , #&')*)-0-(0%()(C   ((((((((((((((((((((((((((((((((((((((((((((((((((( ۅ2q1#$ZQ%'>I\8Le-Y+/'&{UYm2ˊٖ2f[eӟEɴ|<_Dɶ0gvgn-/zn]tuy4fهLMl=-t燛lbSթz5ߵ|*1Cw$lŔz=9w˺=8٣v>CY_Uˊn>C6~y IlW2لSgϦ{v'FӃk89FOv'~+(ۯv iϡqŐ"̙Fwߋ\2I) llbɿzvDA2Ba۶$>L*68~?,MyMƜlZeY6r' dT"KBehz;O{<=ю ٪I:.|⻵|;sIu«kقkv,}8-2gVY"ۦߛwԼO2.&:^l:.vɸѕ,'gdzUv; N=/>XSAяKϗ݆F_GyVll3k/x ѫ՟C͔Iy{-LهWɞ^ZݺeǮع7rx>iwᎷZ6|ѯ0_`=TS?[ɟf'^< i9niŊ˘v\9ݸ~ʜf<~s]u9w>OgE`9[LEBR ۯ׫ =K=g&qۆN\^.f6ereoϩ]seZ|;1kˊݻ=Yq=^>W7G};хxy׃ñٚ]^iK>#_9Zg&Mcu;:Mvϗ-ٷ11u8870kZnnL4z8:8/t^/9ߣ<ϋzyOΚhWµyۼ6dFˋnV7Ű0hy7çٴӗ-ه9׀W_;mYk6tߍjfX^ӏ=}7.|&룹}w|o=6Gg+w9cחa4| txu~oWՍ2mSS߅zpx`h1cC˖ӟeW)٫r}=ܸ]#Ogx`<{uٯ3-[:MYV'x]G]^-ϕ{2UxC_g÷х纵]DOAf;NˇgU&t;ql5^[z{Kx^0{ ==ǣpe=YÃΟoo)t^^N?V蛽7CчG˗9ǵiw ˇo;ՆdFεݎjV؎~7t^?K8;='WV)O_/ꋍ,6׫smYaynk<sMcW,`w=oKz7~mѓ1y6e3cߥ`*دL~^4߷TKvZOűg7׎dH=}ycO{uq [`eRc[=yskY߫4>g;=~{Nvg ݎ,G˟^?9[fyY:<宄 \ qV:>$n~gyט]므sxʨX" c&z<~>6[|{7۶ї=կOчq3u۱ׅz0 Iyv:zp{um?;wErz| PeO  exK鳖]=ſ_A͖ߟ=^}5ՇaŖlrta݇kע/].G=կ%qh[qݺl;+W<?r<^K v;ө÷Ql2Q7;}k?chˡz:> ;S׆Z5ܛw >]n<4}:9ޝu^,e8+Ez;I/xxVN+eS&Z|}|3 ;5 jK2/*86ﹶdH^-ƛ.62WF~uܷnGqLϖhhR;sՓ)oSuں^={k6ctxve.#笗_~Li9.}?&'N.{ן)< 9nKoe~{Î3ۮJ1:=^^v񽗝S V{|i˖Ǭòn1oo66yN"~;|G#ۇ?ՁbM}O;y]g O?ogsz6Y6sߨéTJzW|~Z8vgţOV-oρS9~f5-t&\o[dzǞ>2{pxQ}k>tkol3ut0A[1Y4?]{||>{~tcin9^ycqͳn~oޏv Όm>%A+X2ҁ}^odaOWWGWx0ÿpڪRot >#S]tzˣ"j7L=~xŝGmեբWbYqlr*rzߕ &=ǣ>P?>nW> G-֡_,:Ff-N7&fN\^{0٥˜+0dD. rg%-y^N;<=ok;o-hRɸf]gzwfɳVákݚ7^9~\t|{7ĵl]<9:8+|vtqguksi77𾞊M|,sd;w'Fly5qql|v1W"V&L72?#?ѹ>>:=}U+qǼ8\+Y}}_x.WJR$XDT%RV#" VًK^(z^LvK ]oT7|!"BBMI+,؂Bb˥~^KG-E]@>u}G b*,q}r8RV2@I*EL)`H-l̥-A+)LL/٨I/?syD#-5cr KR De6DK) z;+ڔGWN:5އIjtw>π'q1\6=^?-/|wD{y8K$]^˯ƸpLoKb!].|43ٔ-H&?3}7]Oӻqtzxm9=_?/zz|Rџ?AOtǧO\G黼/a_-Xb ĢETm1^;Y ɻ񾅊6mpyqw'Yrzϩ{s3ceXDE'W^W~OkL:.Ov9,]mlL2.c-Lsc t$p%|Z7}wCsz<Uqe&çslum&ϕveg_.c{d׮eGu3=yfX^|ۥ%Iiu{s¸g:(Xl6r.ۅ2FH?9^X%B.0QdK4Relv)WmTɆ^Ws2i4wޯ΀j~+1g =n|{={2V)YTE "%dʔLv<3&Zt}.sco7b =oI5ehbtW ѧE@"BE*eV KL3e4eyG4<&wo$?V\z???!s]yX0c_6kշ6Fz牖+V#óEP_=XkyВR9n;()/_M.^}3C^|qI0T|QV +^0we-{mU.=&Zm:?^6lӢ~>3 -?~6x:|ٰyKwguq^o<=<:oSM|}~?')/s܉O6Mwy&&=z7[g=q{2ÎwTcp6J⩓qox={DVW|h|Cs^۫^yރ{G,slz|6?s5y:|>nI.=\dnar P ) Isc0Y}Z$S,wϚr>Zn/woۿ㖟}O#> ؓ}j\)yqݱx9=~Ǜge.˻^)ᬒ3"$LU1+ZI2(T[rk{>}YL\7yq3 #>φ..o.;m$[Il_ii3Uz 6|-z+:wZA*IuVJACgd^e7ow\@ˆu]1o>Zs~{pL*ˣhoӕA$DrD@H}z\n>Civg'3.Xj yM׽]7_wucӥL-\u˵ǃ,uƳO_Cz(it倊 -Rة@d,DV yrbMW]5yw_& [58{s|s$ϥk'Q'Ʈm|&/gG ܏;nLvh}?s;V/>L}lq>F-짧'9 q4U"JH*dQH/C?<:߻/Oo;+N8+vcvyo>rϛmqjvjv1oML\mW_(B( $I(2ʭK~_{U"QQPί/=O7|>N8wMn{3"$KKegŎo0= J-@$S+,=nHB@$F}F~l_HQXɒKU*#l!FLwΕ**6%A@WعuzOeBT %+?HW>Xcxh5U%1eYJ%emay49〹ePB *j"&ܑǷOR(VXY gsw89=nwւiT|3 Ua t:} 姤;]~=~2\  JƐV,{:Z$-b wx]7_9OWq'eߙp\,-AUX]+S.ӏwW$L,AbSPc*=M8͆Ҭ *gu@9/^8=TXű!f6L۝6p2viXAI&RV  03/u OFze,sa٣龷ˀsx}R 5XBB+gfe˃m9GjIaI$**TA+&[}|Gx=]{y_SHSі /BVZw]w4}^CūED(V];lke9ZA$,Ieb!l dm^G5Ntז{k<2?o|vduyGoz&}>Wڑϒxu:]|}>~Vg.%$P $rLU(QI% +cv:Ն]i?.5zz7w[ВflN?>͍5k3ReʐV$K Se7[;fY󳋖O\Mg~]1iyvlaSs11I$Ȅ- tIiR4ˮˣi۰ߣ ByswrW;5_{K繍ZYf!ϳ\\'zZKv{uY˟n3ny9x1jV"eH2-Lowf:g2iݛn?_=p>1۩vn1vym98{O%n=6dse\~{ *t1π󾚸az_4N\֌jyyYRi 22DI2*2DIAV-'_[8g^3cnz<.~{G~{ݷF,kaˉ[MEǧv8pחtdpj3U"% D[&2 [0(-*bq)ǯ_uOf|2]]ZOo@ 3ߙ6|z|OyF,6AR@JB+qN8NdT * J Ur"A[q_ǣْ뵘2IMŸ#g6 Y{-q[\j]6QR/fkΧ/=:Fh$F"(jRYb&"gmz,#1O]Py+fq*V1C-k;b*LiXL4{.6Xɍ Tl @",T$Ud6w;Rc<qgejd!tYtȗ䗱ӯdX2ة5S|cE2KP+f) q脲MWY]9췒vb~ z(`q9 pVΙBAxF+H->E62-r<``&4ܦtƞ+. 1e$B!rt8@K.BhEiڐU/ěZA0Lʱ,MTt癯O.:L rLz1`G=Ӝood@sD&2uD(҅BY,۲_I^}P1 ^nnÒèb)ar[`\*'1黢ai2l_Ou cZuR9 Mܥgf$4QJK3F֢UKP~( pK`zHE^r]HzI=UE93Oğf_1P@g}.@rjY9^[g9k3S.]x^2 7R>-ZF\i #ᦾj\hq:Y$m>w*i呔MwP +ӲUf;N}oWHJkSIlMΛb&&&.Wl`4LQReG^ [xB'nuárQEݟO$F{ߗԙ^o# -׫[taNj}IđӓcȊU FʛUDMb!XiI*Vu#i2f'5Oe i ؞.`^d᣿ۿcmiUcIiWx*Ќ:Lp dbXv ^pzS敽BBi(WHZ,aV%^?h{Ӌuj߱^gf "EQ4A22`E{IdrfUհTfS=הSV$#X9C,}dT^EgO8CZpSԣS@#1=R&v|x?5\4n3O.D2).Vu#!~v7Ut2Rj{:eWŧ58P6,C,0 ٧5Sx~hFǶL)H7 4feZAbη{zP\*{4gOFN)%uʑ$ؙzӭ6'lPDN$ok 'Zsδ*/ [t~CO+?gMd2eo3i@|Tf؞sZ`=R6 b [^tmU i2b -gJQTͧMZ&+i3lŸ(-NA'ƙiE~{|XXE5w`Y2 Wm;v߱ _a]<QH@۔k x2NYU \xmՙH$ ?*H-BU< ~IBQ&L Չy+d{ZcFX)qxSh&&}&LM]:f-QjƁm lHO=>˦b9c73n{Yivzy-Ҏ}6Fڴ4k҉+ˬHJD2@zSؒnҤ=.Y%[`xHec8.RkjeYޟ 5kJo&gn2{-0!a/,&eb1dJ0ٝ_l[~DQ]\fvT}j߮24e^دmۗzFj2ڟR7'< 3eiRY V-sCYk8K15KS"Մ0ۘf|8 P)dfNtZQf/jnQzǙW-y?6}2oCVIw5(ȴ6H*ʜovp #V)ʱv_Wj\Ry)rF"sLi˴^duΫ?ixZǽmk]U. 3V?6eG?fB^LX[h%#JV',G&<4t斠ʤiBU"iuk`PE}Zۃ-n6gfAnj ,TV.%qۯ;:Z1w\uݕɓ|xgE߫aO̍QxՈ:N&M۲J:2I?uZb@[L!6HI[ N2eOn(2DNnȬlB K2ӋuoTݿ@DžV'x߿ZWxgFɐ/dBG&{Xk6!G4tQB\p&e[dH"OĂF^W-C7⑍}ZGMZnsa]9KD9AYֈ+ /s-*XԣWO ⒝8+ʴ!3.<Ӂy cC PRSӰGT0YGYMnBn# q|&U\FY&⿶ZRJPIfz,I >:);O+'`0aɖMZ¿]2 =m21;W;f=j z\&5[J,Y8obuMbovm`g ely2;jM&N!j6Ԭ"}G|\}BW(dz`D\3>4MN-^@E#j/ؿl_28e8rЃ|/I{IʘWA ubqKoLG 0`켫=S+83ch, 8!ٟ.{ek-a2 VcÛW9Ѫɤ?ߺb߰/ʰs%Ze צ˕Ir!K|Xo?z4*xF䝱k xi4졡45 "`Z:N=d"XkHpY.. ga8rU}mӸiz8T ,pn\v›h\hܒM4B|X|,e`WVqeKt܎ p⡳Y={@I<6xgt:Vie7e-86Q2 [@T63.YmddUjiJ Pc{ 籦|`pȗZ Pl‡3&l%XE؛CmUJ,Mtvɣ6нCun@/͎ͬ 몿aإ6ڴRvWnhF|7P9=lYT95<$l`o֫,lJZh> kv& ?9-Qf(YNox2 ;eJ r E{_Yfe1kmTv5<3ϋIU&mܖكN^R;_F3՛B[-v;yamS6q.HS`ì0k"j:ZkiCԖ{gz9WJ U u_Y􍲶 0v jXCNsM5pVڈV9 aEnž+u1' V-<$ e`D{"K.y߈x}$>uGF/m }F,͕VxGH~=ew p b]3'K$& -jcpfM?q{NJ6w1+er8t䲄@b\:;Ry Ie19]REWw Zdz_/Ƶr ^\P@z}=6쾜)ueĺCb]+5HK#](. SD8bmڱ=χfAft&wMp >|]&oɻhSq&zrK{%RcVt'ny|܋\m[06^> jڶvؘrlL jbض*25#)ڳ 3"hQBrcsi3$Eg%DT!v>|̶6V~Xúl)8ߣŦ𷉸;&?++PLj,. ƚ%s+39 <;mtvP/L= GT9&ʚ T$ddfrCFwfRӚ6G /V9.W&,m֙뚢͆>\Hh剾 ?ؽwҹ@")!;Jn=̴)ڰ0p &sPa1ys?>6|-ݿn磣yk"fҋjQsXUGP%/qbUN䇳F꤈:[i擋Cyq066@Tvu~[? ,K!ߤN,ρ/}S$(czfbs/6.AiZ_-+!龜i#ٿ@$Y1Luv;--b?e/uďżYY9Y[e&v@۔cF&3TU"6j{\tQڬR ,߈ͯ=K63Bm&xgQ zVkV^O^[CC0J1`X IYtSCMCQd/`x׻?[Q:`b (d ?% "ѰB/dOŕқ×f "Y[2?-kӀ 7LM4oFan4`;Y;3+k-h2 t3sUmsxBy#0xB|~.Yjӟly'&Y25ZNPS/*'EgUOЁI2UTR먿^F }A,1@@\aWO5U/F=~k7KrfaesV1/OCx,?셓;6ZTXj79i"};Sgav&ԫ#Z~zi0ٗfdڵx5F{!0J($hr)&vYZ}P4I'pdŞa@4GT-dVg|Slε]saEݧٶ̵IΕ4Yb=vS2?wooOrLv M邺 &_0)=Y?OSM$Avt*=xIӅ b/d7?ǞÞ x3czgzqF "*'lZF)E<Ԭ[ _-zuz86[ldTcgjl{ %ړmk2#sY=s$-5أko=y079F=V},n8XO ,,x2tɛ,,u>iq2Nd_ @jkMB [21S7ڱ ;!dX@opeu,pí]78`tg__te;}쿠G5Nq EI>+F5I;'T[݉Fj`uuAڶBk"],륙tW]:陛-ުsi7d;weF=Ym_np>Ȼ˺f%G3DY]}l()_fuN&\sMn'Yue3''ws)YN~M=\QjaV"eximB9F8LamL c21ˈe0>}wr[duˑr&u]Z_NvWl&f_G6K詴e`_F FCS-7w.gՌ'nN j`u+bۅlS7jCqL?qaiGroLN:u= L)ac'l"$&*XŸk{-ɖ啽e1rc[ꟲtNԙa}2/l^!dhу,(Bk"ȹI=d˧]3.WF )]w_N58 2!\ۮ2de:`_V}^%h̾V5iWgOv Cj, !ˏ{zҙ/~Idj{/m:5FE ]$+r!\q\ڨe!.HHp A G >"vf; iHƹƹr%bӓ(%AaG`$h۾cSzx'J]X ;\\\\];5uuӺLE3 fͺm0$)`gݾC'';->J6Lj3vN{* c < 햼^b, +p⹀ѩ@XP` e aF~Ni7x+ %Rg)-;op:G"23/_JtK3*z[E'>LA۾Y6]E]K j& Ahc\\[_]7171}e34;,UPD?'-x_<! 1"2AQ`#03@BRaqp$4bCc?ljZ5"._2e˛7Eˑc!ͧaTőęőƑǑǐIV;8sqR, &={*Ȧ8hЇACUe3pƭzS\W!!nV8إ+-jۑJ!ܕ[KHKJ!lLLHnE+٭Cq+UCqN)˔c28N">4O?O~G><(PW%aRf.'l6ѩ+l[%е mik̊.4Gl%O)o1?M>ΦV–g`>ʥe?3G4REIImYUv-eNƤI.͙ŗ<z \^YvmUN{FLF=(WTV)ѕNpO%Д6f*LQTWY3]Jeښ1$B* 6T' iy3Rb1{+"tjQq.Hp./#C\ȖIkL5] ~r:Unu1Kr{ t"ŴLNHMy ܳ77Qճ%=Г6IDO%ޤT 6hR;jq^w#;gXk%ХCD!Hf%\WfRIyfBU9wEɭR|OX05=ٿhAUeIِ*DFnaK~(+,Tl<1I w»,8ۑNʙԹԷ-08[wiCٿo*cUZE^͒#YSDSTR;C.wƮ3Jr"6$מMM֝[1e{7|4"˛F o1^,lfcRFX9hUV}־-^"ʾc)2ȴM)簆;{x,>ӕFZLGEFoy}'%w eʷ,4P˺Ei"j^ApH/fF٣=TV}T;3YV]KlG*y"2f Dj=Du}([̹.N˫j$ Dv]gfx5LT ǏQnJP6le5*+7;t55b,W 9y!Sf}īYl5vgfx+%+UMS-rz,B(JYE.D:[|L*;6tilVKLΔS:[OVh׌=D5\WXM\EVٿs)P,U?Q;BTjçԑu\$ j(yby~c8lqq ,w} Q&\iGA՟$FyKU4ghBӿ9ܻA?胤`*}GV#Kg4\ut"d>!lI5&-#B~h,i"*"1Kϴx^ܱ54y\ԟKuhZm30W-c1˽gkvDc$$htaZ:zyrO gM{/ XQxNGw毵r<\V:Bc/[cR"gHi6*b'4=;v*GLVG=pק̡C'/\|_2Z:Ij͘OŞ?=[XI5ؕ[̿c:nơVjl5˳MW/ގMk#_)tրʓ7r4*גrHx!ɘhbjfv-r0&,#\-V5u.V(KMD;nEy"NzM-aX՟?TGaey//eP,Bh-&ybjšʔ֖HMjY-|MeNlSaxݑ[)2$ZnÖj#)].WC]'NL] OwbRwpտ,UZ6#J*6c.i3bpY?Ćve-0u0# (\cf_>х_ؾi/s1k 'V!1u#SDPN./\_bFҍҗ;1%r1Oz$~gӼrWb'ʝDh%R;'RZdvgYrNz#9˺J5N\ޓ0C;6Ո,X ]2;D`K>(kTZ7[Ȼ717Ნ9_,R6QO/Ï= zkrczW0֩F̯7u`f9hwF*:j~LEйvITi10WdຣG:e.#C2X|Y,ρPhwm]WQ?fu\i8W'OWQCb9tk&,p[!+J#KI~(]){TOs<_fz(Vd>IN\l\ŋ,%͆|6sv:H%#7rNG:(çJW,C)M5ʲ,Xlr4O/\MHw\Lnx1_btɯca> ˚b&NZH4xa'iOOkORjuG(yS8bJ=)2U%[]OMBݎ^H?7sf ݚȹ[KU%ٟ~ZGk?>z#JMŋ!MȥInp`p`p`*Q!JDh;ҍ(Eбd[$y~_܉[WF"G>R2dۗ|M&X̖x)2Ch8fHΜs ӿqk o?'7GGF Dތ<aq|u]yyfn'sr/|zIŻ2.6_Y'L[b5b~! wCMW!ZPJQ;FslLud^Es7J%n>rXqYokeus8lgD2fȟRJŕts<_88888OSZKԚs*n&Zk"uR(MQwczO#II45G$ Ei.!iЋ[.6ޜ_6DlCS.\W' l7rzI3<5/|=%"V>H^ƷLj%t-{׹C  r16Xt'iI URck%E):SUSK*O[;,[FniKD70Ho*IwmB H-5,w=-qU!n+yIJlЌg^6W_V/8Y;>Vn/*'Ok ?a墶yڥK#] ޽nJ(&YEtg*=N5?䏈R*+&B/}EyQ))T<_:&*+ELI儝!8KLSHU+8{ze-1R-xH:bVr"yb4K(PoA5*eWPHѧOR;F NtSe]V~EbZDzҿU)K$)VQ:sKr QIuБmgŘiHh4+xĐkctcM!U7f=cM(PLF!ޥ;t(I{']t\i8Iظ7zB%elQEwyE#KrHvۥJ{ff>Ybtb-gCWFmpc ReJnti0u%%hGb`>{ yhįF%Z l7-&XY3D}+MYK Kl"B4J.11ZJؗ/CU&d.6ƌFE%rZLeD=jSEi- _qQw3+Obj}ZLZ_˗'i֒>0#}N>,=0r%''vBn6'bޅH #ٔྟh}y5ubt۔0s")EYgVωSdVB{q09%Ȏ&H10Ma_b[*F1|Tfrb#E]q*\Ο~Ojwe=N:dװ/1R)x>}XXȇi܊Xu|/Xl}} ?=VCS*Tu%YF8Q8lt BSWXi.͕iSmf[<6=AoӚ7TTدx9ZGhռeF u>|XGz_LN{ XG h]rM{-= 4DS%N`qZ~\+RGlPb \xwie5y$O;qScz^حS7"1*j|~Xib0x䔬b1P%VR)"Qd&WSR}yV寶]>+GT~蘧jrya#y6K|$eُgُ#FRbh $k5^v_WV1Q`>LmO,j.\]#e͕u*G EٔhmL&S+O6j~ycjDqqBz$VZYrˉ]gJժ'[ 5V>u4tT>&WkYwqWūVN+k\46Shع'TJ{ U:JG4-C/#Myx|K>%&*iyiimbcܶ-qbB+R5#\N$N$N,N*8⣊*8C[/ CwT\Lc@r˗.\rfBō%|\v_̿_k@/v?"egbŋelo4!1 "02AQ`@#3BaRqCPb?4*K~5_SO2̷0ܶWH8Qbu)b4iZO:??S??#>#,_','|e-W:KS.^JcdYWؙIx V'[HHXBUUY,&g˂1c섴2^(20EIe*f ҉Jy"RqVV0?F!^#,XH|=ؐ%z&a=f+')1;YI] +,X,N:ҍh4"> B䞾ML飤tVR?GY-}{ yUdRq)SsQ@ƫ+X"RW]cF|ymv"UVd-;LtVk~"h#iDS^sQWc=ab1{r*ȽJ)MA]x}1бCN4FtZN/bS[qdci[nk]m5)QZ aIX9hyb]BՊv#+T^aWsn2%V<"֬MCwwjRQrU ʭYjG:)R1 2<WGCb┣ Mn$jf;a|aJ!N ܶvY_:TgƤ(Llb*dWhJ)īTjR:>NNOȩ~EO&~DNNOș)՜*1GxE:T䎄 HVRI\_XJLs,j[ RLIiDV'rBN.V~LəJW(6,:?#!qPܧ>Nՙѩ ^ѩ?PՅ:W+-Xw&֊SVjX(#' t1.CzyQ~vluR%>WӫQN:?cYO(-:+kG3,zL;zw[4S)MM+F. 8KEh:;"8P%()+)83 gbVFIpJ:L;hY\=oS쌜Y Ehm|JJgy3"rҮ'RKCHpQEj(4r55fxJӞ!Zl8׉ $11Z_%8(7bjLSWuuS6#I|د ;( Pr4N4ZʇraEt:Ri2>'(-&EE=5'C\}5VOTnPwZJOD' nIaa$Z"("IL2-W'X|NZ=fwV*Z N)CJ*,Ip3ȸeXv)jE H)RDmZiYԒyNO~3dSrBxeW;_tQ˂ _,e?\$+鸏YS ܳ>FTty(Tx B lRӮjt$*8КN/mSO,4?t8kُ %O-4.,ܭV,ͯ=Y&Ӻ!XRHUװKQTy!U1N;!VSd*^SWlQ^̬7% n%JpМ/mB+WcyCv,JW˒[\ (/bU>;?CML5W ʾQ4RW/rM&Ц*tJt`C^)"ji%NJ &㿛[]?BlN f+31ǜ\^čH"n*ȥC%I)5R r{k{,۰q\IM]w֝x.:l$7#UX;_Lqr~ՒY"U:{J^jnܜd䨤׀II, q4K8=qʒJ'/+$#s.MF@R5Z7kFdJ./ujQѫP>sd՘iGM0+Ġ+2TbCLmڣ kxNXnԾy(;BxݢOT/+$# W .^#4Jt]ZY-iJٔ̄5I+L B (Eff l*vኬ0n;go=9S{ܛq:̕G.=F<ë,{ɕ)&Qbըs-0EYZ$k8b/RxR\7"8QjZCtaȳ+|KL[O*12a<7(\~'?evʪ6 ZOŒ2iYhjɕ5 (Y9LM\xp:yQyL%샼oއ9YCO80p!c(ВqQ{2#FSob:h_^9&9ر 2 /B\w3R5"cc+U}8eOMCjm"񇧱dxuaW#$˕!'i1Њ0ZCf:mE]j~Xrg7g&ʋTQZY8JyP:'&ʂO_UgmgCq"OJ!sݟjWEJTbKVR*R\gv VG=Q1{2YA 5G8^.:j<ҷҪz^QvcnOzHpVScV۲"9!X;/Œ:j{tiRMP)(?QR8 '֓v)Ͷjswfm7Jv<4қٔ)teF6tOȔuBzμ{)zYRf'q,<SNh$pЋjxhNW$+3?-6(#ؾr8F[$GJʜTfJ1iJc~s)==E~ۗ/˗._?1.OTSMOPeKby[ 6M_WYC,v[˗.\Qw?YX_;ڧk?$.3_8W o9ѳ[-Q1'rLQ4#y={NZcrnﲃʋLuTZJ(}r_u)Կ%W{yCCJѷl6f!ZW;JEiW/n^VhfFD {v[Sm}NsK4b#iYnizRsONZb7~zy{lī;ek=!*4t*J\\]=+ŝxaDĭpE_ս =IG5eY.s˗._+lrr\Mq5\֗~<;1gI̴i05_N^ʔ.h/*mʝm ~IG䟒bγ:3V/~$UgQ٭6v5VXWѪzF{t_'V?%Iŭze˗.\STuw.j5+~Ŗj{ "Qb:IlOTofXllcIȔ\|T:tM4~Hҧ?Ike8҇?)^ =SzeOӜ7i8U\vGJ4#,ǚ Ί-B%jZw"ΔlMY5Z ݝ8ؚ0ֱ^(%JX/# V#1Q{#"Kய *N_E"bl:kخ(bdV,W۲wR;%iXʞ*F̡++%HRٕbĩrZ*+IND3e> QRC g~ }"V6DŊOnOe5vAYFW:(Ӱ)RJŲ+r\X}ӉM j,$k/KdsR/QhW/[*HHC6heT4&=zgb4\[-$ ^o[Bb+oaljL~.AMj].Vƒv'B{fYk5fY:fQ\W[j^*$,ԗ՗ɮO8JF~d #~Lmerq#5ptѳffǰw.\r˗.\rrSTSoia풃BqqI bŘMd^ $f$ԍp+YKa9rZ_$Pq6,O8x!Ufs&(4KqY*~Lt's *_boX}SHԾyY ^ۘInjm'"yCNU&䚘*3\P#.+Fʏ)x[bL:$f%/7FQ ҫjQZ.=GE% n#ʖK v/!yE䕙Ki|2qZ&SuȗOuRZ[iOLɓ{6M)mK٘YmdbyO(skrҬF6euioiM-?2#OUʰI2FDz6PMYe)|D}W*Gi{Nr7|TC,F)h%Z%ZZ//R5/Ծ K;%ʳ,,͗UE 6&#՝CE([7q/rP|ą;+*KT;uKZ:fb&Tr/E[ܻ{LJ8MÃfu~Dr=˲$/.?b}MpDBꭼ'av.nex/0rpϒŻlXb+i,!soxYmox*bMY۲F=K.|3}t*\ +.._+yC_Q[Botg:r^ݴޙ_x;/SሏVʜݑ d\[x戻 d`3?xoT|~[!fnjv!eS#Y^U#VwЫtjBIq|C8 paYNZY3+K,$_ByQ)5ߑI)XKj_lX)r_b< EZ$߄hk*sUaV0KU*Q!he)f2tĊtv4$8.DS=%>;d\A eYE v8ze%{P\)N"R{䥳4Ų"ʛ~WRX,['4RWR=9/oKurq脯lJ䖭Xwx5tC^YWwySױ7y%=Y{R]i$k4_І¾Wjzrr\]~; Qw"H#iE|p!Z2e)9?Ӓz]J-#i~I MO5&I-WIDXVsB_@y^{HS6x Ԕ= 1Sl||K*NjGV_%Mǂ8WKSs{%lŋellX;2*c_ghE 3h,X +,cC&tt4tɡ|#id%)"őle͋,i4C:m4+B,&A(MBK"ŋ|\rdѡK43C43C43C43Ι:fAЍ(5O/˗/]bl~.vɱbŻa$$$XY6hfhfh:gL4 Ѝj\}}$Sv+.E˗eܳ77,2;2Ųd4/b;FQj5j.\.\!}伛4FJ4-"ݶ}ط/>ۑ'ܾP]},/йr7߲_;3]/߾V,Xbŋ,XoF!1A "2Qaq3`#0@BRbr4P$CScs?c^KjrF}y OQAcf%o"w]]-[kk]=Wr>wU~;w\x/*ZXd*ebŅ*X*;X=D#GEut6kʎT:SrOk <[n iaf~5fJĬJ+U=wO]O½ xCoK/jl8N#Y{6 I*(5gJ-$F!m1n6t-B\<65gY|Nnl&!E!xDlB5U3);>>/----跇xz--fw2󙝑ZMqQzR8IoD7?QF+ 9%]74;)PX`B6_s_«]Ahf,*DΡ`N5A9MLb[d@%` W(%]h6+JHGqyǂ13y4O҃XL7 &h3TlMͮS^q^$Gj|1 ̫r9BdaTQXjzJÉ)9$uTB10DlP猤f$CvNƫ hu{z&]B'[eŪ]p4ֹP7nqSb]Wq ͉1M74IJ,'vM,} 4n;/齥4)>{Df֌ 8*>/e7w%(\u ARE V2g+ kw0R"Qzُ)p/su8+{3HvaCдVv=0-#>.ߪHD>7DM9smTWAKtp 5jvA1/'eocJ$H9MRکD 0QvA苀<0> huhvޅ'"(4ර]|喤0ݧ(yۭ8J6aV}$Zhx*Fg V= l*QD+i-dBhW5;,2$\DGfBgD\!uSOfqrt&>%U(pZmNv^(`pjFSzx4tkJxҋ2sG¸1`"Mp&@$..NEng6kOb|jߊ\ ܿ?pN'j\&5TUO춅fuZ~h{@'a'QB%zFl%B%=Q17ꀗW6z{wMlR ]jR;n@sp۳8o+ʑ6r8Ŀ=FV2 TMN"tnRM0;(3X!DchEyx[ĹU ;b?L*KSJƟfLBvy!,RPv g]if֠M-n-hxj`=jC쓙Yb:&=U["+ Jqĩ,0^.Kc?jׄm9FQ$F '2 0]Gzd|޺7yM 649uvZXQ^|Sc|! 4Ji p]+dTD2hay`n/jQ{ITP+"ɢx~-I*4Pe|HcmQSyHju7}gU~)h:sg-[u<'JdAI)edI7'VMpTT%doݩH'$xCJ8Cxv5 v lLl&:+JzTA~Z78xS5(%gA#A*FyڄJ7;z&D '$q ߪU/! h=  eD 6ɤamSm-Xvy N@ndQvW[TrtM*xdOD!9׳+{&[wggB ;.$.L8dG H0ʼn> us[7˝j2D "k#HW PkI\KB+"Q1p/4J6i.KmDan?U!KGlqSrbth5EkN583Th vc 'aj0 "nt=…?F*a7WsF1)p:)D|1Z`sȩǖ/aslgD],{I *q&dJjJm6uySQ:YD4l&(ah8@qՌ-Cma$g U6ba {Tg$ONzkHƖ-jImbnUU^aϢiV^,poKqWg 5t)&\0RKiYvǗTBbz$zib6*>'5*A {:]䉌9'7[gj^MKW iYN_ g0#tlUS5N7~rE&!#E4KsN#QpQCͩ˳F, H@I_yR.n`{v{L;A Z01_2C5o 'Au3-p(ShET4-iS+{ P-+/JjK8AFn5̈́]GuMtvA$*Et ]= -#J SmCh@(U<0Xoެ rj.VUWoRl ycfEbU+)J-bQ[o),V+TSaw '%= @fCVAEԭ$+bXĬlbV+PV%bV*sXJ%b+=u<bC2WK%8Xy> W`讽քx (4D{9<1:x'5H#'_+뽜D} Ã6 ]24] $ҏ k ^0VDj1=A&Oszh Bߤ!=H|{[A#]woתOoC>@~% G^&U0˘PޙZUVi+FbrGFlrs+OLjͥ,Tpa3۲nF^R+9&q7D)dB0jxv̬V)a Ch4Sr[̣]V\Q <.fGͼTf!x[&uyCL:YhQONrHbX0#]xٍOovuA-boditj?2py#Xި)Ÿ&2W5ciN HpDRAJabǶ| s2gf6-mѐ֒Z"9j *|SPbU'P귛@!K6jLY LdSi2!„!0'wk5$΁{Ha'qH=N8t^rԐS83  3ӓXQqLyCg0NMC^cmupSr!]ȏ?zw^HtUh<yXV:,Tjn V R^IH4S1`פBx&sT<Դ5Dec]#SAD 5ɥb"hh\@˲\U=WZ,X)Imf9Jihqѻ34UP[nRP)MC$~෈Ozݥ (ɜ-v9yh%F f@Q74[,LdB8AP "E8Mi1ST:%h(5.adWLM8DQ| Ssq?s}I Ӣ\]$-!o)FFz.CwN}։o#' rWDi KF#8&W4 Hq]Ŕ+oG;M$px(O8)>)fR krL +7OZ2uDp'g0 $vu\Uv1nDNi`&X'sZ >on5/ɜQԒ+& 7Ԧ%*I fBk=Ǘv#]rI\x;Ĭ$MkH+P)\%=A(#ɜ `x mM@N $lT6C}sq-sbp/ M:};kWUqXXBVk;pX,[u`ms *P@d`##?9y5RQ[ڔܤ(SPspӰ7j]vuok|CP;tpCCs 1G$ πAt[͆w?*OIxWt⌘}@p 4'C2P y5+ aKf+Q/N7>[tF4ZtQ(ދqwHT丕eohj @WU(+ʶFSd6sOa|훳W8TI=D  䝧&N O"|Up2vFoco^q2PY. {@+7i,NNi5TGd಺D(I$.[9W:c΋ K 9݄9twϢ!M٢Lca8N3Q'&PP2ūu8]&sڱ*(-rlYFM1@qO yoʖ1z@A4_g' 2| b&!NdTyej읉=t@jI?; W7PIK̦=+x'ǧ|:R{=4%0:1I9R+F5LpOVjX'(+$'hTvxĜS3)P3sy4"/8JqP^,Lfx+x d"KunU ,=䵚g8b/a<73[7G-exWx'8,NJ[gRp!u5<=TSP'1D VJGRl2ȬdKN"L_~ qw@Zx,j51XV+vb2$G;!#Gapa3$ ӒJOL'l@(0?vKp0y2[9K//M8[Pݪ>OO#%:H|c 8fV ϑU3W`Go[msqbj?uXZ9fhb2_ZR?sUe((¢}&^mpRY+zhx*ˈ( `; ǙXٱ)D\Ѵ"3Q,dݞN)ԣ h趜e Yf9Ni94c, DwPBV8 Bo:x " ^|.6RKlIJrۍnZA1c&j4,&q[",&ߴHl$ AbtP;.GVD+Pcckpe9* ⦋<ő D`JP~m*@vC/d.uUƜ/YR'k9O 7ݘ+E\>S+%Gc3.mP*|KP<*B:#0DNW]V›L8bÛB,PyUl@#/Q'UˇGfyVɮcSGQqE;fIHq\PSqoC#ra:x'Kj1Y2$充[x[@W?Id7FJpϒ-E7f 抪MJQC.Q[Ztc!U-oR;++Oqފ軧*Br̭]0[cCUBo>J+D n槢wB'6TGR*|Fܚv}!Eݻwen[S@x ńUo.ww[[oUhVӦ6QW᪃rhYZh軷z.ފ2_/ūy BW{U}xd5)jJkSc_y]IyyE]R. "e[nnV 2Y*-• -X[X|Q'$xm,Zzr -wX=RvUH_UݵwlTc}_jV>AwE]9A&6U\KO%ݭV2Xf«H,ܻ-ʫB:ɟL[75Tbw]wһwGwGRr}rWtWvaTֳV, mםa,!1AQaq` 0@?!^8.4N߲hA%A~8X*x`AZ/NENݢ/C" 8).)X~R {R!UE*e bp\YJ!8"Ľ6Soi޷!Kjʩ0M?QBa 8^6aRV9G {;b45=4%w%nV>lWs# Yf5M\*'~>x0/@jewwb\e6\DC#c]~UP Mzʷgaj A~cfZM㜙S"G([hnbfxS*/c$; BͣS ?bU2hQVzMIrw~R#d?P 3Ls%H)[bZv.G!xqZ(C x32cy[CUJfEG{M;@ Y viUn-e2D6ʼ|r(0jDIl{%n?#UDVl[ , UY]: /Kܢ{f\gC Wo:M>J؅N, s?5P{'wNb4uʂxZq)Elix(!P5B!da2cP1#jKx Z1Y]?xg@v!NJIh\o,)h"su(pA v+f4$ޠ6%}! ~ P/N0I ĥ / ۗ81$ǷCEd)gԊL8D0)-Kx}%DgCbv\d(eQXVM[GJg"~'?'z hx3 ߨ+%RJd!!zTC_yROyʽ!n3/v-˘ y6Q]QT߉X|y'hլ*g[&6/=7R[#'ܪe?@v}zQMQe>m&z+zǴfGFSHb}fP"Q< L$8ޗ4k]M4OV0Ub;L=|KnZz!n& DX4y/C&30Ә|R&ш05*QnA0VXȘ ,<?F`PK]hi6yh{VDntҥ@LȑG/v>q(Ked`qhyws.b<'x|6J!rİ;m|0g=)/--#tuNAf{9C 2vn1tkYm(Y8{cDxY(VbږҨT`;N}ɫ( Aġ;.zc![<1=!/iϬZIVQЕ<{F 5S_x%4n,p^f"ͭ_ܯ\= ?03A[5edSh^%e!{/㻜XŅ\PُB^^%T-K 3߫0P<<*!!tE+"U=uV ӽtp֌%KbpUpXZl*r+2 x.WV®}`=ޒ+ h\Nȭ110hbXp]|J2:*bf{.iqIGs{M<ȖfWo,fi(W(JpfVNгT+qd\4:gY˜C }<0)DQ<0閆"kQ6}gW2Еo1a'f}\J|ws`15oUR{[\~==Q6ehqfCU徊cG;Yuhɦa58 .6{P A⼷YU+WuHVVNYg]ຕV WR[|0(G okyG4#o=&Da@N,cD( ez%K2X~^g=vBRN-˗7}J鹾*,B2%+e1lbd_ML/6,=hWQ ;<J+U;fqN!O]`T-n*`+h vUwUYvQ2 W)O_±./GB'4p*̧ L+u0vFib҅_aD^ot>ٮp mCKUUaV)/gfB ]j ]JG㼻?ͯ^ 4Ab;u֝Ẇ&|{NQE)M~!3E~sĠPCȏzϼpN_YEߞyU' S= |9ņ7rZ8ẘ\Ovq, ;u!Kx ͽwP Vfɘv:6W-K; (.@zl;wu\~5QYSʖR˙[59l_51Txcg h1 FxxK;ADwP1reŬkX` !`'l ̢ ԡbgp 1-('?Y;8*(qXtbv j۶#XrC_ߡ9wIphT %CXl~x8|J:Ɏ,zCvFHy0Z@8+Vsn1"lT"ڃm|Z$m[sC9kyl)%uZC>F.CWt'[=)rߘj 5ՋO=rgLţZ̆0Kb. ScdH`w8H36ZKᓎib M`U"?1ԵM?^خ%Koħ-.eW .ϙD "|+VP-:U}@=xMv E*[++Ga1.4$pDJW \*Kّ'.A\{KV WF񛅪?7:֢}K&[SeqSYXK#p-DPjg= .&u`b:b3K=Is;(_'F_Bx5/fcB`pW^SF2KR7}@/Bv(hsP橿0Mb'M+yTvQHYN8Lu5 j5gxϋU[4'nhA\gv8UD d%Y^*X9= ['aw%_{ %L36kYik{*qsM# XGxif.R-Bܮ[jZ9W gi+xyHӇ{;gD_F8샹4M`,e>ɏʝke߼Dg4>eBK^zu.^:3>^!&'=x^I:+Aԕq'|\k/XQLGt* A,3zjz~WI#EbP%&>;-f\&; aCz%gr_T]ewDƞ nqQ/hzſBfgy.{ JRMͽ ŅmN:Ԫ15bsJ AL)I#XKZVǼ4>Ǘzhvec 2Yt3lO ug|)#5C}U]]kgaI 襕Za%GhX1#ؘǙy@,3yaF[-݂a> f2 t=6,S`?w$i^SoQKjhGXs0I-Sx tTF,^A0)I=?"Uf|p4sJ/&`på_3ӒêyQ4Lj_ܣ$@$2 d握Mr^DPwU !Уy@(!W{W?yJ>ifg5f!> cEHyp͢Z=0#BcB<ΰNn4s!گf;p+K'Yi[#q3ߔ}}u Ǩ516]x >}p(mʠk;S/DA+8W䎟T=n0 ~afW[Hn9X :ˉ[) ka `&=cGQn^@5B/-7c|Ăѫw E@ . )H Q /(cLUX+ ۸_(|;)C 85 ( kP` s%0 T!hY2zNvq h~]N;,m64/WGd=+}T!+#qN%Vr!2/hb* W}âTz:k@O8m0\@2P\{^ u~,`v[pj2ɀ9lQghVJ1M.K/RR#?MBDM$Ho*)f+,ccOP$b0Qev8&:"-23@^|w"T-d7%[W+7 `k= %)IZHYub}P+xFyl,%Q"Dco/4oj)7)##_ZK'J-ܺ-BºwG/v'')$Sd5XxA9*6oI-h#gSq#i[՞!,!55tsVWĴ֋ʢ=!^^4(]M{W}V״P|aW*Ua7.?=b1s=b:XZW0.~N7Cs]R'26{P柹P ŘB]tJTcjk[|B>MU+xd*,2~/=1MF)DG7WA@8Zֹ0Z)u@;ǾGh9N%sPhV Rsba̳,kxͩs\ܨTq7+^_Vfo+j\X6>în]9eAǤ ɀ~̢(:L$;<@5d*B |s.XK8%/ByɓbQLeCMy>*ϼX" ?5|L2Ԛg(jς˖<ϹR\|K'Oʘ+Q9SSԽ+H0~ҥc }gFFs2S&jOL{DFfg'+srN2|?)q%Y{~OLѝR;0yzLC. >%\Fb}DJEUF+ Tڸ'O)Pk7 kBCn19I̵a0kB0YCA1BؚúdqIR8bNeƢt < wSV嵹Bpq  a1 * $ş9c0U?nGw=8/zba6s*!T -Lq]N8~B3?D5~.`U~{2X1f'~HKo O7C}ℱ#}S\2NnUwbv&+p.z2f@$(YĎ%%DN: +wFh䞧"jXJDį$%x1[u2!5QZ7JQ.wGpV%Q;BJc3t ˾`vAg zp2l`̩g<z?3C'tK=& _a 6^u1&iԂ[xtx f,s1/K@ FJߩH:og1 6Gvws @ghg)xd^쐼  K>p9wuS9U\]e2w@A&3l \:8h:Nť.I|*"ߨo w)*fZjṬXyDL 0: D= ,#r#lϞ#o0yE2}Pu/"@K._i{N&wrzLs7)7Bj%a9khXXƗ $/Pk,.J(V=,|?EhPr)ZrlbzUC#\.0 5pest*z2XũLf 6pB irТ#gLÂF}cAlwmuLGa#1C^bDYԏɝR.(ZzyfmsW=-siqM.&*3q %~|OT%1BG&\V\?8CIg&5JwWĴ, t˞'=F*t^{Z^_hU@V`@L3QAy: KPo@ 8{w~Idԯ7rY"!0d*DUͳ=;1}TAĸ0(` J{0ѕsO\`HKi]m:Gb$fVeY.ʸeOI}+z5/<XG]1ɗxXY+o`~d&s/*B*U\J}`Y~?G4r Kii(*| ub2%@Da/|LBn=v1S>PpVK>rN*gJ=z&&b75f 4z  |πNKPX\vzA~?9z_v:3 N1vрFԼp厢oB%*k a>Wj; "uֈ\8ekPYmL=`u0xT0"Я7;"@V#pܹPtR= <N%Pj^}* ?C&'7PBfxb#O T0X\FLcLxd"vӈj*XTTeYw<wf?= gehOңG@SY`j>7!S &CX*5I3 ,v'6`A/ &'TcЖXe XWAu1\OeqN%%E+\LShU؉Ky-232냍_WvYF7k UDיtzF\9xg>atD=PM*TLJj!XHT80/fP_B1+z8s0[q/}ߘ:=*hLDo]\HaNBU2^Ђ&c%J|LJĪlI(Q!)!P&e`&DYjqtYy2V>}(p/;t/p23 ]J{~DѰ<ٳgrA38,#g1/ȏF#pWe/\5g0sw*`\k0WV-Qa-%,{"vO(G$Wg ˘H06mQ]0sbU*rMs<ϙc>qK3. [Ͱ;-"n'A/rö.ḫ' }LSpz-BRYZeV\JxE.7d.j ؕHEXz# t᝿8$77)r" wdIo!<\V1G[s5yABĞ(9rD[ ] 㹹Yy1cFԧbWIG;7xlnQ 5yDژnʆXNab59/XXCQ yLydib}@AJߘhOQFi1N`US"cij9F< bjVޥT@-{%.+Pv-Ǜ{w %>jOP& #fZ+QVm}ի2kz̅9̫rT^Grɘ _j<3bPC/;}8{/lY3zXI~7BN'3͙!+t3zt ޟUD"P*~Zᦠ4XxEmݡf,mKA ;w(;E%'0̰7s42qFG>%ˍzDD]&(Į qT28RÜq襷)Siu;[M0JF펜 1bg1X<"mS\LN";.H`Ժ>yDK5(@jǬm({дAG"2:2 4qB |W}eb<5_jj-}7 Y j"̬TUgrUڏ7+iĈc' }>IRp7u^c %ͿRc/G5^crƭ-aXtY}D"}V E}G buY+WxOD6TTGiU=awk'*ٓxOT~)a%@Ѷ[W^ҔOوP!QA2GnSޜ=a<m|&S Pi@L#IcgPCJ~`[b{VŽg|JutU5oe\H$U}Ph}I|Jv%x? 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$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$Al&m$I$I$I$I$I$I$I$I$I$I$I$I$#VMdI$I$I$I$I$I$I$I$I$I$I$I$ܪ޹7]dI$I$I$I$I$I$I$I$I$I$I$I$Lqb1$I$I$I$I$I$I$I$I$I$I$I$I$Tq,ʂ{'`"I$I$I$I$I$I$I$I$I$I$I$I$Vb>R> BI$I$I$I$I$I$I$I$I$I$I$I$Iav7<&I$I$I$I$I$I$I$I$I$I$I$I$K! I$I$I$I$I$I$I$I$I$I$I$I$6!DRkTI$I$I$I$I$I$I$I$I$I$I$I$LՈWuI$I$I$I$I$I$I$I$I$I$=%͐:\<Ԗ5dI$I$I$I$I$I$I$I$I$2,nIAmE$I$I$I$I$I$I$I$I$I$_3o$I$I$I$I$I$I$I$I$I$^dL>I͞mԒI$I$I$I$I$I$I$I$I$s8>Z便UR[HcI$I$I$I$I$I$I$I$I$St I$I$I$I$I$I$I$I$I$f b#4Z4Xpw I$I$I$I$I$I$I$I$I$$֜0`HZ`ԒI$I$I$I$I$I$I$I$I$-yshMfpeTmlRI$I$I$I$I$I$I$I$I$rMd8Z [YPSI$I$I$I$I$I$I$I$I$^sJ~%/T{I$I$I$I$I$I$I$I$I$i0\1 n%s,(?Srr,fnI$I$I$I$I$I$I$I$I$[*O<GgrI$I$I$I$I$I$I$I$I$0:$4hu|BYI$I$I$I$I$I$I$I$I$?Je~(lΈI$I$I$I$I$I$I$I$I$%'jHCן.'\rI$I$I$I$I$I$I$I$I$cZ191ޛCmJBI$I$I$I$I$I$I$I$I$"[;Αcmϲ83I$I$I$I$I$I$I$I$I$$X(@ig>+G*אNI$I$I$I$I$I$I$I$I$R^jX_O?_I$I$I$I$I$I$I$I$I$~Ma`T>h4I$I$I$I$I$I$I$I$I$,U`4bql2j .I$I$I$I$I$I$I$I$I$da,IbQo7oI$I$I$I$I$I$I$I$I$$)C0(9ŋfy I$I$I$I$I$I$I$I$I$"gEQ)4G@gmI$I$I$I$I$I$I$I$I$ XyE]3GȮcHA$I$I$I$I$I$I$I$I$8GTK&x|m$z$I$I$I$I$I$I$I$I$/j^R7.yd$I$I$I$I$I$I$I$I$1?g6Q٦HY(y$I$I$I$I$I$I$I$I$tޏ-k $I$I$I$I$I$I$I$I$O߱d6p7ĉ$I$I$I$I$I$I$I$I$N{e-4Pe$I$I$I$I$I$I$I$I$Fz}XKn%Q"WY$I$I$I$I$I$I$I$I$H{t:> &7G$I$I$I$I$I$I$I$I$M>GZ)Hɼz}T]O$I$I$I$I$I$I$I$I$JQW7 ivٟZc ݃$I$I$I$I$I$I$I$I$@yȁwO>„c_wgW7 gdI$I$I$I$I$I$I$I$DQ}O52pT'LI$I$I$I$I$I$I$I$O% '%tB]ŸC~dI$I$I$I$I$I$I$I$Hik$ NؑqZqC dI$I$I$I$I$I$I$I$L>sH9`CGdI$I$I$I$I$I$I$I$BNRc`.[ LI$I$I$I$I$I$I$I$G"0IR|+ǽ܌| TI$I$I$I$I$I$I$I$E[q5la\I$I$I$I$I$I$I$I$KJEMҩs~I|]^_I$I$I$I$I$I$I$I$IQK]wW}@ I$I$I$I$I$I$I$I$@{0ϭHU_3tio^I$I$I$I$I$I$I$I$NCm F2Un!14#|lI$I$I$I$I$I$I$I$B&.$1m_{SqbI$I$I$I$I$I$I$I$M(.*lJ~ϖ-5I$I$I$I$I$I$I$I$D2ၗv%'#_H\2I$I$I$I$I$I$I$I$Cɤ2ħi\&5o]{I$I$I$I$I$I$I$I$CO`op;I$I$I$I$I$I$I$I$F/㷩!"g} YhI$I$I$I$I$I$I$I$E‹/8 B2hnj6]pFI$I$I$I$I$I$I$I$I⫽RÑ !r@UI$I$I$I$I$I$I$I$Iqg7feidԉ )I$I$I$I$I$I$I$I$H}dY<[eI+I$I$I$I$I$I$I$I$H:^/ŖGtK,,$I$I$I$I$I$I$I$I$IegrtKd & $I$I$I$I$I$I$I$H؊?>.)ymZ$I$I$I$I$I$I$I$H+bB#5eꚙI$I$I$I$I$I$I$I$HI?U_}Ido~$I$I$I$I$I$I$I$IxOۛM٭јI$I$I$I$I$I$I$I$H!ї2n{w،po$I$I$I$I$I$I$I$Iof-dPE$I$I$I$I$I$I$I$Hx;u?}ڱwk$y$I$I$I$I$I$I$I$Hڳ_%%Ϡh$I$I$I$I$I$I$I$I$D }viNp$I$I$I$I$I$I$I$Ht3ŀw`zYߠEw2,$I$I$I$I$I$I$I$H>tZg Sn&)%/>$I$I$I$I$I$I$I$I2/ՄRۋm[%I%I&?$I$I$I$I$I$I$I$H+S&yRAgmedI$I$I$I$I$I$I$H@ $Ba%m.Z83dI$I$I$I$I$I$I$H.<< * 4D[lƫ?|I$I$I$I$I$I$I$I;<)k $e{ʧ$I$I$I$I$I$I$I$HLme6ZI4WU}$I$I$I$I$I$I$I$H'ZL7 %o*$I$I$I$I$I$I$I$I$I3ބ!^$ys""I$I$I$I$I$I$I$I$I$I"I$I$ZqE+{0ZI$I$I$I$I$I$I$I$I$I$I$I$FEo-d"'I$I$I$I$I$I$I$I$I$I$I$I$oZiR) I$I$I$I$I$I$I$I$I$I$I$I$yvdw`^NJ|I$I$I$I$I$I$I$I$I$I$I$I$T4I$I$I$I$I$I$I$I$I$I$I$I$PDRI$I$I$I$I$I$I$I$I$I$I$I$c& 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$h).\y$I$I$I$I$I$I$I$I$I$I$I$I$QN,$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$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$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$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$I$I$I$,!1AQaq` 0@?Ǹ&r..6wOfdL l Hh;|foΩXbw"Z܇:"I#z2%DXoA2c$%-XMa!>4+Y#-v4bGK7H%4(.pFHBat=;DD#:5W6Rh+$Nu3J KQDR qD6q*&b EF:s4cĈ- jf1Sh1 ]$ W#&1xƒȰm ] lM}Vr"L)k o{`ɖmƨ7tP'ni|Q`I勳 YFb'ƈK.ENWrLHuؕY>4&"UM0᎕dcAydT'{lHZ.z|رp0ǗK6pF7SQGrk?2O=fk`kj_OBaRc m*PUdtDL UjRՉ'b| %mBGQQ['ݤᆲjv_Չ?fV{ 쿫/GBҏNGpkg$3jI'q&9){$ТsFBtl;.oa`_8pI}Xxx+q<n58n.C}{ȑZPNn l &G*3EdinȆ؆bOG~F^~ZN,O!IZ!jf& &Vsҁ)MvLUcL#US1).Mf`8B 8mPR *"Thr5-`p!: (9Gx+$vpl-F =6LdL ɰYr>tt=ؚ1K2䈚Br%XWQppe]F3oh,!$Lȵ h=DS%6ьT߲a 8>/vgΈ)V1ϔN Ć_jHؘ+/Qa/DA4d^=.A2蘜؁J8ЂkK§C/[Bj:6SΈ(aƋK<' !JX,͆Ѣ+e-#r#[)p]uȈN nL3,Ox lDر ss}U.(ģZcZeͲ5k6/B/B~_w QtFSd#q Z1L MitrWH ix-)p+N3n%BAZ#m79#0p]S-G@f$>I#aRnNRXBnv+n,D"4N LwI A..(o<4loPJi# LGz67qvrJ$Z9Λz!w6S"BhZYfĒ ?QU]<Rժ9jFCclgIgS {?>'e;E"FJ>4_Xpmd &JDL a]lĄJWn4Ips!Sa7*EnQ=?> Փq;6+l=B+ y3KFF+6V !cBPK5 'R`K -T3+` Udp@~c[l{J*dWA={dNlc%iD.*fd"xb}p%< MZd/q(OI0%PD@F Lk&W}(M%NfI/!Q,O$_C:K1k"*^,|o^`ܣْ 3hb rBJ RyӁ>tx6Z$k%l i":dx)-КaS&VX1oWd/QyCR4V ن K],FhMbzOX] !]c1t&7=䵃dm7z o"U!4& lA4W{cC&g 5r,"2bi q_ -me&:sgʻ ag.`辣X )vF"\a}[Ur[#[dm4$[%h¢ྑ;Ok> #})tnlmrt*EyOh?{ .d/c]\%A)LBW6';}e0b]E(% kM`Q3e7`O =/RD1cf'_Ȱk]jE\7U' FB`"}bt~Ed˲0Pm6fm'mR}T芝=qN}/bavLz](UhYD\Rr$MDDA-& R t3ߨ۱vߦ?Y huuObp *hcճ,: " \Jil@Fn G0"  !BBH1*Bh2%k\ rͯ!_/)}j6"iI]D'BDEe?\)Ǿ ~Vzo"O.?Q.yQOM[o;C\n}щnlw>d8/x*5ҋL-, y!DlRAX"9%l^~ĊV4sȡNBPS/IDL!H=3~'?+#mwЏANf]'Oƫ'FK;lhƇ' : Hҫ;RfMFW3BڭEy&HD3"Y1Le{i|U2Vy"{Ns.$7d'iGKzb.B*BU i]!~Z-(%x>II!c%'W+jl`}lYd 2U,ns#$.]Rɑi~42 Z4|*X. ' z B)#LCp(4r p B10BCmOrT݊4HȢm~DBC6aZ~r.d_?"TA1ٍvoA/2#HŤ" HL/] Hbe0$YZ[VBpuE;} '^>hB" Ecx "c)% ~T11dJ tЉ$drb+Ғ-WMV'p8Ujli#Sk{`JS#H/DR/q"6j62[b G^;tMx3867Csa1N\~hOߦ3i6,F ܅/ł x+?ؙtl:hnA/}U1A,}GҚ}<ޯ"Fҡb/D7/qCX*i:͹h=d^Fy[Psxfql1bqpEBAThuddH6'J_xӝw2ϑƷ5< J}F\yb .r6M-/ {z!&0RvN %a1bk I 8&~%&\lZ8Ү>'>tuxg 8z%ʣG nD[7GţL&5Wٯ-C?YK,%Y6kq7JHҡ{ qD:B|bfZ߂Y#0}Mɢl3hbqg")&T-O}- 2%: UE6h12Gɶ7Q!n r&E!nd!iz!$?1 H/^tLڐ%R $Efl7&E"ko$C&L,$hO,-]2|7)Ţml"Mf,~fơ*-Ő{ %0XCv_@oD2_Ҝ~VZrh}Q_R}~%m]$fb,WRGQ4$ӏDEDNdp'PQiH}2_}:b͟q,[i.a3n&'m"K-ELM$r!rNCe(, BX-?-~*c_##jcy<}ǡ>?.E_a#v8jsD%{h|[(FPB"HH ݢty45q4K`w鄔'd=hBr"#n,ql8 %d1_1`tr͡l0tLE-h)$D:w8N ij2)d)4YD=и*dEL3Y@Vya8 v!2% 4b1c`}J"2lF0.&"4c"FOIL 3 e~!6!~K AbaLBnnHAM1$ ca8lk`ԯؽ̻hy}sCJ*NDpW6*h Ń}UO0F*^"Bth{<끨>"{ͷ̜;܆$B؃X[xKa*zvM.bj>G"U.m2F;EC%QkdK#B2~Аܑ#wKAR dLR{CkaG_DnM%aBa?~̉nU?f o)Y?oB4D+h,o[fᎱPbuQ]wѸՉn4IvgPdLi7k{g#Y2ZT&0_=>ї&Gc0ęg<۸NYח hIUG6dta%{2ENdATl؆c"7hA8(`e k]N_wftsA;߸bpbڠꤐXC`7xn"ӃIv{*pID EңaW`qvDV)dkygJONx:ȞOƱjF!.ZlJAx!a 'ø}w 0x!C$PG=/L鍗'?m%SkSlp\н?ACX$]n1. ӯG#'~ߨP:2|16[K(&!Rɩ[CFLA1PYiŘյhl{&waW-W8[{ 3ߔvG2CGT3i2O 8Ĵ-}bZ^t^DSCeaWǓS"hXr\q֋"o_{b͎8V51`Mz cyS}1-'XG l4C-9^ {;mtEAk!v6G`6}2'5εiu9oc:b$kt_tB_pu%AHsf S~MPEl^Eb4CQ('ɕ,ɳ$cJDr4xiEj'h&BtAey1%MTh4A6Ѣ BD6D"N>FɅ*, nSUQٍD)IKzߑpL6FDHnNI>'c[{~ ?7oԊ&rL`in03+֛M\_cM[Wޑ1]4At(QAM0j.4x/=Mf,Q(I)b{,Ttc^!B^Yx+26Ъ:9m9Ǔ(+8%cnHx7bmlfKJ8ͽT3Ϯ~q̶5 m>YGkRF x%ɉWE" &*BF\q,գT$J#*]Jl?ѭ`h0,G.!۞:>,amaIc8v;3A  <,JC*JH%vQae LԣIr)z c#s&Q"X+SJp-o/X+?(M2OFބKd-BcC)8GN%\KV{bx,U I5z MT8Asin۬1S 6]$kaWqtObGY)$EmWVJin5ǒЬ< L!Τ5QkdG~B8Ȫl%{GKoM[ 帓-cZzw%<kuF>*}cj۴$^RV렶I-b$A^ S\;2C"8W-=#&8M6܍M :i:xғKT4>v$#TU7aJ)ǾZo~(GZع ϼ&aVdv'h,'li Ha,Ba0g:RD6-T!!t| 8);[N? r;-nA:iIv(* corg!e/W 'h2IK 4otl( 6B0%HӋ_ژa8b&#M H&-}rعLגhz 5{hѾ,z$"٥:kMV𙟂?FNvDtY.ڤ<} )]RA\Dq9 a"Qٍ䘤4)?=T-![㓄ٵ!=F=;IKEkؙf:z仭_q6 ѥL68o[BLWvs/229=o!rS)+f;ګ(*Zbfa[6hMXHD$@Љ#kd16;Ԃw>P.ϗRV2;&Ȍa='aIksvpC3'ȷz=q#X:Yҋ#,ɝUe 6~$5a:c_ ,2tXY3qգZ-o dQe,YeYbr,$/rB}vYbaIGO~a!QA'Zn [*?Aaj0 ѳOw/k:-QlX#m8$|SEdr#EzХF3Jl[x.I.7 CDxHm <$.d'D  N /M #oN4hS MHL ͆'gD$r-D"$܈ -V=EEy'tBDQgF(#h'dr$ }a( #1pM<9zQ2H6$H4؀&-axҏm^hLNؘR蕇VQDi$=6.l1tOI!r FXm|"(&YB_ll\`NTORƷZ52Q!< &J}Xݷ/$l h]'FXMVϸFt !=-(3  қİM_G!p7INRIC66TE!GV5Z萔ѣLLOK*9. XZ]IBB-,XcI1IOm##"i5]DD&f15H[l,q"E)!4l͈lBA`pl=BMҰ1mg$=-y&bk#+WBg.HjX,1neSqЙD6R‰D[D>G! MjN4$B"e7H(PX7n('M X!hOMzE hܲ( >p5sllIUovq suyDN cX7mpn'BuJbaN,RB" M!av1AʴEhI$҆U(lBk z$y[dfװZ'U!aD\ȷ;x86cQId#w$GS1#&!kV(ONghBe5ODj‰Z&1tg"S0ox%C nAA }gF{(Ǡ`cX Ly+)JY]. Ը'^oe:zhZZƓˣ%  УGQ2,`Qo%c4$yBТBБ਄$E"!R΂]-.*wcSO"cn`G\W_GstO]J6&LJkDGƷKİJ42%Ȧpu_Otq)aM1#c)6#e-Pǁa eLEY'~#Y}ț:H? ).&{`DpKBB$! ttA(cnRQmV\dey3Ăhz^G܄Z(HIBUŻo} 2(dI `Ӓ3d(2SN1F8ҞQ 7Au_e xwІ+ﰉњo#ѽcN}| o61UKq:cZ$ԯ1$8cj4G.=PЙ&3[E(B ϊR"r$-} eК"Ꙗ4*kz 0+~isS GȩDǰbY{8: sNm=CN@o!!1g0H.`h`ic\C8,'"LCbX 2z"xg7? F7.t P[EL45 qbб_¬dsIhS`cH#ɻ)D5073g$Kċb j!'AdA}luweJsYM䲟7#Y)r5Qb.k#Aw|= 5l)$6`|ѡ11UDIDHv8"Хfjar`U=$%i?8/ fӣ6 dx4t D[cqdwL7,6-vuF:an# v`4&Z"U'K5c͠{Lc_'1,nLzǑ8!#%"sQ1Ⱦfy%݄жȑ5㳎wh5[!*`ъhlT Qh_ TCCm1q1~r{t.UcHF,RB< Ш2+&2"YEH0Q-U1c)D[֙)Jda &ǘ hQo:p<{ޙH;YN|*Ȩ׬#1Ѷ_6K︇&$|v O%$'GvE ;dHHw%MHJxK? KV9(Bk]'HZKZ;ڱDe©q6gS/G\i962n=wEaذVZT2-l$;Z;oG1*FOT^ ظOEHu_ʲS[17:G HX"*YN)kd=LHٗ"Zf\"mK[ /RC'kz6eD0"D4NMp) KEaxp[(0 [Pp5'C5D&C'!(&%.F6Inz~35wQZwUc 2che6J%7IBHƙGЂD#'Q&M'sC1#ԺgXM^7$7=cVy{ *LH?)6 "/xIeH !*BVH^]_O9K_J}nC|[ ;Pi!7)ֲc_ҬH802>߾jjs7Qvn11j[xD`j{,6D:2wOdߩQ{.~Ί#^DdυJ6K>Ե,e> 7yȔ YD!C5JJ,k{Ƿ?q &,F&- %FsBoO(MIV5E,S߁Ͷ $UvzP , (Ixi|("?a %xb$%НyǐW!  Q ڋnmN ̈Kqm>d`ȝ7 EOtE1/*J 0؎_&);-ƊUϐ7Ȱ'k=/[uOq+܂9[!hz!.? #(.2+!1AQaq` 0?"j4'>xK.,Qo"#_7`'n,DncY*$1Cx0U9vj94"d[L|2xі,Z_Xd p!FCs n`Bn"J?toZy:P0Ҡ<`2ijQ]t9ޮ-D>Q$v5<իԄ{TRo;:R,Lik23eu`w%QT-df7wg5H[Qs8Sɞ`ާ @ U0:y=A}İ}R·_(X%UtJVZ?F8̹S9i2!Mm,GTw- #0q3mUzQUm &!>1ќ p/d9OjBZU,Gjesİ͹kCY@lol]~bx8ѯɨ5r?gq?uA+*)nfs f,NIx/<Dl˧.e#rDi>ȹL#7X_-]KNE-4PNo~ Rʬ5`Ⱦ]2UH`3|]DBXMb*N4pIQji(C% oX[r݂ܔ_ o+"Ox{`7BEtqPe=m^%nXYΒ@#Kh`i=#26oi 9w^ epU0͎*(}"鰻-MScҞ+s&뿈i{:^%zFGu4D[>,ǿ1(O3L空WqF7b w^_Sf۲h U`Q[ EqbĔC. YU潢K q^HZbY礵gf%2*\%HU}! :/-̵J6;f ybFRan$|Ge1uVTmA YVz_W1 έ^52]lկd4 3^NP:4aU[ϘjS{:atBUAc1P`YA,hk } Za7+L/n5Eo8s,Wfv}!gq-ג<ҕwGg+/+i b:*IAE.qjbگq_mkupq qk^ iecN,/p>f84{滗ԝ0.W5\]9 <Ǹ-K,V[UB^[qf\TC+uUղl9q;&‹֘]}q` ܆bTAuД5BPڵvqߤ qeMzU_[FTB&2d2%j "4Sq3[9n!Tz ߽p Ay)߬60ӀfAVĚi!3R i^?V$o5 chBz S.J\>1]5u"UʳG2$pգg Wqmg]Qs~ 1`:׼EfӮz5E)u" p{Gγ2Ր[2)Ul`Z9S\7_Htj Ln^ҜHWrb5S *"*OV3K߉]gU`Ƴ/Ds!.K:Xe # --X3"Û2V5ljW~AK2B$w҉KbuD~EA,Xhe]- MSm0-Q1GbdDkZ+u@xuu2<Ȥc7Yhh]P:2}cb' `sIyre",UKǘFZQx:^?.bUplwև=Ȱy^k)@:,h=3 p#h>EP8XDݶMJoU>gs/.pvr5Kmg6#cDT(\y_l7FXh_k^^[0YWfZ֖TƵPEb)MEW3+TP+L3pr\lOͱĻSϬE!4}φtb8{x̚+@@lIJ&^O \" 0 bb#,9SO"ox6)# G'(ծ w`Z Mvnrh8M#y m]5IZ׬̬6Vߛh] -uH_Wϭ:IzVL,mr ,M5u˃ w1Wf]~5e81jѠ):ǝt 8Zw?Z+jKe\e]~B ! 2(ynj 91F{`^J5YA_/^*1UyC[FXywYŷ}HWX7u/6Hг?y@<~0C0c;eZ{kj jYa7F#p0e5':<7E6E6aW׍ÌtWS:Umj3k7X˩x,1ږyB5T/1G)곿1^ Xjyi.UE,fDvD(: Y ywD 6˾.%vOdab_)qftsb(t22ɉF[CqU|@)Ux0Kf|`%=5^Mo1j9. ]AM8 nGnaS+b-7V!M.WK1IVVfC 䫸†SL Ԫgh|JXcoi}e/eiij)ECbG,umT3̹hqBo>Cb fKs#᲋^-?^eCK7oTy)KPZ~siW-пU\89x,͖/Y|t}pys':Y8}# -fuX6Bt_lCَ׈R[=Q)UoYUoYy@VN!`ҫ1P5łF %<׹@ـsu*UX7w.^Wl^cINߞmYC-S)iy&n?Z0$t}4⟙s0;4a"]Pn^&mCY]:׈*l P4^ynFUR~R~P)Ŋx@kuizij1PλC0i?@L-N(Q&k''?g-|Z^52zΥFjYTmoq9+(s/l,,K\c T0~O'#X!aSCͷv/GX6_jx|]9"P@߱ADBr?:4k3͜@ʺ˚b (,:dpQGaKy;e#U t*6cD* 6e6>žnh,J7 QoR;.vNF6sS *sKCU-X!ax&3vb,FyWYBʾl:e0br6sv@Jxi~IY@zv.YTE\gteT~H; er0wEMgpl1bVP,.WCf#^@K14*\~kl悫)Gx"p,bTn*G +I7Lf ~&05y}LXVHFkx;tLYe^ UJ[orVEp@%Dx9x"/M`|JrU[t~etU(087Xܲ`ox+e+F*-ψݏ( kFbJ+b|?0X2.1M0٘%gx_̡qf9,՚tc`jQو^!ghhs5*5\Ěf *W" :5b}eo3(%u]T9)*Pv\U }ksZf*_FU5akWٓ߸*kaQVu, /t?Fe@}K˜'+S* 4hf1["cuuu+FK]ojX 6q0rc87|;EQW\yj'= At.rZk)4o j!ȜX5Yxn}iDEl `ڋص`寿ٴq7p ~,fcg-BEjvg:hw"NzALֿ%#QfQY_|/ noF.T9%'pLv|P s䈏VṵvץfSOr%(^ȇ.?: [[b) `c$;Q,\2j,h}(ڧKh]}?3r syhAϰ903`)[/xe']HwWYq"i;o!sgB kU9ӨQOYY7Ƶ 9[8N!Ǽk_֞_S Ŕkp=f?I5cwX-=va@Qom?2dQγ[6:#5.Gڀy ׈R[ ^|bń%|(~fJG+(֎u$%c+^ွeL/*fhZyuEr.VOԍOE诬/C 愾(f w T;oC^i'L/*5ur SC]Rb qFyqL[u_~eBW-#t6KR%([]L >Н@u]EvR*()8a c9V?1@Js]ecBQ+( dc k1p t1S X95~.J+W-0.Rs/kġ;u~?|N.t$O02A:_zu]@E/hMx݃fFX-qfYT`ۚ 09E"rDN֢%9:_@ReyU\g8kPbǙVWf[eMs<#"cy^3xv-cƺ`Fk/HSn-mی#х ZM׾(@y|Ky50Ƶ|@KH(=Zh-fJҶ^V(}5ǁj ׳Oq0G9UCM_E]]Mj*m7WhU]ȴ]D:O7pX9OAC5pjIy#3w^qqk̴qv\fy~_1X_fjK9oM7GPo+BlV|9xzg2f Gԍf7Noe3`k>$]4u b4Z9~ܥĔuawi{`E=D\~q,TV|*pPCTE1chAXG*}}]o}8~3BA}>aš ɕtulA+wW(bStSLGsy /BښIW_>#]^TXFiP.oħ km50\Y29J*Xb,8jrqhcI*Bsw=Z B5};l7dfy,CK1ƒԵ.GNfƻt<:8R 4S2ZĠ&\P꛳ w 3uʵ=0G e̼YըFK twj&DjhEU\}#B207vR\=\F T<: \#4z9T+%u>`J%B(յ=,ӷ}JCAқA#ic\;Sֳ(ٛ QPiUf4 %ypJE"#^ck%ݏ**<wE~O|L{AkUjI^UZǞ - =kra0!&Typ6.:+ʳFMS.]tMIWF+c ]AtkZDR\!hhH[2V~_J4ߍ|( &_hjb‡׸6j4DDZ`")Zɏo^a,|~jLSy'?P;L!dk_MBG Oya}Uc9!0W!ւ`G6 dwk-^)S_슍cxȔ1̺C,[ +@.r[;U@.@97jcPlHC*![KdC6$ 9" wѩMe&Vi6 7HxD7q&-ȳYtD4),3 p׎,a& ڮZ3\3` ɞ3*joX>(,:j +V{BZ!"|[2?{^,U\٨tz" + 0.ܺ;d|;4{ei|ŃzǏ0X;AN.&)nٖbkmFZ,#@q 4]5!Jۮa f5_ _Pz5!ߌ{ Qv?$HjPߚO > 0E^F1hrN"{bBC^NUb{^ʿC~~9?VĦ>䟬H8e9 wXCчM D~.ePEcavmr55r?x0%qw{l ^v}aG8eQ*/!?,X>rߝnr~9Q\J'A=fY{CUMA(,1DAf媆~=dQf4~(d}G<L8uasN!O{X l9fqm Kêӫ}kV=rdͦ1t:8 "SJ!W:8VPƾ[ܪaRc\_A{}e {\b z),q~<y)+p@Lˤq X%T=:.mZ֟e(fh){ a}@߯+ "lɕK^]A3KWwrR WD+чܿ.n-ҏkrkN{XZLbYk5kp|,1O03uQKN %U1J9IW\Eo5isUEK@I˘7ĆJ_@Ǘ+?`M%45R9e7 AMs^! sUr]ʯT[tFUHZE%( "=u1<̂޼X~}aE |A y |K\"Vʗ%mC2]j7I)A\dJ*[oι=ವGfIU|!>9u^ M]]w;[u(Uu}2A qk5iFMAVI7ߘ5Mf,~e c0uK6BuzR%KUA mِέɀ.􍕳8b aM J]r@_'IQ?CX9 )]?;LI7jP.[2c Auzqf+o31Yo Ъ~eAyiј3r/^9LKvTNː.ͦo]d*U> T |Yʷx?ҍDM\:ju~ysh85}e6qڞE4q1MV:մxV5keW4QVR^_IqP[;V7üѷS E3/G9K(a!6dF5CQCyŐq@Ar+fk@f2~Pnݭ6"-~@2z&#Z% ?Y̸7Z3#~'>!QX`85WL/Y]rp5Ǭ7=^?}Fa֡N _(kVޮ;vw "1Z FnجTZ)8,{u*ᆁU8 s1tU׈iGe0=>X h+Fֵ囃\}s n";g^qy3vKU=Zw8W|^tV6]UA)/+$quϴ5y>4pVۓC04`W1U9))U}TJv-ڛq̶KeBM* w^qPEL\FsWX2J*~ 8! %Cr+ܿ-ro2keCbW#3SLᎼ3U`S c|`ķ>qΨL Whn F]uUtbdzU1=e b*}";6#6流[_n-~J 3}PDp\f!Uo;Ms5n+Uo+@.U:mg~Xl!-0ʙ_>e'XpGS[p(y7 U٨vU5;w+KéS&KB~}%D1,gT] +ej B4@k4SS*86djm^-Ko_y&K41 =Ji-YuZ.[AΛQ0}Ql:X5"U1_~2>b(˯-+b}cПІ?niLކJjUK R}cS\24Oa'6@df*1,YUvh1' tzϼ$k/Rʨ;ʸ'YsJYѩ/e}J?M[nV46fo涎?sZ]Nf~u.42/eSā6j ߯k"WU&~ee `= vn]FT85e[ .a 1`|k2n(MrŊh{V ysġeAa7s@\5tEms1Zbnu 4o.\8ya}%@9obkGtvlȂOqzƜAQN ]ox\y)FS:O:kexG-Z; Krq)ѻ:l1N!aFCZ.c 8  eZAĢ_DE0>no ݾ<;]J) {˿Q@Ͼ ])%MSe%|XE8_ sʿU*kϏ[&*|;⮠c|@l2wmLF)\$ rfdTjdy2Br3~uMj*!bYW2[qGiH -^YMTBUΥmx&薮ej(( ,N-XxR"ZK,|]%sss9xc Ѽ\5ޠW~7ḫ&𔂀{c[,Zh]D": z?sAbvkW>$]h]})~nT;af*uV\k6jqJsUƯx>7+0 &qPoD*ɐxQ U_D)mUOUYx[u}{^U lž @r ?\0 m1UUxR9hNG`Z3, } /bd\Y?VMf=^xwlUTqh _nFμnkrs1WĪϽĶ,l{L@VelebbSr0:7W|e6(E#f\Vm 0q5}fCvx71u_1%wV8.aty{>jwB+귢|EQs )ka4Q\^KER8cZ8wKڂ::q($j0 ՛"/TU 섮3{pfб{Af\}A NKs+ħ O%iT8=8Q" o,- 'k״lp. |zo4{41Uks!G.xRe@`kXEzCәvCf¼1-"|)iN_Ah06ZcQ X2Cc<@P"]]{C%u34d<P *3ݐ匇[mkֆcţu@ '5nޭ]A@[mOUEAFnL)pΧ_rg&Xhku.E quZ^魐*M_/"M G[ALݐjKaF&Si ҾbqRiK }~WvVtỈȶ;=GvT5 *˜U9eJ?VkB>am]{!md-P‹-̶i[4yk/7wwakT*VfJj6=R "7_4*i | ϭ+E[5G͎UC'{ /Td{m̪,3i yfytw5bjqa\y @6׼zPuESoD;Fh7"i+-Bs)seWqo u B:x i _aE`OA`C bsGLY~.cdsԠ.}@k-q*8Ė-W ^j,~8|,fOA\i3 gQe+e7s@O5q3':+׵a V7W">2zcµ) stv!^m g[rn7ҡݨFI+E&,hD*jq:€|Ir[]@VDOCXNÓQ]U3$N>MѺ+Q!f4 ٭FXamŚdz=KnJj-8 WH%=v C(PdY.wF[^w3hVRP hB_H %NYX V-5XUo( Wy<=\̰<|n'Xߒ0 wf:G׊xg /@qa0B!W<~,7:줣Z ݿ}FM7szV}].ME{?52`Υ4't/Pn^9k;ZA>V_4*PV>1q}ԳA(.)ǫW*][hk^jCj/+ |O WKS38r*Ϙb ;FJFrQ"P^֪\"&;sq|sJl~3LЀ -22 w9c4Wkna87 dh?5ȉoR좓:kGs˅xKE歯Q1y6} cئ@-B`'︸<(-x^XŅe\{ Lf\>`"[TJ:st]I xܪT4_{Äk+rޥnU5(2{f0 [⦠/}!FM;VH\A)`x/`ƥ* 3š ,:\[36Jd)(p`~MeO[b*Էbd \\j33yX:j=m(p g]ޟYt;Ug~щ5%FJ>*^jH b8@jQe6 o{ zP:ZaJL6~l( 2ѷ 0QR7QS̥HV :͘#Mu wz.#V1,֫֠\1k8Sl7ߏH9uNqD4|[Td15 Rrܼm\M' 6N)sbM|1kh~0>.e6}`3˃w wJYuu]`L3Da0_{>aFQX9x x H+<'_SߟxhCQT\ B8Qe~k=MgSq_ZXlO]?2wDkq,bU,/IC]\āDŞ 34<@.BY2/fK k޽%Kl oMc('##mAUXq\Naު\6nPCa\eJA#ǖy?3Ij~!w 4?ttdsGX!}7p'5W<]dz!!{F`_{j͟xRw-Ʊg\1з褠CxuFaXDoh&"ΆYMy.똻ƳxRp%1zcX4K-6W@)o!R=T,8L(KoSmݎ> D5 vˆ4 Vbcl89pƷM@ʪhrcB;E>wg&y~(c%j/`65m9xj@fË>\⁳A!D9!6)(y7n ~x'-5uS`1v?XaU(ޠkz9\AZ ~hΥ;aًn(ɮUyqPr7O8'0%*Kb#Ma=A~ R!ӧH ߗڗ)sL`ט SgpGy Wh/~ILig̵MUJK9b2 qppQ+q kcu@cxuuyYg0; RޮK]X0rt_Tz6dxEMn.Uk';,j6) qKڢA8m%e&S/ +~eߵńaȊ!Ji@[,A; —Q7VGɞWsiaB B>Tw C|g_,9G,0V :ѝFXb5"P0~&?,GE_p'W.Vƌ[}yMG^<:kZ.ܮT'yc7Ks|B/0( oX.bݣH;j"AùziS⸀^ W/ޯXUdz+U+{ ߮?1j q© %#_*NhbQt -F{8@UY޻ \N Y٫廂-1/"IJ~UOxߴGcL#an-ͷZ+ynMNA el20n=}% Y7wO$!_@}.(?NA?Zp q Ix*bsqLL/>ұ.K"*qqDq#eid wU[Vƣ5֢%zED sQ+[\ MS#WQ q W]LuqPB+B^?5r1*<r',cn&q,T|[H9/v_AKfVv;ZG6Y}7o8~am'_i[Xk'0f>.XCESNbЮ]-auC%,x q.Q)ʗűՊ,^_B.  HkCG~/׼NUG>Ǭ}u bh_B s u?`c s|?c014n I|;5C"<)&r.xs6#P2/8p l諩F ck5\}-JFE\zƣl,L|<}eUy6P. {eu}zؚܻ(>o>fk=}!rs7JKmkw zC&54T?Q/ S_3;P U}9}j]}=j݁B5!Fo]Fヷp7=nEP#>ҒGZ6zx3 Mw_0YmL.\^fkV&t/Q/:npt󹊫A >#a׉Qi.)qSvii!>Lƥ-W<&pG<ÑGUuI03~U`CwFvl`ᣮw1|GO2v( E/ }NWX!JUihth= \o0$%|+јV@MS-i.NvZlS* \kљLfF?. ;>Y>ߵ20yD%oK]TW,w:TҳHl4#ܵK׈Vu`ʮ!!H@/D(T[Y&rg6#]ѯ0x!ui#*d>,DVFƿ 3Y\:E! b0v|ńWu[3@Mب|0D:r˙YcpPԦZj%RVֽKk[گ7E\ǜV^&v`OxiU*x,WæP]W'Np9Hi`d)_ar] 0>#p4VU9VۯffV==b=|_͵=.^vTdoC[qW[iq J߈v;1?cZR,YHPEYr7BLc3KkOF[J“%Ρ[|j}TiN7԰0m8x* ʯڦLwlS%5Իq}U UE3UʭW|pDAx+甔]&L]+LpZ.G1F]cUv(|X>Po ~̞\?'DpU>f K^>clV0&`U8ψ:y'TFr-10\zUvxؿxˌ垯*@&so~a!It*U I R;b_ J9)Ur+webn=\񊸻P9Shbe>-f>2#URT _iktgyb kBF|1μK;q.CZdɈ0)~bU^—[=6Hٓ O . a3eU9݀`o{#ː}^ R @Ⱦ}]ƫ.؁K8VǟHj؊ \_1aMeqsgüljiĸZ+I+<5Ge*{෽@-%Z pSAϴ*E3UU'C%~ۖ CmrףF*b ,(K/]?_°p@}>DniW*0!7V)L\%}.i|BZniv֌|tGOi ;ߓtN. yھ&N25+й%Tİ݊ܪiZ-~_a&pe>-*`[|ݯ%ڽ?DJN\#1{9JPڈ:5p/S:I:6n]+qǎbRؔ5q<r-FPO2VT'~$͹0mCVqS1=Bہ+으 #9l"wd#C.52-ɿIQYhh`UGB@mq1,خke6/ B%ÐFdQ۴]aap>ێfVT{jo4bWJuK[Ej Q L@ Wle ~ӑ5(n+#>jˢYQ` LAn_wqGn}.7 'aq)ù`x+6EG~x7O4{MGCx16Jd=ٿ{o(z+d߻S! @yR-g`}*^ :PPDiW/g?WWv~4\8CCC].{`֥hLkpr^V'S\{#q*XX.Ձk/c\zLIƔ}cUU㒥JW^~'PKNĸ25* VoK uL*+l? tV}zK7}5x F#+/fWv1?_S'C(Zmeׂ7|Nw?1"3ybاϨN=;/l-DFD%&}vCw]x>`% |^T.%-%n&\B.9ZuN {d-׳ !r(<˄᜷^T!CjPXc18-,ES7u(nPŗ\A|gdIJSXz=0[DRgv^71\^.eq]qΧQ ^ 64AͶy!XdkO>+f1; x.DA؉N3m.[?[UECHNW?;!QKCɖ ҵ3&L#؀]Q)1w(pFŹU&|@T>]ِ]BkD%d5ybE[{oIXxyȶ *Pv h0Xܣ>!z~%7*w˩Ql!,Wy=O; ᨠRN:7X 㘙*1/1VrĊU:ԩ l-8aun]JmPu2;wPN+UX./ZX0H, Z;ꮘ9\A-X&m%aCkI2/<j26..j=Y\&\Kkx{,1̯p@凔L}O?FX-9/>sZhuؘm5վcݨ,BTf\XVj{ACmׯǿh@Ģ9OJ\4(]K֥NELUsAzC gh_ }WP¼yklSҜzE]Qa4;8O/B#TJˀ*TZߞ%F\JT\nQA1)E̼qCUOZ-t|׈CN+q 4orPפ-} k|BNl*Bב6 &5w^0Rltu@ScbᲓM׳a5X!v~*_QS]]Xq2^l(D㝫Gp}Ka6gqxKXxhqG [Q(-spt)pܸ {[~;3\9i2DQixEYFsJPGf'ƍ R2Xh%L bArAVԻ.Pg6ԸXX8WtD]8fPE@!g'5r6)q'").aZR쯬)'aP\`d{3.dm7e1< @[n+mţO Vw\/ .j- %Ó̦x x9c*_0ܫJUs0 ]0 #'YFQ2>+UMwߥD:V"Oo2>dڅj({S(&5 C> r]LفIv+]lZ0ZB TOTwƦcuňRukm9,:}2»wI°M%SKe[C-]Cqx1}2d?0?ͯΰd?o0K9ŧܪJ1<:CcB]na7eb[rߵ Y~U6uo>[&;)O "Qݷ`n܉ WnCLB`.YnXsuS> n %QcҲmSZ6A9Z_{ |{BD]^ t. oԠax,9~xecᡭʊcNɯOX{ 3iz7;5Dqh׉,~ȥ%`5-,ģ7xW(x&pֿyhú>}bQn_/]@}ܽp\&~))Ϳ곗/Y X вY.q/cYh2o5)V~ qrW{ T|@ญqdܦoL`k.pAE\)}޾cʍ̼*yOXf3l9 m Rڀ4^OPFL@%fm t1PXd!+'Z]u(/KXX?wfY`e Cq^a(Œ2eŊndR1J-^YD(о3UI`]ޠ D*+(לCUx0> *nj]^s0Ykx/vыjiwQ5~"ז[6$:9Pw,O>yyR+)AWo^ Vlc<4?XE шle|BֵʄWpzśj# oT1NK v_l2,bp%UTeln~(uUgxYwKk%BRּ0K~ckaqj;2=n-~`"BZ&FrE*UdՖNP -؄ZFl7mq 0S̤VhYJƸU!~%p3 U1uZM}<ō5u0T+Xu'{52gp;KU?;=ڸn/XUaI bDkYKbw =y=&x>UϤ8k~VaJy9ن2 ١ yr|;*:K1͹+|;^[ڼCIxOR<'ouG8 8aeYSkPN( geaT &}%7^ QDhZq|>`"A-Ak?K }ܪU/VJTq*v  ^@E -b0]GU G, u`l?oMua@ -=&/ObXI.EG(X$8~48~(qģQԣĩ_wusbrelay-1.0/usbrelay.1000066400000000000000000000015011423137311400151040ustar00rootroot00000000000000.TH "usbrelay" 1 "24 Jan 2022" "usbrelay" .SH NAME usbrelay \- control or query USB HID relays .SH SYNOPSIS .B usbrelay [OPTION...] [ACTION...] .SH DESCRIPTION .B usbrelay allows for querying and setting the state of USB HID electrical relays. If no ACTION is passed, the state of all relays is printed to stdout. RELID_N=[0|1] sets the N-th relay on module RELID to off or on. Multiple actions can be performed with one command eg: usbrelay REL0A_1=0 REL0A_2=1 REL0B_2=0... The Relay module ID can be changed on DCTTECH relays: RELID_0=NEWID sets the relay RELID to NEWID .SH OPTIONS .TP .BR \-d ", " \-\-debug Produce debugging output .TP .BR \-q ", " \-\-quiet Suppress output .TP .BR \-? ", " \-\-help Print the help menu .TP .BR \-\-usage Print a usage description .TP .BR \-V ", " \-\-version Print the program version usbrelay-1.0/usbrelay.c000066400000000000000000000162531423137311400152000ustar00rootroot00000000000000/* usbrelay: Control USB HID connected electrical relay modules Copyright (C) 2014 Darryl Bond Library version Copyright (C) 2019 Sean Mollet This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include #include "libusbrelay.h" #include "usbrelay.h" #include "gitversion.h" #define MIN(a, b) ((a) < (b) ? (a) : (b)) static void argp_print_version(FILE *stream, struct argp_state *state) { fprintf(stream, "libusbrelay: %s\nusbrelay: %s\n", libusbrelay_version(), GITVERSION); } void (*argp_program_version_hook)(FILE *stream, struct argp_state *state) = argp_print_version; const char *argp_program_bug_address = "https://github.com/darrylb123/usbrelay/issues"; /* Program documentation. */ static char doc[] = "Control or query USB HID relays." /* This part of the documentation comes after the options */ "\vWithout ACTION, the actual state of all relays is printed to stdout.\n" "ACTION can be one of:\n" "RELID_N=[0|1] to switch the N-th relay off or on\n" "RELID_0=NEWID to change relay ID\n" ; /* A description of the arguments we accept. */ static char args_doc[] = "[ACTION...]"; /* The options we understand. */ static struct argp_option options[] = { {"debug", 'd', 0, 0, "Produce debugging output" }, {"quiet", 'q', 0, 0, "Be quiet" }, {"export-id",'e', "DEV", 0, "Print relay ID of the given DEV (/dev/hidrawXX) in udev-compatible format" }, { 0 } }; /* Used by ‘main’ to communicate with ‘parse_opt’. */ struct arguments { int debug; int verbose; char *export_id; /* "/dev/hidrawXX" or NULL */ }; /* Parse a single option. */ static error_t parse_opt (int key, char *arg, struct argp_state *state) { /* Get the ‘input’ argument from ‘argp_parse’, which we know is a pointer to our arguments structure. */ struct arguments *args = state->input; switch (key) { case 'd': args->debug = 1; break; case 'e': args->export_id = arg; break; case 'q': args->verbose = 0; break; case ARGP_KEY_NO_ARGS: break; default: return ARGP_ERR_UNKNOWN; } return 0; } /* Our argp parser. */ static struct argp argp = { options, parse_opt, args_doc, doc }; int main(int argc, char *argv[]) { struct relay *relays = 0; int i; int exit_code = 0; struct arguments args = { .debug = 0, .export_id = NULL, .verbose = 1, }; /* Parse our arguments; every option seen by ‘parse_opt’ will be reflected in ‘args’. */ argp_parse (&argp, argc, argv, 0, &optind, &args); /* allocate the memory for all the relays */ if ((argc - optind) >= 1) { relays = calloc(argc - optind + 1, sizeof(struct relay)); /* Yeah, I know. Not using the first member */ /* relays is zero-initialized */ } /* loop through the command line and grab the relay details */ for (i = 0 ; i < (argc - optind); i++) { char *arg = argv[i + optind]; struct relay *relay = &relays[i]; char *underscore = strchr(arg, '_'); char *second_underscore = strrchr(arg, '_'); /* Search from end of string too. Should be only one _ or = */ char *equal_sign = strchr(arg, '='); char *second_equals = strrchr(arg, '='); if (!underscore || !equal_sign || (underscore > equal_sign) || (equal_sign != second_equals) || (underscore != second_underscore)){ /* e.g. ASDFG=QWERT_1 */ fprintf(stderr, "Invalid relay specification: %s\n", argv[i + optind]); exit(1); } size_t size; if (underscore) size = underscore - arg; else if (equal_sign) size = equal_sign - arg; else size = strlen(arg); relay->this_serial = malloc(size + 1); strncpy(relay->this_serial, arg, size); relay->this_serial[size] = 0; /* Parse relay number */ if (underscore) relay->relay_num = atoi(underscore + 1); if (equal_sign) { if (relay->relay_num == 0) { /* command to change the serial - remaining token is the new serial */ strncpy(relay->new_serial, equal_sign + 1, sizeof(relay->new_serial) - 1); relay->new_serial[sizeof(relay->new_serial) -1] = 0; } else { if (atoi(equal_sign + 1)) { relays[i].state = CMD_ON; } else { relays[i].state = CMD_OFF; } } } if (args.debug) { fprintf(stderr, "Orig: %s, Serial: %s, Relay: %d State: %x\n", arg, relay->this_serial, relay->relay_num, relay->state); relay->found = 0; } } // Warn if library is different version if( strcmp(libusbrelay_version(),GITVERSION)) { fprintf(stderr, "Warning: Version difference\nlibusbrelay: %s\nusbrelay: %s\n", libusbrelay_version(), GITVERSION); } //Locate and identify attached relay boards if(args.debug) fprintf(stderr, "libusbrelay: %s\nusbrelay: %s\n", libusbrelay_version(), GITVERSION); enumerate_relay_boards(getenv("USBID"), args.verbose, args.debug); if (args.export_id) { relay_board *relay = find_board(args.export_id, args.debug); if (!relay) { fprintf(stderr, "relay '%s' not found\n", args.export_id); exit(1); } printf("ID_SERIAL=%s\n", relay->serial); return 0; } /* loop through the supplied command line and try to match the serial */ for (i = 0; i < (argc - optind); i++) { if (args.debug ) { fprintf(stderr, "main() arg %d Serial: %s, Relay: %d State: %x \n", i,relays[i].this_serial, relays[i].relay_num, relays[i].state); } relay_board *board = find_board(relays[i].this_serial, args.debug ); if (board) { if (args.debug == 2) fprintf(stderr, "%d HID Serial: %s ", i, board->serial); if (relays[i].relay_num == 0) { if (!relays[i].new_serial[0]) { fprintf(stderr, "\n \n New serial can't be empty!\n"); } else { fprintf(stderr, "Setting new serial\n"); set_serial(board->serial, relays[i].new_serial,args.debug); } } else { if (args.debug) fprintf(stderr, "main() operate: %s, Relay: %d State: %x\n", relays[i].this_serial, relays[i].relay_num, relays[i].state); if (operate_relay(relays[i].this_serial, relays[i].relay_num,relays[i].state,args.debug) < 0) exit_code++; relays[i].found = 1; } } } shutdown(); for (i = 1; i < (argc - optind); i++) { if (args.debug) fprintf(stderr,"Serial: %s, Relay: %d State: %x ", relays[i].this_serial, relays[i].relay_num, relays[i].state); if (relays[i].found) { if (args.debug) fprintf(stderr, "--- Found\n"); } else { if (args.debug) fprintf(stderr, "--- Not Found\n"); exit_code++; } } if (relays) { for (i = 0; i < (argc - optind) ; i++) { free(relays[i].this_serial); } free(relays); } exit(exit_code); } usbrelay-1.0/usbrelay.h000066400000000000000000000016241423137311400152010ustar00rootroot00000000000000/* usbrelay: Control USB HID connected electrical relay modules Copyright (C) 2014 Darryl Bond This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* usbrelay.h */ struct relay { char *this_serial; unsigned char relay_num; unsigned char state; int found; char new_serial[10]; }; usbrelay-1.0/usbrelay.jpg000066400000000000000000012233021423137311400155320ustar00rootroot00000000000000JFIFExifII*    (1iSAMSUNGGT-I9300THHShotwell 0.15.1"'P0220   &  .|b6 0100   ! d$ d% 0100 @P ZKZDFI02R980100 http://ns.adobe.com/xap/1.0/ C     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?=qӭb͞.Ĕry?S]$ڠ I1V$`̛%{`C*G\*nڟ\'9'i|+4*܌U"lsac M:89'R1Bg=j#+ 1ɂ~]sڞ$iʼdN/(\H[{wRhH3A6#N''M4}1I,>;\B*P{y77t@pT:g ny@&s ajD!XABHҚA\ SjYAg t8F0y9M1Dro?ʅF#v8"X;FIhHZS<*; 'sSϩ-iǡ G@vH JZaq 9*=:Ұ$*="M֞y'Kr /uI'8 Ubz@U/OX)-ǿz6m sEkF~\(9qʀJ8拈EH)6T,s53|*8 c8w o\Ÿca׌SB|Mzz,sH za⤍I086p{FNzP!74IpaO3# O 7pNA0}AT`0ʎ@84(nӎ;ʥݷϡ ;c >.s6+rOAOBD֞2sޣ!p=yi&2ܳ AVǵ*sLdj2J>_NzҒ yEQץ=JUϱ@_ZjȜvO|?'ʮG$j@*s*MM Ah )G~^89O?/WB[vxdR}3i#wǮy*c"c>Xgc' bN;v4pO'P$SV}ˏZz#p9R) &rz{RJ,p>8s@,`usԜ1TN=h.|GsRg*r}jhsigT̓)nc]) ~ Pq'8 zT;u%`g9Kʝ5 HՔ4-F,7zh1RQcv23Ґn =Di4A1j{%,7mS@qg>H9zv,&vJV,1g<QҤW#0.IQJ#j~ (}(T.N#`OjS&ÂqAMqa* '(cҞ#+QڥLnʌL}$c!A==qQmiBR3~ +9ҜKm3H̬sQpGqހJX@р1ށ+ ixi6;@3d ?)I$cjp*ųu^)GNFg@\]vGzPǥ52r)A*s@q);qJE$<N@"0Jb%gwZzn8!ZașLs$JTFpsM9; R0ޗfps@(OԤc =$QfO֛vrGjx0<ҕxp1R!/'SClc#O" t4(&Tn=G=14"g?SOqHUzSm'>1qlG> v̹#!x5"``( c7` ;-œc028A\CA>3sE+`>'ңrB BA䩥ND 7 '=K")eQޕBGN+  : (5&ۃ(MFF}~aE~UnAN; qTܤZq-J#n3ޤwGE!}i8'& )zzR,#i#R*9֗: ȧP9#ija#ր$*Ft<}iwZ~l Tvt"nRKƁ`i+Da94s siBsKrQ svyvܮ:EW;RI4(b2@!XSW,G4H$ސ|憌(r2> ֑BsOPؚ@Q=9 ?*_G$J3Ӂi*?iPN~L, G94[.>_pcv``9l)s@ʼn7)9HYphAN?PW6ޛi8#X#ɩ6o}j<Ҁps@q=jEn'DC ЂOzRwj`"RGGj06P y4q'p1N 8☤Z."D]Ċ7y3 4Eexy4^搨,1i0RXF+T9#!RNH #a1/ JsBX`p0qz9*NR)( B(e})1NG;L1Nd$g?1=FF#5#>T@=n44F }(*\g8*8uI%˚ׁRڑ6!Q1ҤU ӂ:tT(VT9, _Z|lޔ\RnB2=O1RJ`13'{R{Sq(@;3NV |>Ɣ0zSg8cw8qRcj أԁI֔NsBBfAQR g( 9$gQI94݌ n.vHS&A zQ NgE9A PAn3Zpe8n\ P!*WzGJxHS E_> ;q@Pdm&y<Ԧ&A 3\`/ir?HNG9yN\*+1OҞθLYڕFPh8S"sҢw{R8CL=? lcPJ3(֓ag1?Ҕ#q ))ξ[4痢9РlϠ.ncӾ䍽96)Ua Y [p9=HHp=7Pr9]C !@Qޥdү3zx# J P0wt=orF֛zfG2y;oˌnD~;Twi@gq!{`'zT뎽&o"E?Grçi N9*0Tޔ9Ӱua(Jݻ֍[I;~ W+. Q֜Kz"#ݞ@^ [{S+*}zTv@\Rp zq=iZ5-%[m?1Nt=XcTF2{fHG\w+rx_O#z,#;`U1r5"l" 3ڞF (esFfch@܃<{ӣ>d /9iD2sLzR,`A{U ztJ#ښ b6z{H 1-B[%W>Q3db'4q.qߵ( <9Hy+P;AsHG7OFE&mAL'kpz5e,0m}Ih^0=\ ;QZs{"zx'xDdkMjK7~uÿVZ]0 #9JQܸՌ:;XqRFtQF2FN1Rlz;>`OCIZn֞9 sFHxJ>$qX2F1C)<{Sduʑ$Ӛ2:r v3nr:$ڧ8N8z֕#Xq=e!RWԞs?ʁ`NA=)HÎ:Ҷ ~\P#R!^Im\sSSjIm=N''ڕ> h_mGϏsHx43HEH9AySnCg8c#EEI1@9C!\q }#R4pׯ!\ 8O97d` C{0 *L2?FU(H(G󧃟849$ @ `z\/4ณ҂7+p=0R.ivf##Ҍhe@W,BFzԁ{Tas(pCRFHy~zSW#c/4 dfgT.x(`)\;u)3Ɵ4q8\S5TpRGZFg=84PF=i+F@4s"Z i耱<=N c2#{ӂy)p}h4dh 3d8g43*q֔ Q֟ױ& `GӔaHсrS>BXvNyPdҟׁG4WZVic^F}(d ۥ \`)11Z>(ql')NIpi1ŐyVnrq@ylq͓ǁzjà p:Rh149Ir aG10<s+F@?xU#NT9I4,dyPS@ctPK/^yP0p9Q!@HaJh'4r4VBŁZQ4HFOݸHS*284;u-{F-ל0 3ǽ8=9c ڀQ~r4'vR{Ԇ0x#'9?J.>@rIEg8H 4H@yzVv9ҜK@BOjFPX n5*၎POv!z7}h-bs(lT>l!R$9lJTĠPOh Is֜A)vyjI*A8${RW~IS㎴;K rGcJ 43G' #>#`^pCcbcp#<¤ x R_AO-@&l$>_z,}I<4c–ϽL d)Zv_J * #<BIOP;A( '<5)b#xNdNXwr}o+.2ǡ4qNu)(4F2Fs":¸;*0=iߖaqЊ|prOQng8iۀ^G=)+QraQǠAy8'wACQl.Jc'g"a2郟JQN;=i>Ur8T'@I(zgJ ͓ ҁHL({OZ.5zyoUYnv@?gָ-Sw.0FXd.h!E1Z'3=Y$S+nhJYPv<}8XwH/G~-6W&in|{^m>$BBY7P%qY-h$!"}[?idnܨIs|S=B\n_7AAN?(V8ovd=tXWWh W=Ѻ̿`a}雟˚ƹEJ|VM a"2x3Ke1y~/Հ>'B8L(F}V${pq5pdKRas~W7w-5ΫGF=e*зS{cWAei 9] Yw0-G P#ی֤G=elFp+od;+JALB^)6pjdnKv:*.T`sީ @JLy g5|2"^*.\G] k.O8⮶60'\`Κri_9CʑzԈ y4i,n}ɐxx)G9sxSzwCC9&y:4h8G3Ni*S~ހ (b\2@*.*8bۀyơւI\z^1LUǨzx)ZzqJ@b8z҆brG͚C890+T p9>aך(5QqPrCsJrA4㌟Z6cc\`:S@`F8Mi(A zRr?r33}{P#s*eM*@ϸ.7_JiE,2i(l zDp;ҒIS\/Bs@ P}s֚c8 c\`){҈s@4ȧ <(=Fxg?J1'zS lv5*# q@\ҘTOPjB$u47~8.Fw*bTW4.qS iJi)%1ޞͰ5c*]E LRpn63 m'P) w3Dg9#/Em#߁9p `sHN: 2.mXaL͈0V^n(Pr=z,F#;DZNl|rOaL\$xdJ|{S R$S rۦia S@;SI rNN1R5 r1) JF*=H=V \u+`R[u@>2t:eg"O@6D}3mޞ9 )v884e{SL"bs!!Tu=8NR\s)_"N1xj-8Jdtd,t@b+" SqYXJvlk۶c5|iw XK9>:)/̧o'x|f}émi G动>"+E9}UBoU\ۦI"Q r8+mU G%`sjtۋ_Z$̠auGxC j9yFOż-̥A_2o2٧qBx f/{Awd/g?b~ѷ,^EyyHc֐=+eS'] nl2sqs|[$}~yaPTn‚vӹ{VAt2u|ܓZUa2ؓ}iϕkuJ+'ԍBdaҌmKsqEO#Zӑʩ*hmI=SZn35Z=i<5{yI$4XW8 \hLÑS٫MxNZ*O_ ә0ŏ@EuvYxf^geCہ3^ݙUJ)on6O"_~uXG{x-NկɮO..1ǘqqv HP|黽1"&mnt`TsYR˨O$9<7*8ϷMBHi($mO>k} w2X)8Li:VFa 5Ap2j!!8n Zc CcQrZy9FWyYY.p1֎X8&d8\T2f@ݏƧ5U^.rz癬YM?Z1;HI>Q F؆ǎ|I.C7duh%VGJv=mN.>(.:dn;*[jⵎN{S=$~49?9ozV68dy#a\{\P>4/8OAޜ,q֋o5;H7n l;"H!NOwA`M 9H (e@0rMF ^zQ'LA6; Qdx) NS e xG݀x47g=)U3&d6a94) E9PsGy4 6G_ƜF9M(L{Sع=(ӗݍB| x\iA.q@ N5V)ѶqNu'9'EzqD,08+~dz(B35S88> #@ Pzc"R`lm!GsLy"OZhBI3P ٸq rSE?zяҀ>Az(M91r[<;vҜzhaps'uZLʞT0daiT=9+ BN n t&\U'>@TjU]oJU'9lmq)Xa1HF;4H\ ԀaI)N=qJ۵!?|=}(d/(lӄ{M g=h߼p3N *gJEp;FHN$R'^/or;'OJjԙx}(NGi~Ч`#sh(k)SfzQ QwvN8\ɒݸi )Ip fہ=BNU#(IvKaA8jK$XHIbT@v-RG'w\ta)9'K ShPA<\=j$ ?695#{)\Zܼs<8Y*X,#]n'?ZTOVYA9lvE`$uI^>3Mbrzݨ,p1\b*t pn(׷z{JG8& q Hc`:g9$hy1LvK߃Rڣ\A9i@m) aw9G׭H#8jd ) QsJ`JhRG_z~94/12 cRT@FINX֨VJw`JQ*r{мXGw* iW;CqH8#)Y,~S@XXAww/aޕNcNv@>p}Mu# !tG '}G}M"/Z (;kHF.IJg å|,&2͞YI"@WDp}ًv=PʶE'r0!jɸ5jg^bͿzv6qA< zVd.0Pf+^1eLjv?3\}jE# 9Jaf׶񃙤 ִGFgR &uDfeעx~gB䟚U 7VvKXiV*O9StS8>S,k"We伎kTl*-n?X[6ֽl߉VIdsgRrKg=ht+ [S#&@ӧ^o hzdžEq6$W3Kl^ u0h5?GsTT:(Lq&>WVn.rȧh]v^xĿ0k HD*-Vh#ΡHcI ܏ΦYm,A)rI=sHe_xCo zHkrOk'Opk7a&Ljob]b7)Y}ͳ,DܒtxmoW#jiNPQN<-<'T_L7>x?*Y$|>=sZj6.n:G]\;6PbdSs7X.noyk$L_a{ԗn'v[ H2jiiڍ<8~#mm"-"iH"-)'}+OYfN_]Xa1)U؄đT cSHܤӟ¡ Q=V*SH5{t>bKsUrIAH9$$ :@40 CÕ?B g;Z;8)-p*X*?*F81QRL1ig9*G; zRy`ڀ޴9=RҀ! *MXG=vGҘ00vORP{匌Sn<KPR7/PH4D Hv+?CK݃ 7q@)'Tॆ{Pădҩ,=9JS*9A9#=Fs?0#(ѷhpr g4N~cN:R\QaؤsJ6`A)6Pr㩧`#S#i-K֛=J"`֜ ӥۣhz_ۃ?m_ߐG rHܸ8.WSMoSUGD-Zm! s2_¿>Agem{njtyIKBS9{;H?SYˡ()X ?ǯd|ai$ь{h5| B5yN0Co *jb烑Y:)W=Qg@Ƭh^=}*Xbrzq#>SRiAO ҉FT9x!HR9i3zD ɴ X{ 3҆bO'cք*O S =iW8wV6b2T@tH{*PTNy19 pZlCR`O_j@w9;Z+-PgAfV+TWl*Kp  zR1,㌃JiHd2q<מ0ԐNyNŧF$篽9}qJ8HC>2FiE sK`O*TӊljdzNށ a⑎0cE[ CX2\~UKXcy9Eك ۉ5ߴànduNz~Uq;xuMFmRN{Q`Gi 9F^8[CϜWh[իrlHX?/ kkW[h jR呃3ܚ4͹eyWMnдh8JYZtZ&{hc?1>?,BʂI9۳~ជi8`d#۟涭7[) CA&ũ/%e[|Ҥ\]AHo5ުCS 1FNYg\;)ig sj_X|v"V7pS$]ܗ`>$rM 3JtPc9s4WO2Ix2` -MʄP5V:||F5J*$@Vs-~\GdRnҩ^մxImRmb2 ;´f->9Z0J6`oZx/RnaidkoS \?x9kfs UMU$;4o PTI5[XnA{f=]JAo'9PpNF*<ޞAUa>/y/%~;j 7\Мepaf ߅R^Q3E75?뚲]Awn;F8>w9?zvnN"8n*E@h5>n0r);ց(zS\dB$r xbsUlD7U`y})E*?Obn3h,P}(bK|tB)ݒ4.9Ͻ&72r8␇m!I .ritA\ޝmVFq\nonsEa/# ܎ا,2M;Ss ܌3N;~j1y`A9vv$D 123R4_%0aJG#Jc䜜zP"L1yzpN7?f֘ *3Żo={ӂU/ qZ S;c$捜u:OҤ, 0@N )O4c84 '81_ "NzҌ8ϥ%wqzSK6b}1Jc !8$bpkM dqHq4isƦQ#gN~5jq ;uKi|;bе?2O;2+=zT2 gU9i M6H 港|~%yIy sP[[v=9[ 6f._)j_ڒݼs^m➱x'\H‚['9>'Lp$},ϒOcβuoh ڦiͫ_o&czq k)ϦA*H󡺕wĹ=5>QZnbz^o mzk/~Qwɡ>0&68'9+ i! ,`8nq`w^EAjuw*@vWM ~fSP4/Hcf rnN9+׾8JW+ż?^IMc*> IxTϨ\Si.g'?SL=-c+Iq߽) >nqXأDc $}sUqH$L%9ڢRȡ"}8GqJ$0VR#ނQ`MHT(1Ě.w d_]9n#jzXeDo0}N?:{:P g#_BψO/' *YQyEtAݟ7G_ tZ~JE' *0IȮ|R)GzS 4 (l1֐c@۽ 8)#l6jdjn*Nz}(ݓ8zwU)d}L*6Ah3n#$=qR1)2 :1UGR _hsHOpH v9>$b"Q>u@ȄI TT.>oc@O890(Ǫn \RFx>& v*F1O A iJTzH+ Z{y\#hy*1d'UƴJGAȩ#;9ݞ5qn@-2"rǏrJzclsŽ.7:DeSЃLW8SNTR(9HOL2=&؀4I$ƒ}Ěp>sd܏Kw8 {PRb?xsNn{S:3ށXuiqu@{U+4؆2<Ү6'$qzRscQ\:c'QõfRs( ȔpiU#P`y@.1LS%UjE*NiK;s@ z'J*p$~ozvOvÀ4+{hmZ6s` qElryI怛ތnzBk p:_,xrx}#mSҽ_C5Ѷ\ݑ,N1mD #:MuPg5GedHhJrQU4BWΓ y>I FqZ}*mb'ϐ!bw&Ena@[n N9\&VVi|M.S>mKu4lh"d䁷Qn>;V Y6SЖyVLi.~o*xđ-dnEנ0|'q˓ #אƵ5܀;:V$ yiGvzD\M qoƲԺEŇ>C)vHcCwp!Mķ@G@Rx/[5}f7HrG^ |3n ezlg/u+٩jy1ByU, Kh^ߕ{7R}M47_N­yq@P,gy#GʹVe%?5.rA$+^'$T/\zOʾ s29y";e: ?+#Ҫ<ޘ6NA`j; 88zUxM ,d4('(Bi~6J@CNn};S1'5*( &p($HѰn4 t)I#})Bp9(t9"%՝i1}k#fqcl0uiB` 5u JEl ֛qSPs֑FOLTޜH֟g8n4\V,^] uD< ;R;+Ӛ^ ?6E!>SҚךrd=i6ϭ r9(`sz lP+ I849' gJo~iY#Zs(T wvpG;߻ޘ\R ϧ58#zrLRhA8ȩ mgz uX*cr@ճu<Ю#cTˁO6I"1R^쓏A@my=jDҚJ~'hb@֋UTa4`v 'U*y8ϭ0b\H0p4^Hڞ0֍a6bT*@=Мuw%E G'41 ҚA-q]dަF zwd;TE,Npi l9Hd921Ҧ8˞;< S gOSJb!)[vJ Nn(."V\`(4ʞHxCweqy#3+ tR-#7u/CBGa6Af;XYz5߿41`OAYehH(@WF:4& f[XĈ] jbA"]?J}2VQt_M.dtv>ѷ'(7sڸ~(iH]]BG:~+ 7;38z:=15H"4< nk08vFCSOu5f9w6sG(h FMVwBrۿ\N]kWsw!o$qk+=U-TP1S^;d@Siߥ8dXE gچ4F xUs26ڤzK MylR'b60266t5!xgԬFֻ@ C^moŻw$n?1}Ҹ緂i2'wa!>^J[îX$S#M*3jnNzr:ԣRٷ6z $,A>,19}~\R)=0AqX!8ۓsLźbdБ۞qp91޽=9V: ~lZQѸRƉ@F^ b[I<9{s#~P}A=@FqvքͻF^+q:ϔ>6*'H[#9'bcPD-d,  5N }kϖj*`]q#*@H7|tC#O1iH-<ҬdZhcP;q;Ws*@d=)DjyGaA#V<zR'.p9⑂@\|c u&.s=ʼ`zbݪD3a?i\| V ϥJZf9O\>Ѕ@d҈6s)v;й΀ A8I)Y `@s)PÃ;#j6>Hu4FG48:rzNQBO h@ wX.;~4 ÑJ`}1M f2G@qBQ<x߱rI>i|*;ƌ?QJG?UBRi8v LXrO SѿH|w i]0  8N3P8 T}it4310 O `B2x  J̊ҐaO^/[_xITn+j|ӏl#٢zywO$5In͡?,}eY+USs it넚̬uzk&-e 4vVnQ l2^@}l_ rygMCsoiye_wچ;SV)qp̤3U!E5#[r>m/[u½=Z}gRGJMY[|_|W s+o985 w}kq'OSOcZOP5;Vկ9G;'bᚬXSLxSjP 6ЌWN~> @B>=C2NMG3fܩt&8I#E;o-!g$=WR*%(] _|/[G$a)O,sAS?ʼnB#=*% }kѧxd3b琽kݼӒ V|xaH,5ei ؍{mk&{8E=->QҘN}6a:PTF0r94 pr)wL =iC|z(~qޤς;fITqWzbL#߇c}1 fbWEA?ξ~Ovb6?cbUܜ]4Ϛ~{z8@˜<;Sq|9C,aO'Nlg ƅ?N='84l`R3ޤ46!XndR$D|%9$R4~ߵ :CrMn#IHSz)YJn#8@X]OҐ\M.HɡU@X)o(Me>)| b9ۅ!R8[JE@5&mv) 4?w@N7aDAc|g(p=:vTx4C*}i2n<ڝ9Dp(*`=sHWbn{ԥLf#"`rFO,jQA<9r3=UA99$*A94 A$Ie8  Rur X{S?o # NxO*9G#i<݆={⚇sc8%`8Ojfg֗*0XKyJi^*6GN1Q ݐX Ν'1F=JXGANw>Jzs֘C ݀c, `zT8GnEH;@mCKm_$p}i<ʝd#GLi#SrE"$dw4hF9ϥ1,)Tt&8'FьHN(IɤcJ!vj (ހDb`px4@823AHE#O240F4ƁLI8&f5źӯO_P&WX񞂾S%g;AppZ(Gz2[T"0㚖0d d֣{P:fA#͔.bY\e,sY d]Լ-hE}na8J ~ґ:{D bĽ>wSBjm8pk5A${T$5g`2W5\%[<ɥz;Loî+ZMnqZ|5]=ah8(ʁ5:AٖzXMv/ҫV*F,p}hR0=>r Rm#'=:担I9)8WsiK8+‘ЋBm*M@[_hG O:Z|<ǘ}׬jZudq1ģ9SKv>v++6pOK-[K$NFJÜWi'=;f12}E9`JAcqJW FqL8F!L{ЁAzӀފ{f2J=P(@;1dHwAҐ1@HPm& jr)|+sB}ۦ"A#P;j׭Mfg| |^2䰒GX៥p͒j'(#=7Pn ,{Uu"_8thwex9s4:v9VCº)Qw?+_ As;yַN6IN ˹j/ /:#GBzJ76%pA[?FȡOEG*xd#YߎFiľKo9!ciKPU$ 3jڅddb9!Y~4xWl!n߆?L@rqZHOqdku2>`1k4kq>$>nzG-,VÜh4Q2,g=Es(m:&C2۷ 0xR];-k4I0F+X/ʼnMRh czB|TȸN9C")q'ێI6`6(꼓֥VJISQOp)`=Gw/{v_?j-x0,GZsF }Oϓ>ןVQNW qL+hiT0<-?; U`iK=iˀz@Igj>]Va⁎*FcH2  zR1ӓLV j~~`@HۑripRuJi7m$z zf7W9"F@9ibJyMb2* RcaTք׏‘ ;S2W(¼J;1BܞrIcוRcJ4((B)Ni n')y  f-i >1# (^3$8-;k|.@#5&܂H2A1߾(*g=6}Ѩ*7i̧׊D j m9JU=)gqJ(3 Ҧ _sLb ZRpQ8o~ǥ8G4m:J d]qJF{S H$pG>5Ա[mǾ(Tm(9i R3aP8a>xII7ڽU,CܧO^ &4_㨩"!ێ_h)[ȧ m+~2Fkad)ϱm%OԲIprN1_".xcN䕒yLW~5Af;Ku\csYG\05Z(ɞ+\ ٙŒb{߁.J~, I_y'k=[ZK7LO͊>d ;㕷H'Y gYZW# ~ھ#-=.<|]JdkST{w'yt;icğ.S5 b0AҸmBywڃigp'@=kRO =* BH a)ʠ 8 gvt+-?4;0@a=)K_J.2bp?Jz@zzLSHW$G_,ibo䋔ޚp[HY?*0(&I G=8BqTRJCr3NG,?l8<}:۫ŹXPN Q3Z sެYIJ U*jƞ޵pv:D-Kkd.:q{A{x3)?t%ӯ[.zߔ#S%`7m*9n*̥Ra?ڟJ4] LK!Pqt~G-QP5eL Z\_~xe ;90fIW󎿅}oF6eoC'++8l!S Q3sCǡ~G"Y(}vs?ǃ-l DkWm0i$@P/^}wt5-n-:1g |Y]iz{YFc =HpgxfWeF+ =hG;<ā5stmjVtw(a#ܡI]}^GkC/"313|J̡X}B[YMrN{&ϕG"g{8$h EA!䃞?{oLg*0qJš03)bI8!}hH83898hႌGZ9'9gzEDxՂr[n9HyQS\sTza'KVڃg5̰P S?J1I= #f -n<Tq]TϘ̢.\gpFj¦Fq}MD?Pj](5S@*;S (ǭ+ a ҂H9֜Urx 9ÂG >6<0;R!ǧN2{@(98^jZ<* b pH< s l@ %r@Iݦ>P-DRYv=`;JnP23Le*qɠ_r{Ҝ#{`H#"@u(SFncBx$9*Hs ~P3DSy=Iw,rAy>Ԏ_OPy$2YANq@ `ZxnI0=0q8$MXmRY69鬄dc@y=w `.{a,p9Oe-3@(A^HHqZ1#p@lq@ `u>3Ot"Nӄl`l 2yzz&OLvuw=, #J_/#(WܞGO"19Icإp)BA@$j6d5$uZH.Bcͷ(vwM(L @Ax.rrzsҀ\v>~pD.jE_݃O@I5 t@qJVe ޜ=), *O$zTrdd|I; `I$`@ *ʹ:Y QOqtxP!7dtHvL(\hC~Jx-4*15.01րqNAޞys4\gZis5o1#b<ʶPĖ<=zoZ i,y3\MWl 2Osץ CJڣeq#?X{2!ƣk֍p֣-OX/.LKvwHN2 e;xi>.Q8)gn ЊUjͧ5ۖ2Sh5IQu6vydtz5_BDg|HwI9 >S?S4Π@,@ 5踆PnD>~G ctҜ(AYK-[QVTWW|UXL(v8^D vɫǍɷj>pGE6POFsǷOA37 $ cHzw[xߖxu Ĺ9zRj*)S>'0JN<5/1KR"d@£s *S`7d>ƣwgiLW{-Am㰹Yc%. .2Zf֣-q#'ZL:o4HdH595hG riqN{Wb {ҴH`:oxj=Ri`-`\N +\*7#3p&c+;yG}j{߉6Q|yGR>?Zv`Ph}P:*O5ari’:s.侻\'YtsˎҎF=lh8o#YY@ WN>e qUYY$j=Øi 9VxƉ[K $qIG\g.8!F=MOڟ֭@9mghY#`H+⦱5I6xH+.9'ߥ7DܵjuHj2K"c+*&P:Ҫ ApyLf2M;^Ҙ19zsLd&iU6Sv^۱LV6g8 (נg8G?~:H=9Oc@qc+ k.ӕzR*3{ҘO'<Qa1G@JRi˅a;8sK=iy#8+ʧ1+Pa~jXh|ڀ Nў$KQg(-A^`@sSހ=^ yTe<1 WWA6 5M>(|aQi~ࡼ!R7l $i)8Qⷎ>/xzX%xGáΥ}:&̠Ҹgw;U}*F_ e522^#;!/ϥ^RqxQ1؀+?jZ Ԡs[D k e搰XʴOF cw\ߊT1fDS$"3OaJ:]\.2hHgu:ރV }A * c#CBr䌵99nsR_j>p)Xc$Ƀ**2{M LR[>ԍD51`Ls0qdۜg3M&WңgA0zzԿ>~yn~nG(xPgZ[~ҬI?uH\=.:LLpjEo{J>lS9riQbJ`!]s BˑCp-0DsҥF >l Q{ d0*sv$R0-M1`oi2diRojBzT BzУ&˂sH#lٜqHZrsփ~iBޜ9!'@=zT7(^) |$Fn+iM! a܌{R*IgJzNOJV|Y|Rݾ_Zv{R0aKfGIO<憌RĞ#qLZsHVzS'Ќ0 #2ßIP *Bǥ pOm \aĄcS"h4NgQ8=M<)k0)8=[9ѰHA— @* #a'K>[qIe>\*Ac±![-[[Z^8 V?kLڥJF={N¹G_)~eL&w_ٺ},R,'2S|% m˹;@Ó޺M'ZFK'qNiXW)}Mծnc,G;+ ᆝo%(\tMY¾b0 T7wV4W $2 !ǃUf^3k*p}si4WL):~"Gh7`_fh!O\UX,,m&\ ˗9; [~6V.\=#Ncj<=Mj@8Y楳Լe?޸I +4?x[MXaIc$+4|$UcұqdsxI@XcTIuۉ-(Z3>x<ֻδKj%Z+SS+o }V 8(l;ߕWi,iu}pULPRq[ x~`LSyI5NaϏvGPsź2(R{?J{AoTє57?#ev8IJ䲎-v6x'X[š:vB4rHdwF$cSFa _ V$OP>;R`RFhM p b$;m=3K?8FxbY021@GҜ矖ik4r,mƯi%k[igT:QpHzz ڟ,^LpTZ1 ec  컟ϥFIzרi ss(q :kR6J`p`9zA,zT00HV gӵ&4ar~<>CXzMXTK" s>o;Wk|PFkSb&5vx2֜A-AJpp 4ӂ+"LM6%ÅSa:zTv1CHv(.}igR6HeBrOjBܟf cL Ғ[Č(f4fL=)AX:t]CjYAr iq^Gsk;R.5ΣmkA^]m F\9e__|=qo9uI#&O=sFIֵ/z7x?2rۛ&?5!Gċ}278S>%[YEߊo?Xrx_P^\^:J[N$|7Mif|hg>4[G/W;Jps#${s_?R%\}zٌ\mIH{V+Y QFf Msƿ>"A}s85Mem>-B@PComF݇*4.~ZM2$3^Õ^T}Wu\l+7`Gk; ݦo֤5EsX`Ƞ)9 ь)~\F$ւ݇z7o7u@):jD L jdQГS4L}zPZ1i"XJ(8Fc'>yE`{Ԙ9΀^AB v}В0Gns֯EA$sȪ1%su 3\[e2W=2Y؄;_a[T#__mTm @rkNxwF!7W'ip_3FVk?Z}5){޸I&L7vΖs!4 z ٷTri |9={e.坛|V(m@p*Mi9M$M>a׵Y¶{Tǡ~3hd!//9#4ՐN*.ɰ$ɨe┃HTgޥ"sHq8v:]#Gam-rNnB}Km$OMʳ+.1vZ';{V0ʠ>*ߌ''`[د|. @59s( q==i>H &ڬ. 1.ߗ>/ K dcx]/{Nm$ p˒(,q>u]y8߇:ս!pE7NRh~{)b5ڦ&{VKɍ R)$r xe- m,JOKiEޫL l*C ;O$ĩly|{ ;ú3j2o߆JK<ᄹٺ| {ӹ6[[մ^ +l O$cǯ@M^18_>&E|qǿJw4Ӧ`ll6AwMnI9?J9Jb2IpSޖC1TaQn,nr}eQڀԓBz{Ju>Uπy]=?q;FG֗2hy77g0h]Q+/U>'O(٦J+ ~As+ˮjyzNQ;A*?*o?uh>qkR3Q"G .?IԀԼegA;hl>OJn5,=kmCWյ}gbY!a?xNjt:c}O~A+yBss)`_$jߵEJWGlt3ÊPqk7^] +s5?3uX#$`=>-6P'M׊ɎE K Wq*>GZRb`!ٛS&ɔiSZk%Q%Kq )d-iWJKؠ2Voj[R!9stjj8ha7Bi 9PvEаa Dܜ+zo^M8Zxfzgykqr|%K(c\MYM%L1ƴI[SʯUwŕaojѡ+z.# 1TXbM8Ո-"9yҺO}#*4 &&.^8݀ҾE~ ;M?\rmźߊ5Ya IRo2(|0`wizTՒB䟥9O<xA `H{s1jH2ǏjQ#UXlS#EL*}0 )@gNJ- $*d` ZPq5fldAryKQ&}}hLp*|tZ֋"crXl`d*ðI<j,.rv$ dMR3׎I^1M'#L0{ӣ2r d4@`Y 9ȥV3?PMDž4TjB *HNĎ8ǭCԊ;Raqs;үnybeݷgN+ǭB2@t_J Z %:=0[Spw_G-/ >m33 +9+8U픶7ېC쭸wO_j@Ox[ԉ2jP#=HQVvҘf$Z4E[UyQ޳->V׆ǙYZHlz4徹<)n-<5[<¶F1oC CD¾#8?gm=Gˊc^( ep:Ҟ@#NZZb$eyKr;SsvxaN474 FRy{pQE ԛ 9@ AO;>Q-KP h R!SCzsHcH …8}\3H`(<=)@GNh$N=iQlt[fcڝ-( tA,HJ')1RqOG rxS[,0zF2,Lʒzq JG==)\ncXv>D@*8I2#Ea"oOqNҔ'بR{S XǮi"G.ۏwTILRxF}iplpI>NJwPq}) _ Pdi⭴/"~Bi(1{zPU ?B =U\':|P+br#SCyҞJwS@c NrxT&ܭ 9#3,+/9P9DE|r@1EațRr b]K'`$1>0R2)Qz Ҁ*T`~lEwR™W`)W=@S'9# X0iJNgw  s)R0P0wޞϯN'KIidd\48O%o*.ol#CDr;ר~~&kG*Tq#zyP9ҽLÚ2N <; -8)Rg}HԳyc=)hIu[Iu#i%$2kF-ntS,e(8n=yַ5o_Mks8T5WLj5KkXP 33<ӄxBI5A폅t),Rrw1] 43SK<j#kmt;3Ƒ  OqqqKp)5oz-׈u+k l ]]ֿ;Zf:*t o,pwԬ 󦰞8 bd]Mz_4@^+*+  zQzF÷B3ڋM&-P+ Vt'׆o!yQ5WlYZ8,-c w?&oe͆'g`lZ t; ?M[swgI|Nn+\|+ɸ;t7ÿ۳=bHّbM3G lbF ,3~(ܷ^DImHSN^ !Y!_©痗 ޞԫM2<֔!y5 ,l&2#:|_uPPJPcA H stZ{Oܘ;pO(H=֮oVU`#0vq-G]bMu!<3V=C/G; 4@dMO^\w.I\[Ys.i=[xA9q%" [NUPu V,` yyN nI}΃((ս]14y\`+B>exZOܿT!Tx ҹ#$G"fo*{`^'[f7ys={d_#+r#1ZgI~\3ֻ+O]Dɨ.2hN cB@_K&F[&ѵ[)zcUwE:8h=HRFHNYv?OQ1R~R  PIbxQޢ Y@>pIgDI!q Oד94ֳe=i`4}` >ކoX7SҜ$x*GbES֞_'Yw/ja cHdo\y#TB0F)B4 p1ǰi>RGOZ2]>٤tUD`)VRg;J ;W!A= t˩TmOZ🋤iBJ7=SV7'8.>+v+(.aʁʓ29WZWT[%$ ; =\߅9Ti0rOk [±E4+[h~~4",f` 9Qrx+>ĺ~5`=]K⧍[W7+ N+f&{<ֳubfgۚOhVm~)&␍\f[Z,. WʑB@*P;u#8ugޡ(+!seGT jd7vlx#62v!97XJQmj07exمg_Zm׃>=/`mJ`eFyU^|AY{M{@m?+kXMYHB-EߴvaixԆI1{u5!;؝m#P$G㌏μ'̌QG$8{"u+)4%bG1 Y{}9jY|Bg_n^69*3, s!Yn$$֭ȆM8ҋ S\fEaT.zTd{ak«`M$ FKVs]NJ>x/@u r{K͵IFLN^{ ̋03z55O +ڴQ]O.&M&ϓI(Я?Y]Pvګ$Y'tiѩ>} '8ޣ IjQğ#MV9eޤBɸ )Y ?+TxMܖ7`aV20{{֦پݨʖ?vRd@Ę©٭:M؞ޫm2j xWMPۚ?5'RO0v=IH9G\FGl2?yq&}޺h?emVYu kO쑼0޴WpN\|FzrOXǙ3U=3P},"ձh..W^ KlӕPSm^ [[y&ip[Wd LmH"$TOEF^ k J(~_.2jVq[4]CSՕĠ+9*)nS pp(@{lYJc*TEJ-&1e#$uxjsM I!O1Wւݙ bC) ?%3DLdG4\Y##zΎV'Z vDbC${ UXkvpG-v9ٌa-x9$?VoތtTSYɛK4~H;4 pIpkl'|25j,oGD/KJ)bOP rA sXz vjGsV_H~m 9by>Է>/-Zٯ80@1 P+EYUdM=-qq5'*%;q )PSf\҆␮.HޣeM& ;y4=hXi@Jƀmd#Mc4`py4ݧ![<n2qS1* 19w `jmGH2HdC8)TE>l}4+?H-׽P*=i@;I#cMPy&OZPx?Z@295"qӭ1I$SX`EZvAcT09JM OVng }E!pҾ$aY>#bUz9A C(/+ÿ^Ցsq͆a?~|2x*5]tGIPcc_j\ mx\Go SRI`A ĖX?Yy[ I$OnoFz1Mi PQtF{WÚ=U$7а հ║޻`>?Շ#0rsOP[#psK"T,8sR#U9*E,oJ=; cT9oCޤd8f KGqA ݐ2Gjlzc@[9s5Aq pI y3O 'Ft(&H# ,CLU!9Ji.3U.VeT;Xr@?Z# dS?:qԷc9B7:}Wn)7R*cM?r,؛[IL{u U-BB#sЊPA F[$5ҳwzcyE{ A$xN55᫯jQY we[Zjo6dg89$Mķ:.yi._|8 ¾ѯ鯇a6,IRbFZե 7J,YkV+ú6:%t0c =㰲Ɏ!q^9Ѽ1`HsǷދk4<!&U g[-?Sޓg(63As]~ GCI8 xWǞ#lȰe18 `3f 忇!uCEmGK?Xs+^Ynm 1 Xp܌{6@Ʒ4̿%q# (z>8z3i 8ҝ`u'&0G~Yw&Fqww^^.;KWUyei]%ګ@<VkඖYm3|EW)(Y$mse|=7{vra2O_+"? ][_1ytaGְuMBG[օ?hl P+D fcGWw'=kxEXD- jt_Wv\*%jr; aj8}=5Zcu{kY,N;rOBYxwRԭDYO]f[B5gsxZLմ?dk(`G~*?:o( %xXBᣏD+N_[/e ʯ,G\+3Ğ#|c߽PcT`튁h\ t5LJ'i94lp;ݖvP̈́GjF-W${S;l ?B)XI c4 .L$VҧE 0Sc"&'$Hx5;uYQmٝ[Y]ޟ8#iO ZMNN<^]dPR9cvWbd\ʁ_D鿲El.5i v\ִ| h%5Dǿ?U90Sj|R6z^rO\?ҽO JGO8?ֳ.k;IlۼԀ*}[om'bq7kS:3y~˾-Gb0湍OFcTMb ?W|@^#hxP0M?{%woٷFbOAnB~eW"RP8O`=Bߏ5[[ecQ9NG:#bχZu kkrt=6GqWE=:YiH`}(x:5K1kv(1,;"ܾB=܋A J:Ԃ@g zx4i1@ª6{(-C M:tF$zL8/spw5svXy^aNqZιaI֗o\:yDq /8p"~֯٧/foog'KfM\QqUWQbۭ; V$<&|5+ ]OwgG8V:ص[:ajSBM;*6z[1bՉ5MRW% Bhy0L8LsKS& f AץqUɧzu471v2QHr~DAn!͑)H3On7s@\ar)2*#q6J>q@*qOYG*D=x Fr8c&`֔T皲n+=R.}~oj1l uIҀhcIƒKbxX=($jEqH#);Ի`=)@=SO暸ǽ(b5@)8sH?!4&r^./?2PFב_pJ|#_|6Oş `{<[?(oS]0G4Ոv ?JɎEny Ug'>i[eN84Ah$EbsAB㞹ܑO?Zk+civcNSpx#R$j8J&>)#4]PSRJ"#)8>".$TzT*2UӂI !Hc)J\#oCZv-p@4\v3M [y+d:t2<ϥ~œ[ xS{tWXx)bJxn;{7Gjvπm?'>tljxUT Ң܍Hݸ.^JP60j$ڞHR + y.z6FrLz,h (b={~w:"gT6=)H$zW-MF3`<{)Ȅ6TtD zS70`i c<Ҕ* ؋)ݐ;Lj8 ҝn@ǵ8(`{SSxsPsL'1 SI+zGc'R1jiɧaXyPUG$v=fRr; Q%NIK1'zP0`gAMVmrzOZW `vAN$p1ڜH @HSv<5NF=i=M mRm OzfTqEK2=hcpN1A9 hXK =hp۵W.W9N(wdzAV11H*,u_4x[M[[5yp+%xgWׂEYd"&uҬtU-$uɮZ^Ǐ- ́V69j}2&O6QMuu 9[;z6#9]'P]w-ą +'ELR7!G:αtM`hZ]T!8ݰzr0N߄myqn5=rX@ȇ< ]xI_Zc$pq~^ -e8\]Oėq]7Y2_ , {i|Tq閰#Cӳ*@; ~٨뒭]\ȇv@Ʃ #b 1)jZ׆4K鵨-FIrq^ku{t8AW _f;OİȦc@z6P!'9wZ5.}q7,xP?-XN>,ZĮ2^"{۶&U=W4ox*qx.I?;ynxԯ$L5t2H n/>~]'z~ES̎,[:lRH&Ss9M^\\3kEײxV=RZpT;͸q `SqGur^1< s#zӲc>mP1UA88:_ ZQ\<2yNFk|94_UVˉ6dC*-#jAL(wb9>xĶ>[ /CIX3I(=ミjS3~U -ix QꮄH~>CLo[d)#;~†i繎Ñ8o -^-)Ƽ63}j%6bH"F*g!N95s槦[DD^aR.v W2Ȱ5JbflstZwlBRYd;ߓ^PɃ9| ~4gWǨYq|h΅Fiw:&+il&i>^|O-H|`sFjbl{._8\6O}&ZM;..$'p3k9 AA`ɫQ9> qɹqS13T$eD<U*[*:+gɳHd=H랦Ͽp6C+=&P[o ߭1ؒR+0ǥ9NPӐ@sOJH\uH9$Ϫŧd3 |mgTS"(Yg*ȭS㇍ Ea΀\WJ=0u"=ëh^79.XazWO$5g(.Ol揎 486~#+>5k^JrAmCR4|HRk> xW?i-my0]i$kKsHտh߈p5XCkR>;G/o쥪^,Ϋ3늞 |+lx,7ʀzq^ZN Xmh^BP*4j|9!e]FLrBNqτ@Cr\H~b –?q4LmW񞫵t7O==o|V-yZO޸MSYQe]Uğgkuc/YUHqh7%SϞl>|E=L@\08WckW:YAʏt_^X$1X\ơ/=[\\,gm'uvI6u1xwFMfۙA2O98ƹ5xkO9Ѵі;wWe$1tBIKAONƣ٦fSsAs[ :UnZ|7Ig o/98=3jSWSKwpQ ?&sГ#ukkw#Sƃ3K٣Vl {qYfFp2ZQxy%o2py>ds*yQ(&YkUXcjTn`U/+'^X%\9Ma^RMCk{ՉJL?ZY#fXҽw[V~d͞LkFNⴓjB!gu\mc2Wڸ 6My ȯ<)?LAD Zti2tEWr_q\%i(EoHQK}6)I>}++%!#ûkc"Oc߽\M1B1ƾkO7y<_"GU*9W/inHguk3G %UcP#'=q` (9 BHTیPDAO4Lӱn\ 7"@ ڑ4d4t#ڀ'>[z3QꅕV?1 84is&yqOa zUiqAZLE=F)plPO#.M ۽*NRۂ(O'v3@!iF ?74P a9TJU'"ҟ@ׯ4 }20F)pZWmu&Tg#'xd~D b}TǸ5>5c ٽOq,O.}0s_`DlzGKPp0⾹|h+ȑS8xȦyd94V RqLQp?:`# `Jb݌(^9`V\Q#s*=M.݌=+&ց  ֤(zW e(JUB= eW>"3p";##^1֦RedK1dzV.mL+ #8iHP']/;O<0DW'>v)A qNܥy8ЬG0=1M+`SpxaLdҝp@٫IǽBrEH6A)4. z"}zR:=3+J[&P 8`gRW.{п2ZyL&K`v `tz*mĜ{GcB(ldR{NͿn94@})Fx朄o&icj_,38(Hw x,Tӌ:/a9-G{- O.>E4>@<'@n zPSLwT`zFr8txdz o"N}}*@AsJ) OZ."991ϭ9p?XpAs/0iq'!󦲖qtP\IQ'c8ɳ<[㶥sO`lsDgL;hG7MAyR#^nXU~rrkϖCsLj4bFu !mokګ犎 LW`i:K*QHHPx=}CNׯk{YDq\qwZ>}͂# ȫ$8=H^j:n"!4]}kLDibw(-\Lp0$cC^jOE=5 >U<皛K({UqG\v</n=JDc{֏0^}WX K?Jwb=Ӭ|6" ra- Lxú;>f]~~ϩUB-;^G߄5v Ѥ^y cA}e?K8;0Ej۬ib3x98+&iKHawp=lRgq([Ĵg@щ B7Əhu 8Z7d{]_< > ,+"xA,m˾}I?rNK׭XL2=*v^Gw7-;eیJ#S}iQYNU^ H~~E:5Yd ŒMUykcEf yn-`ܑO2F8¾FIyQֽ#Oi:U0BsG.aqFv1 )Eᇭt']/ ӑF&CQۜ v$'Y ~&fKsa3hFegBLLa?`S V!\!9 ݮ񋋣\my(&/xYez|202=H,& &qzk˵=9Ɔ)灓CӟJPD 9S9Q6Na$hN:sH<#g5\̱ƻs_S^v&SWtg|fTZσ$LF=988r:l$zm+Kh#-WϠ[0|Ri# nPAFTmXRLp^hB=6j 6)~P:J#v?# Fu#Ɂ9tĜU1yPxxӚ3XqT@$qjb:w=|x{Öi}wՉO<wTةbc'FBT= ֽ 7?']'g C9. UcjJSKsGX#hg5 i\FsLӿdO kz#Wt׊KVmc}يMn<]pVGMT<9 `޺KKb+ɐ6-mdXK;q?Joۋϳj#l FyTpY+JυG>.398T:g[`ngx!̕!8>{׸ (m!Rº `qRQsm3[I]]{R]ppk٥Bdh*~y%a@%G,;} ^=;Ǿ.kJ`2?ϡLe 6 ҭ<@ωvykxݴd-$Uk5O_kyuZfhdO5O^׵xg^ 5RKk7/s*A1JqLouMbcڀS+CM.]Q[Jgvǵ}]]#+;H";3`g󚙿i/z+?F 9?RШ7> Ym,<q_jWmC Kz?Oʽ)}ï[i LyeLg"dU0^0}kV=.nSЀN94a*e*r{S1]AVUqft n M^Iڼ;ԏZ[Kk^I>jۜ??ֶMss >o \~+h yc㯈. *9YS:jҚ"y'J8f8מTr8qU"2lQҀ+4d984ғڀ9>ܚP23Pjx48| > @iT:sޜ߅F1Hv98&n9rYCpܘjqzdrhsy^RG\Ψ9 PsL0$F3Q4ʘzp}Y99i 8bAP)61խ1_+#q@S3RNOZk(\i|sҚ2x*~\ďU)\{ Z{qD74NH:RXLp?,|dƕA9񾜀d7}ilͿ 9flg9\lS d= `+t4?Jl[9{2OcFQDgq28Ks)i1N2kIPO#M<{軼M)pZѱ_^m ႟}{w 43m ,]<2̱F̢|QGe~0;{Uk?J\]OvW1ƭ{/ >k?uNrqJv-i p=P[`vue{?gTA"==O^mk N9=y_xx ( Ib{{ UX_] [+vFE80Wӵ>K+Vqe8hi>O]X%j熼iaxkk>M'`FfE\Oۏ[Mu$6ؒakcx[eI$C(V+-ʠ9d'Ch*#`_mƮ(}@:#.אF!8FsAzojk}FTֽBr9e.V=&EegjulH~esԞx6mvl]rDJýO<9 X`|{v.{ڼ_[#B%U䎿]ƛu igjjf;^u=ėRLDbƚB=Svw)iT>1yZ.k.L1ISOZ+oZ~6b0R$Vu-$ż)RHǿJz*] c@о-YX# ` [VMoB(&SCv9$RR/kWPjbJUY>NH[ m!Os_FsU E-{U8ch%;pG ". 0z搒srI Ҟxkq84/)ž`:P8.2MK) F{zE$”Zn|`ǥ? ÃBqIAS=F~PGzEqJ.1d8K|>Uڐ!ސ\#0p sP=B$gn Quf,}7jJCK9sNv Ȧp:T2})0=Y#IjhHF%1'֝B1 ҹ*htRi>$8l,ʼn~$%6S3uulı;v_!KI:׊:525GkԿl f+g0uEፎs;H-Y# (1 w4opJ<*Mn{3aݹ$w|' }jyQQ3Qï֚rG4o>TG;dUHlj> _4 AgqzB(D.zdS; /^8O|MtO>;8̒J[h_lxCZqsD #𮻪φچ y%ržgV=|z'b-7OJ[(,In%vOtY+ǵs96zӆȴ#%(OrsYTBZч%GZoS>[,HTVy\Pu>_~i҇~c!l]yqZ.N5J<~ ?3xTG,0J$wOY{I&<|w}O>E_$jbw eeNIbd.g|2>X. y gη f 6 ɯ~z_業͸tr8?cs@2²iB&/MpqQ{g.rA'SSvi,H_Z~V|6\HU_$K);nǮ+&B8qy =WM%sܱrWWM'I$GW`} ~>*%֫%,J<|Yt2Qڍ4ؠ:nSŞ,wHУ?N)zIc)@h`;ɦZBN;RuJюc4)TcIӊBChU'9Wa f2Iu9X!#IӣUv`UtݞqR&Hr( iJP}* >!=0ݩIFӜqL,,@0z޵RƠCOO=nIޞ0{jC֖asœ(aދQj@^"ȧ- 8PJCy+p(sJjRdB8 u41W=h^2&BUn#•Nރ5%Q{ңdz4@MFʄ@%R)# Y]kPs5|d#0R$m̃W~`1Hy><ψ|u`+"@E1e(Qm ZDN95짧0V(=s% bDV*;n&2sUjћAt0ZjHxm8qL+ O Pd#*GG.GqA$iqڧ!B)3i2֋zF(hšjzv$phR{zH =qRnԮ;Pi,&@afCaz. }-`F9z]ܳgƤW {VtF-ދ8s8)CMP?J$'޴m=zoz=)PhǞI<:T3L5>08=4ܢrH?S[CsK@ǥ$`2I>X.?i`Nz9;CdNO#Yy^{N)޽)(w֩Bl*`4m~tLOh"M@q SJDY ZtMҰ bjEU'=(t{dzcٹ4HQbn(L1a`2HH,&ᑞ 7rhd,9*hLV76?ZLRIANrM)<H# C`ڈRT4e`7E3rsֽ,F[:VYA8ւhQ#Jq߰55+&v66\^דxE犵-6[x߅:d'1YH ! ChX搕j#It˫[6v<W8[ir눌1Xh4kiF\b_<%%7S)}A9<~Br$4-jΩ뗆S$0nsN+b=Ѭm<_U[ ˎ?b%QV@*g5nwHM԰JR">Nu[V'Gт6\6U4@Kv,䷩%S!@Q:ǎ8T\qHg|ߕLfp Y-!l~ow,Q!=+=fļ2yfwaH nh%&{piSvc8a>aޔ8pW~:?^ur"8Ȯ36%K̆n%c׹~ȚE]pb0za_7k׵fpUVNXןmlf vC+IPf8/<?A?JLfmi1*5gRntkGM\`HZ @}EsX{  bdlJ@ןgk)$yQ"4dW۾'?؅)rMpn|mBy{yyNRH;vkϖBVIX'#R 2 ,Ь&J傾ޕ{$:wg?[4JsUT.W{K֣ ZHt>LR_J xGu?xI}0 |Fx"sB@i淢j+&bݧـ:?=H{͜ D~:FBl|}[$~F8?һ]Sǿ~7t5ImQj }A ~5|KT:ecY#ֺ{#U 3LKǿK-;m?G@dRzgt?`ռ{\ZB*Wp? *Sӥ #83Od8N8|ц g_ kf'3UjjRդPY520s>\W3 & ..2d<Հp3TuWF2^kxL1p)u8pF"3A/sF4qM, Q&s@sJ֙ךPs@4f` Fހ|FzUk&f'yȠm]Wp+ͼ JJp}!'ʁRpC@X7YrsJ׊$e'*0( | B3MڤROM|cp;F9ۀ946҂Gn))SqP*~,iVSێi\Z~įN҈plS\tD9##Q'҇'vI'қL.K hتz*!'&r8!m֝WQ3#>$@ dE+ uځlj^tɻqŽMV XJmF皖R> gRT$abl`3gjoܰ 8k ᆮPFŊAc#X\~7r۱ƣ\785Xj7:=垱e#Gwjw+iim/i 6\@pq5sIaLoD2Vo;v+0i|R^F9d fNz l9Uv0:w]h@@Ҝ0F0~Y7#+:p}~L{S^4qR8H8d@q{ 8هLR1ƤG9S0BF[$qNT@I ctjj0.Z`@j'S/H0[ҝs2NPLz(c<9F܌IJNibE ;H> W0 F+ ;YQ !3In[U񍽌eZ==p7?Z(UNr[S%̭#jB_J>bٟ-\_nqYɵ[z=/$؅+c,z!$3_O(.2tiRK.p3WSF)!@5AQүfnZXF9,O7 Zod,H=5ؙAO K7,(c^GNy[ ]sjw4hC c?ĝao/&]ǂjět Yh$}GE^ U<TӰȀ|Z?k6~$[eu4ci1\Á4, ^-ዯ9`8]Z:ӆ⥸i=ONjoWgT:olbֵ~j_inf-⹙:~e#xB;[vN[= { KZY#H ȫ+q-쬠Y-l+m۞M'(l40}zdWbI<=ZM{b[Z@>xUvy\*2Sp \Q׊se1(𭟌n/.5 8a!|pk~&Ҽ#4;9y-R t&lffby'.so=-PG$ܗ^sע~>+zEs#m'^!653+172 I!2 ̓:Srޟ\PLOnW^u6{!X V!@vZ,+q6=M;rs@p SX`yB 2etȶϽ)Nvq|T{r($1O)dpjH'OP*=j@E[H ܃5§=i:rzzշ?0a) Q?cFr $Rr;z灃 dYtPKwc֟8d@QL*Qf.btKQ*ኘH6g?/zwʅ-C)EGQMUt_&r~Q*0r J#ZmE855TE Ah*4$ -{z<ϘcNGZQ|GsU.T٧YUU{I;moJOXqpfpqnj"'I:7OީZe&ʀN+jkHP:gL?CN_|P1ޱfAH[=>4zqH 3#^*i8HNf͕@ pycRs֣`~57(RzNs{Xۅ P2Zݦz*ȭ- H4u3lʬ9#uQLWA+u,0zV h2)*L`Z64LqST39ۊwqZWib.sU Twҥ\Úνaeg5zFWu^X/n~{써x[UOm q+owio^mymGxW-5y쿪hmvsWKm ć1O)i~!N֭.Eb#\e%qx<\:@Xf2ǎyUB~7<7;0{;hqV>S<#d; .ZCMrxUOVݪŔ#ӌ~Uz}ngh?ν;;b$,T_':F?OH$WaѶbL$erf%A+$zzġG imO$@⢑0A}·OLКi7ZZZu37U3>힙K3E\tkZpv8tbxޏ ԆHfWn{ux)S[4S  ڡAj'QMr_S^ }D?fC#&x]b`[T zk=KSmkXX-` ?ξS͹F`ȭOZ5Rd Ԃ)|cT`pjɎTd A&v;RhS4LӈRv'5bF)#=Ni@ɩ/ 8(ǜ(*Tu9sW@$``U?0vJEm4 ^cڗPXӊZj(IңNN4cSPǀ5Xԛǽ0s@9=(V<`jǥ8c(;xwv㚖) r0}s@ CcqN9iw92sdf#F.8ҝ"d(GQ@UeyF2)-^RR@M!8?J'Sbٷp)ҋNrs H#E'-!!q΋s7HvECޠn HM3NčcJ sACǎ)p#$ҀCdt0@4##IhV%HG҈IO.8@>q:|*hd1Ǖ'z '$Ilu5?xGs.nNJ P3z -q{swa.G XZ?5/,\:b-"1>F r frӰtd۪cp9fxYe7E4TIzѼS7_x#+io5lyCZwLj[.6y$ VErZ`8_HIŚbuXv`2T@6xoJf5!#ǖߍzJmۑҼSGԭHJ*n|F uTA{i לSm#ߥ ;+dCG:ЊXNPs`uPF^*`siBq@Qؒ0zTsFsޤ@T54H8 G€OWϵ:V%LNG W?Μ?攨ۓ҄^:P $iȽGzHʜsǡ`I' NSincF"W4ݸ`O;`A*8bpi6'9jv Uc)7$Rjˊ$L*Bh[bå>&^p7TQdG zyooZB7%7ޔ .I;U!68m#ۭ47iDE=: Qy"E#/COm0Q@j9i ҷ#O K =iw; d Q׎ōRrhrӡ) z@5(ڑAF#) t#^8PqҞ8eyj#HOߔctiґ0Zz4F߼*G Txjk"#4Q."`[j[iw&۩Œ,q֘9N"[6֒B$8cAJ"6ie3O u=E5h8Z O[eAjI0~n斃ԴЪyvFȽs{cp^栒n8?/Cfޚ+,jaA35_` |=fIiv1zca58L\#q)s7ԕpu0$z33I2i{BoPA%O@EBuݒL^w. FqmJ59 qQ̼59Hĺ/ߦF=: 0r)I?Z\9NNɍǞ5Qc qJ$KRc;q+Fn dpXO' 0r1iDH4}i[F)F3ڒ 9PIZրt݃J@e>\wEYTO8KE.FiW׵(M:AfRH m)yR1 g=8S&YpƂrG<8j@a8lcO@BS(U* c Q% V=}iOZÚFB؏4<=)rI,Hcy4Ȗ88ְ ҔT"{V{pN^rZbur=sRh<cTB55EŸ=1[x>k8 ;0˭p,3^+R B*LPGq\ꋧh:&o3houBFir$Yۈ_u_-tYF j$G=H֞`r\{nLc,J  [RhUq~d\קw j;NI$ }>|_S/M%z1ֺΎSs[Ē}7HGj"0< +_Eយr@w<`^A|:+b`φ>q*eJv ԡSu唫 .tY5V.hD 2hJIH@=)#o22N =]lyLK_#xF\a|ʸ}O+ |-{|yP8F2ڻhyeǹMtc;yjޝreEU$Km!'8^Z)oZDEǎ9 3^#ǎ5텮/UlQ57~|8"e6YK>;W|uZiV[x!D@?r.TlG/AO)6h}OJkzaqS)-,Eԁ,(M)ꤒG=h`<`1!R/#=}`O*q7'5,=h c&b39Ò@r͒?]"FN;y8@>rxt5xWUFExl6j,p듀 E3SgalCUSt.ny1P =iL{۞3AuѷҞAPB9a\zvؙ;RpClfҘR&j2r{u朇:JE ٦=(baIeSLvSoB`@>GQr9SQXY t HC`sWk17M/;~ƅ]S^3O,BtK{wv 4$5|YVc}Y@'浯Tj2@zqWK"u ĂFŸkrUԆ-,K8]'N2ψO[k^A;&HNZ z}Ⅿ"n8/&jIDDZELGa\'j|QaKeP+5NFڛkm?Mppg_CR<:R;=P]ZŸjgio&iN@{gǭq<}^zּHX\Hj14=:,$;F_9JۅO%P8#r'j|sgIb.%{ w,Nppޕc':fH$~с0 HpC'<ʚrO&⽱PSv)_CJ]{OjkaHBMp~toA_85\^F|)s!Ⱦ0ӎ 6Gu#sH sS">FBݟ΁&џҲ95ۑ8P5B$RfM܍䯭F,wsG/&U >b-G˷*dMs܌j7`g={$jɪ p'[x9*}+٣f=[6fܜ(%| s3UKJcrjy&d@ndsTIR9LKʉ9iޓ *ěFrs`材zpiVG^)+H#қ(G_΋Ô󦑌{qH8EĔw&.zӸX cizR84r\QȢⰹ QJJw$Sp:RN*&ĀH8c"@\Rm*zԱǿ}(?Jn2jCC|_^ȼy. 'R@e)gڐuiHzG +)v ~uw$:Nx8e?JG E}Mzï3E& X#~~,5fC(|[I3W4*3f%terLv$w4F3RWgF0Q6?:ovb [iQ%<Ihd:_~-E򵉭A ֱ5MRף#Q1J )75sۆ5`!{e;3"i$HY{sB9U/$:߈N.jDød~~uȩ<`Vl*4 jUl&=k*4@ǭ_A'֞.Tdޔ '$j5ǵZY`e+<W9j4^(8p8 zjpJ0OC@TZx$tevڀI #(@NlyzP9KZLKq֞B {c4?8sI`9#ҀoOA֤A遊ҫ0h@{HA Ҍu<qM4+2)~G"m4-X.Y M$`n8da{"p1rSށV>jHΓ`6Q)PqOOoyqKlOX1PZ4"R(F.YrM;ZYNF c׊tr$SBCi3HFFFh+ hCu p 2sNinι>Rh\JSvλj8Zz6L$%Aܣ֐3qi@{=*eBXc费AqYpJ}?g 32HKnӁ^d˴ْ#'x (;۷jw m'?6k.OJͲM [m_,y# /Zo1Ilv8=Hke-Feّ P+w5QlC]}GWWmݽYZre$|Yۯ-)#r63װxT788WS5{y5;A1(fL8~֧Ks&-eVݿ6: &FCg۵rGN?*(O;c;S5jJNU⦌Oٽxpn~oZx;Icp)rsAW6<` M$ԟ)P8x<=sJS#$B!TshW,`9Wx x'p Od, FNNI)PH$C )΄4EMH\:v68t7iFC!$`19Lv2u?tFi7ځ98 ݑ߃JOLP8s[=JSSUH/Wk1=8d?cB1iѬJ<6ǜcLw2y/5әsRs ;Wϒ5Vw8f"Uu#Z H@cOt#ٚAka1Ru `>IO$4ۚN@'SvҠԧ4h$bqҘ{=i4~3)h@?889Rs4ڎzRg SRP?Ns ZUPA\tހu=G;$ 4K v;j=>cx%q=)럥(EXУJM&zZ7;Їss( 1֐.98GcڤG>g@ҫ\(l}9ĎĞi悐09ҞFڐ@ ތ9]xN9??i;4!s{(O5kw Qn<]u{޼(Us9jC䴽*ҷý #T{)oO|dgӧ_y0^l-6`eN>Kh-HW~Z2 EvڲF(;p*7MxO@q֝sJXMjÞ7еm@ȫڰ# 8˕yO[@Ο]^sïAͼ`d\I"Ƒ)=۹t<ϨҎQHfRސ+0%v@=+?dx dgT6tkԶܟV@<8>a+v6qwZnnFBq;i/RWP. F49TϥUBɭ-20uh|ΟO,cj&[ j謠E6 ˏ US{߇ 5? x%JFvK wֺ`7uw)mp/+bdcc>B#9r9N;ᠫHFsR0=dxP`pk1g5hc'QhT䌓ڜ8"F?:riI$v)l =y\ $:dP Z:Z98uTB6*q\[lIc^8IѷZb֬* ego=AqTۏR}E;\cR(^@wFON*ǖ8P@O+#L=YA4UxM([HXGsX%&5B$q2y<OjK({Th*EQn'9ar!31JpGn)ܜR9$GA6c)-ǵJr7q MFy|zSn8'r=8G'mӽޠԊ( y= *%\5"'Fߚ| .R׽0sӜ`v̜c;)< }*&'$E:%@py<&8oz/#>\I޴7+ov1qZV7n"|:ׯ5. '@;yQ?JR 9+،9l)$)sZ$NM CɧqOJ6SA9#) R2RHyu, cUas"P2{ҀH hv4(G>VO9DB = ֵ Tۖ8:P!(4ҭtVVPIss! }Z0qJz9U%nsc#9AjZrg$T2>r+~/q9ݝٿgo/$DF@? Uo2ͮ-ah(pඕORr~Cn߸!HO${]qpO>={x~/MomE 6q1⼁q9㟉|awG>wg{)LW "irOj3a8qݐ),}E&fR*""4*}Ow<$9)=WKx4ɤwf'ނc`繤5gI\dkmczV"t$@qfv:JY lM(]jYA"Jd0x4di3ڜ1N8#nsڜ (q,Q&O@r{qB(O@kx)|hьsZrÑvDyȧ(T^I=*U@#=2M#TɂJlw#zS$$c05(e8'Ԍb2N@E–>顂G$TQ0IT=0֝$qhR)}2jܞF)@H|é$"H槂Ԫ)>@v<7Sw=34&sL S\llc |JXdRmsMw*\vRnnܒڱUrFy9Wgw?j+}lb*-N&TN+ņ.y՚)䎆#>3?Āܹ VhkS ~C>_ڋ䢆N>SQOŷMmk}+ hߧnFMޮBi"X*d?A= szn_t'kA0z`v >=3ecx;U!N;msރӔߚ*F@kh@xk9FSZzA>=(&sgk $[6Xl4 . W*1dqN@0=WO\A=yK ,| 9'JpFyC criגiaF1;Ο8uR r((3֣߸zҸX޽LVDexޔ󌌌SU8Z'ҐazsҔaXzԃ2yD9B,`5d3S`)ƀch*}ܞ(*G~' H1ׯ4Pɖ_ "}(T:)B܎{8@CO8+5|y9OJv*<84|8zSv2xX3V枑`cЊfvĮqsT!zҚ`Wc$͙n{(o Np:R#+[GIeE4`vkE$t3*,ӷ8޽ $H<`kj6>gTxPNH8V&NL¸.wʏ4JFɤ5&PH᥎RunLirxT4tⴐ ˝VqbG ?v1u9ZW8[h^}8f#-˜`vu=88*% YZ=y57  Fr}*"y@\ڝ*Vm*@-* )ǷUӔ cFjfm }inb^cKԤP@ϰڟ #4" ɣT)_j1R;HaC)TU}i\qe!BF>ݩSNK,7sl)vϵ ?"ZVg:P4}7z{5 $`ֱ5H{N5inљ7λG&\Qcd^]_Z4j 1_L%0K9987ȓG{Wӿ$m:;XjP A 𥏇5kx;In7zmZ{Oq4"+v_yў&>!I6L3A_[xFvEaY([-MIcbw5X5r7 qBy1@1'0xPW Hي MhNݎ %yb/ [^!nmc4q@m~69W=~ou?u,=1 pvz];N:%+w<}obNk>D_o >嚧WʷՉ,V gH;}Rs;ݎi*^G]g%s}c^^ZԮ5W%>r{Uk k^0/"Sq,vϸ$czi<3dapłsT5Ocm-.e7\w 9Jmsؾv~<#i>kXϪ\Mg_1{^P[-%b.Nq^'>Gci_ى&0>b'n?(<=rGi]~0*xm$ [I'sNgk͚wgSTVǺ =Re5m'oD1M  |G|iɩho鍧zlrvb9`{ZTu<:I8 j@r;Iɥ8U&qJ~R9!=I" d҇>A8+&riv~52¾^K wFq80\c$q=h(tX=i\[c _O[M._jH/^:P2HlZU> Rz zõw5X9RWU 1Ãʁ 0iӋfLǧ$R{v2}=)x ޣBiꛏ=c$?ZF\b @wG̓R+a ` y NvG@O3q@ґ0yrs׵NqQ}_44rFX撥sHI8zxqxʟL/E#9'8)sCQ)z)l=!N '8KzD27$c[H!uC3XBA'd UlzTV ZAϱ eHDRN8rtXM9(rx9X\4#cA֋@j($~oAP*~n4m1i\)$<-D ~5MR5@ѾZFAtB3Z0=U&1H,6#ҽ/^Ed`zzWDHq_-' =k3Xpj)ߚղbOaCVs{hŽ94=JZLlʌ qQ<]ÐßaJ\U :rW= w)HJgp=ju=~B.8vaмP9Lw9r`Q8,SJ㷭m'=W^zxR@ɢ c2}Zve6(g~8H|_]_|F'W-ob#\Y GN桵Y%C$ғ#ru^ЄyvCG]KWs\4Z]JXd/ Cs⳯ BP"/@2+׵`H.<49>k:2@<G-.RGV\S+c$։uTa9P]y 1)=kxШ sVFHxyHxp}qx]X!X9QqslHa2Wd0R9IE*ÌQB%YRsv,v.8 g:jwyrU2:^*:fIXIdlacBzDFrNSO[}20sֻNf>nO]mu)AAglG1her #; .~y{=`vyӟxSBk 'YHHS=*u;apTS +HmtIbH`e⚉aW*641Rƥ"'b:Ս,KªQj39ZL%q]|?:tj01U17K}=.`9gh3)ߓiJ7t{W}g)KU_ΟxGNy q۩lڍǟB9>Բ+wn\x zCÖeepO>Y8b|Nm5mB+M";{A;H9L+뚢+W1dj_hW_f-6 vO^#e.*9 ou <˩o&=ZVל B5IhRѢdiX֔5.zLW74$8Ҡ!_➣qO0F(IGNM.ݬZFGj z|Hvl`g{x 4NORS֒E(zlb\3z/>+C\ԥ ÀY_WDrxk>ie{SV0 h ?W|xrQ^d! Xo%py=\w:m1ERA$C՛ 6vG8"$u8+>t5*h{7PkV_(t:4ݟr[+Æ3\g HsT ;L8`*ץ[~~6cISG$+-߽a:g2H+e|)KavՌ1lݜbJo/ DnOLZ'XqճČMbzW|v%|,~RIL +ڼS<4ɧ^URzS&sji{ThN~P=}?孋Y.-" 5UZ:k3ml_O~ڟk=:&q-6Ȕ\?zudc8@Dr={HWG=MKUDVrS^kvkιIoRGu\dG)M/LѤ6կA9 )>XeF 75&CPDp kUu)jIjDσyhz[Z? I$y Hc;m'=?:=e뷾 m0D<+W{?g$-}a"±G<ׁ]4NN:u[^yxD?*9caMTe<+v}'fylR]6j w0,e=~Zֵ^y~׵P@{+>cŻpzEo׍Ska+[kS+~^VRc`I'_ Y/& 1C$p5OIc׵By~KTg=׏_J]s4_UKH5=IFy#n)e̝I|9r7/ 9=>ڼ{BsL*ޟ느lwGMVw.( kֿlmzmSújZ4Zڅ![r|@;f*vUO׼-InR>j>S>vV{TFN*;*=&4ttk^D$g  { 1j03NGӽ )Ԃ3wBA<-Z8g8j92p9#Q@o\+mf$yL#8#s7==" ~bO*!\2׵.tj+Pc}nja$bBH3x نy<4|@JzF@6ӣ~}L v:j iۋ6;{P9ǵ=vH⥍]\ 8uu8<_nHpPK㚞LbqzTLD),X1>_Td7~Ԕ=*I%-A`!ɤQ ?p"iXttr@r8ǭ=TADؚ n7{UIby aG[4OU?}j[X`|BDU9=+SH溼@Ìցئl+ٚ6ݪy#F9?gI%m)y}jF{KIɦILwWceH*{Yv@|g *T}8ۑ{Wv8!m2H'5SH$P[3GNzyt~ns@/k e-O!doL ! Թe׍6(fc(zu(𻦙#-Ս;/jɝ0؆jV<Vȏh水dx/ j>zԇc+N냊*qԚrB8)(s*3r7$UU-Gt/kigֱH#?[z*KV)#'hXEG> H㊴&8ukCyx4&NIǥ0!LVGZ5z|T)@qjVr1ZnÚ#RIु8F/ >'(QdbךLD`pXJUBB !''ӊ8"F۔cI8Ƞ#h{m;pWvTiTnRB)<9ϱ0A8b)X.?1jU\%g9@m Fx?f .Oc4ʰȈ:q;J{U'wjv*1*6ɧ0 tJG^ZX֗6$v4e#n w"I"XXN3bЅOAprhF%s(! bj@o9l84kn Qa< 0qJ tO&Q֘{R 1搷s((+dt+?h]{u! 3}ox潖̫|u]J!g#j3㪪T_v'<<…VMėM?+0G2 ڡpQwpq+ԵO>Igf|~k+k:Abrk4󽙽xɉ[gOsګԳwv-aV+kؚl>4a(Zb[7J=i[-~^3]4n2>/qRE$|­SH.I@ QIͩ_Gin*rkּ;+Oi֗soW1D}ǵW-sקu߃[<;xfN1:V;aӜMr"xpPURj?f#|LTGB77NҖF5)v'ҸkSn$9!Gj͹ͦɇOg,vvc H@DnQ-$k'ys)Km!c`,w{[^MFܱ5j!k@ '+$Jۀ=Mx?զHn[U`yS;k}]+W~jz͝jV?=yǰ^5KˏPs&i/euk --tZ[O.BrIA'jlJ:ު|\t qT/IyC+vIܵa~ J9#)/RZ/4h-4?k|EKJ@fs卽 ?MA96!%H\q|uuehFY]V3!=uOD%6ʌ\ׅBU^8F yi;EsW:\nYn8>ҼnYDzX.;_ʺςjZEKmx[f|mX=nOx4X.j=GӼ3ct>Ω^l gʉ.I9_zi-t Iv#\νwQ/p"E LWH<=oHj4㹣ObM1ަzScmRdص=e$)F\<qcF9瞔搑֛ M&R[&d JUG:Xw.qT vǵ{K*gRe"5" W4ۻcޜɣh:H悀dsS<:FpjCF1ޥ*0F˃ӯ12G5 6ڤs5I⡔HC0GE!ݞN)Dn.4_&.*!vgD ]/zouoZZHَ¯\doxj "l;@GZ! wm}72IEI hL675OOXJo0@+J+^GָBF>ʂnZ|OgRGϺfdץcd %NFNOֆk1VMcd};^'OwR $e݆^Б׊,$vlsl695:xeҮ<-sh%#'׭/xWöޛ=Ovӊi4yժJ7M\_soE e!GGa>)|C[e5,1cB鯃<1]G1U}V/^ ~Ҳ |Mi[Y<Զ9s[8>.~2p N؁0+TlI*96ID I $8<_Q9k|sͬ_{ '#ۜuW =rm 7e'*/h -aK+;|yם~к~&;IŢ:GYiAZX{t܁LH-R614̒1lIa'h)_p2@$gHϯa%G5REĹ88Qkzy<~gZNvcEl#wf, }8!˞ez77VѤWO|uOIqJayd(Ϩn rsO1AjOPmFV6p܃֫myI~v0Ul |t гUN9}zjRvu48ā}*k' ''eR7Ҡ}9T2 qJxJ2sژ.G^T*۽9CO, 4RcS, z:TqSRmw8r{80qҨ)8gJs)[#ʤHw*=ju$8Pb8&hZ n"tB$5oev#ߏ+<[&5̉l->-IeAړ➃;,z?ğUQ:"K-yiz5 >-xߏ_h׳d<* FB#}=mMoƾ9w/ VF-$gT6RKG1mNKީsh|7[k;ta8۞1T?[xΡiw y9o hVqTRM4zdVPI֢ۻ42K1OBiFJA9AEv`G\޹8o>TVB 53;LX$U n##ν`'yLqE('-2q[|'o3ijo%Q ޸o 7{-nC+ GW/cU:/#\XbG[ZNۏV\YY5&XHT=hc3!<13MJsִ4Dt5AS+ֆμ֢/ n~P3X|Ċ5j=\<45>tҧA'֣3BJ@FS9n }Q(jdf<Ja~5HQOJ9Lc4y'4q9~T tsϭNM8ep)~U]A NCs@el1إP6TC@{H9Sgޥ!جn@}NjtGޘgB +hm$JO>Rmsd߱v%cq88a9R1ҋa:S@M˷TI >qP'>2wo>Q\C ǥ ps#8=4NGցF;{SO8F֔)f\j E(Bw9|F^̺A#h_Dx!F?)nv/Z~ .n^, kB(-QV~&۽됪$~44*Kyk2*v; 9K-kX=isZW¨9mwbp1qG3`\Kk-b09n7aXW?qGȧ#1GD,vϘ ի[65Y%<5|E6a%/'1E?SzgmǼ{Ha;׏3^Si/gb G%PY'GW;G9$b2AnH~_M7Ʃe[?ܑyh~ hڝonXr+T3$m j[AV(.Hu5/|%{T^"aX<[7/~ik ` XXҍ,3mpO ǥz/_m:aFG?`i.=LpA.>Zo.gnfWQ{QZi ;ȱ(~RĿZl? Lv,xZu ='%`O)1+<ǫG+%oV a@\φ-mvD !\+*UM _ u #c {{>{qw;n֢gHߌ \sK@>ᇑB[5ʓ5>/xsp0aqXP.QY!G >Rq1Iy4+ev`mGԛX$r}LLPyրyZL3J(ӹ!#FsNn{ԝ@iT(e14AdLdZҽ|FxҲyV桚D@i&O4y&V,k>қ;U9㯥0RGzdLAE*#AP<ӿz4Q!jq,X 8ۚy%&P#ޔԳG#ޢlNܞ)pip)AIP#yz4܉#݁TDEd=x& Z}dQƙ rE7~u qI5NʜZp`rqQ ؠAF_q=ޙ}"`XdG1A1sճ+q`g5qW7Q@9vYB<=(!q(  szɹV@qU/WmbLxǺ5IYYّ403ׯҼUSQq=B[~Dc~ u}gf!8`-s;#ЋTc#!wjE#Hc ZV.b#2y?jƺ7^0"R%R_/<9ihi嬢Fa鸎.?fϋ^'sPS(ķw\V>(ȒM_]!jn"2y5fsy;?bmNKu{R fdއ[GWtmi H0^+_IĭcFj[7#uo.籚C(e@gis9M);֩?̐?SPH@:v\󞦥^d>T9_-^2k&n(ƌd4)a*h`$I>|<۞i\+ \FqjINiƣ$xҙMNh@gBCHf;ZO崳[Ei!7.y,+'xSe9yW$GZ^2ԷSZWrK3OZkjZMiŌ28s-Y EJ/$% r[3G oFZռO J?.ָ`ˊ$m\Iq&ly$0=i97%B~+.ӞsO$j6 OOʤ`H`hs)YH#ׅ6x] Ec  "s~"jyKjL`}rkQ!TsT)7cT51BQb?Vn'8zVvԛZ?Q[E ?~84<#ßLGKie%o(*2@HpTF9@\ZgOkT 2#?SEx8Nܻ$(u~Z@#ր/|TDmcRmO.94,1#UdŽjـ?( ֡pT7Jð<ld/ibdM vA%P02qϭ1#@dsqIy Mff >FeC4`ӱ@X7́JH\֜o‘|)~j$sBKqVE=}*iݻZffiQ@3k^ pz tIn ~!,xh9 yj"24q囲c8UcX'|`+žYym#4RFv 3:Uk%w4lXWQE v{ۚ_ xRډk' ї.dW#.M6Xfb~PH<7Em0YV\}yYO~/aW+]Y;].uhmCgGj$`}H|C] XfH%UJk?H-bP9U*@B#d Sẹ^љpA^_Z%>Re4 :ÞQp}>-kZ}u) "Ó|c2Hw^F*3׽w_57-Ρ 9h ־"kz8mNhl&qS$[r}0J3`1|շ1(k4%]M773O]O>;Չc5}){Fn/6~ qc,dR݄ rq[SF-yߘr1^_wn-$qL2PFif Qxrᴹu Ӂ*o(>N0K'WJj]=x| 8?֟(#x38Mr3QmNc-6s'{TcNlqWfG5YE.<.W@ztDA-ڞ31ɣfӖ)J8*T%F9p#bh@-0LTȈ09t)N9UͲJuowNklqV"j#XOC&&5%"qssS޶tHG͂8u(+SsSC1xٲwz.)q<}*LҀvg#N \֞2i1 +UNҜ(l8挅lmҳv <c;-!`v$fqޑO8Q H;j:;ӟ & n@W`P ?Ztd 81OjarP2g7i\.2:f`>,' riĂ S=׌AgOf#'$zԥR`CgPzzPN0*awsHW6I4 GOZQN{ EN=DI#0y4Œq9'OjPSF)\ЮϒF01Nu8\qڛ4\ T~>AÀ Ea#^HOUcBI$` W'G?XܢY#!Cՙ5.V"O6|cju4 kFj%0IRֳ,uvvI]:HK&?k|۩7&`^NUgFr~f}kW^J^D $qҳwd8`lRp= 2wvH2xF@>D NP]i>JŌKcH~xŵtw(#vֽ*+]Z!Ŭ De_t^;o-l7YH“֨I⻶ш*JRMg,0R1XxJvMQ$le-ac?^I#JF7֦Ыy̱`vǀhErQfp/&JƘU$žev]N/..;d[?|3bGYFR߆(Es➳#KvBF @%񖤌\${'׻-y0XYpPWޭAo0To*?O֝x62]H@u;u_ bޫϥC-2Ms9Q5ɏ|s5r{T2L2B0O˞sMi9.كQ#5=*Hֺ ji6vsN o!lVG`ԓqrI#=zይcOq3@#P/i?v/oٝ]M1,`䃯_(KhF}y"g/BUs+ }kcߙKo`AE-$}WП%o M*I'ۿm DzT1* m N+:?7Ԩ澂?J{nsPlQB:9Sr\(,NJtLW#=sBy'78⤻V=OqSۀ_@U*9nZbdТٜ’txKj3|ۊr1G#&8M^"?nXd根2ڳ f@^7k5s|`M(YKq09 {8<:РiSb\Uidֱ=1ڵ,8^jX0l=B=YFMY"$,ibu2YnicsWYm˻!۸v_ ~xǾ)Ѵ]%5{GmSN:tQlVVpDZsdg71cǶ+<g4\N-JS%ⴣ'p#Tl g(Yy~lRJuvw$ǝWެ2,%I.Hʓۊ.>S֤[f9yt"4P9*0sYH;>n9\|rYͷ:*’G*DTI3Ur?VfVi2G .Å-reJlz<"?#Azmk nkb*'#p1is$R8efBnZBx4Moj`J0^k:ɢ2X^qV}EEsjaH2=yU.hQymPn^#)^Q>^l l"}/PFߒn?:b|@֚]4CnDk-G򗸹R+P'ߊc*[iWR N"p[ڽ&/:Lv#>PfǦj^-טFEZhlsdZ|2N6f;o5{ 8`N}:ʃjJSvca \D]L ;UƧ}˒!ѡ%W$a"R;-]?.GhzJ۠co]9"1LqG34XXZvKaЮgz?NGZ6$tȵņu.B]N@+r)]3KohGQkQξw6K)U$ M O g8֑k I{. vƪ/nfb)ҹg5~FFނټO?2sJ.<qW,F@bc*'FrpYb4hleh''^TX[[7ۃm#paYpHX986So4G5=MRjSeFNq@EXTH2HF=j20=<RP>]8Ğ$._YP㡣ľ$H%K(Idz<k+%_]DfgmfY\K)+3†=*3<ӭ Gџw10?jZ;YAcʓ_x_Z>Aդ A{ vFH`{MN*N 6Җwcװ8ܰ9>_֐\(,|1FjCr}ʕTe 'W7ޛg^#GlF~=ITxDP6xU~Gdy꜔FU?θ{oG#C=(=&c-?7$D9< $<1gfOzeLqJAR_ִHͱIq4"2GR E#ZR4p8ߙ($: 3iXny#hX)R#4H("FF8J"2p~Ao\#2d>kuXs 6ơsDjwN7ox06ZNkd3 *DKMgXq|gm{QrT?#FmgCFP0'+g`Ǿ3\g ?vyrG;{mZW!pS<6?'YO j,Ф#]vX83ԛ|9eJdUdf;9渌zo7dv18)բ!6,ɧu҂AN+Kq2H7"b9҈};r0{J$f0g" .sUb&PqL$sN}4qRƆ=:SGO;##z;W&M^5^d8pzƂ1NSiC0.A?l⥓'jHP~ul x18i0 ѿӇ\ fTd|:h*x桖(8!ZQ 2ҲhlPsZ`>5 wKȊYќzO1-ҡx4:ׅ|TO%Oz@ׇmQ;)Fv]{7탯m|fy4E3O+ׯzM7|nŀI+*_:r35x"[ ;ŷn418Bk('?i~eb8TZr.=3ߊԀ-]@ XW=9Ā09U=~t{37˵ӬcU 䌖zSKK :[F(>\8EzڋƟ;=/—O%&&$EecWŧ-mdbrz׫A$|gs{mŪ|iUV]3Nyg$*f*|[9]%R?*]ĺDŽ/.4]Fm6[|,eҰaI\cƏhlc~ڲBA}Pz<2+5CE8\}:R i[[iUi"2Dϐ<9$cf*RjƧiQf2Z~ 9adnxǜ'c\'+\tCzn 1co'ǸڥTϥ%ltVp ~nAk#( : ō@f)6rSltiW`Jҳm#D&~.O-%I @Cַ!Cs0+q1\IJx*uƲ$x \jPiiDAتr@(9 {8'.gv}&R$cpV5,J0I8_c>դS_ݴ1qG*ڝ?hrb+h?NHBnUcWKo? c#A_<1]zn{}FךRԒ{{oxFdP%Xc8ێc,eVvm-ͤVky N8?085Kecxlpt#%ӝ. eI̎;&Z?ZnkjZ~:K{V5ݢ#&L"F&F4n]wsY~8Ii¦Fl`y݃Ђ;bV7v׾[Nj®N!ykO)G$j@ǴLw< 4+e4ϐGI&<%F\Zk }7;$`cX=YNq,5(ЗX&ĥs Yq;;[EUVTRGkALp(>x&X8{A7v.@|XW.ogS8uprf_5+|mhW?Z_@o|Lwyޛ$Ui.A(p2*yٺ-93-Aާּ03ۋlw5k|68-; `^(f N?=vN]vQu5q)S-!.}s[x:485 f*!M w#뚖ㆤW5E[ijpA|z|)ԕmM?jc)#ԞT_ 0O1`y_zvd2H=iׅIGZw0m2_\" f|Y/[+|[{/jxuEJn@F-s$K\zI+TRfSsVI㚮]r}i3DzK!y',H=U鼷U$9ÿe妯iRZR$cfňpJV*8!VeGLh:M[ Eb=9asw;MF-;K7!X:>knK#HVQ-V`9Ǡ=',I#Wb2KzS@拝T᥆ ܂OSB/#O"ڑ>GoI%RHX@s˛WC-s[q' 7^.y11 oj~d~yE_s[DLy>ǎΕ$`dӽY[N) ӕ0sLCb}*>`9B^z՛Auv:mMJik`pI};À+Bǭ bFBu#jy‸S#OLt{O!7m[ņH4mb*tw$4f/j1&&r8+ xe:S$c9)^~0=)I^擒x7*~8)|'wX9 w)Q\wxm9!wv?9sn$: Rw6AaR*LH,0 ˂đԚ|kiޗi3l<#sMFǖ?u8F $AvH?ZPOzUv>#(e#=H*XH&Ѹ@Lo)BsN㰪B :4҃VGzW4X'80pzi =H9ށ OG=)%?*@8i'u+ ƀTIbz'>~4Llr:qVSg=cیwĺx~EE6R.hCS/H#x|x-f':trQw *=ݎs&)٣ \Flcwk&,M/idfۂxmI±,T֜+F;+iK ҏ=b98kGSi%u&lgЮyhbzѫ'ӽX.J#n3yI`M1fÁRc9֗MaPz4K =)7a)\*,j)_J0Gמ6S$paN(.?8Jg#~=*TS84==iH8$%OCtqaP 㚑[ 6¥`Oyr)a#=x&I*7@/'vFZeroҽMB2TqXK[hmnd3B"pC $cn=^ωIa@-Um'ψn-NKuAЭOd6Gۀr=kjM]f.sݣ lPTv⨃h7tf-qBjxƒע4x|Hs^gF9~ϩPU#RI9 ~UQ"ȹ.AB%ON9Wl%5՗LX%e8}ji>Y  q^qL`v[ |)r[',8 c| Xm.P"x;pG~է0r]6t$xCn0yWh;/2PM7x o5;a/"YfG- l^z|K/x_L\i }v^決;|`2;U#Z.kW7@qj#qcڴW3eaNg(=y5~AGzĽ3sq!Ӝg=oZD%)H&u晿zW\gZf܌VL94ё:}(Vfc:*d q@i$vc$ rz4 jkFzsA`sJPE3PRzi1R#{(q1Pn3VJqP`gsPP@ h" a5fcsUփ*W-ա"dSʞIX12zmqEX%CsXxN 'C4DyOJ!\ >C"v2Ma-S>{}U rEo뻂Z$Wv .^I݀>g٪Qowy#`Jyչ5sAE/#⟋ud,c7vU;qW9#Ci#QlGhґ.DGO ͑TXΑ?,ѬT cЋ|jRy>AL pIF&Rq?I?s!եcA![I=v쥤n6*Ԛ-ͽa.Hޭ[]jweYn1+N™_2v6"E2L@otXܰtb@d9j( ʵ5Ack Zw0{YRsEǡVEJG$qYp8‘j^!&hv+nҡ`Ғ@iYpx4ػbf} W_~['n`$qߏ)%s()|8\ӵ~HJ:='mvֿ@[oYHÎw6HO_d}BUK ,}K] A3);}9q1?Z룥S>4%)c;+ SiGyqagxP߽ӥSP0W()¨#|{kenK$L+#] 7G:RbZ S<X}W.=Omm3$bN{r^<1:%yw@neOξK-д_n!}Z-)I \?_g$(#7ᇉu I;+4_۫Α*c|WYxE~o7V{t[,ӥgƍjZ#I=_2*~P h[xcBe!,!A޵|OsE=m׍CI(.jnTG}B$ ҜDE AbO4h̲;sTω{ۖ-̬:qSER}]|08P[VU̲89ȇ/ -4qO|WwR#~O)Xj^L # `OxY[Q@|j`s77Of''-«t`}滦Zn yfP[ic¶k'vrTm c$o,9S 2;HQE4<8/ @GOIICx{̹?bi?e+~ᧉ.^5IrˌHRe!N~ˢ@XO7$u(#Eki5.IU!]䘩d|Ξ9PKru_e.`p|2Sq`"Jij#*aRh~9[^GގnڀOnFri S蚏Z ;{96Ka#KȑIj9r:׏fԦE/(+e Rj:ާ+<ݨ]AT,u]V`hn$;V9N+KOih͉xs;Q if3]ں\IB~uRK~ :4?d+2'9&j` \l;VA7_r u{ٺ |˅@?LVϊ{CWMNd_EQd: p[=q pȲH@*=Aidv\xTܭIpd-ߧ>V·$Wkif<+?RzȠ5.ҔJ幫/48~Pi,EbFU7ڽWɢ?#`rG>ԗ['t!1c*j09.AZWCs{2c;-:$R&ypGXwMhc}A'cTHqUbW ri ,Ԏ]J߆\ #=S;$w7;AD11֟R|u($FF@?NUWq( 2$q:̚|yӆzejdmӹIrxc[MxLSQںK ׉|%ዘeoٰ-rHf#ZgW$G{]cq ]۫;)۞w9]k=kV8g+,%rvWK4WųZ=lZ|kmz ,yFM{v4_Z^DgڼƠㄐ?_Jpۿq{HVh[utj&i$vcԀH*h^',N.=^"@ǐ)#4ͤ?=;BU ҀzӑzУH85n!~P6>b̋@חQ ,Z2q[WpwFv82O>.9⥊>(X}*ܻon[ʳ$w.;`RPvHwZFl/=(#yzJv9=)ܛ`y<`f8ʔ3Z.S#"N-};rӊAsَ9EH뎴1U&sr^@5\W68sӵʺ=>'6vnyӇ:?Y2 gH#x1ۏ Fsa̻,Dw%/S=Myr,fs,Q=&^y+r{YqCBV [Nn ݘO{'`ʞyʼʟ-(FyL+N*Vp -B.GJ||W;JGI1;@ϭ;i; )7hDyupIo* cĚA+ [dG?7ᗊO9 #T\S~'i+GUbke2{ν㞟owj1#yȱ6p?xʱD2!_3AϭE#ۊt& рM*=#Wp98"N*BsH -aarN=3F# ֛y9+ n化T#?ֺ xnO61+1y Էaang8ZF'kw)_dk Y72pid 9a>P{jj'|2SKHaV`=+5+ym/2.r3G|Bʟf}mC*,F#i ~/NL6g:8c=$dWl:γT9֗=;GtϒP|F>ڛH ҵyexܑ\pQ@\][1@Q{סؠ$ӵE#L.ԗ/;Yq O U&K<.ݳC-@^yլIJEz{c;|;Y;+ݨM:NO-l RcU Ě/¹#RByME/"?0&jh ]F5l3v^'г=> #1wYs⽋0>j!h緗Zc_ZsG 3\׉QxSI:v]۔Ю3̵߬ ;_AsO_K Vro rOhbZěrθ=k[Pd99PxRS4@!H8'JZ"';&{ZSnywZ`pSCzޤ.HO8@q;IyyOzF񊑀8zf= LcM#Oz@$鯌pjlPn= TV}s)0QE< Z3IYISz.zw:ba?*^Syj"Ԍvhu8R ZVFjͳmLՠ,&yJ{kY*vx/:jj*myPs c֥ j88Q{W"\߅=Xm,Ԯ,;ech1JbN8  &?Z}"7ZN\Csm\ۧ)xG{0{cbZ'#z| U 3Mu8mxJc^Dvd pr2]4t:f Auxt\'xny;_!x+LO-v XQcLY=rkpn28'fq{Sv\Kl[hQscxŜ=?O#61;nGN+NM[,Pf?wz}kcÇR߈ub/>Q#?"0ckD<; VO1,epj3k?jwFlztY eXug[ UJ<)ʼܡv`/t XqJԴXaDqZTxyUj$K܄=WMNBv*.#V},y?j.$'Ls[X ٧F`!fUgۧVX;OqNԤM$9ix a!o8_who]7ugAWBP۰q  @;qhv}v">C*3AKwpcESo#wUCO%e&mizp$?8pȇ8?ZvjmU8zy<[u6CYX+yh$LngiHxP:QM\) K!ŏ̺ERŤU]lj"I*ʌtF%׭kur#JD w6zw )t找Ȩ_e\>:|e Ě\_[keBgkoV{Fۭ1vOI9z$}Fb'.X4vCUX'XpMKHXH|F~kݿo g [G~{$P?μ1Pi2e6@@Q;}u4}3/\^ٍxLzX{syi$)6 y}cx.|gU¬@^j޽,!}k뷴1D.nq[𝜷>֮pQ$ʂzY7&Q4 #pA)Hi;P)y(xPpG]Fm'!r{4IoEP{֭W xglRgzw r6M2zԷsj2%hؤ `@+O6,J!_QsNTti9--uQM "C+ L|gH, *:Ҽ`Or*Gp;]y*=XT4wӄؖq6 X݈EsW2]i+SOۣNJf2T{TV3|3YrȡBdrE=ݎm7۔Ў}ʗ hWBSoӭ%-Fs_*h(X4Zȩ˸*yPH?L[x䳙gNUQjQJFth zq]F_$(wdz r1i~ s ;@lN|fGvr:wbu›f4c`HE/ }ys&irK񯌞^nz氝+z5{*_ϧ\E%t= +&u1˗M1O+]G:TS|<On0`))^7ɨ 4baiF[G;s4ɭV1 JxҏxOb9'Xye r:k<2[!ep~%<5%Yi2Jz|陛pgcv%/ l˩D\,q׮N]241S0r=\Y/ 121=ˤ rbN҇k+ɋEyBzoO֞OdNp)ڶq;!r֫\ak+%q:@d󚖎"\e%9C2>:rqH h>Ns)bݞyZ RzTQ[/:W/@*J:hcF8p$f sN6ǖ=* n  of|Pu@Iܠ9hxXе# ^Kh7qs]} _:͓lN@( ?:FĊ !ʎ0VX l1!LD%+~F4lI^WA^#GZa$J69s͜zǹ5DF]~1J|Ԯry8jjz}*լE#rLZh$N9 u:+ֹ$u+Ej$R$p)q4X ;irF*SJ{ +26zTNQ `Qԍ؝bEB=[ O0iP*''jBzbځ(9}JD\N=Jelon52F {R R6vcT1A܄2:b4$ORrEOJvIPsbAǭ9~q@`63Lٴ$Ҟs@pjb93 ${t CcfE sU$N*Lqg2 "C2zhAǿz@w1n{{4%LA8RM ֤]9֝as*sJX' x42,Jh*O^X4?#1j{:a?0HAhrvq |}jW93\;ݓ8>~8x<9nPJg'Z8X$cYc̫jhb6׸lFҝ@OqZZnu7UMӴcR|ۏ0qzʜ\!>i(]J͌8JXF >jH8E}"&;Yr?Z {Nf+L?hEwsX?ׇ SPeĩ"ߎ3nL$H =+ST4mh2j4d;bWl`g;Tw#=|5Ƨ/aWtmdϭ/OjPbhwX_&`; :-mvRx~VGe $3#s֍B\jq4HxQcм'vY3\K!PσT:=.LFH7Áv^]}K=NmB˫ eƻ3^oIZI So=3^a/ ^#eB7!5|A>{Y2O '0@ҥ_ecR\'=pqhW)Ɩ, k+@ =*/9ѼaVJdug+gi'Mr^ơKҠ{-\yS[5Xc~MP=?d#͈w⼚86;G>| %`:瞿Jm"}_PZIe82Klju IڀئC,q\|sUmដV-;I@5h# մΡC{;Qqٜ_is'E$JSp<ǷxRY,R0KgxMF \+|ϱp7ϯj3d O''הă+Et6 ˁ_DxS{Öo2q;1=?u^M6S,FP9׭\MJqPGa045KW4ۜW7kZ&_/Γ'.z u6ie d dZA!(^Nr1r({['*-j\;FOjo) mbrdZVFs)~I-ϿJ=Zx#y0Ds 懦_y\v7O5I$'Aj2Ş*'",n\ב^Y\Dw#uT zIj܎NJW7SȮN{dyi\ri0GC)v隫!]`B9!IF@Ǿ()]<8ܵOIق⇝ٮ6'eaյgxIB0;\W@`19#qZQG݅c3 J'?j>>Vu*or~$ㆨp. ,іrƾ4E#PK77(yVsƦO٥W=Է+n^gM9] x>k>qxkS7,0PD`=py8Pr8_o|2쑩hntݼ3¢ IӧSHDJTg*qS!@f=My'<[{Y۬n(YS?T{KSUL{V#Bj['54L8G޴RZY WIn1p+;G忋x,f\qHddNbNOZ.ʋ[3$MqMV@Y9j>6r|-o ZNMh6 R'C8PmIt+oc˓唻9ɡ*;!\< ? 5KGwewqr;7/aRn qZg-JKJ`ZL!4*` U-ڟ1\Ix$szPo!U}G#^3╉r1sc ~փt H=+N%,sG2GVC;v:UiˍglU=h*B1L[]/e2Bpb;VA@?օϥ8n(YrدGĉqw=``/*VՁS} zwGsͶD}N'fyxs%&?͏V޼63lKO0j/p`C |AoN9w1ی5XxD/!Ӭ$  ɮZ7j>҃)uԇl#'Fcby|~+p"%/%hi;ssjzIuvcui It6>(h)c6?6t'<}qTt nPjFOA'Q#%m&3q̱Td5Zd2f+$.qzMǡ]U"(##c֬4-+db{5.ϳeq tl^YYZ/o8 U\qbh)j1l|=GҶe*LGgY~9UaQ1$1*g>rT58+ jWTi6s54EqKfrڸ<],鄏*anX"DJ$rnBN3WfgҺ+_:1Li18.h<%FI#lvZKU3,8"<\j;~DBI$Wemokxrgmь njyLBۈsRTbw&(d V6$9B˗,^&ia}J!hٺ0~ :ce%G 9Rܤ*I+Y4±hZ0 0{֔Z->pIm1֋ qG+,O֢Huh۾dz˞mRSڜNx?3 ҹ,7paxŐ &TJ 5*׎d;ǥX{UOl7N{Wџ s"΍?A_9*^# xOMESޭ3ETShx al-e} Ew :l|TH-L%HXgf0̻pB)DeE0x?UVa_TZ9䏕E.!AxO$9uZNr*@'eRNJ69=JdNp{ԄnZDpԈ0 ӰFy9-Nd֔-<DyLaҨ x'= \j 8qILXHdR2.9CJc֛a@ 7uhpAPn2w<9ɡv (*Rp8lu$$;U]_X_ }V>Tg:~4pvJ㦷Dȴ(ʧcF>|{q$'tvR3\r͙wSbMw7ڳCZȱjU<=ן&8j1El< 1yn1rŞ2kkiZy^RrX=^gЬ<5MI֟8 sD3R*G}k=Ki4-SW!V@2]$gO,kN][} -uF0 :W^$#y$QP2js|o@fVӋf2*Ҽ!Լcu|Cy 3o/.;G<^A=3퓪P$~ 5WេcyldXH__]Ͷd݌B{i\'Լ{xp ˒XPOF;~|WWqJMV3i@"B=rGuzv` AGϘ$W2Q |u,\a=fh6Qm.T|X$vH%[JB"ɮ6NtiX."Qw5J-ؕ__=jG75OQdD?Ȯ?X爵PV gIwM \pPҖWD 4t^NM::\ 2^14پܦC7}NL7%(銤ڃ,{CWTUv#US $'\ǭfOe@})lK4)StW>Ԙҕo9" ݪt`:g5 ;[iz5 5I6*2Iڐ vE͍g:!Hu JYޕB@D1C N_ݠ^~mĒcڨ.',=('.2ivQ79 sOl3 PzڥB@4 q$" ;iXW3%4+ϥ0G^N4F0LFh|QPt;R,L20 4Ҷj`6W ZxFҨHBpE ^RI]3@{Y3D;翥(eO\PP+ 0.{sVҡrsZT(F} %{w tU]ԧqJ8y<q@CBӘ?8&P̈́ALgL+t"1C,n~\~H=GSC 8e8c }P<S<$c5E"c`@zV%A9R'r N:TfY"*F+'v9V!2 {г/X֍Fl4߇:Ʊ2Ge뻇~D$~<+Ϋ9rM-smF̠Ok4go3 Wm~ľ"qz#B+GO0~C盩 @ИSwrښIu4UM_UFX]" v3 ]E^]Ĩȫ zkj|gKÖ%>`[*iY Y$OHXmLpr9z_گΟ"𧆤iyDS#IFyjʷH:02jƯX n#sXWٿM-:&Ķq*p6c-ǧxω~9Bj?j\ev9Un^W@Ggn\/pɶsf#+ =ͼ$8aPɽlOqҷO>)ׯc]׷)`̰ЃMz'dH}o\k]e_9_ k^yi,IJ' /Q:\݊mgvcvP {u潳MXA_Y~5; Q&vsQ+g߅^#ݦʫc8DhPa$p+003YrŶzQq!-Ch5JOOoUnzG9A.v!aQfOZop6Ka';:!1HȌsQ. k, c7F{^]L"ڱ۱8'Ѡ[bBEn:wR?ZE Ґ{4t7f,zLdžIrePrH;{W}k|[8àaljD-nnDyWI8hM#G>X H4{.;Y#tί=Ye`&WW~ KmGG53D8 =|T37/-x4~'kqmy_4q=+?ZoZ@ɕdʏ7O0dj33q|ֈf-{` Qi0+Z!`޺;?Y}Nh\"D;⧌n˲B뎵_jWn-HH?Rd;#ؒû ^ajp/ϓ}yc?:qdaߞ1$E]0N0GpjICZ0$OM&$ {',1~]wT2MR9C?:qpM0-TK 8Ȗ_Λdff'דUL*2wrKR"eQsa1ME L`:c1 >u3ڐVcadUpw TdsetBa޴N2W9 P1nOZD:SO"kipLQrlZsH!n1c7zСgJlznHф1z+'2llO8~4~X短P9&p>ӑ].C}F;ku,0:Y$ԊUFZZ|CCZZIӠwMN Lj%[ hTsKg"sej!r)s+kd 9hO&H +RAs^_x$ Em \j_jjRF-9Q-73%b 2?_A{ᩴ|ihe|МB/sfE+ns e<} O*҉& &:Qh2LԛQy޼[ɣ(̳; ^*ggȑYitʹZg%N9;$m瀭Vc9 +gKdžm{[}%P;qź/$lRYZ8CmppiAuXT0V4D:tVE dyzѴ\)8Fl\_'9N#XwLZS07C҇sJg$Rk&͒=8f~9'fV嶑M FFZrݴa<)N[l3" #a;m綏N,s&6PZ|U!s$?*VZBB?@)θIxZYquNzQUܨʆ+'H3),֬X.nh:Q^Fscgu<1Jyִ=Vkƶ?*Ezlm®2&Ìp{w? xG֚X5iP72p=+2:yb3 yg[sm)XF> Eol [-HOT^xiiYBG;RDB6CN6m/v Pɠ]Cuiq$9#ӵtb$˩ƴy񹧴.SBhʴ(pH_u0"!&UjNj ,+9 ۰U,Hbb\ƺo> Ar2=ϭx厱r\3>60=(R|m:ºg*-H!$pG`y{71s/ Ͼ+L 5l{ YY9I\rj1`rG}mO"тCU l"K֥H3{RJCRz. 'VSAiǭ'r#i-қi)Wo ~|?Brxbc0WzNzvq@J00) n*0Sc@bPX~^k FßY6A,qR4nbVKpznQ޹k!{RX˔mn)dsSȨd;A0dg #3櫋yvRs1Aޥ 2j rM21NO4mgLA,sO޹4A# i1~gɠQߑ\^?3MrWib߸V!=x>zTTJAa#89Izs)ŃrC{PX9qR-"2Ǹ2)x4bӎ jV`T5y#5B G>%T9>L.48ȩ@THrG+5MFNb H=+k;/ngws5̍)2n$ПNtkV]||$q\ue2ڂ.)bsϛ.zֹ]цFgf9vl0~֢S;K+ i:y_iQؐ^)@x9(= t1p(͟4aW4${I*lT' FTdB#HW&>2~T܊NHEPH1i `3RE{.b.3VtQXw'bRjŧYu:q~2ɂAN,fSXvүj4>=Oos ў'*|!4 f ?:\m#?[Y/?~t_iZZwdc=)C_ߍXGW>)ȷ 4;l>vH99?LU)2Yvȧg~=}i]qӟAME+j"Y [UeLzwCcx Ht[uE<9-:[Ȣ0vFl`|[X#FYu9h ].$DeBʼ/5- PԵ/H+ܱץTg5XuX֦WFdUROrOjC; ޷Q)ʬ|%⤹%4qg$v27A [[]FFݯqK``?u{P`Q2Ōަs/"%ݣhF4%ΫEog# x QoV z sz6Q11۩ k?^]\BR+v'J$>mIᑹ)r9}'W׳md2'ߚei_1JW sz}8ͥ]Q^[j7:Lbv fQd@r:Vؘ<r*1۷"uqw+Vl_OJTY&aHX$`q׽flÞ;Z@~lfTg88"Od:}P- e݌yr.hwE)\'⛭WOR&{Y``2W$[6/5[6ҦX$U8ϧ_4X= PM{'_'cnmдHVݜ8ۥxĹG ێqq׸_hn-w4330AҢ)O*6֒4GdI%Zߞ=1YYi2@$4ı'Lޤ<ϡ,@zP9R irH  ȣNO@ȶ2UFԦE>Nр,F#c-3IP."L\}_w|ro,¸rξ"ռg=>4oTxº M{沓R(ՇJrt鮬MXg\;m85r@GZ[Ҡpkn}l3gH7C{^/<2N Y  [~ңn\K Ukz*{B2B0x#`VWW[[h,g^b)mZqbB;|㢎kÞ$:I H=zjZIk`PN=_f su6a"˶FG\JuL/q{ p^߯>kX.j7sܞ Op]٧{y'!瑷;X51nsY\AAYF yC b@0 EΕlu>TdHt- _Hn:ޓ},$;`{IT8xە#ק]ĿOຖ9e$z4+S6`ԚW}E1R\87~>:e"+io"B`>Tףcq졸d#ҽ ">'w~kN_!v9{z桠O{fO/Xd6Θ? ڜ#'f)rk+W7.`qƶ,edw7\L86?XN)$^kǹmV>+_WٝxiLYC| ALP6=ZZcjz8?QF鞵~Ιk,K=kռ-:Q,H+S 8^spcN:yA9G^jeHj'ң2_cZ*@-"dZN5`*x!փD09֔gڜ61AV 3}"'鏥,LDAV& [i&z`|7zl[Isl GrqQ.19j\m fR4CEl '{'&އ+@ qZ ruwrH#fbJHb8V1u##9iKyMW@GNhrZ؟7bMe-;Q3],<[c99cθmk21VS?wյ6yV"g`BiJRO$R"ǟnTڥ8) njaڞ0zj} =́@Pa[ޓ1*ws]/dxZE#Eз0?pH6Mt^$W{(\`H sqD{Q"w \O+Udo x?Oq0]^TLCo8_Lxa$:tXIc]\!VEVǀ:<]R;A^|][l4xtx0Y8ciaqgqcs5/mq $N9Sk_]gbSGg>VT/ bZ!YZmg}=,`2Cn|?:?#n>4XiL, yGkWr@Š٦ B/,GMt^,XF(P|!ȪW-VXnX9cJ.ocUx[Uԑ91Jeo{]7Fs&J_x̊١Ta5H57[SLNY!Xca;jV}WZE"s >狼?*Rŧ$cǨsY,Ѽ'iM3Awq.3M Ox]$ZfOxsҼko%{ 2dץ|UY,ܹ?Cΰ~xY=VLL XNn[k1!,JQfIIq7+TKv*G8<3jŴeUX)0G.x*Urr܀p}U9j˷W1#S"+>tFf}'<֝iwV7r s $pT§RG@&9 W>p$,vҪ~ck%ͦw?R?Zȿu \eHn)YI|Q'ن[d+$[р=*_C|6P֮Q 8Fs]>іDPBܱj,RIqϽ9Iϭ1yP;/jηᶜ$x"scHc"A{+GUOq1I--·*I$39's Fv0YI[ǁ 0I }[f#~[e8'Ҽ[6Xo>rcFJh1ZƟ G#1G'y|kq@%T? j>$y&a%۰k)^']kB*HWlj:]LT s}p; }+çnOdaߕk὏E}o-[3)ۿN;H5%)А2k,;L%\u}>+]#NcCXV(KNz\9O*Xtlv#&4_jFֶ-$/[s[ "kDfbs]/~1AḦ́/O2S1g֎kc7wIm o(x.FAk>+[x"LrGox>MiqZ00Nmp3x r5Wcj@:#VIb#8;TN+6Rۆ0w7cRqLّgmiQN^"(nqR19SB6ʏOJM3Rs50n;+G,>JOn:T,dR*=iG"J=x5\[1Rp>ThIihX  +1Z\ai|fRZɳ𩸹H@}w< {k hgYT>ԜTb۲>ᯁ^tp?@7":D!t"hᛶѴ&EdW|30 4A9UP_AXTt⏧2I=3y/0έ[ `pz2ָkM w f9\)_οCe]/mGAi d H?~z5%`%uE$ 6{u5]JPG6'Ma{3]QVVC%H * Ozj4Èb )+o"$[ZHuF9_ٷ^kz޿mNLh ݷ=p3zWGSˌڕz>x|azƻiǷhv!, Nobpx0`LW]xt`ƓXƨ'(NqTֵd-In`y[s&\UT">qyrgtѦ߻Tz g s+y4Qcb0Ijr|&k(.@clC%ԋdl[cAQg,3ϭuGW-[- T8.G Q_|O}GK,[n~UcgoIu {V4>mSSb!ekoKWJ,~lAMplO4V? 'mhW$r"5cJt>=U|W x~< _\[DsrBn2V1V}>IA+#GORyT  ᦽi58PG$5<民Sr7yI$Vo=j ׭bF^qސǃ~lSs!Kl''9+1)oiaXb0I0q֢\ yɤN8Oïi#6h-K`M F8#>6G4Hʞ&Y;Px#ŏ2_h jߐe$9|H Zm+7,|ʼlUXVл:u-cMу4c%gZRzƝ'T}oS*%aF޸P@'_ YX`׬_w4={~èZD;d_ҴZqz\Ÿt{*AF0Uψq\Dh]˃|WT,,hvsj@*nw;LI韡Z_xdۀ}ҼMM4HO` z9XՀois?s>IW65|Z|Y1R ؠcθ  sڕˉ31OLR*ǧz،Ih銣k 6L;BR gTQ3KzPUDz97,@Rd0 q5g#>VT\JrH6S PW`eɩcw q@gӂ1Sg!s iR-Rޘ(a!- [$\qï\Oy#2n0Ry/!/XicjĹ'?891_/|l׿"riJm!z2ߞk91U=&J̨8Z4{ac*;1@R1n9Q|@ps)k i̾n_As't4-#=T(3 $ihLJV̈G !~i4X-yRC'x#@}w_T ֵ'_ūǰEmgZ lƣiVRpQ|8T_t-eGqt:}xKb yU@Lg6J+%WN)Xe~mI ww%Ý>Rx_Jo&tF%L8({Rj2T\L[ai duTJQn/>-*%$j6^k:8vOZ Z'߆99=B=i~| {~r z}kƩx/*ɊB@{]G>$x>? ]Xiy\夫md;@KDoUUw>]gX+ 25/,wVH.ȧ$u(E[[XOW=G]ޛ[EL9U(s5|;ek&{gPA#9?!fqOCP֯.5 1Wz\u̖2*Ez7_EдK rw|=זچV;R0xy}IJHw1iOWcɦEPegdd \3$Ҡ9ҽc4𖆚}WW24sו;Γm{Xk ""H܈8d.fzƅKzT81\W1}30HyD\^W/owk-9F I$uJ(.Y˳'5C'k9ȫ 2029 ʒzԑ\,'ץZާ%Vpd1SƥǞ^\`\pX۵D&@IÚxĦ?fijd5~Mj qJ7)(^>KX@0;V^j mci5#rkamaXXĪƽ SH{fEpr:]WDn77T {Wy}'<|N43\xe: }k{Z.s[裀g9GwK iE4U.|`>׳єCh q3Oq&Yvu$u}"m|oP*Ʒt-ĺݶ@u]?'M6a8qx;Ouyƒ弡v'湿.ՕQG + =˔ě sUoM߆JsnnI5uI̬Όc$c>$\ägG e2DB$yʝS̭Wrc׮x~Y#Y PNI?^ud@cO=k▿ gB̮R8i4n?ej!sz Wf`s#rG$׶x eQV%'rS\L_Dln,yǭRdpZ=BkyF_ҩ ñ_amyomi<6wr3Zsk)Toʡ$o8Zi5-ҟk[l{lđIny@#$ӛf GN)1MH9T4`T L#󠫆SNS曂'?(!xqӷ|O99ҩ3ڤJtOZc8VƐƮW<4`3چ`z T@iԑ93m>Nj7cq(@}zH%O<qR;r IC<ޣ85) a5#,rXO$:Sv:sRd|怤R e܌)*y&Fa; .ECӚZcmԒIJsawZ#'j_yXh_>4/mMn<}iks2|˨ܼ@8^>WrjMYK-&ж dI"O5cxgp*1f+ES0AvqIG1Yd5R2f# #"gg`ԞhUVUϯ _MxknkLnsd<;Bw'<ۢ1 cHѮmbxlFRGkxdlb.$2I&bW7 WZ i7E(UPAG#{q:4X!\9,iE5xU?ad[,r2ھP^;[C;pzcW_MxH,Cp)*2:vjm:fi\$p:MC5i[QC^~ҿE%Ț'oyvgR*vҸp9h>GMլ IT5ڇƾ6R|Gw$vpJFqJ朚\u&,ڣR8ێ޾~.]b]ϭv?|W/5;-Jc+IyX⸫&VRsAk-7|5_ijxs( ww{?~oXYx~)$sqa d _z=5Q$QC VpӴ6[duӭ+:Rb,R%xjDўMmԒƻ0mr5paY#!p9k)HSBHp i0O%c<ϰb"j#h1k0֠Tk;;ż)doO 9^ #DB@I##O&)tH8Xb- "TU??mO|Jvx~RC 1@G#;)Nƒ63ڪU%cu4_ұز&ӭE$ P:U s&=xl[ON§e &F_d%/+پ&|cO=FB%UF{WcM_JZ1Zj &G*\aOcNۚ;SX&8ltbx!?,-̯=MMiku pfA7 ҭ[E @)"# NKc2ͺI=;zc_՝i3^$12##T<)][+t1LY azW?:Zh4>ih31}ՑS&|as{mZYo&U&+B;_v|9au 1B Q-?aGָ$yTnv8oڴWZς(R3suudw39SQ {0R}ΧL2?0Gn*[u2g#s5}}/R_ ]ȷdo/12=+ 4RHe$k|ޡ,"1I<'fWY[qYεވl|1$w' `vm~q5qIt?Wށy>o.*[},A ;yw+3k& *+8mPf?㼣KIv f>8`Ep[#HoWGz}gDgW T+>~:-rSmm;T:.gX[(K[e  '^4141?iʵGs}iP=M ֔axmMPd9Ѵ9{p-RmJp8yW%cyps#!)UyZqGʨGwh<@ / Ry~t rFi0zu8xB@I}Rmj@o<$ɣbH'E+ Nh mm>}`N ׽0@8(@Ԋ p; Ws'"Nr=i!ym*ւu9P8=y8PzTq(<"PI8#UDŽ d4 OZaqsOXF$gA➢s)̃;1ԓzpHa=)xx ֑# -z( In> G&jCy\gE9 9 |%kYúU1 1U8}P]゚ͩ>}Ӵyf'⾇u< qNa9ox  +εyl9S2m>ic,qM3IvVHX>\}k#wZz6$o2R8MԨi$r#:9';X'UU$?^*k{vD@ v +`VG,w 텞'#Ur ;bI'=rko-~HU8vO2{J7c'JB*,MK mPA&UAr=b&x%I xf-gMሐ,U<WSYh_% h a 3ogg;c4Apq^O|?i;\bY1n+d`F8НH 18q&=FIS+>͡xcK5^XC[ u?r/ÏKI.9Tߒz\V>]Q[YZć?)^꺦O6Hb;ⰴE>xNYHSRă>o-̉[py>#IHLA}ugRuNIȉ+p#5qrfo߹7BXhaʏ.KAcz͗t2Γ^ugT8~xq//կ >!!3 +7oosk^!R763[Q|kuhJ#Vb08Xgi>;p4x䟜Ŗi [M+Lw'>io w1^zb*#|O6PT+tiS1Caj__]dGII|mS$<3`I?N-J/RLL5|,[׮'W{ݼYiwp9D\xW!b`aI>;W-7K) 85D\,E;G8ti4 bMZ: n$F˃\SGi җ%gιF0y=>GޙaQO,mNc(T (I 2N:K[]cL䐡@|~{!H߆j,vjo5LK6$czT>!DvGŘگ ``75=\WhwdO.dzi"njc~sVU FOj԰mq=M]Vw$0CFH{fnshU sOBOj~܂Ec9C{gr?*p;~4ҙ{VeXi?.M5y"ٞs`8x"*FcGw(#ur#q9I=X)lHhq&}*'Kd3׏j@4|ԆMS*J@6O4Ӓ8Ү83ߑRP@9i6;H (LAb95Y0:w|X1椢2񎴤0=j_c˵] 3s^bXu@wFwlTHr;nq yfYI*! ®xWOU"V&mUd:{Hyw⏌Vvr+HWsҼ,d50\p߶׈E@ Pp$]>|Aq⾀Ksϋi-tHVKbp:f\{-q#ۯ[ J狌.oa߀cյ_ <ԡڲǨۃdW"~0^RN,m6V6kGă MdtzߗRuVP_}mBxSئC M#9Usֿ^ mᾕ4s S=+xdZtQ+b]YI4t1cY{fG`Aokuqz=֭~*ݤc{ *a C 1Sƀ{MFf=n>-d+q=#͞q|f.[iWZbTm*|ÞjOxQQg>abÐH-_IךG<Gũ2EYCcO=9aԾ2Cgc-ܣv)=2:+CrUsZ~%j8G .E,qWa8 &kŢo,܀7cr5͕ FX+7&IZ踚\O)U]O8VWMaY'r0y>mt5m6VHⶻfz?=wz߁,>i0jsXcF8 [Ӯaq`2}KXyy1 棐F*Ε lcHΞEO Ϟ;8C}[ ?\B4-3 G=mqzZiF)d1.IKbN1ڽß _Rz-ܱp$鑟_JȬ7%PH>B]i67fu*jvS*O3r;7n6\ol?ýF}KBʊr%P`Py-^1EK=+׿j-1M{i}oa!Xa۹'Cr:>v "1SZAJZȮf{dIzSߥPodJzjO'9`HԄ`ԸNXHN1F- OҎwN (dM4'8=E&xئrw`v#!"yxJS4R{xM^^2q1Z_h4ZN _Na$Gmopȩ0sV"<Ҽ{z)N]NAOΠ-&۝:0 8@Or@ɽc6<=?GlFN3YsGɴrzK;ĺӝ2ZnNW9<lw.)G"P x,17R>YWii#OHbjh'I CӴs*(d`ԇ$d3t$gW|;B5Wtwm3'Q# ;6D VUR܅a*|K,AF?AN2zgĝ_D/ Gfn,1˪n=3^q"a I)4Mዋ[8srr84]JKo,D̒}I8Z$:SlݍDF60Cs_\?) kWVWܮ;|2A_4n}cr\XRddX\_OJ:Zƅ yS\G,s+U1ESqM*]\y]k/vk7:lķ k%i+l : <ɜG0T`k|wgNAѳ =eW>rʙI} h<<}CQHo[cNCԲ\;k|OV -5tgf1ӭbi&MV}N㛋Z7Wkaqϸ;1uUZ:/x{NFHi:@kɼ&fmǠbϭu 'rV,{ZmG7dzm.iXirx]qhZw2A}L7,Y$DA^H7Os^"T@R!4\1_H$Tq_%1l>W~&[:w_g|8:轢39dg6$ݏOjR:oF7*ͮd2l")XW>vio)m[P @S?R3ߧokHaHQ6ܷ#=?:>!x6wKqwti,rV[/h3Fg.wu5&dqڽwu^wM(#`qR!LrNvS]/n4X#b'{v~1ՏKmwYZU t'a| k,U:_ٍoÚJiY]P8p.֬tac v\5ǩ?N9-qQ?_ҭj3`́vGp}#4 i"%/C*Ƽ #|AUo ?I5YIɝFp/>!|=W]_6r D:zSV<^uB%H',5mGZVm8+H6uÃUOn mth!agt۴z^mgG){݀2OVv;ծ։2n:Ω吲'U$OEߟ Tch@\c<ݹޜ ,з"ks1 });7;6]AHYg]nwna)I"hAhU9s+!{>Bc<#X r)uVk"i1Z4R2J퀡IɯO[ϫxL+p;@jp+ENJuq*yQ3Y:C Kkˣx-N<6E8>o$o^OcV&^C{ =ۆqt+?>SOJv8EUT c5x~QIm`s[x&LD>fy#5욷 ᵬU3ȸ- I:9x S$O/׫ *絖[ihn"8tak |dxC7=k̾-o݄$3P{s~ k9߈~QZĞ_ }k#▵f -ͻ=ZGX2*>sSl*=)1sV" wj ElU2g]/]zVLbEfdJZBk)]v? vKơe$ T/͑4,GnvŬf (烀{T #< \Z3?Z}fC *p:TDZ@$=7>P汑,jw =k>;3'/DFlJq^E3Dӌ-8i2ЂA j|c?jJ>ҧm֔a삮+ǚGZkrIZKH?0ZlOX^vȨm1h%y>G}4xT~ Ԍ3 4]xL)n++ސ~@C]N>*XE-25ICVhq܌c+ m`۵}gD'_^?_~ O)>Iscu>g|5GvfQrYXvӀ+:ڏ3:08NJak[dP`aVn9!XFs#b} f(Uon~"=>$* ZFqRi_⦌*1XԼ35fݞ=~1^yxjs):>jR:+蟄/.&DQo/L%񎫷9J u[7 |:A; =Ԗ|1<2$M,I0i)T{9ASǖk1]vڅzZu$s:=9MXDRp?ɭzľ*om-OijM]$yi1?2enZ|,<{l47wͩjr*C đ'+c!,_xO.<_t,@8pOW^Hu4nadvVv6eKS͸I~}룑*|sȕՋq>p9"MrD;x#@5ӊ"ϙ2aBz֬jB}a|9W+_b14+(~e!)[&m6cne y9ϧ'--nP*0d,OOj޳VIn2c}*u xOT^NPm_hۣpG!g!bAP:dgہ*Pr9=zi1ӷjx'\,kT LVt23֟m>^cDŏ摹G^9^OR {A0Opj0py;2UXOw$;~W P9N+Ɛi765 6c\d9SkeF qׯ? VUa"Bհy븜V%yQկzDO-w *БH?1%us9Wm},qx.>=P,f@䳬[U$0_j~v TuN{%scIq'd [F<>h|#^K`I;A9¹ĵ.ʤ[5$~!xU{Zzq!+)&xp@=kZ7ci^t{@?ӭo>Y/!|+ov0Tx'kyP ko_tI_'JU*crMt>}4 j:?klypAAB6o.<.+뿍G~5eZzn"B4ot]?L{v.MzM̒&^U֔k(9S[\BɹO+x=;/Y-! ozηj څW=@x۳vp!\x\йotrƦֱ=6}>ÞzY'e2QT'6_9A%FS}?i_Bo)˧[^6s$2 {ߧv?\D>'X ]G*䂬ֵs$WHm@5ѡ';OڳWpuivxB/9TW[ڗm4RK[Sn|5u K5'eĴi g׊.hUZFIdF@Ϲ5ǝ9-״kiGk6)Co<'܏N8bǹ5VN>)(RYU#qR<*j1Hc> ^;aOҬM>@ Ӛ4=#|WF[[rÜg}y2Y|[*3ubHTNNp{Xӿf7*<8 Ԋ7iF+х"ܣ1欲bz!9HgrזZ%F7'ۡ#3?OjFUҝ󊋏bU+:R$!:ԌT}J(U)n;jEڕF⠥ԁ043 5#U[h0GZUxqOL$->/vv9bÌz|+* "x7s_FY I7*Š1Ϟ2H=]"6 ŽZ쥽ϜΗi[=VbY57`{qA5幏e)%^%ur\|'jv#s*przzU8)#]6wsM@ԃ`"S vcFhBO|zRv#ӭIdr:'yrw$Cy ӧrܡsҺ~dI&90{2w#Vl|{{?}o!i 6p;*? #6I6˒~WIyDff={w6`K(K ,v \JGI#1 5WMgח["^B}+{6jٮLA~_캔PZrS.֎aX~xCcE:~u]UX !v i6Km wb[_I0LI'95IhdxOe[t%r?C\H ^:qңn 6fē1\;~IFuebϮx{u(8$z'M׼kh?,x c3c˝B*SHڄײH"{4SG!Uba{R|B$T}j {)Oōn"VU$z~EÎ@fVpt˯ } nKqmq[Ĭ1ix~ }3\9561[#$OƄ]xIwws$m|Az}żExWWߵ(oR[ý-\o/IߥQx%䏪gr4Ѫ@HU=sTpFpsxO"x6qn\UXZO 'I 8mAnosׯ\kpkIKDjIeKp;CM s\ؓ#yہ~x'nPn HAg>[f{᷉EBOXViU9Mzï>%їQfYeUb?9y}O·qéڽ7?qE"=s?b=XcycJ,+נ|50#]Č5ws3=ԝ!>qxXyˬDlgR4>($~- uxCF1x/E԰ VAR&ֈm#`rpj77ڸsJfymf<}1φF?PHgԙDv T=[Jo֝4田g7OE񽭯ͬb_b}J%b8/D-Cbn5nCj<;%ʶS u=9tbo &uqƧ{cygAk˯KC5Wv,ڞNM˟7s0;ܟڇi񧇵 #p0Ջp34JmЏsWYKVյnAvbsP &G1-Oic{[#:t?? 5y9"]_RӰ=Op=+#$ibLO&Wӄ)V#s_EӴHPI< rG>o垐]uzzݞaʉdf3 p3C< !Mi}c. U d ˚Mu9%^rѶbiw{XOml!V5U$8;~A'4j\# ^GA|ah丞Uӣ!y1:ͤz;WHm8`%w4!MkJ- fU6nm+7h,ВɏaUeaN5@ P֑9é;9}'k̻b38ݼv^Rv`"rm=G?Ωc14}2M'\ӧӮ5k|)cyͅۺ0힫/^G/ Y[0-wީ -Oy|S ux[;)qpETy,=Fya )H< hzw{yDBHzci_Z5t5Y̹ 1I/yՏgzF3h 梿63{ p h\j k}>A1ɼd[|5iԚLM26e\cBED&}G=u?&*HS)p+hnA|6𧈴בj~I^I.n0d+7|Uiqdm>~b3N{z ?uZ%oF zײ}03D撱e}l}UNӫc|I, -0J<1$<Ʋ(Ƶ i7yk)P@=pa"ElG>T"C.O֜'A@sJ~QRm‚{ FIW%$} :"0&'ge\6ר~4oQbV[qnkF5"Kw]Ai>ZTP^ ?Һ-h7'͘$ (ڠjf mN`H,z$ai0:2. ==Xe[=Gzn<0n;fʞq(]4P;EҲ#>ƥPmu_xN=CPWMj|7Ҟ sԚBg8B8̐qfE=j?L ,B犤hhs4:nSGs_E[#c\j4o&` +c즏c΢}>រF(O'0~gzj/8ke-)@%gݏS^~eQn q,}viK#+)"$A^)ĪO֚r9z"0~Ә>G?!#8>i5ҐCbۖȧ`MZvGڀ7н$NiA/R2Κ柌|s0jXщ'4mG8-~OԷ'^ 5 VD$M A3W_y'3H9x^}+(tMto͖k2/66Z8bǪ5|~Ě֯f)1u|b{}S1Ck.%DC d_>iSinʀ)&q\W/|M2Vf;_N;??OOCrvơ} 'J2}?*%#~KNOR[1\g M!fV|V*jcR%ゲX6Ζ6d* <^wr2єu ]n>Y }^q*A֫ <\epO7ÏE,~~b?2q\֡;/ xK=zcbԅ]Q!Lp85j+y5 r%2$l`kթ%=*}GQ1+o]ZX!`/pZY0ɢɓh5&lA p=:)Ļ!u6Hq2::WMK8oF?ȪQ$*vXqX`ܥ)aJ޴5ʹhF';qZ ve!q'vuԵ%mѼN~U4yt9K_J;I_+Ek9>T#7L~%֥xؽG8i# ic$X4)GхOxf/uKXUw8k'Hdı4:z:ӹV>r'7Wwϛ!|v? /6Cs.謭Yd2]?:P5SdcuU+zh$q!ԉ8S߄/J9f;\eHzkO}'I,\=Kn9;B=CB'-L+, <(q~hVigu.~v}랸ԮZk|=ja#4ɹnn5+vc$9%c$ׅ-ؼŁ c>J]44s=sP\kjN1Sq[h\wMqjWi@qf;# Jc sV5[=Le1f;[:ƚ#̲8lR-Fݮ%ۂ7簬E1ҝ ?{XȀ8hH*o!e/GJ% p:ϦjepsN IKec'#$%KևvROaXɛ5S`]NzY͎AF v#Vw/hAqSHbvH?ZAab=qNߌxg1*㡢!b]I`g} #zҷ3E =Jwzq^=i6d}ڤQ~Nx}ꠜsH)LrG+?aߊW>h=^ 1:=M5OMmNy?QTTJ9፡RJ1#YQp>o\URCv5b9JzH–Յh0 \=98?+.qMб.־tCUՄSK˟Cʾ}U?}]b{-wDRºh+G>\<(5of M#\r^`p89xPW܇Q0)J-eI#1ۃ$ףn|#݅8VW[Ϊ[X-_(%H'z'}+>8K0v!I81^ [(8|ˌ~溭RE wE ғ +gďx/Hk $X-բ|V zT|kgoC⻘"K|#=_@IP;+N>B8Jmg7T$ǒ^k:ާ{u.z5 s4w V88K']N ?u }ٓg-j?u?>--QݛkՁ^mԤf6)ֽ/!gO HԽ)y O*zZHU%D<}zT `^L%#Qc4Lq 8)=>7"tҤT'%N9SQ8(#[5W%qRG wFv~N\\@vp; ,8zܟz:ӹ6۰HA`qҝG=գN1L,D{ri!IqrNROzV$1R@7z]#P;Qqطso*ġ1!POqF\hڭj$q*=MQ#=zT"X֊V!5fwzƻnZ<7m!x^M'yZ>& YecyLԐqҴ,EDfNC/#Qu>W'*{Q۠Yڲ4k# 85@k^NJ|%h,[(73b~g@1 1\,3,bvgG+&~irܻuD"{k'%"]8 (m.2?ow7P#&~|7 V}wMޫ=) hʡ.0W df.(ƿvfMz$GOe!~v=YWZW<êI{w$GeX$bg|K m-4{kxBL ؖ986anKI>NcM'o%gx&H.c&Dp@;W$$h ^~b\mT0t*16PO L=ݴYzZĎ%,0Tz5SE ր` @2*渒 qNW1fPz❀[8V}]=5H?3j5 s/lo\]2092>J' ~AcmIȮS߸}2F)ԠcϙNj cSBށd}ZB6;}iG/HL`@~%Xwr8mdriUsZs1@X.W ~!*prqJ igx&0C]|wŧë u «qנ|}i=#ދq &3( ~'`'.x? v#L2wN&ɠ&ƪv*wc)n@\Cx"Nc޼vbh(3H)рx@旨RG",$kh*[;ޜQN8 ;4(@8SJ R'rB)r პ3B?# 84rzcC9_޴]dPM21Z_ W]N zB/֖3 gZ AM q0.v{l9I$VUGn8rqO⥻"I]V-OXH yҗ3֫ܵ|p>q/r3kQ-Z_13eaCrFIg,.^Ek>$&}6($bytu D˸D|$㞵|$$} LZF'ERuޡ]xԾU=G⾅XQvk&K+yr!>6""rq -Z}]Lx1aKR/ې3`?Jfx7O W)xf^GZ|L,hϾk98A>ZxXKmmj?>16;"ebvڔ8yQ^84x&쐨 y~+u[ne}m2@Кi44g{sޡe2*r>5[Ǫ궐ɜ: ~u'i ñ o2h|B.k<23;rr&WOsY$*3ȥIj%jE>0N8>k/r3ޫ'W,f ЃH\jj+d)\ >OP8BIz!`EMa rzjp2mP 9UkYQ²#ë6&ta =he=)#SZwA_N!+ڐnNWS=FZlni 3R!lR5sܒ COɟ{bij*ҭ1 S88(qN.q}ig 68v]d>b8c(G8]wuDHVEebqǵG>=3(ڥW\56mq ux'i&XaG?qw'p''{6ibSM@z)H8&n3d *E;T2gMfh?i'ңwH c='l9. ޛ?ZnK'aޕqŠNJhlәH4,:.dؒFDdzqk1[T:Ikۦ%y$sz׈ѕ,Kp8BWzR>ks~>%ļ>&71ђp*{Ụ?DzU wrHGaY\.X$V~*H5W'RZv擯lQh2bh8=)ȼftRv' kF!vw$+ p>,j~ t܀3΢Cu#vt>Qo[OP$v+oWS[w W?+~>ZI7GOе;W:4Ƹr[>c3 :LY[#8Ԓw({ oDb0e}}ҵxN}=̰y`$GBFF{־M)/apc99{6prQz_ݧ< WOKO4@Į0qN9|9xDi2y'#h%)x$.9'7ECѧACZOCk~a^kuS^ޞ6i٥SpOB5vdr4GXQA.v+=3Wid8bj'(ݟP~͟#MYk>'{8!ة9+֮ߺ^hഖ{4C_me npk53^cmr7q}VMwa QX+Xc54.Q9cQ}jlO[  " {Ջ@;gB! r:R@S3ҿ@?c-1=?h3Q Q51Rֽ:l<4e\\1@ºJ1w<<ʍJi+w?Oke Ρ,yn[{׌WSoBϊJ9Gsgȱ|5bl;s">/xm7-[\=4gXsE_?em_v,mmy{I9wWWr9{ o|HռY˭ e+ʪN &n-jERr\\*s=o TK62;`NY@1ndQ2&ٱg PK_1x:Up7ϵXe8 8ph6;z~TMlki=띜 v#Rަ{|.ZuL/&,XJ&ӂxwaڮ).pQg.ywh$:=\4hђI#e翽l/D_A8xHVLmh80SYNY#tZojEsZ:EŶ#sTHȥvu.~^ GǮ=iSnԌLcZiG*TuB>S1Ժ1.}j^>N[ҖJoFrjXp9lE5S qq_~)0)nGjȠ9PIOr'|9Wh,E=rqƼԾb[=tcz{?RHBQTWɨ~к1];cI,TSƢRzz 2emVY,j% iCgU.ڤX~1Z|9φ⥏kcft={f4LI2wSZ-z`6;Z%wPn<#?ַPqY~SAXjhuino"'(* V=z p r8 Ӗi$NjdP7p=hTN(W'~FaNE*Z@e} oJa`JYj#_cM 99D ҝsRbqɩ*N(W @A坤6A=KVqpC8<C8)]J{ICKp$qО 99] M%ɺA=l?{>ޔ.84sJq,Z3${TءGzTΨZ# [gqJ,5V =E:8ce_iyQ7͑O_v4s &xGǓ ;zzyRvjkF8'!w8!o v`L,y %kO@a=k4$ɔA$1_@VŒ ri[ AdWSp知gFG_H2;VD ?OCE-o}H W<'ڤ0j~RPXR {[cҴ@ؘԎe#K{gZ?W9 })aQI-ط?V- O5">RHqqХU"`sSޔFp( Fi\M9#*y]1ڕD,NX=*, ֦,>1Q5o /Q_kY]If5;RT[O 3N~R{ r\h@2꧎Nz\I;O{ʮ lA֛B t8'rkAT$9H6_-.{=XnS2F)XliNi=) LzSy8CPpiTn gۖ8@N@>&xyE/3Pֽ xh $q\[]=eUcRAk^XB0?}}5޶KӅ^V)cJR:q~=^ %uۖYeXrA z ~О)c6vKNwl|cܚQ|\q=N?`|mYZhPv$@1A]eoǞ Үf[.0S]@rOZv7UɟIK.!Kpo%+8Un`c|><1pp=[? #>sZռ jvSGW̫AI{vx~Gڏe!X!ng 1P;}Maj#5MoMSԯ7O#$<:&͞KjxKOZhj='G+xCO[zIZB~:/J?iwٔppS/}S OtMLcӊWE(3ͯԴiŷ;s: acOGY~ߋnt-&$ZH\C=v{x~jYdm`0}2 {YEέ9\rϠQO 4KKY׃9eHK$n{XωPr{V) sUa*ݸ@8޸n}:*s'FaRMi"Ԛ[XMYjǷ GyD`m# ?}ow [_mfI 䃒^M5x_:^xNd;$k|àQ?d>Ӽ)|SX2񼊀xӎz^jsjjk&rY _gDG_A#M[OKjpHe;,t4(ѫ p[_^~!𶝬R3ujHHV&lmP\vuiVJ[ڪ?/?foZ5[+0?{i(rzW?Y_*dj|@XB0gQڟ+wgV>)T9b]}5^g=h$6qMZrq^{>U d@qҘ<*Du=GERzR f\o')BG=iH;\Y2O|AR1g<Ɔq!9>\dҸX](#*6($U(\Vq')b<?Κju)׎*GL(sM9c8;8'=ȥC-\b l18ZSl"QzzVddy'4rFې*.ԞW҅0s8O Ei'?oz]-& IJ \Ulsqȭ? Zu("ݰ%IС_L$czp:WͿ9̙o$rcP+럆l0J7*<hmVO,g1[|N"mZVV^_&\<>VVؗR9#$*pyyDcTZz\'%{X/@ m+)V55d/U#U\ zF0q3Z~Au+]o_f[-*Q3Ak(o<uZS.|;Iұ$= UZ+15Yn&#FXƮ\\&''BĞ6~d($n*O/< B"#`"iW#3dҘO^FwOBK6=<`5?J, !{HKCfcRIm!]Ŀ/Sn8=z Nt7pGoQe3yV-K1@?hVN3dJwdFR]hn7Azg#)Q:曷<䊲+1N. 4@sC}(%!Hsy!CҸ(c$6u╔ bή)9\`uPU; \m$yQOZH_484J@;y␆c*E3 hٓ@=3yJ\z (܎ƞ 2J0G@lѰ T4Ӹ 47q@拁d0 syL_O%dĐ?_G~zh6H;bahqߧ|x W%W̪B8ՈvC =ی;G7jNO'Ʒ(u)``TQGIJ6s $s*)#< UIܓS!V=#dwXFI}F$OƑ8酘wH>oZz(@"buZ+ )zt4,28zXZ0Xt!}3H\%vJ2$1aj7$gI b̋ƶTf9t4  ?*wR-2\榵WGL^"LfF:qR+1`@ $W$ٛ;vQGEr3$N*MzqZ1. P:) J˵H9(^͘;v |֨A)8CNU#$u/n3$6ʴ|ؠ~SJ֏94̫1`q}*{q8 gK2Lsң[Wzt1nOC>Շ"+G$ZUh V) Ԁu]VB sڜ6TqRy[9ڜ#9S)DcC.)XCr{ԍ<S^zv>R$ (}R{RerMZBVdsҚqz.f;.Ökی-ޥwu,rɐ?*$AlV5B2<+#`pZolҜFB(By*pAݑ҈=i' )X+Ü ╰9ʲ~zRy')}GlXaI?ZsK"qO\Qp#G 'HC| x85 qj;vS ZU@I=i9j,q&+ u}G0~B'֐oQڪIN UNgz @<ԍ -t'55ܖ7* 瞴vJEIzq\qt$%\k}`'9O<:t={RcH.y㎕1jЍM''chOsAB{T<~`O06JXcww QS:f9HЍ^EBR犅8 BɟJXݺ`V2v$ ㎀Wx{CB<)rHlyvp|ΐs`+ۼQ"YxKvc1_7Z|>9hoK XVj[tsWVW֚i uޯ `Az񝰾/T&1_M:uۍo׈;d-#QuA51snp4QDQIȖB+޻?>%7l3䷌#_\arC\wg` B)jE2:UkB7#=* (_$?8|j2m֚AJw1lvHt=(D _gÞS?IDXRĿ j kgȒkm>& t޼K "y@TrEi9\\O>=Yvi л^y FrGt_-忆P{HU,Bǘc<<WS?XRm/LӉ]z0S)?c[SӦQm$ֲsq\'+5}3\Bq6QC;m 8:kj3A 8QtOBsKzR  YrPWoHč =떼 w"N1{U\#N YگLU@NǙ%ysVۓJmhQr:|ؿ`7*:t\V՗f{${n}¡*ichB~oT;~kG޴*k_62T}1TzK;pS_L]\HVMy}8KoЭB!D&u=]";w)$ >( l^Yx\^*uiV6 ^9SZ^Ji5K/ڿwI\ɠxWՌ{7̆ N@\|OXoI *H'77Z3bI=+s)^8gg2݅H;SE7,}sb$N;#Ҙ4 vr:jv1;iF:bD8 ;OST..;61֕bO~I<D9^Aj]z1ґP:HIO)9}qʯ@ \U?(yPoN$g,(<RFdU]ft*VTG Ŷߴ_^lc2yBJdVdRTԮx+lt9%܄,FωUV;{(;'Sv+X$qЫr1W E摜;>XڱB5TJeI ]#A e.Gx1x ̉m-X~ Ƨʗ ݅47WGSU}SvMR]nI%Z*#UQUViI#@)߰J\zUn/ۥq#>Wt=ߜAY( 7h䌐zӆ9ϵWaʊvT`j=ɒH6P ђΗ;*! N64!Tg*u&rc"Hr @9LR RbD^KddN+R`= HT+wj.xǥJ9cnN) \v1L Ӊ݂xXxTOI'=iNtjA拈q d 19K3c'osA{ {SB啱]v7^W"F9ҸX)Nyԧa~rza8`;DNh>ib#>dp)ÌeWҔ.9~#}ijx%KsA] g# <@4rp)[/C9,봞)#496c!O ڗ!OA czp Fg\KH8Vё ,20G@(0{]ozȄ׽tF-pNhïWvlpQ|sZJNix 3@]ɥTTFUM=qѐqRJL}r4|63HcSzTC*MXJ 08'SczWIH8^2$vi@>|mu+HXbQ'H9dy>ԊD1wIJ9<j4V\0 QӌqOy *dg=70e9SzW-Gdٽ(D>rj?#$ZJ&*4$g=]L7ͮ:o%2I'+7ٻ|1[8${.O[|mōqFSn8|Vϯzhex A\jKdqɯW`So^-K0!w cWB4.=~q V|1/xw3k6a,*7QXI%Nd.gRrj`r9UFsIE$Vh1/1َ%pn5^˓TX)#FzL]KvNF)&0_C)  Xˤ[`5s0ϭiw9ca4|I}gƞ |Cϫo\8YoԜ~ 8܏ZgF ; *w dpi-Z97}GJ᝗ߊsͩO+yIn N?V[[|BD1CVc4;' i//|Fl[i:-keo:,IB>mzW-#čWgߌ 1<òH d.lZot/ x"ro bm gOJ-V]κ֚gmSR23C z;yTEٻJ~j%6smcrw$gSI|3/Vcy&гfl\l<ޟi#֐2Q6?G'5|!_;xTt~_/Zw$\)T'owj<}),_SxC1Q\PsHjb{ےZWF'$1$Ү8.oM_N1]m4j{75*E8ǨPp=+v03L4 ֚&F\Cth6[mcFa:^-'hM%lɱGQ|r-.m4x66ǮOD>sZ'8%rOׯC}s E@ 0]߄d 2U;ww^'м-Dri>2[¯I((*H*^?5=a5K :զ 'HsA K"*Þ֚<4Qд>ʫ:4DwkDiXp}qV{4VrZ XMekI60G_ZF.4?0U4S<_wOh7&%X 5ho"*nQ'LZ\ṵ  ؽsHP39u$b[H"acc,v=.wNP<+ƨi[e7N)~ ]\:d_ξ?vt¹ԧ#bJ*VO?B*Er-ۍ6+7#dW)T> #LNuۆSw|=|0~(|J? ^6ɊDI;˞p;Wm"حټ"W~Ś[?3*WHv?5RnI\X|c]^Ӵ{ԷY p65e ;tzcNfV6WW=@ kPWa+Fzy2q«oɥX;[y=b@F[ӚwSϽ!QZQ,@Qvݍ]o(DIl" y37M(æEJē}((WǿjIo;A^~cQ:0Ӛ9Ta f2'HUGg#ʕc*^|muޣ{s47{s-GqF*ͭă9H؎ǥ}<~6-8$`\YI 0lu׽|#u sBOc2wgA8kњ`񬽜(?Nd!eXK{+ rk1xݲn}ʸsz~K? l3~q٤[DF5sjҺH_johzM]"Yx-o*8jU5-}WJ"D1wm#cۿn~ =#q{YNaW앏52+Pv k'Z&y6ҷm[zN_M/M#gBq_ufؐ8$+2uߍ9YǥN'$1_ᅤcq}Mw%*  $͜vRwOZzLO$NWj!=*ï,x ;X.>؅fUgp F)p~} )$89<ВvP;ɂH9=mg sN\tށ[u2n ;*8;X`[03rJkpU#b;q5+QhYH+7 N劶Oֽgwqe$wb;(_oK7 S(ľz5s(3ǵK,4(u*sRH3֪eGPX 搎x8I)6 AT+c)pHҖ#&O,dJڐDP 8F1y1ښdRXg@BIj JS %IF0O9('"׽C.FjB8'9J-A721a=j]4yjǒhg!P8BȦ8#8M΀I_,H(h =ivN{Qc_ 1@V#=ML>ǵ) }(_}Jv:($w_Zw p:q*`I*/9')A-LCxeGH$f{*AHHv{XԠHJHx^?9?^) =(גў#m'LLuTe鞟zR*b&b7)bDedq\Ì쨶k7 u#Kt@#O5V);X]yυղ1マTuoh kF\nHGZuUD$/#SSƖH?4gT;hRI/c쬭cҴB Z6K?rG VՀyٳIRWT 7#"mgN[xn3(E8azBnP.;HY2rySywFq^)]}zPsd晷 w#Es:G4189~Us֧ A*X(|Vr:Kp34֐ʻvs@V\lo9Q!=O" ǥ;MgCNøxHP284Đc~SyøՉWiy'9GaH7"sJ#'$)@{OQIzL)\9#,'vnn#!i(䓌w48?NmI>GR~3ARl90A@A n uTV֕̀9*3)C2Q>n~+'#8#d,"hQidр֕py*JqJ{i_ǵ.ݹ=1={Ӑprbcw1( qcޚ[Nrz#xT7! 8某x=h$|9sQ9"Rpzi81ITGLeP mXQ*yB\瞼 b#@ k2Lţa!|y*۱qcbİNYFx0qC (- bv $ձ֥|A'pE80OZle9$Aޤ  Qy)FFZ CyX_/ 1jKDG=O*xv-sԱH|̕sPJ |)wgA=?(nOK.sڡ]瓟JXwr{SYspkVN4kםM;Z\hVQs8xMp Zyʄ>޵HYIlr?qz-ŧ4f;,Ü+z#9u]31r{(nn.e1>jt;:֯ JkXhZųУc>aː6ß)љnTڲz=ElT$l SV=jͧҴ}O秾=i_J4-Epn~=z7 sᏀ xSW71Zi7=ذ^;+HSsqŨA]̾|{)|9l =%z7bkoms[ m;{`Ww[xG/x2i/K m0$tϟι;D|U_NZ."},Oֺ8Esʖ.HJZI Sڮw}gs_Zc} !ve ƭ[wo,Ƨ_`p@#8ָ>p?Z'tMJq+}5?TVg+~Q_8x_sxQ:rrI'U6q"E 2:g~:$B3O8H봱נT=m.y5cq$x76iklb[6p$~~$XM.iɆ%"F_m\j$ȑHsƺ/5+th_WGV8V.~~i*ĊQӞ/۱ę m^[>16ը 7{sPH<n^Gh/GoE2OyIUZ t5꿲σ#Fl.6իH.f͉~ΌFx_ͣ"9)=oW7=cKM45VF1ּ>& ̈wƬWdeO> & ŹRD3 =9M>x8?V ݝ{ ٧ }~{4(%-U=Ͻ/ž FtlGv3ָiJ)>?Xb=cB.kv)u s 6 :-ӑѣjUx`R7O׸ԯbV zͽؽyx1=zMZ-Jn y=XdI<&#'5%)T橫;0Qȿ{~^{o<V6mlf!|a1@*K d);Xqk|En5&ȳye.@qXMH_:.nVڴc93Gjxz66J73 //:ތÚF F[,źg{IλGnjzӉ$,p{sJ;\, % ޞ `ԳD=>A*daߥUf*6})ڃDK#ZU_|7'b$ |jn0IqHBTiع=?Zn0ڮ)<SAH]j };USQV`ʨڼvou"6++&bXSR\4=EBIlLܜ8h.d"2y!Av'Gw?iڞEHe٤ w ø㚨lrVM~RFǀ|rQjX?c:4>D 3 6׿+!kkXa_q~ݩ% ir5F'}+.3+X+|,oxR/Qڍ$S! 5:ך[xq}z `8p+.%İilTGkto;>tܷ2=y6plhF~.M ^`9p*߆t Քgd(aU긨;~,AݙK ZE Di ˁ+5IqTmp뗊k-WEPeW=g6'u7/uhdVfG;YW' - =rBIJ=3_C~A6fEUʫ[c$!^B 0uaәπMafnN?xYkYlH"8'$ ־@N2ھq>4jcK!.sqק_ 0;-Gv{Bjݏ|0x_ZN?Z=Va $iǩ9SBBW&3Q"p3۸4#fcT uP. J7ZC/^29ǭL杊SS BՈl!sھ #'漌y]*XIZLI'SE1YW}g'&D$9Zy+7M.GlӤq'j l579̒0Ν8i~f?21-< ITD8'?"F܎Mr}=i885Ә tߏ֪2v.A*&OL8u szV;aSF8aր> OFE␬4 u?ɩ0AvF0hg$qOdی}09ޓoHBis(v2M1If4ܶbNc*mBVn N?*+WF$zd.$"e6_#Q\]٥Kښ/NRKzsJһg2JV0o8 16 y~r(Re }3KZ=%ax`+U$h·,n5֕nsהVރy!{?_wSef)A=)M$3u[%)^~+ь9l?c)<})p}r7|Za#?1QOB-ˎwQҁXUP1܌ź gMV;)C ׏|S>1ޟ=;.;͸' RdqK$ҕ ֐XjPK|*҆$=B $`XS3Jr ÓB:<|' w)")CRAN\ `&$paZ#d'&B-sǰ1zB%F0p{l8WY@|jE=^ h*z4j8;Vcސcsjn 3Na?JX \Ì2qHu8GLZ6'>u푏0WLdfZB@sӚjT9=܊ar{U\cjLlL29Z<뚖R"'$یRz`S 2OLfݭIh`C H*1ލuT}_jUF1ޘ9&;ѩ j#w1WCd~,ƒU^p*1PqsN=9F3֟NyYȤȜG|פCP"Dg_מAvrMuWmajW,R=|rh׼o$b Wyp#ʢyp>m \?UKJDq&YZN x=pIh:8v@wVDlĖMnFFT\tP_@~_/ hS{p0 Č|ĞpUok7I]_j ;~uM[gk;fd̒ 9ݜzzW|gyh游cӿ{j[->x~$b{C#Ԝ/'z_4ۭMMY`]'iP 5pET 7we|^nzMK)v/xַ|y?~=|UnZm:yQ3OڼX" l({&|l];7' ":\I4߂@iϭ[ti z>o5e{G 8${^a,gegq5(|2Kylv0 `6~eDrsס΢sCJ,#qK|Юìh!~h__WԮ5ۛMnb,0ϧ9.UeUT_? S3\vs +fkN({$=PŽڣ=h:&Dmbxú$7qG¼gCi6eI! 8\Vg=U.mtkISKE'oC};׀_4_he7i%Vb dӵvcѴ{Husyh䖮wYoH'an6b7x7"/jl-H9^34r^OetVc(@$d~Un '>">z,}ܩm\l}k|]O-,\H)'N? 0n|1#;E1BqDtd?֏,|?(!#=?7zUځ`snvoB|[{u5rvqEKEm+aT($:ßTZK} ?|7'[YCk(,~jUE0ۂlJ>ɳ<B? /#^+uGLi,'QѾ@p32nm5>}>ĮxʃFznc?_:~Y_&u vcEk|GE4+$w s}+cΥ]C ҩG_sҺvgl j ;/=:VjIt;R[\\C"\&JW>Z"bN*V=ri\m0k5tG,-Z+іiD)b/JHl @54<jK,2&={qU\9^]ouJHf m6yH {z>,կvIW աl[*Vx(SpPg_E ˦,̬A`$?ËWBMB'1߷׀m%6^$%W|K<ޚ(䶿"?.B_;|#SkZ~j]M0Y Q2q*6}Ou*Ú[Tz8'21Clf|6˭WP,Cq [+:L1RɅV1ʅrG/ثMi=9/c\ <@Z%)F ʌ+Wm~GBu'}?c\\W q FFk(S[ oNFP}\c <k?}r#~MxG[yA; V51.gЌg"7i9(YvYse)^z.ᑨޛ Kr% =DŽ>iqh#297A{k93!n#<LWw5ʲ+'AkT(QIt2ԕл=_ɒ1f'5-5? H;Xgrȉw_boP u0e ${W-)[FҾi0"{˙ 8TP8 |wQ0kjKsV,rlWeúleJG$]33' }OPeE `|y#mFY.gКJLd3\Ϣ_Gn ^S pGzPsJgqeLcV9#! @@c +<` ޵I6E; Px(L;ҨXW$TǿBz4<e < cJ#Nŏ ;U qP<OZ$)<֑3mTQsmeZǃ鹈xuOː[z׷?&X ;7bԪTo{DP V@Оlcȩ#PM<S˜zi+F?:~dzSx^ifPxt'oNAM C=hG T3h>Ҹ:qp?P WzH?J8|=(Uf9)H+ɤ9sF/xQF0hsK7jS@ς1R 㚐tCPX`:PKH`c ޘ6RsJSJ5#|.H#ҥXA sӰ4RwҤAM;ql`lqϭ "8'i*8ԁKdIp '{QAFI=}*BqrDaQ3# & =pJyx j)ϵGq6 M;G@+9 >b'#?o"[83ן;2O#=)]ZQ;{ 1FI_j>/[Ulkb茅'#r34"uÃϥh(Fh nj9-J ^yFi+j-:}wTK TJ\㚲JnطGQ#ІU'9,R[ebaJX#YVዐÃϽm %Y#fѲ@Ekv+ei֚rh1Xl^>^U.@}XlQ8Ϩ[&g>0G1RK ۚ&:;hLCcc^n|FL]~>ش tWs1YR#z n{G,ǡ䃎)ͷh +CDz ]:$6F1ZE-Daqt`1f<E Ѿxs6(qҔ(:R <{ԛBz U6za qU#ڐ1SN`q{V$ g'SA x7\RdAzRM @h280Ǧ)q O uCp0~=UV0yoc@/$sǥ m;zPkvdwdޕCdґ<qnr;SQ rƑ<5G*q B9d){{S =8`AR q`o*09!{QpeixLӌJB#l8zJfs4 Mc1LEB9 3q3ڝR\s00'Lp3Zd4YθJɗ9v?5m'9v ié bZs[܄=>|If%=sVEY6&n 4tHхM),[җf4;IJ7rމV~ O#O*GȨ<ܫLD8V5RVQ@z 0K@\Vl> ^ɽܹ0Vu=SK+7;@~گb=LZ\X $`#סԪrتtlA4䶴6s4?މ[ڨ=j}NA=sS}ypWo"\h)o-ij"ҽH~#j~ѬhWux{(ZGp ƥo5i?9&%/t^K" B89kx <<ڕ+:T}' ߩOWPOX븊|1$W|$KuԀٯ_'զ?kvtHͨHeV%BI'5JP5Tq{#bOtVM+rlV%-?‚BS'2Kld΋iy-ׂ6o)K\e{mF [G7IM4,b7?I<;\VQ,!Ǡ?xmρ!Sc7rmOY}ONd%:5Ax$?NZkwߏQ$ZV`|7?‰T7+ U8I@Uwn隍Cc{VyTZo8 +>ag0 q^,}:KOQ'٠%2ծ!֧_Z@%Mcק4lKs' ,rqQ->Z_:Zsgki'2PH-Ƶ+ŵ+&gŒ붔V3iu("աoc=VOJg\tRxÐ0N8?&}:\R9H@nN)");ѿ߃>|\jh;;bnu_:cwiW(I7Jp29xirឝx eL+2_(voI,ze!OI!ɭ&l#a֎=1[u;dg WT$ݏOj/2A (?ɖw2sMi]۞sJNNhэAY"hn^H=xq= 59x7ۿ\L4ny=qTwf+#үC?1;UKi \OTV:\jkhtO][xm ʤ-vB$gN~1Q:f&CYqϯ])#_D$,,sfWl^|Sr蚴%WΙN^~aYu߈Z}Mi7O SYO*?Y]|q%3ou4 ).A# ޡѠm:)#,=9bh5)9W-ϬJo{HFߘvqlzzϻTi`W /l2A8'HmBo͕֕6PE.*Aa#C>^1}})sD i腏⮆##xӌr,x#$ڛ=rI=ߜ89H$4Žs֓y'R" 3l~6z8Ps5C9'"I G\ +qւn,`s41Hq,I.? Þ(Dq;TAf' hȚ&V6!f 9>UUy-f T]ߎ<-yW{qwt ~qڽY=6leӣ[' u*p< uU&ׯc`Fs_Ců_õz 3ZxgR~wЬ֒lQrƾy?_mKio2 U= jg6gZ+ &ͨ?ǫ+W!F51%:>XOZQW VɁy&v:汚ri؍W+ +ԱZmTi'Lβ= V Z4HBjS\ T̊1M]OnE>YPkufa _NV#lgoI{6&r]n+.=i)?D)t*9@чEmxq?h L1r0?#^].M>NF,$\&RN(G}n[2Ԯq,q_7?#?V+km9o#ߟʾzI랢徧`,Dbv ֑(\β= |ԡvҌx֔6,PƅR[)0]w+ SJbuy; eL[hsi16ۚVrKN:\hXv][ObHԑ§-fcf YtS iQBlJUdPӚG\jF[G952Zb&PWAЙ:Ҧ 4XaAaާ Go=?k>CKoQ {sxT_sB /^zj<dS ;oΘcҝ@Vq)y8 AGL `ԮA'=*@p:R*Ҙ 0RAx\YR.Wڕbzl-s=($9Ұ|0idd~^ᏼ<h7 [^GIkϤx :'de;F[zNW?=BtZu-xyN59ɪos1֥aZ:\K)G_ʤ4@$k|{%s&q\l2A]k LAd'9oF.0@ҚwHS3Eܶ;>y-̎"-2Y|Սыśp984 3 !ǸsڴR;7FIfK9aq9)"';/K')bB==qKb8sN^fIwc)Aa]6T b]Hdoz#\MQkΜyb6!evMm1@.l{E0J> ˂j`saQcђي6aAW\Ș#Ee{jт*\ڤ]bK$s3.jlmWDҥNU!fԇKרY<giOgu HJſ u c&)IdSN~'.ZSyv9Dv>??I=p>q3E(kN3Q]wŹVy׳J(#q*@sM7s&837@#=8߽8zުݪqt7zR:sH6 $dd\5fk8?y\)8N3Ar)\h߭(g%jedr;T~^N!7ʕ6UXԏAVWcQ\8\HrI0ev♻)$ZiqdsډrFFydu1 QBAGR71@s֕UAON P*:I:¢v9R@,FM*#@A˹َ&3|v>d*'ꢟFS<v]iU zPeqH`X|22B9G^1>q=hV$c@:ݷ OAw,ޣ$ر$ FFjLL'46H9 EpOzy SA'j$lcj!nE$>qץcy%"B]23vCŚBřw Awzp&C'Dh-<ws]pvGe;s2WZpZ_\Z4-F>K'u5H H~a%_YSN獎O~5WLdăԟZjqG|w:5 #,89횠wdOm&IZ~z\8_/I o w(96+Sktﶿvio_óq#JQ71$ msvE-fD&8ֽ|m>ҵ kڅZwiCf,#z6`ӵE%RYmm#n?k8?mݼMu{a6&@N5>3^}v.h*=\>ờh+.ŕZi×^(Q+%k-^'8 v=x21GHLe+I'{\SKSн:F+2}9uBȊjlw(¨xwoC8*\->&Nv/ V @ M嗊<3sg{Z) p! s-3n</|QELJ^'Xsw~|d ޥoVmF7?gv9eU9lb&ݓ9gWN-ߥFbxVjz;ۓTAP?.KiPA{_?QW~i?z/WUX ~PN* Y&i+A7 ?E+C*RIzoٷ֝,r[yǧV<~;Xq>%/mNY.Gm?mF/7=͐:@b]q\Dr+՗{ 8$g 9GI8 |G_ \q0};c]T-<\P\Q {]h^+}hX#PfC<׻Ѿ.|A]ZeVY,͂2AxG|#>cG@.If%E#Y3^'cQ:Y\~U{wKu4'J46>)i_ƃUojs\Z&bP0@+j ~'PnZy-.( s=>~(0 b0Zk?O6hx~}.Ú;Jh%fiTtV2}:MEݘb7%th< >'XPl\ Vb\2=i~rN*n$敉564U6E,;g&c &ǶZvwcSrY;T'ғ~1sElg'2E5@qN ڙ3A>W>q*ٽ^ok5Ē43w<]s_o=4 MG\B__ {6Kc}j. pG}Z?g2i[Vo&@۟ҕ $Y}ޭw{ߎ~>*эRHo|:yPnxZZߙ25֩q(z{Kɇ Xc.i*h4ݎ|yl~x"ri}X@ 2KA7rdb$1^|bցšx?׉%f"^Bqr/ٟZ}յӒ_X2C鞴4 ;*mteVQH \;׭~vs*?>I#wlZ'BLz҆$t⛴G9 FOT$u^Ԧu xZe+W$2E%B=x8gyrYA<$S=kJ-,c4lsF{э>C49gas cƞ"ާ;Eo9 'RMmYB"ùx؈V 92o< ͅ^uta\L-fc7q^N>z'7܁A^o-)tN:$Hɨlz CU$s@9#@zM8+Іj@)RX=BjݨF "yaZDKi*~iqPc ٖX#Pݖ\Wib < yG;-d'86~B 'ڪ=sj 12PdsO#pP2'2nHJPsۭ5XKځ gq iy4 `~C (bCGvW; 0wq޴R(Ov8!l94͸S 94ܜ(23rڕ\j5#h/##N?aßj@HO^)0E+sF=33{;b>dCd: UlGXcLN:j=}8N,b1ނT.Lp<}ihŵx'y{ jd w(rF>lrjT©5!sҝۥ+3IJApJDCgWݡ=')"OEڋQv+<[ᩞ ^+4YspUwϿT7pt#9 g:6c#pcWn=SZH`O&9Ql ;+f@6 FpGLVNV=}'Xo/1K2?'5p 99W3*柬t9c^B{yl'I>pNG0q9Y[8LT<( Bd4W =JǧF׵831jϭ F1sLiHZL1 y`1]`d`)BO) T{`9rۉ֛rzRZ@Xtdl>0zv>lb xRSoj,Q*'JFelp U|A#0 0%:g sõUgNCSiJ?ȤɔF:g5XD}p1Ji;HzN;wydU&AF9%iX v&ܜw&Ys򞂦@3jJ_r'T !CIY6`:eoJw ,!q9yPg=N##Zdp|O<⫻9Ix \MG`sze*>X?ؐJKuGْzi Ӟ0K&#"9}jqzh`SN݂qǮ3Z9َ_ZczҬun=3 9 ֢,O }6zsnNbXzP;S& !?ցXq Ɛ7<2 ڔ8'ąQ<_zX Rabr UopܶGd&15Ϊ!PI=k#U L7FvW&sqBOJ3'fHpqn F:uDRuS r1ޔHFxޣ#<=.w(qC$:abBNA9S#Q80Ojhr$ڴM@+~#j xC?\"|7Pϖ X{Jщ?vǵ KgbUGJh}Fg1hq˶>lrB xS{tHN։sc$3&.Mu<%r? +g>~1 5֩]724BHYvҳ=@~h덶{jfg+Þ ɯKj(g+$0;Aczk֋iO .,6qhH90^s4=apܩhӴ! fI%珧ΣϣC$q[,RnDDۼg3֗}5q%qu h'`IW_ /~^8=X_jZZ:E-f7"E\S QgX5 h+ w=%,UU.z]-al]lG]?}Y^iK(Вo' //CV$iW-_cWEJQG (UO}[/FaqQVd8R1#z#_Xsf7M vyAvoĀ=S^\q> SjS/΄dwy)9^vqAs ]2` D=$UCtK ӸOr{J=M> Xźzru/T{N^9%B+d"G h8 zV Qސ=؀=;Sl 58)'%}5^#ѯ5tk",9Vb [zDZP?*cViqb%|O+=2n&- I=V~?]{.6P3:ٵQ>~?y7>>:O|QM5epBrڱryTیHՉc@'$ګ892x1zkԬFrFp:wM`E$̋VgM -'6Yj7 @su8jj)db9"(>qo%$.B1*q1VEf7:_yODo!YX#wJ$@0yс!.<+4VKnv5's; WvӚW/˱K8qW^I =p;Ҹ{93Ҥ8#Ү2G`tEٝs1\,'jzއSD@Ng(`b3jQ6 iQyNp+쑞lܜҜl9j IU8{һJ=sǝզH%fC,Ppk_x\5Wn ?V7[rcdth_* *b>}%G? |#}k̺?fO:.`B30-CId]BPp~{xDs\_Ϗ.=Z x`) qv +1T2wg^s5Eݻ_o+~$H4 ggm m,e?|'3>FXlDK:/yq5ݐ9'Z֛-ZPI78<ZCcEo`q`+ee1>u0]LjǣNJtm'Cmaܼ %BTm™^[jRRE l+~Udo10w.Ojǀ~xǞ}jem8H8z=wzIyginO9>_ϨxR=2 jSsɉw+Оᵑ^fy"Uvk}7vL釚3b'O ~^$ו%ט^(ԛ&fQW9M󕥹|esv 6s7*)]ƯxEG~{i-#tdr>J@r\Jrp&Xs*vMKDEǼfo״GL$FaXlgҿ8Efr'`Wk`K|2A%/qO8n$UB?Qx 8CnQLVu!cy Ƽb!pᙱ: 2|]>+PSjJYv(>߆(/"}AF}INtѥq9r\I#Iң[9澢GOIMZD,Bu 6dG;y.p (32OO^]kW+K$VEߒO~x2 $ӟ]ufof Y2:w{Pq+SƝGORE:B#QHԪY3܊d.AtֳŖɝOk6%lI%:O9ETJ.l>M}<"|3i[qk%h#U$^;9H{r)^%Vbz%+mFKSc'(>ubC փ ##}*:_ˉ&f.)MQ$;< \\E:>Ҭ OE ;c4 q =9'kA@#v+>mZ5gT{oۏXu-%skĸ]||\Uz(ޔ`1jHUsU20 *tݡI`%Ha=*N>;m(kDa`ZQpҼlpGnk-GJhnݬ IJVg];]'qqTv=Jx0n܌r7t'[R(sp=k*PM,:zڥ+hi̥n5DT'&2q-֮d#i8ȤaGZ@{fa* O4E9=s)Arz{P)i*4k$ND?XKBu;"ڹ?'!ݑ#}M4_Z.m< .QAk4=GúΗ˧ !}=pU"5MyPG֑$j .*}iNqMN{{a q( q[A;II>W b8ͫ\&0($@#<J|>хFVL$P$xj0V vC mKvxK~h{jPH#~X])/6FU1??:YPWngg$8ArSKݻ>JRbF,Q=o~X]h #g,s\_}snYl|#k1mm45KqzWiEk?[AloRά|)㊾vՔL}jי=} - R?cYIcTo5^D f3|J/i'CbXF4:Erpq9<;miWZO^~q6F@k:>IXvaԂ3ƸᏁocźșonZc#$t;GG4dk:%ߊRc`8I<<;5]FGun8O.`%V?)٤gn~\gtf}QKts<`Ryc֥U,֬ic@GC=7oqm +kF0#"4MWH!NMgvq[3H@a q\w?Bvf8U"][\|Hrq.on%ۧ1 +.#''5*e n`zz%<>K6mӁZ8b=^^Ek6~|m՟?oCB4߈va]Iŝ%{1ҭ~ξnơkm}YyVZ>6˷9ílGҫ7=~~'xnX[FpW~Gs싮C@oQ05|csڟ;+SQcHzҟ φmNyn;(b9=Y\IcJ}sCn䚪tf*}FS Rֱx!c6Ѿ+8:aPH&!&>(M&9Ig>bۛpB$qǭ}_դ:5JT/V9e`iHǏZ$|Ry&k}=\yރ>oN{oXZxjC4v~~[jԬBAQ*GN(Q[_|OJenl$E I4 8)@} r9gPI Ҥ Ӛ(Wֺ_Z*I뛍?|O9kd2|Nֱ"NR=ƎsҾA=<"!~Vu kυЋn6v8ȳTGVt'DJ;֨n8 rFԎ 皌psS})w ` `p&nH1K8̓۵8䊐-ZAxT :ڔZT*SϵE*8'H9Dz&+`R`R#('ڍ@p !^9ϥ(zi qI=r3}(p@ 0:RO&F@8F!q3֗ ןj 4 J-JWNi#oqs@>=P@=O ymq&R=BW#闄ETO|FjCbQKrK`|ӬyM#eBxcg)d\vUݏԋC$Vy ci5-H!#+bp bm( 9m8<ޕ$dROGW%Cǭ*J03cE312e۩jiq֙m#j  O'v:pxi,2 I#>!N)4ALbp "NҀ9?ʞ~TsҜp'@XI$gimF_ZMG9mjx4`*GqPY~##JhEfHw49Қ\<[qS Yv9+$s28! @sB9Q Ҝ7=)@HN'*6@XsqMA{ y0)zԇaP n 9v2,iX|gg~ \K :PCǾh+[Gԥy"G;C_-zW~^+o~/\5ّWmrO\ןYp4p+;Ck3);G$h,{5D0+CA"day'\inkS:g"7J$_JhX:398]L;L(7 䵭 ϙO cŗWR2;olbK#ʮnV] n*[GBm7f$cuM_úχV SіڼA@,͝|ksE0<~&1;Sw 2*N#ٸž޵y1^vXTV8ћ>;6>sϩMuqz+Dҵ9|597+ ֮kz13s'xM=G\%I,Dd;VxkKL+-Qj6mtgr*UsjWh򑬰lf<?Za~SO'Ӟ~iLþ^E"ӀD]NxxM)xH$y@Ć<I+wMK:AlT93 )ECotmDD^&$ܒ0XY0N;dZcD]>Y" ʪ~ON+./͚U"{{RY$}xdBJsp?S__'Kgr;et 媩.YRU)B2Mk>u1-w-94sgm!1[F@ qRJIW wmIJ.1Q#]3zs*u3IEA{wԖH2RY]$^%].h١RI'}?UYGϸ?i=^/`o[lp: fk  ;pk(.m>{K<[Xt_ ʳ]&E;rGz|IݰҩճGA/=͸$8|:FX8ϭp֗-cNJ@Jt'{a=0s}kiG򔮈u=80Ybnbgscj34֓ 6Zm>-<}%iHU?5W^?lmeԚ}Xcn* 8>5%#~uGR.SO.#j}}95 s I,N"ڸMCGռ}_qϪ\A0,LtgRcCf_)? 4?:>%aj&li$;R9$|Kڶ~c1{w4#@Fa{ OK)jڔm%j>n\tҢVڬT!ץ>_2E̝wM} hV bXAq|6pjt 5.Mk@9+Ѕ9*Ɵ/G}Z^\DzURT_NJ a}Uy'Wӱ9'_OA%gfft< r^uge(#~6rJVQ cQrؼJ4@ֆd gPRl@>\T98Mvgp<Х+';QJp8ޕO@zRLd'CMT J a~`Om+"Z;zuO$ iF89Ph$5x {úf M#W¶20x=+>1]y{S$60+^]$ec>tj@jL橇UN)4oG<n&Ul )U :7YzƽxmuGUܓ w "}3T b0N:Z|풩SU3s DW8!r?ĭCNxVa6x` HZJt+/meiu+FV9/sps+i6;5X~Q"z}+¯]} T\!csUf0tm#@Yǎ{T[mL jcigvlǿ˿H=xr:="FWrkwAG,?,?Dp誻s8^9(s[5ķJa. PYURKIzT$tЩ3eiԳB9A^I)jz=C5ɨj,I@TA1_MM~ C,m5esZMB88C_IɅJC=BOVו'B"v c¹4}"~]58UOZG~v Ze)c2H0ywq֓㿭™8X( v(8fi[>ԣM |)IMW zS@\9$7݆85zFOM1> ႥO'ڝ!|4#ց\TrAրni=)ʓ ҀnJiluB=:Pq.0sM7 rzThr2To4Ɂ=z93wV4aym@L e1T@Lg=%s֥P7 :4 r}y@Qڐ:=b=M=bPN8&s8^Zq J:1 9A[8ǿ852î07uɯS>^0 z)XLn|/|>m5JJwf@<ĺ|)`Z@#A_!|BY}᫩{p^A%J3ަxNQڢ#ixwjM1lxap1, ,K6W=Q8eO8c @+JvzcqVd/w#433SUK8I=*%ce['T9i%p3*QHT̍ڋ]E!%\ZB*] [;{g4 'j)sXȜ 8|vJ~\6pGU;7YԮX}`<وcUGIѦDj !R=5 w9VBJjݒGO"*[!L wK6HA; H8")pwGt'܀Km9 pIUQӌzVS:/#N#4P>[uW֜%yֺӸK#נ皁bzpvzUʰpH)79*?:zRڋ#Qzt z)C|ҚshcozHO#&8S''֘P&{Զ yYYM1SH'3ހ qQd q]#`aA֋r_z@v 1h~=iG=@4=A&Xi3Mh z҅;t#ǧ!n#J hr&XFN1Q&psHdÜ G0襬ϥ%֯/yyԷRs;?ΔIqF-#jS.%myHؕ;ķT,s{Wmᯆ:|,d@dU i3'х@@]E/vI&kr1УUY#Lw4r^?`޵vc`siwujd58aWЉ[|yk[kϊvyrq8#qQטk)_%e0qVNKDE+9BNU_cz>˗uXy&Y_AilYt>{) r'OC4_ ;`Zv`>`;\>=*;|'1v!R{0q$d }TP^8#'BzW,TR9zԾ?-æis ̈́NxTxf+GfЅoEsM#jXyHuY&tCi5Q{l| GS.Io}I7!4մtgBO`NjRCsk$o2KhP@wEIKSjN _7Xqg8~KݲE9#O{;L nfJ.U UrgPYV+^Eqc)!+d8WRt9ܱHTx͛^t;@l`R^\_gC3!\N=yO3tx:7GF ǥN;ipV`r r@'ӧGgRʠRt$w7E$X VN%g2y<>ŲF2@={VZaoxXi:Dl-,,a`JIgz?(|Zk~y-QS-? xGdTK 8Hx־bHF/5P{tu"81mZI{ſŞ1Hl?x->ƺBi)}8I\P}2@D'\|?rOKGEpW]#5sC N_hf/4VVQ)۹)5wUoRUnP/$2Os @ ;WR\l<-aJ4]qB*Or1z*zQ#`C{ r(|ߥHe8Lx?+Σ9I9ƜWo|Pp@$*r&w2?T7(@(W$֞qBg1irSКC󧺗 (*IQF% [e@S֡n+$)`;bpTÈHb GS,TzRB&>,Fq(C :Ö`vc0_9|G[5loDlf2_^QqG+ "sl"WVOIu14挵ń=@> ݧ+ tJ0V[ت8Xq1kbn`H>LٟѮ$<Gİލ"irZ2 9= eN[x;P1#P^vLUv^HZF788+gɅg RYZW;?ҽKYϏQ2`ͳo6j92W䐑A5*:-h99N˓Q6j.2 #ri)P`bXP*ҕ`dy'<6ESǧȩ0F6lIr{uRJ$ != Dq8,g'JiaT蠑;:p)O$6A'M4)-X91A##!$}2iKҕ?zPs`)h##4J! w` qx+O=)L`ViqU2ANTBɴrM*esKQ\ra 846sP>)qF;wv/͑&;P+@E gR {b1ORH8\4'Ja:Le#?H{w"X;s^/MIcN8][)M ρo{1'(8"q_<'%9R{1/zA RI $ 匡ziJмӦ}!FRtn)#r1VSè=M N"U;4.\{S XpF1I(3 或G!=m ;W{WV'2 [|?Dc5`x,=k&&jcr6n枬C2BsmL mSH  qԎ@9U8s8 o ѧQ#e=84;$׭{ۖdGVbUQ ziZL8nb7p~#9ؤ2tls0N1NIac-XSp知FhNO/@POU<xӸ\'0Ң m sxBiyދi\? cS#%x#G\ $u~< bY q╤R)4\v%}犌 ґH铟Z9a3ڞ3 FQ#H -w*ʹzsGv`2i9<ӸI̪T ~T:}i*'qJYIa; zuHaLNH`@ʌ担"pxCޗ )*vz҇qߜjP8iU8SC(4U+xC I9bG|҆58; b `{E + *bYpH |R!}9҃$ ʲn;}TKr8jDT UPARsWcүnM}rvS ݼhʹ`wҦ Zf?i%~1e&5h>'xxi$wsҢnXjojg G> fKw6〩- 3¾|WSTȿ'j?fهYUj:޳{ayIl-[9qZ~YAxqn /O)ʰUx/0r}Oic17uxپ[ϋğmDܚ=_/gaT{B)NOc: yXA5xe9m^q^E_yZ^"e~Fz~u]`]WѧNpt8菊n6:+ gD_[C'55- , |#?>hq }ƥ4yq㿅~~麜vĴR*콥I5okmq$NK623ef8${OwkG>}k?eeaugà#v+#Oud:GU$<\t~п-]d#˩Jɶ KFE]ѥ8*j2C]?YfF7%vQ'w5#/X Vr+u ‘ʞ*]F[iN2; H-ڼU, >@JqQk]*jM"cvqހC9)GQҜ>U<>!7!F̋0)9㚙nUqQ~Fҽ3g%{m&Kkˆ9pu4 ӗ,W8!^<_A<}cT_4{NF@[8>d-4_seUDi^+1=wّoo<F͹/ E|㟌>-}mA|[Y'X!%@2^+0WWZg%v;'u~]U$ A) ?{|A_ u=:k«{R7dLjRMWPnPdc=9xs|}E־$[~ loQ+{ {(AmjM 3䜯]O|A-ׇ./4Nu[f)%6qǭ{ƿL9']cPֵ`GYPp0;kw6qAoygj~rGҹ(N GBb^B**N1w2WZ9E_30;qOv{1pb *TU+NiJ$ 0EޔOJ`gS#4\S恡Кk13Jn 6)ZiwҨ-:A~m=TqҀr@I'4ƍI$SEC5uJa2xMsPj÷N7h$h8L0}izL 77LR?Jfر\WW:Ūjp4V_dV#nvȤ0df}^]iZG %ÒftA[Ssju-q;aj@+kÞ%uTԬ D)@+-hdru8ǿxS}j M@ڼq *^fw(Q_xv}/ᗆ̾*q}A^LڭN%fWcOyaԷ>Ӿ&4< h,i`tW.x&^L?ϵk;P=HR|I{#B7 3_.1/9+2U8~'O_vA~cw>:Iʘ 8O7^IzcsJ0Aӱ9^c^x(0Iϭ;G')9q4 i4csMbqZ9x'4qL)ꥹ@c&NQvb8R SIi3q@ x[`H\R)`4(!AJ.())N֥ 0 N}*U\=:ҘJs~dEцaRF68ǥ8J*wt15!VLN^i* #Fv7p$`pZt|ZyR?QK@r2sJ3ҐʻOcOE\~i@@8A`Oʘɜ' yƼ\]Ԃ2Ā@9 0i= d ~3 zP;UFQ;1(pG7 wrTwN?oX\ǪGr;x aZ9VS8AgF412q\Ŭ!C+G+_C$qZO[; 79PF8&.)Jj1PX32$j0I o#)*mZCw p8'էmOnXJU֧%.U,Ǡ^.R)Ut+=ꕤ[n#z4_FJbUes*}Wl֝&IvzڻTKA)[ ԇJMqUrl:6=_Z*ϥDA~8 uϭ;Ŗ9 g5XTr:`aVbۉ"R 9m $ppyB{T"%q94x>7N <{S gށΜ]8D@ 2M/i  4~G~8M7-U^Xe`!BA囦>{hw)Pip1$2jbdEeZ^Xjw xr8Jo,P`G֦kIs!8 O"ZT2L@QʧX~qǿ;^3Bl|=:AkkV"xRXÌ~GAi-8<3; 'Hh+K([pfeٶF퐽~^ЊLt#OzM ۚP n~~1Ú'=ǎ.`fkoj]5_ĉ]6Uc+ϯ. JK_QSI%v- Wc}+y#h P#v:éɡ^HRwnϯ͂+ҭ;Ē?Ih!\+':?ׄg{{;<&Ș3Y5xTaԼ-bJG׎ ~xA vO? 'nO٬rH?@.iπz4]Z\G%G:3Y7-BZF0\oa*A|0Q =xO#u]Yxχ R!ܕolְo><`a Q"kq{Scd:#aOvuqc{ug)$זkڥ׷Rw;J,ǩ5$v 1$cQ*e,5:V+6|d@{#s򯕥%_'gѾZ¬H${-U%y#2|Oxd m=NېU@c+4_XxK[Mn!'θ J E};uuvoivEZ̕vŲα{kwH.dS޼Ϗ+Q}߅i\>gK.q\i~n#xnm͌8~ 4K/!<9Z?o]Kv.}{"> U,/t ` Qw Nk76>'7DA!RT$*;"ϥF"i<'Ŏ[Ȳ&cV2zXzr?Pmq,hz,&&#JXWIJ8yW~7db]E8a܌;}^L 1%'ymң6.F2)Ntld h٤ sqX\b"zzZ[vZкX.'mߝ22$f4'p"}b(˖m좥ߑ%QSVۮ|5  7ԟC𵞱.n4'ֽGm/O,!eU-+i7Zm+^x;kwm$d+zv^;'➥{iZ:-1F,p'#8Ҳ撍g|=JҎ&vQlzKo쭢T4^'H 1*QE&GN d0 36<Jtג;x@ڬj}^6m!OsWr{^:<ٻd.0)iE!5f-GȚ6S°`=pjKdew@Yضc\=N%h=rQڢU'qllḝVB'' qL1~4qEQ.$gҳٺ1^$Q^=&@MSnI@*ҋ0E= qڜk8'J8̌4HC14{EAhZ%]r~zهxKe͂)1؟x^_'Ŀ߆| 'h|I#?.l$nˎkɢ"imջ 89sFs^)(Ғ# &NgO|o ޯCU w?C\mGޝa`DK'|Tv? =IBjKt]1$u.?V$vt>#x/\mIuxdPC@$cdsZDţG<"Gz=I(v 6,oHkFqs_ES:2 i->Wlrr|m-vF$F סWBk8R BmCگ|4w1}?]%ZKT<ʼ|xQOy{u1bTqS܈TR1RS> C&^6"Vk{]CǗfI[Op]P=+g?K3sw^TS$r=+ڋs8ZqzD/K (~|i:4|lS{U8бWF\Ү m]VNqT5+ =e|RP%`1]u_ơRRhI|F[(塍rW bA Wܿռ:Yt-~gRھKnA@IyS]ݞB| sX11 (@m<x;+`_è$14f4 \W >4̐νy'W+J]6 5 U\Q$ n<qAJ_/4;s9-t*BãRWà+8|o}>0j)kz& [i&}}iF[`$׵S@=3mlAh6O39)u'(gh<(eqmݱHN1*1'8nZqsHX;NrA4Jޑ7%vOjvt:h\@@yN(كւ?Μ'?NtHPF)2٠#0ß589(9M!RߛM;gwA$q׊W҃қ4Z^ fp5S" bNh.3ZA :3EpE?;`=(1 iW drA+ݪEp[0! 0y=M&q dg@Eq皰sHsNXO'Hi$SHm9 ך@ƥUž#p:Rircր#mS{sMf1{SO#{Vnf z{R jQ,1PSߧCTfmH\U4 &Gs;FFDgͿfMc4m ۵}ܐ94#2C M% Gm@Dn8_>E[eFAo=Z>rѵG@I,' WhzW/%'d,+N'> Oʝ>nFA|R"GAbO,яp>_ԏW.fX;*vcƾ!mOVGOͫ%RA9b>Jw=O=YōK&otwWj T'8x_7ַHlw@A(YW֨ҮQbv,>;𕘃KlX|a|. f,zqoh>.ί# j?ioZ"xWTp{R>nm46z*qkU l?JW%UL _ٳM+9@##*6^(/VVtw?7ͻi1Af{dk/Qd$ܖh?C ,K)MN&mVE\kҴ FosolE |os^U{G|R&̞/$mU>ej?~!_G?#pTQҒ1[#/~Z%υzThI8t߱_mե3]|u7$o\Ơ(O0ub~O4Bl߲)C^+ƪrs ׊'tM_.X5餞+7x*&8sqI3m&HewH̜ Xړ͖WN=_~&k4P2~g.O.Ԭ:֘ϴ~ ׎i#G< ZL vw]$&β,&6ۑX-i9j^]V$RE]L^v#5i331?bT~RfBv-R8To _r4wN#4qK*q[!d$.ΞP#n5< ۃBï(; N>(99※pM HjLןME#9nG֋n0r)c|0 9yo) }9}v(}'Esui<7V- .$Avǵ8 >‹X>^84KI<+j^reaE@)-Lj$KٹlHyLXSgkGVmY: <'#M7s"3<r_oZ#qFPy8 qx#& 6yQӛ5׷nni$sIDF 4H'>m3Jt**vOL[==(I9)bl7c`(TևO8㰼m4~}qOÚaa1 F<4:P1cb5_CKuHe-Kq .ޞjKHb+r)IjxPci zOQRu8NUhv!g$Et+y|gaO8Hwtz6P16`ړZTs@0ϵ"{~ӑIU@XI#sԒMG^hzӈӂ _E'IՃ 0):R(H9*&9Z#o]B*vu}]wF}w^[V|_JJt5|?|7uifLwVeGvӖ>:øUV>߀?u+$o,t'5~Ŀ_fjWԆBzn}{5xWӾ:|՞'ZK:(Pőzzv6qX鶖P"km`*·KiXnXS"ph 9 Og ԊDp,kMkUK4 ;OSIC-̭UGQ'z 5(tZK$ ? WZ|$>#4k1k6J|}uHTPr ?(\;kʼE=ZBbQY~!Q95i6{i7N rܳཬסW "*# 1i(ڽsӆ *+9䟵G㪈Q )C{}kۗE_xS|w4)r4t`t=&}9ȥ1R c==qH.ݸTQ=*EP3֐F 4D@/0PA 4/٩``5qpPsJPscݷ'5"jW$Jͅ;SS`TWڣ$St 4wJ8Qޣӻ>7P9ԂFxPGqo~h4>`?+JͪX]$BsWrǟG5퇯i ං.n<=}5.MiGi N}7j]גƠ^p6ܼ3@]F l ?q$pCHEe`׎cj 3$)`#!)EZ0>hѵ9,zeۯN!lXzId?[7W/$oک~y# ĮcŚ#0 wĽJ2y[[?\f5O^:V7B@ت xz7j Z)N m6`_,ZFܫpCܢZ}EKfn$N=:/kی|.x.Z]nRDZAlAZ9LWʢɍXS!?*iŬWϪ62;_}`5.1֍o^ġ6Xضϥ|AZ g{Uإ6hx~X/ Ix$!O+_ŬdX|;* ēd0;dt5.rk}Or(\@m5CZ0u{}/Y q=%p,AKڳhh~ $ၑP 57ǿn+p6sNO94{Fj𴛻GF> \1^T˚I,6IF$i<i;JdbvsG;e*C :,aE!cP`+ ,x:b_me[I ܥ\5>#/|!&&cP=\PtdbbtDATpb||ow J".[ OS끚۞j[kshrNrIbM;S(MzBW.ˎ}i\AӜJq.vA?^.R_8ۊqA=8dׯjvsO80}Xfۃzr3ڞsRD}`~t+;qNd H|>@H0T#ϴ36TnH8?‡(ɩ6AxmBzPW)/ڗCJ$hN1Jl3)P;ȥ }*fU`9= 'ZeXX rqؓޚH*A?J!sp8^ qAq!26Zʀ MS4‘ܚ1`U*sҜ@fc>xsNFc iGoz\zQ@Hf<ӕ2']OZA0Gs@5.rE!Rsҁڟ) r)r\U*zr.zӼT\gjpiJڜc/O)4r0sV2縪O=ʻqEÔ`t~A"TV<ڋBriqԋĄǭ ֑v?.>Ա`Fr3Nh9= 0%RmA|a r)Z@RwƜ qB90pM!jq֓iq*UPHwp:W]sK&:QOIP" c8r;MqS8pHE>-ӵ( O—֕ʰdM7f܌fP')pI ܊URwcSR2&i6UoҔ\1dٓ(C ^3N(Tڜ)>bm͎޴v}j@0N Ҹ0 HSmDJ̣YcRc`FGoJdd槖A ecF5;߄u߇::%6 -Νps}#$YGmvH8ҿ=4mp$S#hmjݴ'hn uF>QVנZ>MkM-oxꎘ-sjFYt~$VeᦍU]jnb'>M[Ѵwdw ڣx*٣ğ|ื7,;DBdE$P hOݿ% 6sG|ֶ?D)bCmH42P&d=3P#xekgjY_Y!wd7>_ \qH͌8D|1]f4`\j.7OH>瓒8`~U^!6{Ua;"bTbv&K})Uw}2O9%nx xN%K}cbC$#GH@r PM(A?6Ė)L]:W$I3?#n: 6n0_?}NYy wB I6YR?Zm@y)G5"$f9Cؔ@S}k6j;cҞ#=H]*'RR/5$>NAxUirSXORiR=];fU8[9_.@>VfTSdhZI>=t8|~q<(m!z|)g-UIN[4r'^~KlkF+Ήc LghN<ǘ.9'M*7̹^oynUHIÂ+~=㲼~yv^I<)H9&tO5%h(l#C{g r;WގS>RVB%nю=*qlB?\ne0H>Pֵg=:]gZ;'?)cySA|ijÜrȯau&K.~1T"ƒ}g}Gz֥YJS1M Qݪ$J[pKӯzf3WFP3H HsJp8O-ښNr)ܖ5i c*ւ}N=htvÌ挑s֘ H(jkdWZP֘ABzi2w Tdc@ibif>޴`=N Rii8 zڇ\0P3ҁner:`ҏ ~ @\q((O|})]2Sѕhʌ52ǰz: i\ ╅a35!U(DNxX6 Lg48'zP2F{g<иn=OCJQs@PNE+z7ASMd?pc@dTjU W, D7+F*@ wZArEPd)O,9(MN4E㊐6NrO#+ i #\T( "00s֛ ULLheOz|qc9iO a`XTH3'O0`,4IAL#'?Js^%WurCaW]$S7nykzX8{ YڹqOon(Wlnⷷ<s_EY+(ʷ a=k-N .{JFcq8ceմx&ءhiFn~>t_ivbIEϸ_[Pk ;)#T>X]C*؏t|s澱nΝiECۢ=u @O'(w<Cbbi='FP{FA(`Uqg\PMAH4N `7H6,`sLU랴HҹijvP;F( )B z\ޛ 拖ʀҮ9Ir:Jt#"&T84oXxǺ&Ҵ{pJ8ʗ'j8P_R~><,luPM>ܤ"N/-r8F?,2W5YZ E)n#(4⻎sIqXEݕ9494sNU .RCX|u{T=)xurHV?I$Pǥ*)zus@ry4I5#p9v@zq򑪱$1K:{S84ɸrGq$qRpZ(Cz()DFlIԼHr1ɣANp1yeqO+ R"1(GN ӎ=@UFNIF#,rIڦ!p۸RZ5T*w(=hp3N q֑+yq' {z$`|v(ښKJli'!?7#ǽ0X;?\Ds֑ OZ wM*Ppj‚9?*s=ŏ>vB緥!\Ih 1R"p(sCqПjk#RDx:'TiLD}"#(6=iHqFq)\ @1R(hV+ ԻTנǀ8U}M/9sR$gڔG<23mIdQ؊Ab4!UK1w.6ddOҀ=) N[GӮ;TpI"z b.J]Rssb/ SvA8n;(䃌T)"!GHaM$W +cl# ;UNx1>*D`r) 0H(%ȩU/Q,fqVz0]He'JQf;eqRkVCXm'2a0F`9+|I~sRكc [E$2M>FK_g&Jw/b昕I~5, KBP$b>FCR]Na$٩1޽*oFܐ76|2_4n%庚| DQ RKt\צ0ȎH¯ 5 T|).@XV ~T ˑװ9,fGZغV@HZ~ǂӝk6jHXlff=kvjzU<;,߼=8 WcŦֱ lOo໫ۜClD*_쥹F$XŽJUyf;㷾Y|8lCmJL9PZ_2%(YY,[r[Qybb(֟!<|Z.R)8O{.myzn q#5=Γ*X0OcUpO3tQ#YJl|^"R6WtLTqW<v)3 #S7_´-x{$U$・֬A  Hf<zl Ҭdm|ʼ~e>dBV]߷5fpGR3Y:TvND{|NTRz[HW'9:/ "d@6zlkxyc2ȿo9n᦭ia4,蒪ƹO[]MݑuUxf@Y2WVIvQ.}ސ]B#S$ Ͻl\:GoLagbeP|見#5eܒGuAf*D31dP8 u+&*&UI.^)n i{ICf"X{VBI#h=TYnbr:#BuVF.9nb`8bj[]2yYePqcMۀ<"}qq6FVyh$ښzG,P$s\0<1G ]?b_I]Hexہ= @s)WZJ?5c~#D]; x`7܋pvy+})vR u8 dLO rTjk ea^HfRhψzOhe;}ȥWaݰ^/k~+{_P{>yOn+ dkۉd 7־&k-G iL.r|: 1g jnρ'b&Oҽe6[@!BF0yp;WIsʩ4=Ts($8A[BNG$y$M(^sJzQ:F@\BjRuSHTiT `g4xpA҃F):(Zi +)$9 ǽ*)x?J Sy#ޜxi{Q6_в5[, brI fBӍ>XwßK w۵({(_9=vS h ̻@"[y\Ҽ \2썲*9SwX-f9%6`=AcA**^s\Ҭv[Uw w|~M.6_`7/־n?+9V;a$Gkݼ]5h3)f_XFYBlW'Ǵ/=KK9^ m#qYJ=hi27>zSI6N U={HiH]cWOOQdE3W#i8##vJGʬw5 5!`~N]!1^sG#!`?`dn תxyb2>n3sWH?q#sަ<A's?da6y -Jy$Zᦞy gJ 国F#2[ h⟳DuGiȊ9K#w~v DŌmuw֖Q0N3ZhԊ|꾧;g=&ݘEaVb|+f;hԱ6ҷU O#w/@ OJ9R2Gʷ- i]s2In=׏­Mrd@ބT&Q>lǠEGI4Đa@`S*r W.uH#`!`ɎȪ-,Q=ڍ*>3mZcE #cЊZI! c=+*Zn 3t$f#YМSʵVI8`ǮSBv'^+ ,h;H4lyF!?ڭ[imc7b>ExTFڜ0#vW=jDУn<@.(PȢVbx@w &R20įH]a?>U!_GhjBQp=>1 v8ɨ>q;+3[^IT[ՄWZ}E.`l衲;)H=wZ~do=kd&+| AŭB(dcќ4}\ԢR*Sp[m.b\⾤ퟰم',MU憲n+ ;o]x!u'?6=zՁhm8 zy&hY~N~V:a GU0=_|żB1䷵TI $1^|TqbC)=oucҕ${^.e䉣$3֤(Hgw*v_5I$^Y%r@?J|)HƍL%J'm{xX{8÷j4ފw CI$5ih@fsJOYiݮ"=z~u.tG@@ ^(%3Οڷ 񞷧5W,M4*qCG.f s皎NԵ+ieʧ ߆-1XU@/mycOc]k7#V$ͼ)ǭRH˗dj)fMf@v1bc6$5Ηs5`l ?S]bI$*3? ,ٴksX#[4%;)P8_ҫ|M A@ | r\xre8V-Ÿ˲/ _312.FvƼ{I9vo#~jƷ]2څĄsz=2Sgncw8ݹK?Um0I$QV"k7|Fyl?a߉WekŁ0jEbl7 ~G>Fk2\''4RbPO@H }?x52Itrq_n^xZp~^$+jS=ǥR#σv:),zrNr_W2MBrYBXaQۨ }@>Q]T`@n<S kC͝ITw#R{RsNP$S2ҔԁzQ3 q8 @6{ Hg92pz(Ep: %eQ:z3A W89z{:d1h0`40iC֐zTkt(<&#`GO֤ҐԘ8 R}h_`ri@ZBҬ|uҔ.sq@7 *ybN6I( `6ԑql٧I`f1朠()˃Lب_Z~@#p39X* u3sR$w䎔@Oץ S&@R1 $ҋ1J;3O\|>ղ#Wj[# ^u>+: ?Kfдwwd׵t̹#g}+e̮򑸒snx).<+B5p[9N@K0;MjZzTr z]haI'1I'¬UM _\('H7s!s$V#O'ͱ9l⽋.-|[8F#O~GJ0|MB\Pz~#FiEY5~n>8i׽|?Qwj5XP4Yq'Ґ10=)ʴCG FR$dn>_z碐LN{Swc֤=rM3ҹVh9 oOZw+v99Ӏy֜˖ǭ;bǐN~&HjU2s"Gp??Zm< v@<1یӲ REs} I gHRg1א=0"d ReRDL@^٥rSC֞ cQ@jܿxN\>Ir D1j)3Mf12~zmkƐ3KR:Z9X5O^FI:W]/ܨz}jkc(^>FKSqԢ3MA)G'%gd 9OciV#ӷzqcQN >^ V-j$Rx%94yLd*Qڤ_j;{_4,8"u ~͓`V=/q 'WA[O {e'M4kHNC)6CG<-27eٙ6|])a`_?_ڴLj3$\Z~㼏*o BH|+DQQu=.HP/Z{ Cf3O|-lvP#|'rNa=EE> ,)!}nOg-7Frs3Tfm*p*wԖ՗,&xX@1gF{BęZN''bHd1{mwn;ճܣ5^[k0|+oؤ5D;ђT#T%2GtRg]p !:y8¿Ľ6V ,*OdRY矍>mHYIgMnkʮ>*rVvǷ/śfRaޜ|9;q{!Qۜ`U F[m 35SP, ¼o-;`Z# )3^ cq wlvNkm ZVgk;s%bNʏXV9*?u H\(嗑^'/B? 0ҩC]j6`5 aT .Ò'h[ l\n,tfY[k)u}ZfgSR~yAˮ&jZ'QF6nQ񥭲>Z` yrXe.J>#dӃ6䃜$hAO+  !i^(~&eQXE DA8Ѩ{\|Vڒy ꅁ?cV8b>Ǽ|1J\NHm$ ,x,-y>cU>.G.D$,>la@Fp*tVܔ$ƒʋ0;; {; G #hrjхHya&1x<5\2 +N^&jʏ;Rqe"l>r}?zs_KgΧ?Z06mL~^D<Š|If2~\ uAJο3{WvOF'&<Q[)(X]jLQ9ҟfo2`=cQq"`?b_&RLe\cu ֽEad`seϾE?dy;3g eqåFf(ߌs_VË;w f|-dedQ]x)0BNqUqzz~YxCútam=2?U(٦ة[84CHxg[m Jfnݸ[C7gbwg`6̻Q#MooHTO2LJGGFO0~_̋9@9ֶ-P+W0Ӱ5npd$x#1U{ot-c ɦ\ =r|v=Ї,,H4''$L6>ҿ`/d״9Չ#7þ,㉵떏K"uo^QJ| oײI|* qI+rkB=qJF}qJȎy=ٓm"/. i)aWSzR[gP(ܣ5iRnqhs6gC& kZ[Hu)ҭ=x4⚸$c0dqW9~a2O@ ?2F3L<(|7*ᘑx=8qVx(s@8 mh\ihGR3du4Ƅ1 TALu>Z3`4F1)#mO#րjE]"o4psR q@R玔#cqrg=wq֕ NȤtǸ4H!N kd\d@\PB GP)1kDDjJ+εw2iH|`6w=ƾS¾&+Q)ls9~gtqt<=YfG Ir}ꚅ͕AcHzU+jcU8v=[ҥ-ʪpJAYbGkg2Qm|6>'i\ea4@ps׵s @*/ Ҿ('rVH)偂34F#lKKkKXlH-]:zӳӤg8 ;j[}3O5td2I,`uy>ֳx&N.5LgZ= TQڥŊbt ԉ]cy8G,u /`Kob@=6TpHwI9%neگĈKǭ9iš< X&Z$y$Uq]|;Kcqӫdq[w.%d'G5J4[G/ol] <ڦ_̒/"fe}<$ ɯkYR@#W0>zm:x /+?SƳK,MjY8zb"*Dc-Մ"C QȁS?Oa7c.V$^3g{&37=3Xm|6nr cx[R `8u5<^f,PFS$j<@\ҭ+o,0(+뭞M'/.O!VNoLdץCO.sCNwH@0(%$pS|1R ʬFFzR3LIt zD%,:/8bLrO\?̈́Hiqm| b-Hf'pFT+"ĥԂjTrb!Z|f8a9Zx͐njk6Ml%N1l;F2{EKU-0ZE `GL*C2ME9>spR#{elc ʤ}ߔC>اEHG$s n$$g=R2fm?`pȌ8sL}RxЛah\djlIGnڰkڸVdJ?єaH2|vtiٵHaM!2?=s\YYsLaXF"/̏ofT:0\5:2;a>Vr/ 󻏋1CixW#tG7 i٧8⋎)95+&6x"HtsԧacdsG0OYerN0mE48 7?{7( QTzTyQSOj6e,뜟3R[Ki/m+Û:EWn0PWScH3J줒=T5b T~+vh ~pq^u+]IzAn?Q-<[ Y~`α< \d 's9fkZpEb. z7,# V@}zʺݨ`^[@䒱Eyg MdDaiF.z9R?E1R%  K}*眛 s\4V3NšdG?ʯ/562hz+-H9zm_iCijW}ɦˍO}k㫵u]q@vbOZm B M/×UMz%]!$I$Yգg3pX$U)So01q½_ʾ5r~_M/ 3Vp*X='.>f9#$eַ ۛD PF]* i~><'ڵ}&rzG֩.x^{ [y >K Vn~P8 }x|WKmb#g< յwm8ҩSbxI#JN|cۍqʫo L 1}iJubv0ۭjY^/7UV(F 9PCcH<%rdrğqҵ-g_q}=rw.A?֫.~+d~Z+[Xky0Pv~|%.֞ ᐮ3VͿ8P=J='A)܋;H+@xCjr_KXƪƫ%?JKJ~ B]7ᇋ"Ƨ~ֵ?x#Y!m_i4ۀlc!@J.+(TC~d~Hp%eֶ`>-O+E&ihIvt=Z/+Mc5\3xG՟'= *鑆 n>Rns Y};Ry;Qe؇)[\Yq a |ZnM ;8Qc\D?zސ6 vD:g3|+TX`4'Zϟ tٞH| H5˝R4'M9~ $2ZxKI{2~~z$ ir6['| nQryܯocl ehA[u~Ui*>Y\p(Ը9R(b)$Lit✪IEr $?tNE qޤ1җgJ@GzfOS>ԣ=hlcZq2GZx iɧ1V384I Qc8SI| 4-D m9}0?JRȦĀzTG2H@4 zC8&G(A@Hw< G נ.(S~ΌHMЃ97q\&1׭0MyJ0['~)\P:? P8, ޓ3΂C<^8QR@ȧBSYp)"dNFsڗ$)$Jo x ӏ=r'ќWq@L ҂wNF*@ 4ǀy=*PMa}) `u=Ѱ:dmP4&d(A繣f*)8|jM9*SbA֤P~^9. ~t<qEHHc}\ =)P;Ҕ w~ n^G,ߵ!J|h2 4;!:qbNM-})V1ޘXifzR@Ǯ JsF0{!rPs)q"vXP-EþCCGH nTO}+xbUDh Odf:DOp3Co@zTǵf͜ϸtVJNo(&8<9#ǁR2a&S?_ ,4KW_3[ A}q_8ŽL^'h|?iv \d¼X]($z`}F }QJ 9W?5'umcLcE[0m3P ^0{ǟTWc|3Gifi$V=z^_Wv) uzn}1<^)'5#,V2󄌜כ]cd@QWic{6[ďWgelmجxLkImku:Z_}YvxS;x(3j=l54l$籤cQ0ƹj $>B+Ƶ5s IbFM$ϞF8.SE02{Sb:עGwL#R+d^nhU eڧq*B+WLrc<+Z͘#l?x2j2=y0=?ʗybf7eC0x^UvCkYmc~̇CRi+3/!㲸=HNiqĠF2:rE;+2>Q8q.ta }ammYk?8[d#K!%8xX̣CƳ˭ܮQ ?w6euL+ԬE#LqHe2gz{{fo#cy9T&MpMX ]'?‚kRV`3ޟ"'gkpUubDfINrI={wcs(9P*f$~"[e*h#`eDpa[2:z 81櫕"^"R60G8*PP_MRV|#'3Qr!vD{zmB+,95b[8w)z:{>2*k M #`NȗVO~(`pN3D\1Rp ml!yn/ ")|uPڌ!&tۢdiJP2'f+CbE:ϟ↌n~r9cZwBUP8 |09^|S̘ϗ _vvg\Jv3 WEjz[ѐ}d!eU_-,NxlҩRuQ!Tt'\L$K;xFp6gN5-!$ t]s֖Hi0ة~KB ̮(P /%zKVT?,ĠSD!Xwƻ[YV8\׋I=Jwc>q'1_guf8tj]pZ+]|r8qj D{y*P_a ;;1^=p͢[x\eU"VE#' x4 JY8{JҰqZPx#wj<f~QfK;˟V6.# ښt1bBMrg/X[QP#=nkۤ—wr{zkvCq*ncm(`ק֦?!=|b+^V)ؠR#&!~'\\&[(= ׎)HN%1vX UOwI}> k,aow[[&y,z}1MB:kc ?#75qVSr;ROףc9c7wC ~/F;{ &m~xGkoi|e;iݑV-ԫyv.:GOn@L#(~U|7jvӡz[v-'L4}673◳D}}?)#f$àjR/`rgbK{8+ib+4uRUgaxOQ'p@8  GBKK[-/ _,HvV1n&rwJSq'Ȯfg8c-koctFc̉bY\8nۂI"gʇ/c?ٛշkHƖ9hl_e#8Sj: 9PS=ӓ{ve`U?F?kZ>5 3ۯ] Zb7#Z1 NAh0ϩj<:W@dZ@}}?}IMsi:gZ~? )d#'>կe0|/[1++gwDxҙGXH$:aG~ֶUR/ i^^z5〝ɡ=Ojrݔe"LS;D*Ek|G/i*ASv**BU6ƤP0{OV89_zPepFq@Bgz pz})wKnx*t8拀NH#x: zIpi ޔX)#0`NۃEpӶ$:P$S=Cv2GSq!GALzCH ӥ8ey';e$Aԣ=hAqeA9"NO=;1w\n砤XsFq< N2)ÃR4q4s@]g@\Uیv59sҀF1H21Nd*r3qC.H'iؑ\J6җHp4lGjw&}?NHȠ. :4zR#!Tg@>Rs($@14vx:^{= N/,ixjvt*qӷ\иɤɥ'UPx(~1ތ P:L#҄'naHMx48A8cPsriӰ< RF84xmwx_ZeA c)s9_%s@\r zn;!sSv{с0B9y u'4J])4Lm?րh=>M#4?4 Ԡu=q€h lr84LځޔrҗvMftBʝސ p}('<ʃϽc: dt4 ~ßrx7$u8?+ ʓ<3ք zь})` ),d )Œr(ͧN,OM2A4m xNx,H qҖ p)s|nԀ@9Ozi(j`;HǸ2OҥbV?x4+ uT,##?HX?\.rj^GʟgsshjPp>\b3mhTc.u6XJh^eEyWnnǙcdsdN_"sQSţA19x+kI*/2ʞڵ&,qCVln&v04K+r#skvؕ!8M}Nu飆Ǔ #`=;kKkQ-U{+m`rxb9@" @H=ٻϩ+Hc KHjAxn72J SH'Uu%sYpzDҋŶ̒3A>*׽ƄmNZA\!"4__IWYp]G'7_[-/z 8L\Hm!'F/Muftr 0q?ڠbc d2z5 l\?J5)U=.y3Gj|Um+HGW_ZO;m:SAqȴ{9*=1K6Q$ۃ[gQ[+jq@ >V/'f1wv]x[]jA;_tA$5XcY%c1|4BVq=i ~} N2*`ԁQMSmFنѴ_Q }6Z؂G si[|*e7e nvǧ=)}qv?1Tm1̓SP~?V'<"RD4 ;*sûLzeИC\?* ̨hNO]cWD*wy~ECD#;1jhq&IXh~j߳[&? O9Oo]tVʍ~<9qڑY g,U'|}ĨH?;`X6I' A *Zi-NIUosM_gTϯF g )Dgϖ`=u⛙XX0Op l[¾ IK\xTNA"@TqFlJ(TxE_d@mPrIcC+ǐp{zW" qH(bOݞec3|0Sk3elԇ7ØfJɔrPDbx#ºxU.~U\g :|O/5 8֍ sl+(4%*xG_ #D"*+˵O"W(!ɋ r,:dDi6ۻR}OR{S+*0>nd9v$攜Gj0;=踮.3ж6{ԀgGJ. 8}iy摐r }h Ґ[>s(9=sE<ҍ2BS3ڝp)Ʊ3A9*`2M!Bq@*·Pqʁ@\t✼ V\(y枂 yԚx/?1gnWo19cސ.@ {@ #ɦ+o8 ]4AT/?aP;rh2 8NALUQOUqYpH+`+Hb ?*$EszӰCFqO#ևA9( 8cpJE< ^N=1NHvjrzRǃZxBQ@b FsBa ?@q>@KN Ǚ78'WMth OJR⋈ ǧ&h.TLcHn `f 9ڐ b9anA楌<84h ژRzAt3g?/ Q)c4|czB`N#oNi=r =꧟œ prM!\Ҝ~R=h!pxB0V\ҖqɦW}hJqEz)+O){ z C Ld(R933O'@4_\ޛ0ӚQJ3׭3o1e@nFAcր:s5RF 0ҁ\1O)T94 8O*)=Mq)}  w\J^r MN2wS*URJ*3qKR8/=( Pj3t BF:}ivaGGrAL dMzP#5ZK2Z ) rGJ1hGZQw^ƣCӃd? iʹJ:S6svN9,sqM<\ Zr79HT4i=O*L @ )< ~4Ɯz9? cM$: qA46@gA7}ixǽ2})!h MSO@ \)qG =8=(rlSylT:RPq.NzR 4tAR;xjŧx/7&WOe:>:]D%qPzvCRsoKthFQwK˶lkbV zEjLGE7_kU\ ^:~(@8`PGR"}h!= ScJ Q6R@) h|98P>ayd2rz̮х2@< ơɧۥt8 ^z@ SN* gsJM>D܁B'9'֕GqJv3Rj5dӰ8[#t/}*qSSӜ :{=isd`c§N`AR";FsޘF0 ڕT93dSz1֝qAښN_5u'#1\T9>_iʄ4nIZ2ch")Jz'8N ݞ3J@M6q69W%qS'P!̹_T))Ri:qI$ v [ڜ(枂{4]$O8# B8i b3)FJ~F"qK"4m< v'j`6I9!Aˎ># I'Ҙ0x.;NOP&6⑾\2(#x<fv#jP 2I=iPR{эҰG 8'Ӟ(فӰ\JdӶ<iJ&NI 3HQ)esHq8={P#cO$(9ⓒ"\p0H˓Xwǭ 8P@JM9sJ}v1J0S 9 9ȧhl{sҔq~tнjAis؃M#@=q@=_/#=():sҀ8<pPON:Iq>3Nqyb3NZ?JBl\)Q4qӭ8.NI9BғnF.nE*jpH Qw~u"\PT堩M(ir' )+@ 2Kԇ>ax<(p iG$4Q4‘W'9Sq\^P9 R)HLi4G4#;?OJM iv/xz0HqJ=OZS(8-n%ricqG'ډGNqJmrsҁ\Ee۴Tڃ>B2M!Vd#i)'?v9~pҀzN8Iڕiށ\zݏJW\#.0ڀz PyE4ih14̓҄j'+0 PW9"#4.A84X 8F~$ɥ ۂ1֗CƌE)'hMǟJ@OҐ"Gc.yzxsOr SA==Pg#@nFsBN .t<1;]\)8( *94ڛ|rpL&6y4$qڀ$uqNH#3J})/NGX7 EF@sv..ORoc"XHG0y>(ȐA5`&8${P#pJ8G5ޅmNso@3idc.)$OQޅ '^pIw'N LqޝT[16qs < 36Ҟ rhUN~ c4FNXmJv@\jdw8ppH֎Tc+#+8֐UW*89X8ўqSSpN;jy2zq A$uǵ99<AR@@ e#y>"Oғ9Xw `‘y$`ӱ&ʹF29WBю@#y8f\y:byǽ01 T@\0M+sЭg>(׽*/O^;R 9H>olR 8}84ǭN.*` v 3G=`( WKpip F89C7#uKmҔO79NaiUGA.{hSҨQ׭(cօ4 ^94S;RINyC0Ų8@!@MP]r8l怸7g:{D#4h ''2$M'pisPl`'9֔6_/N[$~t${ #@XR14d`sA-i]@Xn%= F {ӓ*ց 7Ɵ 9)2sH0.!;N)ʡz=(:HO8+ OOZ`uœ犠 9 p;2' @(n{SdCm984rU'oNM!n0 He"7rjrx#z~S1f-:T`zӔ bA8 \`OS +HsJ $RNzb xQyQfiF84u?6h:cÑFzP&;T8<~Tr F$cpl;԰=nB)&u9;Ph Zkٿw Z3j8'R/x _Z0TqR~_C@Kk|RQBl *4AcHhzR86ғ dg&0W/;}s@%i@qz p8t ҝ曂B Prqjr c9Tzb'(qI c`P/ZpR9%8('{ҁ{R[zzޔu1M$u5!Ӹ8#dr(r{)1;p=i$NNiNhԥshpxcbGJ0qQi6c@Z 2sހz'}pi@ێ@)OZW4`u^ԀlԌQݜ);g\w0$:bi.VF04+\"P,y!eoRI!w#5az-@8)l6pzSp 2;bPwSLzblL9-UFil)e=9_i sPNzSղ3{'ኅ =ϸ`JRʹr{`A1# $ՀF 0O;oZx֗a`033qf(0Gq@DzO[a\qn1n-]ǓTE+ $x4<~4&9N`40a\Q` Oj\n#`AHo {Q J9'P0ߎ:T~+O=(p֚׾sEQ})LJR$i p92 &y!=0yB\~qHFWӂ  PN:旣tq5O)bzfiR94(s=y~(܂R֋ǂF=h#'=iry;$\l߭FBI> 9;=JT88#P vڀI!#i^(2tU:~9.@sԃH `R%qnQ 8F ҀF0i 8?Z{Ѓ8㌁ɠ?0ӵ?ZO?(@d=zwl4>TzpbOZU Lq@p{wPX}) x$hEKҔh igpJ\O C1QHG=)NWWpZHӘ94!2pE hN'q0iT?Z!29#5 #&yţ򯹩cҫ'f#8˱œzVhÆ M䧩9>\qĩC2 9v2oj8,@M$`XYseqPzԉ}h$y,=v>b:]Ž=)s֋F\SFIf1B6סdp*aNajj8pS 1'i35$a9lc5"y\ {xϭpQ:U^ʔҝ'@==(+>:Ӌh#r䞃HS &x@Ey n)84:Z~ݠNUtO4␢tu8i$:JT+F=HJ PJc#&NhsCr1A ` CNY)*y"rV8 )ac^38W"tal` KzS0y#{P2Iǥ8s\ ( ž8 CҋIbPs)H'vAi Њ1h 3KZG ``1g@ۃJ3Qm$nSՎ9@U47iwt"c>oAJHRnjcn<Ӌg\(hlK FE68_^qR0Oހ($=*A*jh\q*ƒdd担84u+Ԝ4y}Gq@c1bASN~oZd¨QsJy''*5|uȩ!<{@I#i`x TmO~ԡ1'0:6@8׽D&FGW NzzR8#&#+`d֢DOaWA.s:*Az`Hʎ=w #H s@^F~UҜ%P~@8> Jv$wB9 C0?~QOңyR.ݣ)ܫSq'G?3vWfw uy'P@,_3$c 3/ ;y8ւn0FH < 8y" ɥ 8ϽH֑=9&)l6iۋ4[zR_9HDNFyNXdvrq;jJrP6ZV%"Bf?*:j3<)B'4Xqh^MÌӑNiTc'b2G"!+eSJ{ZX^^3@S;fmFH#@ϧ4qQ !@@#z~&)'Qwtށ ZBnzR޴Ǧ;\1LS! HB㸤99cHy= pRҀJscIȧ84P7.KSzfNhiw.7~9QO^ zSǧ\ [)H4A0TCހwx ERzMRq 3c`)1FzqH֔<n)yjL|)' r*$,OJ0vAOHU'4@8)S=#PI'=}9JBN v曓g"U#o4| M =Cn*S)OҕKm(+=i#=$9< w(4@8 c.6s;y#Sgb[7֐ Ԫ;@'<4;ǥ)Lց $G$zJN @?ʛ)‚CL^1À:Z16yHP&A>q0)X>{4ۗwFݜq=_Hc :9\{|;S"x& yCHK[()y)qzR`@{u##78zF84 |iYq`sƐ ܌o v/.xbs)8P:ԅN)r W$B3҆3V pz PIlQ~hQpN9nqɤ݃  sTdu3dt튑\d8'~:Sc9ϥ9?(l{0 PiO^)YaM =EzQ)})N¹1ozA:6dS, WhZi2)@O΋`<Ÿ hֆ}fOJ7`&3ӚLQ`qQ̣i SgwܼT{qMJ҂sim!︡'4 3t4t rgN%RCȦ3cxNˌ*%8Ҧ^:18OXwRM߱4|' ^BGAM2x#zL.'T@6KqQ('@K } *lRx.=I\g4TL .{;m :wiW 31NsޠGSOf,\y \g%=h'T"b!OjF\84(cw 's`Rdy)Twc@ XQ)ޜHacC;zӉPcn :SThA'01zEl rFI8ZM^=.tTրx$Bۆ #G"|q\#9:2Xg4$PH6(1j9?s)90֤ cM9 @0䚓2ZiweWqLٱz҆ ~`sOazaIZ_=)I^"8)<Ү$'#R:>lp=)38R;R8i9N4\I#oʃWWk8'HXҤ GFOFztCsjA3ӃNiP;S͌^)Îîi#)A7$Zar9<0l @#r4py_OZa<$B:ќu12qMbK ҀW*K\U=zo#n@1Mvi3"  ցp8#X`1֓܌0^n>p3ژb'Ta HFԮHnsJTgQliԂ1N_RqT10'>qJ>nԿwZ ;PC;҅ fr)ȧ)}}h  N ҐZB(?09yjrjDr})4(Y2:P4 c4#PO;'ޘ[ooʤW&03w4K $q@;E t4_ߵ0Q}M&U!ɤMɊ5'%xN@:}#f#8H1߱Pc@#&zS6'9Pe##$w(yY󞔤91H\"3H>eW#ަR$SAqv;OsNBi84{xHpKM$a_|s4(4B`g 2ܞOJPĝz9ZyRLA!{TPE$~ HANM&BHH'✿?^L3ץ4<)rojc 9ȧxM$m8"Gl(Q\U;#"o~)K`z 9vsI󎹩h fWO4lh Rԛȧ,`֔`p:`psN11Mc}iLp(y|vxB@.1N8iS9\@;q<Vz7Jp9=} ,@/=5mN1\)`8<Ӄ z#)$lO4@h!ҫJ\F48PzZL)A.0'&}ӑք RjpLZqW&)C/i ցj<' M$ 9$Py<(뜚nu#N+pHSWMۓgZVsJҜ84{HbqEw8'\S 4N*r@ZPsJdIMH0A SQ&Xqz<[  y)Љ$U`W#'E;9@ asFOLJ0k`PHv}=*Qڐ`sҙ2rTpÒF=y4&ZqPsKnMDv$iqNG# h oA2J qL=(GF)u6n3EUM МRc$qR @<~bd޳d5j#+h1"gW A4zs֌=j28dޕƅ13i!n ޜZC;A>ܚ;SCsN! =);PRI9t6F)s Aǥ n1ړ 5~48ϵ8ECF*&8#>DRGs#84NQiA16$cLNOfR=1ژ g'߽87FQ@O8ⓠT~g6jLd;i`8 LrM"3Ҧh !# 2@ J:Ң۝zw4}i]=J8>8҅z&Innj`Idc\4I'=(\wD`[_3`ԍ= IpN9qQ??,q{g'+0h14pO6"@(aq]b:PSxƞ>:+^w9Y0gކPq98™-DI* 9XmLجnj㡠q"8=.P\P1҈w8 oQU`g5" 8{Ԅ.r8@j5nϽ;#hX|`v8zDmwPI$EÎv:hc@)" {A1<aq9lSfT##R84\d㯵*zdƂ<~t [%zL+qqJޣ8Ky-4;oc$@PO9#zE9]>Psi֜Fi)A✭| pPH'4ziN)U@\r$wّɤQԸ g SW)NM;i`d"Ă:T8OQ;<{S|Ɨ` ?`& lAy OzUn=@aޔrHi-4ʣL9P~pMu :v-z& 朘9$ rg`R:SO^ `q@ H^4ZTM p{ӈfh\Ҍ9T!"xg9=)r~; \3ښ;h'K|\R`ד@\z'u۞&`pyn(09ҠRrO 9O'CR3iʾ[^ȍF3AqL9RFx>Xd(Zw p:J28aPXv=<6@#H0SA^bbDq8NA8TpNEIp8NN;TVOQǵ=#6E*çZnF?<\bj(lc{=!ȣ{Snl7nG$w 4X OʧsQ٠Nh@=j@ݏz\$RJ9Ҕ^6 Ҁl4=A `=hF2?Ht*.97Ӿ]Hˌqǽ66GHC<Q6O4 ѲGBz!<9 h Mv'R J {#qoQ? 0G$ pm Q74s!$ր28<( m=iʘ<Ɛ y\P6ޔrԃ ӧ❐u+sQOS֑•#bۭ;=)F0 x1Stq֫B. PXSO'8✍qR0 OOLvJ@AAgsM$B>g\P#o'{QM5s׽(0GV;qq}BA&GoއPx,Cr9,(N\hx(A; PFzS)`>1Ґ+d HzSG4^;F$@ a9FN1*{P㎘vm>M!ih qn*8#9N/}Hs&F:sڔ .҃ϥ"ӎ)vr|N䎘F@p@\-U.ӌ] xz>>:TdO^;GsvN@,p2zԊc9~pJpxQ֓!3ɧ2ǵ .yzBڜ$ϥ 9$S\zzZ98'"X;SHCޔ8E!O5@=r( a%$c=iLzzgcZq\ojQ@L19Hu5RmڀF0i4{x7 gxp1D09"NeiHg!`⛂zr}8H` B=:QsS < 4`u763S4M5@-X}iaL<t;@9XOhV#47>-JTe=}&9VG{_ 1;jg8S>Ɨy&UOO5F)8\dp)8<Ҩ,=(;h=M'\Ɂ֔n' 2@iYr}(=)Wހ0HȥA@֟z:.SnI0䃊R1J8Λ׽M $* a*.q Jr})3О FX:b'\3e1$ZzL1pWi )K3H@l{Ҹ2 s)=:iź_b'Ҙ`Ri[`()#;1}sJܐ{f ֔DO4Ӑƞrɠw@47qM80F[)p@L 1RNpǥaxP<~:B\.gbW\Drs=oz,pGjV@_ƞ3zJAA;ax@X{0$M]áӋ㨨"s\x@=+<Ѐw$ց)v)p  rւ9`46hc}y3SH*mTL5GlM@#47sMv8{F9+nryޣ< @1YN8zc$DF?:y\v ֝(@^8"A(J 80v8)\L~1FYځSR*zQb)&H8|P2:*PG\)"ݐp:N@KۭP]ciczLEpq<ҁXzҕ!j6nCڀ җH>GU뻿9Ͻ䌎csF@h"-T^}Gjw\F}43c+)g*|y4Fۈ ׭aȡ:㠥A 9n9?*1h r>jV04]t"x$.Bc'N :g=9Vc)Xl8(;Ċ9>?:SAҋa9*\`p:8\f׽wOzRaƚ Qpq`I?c #UaB*9&0cNq;hQ+08>Tc4?1H4s" s ;fE0A8ڞ qw~[n{42]ӲJ.; LH[sAb$~F|Ҙjh\rN9^1+񞽨g5rz5*׿jB$b6☃9iH?ާs`\b1ޜSqrjg@qJN9w)QN?:zn~Cȧdm gT♜cޜN}E9KRlԻւERGAPO@\C9=;Tz0\81ArAnv|Jp!GZk`r:Bb<NQ'9c9@HNzv4)$c84>r8q;rrhqNە84i<]xҒxwVAcy*;;GM ڂ=9$f)43EpW';F잼QX{Pdž)C5 W!Phe-aޅ9@VPqJ[qPFD\Rޘ:朤19)r4t*'# ހ <3Ro =6BN =$q HiS<@yx旂{Ӑn=1@N@P•X*8 cZ7dRV(cmÑMha7_(h"1Jr,rivޕI4 zҕg=E7?6sJGN8O\$@ A;:G[O@ =ri{RZpV<8qH0bTw*H4dv4֓,094d1hrN)1֤](ٴLL1 w9cpn~\*UNr4XPv*"F4 uOSp3Ja;TsHӳ)p:ӲI41|iITpw RzӇTԀ)7Cdr0 szP1zS\ sd8T)ɤ@<=)2f6IJ;hҝR)yژ;g'90q4R1zP!G85 n@1=s@QJI#H8 *p(UK?zWp^=in `U#&94"yhFiþz!qҚ`J+F6 #BÞzzԊpr:ѸZ@ S]\gI"i abWR[߽+@22TޥFڞ ҔO\`c A45# 49$4=E\1OC=#<}C85AL`j\DTОݩ1[?eQ%=)vd%ipq%5ݩQLdr(%2ɩ vң ÃYAaCځ gڞ9ƣ@8F s@718T˰gSЫ|܁4TN*eUhzSǯ$+qJnJn+( 3)w1; ޤ x仄@L 3L dqh WSGCN Tj3psBIE<7, Fx<A R) {V89wu8#`"2;GzdwƜ Ǩ$hG9 zf!vF3~TMV`$Aɨv1lM;2KfoO65g~:zSI'ԁ3֢f,3W <=8Q)(F)[7)Cqʵ?yR8Fsz 5O֕zt`89njsn\{d2:R1qE9*AО@X@a;jkd{[Z,uDB[N?:`)a`j[j-Pǂ) 22hYSI3?+.8@i\wǷjF]I6񻡤 K0+4, aʻ ֞p͜b9뚉#!r"MRHxpXZ]=1JERA'3gy&KQ$*@(y$7A G$ |R  1J=z#c9Nך1%\֑TcM/Lw7ßƆ4*<旁 ;in3cE;`zq@lBItuI G9n!mާ ФqG;ǭ!\T7=j0A9Jʀ%ݹ$R0ɦa~n1@Sϥ ݁Jڟgm'48+`4{T!p91 j6fA`$cqT^39_nFsjh 7 怰=9zP0?JLJ@ȧsҢ_ʝ8E>0sM u yӎiovs@h\G ž3M\{ Pxܚ@N(99#{ЬXgxP 9*dY:b#҅ڼM'r(@ dTG֞608B*N'TgxӶ,!; C҅%N;zԙ9@$Lf L 8s)NsF=9K:M2@ϽD ZErx ǯFh y@=Az#n;T@($)P+.\yuEPqeU8Z5NӐ=)74=q5SM"dZzszbFAN ?Jz 4[m19i c8p[M˃֖3)+ qN :PR Z\)^piJ:x'1 ;#6h$j2?hFp)s@`CHOQC QpJz#nӜPIS3ҀsxOjR !S'-:Wi@6443F԰Wc+ZBx8:rz.3֗9(l}i=`}iX*TH/~ ){R7 ;JRN}N~c ?JF P-;JaHPFAe64\zP'94qrF5 YBgPc#*QrG'!TvEI 0$4zSoL'րc#+F=EU894 )94>&dN{qR q"CsPcg)wOj$+N C;T'9⟸})UQb<@v;z@19?8BY88 C?MҕHhcqMJ=F4 x@S&[<ҁ׭* <# Gydzfj=QJW @ U?J@㟭Cw$'iwpisށ1휜B8^G=`y`zӲ̼ FGI' ҂WZ 'j9\k ;P F8ic=˴sB=)4R\:zܓESʀ1@9HrBGsN8@ VpzjyFHP_m;QMgP$B;,dv-qJ7SȠN֐8"S !8^G>&8" sZpiz#h/QJsu4 bOH>:'=O?Zw 6r\5$m'z o=(sڙGSK(@h8qJSx{P;>_]m'44 fF{S9Bנd@~\&qӓNc)BցX{p1asҀXp=8#'ւ\dm'ޜǐqPFH^p^H) {aip3J瞂$zSzCEw'̇> x!G#|J.8 q@ޚH4 @fґ '9E'ǥ8!ciGhOJn*D5aR /zfHɨ`HS *!̀U?x!UJrDe9']JSq#J13HXp1NJLW8e}i@Jpn+ +` S})9Sp;NelښcJiTmm({f2Fx8Ґ A3銙[ KAb#vyǽ H␓j,; Ҁ:R2R4 UJQ8ZF8Z.Ps)iڐ 8ޗ.FE)iR19(,{v"f'$8M 'Un@`1ϠvJF)-vrbFܭ֙@ɠCt|g9sϭ;onW y qBڣ҅ljS(g4*A NI#A(E$h#?΅\B6ZtvF@$h+֛ԊE'=*@T n<ҏg.rs@+O=)AQiw(( Jb"qJqM)\u4攓ր$t~9 h  2:OLfn( OZ3ibi{` ؤ'V1@\zP1NNi@7 4 ?<):w4*A$rFh+HNёJ;4N).w})Qy-Tq/S>QA"GJF#4Q@ b?ǽU]DxZ(t(j?H:(b?yR! w{Z($Z{uz(ڟ'_Š(~o¤O>Q@Q֜(Cԉ1*dh XJ)0d=E-PG֘E94?Š(xET1E=>~Q@ ң ?%>ߩQE}QEBvR/Z()> Eɓ~E _K!{EPc9Q@)OJ(A$L}Ɗ)0!_UThXGGjYdc yH>= SA?JD<P@R7EvQPY#qP>E~7j(#uE2(%JEB$=)PS=~Q@(^(HzQE4@OԽP&)PEN+v>֊(Àqw(K`nqIQ@A$Q@Cɥ>Q@9oF >J~*YGVҊ* Mn(yajiJ(X}(aP )N(~*- QERgE@/(>(Ҋ('jX袊 $*$?4Q@ iOݢXz z?( =)ݨԣP1;>颊Eࢊs4Q@`E )%Q@*QҊ(փh@NPL~(zpE O'PRiŠ(袀P~PkAQE9~8tsvR( o( *(gRȢ@"ҧZ(L*F ҝ"(SA(Q@ P (=(NNQ@~Q@ v{Eusbrelay-1.0/usbrelayd000066400000000000000000000047101423137311400151160ustar00rootroot00000000000000#! /usr/bin/env python3 # MQTT daemon for usbrelay # Publishes a state topic for each connected usbrelay and subscribes to command topics for each relay # Topics are stat/SERIAL/RELAY or cmnd/SERIAL/RELAY # eg stat/QWERT/2 or cmnd/QWERT/2 import paho.mqtt.client as mqtt import usbrelay_py import time import re import sys import configparser def publish_states(client): boards = usbrelay_py.board_details() # print("Boards: ",boards) for board in boards: # print("Board: ",board) relay = 1 # determine the state of each relay and publish to the MQTT broker while(relay < board[1]+1): if ( board[2] & ( 1 << (relay -1) )): relay_state = "ON" else: relay_state = "OFF" topic = "{0}/{1}/{2}" topic_str = topic.format("stat",board[0],relay) print("State: ", topic_str, relay_state,flush=True) client.publish(topic_str, relay_state, qos=0, retain=True) topic_str = topic.format("cmnd",board[0],relay) print("Subscribed: ", topic_str,flush=True) client.subscribe(topic_str) relay += 1 def on_message(client, userdata, message): msg_state = str(message.payload.decode("utf-8")) print("received message: " ,message.topic, msg_state,flush=True) # any message other than ON is OFF if( msg_state == "ON" ): relay_cmd = 1 else: relay_cmd = 0 content = re.split("/",message.topic) result = usbrelay_py.board_control(content[1],int(content[2]),relay_cmd) # print("COntent: ", content , result) pub_str = "stat/{0}/{1}" client.publish(pub_str.format(content[1],content[2]), msg_state) # read the server name or IP address from the command lin config = configparser.ConfigParser() config.read('/etc/usbrelayd.conf') mqttBroker = config['MQTT']['BROKER'] clientName = config['MQTT']['CLIENTNAME'] print("MQTT Broker: ", mqttBroker) print("MQTT Client: ", clientName) # # Count connected usbrelay modules, exit if none count = usbrelay_py.board_count() if(count < 1): print("No usbrelay modules connected",flush=True) exit() else: print("Modules Connected: ",count,flush=True) # connect to the mqtt broker client = mqtt.Client(clientName) client.connect(mqttBroker) publish_states(client) client.on_message=on_message while(True): client.loop_start() time.sleep(60) publish_states(client) usbrelay-1.0/usbrelayd.conf000066400000000000000000000002171423137311400160400ustar00rootroot00000000000000# /etc/usbrelayd.cfg [MQTT] # Hostname or IP address of your MQTT Broker BROKER = mqtt # Name your client connects as CLIENTNAME = MyUSBRelay usbrelay-1.0/usbrelayd.service000066400000000000000000000005011423137311400165470ustar00rootroot00000000000000[Unit] Description=USB Relay MQTT service After=network.target StartLimitIntervalSec=10 StopWhenUnneeded=true [Service] Type=simple Restart=always RestartSec=1 User=usbrelay ExecStart=/usr/bin/python3 /usr/sbin/usbrelayd StandardOutput=journal+console StandardError=journal+console [Install] WantedBy=multi-user.target